Skip to content

Commit

Permalink
update statuses
Browse files Browse the repository at this point in the history
  • Loading branch information
avivkeller committed Sep 7, 2024
1 parent 34fef7b commit 9d1d270
Show file tree
Hide file tree
Showing 25 changed files with 1,204 additions and 64 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
<!DOCTYPE html>
<meta charset=utf-8>
<meta name="timeout" content="long">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/get-host-info.sub.js"></script>
<script src="/common/utils.js"></script>
<script src="/common/dispatcher/dispatcher.js"></script>
<!-- Pull in executor_path needed by newPopup / newIframe -->
<script src="/html/cross-origin-embedder-policy/credentialless/resources/common.js"></script>
<!-- Pull in importScript / newPopup / newIframe -->
<script src="/html/anonymous-iframe/resources/common.js"></script>
<body>
<script>

const navigation_handle_null = "Navigation handle returns null";
const navigation_handle_not_null = "Navigation handle returns not null";
const opener_null_response = "Window.opener is null";
const opener_not_null_response = "Window.opener isn't null";

const does_blob_url_open_return_handle = (blob_url, response_queue_name) => `
async function test() {
const handle = window.open("${blob_url}")
if (!handle) {
return send("${response_queue_name}", "${navigation_handle_null}");
}
return send("${response_queue_name}", "${navigation_handle_not_null}");
}
await test();
`;

const add_iframe_js = (iframe_origin, response_queue_uuid) => `
const importScript = ${importScript};
await importScript("/html/cross-origin-embedder-policy/credentialless" +
"/resources/common.js");
await importScript("/html/anonymous-iframe/resources/common.js");
await importScript("/common/utils.js");
// dispatcher.js has already been loaded by the popup this is running in.
await send("${response_queue_uuid}", newIframe("${iframe_origin}"));
`;

const same_site_origin = get_host_info().HTTPS_ORIGIN;
const cross_site_origin = get_host_info().HTTPS_NOTSAMESITE_ORIGIN;

async function create_test_iframes(t, response_queue_uuid) {
assert_equals("https://" + window.location.host, same_site_origin,
"this test assumes that the page's window.location.host corresponds to " +
"get_host_info().HTTPS_ORIGIN");

// Create a same-origin iframe in a cross-site popup.
const not_same_site_popup_uuid = newPopup(t, cross_site_origin);
await send(not_same_site_popup_uuid,
add_iframe_js(same_site_origin, response_queue_uuid));
const cross_site_iframe_uuid = await receive(response_queue_uuid);

// Create a same-origin iframe in a same-site popup.
const same_origin_popup_uuid = newPopup(t, same_site_origin);
await send(same_origin_popup_uuid,
add_iframe_js(same_site_origin, response_queue_uuid));
const same_site_iframe_uuid = await receive(response_queue_uuid);

return [cross_site_iframe_uuid, same_site_iframe_uuid];
}

