From 6bf0a5cb5034a7e684dcc3500e841785237ce2dd Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 19:32:43 +0200 Subject: Adding upstream version 1:115.7.0. Signed-off-by: Daniel Baumann --- .../tests/browser/browser_boundingbox.js | 173 +++++++++++++++++++++ 1 file changed, 173 insertions(+) create mode 100644 browser/tools/mozscreenshots/tests/browser/browser_boundingbox.js (limited to 'browser/tools/mozscreenshots/tests/browser/browser_boundingbox.js') diff --git a/browser/tools/mozscreenshots/tests/browser/browser_boundingbox.js b/browser/tools/mozscreenshots/tests/browser/browser_boundingbox.js new file mode 100644 index 0000000000..cef3fa7de1 --- /dev/null +++ b/browser/tools/mozscreenshots/tests/browser/browser_boundingbox.js @@ -0,0 +1,173 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ + */ + +"use strict"; + +/* import-globals-from ../../head.js */ + +add_task(async function () { + const scale = window.docShell.QueryInterface( + Ci.nsIBaseWindow + ).devicePixelsPerDesktopPixel; + let { bounds, rects } = TestRunner._findBoundingBox(["#tabbrowser-tabs"]); + let tabBar = document.querySelector("#tabbrowser-tabs"); + let tabBarRect = tabBar.getBoundingClientRect(); + + // Calculate expected values + let expectedLeft = scale * (tabBar.screenX - TestRunner.croppingPadding); + let expectedTop = scale * (tabBar.screenY - TestRunner.croppingPadding); + let expectedRight = + scale * (tabBarRect.width + TestRunner.croppingPadding * 2) + expectedLeft; + let expectedBottom = + scale * (tabBarRect.height + TestRunner.croppingPadding * 2) + expectedTop; + + // Calculate browser region + let windowLeft = window.screenX * scale; + let windowTop = window.screenY * scale; + let windowRight = window.outerWidth * scale + windowLeft; + let windowBottom = window.outerHeight * scale + windowTop; + + // Adjust values based on browser window + expectedLeft = Math.max(expectedLeft, windowLeft); + expectedTop = Math.max(expectedTop, windowTop); + expectedRight = Math.min(expectedRight, windowRight); + expectedBottom = Math.min(expectedBottom, windowBottom); + // Check width calculation on simple example + is( + bounds.width, + expectedRight - expectedLeft, + "Checking _findBoundingBox width calculation" + ); + // Check height calculation on simple example + is( + bounds.height, + expectedBottom - expectedTop, + "Checking _findBoundingBox height caclulation" + ); + is( + bounds.left, + rects[0].left, + "Checking _findBoundingBox union.left and rect.left is the same for a single selector" + ); + is( + bounds.right, + rects[0].right, + "Checking _findBoundingBox union.right and rect.right is the same for a single selector" + ); + is( + bounds.top, + rects[0].top, + "Checking _findBoundingBox union.top and rect.top is the same for a single selector" + ); + is( + bounds.bottom, + rects[0].bottom, + "Checking _findBoundingBox union.bottom and rect.bottom is the same for a single selector" + ); + + let result = TestRunner._findBoundingBox(["#forward-button", "#TabsToolbar"]); + bounds = result.bounds; + rects = result.rects; + + let tabToolbar = document.querySelector("#TabsToolbar"); + let tabToolbarRect = tabToolbar.getBoundingClientRect(); + let fButton = document.querySelector("#forward-button"); + let fButtonRect = fButton.getBoundingClientRect(); + + // Calculate expected values + expectedLeft = + scale * + (Math.min(tabToolbar.screenX, fButton.screenX) - + TestRunner.croppingPadding); + expectedTop = + scale * + (Math.min(tabToolbar.screenY, fButton.screenY) - + TestRunner.croppingPadding); + expectedRight = + scale * + (Math.max( + tabToolbarRect.width + tabToolbar.screenX, + fButtonRect.width + fButton.screenX + ) + + TestRunner.croppingPadding); + expectedBottom = + scale * + (Math.max( + tabToolbarRect.height + tabToolbar.screenY, + fButtonRect.height + fButton.screenY + ) + + TestRunner.croppingPadding); + + // Adjust values based on browser window + expectedLeft = Math.max(expectedLeft, windowLeft); + expectedTop = Math.max(expectedTop, windowTop); + expectedRight = Math.min(expectedRight, windowRight); + expectedBottom = Math.min(expectedBottom, windowBottom); + + // Check width calculation on union + is( + bounds.width, + expectedRight - expectedLeft, + "Checking _findBoundingBox union width calculation" + ); + // Check height calculation on union + is( + bounds.height, + expectedBottom - expectedTop, + "Checking _findBoundingBox union height calculation" + ); + // Check single selector's left position + is( + rects[0].left, + Math.max( + scale * (fButton.screenX - TestRunner.croppingPadding), + windowLeft + ), + "Checking single selector's left position when _findBoundingBox has multiple selectors" + ); + // Check single selector's right position + is( + rects[0].right, + Math.min( + scale * + (fButtonRect.width + fButton.screenX + TestRunner.croppingPadding), + windowRight + ), + "Checking single selector's right position when _findBoundingBox has multiple selectors" + ); + // Check single selector's top position + is( + rects[0].top, + Math.max(scale * (fButton.screenY - TestRunner.croppingPadding), windowTop), + "Checking single selector's top position when _findBoundingBox has multiple selectors" + ); + // Check single selector's bottom position + is( + rects[0].bottom, + Math.min( + scale * + (fButtonRect.height + fButton.screenY + TestRunner.croppingPadding), + windowBottom + ), + "Checking single selector's bottom position when _findBoundingBox has multiple selectors" + ); + + // Check that nonexistent selectors throws an exception + Assert.throws( + () => { + TestRunner._findBoundingBox(["#does_not_exist"]); + }, + /No element for '#does_not_exist' found/, + "Checking that nonexistent selectors throws an exception" + ); + + // Check that no selectors throws an exception + Assert.throws( + () => { + TestRunner._findBoundingBox([]); + }, + /No selectors specified/, + "Checking that no selectors throws an exception" + ); +}); -- cgit v1.2.3