/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
// Test that comment nodes are properly handled in the inspector.
add_task(async function testCommentNodeVisibility() {
const testHTML = `
Text
`;
info("Test that comment nodes are shown by default");
let { walker } = await initInspectorFront(
"data:text/html;charset=utf-8," + encodeURIComponent(testHTML)
);
let body = await walker.querySelector(walker.rootNode, "body");
let bodyChildren = await walker.children(body);
is(
bodyChildren.nodes.length,
4,
"Body has 4 children (2 comments + div + video)"
);
const firstComment = bodyChildren.nodes[1];
is(
firstComment.nodeType,
Node.COMMENT_NODE,
"First child after div is a comment node"
);
const secondComment = bodyChildren.nodes[3];
is(secondComment.nodeType, Node.COMMENT_NODE, "Last child is a comment node");
info("Test that comment nodes are hidden when preference is set to false");
await SpecialPowers.pushPrefEnv({
set: [["devtools.markup.showComments", false]],
});
({ walker } = await initInspectorFront(
"data:text/html;charset=utf-8," + encodeURIComponent(testHTML)
));
body = await walker.querySelector(walker.rootNode, "body");
bodyChildren = await walker.children(body);
is(
bodyChildren.nodes.length,
2,
"Body has 2 children when comments are hidden"
);
ok(
bodyChildren.nodes.every(node => node.nodeType !== Node.COMMENT_NODE),
"No comment nodes are returned from walker"
);
info("Test that comment nodes are shown again when preference is enabled");
await SpecialPowers.pushPrefEnv({
set: [["devtools.markup.showComments", true]],
});
({ walker } = await initInspectorFront(
"data:text/html;charset=utf-8," + encodeURIComponent(testHTML)
));
body = await walker.querySelector(walker.rootNode, "body");
bodyChildren = await walker.children(body);
is(bodyChildren.nodes.length, 4, "Body has 4 children again");
ok(
bodyChildren.nodes.some(node => node.nodeType === Node.COMMENT_NODE),
"Comment nodes are returned from walker"
);
});