| (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(); |
| }) |