blob: 4594cfa42e6621575cbbd3ecb83c7dd651b0e7d6 [file] [log] [blame]
(async function(testRunner) {
const {page, session, dp} = await testRunner.startURL(
'http://example.test:8000/inspector-protocol/resources/test-page.html',
`Test that code evaluated in the main frame cannot access $0 that resolves into a node in a frame from a different domain. Bug 105423.`);
await session.evaluateAsync(`
var frame = document.createElement('iframe');
frame.id = 'myframe';
frame.src = 'http://subdomain.example.test:8000/inspector-protocol/resources/test-page.html';
document.body.appendChild(frame);
new Promise(f => frame.onload = f)
`);
const documentNodeId = (await dp.DOM.getDocument()).result.root.nodeId;
dp.DOM.onSetChildNodes(onSetChildNodes);
async function onSetChildNodes(messageObject) {
const node = messageObject.params.nodes.pop();
if (!node || node.nodeName !== 'IFRAME')
return;
dp.DOM.offSetChildNodes(onSetChildNodes);
const response = await dp.DOM.querySelector({nodeId: node.contentDocument.nodeId, selector: 'div#rootDiv'});
await dp.DOM.setInspectedNode({nodeId: response.result.nodeId});
testRunner.log(await dp.Runtime.evaluate({expression: '$0', includeCommandLineAPI: true}));
testRunner.completeTest();
}
const response = await dp.DOM.querySelector({nodeId: documentNodeId, selector: 'iframe#myframe'});
if (response.error) {
testRunner.fail(response.error);
testRunner.completeTest();
}
})