diff --git a/moli-benchmark/wpt-cross-current/passed-cases.txt b/moli-benchmark/wpt-cross-current/passed-cases.txt index 71f03753f..7d25d61a8 100644 --- a/moli-benchmark/wpt-cross-current/passed-cases.txt +++ b/moli-benchmark/wpt-cross-current/passed-cases.txt @@ -4354,6 +4354,7 @@ dom/nodes/Document-contentType/contentType/xhr_responseType_document.html dom/nodes/Document-createAttribute.html dom/nodes/Document-createCDATASection.html dom/nodes/Document-createComment.html +dom/nodes/Document-createElement-namespace.html dom/nodes/Document-createElement.html dom/nodes/Document-createElementNS.html dom/nodes/Document-createProcessingInstruction.html diff --git a/moli-renderer-v8/src/native_bridge/document.rs b/moli-renderer-v8/src/native_bridge/document.rs index cff3e5555..2f3db9050 100644 --- a/moli-renderer-v8/src/native_bridge/document.rs +++ b/moli-renderer-v8/src/native_bridge/document.rs @@ -263,6 +263,9 @@ pub(super) use detached_surface::{ detached_character_data_value, detached_text_split_text_callback, detached_text_whole_text_value, set_detached_character_data_value, }; +pub(in crate::native_bridge::document) use detached_surface::{ + detached_document_content_type_value, set_detached_document_content_type, +}; pub(in crate::native_bridge) use detached_surface::{ detached_element_local_name, detached_element_namespace_uri, detached_element_prefix, }; diff --git a/moli-renderer-v8/src/script_vm/tests/dom_elements/detached.rs b/moli-renderer-v8/src/script_vm/tests/dom_elements/detached.rs index 8bb456819..bd096822e 100644 --- a/moli-renderer-v8/src/script_vm/tests/dom_elements/detached.rs +++ b/moli-renderer-v8/src/script_vm/tests/dom_elements/detached.rs @@ -12,6 +12,19 @@ fn detached_document_shallow_clones_are_empty_and_accept_a_new_root() { assert_eq!(result["checks"], 245); } +#[test] +fn detached_document_content_type_controls_element_creation_after_root_mutations_and_cloning() { + let mut vm = new_storage_test_vm("https://document-create-element-content-type.test/"); + let fixture = + include_str!("../../../../tests/fixtures/document-create-element-content-type.js"); + let result = vm + .eval(&format!("JSON.stringify({fixture})")) + .expect("Document content type and element creation probe should evaluate"); + let result: serde_json::Value = serde_json::from_str(&result).unwrap(); + assert_eq!(result["failures"], serde_json::json!([]), "{result}"); + assert_eq!(result["checks"], 689); +} + #[test] fn detached_domparser_parses_noscript_with_scripting_disabled() { let mut vm = new_storage_test_vm("https://detached-domparser-noscript.test/");