Browse Source

LibWeb: Get Page from principal realm during resource loading

Fixes a crash for module loading for a shadow realm.
Shannon Booth 7 months ago
parent
commit
4913dac745

+ 1 - 1
Libraries/LibWeb/Fetch/Fetching/Fetching.cpp

@@ -2240,7 +2240,7 @@ WebIDL::ExceptionOr<GC::Ref<PendingResponse>> nonstandard_resource_loader_file_o
 
     auto request = fetch_params.request();
 
-    auto& page = Bindings::principal_host_defined_page(realm);
+    auto& page = Bindings::principal_host_defined_page(HTML::principal_realm(realm));
 
     // NOTE: Using LoadRequest::create_for_url_on_page here will unconditionally add cookies as long as there's a page available.
     //       However, it is up to http_network_or_cache_fetch to determine if cookies should be added to the request.

+ 1 - 0
Tests/LibWeb/Text/data/external-module.mjs

@@ -0,0 +1 @@
+export const foo = "Well hello shadows";

+ 1 - 0
Tests/LibWeb/Text/expected/HTML/ShadowRealm-importValue.txt

@@ -0,0 +1 @@
+Well hello shadows

+ 10 - 0
Tests/LibWeb/Text/input/HTML/ShadowRealm-importValue.html

@@ -0,0 +1,10 @@
+<script src="../include.js"></script>
+<script>
+    asyncTest(async done => {
+        const shadowRealm = new ShadowRealm();
+        const promise = shadowRealm.importValue("../../data/external-module.mjs", "foo");
+        const value = await promise;
+        println(value);
+        done();
+    });
+</script>