<!DOCTYPE html>
<title>Test window.name after bcg swap</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/dispatcher/dispatcher.js"></script>
<script src="/common/utils.js"></script>
<script src="resources/utils.js"></script>

<body>
<script>
promise_test(async () => {
  const fenced_frame = attachFencedFrameContext();

  // This test verifies that COOP is not enabled in fenced frames. To do so, we
  // set the fenced frame's `window.name` and navigate it to a cross-origin page
  // with the `Cross-Origin-Opener-Policy: same-origin` response header.
  await fenced_frame.execute(() => {
    const remote_origin = get_host_info().REMOTE_ORIGIN;
    window.name = "test";
    const remote_url = new URL(location.pathname + location.search, remote_origin);

    let existing_pipe_query = remote_url.searchParams.get('pipe');
    const all_pipes = existing_pipe_query.split('|');
    all_pipes.push('header(Cross-Origin-Opener-Policy, same-origin)');

    remote_url.searchParams.set('pipe', all_pipes.join('|'));

    window.executor.suspend(() => {
      location.href = remote_url;
    });
  });

  // Verify that the fenced frame's `window.name` is still there
  await fenced_frame.execute(() => {
    assert_equals(window.name, 'test');
  });

}, "window.name after bcg swap");
</script>
</body>
