Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
"use strict";
// Test the creation of the CSS shapes highlighter.
const TEST_URL = URL_ROOT + "doc_inspector_highlighter_cssshapes.html";
const { TYPES } = ChromeUtils.importESModule(
"resource://devtools/shared/highlighters.mjs"
);
const HIGHLIGHTER_TYPE = TYPES.SHAPES;
const SHAPE_IDS = ["polygon", "ellipse", "rect"];
const SHAPE_TYPES = [
{
shapeName: "polygon",
highlighter: "polygon",
},
{
shapeName: "circle",
highlighter: "ellipse",
},
{
shapeName: "ellipse",
highlighter: "ellipse",
},
{
shapeName: "inset",
highlighter: "rect",
},
];
add_task(async function () {
const { inspector, highlighterTestFront } =
await openInspectorForURL(TEST_URL);
const front = inspector.inspectorFront;
const highlighter = await front.getHighlighterByType(HIGHLIGHTER_TYPE);
await isHiddenByDefault(highlighterTestFront, highlighter);
await isVisibleWhenShown(highlighterTestFront, inspector, highlighter);
await highlighter.finalize();
});
async function getShapeHidden(highlighterTestFront, highlighterFront) {
const hidden = {};
for (const shape of SHAPE_IDS) {
hidden[shape] = await highlighterTestFront.getHighlighterNodeAttribute(
"shapes-" + shape,
"hidden",
highlighterFront
);
}
return hidden;
}
async function isHiddenByDefault(highlighterTestFront, highlighterFront) {
info("Checking that highlighter is hidden by default");
const polygonHidden = await highlighterTestFront.getHighlighterNodeAttribute(
"shapes-polygon",
"hidden",
highlighterFront
);
const ellipseHidden = await highlighterTestFront.getHighlighterNodeAttribute(
"shapes-ellipse",
"hidden",
highlighterFront
);
ok(polygonHidden && ellipseHidden, "The highlighter is hidden by default");
}
async function isVisibleWhenShown(
highlighterTestFront,
inspector,
highlighterFront
) {
for (const { shapeName, highlighter } of SHAPE_TYPES) {
info(`Asking to show the highlighter on the ${shapeName} node`);
const node = await getNodeFront(`#${shapeName}`, inspector);
await highlighterFront.show(node, { mode: "cssClipPath" });
const hidden = await getShapeHidden(highlighterTestFront, highlighterFront);
ok(!hidden[highlighter], `The ${shapeName} highlighter is visible`);
}
info("Hiding the highlighter");
await highlighterFront.hide();
const hidden = await getShapeHidden(highlighterTestFront, highlighterFront);
ok(
hidden.polygon && hidden.ellipse && hidden.rect,
"The highlighter is hidden"
);
}