gecko/toolkit/spatial-navigation/tests/chrome/SpatialNavUtils.js

150 lines
4.7 KiB
JavaScript

var _moveTable;
var _moveTableIndex = 0;
var _snavEnabledOld = null;
var _snavXULContentEnabledOld = null;
var _snavModOld = null ;
var _snavRightKeyOld = null;
var _snavLeftKeyOld = null;
var _snavDownKeyOld = null;
var _snavUpKeyOld = null;
function prepareTest(prefs) {
var prefService = Components.classes["@mozilla.org/preferences-service;1"]
.getService(Components.interfaces.nsIPrefService);
var snavBranch = prefService.getBranch("snav.");
var i;
for (i = 0; i < prefs.length; i++)
{
switch (prefs[i][0])
{
case "enabled":
try {
_snavEnabledOld = snavBranch.getBoolPref("enabled");
} catch(e) {
_snavEnabledOld = false;
}
break;
case "xulContentEnabled":
try {
_snavXULContentEnabledOld = snavBranch.getBoolPref("xulContentEnabled");
} catch(e) {
_snavXULContentEnabledOld = false;
}
break;
case "keyCode.modifier":
try {
_snavModOld = snavBranch.getCharPref("keyCode.modifier");
} catch(e) {
_snavModOld = "alt+shift";
}
break;
case "keyCode.right" :
try {
_snavRightKeyOld = snavBranch.getIntPref("keyCode.right");
} catch(e) {
_snavRightKeyOld = Components.interfaces.nsIDOMKeyEvent.DOM_VK_RIGHT;
}
break;
case "keyCode.left" :
try {
_snavLeftKeyOld = snavBranch.getIntPref("keyCode.left");
} catch(e) {
_snavLeftKeyOld = Components.interfaces.nsIDOMKeyEvent.DOM_VK_LEFT;
}
break;
case "keyCode.down" :
try {
_snavDownKeyOld = snavBranch.getIntPref("keyCode.down");
} catch(e) {
_snavDownKeyOld = Components.interfaces.nsIDOMKeyEvent.DOM_VK_DOWN;
}
break;
case "keyCode.up" :
try {
_snavUpKeyOld = snavBranch.getIntPref("keyCode.up");
} catch(e) {
_snavUpKeyOld = Components.interfaces.nsIDOMKeyEvent.DOM_VK_UP;
}
break;
} // switch
if (prefs[i][1] == "bool")
snavBranch.setBoolPref(prefs[i][0], prefs[i][2]);
else if (prefs[i][1] == "int")
snavBranch.setIntPref(prefs[i][0], prefs[i][2]);
else if (prefs[i][1] == "char")
snavBranch.setCharPref(prefs[i][0], prefs[i][2]);
} // for
}
// setting pref values back.
function completeTest() {
var prefService = Components.classes["@mozilla.org/preferences-service;1"]
.getService(Components.interfaces.nsIPrefService);
var snavBranch = prefService.getBranch("snav.");
if (_snavEnabledOld != null)
snavBranch.setBoolPref("enabled", _snavEnabledOld);
if (_snavXULContentEnabledOld != null)
snavBranch.setBoolPref("xulContentEnabled", _snavXULContentEnabledOld);
if (_snavModOld != null)
snavBranch.setCharPref("keyCode.modifier", _snavModOld);
if (_snavRightKeyOld != null)
snavBranch.setIntPref("keyCode.right", _snavRightKeyOld);
if (_snavUpKeyOld != null)
snavBranch.setIntPref("keyCode.up", _snavUpKeyOld);
if (_snavDownKeyOld != null)
snavBranch.setIntPref("keyCode.down", _snavDownKeyOld);
if (_snavLeftKeyOld != null)
snavBranch.setIntPref("keyCode.left", _snavLeftKeyOld);
}
function testMoves(table) {
// document.addEventListener("focus", _verifyAndAdvance, true);
_moveTable = table;
_moveTableIndex = 0;
_move();
}
function _nextMove()
{
_moveTableIndex++;
// When a table ends with "DONE", call finish.
if (_moveTable[_moveTableIndex][0] == "DONE") {
completeTest ();
SimpleTest.finish();
return;
}
// when a table has an empty elment, end the moves.
if (_moveTable[_moveTableIndex][0] == "") {
return;
}
_move();
}
function _move()
{
sendKey( _moveTable[_moveTableIndex][0], document.activeElement);
setTimeout( _verifyAndAdvance , 100);
}
function _verifyAndAdvance()
{
var direction = _moveTable[_moveTableIndex][0];
var expectedID = _moveTable[_moveTableIndex][1];
ok(document.activeElement.getAttribute("id") == expectedID,
"Move " + direction + " to " + expectedID + ". Found " + document.activeElement.getAttribute("id"));
_nextMove();
}