| <!DOCTYPE html> |
| <meta http-equiv="Content-Security-Policy" content="script-src 'nonce-abc'"> |
| <script src="/resources/testharness.js" nonce="abc"></script> |
| <script src="/resources/testharnessreport.js" nonce="abc"></script> |
| <script nonce="abc"> |
| var t = async_test("Unnonced scripts generate reports."); |
| var events = 0; |
| var firstLine = 38; |
| var expectations = {} |
| expectations[firstLine] = true; |
| expectations[firstLine + 3] = true; |
| expectations[firstLine + 6] = true; |
| expectations[firstLine + 9] = true; |
| expectations[firstLine + 12] = true; |
| expectations[firstLine + 15] = true; |
| expectations[firstLine + 18] = true; |
| expectations["/content-security-policy/support/nonce-should-be-blocked.js?1"] = true; |
| expectations["/content-security-policy/support/nonce-should-be-blocked.js?2"] = true; |
| expectations["/content-security-policy/support/nonce-should-be-blocked.js?3"] = true; |
| expectations["/content-security-policy/support/nonce-should-be-blocked.js?4"] = true; |
| expectations["/content-security-policy/support/nonce-should-be-blocked.js?5"] = true; |
| |
| document.addEventListener('securitypolicyviolation', t.step_func(e => { |
| if (e.lineNumber) { |
| // Verify that the line is expected, then clear the expectation: |
| assert_true(expectations[e.lineNumber], "Line number: " + e.lineNumber); |
| assert_equals(e.blockedURI, "inline"); |
| } else { |
| // Otherwise, verify that the URL is expected, then clear the expectation: |
| var url = new URL(e.blockedURI); |
| assert_true(expectations[url.pathname + url.search], "URL: " + e.blockedURI); |
| } |
| events++; |
| if (events == 12) |
| t.done(); |
| })); |
| </script> |
| <script> |
| t.unreached_func("No nonce, no execution.")(); |
| </script> |
| <script nonce="xyz"> |
| t.unreached_func("Bad nonce, no execution.")(); |
| </script> |
| <script <script nonce="abc"> |
| t.unreached_func("'<script' attribute, no execution.")(); |
| </script> |
| <script attribute<script nonce="abc"> |
| t.unreached_func("'attribute<script', no execution.")(); |
| </script> |
| <script attribute=<script nonce="abc"> |
| t.unreached_func("'<script' value, no execution.")(); |
| </script> |
| <script attribute=value<script nonce="abc"> |
| t.unreached_func("'value<script', no execution.")(); |
| </script> |
| <script attribute="" attribute=<style nonce="abc"> |
| t.unreached_func("Duplicate attribute, no execution.")(); |
| </script> |
| <script src="../support/nonce-should-be-blocked.js?1" <script nonce="abc"></script> |
| <script src="../support/nonce-should-be-blocked.js?2" attribute=<script nonce="abc"></script> |
| <script src="../support/nonce-should-be-blocked.js?3" <style nonce="abc"></script> |
| <script src="../support/nonce-should-be-blocked.js?4" attribute=<style nonce="abc"></script> |
| <script src="../support/nonce-should-be-blocked.js?5" attribute=<style nonce="abc"></script> |