blob: 03b684af7405793d1d1c54b52775e60a649d61b5 [file] [log] [blame]
// Automatically add doNextStepButton to document for manual tests.
if (!window.testRunner) {
setTimeout(function () {
if (window.doNextStepButtonDisabled)
return;
doNextStepButton = document.body.insertBefore(document.createElement("button"), document.body.firstChild);
doNextStepButton.onclick = doNextStep;
doNextStepButton.innerText = "doNextStep button for manual testing. Use keyboard to select button and press (TAB, then SPACE).";
}, 0);
}
function runOnKeyPress(fn)
{
function keypressHandler() {
document.removeEventListener('keypress', keypressHandler, false);
fn();
}
document.addEventListener('keypress', keypressHandler, false);
if (window.testRunner)
eventSender.keyDown(" ", []);
}
function doNextStep(args)
{
args = args || {};
if (!window.testRunner && args.withUserGesture)
return; // Wait for human to press doNextStep button.
if (typeof(currentStep) == "undefined")
currentStep = 0;
setTimeout(function () {
var thisStep = currentStep++;
if (thisStep < todo.length)
if (args.withUserGesture)
runOnKeyPress(todo[thisStep]);
else
todo[thisStep]();
else if (thisStep == todo.length)
setTimeout(function () { finishJSTest(); }, 0); // Deferred so that excessive doNextStep calls will be observed.
else
testFailed("doNextStep called too many times.");
}, 0);
}
function doNextStepWithUserGesture()
{
doNextStep({withUserGesture: true});
}
function eventExpected(eventHandlerName, message, expectedCalls, targetHanderNode)
{
targetHanderNode[eventHandlerName] = function () {
switch (expectedCalls--) {
case 0:
testFailed(eventHandlerName + " received after: " + message);
finishJSTest();
break;
case 1:
doNextStep();
default:
testPassed(eventHandlerName + " received after: " + message);
};
};
};
function expectOnlyChangeEvent(message, targetDocument) {
debug(" " + message);
targetDocument = targetDocument !== undefined ? targetDocument : document;
eventExpected("onpointerlockchange", message, 1, targetDocument);
eventExpected("onpointerlockerror", message, 0, targetDocument);
};
function expectOnlyErrorEvent(message, targetDocument) {
debug(" " + message);
targetDocument = targetDocument !== undefined ? targetDocument : document;
eventExpected("onpointerlockchange", message, 0, targetDocument);
eventExpected("onpointerlockerror", message, 1, targetDocument);
};
function expectNoEvents(message, targetDocument) {
debug(" " + message);
targetDocument = targetDocument !== undefined ? targetDocument : document;
eventExpected("onpointerlockchange", message, 0, targetDocument);
eventExpected("onpointerlockerror", message, 0, targetDocument);
};