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

Unified Diff: chrome/test/data/extensions/platform_apps/web_view/filesystem/shared_worker/multiple/embedder.js

Issue 338353007: Implementation of shared worker code path for WebView file system permission. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master_sharedworker
Patch Set: Small changes are made. Created 6 years, 5 months 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/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']);
}

Powered by Google App Engine
This is Rietveld 408576698