| Index: chrome/test/data/extensions/platform_apps/web_view_media_access/embedder_has_permission/embedder.js
|
| diff --git a/chrome/test/data/extensions/platform_apps/web_view_media_access/embedder_has_permission/embedder.js b/chrome/test/data/extensions/platform_apps/web_view_media_access/embedder_has_permission/embedder.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..ddd4af471255c72a210b049d6da87b544c4a7e60
|
| --- /dev/null
|
| +++ b/chrome/test/data/extensions/platform_apps/web_view_media_access/embedder_has_permission/embedder.js
|
| @@ -0,0 +1,123 @@
|
| +// Copyright (c) 2012 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.
|
| +
|
| +var embedder = {};
|
| +embedder.tests = {};
|
| +embedder.baseGuestURL = '';
|
| +embedder.guestURL = '';
|
| +
|
| +chrome.test.getConfig(function(config) {
|
| + embedder.baseGuestURL = 'http://localhost:' + config.testServer.port;
|
| + embedder.guestURL = embedder.baseGuestURL +
|
| + '/files/extensions/platform_apps/web_view_media_access' +
|
| + '/media_access_guest.html';
|
| + chrome.test.log('Guest url is: ' + embedder.guestURL);
|
| +});
|
| +
|
| +embedder.tests.assertMediaEvent = function(e) {
|
| + chrome.test.assertEq('media', e.permission);
|
| + chrome.test.assertTrue(!!e.url);
|
| + chrome.test.assertTrue(e.url.indexOf(embedder.baseGuestURL) == 0);
|
| +};
|
| +
|
| +// Loads a guest which requests media access. The embedder (platform app) has
|
| +// acccess to media. The embedder grants access to media to the guest.
|
| +//
|
| +// Once the guest is allowed or denied media access, the guest notifies the
|
| +// embedder about the fact via post message.
|
| +// The embedder has to initiate a post message so that the guest can get a
|
| +// reference to embedder to send the reply back.
|
| +embedder.tests.testMediaAccessPermissionAllow = function() {
|
| + var container = document.getElementById('webview-tag-container-test1');
|
| + container.innerHTML =
|
| + '<webview style="width: 100px; height: 100px;"' +
|
| + ' src="' + embedder.guestURL + '"' +
|
| + '></webview >';
|
| + var webview = container.querySelector('webview');
|
| +
|
| + var onPermissionRequest = function(e) {
|
| + chrome.test.log('Embedder notified on permissionRequest');
|
| + chrome.test.assertEq('media', e.permission);
|
| + chrome.test.assertTrue(!!e.url);
|
| + chrome.test.assertTrue(e.url.indexOf(embedder.baseGuestURL) == 0);
|
| + e.allow();
|
| + };
|
| + webview.addEventListener('permissionrequest', onPermissionRequest);
|
| +
|
| + var onWebViewLoadStop = function(e) {
|
| + // Send post message to <webview> when it's ready to receive them.
|
| + webview.contentWindow.frames.postMessage(
|
| + ['check-media-permission', 'test1'], '*');
|
| + };
|
| + webview.addEventListener('loadstop', onWebViewLoadStop);
|
| +
|
| + var onPostMessageReceived = function(e) {
|
| + var data = JSON.parse(e.data);
|
| + if (data[1] == 'test1') {
|
| + var testStatus = data[0];
|
| + chrome.test.assertEq('access-granted', testStatus);
|
| + chrome.test.succeed();
|
| + }
|
| + };
|
| + window.addEventListener('message', onPostMessageReceived);
|
| +};
|
| +
|
| +// Test that allows permission request in one listener and denies in the other.
|
| +// To allow a request, all event listeners must call allow().
|
| +embedder.tests.testMediaAccessPermissionAllowAndDeny = function() {
|
| + var container = document.getElementById('webview-tag-container-test2');
|
| + container.innerHTML =
|
| + '<webview style="width: 100px; height: 100px;"' +
|
| + ' src="' + embedder.guestURL + '"' +
|
| + '></webview >';
|
| + var webview = container.querySelector('webview');
|
| +
|
| + var onPermissionRequestAllow1 = function(e) {
|
| + embedder.tests.assertMediaEvent(e);
|
| + e.allow();
|
| + };
|
| + var onPermissionRequestAllow2 = function(e) {
|
| + embedder.tests.assertMediaEvent(e);
|
| + e.allow();
|
| + };
|
| + var onPermissionRequestDeny = function(e) {
|
| + embedder.tests.assertMediaEvent(e);
|
| + e.deny();
|
| + };
|
| + webview.addEventListener('permissionrequest', onPermissionRequestAllow1);
|
| + webview.addEventListener('permissionrequest', onPermissionRequestAllow2);
|
| + webview.addEventListener('permissionrequest', onPermissionRequestDeny);
|
| +
|
| + var onWebViewLoadStop = function(e) {
|
| + // Send post message to <webview> when it's ready to receive them.
|
| + webview.contentWindow.frames.postMessage(
|
| + ['check-media-permission', 'test2'], '*');
|
| + };
|
| + webview.addEventListener('loadstop', onWebViewLoadStop);
|
| +
|
| + var onPostMessageReceived = function(e) {
|
| + var data = JSON.parse(e.data);
|
| + var testStatus = data[0];
|
| + if (data[1] == 'test2') {
|
| + chrome.test.assertEq('access-denied', testStatus);
|
| + chrome.test.succeed();
|
| + }
|
| + };
|
| + window.addEventListener('message', onPostMessageReceived);
|
| +};
|
| +
|
| +onload = function() {
|
| + chrome.test.runTests([
|
| + function testMediaAccessPermissionAllow() {
|
| + chrome.test.getConfig(function(config) {
|
| + embedder.tests.testMediaAccessPermissionAllow();
|
| + });
|
| + },
|
| + function testMediaAccessPermissionAllowAndDeny() {
|
| + chrome.test.getConfig(function(config) {
|
| + embedder.tests.testMediaAccessPermissionAllowAndDeny();
|
| + });
|
| + }
|
| + ]);
|
| +};
|
|
|