Changeset 292595 in webkit
- Timestamp:
- Apr 8, 2022 1:30:55 AM (3 months ago)
- Location:
- trunk
- Files:
-
- 23 added
- 19 edited
- 20 moved
-
LayoutTests/ChangeLog (modified) (1 diff)
-
LayoutTests/TestExpectations (modified) (1 diff)
-
LayoutTests/imported/w3c/ChangeLog (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/block-local-documents-inheriting-none.https.html (modified) (5 diffs)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/cache-storage.https.window.html (added)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/cache-storage.https.window.js (moved) (moved from trunk/LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/cache-storage.tentative.https.window.js)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/cache.window.html (added)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/cache.window.js (moved) (moved from trunk/LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/cache.tentative.window.js)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/dedicated-worker.https.window.html (added)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/dedicated-worker.https.window.js (moved) (moved from trunk/LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/dedicated-worker.tentative.https.window.js)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/fetch.https.window.html (added)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/fetch.https.window.js (moved) (moved from trunk/LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/fetch.tentative.https.window.js)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe-coep-credentialless.https.window.html (added)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe-coep-credentialless.https.window.js (moved) (moved from trunk/LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe-coep-credentialless.tentative.https.window.js)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe-coep-none.https.window.html (added)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe-coep-none.https.window.js (moved) (moved from trunk/LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe-coep-none.tentative.https.window.js)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe-coep-require-corp.https.window.html (added)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe-coep-require-corp.https.window.js (moved) (moved from trunk/LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe-coep-require-corp.tentative.https.window.js)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe.window.html (added)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe.window.js (moved) (moved from trunk/LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe.tentative.window.js)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/image.https.window.html (added)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/image.https.window.js (moved) (moved from trunk/LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/image.tentative.https.window.js)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/link.https.window.html (added)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/link.https.window.js (moved) (moved from trunk/LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/link.tentative.https.window.js)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/redirect.window.html (added)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/redirect.window.js (moved) (moved from trunk/LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/redirect.tentative.window.js)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/reporting-navigation.https.window.html (added)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/reporting-navigation.https.window.js (moved) (moved from trunk/LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/reporting-navigation.tentative.https.window.js)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/reporting-subresource-corp.https.window.html (added)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/reporting-subresource-corp.https.window.js (moved) (moved from trunk/LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/reporting-subresource-corp.tentative.https.window.js)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/script.https.window.html (added)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/script.https.window.js (moved) (moved from trunk/LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/script.tentative.https.window.js)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/service-worker-coep-credentialless-proxy.https.window.html (added)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/service-worker-coep-credentialless-proxy.https.window.js (moved) (moved from trunk/LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/service-worker-coep-credentialless-proxy.tentative.https.window.js)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/service-worker-coep-none-proxy.https.window.html (added)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/service-worker-coep-none-proxy.https.window.js (moved) (moved from trunk/LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/service-worker-coep-none-proxy.tentative.https.window.js)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/service-worker.https.window.html (added)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/service-worker.https.window.js (moved) (moved from trunk/LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/service-worker.tentative.https.window.js)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/shared-worker.https.window.html (added)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/shared-worker.https.window.js (moved) (moved from trunk/LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/shared-worker.tentative.https.window.js)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/video.https.window.html (added)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/video.https.window.js (moved) (moved from trunk/LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/video.tentative.https.window.js)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/video.https.window.js.headers (moved) (moved from trunk/LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/video.tentative.https.window.js.headers)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/w3c-import.log (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/dedicated-worker.https-expected.txt (modified) (2 diffs)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/dedicated-worker.https.html (modified) (8 diffs)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/reporting-to-endpoint.https.html (modified) (7 diffs)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/reporting-to-endpoint.https.html.headers (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/require-corp-cached-images.https-expected.txt (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/require-corp-cached-images.https.html (modified) (4 diffs)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/require-corp-revalidated-images.https-expected.txt (added)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/require-corp-revalidated-images.https.html (added)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/resources/corp-image.py (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/resources/fetch-and-create-url.html (added)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/resources/load-corp-images.html (modified) (3 diffs)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/resources/w3c-import.log (modified) (2 diffs)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/resources/worker-support.js (added)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/shared-workers.https-expected.txt (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/shared-workers.https.html (modified) (4 diffs)
-
LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/w3c-import.log (modified) (1 diff)
-
Source/WebKit/ChangeLog (modified) (1 diff)
-
Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r292571 r292595 1 2022-04-08 Carlos Garcia Campos <cgarcia@igalia.com> 2 3 Incorrect CORP/COEP check in 304 responses 4 https://bugs.webkit.org/show_bug.cgi?id=238238 5 <rdar://problem/90706510> 6 7 Reviewed by Youenn Fablet. 8 9 Mark some tests with DumpJSConsoleLogInStdErr modifier. 10 11 * TestExpectations: 12 1 13 2022-04-07 Matteo Flores <matteo_flores@apple.com> 2 14 -
trunk/LayoutTests/TestExpectations
r292532 r292595 438 438 imported/w3c/web-platform-tests/html/browsers/sandboxing/sandbox-disallow-popups.html [ DumpJSConsoleLogInStdErr ] 439 439 imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/blob.https.html [ DumpJSConsoleLogInStdErr ] 440 imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/require-corp-cached-images.https.html [ DumpJSConsoleLogInStdErr ] 441 imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/require-corp-revalidated-images.https.html [ DumpJSConsoleLogInStdErr ] 440 442 imported/w3c/web-platform-tests/html/cross-origin-opener-policy/coop-csp-sandbox.https.html [ DumpJSConsoleLogInStdErr ] 441 443 imported/w3c/web-platform-tests/html/cross-origin-opener-policy/coop-navigated-history-popup.https.html [ DumpJSConsoleLogInStdErr ] -
trunk/LayoutTests/imported/w3c/ChangeLog
r292592 r292595 1 2022-04-08 Carlos Garcia Campos <cgarcia@igalia.com> 2 3 Incorrect CORP/COEP check in 304 responses 4 https://bugs.webkit.org/show_bug.cgi?id=238238 5 <rdar://problem/90706510> 6 7 Reviewed by Youenn Fablet. 8 9 Sync cross-origin-embedder-policy tests to include the new test require-corp-revalidated-images.https.html. 10 11 * web-platform-tests/html/cross-origin-embedder-policy/block-local-documents-inheriting-none.https.html: 12 * web-platform-tests/html/cross-origin-embedder-policy/credentialless/cache-storage.https.window.html: Added. 13 * web-platform-tests/html/cross-origin-embedder-policy/credentialless/cache-storage.https.window.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/cache-storage.tentative.https.window.js. 14 * web-platform-tests/html/cross-origin-embedder-policy/credentialless/cache.window.html: Added. 15 * web-platform-tests/html/cross-origin-embedder-policy/credentialless/cache.window.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/cache.tentative.window.js. 16 * web-platform-tests/html/cross-origin-embedder-policy/credentialless/dedicated-worker.https.window.html: Added. 17 * web-platform-tests/html/cross-origin-embedder-policy/credentialless/dedicated-worker.https.window.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/dedicated-worker.tentative.https.window.js. 18 * web-platform-tests/html/cross-origin-embedder-policy/credentialless/fetch.https.window.html: Added. 19 * web-platform-tests/html/cross-origin-embedder-policy/credentialless/fetch.https.window.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/fetch.tentative.https.window.js. 20 * web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe-coep-credentialless.https.window.html: Added. 21 * web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe-coep-credentialless.https.window.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe-coep-credentialless.tentative.https.window.js. 22 * web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe-coep-none.https.window.html: Added. 23 * web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe-coep-none.https.window.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe-coep-none.tentative.https.window.js. 24 * web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe-coep-require-corp.https.window.html: Added. 25 * web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe-coep-require-corp.https.window.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe-coep-require-corp.tentative.https.window.js. 26 * web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe.window.html: Added. 27 * web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe.window.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe.tentative.window.js. 28 * web-platform-tests/html/cross-origin-embedder-policy/credentialless/image.https.window.html: Added. 29 * web-platform-tests/html/cross-origin-embedder-policy/credentialless/image.https.window.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/image.tentative.https.window.js. 30 * web-platform-tests/html/cross-origin-embedder-policy/credentialless/link.https.window.html: Added. 31 * web-platform-tests/html/cross-origin-embedder-policy/credentialless/link.https.window.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/link.tentative.https.window.js. 32 * web-platform-tests/html/cross-origin-embedder-policy/credentialless/redirect.window.html: Added. 33 * web-platform-tests/html/cross-origin-embedder-policy/credentialless/redirect.window.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/redirect.tentative.window.js. 34 * web-platform-tests/html/cross-origin-embedder-policy/credentialless/reporting-navigation.https.window.html: Added. 35 * web-platform-tests/html/cross-origin-embedder-policy/credentialless/reporting-navigation.https.window.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/reporting-navigation.tentative.https.window.js. 36 * web-platform-tests/html/cross-origin-embedder-policy/credentialless/reporting-subresource-corp.https.window.html: Added. 37 * web-platform-tests/html/cross-origin-embedder-policy/credentialless/reporting-subresource-corp.https.window.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/reporting-subresource-corp.tentative.https.window.js. 38 * web-platform-tests/html/cross-origin-embedder-policy/credentialless/script.https.window.html: Added. 39 * web-platform-tests/html/cross-origin-embedder-policy/credentialless/script.https.window.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/script.tentative.https.window.js. 40 * web-platform-tests/html/cross-origin-embedder-policy/credentialless/service-worker-coep-credentialless-proxy.https.window.html: Added. 41 * web-platform-tests/html/cross-origin-embedder-policy/credentialless/service-worker-coep-credentialless-proxy.https.window.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/service-worker-coep-credentialless-proxy.tentative.https.window.js. 42 * web-platform-tests/html/cross-origin-embedder-policy/credentialless/service-worker-coep-none-proxy.https.window.html: Added. 43 * web-platform-tests/html/cross-origin-embedder-policy/credentialless/service-worker-coep-none-proxy.https.window.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/service-worker-coep-none-proxy.tentative.https.window.js. 44 * web-platform-tests/html/cross-origin-embedder-policy/credentialless/service-worker.https.window.html: Added. 45 * web-platform-tests/html/cross-origin-embedder-policy/credentialless/service-worker.https.window.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/service-worker.tentative.https.window.js. 46 * web-platform-tests/html/cross-origin-embedder-policy/credentialless/shared-worker.https.window.html: Added. 47 * web-platform-tests/html/cross-origin-embedder-policy/credentialless/shared-worker.https.window.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/shared-worker.tentative.https.window.js. 48 * web-platform-tests/html/cross-origin-embedder-policy/credentialless/video.https.window.html: Added. 49 * web-platform-tests/html/cross-origin-embedder-policy/credentialless/video.https.window.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/video.tentative.https.window.js. 50 * web-platform-tests/html/cross-origin-embedder-policy/credentialless/video.https.window.js.headers: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/video.tentative.https.window.js.headers. 51 * web-platform-tests/html/cross-origin-embedder-policy/credentialless/w3c-import.log: 52 * web-platform-tests/html/cross-origin-embedder-policy/dedicated-worker.https-expected.txt: 53 * web-platform-tests/html/cross-origin-embedder-policy/dedicated-worker.https.html: 54 * web-platform-tests/html/cross-origin-embedder-policy/reporting-to-endpoint.https.html: 55 * web-platform-tests/html/cross-origin-embedder-policy/reporting-to-endpoint.https.html.headers: 56 * web-platform-tests/html/cross-origin-embedder-policy/require-corp-cached-images.https-expected.txt: 57 * web-platform-tests/html/cross-origin-embedder-policy/require-corp-cached-images.https.html: 58 * web-platform-tests/html/cross-origin-embedder-policy/require-corp-revalidated-images.https-expected.txt: Added. 59 * web-platform-tests/html/cross-origin-embedder-policy/require-corp-revalidated-images.https.html: Added. 60 * web-platform-tests/html/cross-origin-embedder-policy/resources/corp-image.py: 61 (main): 62 * web-platform-tests/html/cross-origin-embedder-policy/resources/fetch-and-create-url.html: Added. 63 * web-platform-tests/html/cross-origin-embedder-policy/resources/load-corp-images.html: 64 * web-platform-tests/html/cross-origin-embedder-policy/resources/w3c-import.log: 65 * web-platform-tests/html/cross-origin-embedder-policy/resources/worker-support.js: Added. 66 (setCoep): 67 (resolveUrl): 68 (async withIframe): 69 (waitForMessage): 70 (async createLocalUrl): 71 * web-platform-tests/html/cross-origin-embedder-policy/shared-workers.https-expected.txt: 72 * web-platform-tests/html/cross-origin-embedder-policy/shared-workers.https.html: 73 * web-platform-tests/html/cross-origin-embedder-policy/w3c-import.log: 74 1 75 2022-04-07 Antti Koivisto <antti@apple.com> 2 76 -
trunk/LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/block-local-documents-inheriting-none.https.html
r287846 r292595 3 3 <script src="/resources/testharness.js"></script> 4 4 <script src="/resources/testharnessreport.js"></script> 5 <script src="/common/dispatcher/dispatcher.js"></script>6 5 <script src="/common/get-host-info.sub.js"></script> 7 6 <script src="/common/utils.js"></script> … … 59 58 // This initial navigation is required because it uses the parent frame as the 60 59 // initiator. That is first_iframe is the initiator, while we want top to be 61 // the initiator for this test, which will be done in step 3with a second60 // the initiator for this test, which will be done in step 4 with a second 62 61 // navigation from that blank.html document to the local scheme one. 63 62 const nested_frames = {}; … … 75 74 await Promise.all(nested_frames_promises); 76 75 77 // 3. Navigate nested frames to a local scheme document. 76 // 3. Navigate a dummy frame. This is required because some browsers (Chrome) 77 // might consider the first navigation in 4. as a redirect otherwise. 78 const dummy_Frame = document.createElement("iframe"); 79 t.add_cleanup( () => dummy_Frame.remove() ); 80 dummy_Frame.src = "/common/blank.html"; 81 iframe_load_promise = new Promise( resolve => dummy_Frame.addEventListener("load", resolve) ); 82 document.body.append(dummy_Frame); 83 await iframe_load_promise; 84 85 // 4. Navigate nested frames to a local scheme document. 78 86 // COEP should be inherited from the initiator or blobURL's creator (top in both 79 87 // cases), this results in COEP being none and the documents not being allowed … … 88 96 }); 89 97 90 // 4. Wait and validate reports.98 // 5. Wait and validate reports. 91 99 const reports = await reportPromise; 92 100 assert_equals(reports.length, test_cases.length); … … 100 108 // Also verify that no message was sent by the nested frames and stored in 101 109 // received_events. 102 assert_equals( [], received_events.sort());110 assert_equals(received_events.length, 0); 103 111 }, "Prevent local scheme documents from loading within a COEP: require-corp iframe if they inherit COEP: none"); 104 112 </script> -
trunk/LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/w3c-import.log
r285346 r292595 17 17 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/META.yml 18 18 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/README.md 19 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/cache-storage. tentative.https.window.js20 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/cache. tentative.window.js19 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/cache-storage.https.window.js 20 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/cache.window.js 21 21 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/cross-origin-isolated.window.js 22 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/dedicated-worker. tentative.https.window.js23 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/fetch. tentative.https.window.js24 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe-coep-credentialless. tentative.https.window.js25 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe-coep-none. tentative.https.window.js26 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe-coep-require-corp. tentative.https.window.js27 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe. tentative.window.js28 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/image. tentative.https.window.js29 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/link. tentative.https.window.js30 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/redirect. tentative.window.js31 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/reporting-navigation. tentative.https.window.js32 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/reporting-subresource-corp. tentative.https.window.js33 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/script. tentative.https.window.js34 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/service-worker-coep-credentialless-proxy. tentative.https.window.js35 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/service-worker-coep-none-proxy. tentative.https.window.js36 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/service-worker. tentative.https.window.js37 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/shared-worker. tentative.https.window.js38 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/video. tentative.https.window.js39 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/video. tentative.https.window.js.headers22 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/dedicated-worker.https.window.js 23 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/fetch.https.window.js 24 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe-coep-credentialless.https.window.js 25 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe-coep-none.https.window.js 26 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe-coep-require-corp.https.window.js 27 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/iframe.window.js 28 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/image.https.window.js 29 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/link.https.window.js 30 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/redirect.window.js 31 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/reporting-navigation.https.window.js 32 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/reporting-subresource-corp.https.window.js 33 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/script.https.window.js 34 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/service-worker-coep-credentialless-proxy.https.window.js 35 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/service-worker-coep-none-proxy.https.window.js 36 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/service-worker.https.window.js 37 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/shared-worker.https.window.js 38 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/video.https.window.js 39 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless/video.https.window.js.headers -
trunk/LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/dedicated-worker.https-expected.txt
r280953 r292595 7 7 CONSOLE MESSAGE: Worker load was blocked by Cross-Origin-Embedder-Policy 8 8 CONSOLE MESSAGE: Cannot load https://localhost:9443/html/cross-origin-embedder-policy/resources/dedicated-worker.js due to access control checks. 9 CONSOLE MESSAGE: Cancelled load to https://127.0.0.1:9443/common/blank.html because it violates the resource's Cross-Origin-Resource-Policy response header. 10 CONSOLE MESSAGE: Cancelled load to https://127.0.0.1:9443/common/blank.html because it violates the resource's Cross-Origin-Resource-Policy response header. 9 11 CONSOLE MESSAGE: Cancelled load to https://127.0.0.1:9443/common/blank.html because it violates the resource's Cross-Origin-Resource-Policy response header. 10 12 CONSOLE MESSAGE: Cancelled load to https://127.0.0.1:9443/common/blank.html because it violates the resource's Cross-Origin-Resource-Policy response header. … … 18 20 PASS COEP: require-corp module worker in COEP: none frame 19 21 PASS COEP: require-corp module worker in COEP: require-corp frame 22 PASS COEP: worker inherits COEP for blob URL. 23 PASS COEP: worker inherits COEP from blob URL creator, not owner. 24 FAIL COEP: worker inherits COEP for data URL. assert_equals: expected "FAILED" but got "LOADED" 25 PASS COEP: worker inherits COEP from owner, not data URL creator. 26 FAIL COEP: worker inherits COEP for filesystem URL. assert_equals: url creation error expected (undefined) undefined but got (string) "unimplemented" 27 FAIL COEP: worker inherits COEP from filesystem URL creator, not owner. assert_equals: url creation error expected (undefined) undefined but got (string) "unimplemented" 20 28 -
trunk/LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/dedicated-worker.https.html
r264117 r292595 4 4 <script src=/resources/testharnessreport.js></script> 5 5 <script src="/common/get-host-info.sub.js"></script> 6 <script src="resources/worker-support.js"></script> 6 7 <body> 7 8 <script> 8 const HOST = get_host_info(); 9 const FETCH_URL = `${HOST.REMOTE_ORIGIN}/common/blank.html`; 10 const WORKER_URL = new URL('resources/dedicated-worker.js', location).href; 11 const WITH_COEP = '?pipe=header(cross-origin-embedder-policy,require-corp)'; 12 13 async function createWorker(t, frameHasCoep, workerHasCoep, workerOptions) { 14 const frame = document.createElement("iframe"); 15 t.add_cleanup(() => frame.remove()); 16 frame.src = '/common/blank.html'; 17 if (frameHasCoep) { 18 frame.src += WITH_COEP; 19 } 20 document.body.append(frame); 21 22 await new Promise(resolve => { 23 frame.addEventListener('load', resolve, {once: true}) 24 }); 25 const worker = new frame.contentWindow.Worker( 26 workerHasCoep ? WORKER_URL + WITH_COEP : WORKER_URL, workerOptions); 27 28 return worker; 9 10 const targetUrl = resolveUrl("/common/blank.html", { 11 host: get_host_info().REMOTE_HOST, 12 }).href; 13 14 function workerUrl(options) { 15 return resolveUrl("resources/dedicated-worker.js", options); 29 16 } 30 17 31 function waitForMessage(target) { 32 return new Promise(resolve => { 33 target.addEventListener('message', resolve, {once: true}); 34 }); 18 async function createWorker(t, url, options) { 19 const { ownerCoep, workerOptions } = options || {}; 20 21 const frameUrl = resolveUrl("/common/blank.html", { 22 coep: ownerCoep, 23 }); 24 const frame = await withIframe(t, frameUrl); 25 26 return new frame.contentWindow.Worker(url, workerOptions); 35 27 } 36 28 37 29 promise_test(async (t) => { 38 const worker = await createWorker(t, false, false, {});39 worker.onerror = t.unreached_func('Worker.onerror should not be called'); 40 41 worker.postMessage( FETCH_URL);30 const worker = await createWorker(t, workerUrl()); 31 worker.onerror = t.unreached_func('Worker.onerror should not be called'); 32 33 worker.postMessage(targetUrl); 42 34 43 35 const result = await waitForMessage(worker); … … 46 38 47 39 promise_test(async (t) => { 48 const worker = await createWorker(t, true, false, {}); 40 const worker = await createWorker(t, workerUrl(), { 41 ownerCoep: "require-corp", 42 }); 49 43 await new Promise(resolve => { 50 44 worker.onerror = resolve; … … 53 47 54 48 promise_test(async (t) => { 55 const worker = await createWorker(t, false, true, {});56 worker.onerror = t.unreached_func('Worker.onerror should not be called'); 57 58 worker.postMessage( FETCH_URL);49 const worker = await createWorker(t, workerUrl({ coep: "require-corp" })); 50 worker.onerror = t.unreached_func('Worker.onerror should not be called'); 51 52 worker.postMessage(targetUrl); 59 53 60 54 const result = await waitForMessage(worker); … … 63 57 64 58 promise_test(async (t) => { 65 const worker = await createWorker(t, true, true, {}); 66 worker.onerror = t.unreached_func('Worker.onerror should not be called'); 67 68 worker.postMessage(FETCH_URL); 59 const worker = await createWorker(t, workerUrl({ coep: "require-corp" }), { 60 ownerCoep: "require-corp", 61 }); 62 worker.onerror = t.unreached_func('Worker.onerror should not be called'); 63 64 worker.postMessage(targetUrl); 69 65 70 66 const result = await waitForMessage(worker); … … 73 69 74 70 promise_test(async (t) => { 75 const worker = await createWorker(t, false, false, {type: 'module'}); 76 worker.onerror = t.unreached_func('Worker.onerror should not be called'); 77 78 worker.postMessage(FETCH_URL); 71 const worker = await createWorker(t, workerUrl(), { 72 workerOptions: { type: 'module' }, 73 }); 74 worker.onerror = t.unreached_func('Worker.onerror should not be called'); 75 76 worker.postMessage(targetUrl); 79 77 80 78 const result = await waitForMessage(worker); … … 83 81 84 82 promise_test(async (t) => { 85 const worker = await createWorker(t, true, false, {type: 'module'}); 83 const worker = await createWorker(t, workerUrl(), { 84 ownerCoep: "require-corp", 85 workerOptions: { type: 'module' }, 86 }); 86 87 await new Promise(resolve => { 87 88 worker.onerror = resolve; … … 90 91 91 92 promise_test(async (t) => { 92 const worker = await createWorker(t, false, true, {type: 'module'}); 93 worker.onerror = t.unreached_func('Worker.onerror should not be called'); 94 95 worker.postMessage(FETCH_URL); 93 const worker = await createWorker(t, workerUrl({ coep: "require-corp" }), { 94 workerOptions: { type: 'module' }, 95 }); 96 worker.onerror = t.unreached_func('Worker.onerror should not be called'); 97 98 worker.postMessage(targetUrl); 96 99 97 100 const result = await waitForMessage(worker); … … 100 103 101 104 promise_test(async (t) => { 102 const worker = await createWorker(t, true, true, {type: 'module'}); 103 worker.onerror = t.unreached_func('Worker.onerror should not be called'); 104 105 worker.postMessage(FETCH_URL); 105 const worker = await createWorker(t, workerUrl({ coep: "require-corp" }), { 106 ownerCoep: "require-corp", 107 workerOptions: { type: 'module' }, 108 }); 109 worker.onerror = t.unreached_func('Worker.onerror should not be called'); 110 111 worker.postMessage(targetUrl); 106 112 107 113 const result = await waitForMessage(worker); 108 114 assert_equals(result.data, 'FAILED'); 109 115 }, 'COEP: require-corp module worker in COEP: require-corp frame'); 116 117 promise_test(async (t) => { 118 const url = await createLocalUrl(t, { 119 url: workerUrl(), 120 creatorCoep: "require-corp", 121 scheme: "blob", 122 }); 123 124 const worker = await createWorker(t, url, { ownerCoep: "require-corp" }); 125 worker.onerror = t.unreached_func('Worker.onerror should not be called'); 126 127 worker.postMessage(targetUrl); 128 129 const result = await waitForMessage(worker); 130 assert_equals(result.data, 'FAILED'); 131 }, "COEP: worker inherits COEP for blob URL."); 132 133 promise_test(async (t) => { 134 const url = await createLocalUrl(t, { 135 url: workerUrl(), 136 creatorCoep: "require-corp", 137 scheme: "blob", 138 }); 139 140 const worker = await createWorker(t, url); 141 worker.onerror = t.unreached_func('Worker.onerror should not be called'); 142 143 worker.postMessage(targetUrl); 144 145 const result = await waitForMessage(worker); 146 assert_equals(result.data, 'FAILED'); 147 }, "COEP: worker inherits COEP from blob URL creator, not owner."); 148 149 promise_test(async (t) => { 150 const url = await createLocalUrl(t, { 151 url: workerUrl(), 152 creatorCoep: "require-corp", 153 scheme: "data", 154 }); 155 156 const worker = await createWorker(t, url, { ownerCoep: "require-corp" }); 157 worker.onerror = t.unreached_func('Worker.onerror should not be called'); 158 159 worker.postMessage(targetUrl); 160 161 const result = await waitForMessage(worker); 162 assert_equals(result.data, 'FAILED'); 163 }, "COEP: worker inherits COEP for data URL."); 164 165 promise_test(async (t) => { 166 const url = await createLocalUrl(t, { 167 url: workerUrl(), 168 creatorCoep: "require-corp", 169 scheme: "data", 170 }); 171 172 const worker = await createWorker(t, url); 173 worker.onerror = t.unreached_func('Worker.onerror should not be called'); 174 175 worker.postMessage(targetUrl); 176 177 const result = await waitForMessage(worker); 178 assert_equals(result.data, 'LOADED'); 179 }, "COEP: worker inherits COEP from owner, not data URL creator."); 180 181 promise_test(async (t) => { 182 const url = await createLocalUrl(t, { 183 url: workerUrl(), 184 creatorCoep: "require-corp", 185 scheme: "filesystem", 186 }); 187 188 const worker = await createWorker(t, url, { ownerCoep: "require-corp" }); 189 worker.onerror = t.unreached_func('Worker.onerror should not be called'); 190 191 worker.postMessage(targetUrl); 192 193 const result = await waitForMessage(worker); 194 assert_equals(result.data, 'FAILED'); 195 }, "COEP: worker inherits COEP for filesystem URL."); 196 197 promise_test(async (t) => { 198 const url = await createLocalUrl(t, { 199 url: workerUrl(), 200 creatorCoep: "require-corp", 201 scheme: "filesystem", 202 }); 203 204 const worker = await createWorker(t, url); 205 worker.onerror = t.unreached_func('Worker.onerror should not be called'); 206 207 worker.postMessage(targetUrl); 208 209 const result = await waitForMessage(worker); 210 assert_equals(result.data, 'FAILED'); 211 }, "COEP: worker inherits COEP from filesystem URL creator, not owner."); 110 212 111 213 </script> -
trunk/LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/reporting-to-endpoint.https.html
r281775 r292595 20 20 // - cache-storage-reporting*.https.html 21 21 // . 22 22 23 const { REMOTE_ORIGIN } = get_host_info(); 23 24 const BASE = new URL("resources", location).pathname … … 28 29 '?pipe=header(cross-origin-embedder-policy,require-corp;report-to="endpoint")' + 29 30 `|header(cross-origin-embedder-policy-report-only,require-corp;report-to="report-only-endpoint")`; 31 const REPORT_UUID = "4d8b6d86-c9a8-47c1-871b-111169a8f79c"; 32 const REPORT_ONLY_UUID = "5d7c1e33-ef88-43c2-9ca3-c67ff300b8c2"; 30 33 31 34 function wait(ms) { … … 103 106 iframe.contentWindow.fetch(url, init).catch(() => {}); 104 107 105 await checkCorpReportExistence( 'endpoint', url, iframe.src, '', 'enforce');106 await checkCorpReportExistence( 107 'report-only-endpoint', url, iframe.src, '', 'reporting');108 await checkCorpReportExistence(REPORT_UUID, url, iframe.src, '', 'enforce'); 109 await checkCorpReportExistence( 110 REPORT_ONLY_UUID, url, iframe.src, '', 'reporting'); 108 111 }, 'subresource CORP'); 109 112 … … 132 135 133 136 await checkCorpReportExistence( 134 'endpoint', url, iframe.src, 'iframe', 'enforce');135 await checkCorpReportExistence( 136 'report-only-endpoint', url, iframe.src, 'iframe', 'reporting');137 REPORT_UUID, url, iframe.src, 'iframe', 'enforce'); 138 await checkCorpReportExistence( 139 REPORT_ONLY_UUID, url, iframe.src, 'iframe', 'reporting'); 137 140 }, 'navigation CORP'); 138 141 … … 153 156 154 157 await checkNavigationReportExistence( 155 'endpoint', targetUrl, iframe.src, 'enforce');156 await checkNavigationReportExistence( 157 'report-only-endpoint', targetUrl, iframe.src, 'reporting');158 REPORT_UUID, targetUrl, iframe.src, 'enforce'); 159 await checkNavigationReportExistence( 160 REPORT_ONLY_UUID, targetUrl, iframe.src, 'reporting'); 158 161 }, 'COEP violation on nested frame navigation'); 159 162 … … 175 178 176 179 await checkNavigationReportExistence( 177 'endpoint', targetUrl, iframe.src, 'enforce');178 await checkNavigationReportExistence( 179 'report-only-endpoint', targetUrl, iframe.src, 'reporting');180 REPORT_UUID, targetUrl, iframe.src, 'enforce'); 181 await checkNavigationReportExistence( 182 REPORT_ONLY_UUID, targetUrl, iframe.src, 'reporting'); 180 183 181 184 }, 'Two COEP headers, split inside report-to value'); … … 199 202 200 203 await checkCorpReportExistence( 201 'endpoint', targetUrl, WORKER_URL, 'iframe', 'enforce');202 await checkCorpReportExistence( 203 'report-only-endpoint', targetUrl, WORKER_URL, 'iframe', 'reporting');204 REPORT_UUID, targetUrl, WORKER_URL, 'iframe', 'enforce'); 205 await checkCorpReportExistence( 206 REPORT_ONLY_UUID, targetUrl, WORKER_URL, 'iframe', 'reporting'); 204 207 }, 'Shared worker fetch'); 205 208 -
trunk/LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/reporting-to-endpoint.https.html.headers
r282604 r292595 1 report-to: { "group": "endpoint", "max_age": 10886400, "endpoints": [{ "url": "/html/cross-origin-embedder-policy/resources/report.py?endpoint=endpoint" }] }, { "group": "report-only-endpoint", "max_age": 10886400, "endpoints": [{ "url": "/html/cross-origin-embedder-policy/resources/report.py?endpoint=report-only-endpoint" }] } 1 Reporting-Endpoints: endpoint="https://{{host}}:{{ports[https][0]}}//html/cross-origin-embedder-policy/resources/report.py?endpoint=4d8b6d86-c9a8-47c1-871b-111169a8f79c", report-only-endpoint="/html/cross-origin-embedder-policy/resources/report.py?endpoint=5d7c1e33-ef88-43c2-9ca3-c67ff300b8c2" -
trunk/LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/require-corp-cached-images.https-expected.txt
r284510 r292595 1 CONSOLE MESSAGE: Cancelled load to https://127.0.0.1:9443/html/cross-origin-embedder-policy/resources/corp-image.py because it violates the resource's Cross-Origin-Resource-Policy response header.2 CONSOLE MESSAGE: Cannot load image https://127.0.0.1:9443/html/cross-origin-embedder-policy/resources/corp-image.py due to access control checks.3 CONSOLE MESSAGE: Cancelled load to https://127.0.0.1:9443/html/cross-origin-embedder-policy/resources/corp-image.py because it violates the resource's Cross-Origin-Resource-Policy response header.4 CONSOLE MESSAGE: Cannot load image https://127.0.0.1:9443/html/cross-origin-embedder-policy/resources/corp-image.py due to access control checks.5 1 6 2 7 PASS NETWORK -https://127.0.0.1:9443/html/cross-origin-embedder-policy/resources/corp-image.py8 PASS NETWORK -https://127.0.0.1:9443/html/cross-origin-embedder-policy/resources/corp-image.py?corp-cross-origin=19 PASS CACHED -https://127.0.0.1:9443/html/cross-origin-embedder-policy/resources/corp-image.py10 PASS CACHED -https://127.0.0.1:9443/html/cross-origin-embedder-policy/resources/corp-image.py?corp-cross-origin=13 PASS NETWORK - No CORP image 4 PASS NETWORK - CORP image 5 PASS CACHED - No CORP image 6 PASS CACHED - CORP image 11 7 PASS main_test 12 8 -
trunk/LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/require-corp-cached-images.https.html
r284510 r292595 5 5 <script src="/resources/testharnessreport.js"></script> 6 6 <script src="/common/get-host-info.sub.js"></script> 7 <script src="/common/utils.js"></script> 7 8 <script> 8 9 … … 13 14 14 15 // 15 // This test loads a same-orig n iframe resources/load_corp_images.html with16 // This test loads a same-origin iframe resources/load-corp-images.html with 16 17 // Cross-Origin-Embedder-Policy: require-corp 17 18 // The iframe loads two cross origin images, one with a … … 23 24 // 24 25 25 const image_path = "/html/cross-origin-embedder-policy/resources/corp-image.py"; 26 const RUNS = ["NETWORK", "CACHED"]; 27 const RESOURCE_DESC = ["No CORP image", "CORP image"]; 26 28 27 29 let EXPECTED_LOADS = { 28 [` NETWORK-${remote(image_path)}`]: false,29 [` NETWORK-${remote(image_path)}?corp-cross-origin=1`]: true,30 [` CACHED-${remote(image_path)}`]: false,31 [` CACHED-${remote(image_path)}?corp-cross-origin=1`]: true,30 [`${RUNS[0]} - ${RESOURCE_DESC[0]}`]: false, 31 [`${RUNS[0]} - ${RESOURCE_DESC[1]}`]: true, 32 [`${RUNS[1]} - ${RESOURCE_DESC[0]}`]: false, 33 [`${RUNS[1]} - ${RESOURCE_DESC[1]}`]: true, 32 34 } 33 35 … … 38 40 39 41 window.addEventListener("load", async () => { 40 let iframe = document.createElement("iframe"); 41 let firstRun = true; 42 let t = async_test("main_test"); 43 await new Promise((resolve, reject) => { 44 iframe.src = "resources/load-corp-images.html"; 45 iframe.onload = () => { resolve() }; 46 iframe.onerror = (e) => { reject(); }; 47 window.addEventListener("message", (event) => { 48 // After the first done event we reload the iframe. 49 if (event.data.done) { 50 if (firstRun) { 51 firstRun = false; 52 iframe.contentWindow.location.reload(); 53 } else { 54 // After the second done event the test is finished. 55 t.done(); 56 } 42 const t = async_test("main_test"); 43 const iframe = document.createElement("iframe"); 44 // The token attribute is used to ensure the resource has never been seen by 45 // the HTTP cache. This can be useful if the cache isn't properly flushed in 46 // between two tests. 47 iframe.src = `resources/load-corp-images.html?revalidate=false&token=${token()}`; 48 let runCount = 0; 49 window.addEventListener("message", (event) => { 50 // After the first done event we reload the iframe. 51 if (event.data.done) { 52 ++runCount; 53 if (runCount < RUNS.length) { 54 iframe.contentWindow.location.reload(); 57 55 } else { 58 // Check that each image either loads or doesn't based on the expectations 59 let testName = `${firstRun ? "NETWORK-" : "CACHED-"}${event.data.src}`; 60 let test = TESTS[testName]; 61 test.step(() => { 62 assert_equals(event.data.loaded, EXPECTED_LOADS[testName], `${firstRun ? "NETWORK" : "CACHED"} load of ${event.data.src} should ${EXPECTED_LOADS[testName] ? "" : "not"} succeed`); 63 }); 64 test.done(); 56 // After the second done event the test is finished. 57 t.done(); 65 58 } 66 }, false); 67 document.body.appendChild(iframe); 68 }) 59 return; 60 } 61 62 // Check that each image either loads or doesn't based on the expectations 63 let testName = `${RUNS[runCount]} - ${event.data.corp ? RESOURCE_DESC[1] : RESOURCE_DESC[0]}`; 64 let test = TESTS[testName]; 65 test.step(() => { 66 assert_equals(event.data.loaded, EXPECTED_LOADS[testName], `${testName} should ${EXPECTED_LOADS[testName] ? "" : "not"} succeed`); 67 }); 68 test.done(); 69 }, false); 70 document.body.appendChild(iframe); 69 71 }); 70 71 72 72 73 </script> -
trunk/LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/resources/corp-image.py
r284510 r292595 11 11 response.headers.set(b'Access-Control-Allow-Headers', b'Content-Type') 12 12 13 response.headers.set(b"Cache-Control", b"max-age=3600");14 13 # CORS preflight 15 14 if request.method == u'OPTIONS': 16 15 return u'' 17 16 18 if b'some-etag' == request.headers.get(b"If-None-Match", None): 17 if b'true' == request.GET.get(b'revalidate', None): 18 response.headers.set(b'Cache-Control', b'max-age=0, must-revalidate') 19 else: 20 response.headers.set(b'Cache-Control', b'max-age=3600'); 21 22 if b'some-etag' == request.headers.get(b'If-None-Match', None): 19 23 response.status = 304 20 24 return u'' 21 25 22 if request.GET. first(b"corp-cross-origin", default=b""):26 if request.GET.get(b'corp-cross-origin', None): 23 27 response.headers.set(b'Cross-Origin-Resource-Policy', b'cross-origin') 24 28 -
trunk/LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/resources/load-corp-images.html
r284510 r292595 9 9 } 10 10 11 const image_path = "/html/cross-origin-embedder-policy/resources/corp-image.py"; 11 let params = new URLSearchParams(location.search); 12 let token = params.get('token'); 13 let revalidate = params.get('revalidate'); 14 15 let image_path = `/html/cross-origin-embedder-policy/resources/corp-image.py?token=${token}&revalidate=${revalidate}`; 12 16 13 17 window.addEventListener("load", async () => { … … 15 19 let img = document.createElement("img"); 16 20 img.src = remote(image_path); 17 img.onload = () => { window.parent.postMessage({ loaded: true, src: img.src}, "*"); resolve(); };18 img.onerror = (e) => { window.parent.postMessage({ loaded: false, src: img.src}, "*"); resolve(); };21 img.onload = () => { window.parent.postMessage({corp: false, loaded: true}, "*"); resolve(); }; 22 img.onerror = (e) => { window.parent.postMessage({corp: false, loaded: false}, "*"); resolve(); }; 19 23 document.body.appendChild(img); 20 24 }); … … 22 26 await new Promise(resolve => { 23 27 let img = document.createElement("img"); 24 img.src = remote(image_path + " ?corp-cross-origin=1");25 img.onload = () => { window.parent.postMessage({ loaded: true, src: img.src}, "*"); resolve(); };26 img.onerror = (e) => { window.parent.postMessage({ loaded: false, src: img.src}, "*"); resolve(); };28 img.src = remote(image_path + "&corp-cross-origin=1"); 29 img.onload = () => { window.parent.postMessage({corp: true, loaded: true}, "*"); resolve(); }; 30 img.onerror = (e) => { window.parent.postMessage({corp: true, loaded: false}, "*"); resolve(); }; 27 31 document.body.appendChild(img); 28 32 }); -
trunk/LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/resources/w3c-import.log
r284510 r292595 25 25 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/resources/dedicated-worker.js 26 26 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/resources/empty-coep.py 27 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/resources/fetch-and-create-url.html 27 28 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/resources/fetch-in-dedicated-worker.js 28 29 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/resources/iframe.html … … 55 56 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/resources/worker-owner-frame.html 56 57 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/resources/worker-owner.js 58 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/resources/worker-support.js -
trunk/LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/shared-workers.https-expected.txt
r289247 r292595 5 5 PASS "require-corp" (derived from response) 6 6 PASS default policy (derived from owner set due to use of local scheme - blob URL) 7 PASS require-corp (derived from blob URL creator) 7 8 FAIL "require-corp" (derived from owner set due to use of local scheme - blob URL) assert_equals: expected "failure" but got "success" 8 9 PASS default policy (derived from owner set due to use of local scheme - data URL) 10 PASS default policy (not derived from data URL creator) 9 11 FAIL "require-corp" (derived from owner set due to use of local scheme - data URL) assert_equals: expected "failure" but got "success" 12 FAIL default policy (derived from owner set due to use of local scheme - filesystem URL) assert_equals: url creation error expected (undefined) undefined but got (string) "unimplemented" 13 FAIL require-corp (derived from filesystem URL creator) assert_equals: url creation error expected (undefined) undefined but got (string) "unimplemented" 14 FAIL "require-corp" (derived from owner set due to use of local scheme - filesystem URL) assert_equals: url creation error expected (undefined) undefined but got (string) "unimplemented" 10 15 -
trunk/LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/shared-workers.https.html
r279427 r292595 6 6 <script src="/resources/testharnessreport.js"></script> 7 7 <script src="/common/get-host-info.sub.js"></script> 8 <script src="resources/worker-support.js"></script> 8 9 <body> 9 10 <p>Verify the Cross-Origin Embedder Policy for Shared Workers by performing a … … 14 15 'use strict'; 15 16 16 const {ORIGIN, REMOTE_ORIGIN} = get_host_info(); 17 const BASE = new URL("resources", location).pathname 18 const testUrl = `${REMOTE_ORIGIN}${BASE}/empty-coep.py`; 19 const workerHttpUrl = `${ORIGIN}${BASE}/shared-worker-fetch.js.py`; 20 let workerBlobUrl; 21 let workerDataUrl; 22 23 promise_setup(() => { 24 return fetch(workerHttpUrl) 25 .then((response) => response.text()) 26 .then((text) => { 27 workerDataUrl = 'data:text/javascript;base64,' + btoa(text); 28 workerBlobUrl = URL.createObjectURL( 29 new Blob([text], { 'Content-Type': 'text/javascript' }) 30 ); 31 }); 32 }); 17 const testUrl = resolveUrl("resources/empty-coep.py", { 18 host: get_host_info().REMOTE_HOST, 19 }).href; 20 21 function makeWorkerUrl(options) { 22 return resolveUrl("resources/shared-worker-fetch.js.py", options); 23 } 33 24 34 25 /** … … 37 28 * @param {object} t - a testharness.js subtest instance (used to reset global 38 29 * state) 39 * @param {string} ownerCoep - the Cross-Origin Embedder Policy of the iframe 40 * @param {string} workerUrl - the URL from which the Shared Worker should be 41 * created 30 * @param {string} url - the URL from which the Shared Worker should be 31 * created 32 * @param {string} options.ownerCoep - the Cross-Origin Embedder Policy of the 33 iframe 42 34 */ 43 function create(t, ownerCoep, workerUrl) { 44 const iframe = document.createElement('iframe'); 45 iframe.src = 'resources/empty-coep.py' + 46 (ownerCoep ? '?value=' + ownerCoep : ''); 47 48 return new Promise((resolve, reject) => { 49 document.body.appendChild(iframe); 50 t.add_cleanup(() => iframe.remove()); 51 iframe.onload = () => resolve(iframe); 52 }) 53 .then((iframe) => { 54 const sw = new iframe.contentWindow.SharedWorker(workerUrl); 55 56 return new Promise((resolve) => { 57 sw.port.addEventListener('message', () => resolve(sw), { once: true }); 58 sw.port.start(); 59 }); 60 }); 35 async function createWorker(t, url, options) { 36 const { ownerCoep } = options || {}; 37 const frameUrl = resolveUrl("/common/blank.html", { coep: ownerCoep }); 38 39 const iframe = await withIframe(t, frameUrl); 40 41 const sw = new iframe.contentWindow.SharedWorker(url); 42 sw.onerror = t.unreached_func('SharedWorker.onerror should not be called'); 43 44 await new Promise((resolve) => { 45 sw.port.addEventListener('message', resolve, { once: true }); 46 sw.port.start(); 47 }); 48 49 return sw; 61 50 } 62 51 … … 77 66 }; 78 67 79 promise_test( (t) => {80 return create(t, null, workerHttpUrl)81 .then((worker) => fetchFromWorker(worker, testUrl))82 .then((result) => assert_equals(result, 'success'));68 promise_test(async (t) => { 69 const worker = await createWorker(t, makeWorkerUrl()); 70 const result = await fetchFromWorker(worker, testUrl); 71 assert_equals(result, 'success'); 83 72 }, 'default policy (derived from response)'); 84 73 85 promise_test( (t) => {86 return create(t, null, workerHttpUrl + '?value=require-corp')87 .then((worker) => fetchFromWorker(worker, testUrl))88 .then((result) => assert_equals(result, 'failure'));74 promise_test(async (t) => { 75 const worker = await createWorker(t, makeWorkerUrl({ coep: 'require-corp' })); 76 const result = await fetchFromWorker(worker, testUrl); 77 assert_equals(result, 'failure'); 89 78 }, '"require-corp" (derived from response)'); 90 79 91 promise_test((t) => { 92 return Promise.all([ 93 create(t, null, workerBlobUrl), 94 create(t, null, workerBlobUrl), 95 create(t, null, workerBlobUrl) 96 ]) 97 .then((workers) => fetchFromWorker(workers[0], testUrl)) 98 .then((result) => assert_equals(result, 'success')); 80 promise_test(async (t) => { 81 const blobUrl = await createLocalUrl(t, { 82 url: makeWorkerUrl(), 83 scheme: "blob", 84 }); 85 86 const workers = await Promise.all([ 87 createWorker(t, blobUrl), 88 createWorker(t, blobUrl), 89 createWorker(t, blobUrl), 90 ]); 91 92 const result = await fetchFromWorker(workers[0], testUrl); 93 assert_equals(result, 'success'); 99 94 }, 'default policy (derived from owner set due to use of local scheme - blob URL)'); 100 95 101 promise_test((t) => { 102 return Promise.all([ 103 create(t, null, workerBlobUrl), 104 create(t, 'require-corp', workerBlobUrl), 105 create(t, null, workerBlobUrl) 106 ]) 107 .then((workers) => fetchFromWorker(workers[0], testUrl)) 108 .then((result) => assert_equals(result, 'failure')); 96 promise_test(async (t) => { 97 const blobUrl = await createLocalUrl(t, { 98 url: makeWorkerUrl(), 99 creatorCoep: "require-corp", 100 scheme: "blob", 101 }); 102 103 const workers = await Promise.all([ 104 createWorker(t, blobUrl), 105 createWorker(t, blobUrl), 106 createWorker(t, blobUrl), 107 ]); 108 109 const result = await fetchFromWorker(workers[0], testUrl); 110 assert_equals(result, 'failure'); 111 }, 'require-corp (derived from blob URL creator)'); 112 113 promise_test(async (t) => { 114 const blobUrl = await createLocalUrl(t, { 115 url: makeWorkerUrl(), 116 scheme: "blob", 117 }); 118 119 const workers = await Promise.all([ 120 createWorker(t, blobUrl), 121 createWorker(t, blobUrl, { ownerCoep: 'require-corp' }), 122 createWorker(t, blobUrl), 123 ]); 124 125 const result = await fetchFromWorker(workers[0], testUrl); 126 assert_equals(result, 'failure'); 109 127 }, '"require-corp" (derived from owner set due to use of local scheme - blob URL)'); 110 128 111 promise_test((t) => { 112 return Promise.all([ 113 create(t, null, workerDataUrl), 114 create(t, null, workerDataUrl), 115 create(t, null, workerDataUrl) 116 ]) 117 .then((workers) => fetchFromWorker(workers[0], testUrl)) 118 .then((result) => assert_equals(result, 'success')); 129 promise_test(async (t) => { 130 const dataUrl = await createLocalUrl(t, { 131 url: makeWorkerUrl(), 132 scheme: "data", 133 }); 134 135 const workers = await Promise.all([ 136 createWorker(t, dataUrl), 137 createWorker(t, dataUrl), 138 createWorker(t, dataUrl), 139 ]); 140 141 const result = await fetchFromWorker(workers[0], testUrl); 142 assert_equals(result, 'success'); 119 143 }, 'default policy (derived from owner set due to use of local scheme - data URL)'); 120 144 121 promise_test((t) => { 122 return Promise.all([ 123 create(t, null, workerDataUrl), 124 create(t, 'require-corp', workerDataUrl), 125 create(t, null, workerDataUrl) 126 ]) 127 .then((workers) => fetchFromWorker(workers[0], testUrl)) 128 .then((result) => assert_equals(result, 'failure')); 145 promise_test(async (t) => { 146 const dataUrl = await createLocalUrl(t, { 147 url: makeWorkerUrl(), 148 creatorCoep: "require-corp", 149 scheme: "data", 150 }); 151 152 const workers = await Promise.all([ 153 createWorker(t, dataUrl), 154 createWorker(t, dataUrl), 155 createWorker(t, dataUrl), 156 ]); 157 158 const result = await fetchFromWorker(workers[0], testUrl); 159 assert_equals(result, 'success'); 160 }, 'default policy (not derived from data URL creator)'); 161 162 promise_test(async (t) => { 163 const dataUrl = await createLocalUrl(t, { 164 url: makeWorkerUrl(), 165 scheme: "data", 166 }); 167 168 const workers = await Promise.all([ 169 createWorker(t, dataUrl), 170 createWorker(t, dataUrl, { ownercoep: 'require-corp' }), 171 createWorker(t, dataUrl), 172 ]); 173 174 const result = await fetchFromWorker(workers[0], testUrl); 175 assert_equals(result, 'failure'); 129 176 }, '"require-corp" (derived from owner set due to use of local scheme - data URL)'); 177 178 promise_test(async (t) => { 179 const filesystemUrl = await createLocalUrl(t, { 180 url: makeWorkerUrl(), 181 scheme: "filesystem", 182 }); 183 184 const workers = await Promise.all([ 185 createWorker(t, filesystemUrl), 186 createWorker(t, filesystemUrl), 187 createWorker(t, filesystemUrl), 188 ]); 189 190 const result = await fetchFromWorker(workers[0], testUrl); 191 assert_equals(result, 'success'); 192 }, 'default policy (derived from owner set due to use of local scheme - filesystem URL)'); 193 194 promise_test(async (t) => { 195 const filesystemUrl = await createLocalUrl(t, { 196 url: makeWorkerUrl(), 197 creatorCoep: "require-corp", 198 scheme: "filesystem", 199 }); 200 201 const workers = await Promise.all([ 202 createWorker(t, filesystemUrl), 203 createWorker(t, filesystemUrl), 204 createWorker(t, filesystemUrl), 205 ]); 206 207 const result = await fetchFromWorker(workers[0], testUrl); 208 assert_equals(result, 'failure'); 209 }, 'require-corp (derived from filesystem URL creator)'); 210 211 promise_test(async (t) => { 212 const filesystemUrl = await createLocalUrl(t, { 213 url: makeWorkerUrl(), 214 scheme: "filesystem", 215 }); 216 217 const workers = await Promise.all([ 218 createWorker(t, filesystemUrl), 219 createWorker(t, filesystemUrl, { ownerCoep: 'require-corp' }), 220 createWorker(t, filesystemUrl), 221 ]); 222 223 const result = await fetchFromWorker(workers[0], testUrl); 224 assert_equals(result, 'failure'); 225 }, '"require-corp" (derived from owner set due to use of local scheme - filesystem URL)'); 130 226 </script> 131 227 </body> -
trunk/LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/w3c-import.log
r287846 r292595 66 66 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/require-corp-load-from-cache-storage.https.html 67 67 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/require-corp-load-from-cache-storage.https.html.headers 68 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/require-corp-revalidated-images.https.html 68 69 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/require-corp-sw-from-none.https.html 69 70 /LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/require-corp-sw-from-require-corp.https.html -
trunk/Source/WebKit/ChangeLog
r292593 r292595 1 2022-04-08 Carlos Garcia Campos <cgarcia@igalia.com> 2 3 Incorrect CORP/COEP check in 304 responses 4 https://bugs.webkit.org/show_bug.cgi?id=238238 5 <rdar://problem/90706510> 6 7 Reviewed by Youenn Fablet. 8 9 Add CORP header to the 304 response if previously set to avoid being blocked by load checker due to COEP. 10 11 Test: imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/require-corp-revalidated-images.https.html 12 13 * NetworkProcess/NetworkResourceLoader.cpp: 14 (WebKit::NetworkResourceLoader::didReceiveResponse): 15 1 16 2022-04-07 J Pascoe <j_pascoe@apple.com> 2 17 -
trunk/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp
r292468 r292595 793 793 m_cacheEntryForValidation = m_cache->update(originalRequest(), *m_cacheEntryForValidation, m_response, m_privateRelayed); 794 794 // If the request was conditional then this revalidation was not triggered by the network cache and we pass the 304 response to WebCore. 795 if (originalRequest().isConditional()) 795 if (originalRequest().isConditional()) { 796 // Add CORP header to the 304 response if previously set to avoid being blocked by load checker due to COEP. 797 auto crossOriginResourcePolicy = m_cacheEntryForValidation->response().httpHeaderField(HTTPHeaderName::CrossOriginResourcePolicy); 798 if (!crossOriginResourcePolicy.isEmpty()) 799 m_response.setHTTPHeaderField(HTTPHeaderName::CrossOriginResourcePolicy, crossOriginResourcePolicy); 796 800 m_cacheEntryForValidation = nullptr; 801 } 797 802 } else 798 803 m_cacheEntryForValidation = nullptr;
Note: See TracChangeset
for help on using the changeset viewer.