Chromium Code Reviews| 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 |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..13a2ab28a17444e043ecfe212e9b9169b7a47ab2 |
| --- /dev/null |
| +++ b/chrome/test/data/extensions/api_test/sandboxed_pages_csp/sandboxed.html |
| @@ -0,0 +1,56 @@ |
| +This page should be sandboxed. |
| + |
| +<script> |
| +// We're not served with the extension default CSP, we can use inline script. |
| + |
| +var loadFrameExpectResponse = function(iframe, url) { |
| + var identifier = +new Date; |
| + return new Promise(function(resolve, reject) { |
| + window.addEventListener('message', function(e) { |
| + var data = JSON.parse(e.data); |
| + if (data[0] == 'pong' && data[1] == identifier) { |
|
Devlin
2016/12/22 17:04:32
all these pings and pongs are getting hard to keep
lazyboy
2016/12/22 22:57:06
Changed to sandboxed frame msg <-> local/remote fr
|
| + resolve(); |
| + } else { |
| + reject(); |
| + } |
| + }); |
| + iframe.onerror = reject; |
| + iframe.onload = function() { |
| + iframe.contentWindow.postMessage( |
| + JSON.stringify(['ping', identifier]), '*'); |
| + }; |
| + iframe.src = url; |
| + }); |
| +}; |
| + |
| +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 try to load remote resource on the same iframe element. Since the |
| + // remote resource will fail to load, expect the local frame to respond |
|
Devlin
2016/12/22 17:04:32
I don't quite follow. So in trying to commit an i
lazyboy
2016/12/22 22:57:06
We keep the current url and resource as is, but if
|
| + // again. |
| + return loadFrameExpectResponse(iframe, remoteUrl); |
| + }).then(function() { |
| + sendResponse('succeeded'); |
| + }).catch(function(err) { |
| + sendResponse('failed'); |
| + }); |
| + document.body.appendChild(iframe); |
| +}; |
| + |
| +onmessage = function(e) { |
| + var command = JSON.parse(e.data); |
| + if (command[0] == 'load') { |
| + var localUrl = command[1]; |
| + var remoteUrl = command[2]; |
| + runTestAndRespond(localUrl, remoteUrl); |
| + } |
| +}; |
| + |
| +</script> |