- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / test / data / extensions / platform_apps / web_view / geolocation / geolocation_request_gone / embedder.js
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.
4
5 var embedder = {};
6 embedder.baseGuestURL = '';
7 embedder.guestURL = '';
8 embedder.iframeURL = '';
9
10 /** @private */
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);
17 };
18
19 /** @private */
20 embedder.setUpGuest_ = function() {
21   document.querySelector('#webview-tag-container').innerHTML =
22       '<webview style="width: 100px; height: 100px;"' +
23       ' src="' + embedder.guestURL + '"' +
24       '></webview>';
25   var webview = document.querySelector('webview');
26   if (!webview) {
27     chrome.test.fail();
28   }
29   return webview;
30 };
31
32 /** @private */
33 embedder.setUpLoadStop_ = function(webview, testName, opt_iframeURL) {
34   var loadstopCalled = false;
35   var onWebviewLoadStop = function(e) {
36     if (loadstopCalled) {
37       return;
38     }
39     loadstopCalled = true;
40     // Send post message to <webview> when it's ready to receive them.
41     var msgArray = [
42       'request-geolocation',
43       '' + testName
44     ];
45     console.log('sending guest geolocation request');
46     webview.contentWindow.postMessage(JSON.stringify(msgArray), '*');
47   };
48   webview.addEventListener('loadstop', onWebviewLoadStop);
49 };
50
51
52 /** @private */
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();
61     }
62   };
63   window.addEventListener('message', onPostMessageReceived);
64 };
65
66 /** @private */
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);
71
72   // Check that unexpected properties (from other permissionrequest) do not show
73   // up in the event object.
74   chrome.test.assertFalse('userGesture' in e);
75 };
76
77 // Tests begin.
78
79 // Tests CancelGeolocationPermission code path.
80 function testGeolocationRequestGone() {
81   var webview = embedder.setUpGuest_();
82
83   var onPermissionRequest = function(e) {
84     chrome.test.log('Embedder notified on permissionRequest');
85     embedder.assertCorrectEvent_(e);
86     e.preventDefault();
87   };
88   webview.addEventListener('permissionrequest', onPermissionRequest);
89
90   embedder.setUpLoadStop_(webview, 'test1');
91   embedder.registerAndWaitForPostMessage_(
92       webview, ['test1', 'access-denied']);
93 }
94
95 onload = function() {
96   chrome.test.getConfig(function(config) {
97     embedder.setUp_(config);
98     chrome.test.runTests([
99       testGeolocationRequestGone,
100     ]);
101   });
102 };