diff --git a/moli-renderer-v8/src/native_bridge/document/detached_surface/creation/clone_adopt.rs b/moli-renderer-v8/src/native_bridge/document/detached_surface/creation/clone_adopt.rs
index 7b33d6c049..a6d6549583 100644
--- a/moli-renderer-v8/src/native_bridge/document/detached_surface/creation/clone_adopt.rs
+++ b/moli-renderer-v8/src/native_bridge/document/detached_surface/creation/clone_adopt.rs
@@ -85,6 +85,15 @@ fn clone_detached_document_shell<'s>(
{
return None;
}
+ // Browser Document clones fall back to their copied URL/about base URL
+ // when a copied is removed. The native clone helper also serves
+ // callers that need a frozen computed base; do not expose that override.
+ unsafe { &mut *clone_runtime }
+ .dom_host_mut()
+ .node_mut(clone_handle)?
+ .data_mut()
+ .as_document_mut()?
+ .set_base_url_override(None);
if !deep {
return Some(cloned);
}
diff --git a/moli-renderer-v8/src/script_vm/tests/dom_elements/detached/document_lifecycle_and_adoption.rs b/moli-renderer-v8/src/script_vm/tests/dom_elements/detached/document_lifecycle_and_adoption.rs
index 39f9240e8f..76b93e043f 100644
--- a/moli-renderer-v8/src/script_vm/tests/dom_elements/detached/document_lifecycle_and_adoption.rs
+++ b/moli-renderer-v8/src/script_vm/tests/dom_elements/detached/document_lifecycle_and_adoption.rs
@@ -45,7 +45,7 @@ fn detached_document_clones_keep_url_and_document_uri_in_sync_with_native_metada
}
#[test]
-fn document_clone_base_uri_survives_base_element_removal() {
+fn document_clone_base_uri_falls_back_to_copied_url_after_base_removal() {
let mut vm = new_storage_test_vm("https://document-clone-base.test/path/page.html");
let result = vm
.eval(
@@ -80,8 +80,26 @@ fn document_clone_base_uri_survives_base_element_removal() {
"#,
)
.expect("document clone base URI probe should evaluate");
- let row = r#"["https://cdn.example/assets/","https://other.example/","https://cdn.example/assets/","https://cdn.example/assets/image.png","https://cdn.example/assets/"]"#;
- assert_eq!(result, format!("[{row},{row}]"));
+ let fallback = "https://document-clone-base.test/path/page.html";
+ assert_eq!(
+ serde_json::from_str::(&result).unwrap(),
+ serde_json::json!([
+ [
+ fallback,
+ "https://other.example/",
+ fallback,
+ "https://document-clone-base.test/path/image.png",
+ fallback
+ ],
+ [
+ "https://cdn.example/assets/",
+ "https://other.example/",
+ fallback,
+ "https://document-clone-base.test/path/image.png",
+ fallback
+ ],
+ ])
+ );
}
#[test]