chore: Update to Firefox 143.0, c=l10n, common (#10304)

This commit is contained in:
mr. m
2025-09-11 18:00:10 +02:00
committed by GitHub
parent 2241047976
commit 5933c55c13
137 changed files with 16357 additions and 1395 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
- [`Release`](https://zen-browser.app/download) - Is currently built using Firefox version `142.0.1`! 🚀
- [`Twilight`](https://zen-browser.app/download?twilight) - Is currently built using Firefox version `RC 142.0.1`!
- [`Twilight`](https://zen-browser.app/download?twilight) - Is currently built using Firefox version `RC 143.0`!
### Contributing

View File

@@ -1 +1 @@
df0d5e625b9e55c502d3e9e81b29a0d52d0f8d20
900c4f612d9432ae34a1a596a271fd2ce343dd18

View File

@@ -29,6 +29,7 @@ finish-args:
- --system-talk-name=org.freedesktop.NetworkManager
- --talk-name=org.a11y.Bus
- --talk-name=org.gtk.vfs.*
- --talk-name=org.freedesktop.Notifications
- --own-name=org.mpris.MediaPlayer2.firefox.*
- --own-name=org.mozilla.zen.*
cleanup:

View File

@@ -29,7 +29,8 @@
"test:dbg": "python3 scripts/run_tests.py --jsdebugger --debug-on-failure",
"ffprefs": "cd tools/ffprefs && cargo run --bin ffprefs -- ../../",
"lc": "surfer license-check",
"lc:fix": "surfer license-check --fix"
"lc:fix": "surfer license-check --fix",
"use-moz-src": "cd engine && ./mach use-moz-src"
},
"repository": {
"type": "git",

View File

@@ -76,3 +76,6 @@
- name: browser.urlbar.scotchBonnet.enableOverride
value: false
- name: browser.tabs.groups.hoverPreview.enabled
value: false

View File

@@ -37,3 +37,7 @@
- name: browser.newtabpage.activity-stream.showSponsoredCheckboxes
value: false
- name: sidebar.verticalTabs.dragToPinPromo.dismissed
value: true
locked: true

View File

@@ -10,21 +10,16 @@ IGNORE_FILES=(
# Recursively find all .patch files in the current directory and its subdirectories
find src -type f -name "*.patch" | while read -r patch_file; do
# Replace all - with . and remove the .patch extension
new_file="${patch_file%/*}/$(basename "$patch_file" | sed 's/-/./' | sed 's/\.patch$//').patch"
new_file="${new_file%.patch}"
new_file="${new_file#src/}"
if [[ $new_file == *-mjs ]]; then
new_file="${new_file/-mjs/.mjs}"
fi
if [[ $new_file == *-ftl ]]; then
new_file="${new_file/-ftl/.ftl}"
# Get the file from the inside of the file as indicated by the patch
target_file=$(grep -m 1 -oP '(?<=\+\+\+ b/).+' "$patch_file")
if [[ -z "$target_file" ]]; then
echo "No target file found in patch: $patch_file"
continue
fi
new_file_base=$(basename "$new_file")
new_file_base=$(basename "$target_file")
if [[ ! " ${IGNORE_FILES[@]} " =~ " ${new_file_base} " ]]; then
npm run export ${new_file}
npm run export ${target_file}
fi
done

View File

@@ -6,6 +6,13 @@ import os
FILES = [
"index.d.ts",
"lib.gecko.tweaks.d.ts",
"lib.gecko.xpidl.d.ts",
]
GENERATED_FILES = [
"lib.gecko.win32.d.ts",
"lib.gecko.xpcom.d.ts",
"lib.gecko.darwin.d.ts",
"lib.gecko.dom.d.ts",
"lib.gecko.glean.d.ts",
@@ -13,20 +20,20 @@ FILES = [
"lib.gecko.modules.d.ts",
"lib.gecko.nsresult.d.ts",
"lib.gecko.services.d.ts",
"lib.gecko.tweaks.d.ts",
"lib.gecko.win32.d.ts",
"lib.gecko.xpcom.d.ts",
"lib.gecko.xpidl.d.ts",
]
ENGINE_PATH = os.path.join("engine", "tools", "@types")
GENERATED_PATH = os.path.join(ENGINE_PATH, "generated")
SRC_PATH = os.path.join("src", "zen", "@types")
def update_ts_types():
os.system("cd engine && ./mach ts build && ./mach ts update")
# copy the files from engine/tools/@types to src/@types
for file in FILES:
for file in FILES + GENERATED_FILES:
if file in GENERATED_FILES:
src_file = os.path.join(GENERATED_PATH, file)
else:
src_file = os.path.join(ENGINE_PATH, file)
dest_file = os.path.join(SRC_PATH, file)
if os.path.exists(src_file):

View File

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

View File

@@ -1,5 +1,5 @@
diff --git a/Cargo.toml b/Cargo.toml
index c41cc4f4e68e5b30e1a290e07b2c5061db4400cc..7fa5402b32116922766ee1463b441d3fc86c1eff 100644
index 0fdad8b956be8119f5a914b9cee01bb6520cd13d..f1414b5afd5c66c61d1585184de6b32f9918670d 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -218,6 +218,8 @@ moz_asserts = { path = "mozglue/static/rust/moz_asserts" }

View File

@@ -1,5 +1,5 @@
diff --git a/browser/actors/WebRTCParent.sys.mjs b/browser/actors/WebRTCParent.sys.mjs
index 49ba7724801e699c60fac72d67b3b2d11b6c8c93..5a9f209b3e6b625c6346083ab7eace552a81a3b4 100644
index f327e1684d0966a0dcfdcdbf8cc70259b27a4504..c8f722bda4cf297f5d0a6aa22dafbe27c4218123 100644
--- a/browser/actors/WebRTCParent.sys.mjs
+++ b/browser/actors/WebRTCParent.sys.mjs
@@ -152,6 +152,7 @@ export class WebRTCParent extends JSWindowActorParent {

View File

@@ -1,5 +1,5 @@
diff --git a/browser/app/macbuild/Contents/Info.plist.in b/browser/app/macbuild/Contents/Info.plist.in
index 73b400d58fd25ac13132f1a3fe3ea619e4f4e4f9..ee90ce7ac67bd9aa7bbc2a656843875afb985591 100644
index ea28831b90662b12bdcb137c35b6bb83626c77e7..d28f4eca976ad9de12b03d995d2363e643224421 100644
--- a/browser/app/macbuild/Contents/Info.plist.in
+++ b/browser/app/macbuild/Contents/Info.plist.in
@@ -191,7 +191,7 @@

View File

@@ -1,8 +1,8 @@
diff --git a/browser/base/content/browser-addons.js b/browser/base/content/browser-addons.js
index 061edde0e05e0744ba1aa80df5f9699e264fe69b..cc2b2f04758ee9690429ea6c4aad959d858218e8 100644
index d7542a38a0242dd9c9c6390171d59992d75a0c19..d20e5a9fa42c88c7ba28fac1ef13dd693f1f1135 100644
--- a/browser/base/content/browser-addons.js
+++ b/browser/base/content/browser-addons.js
@@ -1057,7 +1057,7 @@ var gXPInstallObserver = {
@@ -1064,7 +1064,7 @@ var gXPInstallObserver = {
persistent: true,
hideClose: true,
popupOptions: {
@@ -11,7 +11,7 @@ index 061edde0e05e0744ba1aa80df5f9699e264fe69b..cc2b2f04758ee9690429ea6c4aad959d
},
};
@@ -1266,7 +1266,7 @@ var gXPInstallObserver = {
@@ -1273,7 +1273,7 @@ var gXPInstallObserver = {
hideClose: true,
timeout: Date.now() + 30000,
popupOptions: {
@@ -20,7 +20,7 @@ index 061edde0e05e0744ba1aa80df5f9699e264fe69b..cc2b2f04758ee9690429ea6c4aad959d
},
};
@@ -2571,7 +2571,7 @@ var gUnifiedExtensions = {
@@ -2608,7 +2608,7 @@ var gUnifiedExtensions = {
this.recordButtonTelemetry(reason || "extensions_panel_showing");
this.ensureButtonShownBeforeAttachingPanel(panel);
PanelMultiView.openPopup(panel, this._button, {
@@ -29,7 +29,7 @@ index 061edde0e05e0744ba1aa80df5f9699e264fe69b..cc2b2f04758ee9690429ea6c4aad959d
triggerEvent: aEvent,
});
}
@@ -2758,18 +2758,20 @@ var gUnifiedExtensions = {
@@ -2795,18 +2795,20 @@ var gUnifiedExtensions = {
this._maybeMoveWidgetNodeBack(widgetId);
}

View File

@@ -1,8 +1,8 @@
diff --git a/browser/base/content/browser-commands.js b/browser/base/content/browser-commands.js
index b0b2383453ef771af3eb9260618f1e2e3022eb4e..d631cc8db95b4285e892ac8fcb5e72b7da489850 100644
index 637e9dda83df5b490d6340367dd63077904ea056..6ffb1dc6ed1d6e58b4e8de1faca887f6b38115cb 100644
--- a/browser/base/content/browser-commands.js
+++ b/browser/base/content/browser-commands.js
@@ -318,6 +318,10 @@ var BrowserCommands = {
@@ -317,6 +317,10 @@ var BrowserCommands = {
}
}
@@ -13,7 +13,7 @@ index b0b2383453ef771af3eb9260618f1e2e3022eb4e..d631cc8db95b4285e892ac8fcb5e72b7
// A notification intended to be useful for modular peformance tracking
// starting as close as is reasonably possible to the time when the user
// expressed the intent to open a new tab. Since there are a lot of
@@ -402,6 +406,11 @@ var BrowserCommands = {
@@ -401,6 +405,11 @@ var BrowserCommands = {
return;
}
@@ -25,7 +25,7 @@ index b0b2383453ef771af3eb9260618f1e2e3022eb4e..d631cc8db95b4285e892ac8fcb5e72b7
// Keyboard shortcuts that would close a tab that is pinned select the first
// unpinned tab instead.
if (
@@ -409,8 +418,8 @@ var BrowserCommands = {
@@ -408,8 +417,8 @@ var BrowserCommands = {
(event.ctrlKey || event.metaKey || event.altKey) &&
gBrowser.selectedTab.pinned
) {

View File

@@ -1,8 +1,8 @@
diff --git a/browser/base/content/browser-fullScreenAndPointerLock.js b/browser/base/content/browser-fullScreenAndPointerLock.js
index c61a424d3871d94e7086418c72ce22d5aef0a047..b6e3939b1ce67185acc3b9a66385869bd5490a39 100644
index d477ac782e0cb921203f8cd38da70a003ac41b39..648d0b4066b630a9b31da0bb8490f29da701dd3d 100644
--- a/browser/base/content/browser-fullScreenAndPointerLock.js
+++ b/browser/base/content/browser-fullScreenAndPointerLock.js
@@ -431,10 +431,10 @@ var FullScreen = {
@@ -427,10 +427,10 @@ var FullScreen = {
gNavToolbox.classList.toggle("fullscreen-with-menubar", shiftSize > 0);
let transform = shiftSize > 0 ? `translateY(${shiftSize}px)` : "";

View File

@@ -1,8 +1,8 @@
diff --git a/browser/base/content/browser-init.js b/browser/base/content/browser-init.js
index bcbfab4a3781ff3c7349115751b3830976eec4bf..b1b774e0d335ed3c5ca565a45cd624c7ea2718af 100644
index e4a94863c0f0810d1894475b020814b2ad32ffb3..515f61d2df5d4a593fc32d3f32e8fdec2b8f5983 100644
--- a/browser/base/content/browser-init.js
+++ b/browser/base/content/browser-init.js
@@ -186,6 +186,7 @@ var gBrowserInit = {
@@ -191,6 +191,7 @@ var gBrowserInit = {
},
onLoad() {
@@ -10,7 +10,7 @@ index bcbfab4a3781ff3c7349115751b3830976eec4bf..b1b774e0d335ed3c5ca565a45cd624c7
gBrowser.addEventListener("DOMUpdateBlockedPopups", e =>
PopupBlockerObserver.handleEvent(e)
);
@@ -344,6 +345,7 @@ var gBrowserInit = {
@@ -359,6 +360,7 @@ var gBrowserInit = {
this._handleURIToLoad();

View File

@@ -1,16 +1,16 @@
diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js
index 05f6aec3dac31231e15cb316f6e06d66ee87bea9..3bbbe8553777056798ea9ddce1744a8e48848a37 100644
index c5b7ef2616c1dab9f42970605897e862d57ab7d0..77f0731db6c4a8d835cf8733115d27ae7782a987 100644
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -29,6 +29,7 @@ ChromeUtils.defineESModuleGetters(this, {
ContextualIdentityService:
@@ -31,6 +31,7 @@ ChromeUtils.defineESModuleGetters(this, {
"resource://gre/modules/ContextualIdentityService.sys.mjs",
CustomizableUI: "resource:///modules/CustomizableUI.sys.mjs",
+ ZenCustomizableUI: "chrome://browser/content/ZenCustomizableUI.sys.mjs",
CustomizableUI:
"moz-src:///browser/components/customizableui/CustomizableUI.sys.mjs",
+ ZenCustomizableUI: "resource:///modules/ZenCustomizableUI.sys.mjs",
DevToolsSocketStatus:
"resource://devtools/shared/security/DevToolsSocketStatus.sys.mjs",
DownloadUtils: "resource://gre/modules/DownloadUtils.sys.mjs",
@@ -2287,6 +2288,8 @@ var XULBrowserWindow = {
@@ -2291,6 +2292,8 @@ var XULBrowserWindow = {
AboutReaderParent.updateReaderButton(gBrowser.selectedBrowser);
TranslationsParent.onLocationChange(gBrowser.selectedBrowser);
@@ -19,25 +19,7 @@ index 05f6aec3dac31231e15cb316f6e06d66ee87bea9..3bbbe8553777056798ea9ddce1744a8e
PictureInPicture.updateUrlbarToggle(gBrowser.selectedBrowser);
if (!gMultiProcessBrowser) {
@@ -4630,7 +4633,7 @@ function switchToTabHavingURI(
ignoreQueryString || replaceQueryString,
ignoreFragmentWhenComparing
);
- let browsers = aWindow.gBrowser.browsers;
+ let browsers = aWindow.gZenWorkspaces.allUsedBrowsers;
for (let i = 0; i < browsers.length; i++) {
let browser = browsers[i];
let browserCompare = cleanURL(
@@ -4673,7 +4676,7 @@ function switchToTabHavingURI(
}
if (!doAdopt) {
- aWindow.gBrowser.tabContainer.selectedIndex = i;
+ aWindow.gZenWorkspaces.switchIfNeeded(browser);
}
return true;
@@ -5489,6 +5492,9 @@ var ConfirmationHint = {
@@ -5232,6 +5235,9 @@ var ConfirmationHint = {
MozXULElement.insertFTLIfNeeded("toolkit/branding/brandings.ftl");
MozXULElement.insertFTLIfNeeded("browser/confirmationHints.ftl");
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
index 62b3665394a8256ebedf88a8f10bb6766977cf57..12ac643f913290b20fb7adba8f224f49bb82bf5c 100644
index 5ba2b6a58776e2b1d70b80e8cb1533cb20caafc6..65736705968732a185e81561b2866bfbe6f3233a 100644
--- a/browser/base/content/browser-places.js
+++ b/browser/base/content/browser-places.js
@@ -252,6 +252,8 @@ var StarUI = {

View File

@@ -1,5 +1,5 @@
diff --git a/browser/base/content/browser-sets.inc b/browser/base/content/browser-sets.inc
index 269b025d7fb942602c1b1b6c9747540bcde11375..9dcecfe205cadacace5195ec84d8b2ee292a0632 100644
index 2e7654036647796715aec392f9e714e7256c9864..0b3b76ab479bb6ae5439dd424b69f641d3b86c28 100644
--- a/browser/base/content/browser-sets.inc
+++ b/browser/base/content/browser-sets.inc
@@ -405,3 +405,4 @@

View File

@@ -1,8 +1,8 @@
diff --git a/browser/base/content/browser-sets.js b/browser/base/content/browser-sets.js
index 61aef2d420a78fb1910f556b71f6db75a16180ed..a3a1e70bedb760c165c338c28de6f2ee924df8de 100644
index 9cff49a7b86f7697f70c4ef61d3c3561f058dc45..15ac9a8a79e8642b3add2f6df63ed32eb0c8bcb9 100644
--- a/browser/base/content/browser-sets.js
+++ b/browser/base/content/browser-sets.js
@@ -250,7 +250,7 @@ document.addEventListener(
@@ -253,7 +253,7 @@ document.addEventListener(
}
});

View File

@@ -1,8 +1,8 @@
diff --git a/browser/base/content/browser-siteIdentity.js b/browser/base/content/browser-siteIdentity.js
index a2a5f6ff71b9a6587e2a033aee39385abd319645..8111c6bcffdcfd51d03cc9dea4aac902d57c83d8 100644
index 65354e0ad3097e10de72f36e257c94472524baf7..bc9527ec9ddfab11c0839398d3f3953872ad9632 100644
--- a/browser/base/content/browser-siteIdentity.js
+++ b/browser/base/content/browser-siteIdentity.js
@@ -825,7 +825,7 @@ var gIdentityHandler = {
@@ -834,7 +834,7 @@ var gIdentityHandler = {
// This is a secure internal Firefox page.
this._identityBox.className = "chromeUI";
let brandBundle = document.getElementById("bundle_brand");
@@ -11,7 +11,7 @@ index a2a5f6ff71b9a6587e2a033aee39385abd319645..8111c6bcffdcfd51d03cc9dea4aac902
} else if (this._pageExtensionPolicy) {
// This is a WebExtension page.
this._identityBox.className = "extensionPage";
@@ -1143,6 +1143,12 @@ var gIdentityHandler = {
@@ -1163,6 +1163,12 @@ var gIdentityHandler = {
}
}

View File

@@ -1,5 +1,5 @@
diff --git a/browser/base/content/browser.xhtml b/browser/base/content/browser.xhtml
index 665b048cf149b9a6d0ccc43f8d9199f077b8ada2..fcff5cc6a4a50ff2d76930e4d2a1e1d0b2e6bc02 100644
index 7c4c05b72845dfb37c11317d011b8e7c6ba07934..856c368e4d6fe7c7d7ab468423348c844cbf1cdf 100644
--- a/browser/base/content/browser.xhtml
+++ b/browser/base/content/browser.xhtml
@@ -26,6 +26,7 @@
@@ -10,7 +10,7 @@ index 665b048cf149b9a6d0ccc43f8d9199f077b8ada2..fcff5cc6a4a50ff2d76930e4d2a1e1d0
persist="screenX screenY width height sizemode"
data-l10n-sync="true">
<head>
@@ -103,8 +104,10 @@
@@ -105,8 +106,10 @@
<title data-l10n-id="browser-main-window-default-title"></title>
@@ -21,7 +21,7 @@ index 665b048cf149b9a6d0ccc43f8d9199f077b8ada2..fcff5cc6a4a50ff2d76930e4d2a1e1d0
</head>
<html:body xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
# All sets except for popupsets (commands, keys, and stringbundles)
@@ -126,9 +129,11 @@
@@ -128,9 +131,11 @@
</vbox>
</html:template>

View File

@@ -1,8 +1,8 @@
diff --git a/browser/base/content/main-popupset.inc.xhtml b/browser/base/content/main-popupset.inc.xhtml
index 198c188e074b7062169764fb7d81c692d3a2bdae..b412a3c1fabdc6470b4ea9e7be34c426cc76aafd 100644
index fc219ea3dc901fe2ed351161240700113efb8799..f25bdbf886733e2081a4dff55614809056e9885e 100644
--- a/browser/base/content/main-popupset.inc.xhtml
+++ b/browser/base/content/main-popupset.inc.xhtml
@@ -201,6 +201,10 @@
@@ -208,6 +208,10 @@
hidden="true"
tabspecific="true"
aria-labelledby="editBookmarkPanelTitle">
@@ -13,7 +13,7 @@ index 198c188e074b7062169764fb7d81c692d3a2bdae..b412a3c1fabdc6470b4ea9e7be34c426
<box class="panel-header">
<html:h1>
<html:span id="editBookmarkPanelTitle"/>
@@ -226,6 +230,7 @@
@@ -233,6 +237,7 @@
class="footer-button"/>
</html:moz-button-group>
</vbox>
@@ -21,7 +21,7 @@ index 198c188e074b7062169764fb7d81c692d3a2bdae..b412a3c1fabdc6470b4ea9e7be34c426
</panel>
</html:template>
@@ -567,6 +572,8 @@
@@ -613,6 +618,8 @@
#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
index 3484906e59f5da958a3f0c810c7b89cfce643d9a..7434caf4710af872d42ef4703ed8347cd8b07af2 100644
index 8e56b24b39e9c1607e3ff208d284a9b555a91ebb..2402848ae564234ec22d5a317c43864ea1b36f29 100644
--- a/browser/base/content/navigator-toolbox.inc.xhtml
+++ b/browser/base/content/navigator-toolbox.inc.xhtml
@@ -2,7 +2,7 @@
@@ -11,27 +11,27 @@ index 3484906e59f5da958a3f0c810c7b89cfce643d9a..7434caf4710af872d42ef4703ed8347c
<script src="chrome://browser/content/navigator-toolbox.js" />
<!-- Menu -->
@@ -17,9 +17,9 @@
@@ -18,9 +18,8 @@
#include browser-menubar.inc
</toolbaritem>
<spacer flex="1" skipintoolbarset="true" style="order: 1000;"/>
-#include titlebar-items.inc.xhtml
</toolbar>
-
+<hbox id="titlebar">
<toolbar id="TabsToolbar"
class="browser-toolbar browser-titlebar"
fullscreentoolbar="true"
@@ -56,6 +56,8 @@
# the current structure that we may want to revisit.
<arrowscrollbox id="pinned-tabs-container" orient="horizontal"></arrowscrollbox>
@@ -62,6 +61,8 @@
<html:sidebar-pins-promo id="drag-to-pin-promo-card"></html:sidebar-pins-promo>
<arrowscrollbox id="pinned-tabs-container" orient="horizontal" clicktoscroll=""></arrowscrollbox>
<splitter orient="vertical" id="vertical-pinned-tabs-splitter" resizebefore="sibling" resizeafter="none" hidden="true"/>
+<html:div id="zen-essentials" skipintoolbarset="true"></html:div>
+<html:div id="zen-tabs-wrapper">
<hbox class="tab-drop-indicator" hidden="true"/>
<arrowscrollbox id="tabbrowser-arrowscrollbox" orient="horizontal" flex="1" clicktoscroll="" scrolledtostart="" scrolledtoend="">
<tab is="tabbrowser-tab" class="tabbrowser-tab" selected="true" visuallyselected="" fadein=""/>
@@ -75,6 +77,7 @@
@@ -81,6 +82,7 @@
tooltip="dynamic-shortcut-tooltip"
data-l10n-id="tabs-toolbar-new-tab"/>
<html:span id="tabbrowser-tab-a11y-desc" hidden="true"/>
@@ -39,7 +39,7 @@ index 3484906e59f5da958a3f0c810c7b89cfce643d9a..7434caf4710af872d42ef4703ed8347c
</tabs>
<toolbarbutton id="new-tab-button"
@@ -100,9 +103,10 @@
@@ -106,9 +108,10 @@
#include private-browsing-indicator.inc.xhtml
<toolbarbutton class="content-analysis-indicator toolbarbutton-1 content-analysis-indicator-icon"/>

View File

@@ -1,5 +1,5 @@
diff --git a/browser/base/content/navigator-toolbox.js b/browser/base/content/navigator-toolbox.js
index 31d0ee325847834e7c58c1079225adf43d738bcd..4d2c69d4dd7e313bdb085530b3289dc9d93530a5 100644
index 413bad2a62058a1c434d6a44e927e44eb397289d..b621c586e679bb8686fe9a5e6743512e71604425 100644
--- a/browser/base/content/navigator-toolbox.js
+++ b/browser/base/content/navigator-toolbox.js
@@ -8,7 +8,7 @@

View File

@@ -1,8 +1,8 @@
diff --git a/browser/base/content/nsContextMenu.sys.mjs b/browser/base/content/nsContextMenu.sys.mjs
index b12427b3c23447ab26499120f8395c716dae9e82..934f5c1f1b38d035cd7d3a5253a8d3cecad385f8 100644
index bc71ba720ef3603e8b90d295fb16d8415ba114c4..99677f70e22258f61cc9bda31e4d8745d7ca9395 100644
--- a/browser/base/content/nsContextMenu.sys.mjs
+++ b/browser/base/content/nsContextMenu.sys.mjs
@@ -1054,6 +1054,8 @@ export class nsContextMenu {
@@ -1095,6 +1095,8 @@ export class nsContextMenu {
!this.isSecureAboutPage()
);

View File

@@ -8,7 +8,6 @@
content/browser/zen-sets.js (../../zen/common/zen-sets.js)
content/browser/ZenUIManager.mjs (../../zen/common/ZenUIManager.mjs)
content/browser/zen-components/ZenActorsManager.mjs (../../zen/common/ZenActorsManager.mjs)
content/browser/ZenCustomizableUI.sys.mjs (../../zen/common/ZenCustomizableUI.sys.mjs)
content/browser/zen-components/ZenUIMigration.mjs (../../zen/common/ZenUIMigration.mjs)
content/browser/zen-components/ZenCommonUtils.mjs (../../zen/common/ZenCommonUtils.mjs)
content/browser/zen-components/ZenSessionStore.mjs (../../zen/common/ZenSessionStore.mjs)

View File

@@ -1,8 +1,8 @@
diff --git a/browser/base/jar.mn b/browser/base/jar.mn
index f5a94b47c95304399bce8159dd9fb5d2911ea60a..f63cb861e8807294d597a341ddb408f236ee2df2 100644
index b1f7121a1f3926fe3eb89540edb7dcbb68734039..61c98964cf5efd0a603500cf36559713e1f231f7 100644
--- a/browser/base/jar.mn
+++ b/browser/base/jar.mn
@@ -106,3 +106,5 @@ browser.jar:
@@ -109,3 +109,5 @@ browser.jar:
# L10n resources and overrides.
% override chrome://global/locale/appstrings.properties chrome://browser/locale/appstrings.properties

View File

@@ -1,8 +1,8 @@
diff --git a/browser/base/moz.build b/browser/base/moz.build
index 803f8a5b62608af58fc43bd9fab298a63fa549a4..2e00cb9d02dade5cd9b8d3dea5d948ac6e829c26 100644
index 2f2807a246c262298d0802a6a80abe211c99732c..089a86c9e7f69b994657f20fb2392f3dcc8646bf 100644
--- a/browser/base/moz.build
+++ b/browser/base/moz.build
@@ -82,3 +82,5 @@ DEFINES["MOZ_APP_VERSION_DISPLAY"] = CONFIG["MOZ_APP_VERSION_DISPLAY"]
@@ -81,3 +81,5 @@ DEFINES["MOZ_APP_VERSION_DISPLAY"] = CONFIG["MOZ_APP_VERSION_DISPLAY"]
DEFINES["APP_LICENSE_BLOCK"] = "%s/content/overrides/app-license.html" % SRCDIR
JAR_MANIFESTS += ["jar.mn"]

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/BrowserContentHandler.sys.mjs b/browser/components/BrowserContentHandler.sys.mjs
index 81f72563b93b9ce77191ad4cf200489222e0122e..40bc484301b3d66542c4171921f527c2ac6ed047 100644
index 8630614d23147365628e0cb7e9625b8f2a160588..0750869f16336452a458f27627e6fe0492aae462 100644
--- a/browser/components/BrowserContentHandler.sys.mjs
+++ b/browser/components/BrowserContentHandler.sys.mjs
@@ -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
index f3253d2565cf735bdf33792697f91db9ca9ba5e9..5a6a62e3de3d510a3ae514773e6f8886ef8f9a09 100644
index eae3ed9518ad9ce2103bb912963465c1b10ac050..51859cd542bc69f524d891a67e725c30d4cf14bb 100644
--- a/browser/components/BrowserGlue.sys.mjs
+++ b/browser/components/BrowserGlue.sys.mjs
@@ -8,6 +8,7 @@ import { XPCOMUtils } from "resource://gre/modules/XPCOMUtils.sys.mjs";
@@ -10,7 +10,7 @@ index f3253d2565cf735bdf33792697f91db9ca9ba5e9..5a6a62e3de3d510a3ae514773e6f8886
AboutHomeStartupCache: "resource:///modules/AboutHomeStartupCache.sys.mjs",
AWToolbarButton: "resource:///modules/aboutwelcome/AWToolbarUtils.sys.mjs",
ASRouter: "resource:///modules/asrouter/ASRouter.sys.mjs",
@@ -1490,7 +1491,7 @@ BrowserGlue.prototype = {
@@ -1448,7 +1449,7 @@ BrowserGlue.prototype = {
windowcount++;
let tabbrowser = win.gBrowser;
if (tabbrowser) {
@@ -19,7 +19,7 @@ index f3253d2565cf735bdf33792697f91db9ca9ba5e9..5a6a62e3de3d510a3ae514773e6f8886
}
}
@@ -1653,6 +1654,8 @@ BrowserGlue.prototype = {
@@ -1611,6 +1612,8 @@ BrowserGlue.prototype = {
} else if (profileDataVersion < APP_DATA_VERSION) {
lazy.ProfileDataUpgrader.upgrade(profileDataVersion, APP_DATA_VERSION);
}

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/aboutlogins/content/components/login-list.css b/browser/components/aboutlogins/content/components/login-list.css
index bc8e72a3cd07e8746c6fbf190bdd2bf70f4000d4..07031dfdfadf393db5fd848948e33510bd7225d7 100644
index 3c766eaa80c00ef145168f7a2ceced95ce94295e..db7a7da03c8346f97b472b8e561fec79c1036337 100644
--- a/browser/components/aboutlogins/content/components/login-list.css
+++ b/browser/components/aboutlogins/content/components/login-list.css
@@ -3,7 +3,7 @@
@@ -11,7 +11,7 @@ index bc8e72a3cd07e8746c6fbf190bdd2bf70f4000d4..07031dfdfadf393db5fd848948e33510
background-color: var(--background-color-box);
display: flex;
flex-direction: column;
@@ -161,3 +161,8 @@ ol {
@@ -162,3 +162,8 @@ ol {
font-size: 0.85em;
color: var(--text-color-deemphasized);
}

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/controlcenter/content/identityPanel.inc.xhtml b/browser/components/controlcenter/content/identityPanel.inc.xhtml
index 768768c7d44860e1725f41594da9bcc8c92f4a1d..c04b0d54a41fbf8a22b516524809186d29842b21 100644
index 225340c698f775a321bf5f82c0156bb0e3e2aa96..59e6613638efadfd2961999bd77b388c4529314b 100644
--- a/browser/components/controlcenter/content/identityPanel.inc.xhtml
+++ b/browser/components/controlcenter/content/identityPanel.inc.xhtml
@@ -28,7 +28,7 @@

View File

@@ -1,16 +1,16 @@
diff --git a/browser/components/customizableui/CustomizableUI.sys.mjs b/browser/components/customizableui/CustomizableUI.sys.mjs
index 8c9b11d0c1ce7ae016889950e92b3adda318235c..ba81498aa16ce844a8d189c047f596d1969f4fed 100644
index 4f62449d670701c77c681ae36e00bae8bf2f636c..132c77e396cb259181ed13ca8ff784e0ade05e3b 100644
--- a/browser/components/customizableui/CustomizableUI.sys.mjs
+++ b/browser/components/customizableui/CustomizableUI.sys.mjs
@@ -13,6 +13,7 @@ ChromeUtils.defineESModuleGetters(lazy, {
AddonManagerPrivate: "resource://gre/modules/AddonManager.sys.mjs",
@@ -14,6 +14,7 @@ ChromeUtils.defineESModuleGetters(lazy, {
BrowserUsageTelemetry: "resource:///modules/BrowserUsageTelemetry.sys.mjs",
CustomizableWidgets: "resource:///modules/CustomizableWidgets.sys.mjs",
+ ZenCustomizableUI: "chrome://browser/content/ZenCustomizableUI.sys.mjs",
CustomizableWidgets:
"moz-src:///browser/components/customizableui/CustomizableWidgets.sys.mjs",
+ ZenCustomizableUI: "resource:///modules/ZenCustomizableUI.sys.mjs",
HomePage: "resource:///modules/HomePage.sys.mjs",
PanelMultiView: "resource:///modules/PanelMultiView.sys.mjs",
PrivateBrowsingUtils: "resource://gre/modules/PrivateBrowsingUtils.sys.mjs",
@@ -331,19 +332,14 @@ var CustomizableUIInternal = {
PanelMultiView:
"moz-src:///browser/components/customizableui/PanelMultiView.sys.mjs",
@@ -333,19 +334,14 @@ var CustomizableUIInternal = {
"back-button",
"forward-button",
"stop-reload-button",
@@ -31,7 +31,7 @@ index 8c9b11d0c1ce7ae016889950e92b3adda318235c..ba81498aa16ce844a8d189c047f596d1
this.registerArea(
CustomizableUI.AREA_NAVBAR,
{
@@ -351,8 +347,6 @@ var CustomizableUIInternal = {
@@ -353,8 +349,6 @@ var CustomizableUIInternal = {
overflowable: true,
defaultPlacements: navbarPlacements,
verticalTabsDefaultPlacements: [
@@ -40,7 +40,7 @@ index 8c9b11d0c1ce7ae016889950e92b3adda318235c..ba81498aa16ce844a8d189c047f596d1
],
defaultCollapsed: false,
},
@@ -376,10 +370,7 @@ var CustomizableUIInternal = {
@@ -378,10 +372,7 @@ var CustomizableUIInternal = {
{
type: CustomizableUI.TYPE_TOOLBAR,
defaultPlacements: [
@@ -51,7 +51,7 @@ index 8c9b11d0c1ce7ae016889950e92b3adda318235c..ba81498aa16ce844a8d189c047f596d1
],
verticalTabsDefaultPlacements: [],
defaultCollapsed: null,
@@ -461,6 +452,7 @@ var CustomizableUIInternal = {
@@ -463,6 +454,7 @@ var CustomizableUIInternal = {
CustomizableUI.AREA_NAVBAR,
CustomizableUI.AREA_BOOKMARKS,
CustomizableUI.AREA_TABSTRIP,
@@ -59,7 +59,7 @@ index 8c9b11d0c1ce7ae016889950e92b3adda318235c..ba81498aa16ce844a8d189c047f596d1
]);
if (AppConstants.platform != "macosx") {
toolbars.add(CustomizableUI.AREA_MENUBAR);
@@ -1245,6 +1237,9 @@ var CustomizableUIInternal = {
@@ -1247,6 +1239,9 @@ var CustomizableUIInternal = {
placements = gPlacements.get(area);
}
@@ -69,7 +69,7 @@ index 8c9b11d0c1ce7ae016889950e92b3adda318235c..ba81498aa16ce844a8d189c047f596d1
// For toolbars that need it, mark as dirty.
let defaultPlacements = areaProperties.get("defaultPlacements");
if (
@@ -1752,7 +1747,7 @@ var CustomizableUIInternal = {
@@ -1754,7 +1749,7 @@ var CustomizableUIInternal = {
lazy.log.info(
"Widget " + aWidgetId + " not found, unable to remove from " + aArea
);
@@ -78,7 +78,7 @@ index 8c9b11d0c1ce7ae016889950e92b3adda318235c..ba81498aa16ce844a8d189c047f596d1
}
this.notifyDOMChange(widgetNode, null, container, true, () => {
@@ -1762,7 +1757,7 @@ var CustomizableUIInternal = {
@@ -1764,7 +1759,7 @@ var CustomizableUIInternal = {
// We also need to remove the panel context menu if it's there:
this.ensureButtonContextMenu(widgetNode);
if (gPalette.has(aWidgetId) || this.isSpecialWidget(aWidgetId)) {
@@ -87,7 +87,7 @@ index 8c9b11d0c1ce7ae016889950e92b3adda318235c..ba81498aa16ce844a8d189c047f596d1
} else {
window.gNavToolbox.palette.appendChild(widgetNode);
}
@@ -1930,16 +1925,16 @@ var CustomizableUIInternal = {
@@ -1932,16 +1927,16 @@ var CustomizableUIInternal = {
elem.setAttribute("skipintoolbarset", "true");
}
}
@@ -107,7 +107,7 @@ index 8c9b11d0c1ce7ae016889950e92b3adda318235c..ba81498aa16ce844a8d189c047f596d1
// Handle initial state of vertical tabs.
if (isVerticalTabs) {
// Show the vertical tabs toolbar
@@ -2181,6 +2176,10 @@ var CustomizableUIInternal = {
@@ -2183,6 +2178,10 @@ var CustomizableUIInternal = {
* The identifier string of the area that aNode is being inserted into.
*/
insertWidgetBefore(aNode, aNextNode, aContainer, aAreaId) {
@@ -118,7 +118,7 @@ index 8c9b11d0c1ce7ae016889950e92b3adda318235c..ba81498aa16ce844a8d189c047f596d1
this.notifyDOMChange(aNode, aNextNode, aContainer, false, () => {
this.setLocationAttributes(aNode, aAreaId);
aContainer.insertBefore(aNode, aNextNode);
@@ -3301,7 +3300,6 @@ var CustomizableUIInternal = {
@@ -3303,7 +3302,6 @@ var CustomizableUIInternal = {
if (!this.isWidgetRemovable(aWidgetId)) {
return;
}
@@ -126,7 +126,7 @@ index 8c9b11d0c1ce7ae016889950e92b3adda318235c..ba81498aa16ce844a8d189c047f596d1
let placements = gPlacements.get(oldPlacement.area);
let position = placements.indexOf(aWidgetId);
if (position != -1) {
@@ -4536,7 +4534,7 @@ var CustomizableUIInternal = {
@@ -4538,7 +4536,7 @@ var CustomizableUIInternal = {
* For all registered areas, builds those areas to reflect the current
* placement state of all widgets.
*/
@@ -135,7 +135,7 @@ index 8c9b11d0c1ce7ae016889950e92b3adda318235c..ba81498aa16ce844a8d189c047f596d1
for (let [areaId, areaNodes] of gBuildAreas) {
let placements = gPlacements.get(areaId);
let isFirstChangedToolbar = true;
@@ -4547,7 +4545,7 @@ var CustomizableUIInternal = {
@@ -4549,7 +4547,7 @@ var CustomizableUIInternal = {
if (area.get("type") == CustomizableUI.TYPE_TOOLBAR) {
let defaultCollapsed = area.get("defaultCollapsed");
let win = areaNode.ownerGlobal;
@@ -144,7 +144,7 @@ index 8c9b11d0c1ce7ae016889950e92b3adda318235c..ba81498aa16ce844a8d189c047f596d1
win.setToolbarVisibility(
areaNode,
typeof defaultCollapsed == "string"
@@ -5838,6 +5836,7 @@ export var CustomizableUI = {
@@ -5840,6 +5838,7 @@ export var CustomizableUI = {
unregisterArea(aName, aDestroyPlacements) {
CustomizableUIInternal.unregisterArea(aName, aDestroyPlacements);
},
@@ -152,7 +152,7 @@ index 8c9b11d0c1ce7ae016889950e92b3adda318235c..ba81498aa16ce844a8d189c047f596d1
/**
* Add a widget to an area.
* If the area to which you try to add is not known to CustomizableUI,
@@ -7885,11 +7884,11 @@ class OverflowableToolbar {
@@ -7887,11 +7886,11 @@ class OverflowableToolbar {
parseFloat(style.paddingLeft) -
parseFloat(style.paddingRight) -
toolbarChildrenWidth;
@@ -166,7 +166,7 @@ index 8c9b11d0c1ce7ae016889950e92b3adda318235c..ba81498aa16ce844a8d189c047f596d1
});
lazy.log.debug(
@@ -7899,7 +7898,8 @@ class OverflowableToolbar {
@@ -7901,7 +7900,8 @@ class OverflowableToolbar {
// If the target has min-width: 0, their children might actually overflow
// it, so check for both cases explicitly.
let targetContentWidth = Math.max(targetWidth, targetChildrenWidth);
@@ -176,7 +176,7 @@ index 8c9b11d0c1ce7ae016889950e92b3adda318235c..ba81498aa16ce844a8d189c047f596d1
return { isOverflowing, targetContentWidth, totalAvailWidth };
}
@@ -7993,7 +7993,7 @@ class OverflowableToolbar {
@@ -7995,7 +7995,7 @@ class OverflowableToolbar {
}
}
if (!inserted) {
@@ -185,7 +185,7 @@ index 8c9b11d0c1ce7ae016889950e92b3adda318235c..ba81498aa16ce844a8d189c047f596d1
}
child.removeAttribute("cui-anchorid");
child.removeAttribute("overflowedItem");
@@ -8338,7 +8338,7 @@ class OverflowableToolbar {
@@ -8340,7 +8340,7 @@ class OverflowableToolbar {
break;
}
case "mousedown": {

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/customizableui/CustomizeMode.sys.mjs b/browser/components/customizableui/CustomizeMode.sys.mjs
index bc601c9cd248637f304b8f3219862e8e6f6c7506..da28068906ddeb81337696da568608edb43223b7 100644
index fd3c54a1d80f5800ffd2dcaaf594eed4bd2d300c..259af2688e5a8bca88017e5da0bfdb488ab59f59 100644
--- a/browser/components/customizableui/CustomizeMode.sys.mjs
+++ b/browser/components/customizableui/CustomizeMode.sys.mjs
@@ -502,7 +502,7 @@ export class CustomizeMode {
@@ -503,7 +503,7 @@ export class CustomizeMode {
this.#transitioning = true;
let customizer = document.getElementById("customization-container");
@@ -11,7 +11,7 @@ index bc601c9cd248637f304b8f3219862e8e6f6c7506..da28068906ddeb81337696da568608ed
browser.hidden = true;
customizer.hidden = false;
@@ -639,7 +639,7 @@ export class CustomizeMode {
@@ -640,7 +640,7 @@ export class CustomizeMode {
}
let customizer = document.getElementById("customization-container");
@@ -20,7 +20,7 @@ index bc601c9cd248637f304b8f3219862e8e6f6c7506..da28068906ddeb81337696da568608ed
customizer.hidden = true;
browser.hidden = false;
@@ -1175,6 +1175,7 @@ export class CustomizeMode {
@@ -1176,6 +1176,7 @@ export class CustomizeMode {
return (
aNode.localName == "toolbarbutton" ||
aNode.localName == "toolbaritem" ||
@@ -28,7 +28,7 @@ index bc601c9cd248637f304b8f3219862e8e6f6c7506..da28068906ddeb81337696da568608ed
aNode.localName == "toolbarseparator" ||
aNode.localName == "toolbarspring" ||
aNode.localName == "toolbarspacer"
@@ -3127,6 +3128,20 @@ export class CustomizeMode {
@@ -3128,6 +3129,20 @@ export class CustomizeMode {
if (makeSpaceImmediately) {
aDraggedOverItem.setAttribute("notransition", "true");
}

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/customizableui/ToolbarContextMenu.sys.mjs b/browser/components/customizableui/ToolbarContextMenu.sys.mjs
index 0924175cecdceade096a325b2d4cd2656da24524..3c1e4a179d13aac740069c23e9bf8e40376d5032 100644
index 852cf2eee9113753fa0797be6dec80dcb9207703..93bb093e679320033a37b2af14e8e0e3c7621f94 100644
--- a/browser/components/customizableui/ToolbarContextMenu.sys.mjs
+++ b/browser/components/customizableui/ToolbarContextMenu.sys.mjs
@@ -241,8 +241,8 @@ export var ToolbarContextMenu = {
@@ -242,8 +242,8 @@ export var ToolbarContextMenu = {
// Show/hide sidebar and vertical tabs menu items
let sidebarRevampEnabled = Services.prefs.getBoolPref("sidebar.revamp");
let showSidebarActions =

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/customizableui/content/panelUI.inc.xhtml b/browser/components/customizableui/content/panelUI.inc.xhtml
index c78f08bdd3fc4d01e10552ef65c2d5813dd053e8..154fb1de2ab9384937d02c14cb7c9c607b330da9 100644
index 85acb96a3deefed708ea768b2f163e7fd6480b97..bb3aed53758da7dafcfed4492acb0cbf2b80cd2f 100644
--- a/browser/components/customizableui/content/panelUI.inc.xhtml
+++ b/browser/components/customizableui/content/panelUI.inc.xhtml
@@ -132,7 +132,7 @@

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/customizableui/content/panelUI.js b/browser/components/customizableui/content/panelUI.js
index b3c4898fa5aa7ba997d84a2b4fdce398978e1150..736d7aca6232e94a1de0afe2c292060c5c622565 100644
index 7156397d597579f745ea20ae2b9327433a31c8ec..13b844a63e79e227c96faf153ee5908759306407 100644
--- a/browser/components/customizableui/content/panelUI.js
+++ b/browser/components/customizableui/content/panelUI.js
@@ -517,8 +517,7 @@ const PanelUI = {
@@ -518,8 +518,7 @@ const PanelUI = {
tempPanel.setAttribute("animate", "false");
}
tempPanel.setAttribute("context", "");
@@ -12,7 +12,7 @@ index b3c4898fa5aa7ba997d84a2b4fdce398978e1150..736d7aca6232e94a1de0afe2c292060c
.appendChild(tempPanel);
let multiView = document.createXULElement("panelmultiview");
@@ -609,10 +608,12 @@ const PanelUI = {
@@ -610,10 +609,12 @@ const PanelUI = {
if (hasKids && !this.navbar.hasAttribute("nonemptyoverflow")) {
this.navbar.setAttribute("nonemptyoverflow", "true");
this.overflowPanel.setAttribute("hasfixeditems", "true");
@@ -25,7 +25,7 @@ index b3c4898fa5aa7ba997d84a2b4fdce398978e1150..736d7aca6232e94a1de0afe2c292060c
}
},
@@ -960,7 +961,7 @@ const PanelUI = {
@@ -961,7 +962,7 @@ const PanelUI = {
el.removeAttribute("data-lazy-l10n-id");
});

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/extensions/parent/ext-browser.js b/browser/components/extensions/parent/ext-browser.js
index 1e382981a33ca341c306a78ed81718e4ad7c2b3e..e98f76f1e9dd381116328d6d9b901585ea80dce4 100644
index 0baa038232d7e0fd9942f392c48acf7ea5ba50ed..093e1c29c3538d18eb2162b4e4b23ba40c695739 100644
--- a/browser/components/extensions/parent/ext-browser.js
+++ b/browser/components/extensions/parent/ext-browser.js
@@ -351,6 +351,7 @@ class TabTracker extends TabTrackerBase {

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/extensions/parent/ext-tabs.js b/browser/components/extensions/parent/ext-tabs.js
index a53a12f91817a9e3d1773480928e858bc3182c77..10f6559ffb128906be31de220c93320e9a6d40e7 100644
index bff93996b42aa1f88f1bfcbd813c3af4a5806f13..1252727b4811248e138cf7a38f8d1fd422576d28 100644
--- a/browser/components/extensions/parent/ext-tabs.js
+++ b/browser/components/extensions/parent/ext-tabs.js
@@ -494,6 +494,7 @@ this.tabs = class extends ExtensionAPIPersistent {
@@ -501,6 +501,7 @@ this.tabs = class extends ExtensionAPIPersistent {
}
let tab = tabManager.getWrapper(updatedTab);
@@ -10,7 +10,7 @@ index a53a12f91817a9e3d1773480928e858bc3182c77..10f6559ffb128906be31de220c93320e
let changeInfo = {};
for (let prop of needed) {
@@ -848,6 +849,7 @@ this.tabs = class extends ExtensionAPIPersistent {
@@ -855,6 +856,7 @@ this.tabs = class extends ExtensionAPIPersistent {
});
}

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/places/PlacesUIUtils.sys.mjs b/browser/components/places/PlacesUIUtils.sys.mjs
index 513199c212ab22c8af9e084352b6aa2647818000..9610e73af653fbc620e330a1e6e7b543dce50234 100644
index 86cc499f9b959ef87ab57fc4195e0c65f25e8c7c..a928ea83b9f4d0133238e744d2fb91318d36d4de 100644
--- a/browser/components/places/PlacesUIUtils.sys.mjs
+++ b/browser/components/places/PlacesUIUtils.sys.mjs
@@ -59,6 +59,7 @@ class BookmarkState {
@@ -60,6 +60,7 @@ class BookmarkState {
info,
tags = "",
keyword = "",
@@ -10,7 +10,7 @@ index 513199c212ab22c8af9e084352b6aa2647818000..9610e73af653fbc620e330a1e6e7b543
isFolder = false,
children = [],
autosave = false,
@@ -83,12 +84,18 @@ class BookmarkState {
@@ -84,12 +85,18 @@ class BookmarkState {
keyword,
parentGuid: info.parentGuid,
index,
@@ -29,7 +29,7 @@ index 513199c212ab22c8af9e084352b6aa2647818000..9610e73af653fbc620e330a1e6e7b543
/**
* Save edited title for the bookmark
*
@@ -182,6 +189,14 @@ class BookmarkState {
@@ -183,6 +190,14 @@ class BookmarkState {
"BookmarkState::createBookmark"
);
this._guid = results?.[0];
@@ -44,7 +44,7 @@ index 513199c212ab22c8af9e084352b6aa2647818000..9610e73af653fbc620e330a1e6e7b543
return this._guid;
}
@@ -215,6 +230,14 @@ class BookmarkState {
@@ -216,6 +231,14 @@ class BookmarkState {
"BookmarkState::save::createFolder"
);
this._guid = results[0];
@@ -59,7 +59,7 @@ index 513199c212ab22c8af9e084352b6aa2647818000..9610e73af653fbc620e330a1e6e7b543
return this._guid;
}
@@ -301,11 +324,97 @@ class BookmarkState {
@@ -302,11 +325,97 @@ class BookmarkState {
await lazy.PlacesTransactions.batch(transactions, "BookmarkState::save");
}
@@ -157,7 +157,7 @@ index 513199c212ab22c8af9e084352b6aa2647818000..9610e73af653fbc620e330a1e6e7b543
/**
* Append transactions to update tags by given information.
*
@@ -903,7 +1012,7 @@ export var PlacesUIUtils = {
@@ -904,7 +1013,7 @@ export var PlacesUIUtils = {
aNode,
aWhere,
aWindow,

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/places/content/browserPlacesViews.js b/browser/components/places/content/browserPlacesViews.js
index ad138a38340e8e8510d395f46c30ec4121d731bb..52beaa66395e2b240a7122936cd4d2452b386724 100644
index 29fb3308dcc98d785a3345dee78050d633927db2..0ae28fa0618def4a146723b19a22280956a25371 100644
--- a/browser/components/places/content/browserPlacesViews.js
+++ b/browser/components/places/content/browserPlacesViews.js
@@ -330,12 +330,23 @@ class PlacesViewBase {

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/places/content/editBookmark.js b/browser/components/places/content/editBookmark.js
index ac84ff7b7623a279191c7608ef0b47363b54cd31..53919bae7a49f1e87edaedc8072ee08fb697811b 100644
index f562f19741d882d92365da531b55e2810a0e79ea..9339e1158b074c41fc19bf91cbfde3c4016594b9 100644
--- a/browser/components/places/content/editBookmark.js
+++ b/browser/components/places/content/editBookmark.js
@@ -386,6 +386,10 @@ var gEditItemOverlay = {
@@ -387,6 +387,10 @@ var gEditItemOverlay = {
this._keywordField.readOnly = this.readOnly;
}
@@ -13,7 +13,7 @@ index ac84ff7b7623a279191c7608ef0b47363b54cd31..53919bae7a49f1e87edaedc8072ee08f
// Collapse the tag selector if the item does not accept tags.
if (showOrCollapse("tagsRow", isBookmark || bulkTagging, "tags")) {
this._initTagsField();
@@ -692,6 +696,7 @@ var gEditItemOverlay = {
@@ -693,6 +697,7 @@ var gEditItemOverlay = {
if (this._paneInfo.isBookmark) {
options.tags = this._element("tagsField").value;
options.keyword = this._keyword;
@@ -21,7 +21,7 @@ index ac84ff7b7623a279191c7608ef0b47363b54cd31..53919bae7a49f1e87edaedc8072ee08f
}
if (this._paneInfo.bulkTagging) {
@@ -1193,6 +1198,9 @@ var gEditItemOverlay = {
@@ -1194,6 +1199,9 @@ var gEditItemOverlay = {
case "editBMPanel_tagsSelectorExpander":
this.toggleTagsSelector().catch(console.error);
break;
@@ -31,7 +31,7 @@ index ac84ff7b7623a279191c7608ef0b47363b54cd31..53919bae7a49f1e87edaedc8072ee08f
}
break;
}
@@ -1279,6 +1287,148 @@ var gEditItemOverlay = {
@@ -1280,6 +1288,148 @@ var gEditItemOverlay = {
get bookmarkState() {
return this._bookmarkState;
},
@@ -180,7 +180,7 @@ index ac84ff7b7623a279191c7608ef0b47363b54cd31..53919bae7a49f1e87edaedc8072ee08f
};
ChromeUtils.defineLazyGetter(gEditItemOverlay, "_folderTree", () => {
@@ -1317,6 +1467,9 @@ for (let elt of [
@@ -1318,6 +1468,9 @@ for (let elt of [
"locationField",
"keywordField",
"tagsField",

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/preferences/jar.mn b/browser/components/preferences/jar.mn
index 118709048e7de13f6ac10d0047e446b72303428f..c8cc2d7ee551b96be668a7844dab1db5abc9d684 100644
index eac1fc65c01107cc7f1a3f3aeb1e8caac3c4a3f5..c3bd265acc924bcf26816e9e78f314c31af41f6d 100644
--- a/browser/components/preferences/jar.mn
+++ b/browser/components/preferences/jar.mn
@@ -26,3 +26,5 @@ browser.jar:
@@ -27,3 +27,5 @@ browser.jar:
content/browser/preferences/widgets/setting-control.mjs (widgets/setting-control/setting-control.mjs)
content/browser/preferences/widgets/setting-group.mjs (widgets/setting-group/setting-group.mjs)
content/browser/preferences/widgets/setting-group.css (widgets/setting-group/setting-group.css)

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/preferences/main.js b/browser/components/preferences/main.js
index a60831d9309ed73ea6d37725f9b9177dd6677501..c4d357d300b08b5adbe24d38eef5bd20842df665 100644
index 3f578f3888684a1830d456f2a4896e8a5f6630fd..7de18a724d3953a5616577f65a8cf9a18f71893c 100644
--- a/browser/components/preferences/main.js
+++ b/browser/components/preferences/main.js
@@ -443,7 +443,7 @@ function getBundleForLocales(newLocales) {
@@ -424,7 +424,7 @@ function getBundleForLocales(newLocales) {
])
);
return new Localization(

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/preferences/preferences.xhtml b/browser/components/preferences/preferences.xhtml
index a50fc9cae85527a10c3949163594ce43b68b14c0..82aec0fb0ebd6ffc6dc3143ddb56e9fe102f0caa 100644
index 21d951a19df06da67a28f717b9f80f8f4ebf77d2..b1f998f2b3ed99b19666e81e61428587541b0da5 100644
--- a/browser/components/preferences/preferences.xhtml
+++ b/browser/components/preferences/preferences.xhtml
@@ -44,6 +44,8 @@

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/preferences/sync.inc.xhtml b/browser/components/preferences/sync.inc.xhtml
index 492491a369b53797aded1d3e4cf24d6f11394267..b294aa3005b11276ba8f1c58730b85043a19bf3f 100644
index e59c536fc2fa06b11be9378a28285ac16fd16958..cf17ee3b6347b950fcf5bf260cd0631c77ffd1d3 100644
--- a/browser/components/preferences/sync.inc.xhtml
+++ b/browser/components/preferences/sync.inc.xhtml
@@ -229,6 +229,10 @@
@@ -223,6 +223,10 @@
<image class="sync-engine-image sync-engine-prefs" alt=""/>
<label data-l10n-id="sync-currently-syncing-settings"/>
</html:div>

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/search/SearchUIUtils.sys.mjs b/browser/components/search/SearchUIUtils.sys.mjs
index dfd18da85323751c4be7963cb5ab2357de488d83..e228bf594a0a736396cabd247bac4033091afccc 100644
index 6ef224ce377cf3ff511e435f3c7a5dc1de819c60..5b4c395c222c6317fd88499a1aa5307032ea13f8 100644
--- a/browser/components/search/SearchUIUtils.sys.mjs
+++ b/browser/components/search/SearchUIUtils.sys.mjs
@@ -412,7 +412,7 @@ export var SearchUIUtils = {
@@ -426,7 +426,7 @@ export var SearchUIUtils = {
triggeringSearchEngine: engine.name,
},
});

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/sessionstore/SessionStore.sys.mjs b/browser/components/sessionstore/SessionStore.sys.mjs
index e954a8df26ed84731b08b151f90a758206946582..64ab1cce10324d574b49fe861975188c292756c3 100644
index e8192ea9d8d35165fbfbb8c4fc4a96641a80cc86..fcd331a25a34e406e8f74d15db8567f79bdefd9e 100644
--- a/browser/components/sessionstore/SessionStore.sys.mjs
+++ b/browser/components/sessionstore/SessionStore.sys.mjs
@@ -2135,7 +2135,6 @@ var SessionStoreInternal = {
@@ -2133,7 +2133,6 @@ var SessionStoreInternal = {
if (closedWindowState) {
let newWindowState;
if (
@@ -10,7 +10,7 @@ index e954a8df26ed84731b08b151f90a758206946582..64ab1cce10324d574b49fe861975188c
!lazy.SessionStartup.willRestore()
) {
// We want to split the window up into pinned tabs and unpinned tabs.
@@ -2368,11 +2367,9 @@ var SessionStoreInternal = {
@@ -2366,11 +2365,9 @@ var SessionStoreInternal = {
tabbrowser.selectedTab.label;
}
@@ -22,7 +22,7 @@ index e954a8df26ed84731b08b151f90a758206946582..64ab1cce10324d574b49fe861975188c
// 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
@@ -3357,7 +3354,7 @@ var SessionStoreInternal = {
@@ -3355,7 +3352,7 @@ var SessionStoreInternal = {
if (!isPrivateWindow && tabState.isPrivate) {
return;
}
@@ -31,7 +31,7 @@ index e954a8df26ed84731b08b151f90a758206946582..64ab1cce10324d574b49fe861975188c
return;
}
@@ -4069,6 +4066,11 @@ var SessionStoreInternal = {
@@ -4067,6 +4064,11 @@ var SessionStoreInternal = {
Math.min(tabState.index, tabState.entries.length)
);
tabState.pinned = false;
@@ -43,7 +43,7 @@ index e954a8df26ed84731b08b151f90a758206946582..64ab1cce10324d574b49fe861975188c
if (inBackground === false) {
aWindow.gBrowser.selectedTab = newTab;
@@ -4505,6 +4507,7 @@ var SessionStoreInternal = {
@@ -4503,6 +4505,7 @@ var SessionStoreInternal = {
// Append the tab if we're opening into a different window,
tabIndex: aSource == aTargetWindow ? pos : Infinity,
pinned: state.pinned,
@@ -51,7 +51,7 @@ index e954a8df26ed84731b08b151f90a758206946582..64ab1cce10324d574b49fe861975188c
userContextId: state.userContextId,
skipLoad: true,
preferredRemoteType,
@@ -5360,7 +5363,7 @@ var SessionStoreInternal = {
@@ -5358,7 +5361,7 @@ var SessionStoreInternal = {
for (let i = tabbrowser.pinnedTabCount; i < tabbrowser.tabs.length; i++) {
let tab = tabbrowser.tabs[i];
@@ -60,7 +60,7 @@ index e954a8df26ed84731b08b151f90a758206946582..64ab1cce10324d574b49fe861975188c
removableTabs.push(tab);
}
}
@@ -5420,7 +5423,7 @@ var SessionStoreInternal = {
@@ -5418,7 +5421,7 @@ var SessionStoreInternal = {
}
let workspaceID = aWindow.getWorkspaceID();
@@ -69,7 +69,7 @@ index e954a8df26ed84731b08b151f90a758206946582..64ab1cce10324d574b49fe861975188c
winData.workspaceID = workspaceID;
}
},
@@ -5611,11 +5614,12 @@ var SessionStoreInternal = {
@@ -5609,11 +5612,12 @@ var SessionStoreInternal = {
}
let tabbrowser = aWindow.gBrowser;
@@ -83,7 +83,7 @@ index e954a8df26ed84731b08b151f90a758206946582..64ab1cce10324d574b49fe861975188c
// update the internal state data for this window
for (let tab of tabs) {
if (tab == aWindow.FirefoxViewHandler.tab) {
@@ -5626,6 +5630,7 @@ var SessionStoreInternal = {
@@ -5624,6 +5628,7 @@ var SessionStoreInternal = {
tabsData.push(tabData);
}
@@ -91,7 +91,7 @@ index e954a8df26ed84731b08b151f90a758206946582..64ab1cce10324d574b49fe861975188c
// update tab group state for this window
winData.groups = [];
for (let tabGroup of aWindow.gBrowser.tabGroups) {
@@ -5638,7 +5643,7 @@ var SessionStoreInternal = {
@@ -5636,7 +5641,7 @@ var SessionStoreInternal = {
// a window is closed, point to the first item in the tab strip instead (it will never be the Firefox View tab,
// since it's only inserted into the tab strip after it's selected).
if (aWindow.FirefoxViewHandler.tab?.selected) {
@@ -100,7 +100,7 @@ index e954a8df26ed84731b08b151f90a758206946582..64ab1cce10324d574b49fe861975188c
winData.title = tabbrowser.tabs[0].label;
}
winData.selected = selectedIndex;
@@ -5750,8 +5755,8 @@ var SessionStoreInternal = {
@@ -5748,8 +5753,8 @@ var SessionStoreInternal = {
// selectTab represents.
let selectTab = 0;
if (overwriteTabs) {
@@ -111,7 +111,7 @@ index e954a8df26ed84731b08b151f90a758206946582..64ab1cce10324d574b49fe861975188c
selectTab = Math.min(selectTab, winData.tabs.length);
}
@@ -5794,6 +5799,8 @@ var SessionStoreInternal = {
@@ -5792,6 +5797,8 @@ var SessionStoreInternal = {
winData.tabs,
winData.groups ?? []
);
@@ -120,7 +120,7 @@ index e954a8df26ed84731b08b151f90a758206946582..64ab1cce10324d574b49fe861975188c
this._log.debug(
`restoreWindow, createTabsForSessionRestore returned ${tabs.length} tabs`
);
@@ -6351,6 +6358,22 @@ var SessionStoreInternal = {
@@ -6349,6 +6356,25 @@ var SessionStoreInternal = {
// Most of tabData has been restored, now continue with restoring
// attributes that may trigger external events.
@@ -139,11 +139,14 @@ index e954a8df26ed84731b08b151f90a758206946582..64ab1cce10324d574b49fe861975188c
+ }
+ if (tabData.zenDefaultUserContextId) {
+ tab.setAttribute("zenDefaultUserContextId", true);
+ }
+ if (tabData.zenWorkspace) {
+ tab.setAttribute("zen-workspace-id", tabData.zenWorkspace);
+ }
if (tabData.pinned) {
tabbrowser.pinTab(tab);
@@ -7266,7 +7289,7 @@ var SessionStoreInternal = {
@@ -7264,7 +7290,7 @@ var SessionStoreInternal = {
let groupsToSave = new Map();
for (let tIndex = 0; tIndex < window.tabs.length; ) {

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/sidebar/browser-sidebar.js b/browser/components/sidebar/browser-sidebar.js
index 178c05099b671c4ec8d4c225955e65cff73824e2..6abb0ee2d4be94f997ee8d4bc755a393d9759099 100644
index f62decaa3f7400787b245b3e765197f4e70dffbb..329240cf434fdbefcf145a733179bd565a814280 100644
--- a/browser/components/sidebar/browser-sidebar.js
+++ b/browser/components/sidebar/browser-sidebar.js
@@ -729,7 +729,7 @@ var SidebarController = {
@@ -779,7 +779,7 @@ var SidebarController = {
setPosition() {
// First reset all ordinals to match DOM ordering.
let contentArea = document.getElementById("tabbrowser-tabbox");

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/tabbrowser/content/browser-ctrlTab.js b/browser/components/tabbrowser/content/browser-ctrlTab.js
index 6753641cb579032306453be3f5054d7bc7661e8c..bf21f6c14f825fbe2d322900595cd34456fe1231 100644
index 22db482e62e754135d8a6cf824914a3e3e06c45c..bdc18d575b33e788f9628b4cb648d5c3e8781666 100644
--- a/browser/components/tabbrowser/content/browser-ctrlTab.js
+++ b/browser/components/tabbrowser/content/browser-ctrlTab.js
@@ -252,7 +252,8 @@ var ctrlTab = {
@@ -12,7 +12,7 @@ index 6753641cb579032306453be3f5054d7bc7661e8c..bf21f6c14f825fbe2d322900595cd344
},
init: function ctrlTab_init() {
@@ -459,7 +460,7 @@ var ctrlTab = {
@@ -463,7 +464,7 @@ var ctrlTab = {
// If the tab is hidden, don't add it to the list unless it's selected
// (Normally hidden tabs would be unhidden when selected, but that doesn't
// happen for Firefox View).
@@ -21,7 +21,7 @@ index 6753641cb579032306453be3f5054d7bc7661e8c..bf21f6c14f825fbe2d322900595cd344
return;
}
@@ -483,7 +484,7 @@ var ctrlTab = {
@@ -487,7 +488,7 @@ var ctrlTab = {
},
open: function ctrlTab_open() {
@@ -30,7 +30,7 @@ index 6753641cb579032306453be3f5054d7bc7661e8c..bf21f6c14f825fbe2d322900595cd344
return;
}
@@ -761,7 +762,7 @@ var ctrlTab = {
@@ -765,7 +766,7 @@ var ctrlTab = {
_initRecentlyUsedTabs() {
this._recentlyUsedTabs = Array.prototype.filter.call(
gBrowser.tabs,

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/tabbrowser/content/tab.js b/browser/components/tabbrowser/content/tab.js
index f261f0f2c7945cbdb41e5d1b6067a8db38bef117..f126879aa9e843c74992aa751795aef3888a6a64 100644
index fd2465046407261e8c29b4cd3d56122d232e701c..937068562975a26834572c408e9a75453bdf49cb 100644
--- a/browser/components/tabbrowser/content/tab.js
+++ b/browser/components/tabbrowser/content/tab.js
@@ -21,6 +21,7 @@
@@ -21,19 +21,25 @@ index f261f0f2c7945cbdb41e5d1b6067a8db38bef117..f126879aa9e843c74992aa751795aef3
</hbox>
</stack>
`;
@@ -97,9 +100,9 @@
"src=image,triggeringprincipal=iconloadingprincipal,requestcontextid,fadein,pinned,selected=visuallyselected,busy,crashed,sharing,pictureinpicture,pending,discarded",
".tab-sharing-icon-overlay": "sharing,selected=visuallyselected,pinned",
".tab-icon-overlay":
@@ -84,7 +87,7 @@
".tab-content":
"pinned,selected=visuallyselected,multiselected,titlechanged,attention",
".tab-icon-stack":
- "sharing,pictureinpicture,crashed,busy,soundplaying,soundplaying-scheduledremoval,pinned,muted,blocked,selected=visuallyselected,activemedia-blocked",
+ "zen-essential,sharing,pictureinpicture,crashed,busy,soundplaying,soundplaying-scheduledremoval,pinned,muted,blocked,selected=visuallyselected,activemedia-blocked",
".tab-throbber":
"fadein,pinned,busy,progress,selected=visuallyselected",
".tab-icon-pending":
@@ -95,7 +98,7 @@
".tab-icon-overlay":
"sharing,pictureinpicture,crashed,busy,soundplaying,soundplaying-scheduledremoval,pinned,muted,blocked,selected=visuallyselected,activemedia-blocked",
".tab-audio-button":
- "crashed,soundplaying,soundplaying-scheduledremoval,pinned,muted,activemedia-blocked",
+ "zen-essential,crashed,soundplaying,soundplaying-scheduledremoval,pinned,muted,activemedia-blocked",
".tab-label-container":
"pinned,selected=visuallyselected,labeldirection",
".tab-label":
@@ -188,7 +191,7 @@
@@ -184,7 +187,7 @@
}
set _visuallySelected(val) {
@@ -42,12 +48,14 @@ index f261f0f2c7945cbdb41e5d1b6067a8db38bef117..f126879aa9e843c74992aa751795aef3
return;
}
@@ -224,9 +227,21 @@
@@ -220,11 +223,21 @@
}
get visible() {
- return (
- this.isOpen && !this.hidden && (!this.group?.collapsed || this.selected)
- this.isOpen &&
- !this.hidden &&
- (!this.group || this.group.isTabVisibleInGroup(this))
- );
+ if (!this.isOpen || this.hidden || this.hasAttribute("zen-empty-tab")) {
+ return false;
@@ -67,7 +75,7 @@ index f261f0f2c7945cbdb41e5d1b6067a8db38bef117..f126879aa9e843c74992aa751795aef3
}
get hidden() {
@@ -297,7 +312,7 @@
@@ -295,7 +308,7 @@
return false;
}
@@ -76,7 +84,7 @@ index f261f0f2c7945cbdb41e5d1b6067a8db38bef117..f126879aa9e843c74992aa751795aef3
}
get lastAccessed() {
@@ -374,8 +389,11 @@
@@ -372,8 +385,11 @@
}
get group() {
@@ -90,7 +98,7 @@ index f261f0f2c7945cbdb41e5d1b6067a8db38bef117..f126879aa9e843c74992aa751795aef3
}
return null;
}
@@ -469,6 +487,8 @@
@@ -459,6 +475,8 @@
this.style.MozUserFocus = "ignore";
} else if (
event.target.classList.contains("tab-close-button") ||
@@ -99,7 +107,7 @@ index f261f0f2c7945cbdb41e5d1b6067a8db38bef117..f126879aa9e843c74992aa751795aef3
event.target.classList.contains("tab-icon-overlay") ||
event.target.classList.contains("tab-audio-button")
) {
@@ -523,6 +543,10 @@
@@ -513,6 +531,10 @@
this.style.MozUserFocus = "";
}
@@ -110,7 +118,7 @@ index f261f0f2c7945cbdb41e5d1b6067a8db38bef117..f126879aa9e843c74992aa751795aef3
on_click(event) {
if (event.button != 0) {
return;
@@ -571,6 +595,7 @@
@@ -561,6 +583,7 @@
)
);
} else {
@@ -118,7 +126,7 @@ index f261f0f2c7945cbdb41e5d1b6067a8db38bef117..f126879aa9e843c74992aa751795aef3
gBrowser.removeTab(this, {
animate: true,
triggeringEvent: event,
@@ -583,6 +608,14 @@
@@ -573,6 +596,14 @@
// (see tabbrowser-tabs 'click' handler).
gBrowser.tabContainer._blockDblClick = true;
}
@@ -133,7 +141,7 @@ index f261f0f2c7945cbdb41e5d1b6067a8db38bef117..f126879aa9e843c74992aa751795aef3
}
on_dblclick(event) {
@@ -606,6 +639,8 @@
@@ -596,6 +627,8 @@
animate: true,
triggeringEvent: event,
});

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/tabbrowser/content/tabbrowser.js b/browser/components/tabbrowser/content/tabbrowser.js
index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c328341c6e6eb 100644
index 3204f253c23551650991d3385dd256d55892a012..78727727a0c623e0213177700124869b2163b89c 100644
--- a/browser/components/tabbrowser/content/tabbrowser.js
+++ b/browser/components/tabbrowser/content/tabbrowser.js
@@ -422,15 +422,64 @@
@@ -427,15 +427,64 @@
return this.tabContainer.visibleTabs;
}
@@ -69,7 +69,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
set selectedTab(val) {
if (
gSharedTabWarning.willShowSharedTabWarning(val) ||
@@ -578,6 +627,7 @@
@@ -583,6 +632,7 @@
this.tabpanels.appendChild(panel);
let tab = this.tabs[0];
@@ -77,7 +77,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
tab.linkedPanel = uniqueId;
this._selectedTab = tab;
this._selectedBrowser = browser;
@@ -863,9 +913,13 @@
@@ -868,9 +918,13 @@
}
this.showTab(aTab);
@@ -92,7 +92,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
aTab.setAttribute("pinned", "true");
this._updateTabBarForPinnedTabs();
@@ -878,11 +932,15 @@
@@ -883,11 +937,15 @@
}
this.#handleTabMove(aTab, () => {
@@ -109,7 +109,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
});
aTab.style.marginInlineStart = "";
@@ -1060,6 +1118,8 @@
@@ -1065,6 +1123,8 @@
let LOCAL_PROTOCOLS = ["chrome:", "about:", "resource:", "data:"];
@@ -118,7 +118,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
if (
aIconURL &&
!aLoadingPrincipal &&
@@ -1070,6 +1130,9 @@
@@ -1075,6 +1135,9 @@
);
return;
}
@@ -128,7 +128,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
let browser = this.getBrowserForTab(aTab);
browser.mIconURL = aIconURL;
@@ -1319,6 +1382,7 @@
@@ -1333,6 +1396,7 @@
if (!this._previewMode) {
newTab.recordTimeFromUnloadToReload();
newTab.updateLastAccessed();
@@ -136,7 +136,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
oldTab.updateLastAccessed();
// if this is the foreground window, update the last-seen timestamps.
if (this.ownerGlobal == BrowserWindowTracker.getTopWindow()) {
@@ -1471,6 +1535,9 @@
@@ -1485,6 +1549,9 @@
}
let activeEl = document.activeElement;
@@ -146,7 +146,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
// If focus is on the old tab, move it to the new tab.
if (activeEl == oldTab) {
newTab.focus();
@@ -1794,7 +1861,8 @@
@@ -1808,7 +1875,8 @@
}
_setTabLabel(aTab, aLabel, { beforeTabOpen, isContentTitle, isURL } = {}) {
@@ -156,7 +156,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
return false;
}
@@ -1902,7 +1970,7 @@
@@ -1916,7 +1984,7 @@
newIndex = this.selectedTab._tPos + 1;
}
@@ -165,7 +165,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
if (this.isTabGroupLabel(targetTab)) {
throw new Error(
"Replacing a tab group label with a tab is not supported"
@@ -2166,6 +2234,7 @@
@@ -2191,6 +2259,7 @@
uriIsAboutBlank,
userContextId,
skipLoad,
@@ -173,7 +173,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
} = {}) {
let b = document.createXULElement("browser");
// Use the JSM global to create the permanentKey, so that if the
@@ -2239,8 +2308,7 @@
@@ -2264,8 +2333,7 @@
// we use a different attribute name for this?
b.setAttribute("name", name);
}
@@ -183,7 +183,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
b.setAttribute("transparent", "true");
}
@@ -2405,7 +2473,7 @@
@@ -2430,7 +2498,7 @@
let panel = this.getPanel(browser);
let uniqueId = this._generateUniquePanelID();
@@ -192,7 +192,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
aTab.linkedPanel = uniqueId;
// Inject the <browser> into the DOM if necessary.
@@ -2464,8 +2532,8 @@
@@ -2489,8 +2557,8 @@
// If we transitioned from one browser to two browsers, we need to set
// hasSiblings=false on both the existing browser and the new browser.
if (this.tabs.length == 2) {
@@ -203,7 +203,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
} else {
aTab.linkedBrowser.browsingContext.hasSiblings = this.tabs.length > 1;
}
@@ -2629,7 +2697,6 @@
@@ -2654,7 +2722,6 @@
this.selectedTab = this.addTrustedTab(BROWSER_NEW_TAB_URL, {
tabIndex: tab._tPos + 1,
userContextId: tab.userContextId,
@@ -211,7 +211,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
focusUrlBar: true,
});
resolve(this.selectedBrowser);
@@ -2709,6 +2776,8 @@
@@ -2734,6 +2801,8 @@
schemelessInput,
hasValidUserGestureActivation = false,
textDirectiveUserActivation = false,
@@ -220,7 +220,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
} = {}
) {
// all callers of addTab that pass a params object need to pass
@@ -2719,6 +2788,12 @@
@@ -2744,6 +2813,12 @@
);
}
@@ -233,7 +233,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
if (!UserInteraction.running("browser.tabs.opening", window)) {
UserInteraction.start("browser.tabs.opening", "initting", window);
}
@@ -2782,6 +2857,19 @@
@@ -2807,6 +2882,19 @@
noInitialLabel,
skipBackgroundNotify,
});
@@ -253,7 +253,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
if (insertTab) {
// Insert the tab into the tab container in the correct position.
this.#insertTabAtIndex(t, {
@@ -2790,6 +2878,7 @@
@@ -2815,6 +2903,7 @@
ownerTab,
openerTab,
pinned,
@@ -261,7 +261,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
bulkOrderedOpen,
tabGroup: tabGroup ?? openerTab?.group,
});
@@ -2808,6 +2897,7 @@
@@ -2833,6 +2922,7 @@
openWindowInfo,
skipLoad,
triggeringRemoteType,
@@ -269,7 +269,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
}));
if (focusUrlBar) {
@@ -2928,6 +3018,12 @@
@@ -2953,6 +3043,12 @@
}
}
@@ -282,7 +282,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
// Additionally send pinned tab events
if (pinned) {
this.#notifyPinnedStatus(t);
@@ -3016,10 +3112,10 @@
@@ -3041,10 +3137,10 @@
isAdoptingGroup = false,
isUserTriggered = false,
telemetryUserCreateSource = "unknown",
@@ -294,7 +294,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
}
if (!color) {
@@ -3040,9 +3136,14 @@
@@ -3065,9 +3161,14 @@
label,
isAdoptingGroup
);
@@ -311,7 +311,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
);
group.addTabs(tabs);
@@ -3163,7 +3264,7 @@
@@ -3188,7 +3289,7 @@
}
this.#handleTabMove(tab, () =>
@@ -320,7 +320,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
);
}
@@ -3365,6 +3466,7 @@
@@ -3390,6 +3491,7 @@
openWindowInfo,
skipLoad,
triggeringRemoteType,
@@ -328,7 +328,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
}
) {
// If we don't have a preferred remote type (or it is `NOT_REMOTE`), and
@@ -3434,6 +3536,7 @@
@@ -3459,6 +3561,7 @@
openWindowInfo,
name,
skipLoad,
@@ -336,7 +336,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
});
}
@@ -3621,7 +3724,7 @@
@@ -3646,7 +3749,7 @@
// Add a new tab if needed.
if (!tab) {
let createLazyBrowser =
@@ -345,7 +345,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
let url = "about:blank";
if (tabData.entries?.length) {
@@ -3658,8 +3761,10 @@
@@ -3683,8 +3786,10 @@
insertTab: false,
skipLoad: true,
preferredRemoteType,
@@ -357,7 +357,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
if (select) {
tabToSelect = tab;
}
@@ -3671,7 +3776,8 @@
@@ -3696,7 +3801,8 @@
this.pinTab(tab);
// Then ensure all the tab open/pinning information is sent.
this._fireTabOpen(tab, {});
@@ -367,7 +367,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
let { groupId } = tabData;
const tabGroup = tabGroupWorkingData.get(groupId);
// if a tab refers to a tab group we don't know, skip any group
@@ -3685,7 +3791,10 @@
@@ -3710,7 +3816,10 @@
tabGroup.stateData.id,
tabGroup.stateData.color,
tabGroup.stateData.collapsed,
@@ -379,7 +379,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
);
tabsFragment.appendChild(tabGroup.node);
}
@@ -3730,9 +3839,23 @@
@@ -3755,9 +3864,23 @@
// to remove the old selected tab.
if (tabToSelect) {
let leftoverTab = this.selectedTab;
@@ -403,7 +403,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
if (tabs.length > 1 || !tabs[0].selected) {
this._updateTabsAfterInsert();
@@ -3923,11 +4046,14 @@
@@ -3948,11 +4071,14 @@
if (ownerTab) {
tab.owner = ownerTab;
}
@@ -419,7 +419,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
if (
!bulkOrderedOpen &&
((openerTab &&
@@ -3939,7 +4065,7 @@
@@ -3964,7 +4090,7 @@
let lastRelatedTab =
openerTab && this._lastRelatedTabMap.get(openerTab);
let previousTab = lastRelatedTab || openerTab || this.selectedTab;
@@ -428,7 +428,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
tabGroup = previousTab.group;
}
if (
@@ -3950,7 +4076,7 @@
@@ -3975,7 +4101,7 @@
) {
elementIndex = Infinity;
} else if (previousTab.visible) {
@@ -437,7 +437,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
} else if (previousTab == FirefoxViewHandler.tab) {
elementIndex = 0;
}
@@ -3978,14 +4104,14 @@
@@ -4003,14 +4129,14 @@
}
// Ensure index is within bounds.
if (tab.pinned) {
@@ -456,7 +456,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
if (pinned && !itemAfter?.pinned) {
itemAfter = null;
@@ -3996,7 +4122,7 @@
@@ -4021,7 +4147,7 @@
this.tabContainer._invalidateCachedTabs();
@@ -465,7 +465,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
if (this.isTab(itemAfter) && itemAfter.group == tabGroup) {
// Place at the front of, or between tabs in, the same tab group
this.tabContainer.insertBefore(tab, itemAfter);
@@ -4032,6 +4158,7 @@
@@ -4057,6 +4183,7 @@
if (pinned) {
this._updateTabBarForPinnedTabs();
}
@@ -473,7 +473,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
TabBarVisibility.update();
}
@@ -4321,6 +4448,9 @@
@@ -4346,6 +4473,9 @@
return;
}
@@ -483,7 +483,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
this.removeTabs(selectedTabs, { isUserTriggered, telemetrySource });
}
@@ -4582,6 +4712,7 @@
@@ -4607,6 +4737,7 @@
telemetrySource,
} = {}
) {
@@ -491,7 +491,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
// When 'closeWindowWithLastTab' pref is enabled, closing all tabs
// can be considered equivalent to closing the window.
if (
@@ -4671,6 +4802,7 @@
@@ -4696,6 +4827,7 @@
if (lastToClose) {
this.removeTab(lastToClose, aParams);
}
@@ -499,7 +499,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
} catch (e) {
console.error(e);
}
@@ -4709,6 +4841,12 @@
@@ -4734,6 +4866,12 @@
aTab._closeTimeNoAnimTimerId = Glean.browserTabclose.timeNoAnim.start();
}
@@ -512,7 +512,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
// Handle requests for synchronously removing an already
// asynchronously closing tab.
if (!animate && aTab.closing) {
@@ -4723,6 +4861,9 @@
@@ -4748,6 +4886,9 @@
// state).
let tabWidth = window.windowUtils.getBoundsWithoutFlushing(aTab).width;
let isLastTab = this.#isLastTabInWindow(aTab);
@@ -522,7 +522,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
if (
!this._beginRemoveTab(aTab, {
closeWindowFastpath: true,
@@ -4771,7 +4912,9 @@
@@ -4796,7 +4937,9 @@
// We're not animating, so we can cancel the animation stopwatch.
Glean.browserTabclose.timeAnim.cancel(aTab._closeTimeAnimTimerId);
aTab._closeTimeAnimTimerId = null;
@@ -532,7 +532,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
return;
}
@@ -4905,7 +5048,7 @@
@@ -4930,7 +5073,7 @@
closeWindowWithLastTab != null
? closeWindowWithLastTab
: !window.toolbar.visible ||
@@ -541,7 +541,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
if (closeWindow) {
// We've already called beforeunload on all the relevant tabs if we get here,
@@ -4929,6 +5072,7 @@
@@ -4954,6 +5097,7 @@
newTab = true;
}
@@ -549,7 +549,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
aTab._endRemoveArgs = [closeWindow, newTab];
// swapBrowsersAndCloseOther will take care of closing the window without animation.
@@ -4969,13 +5113,7 @@
@@ -4994,13 +5138,7 @@
aTab._mouseleave();
if (newTab) {
@@ -564,7 +564,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
} else {
TabBarVisibility.update();
}
@@ -5108,6 +5246,7 @@
@@ -5133,6 +5271,7 @@
this.tabs[i]._tPos = i;
}
@@ -572,7 +572,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
if (!this._windowIsClosing) {
// update tab close buttons state
this.tabContainer._updateCloseButtons();
@@ -5320,6 +5459,7 @@
@@ -5345,6 +5484,7 @@
}
let excludeTabs = new Set(aExcludeTabs);
@@ -580,7 +580,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
// If this tab has a successor, it should be selectable, since
// hiding or closing a tab removes that tab as a successor.
@@ -5332,13 +5472,13 @@
@@ -5357,13 +5497,13 @@
!excludeTabs.has(aTab.owner) &&
Services.prefs.getBoolPref("browser.tabs.selectOwnerOnClose")
) {
@@ -596,7 +596,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
);
let tab = this.tabContainer.findNextTab(aTab, {
@@ -5354,7 +5494,7 @@
@@ -5379,7 +5519,7 @@
}
if (tab) {
@@ -605,7 +605,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
}
// If no qualifying visible tab was found, see if there is a tab in
@@ -5375,7 +5515,7 @@
@@ -5400,7 +5540,7 @@
});
}
@@ -614,7 +614,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
}
_blurTab(aTab) {
@@ -5777,10 +5917,10 @@
@@ -5802,10 +5942,10 @@
SessionStore.deleteCustomTabValue(aTab, "hiddenBy");
}
@@ -627,7 +627,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
aTab.selected ||
aTab.closing ||
// Tabs that are sharing the screen, microphone or camera cannot be hidden.
@@ -5839,6 +5979,7 @@
@@ -5864,6 +6004,7 @@
* @param {MozTabbrowserTab|MozTabbrowserTabGroup|MozTabbrowserTabGroup.labelElement} aTab
*/
replaceTabWithWindow(aTab, aOptions) {
@@ -635,7 +635,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
if (this.tabs.length == 1) {
return null;
}
@@ -5972,7 +6113,7 @@
@@ -5997,7 +6138,7 @@
* `true` if element is a `<tab-group>`
*/
isTabGroup(element) {
@@ -644,7 +644,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
}
/**
@@ -6048,8 +6189,8 @@
@@ -6073,8 +6214,8 @@
}
// Don't allow mixing pinned and unpinned tabs.
@@ -655,7 +655,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
} else {
tabIndex = Math.max(tabIndex, this.pinnedTabCount);
}
@@ -6075,10 +6216,16 @@
@@ -6100,10 +6241,16 @@
this.#handleTabMove(
element,
() => {
@@ -674,7 +674,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
if (neighbor && this.isTab(element) && tabIndex > element._tPos) {
neighbor.after(element);
} else {
@@ -6136,23 +6283,28 @@
@@ -6161,23 +6308,28 @@
#moveTabNextTo(element, targetElement, moveBefore = false, metricsContext) {
if (this.isTabGroupLabel(targetElement)) {
targetElement = targetElement.group;
@@ -709,7 +709,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
} else if (!element.pinned && targetElement && targetElement.pinned) {
// If the caller asks to move an unpinned element next to a pinned
// tab, move the unpinned element to be the first unpinned element
@@ -6165,14 +6317,34 @@
@@ -6190,14 +6342,34 @@
// move the tab group right before the first unpinned tab.
// 4. Moving a tab group and the first unpinned tab is grouped:
// move the tab group right before the first unpinned tab's tab group.
@@ -745,7 +745,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
element.pinned
? this.tabContainer.pinnedTabsContainer
: this.tabContainer;
@@ -6181,7 +6353,7 @@
@@ -6206,7 +6378,7 @@
element,
() => {
if (moveBefore) {
@@ -754,7 +754,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
} else if (targetElement) {
targetElement.after(element);
} else {
@@ -6227,10 +6399,10 @@
@@ -6252,10 +6424,10 @@
* @param {TabMetricsContext} [metricsContext]
*/
moveTabToGroup(aTab, aGroup, metricsContext) {
@@ -767,7 +767,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
return;
}
if (aTab.group && aTab.group.id === aGroup.id) {
@@ -6261,6 +6433,7 @@
@@ -6285,6 +6457,7 @@
let state = {
tabIndex: tab._tPos,
@@ -775,7 +775,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
};
if (tab.visible) {
state.elementIndex = tab.elementIndex;
@@ -6287,7 +6460,7 @@
@@ -6311,7 +6484,7 @@
let changedTabGroup =
previousTabState.tabGroupId != currentTabState.tabGroupId;
@@ -784,7 +784,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
tab.dispatchEvent(
new CustomEvent("TabMove", {
bubbles: true,
@@ -6324,6 +6497,10 @@
@@ -6348,6 +6521,10 @@
moveActionCallback();
@@ -795,7 +795,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
// Clear tabs cache after moving nodes because the order of tabs may have
// changed.
this.tabContainer._invalidateCachedTabs();
@@ -7221,7 +7398,7 @@
@@ -7249,7 +7426,7 @@
// preventDefault(). It will still raise the window if appropriate.
break;
}
@@ -804,7 +804,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
window.focus();
aEvent.preventDefault();
break;
@@ -8166,6 +8343,7 @@
@@ -8199,6 +8376,7 @@
aWebProgress.isTopLevel
) {
this.mTab.setAttribute("busy", "true");
@@ -812,7 +812,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
gBrowser._tabAttrModified(this.mTab, ["busy"]);
this.mTab._notselectedsinceload = !this.mTab.selected;
}
@@ -9157,7 +9335,7 @@ var TabContextMenu = {
@@ -9200,7 +9378,7 @@ var TabContextMenu = {
);
contextUnpinSelectedTabs.hidden =
!this.contextTab.pinned || !this.multiselected;
@@ -821,7 +821,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c3283
// Build Ask Chat items
TabContextMenu.GenAI.buildTabMenu(
document.getElementById("context_askChat"),
@@ -9476,6 +9654,7 @@ var TabContextMenu = {
@@ -9520,6 +9698,7 @@ var TabContextMenu = {
)
);
} else {

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/tabbrowser/content/tabgroup.js b/browser/components/tabbrowser/content/tabgroup.js
index caea196b22b4689f55780a528661d87b52f4e728..725a2dfb10216df3e63d7980e2f1c99bf10038d7 100644
index c0cb11590d6dfbcf6fa49ef5e10c6d3877191d1f..503e97a4ec87625b154627aa5839fb4f8d050f86 100644
--- a/browser/components/tabbrowser/content/tabgroup.js
+++ b/browser/components/tabbrowser/content/tabgroup.js
@@ -13,10 +13,12 @@
@@ -51,10 +51,10 @@ index caea196b22b4689f55780a528661d87b52f4e728..725a2dfb10216df3e63d7980e2f1c99b
this._initialized = true;
this.saveOnWindowClose = true;
@@ -97,11 +107,14 @@
this.#labelElement.container = gBrowser.tabContainer;
this.#labelElement.group = this;
@@ -99,11 +109,14 @@
this.#labelElement.addEventListener("mouseover", this);
this.#labelElement.addEventListener("mouseout", this);
- this.#labelElement.addEventListener("contextmenu", e => {
- e.preventDefault();
- gBrowser.tabGroupMenu.openEditModal(this);
@@ -71,7 +71,7 @@ index caea196b22b4689f55780a528661d87b52f4e728..725a2dfb10216df3e63d7980e2f1c99b
this.#updateLabelAriaAttributes();
this.#updateCollapsedAriaAttributes();
@@ -127,6 +140,8 @@
@@ -129,6 +142,8 @@
// mounts after getting created by `Tabbrowser.adoptTabGroup`.
this.#wasCreatedByAdoption = false;
}
@@ -80,7 +80,7 @@ index caea196b22b4689f55780a528661d87b52f4e728..725a2dfb10216df3e63d7980e2f1c99b
resetDefaultGroupName = () => {
this.#defaultGroupName = "";
@@ -197,7 +212,10 @@
@@ -213,7 +228,10 @@
}
});
}
@@ -92,7 +92,7 @@ index caea196b22b4689f55780a528661d87b52f4e728..725a2dfb10216df3e63d7980e2f1c99b
}
get color() {
@@ -285,6 +303,9 @@
@@ -307,6 +325,9 @@
}
set collapsed(val) {
@@ -102,7 +102,7 @@ index caea196b22b4689f55780a528661d87b52f4e728..725a2dfb10216df3e63d7980e2f1c99b
if (!!val == this.collapsed) {
return;
}
@@ -338,12 +359,61 @@
@@ -364,7 +385,6 @@
tabGroupName,
})
.then(result => {
@@ -110,6 +110,9 @@ index caea196b22b4689f55780a528661d87b52f4e728..725a2dfb10216df3e63d7980e2f1c99b
});
}
@@ -383,7 +403,57 @@
* @returns {MozTabbrowserTab[]}
*/
get tabs() {
- return Array.from(this.children).filter(node => node.matches("tab"));
+ // add other group tabs if they are under this group
@@ -166,7 +169,7 @@ index caea196b22b4689f55780a528661d87b52f4e728..725a2dfb10216df3e63d7980e2f1c99b
}
/**
@@ -374,7 +444,6 @@
@@ -442,7 +512,6 @@
addTabs(tabs, metricsContext) {
for (let tab of tabs) {
if (tab.pinned) {
@@ -174,7 +177,7 @@ index caea196b22b4689f55780a528661d87b52f4e728..725a2dfb10216df3e63d7980e2f1c99b
}
let tabToMove =
this.ownerGlobal === tab.ownerGlobal
@@ -437,7 +506,7 @@
@@ -505,7 +574,7 @@
*/
on_click(event) {
let isToggleElement =
@@ -183,7 +186,7 @@ index caea196b22b4689f55780a528661d87b52f4e728..725a2dfb10216df3e63d7980e2f1c99b
event.target === this.#overflowCountLabel;
if (isToggleElement && event.button === 0) {
event.preventDefault();
@@ -470,5 +539,6 @@
@@ -570,5 +639,6 @@
}
}

View File

@@ -1,8 +1,18 @@
diff --git a/browser/components/tabbrowser/content/tabs.js b/browser/components/tabbrowser/content/tabs.js
index e2b27db6c13278defea3bcc7606a8da54e7d001c..91e772ab0fed5be50e6dfee40eaa24888de67ccb 100644
index c7557dad38db9ef02b981c46de9595df77cb67db..4c5972fceb4cf46718e994200bf48d39cb1923c0 100644
--- a/browser/components/tabbrowser/content/tabs.js
+++ b/browser/components/tabbrowser/content/tabs.js
@@ -332,7 +332,7 @@
@@ -44,6 +44,9 @@
* @returns {MozTabbrowserTab|vbox}
*/
const elementToMove = element => {
+ if (element.group?.hasAttribute("split-view-group")) {
+ return element.group;
+ }
if (isTab(element)) {
return element;
}
@@ -411,7 +414,7 @@
// and we're not hitting the scroll buttons.
if (
event.button != 0 ||
@@ -11,7 +21,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..91e772ab0fed5be50e6dfee40eaa2488
event.composedTarget.localName == "toolbarbutton"
) {
return;
@@ -413,7 +413,6 @@
@@ -492,7 +495,6 @@
});
}
} else if (isTabGroupLabel(event.target)) {
@@ -19,7 +29,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..91e772ab0fed5be50e6dfee40eaa2488
} else if (
event.originalTarget.closest("scrollbox") &&
!Services.prefs.getBoolPref(
@@ -449,6 +448,9 @@
@@ -528,6 +530,9 @@
}
on_keydown(event) {
@@ -29,7 +39,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..91e772ab0fed5be50e6dfee40eaa2488
let { altKey, shiftKey } = event;
let [accel, nonAccel] =
AppConstants.platform == "macosx"
@@ -686,7 +688,7 @@
@@ -765,7 +770,7 @@
if (this.#isContainerVerticalPinnedGrid(tab)) {
// In expanded vertical mode, the max number of pinned tabs per row is dynamic
// Set this before adjusting dragged tab's position
@@ -38,7 +48,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..91e772ab0fed5be50e6dfee40eaa2488
let tabsPerRow = 0;
let position = RTL_UI
? window.windowUtils.getBoundsWithoutFlushing(
@@ -851,7 +853,7 @@
@@ -930,7 +935,7 @@
let dropEffect = this.getDropEffectForTabDrag(event);
let isMovingInTabStrip = !fromTabList && dropEffect == "move";
let collapseTabGroupDuringDrag =
@@ -47,7 +57,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..91e772ab0fed5be50e6dfee40eaa2488
tab._dragData = {
offsetX: this.verticalMode
@@ -861,7 +863,7 @@
@@ -940,7 +945,7 @@
? event.screenY - window.screenY - tabOffset
: event.screenY - window.screenY,
scrollPos:
@@ -56,15 +66,15 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..91e772ab0fed5be50e6dfee40eaa2488
? this.pinnedTabsContainer.scrollPosition
: this.arrowScrollbox.scrollPosition,
screenX: event.screenX,
@@ -887,6 +889,7 @@
this.#moveTogetherSelectedTabs(tab);
} else if (collapseTabGroupDuringDrag) {
@@ -969,6 +974,7 @@
if (collapseTabGroupDuringDrag) {
tab.group.collapsed = true;
+ gZenFolders.collapseVisibleTab(tab.group);
}
}
@@ -932,6 +935,10 @@
}
@@ -1015,6 +1021,10 @@
}
let draggedTab = event.dataTransfer.mozGetDataAt(TAB_DROP_TYPE, 0);
@@ -75,7 +85,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..91e772ab0fed5be50e6dfee40eaa2488
if (
(dropEffect == "move" || dropEffect == "copy") &&
document == draggedTab.ownerDocument &&
@@ -1095,6 +1102,18 @@
@@ -1196,6 +1206,18 @@
this._tabDropIndicator.hidden = true;
event.stopPropagation();
@@ -94,7 +104,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..91e772ab0fed5be50e6dfee40eaa2488
if (draggedTab && dropEffect == "copy") {
let duplicatedDraggedTab;
let duplicatedTabs = [];
@@ -1119,8 +1138,9 @@
@@ -1220,8 +1242,9 @@
let translateOffsetY = oldTranslateY % tabHeight;
let newTranslateX = oldTranslateX - translateOffsetX;
let newTranslateY = oldTranslateY - translateOffsetY;
@@ -106,7 +116,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..91e772ab0fed5be50e6dfee40eaa2488
if (this.#isContainerVerticalPinnedGrid(draggedTab)) {
// Update both translate axis for pinned vertical expanded tabs
@@ -1136,8 +1156,8 @@
@@ -1237,8 +1260,8 @@
}
} else {
let tabs = this.ariaFocusableItems.slice(
@@ -117,21 +127,21 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..91e772ab0fed5be50e6dfee40eaa2488
);
let size = this.verticalMode ? "height" : "width";
let screenAxis = this.verticalMode ? "screenY" : "screenX";
@@ -1178,11 +1198,9 @@
}
@@ -1287,11 +1310,13 @@
this.dragToPinPromoCard,
];
let shouldPin =
- numPinned &&
- this.pinnedTabsContainer.contains(event.target) &&
- !draggedTab.pinned;
+ false;
+ false &&
isTab(draggedTab) &&
!draggedTab.pinned &&
(overPinnedDropIndicator ||
dragToPinTargets.some(el => el.contains(event.target)));
let shouldUnpin =
- this.arrowScrollbox.contains(event.target) && draggedTab.pinned;
+ false;
let shouldTranslate =
!gReduceMotion &&
!shouldCreateGroupOnDrop &&
@@ -1195,6 +1213,7 @@
+ false &&
isTab(draggedTab) &&
draggedTab.pinned &&
this.arrowScrollbox.contains(event.target);
@@ -1309,6 +1334,7 @@
(oldTranslateY && oldTranslateY != newTranslateY);
} else if (this.verticalMode) {
shouldTranslate &&= oldTranslateY && oldTranslateY != newTranslateY;
@@ -139,7 +149,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..91e772ab0fed5be50e6dfee40eaa2488
} else {
shouldTranslate &&= oldTranslateX && oldTranslateX != newTranslateX;
}
@@ -1376,6 +1395,7 @@
@@ -1503,6 +1529,7 @@
let nextItem = this.ariaFocusableItems[newIndex];
let tabGroup = isTab(nextItem) && nextItem.group;
@@ -147,11 +157,10 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..91e772ab0fed5be50e6dfee40eaa2488
gBrowser.loadTabs(urls, {
inBackground,
replace,
@@ -1408,6 +1428,17 @@
@@ -1541,6 +1568,16 @@
}
this.#resetTabsAfterDrop(draggedTab.ownerDocument);
this.finishMoveTogetherSelectedTabs(draggedTab);
this.finishAnimateTabMove();
+
+ if (!dt.mozUserCancelled && dt.dropEffect == "none" && !this._isCustomizing) {
+ const moved = gZenViewSplitter.moveTabToSplitView(event, draggedTab);
+ if (moved) {
@@ -162,10 +171,10 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..91e772ab0fed5be50e6dfee40eaa2488
+ if (gZenViewSplitter._lastOpenedTab) gZenViewSplitter._lastOpenedTab._visuallySelected = false;
+ }
+
this.#expandGroupOnDrop(draggedTab);
this.#resetTabsAfterDrop(draggedTab.ownerDocument);
@@ -1577,7 +1608,6 @@
if (
dt.mozUserCancelled ||
dt.dropEffect != "none" ||
@@ -1707,7 +1744,6 @@
this.toggleAttribute("overflow", true);
this._updateCloseButtons();
@@ -173,7 +182,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..91e772ab0fed5be50e6dfee40eaa2488
document
.getElementById("tab-preview-panel")
@@ -1635,7 +1665,7 @@
@@ -1765,7 +1801,7 @@
}
get newTabButton() {
@@ -182,7 +191,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..91e772ab0fed5be50e6dfee40eaa2488
}
get verticalMode() {
@@ -1651,6 +1681,7 @@
@@ -1781,6 +1817,7 @@
}
get overflowing() {
@@ -190,21 +199,27 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..91e772ab0fed5be50e6dfee40eaa2488
return this.hasAttribute("overflow");
}
@@ -1659,26 +1690,54 @@
@@ -1789,31 +1826,51 @@
if (this.#allTabs) {
return this.#allTabs;
}
- let children = Array.from(this.arrowScrollbox.children);
- // Remove temporary periphery element added at drag start.
- let pinnedChildren = Array.from(this.pinnedTabsContainer.children);
- if (pinnedChildren?.at(-1)?.id == "pinned-tabs-container-periphery") {
- pinnedChildren.pop();
- }
- let unpinnedChildren = Array.from(this.arrowScrollbox.children);
- // remove arrowScrollbox periphery element.
- unpinnedChildren.pop();
-
+ let children = gZenWorkspaces.tabboxChildren;
// remove arrowScrollbox periphery element
children.pop();
+ children.pop();
// explode tab groups
// Iterate backwards over the array to preserve indices while we modify
// things in place
- for (let i = children.length - 1; i >= 0; i--) {
- if (children[i].tagName == "tab-group") {
- children.splice(i, 1, ...children[i].tabs);
- for (let i = unpinnedChildren.length - 1; i >= 0; i--) {
- if (unpinnedChildren[i].tagName == "tab-group") {
- unpinnedChildren.splice(i, 1, ...unpinnedChildren[i].tabs);
+ const pinnedTabs = [...gZenWorkspaces.getCurrentEssentialsContainer().children, ...this.pinnedTabsContainer.children];
+ const expandTabs = (tabs) => {
+ for (let i = tabs.length - 1; i >= 0; i--) {
@@ -218,7 +233,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..91e772ab0fed5be50e6dfee40eaa2488
}
}
-
- this.#allTabs = [...this.pinnedTabsContainer.children, ...children];
- this.#allTabs = [...pinnedChildren, ...unpinnedChildren];
+ expandTabs(pinnedTabs);
+ expandTabs(children);
+ const allTabs = [
@@ -246,24 +261,28 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..91e772ab0fed5be50e6dfee40eaa2488
}
get allGroups() {
let children = Array.from(this.arrowScrollbox.children);
- let children = Array.from(this.arrowScrollbox.children);
- return children.filter(node => node.tagName == "tab-group");
+ return gZenWorkspaces.allTabGroups;
}
/**
@@ -1745,32 +1804,27 @@
@@ -1880,29 +1937,23 @@
let elementIndex = 0;
- for (let i = 0; i < this.pinnedTabsContainer.childElementCount; i++) {
- this.pinnedTabsContainer.children[i].elementIndex = elementIndex++;
- }
- let children = Array.from(this.arrowScrollbox.children);
- let unpinnedChildren = Array.from(this.arrowScrollbox.children);
- let pinnedChildren = Array.from(this.pinnedTabsContainer.children);
+ let children = gZenWorkspaces.tabboxChildrenWithoutEmpty;
let focusableItems = [];
- for (let child of children) {
- for (let child of pinnedChildren) {
- if (isTab(child)) {
- child.elementIndex = elementIndex++;
- focusableItems.push(child);
- }
- }
- for (let child of unpinnedChildren) {
+ for (let child of [...gZenWorkspaces.getCurrentEssentialsContainer().children, ...this.pinnedTabsContainer.children, ...children]) {
if (isTab(child) && child.visible) {
child.elementIndex = elementIndex++;
@@ -276,25 +295,18 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..91e772ab0fed5be50e6dfee40eaa2488
- visibleTabsInGroup.forEach(tab => {
- tab.elementIndex = elementIndex++;
- });
- focusableItems.push(...visibleTabsInGroup);
+ if (!child.hasAttribute("split-view-group")) {
+ let visibleTabsInGroup = child.childGroupsAndTabs.filter(tab => tab.visible);
+ visibleTabsInGroup.forEach(tab => {
+ tab.elementIndex = elementIndex++;
+ });
focusableItems.push(...visibleTabsInGroup);
+ focusableItems.push(...visibleTabsInGroup);
+ }
}
}
- this.#focusableItems = [
- ...this.pinnedTabsContainer.children,
- ...focusableItems,
- ];
+ this.#focusableItems = focusableItems;
return this.#focusableItems;
}
@@ -1778,6 +1832,7 @@
@@ -1914,6 +1965,7 @@
_invalidateCachedTabs() {
this.#allTabs = null;
this._invalidateCachedVisibleTabs();
@@ -302,18 +314,18 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..91e772ab0fed5be50e6dfee40eaa2488
}
_invalidateCachedVisibleTabs() {
@@ -1793,8 +1848,8 @@
@@ -1929,8 +1981,8 @@
#isContainerVerticalPinnedGrid(tab) {
return (
this.verticalMode &&
- tab.hasAttribute("pinned") &&
- tab.pinned &&
- this.hasAttribute("expanded") &&
+ (tab.hasAttribute("zen-essential")) &&
+ (this.hasAttribute("expanded") || document.documentElement.hasAttribute("zen-sidebar-expanded")) &&
!this.expandOnHover
);
}
@@ -1810,7 +1865,7 @@
@@ -1946,7 +1998,7 @@
if (node == null) {
// We have a container for non-tab elements at the end of the scrollbox.
@@ -322,7 +334,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..91e772ab0fed5be50e6dfee40eaa2488
}
node.before(tab);
@@ -1905,7 +1960,7 @@
@@ -2041,7 +2093,7 @@
// There are separate "new tab" buttons for horizontal tabs toolbar, vertical tabs and
// for when the tab strip is overflowed (which is shared by vertical and horizontal tabs);
// Attach the long click popup to all of them.
@@ -331,20 +343,27 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..91e772ab0fed5be50e6dfee40eaa2488
const newTab2 = this.newTabButton;
const newTabVertical = document.getElementById(
"vertical-tabs-newtab-button"
@@ -2000,10 +2055,12 @@
@@ -2139,8 +2191,10 @@
*/
_handleTabSelect(aInstant) {
let selectedTab = this.selectedItem;
+ if (!selectedTab) return;
if (this.overflowing) {
this.arrowScrollbox.ensureElementIsVisible(selectedTab, aInstant);
}
this.#ensureTabIsVisible(selectedTab, aInstant);
+ gZenCompactModeManager.flashSidebarIfNecessary(aInstant);
selectedTab._notselectedsinceload = false;
}
@@ -2140,6 +2197,16 @@
@@ -2149,7 +2203,7 @@
* @param {boolean} [shouldScrollInstantly=false]
*/
#ensureTabIsVisible(tab, shouldScrollInstantly = false) {
- let arrowScrollbox = tab.closest("arrowscrollbox");
+ let arrowScrollbox = this.arrowScrollbox;
if (arrowScrollbox.overflowing) {
arrowScrollbox.ensureElementIsVisible(tab, shouldScrollInstantly);
}
@@ -2288,6 +2342,16 @@
when the tab is first selected to be dragged.
*/
#updateTabStylesOnDrag(tab) {
@@ -361,7 +380,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..91e772ab0fed5be50e6dfee40eaa2488
let isPinned = tab.pinned;
let numPinned = gBrowser.pinnedTabCount;
let allTabs = this.ariaFocusableItems;
@@ -2398,7 +2465,7 @@
@@ -2540,7 +2604,7 @@
return;
}
@@ -370,7 +389,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..91e772ab0fed5be50e6dfee40eaa2488
let directionX = screenX > dragData.animLastScreenX;
let directionY = screenY > dragData.animLastScreenY;
@@ -2407,6 +2474,8 @@
@@ -2549,6 +2613,8 @@
let { width: tabWidth, height: tabHeight } =
draggedTab.getBoundingClientRect();
@@ -379,7 +398,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..91e772ab0fed5be50e6dfee40eaa2488
let shiftSizeX = tabWidth * movingTabs.length;
let shiftSizeY = tabHeight;
dragData.tabWidth = tabWidth;
@@ -2443,8 +2512,8 @@
@@ -2585,8 +2651,8 @@
let lastBoundX =
lastTabInRow.screenX +
lastTabInRow.getBoundingClientRect().width -
@@ -390,18 +409,9 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..91e772ab0fed5be50e6dfee40eaa2488
translateX = Math.min(Math.max(translateX, firstBoundX), lastBoundX);
translateY = Math.min(Math.max(translateY, firstBoundY), lastBoundY);
@@ -2560,7 +2629,7 @@
}
@@ -2743,13 +2809,18 @@
dragData.animDropElementIndex = newIndex;
- dragData.dropElement = tabs[newIndex];
+ dragData.dropElement = tabs[Math.min(newIndex, tabs.length - 1)];
dragData.dropBefore = newIndex < tabs.length;
// Shift background tabs to leave a gap where the dragged tab
@@ -2593,13 +2662,18 @@
this.#clearDragOverCreateGroupTimer();
this.#clearDragOverGroupingTimer();
- let isPinned = draggedTab.pinned;
- let numPinned = gBrowser.pinnedTabCount;
@@ -422,23 +432,17 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..91e772ab0fed5be50e6dfee40eaa2488
if (this.#rtlMode) {
tabs.reverse();
@@ -2610,7 +2684,7 @@
@@ -2760,7 +2831,7 @@
let screenAxis = this.verticalMode ? "screenY" : "screenX";
let size = this.verticalMode ? "height" : "width";
let translateAxis = this.verticalMode ? "translateY" : "translateX";
- let { width: tabWidth, height: tabHeight } = bounds(draggedTab);
+ let { width: tabWidth, height: tabHeight } = bounds(draggedTab.group?.hasAttribute("split-view-group") ? draggedTab.group : draggedTab);
let tabSize = this.verticalMode ? tabHeight : tabWidth;
let translateX = event.screenX - dragData.screenX;
let translateY = event.screenY - dragData.screenY;
@@ -2620,10 +2694,16 @@
dragData.translateY = translateY;
// Move the dragged tab based on the mouse position.
- let firstTab = allTabs.at(this.#rtlMode ? -1 : 0);
- let lastTab = allTabs.at(this.#rtlMode ? 0 : -1);
+ let firstTab = tabs.at(this.#rtlMode ? -1 : 0);
+ let lastTab = tabs.at(this.#rtlMode ? 0 : -1);
@@ -2776,6 +2847,12 @@
);
let lastMovingTab = movingTabs.at(-1);
let firstMovingTab = movingTabs[0];
+ if (lastMovingTab.group?.hasAttribute("split-view-group")) {
@@ -450,35 +454,19 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..91e772ab0fed5be50e6dfee40eaa2488
let endEdge = ele => ele[screenAxis] + bounds(ele)[size];
let lastMovingTabScreen = endEdge(lastMovingTab);
let firstMovingTabScreen = firstMovingTab[screenAxis];
@@ -2632,6 +2712,7 @@
// Constrain the range over which the moving tabs can move between the first and last tab
let firstBound = firstTab[screenAxis] - firstMovingTabScreen;
let lastBound = endEdge(lastTab) - lastMovingTabScreen;
+ lastBound = gZenPinnedTabManager.getLastTabBound(lastBound, lastTab, isDraggingFolder);
@@ -2790,6 +2867,11 @@
let endBound = this.#rtlMode
? endEdge(this) - lastMovingTabScreen
: periphery[screenAxis] - 1 - lastMovingTabScreen;
+ let firstTab = tabs.at(this.#rtlMode ? -1 : 0);
+ let lastTab = tabs.at(this.#rtlMode ? 0 : -1);
+ startBound = firstTab[screenAxis] - firstMovingTabScreen;
+ endBound = endEdge(lastTab) - lastMovingTabScreen;
+ endBound = gZenPinnedTabManager.getLastTabBound(endBound, lastTab, isDraggingFolder);
translate = Math.min(Math.max(translate, startBound), endBound);
// Center the tab under the cursor if the tab is not under the cursor while dragging
if (
@@ -2649,6 +2730,9 @@
// Shift the `.tab-group-label-container` to shift the label element.
item = item.parentElement;
}
+ if (item.parentElement?.hasAttribute("split-view-group")) {
+ item = item.parentElement;
+ }
item.style.transform = `${translateAxis}(${translate}px)`;
}
@@ -2786,6 +2870,9 @@
break;
}
let element = tabs[mid];
+ if (element?.group?.hasAttribute("split-view-group")) {
+ element = element.group.labelElement;
+ }
let elementForSize = isTabGroupLabel(element)
? element.parentElement
: element;
@@ -2805,6 +2892,8 @@
@@ -2979,6 +3061,8 @@
};
let dropElement = getOverlappedElement();
@@ -487,19 +475,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..91e772ab0fed5be50e6dfee40eaa2488
let newDropElementIndex;
if (dropElement) {
@@ -2869,7 +2958,10 @@
let shouldCreateGroupOnDrop;
let dropBefore;
if (dropElement) {
- let dropElementForOverlap = isTabGroupLabel(dropElement)
+ if (dropElement?.group?.hasAttribute("split-view-group") || dropElement.hasAttribute("split-view-group")) {
+ dropElement = dropElement.group.labelElement ?? dropElement.labelElement;
+ }
+ let dropElementForOverlap = isTabGroupLabel(dropElement) && !dropElement.group?.hasAttribute("split-view-group")
? dropElement.parentElement
: dropElement;
@@ -2889,7 +2981,7 @@
@@ -3060,7 +3144,7 @@
? Services.prefs.getIntPref(
"browser.tabs.dragDrop.moveOverThresholdPercent"
) / 100
@@ -508,30 +484,15 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..91e772ab0fed5be50e6dfee40eaa2488
moveOverThreshold = Math.min(1, Math.max(0, moveOverThreshold));
let shouldMoveOver = overlapPercent > moveOverThreshold;
if (logicalForward && shouldMoveOver) {
@@ -2921,44 +3013,21 @@
@@ -3093,6 +3177,7 @@
// If dragging a group over another group, don't make it look like it is
// possible to drop the dragged group inside the other group.
- if (
- isTabGroupLabel(draggedTab) &&
- dropElement?.group &&
- !dropElement.group.collapsed
- ) {
- let overlappedGroup = dropElement.group;
-
- if (isTabGroupLabel(dropElement)) {
- dropBefore = true;
- newDropElementIndex = dropElement.elementIndex;
- } else {
- dropBefore = false;
- newDropElementIndex = overlappedGroup.tabs.at(-1).elementIndex + 1;
- }
-
- dropElement = overlappedGroup;
- }
// Constrain drop direction at the boundary between pinned and
// unpinned tabs so that they don't mix together.
if (
+ false &&
isTabGroupLabel(draggedTab) &&
dropElement?.group &&
(!dropElement.group.collapsed ||
@@ -3119,20 +3204,13 @@
let isOutOfBounds = isPinned
? dropElement.elementIndex >= numPinned
: dropElement.elementIndex < numPinned;
@@ -550,28 +511,29 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..91e772ab0fed5be50e6dfee40eaa2488
- ) {
+ if (isTab(draggedTab) || isTabGroupLabel(draggedTab)) {
let dragOverGroupingThreshold = 1 - moveOverThreshold;
+ if (draggedTab && !dropElement?.group) {
+ gZenFolders.highlightGroupOnDragOver(null);
+ }
+
let groupingDelay = Services.prefs.getIntPref(
"browser.tabs.dragDrop.createGroup.delayMS"
);
@@ -3140,6 +3218,7 @@
// When dragging tab(s) over an ungrouped tab, signal to the user
// that dropping the tab(s) will create a new tab group.
shouldCreateGroupOnDrop =
@@ -2968,12 +3037,6 @@
let shouldCreateGroupOnDrop =
+ false &&
!movingTabsSet.has(dropElement) &&
isTab(dropElement) &&
!dropElement?.group &&
@@ -3148,6 +3227,7 @@
// When dragging tab(s) over a collapsed tab group label, signal to the
// user that dropping the tab(s) will add them to the group.
let shouldDropIntoCollapsedTabGroup =
+ false &&
isTabGroupLabel(dropElement) &&
dropElement.group.collapsed &&
overlapPercent > dragOverGroupingThreshold;
if (shouldCreateGroupOnDrop) {
- this.#dragOverCreateGroupTimer = setTimeout(
- () => this.#triggerDragOverCreateGroup(dragData, dropElement),
- Services.prefs.getIntPref(
- "browser.tabs.dragDrop.createGroup.delayMS"
- )
- );
} else {
this.removeAttribute("movingtab-createGroup");
document
@@ -3000,19 +3063,14 @@
@@ -3192,19 +3272,14 @@
dropElement = dropElementGroup;
colorCode = undefined;
} else if (isTabGroupLabel(dropElement)) {
@@ -598,8 +560,8 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..91e772ab0fed5be50e6dfee40eaa2488
+ ));
}
this.#setDragOverGroupColor(colorCode);
this.toggleAttribute("movingtab-ungroup", !colorCode);
@@ -3030,19 +3088,28 @@
this.toggleAttribute("movingtab-addToGroup", colorCode);
@@ -3223,11 +3298,11 @@
dragData.dropElement = dropElement;
dragData.dropBefore = dropBefore;
dragData.animDropElementIndex = newDropElementIndex;
@@ -613,25 +575,8 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..91e772ab0fed5be50e6dfee40eaa2488
continue;
}
let shift = getTabShift(item, newDropElementIndex);
let transform = shift ? `${translateAxis}(${shift}px)` : "";
+ if (item.group?.hasAttribute("split-view-group")) {
+ item = item.group;
+ }
+ if (item.group?.hasAttribute("has-active") && draggedTab.group != item.group) {
+ item = item.group;
+ }
if (isTabGroupLabel(item)) {
// Shift the `.tab-group-label-container` to shift the label element.
item = item.parentElement;
+ if (item.parentElement?.hasAttribute("split-view-group")) {
+ item = item.parentElement;
+ }
}
item.style.transform = transform;
}
@@ -3095,12 +3162,14 @@
);
@@ -3346,12 +3421,14 @@
element?.removeAttribute("dragover-groupTarget");
}
- finishAnimateTabMove() {
@@ -646,27 +591,8 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..91e772ab0fed5be50e6dfee40eaa2488
+ gZenFolders.highlightGroupOnDragOver(null);
for (let item of this.ariaFocusableItems) {
if (isTabGroupLabel(item)) {
@@ -3108,6 +3177,18 @@
item = item.parentElement;
}
item.style.transform = "";
+ if (item.closest("zen-folder")?.hasAttribute("has-active")) item.closest("zen-folder").style.transform = "";
+ if (item.closest("zen-folder")?.hasAttribute("has-active")) {
+ for (let tab of item.closest("zen-folder").tabs) {
+ tab.style.transform = "";
+ }
+ }
+ if (item.closest("tab-group")?.hasAttribute("split-view-group")) item.closest("tab-group").style.transform = "";
+ if (item.closest("tab-group")?.hasAttribute("split-view-group")) {
+ for (let tab of item.closest("tab-group").tabs) {
+ tab.style.transform = "";
+ }
+ }
item.removeAttribute("dragover-createGroup");
}
this.removeAttribute("movingtab-createGroup");
@@ -3129,16 +3210,15 @@
this.#resetGroupTarget(item);
@@ -3394,7 +3471,7 @@
tab.style.left = "";
tab.style.top = "";
tab.style.maxWidth = "";
@@ -675,9 +601,8 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..91e772ab0fed5be50e6dfee40eaa2488
}
for (let label of draggedTabDocument.getElementsByClassName(
"tab-group-label-container"
)) {
label.style.width = "";
- label.style.height = "";
@@ -3403,7 +3480,7 @@
label.style.height = "";
label.style.left = "";
label.style.top = "";
- label.removeAttribute("dragtarget");
@@ -685,7 +610,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..91e772ab0fed5be50e6dfee40eaa2488
}
let periphery = draggedTabDocument.getElementById(
"tabbrowser-arrowscrollbox-periphery"
@@ -3211,7 +3291,7 @@
@@ -3475,7 +3552,7 @@
let postTransitionCleanup = () => {
movingTab._moveTogetherSelectedTabsData.animate = false;
};
@@ -694,7 +619,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..91e772ab0fed5be50e6dfee40eaa2488
postTransitionCleanup();
} else {
let onTransitionEnd = transitionendEvent => {
@@ -3384,7 +3464,7 @@
@@ -3639,7 +3716,7 @@
}
_notifyBackgroundTab(aTab) {
@@ -703,7 +628,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..91e772ab0fed5be50e6dfee40eaa2488
return;
}
@@ -3493,7 +3573,10 @@
@@ -3748,7 +3825,10 @@
#getDragTarget(event, { ignoreSides = false } = {}) {
let { target } = event;
while (target) {
@@ -715,7 +640,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..91e772ab0fed5be50e6dfee40eaa2488
break;
}
target = target.parentNode;
@@ -3510,6 +3593,9 @@
@@ -3765,6 +3845,9 @@
return null;
}
}

View File

@@ -1,13 +1,13 @@
diff --git a/browser/components/urlbar/UrlbarController.sys.mjs b/browser/components/urlbar/UrlbarController.sys.mjs
index 4f85be7203f44c16944924d50947a89e436f00bc..518956c320af4e7045e8ff9fe63b70f8c2430b22 100644
index 36e3ab4a5a153230bb488b66dda7e3e7c763ca23..28b59c7c3a95febafc3f2a6e0ac3493b9785ff1a 100644
--- a/browser/components/urlbar/UrlbarController.sys.mjs
+++ b/browser/components/urlbar/UrlbarController.sys.mjs
@@ -410,7 +410,7 @@ export class UrlbarController {
@@ -411,7 +411,7 @@ export class UrlbarController {
// When there's no search string and no view selection, we want to focus
// the next toolbar item instead, for accessibility reasons.
let allowTabbingThroughResults =
- this.input.focusedViaMousedown ||
+ true ||
this.input.searchMode?.isPreview ||
this.view.selectedElement ||
(this.input.value &&
this.input.searchMode?.source ==
lazy.UrlbarUtils.RESULT_SOURCE.ACTIONS ||

View File

@@ -1,9 +1,9 @@
diff --git a/browser/components/urlbar/UrlbarInput.sys.mjs b/browser/components/urlbar/UrlbarInput.sys.mjs
index db1a780f36d16c1b63ad50af76887b16e88ca8fe..440ef03a7a43d6848c371fbe0cac62cfca59af8e 100644
index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..5becdf9c01b1f12356963ce214142c492ade5f6e 100644
--- a/browser/components/urlbar/UrlbarInput.sys.mjs
+++ b/browser/components/urlbar/UrlbarInput.sys.mjs
@@ -68,6 +68,13 @@ XPCOMUtils.defineLazyPreferenceGetter(
false
@@ -74,6 +74,13 @@ ChromeUtils.defineLazyGetter(lazy, "logger", () =>
lazy.UrlbarUtils.getLogger({ prefix: "Input" })
);
+XPCOMUtils.defineLazyPreferenceGetter(
@@ -14,9 +14,9 @@ index db1a780f36d16c1b63ad50af76887b16e88ca8fe..440ef03a7a43d6848c371fbe0cac62cf
+);
+
const DEFAULT_FORM_HISTORY_NAME = "searchbar-history";
const SEARCH_BUTTON_CLASS = "urlbar-search-button";
@@ -380,7 +387,16 @@ export class UrlbarInput {
const UNLIMITED_MAX_RESULTS = 99;
@@ -355,7 +362,16 @@ export class UrlbarInput {
// See _on_select(). HTMLInputElement.select() dispatches a "select"
// event but does not set the primary selection.
this._suppressPrimaryAdjustment = true;
@@ -33,7 +33,7 @@ index db1a780f36d16c1b63ad50af76887b16e88ca8fe..440ef03a7a43d6848c371fbe0cac62cf
this._suppressPrimaryAdjustment = false;
}
@@ -456,6 +472,10 @@ export class UrlbarInput {
@@ -431,6 +447,10 @@ export class UrlbarInput {
hideSearchTerms = false,
isSameDocument = false
) {
@@ -44,7 +44,7 @@ index db1a780f36d16c1b63ad50af76887b16e88ca8fe..440ef03a7a43d6848c371fbe0cac62cf
// We only need to update the searchModeUI on tab switch conditionally
// as we only persist searchMode with ScotchBonnet enabled.
if (
@@ -728,8 +748,16 @@ export class UrlbarInput {
@@ -703,8 +723,16 @@ export class UrlbarInput {
return;
}
}
@@ -62,7 +62,7 @@ index db1a780f36d16c1b63ad50af76887b16e88ca8fe..440ef03a7a43d6848c371fbe0cac62cf
}
/**
@@ -1143,7 +1171,11 @@ export class UrlbarInput {
@@ -1116,7 +1144,11 @@ export class UrlbarInput {
}
if (!this.#providesSearchMode(result)) {
@@ -75,7 +75,7 @@ index db1a780f36d16c1b63ad50af76887b16e88ca8fe..440ef03a7a43d6848c371fbe0cac62cf
}
if (isCanonized) {
@@ -2208,6 +2240,10 @@ export class UrlbarInput {
@@ -2191,6 +2223,10 @@ export class UrlbarInput {
await this.#updateLayoutBreakoutDimensions();
}
@@ -86,7 +86,7 @@ index db1a780f36d16c1b63ad50af76887b16e88ca8fe..440ef03a7a43d6848c371fbe0cac62cf
startLayoutExtend() {
if (!this.#allowBreakout || this.hasAttribute("breakout-extend")) {
// Do not expand if the Urlbar does not support being expanded or it is
@@ -2222,6 +2258,12 @@ export class UrlbarInput {
@@ -2205,6 +2241,12 @@ export class UrlbarInput {
this.setAttribute("breakout-extend", "true");
@@ -99,7 +99,7 @@ index db1a780f36d16c1b63ad50af76887b16e88ca8fe..440ef03a7a43d6848c371fbe0cac62cf
// Enable the animation only after the first extend call to ensure it
// doesn't run when opening a new window.
if (!this.hasAttribute("breakout-extend-animate")) {
@@ -2241,6 +2283,24 @@ export class UrlbarInput {
@@ -2224,6 +2266,24 @@ export class UrlbarInput {
return;
}
@@ -124,7 +124,7 @@ index db1a780f36d16c1b63ad50af76887b16e88ca8fe..440ef03a7a43d6848c371fbe0cac62cf
this.removeAttribute("breakout-extend");
this.#updateTextboxPosition();
}
@@ -2561,6 +2621,7 @@ export class UrlbarInput {
@@ -2544,6 +2604,7 @@ export class UrlbarInput {
let updateKey = {};
this._layoutBreakoutUpdateKey = updateKey;
@@ -132,7 +132,7 @@ index db1a780f36d16c1b63ad50af76887b16e88ca8fe..440ef03a7a43d6848c371fbe0cac62cf
await this.window.promiseDocumentFlushed(() => {});
await new Promise(resolve => {
this.window.requestAnimationFrame(() => {
@@ -2570,7 +2631,7 @@ export class UrlbarInput {
@@ -2553,7 +2614,7 @@ export class UrlbarInput {
this.textbox.parentNode.style.setProperty(
"--urlbar-container-height",
@@ -141,7 +141,7 @@ index db1a780f36d16c1b63ad50af76887b16e88ca8fe..440ef03a7a43d6848c371fbe0cac62cf
);
this.textbox.style.setProperty(
"--urlbar-height",
@@ -2586,6 +2647,7 @@ export class UrlbarInput {
@@ -2569,6 +2630,7 @@ export class UrlbarInput {
this.textbox.showPopover();
this.#updateTextboxPosition();
@@ -149,7 +149,7 @@ index db1a780f36d16c1b63ad50af76887b16e88ca8fe..440ef03a7a43d6848c371fbe0cac62cf
resolve();
});
});
@@ -2985,6 +3047,7 @@ export class UrlbarInput {
@@ -2986,6 +3048,7 @@ export class UrlbarInput {
}
_toggleActionOverride(event) {
@@ -157,7 +157,7 @@ index db1a780f36d16c1b63ad50af76887b16e88ca8fe..440ef03a7a43d6848c371fbe0cac62cf
if (
event.keyCode == KeyEvent.DOM_VK_SHIFT ||
event.keyCode == KeyEvent.DOM_VK_ALT ||
@@ -3086,7 +3149,7 @@ export class UrlbarInput {
@@ -3087,7 +3150,7 @@ export class UrlbarInput {
*/
_trimValue(val) {
let trimmedValue = lazy.UrlbarPrefs.get("trimURLs")
@@ -166,7 +166,7 @@ index db1a780f36d16c1b63ad50af76887b16e88ca8fe..440ef03a7a43d6848c371fbe0cac62cf
: val;
// Only trim value if the directionality doesn't change to RTL and we're not
// showing a strikeout https protocol.
@@ -3307,6 +3370,7 @@ export class UrlbarInput {
@@ -3303,6 +3366,7 @@ export class UrlbarInput {
resultDetails = null,
browser = this.window.gBrowser.selectedBrowser
) {
@@ -174,7 +174,7 @@ index db1a780f36d16c1b63ad50af76887b16e88ca8fe..440ef03a7a43d6848c371fbe0cac62cf
// No point in setting these because we'll handleRevert() a few rows below.
if (openUILinkWhere == "current") {
// Make sure URL is formatted properly (don't show punycode).
@@ -3459,6 +3523,10 @@ export class UrlbarInput {
@@ -3455,6 +3519,10 @@ export class UrlbarInput {
}
reuseEmpty = true;
}
@@ -185,7 +185,7 @@ index db1a780f36d16c1b63ad50af76887b16e88ca8fe..440ef03a7a43d6848c371fbe0cac62cf
if (
where == "tab" &&
reuseEmpty &&
@@ -3466,6 +3534,9 @@ export class UrlbarInput {
@@ -3462,6 +3530,9 @@ export class UrlbarInput {
) {
where = "current";
}
@@ -195,7 +195,7 @@ index db1a780f36d16c1b63ad50af76887b16e88ca8fe..440ef03a7a43d6848c371fbe0cac62cf
return where;
}
@@ -3723,6 +3794,7 @@ export class UrlbarInput {
@@ -3719,6 +3790,7 @@ export class UrlbarInput {
this.setResultForCurrentValue(null);
this.handleCommand();
this.controller.clearLastQueryContextCache();
@@ -203,7 +203,7 @@ index db1a780f36d16c1b63ad50af76887b16e88ca8fe..440ef03a7a43d6848c371fbe0cac62cf
this._suppressStartQuery = false;
});
@@ -3730,7 +3802,6 @@ export class UrlbarInput {
@@ -3726,7 +3798,6 @@ export class UrlbarInput {
contextMenu.addEventListener("popupshowing", () => {
// Close the results pane when the input field contextual menu is open,
// because paste and go doesn't want a result selection.
@@ -211,7 +211,7 @@ index db1a780f36d16c1b63ad50af76887b16e88ca8fe..440ef03a7a43d6848c371fbe0cac62cf
let controller =
this.document.commandDispatcher.getControllerForCommand("cmd_paste");
@@ -4138,6 +4209,7 @@ export class UrlbarInput {
@@ -4130,6 +4201,7 @@ export class UrlbarInput {
this.document.l10n.setAttributes(
this.inputField,
@@ -219,7 +219,7 @@ index db1a780f36d16c1b63ad50af76887b16e88ca8fe..440ef03a7a43d6848c371fbe0cac62cf
l10nId,
l10nId == "urlbar-placeholder-with-name" ? { name } : undefined
);
@@ -4249,6 +4321,11 @@ export class UrlbarInput {
@@ -4241,6 +4313,11 @@ export class UrlbarInput {
}
_on_click(event) {
@@ -230,8 +230,8 @@ index db1a780f36d16c1b63ad50af76887b16e88ca8fe..440ef03a7a43d6848c371fbe0cac62cf
+
if (
event.target == this.inputField ||
event.target == this._inputContainer ||
@@ -4320,7 +4397,7 @@ export class UrlbarInput {
event.target == this._inputContainer
@@ -4311,7 +4388,7 @@ export class UrlbarInput {
}
}
@@ -240,7 +240,7 @@ index db1a780f36d16c1b63ad50af76887b16e88ca8fe..440ef03a7a43d6848c371fbe0cac62cf
this.view.autoOpen({ event });
} else {
if (this._untrimOnFocusAfterKeydown) {
@@ -4360,9 +4437,16 @@ export class UrlbarInput {
@@ -4351,9 +4428,16 @@ export class UrlbarInput {
}
_on_mousedown(event) {
@@ -258,7 +258,7 @@ index db1a780f36d16c1b63ad50af76887b16e88ca8fe..440ef03a7a43d6848c371fbe0cac62cf
if (
event.target != this.inputField &&
@@ -4374,6 +4458,10 @@ export class UrlbarInput {
@@ -4364,6 +4448,10 @@ export class UrlbarInput {
this.focusedViaMousedown = !this.focused;
this._preventClickSelectsAll = this.focused;
@@ -269,7 +269,7 @@ index db1a780f36d16c1b63ad50af76887b16e88ca8fe..440ef03a7a43d6848c371fbe0cac62cf
// Keep the focus status, since the attribute may be changed
// upon calling this.focus().
@@ -4414,7 +4502,7 @@ export class UrlbarInput {
@@ -4399,7 +4487,7 @@ export class UrlbarInput {
}
// Don't close the view when clicking on a tab; we may want to keep the
// view open on tab switch, and the TabSelect event arrived earlier.

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/urlbar/UrlbarMuxerStandard.sys.mjs b/browser/components/urlbar/UrlbarMuxerStandard.sys.mjs
index 57463d2c4e39e67eeec7e2c752fe5236a662c7d2..4ca28540a71594e935847679a4b676ae48eb10d8 100644
index cdc476a3eb2ee2cb6193d215513b65ed375f6153..a2b106916d6cca25096d37b80bea45f016ad82a5 100644
--- a/browser/components/urlbar/UrlbarMuxerStandard.sys.mjs
+++ b/browser/components/urlbar/UrlbarMuxerStandard.sys.mjs
@@ -845,6 +845,7 @@ class MuxerUnifiedComplete extends UrlbarMuxer {
@@ -855,6 +855,7 @@ class MuxerUnifiedComplete extends UrlbarMuxer {
}
if (result.providerName == lazy.UrlbarProviderTabToSearch.name) {

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/urlbar/UrlbarView.sys.mjs b/browser/components/urlbar/UrlbarView.sys.mjs
index b3608bb8b851979b893da9c83e86d08b54288047..97ffb0b855b1f1c3fe5c4081aa1ec03ceda82b05 100644
index fdbab8806fd320f4aacec46a42c8ef953580d00c..a1be83735cd2b69d335cd36d3287cd3b3e3f2a5b 100644
--- a/browser/components/urlbar/UrlbarView.sys.mjs
+++ b/browser/components/urlbar/UrlbarView.sys.mjs
@@ -609,7 +609,7 @@ export class UrlbarView {
@@ -613,7 +613,7 @@ export class UrlbarView {
!this.input.value ||
this.input.getAttribute("pageproxystate") == "valid"
) {
@@ -11,7 +11,7 @@ index b3608bb8b851979b893da9c83e86d08b54288047..97ffb0b855b1f1c3fe5c4081aa1ec03c
// Try to reuse the cached top-sites context. If it's not cached, then
// there will be a gap of time between when the input is focused and
// when the view opens that can be perceived as flicker.
@@ -1333,7 +1333,7 @@ export class UrlbarView {
@@ -1341,7 +1341,7 @@ export class UrlbarView {
includeHiddenExposures: true,
});
let canBeVisible =
@@ -20,7 +20,7 @@ index b3608bb8b851979b893da9c83e86d08b54288047..97ffb0b855b1f1c3fe5c4081aa1ec03c
if (result.isHiddenExposure) {
if (canBeVisible) {
this.controller.engagementEvent.addExposure(
@@ -3061,7 +3061,7 @@ export class UrlbarView {
@@ -3189,7 +3189,7 @@ export class UrlbarView {
}
#enableOrDisableRowWrap() {

View File

@@ -1,8 +1,8 @@
diff --git a/browser/extensions/newtab/lib/ActivityStream.sys.mjs b/browser/extensions/newtab/lib/ActivityStream.sys.mjs
index f4eca54a9638072a03b4c0e406fe14388b85db61..7f0c5f724558bdb004114f2a6bea266c94facdf9 100644
index 1a482b6de24468ccfec069586f374937d8ef68dd..8614beda3fdfc038092f31f11b2604d5cfb843a1 100644
--- a/browser/extensions/newtab/lib/ActivityStream.sys.mjs
+++ b/browser/extensions/newtab/lib/ActivityStream.sys.mjs
@@ -260,7 +260,7 @@ export const PREFS_CONFIG = new Map([
@@ -248,7 +248,7 @@ export const PREFS_CONFIG = new Map([
"showSponsoredTopSites",
{
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
index 861ba1c484a4688857a3025455532ea9551b616a..570ac5122f50275d40e4deeeda0caeb577ee1bfd 100644
index 70f268914f1078ef45e86d295f4bb2ce179a05e0..73d8ffc4457468e8a57ad2c29e4d49f45436bf00 100644
--- a/browser/installer/package-manifest.in
+++ b/browser/installer/package-manifest.in
@@ -384,17 +384,17 @@ bin/libfreebl_64int_3.so
@@ -361,17 +361,17 @@ bin/libfreebl_64int_3.so
; [MaintenanceService]
;
#ifdef MOZ_MAINTENANCE_SERVICE

View File

@@ -1,5 +1,5 @@
diff --git a/browser/installer/windows/nsis/defines.nsi.in b/browser/installer/windows/nsis/defines.nsi.in
index eb9e403c36510bfda09eb84b8a35dff731279f5d..939d34dff255122947bf3eeabc9087685f101568 100644
index f78af1e3634dd503089ff8bdab5adba614a87892..4a19de8e89efadf2456011e2da2907a1135fe766 100644
--- a/browser/installer/windows/nsis/defines.nsi.in
+++ b/browser/installer/windows/nsis/defines.nsi.in
@@ -90,7 +90,7 @@
@@ -11,7 +11,7 @@ index eb9e403c36510bfda09eb84b8a35dff731279f5d..939d34dff255122947bf3eeabc908768
# ARCH is used when it is necessary to differentiate the x64 registry keys from
# the x86 registry keys (e.g. the uninstall registry key).
@@ -148,7 +148,7 @@ VIAddVersionKey "ProductVersion" "${AppVersion}"
@@ -154,7 +154,7 @@ VIAddVersionKey "ProductVersion" "${AppVersion}"
!define APPROXIMATE_REQUIRED_SPACE_MB "145"
# Constants for parts of the telemetry submission URL

View File

@@ -1,8 +1,8 @@
diff --git a/browser/installer/windows/nsis/installer.nsi b/browser/installer/windows/nsis/installer.nsi
index 491bcbbd8430410fa930e7b52491ea62f2c48bbc..42d960f4adb4837009e0106a137c14fcbd7a55f9 100755
index 92eb3f11ea8035ce72eb5b1e110c98b1ef8665d1..e6b91ecfa8f16d2b884c70468ec1d3a0197351d1 100755
--- a/browser/installer/windows/nsis/installer.nsi
+++ b/browser/installer/windows/nsis/installer.nsi
@@ -837,7 +837,7 @@ Section "-InstallEndCleanup"
@@ -841,7 +841,7 @@ Section "-InstallEndCleanup"
; When we're using the GUI, .onGUIEnd sends the ping, but of course that isn't
; invoked when we're running silently.
${If} ${Silent}
@@ -11,7 +11,7 @@ index 491bcbbd8430410fa930e7b52491ea62f2c48bbc..42d960f4adb4837009e0106a137c14fc
${EndIf}
SectionEnd
@@ -1965,5 +1965,5 @@ FunctionEnd
@@ -1969,5 +1969,5 @@ FunctionEnd
Function .onGUIEnd
${OnEndCommon}

View File

@@ -1,8 +1,8 @@
diff --git a/browser/modules/ExtensionsUI.sys.mjs b/browser/modules/ExtensionsUI.sys.mjs
index 3302b1e9a66c8495e1a627b33488b952e8ef72b1..1de6ee8b59595da4acbb91bc625cd380be32845a 100644
index 17cad7b3fbdd6dff862483892f37f72c00792c88..72d87d70182abfbf664b1dc86f4b4a3ecb2b1d01 100644
--- a/browser/modules/ExtensionsUI.sys.mjs
+++ b/browser/modules/ExtensionsUI.sys.mjs
@@ -466,7 +466,7 @@ export var ExtensionsUI = {
@@ -478,7 +478,7 @@ export var ExtensionsUI = {
eventCallback,
removeOnDismissal: true,
popupOptions: {

View File

@@ -1,8 +1,8 @@
diff --git a/browser/modules/URILoadingHelper.sys.mjs b/browser/modules/URILoadingHelper.sys.mjs
index ce594b69f55f9b9245a56fe8c962cf8a83cfe9a1..f3b99524f49f5a624c2fc213257a911862cd70c2 100644
index f7a3e8272f1f22286a26bf50d78b23aa82b49df8..a690732012331dfc40cc08fef4453c28c6587a24 100644
--- a/browser/modules/URILoadingHelper.sys.mjs
+++ b/browser/modules/URILoadingHelper.sys.mjs
@@ -516,7 +516,7 @@ export const URILoadingHelper = {
@@ -541,7 +541,7 @@ export const URILoadingHelper = {
// page. If a load request bounces off for the currently selected tab,
// we'll open a new tab instead.
let tab = w.gBrowser.getTabForBrowser(targetBrowser);
@@ -11,3 +11,21 @@ index ce594b69f55f9b9245a56fe8c962cf8a83cfe9a1..f3b99524f49f5a624c2fc213257a9118
where = "tab";
targetBrowser = null;
} else if (
@@ -971,7 +971,7 @@ export const URILoadingHelper = {
ignoreQueryString || replaceQueryString,
ignoreFragmentWhenComparing
);
- let browsers = aWindow.gBrowser.browsers;
+ let browsers = aWindow.gZenWorkspaces.allUsedBrowsers;
for (let i = 0; i < browsers.length; i++) {
let browser = browsers[i];
let browserCompare = cleanURL(
@@ -1017,7 +1017,7 @@ export const URILoadingHelper = {
}
if (!doAdopt) {
- aWindow.gBrowser.tabContainer.selectedIndex = i;
+ aWindow.gZenWorkspaces.switchIfNeeded(browser);
}
return true;

View File

@@ -1,5 +1,5 @@
diff --git a/browser/themes/linux/browser.css b/browser/themes/linux/browser.css
index dadb198cbf968dc622d2d0ee6c754f3541c052a2..ef8ed137443a089e5ac084bb8f86533ddd2086a1 100644
index 9723a8199cc5b8d25bb92c46992792b8c94a3565..3496c3ae4bacf39b788f1b0f740e89cdd9d7de5b 100644
--- a/browser/themes/linux/browser.css
+++ b/browser/themes/linux/browser.css
@@ -43,7 +43,8 @@

View File

@@ -1,5 +1,5 @@
diff --git a/browser/themes/osx/browser.css b/browser/themes/osx/browser.css
index 9bea393a6a54db16d3f35bb70d217563bd2e3951..6487baeaacd9ff175be51747ea637e81b68a51ee 100644
index c209151370225d8efade7c51aea30ce7365e5f4f..4dd5cf4a98ea010b2d347ac0ba7314ae81320e75 100644
--- a/browser/themes/osx/browser.css
+++ b/browser/themes/osx/browser.css
@@ -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
index 7fcb1d906c3aaec3e6b099ae731267c2b9d0b96a..ea8e0f510b09faaed0955e9974a2d9f285a52649 100644
index c612e7d021122e3e4823994071cd613563d3e12e..682d7a47624460ce33e8fcb5ff9c995f3413bab2 100644
--- a/browser/themes/shared/browser-shared.css
+++ b/browser/themes/shared/browser-shared.css
@@ -78,7 +78,7 @@ body {
@@ -99,7 +99,7 @@ body {
--toolbarbutton-border-radius: 4px;
--identity-box-margin-inline: 4px;
--urlbar-min-height: max(32px, 1.4em);
@@ -11,7 +11,7 @@ index 7fcb1d906c3aaec3e6b099ae731267c2b9d0b96a..ea8e0f510b09faaed0955e9974a2d9f2
/* 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 */
@@ -148,8 +148,6 @@ body {
@@ -167,8 +167,6 @@ body {
*/
&.fullscreen-with-menubar {
z-index: var(--browser-area-z-index-toolbox-while-animating);

View File

@@ -1,8 +1,8 @@
diff --git a/browser/themes/shared/identity-block/identity-block.css b/browser/themes/shared/identity-block/identity-block.css
index 13b1659ed5a3b9bb0342b601998d0fd5c9760e22..4f13c401f23f51962986fe8caf197aa5306fc276 100644
index 8edca63dc52ec207475ed9965559d28c06e27971..884343473857c6b6256922d47085fac6eabe74fb 100644
--- a/browser/themes/shared/identity-block/identity-block.css
+++ b/browser/themes/shared/identity-block/identity-block.css
@@ -81,7 +81,7 @@
@@ -83,7 +83,7 @@
#identity-box[pageproxystate="valid"]:is(.notSecureText, .chromeUI, .extensionPage) > .identity-box-button,
#urlbar-label-box {
@@ -11,7 +11,7 @@ index 13b1659ed5a3b9bb0342b601998d0fd5c9760e22..4f13c401f23f51962986fe8caf197aa5
color: var(--urlbar-box-text-color);
padding-inline: 8px;
border-radius: var(--urlbar-icon-border-radius);
@@ -175,16 +175,17 @@
@@ -178,16 +178,17 @@
}
#identity-icon {

View File

@@ -1,11 +1,11 @@
diff --git a/browser/themes/shared/jar.inc.mn b/browser/themes/shared/jar.inc.mn
index c2bebf7e96a1d7a36c5e3168cf65504361da821b..5f55741b2a467341f93f648c5f084f863a6de32c 100644
index bc47c162cd4792c7df17565014aac1c2258c6d40..21c0b7ddb04cbb828c758dad34885f91c1ddde6c 100644
--- a/browser/themes/shared/jar.inc.mn
+++ b/browser/themes/shared/jar.inc.mn
@@ -290,3 +290,5 @@
skin/classic/browser/weather/night-partly-cloudy-with-showers.svg (../shared/weather/night-partly-cloudy-with-showers.svg)
skin/classic/browser/weather/night-partly-cloudy-with-thunderstorms.svg (../shared/weather/night-partly-cloudy-with-thunderstorms.svg)
@@ -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)
+
+#include zen-sources.inc.mn
\ No newline at end of file

View File

@@ -1,8 +1,8 @@
diff --git a/browser/themes/shared/tabbrowser/content-area.css b/browser/themes/shared/tabbrowser/content-area.css
index 5c721ee07f0be1318a50cb381ddf59550a04d496..fa2d21687dd8ea7dd03fb4cc2952fe783782a955 100644
index 44f6c942f2e4b08f784b2ff96f785e9beed01ecd..834e174186972c3297a552bbd579f0ea1261c19e 100644
--- a/browser/themes/shared/tabbrowser/content-area.css
+++ b/browser/themes/shared/tabbrowser/content-area.css
@@ -237,7 +237,7 @@
@@ -276,7 +276,7 @@
.dialogStack {
z-index: var(--browser-stack-z-index-dialog-stack);

View File

@@ -1,12 +1,12 @@
diff --git a/browser/themes/shared/tabbrowser/ctrlTab.css b/browser/themes/shared/tabbrowser/ctrlTab.css
index 50045ec27abcde91d5aea12fc7faaefbddf50229..f4e98dce5195ff3298fb98714d56cf5d3bdaaf48 100644
index aaeae8fd0e999aecda02bf287b39c4d96ad73f3c..d8196d9b1b5491d73b18a7c7d7fef55bc11fe31b 100644
--- a/browser/themes/shared/tabbrowser/ctrlTab.css
+++ b/browser/themes/shared/tabbrowser/ctrlTab.css
@@ -12,6 +12,7 @@
--panel-color: white;
@@ -11,6 +11,7 @@
--panel-border-color: transparent;
--panel-padding: 20px 10px 10px;
-moz-window-shadow: none;
+ --panel-shadow-margin: 0;
@media not (-moz-platform: macos) {
font-weight: bold;
}
@media (-moz-platform: macos) {

View File

@@ -1,8 +1,8 @@
diff --git a/browser/themes/shared/tabbrowser/tabs.css b/browser/themes/shared/tabbrowser/tabs.css
index b710cbf2aa3febc0693bdc6aef48ef4aea855235..61c813322c866ae823dac6c0826d572a1e768135 100644
index 07574cdd974f63b90355f069f0fbc3fa6cd61b50..665b8c431be11dc0ef5f1f30f4c2ef884c231e46 100644
--- a/browser/themes/shared/tabbrowser/tabs.css
+++ b/browser/themes/shared/tabbrowser/tabs.css
@@ -19,7 +19,7 @@
@@ -21,7 +21,7 @@
--tab-group-line-thickness: 2px;
--tab-group-line-toolbar-border-distance: 1px;
/* Collapsed tabs should be square, so set width to match the min height */
@@ -11,7 +11,7 @@ index b710cbf2aa3febc0693bdc6aef48ef4aea855235..61c813322c866ae823dac6c0826d572a
--tab-collapsed-width: calc(var(--tab-collapsed-background-width) + 2 * var(--tab-inner-inline-margin));
--tab-inner-inline-margin: var(--space-medium);
--tab-inline-padding: 8px;
@@ -33,9 +33,9 @@
@@ -35,9 +35,9 @@
--tab-block-margin: 4px;
--tab-icon-end-margin: 5.5px;
--tab-label-line-height: 1.7;
@@ -23,7 +23,7 @@ index b710cbf2aa3febc0693bdc6aef48ef4aea855235..61c813322c866ae823dac6c0826d572a
--tab-selected-bgcolor: var(--toolbar-bgcolor);
--tab-selected-color-scheme: var(--toolbar-color-scheme);
&[lwt-tab-selected="light"] {
@@ -255,7 +255,6 @@
@@ -259,7 +259,6 @@
}
:root:not([uidensity="compact"], [sidebar-expand-on-hover]) &[pinned] {
@@ -31,7 +31,7 @@ index b710cbf2aa3febc0693bdc6aef48ef4aea855235..61c813322c866ae823dac6c0826d572a
}
&:is([selected], [multiselected]) {
@@ -269,6 +268,7 @@
@@ -273,6 +272,7 @@
border-radius: inherit;
position: relative;
overflow: hidden;
@@ -39,7 +39,7 @@ index b710cbf2aa3febc0693bdc6aef48ef4aea855235..61c813322c866ae823dac6c0826d572a
&::before {
position: absolute;
@@ -468,14 +468,11 @@
@@ -472,14 +472,11 @@
.tab-icon-image {
-moz-context-properties: fill, stroke;
fill: currentColor;
@@ -55,7 +55,7 @@ index b710cbf2aa3febc0693bdc6aef48ef4aea855235..61c813322c866ae823dac6c0826d572a
opacity: 0.5;
/* Fade the favicon out */
transition-property: filter, opacity;
@@ -492,10 +489,6 @@
@@ -496,10 +493,6 @@
/* stylelint-disable-next-line media-query-no-invalid */
@media -moz-pref("browser.tabs.fadeOutExplicitlyUnloadedTabs") {
&[pending][discarded] {
@@ -66,7 +66,7 @@ index b710cbf2aa3febc0693bdc6aef48ef4aea855235..61c813322c866ae823dac6c0826d572a
opacity: 0.5;
/* Fade the favicon out */
transition-property: filter, opacity;
@@ -568,7 +561,7 @@
@@ -572,7 +565,7 @@
z-index: 1; /* Overlay tab title */
#tabbrowser-tabs[orient="vertical"] & {
@@ -75,7 +75,7 @@ index b710cbf2aa3febc0693bdc6aef48ef4aea855235..61c813322c866ae823dac6c0826d572a
}
&[crashed] {
@@ -576,7 +569,7 @@
@@ -580,7 +573,7 @@
}
#tabbrowser-tabs[orient="vertical"]:not([expanded]) &:not([crashed]),
@@ -84,7 +84,7 @@ index b710cbf2aa3febc0693bdc6aef48ef4aea855235..61c813322c866ae823dac6c0826d572a
&[soundplaying] {
list-style-image: url("chrome://browser/skin/tabbrowser/tab-audio-playing-small.svg");
}
@@ -633,7 +626,7 @@
@@ -637,7 +630,7 @@
}
}
@@ -93,7 +93,7 @@ index b710cbf2aa3febc0693bdc6aef48ef4aea855235..61c813322c866ae823dac6c0826d572a
&[crashed] {
display: revert;
}
@@ -734,7 +727,7 @@
@@ -738,7 +731,7 @@
has not been added to root. There are certain scenarios when that attribute is temporarily
removed from root such as when toggling the sidebar to expand with the toolbar button. */
#tabbrowser-tabs[orient="horizontal"] &:not([pinned]):not([crashed]),
@@ -102,16 +102,16 @@ index b710cbf2aa3febc0693bdc6aef48ef4aea855235..61c813322c866ae823dac6c0826d572a
&:is([soundplaying], [muted], [activemedia-blocked]) {
display: flex;
}
@@ -1039,7 +1032,7 @@ tab-group {
@@ -1137,7 +1130,7 @@ tab-group {
}
#tabbrowser-tabs[orient="vertical"][expanded] {
- tab-group > :is(.tab-group-label-container, .tabbrowser-tab),
+ tab-group > :is(.tab-group-label-container, .tab-group-container, .tabbrowser-tab),
&[movingtab][movingtab-addToGroup]:not([movingtab-createGroup], [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);
}
@@ -1457,7 +1450,7 @@ tab-group {
@@ -1567,7 +1560,7 @@ tab-group {
}
}
@@ -120,7 +120,7 @@ index b710cbf2aa3febc0693bdc6aef48ef4aea855235..61c813322c866ae823dac6c0826d572a
#vertical-tabs-newtab-button {
appearance: none;
min-height: var(--tab-min-height);
@@ -1468,7 +1461,7 @@ tab-group {
@@ -1578,7 +1571,7 @@ tab-group {
margin-inline: var(--tab-inner-inline-margin);
#tabbrowser-tabs[orient="vertical"]:not([expanded]) & > .toolbarbutton-text {
@@ -129,7 +129,7 @@ index b710cbf2aa3febc0693bdc6aef48ef4aea855235..61c813322c866ae823dac6c0826d572a
}
&:hover {
@@ -1492,7 +1485,7 @@ tab-group {
@@ -1602,7 +1595,7 @@ tab-group {
* flex container. #tabs-newtab-button is a child of the arrowscrollbox where
* we don't want a gap (between tabs), so we have to add some margin.
*/
@@ -138,7 +138,7 @@ index b710cbf2aa3febc0693bdc6aef48ef4aea855235..61c813322c866ae823dac6c0826d572a
margin-block: var(--tab-block-margin);
}
@@ -1687,7 +1680,6 @@ tab-group {
@@ -1793,7 +1786,6 @@ tab-group {
&:not([expanded]) {
.tabbrowser-tab[pinned] {
@@ -146,7 +146,7 @@ index b710cbf2aa3febc0693bdc6aef48ef4aea855235..61c813322c866ae823dac6c0826d572a
}
.tab-background {
@@ -1847,7 +1839,6 @@ toolbar:not(#TabsToolbar) #firefox-view-button {
@@ -1953,7 +1945,6 @@ toolbar:not(#TabsToolbar) #firefox-view-button {
list-style-image: url(chrome://global/skin/icons/plus.svg);
}

View File

@@ -1,5 +1,5 @@
diff --git a/browser/themes/shared/toolbarbuttons.css b/browser/themes/shared/toolbarbuttons.css
index 1f91bda717979f3e81d2f6b243336078d97c5cb9..4232ec4761cb15ff96e9b18810b05f548a6f5fd9 100644
index e7b1c17391ffae02226015d0dd8bbe8eca29731f..938a8cb8c3d854a75fe300db2a7330d188c9ed6f 100644
--- a/browser/themes/shared/toolbarbuttons.css
+++ b/browser/themes/shared/toolbarbuttons.css
@@ -256,7 +256,7 @@ toolbar .toolbaritem-combined-buttons > separator {

View File

@@ -1,33 +1,33 @@
diff --git a/browser/themes/shared/urlbar-searchbar.css b/browser/themes/shared/urlbar-searchbar.css
index d6c0b56270aee3dd0e74840314ea25af3ca8050a..17b22809744a8903b916b7769681a0c14d054f45 100644
index 11636a976736ba56dcc5a58081cee998bbdf58d4..0a6ca26f25511c799d8b40484b6bd1c81ceeb4e0 100644
--- a/browser/themes/shared/urlbar-searchbar.css
+++ b/browser/themes/shared/urlbar-searchbar.css
@@ -5,7 +5,7 @@
@namespace html url("http://www.w3.org/1999/xhtml");
@@ -6,7 +6,7 @@
:root {
--urlbar-container-min-width: 310px;
- --urlbar-container-padding: 1px;
+ --urlbar-container-padding: 2px;
--urlbar-margin-inline: 5px;
--urlbar-padding-block: 4px;
}
@@ -23,7 +23,7 @@
#urlbar:not([usertyping]) > .urlbar-input-container > .urlbar-go-button,
#urlbar:not([focused]) > .urlbar-input-container > .urlbar-go-button,
#urlbar-revert-button-container {
@@ -33,7 +33,7 @@
#urlbar[usertyping] > .urlbar-input-container > #page-action-buttons > #urlbar-zoom-button,
.urlbar:is(:not([usertyping]), :not([focused])) > .urlbar-input-container > .urlbar-go-button,
.urlbar-revert-button-container {
- display: none;
+ display: none !important;
}
/* When rich suggestions are enabled the urlbar identity icon is given extra padding to
@@ -288,10 +288,14 @@
@@ -307,10 +307,14 @@
#urlbar[breakout][breakout-extend] {
.urlbar[breakout][breakout-extend] {
height: auto;
+ align-items: center;
+ :root:not([zen-single-toolbar='true']) {
margin-left: calc(-1 * var(--urlbar-margin-inline));
+ }
+ align-items: center;
width: calc(var(--urlbar-width) + 2 * var(--urlbar-margin-inline));
> .urlbar-input-container {

View File

@@ -1,5 +1,5 @@
diff --git a/browser/themes/shared/urlbarView.css b/browser/themes/shared/urlbarView.css
index 428ce749239be2a54c86e0feff123772d1a1d697..bfef48f520dac8968f79d06cbef2e5a047ded748 100644
index 743b1bc81474378ac994ca9cfeb8f4cc6b434581..3486cebd74efa2df481d2a112e89b219bd6bb8a2 100644
--- a/browser/themes/shared/urlbarView.css
+++ b/browser/themes/shared/urlbarView.css
@@ -20,7 +20,7 @@
@@ -11,7 +11,7 @@ index 428ce749239be2a54c86e0feff123772d1a1d697..bfef48f520dac8968f79d06cbef2e5a0
--urlbarView-row-gutter: 2px;
--urlbarView-item-inline-padding: var(--urlbar-icon-padding);
--urlbarView-item-block-padding: 6px;
@@ -168,7 +168,6 @@
@@ -173,7 +173,6 @@
min-height: 32px;
}
:root[uidensity="touch"] & {

View File

@@ -20,10 +20,6 @@
list-style-image: url('back.svg') !important;
}
#zenSplitViewModifierActivateReallocation > image {
list-style-image: url('move-tab.svg') !important;
}
#forward-button {
list-style-image: url('forward.svg') !important;
}
@@ -770,7 +766,7 @@
list-style-image: url('chrome://global/skin/media/picture-in-picture-open.svg');
}
#zenCreateNewPopup > menuitem image {
#zenCreateNewPopup > menuitem img {
-moz-context-properties: fill;
fill: currentColor;
}
@@ -817,7 +813,7 @@
}
}
.zen-workspace-context-icon image {
.zen-workspace-context-icon img {
-moz-context-properties: fill;
fill: currentColor;
scale: 1.6;

View File

@@ -1,5 +1,5 @@
diff --git a/browser/themes/windows/browser.css b/browser/themes/windows/browser.css
index 4f960ae35aa69a1d1ce4ad368f5bae365229bbdf..a60d16adee588a1ab0d06d7676bbe80f179e088d 100644
index 4485369284ee762bc8b35afb84fec0874a831fff..7096e2e5d50cda99b62a2aa7118fea6371e76b85 100644
--- a/browser/themes/windows/browser.css
+++ b/browser/themes/windows/browser.css
@@ -31,7 +31,6 @@

View File

@@ -1,8 +1,8 @@
diff --git a/devtools/server/actors/animation-type-longhand.js b/devtools/server/actors/animation-type-longhand.js
index a7faa2a2f17144198338aa80207ccf33b631cf32..7c15f8d8d533721b661866643cf10b37c99cb051 100644
index 17960549c60ebab9ac7c50a70cb69a6b1f8c37dd..9a9ec4539d39f20dccf449cbdcd066efee145b50 100644
--- a/devtools/server/actors/animation-type-longhand.js
+++ b/devtools/server/actors/animation-type-longhand.js
@@ -341,6 +341,7 @@ exports.ANIMATION_TYPE_FOR_LONGHANDS = [
@@ -343,6 +343,7 @@ exports.ANIMATION_TYPE_FOR_LONGHANDS = [
"transform-origin",
"translate",
"-moz-window-transform",

View File

@@ -1,8 +1,8 @@
diff --git a/devtools/startup/DevToolsStartup.sys.mjs b/devtools/startup/DevToolsStartup.sys.mjs
index 91b27e5b5fd938f8c5f141214b934999e0ad871e..d2fdae0b0de64c016abbdd5bf124da278d425b24 100644
index 175edde2720f31c796e8ae8823e2aff17944f423..d9d4f7f5e53064b1ba07870dced2e1452fdde6b1 100644
--- a/devtools/startup/DevToolsStartup.sys.mjs
+++ b/devtools/startup/DevToolsStartup.sys.mjs
@@ -813,6 +813,7 @@ DevToolsStartup.prototype = {
@@ -816,6 +816,7 @@ DevToolsStartup.prototype = {
// account (see bug 832984).
const mainKeyset = doc.getElementById("mainKeyset");
mainKeyset.parentNode.insertBefore(keyset, mainKeyset);

View File

@@ -1,5 +1,5 @@
diff --git a/docshell/base/nsAboutRedirector.cpp b/docshell/base/nsAboutRedirector.cpp
index df5658c7231e73c52ee00e35eeccc47166528391..8bfdceb0fc00c618326e932990c9503af13d9e69 100644
index 83d84537f94863d47a30887362fa1ce5a9809427..104d170d5e5114f965b7698fc59d2bad12265261 100644
--- a/docshell/base/nsAboutRedirector.cpp
+++ b/docshell/base/nsAboutRedirector.cpp
@@ -108,7 +108,7 @@ static const RedirEntry kRedirMap[] = {

View File

@@ -1,24 +1,23 @@
diff --git a/dom/base/Document.cpp b/dom/base/Document.cpp
index 40da41ae4ac7d8d61c664e25bec8a74091d8b3e0..59773e80c6220115d0c51e268bb1eff0fe208010 100644
index 7d7a93e9e76b4957e3ac5860dfc730b7c4e6ad1d..c7c689b73c6599e9e736f73a67bb402d083964a0 100644
--- a/dom/base/Document.cpp
+++ b/dom/base/Document.cpp
@@ -10,6 +10,7 @@
#include "mozilla/dom/Document.h"
#include "mozilla/dom/DocumentInlines.h"
@@ -467,6 +467,7 @@
#include "prtime.h"
#include "prtypes.h"
#include "xpcpublic.h"
+#include "mozilla/ZenStyleSheetCache.h"
#include <inttypes.h>
#include <stdlib.h>
@@ -3306,6 +3307,11 @@ void Document::FillStyleSetUserAndUASheets() {
// clang-format off
#include "mozilla/Encoding.h"
@@ -3345,6 +3346,10 @@ void Document::FillStyleSetUserAndUASheets() {
for (StyleSheet* sheet : *sheetService->UserStyleSheets()) {
styleSet.AppendStyleSheet(*sheet);
}
+ if (auto sheet = zen::ZenStyleSheetCache::Singleton()->GetModsSheet(); sheet && IsInChromeDocShell()) {
+ // The mods sheet is only used in the chrome docshell.
+ styleSet.AppendStyleSheet(*sheet);
+ }
+
StyleSheet* sheet = IsInChromeDocShell() ? cache->GetUserChromeSheet()
: cache->GetUserContentSheet();
if (sheet) {

View File

@@ -1,8 +1,8 @@
diff --git a/dom/base/use_counter_metrics.yaml b/dom/base/use_counter_metrics.yaml
index c8dd3cca62e788eed5e5df5294fa7c9f3a2e9492..91e6281f4eb1c4c6aa1dddd8a0f06aa0c15a71ab 100644
index adf8d1ed451a54426d92e65557801cffa2f64281..0bf810d3544e42689ad530468bfce5380a51e274 100644
--- a/dom/base/use_counter_metrics.yaml
+++ b/dom/base/use_counter_metrics.yaml
@@ -21460,6 +21460,22 @@ use.counter.css.page:
@@ -21477,6 +21477,22 @@ use.counter.css.page:
send_in_pings:
- use-counters
@@ -25,7 +25,7 @@ index c8dd3cca62e788eed5e5df5294fa7c9f3a2e9492..91e6281f4eb1c4c6aa1dddd8a0f06aa0
css_transform_origin:
type: counter
description: >
@@ -33447,6 +33463,22 @@ use.counter.css.doc:
@@ -33481,6 +33497,22 @@ use.counter.css.doc:
send_in_pings:
- use-counters

View File

@@ -1,5 +1,5 @@
diff --git a/dom/media/mediacontrol/MediaController.cpp b/dom/media/mediacontrol/MediaController.cpp
index 3f08d24d4ed56bb72ed513ed602b2c8fa48afe7b..98dfe4df48f5daebd2b619f0d4d4eb3ac873a66f 100644
index 8a1735b70f2003b7ee554230c4ad93c68793fce2..86d86a83545287356be5e455501b8c30062adc3a 100644
--- a/dom/media/mediacontrol/MediaController.cpp
+++ b/dom/media/mediacontrol/MediaController.cpp
@@ -51,6 +51,25 @@ void MediaController::GetSupportedKeys(

View File

@@ -1,5 +1,5 @@
diff --git a/dom/media/mediacontrol/MediaController.h b/dom/media/mediacontrol/MediaController.h
index 8fec9c59e38bc24b9ff6d30ddbaebff67107bc76..5e7f3634f9edef48d6f96b4900f82a7ebbd730be 100644
index 327ea6201304b3d26a2b4f0267b1c926c73ee9e4..ad14bb2572c29df4897672e14afc185b9b517da4 100644
--- a/dom/media/mediacontrol/MediaController.h
+++ b/dom/media/mediacontrol/MediaController.h
@@ -90,6 +90,7 @@ class MediaController final : public DOMEventTargetHelper,

View File

@@ -1,7 +1,7 @@
diff --git a/dom/html/HTMLMediaElement.cpp b/dom/html/HTMLMediaElement.cpp
index 2becc049b5a0ee8544819b08d65f1df0a4c23658..6e7a05f135c6ab2c4955a679c1a4ac0e9aae7592 100644
--- a/dom/html/HTMLMediaElement.cpp
+++ b/dom/html/HTMLMediaElement.cpp
diff --git a/dom/media/mediaelement/HTMLMediaElement.cpp b/dom/media/mediaelement/HTMLMediaElement.cpp
index d46d5edc1d66c1eee8780abad444289fdc36a518..0e0d69819d9eee82add726792ec829c05551a076 100644
--- a/dom/media/mediaelement/HTMLMediaElement.cpp
+++ b/dom/media/mediaelement/HTMLMediaElement.cpp
@@ -453,6 +453,7 @@ class HTMLMediaElement::MediaControlKeyListener final
// audible state. Therefore, in that case we would noitfy the audible state
// when media starts playing.

View File

@@ -1,8 +1,8 @@
diff --git a/gfx/wr/webrender/src/picture.rs b/gfx/wr/webrender/src/picture.rs
index e860f36ef2b42a7377047c64dd4f9405f26b3249..8057172482aa042e9951fc7367891a66eed75f5e 100644
index 79e062a40ed097fa6614abc6b5201f868c447733..91c10d17f0dca55eafec522ddc94b91bf4cd2cfb 100644
--- a/gfx/wr/webrender/src/picture.rs
+++ b/gfx/wr/webrender/src/picture.rs
@@ -8112,7 +8112,12 @@ fn get_relative_scale_offset(
@@ -8121,7 +8121,12 @@ fn get_relative_scale_offset(
CoordinateSpaceMapping::Local => ScaleOffset::identity(),
CoordinateSpaceMapping::ScaleOffset(scale_offset) => scale_offset,
CoordinateSpaceMapping::Transform(m) => {

View File

@@ -1,8 +1,8 @@
diff --git a/layout/generic/nsIFrame.cpp b/layout/generic/nsIFrame.cpp
index e13628eccc51f0e81fc1404b061840d816502757..85cca51cf37db83f6e79c6e6af080646d2c49670 100644
index 0fca54d43aed64e711c3470a5745a94baaed8886..17097bc8f39e7d5140afa4d91811bca2071a8ad1 100644
--- a/layout/generic/nsIFrame.cpp
+++ b/layout/generic/nsIFrame.cpp
@@ -11901,6 +11901,11 @@ gfx::Matrix nsIFrame::ComputeWidgetTransform() const {
@@ -11933,6 +11933,11 @@ gfx::Matrix nsIFrame::ComputeWidgetTransform() const {
gfx::Matrix4x4 matrix = nsStyleTransformMatrix::ReadTransforms(
uiReset->mMozWindowTransform, refBox, float(appUnitsPerDevPixel));

View File

@@ -1,7 +1,7 @@
diff --git a/layout/base/nsStyleSheetService.h b/layout/base/nsStyleSheetService.h
diff --git a/layout/style/nsStyleSheetService.h b/layout/style/nsStyleSheetService.h
index 83fc829aad19f8b80692e67bddb781778fbc4f8d..04806a1f51686a82c1dc2555dae86a4397b181fb 100644
--- a/layout/base/nsStyleSheetService.h
+++ b/layout/base/nsStyleSheetService.h
--- a/layout/style/nsStyleSheetService.h
+++ b/layout/style/nsStyleSheetService.h
@@ -50,6 +50,8 @@ class nsStyleSheetService final : public nsIStyleSheetService,
size_t SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf) const;

View File

@@ -1,8 +1,8 @@
diff --git a/layout/style/nsStyleStruct.cpp b/layout/style/nsStyleStruct.cpp
index 4b979fc1f9d0986f5382cab0c39bf99ed34ef39e..90f67c73c13fbfdcfff86125c6d7258850ca62b0 100644
index 3fc58a635189d2160be84c3c8083e63abce611f0..7aac552365a4414229879e2dd9586f7fbd98816d 100644
--- a/layout/style/nsStyleStruct.cpp
+++ b/layout/style/nsStyleStruct.cpp
@@ -3237,6 +3237,9 @@ nsStyleUIReset::nsStyleUIReset()
@@ -3266,6 +3266,9 @@ nsStyleUIReset::nsStyleUIReset()
mWindowShadow(StyleWindowShadow::Auto),
mWindowOpacity(1.0),
mMozWindowInputRegionMargin(StyleLength::Zero()),
@@ -12,7 +12,7 @@ index 4b979fc1f9d0986f5382cab0c39bf99ed34ef39e..90f67c73c13fbfdcfff86125c6d72588
mTransitions(
nsStyleAutoArray<StyleTransition>::WITH_SINGLE_INITIAL_ELEMENT),
mTransitionTimingFunctionCount(1),
@@ -3281,6 +3284,7 @@ nsStyleUIReset::nsStyleUIReset(const nsStyleUIReset& aSource)
@@ -3310,6 +3313,7 @@ nsStyleUIReset::nsStyleUIReset(const nsStyleUIReset& aSource)
mWindowOpacity(aSource.mWindowOpacity),
mMozWindowInputRegionMargin(aSource.mMozWindowInputRegionMargin),
mMozWindowTransform(aSource.mMozWindowTransform),

View File

@@ -1,8 +1,8 @@
diff --git a/layout/style/nsStyleStruct.h b/layout/style/nsStyleStruct.h
index 3236244280edaae2bbe4440e76da3455015ab722..3474d4bcfab2944aae9635250350b674a8ed1c42 100644
index 9db1b385ac12e0142921c49e6b6c2ba0fadccf95..919089fd9bc278b0c2fede4b2babe133acd4632e 100644
--- a/layout/style/nsStyleStruct.h
+++ b/layout/style/nsStyleStruct.h
@@ -2033,6 +2033,7 @@ struct MOZ_NEEDS_MEMMOVABLE_MEMBERS nsStyleUIReset {
@@ -2075,6 +2075,7 @@ struct MOZ_NEEDS_MEMMOVABLE_MEMBERS nsStyleUIReset {
// The margin of the window region that should be transparent to events.
mozilla::StyleLength mMozWindowInputRegionMargin;
mozilla::StyleTransform mMozWindowTransform;

View File

@@ -1,8 +1,8 @@
diff --git a/layout/style/test/ListCSSProperties.cpp b/layout/style/test/ListCSSProperties.cpp
index df06ffac358c1b245c84432aa6f143f9c5806029..0bca4b9b40b3b030c54fc36c659966dd3a8894f7 100644
index 673c1677703ef2de3fafbe86f0ffab720738f4cb..267556f66de3180fc6ae91d5b54b8648f1b41cc4 100644
--- a/layout/style/test/ListCSSProperties.cpp
+++ b/layout/style/test/ListCSSProperties.cpp
@@ -109,6 +109,7 @@ const char* gInaccessibleProperties[] = {
@@ -110,6 +110,7 @@ const char* gInaccessibleProperties[] = {
"-moz-window-opacity", // chrome-only internal properties
"-moz-window-transform", // chrome-only internal properties
"-moz-window-shadow", // chrome-only internal properties

View File

@@ -1,8 +1,8 @@
diff --git a/modules/libpref/init/StaticPrefList.yaml b/modules/libpref/init/StaticPrefList.yaml
index 30a19900c13cd0720008980202077af1df705856..136e3a13b810215be7a102786dce54651b38829d 100644
index a6c49438aaf3464e70bf9c75c2849a6062bd096a..2ee33493ed541b36a29f29c104d1275b80e5a20a 100644
--- a/modules/libpref/init/StaticPrefList.yaml
+++ b/modules/libpref/init/StaticPrefList.yaml
@@ -19119,6 +19119,7 @@
@@ -19222,6 +19215,7 @@
mirror: always
#endif

View File

@@ -1,5 +1,5 @@
diff --git a/servo/components/style/gecko/media_features.rs b/servo/components/style/gecko/media_features.rs
index c66f1e26b22a6eeb2192d531e365ba34a61e220d..097ffce888ee0e180cc06448ea34860e6a467a2a 100644
index 3d4630e2250476729d21cdcb1726a7af93f9fd75..489d1dc624bb1e7b3f7ed22a0073d3ada29846e4 100644
--- a/servo/components/style/gecko/media_features.rs
+++ b/servo/components/style/gecko/media_features.rs
@@ -13,6 +13,9 @@ use crate::values::computed::{CSSPixelLength, Context, Ratio, Resolution};
@@ -12,39 +12,32 @@ index c66f1e26b22a6eeb2192d531e365ba34a61e220d..097ffce888ee0e180cc06448ea34860e
fn device_size(device: &Device) -> Size2D<Au> {
let mut width = 0;
@@ -610,6 +613,13 @@ fn eval_moz_overlay_scrollbars(context: &Context) -> bool {
@@ -609,6 +612,13 @@ fn eval_scripting(context: &Context, query_value: Option<Scripting>) -> bool {
fn eval_moz_overlay_scrollbars(context: &Context) -> bool {
unsafe { bindings::Gecko_MediaFeatures_UseOverlayScrollbars(context.device().document()) }
}
+
+fn eval_moz_bool_pref(_: &Context, pref: Option<&AtomString>) -> KleeneValue {
+ let Some(pref) = pref else {
+ return KleeneValue::False;
+ };
+ KleeneValue::from(unsafe { bindings::Gecko_EvalMozPrefFeature(pref.as_ptr(), &MozPrefFeatureValue::<i32>::None) })
+}
+
fn get_lnf_int(int_id: i32) -> i32 {
unsafe { bindings::Gecko_GetLookAndFeelInt(int_id) }
}
@@ -657,7 +667,7 @@ macro_rules! lnf_int_feature {
@@ -641,7 +651,13 @@ macro_rules! lnf_int_feature {
/// to support new types in these entries and (2) ensuring that either
/// nsPresContext::MediaFeatureValuesChanged is called when the value that
/// would be returned by the evaluator function could change.
-pub static MEDIA_FEATURES: [QueryFeatureDescription; 62] = [
+pub static MEDIA_FEATURES: [QueryFeatureDescription; 63] = [
feature!(
atom!("width"),
AllowsRanges::Yes,
@@ -928,6 +938,12 @@ pub static MEDIA_FEATURES: [QueryFeatureDescription; 62] = [
Evaluator::BoolInteger(eval_moz_overlay_scrollbars),
FeatureFlags::CHROME_AND_UA_ONLY,
),
-pub static MEDIA_FEATURES: [QueryFeatureDescription; 58] = [
+pub static MEDIA_FEATURES: [QueryFeatureDescription; 59] = [
+ feature!(
+ atom!("-moz-bool-pref"),
+ AllowsRanges::No,
+ Evaluator::String(eval_moz_bool_pref),
+ FeatureFlags::CHROME_AND_UA_ONLY,
+ ),
lnf_int_feature!(
atom!("-moz-scrollbar-start-backward"),
ScrollArrowStyle,
feature!(
atom!("width"),
AllowsRanges::Yes,

View File

@@ -1,8 +1,8 @@
diff --git a/servo/components/style/properties/longhands/ui.mako.rs b/servo/components/style/properties/longhands/ui.mako.rs
index b7d24fe7bb54b1c143876e3bc9da59c64324ffa5..c36f7edcf076e31209e847af0b59361033d3b4da 100644
index 24e1e1b7e8fe4d4b70aaa4f5f022500c3dcfcbae..1176bf5d12885b4d96abb2f72288f6c631072578 100644
--- a/servo/components/style/properties/longhands/ui.mako.rs
+++ b/servo/components/style/properties/longhands/ui.mako.rs
@@ -286,6 +286,18 @@ ${helpers.predefined_type(
@@ -284,6 +284,18 @@ ${helpers.predefined_type(
affects="",
)}

View File

@@ -1,8 +1,8 @@
diff --git a/testing/mochitest/browser-test.js b/testing/mochitest/browser-test.js
index ef29179988bb37e7ea441aa051b692e3ccc90f21..6c9641ed27722b5febd83f6e121df24d46b00067 100644
index 11217c210dd8dc5f7c4bdc6043df9aeb361529c6..18c3c4d658170d0646483cd289fe8ad1f21ffae0 100644
--- a/testing/mochitest/browser-test.js
+++ b/testing/mochitest/browser-test.js
@@ -444,11 +444,11 @@ Tester.prototype = {
@@ -440,11 +440,11 @@ Tester.prototype = {
this.currentTest &&
window.gBrowser &&
AppConstants.MOZ_APP_NAME != "thunderbird" &&
@@ -16,7 +16,7 @@ index ef29179988bb37e7ea441aa051b692e3ccc90f21..6c9641ed27722b5febd83f6e121df24d
let lastTab = gBrowser.tabs[gBrowser.tabs.length - 1];
if (!lastTab.closing) {
// Report the stale tab as an error only when they're not closing.
@@ -483,12 +483,12 @@ Tester.prototype = {
@@ -479,12 +479,12 @@ Tester.prototype = {
// Replace the last tab with a fresh one
if (window.gBrowser && AppConstants.MOZ_APP_NAME != "thunderbird") {

View File

@@ -1,11 +1,11 @@
diff --git a/testing/profiles/mochitest/user.js b/testing/profiles/mochitest/user.js
index c43196b3c9cf8c90fa1cca5b6d205c410adec022..854aec05b568aa3dfe7d9b994c0ee7ee9a6b5fd8 100644
index a4068ac3f61161d014c49d54ae7a3bf886868f1b..7771d8c99aa20105b1382437881cdc02b17688c2 100644
--- a/testing/profiles/mochitest/user.js
+++ b/testing/profiles/mochitest/user.js
@@ -44,3 +44,7 @@ user_pref("geo.prompt.open_system_prefs", false);
// Enable Nimbus debug logging.
user_pref("messaging-system.log", "all");
@@ -41,3 +41,7 @@ user_pref("places.history.floodingPrevention.enabled", false);
// permission, and we can open it and wait for the user to give permission, then
// don't do that.
user_pref("geo.prompt.open_system_prefs", false);
+
+user_pref("zen.welcome-screen.seen", true);
+user_pref("zen.watermark.enabled", false);

View File

@@ -1,5 +1,5 @@
diff --git a/toolkit/components/extensions/parent/ext-downloads.js b/toolkit/components/extensions/parent/ext-downloads.js
index ea6929d23d432958def5be46e42e329bc224d3aa..942cfddc090399ef239cc34ab47682cab6a33cd4 100644
index 3b81d5e60a5e3006b80a2acec0b6720ccb7e5b33..5b6272986e13b48047f3bae1ec4205fc3e8012ef 100644
--- a/toolkit/components/extensions/parent/ext-downloads.js
+++ b/toolkit/components/extensions/parent/ext-downloads.js
@@ -87,6 +87,7 @@ const FILTER_IMAGES_EXTENSIONS = [

View File

@@ -1,8 +1,8 @@
diff --git a/toolkit/components/extensions/parent/ext-runtime.js b/toolkit/components/extensions/parent/ext-runtime.js
index ff7aae6e5f1919d8d4ff1c7e85b6150332adc20f..5d935e3d0dfb91cd01268d4e2c4dee4696c33efe 100644
index 0d7a3e505b6bd30548c6dda1504dd343a517b083..71bab6f1562ef6ec43541e52573d2ed5c4e8e3af 100644
--- a/toolkit/components/extensions/parent/ext-runtime.js
+++ b/toolkit/components/extensions/parent/ext-runtime.js
@@ -331,7 +331,7 @@ this.runtime = class extends ExtensionAPIPersistent {
@@ -333,7 +333,7 @@ this.runtime = class extends ExtensionAPIPersistent {
getBrowserInfo: function () {
const { name, vendor, version, appBuildID } = Services.appinfo;

View File

@@ -1,5 +1,5 @@
diff --git a/toolkit/content/widgets/browser-custom-element.mjs b/toolkit/content/widgets/browser-custom-element.mjs
index 8eeea2a403ba2007a1a1e6074bb982b24f40fef5..29bae869dfd8c9df6039b3c9b8b1603092e517ea 100644
index ef01902583d6ff1c563e9b2886f3048b127fe383..01f353f5eb4c67b2cf01a14e337a81e93358586f 100644
--- a/toolkit/content/widgets/browser-custom-element.mjs
+++ b/toolkit/content/widgets/browser-custom-element.mjs
@@ -482,11 +482,11 @@ class MozBrowser extends MozElements.MozElementMixin(XULFrameElement) {

Some files were not shown because too many files have changed in this diff Show More