| <!DOCTYPE html> | |
| <html> | |
| <head> | |
| <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> | |
| <title>child-src-blocked</title> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| <script src='../support/logTest.sub.js?logs=["PASS IFrame %231 generated a load event."]'></script> | |
| <script> | |
| window.addEventListener("message", function(event) { | |
| alert_assert(event.data); | |
| }, false); | |
| function alert_assert(msg) { | |
| t_log.step(function() { | |
| if (msg.match(/^FAIL/i)) { | |
| assert_unreached(msg); | |
| t_log.done(); | |
| } | |
| for (var i = 0; i < expected_alerts.length; i++) { | |
| if (expected_alerts[i] == msg) { | |
| assert_true(expected_alerts[i] == msg); | |
| expected_alerts.splice(i, 1); | |
| if (expected_alerts.length == 0) { | |
| t_log.done(); | |
| } | |
| return; | |
| } | |
| } | |
| assert_unreached('unexpected alert: ' + msg); | |
| t_log.done(); | |
| }); | |
| } | |
| </script> | |
| <!-- enforcing policy: | |
| child-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; | |
| --> | |
| <p> | |
| IFrames blocked by CSP should generate a 'load', not 'error' event, regardless of blocked state. This means they appear to be normal cross-origin loads, thereby not leaking URL information directly to JS. | |
| </p> | |
| <script> | |
| window.wasPostTestScriptParsed = true; | |
| var loads = 0; | |
| function loadEvent() { | |
| loads++; | |
| log("PASS " + "IFrame #" + loads + " generated a load event."); | |
| } | |
| </script> | |
| </head> | |
| <body> | |
| <iframe src="/content-security-policy/blink-contrib/resources/postmessage-fail.html" onload="loadEvent()" onerror="log('FAIL')"></iframe> | |
| <div id="log"></div> | |
| <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=child-src%20'none'"></script> | |
| </body> | |
| </html> |