| 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']);
|
| }
|
|
|