Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
- This WPT test may be referenced by the following Test IDs:
- /cookie-store/change_eventhandler_in_bfcache.https.window.html - WPT Dashboard Interop Dashboard
// META: title=CookieStore queues events when bfcached
// META: script=/common/dispatcher/dispatcher.js
// META: script=/common/utils.js
// META: script=/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js
'use strict';
promise_test(async t => {
const rcHelper = new RemoteContextHelper();
// Open a window with noopener so that BFCache will work.
const rc = await rcHelper.addWindow(null, { features: "noopener" });
await rc.executeScript(() => {
window.events = [];
window.addEventListener('pageshow', (event) => {
window.events.push("pageshow:" + event.persisted);
});
window.cookiePromise = new Promise(resolve => {
cookieStore.addEventListener('change', () => {
window.events.push("cookie");
resolve();
}, {once: true});
});
});
const rc2 = await rc.navigateToNew();
await rc2.executeScript(() => {
document.cookie = "BFCACHE=1; path=/";
});
await rc2.historyBack();
assert_equals(
await rc.executeScript(async () => window.cookiePromise.then(() => window.events.join("-"))), "pageshow:true-cookie",
'precondition: document was bfcached'
);
await rc.executeScript(async () => {
await cookieStore.delete("BFCACHE");
});
});