mirror of
https://github.com/servo/servo
synced 2026-04-26 01:25:32 +02:00
Add basic support for handling module scripts in workers (#40365)
While we now pass a lot of worker tests, we still fail a bunch: ``` % fd '^worker-.*.html.ini' tests/wpt/meta/content-security-policy/gen/top.http-rp/script-src-self/worker-import.http.html.ini tests/wpt/meta/content-security-policy/gen/top.http-rp/script-src-self/worker-import.https.html.ini tests/wpt/meta/content-security-policy/gen/top.http-rp/worker-src-self/worker-import.http.html.ini tests/wpt/meta/content-security-policy/gen/top.http-rp/worker-src-self/worker-import.https.html.ini tests/wpt/meta/content-security-policy/gen/top.meta/script-src-self/worker-import.http.html.ini tests/wpt/meta/content-security-policy/gen/top.meta/script-src-self/worker-import.https.html.ini tests/wpt/meta/content-security-policy/gen/top.meta/worker-src-self/worker-import.http.html.ini tests/wpt/meta/content-security-policy/gen/top.meta/worker-src-self/worker-import.https.html.ini tests/wpt/meta/content-security-policy/script-src/worker-data-set-timeout.sub.html.ini tests/wpt/meta/content-security-policy/script-src/worker-importscripts.sub.html.ini tests/wpt/meta/content-security-policy/script-src/worker-set-timeout.sub.html.ini tests/wpt/meta/fetch/metadata/generated/worker-dedicated-constructor.sub.html.ini tests/wpt/meta/fetch/metadata/generated/worker-dedicated-importscripts.https.sub.html.ini tests/wpt/meta/fetch/metadata/generated/worker-dedicated-importscripts.sub.html.ini tests/wpt/meta/mixed-content/gen/top.http-rp/opt-in/worker-import-data.https.html.ini tests/wpt/meta/mixed-content/gen/top.http-rp/opt-in/worker-import.https.html.ini tests/wpt/meta/referrer-policy/generic/subresource-test/worker-messaging.html.ini tests/wpt/meta/service-workers/service-worker/worker-client-id.https.html.ini tests/wpt/meta/service-workers/service-worker/worker-in-sandboxed-iframe-by-csp-fetch-event.https.html.ini tests/wpt/meta/service-workers/service-worker/worker-interception-redirect.https.html.ini tests/wpt/meta/service-workers/service-worker/worker-interception.https.html.ini tests/wpt/meta/upgrade-insecure-requests/gen/worker-classic.http-rp/upgrade/worker-classic.https.html.ini tests/wpt/meta/upgrade-insecure-requests/gen/worker-classic.http-rp/upgrade/worker-module.https.html.ini tests/wpt/meta/upgrade-insecure-requests/gen/worker-module.http-rp/upgrade/worker-classic.https.html.ini tests/wpt/meta/upgrade-insecure-requests/gen/worker-module.http-rp/upgrade/worker-module.https.html.ini tests/wpt/meta/wasm/webapi/esm-integration/worker-import-source-phase.tentative.html.ini tests/wpt/meta/wasm/webapi/esm-integration/worker-import.tentative.html.ini tests/wpt/meta/workers/Worker-creation-happens-in-parallel.https.html.ini tests/wpt/meta/workers/Worker-postMessage-happens-in-parallel.https.html.ini tests/wpt/meta/workers/Worker-terminate-forever-during-evaluation.html.ini tests/wpt/meta/workers/worker-request-animation-frame.html.ini ``` Also, we are passing `Option<PolicyContainer>` down the call stack through `LoadState`, which is more of a workaround. However, since maintaining this long-lived branch is becoming a bit painful (merge conflicts) and I was starting to lose momentum because of that, I would like get this merged rather sooner than later. We will address the failing tests and find the right place for `PolicyContainer` in follow-ups, including the added `#[allow(clippy::too_many_arguments)]`. # See also * https://html.spec.whatwg.org/multipage/#worker-processing-model * https://html.spec.whatwg.org/multipage/#fetch-a-module-worker-script-tree --- Fixes: #23308 Testing: WPT tests Signed-off-by: pylbrecht <pylbrecht@mailbox.org> Co-authored-by: Gae24 <96017547+Gae24@users.noreply.github.com>
This commit is contained in:
@@ -888,10 +888,10 @@ impl HTMLScriptElement {
|
||||
|
||||
// Step 31.11. Fetch an external module script graph.
|
||||
fetch_an_external_module_script(
|
||||
cx,
|
||||
url,
|
||||
ModuleOwner::Window(Trusted::new(self)),
|
||||
options,
|
||||
CanGc::from_cx(cx),
|
||||
);
|
||||
|
||||
if !asynch && was_parser_inserted {
|
||||
|
||||
Reference in New Issue
Block a user