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.
5 // See chrome/browser/extensions/web_view_interactive_browsertest.cc
6 // (WebViewInteractiveTest, PointerLock) for documentation on this test.
8 function LockMouse(element) {
9 element.requestPointerLock = element.webkitRequestPointerLock;
10 element.requestPointerLock();
12 var first_lock = true;
13 document.onwebkitpointerlockchange = function() {
14 if (document.webkitPointerLockElement) {
16 console.log('locked');
17 setTimeout(function() { embedder.postMessage('locked', '*'); }, 500);
19 console.log('deleting...');
20 setTimeout(function() { embedder.postMessage('delete me', '*'); }, 500);
24 console.log('unlocked');
25 embedder.postMessage('unlocked', '*');
29 document.onwebkitpointerlockerror = function() {
30 console.log('lock error', '*');
31 setTimeout(function() { embedder.postMessage('lock error', '*'); }, 1000);
35 window.addEventListener('message', function(e) {
37 embedder.postMessage('connected', '*');
40 document.getElementById('locktarget1').addEventListener('mousemove',
42 setTimeout(function() { embedder.postMessage('mouse-move', '*'); }, 500);
43 if (info.innerHTML != 'fail') {
44 info.innerHTML = 'Info: movementX: '+ e.webkitMovementX +
45 ', movementY: ' + e.webkitMovementY;
49 document.getElementById('locktarget2').addEventListener('mousemove',
51 info.innerHTML = 'fail';
52 embedder.postMessage('Pointer was not locked to locktarget1.', '*');
55 document.getElementById('button1').addEventListener('click', function (e) {
56 console.log('click captured, locking mouse');
57 LockMouse(locktarget1);
60 document.getElementById('button2').addEventListener('click', function (e) {
61 console.log('clicked button 2');
62 embedder.postMessage('clicked', '*');