diff --git a/README.md b/README.md index 58bc8315f..d61a328ca 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ Zen is a firefox-based browser with the aim of pushing your productivity to a ne ### Firefox Versions - [`Release`](https://zen-browser.app/download) - Is currently built using Firefox version `143.0.4`! 🚀 -- [`Twilight`](https://zen-browser.app/download?twilight) - Is currently built using Firefox version `RC 143.0.4`! +- [`Twilight`](https://zen-browser.app/download?twilight) - Is currently built using Firefox version `RC 144.0`! ### Contributing diff --git a/build/firefox-cache/l10n-last-commit-hash b/build/firefox-cache/l10n-last-commit-hash index 671337a45..12646d8ca 100644 --- a/build/firefox-cache/l10n-last-commit-hash +++ b/build/firefox-cache/l10n-last-commit-hash @@ -1 +1 @@ -5cbf54e3cfaf4cfb375088d7e11702e8974b238f \ No newline at end of file +dd57c783345c5401fcdcc48e83b1fa9ce511d1cf \ No newline at end of file diff --git a/src/Cargo-lock.patch b/src/Cargo-lock.patch index e33677b06..0f9223905 100644 --- a/src/Cargo-lock.patch +++ b/src/Cargo-lock.patch @@ -1,8 +1,8 @@ diff --git a/Cargo.lock b/Cargo.lock -index 2ac65181b1a9561ee4760e0569dfdd621c684142..b159fd8a351ba7c6541e8994a815de8150db619f 100644 +index c079ef11880c5338c4498a0e5b3eb4cf4bfb6e02..ecd06b05381be740197c07c8cf0743dc882727f5 100644 --- a/Cargo.lock +++ b/Cargo.lock -@@ -4029,8 +4029,6 @@ dependencies = [ +@@ -4069,8 +4069,6 @@ dependencies = [ [[package]] name = "mime_guess" version = "2.0.4" diff --git a/src/Cargo-toml.patch b/src/Cargo-toml.patch index e4b55038b..563622667 100644 --- a/src/Cargo-toml.patch +++ b/src/Cargo-toml.patch @@ -1,8 +1,8 @@ diff --git a/Cargo.toml b/Cargo.toml -index 0fdad8b956be8119f5a914b9cee01bb6520cd13d..f1414b5afd5c66c61d1585184de6b32f9918670d 100644 +index 2331ff5733d39e26c0a16301cb83d46ca970f632..777dbd5fb8546466e4a349772ccba254c7ffd691 100644 --- a/Cargo.toml +++ b/Cargo.toml -@@ -218,6 +218,8 @@ moz_asserts = { path = "mozglue/static/rust/moz_asserts" } +@@ -224,6 +224,8 @@ moz_asserts = { path = "mozglue/static/rust/moz_asserts" } # Workaround for https://github.com/rust-lang/cargo/issues/11232 rure = { path = "third_party/rust/rure" } diff --git a/src/browser/actors/WebRTCParent-sys-mjs.patch b/src/browser/actors/WebRTCParent-sys-mjs.patch index fed9ceb84..cee359785 100644 --- a/src/browser/actors/WebRTCParent-sys-mjs.patch +++ b/src/browser/actors/WebRTCParent-sys-mjs.patch @@ -1,5 +1,5 @@ diff --git a/browser/actors/WebRTCParent.sys.mjs b/browser/actors/WebRTCParent.sys.mjs -index f327e1684d0966a0dcfdcdbf8cc70259b27a4504..c8f722bda4cf297f5d0a6aa22dafbe27c4218123 100644 +index 80fd2177c7112c958ff51bbf7a18ebea39e50fbf..24f62810901dc558e25ee874bd49736bd64fd358 100644 --- a/browser/actors/WebRTCParent.sys.mjs +++ b/browser/actors/WebRTCParent.sys.mjs @@ -152,6 +152,7 @@ export class WebRTCParent extends JSWindowActorParent { diff --git a/src/browser/base/content/browser-commands-js.patch b/src/browser/base/content/browser-commands-js.patch index 7e98cf714..b6d37eec0 100644 --- a/src/browser/base/content/browser-commands-js.patch +++ b/src/browser/base/content/browser-commands-js.patch @@ -1,5 +1,5 @@ diff --git a/browser/base/content/browser-commands.js b/browser/base/content/browser-commands.js -index 637e9dda83df5b490d6340367dd63077904ea056..6ffb1dc6ed1d6e58b4e8de1faca887f6b38115cb 100644 +index 74aae01ddcdc4b6460ebbe174355ca129a89010b..52dd4e6aa49929394ed6afa6b25f4ee4954b8b94 100644 --- a/browser/base/content/browser-commands.js +++ b/browser/base/content/browser-commands.js @@ -317,6 +317,10 @@ var BrowserCommands = { diff --git a/src/browser/base/content/browser-fullScreenAndPointerLock-js.patch b/src/browser/base/content/browser-fullScreenAndPointerLock-js.patch index b71398c94..db1354d84 100644 --- a/src/browser/base/content/browser-fullScreenAndPointerLock-js.patch +++ b/src/browser/base/content/browser-fullScreenAndPointerLock-js.patch @@ -1,5 +1,5 @@ diff --git a/browser/base/content/browser-fullScreenAndPointerLock.js b/browser/base/content/browser-fullScreenAndPointerLock.js -index d477ac782e0cb921203f8cd38da70a003ac41b39..648d0b4066b630a9b31da0bb8490f29da701dd3d 100644 +index b41449d4c4bc373a4c9cf449c0bb370bfdbc20d6..f1166929397dd39b7f44bd9cb0d62a45d67f0e1d 100644 --- a/browser/base/content/browser-fullScreenAndPointerLock.js +++ b/browser/base/content/browser-fullScreenAndPointerLock.js @@ -427,10 +427,10 @@ var FullScreen = { diff --git a/src/browser/base/content/browser-init-js.patch b/src/browser/base/content/browser-init-js.patch index 9b3a7c42d..2d21acf05 100644 --- a/src/browser/base/content/browser-init-js.patch +++ b/src/browser/base/content/browser-init-js.patch @@ -1,20 +1,12 @@ diff --git a/browser/base/content/browser-init.js b/browser/base/content/browser-init.js -index e4a94863c0f0810d1894475b020814b2ad32ffb3..515f61d2df5d4a593fc32d3f32e8fdec2b8f5983 100644 +index 8e63654b343e8518aa0e366a3fd3bf7e0856eafb..fe402e526ab33cdcc4baabf8685dfb03efac6003 100644 --- a/browser/base/content/browser-init.js +++ b/browser/base/content/browser-init.js -@@ -191,6 +191,7 @@ var gBrowserInit = { +@@ -198,6 +198,7 @@ var gBrowserInit = { }, onLoad() { + Services.scriptloader.loadSubScript("chrome://browser/content/zenThemeModifier.js", window); gBrowser.addEventListener("DOMUpdateBlockedPopups", e => - PopupBlockerObserver.handleEvent(e) + PopupAndRedirectBlockerObserver.handleEvent(e) ); -@@ -359,6 +360,7 @@ var gBrowserInit = { - - this._handleURIToLoad(); - -+ gZenWorkspaces.selectStartPage(); - Services.obs.addObserver(gIdentityHandler, "perm-changed"); - Services.obs.addObserver(gRemoteControl, "devtools-socket"); - Services.obs.addObserver(gRemoteControl, "marionette-listening"); diff --git a/src/browser/base/content/browser-js.patch b/src/browser/base/content/browser-js.patch index afc190969..33bd7cf81 100644 --- a/src/browser/base/content/browser-js.patch +++ b/src/browser/base/content/browser-js.patch @@ -1,5 +1,5 @@ diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js -index c5b7ef2616c1dab9f42970605897e862d57ab7d0..77f0731db6c4a8d835cf8733115d27ae7782a987 100644 +index 32b67f846b9942ad3da4276bb8748fee915eb485..f77d5df7c8ef49c0366ada8b3153c5a6c676239b 100644 --- a/browser/base/content/browser.js +++ b/browser/base/content/browser.js @@ -31,6 +31,7 @@ ChromeUtils.defineESModuleGetters(this, { @@ -10,7 +10,7 @@ index c5b7ef2616c1dab9f42970605897e862d57ab7d0..77f0731db6c4a8d835cf8733115d27ae DevToolsSocketStatus: "resource://devtools/shared/security/DevToolsSocketStatus.sys.mjs", DownloadUtils: "resource://gre/modules/DownloadUtils.sys.mjs", -@@ -2291,6 +2292,8 @@ var XULBrowserWindow = { +@@ -2293,6 +2294,8 @@ var XULBrowserWindow = { AboutReaderParent.updateReaderButton(gBrowser.selectedBrowser); TranslationsParent.onLocationChange(gBrowser.selectedBrowser); @@ -19,7 +19,7 @@ index c5b7ef2616c1dab9f42970605897e862d57ab7d0..77f0731db6c4a8d835cf8733115d27ae PictureInPicture.updateUrlbarToggle(gBrowser.selectedBrowser); if (!gMultiProcessBrowser) { -@@ -5232,6 +5235,9 @@ var ConfirmationHint = { +@@ -4782,6 +4785,9 @@ var ConfirmationHint = { MozXULElement.insertFTLIfNeeded("toolkit/branding/brandings.ftl"); MozXULElement.insertFTLIfNeeded("browser/confirmationHints.ftl"); document.l10n.setAttributes(this._message, messageId, options.l10nArgs); diff --git a/src/browser/base/content/browser-places-js.patch b/src/browser/base/content/browser-places-js.patch index e7baf596a..e302f2838 100644 --- a/src/browser/base/content/browser-places-js.patch +++ b/src/browser/base/content/browser-places-js.patch @@ -1,5 +1,5 @@ diff --git a/browser/base/content/browser-places.js b/browser/base/content/browser-places.js -index 5ba2b6a58776e2b1d70b80e8cb1533cb20caafc6..65736705968732a185e81561b2866bfbe6f3233a 100644 +index 79b4f6f8fb2f7dd8784920038784e6bb0c967e2d..1f3f4991b3ba7c00516e9708e89e8f95db25a36a 100644 --- a/browser/base/content/browser-places.js +++ b/browser/base/content/browser-places.js @@ -252,6 +252,8 @@ var StarUI = { diff --git a/src/browser/base/content/browser-xhtml.patch b/src/browser/base/content/browser-xhtml.patch index 7b1a16f57..413da9a2a 100644 --- a/src/browser/base/content/browser-xhtml.patch +++ b/src/browser/base/content/browser-xhtml.patch @@ -1,8 +1,8 @@ diff --git a/browser/base/content/browser.xhtml b/browser/base/content/browser.xhtml -index 7c4c05b72845dfb37c11317d011b8e7c6ba07934..856c368e4d6fe7c7d7ab468423348c844cbf1cdf 100644 +index ffddea280e2edffa2531b4b129489c2be0e2c3d2..f03db9e2db0dec06f997740337f28e76a08a3bdb 100644 --- a/browser/base/content/browser.xhtml +++ b/browser/base/content/browser.xhtml -@@ -26,6 +26,7 @@ +@@ -19,6 +19,7 @@ sizemode="normal" retargetdocumentfocus="urlbar-input" scrolling="false" @@ -10,7 +10,7 @@ index 7c4c05b72845dfb37c11317d011b8e7c6ba07934..856c368e4d6fe7c7d7ab468423348c84 persist="screenX screenY width height sizemode" data-l10n-sync="true"> -@@ -105,8 +106,10 @@ +@@ -98,8 +99,10 @@ @@ -21,7 +21,7 @@ index 7c4c05b72845dfb37c11317d011b8e7c6ba07934..856c368e4d6fe7c7d7ab468423348c84 # All sets except for popupsets (commands, keys, and stringbundles) -@@ -128,9 +131,11 @@ +@@ -132,9 +135,11 @@ diff --git a/src/browser/base/content/main-popupset-inc-xhtml.patch b/src/browser/base/content/main-popupset-inc-xhtml.patch index c185ae782..45cdf904f 100644 --- a/src/browser/base/content/main-popupset-inc-xhtml.patch +++ b/src/browser/base/content/main-popupset-inc-xhtml.patch @@ -1,5 +1,5 @@ diff --git a/browser/base/content/main-popupset.inc.xhtml b/browser/base/content/main-popupset.inc.xhtml -index fc219ea3dc901fe2ed351161240700113efb8799..f25bdbf886733e2081a4dff55614809056e9885e 100644 +index 69b83857f40bab6a7298c1416989df2d929d78c1..4ac9f02eb31f58a72d4c58c239ebeadcb66d1e16 100644 --- a/browser/base/content/main-popupset.inc.xhtml +++ b/browser/base/content/main-popupset.inc.xhtml @@ -208,6 +208,10 @@ @@ -21,7 +21,7 @@ index fc219ea3dc901fe2ed351161240700113efb8799..f25bdbf886733e2081a4dff556148090 -@@ -613,6 +618,8 @@ +@@ -615,6 +620,8 @@ #include popup-notifications.inc.xhtml diff --git a/src/browser/base/content/navigator-toolbox-inc-xhtml.patch b/src/browser/base/content/navigator-toolbox-inc-xhtml.patch index 2297b8efd..98bcbfa15 100644 --- a/src/browser/base/content/navigator-toolbox-inc-xhtml.patch +++ b/src/browser/base/content/navigator-toolbox-inc-xhtml.patch @@ -1,5 +1,5 @@ diff --git a/browser/base/content/navigator-toolbox.inc.xhtml b/browser/base/content/navigator-toolbox.inc.xhtml -index 8e56b24b39e9c1607e3ff208d284a9b555a91ebb..2402848ae564234ec22d5a317c43864ea1b36f29 100644 +index 328a9b052e2f758f48df1caa8165347ed0301b33..1c111abe148f2e16afa6b5f33eb118b7c02dfd69 100644 --- a/browser/base/content/navigator-toolbox.inc.xhtml +++ b/browser/base/content/navigator-toolbox.inc.xhtml @@ -2,7 +2,7 @@ diff --git a/src/browser/base/content/nsContextMenu-sys-mjs.patch b/src/browser/base/content/nsContextMenu-sys-mjs.patch index 633a2916f..d5ddb503a 100644 --- a/src/browser/base/content/nsContextMenu-sys-mjs.patch +++ b/src/browser/base/content/nsContextMenu-sys-mjs.patch @@ -1,8 +1,8 @@ diff --git a/browser/base/content/nsContextMenu.sys.mjs b/browser/base/content/nsContextMenu.sys.mjs -index bc71ba720ef3603e8b90d295fb16d8415ba114c4..99677f70e22258f61cc9bda31e4d8745d7ca9395 100644 +index b4fe996f9685a085c14324a35a1d51e2fed569b7..c83d5e9bf92f8f2e3d96b121ba3b758dd124393b 100644 --- a/browser/base/content/nsContextMenu.sys.mjs +++ b/browser/base/content/nsContextMenu.sys.mjs -@@ -1095,6 +1095,8 @@ export class nsContextMenu { +@@ -1105,6 +1105,8 @@ export class nsContextMenu { !this.isSecureAboutPage() ); diff --git a/src/browser/base/moz-build.patch b/src/browser/base/moz-build.patch index 06cd8ea3f..d4813485e 100644 --- a/src/browser/base/moz-build.patch +++ b/src/browser/base/moz-build.patch @@ -1,8 +1,8 @@ diff --git a/browser/base/moz.build b/browser/base/moz.build -index 2f2807a246c262298d0802a6a80abe211c99732c..089a86c9e7f69b994657f20fb2392f3dcc8646bf 100644 +index 086b462e706bb46727d0fed85b4c98debaeaf721..44a4fcb9b8181678667ee11b0443eed681dd2a43 100644 --- a/browser/base/moz.build +++ b/browser/base/moz.build -@@ -81,3 +81,5 @@ DEFINES["MOZ_APP_VERSION_DISPLAY"] = CONFIG["MOZ_APP_VERSION_DISPLAY"] +@@ -82,3 +82,5 @@ DEFINES["MOZ_APP_VERSION_DISPLAY"] = CONFIG["MOZ_APP_VERSION_DISPLAY"] DEFINES["APP_LICENSE_BLOCK"] = "%s/content/overrides/app-license.html" % SRCDIR JAR_MANIFESTS += ["jar.mn"] diff --git a/src/browser/components/BrowserContentHandler-sys-mjs.patch b/src/browser/components/BrowserContentHandler-sys-mjs.patch index bfe87274f..4d2cdfa8f 100644 --- a/src/browser/components/BrowserContentHandler-sys-mjs.patch +++ b/src/browser/components/BrowserContentHandler-sys-mjs.patch @@ -1,5 +1,5 @@ diff --git a/browser/components/BrowserContentHandler.sys.mjs b/browser/components/BrowserContentHandler.sys.mjs -index 8630614d23147365628e0cb7e9625b8f2a160588..0750869f16336452a458f27627e6fe0492aae462 100644 +index aeb53582c895d3d495dca2702da3043cf761714c..86859f25ac9c0cb20da24d1f84775f99c9092016 100644 --- a/browser/components/BrowserContentHandler.sys.mjs +++ b/browser/components/BrowserContentHandler.sys.mjs @@ -1276,6 +1276,7 @@ function maybeRecordToHandleTelemetry(uri, isLaunch) { diff --git a/src/browser/components/BrowserGlue-sys-mjs.patch b/src/browser/components/BrowserGlue-sys-mjs.patch index b7d6408ac..7d280fdcd 100644 --- a/src/browser/components/BrowserGlue-sys-mjs.patch +++ b/src/browser/components/BrowserGlue-sys-mjs.patch @@ -1,5 +1,5 @@ diff --git a/browser/components/BrowserGlue.sys.mjs b/browser/components/BrowserGlue.sys.mjs -index eae3ed9518ad9ce2103bb912963465c1b10ac050..ccbb04cd36fd8fd63fd8c9ebd0b51f0a5966829c 100644 +index 67b2806835baba3070f295d6b96f97077639995a..5f28e0073c893c57c1d6c37deaacf7b097351d60 100644 --- a/browser/components/BrowserGlue.sys.mjs +++ b/browser/components/BrowserGlue.sys.mjs @@ -8,6 +8,7 @@ import { XPCOMUtils } from "resource://gre/modules/XPCOMUtils.sys.mjs"; @@ -10,7 +10,7 @@ index eae3ed9518ad9ce2103bb912963465c1b10ac050..ccbb04cd36fd8fd63fd8c9ebd0b51f0a AboutHomeStartupCache: "resource:///modules/AboutHomeStartupCache.sys.mjs", AWToolbarButton: "resource:///modules/aboutwelcome/AWToolbarUtils.sys.mjs", ASRouter: "resource:///modules/asrouter/ASRouter.sys.mjs", -@@ -1448,7 +1449,7 @@ BrowserGlue.prototype = { +@@ -1458,7 +1459,7 @@ BrowserGlue.prototype = { windowcount++; let tabbrowser = win.gBrowser; if (tabbrowser) { @@ -19,7 +19,7 @@ index eae3ed9518ad9ce2103bb912963465c1b10ac050..ccbb04cd36fd8fd63fd8c9ebd0b51f0a } } -@@ -1611,6 +1612,8 @@ BrowserGlue.prototype = { +@@ -1623,6 +1624,8 @@ BrowserGlue.prototype = { } else if (profileDataVersion < APP_DATA_VERSION) { lazy.ProfileDataUpgrader.upgrade(profileDataVersion, APP_DATA_VERSION); } diff --git a/src/browser/components/controlcenter/content/identityPanel-inc-xhtml.patch b/src/browser/components/controlcenter/content/identityPanel-inc-xhtml.patch index 5c65723d4..27546b54d 100644 --- a/src/browser/components/controlcenter/content/identityPanel-inc-xhtml.patch +++ b/src/browser/components/controlcenter/content/identityPanel-inc-xhtml.patch @@ -1,5 +1,5 @@ diff --git a/browser/components/controlcenter/content/identityPanel.inc.xhtml b/browser/components/controlcenter/content/identityPanel.inc.xhtml -index 225340c698f775a321bf5f82c0156bb0e3e2aa96..59e6613638efadfd2961999bd77b388c4529314b 100644 +index 8e23aad8ca0bb686a669b11e1d78b7906f5f38d0..cf4873cc6165b5f77091c056d7e275e0f3d36769 100644 --- a/browser/components/controlcenter/content/identityPanel.inc.xhtml +++ b/browser/components/controlcenter/content/identityPanel.inc.xhtml @@ -28,7 +28,7 @@ diff --git a/src/browser/components/customizableui/CustomizableUI-sys-mjs.patch b/src/browser/components/customizableui/CustomizableUI-sys-mjs.patch index 4635de61c..abfdf5f78 100644 --- a/src/browser/components/customizableui/CustomizableUI-sys-mjs.patch +++ b/src/browser/components/customizableui/CustomizableUI-sys-mjs.patch @@ -1,5 +1,5 @@ diff --git a/browser/components/customizableui/CustomizableUI.sys.mjs b/browser/components/customizableui/CustomizableUI.sys.mjs -index 4f62449d670701c77c681ae36e00bae8bf2f636c..ac542f33927f9de9040bab9cd98351a4d74ede4e 100644 +index d9a059f608779fea7cd8c595a432f6fe95183e0c..a3c18551e3b24ee86a4373cbbc4f2cdb074aa94d 100644 --- a/browser/components/customizableui/CustomizableUI.sys.mjs +++ b/browser/components/customizableui/CustomizableUI.sys.mjs @@ -14,6 +14,7 @@ ChromeUtils.defineESModuleGetters(lazy, { @@ -10,7 +10,7 @@ index 4f62449d670701c77c681ae36e00bae8bf2f636c..ac542f33927f9de9040bab9cd98351a4 HomePage: "resource:///modules/HomePage.sys.mjs", PanelMultiView: "moz-src:///browser/components/customizableui/PanelMultiView.sys.mjs", -@@ -323,7 +324,7 @@ var CustomizableUIInternal = { +@@ -326,7 +327,7 @@ var CustomizableUIInternal = { { type: CustomizableUI.TYPE_PANEL, defaultPlacements: [], @@ -19,7 +19,7 @@ index 4f62449d670701c77c681ae36e00bae8bf2f636c..ac542f33927f9de9040bab9cd98351a4 }, false ); -@@ -333,19 +334,14 @@ var CustomizableUIInternal = { +@@ -336,19 +337,14 @@ var CustomizableUIInternal = { "back-button", "forward-button", "stop-reload-button", @@ -40,7 +40,7 @@ index 4f62449d670701c77c681ae36e00bae8bf2f636c..ac542f33927f9de9040bab9cd98351a4 this.registerArea( CustomizableUI.AREA_NAVBAR, { -@@ -353,8 +349,6 @@ var CustomizableUIInternal = { +@@ -356,8 +352,6 @@ var CustomizableUIInternal = { overflowable: true, defaultPlacements: navbarPlacements, verticalTabsDefaultPlacements: [ @@ -49,7 +49,7 @@ index 4f62449d670701c77c681ae36e00bae8bf2f636c..ac542f33927f9de9040bab9cd98351a4 ], defaultCollapsed: false, }, -@@ -378,10 +372,7 @@ var CustomizableUIInternal = { +@@ -381,10 +375,7 @@ var CustomizableUIInternal = { { type: CustomizableUI.TYPE_TOOLBAR, defaultPlacements: [ @@ -60,7 +60,7 @@ index 4f62449d670701c77c681ae36e00bae8bf2f636c..ac542f33927f9de9040bab9cd98351a4 ], verticalTabsDefaultPlacements: [], defaultCollapsed: null, -@@ -463,6 +454,7 @@ var CustomizableUIInternal = { +@@ -466,6 +457,7 @@ var CustomizableUIInternal = { CustomizableUI.AREA_NAVBAR, CustomizableUI.AREA_BOOKMARKS, CustomizableUI.AREA_TABSTRIP, @@ -68,7 +68,7 @@ index 4f62449d670701c77c681ae36e00bae8bf2f636c..ac542f33927f9de9040bab9cd98351a4 ]); if (AppConstants.platform != "macosx") { toolbars.add(CustomizableUI.AREA_MENUBAR); -@@ -1247,6 +1239,9 @@ var CustomizableUIInternal = { +@@ -1250,6 +1242,9 @@ var CustomizableUIInternal = { placements = gPlacements.get(area); } @@ -78,7 +78,7 @@ index 4f62449d670701c77c681ae36e00bae8bf2f636c..ac542f33927f9de9040bab9cd98351a4 // For toolbars that need it, mark as dirty. let defaultPlacements = areaProperties.get("defaultPlacements"); if ( -@@ -1754,7 +1749,7 @@ var CustomizableUIInternal = { +@@ -1757,7 +1752,7 @@ var CustomizableUIInternal = { lazy.log.info( "Widget " + aWidgetId + " not found, unable to remove from " + aArea ); @@ -87,7 +87,7 @@ index 4f62449d670701c77c681ae36e00bae8bf2f636c..ac542f33927f9de9040bab9cd98351a4 } this.notifyDOMChange(widgetNode, null, container, true, () => { -@@ -1764,7 +1759,7 @@ var CustomizableUIInternal = { +@@ -1767,7 +1762,7 @@ var CustomizableUIInternal = { // We also need to remove the panel context menu if it's there: this.ensureButtonContextMenu(widgetNode); if (gPalette.has(aWidgetId) || this.isSpecialWidget(aWidgetId)) { @@ -96,7 +96,7 @@ index 4f62449d670701c77c681ae36e00bae8bf2f636c..ac542f33927f9de9040bab9cd98351a4 } else { window.gNavToolbox.palette.appendChild(widgetNode); } -@@ -1932,16 +1927,16 @@ var CustomizableUIInternal = { +@@ -1935,16 +1930,16 @@ var CustomizableUIInternal = { elem.setAttribute("skipintoolbarset", "true"); } } @@ -116,7 +116,7 @@ index 4f62449d670701c77c681ae36e00bae8bf2f636c..ac542f33927f9de9040bab9cd98351a4 // Handle initial state of vertical tabs. if (isVerticalTabs) { // Show the vertical tabs toolbar -@@ -2183,6 +2178,10 @@ var CustomizableUIInternal = { +@@ -2186,6 +2181,10 @@ var CustomizableUIInternal = { * The identifier string of the area that aNode is being inserted into. */ insertWidgetBefore(aNode, aNextNode, aContainer, aAreaId) { @@ -127,7 +127,7 @@ index 4f62449d670701c77c681ae36e00bae8bf2f636c..ac542f33927f9de9040bab9cd98351a4 this.notifyDOMChange(aNode, aNextNode, aContainer, false, () => { this.setLocationAttributes(aNode, aAreaId); aContainer.insertBefore(aNode, aNextNode); -@@ -3303,7 +3302,6 @@ var CustomizableUIInternal = { +@@ -3306,7 +3305,6 @@ var CustomizableUIInternal = { if (!this.isWidgetRemovable(aWidgetId)) { return; } @@ -135,7 +135,7 @@ index 4f62449d670701c77c681ae36e00bae8bf2f636c..ac542f33927f9de9040bab9cd98351a4 let placements = gPlacements.get(oldPlacement.area); let position = placements.indexOf(aWidgetId); if (position != -1) { -@@ -4538,7 +4536,7 @@ var CustomizableUIInternal = { +@@ -4541,7 +4539,7 @@ var CustomizableUIInternal = { * For all registered areas, builds those areas to reflect the current * placement state of all widgets. */ @@ -144,7 +144,7 @@ index 4f62449d670701c77c681ae36e00bae8bf2f636c..ac542f33927f9de9040bab9cd98351a4 for (let [areaId, areaNodes] of gBuildAreas) { let placements = gPlacements.get(areaId); let isFirstChangedToolbar = true; -@@ -4549,7 +4547,7 @@ var CustomizableUIInternal = { +@@ -4552,7 +4550,7 @@ var CustomizableUIInternal = { if (area.get("type") == CustomizableUI.TYPE_TOOLBAR) { let defaultCollapsed = area.get("defaultCollapsed"); let win = areaNode.ownerGlobal; @@ -153,7 +153,7 @@ index 4f62449d670701c77c681ae36e00bae8bf2f636c..ac542f33927f9de9040bab9cd98351a4 win.setToolbarVisibility( areaNode, typeof defaultCollapsed == "string" -@@ -5840,6 +5838,7 @@ export var CustomizableUI = { +@@ -5843,6 +5841,7 @@ export var CustomizableUI = { unregisterArea(aName, aDestroyPlacements) { CustomizableUIInternal.unregisterArea(aName, aDestroyPlacements); }, @@ -161,7 +161,7 @@ index 4f62449d670701c77c681ae36e00bae8bf2f636c..ac542f33927f9de9040bab9cd98351a4 /** * Add a widget to an area. * If the area to which you try to add is not known to CustomizableUI, -@@ -7887,11 +7886,11 @@ class OverflowableToolbar { +@@ -7890,11 +7889,11 @@ class OverflowableToolbar { parseFloat(style.paddingLeft) - parseFloat(style.paddingRight) - toolbarChildrenWidth; @@ -175,17 +175,17 @@ index 4f62449d670701c77c681ae36e00bae8bf2f636c..ac542f33927f9de9040bab9cd98351a4 }); lazy.log.debug( -@@ -7901,7 +7900,8 @@ class OverflowableToolbar { - // If the target has min-width: 0, their children might actually overflow - // it, so check for both cases explicitly. - let targetContentWidth = Math.max(targetWidth, targetChildrenWidth); -- let isOverflowing = Math.floor(targetContentWidth) > totalAvailWidth; +@@ -7909,7 +7908,8 @@ class OverflowableToolbar { + Math.max(targetWidth, targetChildrenWidth) + ); + totalAvailWidth = Math.ceil(totalAvailWidth); +- let isOverflowing = targetContentWidth > totalAvailWidth; + if (win.gZenVerticalTabsManager._hasSetSingleToolbar && this.#toolbar.id == 'nav-bar') return { isOverflowing: false, targetContentWidth, totalAvailWidth }; -+ let isOverflowing = Math.floor(targetContentWidth) + (win.gZenVerticalTabsManager._hasSetSingleToolbar ? 0.1 : 0) > totalAvailWidth; ++ let isOverflowing = targetContentWidth + (win.gZenVerticalTabsManager._hasSetSingleToolbar ? 0.1 : 0) > totalAvailWidth; return { isOverflowing, targetContentWidth, totalAvailWidth }; } -@@ -7995,7 +7995,7 @@ class OverflowableToolbar { +@@ -8003,7 +8003,7 @@ class OverflowableToolbar { } } if (!inserted) { @@ -194,7 +194,7 @@ index 4f62449d670701c77c681ae36e00bae8bf2f636c..ac542f33927f9de9040bab9cd98351a4 } child.removeAttribute("cui-anchorid"); child.removeAttribute("overflowedItem"); -@@ -8340,7 +8340,7 @@ class OverflowableToolbar { +@@ -8348,7 +8348,7 @@ class OverflowableToolbar { break; } case "mousedown": { diff --git a/src/browser/components/extensions/parent/ext-browser-js.patch b/src/browser/components/extensions/parent/ext-browser-js.patch index 3bace1f05..68c720930 100644 --- a/src/browser/components/extensions/parent/ext-browser-js.patch +++ b/src/browser/components/extensions/parent/ext-browser-js.patch @@ -1,8 +1,8 @@ diff --git a/browser/components/extensions/parent/ext-browser.js b/browser/components/extensions/parent/ext-browser.js -index 0baa038232d7e0fd9942f392c48acf7ea5ba50ed..093e1c29c3538d18eb2162b4e4b23ba40c695739 100644 +index 89b0bb3b92c15b89499ffc6cf35dcee7ebb89e48..327afaea3821cdca8d7f58bfaa65c7ce3dbfa7a3 100644 --- a/browser/components/extensions/parent/ext-browser.js +++ b/browser/components/extensions/parent/ext-browser.js -@@ -351,6 +351,7 @@ class TabTracker extends TabTrackerBase { +@@ -354,6 +354,7 @@ class TabTracker extends TabTrackerBase { } getId(nativeTab) { @@ -10,7 +10,7 @@ index 0baa038232d7e0fd9942f392c48acf7ea5ba50ed..093e1c29c3538d18eb2162b4e4b23ba4 let id = this._tabs.get(nativeTab); if (id) { return id; -@@ -385,6 +386,7 @@ class TabTracker extends TabTrackerBase { +@@ -388,6 +389,7 @@ class TabTracker extends TabTrackerBase { if (nativeTab.ownerGlobal.closed) { throw new Error("Cannot attach ID to a tab in a closed window."); } @@ -18,7 +18,7 @@ index 0baa038232d7e0fd9942f392c48acf7ea5ba50ed..093e1c29c3538d18eb2162b4e4b23ba4 this._tabs.set(nativeTab, id); if (nativeTab.linkedBrowser) { -@@ -1268,6 +1270,10 @@ class TabManager extends TabManagerBase { +@@ -1271,6 +1273,10 @@ class TabManager extends TabManagerBase { } canAccessTab(nativeTab) { diff --git a/src/browser/components/places/content/browserPlacesViews-js.patch b/src/browser/components/places/content/browserPlacesViews-js.patch index bf9dad21b..334efc46f 100644 --- a/src/browser/components/places/content/browserPlacesViews-js.patch +++ b/src/browser/components/places/content/browserPlacesViews-js.patch @@ -1,5 +1,5 @@ diff --git a/browser/components/places/content/browserPlacesViews.js b/browser/components/places/content/browserPlacesViews.js -index 29fb3308dcc98d785a3345dee78050d633927db2..0ae28fa0618def4a146723b19a22280956a25371 100644 +index ee6050d411df009d8b61e49d7fdaba79f1bc5db1..0149528329dad3d48449175a35d96d3ed3a3058e 100644 --- a/browser/components/places/content/browserPlacesViews.js +++ b/browser/components/places/content/browserPlacesViews.js @@ -330,12 +330,23 @@ class PlacesViewBase { diff --git a/src/browser/components/preferences/jar-mn.patch b/src/browser/components/preferences/jar-mn.patch index 591370981..1f1b5e52a 100644 --- a/src/browser/components/preferences/jar-mn.patch +++ b/src/browser/components/preferences/jar-mn.patch @@ -1,8 +1,8 @@ diff --git a/browser/components/preferences/jar.mn b/browser/components/preferences/jar.mn -index eac1fc65c01107cc7f1a3f3aeb1e8caac3c4a3f5..c3bd265acc924bcf26816e9e78f314c31af41f6d 100644 +index a786155d80a9f1f09d209f2da11437ee2d662739..2e422b48b452698275118d336d1b16af6a221577 100644 --- a/browser/components/preferences/jar.mn +++ b/browser/components/preferences/jar.mn -@@ -27,3 +27,5 @@ browser.jar: +@@ -30,3 +30,5 @@ browser.jar: content/browser/preferences/widgets/setting-control.mjs (widgets/setting-control/setting-control.mjs) content/browser/preferences/widgets/setting-group.mjs (widgets/setting-group/setting-group.mjs) content/browser/preferences/widgets/setting-group.css (widgets/setting-group/setting-group.css) diff --git a/src/browser/components/preferences/main-inc-xhtml.patch b/src/browser/components/preferences/main-inc-xhtml.patch index c3c8af6ce..234483ae9 100644 --- a/src/browser/components/preferences/main-inc-xhtml.patch +++ b/src/browser/components/preferences/main-inc-xhtml.patch @@ -1,5 +1,5 @@ diff --git a/browser/components/preferences/main.inc.xhtml b/browser/components/preferences/main.inc.xhtml -index 66ce978d9b022285dea67fdb75b3c005adb05d9b..db61587570ca18403a82ea6796a756d403cc207e 100644 +index 891cf7108cf4606c99a902afa420e744b9690b87..72034b4a28e68016c04d06a2991ccebff30dd341 100644 --- a/browser/components/preferences/main.inc.xhtml +++ b/browser/components/preferences/main.inc.xhtml @@ -29,6 +29,9 @@ @@ -12,7 +12,7 @@ index 66ce978d9b022285dea67fdb75b3c005adb05d9b..db61587570ca18403a82ea6796a756d4 #ifdef XP_WIN diff --git a/src/browser/components/preferences/main-js.patch b/src/browser/components/preferences/main-js.patch index 7fe5eeb4e..fedbfaded 100644 --- a/src/browser/components/preferences/main-js.patch +++ b/src/browser/components/preferences/main-js.patch @@ -1,8 +1,8 @@ diff --git a/browser/components/preferences/main.js b/browser/components/preferences/main.js -index 3f578f3888684a1830d456f2a4896e8a5f6630fd..7de18a724d3953a5616577f65a8cf9a18f71893c 100644 +index 259bc260328af1b1f2b95866e7cf92dec341a4b0..3cebff51774b2542a8d4d888aa99dc10929c80be 100644 --- a/browser/components/preferences/main.js +++ b/browser/components/preferences/main.js -@@ -424,7 +424,7 @@ function getBundleForLocales(newLocales) { +@@ -443,7 +443,7 @@ function getBundleForLocales(newLocales) { ]) ); return new Localization( diff --git a/src/browser/components/preferences/preferences-js.patch b/src/browser/components/preferences/preferences-js.patch index 9bd739668..c85a728be 100644 --- a/src/browser/components/preferences/preferences-js.patch +++ b/src/browser/components/preferences/preferences-js.patch @@ -1,5 +1,5 @@ diff --git a/browser/components/preferences/preferences.js b/browser/components/preferences/preferences.js -index b5af9af69fd715012af5c0613e0627dd9cf9c3b7..7f86bac8cce278c5b7b7e1230230b3a27b7cf49a 100644 +index 1fb8a954f61e89736b369f5fa01bb4f89fff16ad..3030c32cb66529f14e575428654778abd312dfd8 100644 --- a/browser/components/preferences/preferences.js +++ b/browser/components/preferences/preferences.js @@ -117,6 +117,7 @@ ChromeUtils.defineLazyGetter(this, "gSubDialog", function () { diff --git a/src/browser/components/preferences/preferences-xhtml.patch b/src/browser/components/preferences/preferences-xhtml.patch index 9a6458fdd..8e8ee9e12 100644 --- a/src/browser/components/preferences/preferences-xhtml.patch +++ b/src/browser/components/preferences/preferences-xhtml.patch @@ -1,17 +1,17 @@ diff --git a/browser/components/preferences/preferences.xhtml b/browser/components/preferences/preferences.xhtml -index 21d951a19df06da67a28f717b9f80f8f4ebf77d2..b1f998f2b3ed99b19666e81e61428587541b0da5 100644 +index 0081bb470c9b15b39441ff844680e5e91b05fb86..3e4e7c43cf0e4feffb80623491de6222bb88a64b 100644 --- a/browser/components/preferences/preferences.xhtml +++ b/browser/components/preferences/preferences.xhtml -@@ -44,6 +44,8 @@ - +@@ -45,6 +45,8 @@ + +#include zen-preferences-links.xhtml + -@@ -104,6 +106,11 @@ +@@ -106,6 +108,11 @@ @@ -23,7 +23,7 @@ index 21d951a19df06da67a28f717b9f80f8f4ebf77d2..b1f998f2b3ed99b19666e81e61428587 @@ -74,7 +74,7 @@ index 21d951a19df06da67a28f717b9f80f8f4ebf77d2..b1f998f2b3ed99b19666e81e61428587 @@ -86,7 +86,7 @@ index 21d951a19df06da67a28f717b9f80f8f4ebf77d2..b1f998f2b3ed99b19666e81e61428587 -@@ -245,6 +291,10 @@ +@@ -247,6 +293,10 @@ #include sync.inc.xhtml #include experimental.inc.xhtml #include moreFromMozilla.inc.xhtml diff --git a/src/browser/components/screenshots/overlay/overlay-css.patch b/src/browser/components/screenshots/overlay/overlay-css.patch index 5230fd70e..9c3021460 100644 --- a/src/browser/components/screenshots/overlay/overlay-css.patch +++ b/src/browser/components/screenshots/overlay/overlay-css.patch @@ -1,8 +1,8 @@ diff --git a/browser/components/screenshots/overlay/overlay.css b/browser/components/screenshots/overlay/overlay.css -index 037b060327d896e1ec0d087ade80df7548c8c1f7..7a158291c56df0e3b01bf7a37d04de71940d395f 100644 +index ee2740fc48e9b70fe17b0f27b60053209516dbbf..cc0270e0eb28c3e60216460b02d62111abb970de 100644 --- a/browser/components/screenshots/overlay/overlay.css +++ b/browser/components/screenshots/overlay/overlay.css -@@ -225,6 +225,9 @@ +@@ -196,6 +196,9 @@ pointer-events: none; position: absolute; z-index: var(--screenshots-high-layer); @@ -12,7 +12,7 @@ index 037b060327d896e1ec0d087ade80df7548c8c1f7..7a158291c56df0e3b01bf7a37d04de71 } #top-background { -@@ -243,7 +246,7 @@ +@@ -214,7 +217,7 @@ } .bghighlight { diff --git a/src/browser/components/search/SearchUIUtils-sys-mjs.patch b/src/browser/components/search/SearchUIUtils-sys-mjs.patch index 850fac1ff..c384b1151 100644 --- a/src/browser/components/search/SearchUIUtils-sys-mjs.patch +++ b/src/browser/components/search/SearchUIUtils-sys-mjs.patch @@ -1,8 +1,8 @@ diff --git a/browser/components/search/SearchUIUtils.sys.mjs b/browser/components/search/SearchUIUtils.sys.mjs -index 6ef224ce377cf3ff511e435f3c7a5dc1de819c60..5b4c395c222c6317fd88499a1aa5307032ea13f8 100644 +index 55f90f4e802480728bbd5ef962b507183e017997..2a83f861fe6edee2b127c8d7946abcdcdbf677f5 100644 --- a/browser/components/search/SearchUIUtils.sys.mjs +++ b/browser/components/search/SearchUIUtils.sys.mjs -@@ -426,7 +426,7 @@ export var SearchUIUtils = { +@@ -430,7 +430,7 @@ export var SearchUIUtils = { triggeringSearchEngine: engine.name, }, }); diff --git a/src/browser/components/sessionstore/SessionStore-sys-mjs.patch b/src/browser/components/sessionstore/SessionStore-sys-mjs.patch index 08585dd50..79c5bcfcf 100644 --- a/src/browser/components/sessionstore/SessionStore-sys-mjs.patch +++ b/src/browser/components/sessionstore/SessionStore-sys-mjs.patch @@ -1,5 +1,5 @@ diff --git a/browser/components/sessionstore/SessionStore.sys.mjs b/browser/components/sessionstore/SessionStore.sys.mjs -index e8192ea9d8d35165fbfbb8c4fc4a96641a80cc86..cf13724d147c8b8fc35c76d7f77601eb1077ea5c 100644 +index eb62ff3e733e43fdaa299babddea3ba0125abb06..8f20ba50b06f5b75d7de08eb4d1b27d89fb95494 100644 --- a/browser/components/sessionstore/SessionStore.sys.mjs +++ b/browser/components/sessionstore/SessionStore.sys.mjs @@ -126,6 +126,8 @@ const TAB_EVENTS = [ @@ -11,7 +11,7 @@ index e8192ea9d8d35165fbfbb8c4fc4a96641a80cc86..cf13724d147c8b8fc35c76d7f77601eb ]; const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; -@@ -1898,6 +1900,8 @@ var SessionStoreInternal = { +@@ -1904,6 +1906,8 @@ var SessionStoreInternal = { case "TabPinned": case "TabUnpinned": case "SwapDocShells": @@ -20,7 +20,7 @@ index e8192ea9d8d35165fbfbb8c4fc4a96641a80cc86..cf13724d147c8b8fc35c76d7f77601eb this.saveStateDelayed(win); break; case "TabGroupCreate": -@@ -2133,7 +2137,6 @@ var SessionStoreInternal = { +@@ -2139,7 +2143,6 @@ var SessionStoreInternal = { if (closedWindowState) { let newWindowState; if ( @@ -28,7 +28,7 @@ index e8192ea9d8d35165fbfbb8c4fc4a96641a80cc86..cf13724d147c8b8fc35c76d7f77601eb !lazy.SessionStartup.willRestore() ) { // We want to split the window up into pinned tabs and unpinned tabs. -@@ -2366,11 +2369,9 @@ var SessionStoreInternal = { +@@ -2372,11 +2375,9 @@ var SessionStoreInternal = { tabbrowser.selectedTab.label; } @@ -40,7 +40,7 @@ index e8192ea9d8d35165fbfbb8c4fc4a96641a80cc86..cf13724d147c8b8fc35c76d7f77601eb // Store the window's close date to figure out when each individual tab // was closed. This timestamp should allow re-arranging data based on how -@@ -3355,7 +3356,7 @@ var SessionStoreInternal = { +@@ -3361,7 +3362,7 @@ var SessionStoreInternal = { if (!isPrivateWindow && tabState.isPrivate) { return; } @@ -49,7 +49,7 @@ index e8192ea9d8d35165fbfbb8c4fc4a96641a80cc86..cf13724d147c8b8fc35c76d7f77601eb return; } -@@ -4067,6 +4068,11 @@ var SessionStoreInternal = { +@@ -4073,6 +4074,11 @@ var SessionStoreInternal = { Math.min(tabState.index, tabState.entries.length) ); tabState.pinned = false; @@ -61,7 +61,7 @@ index e8192ea9d8d35165fbfbb8c4fc4a96641a80cc86..cf13724d147c8b8fc35c76d7f77601eb if (inBackground === false) { aWindow.gBrowser.selectedTab = newTab; -@@ -4503,6 +4509,7 @@ var SessionStoreInternal = { +@@ -4509,6 +4515,7 @@ var SessionStoreInternal = { // Append the tab if we're opening into a different window, tabIndex: aSource == aTargetWindow ? pos : Infinity, pinned: state.pinned, @@ -138,7 +138,7 @@ index e8192ea9d8d35165fbfbb8c4fc4a96641a80cc86..cf13724d147c8b8fc35c76d7f77601eb this._log.debug( `restoreWindow, createTabsForSessionRestore returned ${tabs.length} tabs` ); -@@ -6349,6 +6360,25 @@ var SessionStoreInternal = { +@@ -6348,6 +6359,25 @@ var SessionStoreInternal = { // Most of tabData has been restored, now continue with restoring // attributes that may trigger external events. @@ -164,7 +164,7 @@ index e8192ea9d8d35165fbfbb8c4fc4a96641a80cc86..cf13724d147c8b8fc35c76d7f77601eb if (tabData.pinned) { tabbrowser.pinTab(tab); -@@ -7264,7 +7294,7 @@ var SessionStoreInternal = { +@@ -7263,7 +7293,7 @@ var SessionStoreInternal = { let groupsToSave = new Map(); for (let tIndex = 0; tIndex < window.tabs.length; ) { diff --git a/src/browser/components/sidebar/browser-sidebar-js.patch b/src/browser/components/sidebar/browser-sidebar-js.patch index 4f1be7371..a04592bf8 100644 --- a/src/browser/components/sidebar/browser-sidebar-js.patch +++ b/src/browser/components/sidebar/browser-sidebar-js.patch @@ -1,5 +1,5 @@ diff --git a/browser/components/sidebar/browser-sidebar.js b/browser/components/sidebar/browser-sidebar.js -index f62decaa3f7400787b245b3e765197f4e70dffbb..329240cf434fdbefcf145a733179bd565a814280 100644 +index c4edb5442e5243b7d9fe35e1774b2fc651903601..d58076fedafe07d3401ab1723eaa837fabbae09f 100644 --- a/browser/components/sidebar/browser-sidebar.js +++ b/browser/components/sidebar/browser-sidebar.js @@ -779,7 +779,7 @@ var SidebarController = { diff --git a/src/browser/components/tabbrowser/TabsList-sys-mjs.patch b/src/browser/components/tabbrowser/TabsList-sys-mjs.patch index d511f3c1d..5ac1788da 100644 --- a/src/browser/components/tabbrowser/TabsList-sys-mjs.patch +++ b/src/browser/components/tabbrowser/TabsList-sys-mjs.patch @@ -1,5 +1,5 @@ diff --git a/browser/components/tabbrowser/TabsList.sys.mjs b/browser/components/tabbrowser/TabsList.sys.mjs -index 97990af166b63cae4b0343c77da5084850890504..b58d20eb3db82867030292625d45277afce1bbea 100644 +index 20a543dede6bf4428c8af19c5d0589788ddd8eaa..27a378e70f5b280b720c95ba8dac2cc4e88985be 100644 --- a/browser/components/tabbrowser/TabsList.sys.mjs +++ b/browser/components/tabbrowser/TabsList.sys.mjs @@ -87,7 +87,7 @@ class TabsListBase { diff --git a/src/browser/components/tabbrowser/content/tab-js.patch b/src/browser/components/tabbrowser/content/tab-js.patch index 55459a9d4..50543e0eb 100644 --- a/src/browser/components/tabbrowser/content/tab-js.patch +++ b/src/browser/components/tabbrowser/content/tab-js.patch @@ -1,5 +1,5 @@ diff --git a/browser/components/tabbrowser/content/tab.js b/browser/components/tabbrowser/content/tab.js -index fd2465046407261e8c29b4cd3d56122d232e701c..108bc7eae78898bf8a84ddadbacca2d6e64a457d 100644 +index 425aaf8c8e4adf1507eb0d8ded671f8295544b04..5b0f46642e36fd3e15d13a8dbc633c7a9751f8aa 100644 --- a/browser/components/tabbrowser/content/tab.js +++ b/browser/components/tabbrowser/content/tab.js @@ -21,6 +21,7 @@ @@ -31,7 +31,7 @@ index fd2465046407261e8c29b4cd3d56122d232e701c..108bc7eae78898bf8a84ddadbacca2d6 "fadein,pinned,busy,progress,selected=visuallyselected", ".tab-icon-pending": @@ -93,9 +96,9 @@ - "src=image,triggeringprincipal=iconloadingprincipal,requestcontextid,fadein,pinned,selected=visuallyselected,busy,crashed,sharing,pictureinpicture,pending,discarded", + "src=image,requestcontextid,fadein,pinned,selected=visuallyselected,busy,crashed,sharing,pictureinpicture,pending,discarded", ".tab-sharing-icon-overlay": "sharing,selected=visuallyselected,pinned", ".tab-icon-overlay": - "sharing,pictureinpicture,crashed,busy,soundplaying,soundplaying-scheduledremoval,pinned,muted,blocked,selected=visuallyselected,activemedia-blocked", @@ -101,7 +101,7 @@ index fd2465046407261e8c29b4cd3d56122d232e701c..108bc7eae78898bf8a84ddadbacca2d6 } return null; } -@@ -459,6 +475,8 @@ +@@ -468,6 +484,8 @@ this.style.MozUserFocus = "ignore"; } else if ( event.target.classList.contains("tab-close-button") || @@ -110,7 +110,7 @@ index fd2465046407261e8c29b4cd3d56122d232e701c..108bc7eae78898bf8a84ddadbacca2d6 event.target.classList.contains("tab-icon-overlay") || event.target.classList.contains("tab-audio-button") ) { -@@ -513,6 +531,10 @@ +@@ -522,6 +540,10 @@ this.style.MozUserFocus = ""; } @@ -121,7 +121,7 @@ index fd2465046407261e8c29b4cd3d56122d232e701c..108bc7eae78898bf8a84ddadbacca2d6 on_click(event) { if (event.button != 0) { return; -@@ -561,6 +583,7 @@ +@@ -570,6 +592,7 @@ ) ); } else { @@ -129,7 +129,7 @@ index fd2465046407261e8c29b4cd3d56122d232e701c..108bc7eae78898bf8a84ddadbacca2d6 gBrowser.removeTab(this, { animate: true, triggeringEvent: event, -@@ -573,6 +596,14 @@ +@@ -582,6 +605,14 @@ // (see tabbrowser-tabs 'click' handler). gBrowser.tabContainer._blockDblClick = true; } @@ -144,7 +144,7 @@ index fd2465046407261e8c29b4cd3d56122d232e701c..108bc7eae78898bf8a84ddadbacca2d6 } on_dblclick(event) { -@@ -596,6 +627,8 @@ +@@ -605,6 +636,8 @@ animate: true, triggeringEvent: event, }); diff --git a/src/browser/components/tabbrowser/content/tabbrowser-js.patch b/src/browser/components/tabbrowser/content/tabbrowser-js.patch index 6494a3137..11561149a 100644 --- a/src/browser/components/tabbrowser/content/tabbrowser-js.patch +++ b/src/browser/components/tabbrowser/content/tabbrowser-js.patch @@ -1,8 +1,8 @@ diff --git a/browser/components/tabbrowser/content/tabbrowser.js b/browser/components/tabbrowser/content/tabbrowser.js -index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80ed9d2317a 100644 +index c099e8646b9341a3ff55bf394037c8fc2769969b..0d524a0519bbbdf304a594d1fb56c394b7dbc6a7 100644 --- a/browser/components/tabbrowser/content/tabbrowser.js +++ b/browser/components/tabbrowser/content/tabbrowser.js -@@ -427,15 +427,64 @@ +@@ -432,15 +432,64 @@ return this.tabContainer.visibleTabs; } @@ -69,7 +69,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e set selectedTab(val) { if ( gSharedTabWarning.willShowSharedTabWarning(val) || -@@ -583,6 +632,7 @@ +@@ -588,6 +637,7 @@ this.tabpanels.appendChild(panel); let tab = this.tabs[0]; @@ -77,22 +77,26 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e tab.linkedPanel = uniqueId; this._selectedTab = tab; this._selectedBrowser = browser; -@@ -868,9 +918,13 @@ +@@ -873,13 +923,17 @@ } this.showTab(aTab); + const handled = gZenFolders.handleTabPin(aTab); + if (!handled) { + this.ungroupTab(aTab); - this.#handleTabMove(aTab, () => -- this.pinnedTabsContainer.appendChild(aTab) + this.#handleTabMove(aTab, () => { + let periphery = document.getElementById( + "pinned-tabs-container-periphery" + ); + // If periphery is null, append to end +- this.pinnedTabsContainer.insertBefore(aTab, periphery); + aTab.hasAttribute("zen-essential") ? gZenWorkspaces.getEssentialsSection(aTab).appendChild(aTab) : this.pinnedTabsContainer.insertBefore(aTab, this.pinnedTabsContainer.lastChild) - ); + }); + } aTab.setAttribute("pinned", "true"); this._updateTabBarForPinnedTabs(); -@@ -883,11 +937,15 @@ +@@ -892,11 +946,15 @@ } this.#handleTabMove(aTab, () => { @@ -109,7 +113,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e }); aTab.style.marginInlineStart = ""; -@@ -1065,6 +1123,8 @@ +@@ -1073,6 +1131,8 @@ let LOCAL_PROTOCOLS = ["chrome:", "about:", "resource:", "data:"]; @@ -117,8 +121,8 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e + gZenPinnedTabManager.onTabIconChanged(aTab, aIconURL); if ( aIconURL && - !aLoadingPrincipal && -@@ -1075,6 +1135,9 @@ + !LOCAL_PROTOCOLS.some(protocol => aIconURL.startsWith(protocol)) +@@ -1082,6 +1142,9 @@ ); return; } @@ -128,7 +132,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e let browser = this.getBrowserForTab(aTab); browser.mIconURL = aIconURL; -@@ -1333,6 +1396,7 @@ +@@ -1445,6 +1508,7 @@ if (!this._previewMode) { newTab.recordTimeFromUnloadToReload(); newTab.updateLastAccessed(); @@ -136,7 +140,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e oldTab.updateLastAccessed(); // if this is the foreground window, update the last-seen timestamps. if (this.ownerGlobal == BrowserWindowTracker.getTopWindow()) { -@@ -1485,6 +1549,9 @@ +@@ -1597,6 +1661,9 @@ } let activeEl = document.activeElement; @@ -146,7 +150,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e // If focus is on the old tab, move it to the new tab. if (activeEl == oldTab) { newTab.focus(); -@@ -1808,7 +1875,8 @@ +@@ -1920,7 +1987,8 @@ } _setTabLabel(aTab, aLabel, { beforeTabOpen, isContentTitle, isURL } = {}) { @@ -156,7 +160,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e return false; } -@@ -1916,7 +1984,7 @@ +@@ -2028,7 +2096,7 @@ newIndex = this.selectedTab._tPos + 1; } @@ -165,7 +169,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e if (this.isTabGroupLabel(targetTab)) { throw new Error( "Replacing a tab group label with a tab is not supported" -@@ -2191,6 +2259,7 @@ +@@ -2303,6 +2371,7 @@ uriIsAboutBlank, userContextId, skipLoad, @@ -173,7 +177,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e } = {}) { let b = document.createXULElement("browser"); // Use the JSM global to create the permanentKey, so that if the -@@ -2264,8 +2333,7 @@ +@@ -2376,8 +2445,7 @@ // we use a different attribute name for this? b.setAttribute("name", name); } @@ -183,7 +187,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e b.setAttribute("transparent", "true"); } -@@ -2430,7 +2498,7 @@ +@@ -2542,7 +2610,7 @@ let panel = this.getPanel(browser); let uniqueId = this._generateUniquePanelID(); @@ -192,7 +196,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e aTab.linkedPanel = uniqueId; // Inject the into the DOM if necessary. -@@ -2489,8 +2557,8 @@ +@@ -2601,8 +2669,8 @@ // If we transitioned from one browser to two browsers, we need to set // hasSiblings=false on both the existing browser and the new browser. if (this.tabs.length == 2) { @@ -203,7 +207,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e } else { aTab.linkedBrowser.browsingContext.hasSiblings = this.tabs.length > 1; } -@@ -2654,7 +2722,6 @@ +@@ -2779,7 +2847,6 @@ this.selectedTab = this.addTrustedTab(BROWSER_NEW_TAB_URL, { tabIndex: tab._tPos + 1, userContextId: tab.userContextId, @@ -211,7 +215,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e focusUrlBar: true, }); resolve(this.selectedBrowser); -@@ -2734,6 +2801,8 @@ +@@ -2859,6 +2926,8 @@ schemelessInput, hasValidUserGestureActivation = false, textDirectiveUserActivation = false, @@ -220,7 +224,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e } = {} ) { // all callers of addTab that pass a params object need to pass -@@ -2744,6 +2813,12 @@ +@@ -2869,6 +2938,12 @@ ); } @@ -233,7 +237,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e if (!UserInteraction.running("browser.tabs.opening", window)) { UserInteraction.start("browser.tabs.opening", "initting", window); } -@@ -2807,6 +2882,19 @@ +@@ -2932,6 +3007,19 @@ noInitialLabel, skipBackgroundNotify, }); @@ -253,7 +257,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e if (insertTab) { // Insert the tab into the tab container in the correct position. this.#insertTabAtIndex(t, { -@@ -2815,6 +2903,7 @@ +@@ -2940,6 +3028,7 @@ ownerTab, openerTab, pinned, @@ -261,7 +265,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e bulkOrderedOpen, tabGroup: tabGroup ?? openerTab?.group, }); -@@ -2833,6 +2922,7 @@ +@@ -2958,6 +3047,7 @@ openWindowInfo, skipLoad, triggeringRemoteType, @@ -269,7 +273,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e })); if (focusUrlBar) { -@@ -2953,6 +3043,12 @@ +@@ -3078,6 +3168,12 @@ } } @@ -282,7 +286,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e // Additionally send pinned tab events if (pinned) { this.#notifyPinnedStatus(t); -@@ -3041,10 +3137,10 @@ +@@ -3248,10 +3344,10 @@ isAdoptingGroup = false, isUserTriggered = false, telemetryUserCreateSource = "unknown", @@ -294,7 +298,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e } if (!color) { -@@ -3065,9 +3161,14 @@ +@@ -3272,9 +3368,14 @@ label, isAdoptingGroup ); @@ -311,7 +315,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e ); group.addTabs(tabs); -@@ -3188,7 +3289,7 @@ +@@ -3395,7 +3496,7 @@ } this.#handleTabMove(tab, () => @@ -320,7 +324,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e ); } -@@ -3390,6 +3491,7 @@ +@@ -3597,6 +3698,7 @@ openWindowInfo, skipLoad, triggeringRemoteType, @@ -328,7 +332,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e } ) { // If we don't have a preferred remote type (or it is `NOT_REMOTE`), and -@@ -3459,6 +3561,7 @@ +@@ -3666,6 +3768,7 @@ openWindowInfo, name, skipLoad, @@ -336,7 +340,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e }); } -@@ -3646,7 +3749,7 @@ +@@ -3853,7 +3956,7 @@ // Add a new tab if needed. if (!tab) { let createLazyBrowser = @@ -345,7 +349,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e let url = "about:blank"; if (tabData.entries?.length) { -@@ -3683,8 +3786,10 @@ +@@ -3890,8 +3993,10 @@ insertTab: false, skipLoad: true, preferredRemoteType, @@ -357,7 +361,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e if (select) { tabToSelect = tab; } -@@ -3696,7 +3801,8 @@ +@@ -3903,7 +4008,8 @@ this.pinTab(tab); // Then ensure all the tab open/pinning information is sent. this._fireTabOpen(tab, {}); @@ -367,7 +371,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e let { groupId } = tabData; const tabGroup = tabGroupWorkingData.get(groupId); // if a tab refers to a tab group we don't know, skip any group -@@ -3710,7 +3816,10 @@ +@@ -3917,7 +4023,10 @@ tabGroup.stateData.id, tabGroup.stateData.color, tabGroup.stateData.collapsed, @@ -379,7 +383,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e ); tabsFragment.appendChild(tabGroup.node); } -@@ -3755,9 +3864,23 @@ +@@ -3962,9 +4071,23 @@ // to remove the old selected tab. if (tabToSelect) { let leftoverTab = this.selectedTab; @@ -403,7 +407,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e if (tabs.length > 1 || !tabs[0].selected) { this._updateTabsAfterInsert(); -@@ -3948,11 +4071,14 @@ +@@ -4155,11 +4278,14 @@ if (ownerTab) { tab.owner = ownerTab; } @@ -419,7 +423,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e if ( !bulkOrderedOpen && ((openerTab && -@@ -3964,7 +4090,7 @@ +@@ -4171,7 +4297,7 @@ let lastRelatedTab = openerTab && this._lastRelatedTabMap.get(openerTab); let previousTab = lastRelatedTab || openerTab || this.selectedTab; @@ -428,7 +432,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e tabGroup = previousTab.group; } if ( -@@ -3975,7 +4101,7 @@ +@@ -4182,7 +4308,7 @@ ) { elementIndex = Infinity; } else if (previousTab.visible) { @@ -437,7 +441,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e } else if (previousTab == FirefoxViewHandler.tab) { elementIndex = 0; } -@@ -4003,14 +4129,14 @@ +@@ -4210,14 +4336,14 @@ } // Ensure index is within bounds. if (tab.pinned) { @@ -456,7 +460,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e if (pinned && !itemAfter?.pinned) { itemAfter = null; -@@ -4021,7 +4147,7 @@ +@@ -4228,7 +4354,7 @@ this.tabContainer._invalidateCachedTabs(); @@ -465,7 +469,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e if (this.isTab(itemAfter) && itemAfter.group == tabGroup) { // Place at the front of, or between tabs in, the same tab group this.tabContainer.insertBefore(tab, itemAfter); -@@ -4057,6 +4183,7 @@ +@@ -4264,6 +4390,7 @@ if (pinned) { this._updateTabBarForPinnedTabs(); } @@ -473,7 +477,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e TabBarVisibility.update(); } -@@ -4346,6 +4473,9 @@ +@@ -4553,6 +4680,9 @@ return; } @@ -483,7 +487,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e this.removeTabs(selectedTabs, { isUserTriggered, telemetrySource }); } -@@ -4607,6 +4737,7 @@ +@@ -4814,6 +4944,7 @@ telemetrySource, } = {} ) { @@ -491,7 +495,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e // When 'closeWindowWithLastTab' pref is enabled, closing all tabs // can be considered equivalent to closing the window. if ( -@@ -4696,6 +4827,7 @@ +@@ -4903,6 +5034,7 @@ if (lastToClose) { this.removeTab(lastToClose, aParams); } @@ -499,7 +503,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e } catch (e) { console.error(e); } -@@ -4734,6 +4866,12 @@ +@@ -4941,6 +5073,12 @@ aTab._closeTimeNoAnimTimerId = Glean.browserTabclose.timeNoAnim.start(); } @@ -512,7 +516,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e // Handle requests for synchronously removing an already // asynchronously closing tab. if (!animate && aTab.closing) { -@@ -4748,6 +4886,9 @@ +@@ -4955,6 +5093,9 @@ // state). let tabWidth = window.windowUtils.getBoundsWithoutFlushing(aTab).width; let isLastTab = this.#isLastTabInWindow(aTab); @@ -522,7 +526,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e if ( !this._beginRemoveTab(aTab, { closeWindowFastpath: true, -@@ -4796,7 +4937,13 @@ +@@ -5003,7 +5144,13 @@ // We're not animating, so we can cancel the animation stopwatch. Glean.browserTabclose.timeAnim.cancel(aTab._closeTimeAnimTimerId); aTab._closeTimeAnimTimerId = null; @@ -537,7 +541,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e return; } -@@ -4930,7 +5077,7 @@ +@@ -5137,7 +5284,7 @@ closeWindowWithLastTab != null ? closeWindowWithLastTab : !window.toolbar.visible || @@ -546,7 +550,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e if (closeWindow) { // We've already called beforeunload on all the relevant tabs if we get here, -@@ -4954,6 +5101,7 @@ +@@ -5161,6 +5308,7 @@ newTab = true; } @@ -554,7 +558,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e aTab._endRemoveArgs = [closeWindow, newTab]; // swapBrowsersAndCloseOther will take care of closing the window without animation. -@@ -4994,13 +5142,7 @@ +@@ -5201,13 +5349,7 @@ aTab._mouseleave(); if (newTab) { @@ -569,7 +573,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e } else { TabBarVisibility.update(); } -@@ -5133,6 +5275,7 @@ +@@ -5340,6 +5482,7 @@ this.tabs[i]._tPos = i; } @@ -577,7 +581,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e if (!this._windowIsClosing) { // update tab close buttons state this.tabContainer._updateCloseButtons(); -@@ -5345,6 +5488,7 @@ +@@ -5552,6 +5695,7 @@ } let excludeTabs = new Set(aExcludeTabs); @@ -585,7 +589,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e // If this tab has a successor, it should be selectable, since // hiding or closing a tab removes that tab as a successor. -@@ -5357,13 +5501,13 @@ +@@ -5564,13 +5708,13 @@ !excludeTabs.has(aTab.owner) && Services.prefs.getBoolPref("browser.tabs.selectOwnerOnClose") ) { @@ -601,7 +605,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e ); let tab = this.tabContainer.findNextTab(aTab, { -@@ -5379,7 +5523,7 @@ +@@ -5586,7 +5730,7 @@ } if (tab) { @@ -610,7 +614,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e } // If no qualifying visible tab was found, see if there is a tab in -@@ -5400,7 +5544,7 @@ +@@ -5607,7 +5751,7 @@ }); } @@ -619,7 +623,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e } _blurTab(aTab) { -@@ -5802,10 +5946,10 @@ +@@ -6013,10 +6157,10 @@ SessionStore.deleteCustomTabValue(aTab, "hiddenBy"); } @@ -632,7 +636,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e aTab.selected || aTab.closing || // Tabs that are sharing the screen, microphone or camera cannot be hidden. -@@ -5864,6 +6008,7 @@ +@@ -6075,6 +6219,7 @@ * @param {MozTabbrowserTab|MozTabbrowserTabGroup|MozTabbrowserTabGroup.labelElement} aTab */ replaceTabWithWindow(aTab, aOptions) { @@ -640,7 +644,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e if (this.tabs.length == 1) { return null; } -@@ -5997,7 +6142,7 @@ +@@ -6208,7 +6353,7 @@ * `true` if element is a `` */ isTabGroup(element) { @@ -649,7 +653,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e } /** -@@ -6073,8 +6218,8 @@ +@@ -6284,8 +6429,8 @@ } // Don't allow mixing pinned and unpinned tabs. @@ -660,7 +664,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e } else { tabIndex = Math.max(tabIndex, this.pinnedTabCount); } -@@ -6100,10 +6245,16 @@ +@@ -6311,10 +6456,16 @@ this.#handleTabMove( element, () => { @@ -679,7 +683,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e if (neighbor && this.isTab(element) && tabIndex > element._tPos) { neighbor.after(element); } else { -@@ -6161,23 +6312,28 @@ +@@ -6372,23 +6523,28 @@ #moveTabNextTo(element, targetElement, moveBefore = false, metricsContext) { if (this.isTabGroupLabel(targetElement)) { targetElement = targetElement.group; @@ -714,7 +718,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e } else if (!element.pinned && targetElement && targetElement.pinned) { // If the caller asks to move an unpinned element next to a pinned // tab, move the unpinned element to be the first unpinned element -@@ -6190,14 +6346,34 @@ +@@ -6401,14 +6557,34 @@ // move the tab group right before the first unpinned tab. // 4. Moving a tab group and the first unpinned tab is grouped: // move the tab group right before the first unpinned tab's tab group. @@ -750,7 +754,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e element.pinned ? this.tabContainer.pinnedTabsContainer : this.tabContainer; -@@ -6206,7 +6382,7 @@ +@@ -6417,7 +6593,7 @@ element, () => { if (moveBefore) { @@ -759,7 +763,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e } else if (targetElement) { targetElement.after(element); } else { -@@ -6252,10 +6428,10 @@ +@@ -6489,10 +6665,10 @@ * @param {TabMetricsContext} [metricsContext] */ moveTabToGroup(aTab, aGroup, metricsContext) { @@ -772,7 +776,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e return; } if (aTab.group && aTab.group.id === aGroup.id) { -@@ -6285,6 +6461,7 @@ +@@ -6522,6 +6698,7 @@ let state = { tabIndex: tab._tPos, @@ -780,7 +784,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e }; if (tab.visible) { state.elementIndex = tab.elementIndex; -@@ -6311,7 +6488,7 @@ +@@ -6548,7 +6725,7 @@ let changedTabGroup = previousTabState.tabGroupId != currentTabState.tabGroupId; @@ -789,7 +793,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e tab.dispatchEvent( new CustomEvent("TabMove", { bubbles: true, -@@ -6348,6 +6525,10 @@ +@@ -6585,6 +6762,10 @@ moveActionCallback(); @@ -800,7 +804,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e // Clear tabs cache after moving nodes because the order of tabs may have // changed. this.tabContainer._invalidateCachedTabs(); -@@ -7249,7 +7430,7 @@ +@@ -7486,7 +7667,7 @@ // preventDefault(). It will still raise the window if appropriate. break; } @@ -809,7 +813,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e window.focus(); aEvent.preventDefault(); break; -@@ -7264,7 +7445,6 @@ +@@ -7501,7 +7682,6 @@ } case "TabGroupCollapse": aEvent.target.tabs.forEach(tab => { @@ -817,7 +821,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e }); break; case "TabGroupCreateByUser": -@@ -8199,6 +8379,7 @@ +@@ -8442,6 +8622,7 @@ aWebProgress.isTopLevel ) { this.mTab.setAttribute("busy", "true"); @@ -825,7 +829,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e gBrowser._tabAttrModified(this.mTab, ["busy"]); this.mTab._notselectedsinceload = !this.mTab.selected; } -@@ -9200,7 +9381,7 @@ var TabContextMenu = { +@@ -9443,7 +9624,7 @@ var TabContextMenu = { ); contextUnpinSelectedTabs.hidden = !this.contextTab.pinned || !this.multiselected; @@ -834,7 +838,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e // Build Ask Chat items TabContextMenu.GenAI.buildTabMenu( document.getElementById("context_askChat"), -@@ -9520,6 +9701,7 @@ var TabContextMenu = { +@@ -9763,6 +9944,7 @@ var TabContextMenu = { ) ); } else { diff --git a/src/browser/components/tabbrowser/content/tabgroup-js.patch b/src/browser/components/tabbrowser/content/tabgroup-js.patch index 34d48759b..2c3e80263 100644 --- a/src/browser/components/tabbrowser/content/tabgroup-js.patch +++ b/src/browser/components/tabbrowser/content/tabgroup-js.patch @@ -1,24 +1,23 @@ diff --git a/browser/components/tabbrowser/content/tabgroup.js b/browser/components/tabbrowser/content/tabgroup.js -index c0cb11590d6dfbcf6fa49ef5e10c6d3877191d1f..cd98bd2401e4618b003c184108e8532174e2a7cf 100644 +index 1b4f6bf4ed6556492f84476d33e9103fbb1c74e9..77bd8738db6f2e65c2bfcae8347b424098ba3e7b 100644 --- a/browser/components/tabbrowser/content/tabgroup.js +++ b/browser/components/tabbrowser/content/tabgroup.js -@@ -13,10 +13,12 @@ - +@@ -14,11 +14,11 @@ class MozTabbrowserTabGroup extends MozXULElement { static markup = ` -- -+ - + +- + + - -+ + + + -@@ -57,20 +59,36 @@ +@@ -69,20 +69,36 @@ } connectedCallback() { @@ -59,10 +58,10 @@ index c0cb11590d6dfbcf6fa49ef5e10c6d3877191d1f..cd98bd2401e4618b003c184108e85321 this._initialized = true; this.saveOnWindowClose = true; -@@ -99,11 +117,14 @@ +@@ -114,11 +130,14 @@ - this.#labelElement.addEventListener("mouseover", this); - this.#labelElement.addEventListener("mouseout", this); + this.#labelContainerElement.addEventListener("mouseover", this); + this.#labelContainerElement.addEventListener("mouseout", this); - this.#labelElement.addEventListener("contextmenu", e => { - e.preventDefault(); - gBrowser.tabGroupMenu.openEditModal(this); @@ -79,7 +78,7 @@ index c0cb11590d6dfbcf6fa49ef5e10c6d3877191d1f..cd98bd2401e4618b003c184108e85321 this.#updateLabelAriaAttributes(); this.#updateCollapsedAriaAttributes(); -@@ -129,6 +150,8 @@ +@@ -144,6 +163,8 @@ // mounts after getting created by `Tabbrowser.adoptTabGroup`. this.#wasCreatedByAdoption = false; } @@ -88,7 +87,7 @@ index c0cb11590d6dfbcf6fa49ef5e10c6d3877191d1f..cd98bd2401e4618b003c184108e85321 resetDefaultGroupName = () => { this.#defaultGroupName = ""; -@@ -213,7 +236,10 @@ +@@ -228,7 +249,10 @@ } }); } @@ -100,7 +99,7 @@ index c0cb11590d6dfbcf6fa49ef5e10c6d3877191d1f..cd98bd2401e4618b003c184108e85321 } get color() { -@@ -307,6 +333,9 @@ +@@ -322,6 +346,9 @@ } set collapsed(val) { @@ -110,7 +109,7 @@ index c0cb11590d6dfbcf6fa49ef5e10c6d3877191d1f..cd98bd2401e4618b003c184108e85321 if (!!val == this.collapsed) { return; } -@@ -364,7 +393,6 @@ +@@ -399,7 +426,6 @@ tabGroupName, }) .then(result => { @@ -118,7 +117,7 @@ index c0cb11590d6dfbcf6fa49ef5e10c6d3877191d1f..cd98bd2401e4618b003c184108e85321 }); } -@@ -383,7 +411,57 @@ +@@ -418,7 +444,57 @@ * @returns {MozTabbrowserTab[]} */ get tabs() { @@ -177,7 +176,7 @@ index c0cb11590d6dfbcf6fa49ef5e10c6d3877191d1f..cd98bd2401e4618b003c184108e85321 } /** -@@ -442,7 +520,6 @@ +@@ -498,7 +574,6 @@ addTabs(tabs, metricsContext) { for (let tab of tabs) { if (tab.pinned) { @@ -185,7 +184,7 @@ index c0cb11590d6dfbcf6fa49ef5e10c6d3877191d1f..cd98bd2401e4618b003c184108e85321 } let tabToMove = this.ownerGlobal === tab.ownerGlobal -@@ -505,7 +582,7 @@ +@@ -561,7 +636,7 @@ */ on_click(event) { let isToggleElement = @@ -194,7 +193,7 @@ index c0cb11590d6dfbcf6fa49ef5e10c6d3877191d1f..cd98bd2401e4618b003c184108e85321 event.target === this.#overflowCountLabel; if (isToggleElement && event.button === 0) { event.preventDefault(); -@@ -570,5 +647,6 @@ +@@ -630,5 +705,6 @@ } } diff --git a/src/browser/components/tabbrowser/content/tabs-js.patch b/src/browser/components/tabbrowser/content/tabs-js.patch index 2fa8caa1f..8318bbc10 100644 --- a/src/browser/components/tabbrowser/content/tabs-js.patch +++ b/src/browser/components/tabbrowser/content/tabs-js.patch @@ -1,5 +1,5 @@ diff --git a/browser/components/tabbrowser/content/tabs.js b/browser/components/tabbrowser/content/tabs.js -index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221fb51207c6 100644 +index 1425607ef87d6c28fb676e722617edfb51ba12a1..62431aa1c78c8327edf2c8c93472cb8b19b606e9 100644 --- a/browser/components/tabbrowser/content/tabs.js +++ b/browser/components/tabbrowser/content/tabs.js @@ -44,6 +44,9 @@ @@ -12,7 +12,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f if (isTab(element)) { return element; } -@@ -411,7 +414,7 @@ +@@ -423,7 +426,7 @@ // and we're not hitting the scroll buttons. if ( event.button != 0 || @@ -21,7 +21,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f event.composedTarget.localName == "toolbarbutton" ) { return; -@@ -492,7 +495,6 @@ +@@ -504,7 +507,6 @@ }); } } else if (isTabGroupLabel(event.target)) { @@ -29,7 +29,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f } else if ( event.originalTarget.closest("scrollbox") && !Services.prefs.getBoolPref( -@@ -528,6 +530,9 @@ +@@ -540,6 +542,9 @@ } on_keydown(event) { @@ -39,7 +39,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f let { altKey, shiftKey } = event; let [accel, nonAccel] = AppConstants.platform == "macosx" -@@ -765,7 +770,7 @@ +@@ -777,7 +782,7 @@ if (this.#isContainerVerticalPinnedGrid(tab)) { // In expanded vertical mode, the max number of pinned tabs per row is dynamic // Set this before adjusting dragged tab's position @@ -48,7 +48,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f let tabsPerRow = 0; let position = RTL_UI ? window.windowUtils.getBoundsWithoutFlushing( -@@ -930,7 +935,7 @@ +@@ -942,7 +947,7 @@ let dropEffect = this.getDropEffectForTabDrag(event); let isMovingInTabStrip = !fromTabList && dropEffect == "move"; let collapseTabGroupDuringDrag = @@ -57,7 +57,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f tab._dragData = { offsetX: this.verticalMode -@@ -940,7 +945,7 @@ +@@ -952,7 +957,7 @@ ? event.screenY - window.screenY - tabOffset : event.screenY - window.screenY, scrollPos: @@ -66,7 +66,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f ? this.pinnedTabsContainer.scrollPosition : this.arrowScrollbox.scrollPosition, screenX: event.screenX, -@@ -969,6 +974,7 @@ +@@ -981,6 +986,7 @@ if (collapseTabGroupDuringDrag) { tab.group.collapsed = true; @@ -74,7 +74,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f } } } -@@ -1015,6 +1021,10 @@ +@@ -1027,6 +1033,10 @@ } let draggedTab = event.dataTransfer.mozGetDataAt(TAB_DROP_TYPE, 0); @@ -85,7 +85,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f if ( (dropEffect == "move" || dropEffect == "copy") && document == draggedTab.ownerDocument && -@@ -1196,6 +1206,18 @@ +@@ -1208,6 +1218,18 @@ this._tabDropIndicator.hidden = true; event.stopPropagation(); @@ -104,7 +104,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f if (draggedTab && dropEffect == "copy") { let duplicatedDraggedTab; let duplicatedTabs = []; -@@ -1220,8 +1242,9 @@ +@@ -1232,8 +1254,9 @@ let translateOffsetY = oldTranslateY % tabHeight; let newTranslateX = oldTranslateX - translateOffsetX; let newTranslateY = oldTranslateY - translateOffsetY; @@ -116,7 +116,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f if (this.#isContainerVerticalPinnedGrid(draggedTab)) { // Update both translate axis for pinned vertical expanded tabs -@@ -1237,8 +1260,8 @@ +@@ -1249,8 +1272,8 @@ } } else { let tabs = this.ariaFocusableItems.slice( @@ -127,7 +127,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f ); let size = this.verticalMode ? "height" : "width"; let screenAxis = this.verticalMode ? "screenY" : "screenX"; -@@ -1287,11 +1310,13 @@ +@@ -1299,11 +1322,13 @@ this.dragToPinPromoCard, ]; let shouldPin = @@ -141,7 +141,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f isTab(draggedTab) && draggedTab.pinned && this.arrowScrollbox.contains(event.target); -@@ -1309,6 +1334,7 @@ +@@ -1321,6 +1346,7 @@ (oldTranslateY && oldTranslateY != newTranslateY); } else if (this.verticalMode) { shouldTranslate &&= oldTranslateY && oldTranslateY != newTranslateY; @@ -149,7 +149,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f } else { shouldTranslate &&= oldTranslateX && oldTranslateX != newTranslateX; } -@@ -1503,6 +1529,7 @@ +@@ -1515,6 +1541,7 @@ let nextItem = this.ariaFocusableItems[newIndex]; let tabGroup = isTab(nextItem) && nextItem.group; @@ -157,7 +157,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f gBrowser.loadTabs(urls, { inBackground, replace, -@@ -1541,6 +1568,17 @@ +@@ -1553,6 +1580,17 @@ } this.#resetTabsAfterDrop(draggedTab.ownerDocument); @@ -175,7 +175,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f if ( dt.mozUserCancelled || dt.dropEffect != "none" || -@@ -1707,7 +1745,6 @@ +@@ -1719,7 +1757,6 @@ this.toggleAttribute("overflow", true); this._updateCloseButtons(); @@ -183,7 +183,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f document .getElementById("tab-preview-panel") -@@ -1765,7 +1802,7 @@ +@@ -1777,7 +1814,7 @@ } get newTabButton() { @@ -192,7 +192,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f } get verticalMode() { -@@ -1781,6 +1818,7 @@ +@@ -1793,6 +1830,7 @@ } get overflowing() { @@ -200,28 +200,25 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f return this.hasAttribute("overflow"); } -@@ -1789,31 +1827,51 @@ - if (this.#allTabs) { - return this.#allTabs; +@@ -1806,29 +1844,54 @@ + if (pinnedChildren?.at(-1)?.id == "pinned-tabs-container-periphery") { + pinnedChildren.pop(); } -- // Remove temporary periphery element added at drag start. -- let pinnedChildren = Array.from(this.pinnedTabsContainer.children); -- if (pinnedChildren?.at(-1)?.id == "pinned-tabs-container-periphery") { -- pinnedChildren.pop(); -- } - let unpinnedChildren = Array.from(this.arrowScrollbox.children); -- // remove arrowScrollbox periphery element. -- unpinnedChildren.pop(); -- -+ let children = gZenWorkspaces.tabboxChildren; -+ children.pop(); - // explode tab groups ++ let unpinnedChildren = gZenWorkspaces.tabboxChildren; + // remove arrowScrollbox periphery element. + unpinnedChildren.pop(); + + // explode tab groups and split view wrappers // Iterate backwards over the array to preserve indices while we modify // things in place - for (let i = unpinnedChildren.length - 1; i >= 0; i--) { -- if (unpinnedChildren[i].tagName == "tab-group") { +- if ( +- unpinnedChildren[i].tagName == "tab-group" || +- unpinnedChildren[i].tagName == "tab-split-view-wrapper" +- ) { - unpinnedChildren.splice(i, 1, ...unpinnedChildren[i].tabs); -+ const pinnedTabs = [...gZenWorkspaces.getCurrentEssentialsContainer().children, ...this.pinnedTabsContainer.children]; ++ const pinnedTabs = [...gZenWorkspaces.getCurrentEssentialsContainer().children, ...pinnedChildren]; + const expandTabs = (tabs) => { + for (let i = tabs.length - 1; i >= 0; i--) { + const tab = tabs[i]; @@ -231,15 +228,13 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f + // add the tabs in the group to the list + tabs.splice(i, 0, ...tab.tabs); + } - } - } -- -- this.#allTabs = [...pinnedChildren, ...unpinnedChildren]; ++ } ++ }; + expandTabs(pinnedTabs); -+ expandTabs(children); ++ expandTabs(unpinnedChildren); + const allTabs = [ + ...pinnedTabs, -+ ...children, ++ ...unpinnedChildren, + ]; + const lastPinnedTabIdx = pinnedTabs.length - 1; + let i = 0; @@ -254,21 +249,23 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f + // remove the separator from the list + allTabs.splice(i, 1); + i--; -+ } + } + i++; -+ } + } +- +- this.#allTabs = [...pinnedChildren, ...unpinnedChildren]; + this.#allTabs = allTabs; return this.#allTabs; } get allGroups() { -- let children = Array.from(this.arrowScrollbox.children); + let children = Array.from(this.arrowScrollbox.children); - return children.filter(node => node.tagName == "tab-group"); + return gZenWorkspaces.allTabGroups; } /** -@@ -1880,29 +1938,23 @@ +@@ -1895,29 +1958,23 @@ let elementIndex = 0; @@ -307,7 +304,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f } } -@@ -1914,6 +1966,7 @@ +@@ -1929,6 +1986,7 @@ _invalidateCachedTabs() { this.#allTabs = null; this._invalidateCachedVisibleTabs(); @@ -315,7 +312,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f } _invalidateCachedVisibleTabs() { -@@ -1929,8 +1982,8 @@ +@@ -1944,8 +2002,8 @@ #isContainerVerticalPinnedGrid(tab) { return ( this.verticalMode && @@ -326,7 +323,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f !this.expandOnHover ); } -@@ -1946,7 +1999,7 @@ +@@ -1961,7 +2019,7 @@ if (node == null) { // We have a container for non-tab elements at the end of the scrollbox. @@ -335,7 +332,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f } node.before(tab); -@@ -2041,7 +2094,7 @@ +@@ -2056,7 +2114,7 @@ // There are separate "new tab" buttons for horizontal tabs toolbar, vertical tabs and // for when the tab strip is overflowed (which is shared by vertical and horizontal tabs); // Attach the long click popup to all of them. @@ -344,7 +341,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f const newTab2 = this.newTabButton; const newTabVertical = document.getElementById( "vertical-tabs-newtab-button" -@@ -2139,8 +2192,10 @@ +@@ -2156,8 +2214,10 @@ */ _handleTabSelect(aInstant) { let selectedTab = this.selectedItem; @@ -355,7 +352,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f selectedTab._notselectedsinceload = false; } -@@ -2149,7 +2204,7 @@ +@@ -2166,7 +2226,7 @@ * @param {boolean} [shouldScrollInstantly=false] */ #ensureTabIsVisible(tab, shouldScrollInstantly = false) { @@ -364,7 +361,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f if (arrowScrollbox?.overflowing) { arrowScrollbox.ensureElementIsVisible(tab, shouldScrollInstantly); } -@@ -2288,6 +2343,16 @@ +@@ -2305,6 +2365,16 @@ when the tab is first selected to be dragged. */ #updateTabStylesOnDrag(tab) { @@ -381,7 +378,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f let isPinned = tab.pinned; let numPinned = gBrowser.pinnedTabCount; let allTabs = this.ariaFocusableItems; -@@ -2540,7 +2605,7 @@ +@@ -2578,7 +2648,7 @@ return; } @@ -390,7 +387,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f let directionX = screenX > dragData.animLastScreenX; let directionY = screenY > dragData.animLastScreenY; -@@ -2549,6 +2614,8 @@ +@@ -2587,6 +2657,8 @@ let { width: tabWidth, height: tabHeight } = draggedTab.getBoundingClientRect(); @@ -399,7 +396,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f let shiftSizeX = tabWidth * movingTabs.length; let shiftSizeY = tabHeight; dragData.tabWidth = tabWidth; -@@ -2585,8 +2652,8 @@ +@@ -2623,8 +2695,8 @@ let lastBoundX = lastTabInRow.screenX + lastTabInRow.getBoundingClientRect().width - @@ -410,7 +407,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f translateX = Math.min(Math.max(translateX, firstBoundX), lastBoundX); translateY = Math.min(Math.max(translateY, firstBoundY), lastBoundY); -@@ -2744,13 +2811,18 @@ +@@ -2782,13 +2854,18 @@ this.#clearDragOverGroupingTimer(); this.#clearPinnedDropIndicatorTimer(); @@ -433,7 +430,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f if (this.#rtlMode) { tabs.reverse(); -@@ -2761,7 +2833,7 @@ +@@ -2799,7 +2876,7 @@ let screenAxis = this.verticalMode ? "screenY" : "screenX"; let size = this.verticalMode ? "height" : "width"; let translateAxis = this.verticalMode ? "translateY" : "translateX"; @@ -442,7 +439,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f let tabSize = this.verticalMode ? tabHeight : tabWidth; let translateX = event.screenX - dragData.screenX; let translateY = event.screenY - dragData.screenY; -@@ -2777,6 +2849,12 @@ +@@ -2815,6 +2892,12 @@ ); let lastMovingTab = movingTabs.at(-1); let firstMovingTab = movingTabs[0]; @@ -455,7 +452,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f let endEdge = ele => ele[screenAxis] + bounds(ele)[size]; let lastMovingTabScreen = endEdge(lastMovingTab); let firstMovingTabScreen = firstMovingTab[screenAxis]; -@@ -2791,6 +2869,11 @@ +@@ -2829,6 +2912,11 @@ let endBound = this.#rtlMode ? endEdge(this) - lastMovingTabScreen : periphery[screenAxis] - 1 - lastMovingTabScreen; @@ -467,7 +464,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f translate = Math.min(Math.max(translate, startBound), endBound); // Center the tab under the cursor if the tab is not under the cursor while dragging -@@ -2980,6 +3063,8 @@ +@@ -3018,6 +3106,8 @@ }; let dropElement = getOverlappedElement(); @@ -476,7 +473,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f let newDropElementIndex; if (dropElement) { -@@ -3061,7 +3146,7 @@ +@@ -3099,7 +3189,7 @@ ? Services.prefs.getIntPref( "browser.tabs.dragDrop.moveOverThresholdPercent" ) / 100 @@ -485,7 +482,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f moveOverThreshold = Math.min(1, Math.max(0, moveOverThreshold)); let shouldMoveOver = overlapPercent > moveOverThreshold; if (logicalForward && shouldMoveOver) { -@@ -3094,6 +3179,7 @@ +@@ -3132,6 +3222,7 @@ // If dragging a group over another group, don't make it look like it is // possible to drop the dragged group inside the other group. if ( @@ -493,7 +490,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f isTabGroupLabel(draggedTab) && dropElement?.group && (!dropElement.group.collapsed || -@@ -3120,20 +3206,13 @@ +@@ -3158,20 +3249,13 @@ let isOutOfBounds = isPinned ? dropElement.elementIndex >= numPinned : dropElement.elementIndex < numPinned; @@ -518,7 +515,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f let groupingDelay = Services.prefs.getIntPref( "browser.tabs.dragDrop.createGroup.delayMS" ); -@@ -3141,6 +3220,7 @@ +@@ -3179,6 +3263,7 @@ // When dragging tab(s) over an ungrouped tab, signal to the user // that dropping the tab(s) will create a new tab group. let shouldCreateGroupOnDrop = @@ -526,7 +523,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f !movingTabsSet.has(dropElement) && isTab(dropElement) && !dropElement?.group && -@@ -3149,6 +3229,7 @@ +@@ -3187,6 +3272,7 @@ // When dragging tab(s) over a collapsed tab group label, signal to the // user that dropping the tab(s) will add them to the group. let shouldDropIntoCollapsedTabGroup = @@ -534,7 +531,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f isTabGroupLabel(dropElement) && dropElement.group.collapsed && overlapPercent > dragOverGroupingThreshold; -@@ -3193,19 +3274,14 @@ +@@ -3231,19 +3317,14 @@ dropElement = dropElementGroup; colorCode = undefined; } else if (isTabGroupLabel(dropElement)) { @@ -562,7 +559,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f } this.#setDragOverGroupColor(colorCode); this.toggleAttribute("movingtab-addToGroup", colorCode); -@@ -3224,11 +3300,11 @@ +@@ -3262,11 +3343,11 @@ dragData.dropElement = dropElement; dragData.dropBefore = dropBefore; dragData.animDropElementIndex = newDropElementIndex; @@ -576,7 +573,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f continue; } -@@ -3350,12 +3426,14 @@ +@@ -3388,12 +3469,14 @@ element?.removeAttribute("dragover-groupTarget"); } @@ -593,7 +590,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f for (let item of this.ariaFocusableItems) { this.#resetGroupTarget(item); -@@ -3402,16 +3480,15 @@ +@@ -3440,7 +3523,7 @@ tab.style.left = ""; tab.style.top = ""; tab.style.maxWidth = ""; @@ -602,17 +599,16 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f } for (let label of draggedTabDocument.getElementsByClassName( "tab-group-label-container" - )) { - label.style.width = ""; -- label.style.height = ""; +@@ -3450,7 +3533,7 @@ label.style.left = ""; label.style.top = ""; + label.style.maxWidth = ""; - label.removeAttribute("dragtarget"); + label.removeAttribute("zen-dragtarget"); } let periphery = draggedTabDocument.getElementById( "tabbrowser-arrowscrollbox-periphery" -@@ -3483,7 +3560,7 @@ +@@ -3522,7 +3605,7 @@ let postTransitionCleanup = () => { movingTab._moveTogetherSelectedTabsData.animate = false; }; @@ -621,7 +617,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f postTransitionCleanup(); } else { let onTransitionEnd = transitionendEvent => { -@@ -3647,7 +3724,7 @@ +@@ -3686,7 +3769,7 @@ } _notifyBackgroundTab(aTab) { @@ -630,7 +626,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f return; } -@@ -3756,7 +3833,10 @@ +@@ -3795,7 +3878,10 @@ #getDragTarget(event, { ignoreSides = false } = {}) { let { target } = event; while (target) { @@ -642,7 +638,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f break; } target = target.parentNode; -@@ -3773,6 +3853,9 @@ +@@ -3812,6 +3898,9 @@ return null; } } diff --git a/src/browser/components/urlbar/UrlbarController-sys-mjs.patch b/src/browser/components/urlbar/UrlbarController-sys-mjs.patch index 3ebb104ae..c12b327db 100644 --- a/src/browser/components/urlbar/UrlbarController-sys-mjs.patch +++ b/src/browser/components/urlbar/UrlbarController-sys-mjs.patch @@ -1,8 +1,8 @@ diff --git a/browser/components/urlbar/UrlbarController.sys.mjs b/browser/components/urlbar/UrlbarController.sys.mjs -index 36e3ab4a5a153230bb488b66dda7e3e7c763ca23..cc4ea61914a316451fa54b01a5c8c6a305e4038a 100644 +index a1faf7e4278c66865f267283515f22052769928d..d76d19da5a3d4b9739faf3a673bb3ad693765ada 100644 --- a/browser/components/urlbar/UrlbarController.sys.mjs +++ b/browser/components/urlbar/UrlbarController.sys.mjs -@@ -434,6 +434,8 @@ export class UrlbarController { +@@ -441,6 +441,8 @@ export class UrlbarController { }); } event.preventDefault(); diff --git a/src/browser/components/urlbar/UrlbarInput-sys-mjs.patch b/src/browser/components/urlbar/UrlbarInput-sys-mjs.patch index 59089ed3a..8793bce8c 100644 --- a/src/browser/components/urlbar/UrlbarInput-sys-mjs.patch +++ b/src/browser/components/urlbar/UrlbarInput-sys-mjs.patch @@ -1,8 +1,8 @@ diff --git a/browser/components/urlbar/UrlbarInput.sys.mjs b/browser/components/urlbar/UrlbarInput.sys.mjs -index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..b63bf54956a42c63d5cadc9360545e235161f625 100644 +index afc7a6c6ddbf4cf5a5b27c0bd60577b833c63093..3aafb612152af88d570c7d7046ca3bd0ce222c46 100644 --- a/browser/components/urlbar/UrlbarInput.sys.mjs +++ b/browser/components/urlbar/UrlbarInput.sys.mjs -@@ -74,6 +74,13 @@ ChromeUtils.defineLazyGetter(lazy, "logger", () => +@@ -76,6 +76,13 @@ ChromeUtils.defineLazyGetter(lazy, "logger", () => lazy.UrlbarUtils.getLogger({ prefix: "Input" }) ); @@ -16,7 +16,7 @@ index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..b63bf54956a42c63d5cadc9360545e23 const DEFAULT_FORM_HISTORY_NAME = "searchbar-history"; const UNLIMITED_MAX_RESULTS = 99; -@@ -355,7 +362,16 @@ export class UrlbarInput { +@@ -437,7 +444,16 @@ export class UrlbarInput { // See _on_select(). HTMLInputElement.select() dispatches a "select" // event but does not set the primary selection. this._suppressPrimaryAdjustment = true; @@ -33,7 +33,7 @@ index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..b63bf54956a42c63d5cadc9360545e23 this._suppressPrimaryAdjustment = false; } -@@ -431,6 +447,10 @@ export class UrlbarInput { +@@ -513,6 +529,10 @@ export class UrlbarInput { hideSearchTerms = false, isSameDocument = false ) { @@ -41,10 +41,10 @@ index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..b63bf54956a42c63d5cadc9360545e23 + return; + } + - // We only need to update the searchModeUI on tab switch conditionally - // as we only persist searchMode with ScotchBonnet enabled. - if ( -@@ -703,8 +723,16 @@ export class UrlbarInput { + if (!this.isAddressbar) { + throw new Error( + "Cannot set URI for UrlbarInput that is not an address bar" +@@ -790,8 +810,16 @@ export class UrlbarInput { return; } } @@ -62,7 +62,7 @@ index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..b63bf54956a42c63d5cadc9360545e23 } /** -@@ -1116,7 +1144,11 @@ export class UrlbarInput { +@@ -1207,7 +1235,11 @@ export class UrlbarInput { } if (!this.#providesSearchMode(result)) { @@ -75,7 +75,7 @@ index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..b63bf54956a42c63d5cadc9360545e23 } if (isCanonized) { -@@ -2191,6 +2223,13 @@ export class UrlbarInput { +@@ -2298,6 +2330,13 @@ export class UrlbarInput { await this.#updateLayoutBreakoutDimensions(); } @@ -89,7 +89,7 @@ index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..b63bf54956a42c63d5cadc9360545e23 startLayoutExtend() { if (!this.#allowBreakout || this.hasAttribute("breakout-extend")) { // Do not expand if the Urlbar does not support being expanded or it is -@@ -2205,6 +2244,12 @@ export class UrlbarInput { +@@ -2312,6 +2351,12 @@ export class UrlbarInput { this.setAttribute("breakout-extend", "true"); @@ -102,7 +102,7 @@ index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..b63bf54956a42c63d5cadc9360545e23 // Enable the animation only after the first extend call to ensure it // doesn't run when opening a new window. if (!this.hasAttribute("breakout-extend-animate")) { -@@ -2224,6 +2269,24 @@ export class UrlbarInput { +@@ -2331,6 +2376,24 @@ export class UrlbarInput { return; } @@ -127,7 +127,7 @@ index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..b63bf54956a42c63d5cadc9360545e23 this.removeAttribute("breakout-extend"); this.#updateTextboxPosition(); } -@@ -2553,7 +2616,7 @@ export class UrlbarInput { +@@ -2660,7 +2723,7 @@ export class UrlbarInput { this.textbox.parentNode.style.setProperty( "--urlbar-container-height", @@ -136,7 +136,7 @@ index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..b63bf54956a42c63d5cadc9360545e23 ); this.textbox.style.setProperty( "--urlbar-height", -@@ -2986,6 +3049,7 @@ export class UrlbarInput { +@@ -3093,6 +3156,7 @@ export class UrlbarInput { } _toggleActionOverride(event) { @@ -144,24 +144,24 @@ index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..b63bf54956a42c63d5cadc9360545e23 if ( event.keyCode == KeyEvent.DOM_VK_SHIFT || event.keyCode == KeyEvent.DOM_VK_ALT || -@@ -3087,7 +3151,7 @@ export class UrlbarInput { - */ - _trimValue(val) { +@@ -3197,7 +3261,7 @@ export class UrlbarInput { + return val; + } let trimmedValue = lazy.UrlbarPrefs.get("trimURLs") - ? lazy.BrowserUIUtils.trimURL(val) + ? this._zenTrimURL(val) : val; // Only trim value if the directionality doesn't change to RTL and we're not // showing a strikeout https protocol. -@@ -3303,6 +3367,7 @@ export class UrlbarInput { - resultDetails = null, - browser = this.window.gBrowser.selectedBrowser - ) { +@@ -3407,6 +3471,7 @@ export class UrlbarInput { + ); + } + + openUILinkWhere = this.window.gZenUIManager.getOpenUILinkWhere(url, browser, openUILinkWhere); // No point in setting these because we'll handleRevert() a few rows below. if (openUILinkWhere == "current") { // Make sure URL is formatted properly (don't show punycode). -@@ -3455,6 +3520,10 @@ export class UrlbarInput { +@@ -3608,6 +3673,10 @@ export class UrlbarInput { } reuseEmpty = true; } @@ -172,7 +172,7 @@ index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..b63bf54956a42c63d5cadc9360545e23 if ( where == "tab" && reuseEmpty && -@@ -3462,6 +3531,9 @@ export class UrlbarInput { +@@ -3615,6 +3684,9 @@ export class UrlbarInput { ) { where = "current"; } @@ -182,7 +182,7 @@ index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..b63bf54956a42c63d5cadc9360545e23 return where; } -@@ -3719,6 +3791,7 @@ export class UrlbarInput { +@@ -3872,6 +3944,7 @@ export class UrlbarInput { this.setResultForCurrentValue(null); this.handleCommand(); this.controller.clearLastQueryContextCache(); @@ -190,7 +190,7 @@ index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..b63bf54956a42c63d5cadc9360545e23 this._suppressStartQuery = false; }); -@@ -3726,7 +3799,6 @@ export class UrlbarInput { +@@ -3879,7 +3952,6 @@ export class UrlbarInput { contextMenu.addEventListener("popupshowing", () => { // Close the results pane when the input field contextual menu is open, // because paste and go doesn't want a result selection. @@ -198,7 +198,7 @@ index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..b63bf54956a42c63d5cadc9360545e23 let controller = this.document.commandDispatcher.getControllerForCommand("cmd_paste"); -@@ -3836,7 +3908,11 @@ export class UrlbarInput { +@@ -3991,7 +4063,11 @@ export class UrlbarInput { if (!engineName && !source && !this.hasAttribute("searchmode")) { return; } @@ -208,10 +208,10 @@ index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..b63bf54956a42c63d5cadc9360545e23 + detail: { searchMode }, + }) + ); - this._searchModeIndicatorTitle.textContent = ""; - this._searchModeIndicatorTitle.removeAttribute("data-l10n-id"); - -@@ -4130,6 +4206,7 @@ export class UrlbarInput { + if (this._searchModeIndicatorTitle) { + this._searchModeIndicatorTitle.textContent = ""; + this._searchModeIndicatorTitle.removeAttribute("data-l10n-id"); +@@ -4302,6 +4378,7 @@ export class UrlbarInput { this.document.l10n.setAttributes( this.inputField, @@ -219,7 +219,7 @@ index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..b63bf54956a42c63d5cadc9360545e23 l10nId, l10nId == "urlbar-placeholder-with-name" ? { name } : undefined ); -@@ -4241,6 +4318,11 @@ export class UrlbarInput { +@@ -4413,6 +4490,11 @@ export class UrlbarInput { } _on_click(event) { @@ -231,7 +231,7 @@ index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..b63bf54956a42c63d5cadc9360545e23 if ( event.target == this.inputField || event.target == this._inputContainer -@@ -4311,7 +4393,7 @@ export class UrlbarInput { +@@ -4485,7 +4567,7 @@ export class UrlbarInput { } } @@ -240,7 +240,7 @@ index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..b63bf54956a42c63d5cadc9360545e23 this.view.autoOpen({ event }); } else { if (this._untrimOnFocusAfterKeydown) { -@@ -4351,9 +4433,16 @@ export class UrlbarInput { +@@ -4525,9 +4607,16 @@ export class UrlbarInput { } _on_mousedown(event) { @@ -258,7 +258,7 @@ index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..b63bf54956a42c63d5cadc9360545e23 if ( event.target != this.inputField && -@@ -4364,6 +4453,10 @@ export class UrlbarInput { +@@ -4538,6 +4627,10 @@ export class UrlbarInput { this.focusedViaMousedown = !this.focused; this._preventClickSelectsAll = this.focused; @@ -269,7 +269,7 @@ index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..b63bf54956a42c63d5cadc9360545e23 // Keep the focus status, since the attribute may be changed // upon calling this.focus(). -@@ -4399,7 +4492,7 @@ export class UrlbarInput { +@@ -4573,7 +4666,7 @@ export class UrlbarInput { } // Don't close the view when clicking on a tab; we may want to keep the // view open on tab switch, and the TabSelect event arrived earlier. @@ -278,7 +278,7 @@ index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..b63bf54956a42c63d5cadc9360545e23 break; } -@@ -4716,7 +4809,7 @@ export class UrlbarInput { +@@ -4890,7 +4983,7 @@ export class UrlbarInput { // When we are in actions search mode we can show more results so // increase the limit. let maxResults = diff --git a/src/browser/components/urlbar/UrlbarMuxerStandard-sys-mjs.patch b/src/browser/components/urlbar/UrlbarMuxerStandard-sys-mjs.patch index f1c290366..c737569ca 100644 --- a/src/browser/components/urlbar/UrlbarMuxerStandard-sys-mjs.patch +++ b/src/browser/components/urlbar/UrlbarMuxerStandard-sys-mjs.patch @@ -1,16 +1,16 @@ diff --git a/browser/components/urlbar/UrlbarMuxerStandard.sys.mjs b/browser/components/urlbar/UrlbarMuxerStandard.sys.mjs -index cdc476a3eb2ee2cb6193d215513b65ed375f6153..bc66d9651e521bda75a3bb9e7f1e4b3bb325be90 100644 +index 20be2dbbb8471aeb43a9bf77888c9858a0b61186..a9f974a78c5676d1340a3543852e4126c1d32b04 100644 --- a/browser/components/urlbar/UrlbarMuxerStandard.sys.mjs +++ b/browser/components/urlbar/UrlbarMuxerStandard.sys.mjs -@@ -855,6 +855,7 @@ class MuxerUnifiedComplete extends UrlbarMuxer { +@@ -852,6 +852,7 @@ class MuxerUnifiedComplete extends UrlbarMuxer { } - if (result.providerName == lazy.UrlbarProviderTabToSearch.name) { + if (result.providerName == "UrlbarProviderTabToSearch") { + return false; // Discard the result if a tab-to-search result was added already. if (!state.canAddTabToSearch) { return false; -@@ -1501,7 +1502,9 @@ class MuxerUnifiedComplete extends UrlbarMuxer { +@@ -1498,7 +1499,9 @@ class MuxerUnifiedComplete extends UrlbarMuxer { usedLimits.maxResultCount++; } diff --git a/src/browser/components/urlbar/UrlbarPrefs-sys-mjs.patch b/src/browser/components/urlbar/UrlbarPrefs-sys-mjs.patch index 2b93e360f..539445412 100644 --- a/src/browser/components/urlbar/UrlbarPrefs-sys-mjs.patch +++ b/src/browser/components/urlbar/UrlbarPrefs-sys-mjs.patch @@ -1,8 +1,8 @@ diff --git a/browser/components/urlbar/UrlbarPrefs.sys.mjs b/browser/components/urlbar/UrlbarPrefs.sys.mjs -index 3c179db3b310c43f8c6c06b1ecbcf5ed59feefe6..d9d2ce116ebcee8d403e165066c3a569bb952cd2 100644 +index 46ad55519aecd6c14034a9faa91c7ad8e5c1c422..e8d9c06499a2b273483edd21faf902c936462b59 100644 --- a/browser/components/urlbar/UrlbarPrefs.sys.mjs +++ b/browser/components/urlbar/UrlbarPrefs.sys.mjs -@@ -719,6 +719,7 @@ function makeResultGroups({ showSearchSuggestionsFirst }) { +@@ -731,6 +731,7 @@ function makeResultGroups({ showSearchSuggestionsFirst }) { */ let rootGroup = { children: [ diff --git a/src/browser/components/urlbar/UrlbarProviderPlaces-sys-mjs.patch b/src/browser/components/urlbar/UrlbarProviderPlaces-sys-mjs.patch index df8854d91..7862a4a27 100644 --- a/src/browser/components/urlbar/UrlbarProviderPlaces-sys-mjs.patch +++ b/src/browser/components/urlbar/UrlbarProviderPlaces-sys-mjs.patch @@ -1,13 +1,13 @@ diff --git a/browser/components/urlbar/UrlbarProviderPlaces.sys.mjs b/browser/components/urlbar/UrlbarProviderPlaces.sys.mjs -index ad971f090bdaba2865cf1fac2840b1f553d2630c..a9e676e43d35b617eebd5a67c8653397b7c0c6bf 100644 +index b2c3bfa6fbe83fceb019196c210baaa7b4881372..02f2c8be89f163e16c5fd29f9b7e145e16ea53ed 100644 --- a/browser/components/urlbar/UrlbarProviderPlaces.sys.mjs +++ b/browser/components/urlbar/UrlbarProviderPlaces.sys.mjs -@@ -40,11 +40,13 @@ function defaultQuery(conditions = "") { +@@ -44,11 +44,13 @@ function defaultQuery(conditions = "") { let query = ` SELECT h.url, h.title, ${SQL_BOOKMARK_TAGS_FRAGMENT}, h.id, t.open_count, ${lazy.PAGES_FRECENCY_FIELD} AS frecency, t.userContextId, -- h.last_visit_date, t.groupId -+ h.last_visit_date, t.groupId, zp.url AS pinned_url, zp.title AS pinned_title +- h.last_visit_date, NULLIF(t.groupId, '') groupId ++ h.last_visit_date, NULLIF(t.groupId, '') groupId, zp.url AS pinned_url, zp.title AS pinned_title FROM moz_places h LEFT JOIN moz_openpages_temp t ON t.url = h.url @@ -17,7 +17,7 @@ index ad971f090bdaba2865cf1fac2840b1f553d2630c..a9e676e43d35b617eebd5a67c8653397 WHERE ( (:switchTabsEnabled AND t.open_count > 0) OR ${lazy.PAGES_FRECENCY_FIELD} <> 0 -@@ -58,7 +60,7 @@ function defaultQuery(conditions = "") { +@@ -62,7 +64,7 @@ function defaultQuery(conditions = "") { :matchBehavior, :searchBehavior, NULL) ELSE AUTOCOMPLETE_MATCH(:searchString, h.url, @@ -26,7 +26,7 @@ index ad971f090bdaba2865cf1fac2840b1f553d2630c..a9e676e43d35b617eebd5a67c8653397 h.visit_count, h.typed, 0, t.open_count, :matchBehavior, :searchBehavior, NULL) -@@ -1116,11 +1118,13 @@ Search.prototype = { +@@ -1120,11 +1122,13 @@ Search.prototype = { ? lazy.PlacesUtils.toDate(lastVisitPRTime).getTime() : undefined; let tabGroup = row.getResultByName("groupId"); diff --git a/src/browser/components/urlbar/UrlbarProvidersManager-sys-mjs.patch b/src/browser/components/urlbar/UrlbarProvidersManager-sys-mjs.patch index 45f6b46e9..b06de00cf 100644 --- a/src/browser/components/urlbar/UrlbarProvidersManager-sys-mjs.patch +++ b/src/browser/components/urlbar/UrlbarProvidersManager-sys-mjs.patch @@ -1,8 +1,8 @@ diff --git a/browser/components/urlbar/UrlbarProvidersManager.sys.mjs b/browser/components/urlbar/UrlbarProvidersManager.sys.mjs -index 555273f6ea1efd77aa3062b9910bbfe28568775d..5c4a46c926913ab592f5e12908b8817410abe6b6 100644 +index ece407214669009e263b507b5236ab28da33efe9..8f22426295e2b001438918f44d2c22ed7a697c2f 100644 --- a/browser/components/urlbar/UrlbarProvidersManager.sys.mjs +++ b/browser/components/urlbar/UrlbarProvidersManager.sys.mjs -@@ -716,6 +716,7 @@ export class Query { +@@ -845,6 +845,7 @@ export class Query { if ( result.heuristic && this.context.searchMode && diff --git a/src/browser/components/urlbar/UrlbarUtils-sys-mjs.patch b/src/browser/components/urlbar/UrlbarUtils-sys-mjs.patch index b477dc892..12bdd6dba 100644 --- a/src/browser/components/urlbar/UrlbarUtils-sys-mjs.patch +++ b/src/browser/components/urlbar/UrlbarUtils-sys-mjs.patch @@ -1,8 +1,8 @@ diff --git a/browser/components/urlbar/UrlbarUtils.sys.mjs b/browser/components/urlbar/UrlbarUtils.sys.mjs -index 0bc15c02f56dd8f46a21fed02b4e21a741f27f41..40da868f68f21d8411107fb8a95e2d0b74337b51 100644 +index f38e860e46fa979b3e0c66ecd3eb88a64df60fc1..d130bbc7488ff3de926823974a1df13dc8e61fbc 100644 --- a/browser/components/urlbar/UrlbarUtils.sys.mjs +++ b/browser/components/urlbar/UrlbarUtils.sys.mjs -@@ -75,6 +75,7 @@ export var UrlbarUtils = { +@@ -74,6 +74,7 @@ export var UrlbarUtils = { RESTRICT_SEARCH_KEYWORD: "restrictSearchKeyword", SUGGESTED_INDEX: "suggestedIndex", TAIL_SUGGESTION: "tailSuggestion", @@ -10,7 +10,7 @@ index 0bc15c02f56dd8f46a21fed02b4e21a741f27f41..40da868f68f21d8411107fb8a95e2d0b }), // Defines provider types. -@@ -134,6 +135,7 @@ export var UrlbarUtils = { +@@ -133,6 +134,7 @@ export var UrlbarUtils = { OTHER_NETWORK: 6, ADDON: 7, ACTIONS: 8, @@ -18,12 +18,12 @@ index 0bc15c02f56dd8f46a21fed02b4e21a741f27f41..40da868f68f21d8411107fb8a95e2d0b }), // Per-result exposure telemetry. -@@ -553,6 +555,8 @@ export var UrlbarUtils = { - return this.RESULT_GROUP.HEURISTIC_SEARCH_TIP; - case "HistoryUrlHeuristic": +@@ -544,6 +546,8 @@ export var UrlbarUtils = { + return this.RESULT_GROUP.HEURISTIC_FALLBACK; + case "UrlbarProviderHistoryUrlHeuristic": return this.RESULT_GROUP.HEURISTIC_HISTORY_URL; + case "ZenUrlbarProviderGlobalActions": + return this.RESULT_GROUP.ZEN_ACTION; - default: - if (result.providerName.startsWith("TestProvider")) { - return this.RESULT_GROUP.HEURISTIC_TEST; + case "UrlbarProviderOmnibox": + return this.RESULT_GROUP.HEURISTIC_OMNIBOX; + case "UrlbarProviderRestrictKeywordsAutofill": diff --git a/src/browser/components/urlbar/UrlbarValueFormatter-sys-mjs.patch b/src/browser/components/urlbar/UrlbarValueFormatter-sys-mjs.patch index fe22eed31..81ea5fc30 100644 --- a/src/browser/components/urlbar/UrlbarValueFormatter-sys-mjs.patch +++ b/src/browser/components/urlbar/UrlbarValueFormatter-sys-mjs.patch @@ -1,5 +1,5 @@ diff --git a/browser/components/urlbar/UrlbarValueFormatter.sys.mjs b/browser/components/urlbar/UrlbarValueFormatter.sys.mjs -index dfa91b76ad3890ceadb1b1b5d7a63b7074fbb776..6369fa1cdb242de32338bbce6debcdab2a04ca02 100644 +index 50961e4beb75012ef0ed6f261a95854712cc69d7..93bcfca9270ff34dbe6386789fdae6066457438d 100644 --- a/browser/components/urlbar/UrlbarValueFormatter.sys.mjs +++ b/browser/components/urlbar/UrlbarValueFormatter.sys.mjs @@ -585,6 +585,7 @@ export class UrlbarValueFormatter { diff --git a/src/browser/components/urlbar/UrlbarView-sys-mjs.patch b/src/browser/components/urlbar/UrlbarView-sys-mjs.patch index 0e0812bd7..26c99b0e8 100644 --- a/src/browser/components/urlbar/UrlbarView-sys-mjs.patch +++ b/src/browser/components/urlbar/UrlbarView-sys-mjs.patch @@ -1,8 +1,8 @@ diff --git a/browser/components/urlbar/UrlbarView.sys.mjs b/browser/components/urlbar/UrlbarView.sys.mjs -index fdbab8806fd320f4aacec46a42c8ef953580d00c..031a615ad09274c578184b129434bbd93b49353d 100644 +index b3c7c8a995226e2cbe852d82515f9bc7077980e7..4c8611556f7f71e5f8860787ed1db9b50b9fa2e8 100644 --- a/browser/components/urlbar/UrlbarView.sys.mjs +++ b/browser/components/urlbar/UrlbarView.sys.mjs -@@ -613,7 +613,7 @@ export class UrlbarView { +@@ -620,7 +620,7 @@ export class UrlbarView { !this.input.value || this.input.getAttribute("pageproxystate") == "valid" ) { @@ -11,7 +11,7 @@ index fdbab8806fd320f4aacec46a42c8ef953580d00c..031a615ad09274c578184b129434bbd9 // Try to reuse the cached top-sites context. If it's not cached, then // there will be a gap of time between when the input is focused and // when the view opens that can be perceived as flicker. -@@ -2706,6 +2706,8 @@ export class UrlbarView { +@@ -2734,6 +2734,8 @@ export class UrlbarView { if (row?.hasAttribute("row-selectable")) { row?.toggleAttribute("selected", true); } @@ -20,12 +20,12 @@ index fdbab8806fd320f4aacec46a42c8ef953580d00c..031a615ad09274c578184b129434bbd9 if (element != row) { row?.toggleAttribute("descendant-selected", true); } -@@ -3189,7 +3191,7 @@ export class UrlbarView { +@@ -3215,7 +3217,7 @@ export class UrlbarView { } #enableOrDisableRowWrap() { - let wrap = getBoundsWithoutFlushing(this.input.textbox).width < 650; + let wrap = false; this.#rows.toggleAttribute("wrap", wrap); - this.oneOffSearchButtons.container.toggleAttribute("wrap", wrap); + this.oneOffSearchButtons?.container.toggleAttribute("wrap", wrap); } diff --git a/src/browser/extensions/newtab/lib/ActivityStream-sys-mjs.patch b/src/browser/extensions/newtab/lib/ActivityStream-sys-mjs.patch index 608533a1e..fb2d74187 100644 --- a/src/browser/extensions/newtab/lib/ActivityStream-sys-mjs.patch +++ b/src/browser/extensions/newtab/lib/ActivityStream-sys-mjs.patch @@ -1,8 +1,8 @@ diff --git a/browser/extensions/newtab/lib/ActivityStream.sys.mjs b/browser/extensions/newtab/lib/ActivityStream.sys.mjs -index 1a482b6de24468ccfec069586f374937d8ef68dd..8614beda3fdfc038092f31f11b2604d5cfb843a1 100644 +index 6207e6c8aa1e303ec151bc1e5c51c277ef776ee6..d3783a3c459c94880be1c95dc265a7d4887f67a1 100644 --- a/browser/extensions/newtab/lib/ActivityStream.sys.mjs +++ b/browser/extensions/newtab/lib/ActivityStream.sys.mjs -@@ -248,7 +248,7 @@ export const PREFS_CONFIG = new Map([ +@@ -223,7 +223,7 @@ export const PREFS_CONFIG = new Map([ "showSponsoredTopSites", { title: "Show sponsored top sites", diff --git a/src/browser/installer/package-manifest-in.patch b/src/browser/installer/package-manifest-in.patch index 7cc6a9526..2f18925ed 100644 --- a/src/browser/installer/package-manifest-in.patch +++ b/src/browser/installer/package-manifest-in.patch @@ -1,8 +1,8 @@ diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in -index 70f268914f1078ef45e86d295f4bb2ce179a05e0..73d8ffc4457468e8a57ad2c29e4d49f45436bf00 100644 +index b884f0167e5de87a45cf523436ceaceb710d35ae..eedc80278a5c93f81ce90c0d6198924549c07fc3 100644 --- a/browser/installer/package-manifest.in +++ b/browser/installer/package-manifest.in -@@ -361,17 +361,17 @@ bin/libfreebl_64int_3.so +@@ -362,17 +362,17 @@ bin/libfreebl_64int_3.so ; [MaintenanceService] ; #ifdef MOZ_MAINTENANCE_SERVICE diff --git a/src/browser/themes/BuiltInThemeConfig-sys-mjs.patch b/src/browser/themes/BuiltInThemeConfig-sys-mjs.patch deleted file mode 100644 index ae66873e5..000000000 --- a/src/browser/themes/BuiltInThemeConfig-sys-mjs.patch +++ /dev/null @@ -1,16 +0,0 @@ -diff --git a/browser/themes/BuiltInThemeConfig.sys.mjs b/browser/themes/BuiltInThemeConfig.sys.mjs -index 28b254d5757caf35c4ba755ef4cfed44bab5af00..660f517e0e3342970c6e30837fcf4d0adf360777 100644 ---- a/browser/themes/BuiltInThemeConfig.sys.mjs -+++ b/browser/themes/BuiltInThemeConfig.sys.mjs -@@ -33,11 +33,4 @@ export const BuiltInThemeConfig = new Map([ - path: "resource://builtin-themes/dark/", - }, - ], -- [ -- "firefox-alpenglow@mozilla.org", -- { -- version: "1.5", -- path: "resource://builtin-themes/alpenglow/", -- }, -- ], - ]); diff --git a/src/browser/themes/linux/browser-css.patch b/src/browser/themes/linux/browser-css.patch index dfaee3e7d..81b190aaf 100644 --- a/src/browser/themes/linux/browser-css.patch +++ b/src/browser/themes/linux/browser-css.patch @@ -1,5 +1,5 @@ diff --git a/browser/themes/linux/browser.css b/browser/themes/linux/browser.css -index 9723a8199cc5b8d25bb92c46992792b8c94a3565..302f5b675abd1970e64f56a5a4592bb174f9a72a 100644 +index b0ec88f361399cea255ef8fb6c7f2b87779a8e04..c7ca01c2033f9a300caa1a1e3de9d5517d438796 100644 --- a/browser/themes/linux/browser.css +++ b/browser/themes/linux/browser.css @@ -43,7 +43,8 @@ diff --git a/src/browser/themes/osx/browser-css.patch b/src/browser/themes/osx/browser-css.patch index c48477643..cdaeb1877 100644 --- a/src/browser/themes/osx/browser-css.patch +++ b/src/browser/themes/osx/browser-css.patch @@ -1,5 +1,5 @@ diff --git a/browser/themes/osx/browser.css b/browser/themes/osx/browser.css -index c209151370225d8efade7c51aea30ce7365e5f4f..4dd5cf4a98ea010b2d347ac0ba7314ae81320e75 100644 +index b1062108c6f6174a680e9b235ee9cb2037f94924..31aac7bdee4ebb07e9de58e7c3e5e6833c94e968 100644 --- a/browser/themes/osx/browser.css +++ b/browser/themes/osx/browser.css @@ -38,7 +38,7 @@ diff --git a/src/browser/themes/shared/browser-shared-css.patch b/src/browser/themes/shared/browser-shared-css.patch index b76cd554b..009a642c9 100644 --- a/src/browser/themes/shared/browser-shared-css.patch +++ b/src/browser/themes/shared/browser-shared-css.patch @@ -1,8 +1,8 @@ diff --git a/browser/themes/shared/browser-shared.css b/browser/themes/shared/browser-shared.css -index c612e7d021122e3e4823994071cd613563d3e12e..682d7a47624460ce33e8fcb5ff9c995f3413bab2 100644 +index c77a0e6388c4061d9e6ee5f396a3e3af8867e4fe..d37e49538cd07716da5ebed823622fccde5dd69a 100644 --- a/browser/themes/shared/browser-shared.css +++ b/browser/themes/shared/browser-shared.css -@@ -99,7 +99,7 @@ body { +@@ -102,7 +102,7 @@ body { --toolbarbutton-border-radius: 4px; --identity-box-margin-inline: 4px; --urlbar-min-height: max(32px, 1.4em); @@ -11,7 +11,7 @@ index c612e7d021122e3e4823994071cd613563d3e12e..682d7a47624460ce33e8fcb5ff9c995f /* This should be used for icons and chiclets inside the input field. It makes the gap around them more uniform when they are close to the field edges */ -@@ -167,8 +167,6 @@ body { +@@ -170,8 +170,6 @@ body { */ &.fullscreen-with-menubar { z-index: var(--browser-area-z-index-toolbox-while-animating); diff --git a/src/browser/themes/shared/jar-inc-mn.patch b/src/browser/themes/shared/jar-inc-mn.patch index 09c2b92d2..003aa4104 100644 --- a/src/browser/themes/shared/jar-inc-mn.patch +++ b/src/browser/themes/shared/jar-inc-mn.patch @@ -1,11 +1,11 @@ diff --git a/browser/themes/shared/jar.inc.mn b/browser/themes/shared/jar.inc.mn -index bc47c162cd4792c7df17565014aac1c2258c6d40..21c0b7ddb04cbb828c758dad34885f91c1ddde6c 100644 +index 94036d036a64c8845c02d4ffbcf3f99b5d88576e..2ab3f060c9952f1b0c7bee3d5c3a1d7035e6736a 100644 --- a/browser/themes/shared/jar.inc.mn +++ b/browser/themes/shared/jar.inc.mn @@ -316,3 +316,5 @@ - skin/classic/browser/weather/night-mostly-cloudy-with-flurries.svg (../shared/weather/night-mostly-cloudy-with-flurries.svg) skin/classic/browser/illustrations/market-opt-in.svg (../shared/illustrations/market-opt-in.svg) + skin/classic/browser/illustrations/yelpRealtime-opt-in.svg (../shared/illustrations/yelpRealtime-opt-in.svg) + +#include zen-sources.inc.mn \ No newline at end of file diff --git a/src/browser/themes/shared/tabbrowser/content-area-css.patch b/src/browser/themes/shared/tabbrowser/content-area-css.patch index 9511724fd..dd1164699 100644 --- a/src/browser/themes/shared/tabbrowser/content-area-css.patch +++ b/src/browser/themes/shared/tabbrowser/content-area-css.patch @@ -1,5 +1,5 @@ diff --git a/browser/themes/shared/tabbrowser/content-area.css b/browser/themes/shared/tabbrowser/content-area.css -index 44f6c942f2e4b08f784b2ff96f785e9beed01ecd..834e174186972c3297a552bbd579f0ea1261c19e 100644 +index e06addf1602dc26ff4e75a8db6251231690f3f80..86e2cd0194bb37fa140a2f93eccfdd61419a9aec 100644 --- a/browser/themes/shared/tabbrowser/content-area.css +++ b/browser/themes/shared/tabbrowser/content-area.css @@ -276,7 +276,7 @@ diff --git a/src/browser/themes/shared/tabbrowser/tabs-css.patch b/src/browser/themes/shared/tabbrowser/tabs-css.patch index e00e45fc2..1e127b19f 100644 --- a/src/browser/themes/shared/tabbrowser/tabs-css.patch +++ b/src/browser/themes/shared/tabbrowser/tabs-css.patch @@ -1,5 +1,5 @@ diff --git a/browser/themes/shared/tabbrowser/tabs.css b/browser/themes/shared/tabbrowser/tabs.css -index 07574cdd974f63b90355f069f0fbc3fa6cd61b50..c650da2adf0d1a53b05a09d1b43fa5f52d78a307 100644 +index 8a7499426a718a56c74daea562a50de20db706e7..7ee8d7e0bd98733341e1da0d2ff965d85fc4c91a 100644 --- a/browser/themes/shared/tabbrowser/tabs.css +++ b/browser/themes/shared/tabbrowser/tabs.css @@ -21,7 +21,7 @@ @@ -102,7 +102,7 @@ index 07574cdd974f63b90355f069f0fbc3fa6cd61b50..c650da2adf0d1a53b05a09d1b43fa5f5 &:is([soundplaying], [muted], [activemedia-blocked]) { display: flex; } -@@ -1137,7 +1130,7 @@ tab-group { +@@ -1226,7 +1219,7 @@ tab-group { } #tabbrowser-tabs[orient="vertical"][expanded] { @@ -111,7 +111,7 @@ index 07574cdd974f63b90355f069f0fbc3fa6cd61b50..c650da2adf0d1a53b05a09d1b43fa5f5 &[movingtab][movingtab-addToGroup]:not([movingtab-group], [movingtab-ungroup]) .tabbrowser-tab:is(:active, [multiselected]) { margin-inline-start: var(--space-medium); } -@@ -1567,7 +1560,7 @@ tab-group { +@@ -1685,7 +1678,7 @@ tab-group { } } @@ -120,7 +120,7 @@ index 07574cdd974f63b90355f069f0fbc3fa6cd61b50..c650da2adf0d1a53b05a09d1b43fa5f5 #vertical-tabs-newtab-button { appearance: none; min-height: var(--tab-min-height); -@@ -1578,7 +1571,7 @@ tab-group { +@@ -1696,7 +1689,7 @@ tab-group { margin-inline: var(--tab-inner-inline-margin); #tabbrowser-tabs[orient="vertical"]:not([expanded]) & > .toolbarbutton-text { @@ -129,7 +129,7 @@ index 07574cdd974f63b90355f069f0fbc3fa6cd61b50..c650da2adf0d1a53b05a09d1b43fa5f5 } &:hover { -@@ -1602,7 +1595,7 @@ tab-group { +@@ -1720,7 +1713,7 @@ tab-group { * flex container. #tabs-newtab-button is a child of the arrowscrollbox where * we don't want a gap (between tabs), so we have to add some margin. */ @@ -138,7 +138,7 @@ index 07574cdd974f63b90355f069f0fbc3fa6cd61b50..c650da2adf0d1a53b05a09d1b43fa5f5 margin-block: var(--tab-block-margin); } -@@ -1793,7 +1786,6 @@ tab-group { +@@ -1913,7 +1906,6 @@ tab-group { &:not([expanded]) { .tabbrowser-tab[pinned] { @@ -146,7 +146,7 @@ index 07574cdd974f63b90355f069f0fbc3fa6cd61b50..c650da2adf0d1a53b05a09d1b43fa5f5 } .tab-background { -@@ -1833,8 +1825,8 @@ tab-group { +@@ -1953,8 +1945,8 @@ tab-group { display: block; position: absolute; inset: auto; @@ -157,7 +157,7 @@ index 07574cdd974f63b90355f069f0fbc3fa6cd61b50..c650da2adf0d1a53b05a09d1b43fa5f5 &:-moz-window-inactive { background-image: -@@ -1953,7 +1945,6 @@ toolbar:not(#TabsToolbar) #firefox-view-button { +@@ -2073,7 +2065,6 @@ toolbar:not(#TabsToolbar) #firefox-view-button { list-style-image: url(chrome://global/skin/icons/plus.svg); } diff --git a/src/browser/themes/shared/toolbarbuttons-css.patch b/src/browser/themes/shared/toolbarbuttons-css.patch index 12714ef02..f4dd140a8 100644 --- a/src/browser/themes/shared/toolbarbuttons-css.patch +++ b/src/browser/themes/shared/toolbarbuttons-css.patch @@ -1,8 +1,8 @@ diff --git a/browser/themes/shared/toolbarbuttons.css b/browser/themes/shared/toolbarbuttons.css -index e7b1c17391ffae02226015d0dd8bbe8eca29731f..938a8cb8c3d854a75fe300db2a7330d188c9ed6f 100644 +index e2b8a7cae70ed2bd3c80ee4214a09dbdb68a0d01..71320c7268d92aaa06bfa15c74bdbf02f1442745 100644 --- a/browser/themes/shared/toolbarbuttons.css +++ b/browser/themes/shared/toolbarbuttons.css -@@ -256,7 +256,7 @@ toolbar .toolbaritem-combined-buttons > separator { +@@ -279,7 +279,7 @@ toolbar .toolbaritem-combined-buttons { #nav-bar-overflow-button { list-style-image: url("chrome://global/skin/icons/chevron.svg"); @@ -11,7 +11,7 @@ index e7b1c17391ffae02226015d0dd8bbe8eca29731f..938a8cb8c3d854a75fe300db2a7330d1 display: none; } -@@ -466,7 +466,7 @@ toolbarbutton.bookmark-item:not(.subviewbutton) { +@@ -489,7 +489,7 @@ toolbarbutton.bookmark-item:not(.subviewbutton) { */ align-items: stretch; > .toolbarbutton-icon { diff --git a/src/browser/themes/shared/urlbar-searchbar-css.patch b/src/browser/themes/shared/urlbar-searchbar-css.patch index f0608a0f6..2d75c52f7 100644 --- a/src/browser/themes/shared/urlbar-searchbar-css.patch +++ b/src/browser/themes/shared/urlbar-searchbar-css.patch @@ -1,5 +1,5 @@ diff --git a/browser/themes/shared/urlbar-searchbar.css b/browser/themes/shared/urlbar-searchbar.css -index 11636a976736ba56dcc5a58081cee998bbdf58d4..0a6ca26f25511c799d8b40484b6bd1c81ceeb4e0 100644 +index 1744e627bbcfc69ccccb207ad1cbf0c262afb9be..50cc9da2076d946771fb5aca1402f1cbe6a531c8 100644 --- a/browser/themes/shared/urlbar-searchbar.css +++ b/browser/themes/shared/urlbar-searchbar.css @@ -6,7 +6,7 @@ @@ -11,7 +11,7 @@ index 11636a976736ba56dcc5a58081cee998bbdf58d4..0a6ca26f25511c799d8b40484b6bd1c8 --urlbar-margin-inline: 5px; --urlbar-padding-block: 4px; -@@ -33,7 +33,7 @@ +@@ -48,7 +48,7 @@ #urlbar[usertyping] > .urlbar-input-container > #page-action-buttons > #urlbar-zoom-button, .urlbar:is(:not([usertyping]), :not([focused])) > .urlbar-input-container > .urlbar-go-button, .urlbar-revert-button-container { @@ -20,7 +20,7 @@ index 11636a976736ba56dcc5a58081cee998bbdf58d4..0a6ca26f25511c799d8b40484b6bd1c8 } /* When rich suggestions are enabled the urlbar identity icon is given extra padding to -@@ -307,10 +307,14 @@ +@@ -321,10 +321,14 @@ .urlbar[breakout][breakout-extend] { height: auto; diff --git a/src/browser/themes/shared/urlbarView-css.patch b/src/browser/themes/shared/urlbarView-css.patch index bba5d89a9..9e692c3be 100644 --- a/src/browser/themes/shared/urlbarView-css.patch +++ b/src/browser/themes/shared/urlbarView-css.patch @@ -1,5 +1,5 @@ diff --git a/browser/themes/shared/urlbarView.css b/browser/themes/shared/urlbarView.css -index 743b1bc81474378ac994ca9cfeb8f4cc6b434581..3486cebd74efa2df481d2a112e89b219bd6bb8a2 100644 +index ec849fc792572e75d12b9e7cd7e6b7f32c799fa9..17c7d442854b774817ef5b3b96e732c19bebef9d 100644 --- a/browser/themes/shared/urlbarView.css +++ b/browser/themes/shared/urlbarView.css @@ -20,7 +20,7 @@ diff --git a/src/browser/themes/windows/browser-css.patch b/src/browser/themes/windows/browser-css.patch index 5b064a7bb..c8e03bdee 100644 --- a/src/browser/themes/windows/browser-css.patch +++ b/src/browser/themes/windows/browser-css.patch @@ -1,5 +1,5 @@ diff --git a/browser/themes/windows/browser.css b/browser/themes/windows/browser.css -index 4485369284ee762bc8b35afb84fec0874a831fff..6a1ad15f657437aa4ef98fda63ae921a378f7310 100644 +index e1a79cd22180738d2ca16e9a6c5591499d337325..d36996359bfa4dd7d98c4f5aeb192c7b144339bb 100644 --- a/browser/themes/windows/browser.css +++ b/browser/themes/windows/browser.css @@ -31,7 +31,6 @@ diff --git a/src/build/moz-build.patch b/src/build/moz-build.patch index 596a09b20..7ccf4194c 100644 --- a/src/build/moz-build.patch +++ b/src/build/moz-build.patch @@ -1,8 +1,8 @@ diff --git a/build/moz.build b/build/moz.build -index f7a912ec35dd089ea9a7e712765e954854f55cb3..a84534efbc7662f81573a4a80bc045e0a6d2ed3e 100644 +index 720fb1235f418fb063e88d8bbcd2eb444e84870b..ed831a4d35e006bc03aa514a6c00968a4dd19624 100644 --- a/build/moz.build +++ b/build/moz.build -@@ -89,7 +89,7 @@ if CONFIG["MOZ_APP_BASENAME"]: +@@ -93,7 +93,7 @@ if CONFIG["MOZ_APP_BASENAME"]: if CONFIG[var]: appini_defines[var] = True diff --git a/src/devtools/server/actors/animation-type-longhand-js.patch b/src/devtools/server/actors/animation-type-longhand-js.patch index d9872df5a..29e44807d 100644 --- a/src/devtools/server/actors/animation-type-longhand-js.patch +++ b/src/devtools/server/actors/animation-type-longhand-js.patch @@ -1,8 +1,8 @@ diff --git a/devtools/server/actors/animation-type-longhand.js b/devtools/server/actors/animation-type-longhand.js -index 17960549c60ebab9ac7c50a70cb69a6b1f8c37dd..9a9ec4539d39f20dccf449cbdcd066efee145b50 100644 +index ea27f1209ddb9b33ae044186c2b795685a0bde67..6d808a760885f0e26ff307a39d6977228359fe71 100644 --- a/devtools/server/actors/animation-type-longhand.js +++ b/devtools/server/actors/animation-type-longhand.js -@@ -343,6 +343,7 @@ exports.ANIMATION_TYPE_FOR_LONGHANDS = [ +@@ -344,6 +344,7 @@ exports.ANIMATION_TYPE_FOR_LONGHANDS = [ "transform-origin", "translate", "-moz-window-transform", diff --git a/src/devtools/startup/DevToolsStartup-sys-mjs.patch b/src/devtools/startup/DevToolsStartup-sys-mjs.patch index b9c5e983d..9f7ea1c66 100644 --- a/src/devtools/startup/DevToolsStartup-sys-mjs.patch +++ b/src/devtools/startup/DevToolsStartup-sys-mjs.patch @@ -1,5 +1,5 @@ diff --git a/devtools/startup/DevToolsStartup.sys.mjs b/devtools/startup/DevToolsStartup.sys.mjs -index 175edde2720f31c796e8ae8823e2aff17944f423..d9d4f7f5e53064b1ba07870dced2e1452fdde6b1 100644 +index 95de0614e392e00036500a5b3ef9976041f37ec6..2c842055ce1d7ffd94c8f21a82305a3a13d493e0 100644 --- a/devtools/startup/DevToolsStartup.sys.mjs +++ b/devtools/startup/DevToolsStartup.sys.mjs @@ -816,6 +816,7 @@ DevToolsStartup.prototype = { diff --git a/src/dom/base/Document-cpp.patch b/src/dom/base/Document-cpp.patch index 022968aaa..37f0f667b 100644 --- a/src/dom/base/Document-cpp.patch +++ b/src/dom/base/Document-cpp.patch @@ -1,8 +1,8 @@ diff --git a/dom/base/Document.cpp b/dom/base/Document.cpp -index 7d7a93e9e76b4957e3ac5860dfc730b7c4e6ad1d..c7c689b73c6599e9e736f73a67bb402d083964a0 100644 +index 0c2ef36f9765b6904659ac0ed4329468ca89225f..d06552e8d4ac102dd50a1afea10938ca32aeb788 100644 --- a/dom/base/Document.cpp +++ b/dom/base/Document.cpp -@@ -467,6 +467,7 @@ +@@ -466,6 +466,7 @@ #include "prtime.h" #include "prtypes.h" #include "xpcpublic.h" @@ -10,7 +10,7 @@ index 7d7a93e9e76b4957e3ac5860dfc730b7c4e6ad1d..c7c689b73c6599e9e736f73a67bb402d // clang-format off #include "mozilla/Encoding.h" -@@ -3345,6 +3346,10 @@ void Document::FillStyleSetUserAndUASheets() { +@@ -3428,6 +3429,10 @@ void Document::FillStyleSetUserAndUASheets() { for (StyleSheet* sheet : *sheetService->UserStyleSheets()) { styleSet.AppendStyleSheet(*sheet); } diff --git a/src/dom/base/use_counter_metrics-yaml.patch b/src/dom/base/use_counter_metrics-yaml.patch index e8f250c47..eeac251f7 100644 --- a/src/dom/base/use_counter_metrics-yaml.patch +++ b/src/dom/base/use_counter_metrics-yaml.patch @@ -1,8 +1,8 @@ diff --git a/dom/base/use_counter_metrics.yaml b/dom/base/use_counter_metrics.yaml -index adf8d1ed451a54426d92e65557801cffa2f64281..0bf810d3544e42689ad530468bfce5380a51e274 100644 +index 157d46c37d0a465f02f794eda4323f7e344c5e63..aec8b819dbcf853c2e6d5513000149449fae36fd 100644 --- a/dom/base/use_counter_metrics.yaml +++ b/dom/base/use_counter_metrics.yaml -@@ -21477,6 +21477,22 @@ use.counter.css.page: +@@ -21154,6 +21154,22 @@ use.counter.css.page: send_in_pings: - use-counters @@ -25,7 +25,7 @@ index adf8d1ed451a54426d92e65557801cffa2f64281..0bf810d3544e42689ad530468bfce538 css_transform_origin: type: counter description: > -@@ -33481,6 +33497,22 @@ use.counter.css.doc: +@@ -33175,6 +33191,22 @@ use.counter.css.doc: send_in_pings: - use-counters diff --git a/src/dom/media/mediaelement/HTMLMediaElement-cpp.patch b/src/dom/media/mediaelement/HTMLMediaElement-cpp.patch index 60236c198..da62b610d 100644 --- a/src/dom/media/mediaelement/HTMLMediaElement-cpp.patch +++ b/src/dom/media/mediaelement/HTMLMediaElement-cpp.patch @@ -1,5 +1,5 @@ diff --git a/dom/media/mediaelement/HTMLMediaElement.cpp b/dom/media/mediaelement/HTMLMediaElement.cpp -index d46d5edc1d66c1eee8780abad444289fdc36a518..0e0d69819d9eee82add726792ec829c05551a076 100644 +index 741a8f1744f48e7db4dbda64c856efaf9f3564b0..f9a2c0878f8a923903ed8eb65cbd355d40b41715 100644 --- a/dom/media/mediaelement/HTMLMediaElement.cpp +++ b/dom/media/mediaelement/HTMLMediaElement.cpp @@ -453,6 +453,7 @@ class HTMLMediaElement::MediaControlKeyListener final @@ -10,7 +10,7 @@ index d46d5edc1d66c1eee8780abad444289fdc36a518..0e0d69819d9eee82add726792ec829c0 NotifyAudibleStateChanged(mIsOwnerAudible ? MediaAudibleState::eAudible : MediaAudibleState::eInaudible); -@@ -7034,6 +7035,9 @@ void HTMLMediaElement::FireTimeUpdate(TimeupdateType aType) { +@@ -7191,6 +7192,9 @@ void HTMLMediaElement::FireTimeUpdate(TimeupdateType aType) { QueueTask(std::move(runner)); mQueueTimeUpdateRunnerTime = TimeStamp::Now(); mLastCurrentTime = CurrentTime(); diff --git a/src/firefox-patches/ff142-gradient-dithering.patch b/src/firefox-patches/ff142-gradient-dithering.patch deleted file mode 100644 index 26a1dbf86..000000000 --- a/src/firefox-patches/ff142-gradient-dithering.patch +++ /dev/null @@ -1,545 +0,0 @@ -diff --git a/gfx/webrender_bindings/src/bindings.rs b/gfx/webrender_bindings/src/bindings.rs -index 578c2f80a9db..08823b7fea22 100644 ---- a/gfx/webrender_bindings/src/bindings.rs -+++ b/gfx/webrender_bindings/src/bindings.rs -@@ -2144,12 +2144,6 @@ pub extern "C" fn wr_window_new( - } - }; - -- let enable_dithering = if !software && static_prefs::pref!("gfx.webrender.dithering") { -- true -- } else { -- false -- }; -- - let opts = WebRenderOptions { - enable_aa: true, - enable_subpixel_aa, -@@ -2204,7 +2198,6 @@ pub extern "C" fn wr_window_new( - reject_software_rasterizer, - low_quality_pinch_zoom, - max_shared_surface_size, -- enable_dithering, - ..Default::default() - }; - -@@ -4615,11 +4608,8 @@ pub extern "C" fn wr_shaders_new( - - device.begin_frame(); - -- let mut options = WebRenderOptions::default(); -- options.enable_dithering = static_prefs::pref!("gfx.webrender.dithering"); -- - let gl_type = device.gl().get_type(); -- let mut shaders = match Shaders::new(&mut device, gl_type, &options) { -+ let mut shaders = match Shaders::new(&mut device, gl_type, &WebRenderOptions::default()) { - Ok(shaders) => shaders, - Err(e) => { - warn!(" Failed to create a Shaders: {:?}", e); -diff --git a/gfx/wr/glsl-to-cxx/src/hir.rs b/gfx/wr/glsl-to-cxx/src/hir.rs -index 626a3643e6ee..f0bb95d1df38 100644 ---- a/gfx/wr/glsl-to-cxx/src/hir.rs -+++ b/gfx/wr/glsl-to-cxx/src/hir.rs -@@ -3964,6 +3964,14 @@ pub fn ast_to_hir(state: &mut State, tu: &syntax::TranslationUnit) -> Translatio - vec![Type::new(Sampler2D), Type::new(Int), Type::new(Float), Type::new(Bool), Type::new(Bool), - Type::new(Vec2), Type::new(Vec2), Type::new(Float)], - ); -+ declare_function( -+ state, -+ "swgl_commitDitheredLinearGradientRGBA8", -+ None, -+ Type::new(Void), -+ vec![Type::new(Sampler2D), Type::new(Int), Type::new(Float), Type::new(Bool), Type::new(Bool), -+ Type::new(Vec2), Type::new(Vec2), Type::new(Float), Type::new(Vec4)], -+ ); - declare_function( - state, - "swgl_commitRadialGradientRGBA8", -@@ -3972,6 +3980,14 @@ pub fn ast_to_hir(state: &mut State, tu: &syntax::TranslationUnit) -> Translatio - vec![Type::new(Sampler2D), Type::new(Int), Type::new(Float), Type::new(Bool), Type::new(Vec2), - Type::new(Float)], - ); -+ declare_function( -+ state, -+ "swgl_commitDitheredRadialGradientRGBA8", -+ None, -+ Type::new(Void), -+ vec![Type::new(Sampler2D), Type::new(Int), Type::new(Float), Type::new(Bool), Type::new(Vec2), -+ Type::new(Float), Type::new(Vec4)], -+ ); - declare_function( - state, - "swgl_commitGradientRGBA8", -diff --git a/gfx/wr/swgl/build.rs b/gfx/wr/swgl/build.rs -index fd6ec3fc4726..b8c9ad2ec174 100644 ---- a/gfx/wr/swgl/build.rs -+++ b/gfx/wr/swgl/build.rs -@@ -142,6 +142,7 @@ fn main() { - let shader_flags = ShaderFeatureFlags::GL - | ShaderFeatureFlags::DUAL_SOURCE_BLENDING - | ShaderFeatureFlags::ADVANCED_BLEND_EQUATION -+ | ShaderFeatureFlags::DITHERING - | ShaderFeatureFlags::DEBUG; - let mut shaders: Vec = Vec::new(); - for (name, features) in get_shader_features(shader_flags) { -diff --git a/gfx/wr/swgl/src/swgl_ext.h b/gfx/wr/swgl/src/swgl_ext.h -index 36b66843f63a..5a517afbe25c 100644 ---- a/gfx/wr/swgl/src/swgl_ext.h -+++ b/gfx/wr/swgl/src/swgl_ext.h -@@ -1383,14 +1383,63 @@ static inline WideRGBA8 sampleGradient(sampler2D sampler, int address, - swgl_commitChunk(RGBA8, applyColor(sampleGradient(sampler, address, entry), \ - packColor(swgl_OutRGBA, color))) - -+static const int8_t ditherNoiseMatrix[] = { -+ -126, 66, -78, 114, -114, 78, -66, 126, 2, -62, 50, -14, 14, -+ -50, 62, -2, -94, 98, -110, 82, -82, 110, -98, 94, 34, -30, -+ 18, -46, 46, -18, 30, -34, -118, 74, -70, 122, -122, 70, -74, -+ 118, 10, -54, 58, -6, 6, -58, 54, -10, -86, 106, -102, 90, -+ -90, 102, -106, 86, 42, -22, 26, -38, 38, -26, 22, -42, -+}; -+ -+// Values in color should be in the 0..0xFF00 range so that dithering has enough -+// overhead to avoid overflow. -+static inline VectorType dither( -+ const VectorType* color, ivec4_scalar fragCoord) { -+ VectorType ret = *color; -+ -+ // This isn't technically proper behaviour, but it's fast. Proper -+ // behaviour would be to do a bounds check on every addition, or to otherwise -+ // recreate that behaviour. Instead, we refuse to dither all 4 -+ // pixels if any channel from any one of them would underflow. -+ auto boundsCheck = ret < 126; -+ -+ // This is a vectorized or operation on all RGB values (ignores A) -+ auto boundsCheckRGB = SHUFFLE(boundsCheck, boundsCheck, 0, 1, 2, 4, 5, 6, 8, -+ 9, 10, 12, 13, 14, 0, 0, 0, 0); -+ auto boundsCheckRGBReducedV8 = -+ lowHalf(boundsCheckRGB) | highHalf(boundsCheckRGB); -+ auto boundsCheckRGBReducedV4 = -+ lowHalf(boundsCheckRGBReducedV8) | highHalf(boundsCheckRGBReducedV8); -+ auto boundsCheckRGBReducedV2 = -+ lowHalf(boundsCheckRGBReducedV4) | highHalf(boundsCheckRGBReducedV4); -+ if (bit_cast(boundsCheckRGBReducedV2) != 0) { -+ return ret; -+ } -+ -+ const int row = (fragCoord.y & 7) * 8; -+ int8_t n0 = ditherNoiseMatrix[row + ((fragCoord.x + 0) & 7)]; -+ int8_t n1 = ditherNoiseMatrix[row + ((fragCoord.x + 1) & 7)]; -+ int8_t n2 = ditherNoiseMatrix[row + ((fragCoord.x + 2) & 7)]; -+ int8_t n3 = ditherNoiseMatrix[row + ((fragCoord.x + 3) & 7)]; -+ -+ VectorType noiseVector = { -+ uint16_t(n0), uint16_t(n0), uint16_t(n0), 0, -+ uint16_t(n1), uint16_t(n1), uint16_t(n1), 0, -+ uint16_t(n2), uint16_t(n2), uint16_t(n2), 0, -+ uint16_t(n3), uint16_t(n3), uint16_t(n3), 0}; -+ -+ ret += noiseVector; -+ return ret; -+} -+ - // Samples an entire span of a linear gradient by crawling the gradient table - // and looking for consecutive stops that can be merged into a single larger - // gradient, then interpolating between those larger gradients within the span. --template -+template - static bool commitLinearGradient(sampler2D sampler, int address, float size, - bool tileRepeat, bool gradientRepeat, vec2 pos, - const vec2_scalar& scaleDir, float startOffset, -- uint32_t* buf, int span) { -+ uint32_t* buf, int span, vec4 fragCoord) { - assert(sampler->format == TextureFormat::RGBA32F); - assert(address >= 0 && address < int(sampler->height * sampler->stride)); - GradientStops* stops = (GradientStops*)&sampler->buf[address]; -@@ -1402,6 +1451,11 @@ static bool commitLinearGradient(sampler2D sampler, int address, float size, - if (!isfinite(delta)) { - return false; - } -+ -+ // Only incremented in the case of dithering -+ ivec4_scalar currentFragCoord = -+ ivec4_scalar(fragCoord.x.x, fragCoord.y.x, fragCoord.z.x, fragCoord.w.x); -+ - // If we have a repeating brush, then the position will be modulo the [0,1) - // interval. Compute coefficients that can be used to quickly evaluate the - // distance to the interval boundary where the offset will wrap. -@@ -1536,7 +1590,14 @@ static bool commitLinearGradient(sampler2D sampler, int address, float size, - // deltas. - int segment = min(remaining, 256 / 4); - for (auto* end = buf + segment * 4; buf < end; buf += 4) { -- commit_blend_span(buf, bit_cast(color >> 8)); -+ if (DITHER) { -+ commit_blend_span( -+ buf, -+ bit_cast(dither(&color, currentFragCoord) >> 8)); -+ currentFragCoord.x += 4; -+ } else { -+ commit_blend_span(buf, bit_cast(color >> 8)); -+ } - color += deltaColor; - } - remaining -= segment; -@@ -1569,7 +1630,20 @@ static bool commitLinearGradient(sampler2D sampler, int address, float size, - // will calculate a table entry for each sample, assuming the samples may - // have different table entries. - Float entry = clamp(offset * size + 1.0f, 0.0f, 1.0f + size); -- commit_blend_span(buf, sampleGradient(sampler, address, entry)); -+ -+ if (DITHER) { -+ auto gradientSample = static_cast>( -+ sampleGradient(sampler, address, entry)) -+ << 8; -+ commit_blend_span( -+ buf, -+ static_cast( -+ dither(&gradientSample, currentFragCoord) >> 8)); -+ currentFragCoord.x += 4; -+ } else { -+ commit_blend_span( -+ buf, static_cast(sampleGradient(sampler, address, entry))); -+ } - span -= 4; - buf += 4; - pos += posStep; -@@ -1589,13 +1663,35 @@ static bool commitLinearGradient(sampler2D sampler, int address, float size, - do { \ - bool drawn = false; \ - if (blend_key) { \ -- drawn = commitLinearGradient( \ -+ drawn = commitLinearGradient( \ -+ sampler, address, size, tileRepeat, gradientRepeat, pos, scaleDir, \ -+ startOffset, swgl_OutRGBA8, swgl_SpanLength, \ -+ static_cast(0x0)); \ -+ } else { \ -+ drawn = commitLinearGradient( \ -+ sampler, address, size, tileRepeat, gradientRepeat, pos, scaleDir, \ -+ startOffset, swgl_OutRGBA8, swgl_SpanLength, \ -+ static_cast(0x0)); \ -+ } \ -+ if (drawn) { \ -+ swgl_OutRGBA8 += swgl_SpanLength; \ -+ swgl_SpanLength = 0; \ -+ } \ -+ } while (0) -+ -+#define swgl_commitDitheredLinearGradientRGBA8( \ -+ sampler, address, size, tileRepeat, gradientRepeat, pos, scaleDir, \ -+ startOffset, fragCoord) \ -+ do { \ -+ bool drawn = false; \ -+ if (blend_key) { \ -+ drawn = commitLinearGradient( \ - sampler, address, size, tileRepeat, gradientRepeat, pos, scaleDir, \ -- startOffset, swgl_OutRGBA8, swgl_SpanLength); \ -+ startOffset, swgl_OutRGBA8, swgl_SpanLength, fragCoord); \ - } else { \ -- drawn = commitLinearGradient( \ -+ drawn = commitLinearGradient( \ - sampler, address, size, tileRepeat, gradientRepeat, pos, scaleDir, \ -- startOffset, swgl_OutRGBA8, swgl_SpanLength); \ -+ startOffset, swgl_OutRGBA8, swgl_SpanLength, fragCoord); \ - } \ - if (drawn) { \ - swgl_OutRGBA8 += swgl_SpanLength; \ -@@ -1625,10 +1721,10 @@ static ALWAYS_INLINE auto fastLength(V v) { - // and looking for consecutive stops that can be merged into a single larger - // gradient, then interpolating between those larger gradients within the span - // based on the computed position relative to a radius. --template -+template - static bool commitRadialGradient(sampler2D sampler, int address, float size, - bool repeat, vec2 pos, float radius, -- uint32_t* buf, int span) { -+ uint32_t* buf, int span, vec4 fragCoord) { - assert(sampler->format == TextureFormat::RGBA32F); - assert(address >= 0 && address < int(sampler->height * sampler->stride)); - GradientStops* stops = (GradientStops*)&sampler->buf[address]; -@@ -1658,6 +1754,11 @@ static bool commitRadialGradient(sampler2D sampler, int address, float size, - if (!isfinite(deltaDelta) || !isfinite(radius)) { - return false; - } -+ -+ // Only incremented in the case of dithering -+ ivec4_scalar currentFragCoord = -+ ivec4_scalar(fragCoord.x.x, fragCoord.y.x, fragCoord.z.x, fragCoord.w.x); -+ - float invDelta, middleT, middleB; - if (deltaDelta > 0) { - invDelta = 1.0f / deltaDelta; -@@ -1778,9 +1879,12 @@ static bool commitRadialGradient(sampler2D sampler, int address, float size, - // Figure out how many chunks are actually inside the merged gradient. - if (t + 4.0f <= endT) { - int inside = int(endT - t) & ~3; -- // Convert start and end colors to BGRA and scale to 0..255 range later. -- auto minColorF = stops[minIndex].startColor.zyxw * 255.0f; -- auto maxColorF = stops[maxIndex].end_color().zyxw * 255.0f; -+ // Convert start and end colors to BGRA and scale to 0..0xFF00 range (for -+ // dithered) and 0..255 range (for non-dithered). -+ auto minColorF = -+ stops[minIndex].startColor.zyxw * (DITHER ? float(0xFF00) : 255.0f); -+ auto maxColorF = -+ stops[maxIndex].end_color().zyxw * (DITHER ? float(0xFF00) : 255.0f); - // Compute the change in color per change in gradient offset. - auto deltaColorF = - (maxColorF - minColorF) * (size / (maxIndex + 1 - minIndex)); -@@ -1789,18 +1893,29 @@ static bool commitRadialGradient(sampler2D sampler, int address, float size, - Float colorF = - minColorF - deltaColorF * (startRadius + (minIndex - 1) / size); - // Finally, walk over the span accumulating the position dot product and -- // getting its sqrt as an offset into the color ramp. Since we're already -- // in BGRA format and scaled to 255, we just need to round to an integer -- // and pack down to pixel format. -+ // getting its sqrt as an offset into the color ramp. At this point we -+ // just need to round to an integer and pack down to an 8-bit pixel -+ // format. - for (auto* end = buf + inside; buf < end; buf += 4) { - Float offsetG = fastSqrt(dotPos); -- commit_blend_span( -- buf, -- combine( -- packRGBA8(round_pixel(colorF + deltaColorF * offsetG.x, 1), -- round_pixel(colorF + deltaColorF * offsetG.y, 1)), -- packRGBA8(round_pixel(colorF + deltaColorF * offsetG.z, 1), -- round_pixel(colorF + deltaColorF * offsetG.w, 1)))); -+ if (DITHER) { -+ auto color = combine( -+ CONVERT(round_pixel(colorF + deltaColorF * offsetG.x, 1), U16), -+ CONVERT(round_pixel(colorF + deltaColorF * offsetG.y, 1), U16), -+ CONVERT(round_pixel(colorF + deltaColorF * offsetG.z, 1), U16), -+ CONVERT(round_pixel(colorF + deltaColorF * offsetG.w, 1), U16)); -+ commit_blend_span( -+ buf, static_cast( -+ dither(&color, currentFragCoord) >> 8)); -+ currentFragCoord.x += 4; -+ } else { -+ auto color = combine( -+ packRGBA8(round_pixel(colorF + deltaColorF * offsetG.x, 1), -+ round_pixel(colorF + deltaColorF * offsetG.y, 1)), -+ packRGBA8(round_pixel(colorF + deltaColorF * offsetG.z, 1), -+ round_pixel(colorF + deltaColorF * offsetG.w, 1))); -+ commit_blend_span(buf, color); -+ } - dotPos += dotPosDelta; - dotPosDelta += deltaDelta2; - } -@@ -1837,25 +1952,45 @@ static bool commitRadialGradient(sampler2D sampler, int address, float size, - // swglcommitLinearGradient, but given a varying 2D position scaled to - // gradient-space and a radius at which the distance from the origin maps to the - // start of the gradient table. --#define swgl_commitRadialGradientRGBA8(sampler, address, size, repeat, pos, \ -- radius) \ -- do { \ -- bool drawn = false; \ -- if (blend_key) { \ -- drawn = \ -- commitRadialGradient(sampler, address, size, repeat, pos, \ -- radius, swgl_OutRGBA8, swgl_SpanLength); \ -- } else { \ -- drawn = \ -- commitRadialGradient(sampler, address, size, repeat, pos, \ -- radius, swgl_OutRGBA8, swgl_SpanLength); \ -- } \ -- if (drawn) { \ -- swgl_OutRGBA8 += swgl_SpanLength; \ -- swgl_SpanLength = 0; \ -- } \ -+#define swgl_commitRadialGradientRGBA8(sampler, address, size, repeat, pos, \ -+ radius) \ -+ do { \ -+ bool drawn = false; \ -+ if (blend_key) { \ -+ drawn = commitRadialGradient( \ -+ sampler, address, size, repeat, pos, radius, swgl_OutRGBA8, \ -+ swgl_SpanLength, \ -+ static_cast(0x0)); \ -+ } else { \ -+ drawn = commitRadialGradient( \ -+ sampler, address, size, repeat, pos, radius, swgl_OutRGBA8, \ -+ swgl_SpanLength, \ -+ static_cast(0x0)); \ -+ } \ -+ if (drawn) { \ -+ swgl_OutRGBA8 += swgl_SpanLength; \ -+ swgl_SpanLength = 0; \ -+ } \ - } while (0) - -+#define swgl_commitDitheredRadialGradientRGBA8( \ -+ sampler, address, size, repeat, pos, radius, fragCoord) \ -+ do { \ -+ bool drawn = false; \ -+ if (blend_key) { \ -+ drawn = commitRadialGradient( \ -+ sampler, address, size, repeat, pos, radius, swgl_OutRGBA8, \ -+ swgl_SpanLength, fragCoord); \ -+ } else { \ -+ drawn = commitRadialGradient( \ -+ sampler, address, size, repeat, pos, radius, swgl_OutRGBA8, \ -+ swgl_SpanLength, fragCoord); \ -+ } \ -+ if (drawn) { \ -+ swgl_OutRGBA8 += swgl_SpanLength; \ -+ swgl_SpanLength = 0; \ -+ } \ -+ } while (0) - // Extension to set a clip mask image to be sampled during blending. The offset - // specifies the positioning of the clip mask image relative to the viewport - // origin. The bounding box specifies the rectangle relative to the clip mask's -diff --git a/gfx/wr/webrender/res/brush_linear_gradient.glsl b/gfx/wr/webrender/res/brush_linear_gradient.glsl -index 235be4b24be8..6f923052ffb1 100644 ---- a/gfx/wr/webrender/res/brush_linear_gradient.glsl -+++ b/gfx/wr/webrender/res/brush_linear_gradient.glsl -@@ -87,8 +87,13 @@ void swgl_drawSpanRGBA8() { - return; - } - -+#ifdef WR_FEATURE_DITHERING -+ swgl_commitDitheredLinearGradientRGBA8(sGpuBufferF, address, GRADIENT_ENTRIES, true, v_gradient_repeat.x != 0.0, -+ v_pos, v_scale_dir, v_start_offset.x, gl_FragCoord); -+#else - swgl_commitLinearGradientRGBA8(sGpuBufferF, address, GRADIENT_ENTRIES, true, v_gradient_repeat.x != 0.0, - v_pos, v_scale_dir, v_start_offset.x); -+#endif - } - #endif - -diff --git a/gfx/wr/webrender/res/cs_radial_gradient.glsl b/gfx/wr/webrender/res/cs_radial_gradient.glsl -index 10919ac6283e..8084d8d47be1 100644 ---- a/gfx/wr/webrender/res/cs_radial_gradient.glsl -+++ b/gfx/wr/webrender/res/cs_radial_gradient.glsl -@@ -63,8 +63,14 @@ void swgl_drawSpanRGBA8() { - if (address < 0) { - return; - } -+ -+#ifdef WR_FEATURE_DITHERING -+ swgl_commitDitheredRadialGradientRGBA8(sGpuBufferF, address, GRADIENT_ENTRIES, v_gradient_repeat.x != 0.0, -+ v_pos, v_start_radius.x, gl_FragCoord); -+#else - swgl_commitRadialGradientRGBA8(sGpuBufferF, address, GRADIENT_ENTRIES, v_gradient_repeat.x != 0.0, - v_pos, v_start_radius.x); -+#endif - } - #endif - -diff --git a/gfx/wr/webrender/res/ps_quad_radial_gradient.glsl b/gfx/wr/webrender/res/ps_quad_radial_gradient.glsl -index 05b4dd2aa8c6..dc83f3c27742 100644 ---- a/gfx/wr/webrender/res/ps_quad_radial_gradient.glsl -+++ b/gfx/wr/webrender/res/ps_quad_radial_gradient.glsl -@@ -73,8 +73,14 @@ void swgl_drawSpanRGBA8() { - if (address < 0) { - return; - } -+ -+#ifdef WR_FEATURE_DITHERING -+ swgl_commitDitheredRadialGradientRGBA8(sGpuBufferF, address, GRADIENT_ENTRIES, v_gradient_repeat.x != 0.0, -+ v_pos, v_start_radius.x, gl_FragCoord); -+#else - swgl_commitRadialGradientRGBA8(sGpuBufferF, address, GRADIENT_ENTRIES, v_gradient_repeat.x != 0.0, - v_pos, v_start_radius.x); -+#endif - } - #endif - -diff --git a/gfx/wr/webrender/src/renderer/init.rs b/gfx/wr/webrender/src/renderer/init.rs -index 7c63798bc644..169d4c7a4437 100644 ---- a/gfx/wr/webrender/src/renderer/init.rs -+++ b/gfx/wr/webrender/src/renderer/init.rs -@@ -224,7 +224,7 @@ impl Default for WebRenderOptions { - resource_override_path: None, - use_optimized_shaders: false, - enable_aa: true, -- enable_dithering: false, -+ enable_dithering: true, - debug_flags: DebugFlags::empty(), - max_recorded_profiles: 0, - precache_flags: ShaderPrecacheFlags::empty(), -diff --git a/gfx/wr/webrender/src/renderer/shade.rs b/gfx/wr/webrender/src/renderer/shade.rs -index ed38e7aa24e3..0171cb4092e1 100644 ---- a/gfx/wr/webrender/src/renderer/shade.rs -+++ b/gfx/wr/webrender/src/renderer/shade.rs -@@ -873,14 +873,22 @@ impl Shaders { - let ps_quad_radial_gradient = loader.create_shader( - ShaderKind::Primitive, - "ps_quad_radial_gradient", -- &[], -+ if options.enable_dithering { -+ &[DITHERING_FEATURE] -+ } else { -+ &[] -+ }, - &shader_list, - )?; - - let ps_quad_conic_gradient = loader.create_shader( - ShaderKind::Primitive, - "ps_quad_conic_gradient", -- &[], -+ if options.enable_dithering { -+ &[DITHERING_FEATURE] -+ } else { -+ &[] -+ }, - &shader_list, - )?; - -@@ -1032,14 +1040,22 @@ impl Shaders { - let cs_radial_gradient = loader.create_shader( - ShaderKind::Cache(VertexArrayKind::RadialGradient), - "cs_radial_gradient", -- &[], -+ if options.enable_dithering { -+ &[DITHERING_FEATURE] -+ } else { -+ &[] -+ }, - &shader_list, - )?; - - let cs_conic_gradient = loader.create_shader( - ShaderKind::Cache(VertexArrayKind::ConicGradient), - "cs_conic_gradient", -- &[], -+ if options.enable_dithering { -+ &[DITHERING_FEATURE] -+ } else { -+ &[] -+ }, - &shader_list, - )?; - -diff --git a/gfx/wr/webrender_build/src/shader_features.rs b/gfx/wr/webrender_build/src/shader_features.rs -index 72b82df00228..97247c929609 100644 ---- a/gfx/wr/webrender_build/src/shader_features.rs -+++ b/gfx/wr/webrender_build/src/shader_features.rs -@@ -242,9 +242,9 @@ pub fn get_shader_features(flags: ShaderFeatureFlags) -> ShaderFeatures { - - shaders.insert("ps_quad_textured", vec![base_prim_features.finish()]); - -- shaders.insert("ps_quad_radial_gradient", vec![base_prim_features.finish()]); -+ shaders.insert("ps_quad_radial_gradient", vec![base_prim_features.finish(), if flags.contains(ShaderFeatureFlags::DITHERING) { "DITHERING".to_string() } else { String::new() }]); - -- shaders.insert("ps_quad_conic_gradient", vec![base_prim_features.finish()]); -+ shaders.insert("ps_quad_conic_gradient", vec![base_prim_features.finish(), if flags.contains(ShaderFeatureFlags::DITHERING) { "DITHERING".to_string() } else { String::new() }]); - - shaders.insert("ps_clear", vec![base_prim_features.finish()]); - -diff --git a/modules/libpref/init/StaticPrefList.yaml b/modules/libpref/init/StaticPrefList.yaml -index e21849fa3db4..258e12665ca8 100644 ---- a/modules/libpref/init/StaticPrefList.yaml -+++ b/modules/libpref/init/StaticPrefList.yaml -@@ -8007,13 +8007,6 @@ - value: true - mirror: once - --# Enable dithering in hardware WebRender --- name: gfx.webrender.dithering -- type: bool -- rust: true -- value: false -- mirror: once -- - # Use vsync events generated by hardware - - name: gfx.work-around-driver-bugs - type: bool diff --git a/src/layout/generic/nsIFrame-cpp.patch b/src/layout/generic/nsIFrame-cpp.patch index 66f1b822d..3a9042a12 100644 --- a/src/layout/generic/nsIFrame-cpp.patch +++ b/src/layout/generic/nsIFrame-cpp.patch @@ -1,8 +1,8 @@ diff --git a/layout/generic/nsIFrame.cpp b/layout/generic/nsIFrame.cpp -index 0fca54d43aed64e711c3470a5745a94baaed8886..17097bc8f39e7d5140afa4d91811bca2071a8ad1 100644 +index 7c8f9c8c8ea4cc43825b388e7dd655a2ef34e75f..da5f48bb2d55ae306c72b062169a9758ad10c014 100644 --- a/layout/generic/nsIFrame.cpp +++ b/layout/generic/nsIFrame.cpp -@@ -11933,6 +11933,11 @@ gfx::Matrix nsIFrame::ComputeWidgetTransform() const { +@@ -11912,6 +11912,11 @@ gfx::Matrix nsIFrame::ComputeWidgetTransform() const { gfx::Matrix4x4 matrix = nsStyleTransformMatrix::ReadTransforms( uiReset->mMozWindowTransform, refBox, float(appUnitsPerDevPixel)); diff --git a/src/layout/style/nsStyleStruct-cpp.patch b/src/layout/style/nsStyleStruct-cpp.patch index 677018f5d..f3c81c9a9 100644 --- a/src/layout/style/nsStyleStruct-cpp.patch +++ b/src/layout/style/nsStyleStruct-cpp.patch @@ -1,8 +1,8 @@ diff --git a/layout/style/nsStyleStruct.cpp b/layout/style/nsStyleStruct.cpp -index 3fc58a635189d2160be84c3c8083e63abce611f0..7aac552365a4414229879e2dd9586f7fbd98816d 100644 +index 2413696f643246a825e184732bfba6eb33f606fd..932d3c316ee60c59b5f999e5ddd65c6acee3129d 100644 --- a/layout/style/nsStyleStruct.cpp +++ b/layout/style/nsStyleStruct.cpp -@@ -3266,6 +3266,9 @@ nsStyleUIReset::nsStyleUIReset() +@@ -3273,6 +3273,9 @@ nsStyleUIReset::nsStyleUIReset() mWindowShadow(StyleWindowShadow::Auto), mWindowOpacity(1.0), mMozWindowInputRegionMargin(StyleLength::Zero()), @@ -12,7 +12,7 @@ index 3fc58a635189d2160be84c3c8083e63abce611f0..7aac552365a4414229879e2dd9586f7f mTransitions( nsStyleAutoArray::WITH_SINGLE_INITIAL_ELEMENT), mTransitionTimingFunctionCount(1), -@@ -3310,6 +3313,7 @@ nsStyleUIReset::nsStyleUIReset(const nsStyleUIReset& aSource) +@@ -3317,6 +3320,7 @@ nsStyleUIReset::nsStyleUIReset(const nsStyleUIReset& aSource) mWindowOpacity(aSource.mWindowOpacity), mMozWindowInputRegionMargin(aSource.mMozWindowInputRegionMargin), mMozWindowTransform(aSource.mMozWindowTransform), diff --git a/src/layout/style/nsStyleStruct-h.patch b/src/layout/style/nsStyleStruct-h.patch index 0eeede686..1e0c4aee3 100644 --- a/src/layout/style/nsStyleStruct-h.patch +++ b/src/layout/style/nsStyleStruct-h.patch @@ -1,8 +1,8 @@ diff --git a/layout/style/nsStyleStruct.h b/layout/style/nsStyleStruct.h -index 9db1b385ac12e0142921c49e6b6c2ba0fadccf95..919089fd9bc278b0c2fede4b2babe133acd4632e 100644 +index f40f005606946b1149bfb7b67d1df9be04ddaf07..64da397ceb4192aacd24c4cd9fb0efbad2d363ed 100644 --- a/layout/style/nsStyleStruct.h +++ b/layout/style/nsStyleStruct.h -@@ -2075,6 +2075,7 @@ struct MOZ_NEEDS_MEMMOVABLE_MEMBERS nsStyleUIReset { +@@ -2094,6 +2094,7 @@ struct MOZ_NEEDS_MEMMOVABLE_MEMBERS nsStyleUIReset { // The margin of the window region that should be transparent to events. mozilla::StyleLength mMozWindowInputRegionMargin; mozilla::StyleTransform mMozWindowTransform; diff --git a/src/modules/libpref/init/StaticPrefList-yaml.patch b/src/modules/libpref/init/StaticPrefList-yaml.patch index d46f3b54a..4156b2b27 100644 --- a/src/modules/libpref/init/StaticPrefList-yaml.patch +++ b/src/modules/libpref/init/StaticPrefList-yaml.patch @@ -1,8 +1,8 @@ diff --git a/modules/libpref/init/StaticPrefList.yaml b/modules/libpref/init/StaticPrefList.yaml -index a6c49438aaf3464e70bf9c75c2849a6062bd096a..2ee33493ed541b36a29f29c104d1275b80e5a20a 100644 +index 86dc55502b05eed6e4bb0a2ed489e1e8e76840cb..2c2918b2d3c76063662fe59d7fde745a36a92ab6 100644 --- a/modules/libpref/init/StaticPrefList.yaml +++ b/modules/libpref/init/StaticPrefList.yaml -@@ -19222,6 +19215,7 @@ +@@ -19316,6 +19316,7 @@ mirror: always #endif diff --git a/src/modules/libpref/moz-build.patch b/src/modules/libpref/moz-build.patch index d5fd7d0c8..f91740056 100644 --- a/src/modules/libpref/moz-build.patch +++ b/src/modules/libpref/moz-build.patch @@ -1,5 +1,5 @@ diff --git a/modules/libpref/moz.build b/modules/libpref/moz.build -index 68a0bd6b50b804745b052e1921f4f6120354443e..23e7d03a6796af39dc2d39733b16548e73f8b10f 100644 +index 46034d8d99ba227f85824d472933ec556f54ba81..42f7f68aba60ca9c8f85f5fe13ffb56fa542e344 100644 --- a/modules/libpref/moz.build +++ b/modules/libpref/moz.build @@ -93,6 +93,7 @@ pref_groups = [ diff --git a/src/servo/components/style/gecko/media_features-rs.patch b/src/servo/components/style/gecko/media_features-rs.patch index fd2ce91cd..eda66d696 100644 --- a/src/servo/components/style/gecko/media_features-rs.patch +++ b/src/servo/components/style/gecko/media_features-rs.patch @@ -1,5 +1,5 @@ diff --git a/servo/components/style/gecko/media_features.rs b/servo/components/style/gecko/media_features.rs -index 3d4630e2250476729d21cdcb1726a7af93f9fd75..489d1dc624bb1e7b3f7ed22a0073d3ada29846e4 100644 +index b0082951254ad592c73caaa16c5b5c57127831a9..9b3566b08aacfcf2cfbf9941b2b3ca91a31ade59 100644 --- a/servo/components/style/gecko/media_features.rs +++ b/servo/components/style/gecko/media_features.rs @@ -13,6 +13,9 @@ use crate::values::computed::{CSSPixelLength, Context, Ratio, Resolution}; @@ -24,9 +24,9 @@ index 3d4630e2250476729d21cdcb1726a7af93f9fd75..489d1dc624bb1e7b3f7ed22a0073d3ad + KleeneValue::from(unsafe { bindings::Gecko_EvalMozPrefFeature(pref.as_ptr(), &MozPrefFeatureValue::::None) }) +} - fn get_lnf_int(int_id: i32) -> i32 { - unsafe { bindings::Gecko_GetLookAndFeelInt(int_id) } -@@ -641,7 +651,13 @@ macro_rules! lnf_int_feature { + fn eval_moz_mac_rtl(context: &Context) -> bool { + unsafe { bindings::Gecko_MediaFeatures_MacRTL(context.device().document()) } +@@ -645,7 +655,13 @@ macro_rules! lnf_int_feature { /// to support new types in these entries and (2) ensuring that either /// nsPresContext::MediaFeatureValuesChanged is called when the value that /// would be returned by the evaluator function could change. diff --git a/src/servo/components/style/queries/feature-rs.patch b/src/servo/components/style/queries/feature-rs.patch index f9f6ae27e..18cb4aa09 100644 --- a/src/servo/components/style/queries/feature-rs.patch +++ b/src/servo/components/style/queries/feature-rs.patch @@ -1,5 +1,5 @@ diff --git a/servo/components/style/queries/feature.rs b/servo/components/style/queries/feature.rs -index a9a4decb178234037a6d285ddd3206bd52f214e5..18ea220a14cbb59ef3c9809cb679f8fdb5352f98 100644 +index 1414dd624e0761d269f7e3b1c64ed4bb6576a6e3..f0204c2ee3e8c3527750a26788b5fb7cdf8dfc67 100644 --- a/servo/components/style/queries/feature.rs +++ b/servo/components/style/queries/feature.rs @@ -6,6 +6,7 @@ diff --git a/src/servo/components/style/queries/feature_expression-rs.patch b/src/servo/components/style/queries/feature_expression-rs.patch index 1ec0d6303..8265a0588 100644 --- a/src/servo/components/style/queries/feature_expression-rs.patch +++ b/src/servo/components/style/queries/feature_expression-rs.patch @@ -1,5 +1,5 @@ diff --git a/servo/components/style/queries/feature_expression.rs b/servo/components/style/queries/feature_expression.rs -index 31ba4839aacf740eae4a753c17ee34d9e13562eb..e59bea9cd82d85ff6b195051fef595a45dff520c 100644 +index 91e1d1572cbd3682ec977f21751e067968ed8884..6e618ac765f698bf3d9ce120167a6906ae3ce5ff 100644 --- a/servo/components/style/queries/feature_expression.rs +++ b/servo/components/style/queries/feature_expression.rs @@ -11,7 +11,7 @@ use crate::parser::{Parse, ParserContext}; diff --git a/src/testing/mochitest/browser-test-js.patch b/src/testing/mochitest/browser-test-js.patch index 474a8f07c..ff99dd955 100644 --- a/src/testing/mochitest/browser-test-js.patch +++ b/src/testing/mochitest/browser-test-js.patch @@ -1,5 +1,5 @@ diff --git a/testing/mochitest/browser-test.js b/testing/mochitest/browser-test.js -index 11217c210dd8dc5f7c4bdc6043df9aeb361529c6..18c3c4d658170d0646483cd289fe8ad1f21ffae0 100644 +index 979c6a0960cb8c490b612649d0fac55cd7b7d0f7..f149f248f705484b3572ca462660932dd792e312 100644 --- a/testing/mochitest/browser-test.js +++ b/testing/mochitest/browser-test.js @@ -440,11 +440,11 @@ Tester.prototype = { diff --git a/src/toolkit/components/downloads/DownloadList-sys-mjs.patch b/src/toolkit/components/downloads/DownloadList-sys-mjs.patch index ceff5a646..3a2c53041 100644 --- a/src/toolkit/components/downloads/DownloadList-sys-mjs.patch +++ b/src/toolkit/components/downloads/DownloadList-sys-mjs.patch @@ -1,5 +1,5 @@ diff --git a/toolkit/components/downloads/DownloadList.sys.mjs b/toolkit/components/downloads/DownloadList.sys.mjs -index 9ffdcd97edb31c35168a88303474fc4f5dc7c9d4..3c361101190d7f6123568535c68781c0e46fe2a9 100644 +index ef84be4cfd8194a99e2b2019360b780c700d8d42..3979c03670902ea3ae8bd344612612b20bec6176 100644 --- a/toolkit/components/downloads/DownloadList.sys.mjs +++ b/toolkit/components/downloads/DownloadList.sys.mjs @@ -50,6 +50,7 @@ const FILE_EXTENSIONS = [ diff --git a/src/toolkit/components/extensions/parent/ext-downloads-js.patch b/src/toolkit/components/extensions/parent/ext-downloads-js.patch index 5fdf9dbaf..81377918d 100644 --- a/src/toolkit/components/extensions/parent/ext-downloads-js.patch +++ b/src/toolkit/components/extensions/parent/ext-downloads-js.patch @@ -1,5 +1,5 @@ diff --git a/toolkit/components/extensions/parent/ext-downloads.js b/toolkit/components/extensions/parent/ext-downloads.js -index 3b81d5e60a5e3006b80a2acec0b6720ccb7e5b33..5b6272986e13b48047f3bae1ec4205fc3e8012ef 100644 +index 4665c05116908133382be99ebeefd3546205750d..ba7cee3800e72f0fbd9b735c064cb6e61b4b4d28 100644 --- a/toolkit/components/extensions/parent/ext-downloads.js +++ b/toolkit/components/extensions/parent/ext-downloads.js @@ -87,6 +87,7 @@ const FILTER_IMAGES_EXTENSIONS = [ diff --git a/src/toolkit/components/pictureinpicture/content/player-js.patch b/src/toolkit/components/pictureinpicture/content/player-js.patch index 7ae87824f..6e461b23b 100644 --- a/src/toolkit/components/pictureinpicture/content/player-js.patch +++ b/src/toolkit/components/pictureinpicture/content/player-js.patch @@ -1,8 +1,8 @@ diff --git a/toolkit/components/pictureinpicture/content/player.js b/toolkit/components/pictureinpicture/content/player.js -index 3be55670e18ed2ae1e02307304a3699d16d89aa5..477933646c3623432164be06c31ef5328f86bba6 100644 +index 8a1088b318dfd321b4e5f34819c689a10e7f87b2..8d1816b27a0c88ab41b654249ae52111129edbf5 100644 --- a/toolkit/components/pictureinpicture/content/player.js +++ b/toolkit/components/pictureinpicture/content/player.js -@@ -755,6 +755,11 @@ let Player = { +@@ -760,6 +760,11 @@ let Player = { document.getElementById("large").click(); break; } diff --git a/src/toolkit/components/pictureinpicture/content/player-xhtml.patch b/src/toolkit/components/pictureinpicture/content/player-xhtml.patch index ef89eff98..802143144 100644 --- a/src/toolkit/components/pictureinpicture/content/player-xhtml.patch +++ b/src/toolkit/components/pictureinpicture/content/player-xhtml.patch @@ -1,5 +1,5 @@ diff --git a/toolkit/components/pictureinpicture/content/player.xhtml b/toolkit/components/pictureinpicture/content/player.xhtml -index b38789882149c97a3263c405b783999bc60a5c71..009b7b7aa2ded0d88247c62171bfff59222a8e28 100644 +index 09c9c5000de96fcd4a9d26328408996540c2cbda..b6d93850bbfe63a4e21756c97415a6c1908dae25 100644 --- a/toolkit/components/pictureinpicture/content/player.xhtml +++ b/toolkit/components/pictureinpicture/content/player.xhtml @@ -18,6 +18,7 @@ diff --git a/src/toolkit/content/widgets/browser-custom-element-mjs.patch b/src/toolkit/content/widgets/browser-custom-element-mjs.patch index cb7820fe0..52362b570 100644 --- a/src/toolkit/content/widgets/browser-custom-element-mjs.patch +++ b/src/toolkit/content/widgets/browser-custom-element-mjs.patch @@ -1,8 +1,8 @@ diff --git a/toolkit/content/widgets/browser-custom-element.mjs b/toolkit/content/widgets/browser-custom-element.mjs -index ef01902583d6ff1c563e9b2886f3048b127fe383..01f353f5eb4c67b2cf01a14e337a81e93358586f 100644 +index b5eb24e15cc97b004f182c35901505cb740e8571..f2dd435ba072affff3b4fdada6c360a575c22910 100644 --- a/toolkit/content/widgets/browser-custom-element.mjs +++ b/toolkit/content/widgets/browser-custom-element.mjs -@@ -482,11 +482,11 @@ class MozBrowser extends MozElements.MozElementMixin(XULFrameElement) { +@@ -483,11 +483,11 @@ class MozBrowser extends MozElements.MozElementMixin(XULFrameElement) { if (!this.browsingContext) { return; } diff --git a/src/toolkit/content/widgets/moz-toggle/moz-toggle-css.patch b/src/toolkit/content/widgets/moz-toggle/moz-toggle-css.patch index 766f3435b..305ba49e4 100644 --- a/src/toolkit/content/widgets/moz-toggle/moz-toggle-css.patch +++ b/src/toolkit/content/widgets/moz-toggle/moz-toggle-css.patch @@ -1,5 +1,5 @@ diff --git a/toolkit/content/widgets/moz-toggle/moz-toggle.css b/toolkit/content/widgets/moz-toggle/moz-toggle.css -index 7b9ec91bf0cfd8fda6a161995c9de57270557f6c..b1049bd2b2c03104e5b35978a9b81674d6920d53 100644 +index 49f04a3a8eedf580e9854f04014c637894181300..4e1336b4a58afaba182de87b4e670b0f0b3d607e 100644 --- a/toolkit/content/widgets/moz-toggle/moz-toggle.css +++ b/toolkit/content/widgets/moz-toggle/moz-toggle.css @@ -6,8 +6,8 @@ diff --git a/src/toolkit/modules/moz-build.patch b/src/toolkit/modules/moz-build.patch index a384e5c2e..f7c21aa5f 100644 --- a/src/toolkit/modules/moz-build.patch +++ b/src/toolkit/modules/moz-build.patch @@ -1,8 +1,8 @@ diff --git a/toolkit/modules/moz.build b/toolkit/modules/moz.build -index 990244af276576d0af0b371a370287aa780f42c1..cd43715aea607fc7dbafda589e14e1462568dd61 100644 +index e43870b10c5b35165fd21b48065980060104dc52..71e3db5618c834bc4ff9d481b1e667f2b02b183e 100644 --- a/toolkit/modules/moz.build +++ b/toolkit/modules/moz.build -@@ -281,6 +281,7 @@ for var in ( +@@ -280,6 +280,7 @@ for var in ( "DLL_SUFFIX", "DEBUG_JS_MODULES", "OMNIJAR_NAME", diff --git a/src/toolkit/moz-configure.patch b/src/toolkit/moz-configure.patch index 2b4335893..7cbc4274e 100644 --- a/src/toolkit/moz-configure.patch +++ b/src/toolkit/moz-configure.patch @@ -1,5 +1,5 @@ diff --git a/toolkit/moz.configure b/toolkit/moz.configure -index 44b91b7bb3e0196b7f1f923c43fb8967f569cd28..907f7059cb44b990b5eb3a90d5df523075cd6ae1 100644 +index 2fdcf62bde7805e52737cb06ec67908fa40524c9..b9f9e3abeb5cf770b29e1354615184fce2162ec7 100644 --- a/toolkit/moz.configure +++ b/toolkit/moz.configure @@ -22,6 +22,7 @@ def check_moz_app_id(moz_app_id, build_project): diff --git a/src/toolkit/mozapps/extensions/AddonManager-sys-mjs.patch b/src/toolkit/mozapps/extensions/AddonManager-sys-mjs.patch index 6ed13c08c..3fd64f2b3 100644 --- a/src/toolkit/mozapps/extensions/AddonManager-sys-mjs.patch +++ b/src/toolkit/mozapps/extensions/AddonManager-sys-mjs.patch @@ -1,5 +1,5 @@ diff --git a/toolkit/mozapps/extensions/AddonManager.sys.mjs b/toolkit/mozapps/extensions/AddonManager.sys.mjs -index f544f44cf7a73858213ddfc07c0ad693e2f56504..01293cb38ad53ff36c545ccb392071e20fe1d62b 100644 +index 2c1e187d14bae0dcc17a1fa2de768e7c949b3776..c322b770bdc1a0786d8e3bf1af618e3d3d3dd26e 100644 --- a/toolkit/mozapps/extensions/AddonManager.sys.mjs +++ b/toolkit/mozapps/extensions/AddonManager.sys.mjs @@ -1227,12 +1227,12 @@ var AddonManagerInternal = { diff --git a/src/toolkit/mozapps/extensions/content/aboutaddons-css.patch b/src/toolkit/mozapps/extensions/content/aboutaddons-css.patch index d35981b3b..f0290fa86 100644 --- a/src/toolkit/mozapps/extensions/content/aboutaddons-css.patch +++ b/src/toolkit/mozapps/extensions/content/aboutaddons-css.patch @@ -1,5 +1,5 @@ diff --git a/toolkit/mozapps/extensions/content/aboutaddons.css b/toolkit/mozapps/extensions/content/aboutaddons.css -index 733396c68be4f1dd9de99bd602c9f8cde8843957..e0d9489a89e366e3f6dab2a6f472c6752a8815b3 100644 +index 232fca6975de67bc0d84969204e75bad358b6bc7..4bbfb2abb9ea4812005734eb95a0bd7b8bbab7ce 100644 --- a/toolkit/mozapps/extensions/content/aboutaddons.css +++ b/toolkit/mozapps/extensions/content/aboutaddons.css @@ -105,6 +105,13 @@ h2 { diff --git a/src/toolkit/profile/nsToolkitProfileService-cpp.patch b/src/toolkit/profile/nsToolkitProfileService-cpp.patch index 3df221797..c796e9ba9 100644 --- a/src/toolkit/profile/nsToolkitProfileService-cpp.patch +++ b/src/toolkit/profile/nsToolkitProfileService-cpp.patch @@ -1,8 +1,8 @@ diff --git a/toolkit/profile/nsToolkitProfileService.cpp b/toolkit/profile/nsToolkitProfileService.cpp -index befc1def42c9fdd33438f0485cea6d36520adf28..1d3dd61fd3dd1769a9523c95993bb31cfde7b7ab 100644 +index 1d8c95cc10d158e86254f45d8f955c8f8ce50394..3708da5d0780298589b89dbb4a03152749911dee 100644 --- a/toolkit/profile/nsToolkitProfileService.cpp +++ b/toolkit/profile/nsToolkitProfileService.cpp -@@ -82,6 +82,8 @@ using namespace mozilla; +@@ -84,6 +84,8 @@ using namespace mozilla; #define INSTALL_PREFIX_LENGTH 7 #define STORE_ID_PREF "toolkit.profiles.storeID" @@ -11,7 +11,7 @@ index befc1def42c9fdd33438f0485cea6d36520adf28..1d3dd61fd3dd1769a9523c95993bb31c struct KeyValue { KeyValue(const char* aKey, const char* aValue) : key(aKey), value(aValue) {} -@@ -1364,7 +1366,7 @@ nsresult nsToolkitProfileService::CreateDefaultProfile( +@@ -1370,7 +1372,7 @@ nsresult nsToolkitProfileService::CreateDefaultProfile( if (mUseDevEditionProfile) { name.AssignLiteral(DEV_EDITION_NAME); } else if (mUseDedicatedProfile) { diff --git a/src/toolkit/themes/shared/aboutReader-css.patch b/src/toolkit/themes/shared/aboutReader-css.patch index 5b830814d..6ea618c2e 100644 --- a/src/toolkit/themes/shared/aboutReader-css.patch +++ b/src/toolkit/themes/shared/aboutReader-css.patch @@ -1,8 +1,8 @@ diff --git a/toolkit/themes/shared/aboutReader.css b/toolkit/themes/shared/aboutReader.css -index bf425379af81f442fb0b4ad7d2921c3f06196f26..6c2cc0faade92de995b675eea2696f061dfda571 100644 +index 1eb2c44694bb4970134fb5d290e32c7053103461..8d8237029976960048cb9aceede918c9e20c523b 100644 --- a/toolkit/themes/shared/aboutReader.css +++ b/toolkit/themes/shared/aboutReader.css -@@ -1189,3 +1189,43 @@ pre code { +@@ -1181,3 +1181,43 @@ pre code { display: block; overflow: auto; } diff --git a/src/toolkit/themes/shared/in-content/common-shared-css.patch b/src/toolkit/themes/shared/in-content/common-shared-css.patch index 70b644c55..615b9a4e5 100644 --- a/src/toolkit/themes/shared/in-content/common-shared-css.patch +++ b/src/toolkit/themes/shared/in-content/common-shared-css.patch @@ -1,5 +1,5 @@ diff --git a/toolkit/themes/shared/in-content/common-shared.css b/toolkit/themes/shared/in-content/common-shared.css -index c45d48dc3106a2dc36f6dd704ebb2721817f016e..71291ab50b73872473190537fe2ce7a95a57aa12 100644 +index 96129498de63153704711bf7a21fb10922e80917..83f7b5ee2f15197dc42ec02ec1a73cc2bfc19a4d 100644 --- a/toolkit/themes/shared/in-content/common-shared.css +++ b/toolkit/themes/shared/in-content/common-shared.css @@ -4,7 +4,7 @@ @@ -11,7 +11,7 @@ index c45d48dc3106a2dc36f6dd704ebb2721817f016e..71291ab50b73872473190537fe2ce7a9 @namespace html "http://www.w3.org/1999/xhtml"; @namespace xul "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; -@@ -69,7 +69,7 @@ +@@ -68,7 +68,7 @@ * this in forced colors mode, as we should be using system colours then. */ :root[dialogroot] { @@ -20,7 +20,7 @@ index c45d48dc3106a2dc36f6dd704ebb2721817f016e..71291ab50b73872473190537fe2ce7a9 } } -@@ -708,7 +708,7 @@ html|*#categories[last-input-type="mouse"] > html|button.category:focus-visible +@@ -706,7 +706,7 @@ html|*#categories[last-input-type="mouse"] > html|button.category:focus-visible fill-opacity: 1; } @@ -29,7 +29,7 @@ index c45d48dc3106a2dc36f6dd704ebb2721817f016e..71291ab50b73872473190537fe2ce7a9 :root { --in-content-sidebar-width: 118px; } -@@ -1098,7 +1098,7 @@ xul|*.sidebar-footer-link { +@@ -1096,7 +1096,7 @@ xul|*.sidebar-footer-link { user-select: none; } diff --git a/src/toolkit/themes/shared/menulist-css.patch b/src/toolkit/themes/shared/menulist-css.patch index 5fa88cb37..a8cd61158 100644 --- a/src/toolkit/themes/shared/menulist-css.patch +++ b/src/toolkit/themes/shared/menulist-css.patch @@ -1,5 +1,5 @@ diff --git a/toolkit/themes/shared/menulist.css b/toolkit/themes/shared/menulist.css -index e5ac973b1ee2595e8547680465e25d537685a9e7..20f85152d783c81be5e29846353daca9ccd0c67d 100644 +index 8f9c006945e67f668075bd36ce83d5a772a9a796..08d68c015b001233548cd6c7babad17f3a638702 100644 --- a/toolkit/themes/shared/menulist.css +++ b/toolkit/themes/shared/menulist.css @@ -53,7 +53,7 @@ @@ -9,5 +9,5 @@ index e5ac973b1ee2595e8547680465e25d537685a9e7..20f85152d783c81be5e29846353daca9 - background-color: var(--button-background-color); + background-color: light-dark(rgba(0,0,0,.1), rgba(255,255,255,.1)); color: var(--button-text-color); - border-radius: 4px; + border-radius: var(--border-radius-small); padding-block: 4px; diff --git a/src/toolkit/themes/shared/pictureinpicture/player-css.patch b/src/toolkit/themes/shared/pictureinpicture/player-css.patch index 475bb4de0..798902248 100644 --- a/src/toolkit/themes/shared/pictureinpicture/player-css.patch +++ b/src/toolkit/themes/shared/pictureinpicture/player-css.patch @@ -1,8 +1,8 @@ diff --git a/toolkit/themes/shared/pictureinpicture/player.css b/toolkit/themes/shared/pictureinpicture/player.css -index 4a4ab15f9801d9443f3dbc131a533823be423bd9..ed487012d172c278f7d5a59ee953de4a05456019 100644 +index 33b10bebcdfe636d7ff0f61a11d5fa4664a31f78..83b53817c53f43cca3be40b490300109b4949f5b 100644 --- a/toolkit/themes/shared/pictureinpicture/player.css +++ b/toolkit/themes/shared/pictureinpicture/player.css -@@ -736,3 +736,17 @@ input:checked + .slider::before { +@@ -738,3 +738,17 @@ input:checked + .slider::before { justify-self: center; } } diff --git a/src/tools/signing/macos/mach_commands-py.patch b/src/tools/signing/macos/mach_commands-py.patch index 73169aa91..be02e1b77 100644 --- a/src/tools/signing/macos/mach_commands-py.patch +++ b/src/tools/signing/macos/mach_commands-py.patch @@ -1,5 +1,5 @@ diff --git a/tools/signing/macos/mach_commands.py b/tools/signing/macos/mach_commands.py -index 454a9bbc35802fbf811065e8e1ca592674016bb3..d6b0cf119664e0534a3898f72ffbcd3aade9c89d 100644 +index 721790b0d067ea1cdc6ddc9d220e423de9206d53..ca80e6f2c8bcd82eda24d03720a37a2bfdc50cfe 100644 --- a/tools/signing/macos/mach_commands.py +++ b/tools/signing/macos/mach_commands.py @@ -37,7 +37,6 @@ from mozbuild.base import MachCommandConditions as conditions @@ -21,7 +21,7 @@ index 454a9bbc35802fbf811065e8e1ca592674016bb3..d6b0cf119664e0534a3898f72ffbcd3a if use_rcodesign_arg is True: sign_with_rcodesign( command_context, -@@ -567,7 +570,7 @@ def sign_with_rcodesign( +@@ -608,7 +611,7 @@ def sign_with_rcodesign( # input path and its options are specified as standard arguments. ctx.log(logging.INFO, "macos-sign", {}, "Signing with rcodesign") diff --git a/src/widget/cocoa/nsCocoaWindow-mm.patch b/src/widget/cocoa/nsCocoaWindow-mm.patch index ecbe7de1e..ee8b3bc7a 100644 --- a/src/widget/cocoa/nsCocoaWindow-mm.patch +++ b/src/widget/cocoa/nsCocoaWindow-mm.patch @@ -1,8 +1,8 @@ diff --git a/widget/cocoa/nsCocoaWindow.mm b/widget/cocoa/nsCocoaWindow.mm -index 827dc774a429d0595028314a522722078a202edc..11ba33c2c316c0fc53053f6f8d0feab97c93bc72 100644 +index 6c80f33454503af0840af18cb88af44a006727ee..47b318814ddd57b1e73c66b576884b8e62093906 100644 --- a/widget/cocoa/nsCocoaWindow.mm +++ b/widget/cocoa/nsCocoaWindow.mm -@@ -7540,7 +7540,7 @@ static NSMutableSet* gSwizzledFrameViewClasses = nil; +@@ -7588,7 +7588,7 @@ static NSMutableSet* gSwizzledFrameViewClasses = nil; // Returns an autoreleased NSImage. static NSImage* GetMenuMaskImage() { diff --git a/src/xpfe/appshell/AppWindow-cpp.patch b/src/xpfe/appshell/AppWindow-cpp.patch index 70df53122..61deb9ea7 100644 --- a/src/xpfe/appshell/AppWindow-cpp.patch +++ b/src/xpfe/appshell/AppWindow-cpp.patch @@ -1,8 +1,8 @@ diff --git a/xpfe/appshell/AppWindow.cpp b/xpfe/appshell/AppWindow.cpp -index 0b7788ec179d1c1021d2e5692c652b367646d33b..f5d48ca47a899b82f9d9cb7823eeb096f542c0ea 100644 +index 64f18c991b0b9a8bf3690a54624b447f347a210e..0b00a29956cd6a750d5feadd4b2a4ceb8338410b 100644 --- a/xpfe/appshell/AppWindow.cpp +++ b/xpfe/appshell/AppWindow.cpp -@@ -1873,7 +1873,7 @@ nsresult AppWindow::MaybeSaveEarlyWindowPersistentValues( +@@ -1874,7 +1874,7 @@ nsresult AppWindow::MaybeSaveEarlyWindowPersistentValues( } } diff --git a/src/zen/common/ZenStartup.mjs b/src/zen/common/ZenStartup.mjs index 3fa3d061c..289266a2b 100644 --- a/src/zen/common/ZenStartup.mjs +++ b/src/zen/common/ZenStartup.mjs @@ -61,11 +61,6 @@ setTimeout(() => { gZenUIManager.init(); this.#checkForWelcomePage(); - - document.l10n.setAttributes( - document.getElementById('tabs-newtab-button'), - 'tabs-toolbar-new-tab' - ); }, 0); } catch (e) { console.error('ZenThemeModifier: Error initializing browser layout', e); diff --git a/src/zen/common/ZenUIManager.mjs b/src/zen/common/ZenUIManager.mjs index dd54457be..d344e543e 100644 --- a/src/zen/common/ZenUIManager.mjs +++ b/src/zen/common/ZenUIManager.mjs @@ -889,7 +889,6 @@ var gZenVerticalTabsManager = { if (typeof height !== 'undefined') { document.getElementById('urlbar').style.setProperty('--urlbar-height', `${height}px`); } - gURLBar.valueFormatter._formatURL(); }); }, diff --git a/src/zen/common/styles/zen-omnibox.css b/src/zen/common/styles/zen-omnibox.css index 5349e8b57..12e2c7cf3 100644 --- a/src/zen/common/styles/zen-omnibox.css +++ b/src/zen/common/styles/zen-omnibox.css @@ -111,6 +111,10 @@ border-radius: 0px !important; } +#urlbar:not([breakout-extend='true']) .urlbar-input-box { + font-weight: 500; +} + :root[zen-single-toolbar='true'] #urlbar:not([breakout-extend='true']) { & #urlbar-input { cursor: default; diff --git a/src/zen/common/styles/zen-single-components.css b/src/zen/common/styles/zen-single-components.css index 02169605c..3eefbd64d 100644 --- a/src/zen/common/styles/zen-single-components.css +++ b/src/zen/common/styles/zen-single-components.css @@ -500,12 +500,12 @@ body > #confetti { to bottom, color-mix( in srgb, - light-dark(rgba(255, 255, 255, 1), rgba(0, 0, 0, 0.3)) 15%, + light-dark(rgba(255, 255, 255, 1), rgba(0, 0, 0, 0.5)) 15%, transparent 100% ), color-mix( in srgb, - light-dark(rgba(255, 255, 255, 0.8), rgba(0, 0, 0, 0.8)) 100%, + light-dark(rgba(255, 255, 255, 0.8), rgba(0, 0, 0, 0.9)) 100%, transparent 100% ) ); @@ -514,7 +514,7 @@ body > #confetti { border-radius: 6px; --base-border-color: light-dark(rgba(0, 0, 0, 0.3), rgba(255, 255, 255, 0.1)); border: 1px solid; - border-top-color: light-dark(var(--base-border-color), rgba(255, 255, 255, 0.12)); + border-top-color: light-dark(var(--base-border-color), rgba(255, 255, 255, 0.1)); border-left-color: light-dark(var(--base-border-color), transparent); border-right-color: light-dark(var(--base-border-color), transparent); border-bottom-color: light-dark(var(--base-border-color), rgba(0, 0, 0, 0.12)); diff --git a/src/zen/tests/tabs/browser.toml b/src/zen/tests/tabs/browser.toml index 3d86041c6..0d6efd5dd 100644 --- a/src/zen/tests/tabs/browser.toml +++ b/src/zen/tests/tabs/browser.toml @@ -8,6 +8,7 @@ support-files = [ ] ["browser_tabs_empty_checks.js"] +["browser_tabs_fetch_checks.js"] ["browser_drag_drop_vertical.js"] tags = [ "drag-drop", diff --git a/src/zen/tests/tabs/browser_tabs_fetch_checks.js b/src/zen/tests/tabs/browser_tabs_fetch_checks.js new file mode 100644 index 000000000..a223af8b0 --- /dev/null +++ b/src/zen/tests/tabs/browser_tabs_fetch_checks.js @@ -0,0 +1,29 @@ +/* Any copyright is dedicated to the Public Domain. + https://creativecommons.org/publicdomain/zero/1.0/ */ + +'use strict'; + +// Each firefox update, we should run this check, even +// if its a very "basic" one. Just to make sure that we are +// returning tabs correctly. +add_task(async function test_Tabs_Getter() { + for (let tab of gBrowser.tabs) { + ok(tab.tagName.toLowerCase() === 'tab', 'Each item in gBrowser.tabs is a tab element'); + } + Assert.equal( + gBrowser.tabs.length, + 2, + 'There should be 2 tabs (1 empty tab + 1 about:blank tab) at startup' + ); +}); + +add_task(async function test_Aria_Focusable_Tabs() { + for (let tab of gBrowser.tabContainer.ariaFocusableItems) { + ok(tab.tagName.toLowerCase() === 'tab', 'Each item in ariaFocusableItems is a tab element'); + } + Assert.equal( + gBrowser.tabContainer.ariaFocusableItems.length, + 2, + 'There should be 2 focusable tabs (1 empty tab + 1 about:blank tab) at startup' + ); +}); diff --git a/src/zen/workspaces/ZenWorkspaces.mjs b/src/zen/workspaces/ZenWorkspaces.mjs index e2a0c31c4..bbb01f5ee 100644 --- a/src/zen/workspaces/ZenWorkspaces.mjs +++ b/src/zen/workspaces/ZenWorkspaces.mjs @@ -950,6 +950,8 @@ var gZenWorkspaces = new (class extends nsZenMultiWindowFeature { window.addEventListener('TabSelect', this.onLocationChange.bind(this)); window.addEventListener('TabBrowserInserted', this.onTabBrowserInserted.bind(this)); + + await this.selectStartPage(); } async selectStartPage() { diff --git a/surfer.json b/surfer.json index e643dbd5b..2614839b2 100644 --- a/surfer.json +++ b/surfer.json @@ -6,7 +6,7 @@ "version": { "product": "firefox", "version": "143.0.4", - "candidate": "143.0.4" + "candidate": "144.0" }, "buildOptions": { "generateBranding": true