Chromium Code Reviews| 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_(); |
|
Xi Han
2014/07/03 15:02:51
Add 3 tests for the case that embedder with multip
|
| @@ -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']); |
| } |