summaryrefslogtreecommitdiffstats
path: root/devtools/client/inspector/markup/test/browser_markup_pagesize_01.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/inspector/markup/test/browser_markup_pagesize_01.js')
-rw-r--r--devtools/client/inspector/markup/test/browser_markup_pagesize_01.js86
1 files changed, 86 insertions, 0 deletions
diff --git a/devtools/client/inspector/markup/test/browser_markup_pagesize_01.js b/devtools/client/inspector/markup/test/browser_markup_pagesize_01.js
new file mode 100644
index 000000000..a9ba9fc05
--- /dev/null
+++ b/devtools/client/inspector/markup/test/browser_markup_pagesize_01.js
@@ -0,0 +1,86 @@
+/* vim: set ts=2 et sw=2 tw=80: */
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+// Tests that the markup view loads only as many nodes as specified by the
+// devtools.markup.pagesize preference.
+
+Services.prefs.setIntPref("devtools.markup.pagesize", 5);
+
+const TEST_URL = URL_ROOT + "doc_markup_pagesize_01.html";
+const TEST_DATA = [{
+ desc: "Select the last item",
+ selector: "#z",
+ expected: "*more*vwxyz"
+}, {
+ desc: "Select the first item",
+ selector: "#a",
+ expected: "abcde*more*"
+}, {
+ desc: "Select the last item",
+ selector: "#z",
+ expected: "*more*vwxyz"
+}, {
+ desc: "Select an already-visible item",
+ selector: "#v",
+ // Because "v" was already visible, we shouldn't have loaded
+ // a different page.
+ expected: "*more*vwxyz"
+}, {
+ desc: "Verify childrenDirty reloads the page",
+ selector: "#w",
+ forceReload: true,
+ // But now that we don't already have a loaded page, selecting
+ // w should center around w.
+ expected: "*more*uvwxy*more*"
+}];
+
+add_task(function* () {
+ let {inspector} = yield openInspectorForURL(TEST_URL);
+
+ info("Start iterating through the test data");
+ for (let step of TEST_DATA) {
+ info("Start test: " + step.desc);
+
+ if (step.forceReload) {
+ yield forceReload(inspector);
+ }
+ info("Selecting the node that corresponds to " + step.selector);
+ yield selectNode(step.selector, inspector);
+
+ info("Checking that the right nodes are shwon");
+ yield assertChildren(step.expected, inspector);
+ }
+
+ info("Checking that clicking the more button loads everything");
+ yield clickShowMoreNodes(inspector);
+ yield inspector.markup._waitForChildren();
+ yield assertChildren("abcdefghijklmnopqrstuvwxyz", inspector);
+});
+
+function* assertChildren(expected, inspector) {
+ let container = yield getContainerForSelector("body", inspector);
+ let found = "";
+ for (let child of container.children.children) {
+ if (child.classList.contains("more-nodes")) {
+ found += "*more*";
+ } else {
+ found += child.container.node.getAttribute("id");
+ }
+ }
+ is(found, expected, "Got the expected children.");
+}
+
+function* forceReload(inspector) {
+ let container = yield getContainerForSelector("body", inspector);
+ container.childrenDirty = true;
+}
+
+function* clickShowMoreNodes(inspector) {
+ let container = yield getContainerForSelector("body", inspector);
+ let button = container.elt.querySelector("button");
+ let win = button.ownerDocument.defaultView;
+ EventUtils.sendMouseEvent({type: "click"}, button, win);
+}