blob: 325cf858642424ad1c2e44657efc9b508a6f33fc [file] [log] [blame]
(async function(testRunner) {
const {page, session, dp} = await testRunner.startBlank(
`Verifies that navigating from a in-process iframe to in-process iframe sets the right sessionId.\n`);
await dp.Page.enable();
await dp.Page.setLifecycleEventsEnabled({ enabled: true });
let numberOfLoads = 0;
dp.Page.onLifecycleEvent(onLifecycleEvent);
await dp.Network.clearBrowserCache();
await dp.Network.setCacheDisabled({cacheDisabled: true});
await dp.Network.enable();
const helper = (await testRunner.loadScript('resources/extra-info-helper.js'))(dp, session);
await session.navigate('resources/page-in.html');
async function onLifecycleEvent(event) {
if (event.params.name != "load") return;
numberOfLoads++;
if (numberOfLoads != 2) return;
const events = [];
// The two in-process iframes from page-in.html have loaded.
dp.Network.onRequestWillBeSent(() => events.push("onRequestWillBeSent"));
dp.Network.onRequestWillBeSentExtraInfo(() => events.push("onRequestWillBeSentExtraInfo"));
dp.Network.onResponseReceivedExtraInfo(() => events.push("onResponseReceivedExtraInfo"));
dp.Network.onResponseReceived(() => events.push("onResponseReceived"));
const [request, requestExtraInfo, responseExtraInfo, response] =
await helper.jsNavigateIFrameWithExtraInfo('page-iframe', '/devtools/oopif/resources/inner-iframe.html');
testRunner.log(`Events received: [${events.sort().join(", ")}]`);
const requests = [request, requestExtraInfo, responseExtraInfo, response];
const requestIds = requests.map(x => x.params.requestId);
const sessionIds = requests.map(x => x.sessionId);
testRunner.log(`Number of request ids: ${requestIds.length}, unique ids ${new Set(requestIds).size}`);
testRunner.log(`Number of session ids: ${sessionIds.length}, unique ids ${new Set(sessionIds).size}`);
testRunner.completeTest();
}
})