Skip to content

Commit 3a70a47

Browse files
danielbpricetrflynn89
authored andcommitted
LibWeb: Create an execution context before registering import map
Fixes #6297
1 parent aff6420 commit 3a70a47

File tree

2 files changed

+66
-0
lines changed

2 files changed

+66
-0
lines changed

Libraries/LibWeb/HTML/HTMLScriptElement.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#include <LibWeb/HTML/Scripting/ClassicScript.h>
2121
#include <LibWeb/HTML/Scripting/Fetching.h>
2222
#include <LibWeb/HTML/Scripting/ImportMapParseResult.h>
23+
#include <LibWeb/HTML/Scripting/TemporaryExecutionContext.h>
2324
#include <LibWeb/HTML/Window.h>
2425
#include <LibWeb/Infra/CharacterTypes.h>
2526
#include <LibWeb/Infra/Strings.h>
@@ -154,6 +155,8 @@ void HTMLScriptElement::execute_script()
154155
}
155156
// -> "importmap"
156157
else if (m_script_type == ScriptType::ImportMap) {
158+
HTML::TemporaryExecutionContext execution_context { realm() };
159+
157160
// 1. Register an import map given el's relevant global object and el's result.
158161
m_result.get<GC::Ref<ImportMapParseResult>>()->register_import_map(as<Window>(relevant_global_object(*this)));
159162
}

Tests/LibWeb/Text/input/HTML/import-maps-invalid.html

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,69 @@
33
<script type="importmap">
44
Invalid import map.
55
</script>
6+
<script type="importmap">
7+
null
8+
</script>
9+
<script type="importmap">
10+
0
11+
</script>
12+
<script type="importmap">
13+
["invalid", "import", "map"]
14+
</script>
15+
<script type="importmap">
16+
{
17+
"imports": null
18+
}
19+
</script>
20+
<script type="importmap">
21+
{
22+
"imports": 0
23+
}
24+
</script>
25+
<script type="importmap">
26+
{
27+
"imports": []
28+
}
29+
</script>
30+
<script type="importmap">
31+
{
32+
"imports": { "application": "./import-maps-1.js" },
33+
"scopes": null
34+
}
35+
</script>
36+
<script type="importmap">
37+
{
38+
"imports": { "application": "./import-maps-1.js" },
39+
"scopes": 0
40+
}
41+
</script>
42+
<script type="importmap">
43+
{
44+
"imports": { "application": "./import-maps-1.js" },
45+
"scopes": []
46+
}
47+
</script>
48+
<script type="importmap">
49+
{
50+
"imports": { "application": "./import-maps-1.js" },
51+
"integrity": null
52+
53+
}
54+
</script>
55+
<script type="importmap">
56+
{
57+
"imports": { "application": "./import-maps-1.js" },
58+
"integrity": 0
59+
60+
}
61+
</script>
62+
<script type="importmap">
63+
{
64+
"imports": { "application": "./import-maps-1.js" },
65+
"integrity": []
66+
67+
}
68+
</script>
669
<script type="module">
770
test(() => {
871
println("PASS");

0 commit comments

Comments
 (0)