diff --git a/moli-renderer-v8/src/document_runtime/script_scheduling/module_facade.rs b/moli-renderer-v8/src/document_runtime/script_scheduling/module_facade.rs index bd6ad79845..7ee40424dc 100644 --- a/moli-renderer-v8/src/document_runtime/script_scheduling/module_facade.rs +++ b/moli-renderer-v8/src/document_runtime/script_scheduling/module_facade.rs @@ -304,12 +304,6 @@ impl DocumentRuntime { .native_compiled_module(entry_id) } - pub(crate) fn native_module_url_for(&self, module: v8::Local<'_, v8::Module>) -> Option { - self.script_lifecycle - .scripts() - .native_module_url_for(module) - } - pub(crate) fn mark_native_module_instantiated(&mut self, entry_id: ModuleEntryId) { self.script_lifecycle .scripts_mut() diff --git a/moli-renderer-v8/src/host/scripts.rs b/moli-renderer-v8/src/host/scripts.rs index 75936bb97d..acbaab3f93 100644 --- a/moli-renderer-v8/src/host/scripts.rs +++ b/moli-renderer-v8/src/host/scripts.rs @@ -687,13 +687,6 @@ impl HostScriptScheduler { self.module_owner.native_compiled_module(entry_id) } - pub(crate) fn native_module_url_for( - &self, - module: v8::Local<'_, v8::Module>, - ) -> Option { - self.module_owner.native_module_url_for(module) - } - pub(crate) fn mark_native_module_instantiated(&mut self, entry_id: ModuleEntryId) { self.module_owner.mark_native_module_instantiated(entry_id); } diff --git a/moli-renderer-v8/src/module_runtime.rs b/moli-renderer-v8/src/module_runtime.rs index 49df6be114..9b1278a455 100644 --- a/moli-renderer-v8/src/module_runtime.rs +++ b/moli-renderer-v8/src/module_runtime.rs @@ -592,12 +592,6 @@ impl ModuleOwnerState { .map(|record| record.compiled_module().clone()) } - pub(crate) fn native_module_url_for(&self, module: v8::Local<'_, v8::Module>) -> Option { - self.document_modulator - .module_key_for(module) - .map(|key| key.url().clone()) - } - pub(crate) fn mark_native_module_instantiated(&mut self, entry_id: ModuleEntryId) { self.document_modulator.mark_instantiated(entry_id); } diff --git a/moli-renderer-v8/src/module_runtime/graph.rs b/moli-renderer-v8/src/module_runtime/graph.rs index 1fa57cc16f..27d57e60a1 100644 --- a/moli-renderer-v8/src/module_runtime/graph.rs +++ b/moli-renderer-v8/src/module_runtime/graph.rs @@ -2307,7 +2307,7 @@ fn module_script_inline_tree_job_for_owner( let (record, identity) = match vm.compile_native_module_record( key.clone(), &source, - &root.source_url, + &root.base_url, &root.fetch_metadata, ) { Ok(result) => result, diff --git a/moli-renderer-v8/src/module_runtime/host_callbacks.rs b/moli-renderer-v8/src/module_runtime/host_callbacks.rs index 92316e8277..a430f059a9 100644 --- a/moli-renderer-v8/src/module_runtime/host_callbacks.rs +++ b/moli-renderer-v8/src/module_runtime/host_callbacks.rs @@ -35,16 +35,10 @@ pub(crate) unsafe extern "C" fn initialize_import_meta_object_callback( meta: v8::Local<'_, v8::Object>, ) { v8::callback_scope!(unsafe scope, context); - let Some(host_ptr) = context_host_ptr_from_global_bridge(scope) else { + let Ok(module_url) = v8::Local::::try_from(module.get_resource_name(scope)) else { return; }; - let Some(module_url) = (unsafe { &*host_ptr }).native_module_url_for(module) else { - return; - }; - let Some(value) = v8_string(scope, module_url.as_str()) else { - return; - }; - let _ = ImportMetaDeclaration::new(value).initialize(scope, meta); + let _ = ImportMetaDeclaration::new(module_url).initialize(scope, meta); } pub(crate) fn dynamic_import_callback<'s, 'i>( diff --git a/moli-renderer-v8/src/module_runtime/modulator.rs b/moli-renderer-v8/src/module_runtime/modulator.rs index ee9d8e39be..45c8f31cc5 100644 --- a/moli-renderer-v8/src/module_runtime/modulator.rs +++ b/moli-renderer-v8/src/module_runtime/modulator.rs @@ -655,14 +655,6 @@ impl NativeDocumentModulator { .set_record_state_for_entry(self.core.entry(entry_id), ModuleRecordState::Evaluated); } - pub(crate) fn module_key_for( - &self, - module: v8::Local<'_, v8::Module>, - ) -> Option<&ModuleMapKey> { - self.module_entry_id_for(module) - .map(|entry_id| self.entry(entry_id).effective_key()) - } - pub(crate) fn module_source_for( &self, module: v8::Local<'_, v8::Module>, diff --git a/moli-renderer-v8/src/runtime/page_vm/tests/mod.rs b/moli-renderer-v8/src/runtime/page_vm/tests/mod.rs index fdfb3cbb42..9559625b1f 100644 --- a/moli-renderer-v8/src/runtime/page_vm/tests/mod.rs +++ b/moli-renderer-v8/src/runtime/page_vm/tests/mod.rs @@ -11945,15 +11945,19 @@ async fn stream_declared_controller_and_writer_surface_ignores_reflection_and_sp async fn parser_inline_module_runs_from_parser_after_parsing_order() { run_page_vm_async_test(async move { let loader = crate::network::ResourceRequestClient::new(&FetchConfig::default()).expect("loader"); + let document_url = Url::parse( + "https://example.com/page.html?case=inline-module#document-fragment", + ) + .expect("document URL"); let mut page_vm = test_page_vm_with_loader_and_document_url( &loader, Vec::new(), - Url::parse("https://example.com/page.html").expect("document URL"), + document_url.clone(), ); let script = prepared_inline_module_for_page_vm_test( &page_vm, 9002, - "globalThis.__inlineParserModuleExecuted = (globalThis.__inlineParserModuleExecuted ?? 0) + 1; export const value = 1;", + "globalThis.__inlineParserModuleExecuted = (globalThis.__inlineParserModuleExecuted ?? 0) + 1; globalThis.__inlineParserModuleUrl = import.meta.url; export const value = 1;", ); let parser_module_work = install_parser_module_defer_work(&mut page_vm, script); @@ -11989,6 +11993,14 @@ async fn parser_inline_module_runs_from_parser_after_parsing_order() { "1", "parser after-parsing release should evaluate the prewarmed inline graph once" ); + assert_eq!( + page_vm + .vm_mut() + .eval("globalThis.__inlineParserModuleUrl") + .expect("read inline module URL after page task"), + document_url.as_str(), + "an inline module must expose its document base URL, not its internal module-map key" + ); }) .await; } diff --git a/moli-renderer-v8/src/script_vm/tests/mod.rs b/moli-renderer-v8/src/script_vm/tests/mod.rs index b44e33bdc0..2fe6a7773f 100644 --- a/moli-renderer-v8/src/script_vm/tests/mod.rs +++ b/moli-renderer-v8/src/script_vm/tests/mod.rs @@ -8871,7 +8871,9 @@ async fn child_inline_parser_module_executes_from_registered_pending_script() { frame.srcdoc = `