Index: chrome/test/data/extensions/platform_apps/web_view/filesystem/shared_worker/multiple/embedder.js |
diff --git a/chrome/test/data/extensions/platform_apps/web_view/filesystem/main/embedder.js b/chrome/test/data/extensions/platform_apps/web_view/filesystem/shared_worker/multiple/embedder.js |
similarity index 63% |
copy from chrome/test/data/extensions/platform_apps/web_view/filesystem/main/embedder.js |
copy to chrome/test/data/extensions/platform_apps/web_view/filesystem/shared_worker/multiple/embedder.js |
index 901678faad9e6bc9112de374869ae258ea2afe00..5ac5d899a5b4dbfe0eeb56090d2926873d8de66a 100644 |
--- a/chrome/test/data/extensions/platform_apps/web_view/filesystem/main/embedder.js |
+++ b/chrome/test/data/extensions/platform_apps/web_view/filesystem/shared_worker/multiple/embedder.js |
@@ -6,6 +6,8 @@ var embedder = {}; |
embedder.test = {}; |
embedder.baseGuestURL = ''; |
embedder.guestURL = ''; |
+embedder.guestNumber = 3; |
+var actualReceivedMessage = 0; |
window.runTest = function(testName) { |
if (!embedder.test.testList[testName]) { |
@@ -24,22 +26,21 @@ window.runTest = function(testName) { |
embedder.setUp_ = function(config) { |
embedder.baseGuestURL = 'http://localhost:' + config.testServer.port; |
embedder.guestURL = embedder.baseGuestURL + |
- '/extensions/platform_apps/web_view/filesystem/main' + |
- '/guest_main.html'; |
+ '/extensions/platform_apps/web_view/filesystem/shared_worker/multiple' + |
+ '/guest_shared_worker.html'; |
chrome.test.log('Guest url is: ' + embedder.guestURL); |
}; |
/** @private */ |
embedder.setUpGuest_ = function() { |
- document.querySelector('#webview-tag-container').innerHTML = |
- '<webview style="width: 100px; height: 100px;"' + |
- ' src="' + embedder.guestURL + '"' + |
- ' partition = "persist:a"' + |
- '></webview>'; |
- var webview = document.querySelector('webview'); |
- if (!webview) { |
- console.log('No <webview> element created'); |
- embedder.test.fail(); |
+ var webview = []; |
+ var container = document.querySelector('#webview-tag-container'); |
+ for (var i = 0; i < embedder.guestNumber; ++i) { |
+ webview[i] = document.createElement('webview'); |
+ webview[i].style.width = '100px'; |
+ webview[i].style.height = '100px'; |
+ webview[i].setAttribute('partition', "persist:a"); |
+ container.appendChild(webview[i]); |
} |
return webview; |
}; |
@@ -73,13 +74,12 @@ embedder.test.assertFalse = function(condition) { |
}; |
/** @private */ |
-embedder.setUpLoadStop_ = function(webview, testName) { |
- window.console.log('embedder.setUpLoadStop_'); |
+embedder.setUpLoadStop_ = function(webview, testName, id) { |
var onWebViewLoadStop = function(e) { |
- window.console.log('embedder.onWebViewLoadStop'); |
+ window.console.log('embedder.onWebViewLoadStop of guest No.' + id); |
// Send post message to <webview> when it's ready to receive them. |
var msgArray = ['check-filesystem-permission', '' + testName]; |
- window.console.log('embedder.webview.postMessage'); |
+ window.console.log('embedder.webview[' + id + '].postMessage'); |
webview.contentWindow.postMessage(JSON.stringify(msgArray), '*'); |
}; |
webview.addEventListener('loadstop', onWebViewLoadStop); |
@@ -89,15 +89,18 @@ embedder.setUpLoadStop_ = function(webview, testName) { |
embedder.registerAndWaitForPostMessage_ = function( |
webview, expectedData) { |
var testName = expectedData[0]; |
+ var expectedMessageNumber = embedder.guestNumber; |
+ |
var onPostMessageReceived = function(e) { |
var data = JSON.parse(e.data); |
- if (data[0] == '' + testName) { |
+ if (data[0] == '' + testName) |
+ actualReceivedMessage ++; |
embedder.test.assertEq(expectedData.length, data.length); |
for (var i = 0; i < expectedData.length; ++i) { |
embedder.test.assertEq(expectedData[i], data[i]); |
} |
- embedder.test.succeed(); |
- } |
+ if (actualReceivedMessage == expectedMessageNumber) |
+ embedder.test.succeed(); |
}; |
window.addEventListener('message', onPostMessageReceived); |
}; |
@@ -116,8 +119,8 @@ embedder.assertCorrectEvent_ = function(e) { |
// The embedder has to initiate a post message so that the guest can get a |
// reference to embedder to send the reply back. |
-// Loads a guest which requests filesystem. The embedder explicitly |
-// allows acccess to filesystem for the guest. |
+// Loads multiple guests each of which creates a shared worker to request |
+// filesystem. The embedder explicitly allows acccess to filesystem for guests. |
function testAllow() { |
var webview = embedder.setUpGuest_(); |
@@ -126,15 +129,19 @@ function testAllow() { |
embedder.assertCorrectEvent_(e); |
e.request.allow(); |
}; |
- webview.addEventListener('permissionrequest', onPermissionRequest); |
- |
- embedder.setUpLoadStop_(webview, 'test1'); |
+ for(var i = 0; i < embedder.guestNumber; ++i) { |
+ webview[i].addEventListener('permissionrequest', onPermissionRequest); |
+ embedder.setUpLoadStop_(webview[i], 'test1', i); |
+ webview[i].setAttribute('src', embedder.guestURL); |
+ } |
+ actualReceivedMessage = 0; |
embedder.registerAndWaitForPostMessage_( |
webview, ['test1', 'access-granted']); |
} |
-// Loads a guest which requests filesystem. The embedder explicitly |
-// denies access to filesystem for the guest. |
+// Loads multiple guests each of which creates a shared worker to request |
+// filesystem. The embedder explicitly denies access to filesystem for |
+// guests. |
function testDeny() { |
var webview = embedder.setUpGuest_(); |
@@ -143,25 +150,31 @@ function testDeny() { |
embedder.assertCorrectEvent_(e); |
e.request.deny(); |
}; |
- webview.addEventListener('permissionrequest', onPermissionRequest); |
- |
- embedder.setUpLoadStop_(webview, 'test2'); |
+ for (var i = 0; i < embedder.guestNumber; ++i) { |
+ webview[i].addEventListener('permissionrequest', onPermissionRequest); |
+ embedder.setUpLoadStop_(webview[i], 'test2', i); |
+ webview[i].setAttribute('src', embedder.guestURL); |
+ } |
+ actualReceivedMessage = 0; |
embedder.registerAndWaitForPostMessage_( |
webview, ['test2', 'access-denied']); |
} |
-// Loads a guest which requests filesystem. The embedder does not |
-// perform an explicit action, and the default permission according |
-// to cookie setting is allowed. |
+// Loads multiple guests each of which creates a shared worker to request |
+// filesystem. The embedder does not perform an explicit action, and the |
+// default permission according to cookie setting is allowed. |
function testDefaultAllow() { |
var webview = embedder.setUpGuest_(); |
var onPermissionRequest = function(e) { |
embedder.assertCorrectEvent_(e); |
}; |
- webview.addEventListener('permissionrequest', onPermissionRequest); |
- |
- embedder.setUpLoadStop_(webview, 'test3'); |
+ for (var i = 0; i < embedder. guestNumber; ++i) { |
+ webview[i].addEventListener('permissionrequest', onPermissionRequest); |
+ embedder.setUpLoadStop_(webview[i], 'test3', i); |
+ webview[i].setAttribute('src', embedder.guestURL); |
+ } |
+ actualReceivedMessage = 0; |
embedder.registerAndWaitForPostMessage_( |
webview, ['test3', 'access-granted']); |
} |