Index: chrome/test/data/extensions/platform_apps/web_view/download_cookie_isolation/window.js |
diff --git a/chrome/test/data/extensions/platform_apps/web_view/download_cookie_isolation/window.js b/chrome/test/data/extensions/platform_apps/web_view/download_cookie_isolation/window.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..24c7fe8040fc06e49aaa2db4a064226310e24789 |
--- /dev/null |
+++ b/chrome/test/data/extensions/platform_apps/web_view/download_cookie_isolation/window.js |
@@ -0,0 +1,77 @@ |
+// 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. |
+ |
+function getRootURL(port) { |
+ return new URL('http://127.0.0.1:' + port + |
+ '/extensions/platform_apps/web_view/download_cookie_isolation/'); |
+} |
+ |
+// Creates a new WebView using |props| and returns a Promise that resolves once |
+// the 'loadstop' event is observed for the WebView. |
+function createWebView(props) { |
+ var webview = document.createElement('webview'); |
+ webview.id = props.id; |
+ webview.partition = props.partition; |
+ webview.addEventListener('permissionrequest', function(e) { |
+ console.log("Permission request for " + e.permission); |
+ if (e.permission === 'download') { |
+ e.request.allow(); |
+ }; |
+ }); |
+ webview.addEventListener('consolemessage', function(e) { |
+ console.log(props.id + " : " + e.message); |
+ }); |
+ document.getElementById('container').appendChild(webview); |
+ |
+ return new Promise(function(accept, reject) { |
+ webview.addEventListener('loadstop', function() { |
+ console.log('loadstop received with src=' + webview.src); |
+ accept(true); |
+ }); |
+ webview.src = props.url.href; |
+ }); |
+} |
+ |
+// Creates the WebView elements and returns a promise that resolves once all |
+// webviews have finished loading. |
+function createWebViews(rootUrl) { |
+ var webviews = []; |
+ |
+ return Promise.all([ |
+ createWebView({ |
+ url: new URL('guest.html#cookie=first', rootUrl), |
+ id: 'first', |
+ partition: 'persist:p' |
+ }), |
+ createWebView({ |
+ url: new URL('guest.html#cookie=second', rootUrl), |
+ id: 'second', |
+ partition: 'q' |
+ }) |
+ ]); |
+} |
+ |
+// Called from test runner. Sends a message to the contained WebView to |
+// initiate a download. |
+function startDownload(id, url) { |
+ console.log("Received download for " + url + " on " + id); |
+ var webview = document.getElementById(id); |
+ webview.contentWindow.postMessage({ |
+ command: 'start-download', |
+ url: url |
+ }, (new URL(webview.src)).origin); |
+} |
+ |
+function run() { |
+ var p = new Promise(function(accept, reject) { |
+ chrome.test.getConfig(function(config) { |
+ accept(config); |
+ }); |
+ }).then(function(config) { |
+ return createWebViews(getRootURL(config.testServer.port)); |
+ }).then(function() { |
+ chrome.test.sendMessage('created-webviews'); |
+ }); |
+} |
+window.onload = run; |