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 --- .../test/browser/browser_ext_popup_corners.js | 169 +++++++++++++++++++++ 1 file changed, 169 insertions(+) create mode 100644 browser/components/extensions/test/browser/browser_ext_popup_corners.js (limited to 'browser/components/extensions/test/browser/browser_ext_popup_corners.js') diff --git a/browser/components/extensions/test/browser/browser_ext_popup_corners.js b/browser/components/extensions/test/browser/browser_ext_popup_corners.js new file mode 100644 index 0000000000..307feb10ef --- /dev/null +++ b/browser/components/extensions/test/browser/browser_ext_popup_corners.js @@ -0,0 +1,169 @@ +/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */ +/* vim: set sts=2 sw=2 et tw=80: */ +"use strict"; + +add_task(async function testPopupBorderRadius() { + let extension = ExtensionTestUtils.loadExtension({ + background() { + browser.tabs.query({ active: true, currentWindow: true }, tabs => { + browser.pageAction.show(tabs[0].id); + }); + }, + + manifest: { + browser_action: { + default_popup: "popup.html", + default_area: "navbar", + browser_style: false, + }, + + page_action: { + default_popup: "popup.html", + browser_style: false, + }, + }, + + files: { + "popup.html": ` + + + + `, + }, + }); + + await extension.startup(); + + let widget = getBrowserActionWidget(extension); + // If the panel doesn't allows embedding in subview then + // radius will be 0, otherwise 8. In practice we always + // disallow subview. + let expectedRadius = widget.disallowSubView ? "8px" : "0px"; + + async function testPanel(browser, standAlone = true) { + let panel = getPanelForNode(browser); + let arrowContent = panel.panelContent; + + let panelStyle = getComputedStyle(arrowContent); + is( + panelStyle.overflow, + "hidden", + "overflow is not hidden, thus it doesn't clip" + ); + + let stack = browser.parentNode; + let viewNode = stack.parentNode === panel ? browser : stack.parentNode; + let viewStyle = getComputedStyle(viewNode); + + let props = [ + "borderTopLeftRadius", + "borderTopRightRadius", + "borderBottomRightRadius", + "borderBottomLeftRadius", + ]; + + let bodyStyle = await SpecialPowers.spawn( + browser, + [props], + async function (props) { + let bodyStyle = content.getComputedStyle(content.document.body); + + return new Map(props.map(prop => [prop, bodyStyle[prop]])); + } + ); + + for (let prop of props) { + if (standAlone) { + is( + viewStyle[prop], + panelStyle[prop], + `Panel and view ${prop} should be the same` + ); + is( + bodyStyle.get(prop), + panelStyle[prop], + `Panel and body ${prop} should be the same` + ); + } else { + is(viewStyle[prop], expectedRadius, `View node ${prop} should be 0px`); + is( + bodyStyle.get(prop), + expectedRadius, + `Body node ${prop} should be 0px` + ); + } + } + } + + { + info("Test stand-alone browserAction popup"); + + clickBrowserAction(extension); + let browser = await awaitExtensionPanel(extension); + await testPanel(browser); + await closeBrowserAction(extension); + } + + { + info("Test overflowed browserAction popup"); + const kForceOverflowWidthPx = 450; + let overflowPanel = document.getElementById("widget-overflow"); + + let originalWindowWidth = window.outerWidth; + let navbar = document.getElementById(CustomizableUI.AREA_NAVBAR); + ok( + !navbar.hasAttribute("overflowing"), + "Should start with a non-overflowing toolbar." + ); + window.resizeTo(kForceOverflowWidthPx, window.outerHeight); + + await TestUtils.waitForCondition(() => navbar.hasAttribute("overflowing")); + ok( + navbar.hasAttribute("overflowing"), + "Should have an overflowing toolbar." + ); + + await window.gUnifiedExtensions.togglePanel(); + + clickBrowserAction(extension); + let browser = await awaitExtensionPanel(extension); + + is( + overflowPanel.state, + "closed", + "The widget overflow panel should not be open." + ); + + await testPanel(browser, false); + await closeBrowserAction(extension); + + window.resizeTo(originalWindowWidth, window.outerHeight); + await TestUtils.waitForCondition(() => !navbar.hasAttribute("overflowing")); + ok( + !navbar.hasAttribute("overflowing"), + "Should not have an overflowing toolbar." + ); + } + + { + info("Test menu panel browserAction popup"); + + CustomizableUI.addWidgetToArea(widget.id, getCustomizableUIPanelID()); + + clickBrowserAction(extension); + let browser = await awaitExtensionPanel(extension); + await testPanel(browser, false); + await closeBrowserAction(extension); + } + + { + info("Test pageAction popup"); + + clickPageAction(extension); + let browser = await awaitExtensionPanel(extension); + await testPanel(browser); + await closePageAction(extension); + } + + await extension.unload(); +}); -- cgit v1.2.3