|
1 /* vim: set ts=2 et sw=2 tw=80: */ |
|
2 /* Any copyright is dedicated to the Public Domain. |
|
3 http://creativecommons.org/publicdomain/zero/1.0/ */ |
|
4 |
|
5 "use strict"; |
|
6 |
|
7 // Test that the markup-view nodes can be navigated to with the keyboard |
|
8 |
|
9 const TEST_URL = TEST_URL_ROOT + "doc_markup_navigation.html"; |
|
10 const TEST_DATA = [ |
|
11 ["pageup", "*doctype*"], |
|
12 ["down", "html"], |
|
13 ["down", "head"], |
|
14 ["down", "body"], |
|
15 ["down", "node0"], |
|
16 ["right", "node0"], |
|
17 ["down", "node1"], |
|
18 ["down", "node2"], |
|
19 ["down", "node3"], |
|
20 ["down", "*comment*"], |
|
21 ["down", "node4"], |
|
22 ["right", "node4"], |
|
23 ["down", "*text*"], |
|
24 ["down", "node5"], |
|
25 ["down", "node6"], |
|
26 ["down", "*comment*"], |
|
27 ["down" , "node7"], |
|
28 ["right", "node7"], |
|
29 ["down", "*text*"], |
|
30 ["down", "node8"], |
|
31 ["left", "node7"], |
|
32 ["left", "node7"], |
|
33 ["right", "node7"], |
|
34 ["right", "*text*"], |
|
35 ["down", "node8"], |
|
36 ["right", "node8"], |
|
37 ["left", "node8"], |
|
38 ["down", "node9"], |
|
39 ["down", "node10"], |
|
40 ["down", "node11"], |
|
41 ["down", "node12"], |
|
42 ["right", "node12"], |
|
43 ["down", "*text*"], |
|
44 ["down", "node13"], |
|
45 ["down", "node14"], |
|
46 ["down", "node15"], |
|
47 ["down", "node15"], |
|
48 ["down", "node15"], |
|
49 ["up", "node14"], |
|
50 ["up", "node13"], |
|
51 ["up", "*text*"], |
|
52 ["up", "node12"], |
|
53 ["left", "node12"], |
|
54 ["down", "node14"], |
|
55 ["home", "*doctype*"], |
|
56 ["pagedown", "*text*"], |
|
57 ["down", "node5"], |
|
58 ["down", "node6"], |
|
59 ["down", "*comment*"], |
|
60 ["down", "node7"], |
|
61 ["left", "node7"], |
|
62 ["down", "node9"], |
|
63 ["down", "node10"], |
|
64 ["pageup", "node2"], |
|
65 ["pageup", "*doctype*"], |
|
66 ["down", "html"], |
|
67 ["left", "html"], |
|
68 ["down", "html"] |
|
69 ]; |
|
70 |
|
71 let test = asyncTest(function*() { |
|
72 let {inspector} = yield addTab(TEST_URL).then(openInspector); |
|
73 |
|
74 info("Making sure the markup-view frame is focused"); |
|
75 inspector.markup._frame.focus(); |
|
76 |
|
77 info("Starting to iterate through the test data"); |
|
78 for (let [key, className] of TEST_DATA) { |
|
79 info("Testing step: " + key + " to navigate to " + className); |
|
80 pressKey(key); |
|
81 |
|
82 info("Making sure markup-view children get updated"); |
|
83 yield waitForChildrenUpdated(inspector); |
|
84 |
|
85 info("Checking the right node is selected"); |
|
86 checkSelectedNode(key, className, inspector); |
|
87 } |
|
88 }); |
|
89 |
|
90 function pressKey(key) { |
|
91 switch(key) { |
|
92 case "right": |
|
93 EventUtils.synthesizeKey("VK_RIGHT", {}); |
|
94 break; |
|
95 case "down": |
|
96 EventUtils.synthesizeKey("VK_DOWN", {}); |
|
97 break; |
|
98 case "left": |
|
99 EventUtils.synthesizeKey("VK_LEFT", {}); |
|
100 break; |
|
101 case "up": |
|
102 EventUtils.synthesizeKey("VK_UP", {}); |
|
103 break; |
|
104 case "pageup": |
|
105 EventUtils.synthesizeKey("VK_PAGE_UP", {}); |
|
106 break; |
|
107 case "pagedown": |
|
108 EventUtils.synthesizeKey("VK_PAGE_DOWN", {}); |
|
109 break; |
|
110 case "home": |
|
111 EventUtils.synthesizeKey("VK_HOME", {}); |
|
112 break; |
|
113 } |
|
114 } |
|
115 |
|
116 function checkSelectedNode(key, className, inspector) { |
|
117 let node = inspector.selection.node; |
|
118 |
|
119 if (className == "*comment*") { |
|
120 is(node.nodeType, Node.COMMENT_NODE, "Found a comment after pressing " + key); |
|
121 } else if (className == "*text*") { |
|
122 is(node.nodeType, Node.TEXT_NODE, "Found text after pressing " + key); |
|
123 } else if (className == "*doctype*") { |
|
124 is(node.nodeType, Node.DOCUMENT_TYPE_NODE, "Found the doctype after pressing " + key); |
|
125 } else { |
|
126 is(node.className, className, "Found node: " + className + " after pressing " + key); |
|
127 } |
|
128 } |