Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / third_party / WebKit / LayoutTests / http / tests / resources / pointer-lock / pointer-lock-test-harness.js
blob03b684af7405793d1d1c54b52775e60a649d61b5
1 // Automatically add doNextStepButton to document for manual tests.
2 if (!window.testRunner) {
3     setTimeout(function () {
4         if (window.doNextStepButtonDisabled)
5             return;
6         doNextStepButton = document.body.insertBefore(document.createElement("button"), document.body.firstChild);
7         doNextStepButton.onclick = doNextStep;
8         doNextStepButton.innerText = "doNextStep button for manual testing. Use keyboard to select button and press (TAB, then SPACE).";
9     }, 0);
12 function runOnKeyPress(fn)
14     function keypressHandler() {
15         document.removeEventListener('keypress', keypressHandler, false);
16         fn();
17     }
18     document.addEventListener('keypress', keypressHandler, false);
20     if (window.testRunner)
21         eventSender.keyDown(" ", []);
24 function doNextStep(args)
26     args = args || {};
27     if (!window.testRunner && args.withUserGesture)
28       return; // Wait for human to press doNextStep button.
30     if (typeof(currentStep) == "undefined")
31         currentStep = 0;
33     setTimeout(function () {
34         var thisStep = currentStep++;
35         if (thisStep < todo.length)
36             if (args.withUserGesture)
37                 runOnKeyPress(todo[thisStep]);
38             else
39                 todo[thisStep]();
40         else if (thisStep == todo.length)
41             setTimeout(function () { finishJSTest(); }, 0); // Deferred so that excessive doNextStep calls will be observed.
42         else
43             testFailed("doNextStep called too many times.");
44     }, 0);
47 function doNextStepWithUserGesture()
49     doNextStep({withUserGesture: true});
52 function eventExpected(eventHandlerName, message, expectedCalls, targetHanderNode)
54     targetHanderNode[eventHandlerName] = function () {
55         switch (expectedCalls--) {
56         case 0:
57             testFailed(eventHandlerName + " received after: " + message);
58             finishJSTest();
59             break;
60         case 1:
61             doNextStep();
62         default:
63             testPassed(eventHandlerName + " received after: " + message);
64         };
65     };
68 function expectOnlyChangeEvent(message, targetDocument) {
69     debug("     " + message);
70     targetDocument = targetDocument !== undefined ? targetDocument : document;
71     eventExpected("onpointerlockchange", message, 1, targetDocument);
72     eventExpected("onpointerlockerror", message, 0, targetDocument);
75 function expectOnlyErrorEvent(message, targetDocument) {
76     debug("     " + message);
77     targetDocument = targetDocument !== undefined ? targetDocument : document;
78     eventExpected("onpointerlockchange", message, 0, targetDocument);
79     eventExpected("onpointerlockerror", message, 1, targetDocument);
82 function expectNoEvents(message, targetDocument) {
83     debug("     " + message);
84     targetDocument = targetDocument !== undefined ? targetDocument : document;
85     eventExpected("onpointerlockchange", message, 0, targetDocument);
86     eventExpected("onpointerlockerror", message, 0, targetDocument);