diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /devtools/client/inspector/test/browser_inspector_highlighter-csstransform_01.js | |
parent | Initial commit. (diff) | |
download | firefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz firefox-26a029d407be480d791972afb5975cf62c9360a6.zip |
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'devtools/client/inspector/test/browser_inspector_highlighter-csstransform_01.js')
-rw-r--r-- | devtools/client/inspector/test/browser_inspector_highlighter-csstransform_01.js | 229 |
1 files changed, 229 insertions, 0 deletions
diff --git a/devtools/client/inspector/test/browser_inspector_highlighter-csstransform_01.js b/devtools/client/inspector/test/browser_inspector_highlighter-csstransform_01.js new file mode 100644 index 0000000000..934625867b --- /dev/null +++ b/devtools/client/inspector/test/browser_inspector_highlighter-csstransform_01.js @@ -0,0 +1,229 @@ +/* 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 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +"use strict"; + +// Test the creation of the SVG highlighter elements of the css transform +// highlighter. + +const TEST_URL = ` + <div id="transformed" + style="border:1px solid red;width:100px;height:100px;transform:skew(13deg);"> + </div> + <div id="untransformed" + style="border:1px solid blue;width:100px;height:100px;"> + </div> + <span id="inline" + style="transform:rotate(90deg);">this is an inline transformed element + </span> +`; + +add_task(async function () { + const { inspector, highlighterTestFront } = await openInspectorForURL( + "data:text/html;charset=utf-8," + encodeURI(TEST_URL) + ); + const front = inspector.inspectorFront; + + const highlighter = await front.getHighlighterByType( + "CssTransformHighlighter" + ); + + await isHiddenByDefault(highlighterTestFront, highlighter); + await has2PolygonsAnd4Lines(highlighterTestFront, highlighter); + await isNotShownForUntransformed( + highlighterTestFront, + inspector, + highlighter + ); + await isNotShownForInline(highlighterTestFront, inspector, highlighter); + await isVisibleWhenShown(highlighterTestFront, inspector, highlighter); + await linesLinkThePolygons(highlighterTestFront, inspector, highlighter); + + await highlighter.finalize(); +}); + +async function isHiddenByDefault(highlighterTestFront, highlighterFront) { + info("Checking that the highlighter is hidden by default"); + + const hidden = await highlighterTestFront.getHighlighterNodeAttribute( + "css-transform-elements", + "hidden", + highlighterFront + ); + ok(hidden, "The highlighter is hidden by default"); +} + +async function has2PolygonsAnd4Lines(highlighterTestFront, highlighterFront) { + info("Checking that the highlighter is made up of 4 lines and 2 polygons"); + + let value = await highlighterTestFront.getHighlighterNodeAttribute( + "css-transform-untransformed", + "class", + highlighterFront + ); + is(value, "css-transform-untransformed", "The untransformed polygon exists"); + + value = await highlighterTestFront.getHighlighterNodeAttribute( + "css-transform-transformed", + "class", + highlighterFront + ); + is(value, "css-transform-transformed", "The transformed polygon exists"); + + for (const nb of ["1", "2", "3", "4"]) { + value = await highlighterTestFront.getHighlighterNodeAttribute( + "css-transform-line" + nb, + "class", + highlighterFront + ); + is(value, "css-transform-line", "The line " + nb + " exists"); + } +} + +async function isNotShownForUntransformed( + highlighterTestFront, + inspector, + highlighterFront +) { + info("Asking to show the highlighter on the untransformed test node"); + + const node = await getNodeFront("#untransformed", inspector); + await highlighterFront.show(node); + + const hidden = await highlighterTestFront.getHighlighterNodeAttribute( + "css-transform-elements", + "hidden", + highlighterFront + ); + ok(hidden, "The highlighter is still hidden"); +} + +async function isNotShownForInline( + highlighterTestFront, + inspector, + highlighterFront +) { + info("Asking to show the highlighter on the inline test node"); + + const node = await getNodeFront("#inline", inspector); + await highlighterFront.show(node); + + const hidden = await highlighterTestFront.getHighlighterNodeAttribute( + "css-transform-elements", + "hidden", + highlighterFront + ); + ok(hidden, "The highlighter is still hidden"); +} + +async function isVisibleWhenShown( + highlighterTestFront, + inspector, + highlighterFront +) { + info("Asking to show the highlighter on the test node"); + + const node = await getNodeFront("#transformed", inspector); + await highlighterFront.show(node); + + let hidden = await highlighterTestFront.getHighlighterNodeAttribute( + "css-transform-elements", + "hidden", + highlighterFront + ); + ok(!hidden, "The highlighter is visible"); + + info("Hiding the highlighter"); + await highlighterFront.hide(); + + hidden = await highlighterTestFront.getHighlighterNodeAttribute( + "css-transform-elements", + "hidden", + highlighterFront + ); + ok(hidden, "The highlighter is hidden"); +} + +async function linesLinkThePolygons( + highlighterTestFront, + inspector, + highlighterFront +) { + info("Showing the highlighter on the transformed node"); + + const node = await getNodeFront("#transformed", inspector); + await highlighterFront.show(node); + + info("Checking that the 4 lines do link the 2 shape's corners"); + + const lines = []; + for (const nb of ["1", "2", "3", "4"]) { + const x1 = await highlighterTestFront.getHighlighterNodeAttribute( + "css-transform-line" + nb, + "x1", + highlighterFront + ); + const y1 = await highlighterTestFront.getHighlighterNodeAttribute( + "css-transform-line" + nb, + "y1", + highlighterFront + ); + const x2 = await highlighterTestFront.getHighlighterNodeAttribute( + "css-transform-line" + nb, + "x2", + highlighterFront + ); + const y2 = await highlighterTestFront.getHighlighterNodeAttribute( + "css-transform-line" + nb, + "y2", + highlighterFront + ); + lines.push({ x1, y1, x2, y2 }); + } + + let points1 = await highlighterTestFront.getHighlighterNodeAttribute( + "css-transform-untransformed", + "points", + highlighterFront + ); + points1 = points1.split(" "); + + let points2 = await highlighterTestFront.getHighlighterNodeAttribute( + "css-transform-transformed", + "points", + highlighterFront + ); + points2 = points2.split(" "); + + for (let i = 0; i < lines.length; i++) { + info("Checking line nb " + i); + const line = lines[i]; + + const p1 = points1[i].split(","); + is( + p1[0], + line.x1, + "line " + i + "'s first point matches the untransformed x coordinate" + ); + is( + p1[1], + line.y1, + "line " + i + "'s first point matches the untransformed y coordinate" + ); + + const p2 = points2[i].split(","); + is( + p2[0], + line.x2, + "line " + i + "'s first point matches the transformed x coordinate" + ); + is( + p2[1], + line.y2, + "line " + i + "'s first point matches the transformed y coordinate" + ); + } + + await highlighterFront.hide(); +} |