diff options
author | Matt A. Tobin <email@mattatobin.com> | 2016-10-16 19:34:53 -0400 |
---|---|---|
committer | Matt A. Tobin <email@mattatobin.com> | 2016-10-16 19:34:53 -0400 |
commit | 81805ce3f63e2e4a799bd54f174083c58a9b5640 (patch) | |
tree | 6e13374b213ac9b2ae74c25d8aac875faf71fdd0 /toolkit/devtools/performance/test/browser_profiler_tree-abstract-01.js | |
parent | 28c8da71bf521bb3ee76f27b8a241919e24b7cd5 (diff) | |
download | palemoon-gre-81805ce3f63e2e4a799bd54f174083c58a9b5640.tar.gz |
Move Mozilla DevTools to Platform - Part 3: Merge the browser/devtools and toolkit/devtools adjusting for directory collisions
Diffstat (limited to 'toolkit/devtools/performance/test/browser_profiler_tree-abstract-01.js')
-rw-r--r-- | toolkit/devtools/performance/test/browser_profiler_tree-abstract-01.js | 175 |
1 files changed, 175 insertions, 0 deletions
diff --git a/toolkit/devtools/performance/test/browser_profiler_tree-abstract-01.js b/toolkit/devtools/performance/test/browser_profiler_tree-abstract-01.js new file mode 100644 index 000000000..fbd8c381d --- /dev/null +++ b/toolkit/devtools/performance/test/browser_profiler_tree-abstract-01.js @@ -0,0 +1,175 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +/** + * Tests if the abstract tree base class for the profiler's tree view + * works as advertised. + */ + +let { AbstractTreeItem } = Cu.import("resource:///modules/devtools/AbstractTreeItem.jsm", {}); +let { Heritage } = Cu.import("resource:///modules/devtools/ViewHelpers.jsm", {}); + +function spawnTest () { + let container = document.createElement("vbox"); + gBrowser.selectedBrowser.parentNode.appendChild(container); + + // Populate the tree and test the root item... + + let treeRoot = new MyCustomTreeItem(gDataSrc, { parent: null }); + treeRoot.attachTo(container); + + is(container.childNodes.length, 1, + "The container node should have one child available."); + is(container.childNodes[0], treeRoot.target, + "The root node's target is a child of the container node."); + + is(treeRoot.root, treeRoot, + "The root node has the correct root."); + is(treeRoot.parent, null, + "The root node has the correct parent."); + is(treeRoot.level, 0, + "The root node has the correct level."); + is(treeRoot.target.MozMarginStart, "0px", + "The root node's indentation is correct."); + is(treeRoot.target.textContent, "root", + "The root node's text contents are correct."); + is(treeRoot.container, container, + "The root node's container is correct."); + + // Expand the root and test the child items... + + let receivedExpandEvent = treeRoot.once("expand"); + EventUtils.sendMouseEvent({ type: "mousedown" }, treeRoot.target.querySelector(".arrow")); + + let eventItem = yield receivedExpandEvent; + is(eventItem, treeRoot, + "The 'expand' event target is correct."); + is(document.commandDispatcher.focusedElement, treeRoot.target, + "The root node is now focused."); + + let fooItem = treeRoot.getChild(0); + let barItem = treeRoot.getChild(1); + + is(container.childNodes.length, 3, + "The container node should now have three children available."); + is(container.childNodes[0], treeRoot.target, + "The root node's target is a child of the container node."); + is(container.childNodes[1], fooItem.target, + "The 'foo' node's target is a child of the container node."); + is(container.childNodes[2], barItem.target, + "The 'bar' node's target is a child of the container node."); + + is(fooItem.root, treeRoot, + "The 'foo' node has the correct root."); + is(fooItem.parent, treeRoot, + "The 'foo' node has the correct parent."); + is(fooItem.level, 1, + "The 'foo' node has the correct level."); + is(fooItem.target.MozMarginStart, "10px", + "The 'foo' node's indentation is correct."); + is(fooItem.target.textContent, "foo", + "The 'foo' node's text contents are correct."); + is(fooItem.container, container, + "The 'foo' node's container is correct."); + + is(barItem.root, treeRoot, + "The 'bar' node has the correct root."); + is(barItem.parent, treeRoot, + "The 'bar' node has the correct parent."); + is(barItem.level, 1, + "The 'bar' node has the correct level."); + is(barItem.target.MozMarginStart, "10px", + "The 'bar' node's indentation is correct."); + is(barItem.target.textContent, "bar", + "The 'bar' node's text contents are correct."); + is(barItem.container, container, + "The 'bar' node's container is correct."); + + // Test other events on the child nodes... + + let receivedFocusEvent = treeRoot.once("focus"); + EventUtils.sendMouseEvent({ type: "mousedown" }, fooItem.target); + + eventItem = yield receivedFocusEvent; + is(eventItem, fooItem, + "The 'focus' event target is correct."); + is(document.commandDispatcher.focusedElement, fooItem.target, + "The 'foo' node is now focused."); + + let receivedDblClickEvent = treeRoot.once("focus"); + EventUtils.sendMouseEvent({ type: "dblclick" }, barItem.target); + + eventItem = yield receivedDblClickEvent; + is(eventItem, barItem, + "The 'dblclick' event target is correct."); + is(document.commandDispatcher.focusedElement, barItem.target, + "The 'bar' node is now focused."); + + // A child item got expanded, test the descendants... + + let bazItem = barItem.getChild(0); + + is(container.childNodes.length, 4, + "The container node should now have four children available."); + is(container.childNodes[0], treeRoot.target, + "The root node's target is a child of the container node."); + is(container.childNodes[1], fooItem.target, + "The 'foo' node's target is a child of the container node."); + is(container.childNodes[2], barItem.target, + "The 'bar' node's target is a child of the container node."); + is(container.childNodes[3], bazItem.target, + "The 'baz' node's target is a child of the container node."); + + is(bazItem.root, treeRoot, + "The 'baz' node has the correct root."); + is(bazItem.parent, barItem, + "The 'baz' node has the correct parent."); + is(bazItem.level, 2, + "The 'baz' node has the correct level."); + is(bazItem.target.MozMarginStart, "20px", + "The 'baz' node's indentation is correct."); + is(bazItem.target.textContent, "baz", + "The 'baz' node's text contents are correct."); + is(bazItem.container, container, + "The 'baz' node's container is correct."); + + container.remove(); + finish(); +} + +function MyCustomTreeItem(dataSrc, properties) { + AbstractTreeItem.call(this, properties); + this.itemDataSrc = dataSrc; +} + +MyCustomTreeItem.prototype = Heritage.extend(AbstractTreeItem.prototype, { + _displaySelf: function(document, arrowNode) { + let node = document.createElement("hbox"); + node.MozMarginStart = (this.level * 10) + "px"; + node.appendChild(arrowNode); + node.appendChild(document.createTextNode(this.itemDataSrc.label)); + return node; + }, + _populateSelf: function(children) { + for (let childDataSrc of this.itemDataSrc.children) { + children.push(new MyCustomTreeItem(childDataSrc, { + parent: this, + level: this.level + 1 + })); + } + } +}); + +let gDataSrc = { + label: "root", + children: [{ + label: "foo", + children: [] + }, { + label: "bar", + children: [{ + label: "baz", + children: [] + }] + }] +}; |