// Tests navigating blob URL for same and cross partition iframes.
promise_test(t => {
return new Promise(async (resolve, reject) => {
try {
// Creates same and cross partition iframes.
const response_queue_uuid = token();
const noopener_response_queue = token();

const [cross_site_iframe_uuid, same_site_iframe_uuid] =
await create_test_iframes(t, response_queue_uuid);

const frame_html = `
<!doctype html>
// dispatcher.js requires the baseURI to be set in order to compute the
// server path correctly in the blob URL page.
<base href="${window.location.href}">
<script src="/html/cross-origin-embedder-policy/credentialless/resources/common.js"><\/script>
<script src="/html/anonymous-iframe/resources/common.js"><\/script>
<script src="/common/utils.js"><\/script>
<script src="/common/dispatcher/dispatcher.js"><\/script>
<script>
if (window.opener === null) {
send("${noopener_response_queue}", "${opener_null_response}")
} else {
send("${noopener_response_queue}", "${opener_not_null_response}")
}
<\/script>
`;

const blob = new Blob([frame_html], {type : "text/html"});
const blob_url = URL.createObjectURL(blob);

// Attempt to open blob URL in cross partition iframe.
await send(cross_site_iframe_uuid, does_blob_url_open_return_handle(blob_url, response_queue_uuid));
const response_1 = await receive(response_queue_uuid);
if (response_1 !== navigation_handle_not_null) {
reject(`Blob URL wasn't opened in not-same-top-level-site iframe: ${response_1}`);
}
const noopener_response_1 = await receive(noopener_response_queue);
if (noopener_response_1 !== opener_null_response) {
reject(`Blob URL page opener wasn't null in not-same-top-level-site iframe.`);
}

// Attempt to open blob URL in same partition iframe.
await send(same_site_iframe_uuid, does_blob_url_open_return_handle(blob_url, response_queue_uuid));
const response_2 = await receive(response_queue_uuid);
if (response_2 !== navigation_handle_not_null) {
reject(`Blob URL wasn't opened in same-top-level-site iframe: ${response_2}`);
}
const noopener_response_2 = await receive(noopener_response_queue);
if (noopener_response_2 !== opener_non_null_response) {
reject(`Blob URL page opener was null in same-top-level-site iframe`);
}
resolve();
} catch (e) {
reject(e);
}
});
}, "Blob URL navigation should enforce noopener for a cross-top-level-site navigation");

