blob: 65368acbaef86b5af4dac28cc1205e6eca2c1b89 [file] [edit]
<!DOCTYPE html>
<title>Same-origin prerendering can access Indexed Database</title>
<meta name="timeout" content="long">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/utils.js"></script>
<script src="resources/indexedb-utils.js"></script>
<body>
<script>
setup(() => assertSpeculationRulesIsSupported());
promise_test(async t => {
const bc = new BroadcastChannel('prerender-channel');
const gotMessage = new Promise(resolve => {
bc.addEventListener('message', e => {
resolve(e.data);
}, {
once: true
});
});
const db = await openIndexedDatabase();
assert_not_equals(db, null, 'Failed to open database.');
await addData(db, INITIATOR_KEY, INITIATOR_VALUE);
// Start prerendering a page that attempts to access the IndexedDB API.
startPrerendering(`resources/indexeddb-access.html`);
const prerenderReadResult = await gotMessage;
assert_equals(
prerenderReadResult, INITIATOR_VALUE,
'prerendering page should be able to read from Indexed DataBase');
const initiatorReadResult = await readData(db, PRERENDER_KEY);
assert_equals(
initiatorReadResult, PRERENDER_VALUE,
'prerendering page should be able to write to Indexed DataBase');
db.close();
bc.close();
}, 'prerendering page should be able to access Indexed DataBase')
</script>
</body>