1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
6 embedder.baseGuestURL = '';
7 embedder.guestURL = '';
8 embedder.iframeURL = '';
11 embedder.setUp_ = function(config) {
12 embedder.baseGuestURL = 'http://localhost:' + config.testServer.port;
13 embedder.guestURL = embedder.baseGuestURL +
14 '/extensions/platform_apps/web_view/geolocation' +
15 '/geolocation_request_gone/guest.html';
16 chrome.test.log('Guest url is: ' + embedder.guestURL);
20 embedder.setUpGuest_ = function() {
21 document.querySelector('#webview-tag-container').innerHTML =
22 '<webview style="width: 100px; height: 100px;"' +
23 ' src="' + embedder.guestURL + '"' +
25 var webview = document.querySelector('webview');
33 embedder.setUpLoadStop_ = function(webview, testName, opt_iframeURL) {
34 var loadstopCalled = false;
35 var onWebviewLoadStop = function(e) {
39 loadstopCalled = true;
40 // Send post message to <webview> when it's ready to receive them.
42 'request-geolocation',
45 console.log('sending guest geolocation request');
46 webview.contentWindow.postMessage(JSON.stringify(msgArray), '*');
48 webview.addEventListener('loadstop', onWebviewLoadStop);
53 embedder.registerAndWaitForPostMessage_ = function(
54 webview, expectedData) {
55 var testName = expectedData[0];
56 var onPostMessageReceived = function(e) {
57 var data = JSON.parse(e.data);
58 if (data[0] == '' + testName) {
59 chrome.test.assertEq(expectedData, data);
60 chrome.test.succeed();
63 window.addEventListener('message', onPostMessageReceived);
67 embedder.assertCorrectEvent_ = function(e) {
68 chrome.test.assertEq('geolocation', e.permission);
69 chrome.test.assertTrue(!!e.url);
70 chrome.test.assertTrue(e.url.indexOf(embedder.baseGuestURL) == 0);
72 // Check that unexpected properties (from other permissionrequest) do not show
73 // up in the event object.
74 chrome.test.assertFalse('userGesture' in e);
79 // Tests CancelGeolocationPermission code path.
80 function testGeolocationRequestGone() {
81 var webview = embedder.setUpGuest_();
83 var onPermissionRequest = function(e) {
84 chrome.test.log('Embedder notified on permissionRequest');
85 embedder.assertCorrectEvent_(e);
88 webview.addEventListener('permissionrequest', onPermissionRequest);
90 embedder.setUpLoadStop_(webview, 'test1');
91 embedder.registerAndWaitForPostMessage_(
92 webview, ['test1', 'access-denied']);
96 chrome.test.getConfig(function(config) {
97 embedder.setUp_(config);
98 chrome.test.runTests([
99 testGeolocationRequestGone,