Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7045)

Unified Diff: chrome/test/data/extensions/api_test/sandboxed_pages_csp/main.js

Issue 2563843002: Restrict app sandbox's CSP to disallow loading web content in them. (Closed)
Patch Set: sync Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/test/data/extensions/api_test/sandboxed_pages_csp/main.js
diff --git a/chrome/test/data/extensions/api_test/sandboxed_pages_csp/main.js b/chrome/test/data/extensions/api_test/sandboxed_pages_csp/main.js
new file mode 100644
index 0000000000000000000000000000000000000000..0057fd70c00c2f5339849a24c59f33dfcb10ca75
--- /dev/null
+++ b/chrome/test/data/extensions/api_test/sandboxed_pages_csp/main.js
@@ -0,0 +1,52 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+var LOCAL_FILE_NAME = 'local_frame.html';
+var REMOTE_FILE_NAME = 'remote_frame.html';
+
+onmessage = function(e) {
+ var data = JSON.parse(e.data);
+ var message = data[0];
+ if (message != 'loaded')
+ return;
+
+ var loadedFileName = data[1];
+ var succeeded = data[2];
+ var expectSuccess = loadedFileName === LOCAL_FILE_NAME;
+ if (expectSuccess === succeeded) {
+ chrome.test.succeed();
Devlin 2016/12/15 00:04:11 optional: we could just do chrome.test.assertEq(ex
lazyboy 2016/12/15 08:02:35 Done.
+ } else {
+ chrome.test.fail();
+ }
+};
+
+var loadIframeContentInSandboxedPage = function(url, fileName) {
+ var sandboxedFrame = document.createElement('iframe');
+ sandboxedFrame.src = 'sandboxed.html';
+ sandboxedFrame.onload = function() {
+ sandboxedFrame.contentWindow.postMessage(
+ JSON.stringify(['load', url, fileName]), '*');
+ sandboxedFrame.onload = null;
+ };
+ document.body.appendChild(sandboxedFrame);
+};
+
+onload = function() {
+ chrome.test.getConfig(function(config) {
+ chrome.test.runTests([
+ function sandboxedFrameLocalContentPasses() {
+ // Response is received in |onmessage|.
+ loadIframeContentInSandboxedPage(LOCAL_FILE_NAME, LOCAL_FILE_NAME);
+ },
+ function sandboxedFrameWebContentFails() {
+ var url = 'http://localhost:PORT/extensions/api_test/' +
+ 'sandboxed_pages_web_content/URL'.replace(
Devlin 2016/12/15 00:04:11 I've seen this pattern before, but it's kind of si
lazyboy 2016/12/15 08:02:35 Done.
+ /PORT/, config.testServer.port).replace(
+ /URL/, REMOTE_FILE_NAME);
+ // Response is received in |onmessage|.
+ loadIframeContentInSandboxedPage(url, REMOTE_FILE_NAME);
+ }
+ ]);
+ });
+};

Powered by Google App Engine
This is Rietveld 408576698