| Index: chrome/test/data/extensions/api_test/sandboxed_pages_csp/sandboxed.html
|
| diff --git a/chrome/test/data/extensions/api_test/sandboxed_pages_csp/sandboxed.html b/chrome/test/data/extensions/api_test/sandboxed_pages_csp/sandboxed.html
|
| index 3bcce5e24898716bf2d47834c141f5bba4f2eb09..ac13d0bb80ef380059c4aa4d3e6e7f6a3084ceea 100644
|
| --- a/chrome/test/data/extensions/api_test/sandboxed_pages_csp/sandboxed.html
|
| +++ b/chrome/test/data/extensions/api_test/sandboxed_pages_csp/sandboxed.html
|
| @@ -2,19 +2,6 @@
|
|
|
| <script>
|
| // We're not served with the extension default CSP, we can use inline script.
|
| -
|
| -var sendResponse = function(msg) {
|
| - var mainWindow = window.opener || window.top;
|
| - mainWindow.postMessage(msg, '*');
|
| -};
|
| -
|
| -var remote_frame_loaded = false;
|
| -window.addEventListener('securitypolicyviolation', function(e) {
|
| - if (remote_frame_loaded)
|
| - sendResponse('succeeded');
|
| - else
|
| - sendResponse('failed');
|
| -});
|
|
|
| var loadFrameExpectResponse = function(iframe, url) {
|
| var identifier = performance.now();
|
| @@ -38,15 +25,22 @@
|
|
|
| var runTestAndRespond = function(localUrl, remoteUrl) {
|
| var iframe = document.createElement('iframe');
|
| + var sendResponse = function(msg) {
|
| + var mainWindow = window.opener || window.top;
|
| + mainWindow.postMessage(msg, '*');
|
| + };
|
|
|
| // First load local resource in |iframe|, expect the local frame to respond.
|
| loadFrameExpectResponse(iframe, localUrl).then(function() {
|
| - // Then load remote resource in |iframe|, expect the navigation to be
|
| - // blocked by the Content-Security-Policy.
|
| - // Rely on the SecurityPolicyViolationEvent to detect that the frame has
|
| - // been blocked.
|
| - remote_frame_loaded = true;
|
| - iframe.src = remoteUrl;
|
| + // Then try to load remote resource on the same iframe element. The remote
|
| + // resource will fail to load but we'd get an iframe.onload event and the
|
| + // local frame will still be there. Therefore, expect the local frame to
|
| + // respond again.
|
| + return loadFrameExpectResponse(iframe, remoteUrl);
|
| + }).then(function() {
|
| + sendResponse('succeeded');
|
| + }).catch(function(err) {
|
| + sendResponse('failed');
|
| });
|
| document.body.appendChild(iframe);
|
| };
|
|
|