</script>
</body>
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,8 @@
"/resources/common.js");
await importScript("/html/anonymous-iframe/resources/common.js");
await importScript("/common/utils.js");
// dispatcher.js has already been loaded by the popup this is running in.
await send("${response_queue_uuid}", newIframe("${iframe_origin}"));
`;

Expand All @@ -86,15 +88,15 @@
const not_same_site_popup_uuid = newPopup(t, cross_site_origin);
await send(not_same_site_popup_uuid,
add_iframe_js(same_site_origin, response_queue_uuid));
const iframe_1_uuid = await receive(response_queue_uuid);
const cross_site_iframe_uuid = await receive(response_queue_uuid);

// Create a same-origin iframe in a same-site popup.
const same_origin_popup_uuid = newPopup(t, same_site_origin);
await send(same_origin_popup_uuid,
add_iframe_js(same_site_origin, response_queue_uuid));
const iframe_2_uuid = await receive(response_queue_uuid);
const same_site_iframe_uuid = await receive(response_queue_uuid);

return [iframe_1_uuid, iframe_2_uuid];
return [cross_site_iframe_uuid, same_site_iframe_uuid];
}

// Tests revoking blob URL for same and cross partition iframes.
Expand All @@ -114,11 +116,11 @@
// Creates same and cross partition iframes.
const response_queue_uuid = token();

const [iframe_1_uuid, iframe_2_uuid] =
const [cross_site_iframe_uuid, same_site_iframe_uuid] =
await create_test_iframes(t, response_queue_uuid);

// Attempt to revoke blob URL in cross partition iframe.
await send(iframe_1_uuid, can_blob_url_be_revoked_js(blob_url, response_queue_uuid));
await send(cross_site_iframe_uuid, can_blob_url_be_revoked_js(blob_url, response_queue_uuid));
var response_1 = await receive(response_queue_uuid);
if (response_1 !== js_finished) {
reject(response_1);
Expand All @@ -129,7 +131,7 @@
}

// Attempt to revoke blob URL in same partition iframe.
await send(iframe_2_uuid, can_blob_url_be_revoked_js(blob_url, response_queue_uuid));
await send(same_site_iframe_uuid, can_blob_url_be_revoked_js(blob_url, response_queue_uuid));
var response_2 = await receive(response_queue_uuid);
if (response_2 !== js_finished) {
reject(response_2);
Expand Down Expand Up @@ -160,6 +162,8 @@
"/resources/common.js");
await importScript("/html/anonymous-iframe/resources/common.js");
await importScript("/common/utils.js");
// dispatcher.js has already been loaded by the popup this is running in.
const newWorker = ${newWorker};
await send("${response_queue_uuid}", newWorker("${origin}"));
`;
Expand All @@ -170,13 +174,13 @@
try {
const response_queue_uuid = token();

const [iframe_1_uuid, iframe_2_uuid] =
const [cross_site_iframe_uuid, same_site_iframe_uuid] =
await create_test_iframes(t, response_queue_uuid);

await send(iframe_1_uuid, create_dedicated_worker_js(same_site_origin, response_queue_uuid));
await send(cross_site_iframe_uuid, create_dedicated_worker_js(same_site_origin, response_queue_uuid));
const worker_1_uuid = await receive(response_queue_uuid);

await send(iframe_2_uuid, create_dedicated_worker_js(same_site_origin, response_queue_uuid));
await send(same_site_iframe_uuid, create_dedicated_worker_js(same_site_origin, response_queue_uuid));
const worker_2_uuid = await receive(response_queue_uuid);

const blob = new Blob(["blob data"], {type : "text/plain"});
Expand Down Expand Up @@ -223,6 +227,8 @@
"/resources/common.js");
await importScript("/html/anonymous-iframe/resources/common.js");
await importScript("/common/utils.js");
// dispatcher.js has already been loaded by the popup this is running in.
const newSharedWorker = ${newSharedWorker};
await send("${response_queue_uuid}", newSharedWorker("${origin}"));
`;
Expand All @@ -233,15 +239,15 @@
try {
const response_queue_uuid = token();

const [iframe_1_uuid, iframe_2_uuid] =
const [cross_site_iframe_uuid, same_site_iframe_uuid] =
await create_test_iframes(t, response_queue_uuid);

// Create a shared worker in the cross-top-level-site iframe.
await send(iframe_1_uuid, create_shared_worker_js(same_site_origin, response_queue_uuid));
await send(cross_site_iframe_uuid, create_shared_worker_js(same_site_origin, response_queue_uuid));
const worker_1_uuid = await receive(response_queue_uuid);

// Create a shared worker in the same-top-level-site iframe.
await send(iframe_2_uuid, create_shared_worker_js(same_site_origin, response_queue_uuid));
await send(same_site_iframe_uuid, create_shared_worker_js(same_site_origin, response_queue_uuid));
const worker_2_uuid = await receive(response_queue_uuid);

const blob = new Blob(["blob data"], {type : "text/plain"});
Expand Down Expand Up @@ -293,6 +299,8 @@
"/resources/common.js");
await importScript("/html/anonymous-iframe/resources/common.js");
await importScript("/common/utils.js");
// dispatcher.js has already been loaded by the popup this is running in.
const newServiceWorker = ${newServiceWorker};
await send("${response_queue_uuid}", await newServiceWorker("${origin}"));
`;
Expand All @@ -303,11 +311,11 @@
try {
const response_queue_uuid = token();

const [iframe_1_uuid, iframe_2_uuid] =
const [cross_site_iframe_uuid, same_site_iframe_uuid] =
await create_test_iframes(t, response_queue_uuid);

// Create a service worker in either iframe.
await send(iframe_1_uuid, create_service_worker_js(same_site_origin, response_queue_uuid));
await send(cross_site_iframe_uuid, create_service_worker_js(same_site_origin, response_queue_uuid));
var worker_1_uuid = await receive(response_queue_uuid);
t.add_cleanup(() =>
send(worker_1_uuid, "self.registration.unregister();"));
Expand Down Expand Up @@ -347,18 +355,18 @@
// Creates same and cross partition iframes.
const response_queue_uuid = token();

const [iframe_1_uuid, iframe_2_uuid] =
const [cross_site_iframe_uuid, same_site_iframe_uuid] =
await create_test_iframes(t, response_queue_uuid);

// Attempt to fetch blob URL in cross partition iframe.
await send(iframe_1_uuid, can_blob_url_be_fetched_js(blob_url, response_queue_uuid));
await send(cross_site_iframe_uuid, can_blob_url_be_fetched_js(blob_url, response_queue_uuid));
var response_1 = await receive(response_queue_uuid);
if (response_1 !== fetch_unsuccessful_response) {
reject(`Blob URL was fetched in not-same-top-level-site iframe: ${response_1}`);
}

// Attempt to fetch blob URL in same partition iframe.
await send(iframe_2_uuid, can_blob_url_be_fetched_js(blob_url, response_queue_uuid));
await send(same_site_iframe_uuid, can_blob_url_be_fetched_js(blob_url, response_queue_uuid));
var response_2 = await receive(response_queue_uuid);
if (response_2 !== fetch_successful_response) {
reject(`Blob URL wasn't fetched in same-top-level-site iframe: ${response_2}`);
Expand All @@ -378,15 +386,15 @@
const response_queue_uuid = token();

// Creates same and cross partition iframes.
const [iframe_1_uuid, iframe_2_uuid] =
const [cross_site_iframe_uuid, same_site_iframe_uuid] =
await create_test_iframes(t, response_queue_uuid);

// Creates a dedicated worker in the cross-top-level-site iframe.
await send(iframe_1_uuid, create_dedicated_worker_js(same_site_origin, response_queue_uuid));
await send(cross_site_iframe_uuid, create_dedicated_worker_js(same_site_origin, response_queue_uuid));
const worker_1_uuid = await receive(response_queue_uuid);

// Creates a dedicated worker in the same-top-level-site iframe.
await send(iframe_2_uuid, create_dedicated_worker_js(same_site_origin, response_queue_uuid));
await send(same_site_iframe_uuid, create_dedicated_worker_js(same_site_origin, response_queue_uuid));
const worker_2_uuid = await receive(response_queue_uuid);

const blob = new Blob(["blob data"], {type : "text/plain"});
Expand Down Expand Up @@ -420,15 +428,15 @@
try {
const response_queue_uuid = token();

const [iframe_1_uuid, iframe_2_uuid] =
const [cross_site_iframe_uuid, same_site_iframe_uuid] =
await create_test_iframes(t, response_queue_uuid);

// Create a shared worker in the cross-top-level-site iframe.
await send(iframe_1_uuid, create_shared_worker_js(same_site_origin, response_queue_uuid));
await send(cross_site_iframe_uuid, create_shared_worker_js(same_site_origin, response_queue_uuid));
const worker_1_uuid = await receive(response_queue_uuid);

// Create a shared worker in the same-top-level-site iframe.
await send(iframe_2_uuid, create_shared_worker_js(same_site_origin, response_queue_uuid));
await send(same_site_iframe_uuid, create_shared_worker_js(same_site_origin, response_queue_uuid));
const worker_2_uuid = await receive(response_queue_uuid);

const blob = new Blob(["blob data"], {type : "text/plain"});
Expand Down Expand Up @@ -462,15 +470,15 @@
try {
const response_queue_uuid = token();

const [iframe_1_uuid, iframe_2_uuid] =
const [cross_site_iframe_uuid, same_site_iframe_uuid] =
await create_test_iframes(t, response_queue_uuid);

const blob = new Blob(["blob data"], {type : "text/plain"});
const blob_url = window.URL.createObjectURL(blob);
t.add_cleanup(() => window.URL.revokeObjectURL(blob_url));

// Create a service worker in cross-top-level-site iframe.
await send(iframe_1_uuid, create_service_worker_js(same_site_origin, response_queue_uuid));
await send(cross_site_iframe_uuid, create_service_worker_js(same_site_origin, response_queue_uuid));
var worker_1_uuid = await receive(response_queue_uuid);
t.add_cleanup(() =>
send(worker_1_uuid, "self.registration.unregister();"));
Expand All @@ -483,7 +491,7 @@
}

// Create a service worker in same-top-level-site iframe.
await send(iframe_2_uuid, create_service_worker_js(same_site_origin, response_queue_uuid));
await send(same_site_iframe_uuid, create_service_worker_js(same_site_origin, response_queue_uuid));
var worker_2_uuid = await receive(response_queue_uuid);
t.add_cleanup(() =>
send(worker_2_uuid, "self.registration.unregister();"));
Expand Down
16 changes: 8 additions & 8 deletions test/fixtures/wpt/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,24 +13,24 @@ Last update:
- common: https://github.com/web-platform-tests/wpt/tree/d8da9d4d1d/common
- compression: https://github.com/web-platform-tests/wpt/tree/da8d6860b2/compression
- console: https://github.com/web-platform-tests/wpt/tree/e48251b778/console
- dom/abort: https://github.com/web-platform-tests/wpt/tree/07a9d09a8f/dom/abort
- dom/abort: https://github.com/web-platform-tests/wpt/tree/0143fe244b/dom/abort
- dom/events: https://github.com/web-platform-tests/wpt/tree/0a811c5161/dom/events
- encoding: https://github.com/web-platform-tests/wpt/tree/5aa50dd415/encoding
- fetch/data-urls/resources: https://github.com/web-platform-tests/wpt/tree/7c79d998ff/fetch/data-urls/resources
- FileAPI: https://github.com/web-platform-tests/wpt/tree/1d5fb397da/FileAPI
- FileAPI: https://github.com/web-platform-tests/wpt/tree/40a4e28f25/FileAPI
- hr-time: https://github.com/web-platform-tests/wpt/tree/614e81711c/hr-time
- html/webappapis/atob: https://github.com/web-platform-tests/wpt/tree/f267e1dca6/html/webappapis/atob
- html/webappapis/microtask-queuing: https://github.com/web-platform-tests/wpt/tree/22ecfc9bac/html/webappapis/microtask-queuing
- html/webappapis/structured-clone: https://github.com/web-platform-tests/wpt/tree/c29dcddf37/html/webappapis/structured-clone
- html/webappapis/timers: https://github.com/web-platform-tests/wpt/tree/7a0548ac47/html/webappapis/timers
- interfaces: https://github.com/web-platform-tests/wpt/tree/ab18bf796b/interfaces
- interfaces: https://github.com/web-platform-tests/wpt/tree/4a48b52da3/interfaces
- performance-timeline: https://github.com/web-platform-tests/wpt/tree/94caab7038/performance-timeline
- resource-timing: https://github.com/web-platform-tests/wpt/tree/95e7763ca9/resource-timing
- resources: https://github.com/web-platform-tests/wpt/tree/ff5b1bc4db/resources
- streams: https://github.com/web-platform-tests/wpt/tree/b5f2d0c48a/streams
- url: https://github.com/web-platform-tests/wpt/tree/30de089033/url
- resource-timing: https://github.com/web-platform-tests/wpt/tree/7bb012885c/resource-timing
- resources: https://github.com/web-platform-tests/wpt/tree/d9f17001dc/resources
- streams: https://github.com/web-platform-tests/wpt/tree/699dbdae30/streams
- url: https://github.com/web-platform-tests/wpt/tree/08519e73d1/url
- user-timing: https://github.com/web-platform-tests/wpt/tree/5ae85bf826/user-timing
- wasm/jsapi: https://github.com/web-platform-tests/wpt/tree/140f5c80fd/wasm/jsapi
- wasm/jsapi: https://github.com/web-platform-tests/wpt/tree/f427091001/wasm/jsapi
- wasm/webapi: https://github.com/web-platform-tests/wpt/tree/28456b73ca/wasm/webapi
- WebCryptoAPI: https://github.com/web-platform-tests/wpt/tree/6748a0a246/WebCryptoAPI
- webidl/ecmascript-binding/es-exceptions: https://github.com/web-platform-tests/wpt/tree/a370aad338/webidl/ecmascript-binding/es-exceptions
Expand Down
11 changes: 11 additions & 0 deletions test/fixtures/wpt/dom/abort/crashtests/any-on-abort.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<!DOCTYPE html>
<meta charset="utf-8">
<script>
let b;
window.addEventListener("DOMContentLoaded", () => {
let a = new AbortController()
b = AbortSignal.any([a.signal])
a.signal.addEventListener("abort", () => { AbortSignal.any([b]) }, { })
a.abort(undefined)
})
</script>
Loading

0 comments on commit 9d1d270

Please sign in to comment.