Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
/* Any copyright is dedicated to the Public Domain.
"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(async function () {
const { inspector } = await openInspectorForURL(TEST_URL);
info("Start iterating through the test data");
for (const step of TEST_DATA) {
info("Start test: " + step.desc);
if (step.forceReload) {
await forceReload(inspector);
}
info("Selecting the node that corresponds to " + step.selector);
await selectNode(step.selector, inspector);
info("Checking that the right nodes are shwon");
await assertChildren(step.expected, inspector);
}
info("Checking that clicking the more button loads everything");
await clickShowMoreNodes(inspector);
await inspector.markup._waitForChildren();
await assertChildren("abcdefghijklmnopqrstuvwxyz", inspector);
});
async function assertChildren(expected, inspector) {
const container = await getContainerForSelector("body", inspector);
let found = "";
for (const 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.");
}
async function forceReload(inspector) {
const container = await getContainerForSelector("body", inspector);
container.childrenDirty = true;
}
async function clickShowMoreNodes(inspector) {
const container = await getContainerForSelector("body", inspector);
const button = container.elt.querySelector("button");
const win = button.ownerDocument.defaultView;
EventUtils.sendMouseEvent({ type: "click" }, button, win);
}