-
Notifications
You must be signed in to change notification settings - Fork 2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Bug 1733201 [wpt PR 30986] - Add tests for importing revoked blob URL…
…s across agents, a=testonly Automatic update from web-platform-tests Add tests for importing revoked blob URLs across agents (#30986) Ref: denoland/deno#12248 -- wpt-commits: a9327c5dee0c2428e480cc78bdf6542a2af8fc63 wpt-pr: 30986
- Loading branch information
1 parent
61d19ff
commit 8cbbbbb
Showing
2 changed files
with
71 additions
and
0 deletions.
There are no files selected for viewing
60 changes: 60 additions & 0 deletions
60
...semantics/scripting-1/the-script-element/module/dynamic-import/blob-url-workers.window.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
function objectUrlFromModule(module) { | ||
const blob = new Blob([module], { type: "text/javascript" }); | ||
return URL.createObjectURL(blob); | ||
} | ||
|
||
const moduleText = `export const foo = "bar";`; | ||
|
||
async_test((t) => { | ||
const moduleBlobUrl = objectUrlFromModule(moduleText); | ||
t.add_cleanup(() => URL.revokeObjectURL(moduleBlobUrl)); | ||
|
||
const worker = new Worker("./resources/blob-url-worker.js"); | ||
worker.postMessage(moduleBlobUrl); | ||
|
||
worker.addEventListener( | ||
"message", | ||
t.step_func_done((evt) => { | ||
assert_true(evt.data.importSucceeded); | ||
assert_equals(evt.data.module.foo, "bar"); | ||
}) | ||
); | ||
}, "A blob URL created in a window agent can be imported from a worker"); | ||
|
||
async_test((t) => { | ||
const moduleBlobUrl = objectUrlFromModule(moduleText); | ||
URL.revokeObjectURL(moduleBlobUrl); | ||
|
||
const worker = new Worker("./resources/blob-url-worker.js"); | ||
worker.postMessage(moduleBlobUrl); | ||
|
||
worker.addEventListener( | ||
"message", | ||
t.step_func_done((evt) => { | ||
assert_false(evt.data.importSucceeded); | ||
assert_equals(evt.data.errorName, "TypeError"); | ||
}) | ||
); | ||
}, "A blob URL revoked in a window agent will not resolve in a worker"); | ||
|
||
promise_test(async (t) => { | ||
const moduleBlobUrl = objectUrlFromModule(moduleText); | ||
|
||
await import(moduleBlobUrl); | ||
|
||
URL.revokeObjectURL(moduleBlobUrl); | ||
|
||
const worker = new Worker("./resources/blob-url-worker.js"); | ||
worker.postMessage(moduleBlobUrl); | ||
|
||
await new Promise((resolve) => { | ||
worker.addEventListener( | ||
"message", | ||
t.step_func((evt) => { | ||
assert_false(evt.data.importSucceeded); | ||
assert_equals(evt.data.errorName, "TypeError"); | ||
resolve(); | ||
}) | ||
); | ||
}); | ||
}, "A revoked blob URL will not resolve in a worker even if it's in the window's module graph"); |
11 changes: 11 additions & 0 deletions
11
...mantics/scripting-1/the-script-element/module/dynamic-import/resources/blob-url-worker.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
self.addEventListener("message", (evt) => { | ||
const importModule = import(evt.data); | ||
importModule.then( | ||
(module) => { | ||
self.postMessage({ importSucceeded: true, module: { ...module } }); | ||
}, | ||
(error) => { | ||
self.postMessage({ importSucceeded: false, errorName: error.name }); | ||
} | ||
); | ||
}); |