Commit d520b3d5 authored by Yifan Luo's avatar Yifan Luo Committed by moz-wptsync-bot
Browse files

Bug 1721625 [wpt PR 29734] - Reland "[COEPForSharedWorker] Add reporter to...

Bug 1721625 [wpt PR 29734] - Reland "[COEPForSharedWorker] Add reporter to shared worker host.", a=testonly

Automatic update from web-platform-tests
Reland "[COEPForSharedWorker] Add reporter to shared worker host."

This is a reland of 0d08f846ca52f20d37d398ae4f73f40a48e5ebb4

Original change's description:
> [COEPForSharedWorker] Add reporter to shared worker host.
>
> Add reporter to shared worker, which doesn't change the
> behaviour as COEP is not currently handed to the
> URLLoaderFactory.
>
> Bug: 1060832
> Change-Id: I4a4b55acd2bcdebef3ab20d741acdc1d188ac719
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2944788


> Commit-Queue: Yifan Luo <lyf@chromium.org>
> Reviewed-by: default avatarCamille Lamy <clamy@chromium.org>
> Reviewed-by: default avatarYutaka Hirano <yhirano@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#903576}

Bug: 1060832
Change-Id: Ibbc9635a174de3a6059779dcf4e497c91a589924
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3043581


Reviewed-by: default avatarYifan Luo <lyf@chromium.org>
Reviewed-by: default avatarYutaka Hirano <yhirano@chromium.org>
Reviewed-by: default avatarCamille Lamy <clamy@chromium.org>
Commit-Queue: Yifan Luo <lyf@chromium.org>
Cr-Commit-Position: refs/heads/master@{#903879}

--

wpt-commits: 6cb0dafc2b56b5e3edc43fc366f7643c42aba8b8
wpt-pr: 29734
parent f9a6fc75
Loading
Loading
Loading
Loading
+28 −2
Original line number Diff line number Diff line
@@ -24,6 +24,9 @@ const BASE = new URL("resources", location).pathname
const FRAME_URL = `resources/reporting-empty-frame.html` +
  `?pipe=header(cross-origin-embedder-policy,require-corp;report-to="endpoint")` +
  `|header(cross-origin-embedder-policy-report-only,require-corp;report-to="report-only-endpoint")`;
const WORKER_URL = `resources/shared-worker.js` +
  '?pipe=header(cross-origin-embedder-policy,require-corp;report-to="endpoint")' +
  `|header(cross-origin-embedder-policy-report-only,require-corp;report-to="report-only-endpoint")`;

function wait(ms) {
  return new Promise(resolve => step_timeout(resolve, ms));
@@ -58,7 +61,7 @@ async function checkCorpReportExistence(endpoint, blockedUrl, contextUrl, destin
    }
    await wait(retryDelay);
  }
  assert_unreached(`A report whose blockedURL is ${blockedUrl} and url is ${contextUrl} is not found.`);
  assert_unreached(`A report whose blockedURL is ${blockedUrl.split("?")[0]} and url is ${contextUrl} is not found.`);
}

async function checkNavigationReportExistence(endpoint, blockedUrl, contextUrl, disposition) {
@@ -80,7 +83,7 @@ async function checkNavigationReportExistence(endpoint, blockedUrl, contextUrl,
    }
    await wait(retryDelay);
  }
  assert_unreached(`A report whose blockedURL is ${blockedUrl} and url is ${contextUrl} is not found.`);
  assert_unreached(`A report whose blockedURL is ${blockedUrl.split("?")[0]} and url is ${contextUrl} is not found.`);
}

promise_test(async t => {
@@ -177,4 +180,27 @@ promise_test(async (t) => {

}, 'Two COEP headers, split inside report-to value');

// Shared worker do not support observer currently, so add test for endpoint
// here.
promise_test(async (t) => {
  const iframe = document.createElement('iframe');
  t.add_cleanup(() => iframe.remove());

  iframe.src = FRAME_URL;
  const targetUrl = `${REMOTE_ORIGIN}/common/blank.html?${token()}`;
  document.body.appendChild(iframe);

  const worker = new iframe.contentWindow.SharedWorker(WORKER_URL);
  worker.port.start();
  const script =
    `fetch('${targetUrl}', {mode: 'no-cors', cache: 'no-store'}).catch(e => {});`;
  worker.addEventListener('error', t.unreached_func('Worker.onerror'));
  worker.port.postMessage(script);

  await checkCorpReportExistence(
      'endpoint', targetUrl, WORKER_URL, 'iframe', 'enforce');
  await checkCorpReportExistence(
      'report-only-endpoint', targetUrl, WORKER_URL, 'iframe', 'reporting');
}, 'Shared worker fetch');

</script>
+7 −0
Original line number Diff line number Diff line
onconnect = (event) => {
  const port = event.ports[0];
  port.onmessage = (event) => {
    eval(event.data);
  };
  port.postMessage('ready');
};