- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / test / data / extensions / platform_apps / web_view / pointer_lock / main.js
1 // Copyright (c) 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 // See chrome/browser/extensions/web_view_interactive_browsertest.cc
6 // (WebViewInteractiveTest, PointerLock) for documentation on this test.
7 var requestCount = 0;
8 var guestURL;
9 var startTest = function() {
10   window.addEventListener('message', receiveMessage, false);
11   chrome.test.sendMessage('guest-loaded');
12   var webview = document.getElementById('webview');
13   webview.addEventListener('loadstop', function(e) {
14     webview.contentWindow.postMessage('msg', '*');
15   });
16   webview.addEventListener('permissionrequest', function(e) {
17     if (requestCount == 0) {
18       setTimeout(function() {
19         try {
20           e.request.allow();
21         } catch (exception) {
22           chrome.test.sendMessage('request exception');
23         }
24       }, 10);
25     } else if (requestCount == 1) {
26       e.request.deny();
27     } else if (requestCount == 2) {
28       if (e.permission == 'pointerLock' && !e.lastUnlockedBySelf &&
29           e.url == guestURL && e.userGesture) {
30         e.preventDefault();
31         setTimeout(function() { e.request.allow(); }, 0);
32       } else {
33         if (e.permission != 'pointerLock') {
34           console.log('Permission was, "' + e.permission + '" when it ' +
35                       'should have been "pointerLock"');
36         }
37         if (e.lastUnlockedBySelf) {
38           console.log('e.lastUnlockedBySelf should have been false.');
39         }
40         if (e.url == guestURL) {
41           console.log('e.url was, "' + e.url + '" when it ' +
42                       'should have been "' + guestURL + '"');
43         }
44         if (!e.userGesture) {
45           console.log('e.userGesture should have been true.');
46         }
47       }
48     } else if (requestCount == 3) {
49       if (e.permission == 'pointerLock' && e.url == guestURL && e.userGesture) {
50         e.request.allow();
51       } else {
52         if (e.permission != 'pointerLock') {
53           console.log('Permission was, "' + e.permission + '" when it ' +
54                       'should have been "pointerLock"');
55         }
56         if (e.url == guestURL) {
57           console.log('e.url was, "' + e.url + '" when it ' +
58                       'should have been "' + guestURL + '"');
59         }
60         if (!e.userGesture) {
61           console.log('e.userGesture should have been true.');
62         }
63       }
64     }
65     requestCount++;
66   });
67 };
68 var fail = false;
69 var receiveMessage = function(event) {
70   if (event.data == 'Pointer was not locked to locktarget1.') {
71     fail = true;
72     chrome.test.fail(event.data);
73   } else if (event.data == 'delete me') {
74     var webview_container = document.getElementById('webview-tag-container');
75     webview_container.parentNode.removeChild(webview_container);
76     setTimeout(function() { chrome.test.sendMessage('timeout'); }, 5000);
77     document.getElementById('mousemove-capture-container').addEventListener(
78         'mousemove', function (e) {
79       console.log('move-captured');
80       chrome.test.sendMessage('move-captured');
81     });
82     console.log('deleted');
83     chrome.test.sendMessage('deleted');
84   }
85   if (!fail) {
86     chrome.test.sendMessage(event.data);
87   }
88 }
89
90 chrome.test.getConfig(function(config) {
91   guestURL = 'http://localhost:' + config.testServer.port +
92       '/extensions/platform_apps/web_view/pointer_lock/guest.html';
93   document.querySelector('#webview-tag-container').innerHTML =
94       '<webview id=\'webview\' style="width: 400px; height: 400px; ' +
95       'margin: 0; padding: 0;"' +
96       ' src="' + guestURL + '"' +
97       '></webview>';
98   startTest();
99 });