gecko/browser/devtools/highlighter/test/browser_inspector_treePanel_navigation.js

104 lines
3.3 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
function test() {
waitForExplicitFinish();
let doc;
let keySequence = "right down right ";
keySequence += "down down down down right ";
keySequence += "down down down right ";
keySequence += "down down down down down right ";
keySequence += "down down down down down ";
keySequence += "up up up left down home ";
keySequence += "pagedown left down down pageup pageup left down";
keySequence = keySequence.split(" ");
let keySequenceRes = "body node0 node0 ";
keySequenceRes += "node1 node2 node3 node4 node4 ";
keySequenceRes += "node5 node6 node7 node7 ";
keySequenceRes += "node8 node9 node10 node11 node12 node12 ";
keySequenceRes += "node13 node14 node15 node15 node15 ";
keySequenceRes += "node14 node13 node12 node12 node14 html ";
keySequenceRes += "node7 node7 node9 node10 body html html html";
keySequenceRes = keySequenceRes.split(" ");
gBrowser.selectedTab = gBrowser.addTab();
gBrowser.selectedBrowser.addEventListener("load", function onload() {
gBrowser.selectedBrowser.removeEventListener("load", onload, true);
doc = content.document;
waitForFocus(setupTest, content);
}, true);
content.location = "http://mochi.test:8888/browser/browser/devtools/highlighter/test/browser_inspector_treePanel_navigation.html";
function setupTest() {
Services.obs.addObserver(runTests, InspectorUI.INSPECTOR_NOTIFICATIONS.OPENED, false);
InspectorUI.toggleInspectorUI();
}
function runTests() {
Services.obs.removeObserver(runTests, InspectorUI.INSPECTOR_NOTIFICATIONS.OPENED);
Services.obs.addObserver(startNavigation, InspectorUI.INSPECTOR_NOTIFICATIONS.TREEPANELREADY, false);
InspectorUI.select(doc.body, true, true, true);
InspectorUI.toggleHTMLPanel();
}
function startNavigation() {
Services.obs.removeObserver(startNavigation, InspectorUI.INSPECTOR_NOTIFICATIONS.TREEPANELREADY);
nextStep(0);
}
function nextStep(cursor) {
let key = keySequence[cursor];
let className = keySequenceRes[cursor];
switch(key) {
case "right":
EventUtils.synthesizeKey("VK_RIGHT", {});
break;
case "down":
EventUtils.synthesizeKey("VK_DOWN", {});
break;
case "left":
EventUtils.synthesizeKey("VK_LEFT", {});
break;
case "up":
EventUtils.synthesizeKey("VK_UP", {});
break;
case "pageup":
EventUtils.synthesizeKey("VK_PAGE_UP", {});
break;
case "pagedown":
EventUtils.synthesizeKey("VK_PAGE_DOWN", {});
break;
case "home":
EventUtils.synthesizeKey("VK_HOME", {});
break;
}
executeSoon(function() {
if (cursor >= keySequence.length) {
Services.obs.addObserver(finishUp, InspectorUI.INSPECTOR_NOTIFICATIONS.CLOSED, false);
InspectorUI.closeInspectorUI();
} else {
let node = InspectorUI.treePanel.ioBox.selectedObjectBox.repObject;
is(node.className, className, "[" + cursor + "] right node selected: " + className);
nextStep(cursor + 1);
}
});
}
function finishUp() {
Services.obs.removeObserver(finishUp, InspectorUI.INSPECTOR_NOTIFICATIONS.CLOSED);
doc = null;
gBrowser.removeCurrentTab();
finish();
}
}