1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/browser/devtools/markupview/test/browser_markupview_navigation.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,128 @@ 1.4 +/* vim: set ts=2 et sw=2 tw=80: */ 1.5 +/* Any copyright is dedicated to the Public Domain. 1.6 + http://creativecommons.org/publicdomain/zero/1.0/ */ 1.7 + 1.8 +"use strict"; 1.9 + 1.10 +// Test that the markup-view nodes can be navigated to with the keyboard 1.11 + 1.12 +const TEST_URL = TEST_URL_ROOT + "doc_markup_navigation.html"; 1.13 +const TEST_DATA = [ 1.14 + ["pageup", "*doctype*"], 1.15 + ["down", "html"], 1.16 + ["down", "head"], 1.17 + ["down", "body"], 1.18 + ["down", "node0"], 1.19 + ["right", "node0"], 1.20 + ["down", "node1"], 1.21 + ["down", "node2"], 1.22 + ["down", "node3"], 1.23 + ["down", "*comment*"], 1.24 + ["down", "node4"], 1.25 + ["right", "node4"], 1.26 + ["down", "*text*"], 1.27 + ["down", "node5"], 1.28 + ["down", "node6"], 1.29 + ["down", "*comment*"], 1.30 + ["down" , "node7"], 1.31 + ["right", "node7"], 1.32 + ["down", "*text*"], 1.33 + ["down", "node8"], 1.34 + ["left", "node7"], 1.35 + ["left", "node7"], 1.36 + ["right", "node7"], 1.37 + ["right", "*text*"], 1.38 + ["down", "node8"], 1.39 + ["right", "node8"], 1.40 + ["left", "node8"], 1.41 + ["down", "node9"], 1.42 + ["down", "node10"], 1.43 + ["down", "node11"], 1.44 + ["down", "node12"], 1.45 + ["right", "node12"], 1.46 + ["down", "*text*"], 1.47 + ["down", "node13"], 1.48 + ["down", "node14"], 1.49 + ["down", "node15"], 1.50 + ["down", "node15"], 1.51 + ["down", "node15"], 1.52 + ["up", "node14"], 1.53 + ["up", "node13"], 1.54 + ["up", "*text*"], 1.55 + ["up", "node12"], 1.56 + ["left", "node12"], 1.57 + ["down", "node14"], 1.58 + ["home", "*doctype*"], 1.59 + ["pagedown", "*text*"], 1.60 + ["down", "node5"], 1.61 + ["down", "node6"], 1.62 + ["down", "*comment*"], 1.63 + ["down", "node7"], 1.64 + ["left", "node7"], 1.65 + ["down", "node9"], 1.66 + ["down", "node10"], 1.67 + ["pageup", "node2"], 1.68 + ["pageup", "*doctype*"], 1.69 + ["down", "html"], 1.70 + ["left", "html"], 1.71 + ["down", "html"] 1.72 +]; 1.73 + 1.74 +let test = asyncTest(function*() { 1.75 + let {inspector} = yield addTab(TEST_URL).then(openInspector); 1.76 + 1.77 + info("Making sure the markup-view frame is focused"); 1.78 + inspector.markup._frame.focus(); 1.79 + 1.80 + info("Starting to iterate through the test data"); 1.81 + for (let [key, className] of TEST_DATA) { 1.82 + info("Testing step: " + key + " to navigate to " + className); 1.83 + pressKey(key); 1.84 + 1.85 + info("Making sure markup-view children get updated"); 1.86 + yield waitForChildrenUpdated(inspector); 1.87 + 1.88 + info("Checking the right node is selected"); 1.89 + checkSelectedNode(key, className, inspector); 1.90 + } 1.91 +}); 1.92 + 1.93 +function pressKey(key) { 1.94 + switch(key) { 1.95 + case "right": 1.96 + EventUtils.synthesizeKey("VK_RIGHT", {}); 1.97 + break; 1.98 + case "down": 1.99 + EventUtils.synthesizeKey("VK_DOWN", {}); 1.100 + break; 1.101 + case "left": 1.102 + EventUtils.synthesizeKey("VK_LEFT", {}); 1.103 + break; 1.104 + case "up": 1.105 + EventUtils.synthesizeKey("VK_UP", {}); 1.106 + break; 1.107 + case "pageup": 1.108 + EventUtils.synthesizeKey("VK_PAGE_UP", {}); 1.109 + break; 1.110 + case "pagedown": 1.111 + EventUtils.synthesizeKey("VK_PAGE_DOWN", {}); 1.112 + break; 1.113 + case "home": 1.114 + EventUtils.synthesizeKey("VK_HOME", {}); 1.115 + break; 1.116 + } 1.117 +} 1.118 + 1.119 +function checkSelectedNode(key, className, inspector) { 1.120 + let node = inspector.selection.node; 1.121 + 1.122 + if (className == "*comment*") { 1.123 + is(node.nodeType, Node.COMMENT_NODE, "Found a comment after pressing " + key); 1.124 + } else if (className == "*text*") { 1.125 + is(node.nodeType, Node.TEXT_NODE, "Found text after pressing " + key); 1.126 + } else if (className == "*doctype*") { 1.127 + is(node.nodeType, Node.DOCUMENT_TYPE_NODE, "Found the doctype after pressing " + key); 1.128 + } else { 1.129 + is(node.className, className, "Found node: " + className + " after pressing " + key); 1.130 + } 1.131 +}