46 lines
1.7 KiB
HTML
46 lines
1.7 KiB
HTML
<!DOCTYPE html>
|
|
<meta name="timeout" content="long">
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
<script src="/common/utils.js"></script>
|
|
<script src="/common/dispatcher/dispatcher.js"></script>
|
|
<script src="/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js"></script>
|
|
<script src="../resources/utils.js"></script>
|
|
<script src="resources/utils.js"></script>
|
|
|
|
<body>
|
|
<script>
|
|
setup(() => assertSpeculationRulesIsSupported());
|
|
|
|
// We attempted to write this test using `RemoteContextHelper`. See
|
|
// https://github.com/web-platform-tests/wpt/blob/23ed0c7015082f21dd29dd09a545e2979dc3e08c/speculation-rules/prerender/prerender-while-prerender.html.
|
|
//
|
|
// However, that ended up being flaky in Chromium. See
|
|
// https://bugs.chromium.org/p/chromium/issues/detail?id=1517319.
|
|
//
|
|
// We're unsure yet if that flakiness was due to a test bug or an implementation
|
|
// bug. In case it is due to a test bug, we are currently trying the following
|
|
// uglier `PrerenderChannel` version. If it is still flaky, then probably it is
|
|
// an implementation bug, and we can revert to the prettier
|
|
// `RemoteContextHelper` version.
|
|
|
|
promise_test(async t => {
|
|
const uid = token();
|
|
const channel = new PrerenderChannel("result", uid);
|
|
const result = new Promise(r => channel.addEventListener("message", e => r(e.data)));
|
|
|
|
window.open(
|
|
`resources/prerender-while-prerender-initiator.html?uid=${uid}`,
|
|
"_blank",
|
|
"noopener"
|
|
);
|
|
|
|
assert_equals(
|
|
await result,
|
|
false,
|
|
"document.prerendering in the inner page must be false"
|
|
);
|
|
|
|
channel.close();
|
|
}, "Prerendering inside a prerender doesn't work, and navigating inside prerenderingchange is fine");
|
|
</script>
|