Chromium Code Reviews| Index: chrome/test/data/extensions/platform_apps/web_view/media_access/embedder_has_no_permission/embedder.js |
| diff --git a/chrome/test/data/extensions/platform_apps/web_view/media_access/embedder_has_no_permission/embedder.js b/chrome/test/data/extensions/platform_apps/web_view/media_access/embedder_has_no_permission/embedder.js |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..19bd9dd9658861095706097c9a69b8a81f763234 |
| --- /dev/null |
| +++ b/chrome/test/data/extensions/platform_apps/web_view/media_access/embedder_has_no_permission/embedder.js |
| @@ -0,0 +1,66 @@ |
| +// Copyright (c) 2013 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); |
| +}); |
| + |
| +// Loads a guest which requests media access. The embedder (platform app) does |
| +// not have acccess to media. The guest won't have access to media since the |
| +// embedder itself does not have permission for media. |
| +// |
| +// 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.testMediaAccessPermission = function() { |
| + document.querySelector('#webview-tag-container').innerHTML = |
| + '<webview style="width: 100px; height: 100px;"' + |
| + ' src="' + embedder.guestURL + '"' + |
| + '></webview>'; |
| + var webview = document.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( |
|
Fady Samuel
2013/02/07 15:40:34
webview.contentWindow.postMessage should work.
lazyboy
2013/02/07 21:24:41
Done.
|
| + JSON.stringify(['check-media-permission', 'test2']), '*'); |
| + }; |
| + webview.addEventListener('loadstop', onWebViewLoadStop); |
| + |
| + var onPostMessageReceived = function(e) { |
| + var data = JSON.parse(e.data); |
| + chrome.test.assertEq('access-denied', data[0]); |
| + chrome.test.assertEq('test2', data[1]); |
| + chrome.test.succeed(); |
| + }; |
| + window.addEventListener('message', onPostMessageReceived); |
| +}; |
| + |
| +onload = function() { |
| + chrome.test.runTests([ |
| + function testMediaAccessPermission() { |
| + chrome.test.getConfig(function(config) { |
| + embedder.tests.testMediaAccessPermission(); |
| + }); |
| + } |
| + ]); |
| +}; |