chore: Updated to Firefox 144.0, p=#10725, c=l10n, tabs, media, common, tests, workspaces

This commit is contained in:
mr. m
2025-10-07 23:06:47 +02:00
committed by GitHub
parent 289058c25d
commit 2dc98fa7f7
99 changed files with 464 additions and 1004 deletions

View File

@@ -35,7 +35,7 @@ Zen is a firefox-based browser with the aim of pushing your productivity to a ne
### Firefox Versions ### Firefox Versions
- [`Release`](https://zen-browser.app/download) - Is currently built using Firefox version `143.0.4`! 🚀 - [`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 ### Contributing

View File

@@ -1 +1 @@
5cbf54e3cfaf4cfb375088d7e11702e8974b238f dd57c783345c5401fcdcc48e83b1fa9ce511d1cf

View File

@@ -1,8 +1,8 @@
diff --git a/Cargo.lock b/Cargo.lock diff --git a/Cargo.lock b/Cargo.lock
index 2ac65181b1a9561ee4760e0569dfdd621c684142..b159fd8a351ba7c6541e8994a815de8150db619f 100644 index c079ef11880c5338c4498a0e5b3eb4cf4bfb6e02..ecd06b05381be740197c07c8cf0743dc882727f5 100644
--- a/Cargo.lock --- a/Cargo.lock
+++ b/Cargo.lock +++ b/Cargo.lock
@@ -4029,8 +4029,6 @@ dependencies = [ @@ -4069,8 +4069,6 @@ dependencies = [
[[package]] [[package]]
name = "mime_guess" name = "mime_guess"
version = "2.0.4" version = "2.0.4"

View File

@@ -1,8 +1,8 @@
diff --git a/Cargo.toml b/Cargo.toml diff --git a/Cargo.toml b/Cargo.toml
index 0fdad8b956be8119f5a914b9cee01bb6520cd13d..f1414b5afd5c66c61d1585184de6b32f9918670d 100644 index 2331ff5733d39e26c0a16301cb83d46ca970f632..777dbd5fb8546466e4a349772ccba254c7ffd691 100644
--- a/Cargo.toml --- a/Cargo.toml
+++ b/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 # Workaround for https://github.com/rust-lang/cargo/issues/11232
rure = { path = "third_party/rust/rure" } rure = { path = "third_party/rust/rure" }

View File

@@ -1,5 +1,5 @@
diff --git a/browser/actors/WebRTCParent.sys.mjs b/browser/actors/WebRTCParent.sys.mjs 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 --- a/browser/actors/WebRTCParent.sys.mjs
+++ b/browser/actors/WebRTCParent.sys.mjs +++ b/browser/actors/WebRTCParent.sys.mjs
@@ -152,6 +152,7 @@ export class WebRTCParent extends JSWindowActorParent { @@ -152,6 +152,7 @@ export class WebRTCParent extends JSWindowActorParent {

View File

@@ -1,5 +1,5 @@
diff --git a/browser/base/content/browser-commands.js b/browser/base/content/browser-commands.js 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 --- a/browser/base/content/browser-commands.js
+++ b/browser/base/content/browser-commands.js +++ b/browser/base/content/browser-commands.js
@@ -317,6 +317,10 @@ var BrowserCommands = { @@ -317,6 +317,10 @@ var BrowserCommands = {

View File

@@ -1,5 +1,5 @@
diff --git a/browser/base/content/browser-fullScreenAndPointerLock.js b/browser/base/content/browser-fullScreenAndPointerLock.js 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 --- a/browser/base/content/browser-fullScreenAndPointerLock.js
+++ b/browser/base/content/browser-fullScreenAndPointerLock.js +++ b/browser/base/content/browser-fullScreenAndPointerLock.js
@@ -427,10 +427,10 @@ var FullScreen = { @@ -427,10 +427,10 @@ var FullScreen = {

View File

@@ -1,20 +1,12 @@
diff --git a/browser/base/content/browser-init.js b/browser/base/content/browser-init.js 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 --- a/browser/base/content/browser-init.js
+++ b/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() { onLoad() {
+ Services.scriptloader.loadSubScript("chrome://browser/content/zenThemeModifier.js", window); + Services.scriptloader.loadSubScript("chrome://browser/content/zenThemeModifier.js", window);
gBrowser.addEventListener("DOMUpdateBlockedPopups", e => 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");

View File

@@ -1,5 +1,5 @@
diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js 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 --- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js +++ b/browser/base/content/browser.js
@@ -31,6 +31,7 @@ ChromeUtils.defineESModuleGetters(this, { @@ -31,6 +31,7 @@ ChromeUtils.defineESModuleGetters(this, {
@@ -10,7 +10,7 @@ index c5b7ef2616c1dab9f42970605897e862d57ab7d0..77f0731db6c4a8d835cf8733115d27ae
DevToolsSocketStatus: DevToolsSocketStatus:
"resource://devtools/shared/security/DevToolsSocketStatus.sys.mjs", "resource://devtools/shared/security/DevToolsSocketStatus.sys.mjs",
DownloadUtils: "resource://gre/modules/DownloadUtils.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); AboutReaderParent.updateReaderButton(gBrowser.selectedBrowser);
TranslationsParent.onLocationChange(gBrowser.selectedBrowser); TranslationsParent.onLocationChange(gBrowser.selectedBrowser);
@@ -19,7 +19,7 @@ index c5b7ef2616c1dab9f42970605897e862d57ab7d0..77f0731db6c4a8d835cf8733115d27ae
PictureInPicture.updateUrlbarToggle(gBrowser.selectedBrowser); PictureInPicture.updateUrlbarToggle(gBrowser.selectedBrowser);
if (!gMultiProcessBrowser) { if (!gMultiProcessBrowser) {
@@ -5232,6 +5235,9 @@ var ConfirmationHint = { @@ -4782,6 +4785,9 @@ var ConfirmationHint = {
MozXULElement.insertFTLIfNeeded("toolkit/branding/brandings.ftl"); MozXULElement.insertFTLIfNeeded("toolkit/branding/brandings.ftl");
MozXULElement.insertFTLIfNeeded("browser/confirmationHints.ftl"); MozXULElement.insertFTLIfNeeded("browser/confirmationHints.ftl");
document.l10n.setAttributes(this._message, messageId, options.l10nArgs); document.l10n.setAttributes(this._message, messageId, options.l10nArgs);

View File

@@ -1,5 +1,5 @@
diff --git a/browser/base/content/browser-places.js b/browser/base/content/browser-places.js 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 --- a/browser/base/content/browser-places.js
+++ b/browser/base/content/browser-places.js +++ b/browser/base/content/browser-places.js
@@ -252,6 +252,8 @@ var StarUI = { @@ -252,6 +252,8 @@ var StarUI = {

View File

@@ -1,8 +1,8 @@
diff --git a/browser/base/content/browser.xhtml b/browser/base/content/browser.xhtml 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 --- a/browser/base/content/browser.xhtml
+++ b/browser/base/content/browser.xhtml +++ b/browser/base/content/browser.xhtml
@@ -26,6 +26,7 @@ @@ -19,6 +19,7 @@
sizemode="normal" sizemode="normal"
retargetdocumentfocus="urlbar-input" retargetdocumentfocus="urlbar-input"
scrolling="false" scrolling="false"
@@ -10,7 +10,7 @@ index 7c4c05b72845dfb37c11317d011b8e7c6ba07934..856c368e4d6fe7c7d7ab468423348c84
persist="screenX screenY width height sizemode" persist="screenX screenY width height sizemode"
data-l10n-sync="true"> data-l10n-sync="true">
<head> <head>
@@ -105,8 +106,10 @@ @@ -98,8 +99,10 @@
<title data-l10n-id="browser-main-window-default-title"></title> <title data-l10n-id="browser-main-window-default-title"></title>
@@ -21,7 +21,7 @@ index 7c4c05b72845dfb37c11317d011b8e7c6ba07934..856c368e4d6fe7c7d7ab468423348c84
</head> </head>
<html:body xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <html:body xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
# All sets except for popupsets (commands, keys, and stringbundles) # All sets except for popupsets (commands, keys, and stringbundles)
@@ -128,9 +131,11 @@ @@ -132,9 +135,11 @@
</vbox> </vbox>
</html:template> </html:template>

View File

@@ -1,5 +1,5 @@
diff --git a/browser/base/content/main-popupset.inc.xhtml b/browser/base/content/main-popupset.inc.xhtml 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 --- a/browser/base/content/main-popupset.inc.xhtml
+++ b/browser/base/content/main-popupset.inc.xhtml +++ b/browser/base/content/main-popupset.inc.xhtml
@@ -208,6 +208,10 @@ @@ -208,6 +208,10 @@
@@ -21,7 +21,7 @@ index fc219ea3dc901fe2ed351161240700113efb8799..f25bdbf886733e2081a4dff556148090
</panel> </panel>
</html:template> </html:template>
@@ -613,6 +618,8 @@ @@ -615,6 +620,8 @@
#include popup-notifications.inc.xhtml #include popup-notifications.inc.xhtml

View File

@@ -1,5 +1,5 @@
diff --git a/browser/base/content/navigator-toolbox.inc.xhtml b/browser/base/content/navigator-toolbox.inc.xhtml 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 --- a/browser/base/content/navigator-toolbox.inc.xhtml
+++ b/browser/base/content/navigator-toolbox.inc.xhtml +++ b/browser/base/content/navigator-toolbox.inc.xhtml
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@

View File

@@ -1,8 +1,8 @@
diff --git a/browser/base/content/nsContextMenu.sys.mjs b/browser/base/content/nsContextMenu.sys.mjs 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 --- a/browser/base/content/nsContextMenu.sys.mjs
+++ b/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() !this.isSecureAboutPage()
); );

View File

@@ -1,8 +1,8 @@
diff --git a/browser/base/moz.build b/browser/base/moz.build 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 --- a/browser/base/moz.build
+++ b/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 DEFINES["APP_LICENSE_BLOCK"] = "%s/content/overrides/app-license.html" % SRCDIR
JAR_MANIFESTS += ["jar.mn"] JAR_MANIFESTS += ["jar.mn"]

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/BrowserContentHandler.sys.mjs b/browser/components/BrowserContentHandler.sys.mjs 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 --- a/browser/components/BrowserContentHandler.sys.mjs
+++ b/browser/components/BrowserContentHandler.sys.mjs +++ b/browser/components/BrowserContentHandler.sys.mjs
@@ -1276,6 +1276,7 @@ function maybeRecordToHandleTelemetry(uri, isLaunch) { @@ -1276,6 +1276,7 @@ function maybeRecordToHandleTelemetry(uri, isLaunch) {

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/BrowserGlue.sys.mjs b/browser/components/BrowserGlue.sys.mjs 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 --- a/browser/components/BrowserGlue.sys.mjs
+++ b/browser/components/BrowserGlue.sys.mjs +++ b/browser/components/BrowserGlue.sys.mjs
@@ -8,6 +8,7 @@ import { XPCOMUtils } from "resource://gre/modules/XPCOMUtils.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", AboutHomeStartupCache: "resource:///modules/AboutHomeStartupCache.sys.mjs",
AWToolbarButton: "resource:///modules/aboutwelcome/AWToolbarUtils.sys.mjs", AWToolbarButton: "resource:///modules/aboutwelcome/AWToolbarUtils.sys.mjs",
ASRouter: "resource:///modules/asrouter/ASRouter.sys.mjs", ASRouter: "resource:///modules/asrouter/ASRouter.sys.mjs",
@@ -1448,7 +1449,7 @@ BrowserGlue.prototype = { @@ -1458,7 +1459,7 @@ BrowserGlue.prototype = {
windowcount++; windowcount++;
let tabbrowser = win.gBrowser; let tabbrowser = win.gBrowser;
if (tabbrowser) { 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) { } else if (profileDataVersion < APP_DATA_VERSION) {
lazy.ProfileDataUpgrader.upgrade(profileDataVersion, APP_DATA_VERSION); lazy.ProfileDataUpgrader.upgrade(profileDataVersion, APP_DATA_VERSION);
} }

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/controlcenter/content/identityPanel.inc.xhtml b/browser/components/controlcenter/content/identityPanel.inc.xhtml 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 --- a/browser/components/controlcenter/content/identityPanel.inc.xhtml
+++ b/browser/components/controlcenter/content/identityPanel.inc.xhtml +++ b/browser/components/controlcenter/content/identityPanel.inc.xhtml
@@ -28,7 +28,7 @@ @@ -28,7 +28,7 @@

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/customizableui/CustomizableUI.sys.mjs b/browser/components/customizableui/CustomizableUI.sys.mjs 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 --- a/browser/components/customizableui/CustomizableUI.sys.mjs
+++ b/browser/components/customizableui/CustomizableUI.sys.mjs +++ b/browser/components/customizableui/CustomizableUI.sys.mjs
@@ -14,6 +14,7 @@ ChromeUtils.defineESModuleGetters(lazy, { @@ -14,6 +14,7 @@ ChromeUtils.defineESModuleGetters(lazy, {
@@ -10,7 +10,7 @@ index 4f62449d670701c77c681ae36e00bae8bf2f636c..ac542f33927f9de9040bab9cd98351a4
HomePage: "resource:///modules/HomePage.sys.mjs", HomePage: "resource:///modules/HomePage.sys.mjs",
PanelMultiView: PanelMultiView:
"moz-src:///browser/components/customizableui/PanelMultiView.sys.mjs", "moz-src:///browser/components/customizableui/PanelMultiView.sys.mjs",
@@ -323,7 +324,7 @@ var CustomizableUIInternal = { @@ -326,7 +327,7 @@ var CustomizableUIInternal = {
{ {
type: CustomizableUI.TYPE_PANEL, type: CustomizableUI.TYPE_PANEL,
defaultPlacements: [], defaultPlacements: [],
@@ -19,7 +19,7 @@ index 4f62449d670701c77c681ae36e00bae8bf2f636c..ac542f33927f9de9040bab9cd98351a4
}, },
false false
); );
@@ -333,19 +334,14 @@ var CustomizableUIInternal = { @@ -336,19 +337,14 @@ var CustomizableUIInternal = {
"back-button", "back-button",
"forward-button", "forward-button",
"stop-reload-button", "stop-reload-button",
@@ -40,7 +40,7 @@ index 4f62449d670701c77c681ae36e00bae8bf2f636c..ac542f33927f9de9040bab9cd98351a4
this.registerArea( this.registerArea(
CustomizableUI.AREA_NAVBAR, CustomizableUI.AREA_NAVBAR,
{ {
@@ -353,8 +349,6 @@ var CustomizableUIInternal = { @@ -356,8 +352,6 @@ var CustomizableUIInternal = {
overflowable: true, overflowable: true,
defaultPlacements: navbarPlacements, defaultPlacements: navbarPlacements,
verticalTabsDefaultPlacements: [ verticalTabsDefaultPlacements: [
@@ -49,7 +49,7 @@ index 4f62449d670701c77c681ae36e00bae8bf2f636c..ac542f33927f9de9040bab9cd98351a4
], ],
defaultCollapsed: false, defaultCollapsed: false,
}, },
@@ -378,10 +372,7 @@ var CustomizableUIInternal = { @@ -381,10 +375,7 @@ var CustomizableUIInternal = {
{ {
type: CustomizableUI.TYPE_TOOLBAR, type: CustomizableUI.TYPE_TOOLBAR,
defaultPlacements: [ defaultPlacements: [
@@ -60,7 +60,7 @@ index 4f62449d670701c77c681ae36e00bae8bf2f636c..ac542f33927f9de9040bab9cd98351a4
], ],
verticalTabsDefaultPlacements: [], verticalTabsDefaultPlacements: [],
defaultCollapsed: null, defaultCollapsed: null,
@@ -463,6 +454,7 @@ var CustomizableUIInternal = { @@ -466,6 +457,7 @@ var CustomizableUIInternal = {
CustomizableUI.AREA_NAVBAR, CustomizableUI.AREA_NAVBAR,
CustomizableUI.AREA_BOOKMARKS, CustomizableUI.AREA_BOOKMARKS,
CustomizableUI.AREA_TABSTRIP, CustomizableUI.AREA_TABSTRIP,
@@ -68,7 +68,7 @@ index 4f62449d670701c77c681ae36e00bae8bf2f636c..ac542f33927f9de9040bab9cd98351a4
]); ]);
if (AppConstants.platform != "macosx") { if (AppConstants.platform != "macosx") {
toolbars.add(CustomizableUI.AREA_MENUBAR); toolbars.add(CustomizableUI.AREA_MENUBAR);
@@ -1247,6 +1239,9 @@ var CustomizableUIInternal = { @@ -1250,6 +1242,9 @@ var CustomizableUIInternal = {
placements = gPlacements.get(area); placements = gPlacements.get(area);
} }
@@ -78,7 +78,7 @@ index 4f62449d670701c77c681ae36e00bae8bf2f636c..ac542f33927f9de9040bab9cd98351a4
// For toolbars that need it, mark as dirty. // For toolbars that need it, mark as dirty.
let defaultPlacements = areaProperties.get("defaultPlacements"); let defaultPlacements = areaProperties.get("defaultPlacements");
if ( if (
@@ -1754,7 +1749,7 @@ var CustomizableUIInternal = { @@ -1757,7 +1752,7 @@ var CustomizableUIInternal = {
lazy.log.info( lazy.log.info(
"Widget " + aWidgetId + " not found, unable to remove from " + aArea "Widget " + aWidgetId + " not found, unable to remove from " + aArea
); );
@@ -87,7 +87,7 @@ index 4f62449d670701c77c681ae36e00bae8bf2f636c..ac542f33927f9de9040bab9cd98351a4
} }
this.notifyDOMChange(widgetNode, null, container, true, () => { 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: // We also need to remove the panel context menu if it's there:
this.ensureButtonContextMenu(widgetNode); this.ensureButtonContextMenu(widgetNode);
if (gPalette.has(aWidgetId) || this.isSpecialWidget(aWidgetId)) { if (gPalette.has(aWidgetId) || this.isSpecialWidget(aWidgetId)) {
@@ -96,7 +96,7 @@ index 4f62449d670701c77c681ae36e00bae8bf2f636c..ac542f33927f9de9040bab9cd98351a4
} else { } else {
window.gNavToolbox.palette.appendChild(widgetNode); window.gNavToolbox.palette.appendChild(widgetNode);
} }
@@ -1932,16 +1927,16 @@ var CustomizableUIInternal = { @@ -1935,16 +1930,16 @@ var CustomizableUIInternal = {
elem.setAttribute("skipintoolbarset", "true"); elem.setAttribute("skipintoolbarset", "true");
} }
} }
@@ -116,7 +116,7 @@ index 4f62449d670701c77c681ae36e00bae8bf2f636c..ac542f33927f9de9040bab9cd98351a4
// Handle initial state of vertical tabs. // Handle initial state of vertical tabs.
if (isVerticalTabs) { if (isVerticalTabs) {
// Show the vertical tabs toolbar // 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. * The identifier string of the area that aNode is being inserted into.
*/ */
insertWidgetBefore(aNode, aNextNode, aContainer, aAreaId) { insertWidgetBefore(aNode, aNextNode, aContainer, aAreaId) {
@@ -127,7 +127,7 @@ index 4f62449d670701c77c681ae36e00bae8bf2f636c..ac542f33927f9de9040bab9cd98351a4
this.notifyDOMChange(aNode, aNextNode, aContainer, false, () => { this.notifyDOMChange(aNode, aNextNode, aContainer, false, () => {
this.setLocationAttributes(aNode, aAreaId); this.setLocationAttributes(aNode, aAreaId);
aContainer.insertBefore(aNode, aNextNode); aContainer.insertBefore(aNode, aNextNode);
@@ -3303,7 +3302,6 @@ var CustomizableUIInternal = { @@ -3306,7 +3305,6 @@ var CustomizableUIInternal = {
if (!this.isWidgetRemovable(aWidgetId)) { if (!this.isWidgetRemovable(aWidgetId)) {
return; return;
} }
@@ -135,7 +135,7 @@ index 4f62449d670701c77c681ae36e00bae8bf2f636c..ac542f33927f9de9040bab9cd98351a4
let placements = gPlacements.get(oldPlacement.area); let placements = gPlacements.get(oldPlacement.area);
let position = placements.indexOf(aWidgetId); let position = placements.indexOf(aWidgetId);
if (position != -1) { 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 * For all registered areas, builds those areas to reflect the current
* placement state of all widgets. * placement state of all widgets.
*/ */
@@ -144,7 +144,7 @@ index 4f62449d670701c77c681ae36e00bae8bf2f636c..ac542f33927f9de9040bab9cd98351a4
for (let [areaId, areaNodes] of gBuildAreas) { for (let [areaId, areaNodes] of gBuildAreas) {
let placements = gPlacements.get(areaId); let placements = gPlacements.get(areaId);
let isFirstChangedToolbar = true; let isFirstChangedToolbar = true;
@@ -4549,7 +4547,7 @@ var CustomizableUIInternal = { @@ -4552,7 +4550,7 @@ var CustomizableUIInternal = {
if (area.get("type") == CustomizableUI.TYPE_TOOLBAR) { if (area.get("type") == CustomizableUI.TYPE_TOOLBAR) {
let defaultCollapsed = area.get("defaultCollapsed"); let defaultCollapsed = area.get("defaultCollapsed");
let win = areaNode.ownerGlobal; let win = areaNode.ownerGlobal;
@@ -153,7 +153,7 @@ index 4f62449d670701c77c681ae36e00bae8bf2f636c..ac542f33927f9de9040bab9cd98351a4
win.setToolbarVisibility( win.setToolbarVisibility(
areaNode, areaNode,
typeof defaultCollapsed == "string" typeof defaultCollapsed == "string"
@@ -5840,6 +5838,7 @@ export var CustomizableUI = { @@ -5843,6 +5841,7 @@ export var CustomizableUI = {
unregisterArea(aName, aDestroyPlacements) { unregisterArea(aName, aDestroyPlacements) {
CustomizableUIInternal.unregisterArea(aName, aDestroyPlacements); CustomizableUIInternal.unregisterArea(aName, aDestroyPlacements);
}, },
@@ -161,7 +161,7 @@ index 4f62449d670701c77c681ae36e00bae8bf2f636c..ac542f33927f9de9040bab9cd98351a4
/** /**
* Add a widget to an area. * Add a widget to an area.
* If the area to which you try to add is not known to CustomizableUI, * 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.paddingLeft) -
parseFloat(style.paddingRight) - parseFloat(style.paddingRight) -
toolbarChildrenWidth; toolbarChildrenWidth;
@@ -175,17 +175,17 @@ index 4f62449d670701c77c681ae36e00bae8bf2f636c..ac542f33927f9de9040bab9cd98351a4
}); });
lazy.log.debug( lazy.log.debug(
@@ -7901,7 +7900,8 @@ class OverflowableToolbar { @@ -7909,7 +7908,8 @@ class OverflowableToolbar {
// If the target has min-width: 0, their children might actually overflow Math.max(targetWidth, targetChildrenWidth)
// it, so check for both cases explicitly. );
let targetContentWidth = Math.max(targetWidth, targetChildrenWidth); totalAvailWidth = Math.ceil(totalAvailWidth);
- let isOverflowing = Math.floor(targetContentWidth) > totalAvailWidth; - let isOverflowing = targetContentWidth > totalAvailWidth;
+ if (win.gZenVerticalTabsManager._hasSetSingleToolbar && this.#toolbar.id == 'nav-bar') return { isOverflowing: false, 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 }; return { isOverflowing, targetContentWidth, totalAvailWidth };
} }
@@ -7995,7 +7995,7 @@ class OverflowableToolbar { @@ -8003,7 +8003,7 @@ class OverflowableToolbar {
} }
} }
if (!inserted) { if (!inserted) {
@@ -194,7 +194,7 @@ index 4f62449d670701c77c681ae36e00bae8bf2f636c..ac542f33927f9de9040bab9cd98351a4
} }
child.removeAttribute("cui-anchorid"); child.removeAttribute("cui-anchorid");
child.removeAttribute("overflowedItem"); child.removeAttribute("overflowedItem");
@@ -8340,7 +8340,7 @@ class OverflowableToolbar { @@ -8348,7 +8348,7 @@ class OverflowableToolbar {
break; break;
} }
case "mousedown": { case "mousedown": {

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/extensions/parent/ext-browser.js b/browser/components/extensions/parent/ext-browser.js 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 --- a/browser/components/extensions/parent/ext-browser.js
+++ b/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) { getId(nativeTab) {
@@ -10,7 +10,7 @@ index 0baa038232d7e0fd9942f392c48acf7ea5ba50ed..093e1c29c3538d18eb2162b4e4b23ba4
let id = this._tabs.get(nativeTab); let id = this._tabs.get(nativeTab);
if (id) { if (id) {
return id; return id;
@@ -385,6 +386,7 @@ class TabTracker extends TabTrackerBase { @@ -388,6 +389,7 @@ class TabTracker extends TabTrackerBase {
if (nativeTab.ownerGlobal.closed) { if (nativeTab.ownerGlobal.closed) {
throw new Error("Cannot attach ID to a tab in a closed window."); 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); this._tabs.set(nativeTab, id);
if (nativeTab.linkedBrowser) { if (nativeTab.linkedBrowser) {
@@ -1268,6 +1270,10 @@ class TabManager extends TabManagerBase { @@ -1271,6 +1273,10 @@ class TabManager extends TabManagerBase {
} }
canAccessTab(nativeTab) { canAccessTab(nativeTab) {

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/places/content/browserPlacesViews.js b/browser/components/places/content/browserPlacesViews.js 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 --- a/browser/components/places/content/browserPlacesViews.js
+++ b/browser/components/places/content/browserPlacesViews.js +++ b/browser/components/places/content/browserPlacesViews.js
@@ -330,12 +330,23 @@ class PlacesViewBase { @@ -330,12 +330,23 @@ class PlacesViewBase {

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/preferences/jar.mn b/browser/components/preferences/jar.mn 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 --- a/browser/components/preferences/jar.mn
+++ b/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-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.mjs (widgets/setting-group/setting-group.mjs)
content/browser/preferences/widgets/setting-group.css (widgets/setting-group/setting-group.css) content/browser/preferences/widgets/setting-group.css (widgets/setting-group/setting-group.css)

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/preferences/main.inc.xhtml b/browser/components/preferences/main.inc.xhtml 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 --- a/browser/components/preferences/main.inc.xhtml
+++ b/browser/components/preferences/main.inc.xhtml +++ b/browser/components/preferences/main.inc.xhtml
@@ -29,6 +29,9 @@ @@ -29,6 +29,9 @@
@@ -12,7 +12,7 @@ index 66ce978d9b022285dea67fdb75b3c005adb05d9b..db61587570ca18403a82ea6796a756d4
#ifdef XP_WIN #ifdef XP_WIN
<hbox id="windowsLaunchOnLoginBox" align="center" hidden="true"> <hbox id="windowsLaunchOnLoginBox" align="center" hidden="true">
<checkbox id="windowsLaunchOnLogin" <checkbox id="windowsLaunchOnLogin"
@@ -188,7 +191,8 @@ @@ -189,7 +192,8 @@
<!-- Browser layout --> <!-- Browser layout -->
<groupbox data-category="paneGeneral" <groupbox data-category="paneGeneral"
data-subcategory="layout" data-subcategory="layout"
@@ -22,7 +22,7 @@ index 66ce978d9b022285dea67fdb75b3c005adb05d9b..db61587570ca18403a82ea6796a756d4
<label><html:h2 data-l10n-id="browser-layout-header"/></label> <label><html:h2 data-l10n-id="browser-layout-header"/></label>
<radiogroup id="browserLayoutRadioGroup" preference="sidebar.verticalTabs"> <radiogroup id="browserLayoutRadioGroup" preference="sidebar.verticalTabs">
<radio id="browserLayoutHorizontalTabs" data-l10n-id="browser-layout-horizontal-tabs" value="false"/> <radio id="browserLayoutHorizontalTabs" data-l10n-id="browser-layout-horizontal-tabs" value="false"/>
@@ -419,6 +423,7 @@ @@ -420,6 +424,7 @@
languages-customize-add.label, languages-customize-add.label,
" /> " />
</hbox> </hbox>

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/preferences/main.js b/browser/components/preferences/main.js 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 --- a/browser/components/preferences/main.js
+++ b/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( return new Localization(

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/preferences/preferences.js b/browser/components/preferences/preferences.js 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 --- a/browser/components/preferences/preferences.js
+++ b/browser/components/preferences/preferences.js +++ b/browser/components/preferences/preferences.js
@@ -117,6 +117,7 @@ ChromeUtils.defineLazyGetter(this, "gSubDialog", function () { @@ -117,6 +117,7 @@ ChromeUtils.defineLazyGetter(this, "gSubDialog", function () {

View File

@@ -1,17 +1,17 @@
diff --git a/browser/components/preferences/preferences.xhtml b/browser/components/preferences/preferences.xhtml 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 --- a/browser/components/preferences/preferences.xhtml
+++ b/browser/components/preferences/preferences.xhtml +++ b/browser/components/preferences/preferences.xhtml
@@ -44,6 +44,8 @@ @@ -45,6 +45,8 @@
<link rel="stylesheet" href="chrome://browser/skin/preferences/privacy.css" />
<link rel="stylesheet" href="chrome://browser/content/preferences/widgets/setting-group.css" /> <link rel="stylesheet" href="chrome://browser/content/preferences/widgets/setting-group.css" />
<link rel="stylesheet" href="chrome://browser/content/preferences/widgets/setting-control.css" />
+#include zen-preferences-links.xhtml +#include zen-preferences-links.xhtml
+ +
<link rel="localization" href="branding/brand.ftl"/> <link rel="localization" href="branding/brand.ftl"/>
<link rel="localization" href="browser/browser.ftl"/> <link rel="localization" href="browser/browser.ftl"/>
<!-- Used by fontbuilder.js --> <!-- Used by fontbuilder.js -->
@@ -104,6 +106,11 @@ @@ -106,6 +108,11 @@
<hbox flex="1"> <hbox flex="1">
<vbox class="navigation"> <vbox class="navigation">
@@ -23,7 +23,7 @@ index 21d951a19df06da67a28f717b9f80f8f4ebf77d2..b1f998f2b3ed99b19666e81e61428587
<!-- category list --> <!-- category list -->
<richlistbox id="categories" data-l10n-id="category-list" data-l10n-attrs="aria-label"> <richlistbox id="categories" data-l10n-id="category-list" data-l10n-attrs="aria-label">
<richlistitem id="category-general" <richlistitem id="category-general"
@@ -116,6 +123,50 @@ @@ -118,6 +125,50 @@
<label class="category-name" flex="1" data-l10n-id="pane-general-title"></label> <label class="category-name" flex="1" data-l10n-id="pane-general-title"></label>
</richlistitem> </richlistitem>
@@ -74,7 +74,7 @@ index 21d951a19df06da67a28f717b9f80f8f4ebf77d2..b1f998f2b3ed99b19666e81e61428587
<richlistitem id="category-home" <richlistitem id="category-home"
class="category" class="category"
value="paneHome" value="paneHome"
@@ -227,11 +278,6 @@ @@ -229,11 +280,6 @@
<html:a href="about:policies" target="_blank" data-l10n-id="managed-notice"/> <html:a href="about:policies" target="_blank" data-l10n-id="managed-notice"/>
</hbox> </hbox>
</hbox> </hbox>
@@ -86,7 +86,7 @@ index 21d951a19df06da67a28f717b9f80f8f4ebf77d2..b1f998f2b3ed99b19666e81e61428587
</hbox> </hbox>
</hbox> </hbox>
<vbox id="mainPrefPane"> <vbox id="mainPrefPane">
@@ -245,6 +291,10 @@ @@ -247,6 +293,10 @@
#include sync.inc.xhtml #include sync.inc.xhtml
#include experimental.inc.xhtml #include experimental.inc.xhtml
#include moreFromMozilla.inc.xhtml #include moreFromMozilla.inc.xhtml

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/screenshots/overlay/overlay.css b/browser/components/screenshots/overlay/overlay.css 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 --- a/browser/components/screenshots/overlay/overlay.css
+++ b/browser/components/screenshots/overlay/overlay.css +++ b/browser/components/screenshots/overlay/overlay.css
@@ -225,6 +225,9 @@ @@ -196,6 +196,9 @@
pointer-events: none; pointer-events: none;
position: absolute; position: absolute;
z-index: var(--screenshots-high-layer); z-index: var(--screenshots-high-layer);
@@ -12,7 +12,7 @@ index 037b060327d896e1ec0d087ade80df7548c8c1f7..7a158291c56df0e3b01bf7a37d04de71
} }
#top-background { #top-background {
@@ -243,7 +246,7 @@ @@ -214,7 +217,7 @@
} }
.bghighlight { .bghighlight {

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/search/SearchUIUtils.sys.mjs b/browser/components/search/SearchUIUtils.sys.mjs 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 --- a/browser/components/search/SearchUIUtils.sys.mjs
+++ b/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, triggeringSearchEngine: engine.name,
}, },
}); });

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/sessionstore/SessionStore.sys.mjs b/browser/components/sessionstore/SessionStore.sys.mjs 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 --- a/browser/components/sessionstore/SessionStore.sys.mjs
+++ b/browser/components/sessionstore/SessionStore.sys.mjs +++ b/browser/components/sessionstore/SessionStore.sys.mjs
@@ -126,6 +126,8 @@ const TAB_EVENTS = [ @@ -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"; 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 "TabPinned":
case "TabUnpinned": case "TabUnpinned":
case "SwapDocShells": case "SwapDocShells":
@@ -20,7 +20,7 @@ index e8192ea9d8d35165fbfbb8c4fc4a96641a80cc86..cf13724d147c8b8fc35c76d7f77601eb
this.saveStateDelayed(win); this.saveStateDelayed(win);
break; break;
case "TabGroupCreate": case "TabGroupCreate":
@@ -2133,7 +2137,6 @@ var SessionStoreInternal = { @@ -2139,7 +2143,6 @@ var SessionStoreInternal = {
if (closedWindowState) { if (closedWindowState) {
let newWindowState; let newWindowState;
if ( if (
@@ -28,7 +28,7 @@ index e8192ea9d8d35165fbfbb8c4fc4a96641a80cc86..cf13724d147c8b8fc35c76d7f77601eb
!lazy.SessionStartup.willRestore() !lazy.SessionStartup.willRestore()
) { ) {
// We want to split the window up into pinned tabs and unpinned tabs. // 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; tabbrowser.selectedTab.label;
} }
@@ -40,7 +40,7 @@ index e8192ea9d8d35165fbfbb8c4fc4a96641a80cc86..cf13724d147c8b8fc35c76d7f77601eb
// Store the window's close date to figure out when each individual tab // 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 // 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) { if (!isPrivateWindow && tabState.isPrivate) {
return; return;
} }
@@ -49,7 +49,7 @@ index e8192ea9d8d35165fbfbb8c4fc4a96641a80cc86..cf13724d147c8b8fc35c76d7f77601eb
return; return;
} }
@@ -4067,6 +4068,11 @@ var SessionStoreInternal = { @@ -4073,6 +4074,11 @@ var SessionStoreInternal = {
Math.min(tabState.index, tabState.entries.length) Math.min(tabState.index, tabState.entries.length)
); );
tabState.pinned = false; tabState.pinned = false;
@@ -61,7 +61,7 @@ index e8192ea9d8d35165fbfbb8c4fc4a96641a80cc86..cf13724d147c8b8fc35c76d7f77601eb
if (inBackground === false) { if (inBackground === false) {
aWindow.gBrowser.selectedTab = newTab; 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, // Append the tab if we're opening into a different window,
tabIndex: aSource == aTargetWindow ? pos : Infinity, tabIndex: aSource == aTargetWindow ? pos : Infinity,
pinned: state.pinned, pinned: state.pinned,
@@ -138,7 +138,7 @@ index e8192ea9d8d35165fbfbb8c4fc4a96641a80cc86..cf13724d147c8b8fc35c76d7f77601eb
this._log.debug( this._log.debug(
`restoreWindow, createTabsForSessionRestore returned ${tabs.length} tabs` `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 // Most of tabData has been restored, now continue with restoring
// attributes that may trigger external events. // attributes that may trigger external events.
@@ -164,7 +164,7 @@ index e8192ea9d8d35165fbfbb8c4fc4a96641a80cc86..cf13724d147c8b8fc35c76d7f77601eb
if (tabData.pinned) { if (tabData.pinned) {
tabbrowser.pinTab(tab); tabbrowser.pinTab(tab);
@@ -7264,7 +7294,7 @@ var SessionStoreInternal = { @@ -7263,7 +7293,7 @@ var SessionStoreInternal = {
let groupsToSave = new Map(); let groupsToSave = new Map();
for (let tIndex = 0; tIndex < window.tabs.length; ) { for (let tIndex = 0; tIndex < window.tabs.length; ) {

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/sidebar/browser-sidebar.js b/browser/components/sidebar/browser-sidebar.js 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 --- a/browser/components/sidebar/browser-sidebar.js
+++ b/browser/components/sidebar/browser-sidebar.js +++ b/browser/components/sidebar/browser-sidebar.js
@@ -779,7 +779,7 @@ var SidebarController = { @@ -779,7 +779,7 @@ var SidebarController = {

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/tabbrowser/TabsList.sys.mjs b/browser/components/tabbrowser/TabsList.sys.mjs 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 --- a/browser/components/tabbrowser/TabsList.sys.mjs
+++ b/browser/components/tabbrowser/TabsList.sys.mjs +++ b/browser/components/tabbrowser/TabsList.sys.mjs
@@ -87,7 +87,7 @@ class TabsListBase { @@ -87,7 +87,7 @@ class TabsListBase {

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/tabbrowser/content/tab.js b/browser/components/tabbrowser/content/tab.js 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 --- a/browser/components/tabbrowser/content/tab.js
+++ b/browser/components/tabbrowser/content/tab.js +++ b/browser/components/tabbrowser/content/tab.js
@@ -21,6 +21,7 @@ @@ -21,6 +21,7 @@
@@ -31,7 +31,7 @@ index fd2465046407261e8c29b4cd3d56122d232e701c..108bc7eae78898bf8a84ddadbacca2d6
"fadein,pinned,busy,progress,selected=visuallyselected", "fadein,pinned,busy,progress,selected=visuallyselected",
".tab-icon-pending": ".tab-icon-pending":
@@ -93,9 +96,9 @@ @@ -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-sharing-icon-overlay": "sharing,selected=visuallyselected,pinned",
".tab-icon-overlay": ".tab-icon-overlay":
- "sharing,pictureinpicture,crashed,busy,soundplaying,soundplaying-scheduledremoval,pinned,muted,blocked,selected=visuallyselected,activemedia-blocked", - "sharing,pictureinpicture,crashed,busy,soundplaying,soundplaying-scheduledremoval,pinned,muted,blocked,selected=visuallyselected,activemedia-blocked",
@@ -101,7 +101,7 @@ index fd2465046407261e8c29b4cd3d56122d232e701c..108bc7eae78898bf8a84ddadbacca2d6
} }
return null; return null;
} }
@@ -459,6 +475,8 @@ @@ -468,6 +484,8 @@
this.style.MozUserFocus = "ignore"; this.style.MozUserFocus = "ignore";
} else if ( } else if (
event.target.classList.contains("tab-close-button") || 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-icon-overlay") ||
event.target.classList.contains("tab-audio-button") event.target.classList.contains("tab-audio-button")
) { ) {
@@ -513,6 +531,10 @@ @@ -522,6 +540,10 @@
this.style.MozUserFocus = ""; this.style.MozUserFocus = "";
} }
@@ -121,7 +121,7 @@ index fd2465046407261e8c29b4cd3d56122d232e701c..108bc7eae78898bf8a84ddadbacca2d6
on_click(event) { on_click(event) {
if (event.button != 0) { if (event.button != 0) {
return; return;
@@ -561,6 +583,7 @@ @@ -570,6 +592,7 @@
) )
); );
} else { } else {
@@ -129,7 +129,7 @@ index fd2465046407261e8c29b4cd3d56122d232e701c..108bc7eae78898bf8a84ddadbacca2d6
gBrowser.removeTab(this, { gBrowser.removeTab(this, {
animate: true, animate: true,
triggeringEvent: event, triggeringEvent: event,
@@ -573,6 +596,14 @@ @@ -582,6 +605,14 @@
// (see tabbrowser-tabs 'click' handler). // (see tabbrowser-tabs 'click' handler).
gBrowser.tabContainer._blockDblClick = true; gBrowser.tabContainer._blockDblClick = true;
} }
@@ -144,7 +144,7 @@ index fd2465046407261e8c29b4cd3d56122d232e701c..108bc7eae78898bf8a84ddadbacca2d6
} }
on_dblclick(event) { on_dblclick(event) {
@@ -596,6 +627,8 @@ @@ -605,6 +636,8 @@
animate: true, animate: true,
triggeringEvent: event, triggeringEvent: event,
}); });

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/tabbrowser/content/tabbrowser.js b/browser/components/tabbrowser/content/tabbrowser.js 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 --- a/browser/components/tabbrowser/content/tabbrowser.js
+++ b/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; return this.tabContainer.visibleTabs;
} }
@@ -69,7 +69,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
set selectedTab(val) { set selectedTab(val) {
if ( if (
gSharedTabWarning.willShowSharedTabWarning(val) || gSharedTabWarning.willShowSharedTabWarning(val) ||
@@ -583,6 +632,7 @@ @@ -588,6 +637,7 @@
this.tabpanels.appendChild(panel); this.tabpanels.appendChild(panel);
let tab = this.tabs[0]; let tab = this.tabs[0];
@@ -77,22 +77,26 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
tab.linkedPanel = uniqueId; tab.linkedPanel = uniqueId;
this._selectedTab = tab; this._selectedTab = tab;
this._selectedBrowser = browser; this._selectedBrowser = browser;
@@ -868,9 +918,13 @@ @@ -873,13 +923,17 @@
} }
this.showTab(aTab); this.showTab(aTab);
+ const handled = gZenFolders.handleTabPin(aTab); + const handled = gZenFolders.handleTabPin(aTab);
+ if (!handled) { + if (!handled) {
+ this.ungroupTab(aTab); + this.ungroupTab(aTab);
this.#handleTabMove(aTab, () => this.#handleTabMove(aTab, () => {
- this.pinnedTabsContainer.appendChild(aTab) let periphery = document.getElementById(
+ aTab.hasAttribute("zen-essential") ? gZenWorkspaces.getEssentialsSection(aTab).appendChild(aTab) : this.pinnedTabsContainer.insertBefore(aTab, this.pinnedTabsContainer.lastChild) "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"); aTab.setAttribute("pinned", "true");
this._updateTabBarForPinnedTabs(); this._updateTabBarForPinnedTabs();
@@ -883,11 +937,15 @@ @@ -892,11 +946,15 @@
} }
this.#handleTabMove(aTab, () => { this.#handleTabMove(aTab, () => {
@@ -109,7 +113,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
}); });
aTab.style.marginInlineStart = ""; aTab.style.marginInlineStart = "";
@@ -1065,6 +1123,8 @@ @@ -1073,6 +1131,8 @@
let LOCAL_PROTOCOLS = ["chrome:", "about:", "resource:", "data:"]; let LOCAL_PROTOCOLS = ["chrome:", "about:", "resource:", "data:"];
@@ -117,8 +121,8 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
+ gZenPinnedTabManager.onTabIconChanged(aTab, aIconURL); + gZenPinnedTabManager.onTabIconChanged(aTab, aIconURL);
if ( if (
aIconURL && aIconURL &&
!aLoadingPrincipal && !LOCAL_PROTOCOLS.some(protocol => aIconURL.startsWith(protocol))
@@ -1075,6 +1135,9 @@ @@ -1082,6 +1142,9 @@
); );
return; return;
} }
@@ -128,7 +132,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
let browser = this.getBrowserForTab(aTab); let browser = this.getBrowserForTab(aTab);
browser.mIconURL = aIconURL; browser.mIconURL = aIconURL;
@@ -1333,6 +1396,7 @@ @@ -1445,6 +1508,7 @@
if (!this._previewMode) { if (!this._previewMode) {
newTab.recordTimeFromUnloadToReload(); newTab.recordTimeFromUnloadToReload();
newTab.updateLastAccessed(); newTab.updateLastAccessed();
@@ -136,7 +140,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
oldTab.updateLastAccessed(); oldTab.updateLastAccessed();
// if this is the foreground window, update the last-seen timestamps. // if this is the foreground window, update the last-seen timestamps.
if (this.ownerGlobal == BrowserWindowTracker.getTopWindow()) { if (this.ownerGlobal == BrowserWindowTracker.getTopWindow()) {
@@ -1485,6 +1549,9 @@ @@ -1597,6 +1661,9 @@
} }
let activeEl = document.activeElement; 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 focus is on the old tab, move it to the new tab.
if (activeEl == oldTab) { if (activeEl == oldTab) {
newTab.focus(); newTab.focus();
@@ -1808,7 +1875,8 @@ @@ -1920,7 +1987,8 @@
} }
_setTabLabel(aTab, aLabel, { beforeTabOpen, isContentTitle, isURL } = {}) { _setTabLabel(aTab, aLabel, { beforeTabOpen, isContentTitle, isURL } = {}) {
@@ -156,7 +160,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
return false; return false;
} }
@@ -1916,7 +1984,7 @@ @@ -2028,7 +2096,7 @@
newIndex = this.selectedTab._tPos + 1; newIndex = this.selectedTab._tPos + 1;
} }
@@ -165,7 +169,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
if (this.isTabGroupLabel(targetTab)) { if (this.isTabGroupLabel(targetTab)) {
throw new Error( throw new Error(
"Replacing a tab group label with a tab is not supported" "Replacing a tab group label with a tab is not supported"
@@ -2191,6 +2259,7 @@ @@ -2303,6 +2371,7 @@
uriIsAboutBlank, uriIsAboutBlank,
userContextId, userContextId,
skipLoad, skipLoad,
@@ -173,7 +177,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
} = {}) { } = {}) {
let b = document.createXULElement("browser"); let b = document.createXULElement("browser");
// Use the JSM global to create the permanentKey, so that if the // 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? // we use a different attribute name for this?
b.setAttribute("name", name); b.setAttribute("name", name);
} }
@@ -183,7 +187,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
b.setAttribute("transparent", "true"); b.setAttribute("transparent", "true");
} }
@@ -2430,7 +2498,7 @@ @@ -2542,7 +2610,7 @@
let panel = this.getPanel(browser); let panel = this.getPanel(browser);
let uniqueId = this._generateUniquePanelID(); let uniqueId = this._generateUniquePanelID();
@@ -192,7 +196,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
aTab.linkedPanel = uniqueId; aTab.linkedPanel = uniqueId;
// Inject the <browser> into the DOM if necessary. // Inject the <browser> 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 // If we transitioned from one browser to two browsers, we need to set
// hasSiblings=false on both the existing browser and the new browser. // hasSiblings=false on both the existing browser and the new browser.
if (this.tabs.length == 2) { if (this.tabs.length == 2) {
@@ -203,7 +207,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
} else { } else {
aTab.linkedBrowser.browsingContext.hasSiblings = this.tabs.length > 1; aTab.linkedBrowser.browsingContext.hasSiblings = this.tabs.length > 1;
} }
@@ -2654,7 +2722,6 @@ @@ -2779,7 +2847,6 @@
this.selectedTab = this.addTrustedTab(BROWSER_NEW_TAB_URL, { this.selectedTab = this.addTrustedTab(BROWSER_NEW_TAB_URL, {
tabIndex: tab._tPos + 1, tabIndex: tab._tPos + 1,
userContextId: tab.userContextId, userContextId: tab.userContextId,
@@ -211,7 +215,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
focusUrlBar: true, focusUrlBar: true,
}); });
resolve(this.selectedBrowser); resolve(this.selectedBrowser);
@@ -2734,6 +2801,8 @@ @@ -2859,6 +2926,8 @@
schemelessInput, schemelessInput,
hasValidUserGestureActivation = false, hasValidUserGestureActivation = false,
textDirectiveUserActivation = false, textDirectiveUserActivation = false,
@@ -220,7 +224,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
} = {} } = {}
) { ) {
// all callers of addTab that pass a params object need to pass // 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)) { if (!UserInteraction.running("browser.tabs.opening", window)) {
UserInteraction.start("browser.tabs.opening", "initting", window); UserInteraction.start("browser.tabs.opening", "initting", window);
} }
@@ -2807,6 +2882,19 @@ @@ -2932,6 +3007,19 @@
noInitialLabel, noInitialLabel,
skipBackgroundNotify, skipBackgroundNotify,
}); });
@@ -253,7 +257,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
if (insertTab) { if (insertTab) {
// Insert the tab into the tab container in the correct position. // Insert the tab into the tab container in the correct position.
this.#insertTabAtIndex(t, { this.#insertTabAtIndex(t, {
@@ -2815,6 +2903,7 @@ @@ -2940,6 +3028,7 @@
ownerTab, ownerTab,
openerTab, openerTab,
pinned, pinned,
@@ -261,7 +265,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
bulkOrderedOpen, bulkOrderedOpen,
tabGroup: tabGroup ?? openerTab?.group, tabGroup: tabGroup ?? openerTab?.group,
}); });
@@ -2833,6 +2922,7 @@ @@ -2958,6 +3047,7 @@
openWindowInfo, openWindowInfo,
skipLoad, skipLoad,
triggeringRemoteType, triggeringRemoteType,
@@ -269,7 +273,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
})); }));
if (focusUrlBar) { if (focusUrlBar) {
@@ -2953,6 +3043,12 @@ @@ -3078,6 +3168,12 @@
} }
} }
@@ -282,7 +286,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
// Additionally send pinned tab events // Additionally send pinned tab events
if (pinned) { if (pinned) {
this.#notifyPinnedStatus(t); this.#notifyPinnedStatus(t);
@@ -3041,10 +3137,10 @@ @@ -3248,10 +3344,10 @@
isAdoptingGroup = false, isAdoptingGroup = false,
isUserTriggered = false, isUserTriggered = false,
telemetryUserCreateSource = "unknown", telemetryUserCreateSource = "unknown",
@@ -294,7 +298,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
} }
if (!color) { if (!color) {
@@ -3065,9 +3161,14 @@ @@ -3272,9 +3368,14 @@
label, label,
isAdoptingGroup isAdoptingGroup
); );
@@ -311,7 +315,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
); );
group.addTabs(tabs); group.addTabs(tabs);
@@ -3188,7 +3289,7 @@ @@ -3395,7 +3496,7 @@
} }
this.#handleTabMove(tab, () => this.#handleTabMove(tab, () =>
@@ -320,7 +324,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
); );
} }
@@ -3390,6 +3491,7 @@ @@ -3597,6 +3698,7 @@
openWindowInfo, openWindowInfo,
skipLoad, skipLoad,
triggeringRemoteType, triggeringRemoteType,
@@ -328,7 +332,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
} }
) { ) {
// If we don't have a preferred remote type (or it is `NOT_REMOTE`), and // If we don't have a preferred remote type (or it is `NOT_REMOTE`), and
@@ -3459,6 +3561,7 @@ @@ -3666,6 +3768,7 @@
openWindowInfo, openWindowInfo,
name, name,
skipLoad, skipLoad,
@@ -336,7 +340,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
}); });
} }
@@ -3646,7 +3749,7 @@ @@ -3853,7 +3956,7 @@
// Add a new tab if needed. // Add a new tab if needed.
if (!tab) { if (!tab) {
let createLazyBrowser = let createLazyBrowser =
@@ -345,7 +349,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
let url = "about:blank"; let url = "about:blank";
if (tabData.entries?.length) { if (tabData.entries?.length) {
@@ -3683,8 +3786,10 @@ @@ -3890,8 +3993,10 @@
insertTab: false, insertTab: false,
skipLoad: true, skipLoad: true,
preferredRemoteType, preferredRemoteType,
@@ -357,7 +361,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
if (select) { if (select) {
tabToSelect = tab; tabToSelect = tab;
} }
@@ -3696,7 +3801,8 @@ @@ -3903,7 +4008,8 @@
this.pinTab(tab); this.pinTab(tab);
// Then ensure all the tab open/pinning information is sent. // Then ensure all the tab open/pinning information is sent.
this._fireTabOpen(tab, {}); this._fireTabOpen(tab, {});
@@ -367,7 +371,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
let { groupId } = tabData; let { groupId } = tabData;
const tabGroup = tabGroupWorkingData.get(groupId); const tabGroup = tabGroupWorkingData.get(groupId);
// if a tab refers to a tab group we don't know, skip any group // 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.id,
tabGroup.stateData.color, tabGroup.stateData.color,
tabGroup.stateData.collapsed, tabGroup.stateData.collapsed,
@@ -379,7 +383,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
); );
tabsFragment.appendChild(tabGroup.node); tabsFragment.appendChild(tabGroup.node);
} }
@@ -3755,9 +3864,23 @@ @@ -3962,9 +4071,23 @@
// to remove the old selected tab. // to remove the old selected tab.
if (tabToSelect) { if (tabToSelect) {
let leftoverTab = this.selectedTab; let leftoverTab = this.selectedTab;
@@ -403,7 +407,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
if (tabs.length > 1 || !tabs[0].selected) { if (tabs.length > 1 || !tabs[0].selected) {
this._updateTabsAfterInsert(); this._updateTabsAfterInsert();
@@ -3948,11 +4071,14 @@ @@ -4155,11 +4278,14 @@
if (ownerTab) { if (ownerTab) {
tab.owner = ownerTab; tab.owner = ownerTab;
} }
@@ -419,7 +423,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
if ( if (
!bulkOrderedOpen && !bulkOrderedOpen &&
((openerTab && ((openerTab &&
@@ -3964,7 +4090,7 @@ @@ -4171,7 +4297,7 @@
let lastRelatedTab = let lastRelatedTab =
openerTab && this._lastRelatedTabMap.get(openerTab); openerTab && this._lastRelatedTabMap.get(openerTab);
let previousTab = lastRelatedTab || openerTab || this.selectedTab; let previousTab = lastRelatedTab || openerTab || this.selectedTab;
@@ -428,7 +432,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
tabGroup = previousTab.group; tabGroup = previousTab.group;
} }
if ( if (
@@ -3975,7 +4101,7 @@ @@ -4182,7 +4308,7 @@
) { ) {
elementIndex = Infinity; elementIndex = Infinity;
} else if (previousTab.visible) { } else if (previousTab.visible) {
@@ -437,7 +441,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
} else if (previousTab == FirefoxViewHandler.tab) { } else if (previousTab == FirefoxViewHandler.tab) {
elementIndex = 0; elementIndex = 0;
} }
@@ -4003,14 +4129,14 @@ @@ -4210,14 +4336,14 @@
} }
// Ensure index is within bounds. // Ensure index is within bounds.
if (tab.pinned) { if (tab.pinned) {
@@ -456,7 +460,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
if (pinned && !itemAfter?.pinned) { if (pinned && !itemAfter?.pinned) {
itemAfter = null; itemAfter = null;
@@ -4021,7 +4147,7 @@ @@ -4228,7 +4354,7 @@
this.tabContainer._invalidateCachedTabs(); this.tabContainer._invalidateCachedTabs();
@@ -465,7 +469,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
if (this.isTab(itemAfter) && itemAfter.group == tabGroup) { if (this.isTab(itemAfter) && itemAfter.group == tabGroup) {
// Place at the front of, or between tabs in, the same tab group // Place at the front of, or between tabs in, the same tab group
this.tabContainer.insertBefore(tab, itemAfter); this.tabContainer.insertBefore(tab, itemAfter);
@@ -4057,6 +4183,7 @@ @@ -4264,6 +4390,7 @@
if (pinned) { if (pinned) {
this._updateTabBarForPinnedTabs(); this._updateTabBarForPinnedTabs();
} }
@@ -473,7 +477,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
TabBarVisibility.update(); TabBarVisibility.update();
} }
@@ -4346,6 +4473,9 @@ @@ -4553,6 +4680,9 @@
return; return;
} }
@@ -483,7 +487,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
this.removeTabs(selectedTabs, { isUserTriggered, telemetrySource }); this.removeTabs(selectedTabs, { isUserTriggered, telemetrySource });
} }
@@ -4607,6 +4737,7 @@ @@ -4814,6 +4944,7 @@
telemetrySource, telemetrySource,
} = {} } = {}
) { ) {
@@ -491,7 +495,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
// When 'closeWindowWithLastTab' pref is enabled, closing all tabs // When 'closeWindowWithLastTab' pref is enabled, closing all tabs
// can be considered equivalent to closing the window. // can be considered equivalent to closing the window.
if ( if (
@@ -4696,6 +4827,7 @@ @@ -4903,6 +5034,7 @@
if (lastToClose) { if (lastToClose) {
this.removeTab(lastToClose, aParams); this.removeTab(lastToClose, aParams);
} }
@@ -499,7 +503,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
} catch (e) { } catch (e) {
console.error(e); console.error(e);
} }
@@ -4734,6 +4866,12 @@ @@ -4941,6 +5073,12 @@
aTab._closeTimeNoAnimTimerId = Glean.browserTabclose.timeNoAnim.start(); aTab._closeTimeNoAnimTimerId = Glean.browserTabclose.timeNoAnim.start();
} }
@@ -512,7 +516,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
// Handle requests for synchronously removing an already // Handle requests for synchronously removing an already
// asynchronously closing tab. // asynchronously closing tab.
if (!animate && aTab.closing) { if (!animate && aTab.closing) {
@@ -4748,6 +4886,9 @@ @@ -4955,6 +5093,9 @@
// state). // state).
let tabWidth = window.windowUtils.getBoundsWithoutFlushing(aTab).width; let tabWidth = window.windowUtils.getBoundsWithoutFlushing(aTab).width;
let isLastTab = this.#isLastTabInWindow(aTab); let isLastTab = this.#isLastTabInWindow(aTab);
@@ -522,7 +526,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
if ( if (
!this._beginRemoveTab(aTab, { !this._beginRemoveTab(aTab, {
closeWindowFastpath: true, closeWindowFastpath: true,
@@ -4796,7 +4937,13 @@ @@ -5003,7 +5144,13 @@
// We're not animating, so we can cancel the animation stopwatch. // We're not animating, so we can cancel the animation stopwatch.
Glean.browserTabclose.timeAnim.cancel(aTab._closeTimeAnimTimerId); Glean.browserTabclose.timeAnim.cancel(aTab._closeTimeAnimTimerId);
aTab._closeTimeAnimTimerId = null; aTab._closeTimeAnimTimerId = null;
@@ -537,7 +541,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
return; return;
} }
@@ -4930,7 +5077,7 @@ @@ -5137,7 +5284,7 @@
closeWindowWithLastTab != null closeWindowWithLastTab != null
? closeWindowWithLastTab ? closeWindowWithLastTab
: !window.toolbar.visible || : !window.toolbar.visible ||
@@ -546,7 +550,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
if (closeWindow) { if (closeWindow) {
// We've already called beforeunload on all the relevant tabs if we get here, // We've already called beforeunload on all the relevant tabs if we get here,
@@ -4954,6 +5101,7 @@ @@ -5161,6 +5308,7 @@
newTab = true; newTab = true;
} }
@@ -554,7 +558,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
aTab._endRemoveArgs = [closeWindow, newTab]; aTab._endRemoveArgs = [closeWindow, newTab];
// swapBrowsersAndCloseOther will take care of closing the window without animation. // swapBrowsersAndCloseOther will take care of closing the window without animation.
@@ -4994,13 +5142,7 @@ @@ -5201,13 +5349,7 @@
aTab._mouseleave(); aTab._mouseleave();
if (newTab) { if (newTab) {
@@ -569,7 +573,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
} else { } else {
TabBarVisibility.update(); TabBarVisibility.update();
} }
@@ -5133,6 +5275,7 @@ @@ -5340,6 +5482,7 @@
this.tabs[i]._tPos = i; this.tabs[i]._tPos = i;
} }
@@ -577,7 +581,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
if (!this._windowIsClosing) { if (!this._windowIsClosing) {
// update tab close buttons state // update tab close buttons state
this.tabContainer._updateCloseButtons(); this.tabContainer._updateCloseButtons();
@@ -5345,6 +5488,7 @@ @@ -5552,6 +5695,7 @@
} }
let excludeTabs = new Set(aExcludeTabs); let excludeTabs = new Set(aExcludeTabs);
@@ -585,7 +589,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
// If this tab has a successor, it should be selectable, since // If this tab has a successor, it should be selectable, since
// hiding or closing a tab removes that tab as a successor. // hiding or closing a tab removes that tab as a successor.
@@ -5357,13 +5501,13 @@ @@ -5564,13 +5708,13 @@
!excludeTabs.has(aTab.owner) && !excludeTabs.has(aTab.owner) &&
Services.prefs.getBoolPref("browser.tabs.selectOwnerOnClose") Services.prefs.getBoolPref("browser.tabs.selectOwnerOnClose")
) { ) {
@@ -601,7 +605,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
); );
let tab = this.tabContainer.findNextTab(aTab, { let tab = this.tabContainer.findNextTab(aTab, {
@@ -5379,7 +5523,7 @@ @@ -5586,7 +5730,7 @@
} }
if (tab) { if (tab) {
@@ -610,7 +614,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
} }
// If no qualifying visible tab was found, see if there is a tab in // 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) { _blurTab(aTab) {
@@ -5802,10 +5946,10 @@ @@ -6013,10 +6157,10 @@
SessionStore.deleteCustomTabValue(aTab, "hiddenBy"); SessionStore.deleteCustomTabValue(aTab, "hiddenBy");
} }
@@ -632,7 +636,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
aTab.selected || aTab.selected ||
aTab.closing || aTab.closing ||
// Tabs that are sharing the screen, microphone or camera cannot be hidden. // 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 * @param {MozTabbrowserTab|MozTabbrowserTabGroup|MozTabbrowserTabGroup.labelElement} aTab
*/ */
replaceTabWithWindow(aTab, aOptions) { replaceTabWithWindow(aTab, aOptions) {
@@ -640,7 +644,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
if (this.tabs.length == 1) { if (this.tabs.length == 1) {
return null; return null;
} }
@@ -5997,7 +6142,7 @@ @@ -6208,7 +6353,7 @@
* `true` if element is a `<tab-group>` * `true` if element is a `<tab-group>`
*/ */
isTabGroup(element) { 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. // Don't allow mixing pinned and unpinned tabs.
@@ -660,7 +664,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
} else { } else {
tabIndex = Math.max(tabIndex, this.pinnedTabCount); tabIndex = Math.max(tabIndex, this.pinnedTabCount);
} }
@@ -6100,10 +6245,16 @@ @@ -6311,10 +6456,16 @@
this.#handleTabMove( this.#handleTabMove(
element, element,
() => { () => {
@@ -679,7 +683,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
if (neighbor && this.isTab(element) && tabIndex > element._tPos) { if (neighbor && this.isTab(element) && tabIndex > element._tPos) {
neighbor.after(element); neighbor.after(element);
} else { } else {
@@ -6161,23 +6312,28 @@ @@ -6372,23 +6523,28 @@
#moveTabNextTo(element, targetElement, moveBefore = false, metricsContext) { #moveTabNextTo(element, targetElement, moveBefore = false, metricsContext) {
if (this.isTabGroupLabel(targetElement)) { if (this.isTabGroupLabel(targetElement)) {
targetElement = targetElement.group; targetElement = targetElement.group;
@@ -714,7 +718,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
} else if (!element.pinned && targetElement && targetElement.pinned) { } else if (!element.pinned && targetElement && targetElement.pinned) {
// If the caller asks to move an unpinned element next to a 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 // 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. // move the tab group right before the first unpinned tab.
// 4. Moving a tab group and the first unpinned tab is grouped: // 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. // move the tab group right before the first unpinned tab's tab group.
@@ -750,7 +754,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
element.pinned element.pinned
? this.tabContainer.pinnedTabsContainer ? this.tabContainer.pinnedTabsContainer
: this.tabContainer; : this.tabContainer;
@@ -6206,7 +6382,7 @@ @@ -6417,7 +6593,7 @@
element, element,
() => { () => {
if (moveBefore) { if (moveBefore) {
@@ -759,7 +763,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
} else if (targetElement) { } else if (targetElement) {
targetElement.after(element); targetElement.after(element);
} else { } else {
@@ -6252,10 +6428,10 @@ @@ -6489,10 +6665,10 @@
* @param {TabMetricsContext} [metricsContext] * @param {TabMetricsContext} [metricsContext]
*/ */
moveTabToGroup(aTab, aGroup, metricsContext) { moveTabToGroup(aTab, aGroup, metricsContext) {
@@ -772,7 +776,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
return; return;
} }
if (aTab.group && aTab.group.id === aGroup.id) { if (aTab.group && aTab.group.id === aGroup.id) {
@@ -6285,6 +6461,7 @@ @@ -6522,6 +6698,7 @@
let state = { let state = {
tabIndex: tab._tPos, tabIndex: tab._tPos,
@@ -780,7 +784,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
}; };
if (tab.visible) { if (tab.visible) {
state.elementIndex = tab.elementIndex; state.elementIndex = tab.elementIndex;
@@ -6311,7 +6488,7 @@ @@ -6548,7 +6725,7 @@
let changedTabGroup = let changedTabGroup =
previousTabState.tabGroupId != currentTabState.tabGroupId; previousTabState.tabGroupId != currentTabState.tabGroupId;
@@ -789,7 +793,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
tab.dispatchEvent( tab.dispatchEvent(
new CustomEvent("TabMove", { new CustomEvent("TabMove", {
bubbles: true, bubbles: true,
@@ -6348,6 +6525,10 @@ @@ -6585,6 +6762,10 @@
moveActionCallback(); moveActionCallback();
@@ -800,7 +804,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
// Clear tabs cache after moving nodes because the order of tabs may have // Clear tabs cache after moving nodes because the order of tabs may have
// changed. // changed.
this.tabContainer._invalidateCachedTabs(); this.tabContainer._invalidateCachedTabs();
@@ -7249,7 +7430,7 @@ @@ -7486,7 +7667,7 @@
// preventDefault(). It will still raise the window if appropriate. // preventDefault(). It will still raise the window if appropriate.
break; break;
} }
@@ -809,7 +813,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
window.focus(); window.focus();
aEvent.preventDefault(); aEvent.preventDefault();
break; break;
@@ -7264,7 +7445,6 @@ @@ -7501,7 +7682,6 @@
} }
case "TabGroupCollapse": case "TabGroupCollapse":
aEvent.target.tabs.forEach(tab => { aEvent.target.tabs.forEach(tab => {
@@ -817,7 +821,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
}); });
break; break;
case "TabGroupCreateByUser": case "TabGroupCreateByUser":
@@ -8199,6 +8379,7 @@ @@ -8442,6 +8622,7 @@
aWebProgress.isTopLevel aWebProgress.isTopLevel
) { ) {
this.mTab.setAttribute("busy", "true"); this.mTab.setAttribute("busy", "true");
@@ -825,7 +829,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
gBrowser._tabAttrModified(this.mTab, ["busy"]); gBrowser._tabAttrModified(this.mTab, ["busy"]);
this.mTab._notselectedsinceload = !this.mTab.selected; this.mTab._notselectedsinceload = !this.mTab.selected;
} }
@@ -9200,7 +9381,7 @@ var TabContextMenu = { @@ -9443,7 +9624,7 @@ var TabContextMenu = {
); );
contextUnpinSelectedTabs.hidden = contextUnpinSelectedTabs.hidden =
!this.contextTab.pinned || !this.multiselected; !this.contextTab.pinned || !this.multiselected;
@@ -834,7 +838,7 @@ index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80e
// Build Ask Chat items // Build Ask Chat items
TabContextMenu.GenAI.buildTabMenu( TabContextMenu.GenAI.buildTabMenu(
document.getElementById("context_askChat"), document.getElementById("context_askChat"),
@@ -9520,6 +9701,7 @@ var TabContextMenu = { @@ -9763,6 +9944,7 @@ var TabContextMenu = {
) )
); );
} else { } else {

View File

@@ -1,24 +1,23 @@
diff --git a/browser/components/tabbrowser/content/tabgroup.js b/browser/components/tabbrowser/content/tabgroup.js 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 --- a/browser/components/tabbrowser/content/tabgroup.js
+++ b/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 { class MozTabbrowserTabGroup extends MozXULElement {
static markup = ` static markup = `
- <vbox class="tab-group-label-container" pack="center"> <vbox class="tab-group-label-container" pack="center">
+ <hbox class="tab-group-label-container" pack="center"> - <vbox class="tab-group-label-hover-highlight" pack="center">
<label class="tab-group-label" role="button" /> <label class="tab-group-label" role="button" />
- </vbox> - </vbox>
</vbox>
- <html:slot/> - <html:slot/>
+ </hbox>
+ <html:div class="tab-group-container"> + <html:div class="tab-group-container">
+ <html:div class="zen-tab-group-start"/> + <html:div class="zen-tab-group-start"/>
+ </html:div> + </html:div>
<vbox class="tab-group-overflow-count-container" pack="center"> <vbox class="tab-group-overflow-count-container" pack="center">
<label class="tab-group-overflow-count" role="button" /> <label class="tab-group-overflow-count" role="button" />
</vbox> </vbox>
@@ -57,20 +59,36 @@ @@ -69,20 +69,36 @@
} }
connectedCallback() { connectedCallback() {
@@ -59,10 +58,10 @@ index c0cb11590d6dfbcf6fa49ef5e10c6d3877191d1f..cd98bd2401e4618b003c184108e85321
this._initialized = true; this._initialized = true;
this.saveOnWindowClose = true; this.saveOnWindowClose = true;
@@ -99,11 +117,14 @@ @@ -114,11 +130,14 @@
this.#labelElement.addEventListener("mouseover", this); this.#labelContainerElement.addEventListener("mouseover", this);
this.#labelElement.addEventListener("mouseout", this); this.#labelContainerElement.addEventListener("mouseout", this);
- this.#labelElement.addEventListener("contextmenu", e => { - this.#labelElement.addEventListener("contextmenu", e => {
- e.preventDefault(); - e.preventDefault();
- gBrowser.tabGroupMenu.openEditModal(this); - gBrowser.tabGroupMenu.openEditModal(this);
@@ -79,7 +78,7 @@ index c0cb11590d6dfbcf6fa49ef5e10c6d3877191d1f..cd98bd2401e4618b003c184108e85321
this.#updateLabelAriaAttributes(); this.#updateLabelAriaAttributes();
this.#updateCollapsedAriaAttributes(); this.#updateCollapsedAriaAttributes();
@@ -129,6 +150,8 @@ @@ -144,6 +163,8 @@
// mounts after getting created by `Tabbrowser.adoptTabGroup`. // mounts after getting created by `Tabbrowser.adoptTabGroup`.
this.#wasCreatedByAdoption = false; this.#wasCreatedByAdoption = false;
} }
@@ -88,7 +87,7 @@ index c0cb11590d6dfbcf6fa49ef5e10c6d3877191d1f..cd98bd2401e4618b003c184108e85321
resetDefaultGroupName = () => { resetDefaultGroupName = () => {
this.#defaultGroupName = ""; this.#defaultGroupName = "";
@@ -213,7 +236,10 @@ @@ -228,7 +249,10 @@
} }
}); });
} }
@@ -100,7 +99,7 @@ index c0cb11590d6dfbcf6fa49ef5e10c6d3877191d1f..cd98bd2401e4618b003c184108e85321
} }
get color() { get color() {
@@ -307,6 +333,9 @@ @@ -322,6 +346,9 @@
} }
set collapsed(val) { set collapsed(val) {
@@ -110,7 +109,7 @@ index c0cb11590d6dfbcf6fa49ef5e10c6d3877191d1f..cd98bd2401e4618b003c184108e85321
if (!!val == this.collapsed) { if (!!val == this.collapsed) {
return; return;
} }
@@ -364,7 +393,6 @@ @@ -399,7 +426,6 @@
tabGroupName, tabGroupName,
}) })
.then(result => { .then(result => {
@@ -118,7 +117,7 @@ index c0cb11590d6dfbcf6fa49ef5e10c6d3877191d1f..cd98bd2401e4618b003c184108e85321
}); });
} }
@@ -383,7 +411,57 @@ @@ -418,7 +444,57 @@
* @returns {MozTabbrowserTab[]} * @returns {MozTabbrowserTab[]}
*/ */
get tabs() { get tabs() {
@@ -177,7 +176,7 @@ index c0cb11590d6dfbcf6fa49ef5e10c6d3877191d1f..cd98bd2401e4618b003c184108e85321
} }
/** /**
@@ -442,7 +520,6 @@ @@ -498,7 +574,6 @@
addTabs(tabs, metricsContext) { addTabs(tabs, metricsContext) {
for (let tab of tabs) { for (let tab of tabs) {
if (tab.pinned) { if (tab.pinned) {
@@ -185,7 +184,7 @@ index c0cb11590d6dfbcf6fa49ef5e10c6d3877191d1f..cd98bd2401e4618b003c184108e85321
} }
let tabToMove = let tabToMove =
this.ownerGlobal === tab.ownerGlobal this.ownerGlobal === tab.ownerGlobal
@@ -505,7 +582,7 @@ @@ -561,7 +636,7 @@
*/ */
on_click(event) { on_click(event) {
let isToggleElement = let isToggleElement =
@@ -194,7 +193,7 @@ index c0cb11590d6dfbcf6fa49ef5e10c6d3877191d1f..cd98bd2401e4618b003c184108e85321
event.target === this.#overflowCountLabel; event.target === this.#overflowCountLabel;
if (isToggleElement && event.button === 0) { if (isToggleElement && event.button === 0) {
event.preventDefault(); event.preventDefault();
@@ -570,5 +647,6 @@ @@ -630,5 +705,6 @@
} }
} }

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/tabbrowser/content/tabs.js b/browser/components/tabbrowser/content/tabs.js 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 --- a/browser/components/tabbrowser/content/tabs.js
+++ b/browser/components/tabbrowser/content/tabs.js +++ b/browser/components/tabbrowser/content/tabs.js
@@ -44,6 +44,9 @@ @@ -44,6 +44,9 @@
@@ -12,7 +12,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f
if (isTab(element)) { if (isTab(element)) {
return element; return element;
} }
@@ -411,7 +414,7 @@ @@ -423,7 +426,7 @@
// and we're not hitting the scroll buttons. // and we're not hitting the scroll buttons.
if ( if (
event.button != 0 || event.button != 0 ||
@@ -21,7 +21,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f
event.composedTarget.localName == "toolbarbutton" event.composedTarget.localName == "toolbarbutton"
) { ) {
return; return;
@@ -492,7 +495,6 @@ @@ -504,7 +507,6 @@
}); });
} }
} else if (isTabGroupLabel(event.target)) { } else if (isTabGroupLabel(event.target)) {
@@ -29,7 +29,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f
} else if ( } else if (
event.originalTarget.closest("scrollbox") && event.originalTarget.closest("scrollbox") &&
!Services.prefs.getBoolPref( !Services.prefs.getBoolPref(
@@ -528,6 +530,9 @@ @@ -540,6 +542,9 @@
} }
on_keydown(event) { on_keydown(event) {
@@ -39,7 +39,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f
let { altKey, shiftKey } = event; let { altKey, shiftKey } = event;
let [accel, nonAccel] = let [accel, nonAccel] =
AppConstants.platform == "macosx" AppConstants.platform == "macosx"
@@ -765,7 +770,7 @@ @@ -777,7 +782,7 @@
if (this.#isContainerVerticalPinnedGrid(tab)) { if (this.#isContainerVerticalPinnedGrid(tab)) {
// In expanded vertical mode, the max number of pinned tabs per row is dynamic // In expanded vertical mode, the max number of pinned tabs per row is dynamic
// Set this before adjusting dragged tab's position // Set this before adjusting dragged tab's position
@@ -48,7 +48,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f
let tabsPerRow = 0; let tabsPerRow = 0;
let position = RTL_UI let position = RTL_UI
? window.windowUtils.getBoundsWithoutFlushing( ? window.windowUtils.getBoundsWithoutFlushing(
@@ -930,7 +935,7 @@ @@ -942,7 +947,7 @@
let dropEffect = this.getDropEffectForTabDrag(event); let dropEffect = this.getDropEffectForTabDrag(event);
let isMovingInTabStrip = !fromTabList && dropEffect == "move"; let isMovingInTabStrip = !fromTabList && dropEffect == "move";
let collapseTabGroupDuringDrag = let collapseTabGroupDuringDrag =
@@ -57,7 +57,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f
tab._dragData = { tab._dragData = {
offsetX: this.verticalMode offsetX: this.verticalMode
@@ -940,7 +945,7 @@ @@ -952,7 +957,7 @@
? event.screenY - window.screenY - tabOffset ? event.screenY - window.screenY - tabOffset
: event.screenY - window.screenY, : event.screenY - window.screenY,
scrollPos: scrollPos:
@@ -66,7 +66,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f
? this.pinnedTabsContainer.scrollPosition ? this.pinnedTabsContainer.scrollPosition
: this.arrowScrollbox.scrollPosition, : this.arrowScrollbox.scrollPosition,
screenX: event.screenX, screenX: event.screenX,
@@ -969,6 +974,7 @@ @@ -981,6 +986,7 @@
if (collapseTabGroupDuringDrag) { if (collapseTabGroupDuringDrag) {
tab.group.collapsed = true; 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); let draggedTab = event.dataTransfer.mozGetDataAt(TAB_DROP_TYPE, 0);
@@ -85,7 +85,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f
if ( if (
(dropEffect == "move" || dropEffect == "copy") && (dropEffect == "move" || dropEffect == "copy") &&
document == draggedTab.ownerDocument && document == draggedTab.ownerDocument &&
@@ -1196,6 +1206,18 @@ @@ -1208,6 +1218,18 @@
this._tabDropIndicator.hidden = true; this._tabDropIndicator.hidden = true;
event.stopPropagation(); event.stopPropagation();
@@ -104,7 +104,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f
if (draggedTab && dropEffect == "copy") { if (draggedTab && dropEffect == "copy") {
let duplicatedDraggedTab; let duplicatedDraggedTab;
let duplicatedTabs = []; let duplicatedTabs = [];
@@ -1220,8 +1242,9 @@ @@ -1232,8 +1254,9 @@
let translateOffsetY = oldTranslateY % tabHeight; let translateOffsetY = oldTranslateY % tabHeight;
let newTranslateX = oldTranslateX - translateOffsetX; let newTranslateX = oldTranslateX - translateOffsetX;
let newTranslateY = oldTranslateY - translateOffsetY; let newTranslateY = oldTranslateY - translateOffsetY;
@@ -116,7 +116,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f
if (this.#isContainerVerticalPinnedGrid(draggedTab)) { if (this.#isContainerVerticalPinnedGrid(draggedTab)) {
// Update both translate axis for pinned vertical expanded tabs // Update both translate axis for pinned vertical expanded tabs
@@ -1237,8 +1260,8 @@ @@ -1249,8 +1272,8 @@
} }
} else { } else {
let tabs = this.ariaFocusableItems.slice( let tabs = this.ariaFocusableItems.slice(
@@ -127,7 +127,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f
); );
let size = this.verticalMode ? "height" : "width"; let size = this.verticalMode ? "height" : "width";
let screenAxis = this.verticalMode ? "screenY" : "screenX"; let screenAxis = this.verticalMode ? "screenY" : "screenX";
@@ -1287,11 +1310,13 @@ @@ -1299,11 +1322,13 @@
this.dragToPinPromoCard, this.dragToPinPromoCard,
]; ];
let shouldPin = let shouldPin =
@@ -141,7 +141,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f
isTab(draggedTab) && isTab(draggedTab) &&
draggedTab.pinned && draggedTab.pinned &&
this.arrowScrollbox.contains(event.target); this.arrowScrollbox.contains(event.target);
@@ -1309,6 +1334,7 @@ @@ -1321,6 +1346,7 @@
(oldTranslateY && oldTranslateY != newTranslateY); (oldTranslateY && oldTranslateY != newTranslateY);
} else if (this.verticalMode) { } else if (this.verticalMode) {
shouldTranslate &&= oldTranslateY && oldTranslateY != newTranslateY; shouldTranslate &&= oldTranslateY && oldTranslateY != newTranslateY;
@@ -149,7 +149,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f
} else { } else {
shouldTranslate &&= oldTranslateX && oldTranslateX != newTranslateX; shouldTranslate &&= oldTranslateX && oldTranslateX != newTranslateX;
} }
@@ -1503,6 +1529,7 @@ @@ -1515,6 +1541,7 @@
let nextItem = this.ariaFocusableItems[newIndex]; let nextItem = this.ariaFocusableItems[newIndex];
let tabGroup = isTab(nextItem) && nextItem.group; let tabGroup = isTab(nextItem) && nextItem.group;
@@ -157,7 +157,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f
gBrowser.loadTabs(urls, { gBrowser.loadTabs(urls, {
inBackground, inBackground,
replace, replace,
@@ -1541,6 +1568,17 @@ @@ -1553,6 +1580,17 @@
} }
this.#resetTabsAfterDrop(draggedTab.ownerDocument); this.#resetTabsAfterDrop(draggedTab.ownerDocument);
@@ -175,7 +175,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f
if ( if (
dt.mozUserCancelled || dt.mozUserCancelled ||
dt.dropEffect != "none" || dt.dropEffect != "none" ||
@@ -1707,7 +1745,6 @@ @@ -1719,7 +1757,6 @@
this.toggleAttribute("overflow", true); this.toggleAttribute("overflow", true);
this._updateCloseButtons(); this._updateCloseButtons();
@@ -183,7 +183,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f
document document
.getElementById("tab-preview-panel") .getElementById("tab-preview-panel")
@@ -1765,7 +1802,7 @@ @@ -1777,7 +1814,7 @@
} }
get newTabButton() { get newTabButton() {
@@ -192,7 +192,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f
} }
get verticalMode() { get verticalMode() {
@@ -1781,6 +1818,7 @@ @@ -1793,6 +1830,7 @@
} }
get overflowing() { get overflowing() {
@@ -200,28 +200,25 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f
return this.hasAttribute("overflow"); return this.hasAttribute("overflow");
} }
@@ -1789,31 +1827,51 @@ @@ -1806,29 +1844,54 @@
if (this.#allTabs) { if (pinnedChildren?.at(-1)?.id == "pinned-tabs-container-periphery") {
return this.#allTabs; 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); - let unpinnedChildren = Array.from(this.arrowScrollbox.children);
- // remove arrowScrollbox periphery element. + let unpinnedChildren = gZenWorkspaces.tabboxChildren;
- unpinnedChildren.pop(); // remove arrowScrollbox periphery element.
- unpinnedChildren.pop();
+ let children = gZenWorkspaces.tabboxChildren;
+ children.pop(); // explode tab groups and split view wrappers
// explode tab groups
// Iterate backwards over the array to preserve indices while we modify // Iterate backwards over the array to preserve indices while we modify
// things in place // things in place
- for (let i = unpinnedChildren.length - 1; i >= 0; i--) { - 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); - unpinnedChildren.splice(i, 1, ...unpinnedChildren[i].tabs);
+ const pinnedTabs = [...gZenWorkspaces.getCurrentEssentialsContainer().children, ...this.pinnedTabsContainer.children]; + const pinnedTabs = [...gZenWorkspaces.getCurrentEssentialsContainer().children, ...pinnedChildren];
+ const expandTabs = (tabs) => { + const expandTabs = (tabs) => {
+ for (let i = tabs.length - 1; i >= 0; i--) { + for (let i = tabs.length - 1; i >= 0; i--) {
+ const tab = tabs[i]; + const tab = tabs[i];
@@ -231,15 +228,13 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f
+ // add the tabs in the group to the list + // add the tabs in the group to the list
+ tabs.splice(i, 0, ...tab.tabs); + tabs.splice(i, 0, ...tab.tabs);
+ } + }
} + }
} + };
-
- this.#allTabs = [...pinnedChildren, ...unpinnedChildren];
+ expandTabs(pinnedTabs); + expandTabs(pinnedTabs);
+ expandTabs(children); + expandTabs(unpinnedChildren);
+ const allTabs = [ + const allTabs = [
+ ...pinnedTabs, + ...pinnedTabs,
+ ...children, + ...unpinnedChildren,
+ ]; + ];
+ const lastPinnedTabIdx = pinnedTabs.length - 1; + const lastPinnedTabIdx = pinnedTabs.length - 1;
+ let i = 0; + let i = 0;
@@ -254,21 +249,23 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f
+ // remove the separator from the list + // remove the separator from the list
+ allTabs.splice(i, 1); + allTabs.splice(i, 1);
+ i--; + i--;
+ } }
+ i++; + i++;
+ } }
-
- this.#allTabs = [...pinnedChildren, ...unpinnedChildren];
+ this.#allTabs = allTabs; + this.#allTabs = allTabs;
return this.#allTabs; return this.#allTabs;
} }
get allGroups() { 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 children.filter(node => node.tagName == "tab-group");
+ return gZenWorkspaces.allTabGroups; + return gZenWorkspaces.allTabGroups;
} }
/** /**
@@ -1880,29 +1938,23 @@ @@ -1895,29 +1958,23 @@
let elementIndex = 0; let elementIndex = 0;
@@ -307,7 +304,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f
} }
} }
@@ -1914,6 +1966,7 @@ @@ -1929,6 +1986,7 @@
_invalidateCachedTabs() { _invalidateCachedTabs() {
this.#allTabs = null; this.#allTabs = null;
this._invalidateCachedVisibleTabs(); this._invalidateCachedVisibleTabs();
@@ -315,7 +312,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f
} }
_invalidateCachedVisibleTabs() { _invalidateCachedVisibleTabs() {
@@ -1929,8 +1982,8 @@ @@ -1944,8 +2002,8 @@
#isContainerVerticalPinnedGrid(tab) { #isContainerVerticalPinnedGrid(tab) {
return ( return (
this.verticalMode && this.verticalMode &&
@@ -326,7 +323,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f
!this.expandOnHover !this.expandOnHover
); );
} }
@@ -1946,7 +1999,7 @@ @@ -1961,7 +2019,7 @@
if (node == null) { if (node == null) {
// We have a container for non-tab elements at the end of the scrollbox. // We have a container for non-tab elements at the end of the scrollbox.
@@ -335,7 +332,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f
} }
node.before(tab); node.before(tab);
@@ -2041,7 +2094,7 @@ @@ -2056,7 +2114,7 @@
// There are separate "new tab" buttons for horizontal tabs toolbar, vertical tabs and // 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); // for when the tab strip is overflowed (which is shared by vertical and horizontal tabs);
// Attach the long click popup to all of them. // Attach the long click popup to all of them.
@@ -344,7 +341,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f
const newTab2 = this.newTabButton; const newTab2 = this.newTabButton;
const newTabVertical = document.getElementById( const newTabVertical = document.getElementById(
"vertical-tabs-newtab-button" "vertical-tabs-newtab-button"
@@ -2139,8 +2192,10 @@ @@ -2156,8 +2214,10 @@
*/ */
_handleTabSelect(aInstant) { _handleTabSelect(aInstant) {
let selectedTab = this.selectedItem; let selectedTab = this.selectedItem;
@@ -355,7 +352,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f
selectedTab._notselectedsinceload = false; selectedTab._notselectedsinceload = false;
} }
@@ -2149,7 +2204,7 @@ @@ -2166,7 +2226,7 @@
* @param {boolean} [shouldScrollInstantly=false] * @param {boolean} [shouldScrollInstantly=false]
*/ */
#ensureTabIsVisible(tab, shouldScrollInstantly = false) { #ensureTabIsVisible(tab, shouldScrollInstantly = false) {
@@ -364,7 +361,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f
if (arrowScrollbox?.overflowing) { if (arrowScrollbox?.overflowing) {
arrowScrollbox.ensureElementIsVisible(tab, shouldScrollInstantly); arrowScrollbox.ensureElementIsVisible(tab, shouldScrollInstantly);
} }
@@ -2288,6 +2343,16 @@ @@ -2305,6 +2365,16 @@
when the tab is first selected to be dragged. when the tab is first selected to be dragged.
*/ */
#updateTabStylesOnDrag(tab) { #updateTabStylesOnDrag(tab) {
@@ -381,7 +378,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f
let isPinned = tab.pinned; let isPinned = tab.pinned;
let numPinned = gBrowser.pinnedTabCount; let numPinned = gBrowser.pinnedTabCount;
let allTabs = this.ariaFocusableItems; let allTabs = this.ariaFocusableItems;
@@ -2540,7 +2605,7 @@ @@ -2578,7 +2648,7 @@
return; return;
} }
@@ -390,7 +387,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f
let directionX = screenX > dragData.animLastScreenX; let directionX = screenX > dragData.animLastScreenX;
let directionY = screenY > dragData.animLastScreenY; let directionY = screenY > dragData.animLastScreenY;
@@ -2549,6 +2614,8 @@ @@ -2587,6 +2657,8 @@
let { width: tabWidth, height: tabHeight } = let { width: tabWidth, height: tabHeight } =
draggedTab.getBoundingClientRect(); draggedTab.getBoundingClientRect();
@@ -399,7 +396,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f
let shiftSizeX = tabWidth * movingTabs.length; let shiftSizeX = tabWidth * movingTabs.length;
let shiftSizeY = tabHeight; let shiftSizeY = tabHeight;
dragData.tabWidth = tabWidth; dragData.tabWidth = tabWidth;
@@ -2585,8 +2652,8 @@ @@ -2623,8 +2695,8 @@
let lastBoundX = let lastBoundX =
lastTabInRow.screenX + lastTabInRow.screenX +
lastTabInRow.getBoundingClientRect().width - lastTabInRow.getBoundingClientRect().width -
@@ -410,7 +407,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f
translateX = Math.min(Math.max(translateX, firstBoundX), lastBoundX); translateX = Math.min(Math.max(translateX, firstBoundX), lastBoundX);
translateY = Math.min(Math.max(translateY, firstBoundY), lastBoundY); translateY = Math.min(Math.max(translateY, firstBoundY), lastBoundY);
@@ -2744,13 +2811,18 @@ @@ -2782,13 +2854,18 @@
this.#clearDragOverGroupingTimer(); this.#clearDragOverGroupingTimer();
this.#clearPinnedDropIndicatorTimer(); this.#clearPinnedDropIndicatorTimer();
@@ -433,7 +430,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f
if (this.#rtlMode) { if (this.#rtlMode) {
tabs.reverse(); tabs.reverse();
@@ -2761,7 +2833,7 @@ @@ -2799,7 +2876,7 @@
let screenAxis = this.verticalMode ? "screenY" : "screenX"; let screenAxis = this.verticalMode ? "screenY" : "screenX";
let size = this.verticalMode ? "height" : "width"; let size = this.verticalMode ? "height" : "width";
let translateAxis = this.verticalMode ? "translateY" : "translateX"; let translateAxis = this.verticalMode ? "translateY" : "translateX";
@@ -442,7 +439,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f
let tabSize = this.verticalMode ? tabHeight : tabWidth; let tabSize = this.verticalMode ? tabHeight : tabWidth;
let translateX = event.screenX - dragData.screenX; let translateX = event.screenX - dragData.screenX;
let translateY = event.screenY - dragData.screenY; let translateY = event.screenY - dragData.screenY;
@@ -2777,6 +2849,12 @@ @@ -2815,6 +2892,12 @@
); );
let lastMovingTab = movingTabs.at(-1); let lastMovingTab = movingTabs.at(-1);
let firstMovingTab = movingTabs[0]; let firstMovingTab = movingTabs[0];
@@ -455,7 +452,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f
let endEdge = ele => ele[screenAxis] + bounds(ele)[size]; let endEdge = ele => ele[screenAxis] + bounds(ele)[size];
let lastMovingTabScreen = endEdge(lastMovingTab); let lastMovingTabScreen = endEdge(lastMovingTab);
let firstMovingTabScreen = firstMovingTab[screenAxis]; let firstMovingTabScreen = firstMovingTab[screenAxis];
@@ -2791,6 +2869,11 @@ @@ -2829,6 +2912,11 @@
let endBound = this.#rtlMode let endBound = this.#rtlMode
? endEdge(this) - lastMovingTabScreen ? endEdge(this) - lastMovingTabScreen
: periphery[screenAxis] - 1 - lastMovingTabScreen; : periphery[screenAxis] - 1 - lastMovingTabScreen;
@@ -467,7 +464,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f
translate = Math.min(Math.max(translate, startBound), endBound); translate = Math.min(Math.max(translate, startBound), endBound);
// Center the tab under the cursor if the tab is not under the cursor while dragging // 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(); let dropElement = getOverlappedElement();
@@ -476,7 +473,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f
let newDropElementIndex; let newDropElementIndex;
if (dropElement) { if (dropElement) {
@@ -3061,7 +3146,7 @@ @@ -3099,7 +3189,7 @@
? Services.prefs.getIntPref( ? Services.prefs.getIntPref(
"browser.tabs.dragDrop.moveOverThresholdPercent" "browser.tabs.dragDrop.moveOverThresholdPercent"
) / 100 ) / 100
@@ -485,7 +482,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f
moveOverThreshold = Math.min(1, Math.max(0, moveOverThreshold)); moveOverThreshold = Math.min(1, Math.max(0, moveOverThreshold));
let shouldMoveOver = overlapPercent > moveOverThreshold; let shouldMoveOver = overlapPercent > moveOverThreshold;
if (logicalForward && shouldMoveOver) { 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 // 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. // possible to drop the dragged group inside the other group.
if ( if (
@@ -493,7 +490,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f
isTabGroupLabel(draggedTab) && isTabGroupLabel(draggedTab) &&
dropElement?.group && dropElement?.group &&
(!dropElement.group.collapsed || (!dropElement.group.collapsed ||
@@ -3120,20 +3206,13 @@ @@ -3158,20 +3249,13 @@
let isOutOfBounds = isPinned let isOutOfBounds = isPinned
? dropElement.elementIndex >= numPinned ? dropElement.elementIndex >= numPinned
: dropElement.elementIndex < numPinned; : dropElement.elementIndex < numPinned;
@@ -518,7 +515,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f
let groupingDelay = Services.prefs.getIntPref( let groupingDelay = Services.prefs.getIntPref(
"browser.tabs.dragDrop.createGroup.delayMS" "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 // When dragging tab(s) over an ungrouped tab, signal to the user
// that dropping the tab(s) will create a new tab group. // that dropping the tab(s) will create a new tab group.
let shouldCreateGroupOnDrop = let shouldCreateGroupOnDrop =
@@ -526,7 +523,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f
!movingTabsSet.has(dropElement) && !movingTabsSet.has(dropElement) &&
isTab(dropElement) && isTab(dropElement) &&
!dropElement?.group && !dropElement?.group &&
@@ -3149,6 +3229,7 @@ @@ -3187,6 +3272,7 @@
// When dragging tab(s) over a collapsed tab group label, signal to the // 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. // user that dropping the tab(s) will add them to the group.
let shouldDropIntoCollapsedTabGroup = let shouldDropIntoCollapsedTabGroup =
@@ -534,7 +531,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f
isTabGroupLabel(dropElement) && isTabGroupLabel(dropElement) &&
dropElement.group.collapsed && dropElement.group.collapsed &&
overlapPercent > dragOverGroupingThreshold; overlapPercent > dragOverGroupingThreshold;
@@ -3193,19 +3274,14 @@ @@ -3231,19 +3317,14 @@
dropElement = dropElementGroup; dropElement = dropElementGroup;
colorCode = undefined; colorCode = undefined;
} else if (isTabGroupLabel(dropElement)) { } else if (isTabGroupLabel(dropElement)) {
@@ -562,7 +559,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f
} }
this.#setDragOverGroupColor(colorCode); this.#setDragOverGroupColor(colorCode);
this.toggleAttribute("movingtab-addToGroup", colorCode); this.toggleAttribute("movingtab-addToGroup", colorCode);
@@ -3224,11 +3300,11 @@ @@ -3262,11 +3343,11 @@
dragData.dropElement = dropElement; dragData.dropElement = dropElement;
dragData.dropBefore = dropBefore; dragData.dropBefore = dropBefore;
dragData.animDropElementIndex = newDropElementIndex; dragData.animDropElementIndex = newDropElementIndex;
@@ -576,7 +573,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f
continue; continue;
} }
@@ -3350,12 +3426,14 @@ @@ -3388,12 +3469,14 @@
element?.removeAttribute("dragover-groupTarget"); element?.removeAttribute("dragover-groupTarget");
} }
@@ -593,7 +590,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f
for (let item of this.ariaFocusableItems) { for (let item of this.ariaFocusableItems) {
this.#resetGroupTarget(item); this.#resetGroupTarget(item);
@@ -3402,16 +3480,15 @@ @@ -3440,7 +3523,7 @@
tab.style.left = ""; tab.style.left = "";
tab.style.top = ""; tab.style.top = "";
tab.style.maxWidth = ""; tab.style.maxWidth = "";
@@ -602,17 +599,16 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f
} }
for (let label of draggedTabDocument.getElementsByClassName( for (let label of draggedTabDocument.getElementsByClassName(
"tab-group-label-container" "tab-group-label-container"
)) { @@ -3450,7 +3533,7 @@
label.style.width = "";
- label.style.height = "";
label.style.left = ""; label.style.left = "";
label.style.top = ""; label.style.top = "";
label.style.maxWidth = "";
- label.removeAttribute("dragtarget"); - label.removeAttribute("dragtarget");
+ label.removeAttribute("zen-dragtarget"); + label.removeAttribute("zen-dragtarget");
} }
let periphery = draggedTabDocument.getElementById( let periphery = draggedTabDocument.getElementById(
"tabbrowser-arrowscrollbox-periphery" "tabbrowser-arrowscrollbox-periphery"
@@ -3483,7 +3560,7 @@ @@ -3522,7 +3605,7 @@
let postTransitionCleanup = () => { let postTransitionCleanup = () => {
movingTab._moveTogetherSelectedTabsData.animate = false; movingTab._moveTogetherSelectedTabsData.animate = false;
}; };
@@ -621,7 +617,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f
postTransitionCleanup(); postTransitionCleanup();
} else { } else {
let onTransitionEnd = transitionendEvent => { let onTransitionEnd = transitionendEvent => {
@@ -3647,7 +3724,7 @@ @@ -3686,7 +3769,7 @@
} }
_notifyBackgroundTab(aTab) { _notifyBackgroundTab(aTab) {
@@ -630,7 +626,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f
return; return;
} }
@@ -3756,7 +3833,10 @@ @@ -3795,7 +3878,10 @@
#getDragTarget(event, { ignoreSides = false } = {}) { #getDragTarget(event, { ignoreSides = false } = {}) {
let { target } = event; let { target } = event;
while (target) { while (target) {
@@ -642,7 +638,7 @@ index b2d54218ca51f86d4591730054d0e7e1138adb94..d2c1f7f5b68ecc531c4e9e597457221f
break; break;
} }
target = target.parentNode; target = target.parentNode;
@@ -3773,6 +3853,9 @@ @@ -3812,6 +3898,9 @@
return null; return null;
} }
} }

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/urlbar/UrlbarController.sys.mjs b/browser/components/urlbar/UrlbarController.sys.mjs 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 --- a/browser/components/urlbar/UrlbarController.sys.mjs
+++ b/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(); event.preventDefault();

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/urlbar/UrlbarInput.sys.mjs b/browser/components/urlbar/UrlbarInput.sys.mjs 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 --- a/browser/components/urlbar/UrlbarInput.sys.mjs
+++ b/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" }) lazy.UrlbarUtils.getLogger({ prefix: "Input" })
); );
@@ -16,7 +16,7 @@ index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..b63bf54956a42c63d5cadc9360545e23
const DEFAULT_FORM_HISTORY_NAME = "searchbar-history"; const DEFAULT_FORM_HISTORY_NAME = "searchbar-history";
const UNLIMITED_MAX_RESULTS = 99; 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" // See _on_select(). HTMLInputElement.select() dispatches a "select"
// event but does not set the primary selection. // event but does not set the primary selection.
this._suppressPrimaryAdjustment = true; this._suppressPrimaryAdjustment = true;
@@ -33,7 +33,7 @@ index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..b63bf54956a42c63d5cadc9360545e23
this._suppressPrimaryAdjustment = false; this._suppressPrimaryAdjustment = false;
} }
@@ -431,6 +447,10 @@ export class UrlbarInput { @@ -513,6 +529,10 @@ export class UrlbarInput {
hideSearchTerms = false, hideSearchTerms = false,
isSameDocument = false isSameDocument = false
) { ) {
@@ -41,10 +41,10 @@ index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..b63bf54956a42c63d5cadc9360545e23
+ return; + return;
+ } + }
+ +
// We only need to update the searchModeUI on tab switch conditionally if (!this.isAddressbar) {
// as we only persist searchMode with ScotchBonnet enabled. throw new Error(
if ( "Cannot set URI for UrlbarInput that is not an address bar"
@@ -703,8 +723,16 @@ export class UrlbarInput { @@ -790,8 +810,16 @@ export class UrlbarInput {
return; 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)) { if (!this.#providesSearchMode(result)) {
@@ -75,7 +75,7 @@ index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..b63bf54956a42c63d5cadc9360545e23
} }
if (isCanonized) { if (isCanonized) {
@@ -2191,6 +2223,13 @@ export class UrlbarInput { @@ -2298,6 +2330,13 @@ export class UrlbarInput {
await this.#updateLayoutBreakoutDimensions(); await this.#updateLayoutBreakoutDimensions();
} }
@@ -89,7 +89,7 @@ index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..b63bf54956a42c63d5cadc9360545e23
startLayoutExtend() { startLayoutExtend() {
if (!this.#allowBreakout || this.hasAttribute("breakout-extend")) { if (!this.#allowBreakout || this.hasAttribute("breakout-extend")) {
// Do not expand if the Urlbar does not support being expanded or it is // 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"); this.setAttribute("breakout-extend", "true");
@@ -102,7 +102,7 @@ index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..b63bf54956a42c63d5cadc9360545e23
// Enable the animation only after the first extend call to ensure it // Enable the animation only after the first extend call to ensure it
// doesn't run when opening a new window. // doesn't run when opening a new window.
if (!this.hasAttribute("breakout-extend-animate")) { if (!this.hasAttribute("breakout-extend-animate")) {
@@ -2224,6 +2269,24 @@ export class UrlbarInput { @@ -2331,6 +2376,24 @@ export class UrlbarInput {
return; return;
} }
@@ -127,7 +127,7 @@ index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..b63bf54956a42c63d5cadc9360545e23
this.removeAttribute("breakout-extend"); this.removeAttribute("breakout-extend");
this.#updateTextboxPosition(); this.#updateTextboxPosition();
} }
@@ -2553,7 +2616,7 @@ export class UrlbarInput { @@ -2660,7 +2723,7 @@ export class UrlbarInput {
this.textbox.parentNode.style.setProperty( this.textbox.parentNode.style.setProperty(
"--urlbar-container-height", "--urlbar-container-height",
@@ -136,7 +136,7 @@ index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..b63bf54956a42c63d5cadc9360545e23
); );
this.textbox.style.setProperty( this.textbox.style.setProperty(
"--urlbar-height", "--urlbar-height",
@@ -2986,6 +3049,7 @@ export class UrlbarInput { @@ -3093,6 +3156,7 @@ export class UrlbarInput {
} }
_toggleActionOverride(event) { _toggleActionOverride(event) {
@@ -144,24 +144,24 @@ index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..b63bf54956a42c63d5cadc9360545e23
if ( if (
event.keyCode == KeyEvent.DOM_VK_SHIFT || event.keyCode == KeyEvent.DOM_VK_SHIFT ||
event.keyCode == KeyEvent.DOM_VK_ALT || event.keyCode == KeyEvent.DOM_VK_ALT ||
@@ -3087,7 +3151,7 @@ export class UrlbarInput { @@ -3197,7 +3261,7 @@ export class UrlbarInput {
*/ return val;
_trimValue(val) { }
let trimmedValue = lazy.UrlbarPrefs.get("trimURLs") let trimmedValue = lazy.UrlbarPrefs.get("trimURLs")
- ? lazy.BrowserUIUtils.trimURL(val) - ? lazy.BrowserUIUtils.trimURL(val)
+ ? this._zenTrimURL(val) + ? this._zenTrimURL(val)
: val; : val;
// Only trim value if the directionality doesn't change to RTL and we're not // Only trim value if the directionality doesn't change to RTL and we're not
// showing a strikeout https protocol. // showing a strikeout https protocol.
@@ -3303,6 +3367,7 @@ export class UrlbarInput { @@ -3407,6 +3471,7 @@ export class UrlbarInput {
resultDetails = null, );
browser = this.window.gBrowser.selectedBrowser }
) {
+ openUILinkWhere = this.window.gZenUIManager.getOpenUILinkWhere(url, browser, openUILinkWhere); + openUILinkWhere = this.window.gZenUIManager.getOpenUILinkWhere(url, browser, openUILinkWhere);
// No point in setting these because we'll handleRevert() a few rows below. // No point in setting these because we'll handleRevert() a few rows below.
if (openUILinkWhere == "current") { if (openUILinkWhere == "current") {
// Make sure URL is formatted properly (don't show punycode). // 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; reuseEmpty = true;
} }
@@ -172,7 +172,7 @@ index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..b63bf54956a42c63d5cadc9360545e23
if ( if (
where == "tab" && where == "tab" &&
reuseEmpty && reuseEmpty &&
@@ -3462,6 +3531,9 @@ export class UrlbarInput { @@ -3615,6 +3684,9 @@ export class UrlbarInput {
) { ) {
where = "current"; where = "current";
} }
@@ -182,7 +182,7 @@ index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..b63bf54956a42c63d5cadc9360545e23
return where; return where;
} }
@@ -3719,6 +3791,7 @@ export class UrlbarInput { @@ -3872,6 +3944,7 @@ export class UrlbarInput {
this.setResultForCurrentValue(null); this.setResultForCurrentValue(null);
this.handleCommand(); this.handleCommand();
this.controller.clearLastQueryContextCache(); this.controller.clearLastQueryContextCache();
@@ -190,7 +190,7 @@ index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..b63bf54956a42c63d5cadc9360545e23
this._suppressStartQuery = false; this._suppressStartQuery = false;
}); });
@@ -3726,7 +3799,6 @@ export class UrlbarInput { @@ -3879,7 +3952,6 @@ export class UrlbarInput {
contextMenu.addEventListener("popupshowing", () => { contextMenu.addEventListener("popupshowing", () => {
// Close the results pane when the input field contextual menu is open, // Close the results pane when the input field contextual menu is open,
// because paste and go doesn't want a result selection. // because paste and go doesn't want a result selection.
@@ -198,7 +198,7 @@ index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..b63bf54956a42c63d5cadc9360545e23
let controller = let controller =
this.document.commandDispatcher.getControllerForCommand("cmd_paste"); 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")) { if (!engineName && !source && !this.hasAttribute("searchmode")) {
return; return;
} }
@@ -208,10 +208,10 @@ index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..b63bf54956a42c63d5cadc9360545e23
+ detail: { searchMode }, + detail: { searchMode },
+ }) + })
+ ); + );
if (this._searchModeIndicatorTitle) {
this._searchModeIndicatorTitle.textContent = ""; this._searchModeIndicatorTitle.textContent = "";
this._searchModeIndicatorTitle.removeAttribute("data-l10n-id"); this._searchModeIndicatorTitle.removeAttribute("data-l10n-id");
@@ -4302,6 +4378,7 @@ export class UrlbarInput {
@@ -4130,6 +4206,7 @@ export class UrlbarInput {
this.document.l10n.setAttributes( this.document.l10n.setAttributes(
this.inputField, this.inputField,
@@ -219,7 +219,7 @@ index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..b63bf54956a42c63d5cadc9360545e23
l10nId, l10nId,
l10nId == "urlbar-placeholder-with-name" ? { name } : undefined l10nId == "urlbar-placeholder-with-name" ? { name } : undefined
); );
@@ -4241,6 +4318,11 @@ export class UrlbarInput { @@ -4413,6 +4490,11 @@ export class UrlbarInput {
} }
_on_click(event) { _on_click(event) {
@@ -231,7 +231,7 @@ index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..b63bf54956a42c63d5cadc9360545e23
if ( if (
event.target == this.inputField || event.target == this.inputField ||
event.target == this._inputContainer 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 }); this.view.autoOpen({ event });
} else { } else {
if (this._untrimOnFocusAfterKeydown) { if (this._untrimOnFocusAfterKeydown) {
@@ -4351,9 +4433,16 @@ export class UrlbarInput { @@ -4525,9 +4607,16 @@ export class UrlbarInput {
} }
_on_mousedown(event) { _on_mousedown(event) {
@@ -258,7 +258,7 @@ index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..b63bf54956a42c63d5cadc9360545e23
if ( if (
event.target != this.inputField && event.target != this.inputField &&
@@ -4364,6 +4453,10 @@ export class UrlbarInput { @@ -4538,6 +4627,10 @@ export class UrlbarInput {
this.focusedViaMousedown = !this.focused; this.focusedViaMousedown = !this.focused;
this._preventClickSelectsAll = this.focused; this._preventClickSelectsAll = this.focused;
@@ -269,7 +269,7 @@ index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..b63bf54956a42c63d5cadc9360545e23
// Keep the focus status, since the attribute may be changed // Keep the focus status, since the attribute may be changed
// upon calling this.focus(). // 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 // 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. // view open on tab switch, and the TabSelect event arrived earlier.
@@ -278,7 +278,7 @@ index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..b63bf54956a42c63d5cadc9360545e23
break; 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 // When we are in actions search mode we can show more results so
// increase the limit. // increase the limit.
let maxResults = let maxResults =

View File

@@ -1,16 +1,16 @@
diff --git a/browser/components/urlbar/UrlbarMuxerStandard.sys.mjs b/browser/components/urlbar/UrlbarMuxerStandard.sys.mjs 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 --- a/browser/components/urlbar/UrlbarMuxerStandard.sys.mjs
+++ b/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; + return false;
// Discard the result if a tab-to-search result was added already. // Discard the result if a tab-to-search result was added already.
if (!state.canAddTabToSearch) { if (!state.canAddTabToSearch) {
return false; return false;
@@ -1501,7 +1502,9 @@ class MuxerUnifiedComplete extends UrlbarMuxer { @@ -1498,7 +1499,9 @@ class MuxerUnifiedComplete extends UrlbarMuxer {
usedLimits.maxResultCount++; usedLimits.maxResultCount++;
} }

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/urlbar/UrlbarPrefs.sys.mjs b/browser/components/urlbar/UrlbarPrefs.sys.mjs 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 --- a/browser/components/urlbar/UrlbarPrefs.sys.mjs
+++ b/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 = { let rootGroup = {
children: [ children: [

View File

@@ -1,13 +1,13 @@
diff --git a/browser/components/urlbar/UrlbarProviderPlaces.sys.mjs b/browser/components/urlbar/UrlbarProviderPlaces.sys.mjs 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 --- a/browser/components/urlbar/UrlbarProviderPlaces.sys.mjs
+++ b/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 = ` let query = `
SELECT h.url, h.title, ${SQL_BOOKMARK_TAGS_FRAGMENT}, h.id, t.open_count, SELECT h.url, h.title, ${SQL_BOOKMARK_TAGS_FRAGMENT}, h.id, t.open_count,
${lazy.PAGES_FRECENCY_FIELD} AS frecency, t.userContextId, ${lazy.PAGES_FRECENCY_FIELD} AS frecency, t.userContextId,
- h.last_visit_date, t.groupId - h.last_visit_date, NULLIF(t.groupId, '') 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, zp.url AS pinned_url, zp.title AS pinned_title
FROM moz_places h FROM moz_places h
LEFT JOIN moz_openpages_temp t LEFT JOIN moz_openpages_temp t
ON t.url = h.url ON t.url = h.url
@@ -17,7 +17,7 @@ index ad971f090bdaba2865cf1fac2840b1f553d2630c..a9e676e43d35b617eebd5a67c8653397
WHERE ( WHERE (
(:switchTabsEnabled AND t.open_count > 0) OR (:switchTabsEnabled AND t.open_count > 0) OR
${lazy.PAGES_FRECENCY_FIELD} <> 0 ${lazy.PAGES_FRECENCY_FIELD} <> 0
@@ -58,7 +60,7 @@ function defaultQuery(conditions = "") { @@ -62,7 +64,7 @@ function defaultQuery(conditions = "") {
:matchBehavior, :searchBehavior, NULL) :matchBehavior, :searchBehavior, NULL)
ELSE ELSE
AUTOCOMPLETE_MATCH(:searchString, h.url, AUTOCOMPLETE_MATCH(:searchString, h.url,
@@ -26,7 +26,7 @@ index ad971f090bdaba2865cf1fac2840b1f553d2630c..a9e676e43d35b617eebd5a67c8653397
h.visit_count, h.typed, h.visit_count, h.typed,
0, t.open_count, 0, t.open_count,
:matchBehavior, :searchBehavior, NULL) :matchBehavior, :searchBehavior, NULL)
@@ -1116,11 +1118,13 @@ Search.prototype = { @@ -1120,11 +1122,13 @@ Search.prototype = {
? lazy.PlacesUtils.toDate(lastVisitPRTime).getTime() ? lazy.PlacesUtils.toDate(lastVisitPRTime).getTime()
: undefined; : undefined;
let tabGroup = row.getResultByName("groupId"); let tabGroup = row.getResultByName("groupId");

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/urlbar/UrlbarProvidersManager.sys.mjs b/browser/components/urlbar/UrlbarProvidersManager.sys.mjs 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 --- a/browser/components/urlbar/UrlbarProvidersManager.sys.mjs
+++ b/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 ( if (
result.heuristic && result.heuristic &&
this.context.searchMode && this.context.searchMode &&

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/urlbar/UrlbarUtils.sys.mjs b/browser/components/urlbar/UrlbarUtils.sys.mjs 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 --- a/browser/components/urlbar/UrlbarUtils.sys.mjs
+++ b/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", RESTRICT_SEARCH_KEYWORD: "restrictSearchKeyword",
SUGGESTED_INDEX: "suggestedIndex", SUGGESTED_INDEX: "suggestedIndex",
TAIL_SUGGESTION: "tailSuggestion", TAIL_SUGGESTION: "tailSuggestion",
@@ -10,7 +10,7 @@ index 0bc15c02f56dd8f46a21fed02b4e21a741f27f41..40da868f68f21d8411107fb8a95e2d0b
}), }),
// Defines provider types. // Defines provider types.
@@ -134,6 +135,7 @@ export var UrlbarUtils = { @@ -133,6 +134,7 @@ export var UrlbarUtils = {
OTHER_NETWORK: 6, OTHER_NETWORK: 6,
ADDON: 7, ADDON: 7,
ACTIONS: 8, ACTIONS: 8,
@@ -18,12 +18,12 @@ index 0bc15c02f56dd8f46a21fed02b4e21a741f27f41..40da868f68f21d8411107fb8a95e2d0b
}), }),
// Per-result exposure telemetry. // Per-result exposure telemetry.
@@ -553,6 +555,8 @@ export var UrlbarUtils = { @@ -544,6 +546,8 @@ export var UrlbarUtils = {
return this.RESULT_GROUP.HEURISTIC_SEARCH_TIP; return this.RESULT_GROUP.HEURISTIC_FALLBACK;
case "HistoryUrlHeuristic": case "UrlbarProviderHistoryUrlHeuristic":
return this.RESULT_GROUP.HEURISTIC_HISTORY_URL; return this.RESULT_GROUP.HEURISTIC_HISTORY_URL;
+ case "ZenUrlbarProviderGlobalActions": + case "ZenUrlbarProviderGlobalActions":
+ return this.RESULT_GROUP.ZEN_ACTION; + return this.RESULT_GROUP.ZEN_ACTION;
default: case "UrlbarProviderOmnibox":
if (result.providerName.startsWith("TestProvider")) { return this.RESULT_GROUP.HEURISTIC_OMNIBOX;
return this.RESULT_GROUP.HEURISTIC_TEST; case "UrlbarProviderRestrictKeywordsAutofill":

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/urlbar/UrlbarValueFormatter.sys.mjs b/browser/components/urlbar/UrlbarValueFormatter.sys.mjs 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 --- a/browser/components/urlbar/UrlbarValueFormatter.sys.mjs
+++ b/browser/components/urlbar/UrlbarValueFormatter.sys.mjs +++ b/browser/components/urlbar/UrlbarValueFormatter.sys.mjs
@@ -585,6 +585,7 @@ export class UrlbarValueFormatter { @@ -585,6 +585,7 @@ export class UrlbarValueFormatter {

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/urlbar/UrlbarView.sys.mjs b/browser/components/urlbar/UrlbarView.sys.mjs 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 --- a/browser/components/urlbar/UrlbarView.sys.mjs
+++ b/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.value ||
this.input.getAttribute("pageproxystate") == "valid" 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 // 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 // there will be a gap of time between when the input is focused and
// when the view opens that can be perceived as flicker. // 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")) { if (row?.hasAttribute("row-selectable")) {
row?.toggleAttribute("selected", true); row?.toggleAttribute("selected", true);
} }
@@ -20,12 +20,12 @@ index fdbab8806fd320f4aacec46a42c8ef953580d00c..031a615ad09274c578184b129434bbd9
if (element != row) { if (element != row) {
row?.toggleAttribute("descendant-selected", true); row?.toggleAttribute("descendant-selected", true);
} }
@@ -3189,7 +3191,7 @@ export class UrlbarView { @@ -3215,7 +3217,7 @@ export class UrlbarView {
} }
#enableOrDisableRowWrap() { #enableOrDisableRowWrap() {
- let wrap = getBoundsWithoutFlushing(this.input.textbox).width < 650; - let wrap = getBoundsWithoutFlushing(this.input.textbox).width < 650;
+ let wrap = false; + let wrap = false;
this.#rows.toggleAttribute("wrap", wrap); this.#rows.toggleAttribute("wrap", wrap);
this.oneOffSearchButtons.container.toggleAttribute("wrap", wrap); this.oneOffSearchButtons?.container.toggleAttribute("wrap", wrap);
} }

View File

@@ -1,8 +1,8 @@
diff --git a/browser/extensions/newtab/lib/ActivityStream.sys.mjs b/browser/extensions/newtab/lib/ActivityStream.sys.mjs 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 --- a/browser/extensions/newtab/lib/ActivityStream.sys.mjs
+++ b/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", "showSponsoredTopSites",
{ {
title: "Show sponsored top sites", title: "Show sponsored top sites",

View File

@@ -1,8 +1,8 @@
diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in 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 --- a/browser/installer/package-manifest.in
+++ b/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] ; [MaintenanceService]
; ;
#ifdef MOZ_MAINTENANCE_SERVICE #ifdef MOZ_MAINTENANCE_SERVICE

View File

@@ -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/",
- },
- ],
]);

View File

@@ -1,5 +1,5 @@
diff --git a/browser/themes/linux/browser.css b/browser/themes/linux/browser.css 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 --- a/browser/themes/linux/browser.css
+++ b/browser/themes/linux/browser.css +++ b/browser/themes/linux/browser.css
@@ -43,7 +43,8 @@ @@ -43,7 +43,8 @@

View File

@@ -1,5 +1,5 @@
diff --git a/browser/themes/osx/browser.css b/browser/themes/osx/browser.css 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 --- a/browser/themes/osx/browser.css
+++ b/browser/themes/osx/browser.css +++ b/browser/themes/osx/browser.css
@@ -38,7 +38,7 @@ @@ -38,7 +38,7 @@

View File

@@ -1,8 +1,8 @@
diff --git a/browser/themes/shared/browser-shared.css b/browser/themes/shared/browser-shared.css 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 --- a/browser/themes/shared/browser-shared.css
+++ b/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; --toolbarbutton-border-radius: 4px;
--identity-box-margin-inline: 4px; --identity-box-margin-inline: 4px;
--urlbar-min-height: max(32px, 1.4em); --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 /* 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 */ 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 { &.fullscreen-with-menubar {
z-index: var(--browser-area-z-index-toolbox-while-animating); z-index: var(--browser-area-z-index-toolbox-while-animating);

View File

@@ -1,11 +1,11 @@
diff --git a/browser/themes/shared/jar.inc.mn b/browser/themes/shared/jar.inc.mn 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 --- a/browser/themes/shared/jar.inc.mn
+++ b/browser/themes/shared/jar.inc.mn +++ b/browser/themes/shared/jar.inc.mn
@@ -316,3 +316,5 @@ @@ -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/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 +#include zen-sources.inc.mn
\ No newline at end of file \ No newline at end of file

View File

@@ -1,5 +1,5 @@
diff --git a/browser/themes/shared/tabbrowser/content-area.css b/browser/themes/shared/tabbrowser/content-area.css 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 --- a/browser/themes/shared/tabbrowser/content-area.css
+++ b/browser/themes/shared/tabbrowser/content-area.css +++ b/browser/themes/shared/tabbrowser/content-area.css
@@ -276,7 +276,7 @@ @@ -276,7 +276,7 @@

View File

@@ -1,5 +1,5 @@
diff --git a/browser/themes/shared/tabbrowser/tabs.css b/browser/themes/shared/tabbrowser/tabs.css 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 --- a/browser/themes/shared/tabbrowser/tabs.css
+++ b/browser/themes/shared/tabbrowser/tabs.css +++ b/browser/themes/shared/tabbrowser/tabs.css
@@ -21,7 +21,7 @@ @@ -21,7 +21,7 @@
@@ -102,7 +102,7 @@ index 07574cdd974f63b90355f069f0fbc3fa6cd61b50..c650da2adf0d1a53b05a09d1b43fa5f5
&:is([soundplaying], [muted], [activemedia-blocked]) { &:is([soundplaying], [muted], [activemedia-blocked]) {
display: flex; display: flex;
} }
@@ -1137,7 +1130,7 @@ tab-group { @@ -1226,7 +1219,7 @@ tab-group {
} }
#tabbrowser-tabs[orient="vertical"][expanded] { #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]) { &[movingtab][movingtab-addToGroup]:not([movingtab-group], [movingtab-ungroup]) .tabbrowser-tab:is(:active, [multiselected]) {
margin-inline-start: var(--space-medium); 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 { #vertical-tabs-newtab-button {
appearance: none; appearance: none;
min-height: var(--tab-min-height); 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); margin-inline: var(--tab-inner-inline-margin);
#tabbrowser-tabs[orient="vertical"]:not([expanded]) & > .toolbarbutton-text { #tabbrowser-tabs[orient="vertical"]:not([expanded]) & > .toolbarbutton-text {
@@ -129,7 +129,7 @@ index 07574cdd974f63b90355f069f0fbc3fa6cd61b50..c650da2adf0d1a53b05a09d1b43fa5f5
} }
&:hover { &: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 * 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. * 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); margin-block: var(--tab-block-margin);
} }
@@ -1793,7 +1786,6 @@ tab-group { @@ -1913,7 +1906,6 @@ tab-group {
&:not([expanded]) { &:not([expanded]) {
.tabbrowser-tab[pinned] { .tabbrowser-tab[pinned] {
@@ -146,7 +146,7 @@ index 07574cdd974f63b90355f069f0fbc3fa6cd61b50..c650da2adf0d1a53b05a09d1b43fa5f5
} }
.tab-background { .tab-background {
@@ -1833,8 +1825,8 @@ tab-group { @@ -1953,8 +1945,8 @@ tab-group {
display: block; display: block;
position: absolute; position: absolute;
inset: auto; inset: auto;
@@ -157,7 +157,7 @@ index 07574cdd974f63b90355f069f0fbc3fa6cd61b50..c650da2adf0d1a53b05a09d1b43fa5f5
&:-moz-window-inactive { &:-moz-window-inactive {
background-image: 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); list-style-image: url(chrome://global/skin/icons/plus.svg);
} }

View File

@@ -1,8 +1,8 @@
diff --git a/browser/themes/shared/toolbarbuttons.css b/browser/themes/shared/toolbarbuttons.css 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 --- a/browser/themes/shared/toolbarbuttons.css
+++ b/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 { #nav-bar-overflow-button {
list-style-image: url("chrome://global/skin/icons/chevron.svg"); list-style-image: url("chrome://global/skin/icons/chevron.svg");
@@ -11,7 +11,7 @@ index e7b1c17391ffae02226015d0dd8bbe8eca29731f..938a8cb8c3d854a75fe300db2a7330d1
display: none; display: none;
} }
@@ -466,7 +466,7 @@ toolbarbutton.bookmark-item:not(.subviewbutton) { @@ -489,7 +489,7 @@ toolbarbutton.bookmark-item:not(.subviewbutton) {
*/ */
align-items: stretch; align-items: stretch;
> .toolbarbutton-icon { > .toolbarbutton-icon {

View File

@@ -1,5 +1,5 @@
diff --git a/browser/themes/shared/urlbar-searchbar.css b/browser/themes/shared/urlbar-searchbar.css 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 --- a/browser/themes/shared/urlbar-searchbar.css
+++ b/browser/themes/shared/urlbar-searchbar.css +++ b/browser/themes/shared/urlbar-searchbar.css
@@ -6,7 +6,7 @@ @@ -6,7 +6,7 @@
@@ -11,7 +11,7 @@ index 11636a976736ba56dcc5a58081cee998bbdf58d4..0a6ca26f25511c799d8b40484b6bd1c8
--urlbar-margin-inline: 5px; --urlbar-margin-inline: 5px;
--urlbar-padding-block: 4px; --urlbar-padding-block: 4px;
@@ -33,7 +33,7 @@ @@ -48,7 +48,7 @@
#urlbar[usertyping] > .urlbar-input-container > #page-action-buttons > #urlbar-zoom-button, #urlbar[usertyping] > .urlbar-input-container > #page-action-buttons > #urlbar-zoom-button,
.urlbar:is(:not([usertyping]), :not([focused])) > .urlbar-input-container > .urlbar-go-button, .urlbar:is(:not([usertyping]), :not([focused])) > .urlbar-input-container > .urlbar-go-button,
.urlbar-revert-button-container { .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 /* 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] { .urlbar[breakout][breakout-extend] {
height: auto; height: auto;

View File

@@ -1,5 +1,5 @@
diff --git a/browser/themes/shared/urlbarView.css b/browser/themes/shared/urlbarView.css 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 --- a/browser/themes/shared/urlbarView.css
+++ b/browser/themes/shared/urlbarView.css +++ b/browser/themes/shared/urlbarView.css
@@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@

View File

@@ -1,5 +1,5 @@
diff --git a/browser/themes/windows/browser.css b/browser/themes/windows/browser.css 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 --- a/browser/themes/windows/browser.css
+++ b/browser/themes/windows/browser.css +++ b/browser/themes/windows/browser.css
@@ -31,7 +31,6 @@ @@ -31,7 +31,6 @@

View File

@@ -1,8 +1,8 @@
diff --git a/build/moz.build b/build/moz.build diff --git a/build/moz.build b/build/moz.build
index f7a912ec35dd089ea9a7e712765e954854f55cb3..a84534efbc7662f81573a4a80bc045e0a6d2ed3e 100644 index 720fb1235f418fb063e88d8bbcd2eb444e84870b..ed831a4d35e006bc03aa514a6c00968a4dd19624 100644
--- a/build/moz.build --- a/build/moz.build
+++ b/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]: if CONFIG[var]:
appini_defines[var] = True appini_defines[var] = True

View File

@@ -1,8 +1,8 @@
diff --git a/devtools/server/actors/animation-type-longhand.js b/devtools/server/actors/animation-type-longhand.js 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 --- a/devtools/server/actors/animation-type-longhand.js
+++ b/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", "transform-origin",
"translate", "translate",
"-moz-window-transform", "-moz-window-transform",

View File

@@ -1,5 +1,5 @@
diff --git a/devtools/startup/DevToolsStartup.sys.mjs b/devtools/startup/DevToolsStartup.sys.mjs 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 --- a/devtools/startup/DevToolsStartup.sys.mjs
+++ b/devtools/startup/DevToolsStartup.sys.mjs +++ b/devtools/startup/DevToolsStartup.sys.mjs
@@ -816,6 +816,7 @@ DevToolsStartup.prototype = { @@ -816,6 +816,7 @@ DevToolsStartup.prototype = {

View File

@@ -1,8 +1,8 @@
diff --git a/dom/base/Document.cpp b/dom/base/Document.cpp 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 --- a/dom/base/Document.cpp
+++ b/dom/base/Document.cpp +++ b/dom/base/Document.cpp
@@ -467,6 +467,7 @@ @@ -466,6 +466,7 @@
#include "prtime.h" #include "prtime.h"
#include "prtypes.h" #include "prtypes.h"
#include "xpcpublic.h" #include "xpcpublic.h"
@@ -10,7 +10,7 @@ index 7d7a93e9e76b4957e3ac5860dfc730b7c4e6ad1d..c7c689b73c6599e9e736f73a67bb402d
// clang-format off // clang-format off
#include "mozilla/Encoding.h" #include "mozilla/Encoding.h"
@@ -3345,6 +3346,10 @@ void Document::FillStyleSetUserAndUASheets() { @@ -3428,6 +3429,10 @@ void Document::FillStyleSetUserAndUASheets() {
for (StyleSheet* sheet : *sheetService->UserStyleSheets()) { for (StyleSheet* sheet : *sheetService->UserStyleSheets()) {
styleSet.AppendStyleSheet(*sheet); styleSet.AppendStyleSheet(*sheet);
} }

View File

@@ -1,8 +1,8 @@
diff --git a/dom/base/use_counter_metrics.yaml b/dom/base/use_counter_metrics.yaml 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 --- a/dom/base/use_counter_metrics.yaml
+++ b/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: send_in_pings:
- use-counters - use-counters
@@ -25,7 +25,7 @@ index adf8d1ed451a54426d92e65557801cffa2f64281..0bf810d3544e42689ad530468bfce538
css_transform_origin: css_transform_origin:
type: counter type: counter
description: > description: >
@@ -33481,6 +33497,22 @@ use.counter.css.doc: @@ -33175,6 +33191,22 @@ use.counter.css.doc:
send_in_pings: send_in_pings:
- use-counters - use-counters

View File

@@ -1,5 +1,5 @@
diff --git a/dom/media/mediaelement/HTMLMediaElement.cpp b/dom/media/mediaelement/HTMLMediaElement.cpp 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 --- a/dom/media/mediaelement/HTMLMediaElement.cpp
+++ b/dom/media/mediaelement/HTMLMediaElement.cpp +++ b/dom/media/mediaelement/HTMLMediaElement.cpp
@@ -453,6 +453,7 @@ class HTMLMediaElement::MediaControlKeyListener final @@ -453,6 +453,7 @@ class HTMLMediaElement::MediaControlKeyListener final
@@ -10,7 +10,7 @@ index d46d5edc1d66c1eee8780abad444289fdc36a518..0e0d69819d9eee82add726792ec829c0
NotifyAudibleStateChanged(mIsOwnerAudible NotifyAudibleStateChanged(mIsOwnerAudible
? MediaAudibleState::eAudible ? MediaAudibleState::eAudible
: MediaAudibleState::eInaudible); : MediaAudibleState::eInaudible);
@@ -7034,6 +7035,9 @@ void HTMLMediaElement::FireTimeUpdate(TimeupdateType aType) { @@ -7191,6 +7192,9 @@ void HTMLMediaElement::FireTimeUpdate(TimeupdateType aType) {
QueueTask(std::move(runner)); QueueTask(std::move(runner));
mQueueTimeUpdateRunnerTime = TimeStamp::Now(); mQueueTimeUpdateRunnerTime = TimeStamp::Now();
mLastCurrentTime = CurrentTime(); mLastCurrentTime = CurrentTime();

View File

@@ -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<String> = 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<uint16_t, 4 * 4> dither(
+ const VectorType<uint16_t, 4 * 4>* color, ivec4_scalar fragCoord) {
+ VectorType<uint16_t, 4 * 4> 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<uint32_t>(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<uint16_t, 4 * 4> 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 <bool BLEND>
+template <bool BLEND, bool DITHER>
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<BLEND>(buf, bit_cast<WideRGBA8>(color >> 8));
+ if (DITHER) {
+ commit_blend_span<BLEND>(
+ buf,
+ bit_cast<WideRGBA8>(dither(&color, currentFragCoord) >> 8));
+ currentFragCoord.x += 4;
+ } else {
+ commit_blend_span<BLEND>(buf, bit_cast<WideRGBA8>(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<BLEND>(buf, sampleGradient(sampler, address, entry));
+
+ if (DITHER) {
+ auto gradientSample = static_cast<VectorType<uint16_t, 4 * 4>>(
+ sampleGradient(sampler, address, entry))
+ << 8;
+ commit_blend_span<BLEND>(
+ buf,
+ static_cast<WideRGBA8>(
+ dither(&gradientSample, currentFragCoord) >> 8));
+ currentFragCoord.x += 4;
+ } else {
+ commit_blend_span<BLEND>(
+ buf, static_cast<WideRGBA8>(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<true>( \
+ drawn = commitLinearGradient<true, false>( \
+ sampler, address, size, tileRepeat, gradientRepeat, pos, scaleDir, \
+ startOffset, swgl_OutRGBA8, swgl_SpanLength, \
+ static_cast<vec4>(0x0)); \
+ } else { \
+ drawn = commitLinearGradient<false, false>( \
+ sampler, address, size, tileRepeat, gradientRepeat, pos, scaleDir, \
+ startOffset, swgl_OutRGBA8, swgl_SpanLength, \
+ static_cast<vec4>(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<true, true>( \
sampler, address, size, tileRepeat, gradientRepeat, pos, scaleDir, \
- startOffset, swgl_OutRGBA8, swgl_SpanLength); \
+ startOffset, swgl_OutRGBA8, swgl_SpanLength, fragCoord); \
} else { \
- drawn = commitLinearGradient<false>( \
+ drawn = commitLinearGradient<false, true>( \
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 <bool BLEND>
+template <bool BLEND, bool DITHER>
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<false>(dotPos);
- commit_blend_span<BLEND>(
- 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<BLEND>(
+ buf, static_cast<WideRGBA8>(
+ 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<BLEND>(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<true>(sampler, address, size, repeat, pos, \
- radius, swgl_OutRGBA8, swgl_SpanLength); \
- } else { \
- drawn = \
- commitRadialGradient<false>(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<true, false>( \
+ sampler, address, size, repeat, pos, radius, swgl_OutRGBA8, \
+ swgl_SpanLength, \
+ static_cast<vec4>(0x0)); \
+ } else { \
+ drawn = commitRadialGradient<false, false>( \
+ sampler, address, size, repeat, pos, radius, swgl_OutRGBA8, \
+ swgl_SpanLength, \
+ static_cast<vec4>(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<true, true>( \
+ sampler, address, size, repeat, pos, radius, swgl_OutRGBA8, \
+ swgl_SpanLength, fragCoord); \
+ } else { \
+ drawn = commitRadialGradient<false, true>( \
+ 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

View File

@@ -1,8 +1,8 @@
diff --git a/layout/generic/nsIFrame.cpp b/layout/generic/nsIFrame.cpp 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 --- a/layout/generic/nsIFrame.cpp
+++ b/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( gfx::Matrix4x4 matrix = nsStyleTransformMatrix::ReadTransforms(
uiReset->mMozWindowTransform, refBox, float(appUnitsPerDevPixel)); uiReset->mMozWindowTransform, refBox, float(appUnitsPerDevPixel));

View File

@@ -1,8 +1,8 @@
diff --git a/layout/style/nsStyleStruct.cpp b/layout/style/nsStyleStruct.cpp 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 --- a/layout/style/nsStyleStruct.cpp
+++ b/layout/style/nsStyleStruct.cpp +++ b/layout/style/nsStyleStruct.cpp
@@ -3266,6 +3266,9 @@ nsStyleUIReset::nsStyleUIReset() @@ -3273,6 +3273,9 @@ nsStyleUIReset::nsStyleUIReset()
mWindowShadow(StyleWindowShadow::Auto), mWindowShadow(StyleWindowShadow::Auto),
mWindowOpacity(1.0), mWindowOpacity(1.0),
mMozWindowInputRegionMargin(StyleLength::Zero()), mMozWindowInputRegionMargin(StyleLength::Zero()),
@@ -12,7 +12,7 @@ index 3fc58a635189d2160be84c3c8083e63abce611f0..7aac552365a4414229879e2dd9586f7f
mTransitions( mTransitions(
nsStyleAutoArray<StyleTransition>::WITH_SINGLE_INITIAL_ELEMENT), nsStyleAutoArray<StyleTransition>::WITH_SINGLE_INITIAL_ELEMENT),
mTransitionTimingFunctionCount(1), mTransitionTimingFunctionCount(1),
@@ -3310,6 +3313,7 @@ nsStyleUIReset::nsStyleUIReset(const nsStyleUIReset& aSource) @@ -3317,6 +3320,7 @@ nsStyleUIReset::nsStyleUIReset(const nsStyleUIReset& aSource)
mWindowOpacity(aSource.mWindowOpacity), mWindowOpacity(aSource.mWindowOpacity),
mMozWindowInputRegionMargin(aSource.mMozWindowInputRegionMargin), mMozWindowInputRegionMargin(aSource.mMozWindowInputRegionMargin),
mMozWindowTransform(aSource.mMozWindowTransform), mMozWindowTransform(aSource.mMozWindowTransform),

View File

@@ -1,8 +1,8 @@
diff --git a/layout/style/nsStyleStruct.h b/layout/style/nsStyleStruct.h 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 --- a/layout/style/nsStyleStruct.h
+++ b/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. // The margin of the window region that should be transparent to events.
mozilla::StyleLength mMozWindowInputRegionMargin; mozilla::StyleLength mMozWindowInputRegionMargin;
mozilla::StyleTransform mMozWindowTransform; mozilla::StyleTransform mMozWindowTransform;

View File

@@ -1,8 +1,8 @@
diff --git a/modules/libpref/init/StaticPrefList.yaml b/modules/libpref/init/StaticPrefList.yaml 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 --- a/modules/libpref/init/StaticPrefList.yaml
+++ b/modules/libpref/init/StaticPrefList.yaml +++ b/modules/libpref/init/StaticPrefList.yaml
@@ -19222,6 +19215,7 @@ @@ -19316,6 +19316,7 @@
mirror: always mirror: always
#endif #endif

View File

@@ -1,5 +1,5 @@
diff --git a/modules/libpref/moz.build b/modules/libpref/moz.build 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 --- a/modules/libpref/moz.build
+++ b/modules/libpref/moz.build +++ b/modules/libpref/moz.build
@@ -93,6 +93,7 @@ pref_groups = [ @@ -93,6 +93,7 @@ pref_groups = [

View File

@@ -1,5 +1,5 @@
diff --git a/servo/components/style/gecko/media_features.rs b/servo/components/style/gecko/media_features.rs 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 --- a/servo/components/style/gecko/media_features.rs
+++ b/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}; @@ -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::<i32>::None) }) + KleeneValue::from(unsafe { bindings::Gecko_EvalMozPrefFeature(pref.as_ptr(), &MozPrefFeatureValue::<i32>::None) })
+} +}
fn get_lnf_int(int_id: i32) -> i32 { fn eval_moz_mac_rtl(context: &Context) -> bool {
unsafe { bindings::Gecko_GetLookAndFeelInt(int_id) } unsafe { bindings::Gecko_MediaFeatures_MacRTL(context.device().document()) }
@@ -641,7 +651,13 @@ macro_rules! lnf_int_feature { @@ -645,7 +655,13 @@ macro_rules! lnf_int_feature {
/// to support new types in these entries and (2) ensuring that either /// to support new types in these entries and (2) ensuring that either
/// nsPresContext::MediaFeatureValuesChanged is called when the value that /// nsPresContext::MediaFeatureValuesChanged is called when the value that
/// would be returned by the evaluator function could change. /// would be returned by the evaluator function could change.

View File

@@ -1,5 +1,5 @@
diff --git a/servo/components/style/queries/feature.rs b/servo/components/style/queries/feature.rs 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 --- a/servo/components/style/queries/feature.rs
+++ b/servo/components/style/queries/feature.rs +++ b/servo/components/style/queries/feature.rs
@@ -6,6 +6,7 @@ @@ -6,6 +6,7 @@

View File

@@ -1,5 +1,5 @@
diff --git a/servo/components/style/queries/feature_expression.rs b/servo/components/style/queries/feature_expression.rs 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 --- a/servo/components/style/queries/feature_expression.rs
+++ b/servo/components/style/queries/feature_expression.rs +++ b/servo/components/style/queries/feature_expression.rs
@@ -11,7 +11,7 @@ use crate::parser::{Parse, ParserContext}; @@ -11,7 +11,7 @@ use crate::parser::{Parse, ParserContext};

View File

@@ -1,5 +1,5 @@
diff --git a/testing/mochitest/browser-test.js b/testing/mochitest/browser-test.js 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 --- a/testing/mochitest/browser-test.js
+++ b/testing/mochitest/browser-test.js +++ b/testing/mochitest/browser-test.js
@@ -440,11 +440,11 @@ Tester.prototype = { @@ -440,11 +440,11 @@ Tester.prototype = {

View File

@@ -1,5 +1,5 @@
diff --git a/toolkit/components/downloads/DownloadList.sys.mjs b/toolkit/components/downloads/DownloadList.sys.mjs 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 --- a/toolkit/components/downloads/DownloadList.sys.mjs
+++ b/toolkit/components/downloads/DownloadList.sys.mjs +++ b/toolkit/components/downloads/DownloadList.sys.mjs
@@ -50,6 +50,7 @@ const FILE_EXTENSIONS = [ @@ -50,6 +50,7 @@ const FILE_EXTENSIONS = [

View File

@@ -1,5 +1,5 @@
diff --git a/toolkit/components/extensions/parent/ext-downloads.js b/toolkit/components/extensions/parent/ext-downloads.js 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 --- a/toolkit/components/extensions/parent/ext-downloads.js
+++ b/toolkit/components/extensions/parent/ext-downloads.js +++ b/toolkit/components/extensions/parent/ext-downloads.js
@@ -87,6 +87,7 @@ const FILTER_IMAGES_EXTENSIONS = [ @@ -87,6 +87,7 @@ const FILTER_IMAGES_EXTENSIONS = [

View File

@@ -1,8 +1,8 @@
diff --git a/toolkit/components/pictureinpicture/content/player.js b/toolkit/components/pictureinpicture/content/player.js 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 --- a/toolkit/components/pictureinpicture/content/player.js
+++ b/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(); document.getElementById("large").click();
break; break;
} }

View File

@@ -1,5 +1,5 @@
diff --git a/toolkit/components/pictureinpicture/content/player.xhtml b/toolkit/components/pictureinpicture/content/player.xhtml 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 --- a/toolkit/components/pictureinpicture/content/player.xhtml
+++ b/toolkit/components/pictureinpicture/content/player.xhtml +++ b/toolkit/components/pictureinpicture/content/player.xhtml
@@ -18,6 +18,7 @@ @@ -18,6 +18,7 @@

View File

@@ -1,8 +1,8 @@
diff --git a/toolkit/content/widgets/browser-custom-element.mjs b/toolkit/content/widgets/browser-custom-element.mjs 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 --- a/toolkit/content/widgets/browser-custom-element.mjs
+++ b/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) { if (!this.browsingContext) {
return; return;
} }

View File

@@ -1,5 +1,5 @@
diff --git a/toolkit/content/widgets/moz-toggle/moz-toggle.css b/toolkit/content/widgets/moz-toggle/moz-toggle.css 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 --- a/toolkit/content/widgets/moz-toggle/moz-toggle.css
+++ b/toolkit/content/widgets/moz-toggle/moz-toggle.css +++ b/toolkit/content/widgets/moz-toggle/moz-toggle.css
@@ -6,8 +6,8 @@ @@ -6,8 +6,8 @@

View File

@@ -1,8 +1,8 @@
diff --git a/toolkit/modules/moz.build b/toolkit/modules/moz.build 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 --- a/toolkit/modules/moz.build
+++ b/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", "DLL_SUFFIX",
"DEBUG_JS_MODULES", "DEBUG_JS_MODULES",
"OMNIJAR_NAME", "OMNIJAR_NAME",

View File

@@ -1,5 +1,5 @@
diff --git a/toolkit/moz.configure b/toolkit/moz.configure diff --git a/toolkit/moz.configure b/toolkit/moz.configure
index 44b91b7bb3e0196b7f1f923c43fb8967f569cd28..907f7059cb44b990b5eb3a90d5df523075cd6ae1 100644 index 2fdcf62bde7805e52737cb06ec67908fa40524c9..b9f9e3abeb5cf770b29e1354615184fce2162ec7 100644
--- a/toolkit/moz.configure --- a/toolkit/moz.configure
+++ b/toolkit/moz.configure +++ b/toolkit/moz.configure
@@ -22,6 +22,7 @@ def check_moz_app_id(moz_app_id, build_project): @@ -22,6 +22,7 @@ def check_moz_app_id(moz_app_id, build_project):

View File

@@ -1,5 +1,5 @@
diff --git a/toolkit/mozapps/extensions/AddonManager.sys.mjs b/toolkit/mozapps/extensions/AddonManager.sys.mjs 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 --- a/toolkit/mozapps/extensions/AddonManager.sys.mjs
+++ b/toolkit/mozapps/extensions/AddonManager.sys.mjs +++ b/toolkit/mozapps/extensions/AddonManager.sys.mjs
@@ -1227,12 +1227,12 @@ var AddonManagerInternal = { @@ -1227,12 +1227,12 @@ var AddonManagerInternal = {

View File

@@ -1,5 +1,5 @@
diff --git a/toolkit/mozapps/extensions/content/aboutaddons.css b/toolkit/mozapps/extensions/content/aboutaddons.css 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 --- a/toolkit/mozapps/extensions/content/aboutaddons.css
+++ b/toolkit/mozapps/extensions/content/aboutaddons.css +++ b/toolkit/mozapps/extensions/content/aboutaddons.css
@@ -105,6 +105,13 @@ h2 { @@ -105,6 +105,13 @@ h2 {

View File

@@ -1,8 +1,8 @@
diff --git a/toolkit/profile/nsToolkitProfileService.cpp b/toolkit/profile/nsToolkitProfileService.cpp 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 --- a/toolkit/profile/nsToolkitProfileService.cpp
+++ b/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 INSTALL_PREFIX_LENGTH 7
#define STORE_ID_PREF "toolkit.profiles.storeID" #define STORE_ID_PREF "toolkit.profiles.storeID"
@@ -11,7 +11,7 @@ index befc1def42c9fdd33438f0485cea6d36520adf28..1d3dd61fd3dd1769a9523c95993bb31c
struct KeyValue { struct KeyValue {
KeyValue(const char* aKey, const char* aValue) : key(aKey), value(aValue) {} 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) { if (mUseDevEditionProfile) {
name.AssignLiteral(DEV_EDITION_NAME); name.AssignLiteral(DEV_EDITION_NAME);
} else if (mUseDedicatedProfile) { } else if (mUseDedicatedProfile) {

View File

@@ -1,8 +1,8 @@
diff --git a/toolkit/themes/shared/aboutReader.css b/toolkit/themes/shared/aboutReader.css 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 --- a/toolkit/themes/shared/aboutReader.css
+++ b/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; display: block;
overflow: auto; overflow: auto;
} }

View File

@@ -1,5 +1,5 @@
diff --git a/toolkit/themes/shared/in-content/common-shared.css b/toolkit/themes/shared/in-content/common-shared.css 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 --- a/toolkit/themes/shared/in-content/common-shared.css
+++ b/toolkit/themes/shared/in-content/common-shared.css +++ b/toolkit/themes/shared/in-content/common-shared.css
@@ -4,7 +4,7 @@ @@ -4,7 +4,7 @@
@@ -11,7 +11,7 @@ index c45d48dc3106a2dc36f6dd704ebb2721817f016e..71291ab50b73872473190537fe2ce7a9
@namespace html "http://www.w3.org/1999/xhtml"; @namespace html "http://www.w3.org/1999/xhtml";
@namespace xul "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; @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. * this in forced colors mode, as we should be using system colours then.
*/ */
:root[dialogroot] { :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; fill-opacity: 1;
} }
@@ -29,7 +29,7 @@ index c45d48dc3106a2dc36f6dd704ebb2721817f016e..71291ab50b73872473190537fe2ce7a9
:root { :root {
--in-content-sidebar-width: 118px; --in-content-sidebar-width: 118px;
} }
@@ -1098,7 +1098,7 @@ xul|*.sidebar-footer-link { @@ -1096,7 +1096,7 @@ xul|*.sidebar-footer-link {
user-select: none; user-select: none;
} }

View File

@@ -1,5 +1,5 @@
diff --git a/toolkit/themes/shared/menulist.css b/toolkit/themes/shared/menulist.css 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 --- a/toolkit/themes/shared/menulist.css
+++ b/toolkit/themes/shared/menulist.css +++ b/toolkit/themes/shared/menulist.css
@@ -53,7 +53,7 @@ @@ -53,7 +53,7 @@
@@ -9,5 +9,5 @@ index e5ac973b1ee2595e8547680465e25d537685a9e7..20f85152d783c81be5e29846353daca9
- background-color: var(--button-background-color); - background-color: var(--button-background-color);
+ background-color: light-dark(rgba(0,0,0,.1), rgba(255,255,255,.1)); + background-color: light-dark(rgba(0,0,0,.1), rgba(255,255,255,.1));
color: var(--button-text-color); color: var(--button-text-color);
border-radius: 4px; border-radius: var(--border-radius-small);
padding-block: 4px; padding-block: 4px;

View File

@@ -1,8 +1,8 @@
diff --git a/toolkit/themes/shared/pictureinpicture/player.css b/toolkit/themes/shared/pictureinpicture/player.css 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 --- a/toolkit/themes/shared/pictureinpicture/player.css
+++ b/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; justify-self: center;
} }
} }

View File

@@ -1,5 +1,5 @@
diff --git a/tools/signing/macos/mach_commands.py b/tools/signing/macos/mach_commands.py 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 --- a/tools/signing/macos/mach_commands.py
+++ b/tools/signing/macos/mach_commands.py +++ b/tools/signing/macos/mach_commands.py
@@ -37,7 +37,6 @@ from mozbuild.base import MachCommandConditions as conditions @@ -37,7 +37,6 @@ from mozbuild.base import MachCommandConditions as conditions
@@ -21,7 +21,7 @@ index 454a9bbc35802fbf811065e8e1ca592674016bb3..d6b0cf119664e0534a3898f72ffbcd3a
if use_rcodesign_arg is True: if use_rcodesign_arg is True:
sign_with_rcodesign( sign_with_rcodesign(
command_context, 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. # input path and its options are specified as standard arguments.
ctx.log(logging.INFO, "macos-sign", {}, "Signing with rcodesign") ctx.log(logging.INFO, "macos-sign", {}, "Signing with rcodesign")

View File

@@ -1,8 +1,8 @@
diff --git a/widget/cocoa/nsCocoaWindow.mm b/widget/cocoa/nsCocoaWindow.mm 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 --- a/widget/cocoa/nsCocoaWindow.mm
+++ b/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. // Returns an autoreleased NSImage.
static NSImage* GetMenuMaskImage() { static NSImage* GetMenuMaskImage() {

View File

@@ -1,8 +1,8 @@
diff --git a/xpfe/appshell/AppWindow.cpp b/xpfe/appshell/AppWindow.cpp 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 --- a/xpfe/appshell/AppWindow.cpp
+++ b/xpfe/appshell/AppWindow.cpp +++ b/xpfe/appshell/AppWindow.cpp
@@ -1873,7 +1873,7 @@ nsresult AppWindow::MaybeSaveEarlyWindowPersistentValues( @@ -1874,7 +1874,7 @@ nsresult AppWindow::MaybeSaveEarlyWindowPersistentValues(
} }
} }

View File

@@ -61,11 +61,6 @@
setTimeout(() => { setTimeout(() => {
gZenUIManager.init(); gZenUIManager.init();
this.#checkForWelcomePage(); this.#checkForWelcomePage();
document.l10n.setAttributes(
document.getElementById('tabs-newtab-button'),
'tabs-toolbar-new-tab'
);
}, 0); }, 0);
} catch (e) { } catch (e) {
console.error('ZenThemeModifier: Error initializing browser layout', e); console.error('ZenThemeModifier: Error initializing browser layout', e);

View File

@@ -889,7 +889,6 @@ var gZenVerticalTabsManager = {
if (typeof height !== 'undefined') { if (typeof height !== 'undefined') {
document.getElementById('urlbar').style.setProperty('--urlbar-height', `${height}px`); document.getElementById('urlbar').style.setProperty('--urlbar-height', `${height}px`);
} }
gURLBar.valueFormatter._formatURL();
}); });
}, },

View File

@@ -111,6 +111,10 @@
border-radius: 0px !important; 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']) { :root[zen-single-toolbar='true'] #urlbar:not([breakout-extend='true']) {
& #urlbar-input { & #urlbar-input {
cursor: default; cursor: default;

View File

@@ -500,12 +500,12 @@ body > #confetti {
to bottom, to bottom,
color-mix( color-mix(
in srgb, 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% transparent 100%
), ),
color-mix( color-mix(
in srgb, 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% transparent 100%
) )
); );
@@ -514,7 +514,7 @@ body > #confetti {
border-radius: 6px; border-radius: 6px;
--base-border-color: light-dark(rgba(0, 0, 0, 0.3), rgba(255, 255, 255, 0.1)); --base-border-color: light-dark(rgba(0, 0, 0, 0.3), rgba(255, 255, 255, 0.1));
border: 1px solid; 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-left-color: light-dark(var(--base-border-color), transparent);
border-right-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)); border-bottom-color: light-dark(var(--base-border-color), rgba(0, 0, 0, 0.12));

View File

@@ -8,6 +8,7 @@ support-files = [
] ]
["browser_tabs_empty_checks.js"] ["browser_tabs_empty_checks.js"]
["browser_tabs_fetch_checks.js"]
["browser_drag_drop_vertical.js"] ["browser_drag_drop_vertical.js"]
tags = [ tags = [
"drag-drop", "drag-drop",

View File

@@ -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'
);
});

View File

@@ -950,6 +950,8 @@ var gZenWorkspaces = new (class extends nsZenMultiWindowFeature {
window.addEventListener('TabSelect', this.onLocationChange.bind(this)); window.addEventListener('TabSelect', this.onLocationChange.bind(this));
window.addEventListener('TabBrowserInserted', this.onTabBrowserInserted.bind(this)); window.addEventListener('TabBrowserInserted', this.onTabBrowserInserted.bind(this));
await this.selectStartPage();
} }
async selectStartPage() { async selectStartPage() {

View File

@@ -6,7 +6,7 @@
"version": { "version": {
"product": "firefox", "product": "firefox",
"version": "143.0.4", "version": "143.0.4",
"candidate": "143.0.4" "candidate": "144.0"
}, },
"buildOptions": { "buildOptions": {
"generateBranding": true "generateBranding": true