Index: third_party/WebKit/LayoutTests/inspector-protocol/debugger/domdebugger-script-blocked-by-csp.js |
diff --git a/third_party/WebKit/LayoutTests/inspector-protocol/debugger/domdebugger-script-blocked-by-csp.js b/third_party/WebKit/LayoutTests/inspector-protocol/debugger/domdebugger-script-blocked-by-csp.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..8f700dbc59b8d7acc1fdcd0c8e3ce6a50838b139 |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/inspector-protocol/debugger/domdebugger-script-blocked-by-csp.js |
@@ -0,0 +1,55 @@ |
+(async function(testRunner) { |
+ let {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> |
+ `, ``); |
+ |
+ 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.logObject(params.data); |
+ await dp.Debugger.resume(); |
+ } |
+ |
+ testRunner.completeTest(); |
+}) |