blob: f74bf94b15ab296e1e5e6d6321e9f3056c8588e4 [file] [log] [blame]
(async function(testRunner) {
var {page, session, dp} = await testRunner.startBlank(
`Tests interception events are properly attributed to issuing frames.`);
session.protocol.Network.enable();
session.protocol.Page.enable();
var redirectFilenameToFrameId = new Map();
session.protocol.Network.onRequestIntercepted(event => {
var filename = event.params.request.url.split('/').pop();
redirectFilenameToFrameId.set(filename, event.params.frameId);
session.protocol.Network.continueInterceptedRequest({interceptionId: event.params.interceptionId});
});
await session.protocol.Network.setRequestInterception({patterns: [{urlPattern: "*"}]});
await session.evaluateAsync(`(function() {
function waitForLoad(loadable) {
return new Promise(fulfill => {
loadable.addEventListener('load', fulfill);
});
}
var script = document.createElement('script');
script.src = '${testRunner.url('./resources/final.js')}';
document.body.appendChild(script);
var style = document.createElement('link');
style.rel = 'stylesheet';
style.type = 'text/css';
style.href = '${testRunner.url('./resources/test.css')}';
document.head.appendChild(style);
var iframe = document.createElement('iframe');
iframe.src = '${testRunner.url('./resources/resource-iframe.html')}';
document.body.appendChild(iframe);
return Promise.all([waitForLoad(script), waitForLoad(style), waitForLoad(iframe)]);
})()`);
var rootFrame = (await session.protocol.Page.getResourceTree()).result.frameTree;
var frameURLById = new Map();
addFramesRecursively(rootFrame);
function addFramesRecursively(root) {
frameURLById.set(root.frame.id, root.frame.url);
(root.childFrames || []).forEach(addFramesRecursively);
}
for (var filename of Array.from(redirectFilenameToFrameId.keys()).sort()) {
var frameURL = frameURLById.get(redirectFilenameToFrameId.get(filename));
testRunner.log(`${filename} requested by ${frameURL}`);
}
testRunner.completeTest();
})