Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* Any copyright is dedicated to the Public Domain.
"use strict";
// Test that whitespace text nodes do show up in the markup-view when needed.
const TEST_URL = URL_ROOT + "doc_markup_whitespace.html";
add_task(async function () {
const { inspector } = await openInspectorForURL(TEST_URL);
const { markup } = inspector;
await markup.expandAll();
info("Verify the number of child nodes and child elements in body");
// Body has 5 element children, but there are 6 text nodes in there too, they come from
// the HTML file formatting (spaces and carriage returns).
is(
await getElementChildNodesCount("body"),
11,
"The body node has 11 child nodes (includes text nodes)"
);
is(
await getContentPageElementProperty("body", "childElementCount"),
5,
"The body node has 5 child elements (only element nodes)"
);
// In body, there are only block-level elements, so whitespace text nodes do not have
// layout, so they should be skipped in the markup-view.
info("Check that the body's whitespace text node children aren't shown");
const bodyContainer = markup.getContainer(inspector.selection.nodeFront);
let childContainers = bodyContainer.getChildContainers();
is(
childContainers.length,
5,
"Only the element nodes are shown in the markup view"
);
// div#inline has 3 element children, but there are 4 text nodes in there too, like in
// body, they come from spaces and carriage returns in the HTML file.
info("Verify the number of child nodes and child elements in div#inline");
is(
await getElementChildNodesCount("#inline"),
7,
"The div#inline node has 7 child nodes (includes text nodes)"
);
is(
await getContentPageElementProperty("#inline", "childElementCount"),
3,
"The div#inline node has 3 child elements (only element nodes)"
);
// Within the inline formatting context in div#inline, the whitespace text nodes between
// the images have layout, so they should appear in the markup-view.
info("Check that the div#inline's whitespace text node children are shown");
await selectNode("#inline", inspector);
let divContainer = markup.getContainer(inspector.selection.nodeFront);
childContainers = divContainer.getChildContainers();
is(
childContainers.length,
5,
"Both the element nodes and some text nodes are shown in the markup view"
);
// div#pre has 2 element children, but there are 3 text nodes in there too, like in
// div#inline, they come from spaces and carriage returns in the HTML file.
info("Verify the number of child nodes and child elements in div#pre");
is(
await getElementChildNodesCount("#pre"),
5,
"The div#pre node has 5 child nodes (includes text nodes)"
);
is(
await getContentPageElementProperty("#pre", "childElementCount"),
2,
"The div#pre node has 2 child elements (only element nodes)"
);
// Within the inline formatting context in div#pre, the whitespace text nodes between
// the images have layout, so they should appear in the markup-view, but since
// white-space is set to pre, then the whitespace text nodes before and after the first
// and last image should also appear.
info("Check that the div#pre's whitespace text node children are shown");
await selectNode("#pre", inspector);
divContainer = markup.getContainer(inspector.selection.nodeFront);
childContainers = divContainer.getChildContainers();
is(
childContainers.length,
5,
"Both the element nodes and all text nodes are shown in the markup view"
);
});
function getElementChildNodesCount(selector) {
return SpecialPowers.spawn(
gBrowser.selectedBrowser,
[selector],
function (innerSelector) {
const node = content.document.querySelector(innerSelector);
return node.childNodes.length;
}
);
}