blob: 58a7d2e698919a9aab043dc06edd99ddef6de7e7 [file] [log] [blame]
(async function(testRunner) {
var {page, session, dp} = await testRunner.startHTML(`
<html>
<head>
<meta http-equiv='Content-Security-Policy' content="script-src 'self';">
</head>
<body>
<button id='testButton' onclick='alert(1);'>Button</button>
</body>
</html>
`, `Tests pausing on scriptBlockedbyCSP breakpoint.`);
dp.Debugger.enable();
dp.DOM.enable();
dp.DOMDebugger.enable();
dp.DOMDebugger.setInstrumentationBreakpoint({eventName: 'scriptBlockedByCSP'});
var expressions = [
`
document.getElementById('testButton').click();
`,
`
var script = document.createElement('script');
script.innerText = 'alert(1)';
document.body.appendChild(script);
`,
`
var a = document.createElement('a');
a.setAttribute('href', 'javascript:alert(1);');
var dummy = 1;
document.body.appendChild(a); a.click();
`
];
var descriptions = [
'blockedEventHandler',
'blockedScriptInjection',
'blockedScriptUrl'
];
for (var i = 0; i < expressions.length; i++) {
var funcName = descriptions[i];
testRunner.log('\n-------\n' + funcName);
dp.Runtime.evaluate({expression: 'function ' + funcName + '() {' + expressions[i] + '}\n' + funcName + '()'});
var messageObject = await dp.Debugger.oncePaused();
var params = messageObject.params;
testRunner.log('Paused at: ' + params.callFrames[0].functionName + '@' + params.callFrames[0].location.lineNumber);
testRunner.log('Reason: ' + params.reason + '; Data:');
testRunner.log(params.data);
await dp.Debugger.resume();
}
testRunner.completeTest();
})