diff options
Diffstat (limited to 'devtools/client/performance/test/browser_perf-tree-abstract-03.js')
-rw-r--r-- | devtools/client/performance/test/browser_perf-tree-abstract-03.js | 151 |
1 files changed, 151 insertions, 0 deletions
diff --git a/devtools/client/performance/test/browser_perf-tree-abstract-03.js b/devtools/client/performance/test/browser_perf-tree-abstract-03.js new file mode 100644 index 000000000..4e427fcd3 --- /dev/null +++ b/devtools/client/performance/test/browser_perf-tree-abstract-03.js @@ -0,0 +1,151 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ +"use strict"; + +/** + * Tests if the abstract tree base class for the profiler's tree view + * is keyboard accessible. + */ + +const { appendAndWaitForPaint } = require("devtools/client/performance/test/helpers/dom-utils"); +const { synthesizeCustomTreeClass } = require("devtools/client/performance/test/helpers/synth-utils"); + +add_task(function* () { + let { MyCustomTreeItem, myDataSrc } = synthesizeCustomTreeClass(); + + let container = document.createElement("vbox"); + yield appendAndWaitForPaint(gBrowser.selectedBrowser.parentNode, container); + + // Populate the tree by pressing RIGHT... + + let treeRoot = new MyCustomTreeItem(myDataSrc, { parent: null }); + treeRoot.attachTo(container); + treeRoot.focus(); + + key("VK_RIGHT"); + ok(treeRoot.expanded, + "The root node is now expanded."); + is(document.commandDispatcher.focusedElement, treeRoot.target, + "The root node is still focused."); + + let fooItem = treeRoot.getChild(0); + let barItem = treeRoot.getChild(1); + + key("VK_RIGHT"); + ok(!fooItem.expanded, + "The 'foo' node is not expanded yet."); + is(document.commandDispatcher.focusedElement, fooItem.target, + "The 'foo' node is now focused."); + + key("VK_RIGHT"); + ok(fooItem.expanded, + "The 'foo' node is now expanded."); + is(document.commandDispatcher.focusedElement, fooItem.target, + "The 'foo' node is still focused."); + + key("VK_RIGHT"); + ok(!barItem.expanded, + "The 'bar' node is not expanded yet."); + is(document.commandDispatcher.focusedElement, barItem.target, + "The 'bar' node is now focused."); + + key("VK_RIGHT"); + ok(barItem.expanded, + "The 'bar' node is now expanded."); + is(document.commandDispatcher.focusedElement, barItem.target, + "The 'bar' node is still focused."); + + let bazItem = barItem.getChild(0); + + key("VK_RIGHT"); + ok(!bazItem.expanded, + "The 'baz' node is not expanded yet."); + is(document.commandDispatcher.focusedElement, bazItem.target, + "The 'baz' node is now focused."); + + key("VK_RIGHT"); + ok(bazItem.expanded, + "The 'baz' node is now expanded."); + is(document.commandDispatcher.focusedElement, bazItem.target, + "The 'baz' node is still focused."); + + // Test RIGHT on a leaf node. + + key("VK_RIGHT"); + is(document.commandDispatcher.focusedElement, bazItem.target, + "The 'baz' node is still focused."); + + // Test DOWN on a leaf node. + + key("VK_DOWN"); + is(document.commandDispatcher.focusedElement, bazItem.target, + "The 'baz' node is now refocused."); + + // Test UP. + + key("VK_UP"); + is(document.commandDispatcher.focusedElement, barItem.target, + "The 'bar' node is now refocused."); + + key("VK_UP"); + is(document.commandDispatcher.focusedElement, fooItem.target, + "The 'foo' node is now refocused."); + + key("VK_UP"); + is(document.commandDispatcher.focusedElement, treeRoot.target, + "The root node is now refocused."); + + // Test DOWN. + + key("VK_DOWN"); + is(document.commandDispatcher.focusedElement, fooItem.target, + "The 'foo' node is now refocused."); + + key("VK_DOWN"); + is(document.commandDispatcher.focusedElement, barItem.target, + "The 'bar' node is now refocused."); + + key("VK_DOWN"); + is(document.commandDispatcher.focusedElement, bazItem.target, + "The 'baz' node is now refocused."); + + // Test LEFT. + + key("VK_LEFT"); + ok(barItem.expanded, + "The 'bar' node is still expanded."); + is(document.commandDispatcher.focusedElement, barItem.target, + "The 'bar' node is now refocused."); + + key("VK_LEFT"); + ok(!barItem.expanded, + "The 'bar' node is not expanded anymore."); + is(document.commandDispatcher.focusedElement, barItem.target, + "The 'bar' node is still focused."); + + key("VK_LEFT"); + ok(treeRoot.expanded, + "The root node is still expanded."); + is(document.commandDispatcher.focusedElement, treeRoot.target, + "The root node is now refocused."); + + key("VK_LEFT"); + ok(!treeRoot.expanded, + "The root node is not expanded anymore."); + is(document.commandDispatcher.focusedElement, treeRoot.target, + "The root node is still focused."); + + // Test LEFT on the root node. + + key("VK_LEFT"); + is(document.commandDispatcher.focusedElement, treeRoot.target, + "The root node is still focused."); + + // Test UP on the root node. + + key("VK_UP"); + is(document.commandDispatcher.focusedElement, treeRoot.target, + "The root node is still focused."); + + container.remove(); +}); |