diff --git a/scripts/recalculate-patches.sh b/scripts/recalculate-patches.sh index fb846e20f..379e3646e 100644 --- a/scripts/recalculate-patches.sh +++ b/scripts/recalculate-patches.sh @@ -16,7 +16,7 @@ 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 # Get the file from the inside of the file as indicated by the patch - target_file=$(grep -m 1 -oP '(?<=\+\+\+ b/).+' "$patch_file") + target_file=$(grep -m 1 -E '^\+\+\+ b/' "$patch_file" | sed 's/^\+\+\+ b\///') if [[ -z "$target_file" ]]; then echo "No target file found in patch: $patch_file" continue diff --git a/src/Cargo-lock.patch b/src/Cargo-lock.patch index 6ecc1e0ff..d792818fa 100644 --- a/src/Cargo-lock.patch +++ b/src/Cargo-lock.patch @@ -1,8 +1,8 @@ diff --git a/Cargo.lock b/Cargo.lock -index 6f6632e9747e281aac3ea177225c03b73f25456e..06756e08041835c203490057855d537118647cd0 100644 +index 723445447f491058784992e66245e0e0f8e61e19..02816c1df3e20d96ce68f16970b8a6e38080533e 100644 --- a/Cargo.lock +++ b/Cargo.lock -@@ -4171,8 +4171,6 @@ dependencies = [ +@@ -4214,8 +4214,6 @@ dependencies = [ [[package]] name = "mime_guess" version = "2.0.4" diff --git a/src/Cargo-toml.patch b/src/Cargo-toml.patch index e362b5478..1213d7775 100644 --- a/src/Cargo-toml.patch +++ b/src/Cargo-toml.patch @@ -1,8 +1,8 @@ diff --git a/Cargo.toml b/Cargo.toml -index e2846a08008684f18799d75e5c28fd244c10361a..ba72071baef49ed494f78d1cc6752b53d1841f46 100644 +index 35e725043bce0b39fea550e8fb2b0ae1ff752e43..abac2042d537fcc1ce26e0e3acbf98fc2975b793 100644 --- a/Cargo.toml +++ b/Cargo.toml -@@ -232,6 +232,8 @@ moz_asserts = { path = "mozglue/static/rust/moz_asserts" } +@@ -237,6 +237,8 @@ moz_asserts = { path = "mozglue/static/rust/moz_asserts" } # Workaround for https://github.com/rust-lang/cargo/issues/11232 rure = { path = "third_party/rust/rure" } diff --git a/src/browser/actors/WebRTCParent-sys-mjs.patch b/src/browser/actors/WebRTCParent-sys-mjs.patch index 200262649..dca293e17 100644 --- a/src/browser/actors/WebRTCParent-sys-mjs.patch +++ b/src/browser/actors/WebRTCParent-sys-mjs.patch @@ -1,5 +1,5 @@ diff --git a/browser/actors/WebRTCParent.sys.mjs b/browser/actors/WebRTCParent.sys.mjs -index a9612920f86ef5f37328497bf62255497e96b02d..a5643cd7e9c7a71da391408c14e00185b7db3f24 100644 +index ffa7d61ded4f2cf5866d0cb12dd9b14728a63570..5575943208a734f820758fd50a80503061934d56 100644 --- a/browser/actors/WebRTCParent.sys.mjs +++ b/browser/actors/WebRTCParent.sys.mjs @@ -152,6 +152,7 @@ export class WebRTCParent extends JSWindowActorParent { diff --git a/src/browser/base/content/browser-addons-js.patch b/src/browser/base/content/browser-addons-js.patch index 33a0b922a..0ffa166ff 100644 --- a/src/browser/base/content/browser-addons-js.patch +++ b/src/browser/base/content/browser-addons-js.patch @@ -1,5 +1,5 @@ diff --git a/browser/base/content/browser-addons.js b/browser/base/content/browser-addons.js -index fadcbfca95ee28140579430c0371baad0e2f216a..1947b4ab1c0b4ba0099147c9f13ae78d6e425bdf 100644 +index cfb6b8dd5443966d0635c3d7b477a68eca8fa9e0..c876890706b1a314c7760bbe1ff5e9eb57857e60 100644 --- a/browser/base/content/browser-addons.js +++ b/browser/base/content/browser-addons.js @@ -1069,7 +1069,7 @@ var gXPInstallObserver = { @@ -20,7 +20,7 @@ index fadcbfca95ee28140579430c0371baad0e2f216a..1947b4ab1c0b4ba0099147c9f13ae78d }, }; -@@ -2211,7 +2211,7 @@ var gUnifiedExtensions = { +@@ -2212,7 +2212,7 @@ var gUnifiedExtensions = { // If the new ID is not added in NOTIFICATION_IDS, consider handling the case // in the "PopupNotificationsBeforeAnchor" handler elsewhere in this file. getPopupAnchorID(aBrowser, aWindow) { @@ -29,7 +29,7 @@ index fadcbfca95ee28140579430c0371baad0e2f216a..1947b4ab1c0b4ba0099147c9f13ae78d const attr = anchorID + "popupnotificationanchor"; if (!aBrowser[attr]) { -@@ -2222,7 +2222,7 @@ var gUnifiedExtensions = { +@@ -2223,7 +2223,7 @@ var gUnifiedExtensions = { anchorID // Anchor on the toolbar icon to position the popup right below the // button. @@ -38,7 +38,7 @@ index fadcbfca95ee28140579430c0371baad0e2f216a..1947b4ab1c0b4ba0099147c9f13ae78d } return anchorID; -@@ -2547,7 +2547,7 @@ var gUnifiedExtensions = { +@@ -2548,7 +2548,7 @@ var gUnifiedExtensions = { requestAnimationFrame(() => this.updateAttention()); }, @@ -47,7 +47,7 @@ index fadcbfca95ee28140579430c0371baad0e2f216a..1947b4ab1c0b4ba0099147c9f13ae78d // A list of extension widget IDs (possibly empty). let widgetIDs; -@@ -2561,7 +2561,7 @@ var gUnifiedExtensions = { +@@ -2562,7 +2562,7 @@ var gUnifiedExtensions = { } // The list of overflowed extensions in the extensions panel. @@ -56,7 +56,7 @@ index fadcbfca95ee28140579430c0371baad0e2f216a..1947b4ab1c0b4ba0099147c9f13ae78d "#overflowed-extensions-list" ); -@@ -2662,37 +2662,41 @@ var gUnifiedExtensions = { +@@ -2663,37 +2663,41 @@ var gUnifiedExtensions = { ); template.replaceWith(template.content); this._panel = document.getElementById("unified-extensions-panel"); @@ -123,7 +123,7 @@ index fadcbfca95ee28140579430c0371baad0e2f216a..1947b4ab1c0b4ba0099147c9f13ae78d if (!CustomizationHandler.isCustomizing()) { if (aEvent) { if ( -@@ -2714,6 +2718,7 @@ var gUnifiedExtensions = { +@@ -2715,6 +2719,7 @@ var gUnifiedExtensions = { // and no alternative content is available for display in the panel. const policies = this.getActivePolicies(); if ( @@ -131,7 +131,7 @@ index fadcbfca95ee28140579430c0371baad0e2f216a..1947b4ab1c0b4ba0099147c9f13ae78d policies.length && !this.hasExtensionsInPanel(policies) && !this.isPrivateWindowMissingExtensionsWithoutPBMAccess() && -@@ -2729,32 +2734,30 @@ var gUnifiedExtensions = { +@@ -2730,32 +2735,30 @@ var gUnifiedExtensions = { this.blocklistAttentionInfo = await AddonManager.getBlocklistAttentionInfo(); @@ -170,7 +170,7 @@ index fadcbfca95ee28140579430c0371baad0e2f216a..1947b4ab1c0b4ba0099147c9f13ae78d triggerEvent: aEvent, }); } -@@ -2941,18 +2944,20 @@ var gUnifiedExtensions = { +@@ -2942,18 +2945,20 @@ var gUnifiedExtensions = { this._maybeMoveWidgetNodeBack(widgetId); } diff --git a/src/browser/base/content/browser-init-js.patch b/src/browser/base/content/browser-init-js.patch index 14a2b2e88..2cf59c8d8 100644 --- a/src/browser/base/content/browser-init-js.patch +++ b/src/browser/base/content/browser-init-js.patch @@ -1,8 +1,8 @@ diff --git a/browser/base/content/browser-init.js b/browser/base/content/browser-init.js -index 02f601d859ea32557af572d2499ad8be75b684b5..b1a6f66a74f75150d7e2fbc50528965bb16cb4d9 100644 +index 288a79e5fb4da24cffcb30fb4b8adc9604b15d26..bf9bd3e666dfb6298dbeec0546cae223a7bc68f0 100644 --- a/browser/base/content/browser-init.js +++ b/browser/base/content/browser-init.js -@@ -198,6 +198,7 @@ var gBrowserInit = { +@@ -200,6 +200,7 @@ var gBrowserInit = { }, onLoad() { @@ -10,7 +10,7 @@ index 02f601d859ea32557af572d2499ad8be75b684b5..b1a6f66a74f75150d7e2fbc50528965b gBrowser.addEventListener("DOMUpdateBlockedPopups", e => PopupAndRedirectBlockerObserver.handleEvent(e) ); -@@ -372,6 +373,7 @@ var gBrowserInit = { +@@ -375,6 +376,7 @@ var gBrowserInit = { this._handleURIToLoad(); diff --git a/src/browser/base/content/browser-js.patch b/src/browser/base/content/browser-js.patch index 3c0fb48ec..92428e53b 100644 --- a/src/browser/base/content/browser-js.patch +++ b/src/browser/base/content/browser-js.patch @@ -1,8 +1,8 @@ diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js -index 15ef352c147eff781d34a3e5fa02fa791bdd6188..b0784e817ad25c7a4983e9f1cb08b293de15a99d 100644 +index 16cf3e201358d24c9216f9b06b0ba3b89684d32a..2cfa507bbdc96b8a293b18595d0beae031fe6119 100644 --- a/browser/base/content/browser.js +++ b/browser/base/content/browser.js -@@ -31,6 +31,7 @@ ChromeUtils.defineESModuleGetters(this, { +@@ -33,6 +33,7 @@ ChromeUtils.defineESModuleGetters(this, { "resource://gre/modules/ContextualIdentityService.sys.mjs", CustomizableUI: "moz-src:///browser/components/customizableui/CustomizableUI.sys.mjs", @@ -10,7 +10,7 @@ index 15ef352c147eff781d34a3e5fa02fa791bdd6188..b0784e817ad25c7a4983e9f1cb08b293 DevToolsSocketStatus: "resource://devtools/shared/security/DevToolsSocketStatus.sys.mjs", DownloadUtils: "resource://gre/modules/DownloadUtils.sys.mjs", -@@ -821,7 +822,12 @@ function UpdateBackForwardCommands(aWebNavigation) { +@@ -819,7 +820,12 @@ function UpdateBackForwardCommands(aWebNavigation) { var backDisabled = backCommand.hasAttribute("disabled"); var forwardDisabled = forwardCommand.hasAttribute("disabled"); @@ -24,7 +24,7 @@ index 15ef352c147eff781d34a3e5fa02fa791bdd6188..b0784e817ad25c7a4983e9f1cb08b293 if (backDisabled) { backCommand.removeAttribute("disabled"); } else { -@@ -2297,6 +2303,8 @@ var XULBrowserWindow = { +@@ -2305,6 +2311,8 @@ var XULBrowserWindow = { AboutReaderParent.updateReaderButton(gBrowser.selectedBrowser); TranslationsParent.onLocationChange(gBrowser.selectedBrowser); @@ -33,7 +33,7 @@ index 15ef352c147eff781d34a3e5fa02fa791bdd6188..b0784e817ad25c7a4983e9f1cb08b293 PictureInPicture.updateUrlbarToggle(gBrowser.selectedBrowser); if (!gMultiProcessBrowser) { -@@ -3808,7 +3816,7 @@ function warnAboutClosingWindow() { +@@ -3818,7 +3826,7 @@ function warnAboutClosingWindow() { if (!isPBWindow && !toolbar.visible) { return gBrowser.warnAboutClosingTabs( @@ -42,7 +42,7 @@ index 15ef352c147eff781d34a3e5fa02fa791bdd6188..b0784e817ad25c7a4983e9f1cb08b293 gBrowser.closingTabsEnum.ALL ); } -@@ -3848,7 +3856,7 @@ function warnAboutClosingWindow() { +@@ -3858,7 +3866,7 @@ function warnAboutClosingWindow() { return ( isPBWindow || gBrowser.warnAboutClosingTabs( @@ -51,7 +51,7 @@ index 15ef352c147eff781d34a3e5fa02fa791bdd6188..b0784e817ad25c7a4983e9f1cb08b293 gBrowser.closingTabsEnum.ALL ) ); -@@ -3873,7 +3881,7 @@ function warnAboutClosingWindow() { +@@ -3883,7 +3891,7 @@ function warnAboutClosingWindow() { AppConstants.platform != "macosx" || isPBWindow || gBrowser.warnAboutClosingTabs( @@ -60,7 +60,7 @@ index 15ef352c147eff781d34a3e5fa02fa791bdd6188..b0784e817ad25c7a4983e9f1cb08b293 gBrowser.closingTabsEnum.ALL ) ); -@@ -4795,6 +4803,9 @@ var ConfirmationHint = { +@@ -4806,6 +4814,9 @@ var ConfirmationHint = { MozXULElement.insertFTLIfNeeded("toolkit/branding/brandings.ftl"); MozXULElement.insertFTLIfNeeded("browser/confirmationHints.ftl"); document.l10n.setAttributes(this._message, messageId, options.l10nArgs); diff --git a/src/browser/base/content/browser-places-js.patch b/src/browser/base/content/browser-places-js.patch index 8fb826e25..d458d84a6 100644 --- a/src/browser/base/content/browser-places-js.patch +++ b/src/browser/base/content/browser-places-js.patch @@ -1,5 +1,5 @@ diff --git a/browser/base/content/browser-places.js b/browser/base/content/browser-places.js -index 3bd7b8f6025a7df4ce5cfb66916125bce9ef3991..c408ef829b7540aec72b2307e5d4bfa34109d6cd 100644 +index 925d74575827340960706718a29426bdf079b47c..921feb0e4229706b4691a43c9fc1005cbfd90999 100644 --- a/browser/base/content/browser-places.js +++ b/browser/base/content/browser-places.js @@ -249,6 +249,8 @@ var StarUI = { @@ -33,7 +33,7 @@ index 3bd7b8f6025a7df4ce5cfb66916125bce9ef3991..c408ef829b7540aec72b2307e5d4bfa3 removeBookmarkButtonCommand: function SU_removeBookmarkButtonCommand() { this._removeBookmarksOnPopupHidden = true; this.panel.hidePopup(); -@@ -1797,6 +1814,7 @@ var BookmarkingUI = { +@@ -1806,6 +1823,7 @@ var BookmarkingUI = { document.getElementById("context-bookmarkpage"), PanelMultiView.getViewNode(document, "panelMenuBookmarkThisPage"), document.getElementById("pageAction-panel-bookmark"), diff --git a/src/browser/base/content/browser-sets-inc.patch b/src/browser/base/content/browser-sets-inc.patch index 3ed82c454..fe3e4c7a3 100644 --- a/src/browser/base/content/browser-sets-inc.patch +++ b/src/browser/base/content/browser-sets-inc.patch @@ -1,8 +1,8 @@ diff --git a/browser/base/content/browser-sets.inc b/browser/base/content/browser-sets.inc -index 8d97b6e669954a09afe6a46d1c79652264494e92..86877b983207c5f9852c9192ee0257a909c5ea7a 100644 +index 139f7c2617f5e4843e0072435818c859def2f6bb..6ac1467b4117e2d76102d6977f13268827b4588f 100644 --- a/browser/base/content/browser-sets.inc +++ b/browser/base/content/browser-sets.inc -@@ -406,3 +406,4 @@ +@@ -413,3 +413,4 @@ internal="true"/> #endif diff --git a/src/browser/base/content/browser-sets-js.patch b/src/browser/base/content/browser-sets-js.patch index dc7ab61db..c6e40b7cd 100644 --- a/src/browser/base/content/browser-sets-js.patch +++ b/src/browser/base/content/browser-sets-js.patch @@ -1,8 +1,8 @@ diff --git a/browser/base/content/browser-sets.js b/browser/base/content/browser-sets.js -index 0bb581aa34ddeef1e3eb85b0fadd41a539b4b9d6..cbe2df8b1775cb8194007ee995fd91769618b48d 100644 +index 94a05a510204c027e482fda33deaf3dc0d7471c9..79d37a7c7f29739d3ad2d9f6a3b3b8d638836b10 100644 --- a/browser/base/content/browser-sets.js +++ b/browser/base/content/browser-sets.js -@@ -254,7 +254,7 @@ document.addEventListener( +@@ -266,7 +266,7 @@ document.addEventListener( } }); diff --git a/src/browser/base/content/browser-xhtml.patch b/src/browser/base/content/browser-xhtml.patch index 8b473bbd3..c297865ef 100644 --- a/src/browser/base/content/browser-xhtml.patch +++ b/src/browser/base/content/browser-xhtml.patch @@ -1,5 +1,5 @@ diff --git a/browser/base/content/browser.xhtml b/browser/base/content/browser.xhtml -index 246d23a77960d25f78b163429a3ed28c7180ccd7..1c26485d8464413689767c8a38aadbcadcecae4d 100644 +index ac82dcd286b5502d1ba38ed740813db08941eb7b..c26b3f0468ee6acd7716d4e8a24ad8cc84fce186 100644 --- a/browser/base/content/browser.xhtml +++ b/browser/base/content/browser.xhtml @@ -19,6 +19,7 @@ @@ -10,7 +10,7 @@ index 246d23a77960d25f78b163429a3ed28c7180ccd7..1c26485d8464413689767c8a38aadbca persist="screenX screenY width height sizemode" data-l10n-sync="true"> -@@ -98,8 +99,10 @@ +@@ -99,8 +100,10 @@ @@ -21,7 +21,7 @@ index 246d23a77960d25f78b163429a3ed28c7180ccd7..1c26485d8464413689767c8a38aadbca # All sets except for popupsets (commands, keys, and stringbundles) -@@ -132,9 +135,11 @@ +@@ -133,9 +136,11 @@ diff --git a/src/browser/base/content/main-popupset-inc-xhtml.patch b/src/browser/base/content/main-popupset-inc-xhtml.patch index 609164180..85d3dbf5c 100644 --- a/src/browser/base/content/main-popupset-inc-xhtml.patch +++ b/src/browser/base/content/main-popupset-inc-xhtml.patch @@ -1,8 +1,8 @@ diff --git a/browser/base/content/main-popupset.inc.xhtml b/browser/base/content/main-popupset.inc.xhtml -index e688ba37c40ea602a32a84af6c1497d884ddc27b..ad8515eae1d4e697b9329d9d5babfd59679c9288 100644 +index 79b604c5965ba03762acbf085c9288c73001ec24..d75d5481e5de93c592850e39d4b0b4fd07e12678 100644 --- a/browser/base/content/main-popupset.inc.xhtml +++ b/browser/base/content/main-popupset.inc.xhtml -@@ -216,6 +216,10 @@ +@@ -226,6 +226,10 @@ hidden="true" tabspecific="true" aria-labelledby="editBookmarkPanelTitle"> @@ -13,7 +13,7 @@ index e688ba37c40ea602a32a84af6c1497d884ddc27b..ad8515eae1d4e697b9329d9d5babfd59 -@@ -241,6 +245,7 @@ +@@ -251,6 +255,7 @@ class="footer-button"/> @@ -21,7 +21,7 @@ index e688ba37c40ea602a32a84af6c1497d884ddc27b..ad8515eae1d4e697b9329d9d5babfd59 -@@ -636,6 +641,8 @@ +@@ -656,6 +661,8 @@ #include popup-notifications.inc.xhtml diff --git a/src/browser/base/content/navigator-toolbox-inc-xhtml.patch b/src/browser/base/content/navigator-toolbox-inc-xhtml.patch index 88a40f89f..f4dabd442 100644 --- a/src/browser/base/content/navigator-toolbox-inc-xhtml.patch +++ b/src/browser/base/content/navigator-toolbox-inc-xhtml.patch @@ -1,5 +1,5 @@ diff --git a/browser/base/content/navigator-toolbox.inc.xhtml b/browser/base/content/navigator-toolbox.inc.xhtml -index 40dddda5a6191c2ac012767ca55ed5fa35c03a6b..2e96a7ca233529ee2b570f94154008be5b0088e3 100644 +index 68c24f730d56f548cf1e286198a04f8363529378..71418c93ce7216d71412f2fa67295322bb73abad 100644 --- a/browser/base/content/navigator-toolbox.inc.xhtml +++ b/browser/base/content/navigator-toolbox.inc.xhtml @@ -2,7 +2,7 @@ diff --git a/src/browser/base/content/nsContextMenu-sys-mjs.patch b/src/browser/base/content/nsContextMenu-sys-mjs.patch index 6b8e980b4..0d5b27828 100644 --- a/src/browser/base/content/nsContextMenu-sys-mjs.patch +++ b/src/browser/base/content/nsContextMenu-sys-mjs.patch @@ -1,8 +1,8 @@ diff --git a/browser/base/content/nsContextMenu.sys.mjs b/browser/base/content/nsContextMenu.sys.mjs -index b77c12da637ba31aca6e8100187d0ac14db33298..4fbec0dda932bcaa77ce714826ac8ab20b9e8e63 100644 +index d9fbd3a9a78c993c89efa75be9e2ffc975158aba..e64382b32580c2d113774e76e3587002ce0aebad 100644 --- a/browser/base/content/nsContextMenu.sys.mjs +++ b/browser/base/content/nsContextMenu.sys.mjs -@@ -376,6 +376,9 @@ export class nsContextMenu { +@@ -371,6 +371,9 @@ export class nsContextMenu { this.initPDFItems(); this.initTextFragmentItems(); diff --git a/src/browser/components/BrowserGlue-sys-mjs.patch b/src/browser/components/BrowserGlue-sys-mjs.patch index baedfac8e..7f28e211e 100644 --- a/src/browser/components/BrowserGlue-sys-mjs.patch +++ b/src/browser/components/BrowserGlue-sys-mjs.patch @@ -1,5 +1,5 @@ diff --git a/browser/components/BrowserGlue.sys.mjs b/browser/components/BrowserGlue.sys.mjs -index 5dcbb1705625746afd7c57b7a6044c4fa2f00afd..c0872057ec65fe8ebdb2f81e47198dec5d6f0faf 100644 +index 8acc1e5a97f769dc76d30ca0534f28b0a4511ab5..bd54169f976d3abe7d122b0efc0fa0d0626179eb 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"; diff --git a/src/browser/components/asrouter/modules/FeatureCallout-sys-mjs.patch b/src/browser/components/asrouter/modules/FeatureCallout-sys-mjs.patch index 7bf648687..b949e423e 100644 --- a/src/browser/components/asrouter/modules/FeatureCallout-sys-mjs.patch +++ b/src/browser/components/asrouter/modules/FeatureCallout-sys-mjs.patch @@ -1,8 +1,8 @@ diff --git a/browser/components/asrouter/modules/FeatureCallout.sys.mjs b/browser/components/asrouter/modules/FeatureCallout.sys.mjs -index 4ea9c9e88a1831dad7e42ebd8d0dd507102e8280..316aa626e525f05caac7f315e0ea7ae9d822b6af 100644 +index 80dd8b5e357acc9decea6cf621c4868d547a0eb3..8a5fea6ed1a62a5930bafffcbbde3ce3292e42a1 100644 --- a/browser/components/asrouter/modules/FeatureCallout.sys.mjs +++ b/browser/components/asrouter/modules/FeatureCallout.sys.mjs -@@ -777,6 +777,7 @@ export class FeatureCallout { +@@ -778,6 +778,7 @@ export class FeatureCallout { ) { return false; } diff --git a/src/browser/components/customizableui/content/panelUI-js.patch b/src/browser/components/customizableui/content/panelUI-js.patch index 86f016da1..dcc9dfebd 100644 --- a/src/browser/components/customizableui/content/panelUI-js.patch +++ b/src/browser/components/customizableui/content/panelUI-js.patch @@ -1,8 +1,8 @@ diff --git a/browser/components/customizableui/content/panelUI.js b/browser/components/customizableui/content/panelUI.js -index d6393080aa8aff6c0f7b2043fd408b6f6249d0c4..bf37b46c4743b7619393c730720204380635666a 100644 +index d016811caa6c1ecc947fd705f6e1b27e3b5a12a5..89f2a9ec9ebd80e744ed0118e1b3c164151cf2b8 100644 --- a/browser/components/customizableui/content/panelUI.js +++ b/browser/components/customizableui/content/panelUI.js -@@ -608,10 +608,12 @@ const PanelUI = { +@@ -619,10 +619,12 @@ const PanelUI = { if (hasKids && !this.navbar.hasAttribute("nonemptyoverflow")) { this.navbar.setAttribute("nonemptyoverflow", "true"); this.overflowPanel.setAttribute("hasfixeditems", "true"); @@ -15,7 +15,7 @@ index d6393080aa8aff6c0f7b2043fd408b6f6249d0c4..bf37b46c4743b7619393c73072020438 } }, -@@ -959,7 +961,7 @@ const PanelUI = { +@@ -970,7 +972,7 @@ const PanelUI = { el.removeAttribute("data-lazy-l10n-id"); }); diff --git a/src/browser/components/preferences/main-inc-xhtml.patch b/src/browser/components/preferences/main-inc-xhtml.patch index 6d458377b..6f6ee1261 100644 --- a/src/browser/components/preferences/main-inc-xhtml.patch +++ b/src/browser/components/preferences/main-inc-xhtml.patch @@ -1,8 +1,8 @@ diff --git a/browser/components/preferences/main.inc.xhtml b/browser/components/preferences/main.inc.xhtml -index bfddd91e6b524f2ebced985f5d12a4963e5c6075..7e80c0a293aae6356e53d9c9760017290e97ffa0 100644 +index d218a04e0ab44e6a55e368566c97df95e939565b..59f038e59fe1a8554a8b112c5ac33e700b71c79c 100644 --- a/browser/components/preferences/main.inc.xhtml +++ b/browser/components/preferences/main.inc.xhtml -@@ -141,7 +141,8 @@ +@@ -48,7 +48,8 @@ -@@ -346,6 +347,7 @@ +@@ -253,6 +254,7 @@ languages-customize-add.label, " /> diff --git a/src/browser/components/preferences/main-js.patch b/src/browser/components/preferences/main-js.patch index c9c6b02a0..5b4cbe5a7 100644 --- a/src/browser/components/preferences/main-js.patch +++ b/src/browser/components/preferences/main-js.patch @@ -1,8 +1,8 @@ diff --git a/browser/components/preferences/main.js b/browser/components/preferences/main.js -index a184086f10d6a919c8125ab5d7728319256b3b73..7c826000ccdc8a55a12a08bdc2c547d886e5610c 100644 +index 6f99cbf973d414ffd4036d17740abe963629db37..520dcce0adb06c5ebfee8c76f72f7d7b40e106da 100644 --- a/browser/components/preferences/main.js +++ b/browser/components/preferences/main.js -@@ -1117,6 +1117,11 @@ let SETTINGS_CONFIG = { +@@ -1729,6 +1729,11 @@ SettingGroupManager.registerGroups({ id: "browserRestoreSession", l10nId: "startup-restore-windows-and-tabs", }, @@ -14,7 +14,7 @@ index a184086f10d6a919c8125ab5d7728319256b3b73..7c826000ccdc8a55a12a08bdc2c547d8 { id: "windowsLaunchOnLogin", l10nId: "windows-launch-on-login", -@@ -1700,7 +1705,7 @@ function getBundleForLocales(newLocales) { +@@ -3133,7 +3138,7 @@ function getBundleForLocales(newLocales) { ]) ); return new Localization( diff --git a/src/browser/components/screenshots/overlay/overlay-css.patch b/src/browser/components/screenshots/overlay/overlay-css.patch index 9c3021460..4863eabbd 100644 --- a/src/browser/components/screenshots/overlay/overlay-css.patch +++ b/src/browser/components/screenshots/overlay/overlay-css.patch @@ -1,5 +1,5 @@ diff --git a/browser/components/screenshots/overlay/overlay.css b/browser/components/screenshots/overlay/overlay.css -index ee2740fc48e9b70fe17b0f27b60053209516dbbf..cc0270e0eb28c3e60216460b02d62111abb970de 100644 +index 43a5d2109ad107ce1c79eef7cb8635bc1fa813f7..c1e5648d0e71826119bda1bc18c5d16886bab8fd 100644 --- a/browser/components/screenshots/overlay/overlay.css +++ b/browser/components/screenshots/overlay/overlay.css @@ -196,6 +196,9 @@ diff --git a/src/browser/components/search/SearchUIUtils-sys-mjs.patch b/src/browser/components/search/SearchUIUtils-sys-mjs.patch index fbe2c38aa..7b5191bba 100644 --- a/src/browser/components/search/SearchUIUtils-sys-mjs.patch +++ b/src/browser/components/search/SearchUIUtils-sys-mjs.patch @@ -1,8 +1,8 @@ diff --git a/browser/components/search/SearchUIUtils.sys.mjs b/browser/components/search/SearchUIUtils.sys.mjs -index 15fdb0cd7664c2b49977902d7f4c7a117d82cf15..6aedbc18de6604b63b2586e7d9745a4c4e7e38ae 100644 +index 65daa1402a52e252360386e60471f726c1387bb3..be8f588316a8a4d7f33a324bf11f9e1f19def32d 100644 --- a/browser/components/search/SearchUIUtils.sys.mjs +++ b/browser/components/search/SearchUIUtils.sys.mjs -@@ -434,7 +434,7 @@ export var SearchUIUtils = { +@@ -444,7 +444,7 @@ export var SearchUIUtils = { triggeringSearchEngine: engine.name, }, }); diff --git a/src/browser/components/sessionstore/SessionFile-sys-mjs.patch b/src/browser/components/sessionstore/SessionFile-sys-mjs.patch index 895c4313f..6c4ad1523 100644 --- a/src/browser/components/sessionstore/SessionFile-sys-mjs.patch +++ b/src/browser/components/sessionstore/SessionFile-sys-mjs.patch @@ -1,5 +1,5 @@ diff --git a/browser/components/sessionstore/SessionFile.sys.mjs b/browser/components/sessionstore/SessionFile.sys.mjs -index 31140cb8be3b529a0952ca8dc55165690b0e2120..605c9e0aa84da0a2d3171a0573e8cd95e27bd0c4 100644 +index 5580838acd72bf0e1189d367984859529d89f5b4..e5fa6076a9cc6ada016ccc4e129cad455010a522 100644 --- a/browser/components/sessionstore/SessionFile.sys.mjs +++ b/browser/components/sessionstore/SessionFile.sys.mjs @@ -22,6 +22,7 @@ ChromeUtils.defineESModuleGetters(lazy, { @@ -10,7 +10,7 @@ index 31140cb8be3b529a0952ca8dc55165690b0e2120..605c9e0aa84da0a2d3171a0573e8cd95 }); const PREF_UPGRADE_BACKUP = "browser.sessionstore.upgradeBackup.latestBuildID"; -@@ -380,7 +381,7 @@ var SessionFileInternal = { +@@ -381,7 +382,7 @@ var SessionFileInternal = { this._readOrigin = result.origin; result.noFilesFound = noFilesFound; diff --git a/src/browser/components/sessionstore/SessionStartup-sys-mjs.patch b/src/browser/components/sessionstore/SessionStartup-sys-mjs.patch index 4425f4e0e..2c65b1657 100644 --- a/src/browser/components/sessionstore/SessionStartup-sys-mjs.patch +++ b/src/browser/components/sessionstore/SessionStartup-sys-mjs.patch @@ -1,5 +1,5 @@ diff --git a/browser/components/sessionstore/SessionStartup.sys.mjs b/browser/components/sessionstore/SessionStartup.sys.mjs -index be23213ae9ec7e59358a17276c6c3764d38d9996..229bb1346f9349892acb1e9e05109b28f5a5b45f 100644 +index 86600ffb5178599ab23270a964064ca657a3283f..ffb22990e7d9e1b79f276fe5c1eb38f2b869a57b 100644 --- a/browser/components/sessionstore/SessionStartup.sys.mjs +++ b/browser/components/sessionstore/SessionStartup.sys.mjs @@ -40,6 +40,7 @@ ChromeUtils.defineESModuleGetters(lazy, { @@ -28,7 +28,7 @@ index be23213ae9ec7e59358a17276c6c3764d38d9996..229bb1346f9349892acb1e9e05109b28 if (this._initialState == null) { // No valid session found. this._sessionType = this.NO_SESSION; -@@ -335,12 +338,7 @@ export var SessionStartup = { +@@ -336,12 +339,7 @@ export var SessionStartup = { isAutomaticRestoreEnabled() { if (this._resumeSessionEnabled === null) { this._resumeSessionEnabled = diff --git a/src/browser/components/sessionstore/SessionStore-sys-mjs.patch b/src/browser/components/sessionstore/SessionStore-sys-mjs.patch index b5a4911ce..24e438105 100644 --- a/src/browser/components/sessionstore/SessionStore-sys-mjs.patch +++ b/src/browser/components/sessionstore/SessionStore-sys-mjs.patch @@ -1,5 +1,5 @@ diff --git a/browser/components/sessionstore/SessionStore.sys.mjs b/browser/components/sessionstore/SessionStore.sys.mjs -index 2c2f43bf743ef458b378e85e9ed44a971711e1d9..429a26849cec23836f5bff3bd1a6376050311377 100644 +index 2a055f0c5f34f0a2667f659185120c07d38f4e41..959e73ab86bdb78203e3aed0c939c1b9acbe4897 100644 --- a/browser/components/sessionstore/SessionStore.sys.mjs +++ b/browser/components/sessionstore/SessionStore.sys.mjs @@ -127,6 +127,9 @@ const TAB_EVENTS = [ @@ -20,7 +20,7 @@ index 2c2f43bf743ef458b378e85e9ed44a971711e1d9..429a26849cec23836f5bff3bd1a63760 }); ChromeUtils.defineLazyGetter(lazy, "blankURI", () => { -@@ -1238,10 +1242,7 @@ var SessionStoreInternal = { +@@ -1261,10 +1265,7 @@ var SessionStoreInternal = { */ get willAutoRestore() { return ( @@ -32,7 +32,7 @@ index 2c2f43bf743ef458b378e85e9ed44a971711e1d9..429a26849cec23836f5bff3bd1a63760 ); }, -@@ -1911,6 +1912,9 @@ var SessionStoreInternal = { +@@ -1934,6 +1935,9 @@ var SessionStoreInternal = { case "TabPinned": case "TabUnpinned": case "SwapDocShells": @@ -42,7 +42,7 @@ index 2c2f43bf743ef458b378e85e9ed44a971711e1d9..429a26849cec23836f5bff3bd1a63760 this.saveStateDelayed(win); break; case "TabGroupCreate": -@@ -2020,6 +2024,10 @@ var SessionStoreInternal = { +@@ -2044,6 +2048,10 @@ var SessionStoreInternal = { this._windows[aWindow.__SSi].isTaskbarTab = true; } @@ -53,7 +53,7 @@ index 2c2f43bf743ef458b378e85e9ed44a971711e1d9..429a26849cec23836f5bff3bd1a63760 let tabbrowser = aWindow.gBrowser; // add tab change listeners to all already existing tabs -@@ -2107,6 +2115,7 @@ var SessionStoreInternal = { +@@ -2131,6 +2139,7 @@ var SessionStoreInternal = { null, "sessionstore-one-or-no-tab-restored" ); @@ -61,7 +61,7 @@ index 2c2f43bf743ef458b378e85e9ed44a971711e1d9..429a26849cec23836f5bff3bd1a63760 this._deferredAllWindowsRestored.resolve(); } // this window was opened by _openWindowWithState -@@ -2151,7 +2160,6 @@ var SessionStoreInternal = { +@@ -2175,7 +2184,6 @@ var SessionStoreInternal = { if (closedWindowState) { let newWindowState; if ( @@ -69,7 +69,7 @@ index 2c2f43bf743ef458b378e85e9ed44a971711e1d9..429a26849cec23836f5bff3bd1a63760 !lazy.SessionStartup.willRestore() ) { // We want to split the window up into pinned tabs and unpinned tabs. -@@ -2215,6 +2223,15 @@ var SessionStoreInternal = { +@@ -2239,6 +2247,15 @@ var SessionStoreInternal = { }); this._shouldRestoreLastSession = false; } @@ -85,7 +85,7 @@ index 2c2f43bf743ef458b378e85e9ed44a971711e1d9..429a26849cec23836f5bff3bd1a63760 if (this._restoreLastWindow && aWindow.toolbar.visible) { // always reset (if not a popup window) -@@ -2465,7 +2482,7 @@ var SessionStoreInternal = { +@@ -2491,7 +2508,7 @@ var SessionStoreInternal = { // 2) Flush the window. // 3) When the flush is complete, revisit our decision to store the window // in _closedWindows, and add/remove as necessary. @@ -94,7 +94,7 @@ index 2c2f43bf743ef458b378e85e9ed44a971711e1d9..429a26849cec23836f5bff3bd1a63760 this.maybeSaveClosedWindow(winData, isLastWindow); } -@@ -2486,7 +2503,7 @@ var SessionStoreInternal = { +@@ -2512,7 +2529,7 @@ var SessionStoreInternal = { // Save non-private windows if they have at // least one saveable tab or are the last window. @@ -103,7 +103,7 @@ index 2c2f43bf743ef458b378e85e9ed44a971711e1d9..429a26849cec23836f5bff3bd1a63760 this.maybeSaveClosedWindow(winData, isLastWindow); if (!isLastWindow && winData.closedId > -1) { -@@ -2582,6 +2599,7 @@ var SessionStoreInternal = { +@@ -2608,6 +2625,7 @@ var SessionStoreInternal = { let alreadyStored = winIndex != -1; // If sidebar command is truthy, i.e. sidebar is open, store sidebar settings let shouldStore = hasSaveableTabs || isLastWindow; @@ -111,7 +111,7 @@ index 2c2f43bf743ef458b378e85e9ed44a971711e1d9..429a26849cec23836f5bff3bd1a63760 if (shouldStore && !alreadyStored) { let index = this._closedWindows.findIndex(win => { -@@ -3373,7 +3391,7 @@ var SessionStoreInternal = { +@@ -3408,7 +3426,7 @@ var SessionStoreInternal = { if (!isPrivateWindow && tabState.isPrivate) { return; } @@ -120,7 +120,7 @@ index 2c2f43bf743ef458b378e85e9ed44a971711e1d9..429a26849cec23836f5bff3bd1a63760 return; } -@@ -4089,6 +4107,12 @@ var SessionStoreInternal = { +@@ -4129,6 +4147,12 @@ var SessionStoreInternal = { Math.min(tabState.index, tabState.entries.length) ); tabState.pinned = false; @@ -133,7 +133,7 @@ index 2c2f43bf743ef458b378e85e9ed44a971711e1d9..429a26849cec23836f5bff3bd1a63760 if (inBackground === false) { aWindow.gBrowser.selectedTab = newTab; -@@ -4525,6 +4549,7 @@ var SessionStoreInternal = { +@@ -4565,6 +4589,7 @@ var SessionStoreInternal = { // Append the tab if we're opening into a different window, tabIndex: aSource == aTargetWindow ? pos : Infinity, pinned: state.pinned, @@ -141,7 +141,7 @@ index 2c2f43bf743ef458b378e85e9ed44a971711e1d9..429a26849cec23836f5bff3bd1a63760 userContextId: state.userContextId, skipLoad: true, preferredRemoteType, -@@ -5374,7 +5399,7 @@ var SessionStoreInternal = { +@@ -5414,7 +5439,7 @@ var SessionStoreInternal = { for (let i = tabbrowser.pinnedTabCount; i < tabbrowser.tabs.length; i++) { let tab = tabbrowser.tabs[i]; @@ -150,7 +150,7 @@ index 2c2f43bf743ef458b378e85e9ed44a971711e1d9..429a26849cec23836f5bff3bd1a63760 removableTabs.push(tab); } } -@@ -5483,7 +5508,7 @@ var SessionStoreInternal = { +@@ -5525,7 +5550,7 @@ var SessionStoreInternal = { // collect the data for all windows for (ix in this._windows) { @@ -159,7 +159,7 @@ index 2c2f43bf743ef458b378e85e9ed44a971711e1d9..429a26849cec23836f5bff3bd1a63760 // window data is still in _statesToRestore continue; } -@@ -5625,11 +5650,12 @@ var SessionStoreInternal = { +@@ -5668,11 +5693,12 @@ var SessionStoreInternal = { } let tabbrowser = aWindow.gBrowser; @@ -173,7 +173,7 @@ index 2c2f43bf743ef458b378e85e9ed44a971711e1d9..429a26849cec23836f5bff3bd1a63760 // update the internal state data for this window for (let tab of tabs) { if (tab == aWindow.FirefoxViewHandler.tab) { -@@ -5640,6 +5666,9 @@ var SessionStoreInternal = { +@@ -5683,6 +5709,9 @@ var SessionStoreInternal = { tabsData.push(tabData); } @@ -183,7 +183,7 @@ index 2c2f43bf743ef458b378e85e9ed44a971711e1d9..429a26849cec23836f5bff3bd1a63760 // update tab group state for this window winData.groups = []; for (let tabGroup of aWindow.gBrowser.tabGroups) { -@@ -5652,7 +5681,7 @@ var SessionStoreInternal = { +@@ -5695,7 +5724,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) { @@ -192,7 +192,7 @@ index 2c2f43bf743ef458b378e85e9ed44a971711e1d9..429a26849cec23836f5bff3bd1a63760 winData.title = tabbrowser.tabs[0].label; } winData.selected = selectedIndex; -@@ -5765,8 +5794,8 @@ var SessionStoreInternal = { +@@ -5810,8 +5839,8 @@ var SessionStoreInternal = { // selectTab represents. let selectTab = 0; if (overwriteTabs) { @@ -203,7 +203,7 @@ index 2c2f43bf743ef458b378e85e9ed44a971711e1d9..429a26849cec23836f5bff3bd1a63760 selectTab = Math.min(selectTab, winData.tabs.length); } -@@ -5788,6 +5817,7 @@ var SessionStoreInternal = { +@@ -5833,6 +5862,7 @@ var SessionStoreInternal = { if (overwriteTabs) { for (let i = tabbrowser.browsers.length - 1; i >= 0; i--) { if (!tabbrowser.tabs[i].selected) { @@ -211,7 +211,7 @@ index 2c2f43bf743ef458b378e85e9ed44a971711e1d9..429a26849cec23836f5bff3bd1a63760 tabbrowser.removeTab(tabbrowser.tabs[i]); } } -@@ -5821,6 +5851,12 @@ var SessionStoreInternal = { +@@ -5866,6 +5896,12 @@ var SessionStoreInternal = { savedTabGroup => !openTabGroupIdsInWindow.has(savedTabGroup.id) ); } @@ -224,7 +224,7 @@ index 2c2f43bf743ef458b378e85e9ed44a971711e1d9..429a26849cec23836f5bff3bd1a63760 // Move the originally open tabs to the end. if (initialTabs) { -@@ -6372,6 +6408,25 @@ var SessionStoreInternal = { +@@ -6419,6 +6455,25 @@ var SessionStoreInternal = { // Most of tabData has been restored, now continue with restoring // attributes that may trigger external events. @@ -250,7 +250,7 @@ index 2c2f43bf743ef458b378e85e9ed44a971711e1d9..429a26849cec23836f5bff3bd1a63760 if (tabData.pinned) { tabbrowser.pinTab(tab); -@@ -7290,7 +7345,7 @@ var SessionStoreInternal = { +@@ -7343,7 +7398,7 @@ var SessionStoreInternal = { let groupsToSave = new Map(); for (let tIndex = 0; tIndex < window.tabs.length; ) { @@ -259,7 +259,7 @@ index 2c2f43bf743ef458b378e85e9ed44a971711e1d9..429a26849cec23836f5bff3bd1a63760 // Adjust window.selected if (tIndex + 1 < window.selected) { window.selected -= 1; -@@ -7305,7 +7360,7 @@ var SessionStoreInternal = { +@@ -7358,7 +7413,7 @@ var SessionStoreInternal = { ); // We don't want to increment tIndex here. continue; diff --git a/src/browser/components/tabbrowser/AsyncTabSwitcher-sys-mjs.patch b/src/browser/components/tabbrowser/AsyncTabSwitcher-sys-mjs.patch index e8d761cb5..18d512db3 100644 --- a/src/browser/components/tabbrowser/AsyncTabSwitcher-sys-mjs.patch +++ b/src/browser/components/tabbrowser/AsyncTabSwitcher-sys-mjs.patch @@ -1,8 +1,8 @@ diff --git a/browser/components/tabbrowser/AsyncTabSwitcher.sys.mjs b/browser/components/tabbrowser/AsyncTabSwitcher.sys.mjs -index bcd7689e9d68ef8b171c327188174334c4271e21..0a95e1137fdf4b63e0d841776ad934da1a513c6f 100644 +index 9c5e92fbd555d328ce09c0cf0ff8078584f68478..2af7a428bc830d8c12b3d3c0af375c97e6942994 100644 --- a/browser/components/tabbrowser/AsyncTabSwitcher.sys.mjs +++ b/browser/components/tabbrowser/AsyncTabSwitcher.sys.mjs -@@ -938,6 +938,7 @@ export class AsyncTabSwitcher { +@@ -939,6 +939,7 @@ export class AsyncTabSwitcher { this.tabbrowser._printPreviewBrowsers.has(browser) || this.tabbrowser.splitViewBrowsers.includes(browser) || lazy.PictureInPicture.isOriginatingBrowser(browser) diff --git a/src/browser/components/tabbrowser/TabUnloader-sys-mjs.patch b/src/browser/components/tabbrowser/TabUnloader-sys-mjs.patch index b8bd536e5..41b726016 100644 --- a/src/browser/components/tabbrowser/TabUnloader-sys-mjs.patch +++ b/src/browser/components/tabbrowser/TabUnloader-sys-mjs.patch @@ -1,5 +1,5 @@ diff --git a/browser/components/tabbrowser/TabUnloader.sys.mjs b/browser/components/tabbrowser/TabUnloader.sys.mjs -index 2a3fcbe9dfb6328cabba891697990e2467973f6e..22fdaaefa71b3c37cbccbd7ae4db044b1057f1f2 100644 +index aefccef39f0b81176a5710a794e8a5e2650d6507..e073c65790df6d55e827a4f4596199f4f1a99a57 100644 --- a/browser/components/tabbrowser/TabUnloader.sys.mjs +++ b/browser/components/tabbrowser/TabUnloader.sys.mjs @@ -52,7 +52,7 @@ let CRITERIA_WEIGHT = 1; diff --git a/src/browser/components/tabbrowser/TabsList-sys-mjs.patch b/src/browser/components/tabbrowser/TabsList-sys-mjs.patch index 6a7c9e503..eb3402bae 100644 --- a/src/browser/components/tabbrowser/TabsList-sys-mjs.patch +++ b/src/browser/components/tabbrowser/TabsList-sys-mjs.patch @@ -1,5 +1,5 @@ diff --git a/browser/components/tabbrowser/TabsList.sys.mjs b/browser/components/tabbrowser/TabsList.sys.mjs -index b394a980869d5e5df01b6afdd81e0f41c090e6ec..236c99db0dfa5ebcba50d55c1e4eb6ab7b8110b2 100644 +index 400a69449e6477da754b06530eef7c15ea9ad887..7dd22f481dade16286533acffc2c2321d4c34b41 100644 --- a/browser/components/tabbrowser/TabsList.sys.mjs +++ b/browser/components/tabbrowser/TabsList.sys.mjs @@ -87,7 +87,7 @@ class TabsListBase { diff --git a/src/browser/components/tabbrowser/content/browser-ctrlTab-js.patch b/src/browser/components/tabbrowser/content/browser-ctrlTab-js.patch index af58c3dd3..760cc839d 100644 --- a/src/browser/components/tabbrowser/content/browser-ctrlTab-js.patch +++ b/src/browser/components/tabbrowser/content/browser-ctrlTab-js.patch @@ -1,8 +1,8 @@ diff --git a/browser/components/tabbrowser/content/browser-ctrlTab.js b/browser/components/tabbrowser/content/browser-ctrlTab.js -index 958728cde19dd7cc24692baa89e11fcab816ab82..32e2b6af2536133f170bd5e14c47392ded8440eb 100644 +index 3330dc133c120e7fbeecd2a36c71f9dfba60b3fb..0243cdfe67e5eb3f68fc7cde66bb3809e79bd6c3 100644 --- a/browser/components/tabbrowser/content/browser-ctrlTab.js +++ b/browser/components/tabbrowser/content/browser-ctrlTab.js -@@ -249,7 +249,8 @@ var ctrlTab = { +@@ -252,7 +252,8 @@ var ctrlTab = { }, get tabList() { @@ -12,7 +12,7 @@ index 958728cde19dd7cc24692baa89e11fcab816ab82..32e2b6af2536133f170bd5e14c47392d }, init: function ctrlTab_init() { -@@ -460,7 +461,7 @@ var ctrlTab = { +@@ -457,7 +458,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 958728cde19dd7cc24692baa89e11fcab816ab82..32e2b6af2536133f170bd5e14c47392d return; } -@@ -484,7 +485,7 @@ var ctrlTab = { +@@ -481,7 +482,7 @@ var ctrlTab = { }, open: function ctrlTab_open() { @@ -30,7 +30,7 @@ index 958728cde19dd7cc24692baa89e11fcab816ab82..32e2b6af2536133f170bd5e14c47392d return; } -@@ -763,7 +764,7 @@ var ctrlTab = { +@@ -751,7 +752,7 @@ var ctrlTab = { _initRecentlyUsedTabs() { this._recentlyUsedTabs = Array.prototype.filter.call( gBrowser.tabs, diff --git a/src/browser/components/tabbrowser/content/tabbrowser-js.patch b/src/browser/components/tabbrowser/content/tabbrowser-js.patch index 364bc41da..a8365a0ab 100644 --- a/src/browser/components/tabbrowser/content/tabbrowser-js.patch +++ b/src/browser/components/tabbrowser/content/tabbrowser-js.patch @@ -1,8 +1,8 @@ diff --git a/browser/components/tabbrowser/content/tabbrowser.js b/browser/components/tabbrowser/content/tabbrowser.js -index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078ef3b1fca 100644 +index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..f3966d85049735538b24424f42d4a690eaf7bbec 100644 --- a/browser/components/tabbrowser/content/tabbrowser.js +++ b/browser/components/tabbrowser/content/tabbrowser.js -@@ -386,6 +386,7 @@ +@@ -398,6 +398,7 @@ * @type {MozBrowser[]} */ get splitViewBrowsers() { @@ -10,7 +10,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 const browsers = []; if (this.#activeSplitView) { for (const tab of this.#activeSplitView.tabs) { -@@ -450,15 +451,66 @@ +@@ -462,15 +463,66 @@ return this.tabContainer.visibleTabs; } @@ -79,7 +79,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 set selectedTab(val) { if ( gSharedTabWarning.willShowSharedTabWarning(val) || -@@ -534,6 +586,10 @@ +@@ -546,6 +598,10 @@ userContextId = parseInt(tabArgument.getAttribute("usercontextid"), 10); } @@ -90,7 +90,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 if (tabArgument && tabArgument.linkedBrowser) { remoteType = tabArgument.linkedBrowser.remoteType; initialBrowsingContextGroupId = -@@ -613,6 +669,7 @@ +@@ -625,6 +681,7 @@ this.tabpanels.appendChild(panel); let tab = this.tabs[0]; @@ -98,7 +98,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 tab.linkedPanel = uniqueId; this._selectedTab = tab; this._selectedBrowser = browser; -@@ -898,13 +955,18 @@ +@@ -912,13 +969,18 @@ } this.showTab(aTab); @@ -118,7 +118,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 aTab.setAttribute("pinned", "true"); this._updateTabBarForPinnedTabs(); -@@ -917,11 +979,18 @@ +@@ -931,11 +993,18 @@ } this.#handleTabMove(aTab, () => { @@ -138,7 +138,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 }); aTab.style.marginInlineStart = ""; -@@ -1098,6 +1167,9 @@ +@@ -1112,6 +1181,9 @@ let LOCAL_PROTOCOLS = ["chrome:", "about:", "resource:", "data:"]; @@ -148,7 +148,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 if ( aIconURL && !LOCAL_PROTOCOLS.some(protocol => aIconURL.startsWith(protocol)) -@@ -1107,6 +1179,9 @@ +@@ -1121,6 +1193,9 @@ ); return; } @@ -158,7 +158,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 let browser = this.getBrowserForTab(aTab); browser.mIconURL = aIconURL; -@@ -1379,7 +1454,6 @@ +@@ -1393,7 +1468,6 @@ // Preview mode should not reset the owner if (!this._previewMode && !oldTab.selected) { @@ -166,7 +166,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 } let lastRelatedTab = this._lastRelatedTabMap.get(oldTab); -@@ -1470,6 +1544,7 @@ +@@ -1484,6 +1558,7 @@ if (!this._previewMode) { newTab.recordTimeFromUnloadToReload(); newTab.updateLastAccessed(); @@ -174,7 +174,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 oldTab.updateLastAccessed(); // if this is the foreground window, update the last-seen timestamps. if (this.ownerGlobal == BrowserWindowTracker.getTopWindow()) { -@@ -1622,6 +1697,9 @@ +@@ -1636,6 +1711,9 @@ } let activeEl = document.activeElement; @@ -184,7 +184,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 // If focus is on the old tab, move it to the new tab. if (activeEl == oldTab) { newTab.focus(); -@@ -1945,6 +2023,11 @@ +@@ -1959,6 +2037,11 @@ } _setTabLabel(aTab, aLabel, { beforeTabOpen, isContentTitle, isURL } = {}) { @@ -196,7 +196,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 if (!aLabel || aLabel.includes("about:reader?")) { return false; } -@@ -2053,7 +2136,7 @@ +@@ -2067,7 +2150,7 @@ newIndex = this.selectedTab._tPos + 1; } @@ -205,7 +205,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 if (this.isTabGroupLabel(targetTab)) { throw new Error( "Replacing a tab group label with a tab is not supported" -@@ -2328,6 +2411,7 @@ +@@ -2342,6 +2425,7 @@ uriIsAboutBlank, userContextId, skipLoad, @@ -213,7 +213,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 } = {}) { let b = document.createXULElement("browser"); // Use the JSM global to create the permanentKey, so that if the -@@ -2401,8 +2485,7 @@ +@@ -2415,8 +2499,7 @@ // we use a different attribute name for this? b.setAttribute("name", name); } @@ -223,7 +223,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 b.setAttribute("transparent", "true"); } -@@ -2567,7 +2650,7 @@ +@@ -2581,7 +2664,7 @@ let panel = this.getPanel(browser); let uniqueId = this._generateUniquePanelID(); @@ -232,7 +232,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 aTab.linkedPanel = uniqueId; // Inject the into the DOM if necessary. -@@ -2626,8 +2709,8 @@ +@@ -2640,8 +2723,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) { @@ -243,7 +243,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 } else { aTab.linkedBrowser.browsingContext.hasSiblings = this.tabs.length > 1; } -@@ -2814,7 +2897,6 @@ +@@ -2828,7 +2911,6 @@ this.selectedTab = this.addTrustedTab(BROWSER_NEW_TAB_URL, { tabIndex: tab._tPos + 1, userContextId: tab.userContextId, @@ -251,7 +251,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 focusUrlBar: true, }); resolve(this.selectedBrowser); -@@ -2923,6 +3005,9 @@ +@@ -2938,6 +3020,9 @@ schemelessInput, hasValidUserGestureActivation = false, textDirectiveUserActivation = false, @@ -261,7 +261,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 } = {} ) { // all callers of addTab that pass a params object need to pass -@@ -2933,10 +3018,17 @@ +@@ -2948,10 +3033,17 @@ ); } @@ -279,7 +279,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 // If we're opening a foreground tab, set the owner by default. ownerTab ??= inBackground ? null : this.selectedTab; -@@ -2944,6 +3036,7 @@ +@@ -2959,6 +3051,7 @@ if (this.selectedTab.owner) { this.selectedTab.owner = null; } @@ -287,7 +287,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 // Find the tab that opened this one, if any. This is used for // determining positioning, and inherited attributes such as the -@@ -2996,6 +3089,21 @@ +@@ -3011,6 +3104,21 @@ noInitialLabel, skipBackgroundNotify, }); @@ -309,7 +309,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 if (insertTab) { // Insert the tab into the tab container in the correct position. this.#insertTabAtIndex(t, { -@@ -3004,6 +3112,7 @@ +@@ -3019,6 +3127,7 @@ ownerTab, openerTab, pinned, @@ -317,7 +317,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 bulkOrderedOpen, tabGroup: tabGroup ?? openerTab?.group, }); -@@ -3022,6 +3131,7 @@ +@@ -3037,6 +3146,7 @@ openWindowInfo, skipLoad, triggeringRemoteType, @@ -325,7 +325,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 })); if (focusUrlBar) { -@@ -3146,6 +3256,12 @@ +@@ -3161,6 +3271,12 @@ } } @@ -338,19 +338,25 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 // Additionally send pinned tab events if (pinned) { this.#notifyPinnedStatus(t); -@@ -3349,10 +3465,10 @@ +@@ -3375,6 +3491,7 @@ isAdoptingGroup = false, isUserTriggered = false, telemetryUserCreateSource = "unknown", + forSplitView = false, } = {} ) { - if (!tabs?.length) { -- throw new Error("Cannot create tab group with zero tabs"); + if ( +@@ -3385,9 +3502,6 @@ + !this.isSplitViewWrapper(tabOrSplitView) + ) + ) { +- throw new Error( +- "Cannot create tab group with zero tabs or split views" +- ); } if (!color) { -@@ -3373,9 +3489,14 @@ +@@ -3408,9 +3522,14 @@ label, isAdoptingGroup ); @@ -358,16 +364,16 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 + if (forSplitView) { + group.setAttribute('split-view-group', true); + } -+ group.essential = tabs.some(tab => tab.hasAttribute("essential")); -+ group.pinned = group.essential || tabs.some(tab => tab.pinned); ++ group.essential = tabsAndSplitViews.some(tab => tab.hasAttribute("essential")); ++ group.pinned = group.essential || tabsAndSplitViews.some(tab => tab.pinned); + if (forSplitView && !insertBefore?.group?.isZenFolder) insertBefore = insertBefore?.group ?? insertBefore; + insertBefore.before( group, - insertBefore?.group ?? insertBefore ); - group.addTabs(tabs); + group.addTabs(tabsAndSplitViews); -@@ -3496,7 +3617,7 @@ +@@ -3531,7 +3650,7 @@ } this.#handleTabMove(tab, () => @@ -376,7 +382,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 ); } -@@ -3698,6 +3819,7 @@ +@@ -3746,6 +3865,7 @@ openWindowInfo, skipLoad, triggeringRemoteType, @@ -384,7 +390,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 } ) { // If we don't have a preferred remote type (or it is `NOT_REMOTE`), and -@@ -3767,6 +3889,7 @@ +@@ -3815,6 +3935,7 @@ openWindowInfo, name, skipLoad, @@ -392,7 +398,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 }); } -@@ -3955,7 +4078,7 @@ +@@ -4003,7 +4124,7 @@ // Add a new tab if needed. if (!tab) { let createLazyBrowser = @@ -401,7 +407,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 let url = "about:blank"; if (tabData.entries?.length) { -@@ -3992,8 +4115,10 @@ +@@ -4040,8 +4161,10 @@ insertTab: false, skipLoad: true, preferredRemoteType, @@ -413,7 +419,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 if (select) { tabToSelect = tab; } -@@ -4005,7 +4130,8 @@ +@@ -4053,7 +4176,8 @@ this.pinTab(tab); // Then ensure all the tab open/pinning information is sent. this._fireTabOpen(tab, {}); @@ -423,7 +429,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 let { groupId } = tabData; const tabGroup = tabGroupWorkingData.get(groupId); // if a tab refers to a tab group we don't know, skip any group -@@ -4019,7 +4145,10 @@ +@@ -4067,7 +4191,10 @@ tabGroup.stateData.id, tabGroup.stateData.color, tabGroup.stateData.collapsed, @@ -435,7 +441,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 ); tabsFragment.appendChild(tabGroup.node); } -@@ -4064,9 +4193,23 @@ +@@ -4112,9 +4239,23 @@ // to remove the old selected tab. if (tabToSelect) { let leftoverTab = this.selectedTab; @@ -451,15 +457,15 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 + gZenWorkspaces._initialTab._shouldRemove = true; + } + } - } ++ } + else { + gZenWorkspaces._tabToRemoveForEmpty = this.selectedTab; -+ } + } + this._hasAlreadyInitializedZenSessionStore = true; if (tabs.length > 1 || !tabs[0].selected) { this._updateTabsAfterInsert(); -@@ -4257,11 +4400,14 @@ +@@ -4305,11 +4446,14 @@ if (ownerTab) { tab.owner = ownerTab; } @@ -475,7 +481,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 if ( !bulkOrderedOpen && ((openerTab && -@@ -4273,7 +4419,7 @@ +@@ -4321,7 +4465,7 @@ let lastRelatedTab = openerTab && this._lastRelatedTabMap.get(openerTab); let previousTab = lastRelatedTab || openerTab || this.selectedTab; @@ -484,16 +490,16 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 tabGroup = previousTab.group; } if ( -@@ -4284,7 +4430,7 @@ - ) { - elementIndex = Infinity; +@@ -4337,7 +4481,7 @@ + previousTab.splitview + ) + 1; } else if (previousTab.visible) { - elementIndex = previousTab.elementIndex + 1; + elementIndex = (typeof previousTab.elementIndex === 'undefined') ? elementIndex : (previousTab.elementIndex + 1); } else if (previousTab == FirefoxViewHandler.tab) { elementIndex = 0; } -@@ -4312,14 +4458,14 @@ +@@ -4365,14 +4509,14 @@ } // Ensure index is within bounds. if (tab.pinned) { @@ -512,16 +518,16 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 if (pinned && !itemAfter?.pinned) { itemAfter = null; -@@ -4330,7 +4476,7 @@ +@@ -4385,7 +4529,7 @@ this.tabContainer._invalidateCachedTabs(); - if (tabGroup) { + if (tabGroup && !tabGroup.hasAttribute("split-view-group")) { - 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); -@@ -4358,7 +4504,11 @@ + if ( + (this.isTab(itemAfter) && itemAfter.group == tabGroup) || + this.isSplitViewWrapper(itemAfter) +@@ -4416,7 +4560,11 @@ const tabContainer = pinned ? this.tabContainer.pinnedTabsContainer : this.tabContainer; @@ -532,8 +538,8 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 + } } - this._updateTabsAfterInsert(); -@@ -4366,6 +4516,7 @@ + if (tab.group?.collapsed) { +@@ -4431,6 +4579,7 @@ if (pinned) { this._updateTabBarForPinnedTabs(); } @@ -541,7 +547,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 TabBarVisibility.update(); } -@@ -4916,6 +5067,7 @@ +@@ -4983,6 +5132,7 @@ telemetrySource, } = {} ) { @@ -549,7 +555,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 // When 'closeWindowWithLastTab' pref is enabled, closing all tabs // can be considered equivalent to closing the window. if ( -@@ -5005,6 +5157,7 @@ +@@ -5072,6 +5222,7 @@ if (lastToClose) { this.removeTab(lastToClose, aParams); } @@ -557,7 +563,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 } catch (e) { console.error(e); } -@@ -5043,6 +5196,12 @@ +@@ -5110,6 +5261,12 @@ aTab._closeTimeNoAnimTimerId = Glean.browserTabclose.timeNoAnim.start(); } @@ -570,7 +576,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 // Handle requests for synchronously removing an already // asynchronously closing tab. if (!animate && aTab.closing) { -@@ -5057,6 +5216,9 @@ +@@ -5124,6 +5281,9 @@ // state). let tabWidth = window.windowUtils.getBoundsWithoutFlushing(aTab).width; let isLastTab = this.#isLastTabInWindow(aTab); @@ -580,7 +586,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 if ( !this._beginRemoveTab(aTab, { closeWindowFastpath: true, -@@ -5105,7 +5267,13 @@ +@@ -5172,7 +5332,13 @@ // We're not animating, so we can cancel the animation stopwatch. Glean.browserTabclose.timeAnim.cancel(aTab._closeTimeAnimTimerId); aTab._closeTimeAnimTimerId = null; @@ -595,7 +601,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 return; } -@@ -5239,7 +5407,7 @@ +@@ -5306,7 +5472,7 @@ closeWindowWithLastTab != null ? closeWindowWithLastTab : !window.toolbar.visible || @@ -604,7 +610,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 if (closeWindow) { // We've already called beforeunload on all the relevant tabs if we get here, -@@ -5263,6 +5431,7 @@ +@@ -5330,6 +5496,7 @@ newTab = true; } @@ -612,7 +618,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 aTab._endRemoveArgs = [closeWindow, newTab]; // swapBrowsersAndCloseOther will take care of closing the window without animation. -@@ -5303,13 +5472,7 @@ +@@ -5370,13 +5537,7 @@ aTab._mouseleave(); if (newTab) { @@ -627,7 +633,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 } else { TabBarVisibility.update(); } -@@ -5442,6 +5605,7 @@ +@@ -5509,6 +5670,7 @@ this.tabs[i]._tPos = i; } @@ -635,7 +641,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 if (!this._windowIsClosing) { // update tab close buttons state this.tabContainer._updateCloseButtons(); -@@ -5663,6 +5827,7 @@ +@@ -5732,6 +5894,7 @@ } let excludeTabs = new Set(aExcludeTabs); @@ -643,7 +649,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 // If this tab has a successor, it should be selectable, since // hiding or closing a tab removes that tab as a successor. -@@ -5675,13 +5840,13 @@ +@@ -5744,13 +5907,13 @@ !excludeTabs.has(aTab.owner) && Services.prefs.getBoolPref("browser.tabs.selectOwnerOnClose") ) { @@ -659,7 +665,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 ); let tab = this.tabContainer.findNextTab(aTab, { -@@ -5697,7 +5862,7 @@ +@@ -5766,7 +5929,7 @@ } if (tab) { @@ -668,7 +674,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 } // If no qualifying visible tab was found, see if there is a tab in -@@ -5718,7 +5883,7 @@ +@@ -5787,7 +5950,7 @@ }); } @@ -677,7 +683,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 } _blurTab(aTab) { -@@ -5729,7 +5894,7 @@ +@@ -5798,7 +5961,7 @@ * @returns {boolean} * False if swapping isn't permitted, true otherwise. */ @@ -686,7 +692,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 // Do not allow transfering a private tab to a non-private window // and vice versa. if ( -@@ -5783,6 +5948,7 @@ +@@ -5852,6 +6015,7 @@ // fire the beforeunload event in the process. Close the other // window if this was its last tab. if ( @@ -694,7 +700,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 !remoteBrowser._beginRemoveTab(aOtherTab, { adoptedByTab: aOurTab, closeWindowWithLastTab: true, -@@ -5794,7 +5960,7 @@ +@@ -5863,7 +6027,7 @@ // If this is the last tab of the window, hide the window // immediately without animation before the docshell swap, to avoid // about:blank being painted. @@ -703,7 +709,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 if (closeWindow) { let win = aOtherTab.ownerGlobal; win.windowUtils.suppressAnimation(true); -@@ -5918,11 +6084,13 @@ +@@ -5987,11 +6151,13 @@ } // Finish tearing down the tab that's going away. @@ -717,7 +723,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 this.setTabTitle(aOurTab); -@@ -6124,10 +6292,10 @@ +@@ -6193,10 +6359,10 @@ SessionStore.deleteCustomTabValue(aTab, "hiddenBy"); } @@ -730,7 +736,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 aTab.selected || aTab.closing || // Tabs that are sharing the screen, microphone or camera cannot be hidden. -@@ -6185,7 +6353,8 @@ +@@ -6254,7 +6420,8 @@ * * @param {MozTabbrowserTab|MozTabbrowserTabGroup|MozTabbrowserTabGroup.labelElement} aTab */ @@ -740,7 +746,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 if (this.tabs.length == 1) { return null; } -@@ -6209,12 +6378,14 @@ +@@ -6278,12 +6445,14 @@ } // tell a new window to take the "dropped" tab @@ -756,7 +762,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 } /** -@@ -6319,7 +6490,7 @@ +@@ -6388,7 +6557,7 @@ * `true` if element is a `` */ isTabGroup(element) { @@ -765,7 +771,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 } /** -@@ -6404,8 +6575,8 @@ +@@ -6473,8 +6642,8 @@ } // Don't allow mixing pinned and unpinned tabs. @@ -776,7 +782,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 } else { tabIndex = Math.max(tabIndex, this.pinnedTabCount); } -@@ -6431,10 +6602,16 @@ +@@ -6500,10 +6669,16 @@ this.#handleTabMove( element, () => { @@ -795,7 +801,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 if (neighbor && this.isTab(element) && tabIndex > element._tPos) { neighbor.after(element); } else { -@@ -6492,23 +6669,31 @@ +@@ -6561,23 +6736,31 @@ #moveTabNextTo(element, targetElement, moveBefore = false, metricsContext) { if (this.isTabGroupLabel(targetElement)) { targetElement = targetElement.group; @@ -833,7 +839,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 } 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 -@@ -6521,14 +6706,34 @@ +@@ -6590,14 +6773,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. @@ -869,7 +875,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 element.pinned ? this.tabContainer.pinnedTabsContainer : this.tabContainer; -@@ -6537,7 +6742,7 @@ +@@ -6606,7 +6809,7 @@ element, () => { if (moveBefore) { @@ -878,10 +884,10 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 } else if (targetElement) { targetElement.after(element); } else { -@@ -6607,10 +6812,10 @@ +@@ -6676,10 +6879,10 @@ * @param {TabMetricsContext} [metricsContext] */ - moveTabToGroup(aTab, aGroup, metricsContext) { + moveTabToExistingGroup(aTab, aGroup, metricsContext) { - if (!this.isTab(aTab)) { + if (!this.isTab(aTab) && !aTab.hasAttribute('split-view-group')) { throw new Error("Can only move a tab into a tab group"); @@ -891,7 +897,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 return; } if (aTab.group && aTab.group.id === aGroup.id) { -@@ -6656,6 +6861,7 @@ +@@ -6751,6 +6954,7 @@ let state = { tabIndex: tab._tPos, @@ -899,7 +905,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 }; if (tab.visible) { state.elementIndex = tab.elementIndex; -@@ -6682,7 +6888,7 @@ +@@ -6777,7 +6981,7 @@ let changedTabGroup = previousTabState.tabGroupId != currentTabState.tabGroupId; @@ -908,7 +914,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 tab.dispatchEvent( new CustomEvent("TabMove", { bubbles: true, -@@ -6723,6 +6929,10 @@ +@@ -6818,6 +7022,10 @@ moveActionCallback(); @@ -919,7 +925,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 // Clear tabs cache after moving nodes because the order of tabs may have // changed. this.tabContainer._invalidateCachedTabs(); -@@ -6815,6 +7025,8 @@ +@@ -6910,6 +7118,8 @@ params.userContextId = aTab.getAttribute("usercontextid"); } let newTab = this.addWebTab("about:blank", params); @@ -928,7 +934,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 let newBrowser = this.getBrowserForTab(newTab); aTab.container.tabDragAndDrop.finishAnimateTabMove(); -@@ -7623,7 +7835,7 @@ +@@ -7718,7 +7928,7 @@ // preventDefault(). It will still raise the window if appropriate. break; } @@ -937,7 +943,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 window.focus(); aEvent.preventDefault(); break; -@@ -7640,7 +7852,6 @@ +@@ -7735,7 +7945,6 @@ } case "TabGroupCollapse": aEvent.target.tabs.forEach(tab => { @@ -945,7 +951,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 }); break; case "TabGroupCreateByUser": -@@ -7800,7 +8011,9 @@ +@@ -7895,7 +8104,9 @@ let filter = this._tabFilters.get(tab); if (filter) { @@ -955,7 +961,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 let listener = this._tabListeners.get(tab); if (listener) { -@@ -8589,6 +8802,7 @@ +@@ -8698,6 +8909,7 @@ aWebProgress.isTopLevel ) { this.mTab.setAttribute("busy", "true"); @@ -963,7 +969,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 gBrowser._tabAttrModified(this.mTab, ["busy"]); this.mTab._notselectedsinceload = !this.mTab.selected; } -@@ -8670,6 +8884,7 @@ +@@ -8778,6 +8990,7 @@ // known defaults. Note we use the original URL since about:newtab // redirects to a prerendered page. const shouldRemoveFavicon = @@ -971,7 +977,7 @@ index 42027bfa55eab8ea9298a7d425f2ded45188f7f3..d69787a3a57dcccce8616457d7eca078 !this.mBrowser.mIconURL && !ignoreBlank && !(originalLocation.spec in FAVICON_DEFAULTS); -@@ -9623,7 +9838,7 @@ var TabContextMenu = { +@@ -9803,7 +10016,7 @@ var TabContextMenu = { ); contextUnpinSelectedTabs.hidden = !this.contextTab.pinned || !this.multiselected; diff --git a/src/browser/components/tabbrowser/content/tabgroup-js.patch b/src/browser/components/tabbrowser/content/tabgroup-js.patch index 1fb4ef153..ad0d2ccba 100644 --- a/src/browser/components/tabbrowser/content/tabgroup-js.patch +++ b/src/browser/components/tabbrowser/content/tabgroup-js.patch @@ -1,5 +1,5 @@ diff --git a/browser/components/tabbrowser/content/tabgroup.js b/browser/components/tabbrowser/content/tabgroup.js -index 394b2af2e187b82bb3e98ebcdc6e66b63036e20d..e92927612abf12631c384a8f54b6a607fb699424 100644 +index 9abf115062e7c86196d7cb6b8ac82a9bb63b5a65..150b0266c979bcfec84e0c1975f91bee3c507b39 100644 --- a/browser/components/tabbrowser/content/tabgroup.js +++ b/browser/components/tabbrowser/content/tabgroup.js @@ -14,11 +14,11 @@ @@ -188,15 +188,15 @@ index 394b2af2e187b82bb3e98ebcdc6e66b63036e20d..e92927612abf12631c384a8f54b6a607 } /** -@@ -553,7 +631,6 @@ - addTabs(tabs, metricsContext) { - for (let tab of tabs) { - if (tab.pinned) { -- tab.ownerGlobal.gBrowser.unpinTab(tab); - } - let tabToMove = - this.ownerGlobal === tab.ownerGlobal -@@ -616,7 +693,7 @@ +@@ -560,7 +638,6 @@ + ); + } else { + if (tabOrSplitView.pinned) { +- tabOrSplitView.ownerGlobal.gBrowser.unpinTab(tabOrSplitView); + } + let tabToMove = + this.ownerGlobal === tabOrSplitView.ownerGlobal +@@ -625,7 +702,7 @@ */ on_click(event) { let isToggleElement = @@ -205,7 +205,7 @@ index 394b2af2e187b82bb3e98ebcdc6e66b63036e20d..e92927612abf12631c384a8f54b6a607 event.target === this.#overflowCountLabel; if (isToggleElement && event.button === 0) { event.preventDefault(); -@@ -687,5 +764,6 @@ +@@ -696,5 +773,6 @@ } } diff --git a/src/browser/components/tabbrowser/content/tabs-js.patch b/src/browser/components/tabbrowser/content/tabs-js.patch index f3f6deae8..1eb1a7b6d 100644 --- a/src/browser/components/tabbrowser/content/tabs-js.patch +++ b/src/browser/components/tabbrowser/content/tabs-js.patch @@ -1,8 +1,8 @@ diff --git a/browser/components/tabbrowser/content/tabs.js b/browser/components/tabbrowser/content/tabs.js -index 6b6c04599fe80983d13d2069ca62b99d8ad70271..ebe4818a71b37e8b7cd2937f72cc60f202dadef8 100644 +index a61b4e7af40f1404bf3555a7011c6211de917635..bb3c822ad14c4ebf0b8792665ff8242f97e501d9 100644 --- a/browser/components/tabbrowser/content/tabs.js +++ b/browser/components/tabbrowser/content/tabs.js -@@ -235,7 +235,7 @@ +@@ -240,7 +240,7 @@ true ) ? new window.TabStacking(this) @@ -11,7 +11,7 @@ index 6b6c04599fe80983d13d2069ca62b99d8ad70271..ebe4818a71b37e8b7cd2937f72cc60f2 this.tabDragAndDrop.init(); } -@@ -436,7 +436,7 @@ +@@ -453,7 +453,7 @@ // and we're not hitting the scroll buttons. if ( event.button != 0 || @@ -20,7 +20,7 @@ index 6b6c04599fe80983d13d2069ca62b99d8ad70271..ebe4818a71b37e8b7cd2937f72cc60f2 event.composedTarget.localName == "toolbarbutton" ) { return; -@@ -517,7 +517,6 @@ +@@ -534,7 +534,6 @@ }); } } else if (isTabGroupLabel(event.target)) { @@ -28,7 +28,7 @@ index 6b6c04599fe80983d13d2069ca62b99d8ad70271..ebe4818a71b37e8b7cd2937f72cc60f2 } else if ( event.originalTarget.closest("scrollbox") && !Services.prefs.getBoolPref( -@@ -553,6 +552,9 @@ +@@ -570,6 +569,9 @@ } on_keydown(event) { @@ -38,7 +38,7 @@ index 6b6c04599fe80983d13d2069ca62b99d8ad70271..ebe4818a71b37e8b7cd2937f72cc60f2 let { altKey, shiftKey } = event; let [accel, nonAccel] = AppConstants.platform == "macosx" -@@ -747,7 +749,6 @@ +@@ -764,7 +766,6 @@ this._updateCloseButtons(); if (!this.#animatingGroups.size) { @@ -46,7 +46,7 @@ index 6b6c04599fe80983d13d2069ca62b99d8ad70271..ebe4818a71b37e8b7cd2937f72cc60f2 } document -@@ -808,7 +809,7 @@ +@@ -825,7 +826,7 @@ } get newTabButton() { @@ -55,7 +55,7 @@ index 6b6c04599fe80983d13d2069ca62b99d8ad70271..ebe4818a71b37e8b7cd2937f72cc60f2 } get verticalMode() { -@@ -824,6 +825,7 @@ +@@ -841,6 +842,7 @@ } get overflowing() { @@ -63,7 +63,7 @@ index 6b6c04599fe80983d13d2069ca62b99d8ad70271..ebe4818a71b37e8b7cd2937f72cc60f2 return this.hasAttribute("overflow"); } -@@ -837,29 +839,56 @@ +@@ -854,29 +856,56 @@ if (pinnedChildren?.at(-1)?.id == "pinned-tabs-container-periphery") { pinnedChildren.pop(); } @@ -93,7 +93,7 @@ index 6b6c04599fe80983d13d2069ca62b99d8ad70271..ebe4818a71b37e8b7cd2937f72cc60f2 + } else if (tab.classList.contains("zen-tab-group-start")) { + tabs.splice(i, 1); + } -+ } + } + }; + expandTabs(pinnedTabs); + expandTabs(unpinnedChildren); @@ -114,7 +114,7 @@ index 6b6c04599fe80983d13d2069ca62b99d8ad70271..ebe4818a71b37e8b7cd2937f72cc60f2 + // remove the separator from the list + allTabs.splice(i, 1); + i--; - } ++ } + i++; } - @@ -130,42 +130,55 @@ index 6b6c04599fe80983d13d2069ca62b99d8ad70271..ebe4818a71b37e8b7cd2937f72cc60f2 } /** -@@ -926,17 +955,10 @@ - - let elementIndex = 0; +@@ -944,29 +973,28 @@ + return this.#focusableItems; + } - let unpinnedChildren = Array.from(this.arrowScrollbox.children); - let pinnedChildren = Array.from(this.pinnedTabsContainer.children); ++ let elementIndex = 0; + let children = gZenWorkspaces.tabboxChildrenWithoutEmpty; let focusableItems = []; - 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, ...(gZenWorkspaces.activeWorkspaceElement?.hasCollapsedPinnedTabs ? [] : this.pinnedTabsContainer.children), ...children]) { if (isTab(child) && child.visible) { - child.elementIndex = elementIndex++; focusableItems.push(child); -@@ -944,11 +966,13 @@ - child.labelElement.elementIndex = elementIndex++; + } else if (isTabGroup(child)) { focusableItems.push(child.labelElement); - +- - let visibleTabsInGroup = child.tabs.filter(tab => tab.visible); + if (!child.hasAttribute("split-view-group")) { + let visibleTabsInGroup = child.childGroupsAndTabs.filter(tab => tab.visible); - visibleTabsInGroup.forEach(tab => { - tab.elementIndex = elementIndex++; - }); ++ focusableItems.push(...visibleTabsInGroup); + } } else if (child.tagName == "tab-split-view-wrapper") { let visibleTabsInSplitView = child.tabs.filter(tab => tab.visible); - visibleTabsInSplitView.forEach(tab => { -@@ -992,6 +1016,7 @@ + focusableItems.push(...visibleTabsInSplitView); + } + } +- ++ focusableItems.forEach(item => { ++ item.elementIndex = elementIndex++; ++ }); + this.#focusableItems = focusableItems; + + return this.#focusableItems; +@@ -979,6 +1007,7 @@ + * focusable (ex, we don't want the splitview container to be focusable, only its children). + */ + get dragAndDropElements() { ++ return this.ariaFocusableItems; + if (this.#dragAndDropElements) { + return this.#dragAndDropElements; + } +@@ -1050,6 +1079,7 @@ _invalidateCachedTabs() { this.#allTabs = null; this._invalidateCachedVisibleTabs(); @@ -173,7 +186,7 @@ index 6b6c04599fe80983d13d2069ca62b99d8ad70271..ebe4818a71b37e8b7cd2937f72cc60f2 } _invalidateCachedVisibleTabs() { -@@ -1095,7 +1120,7 @@ +@@ -1154,7 +1184,7 @@ if (node == null) { // We have a container for non-tab elements at the end of the scrollbox. @@ -182,7 +195,7 @@ index 6b6c04599fe80983d13d2069ca62b99d8ad70271..ebe4818a71b37e8b7cd2937f72cc60f2 } node.before(tab); -@@ -1193,7 +1218,7 @@ +@@ -1252,7 +1282,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. @@ -191,7 +204,7 @@ index 6b6c04599fe80983d13d2069ca62b99d8ad70271..ebe4818a71b37e8b7cd2937f72cc60f2 const newTab2 = this.newTabButton; const newTabVertical = document.getElementById( "vertical-tabs-newtab-button" -@@ -1294,8 +1319,10 @@ +@@ -1353,8 +1383,10 @@ */ _handleTabSelect(aInstant) { let selectedTab = this.selectedItem; @@ -202,7 +215,7 @@ index 6b6c04599fe80983d13d2069ca62b99d8ad70271..ebe4818a71b37e8b7cd2937f72cc60f2 selectedTab._notselectedsinceload = false; } -@@ -1304,7 +1331,7 @@ +@@ -1363,7 +1395,7 @@ * @param {boolean} [shouldScrollInstantly=false] */ #ensureTabIsVisible(tab, shouldScrollInstantly = false) { @@ -211,7 +224,7 @@ index 6b6c04599fe80983d13d2069ca62b99d8ad70271..ebe4818a71b37e8b7cd2937f72cc60f2 if (arrowScrollbox?.overflowing) { arrowScrollbox.ensureElementIsVisible(tab, shouldScrollInstantly); } -@@ -1437,7 +1464,7 @@ +@@ -1496,7 +1528,7 @@ } _notifyBackgroundTab(aTab) { diff --git a/src/browser/components/urlbar/UrlbarController-sys-mjs.patch b/src/browser/components/urlbar/UrlbarController-sys-mjs.patch index 2323991d8..cb46f74a4 100644 --- a/src/browser/components/urlbar/UrlbarController-sys-mjs.patch +++ b/src/browser/components/urlbar/UrlbarController-sys-mjs.patch @@ -1,8 +1,8 @@ diff --git a/browser/components/urlbar/UrlbarController.sys.mjs b/browser/components/urlbar/UrlbarController.sys.mjs -index 09c1a7d4e156fe5e606f097277420333efe88976..f31e183e7b92c616d81dae509ef0448c4d507cc7 100644 +index dc8ca021feff9e5c623dd2e9b3e3a8d6f55aa461..b6382bdcfef0cf6c2975fdb6f1a3c9b5c53f81af 100644 --- a/browser/components/urlbar/UrlbarController.sys.mjs +++ b/browser/components/urlbar/UrlbarController.sys.mjs -@@ -296,7 +296,6 @@ export class UrlbarController { +@@ -302,7 +302,6 @@ export class UrlbarController { const isMac = AppConstants.platform == "macosx"; // Handle readline/emacs-style navigation bindings on Mac. if ( @@ -10,7 +10,7 @@ index 09c1a7d4e156fe5e606f097277420333efe88976..f31e183e7b92c616d81dae509ef0448c this.view.isOpen && event.ctrlKey && (event.key == "n" || event.key == "p") -@@ -445,6 +444,8 @@ export class UrlbarController { +@@ -451,6 +450,8 @@ export class UrlbarController { }); } event.preventDefault(); diff --git a/src/browser/components/urlbar/UrlbarPrefs-sys-mjs.patch b/src/browser/components/urlbar/UrlbarPrefs-sys-mjs.patch index e4d68bcc3..b25c84747 100644 --- a/src/browser/components/urlbar/UrlbarPrefs-sys-mjs.patch +++ b/src/browser/components/urlbar/UrlbarPrefs-sys-mjs.patch @@ -1,8 +1,8 @@ diff --git a/browser/components/urlbar/UrlbarPrefs.sys.mjs b/browser/components/urlbar/UrlbarPrefs.sys.mjs -index 0cc0db4889d66872bce2aa775a79a4c68e8cec51..604106e328843b3a6eb0922cc8663474ddb008f4 100644 +index 41e8aa0ee37fef0d24d41f2c4e776c39ed3895f6..293e993175bbbd67fa1541db6b9419b687de7fcd 100644 --- a/browser/components/urlbar/UrlbarPrefs.sys.mjs +++ b/browser/components/urlbar/UrlbarPrefs.sys.mjs -@@ -763,6 +763,7 @@ function makeResultGroups({ showSearchSuggestionsFirst }) { +@@ -759,6 +759,7 @@ function makeResultGroups({ showSearchSuggestionsFirst }) { */ let rootGroup = { children: [ diff --git a/src/browser/components/urlbar/UrlbarProvidersManager-sys-mjs.patch b/src/browser/components/urlbar/UrlbarProvidersManager-sys-mjs.patch index 0ff16663b..6f9ceff00 100644 --- a/src/browser/components/urlbar/UrlbarProvidersManager-sys-mjs.patch +++ b/src/browser/components/urlbar/UrlbarProvidersManager-sys-mjs.patch @@ -1,8 +1,8 @@ diff --git a/browser/components/urlbar/UrlbarProvidersManager.sys.mjs b/browser/components/urlbar/UrlbarProvidersManager.sys.mjs -index 15dd29152cf349b5ed23f1bae0a74a8d7dbe4c3d..f44f5dd87f778f432b0028969ca5732305c98915 100644 +index 3a9cb4735185691df021157e42f8b9cc93f14aa1..00d7eaf3177d27df1e0db5303405ce28f3031d34 100644 --- a/browser/components/urlbar/UrlbarProvidersManager.sys.mjs +++ b/browser/components/urlbar/UrlbarProvidersManager.sys.mjs -@@ -883,6 +883,7 @@ export class Query { +@@ -893,6 +893,7 @@ export class Query { if ( result.heuristic && this.context.searchMode && diff --git a/src/browser/components/urlbar/UrlbarUtils-sys-mjs.patch b/src/browser/components/urlbar/UrlbarUtils-sys-mjs.patch index d6d4318cc..117cab661 100644 --- a/src/browser/components/urlbar/UrlbarUtils-sys-mjs.patch +++ b/src/browser/components/urlbar/UrlbarUtils-sys-mjs.patch @@ -1,8 +1,8 @@ diff --git a/browser/components/urlbar/UrlbarUtils.sys.mjs b/browser/components/urlbar/UrlbarUtils.sys.mjs -index 7e9ede3dae5c2099c45e0221ad1cb8ebd622fc39..f82db27dbd07961ad6af7dbe2cb5d79e5f7a9828 100644 +index b97fa81cef276e4bb22414b7c182e00b4bb835dc..1f489eceead0aa331ace59281cb777db5e635366 100644 --- a/browser/components/urlbar/UrlbarUtils.sys.mjs +++ b/browser/components/urlbar/UrlbarUtils.sys.mjs -@@ -79,6 +79,7 @@ export var UrlbarUtils = { +@@ -81,6 +81,7 @@ export var UrlbarUtils = { RESTRICT_SEARCH_KEYWORD: "restrictSearchKeyword", SUGGESTED_INDEX: "suggestedIndex", TAIL_SUGGESTION: "tailSuggestion", @@ -10,7 +10,7 @@ index 7e9ede3dae5c2099c45e0221ad1cb8ebd622fc39..f82db27dbd07961ad6af7dbe2cb5d79e }), // Defines provider types. -@@ -138,6 +139,7 @@ export var UrlbarUtils = { +@@ -140,6 +141,7 @@ export var UrlbarUtils = { OTHER_NETWORK: 6, ADDON: 7, ACTIONS: 8, @@ -18,7 +18,7 @@ index 7e9ede3dae5c2099c45e0221ad1cb8ebd622fc39..f82db27dbd07961ad6af7dbe2cb5d79e }), // Per-result exposure telemetry. -@@ -549,6 +551,8 @@ export var UrlbarUtils = { +@@ -552,6 +554,8 @@ export var UrlbarUtils = { return this.RESULT_GROUP.HEURISTIC_FALLBACK; case "UrlbarProviderHistoryUrlHeuristic": return this.RESULT_GROUP.HEURISTIC_HISTORY_URL; diff --git a/src/browser/components/urlbar/UrlbarValueFormatter-sys-mjs.patch b/src/browser/components/urlbar/UrlbarValueFormatter-sys-mjs.patch index d469e3a14..7b9e100f1 100644 --- a/src/browser/components/urlbar/UrlbarValueFormatter-sys-mjs.patch +++ b/src/browser/components/urlbar/UrlbarValueFormatter-sys-mjs.patch @@ -1,5 +1,5 @@ diff --git a/browser/components/urlbar/UrlbarValueFormatter.sys.mjs b/browser/components/urlbar/UrlbarValueFormatter.sys.mjs -index 307b3cac259c05e616cf7d5eb1ce50a146550cd9..72252a6363154b6c5f926bf2acf3282e8396d2ad 100644 +index 3a8c233dd1e05c070e497ec9877e65b9d8a3e87b..dd2a7aac6945331a3a50a0d7f6d62aeda396b560 100644 --- a/browser/components/urlbar/UrlbarValueFormatter.sys.mjs +++ b/browser/components/urlbar/UrlbarValueFormatter.sys.mjs @@ -76,7 +76,7 @@ export class UrlbarValueFormatter { diff --git a/src/browser/components/urlbar/UrlbarView-sys-mjs.patch b/src/browser/components/urlbar/UrlbarView-sys-mjs.patch index 2f9b688a7..3e64f3dfd 100644 --- a/src/browser/components/urlbar/UrlbarView-sys-mjs.patch +++ b/src/browser/components/urlbar/UrlbarView-sys-mjs.patch @@ -1,8 +1,8 @@ diff --git a/browser/components/urlbar/UrlbarView.sys.mjs b/browser/components/urlbar/UrlbarView.sys.mjs -index c58bc4871fbfb5ca924df822a09d783f21db616a..68fd73055d30ec4f4128fb8639369f07b167955a 100644 +index 6d6cc27e203a5799683a4e6eae1007ff30a69cd0..953c5cd09bcfd832d8ad11016977509f55935eb7 100644 --- a/browser/components/urlbar/UrlbarView.sys.mjs +++ b/browser/components/urlbar/UrlbarView.sys.mjs -@@ -620,7 +620,7 @@ export class UrlbarView { +@@ -618,7 +618,7 @@ export class UrlbarView { !this.input.value || this.input.getAttribute("pageproxystate") == "valid" ) { @@ -11,7 +11,7 @@ index c58bc4871fbfb5ca924df822a09d783f21db616a..68fd73055d30ec4f4128fb8639369f07 // 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. -@@ -2855,6 +2855,8 @@ export class UrlbarView { +@@ -2852,6 +2852,8 @@ export class UrlbarView { if (row?.hasAttribute("row-selectable")) { row?.toggleAttribute("selected", true); } @@ -24,7 +24,7 @@ index c58bc4871fbfb5ca924df822a09d783f21db616a..68fd73055d30ec4f4128fb8639369f07 } #enableOrDisableRowWrap() { -- let wrap = getBoundsWithoutFlushing(this.input.textbox).width < 650; +- let wrap = getBoundsWithoutFlushing(this.input).width < 650; + let wrap = false; this.#rows.toggleAttribute("wrap", wrap); this.oneOffSearchButtons?.container.toggleAttribute("wrap", wrap); diff --git a/src/browser/components/urlbar/UrlbarInput-sys-mjs.patch b/src/browser/components/urlbar/content/UrlbarInput-mjs.patch similarity index 78% rename from src/browser/components/urlbar/UrlbarInput-sys-mjs.patch rename to src/browser/components/urlbar/content/UrlbarInput-mjs.patch index d0ef058f5..ab097a55a 100644 --- a/src/browser/components/urlbar/UrlbarInput-sys-mjs.patch +++ b/src/browser/components/urlbar/content/UrlbarInput-mjs.patch @@ -1,7 +1,7 @@ -diff --git a/browser/components/urlbar/UrlbarInput.sys.mjs b/browser/components/urlbar/UrlbarInput.sys.mjs -index 6ad064710da20f7a13fda3517780c2f38b3d2865..58a01eef024d8b9992068a6a5b7be68f5f45accf 100644 ---- a/browser/components/urlbar/UrlbarInput.sys.mjs -+++ b/browser/components/urlbar/UrlbarInput.sys.mjs +diff --git a/browser/components/urlbar/content/UrlbarInput.mjs b/browser/components/urlbar/content/UrlbarInput.mjs +index edb0482f0bfb22c70a585b0770e5b0437983779e..32f3e16dc247413153c8ed9560c784222d0dedca 100644 +--- a/browser/components/urlbar/content/UrlbarInput.mjs ++++ b/browser/components/urlbar/content/UrlbarInput.mjs @@ -68,6 +68,13 @@ const lazy = XPCOMUtils.declareLazy({ logger: () => lazy.UrlbarUtils.getLogger({ prefix: "Input" }), }); @@ -13,10 +13,10 @@ index 6ad064710da20f7a13fda3517780c2f38b3d2865..58a01eef024d8b9992068a6a5b7be68f + 'default' +); + - const DEFAULT_FORM_HISTORY_NAME = "searchbar-history"; - const UNLIMITED_MAX_RESULTS = 99; -@@ -445,7 +452,16 @@ export class UrlbarInput { + + let getBoundsWithoutFlushing = element => +@@ -630,7 +637,16 @@ export class UrlbarInput extends HTMLElement { // See _on_select(). HTMLInputElement.select() dispatches a "select" // event but does not set the primary selection. this._suppressPrimaryAdjustment = true; @@ -33,10 +33,10 @@ index 6ad064710da20f7a13fda3517780c2f38b3d2865..58a01eef024d8b9992068a6a5b7be68f this._suppressPrimaryAdjustment = false; } -@@ -521,6 +537,10 @@ export class UrlbarInput { +@@ -704,6 +720,10 @@ export class UrlbarInput extends HTMLElement { hideSearchTerms = false, - isSameDocument = false - ) { + isSameDocument = false, + } = {}) { + if (this.hasAttribute("zen-newtab")) { + return; + } @@ -44,7 +44,7 @@ index 6ad064710da20f7a13fda3517780c2f38b3d2865..58a01eef024d8b9992068a6a5b7be68f if (!this.#isAddressbar) { throw new Error( "Cannot set URI for UrlbarInput that is not an address bar" -@@ -798,8 +818,16 @@ export class UrlbarInput { +@@ -985,8 +1005,16 @@ export class UrlbarInput extends HTMLElement { return; } } @@ -62,7 +62,7 @@ index 6ad064710da20f7a13fda3517780c2f38b3d2865..58a01eef024d8b9992068a6a5b7be68f } /** -@@ -1215,7 +1243,11 @@ export class UrlbarInput { +@@ -1405,7 +1433,11 @@ export class UrlbarInput extends HTMLElement { } if (!this.#providesSearchMode(result)) { @@ -75,7 +75,7 @@ index 6ad064710da20f7a13fda3517780c2f38b3d2865..58a01eef024d8b9992068a6a5b7be68f } if (isCanonized) { -@@ -2335,6 +2367,32 @@ export class UrlbarInput { +@@ -2529,6 +2561,32 @@ export class UrlbarInput extends HTMLElement { await this.#updateLayoutBreakoutDimensions(); } @@ -108,7 +108,7 @@ index 6ad064710da20f7a13fda3517780c2f38b3d2865..58a01eef024d8b9992068a6a5b7be68f startLayoutExtend() { if (!this.#allowBreakout || this.hasAttribute("breakout-extend")) { // Do not expand if the Urlbar does not support being expanded or it is -@@ -2349,6 +2407,13 @@ export class UrlbarInput { +@@ -2543,6 +2601,13 @@ export class UrlbarInput extends HTMLElement { this.setAttribute("breakout-extend", "true"); @@ -122,7 +122,7 @@ index 6ad064710da20f7a13fda3517780c2f38b3d2865..58a01eef024d8b9992068a6a5b7be68f // 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")) { -@@ -2368,6 +2433,24 @@ export class UrlbarInput { +@@ -2562,6 +2627,24 @@ export class UrlbarInput extends HTMLElement { return; } @@ -147,7 +147,7 @@ index 6ad064710da20f7a13fda3517780c2f38b3d2865..58a01eef024d8b9992068a6a5b7be68f this.removeAttribute("breakout-extend"); this.#updateTextboxPosition(); } -@@ -2398,7 +2481,7 @@ export class UrlbarInput { +@@ -2592,7 +2675,7 @@ export class UrlbarInput extends HTMLElement { forceUnifiedSearchButtonAvailable = false ) { let prevState = this.getAttribute("pageproxystate"); @@ -156,12 +156,12 @@ index 6ad064710da20f7a13fda3517780c2f38b3d2865..58a01eef024d8b9992068a6a5b7be68f this.setAttribute("pageproxystate", state); this._inputContainer.setAttribute("pageproxystate", state); this._identityBox?.setAttribute("pageproxystate", state); -@@ -2635,10 +2718,12 @@ export class UrlbarInput { +@@ -2846,10 +2929,12 @@ export class UrlbarInput extends HTMLElement { return; } - this.textbox.style.top = px( + this.style.top = px( + this.window.gZenVerticalTabsManager._hasSetSingleToolbar ? - this.textbox.parentNode.getBoxQuads({ + this.parentNode.getBoxQuads({ ignoreTransforms: true, flush: false, })[0].p1.y @@ -169,19 +169,19 @@ index 6ad064710da20f7a13fda3517780c2f38b3d2865..58a01eef024d8b9992068a6a5b7be68f ); } -@@ -2698,9 +2783,10 @@ export class UrlbarInput { +@@ -2908,9 +2993,10 @@ export class UrlbarInput extends HTMLElement { return; } + this.window.gZenVerticalTabsManager.recalculateURLBarHeight(); - this.textbox.parentNode.style.setProperty( + this.parentNode.style.setProperty( "--urlbar-container-height", -- px(getBoundsWithoutFlushing(this.textbox.parentNode).height) -+ px(getBoundsWithoutFlushing(this.textbox.parentNode).height + 8) +- px(getBoundsWithoutFlushing(this.parentNode).height) ++ px(getBoundsWithoutFlushing(this.parentNode).height + 8) ); - this.textbox.style.setProperty( + this.style.setProperty( "--urlbar-height", -@@ -3134,6 +3220,7 @@ export class UrlbarInput { +@@ -3344,6 +3430,7 @@ export class UrlbarInput extends HTMLElement { } _toggleActionOverride(event) { @@ -189,7 +189,7 @@ index 6ad064710da20f7a13fda3517780c2f38b3d2865..58a01eef024d8b9992068a6a5b7be68f if ( event.keyCode == KeyEvent.DOM_VK_SHIFT || event.keyCode == KeyEvent.DOM_VK_ALT || -@@ -3237,8 +3324,8 @@ export class UrlbarInput { +@@ -3447,8 +3534,8 @@ export class UrlbarInput extends HTMLElement { if (!this.#isAddressbar) { return val; } @@ -200,7 +200,7 @@ index 6ad064710da20f7a13fda3517780c2f38b3d2865..58a01eef024d8b9992068a6a5b7be68f : val; // Only trim value if the directionality doesn't change to RTL and we're not // showing a strikeout https protocol. -@@ -3544,6 +3631,7 @@ export class UrlbarInput { +@@ -3754,6 +3841,7 @@ export class UrlbarInput extends HTMLElement { resultDetails = null, browser = this.window.gBrowser.selectedBrowser ) { @@ -208,7 +208,7 @@ index 6ad064710da20f7a13fda3517780c2f38b3d2865..58a01eef024d8b9992068a6a5b7be68f if (this.#isAddressbar) { this.#prepareAddressbarLoad( url, -@@ -3651,6 +3739,10 @@ export class UrlbarInput { +@@ -3861,6 +3949,10 @@ export class UrlbarInput extends HTMLElement { } reuseEmpty = true; } @@ -219,7 +219,7 @@ index 6ad064710da20f7a13fda3517780c2f38b3d2865..58a01eef024d8b9992068a6a5b7be68f if ( where == "tab" && reuseEmpty && -@@ -3658,6 +3750,9 @@ export class UrlbarInput { +@@ -3868,6 +3960,9 @@ export class UrlbarInput extends HTMLElement { ) { where = "current"; } @@ -229,7 +229,7 @@ index 6ad064710da20f7a13fda3517780c2f38b3d2865..58a01eef024d8b9992068a6a5b7be68f return where; } -@@ -3909,6 +4004,7 @@ export class UrlbarInput { +@@ -4122,6 +4217,7 @@ export class UrlbarInput extends HTMLElement { this.setResultForCurrentValue(null); this.handleCommand(); this.controller.clearLastQueryContextCache(); @@ -237,7 +237,7 @@ index 6ad064710da20f7a13fda3517780c2f38b3d2865..58a01eef024d8b9992068a6a5b7be68f this._suppressStartQuery = false; }); -@@ -3916,7 +4012,6 @@ export class UrlbarInput { +@@ -4129,7 +4225,6 @@ export class UrlbarInput extends HTMLElement { 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. @@ -245,7 +245,7 @@ index 6ad064710da20f7a13fda3517780c2f38b3d2865..58a01eef024d8b9992068a6a5b7be68f let controller = this.document.commandDispatcher.getControllerForCommand("cmd_paste"); -@@ -4026,7 +4121,11 @@ export class UrlbarInput { +@@ -4239,7 +4334,11 @@ export class UrlbarInput extends HTMLElement { if (!engineName && !source && !this.hasAttribute("searchmode")) { return; } @@ -258,15 +258,15 @@ index 6ad064710da20f7a13fda3517780c2f38b3d2865..58a01eef024d8b9992068a6a5b7be68f if (this._searchModeIndicatorTitle) { this._searchModeIndicatorTitle.textContent = ""; this._searchModeIndicatorTitle.removeAttribute("data-l10n-id"); -@@ -4338,6 +4437,7 @@ export class UrlbarInput { +@@ -4549,6 +4648,7 @@ export class UrlbarInput extends HTMLElement { this.document.l10n.setAttributes( this.inputField, + this.window.gZenVerticalTabsManager._hasSetSingleToolbar ? 'zen-singletoolbar-urlbar-placeholder-with-name' : l10nId, - l10nId == "urlbar-placeholder-with-name" ? { name } : undefined - ); -@@ -4449,6 +4549,11 @@ export class UrlbarInput { + l10nId == "urlbar-placeholder-with-name" + ? { name: engineName } +@@ -4662,6 +4762,11 @@ export class UrlbarInput extends HTMLElement { } _on_click(event) { @@ -275,10 +275,10 @@ index 6ad064710da20f7a13fda3517780c2f38b3d2865..58a01eef024d8b9992068a6a5b7be68f + this._on_mousedown(event); + } + - if ( - event.target == this.inputField || - event.target == this._inputContainer -@@ -4521,7 +4626,7 @@ export class UrlbarInput { + switch (event.target) { + case this.inputField: + case this._inputContainer: +@@ -4740,7 +4845,7 @@ export class UrlbarInput extends HTMLElement { } } @@ -287,13 +287,13 @@ index 6ad064710da20f7a13fda3517780c2f38b3d2865..58a01eef024d8b9992068a6a5b7be68f this.view.autoOpen({ event }); } else { if (this._untrimOnFocusAfterKeydown) { -@@ -4561,9 +4666,16 @@ export class UrlbarInput { +@@ -4780,9 +4885,16 @@ export class UrlbarInput extends HTMLElement { } _on_mousedown(event) { - switch (event.currentTarget) { + switch (event.zenOriginalTarget || event.currentTarget) { - case this.textbox: { + case this: { this._mousedownOnUrlbarDescendant = true; + const isProbablyFloating = + (this.zenUrlbarBehavior == "floating-on-type" && @@ -302,10 +302,10 @@ index 6ad064710da20f7a13fda3517780c2f38b3d2865..58a01eef024d8b9992068a6a5b7be68f + if (event.type != "click" && isProbablyFloating || event.type == "click" && !isProbablyFloating) { + return true; + } - if ( - event.target != this.inputField && -@@ -4574,6 +4686,10 @@ export class UrlbarInput { + event.composedTarget != this.inputField && + event.composedTarget != this._inputContainer +@@ -4792,6 +4904,10 @@ export class UrlbarInput extends HTMLElement { this.focusedViaMousedown = !this.focused; this._preventClickSelectsAll = this.focused; @@ -316,7 +316,7 @@ index 6ad064710da20f7a13fda3517780c2f38b3d2865..58a01eef024d8b9992068a6a5b7be68f // Keep the focus status, since the attribute may be changed // upon calling this.focus(). -@@ -4609,7 +4725,7 @@ export class UrlbarInput { +@@ -4827,7 +4943,7 @@ export class UrlbarInput extends HTMLElement { } // 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. @@ -325,7 +325,7 @@ index 6ad064710da20f7a13fda3517780c2f38b3d2865..58a01eef024d8b9992068a6a5b7be68f break; } -@@ -4930,7 +5046,7 @@ export class UrlbarInput { +@@ -5155,7 +5271,7 @@ export class UrlbarInput extends HTMLElement { // When we are in actions search mode we can show more results so // increase the limit. let maxResults = diff --git a/src/browser/extensions/newtab/lib/ActivityStream-sys-mjs.patch b/src/browser/extensions/newtab/lib/ActivityStream-sys-mjs.patch index 84d8a7803..8a3e3f1c9 100644 --- a/src/browser/extensions/newtab/lib/ActivityStream-sys-mjs.patch +++ b/src/browser/extensions/newtab/lib/ActivityStream-sys-mjs.patch @@ -1,8 +1,8 @@ diff --git a/browser/extensions/newtab/lib/ActivityStream.sys.mjs b/browser/extensions/newtab/lib/ActivityStream.sys.mjs -index bd453da1b0eca276f319aadf451258e7db021365..da64e88eb58ba1b15c31034684f9d259339f4438 100644 +index ae3c01650b3023a692cd4c50e33e3c3c39770c47..27a5fb0a630b9b79566be08cd5f7c9466ca30381 100644 --- a/browser/extensions/newtab/lib/ActivityStream.sys.mjs +++ b/browser/extensions/newtab/lib/ActivityStream.sys.mjs -@@ -251,7 +251,7 @@ export const PREFS_CONFIG = new Map([ +@@ -295,7 +295,7 @@ export const PREFS_CONFIG = new Map([ "showSponsoredTopSites", { title: "Show sponsored top sites", diff --git a/src/browser/installer/package-manifest-in.patch b/src/browser/installer/package-manifest-in.patch index b49cc0fd6..65ccef529 100644 --- a/src/browser/installer/package-manifest-in.patch +++ b/src/browser/installer/package-manifest-in.patch @@ -1,8 +1,8 @@ diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in -index 6bb2e64906d6fe173c9129dd9c9c80b5323416b1..9f1fb4764c8c13a02cf0d384cfa71cc16e3c8701 100644 +index dbfb287747ed9059cfb46838800421ac9ffe78c1..47279559a7dbea8b08bafb75e968f7b219e1d818 100644 --- a/browser/installer/package-manifest.in +++ b/browser/installer/package-manifest.in -@@ -373,17 +373,17 @@ bin/libfreebl_64int_3.so +@@ -374,17 +374,17 @@ bin/libfreebl_64int_3.so ; [MaintenanceService] ; #ifdef MOZ_MAINTENANCE_SERVICE diff --git a/src/browser/modules/BrowserWindowTracker-sys-mjs.patch b/src/browser/modules/BrowserWindowTracker-sys-mjs.patch index ce68986dc..0fb7f2390 100644 --- a/src/browser/modules/BrowserWindowTracker-sys-mjs.patch +++ b/src/browser/modules/BrowserWindowTracker-sys-mjs.patch @@ -1,8 +1,8 @@ diff --git a/browser/modules/BrowserWindowTracker.sys.mjs b/browser/modules/BrowserWindowTracker.sys.mjs -index f2b64cfbdf579c67496b785c8efafc69bf20372a..f3d8755aa7d122d9ee5c449a02cceb629aa6aa00 100644 +index 0cd9e9630fff20d71dc1dd7367ae6af4f7a53f71..7212c5f4745f3c93c1ede932af1b0e85580aa679 100644 --- a/browser/modules/BrowserWindowTracker.sys.mjs +++ b/browser/modules/BrowserWindowTracker.sys.mjs -@@ -325,6 +325,7 @@ export const BrowserWindowTracker = { +@@ -326,6 +326,7 @@ export const BrowserWindowTracker = { args = null, remote = undefined, fission = undefined, @@ -10,7 +10,7 @@ index f2b64cfbdf579c67496b785c8efafc69bf20372a..f3d8755aa7d122d9ee5c449a02cceb62 } = {}) { let windowFeatures = "chrome,dialog=no"; if (all) { -@@ -378,6 +379,12 @@ export const BrowserWindowTracker = { +@@ -382,6 +383,12 @@ export const BrowserWindowTracker = { windowFeatures, args ); diff --git a/src/browser/modules/URILoadingHelper-sys-mjs.patch b/src/browser/modules/URILoadingHelper-sys-mjs.patch index b525e3bc6..2c89216f1 100644 --- a/src/browser/modules/URILoadingHelper-sys-mjs.patch +++ b/src/browser/modules/URILoadingHelper-sys-mjs.patch @@ -1,5 +1,5 @@ diff --git a/browser/modules/URILoadingHelper.sys.mjs b/browser/modules/URILoadingHelper.sys.mjs -index a3a84f96e54e5b74ad15f3825b380c30c117695f..ca702841c1df404a6f270ac08f962c8a225549d8 100644 +index 9175fa820ad6bb75cd125fbfda2bf07d6dba4c90..f673cfd15289401ae425256016bf51303063e0b2 100644 --- a/browser/modules/URILoadingHelper.sys.mjs +++ b/browser/modules/URILoadingHelper.sys.mjs @@ -542,7 +542,7 @@ export const URILoadingHelper = { diff --git a/src/browser/themes/shared/browser-shared-css.patch b/src/browser/themes/shared/browser-shared-css.patch index e3bfed1e3..1fe391a3c 100644 --- a/src/browser/themes/shared/browser-shared-css.patch +++ b/src/browser/themes/shared/browser-shared-css.patch @@ -1,8 +1,8 @@ diff --git a/browser/themes/shared/browser-shared.css b/browser/themes/shared/browser-shared.css -index 3cecc295f3ac764ed07094021372d35107df78ed..760f8bdcff87a6b803b115b249269438a27f8d80 100644 +index 63d9641c7107c1444cb74f1536193246106f5cae..4298760fab4862e64ec74df23e00b373c5745605 100644 --- a/browser/themes/shared/browser-shared.css +++ b/browser/themes/shared/browser-shared.css -@@ -102,7 +102,7 @@ body { +@@ -103,7 +103,7 @@ body { --toolbarbutton-border-radius: var(--button-border-radius); --identity-box-margin-inline: 4px; --urlbar-min-height: max(32px, 1.4em); @@ -11,7 +11,7 @@ index 3cecc295f3ac764ed07094021372d35107df78ed..760f8bdcff87a6b803b115b249269438 /* This should be used for icons and chiclets inside the input field, as well as result rows. It makes the gap around them more uniform when they are -@@ -171,8 +171,6 @@ body { +@@ -172,8 +172,6 @@ body { */ &.fullscreen-with-menubar { z-index: var(--browser-area-z-index-toolbox-while-animating); @@ -20,7 +20,7 @@ index 3cecc295f3ac764ed07094021372d35107df78ed..760f8bdcff87a6b803b115b249269438 } /* Themes define a set of toolbox foreground and background colors which we -@@ -281,13 +279,13 @@ body { +@@ -282,13 +280,13 @@ body { @media (-moz-platform: macos) and (not (-moz-mac-rtl)) { &:-moz-locale-dir(ltr) { diff --git a/src/browser/themes/shared/identity-block/identity-block-css.patch b/src/browser/themes/shared/identity-block/identity-block-css.patch index 575bfe1bf..11d840f69 100644 --- a/src/browser/themes/shared/identity-block/identity-block-css.patch +++ b/src/browser/themes/shared/identity-block/identity-block-css.patch @@ -1,5 +1,5 @@ diff --git a/browser/themes/shared/identity-block/identity-block.css b/browser/themes/shared/identity-block/identity-block.css -index 34e9206ff45592db2b1b24568f1f6f1bf16b4c3a..6fa3f13dd18f90bcc0c715c4896617fdfce4887e 100644 +index e9f0ea328cde3631ef856f44d47abb9c5cec5ee1..66ec2bc8bb716ad9e87f88f3d93f9516c9eb8052 100644 --- a/browser/themes/shared/identity-block/identity-block.css +++ b/browser/themes/shared/identity-block/identity-block.css @@ -7,7 +7,7 @@ @@ -11,7 +11,7 @@ index 34e9206ff45592db2b1b24568f1f6f1bf16b4c3a..6fa3f13dd18f90bcc0c715c4896617fd pointer-events: none; -moz-user-focus: ignore; } -@@ -81,13 +81,6 @@ +@@ -85,13 +85,6 @@ } } @@ -25,7 +25,7 @@ index 34e9206ff45592db2b1b24568f1f6f1bf16b4c3a..6fa3f13dd18f90bcc0c715c4896617fd #urlbar[focused] { #identity-box[pageproxystate="valid"]:is(.notSecureText, .chromeUI, .extensionPage) > .identity-box-button:not(:hover, [open]), -@@ -178,16 +171,17 @@ +@@ -182,16 +175,17 @@ } #identity-icon { diff --git a/src/browser/themes/shared/jar-inc-mn.patch b/src/browser/themes/shared/jar-inc-mn.patch index 7e4a54e8e..876167063 100644 --- a/src/browser/themes/shared/jar-inc-mn.patch +++ b/src/browser/themes/shared/jar-inc-mn.patch @@ -1,8 +1,8 @@ diff --git a/browser/themes/shared/jar.inc.mn b/browser/themes/shared/jar.inc.mn -index ff198352720d7935b497e43f3e6b8ca04905e885..63e09db981a7ae35b1bb2c610133f624e8f61b74 100644 +index ab8601e76409ad1a026763379a395dd52f503f27..3b32198dfa770d29f4e2f2b0faed5f3ff735c664 100644 --- a/browser/themes/shared/jar.inc.mn +++ b/browser/themes/shared/jar.inc.mn -@@ -323,3 +323,5 @@ +@@ -326,3 +326,5 @@ skin/classic/browser/illustrations/market-opt-in.svg (../shared/illustrations/market-opt-in.svg) skin/classic/browser/illustrations/yelpRealtime-opt-in.svg (../shared/illustrations/yelpRealtime-opt-in.svg) diff --git a/src/browser/themes/shared/tabbrowser/content-area-css.patch b/src/browser/themes/shared/tabbrowser/content-area-css.patch index f5d463470..7ea60a275 100644 --- a/src/browser/themes/shared/tabbrowser/content-area-css.patch +++ b/src/browser/themes/shared/tabbrowser/content-area-css.patch @@ -1,8 +1,8 @@ diff --git a/browser/themes/shared/tabbrowser/content-area.css b/browser/themes/shared/tabbrowser/content-area.css -index 55f33b3f630ca0eea7e4bde19f9875802c8aec78..f11fdaab05baf85fe2b56fa07442ded3c9641abc 100644 +index b00139d7af878326ff303c08d5ddd47501b8c7db..03b487f50717554db4183d404cc4fffeb14db758 100644 --- a/browser/themes/shared/tabbrowser/content-area.css +++ b/browser/themes/shared/tabbrowser/content-area.css -@@ -140,7 +140,6 @@ +@@ -145,7 +145,6 @@ } browser:is([blank], [pendingpaint]) { @@ -10,7 +10,7 @@ index 55f33b3f630ca0eea7e4bde19f9875802c8aec78..f11fdaab05baf85fe2b56fa07442ded3 } browser[type="content"] { -@@ -377,7 +376,7 @@ split-view-footer { +@@ -392,7 +391,7 @@ split-view-footer { .dialogStack { z-index: var(--browser-stack-z-index-dialog-stack); diff --git a/src/browser/themes/shared/tabbrowser/tabs-css.patch b/src/browser/themes/shared/tabbrowser/tabs-css.patch index e563c3ff5..257f47ff9 100644 --- a/src/browser/themes/shared/tabbrowser/tabs-css.patch +++ b/src/browser/themes/shared/tabbrowser/tabs-css.patch @@ -1,5 +1,5 @@ diff --git a/browser/themes/shared/tabbrowser/tabs.css b/browser/themes/shared/tabbrowser/tabs.css -index 8a4d3860b344e2dc2128cfc2b1673de582e19c7c..086171783cd9a8629ccf4b2e90813e58c4793878 100644 +index 310e7866b942df5c3c34815f4612a2a2ad8c42a6..c474e1cddcecd3def3b255c5c530c0b36a38e6b0 100644 --- a/browser/themes/shared/tabbrowser/tabs.css +++ b/browser/themes/shared/tabbrowser/tabs.css @@ -21,7 +21,7 @@ @@ -23,7 +23,7 @@ index 8a4d3860b344e2dc2128cfc2b1673de582e19c7c..086171783cd9a8629ccf4b2e90813e58 --tab-selected-bgcolor: var(--toolbar-bgcolor); --tab-selected-color-scheme: var(--toolbar-color-scheme); &[lwt-tab-selected="light"] { -@@ -285,7 +285,6 @@ +@@ -293,7 +293,6 @@ } :root:not([uidensity="compact"], [sidebar-expand-on-hover]) &[pinned] { @@ -31,7 +31,7 @@ index 8a4d3860b344e2dc2128cfc2b1673de582e19c7c..086171783cd9a8629ccf4b2e90813e58 } &:is([selected], [multiselected]) { -@@ -299,6 +298,7 @@ +@@ -307,6 +306,7 @@ border-radius: inherit; position: relative; overflow: hidden; @@ -39,7 +39,7 @@ index 8a4d3860b344e2dc2128cfc2b1673de582e19c7c..086171783cd9a8629ccf4b2e90813e58 &::before { position: absolute; -@@ -502,10 +502,6 @@ +@@ -506,10 +506,6 @@ /* stylelint-disable-next-line media-query-no-invalid */ @media -moz-pref("browser.tabs.fadeOutUnloadedTabs") { &[pending] { @@ -50,7 +50,7 @@ index 8a4d3860b344e2dc2128cfc2b1673de582e19c7c..086171783cd9a8629ccf4b2e90813e58 opacity: 0.5; /* Fade the favicon out */ transition-property: filter, opacity; -@@ -522,10 +518,6 @@ +@@ -526,10 +522,6 @@ /* stylelint-disable-next-line media-query-no-invalid */ @media -moz-pref("browser.tabs.fadeOutExplicitlyUnloadedTabs") { &[pending][discarded] { @@ -61,7 +61,7 @@ index 8a4d3860b344e2dc2128cfc2b1673de582e19c7c..086171783cd9a8629ccf4b2e90813e58 opacity: 0.5; /* Fade the favicon out */ transition-property: filter, opacity; -@@ -593,7 +585,7 @@ +@@ -598,7 +590,7 @@ z-index: 1; /* Overlay tab title */ #tabbrowser-tabs[orient="vertical"] & { @@ -70,7 +70,7 @@ index 8a4d3860b344e2dc2128cfc2b1673de582e19c7c..086171783cd9a8629ccf4b2e90813e58 } &[crashed] { -@@ -601,7 +593,7 @@ +@@ -606,7 +598,7 @@ } #tabbrowser-tabs[orient="vertical"]:not([expanded]) &:not([crashed]), @@ -79,7 +79,7 @@ index 8a4d3860b344e2dc2128cfc2b1673de582e19c7c..086171783cd9a8629ccf4b2e90813e58 &[soundplaying] { list-style-image: url("chrome://browser/skin/tabbrowser/tab-audio-playing-small.svg"); } -@@ -658,7 +650,7 @@ +@@ -663,7 +655,7 @@ } } @@ -88,7 +88,7 @@ index 8a4d3860b344e2dc2128cfc2b1673de582e19c7c..086171783cd9a8629ccf4b2e90813e58 &[crashed] { display: revert; } -@@ -759,7 +751,7 @@ +@@ -830,7 +822,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]), @@ -97,7 +97,7 @@ index 8a4d3860b344e2dc2128cfc2b1673de582e19c7c..086171783cd9a8629ccf4b2e90813e58 &:is([soundplaying], [muted], [activemedia-blocked]) { display: flex; } -@@ -1446,7 +1438,7 @@ tab-group { +@@ -1521,7 +1513,7 @@ tab-group { } #tabbrowser-tabs[orient="vertical"][expanded] { @@ -106,7 +106,7 @@ index 8a4d3860b344e2dc2128cfc2b1673de582e19c7c..086171783cd9a8629ccf4b2e90813e58 &[movingtab][movingtab-addToGroup]:not([movingtab-group], [movingtab-ungroup]) .tabbrowser-tab:is(:active, [multiselected]) { margin-inline-start: var(--space-medium); } -@@ -1893,7 +1885,7 @@ tab-group { +@@ -1999,7 +1991,7 @@ tab-group { } } @@ -115,7 +115,7 @@ index 8a4d3860b344e2dc2128cfc2b1673de582e19c7c..086171783cd9a8629ccf4b2e90813e58 #vertical-tabs-newtab-button { appearance: none; min-height: var(--tab-min-height); -@@ -1904,7 +1896,7 @@ tab-group { +@@ -2010,7 +2002,7 @@ tab-group { margin-inline: var(--tab-inner-inline-margin); #tabbrowser-tabs[orient="vertical"]:not([expanded]) & > .toolbarbutton-text { @@ -124,7 +124,7 @@ index 8a4d3860b344e2dc2128cfc2b1673de582e19c7c..086171783cd9a8629ccf4b2e90813e58 } &:hover { -@@ -1928,7 +1920,7 @@ tab-group { +@@ -2034,7 +2026,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. */ @@ -133,7 +133,7 @@ index 8a4d3860b344e2dc2128cfc2b1673de582e19c7c..086171783cd9a8629ccf4b2e90813e58 margin-block: var(--tab-block-margin); } -@@ -2116,7 +2108,6 @@ tab-group { +@@ -2222,7 +2214,6 @@ tab-group { &:not([expanded]) { .tabbrowser-tab[pinned] { @@ -141,7 +141,7 @@ index 8a4d3860b344e2dc2128cfc2b1673de582e19c7c..086171783cd9a8629ccf4b2e90813e58 } .tab-background { -@@ -2156,8 +2147,8 @@ tab-group { +@@ -2262,8 +2253,8 @@ tab-group { display: block; position: absolute; inset: auto; @@ -152,7 +152,7 @@ index 8a4d3860b344e2dc2128cfc2b1673de582e19c7c..086171783cd9a8629ccf4b2e90813e58 &:-moz-window-inactive { background-image: -@@ -2276,7 +2267,6 @@ toolbar:not(#TabsToolbar) #firefox-view-button { +@@ -2382,7 +2373,6 @@ toolbar:not(#TabsToolbar) #firefox-view-button { list-style-image: url(chrome://global/skin/icons/plus.svg); } diff --git a/src/browser/themes/shared/urlbar-searchbar-css.patch b/src/browser/themes/shared/urlbar-searchbar-css.patch index b7a9ced81..94bc82399 100644 --- a/src/browser/themes/shared/urlbar-searchbar-css.patch +++ b/src/browser/themes/shared/urlbar-searchbar-css.patch @@ -1,17 +1,17 @@ diff --git a/browser/themes/shared/urlbar-searchbar.css b/browser/themes/shared/urlbar-searchbar.css -index 45a87b96db14f64e0d8a3a3aae07f76c8f7e765f..d75f61cb2d27205aa2c47cf902d38e26098fbf2c 100644 +index edfe3e05a1b4517a4de6e09221ebdcfb5d8f1fe5..5986f88babf2b8d48ec8a5c0724787b13275aeff 100644 --- a/browser/themes/shared/urlbar-searchbar.css +++ b/browser/themes/shared/urlbar-searchbar.css -@@ -6,7 +6,7 @@ - - :root { - --urlbar-container-min-width: 310px; -- --urlbar-container-padding: 1px; +@@ -9,7 +9,7 @@ + /* Usually we wouldn't need snapping border widths manually, but we use this + * for other layout calculations too */ + --urlbar-container-border-width: max(env(hairline), round(down, 1px, env(hairline))); +- --urlbar-container-padding: round(up, 1px, env(hairline)); + --urlbar-container-padding: 2px; + --urlbar-container-border-padding: calc(var(--urlbar-container-border-width) + var(--urlbar-container-padding)); --urlbar-margin-inline: 5px; --urlbar-padding-block: 4px; - -@@ -48,7 +48,7 @@ +@@ -52,7 +52,7 @@ #urlbar[usertyping] > .urlbar-input-container > #page-action-buttons > #urlbar-zoom-button, .urlbar:is(:not([usertyping]), :not([focused])) > .urlbar-input-container > .urlbar-go-button, .urlbar-revert-button-container { @@ -20,7 +20,7 @@ index 45a87b96db14f64e0d8a3a3aae07f76c8f7e765f..d75f61cb2d27205aa2c47cf902d38e26 } /* When rich suggestions are enabled the urlbar identity icon is given extra padding to -@@ -320,10 +320,14 @@ +@@ -323,10 +323,14 @@ .urlbar[breakout][breakout-extend] { height: auto; diff --git a/src/browser/themes/shared/urlbarView-css.patch b/src/browser/themes/shared/urlbarView-css.patch index fa66900c8..559b34da4 100644 --- a/src/browser/themes/shared/urlbarView-css.patch +++ b/src/browser/themes/shared/urlbarView-css.patch @@ -1,5 +1,5 @@ diff --git a/browser/themes/shared/urlbarView.css b/browser/themes/shared/urlbarView.css -index d59a4e8514c3e8f16c2512abacf8e95d7e7255c5..5c226bed71203dc39723f07107b3de89e0d1776f 100644 +index 1ba5a570cb1fe690cf88396643baba02f9265095..312891b41e1c62b4ed53f5cbd63bd3280dde7512 100644 --- a/browser/themes/shared/urlbarView.css +++ b/browser/themes/shared/urlbarView.css @@ -20,7 +20,7 @@ diff --git a/src/build/moz-configure/toolchain-configure.patch b/src/build/moz-configure/toolchain-configure.patch index 3f1196363..0de0b2de4 100644 --- a/src/build/moz-configure/toolchain-configure.patch +++ b/src/build/moz-configure/toolchain-configure.patch @@ -1,8 +1,8 @@ diff --git a/build/moz.configure/toolchain.configure b/build/moz.configure/toolchain.configure -index 3d8d2ea651fa1320306b32b0f7b1b73e0da1df61..257f75a92a26d7a724353c614365924d230aef83 100644 +index 0fb4faa598072ccad47c376765a9433b40e27a6d..6ab448cc4202e5a3e871dfd753e95d76453758e5 100644 --- a/build/moz.configure/toolchain.configure +++ b/build/moz.configure/toolchain.configure -@@ -1991,7 +1991,7 @@ def select_linker_tmpl(host_or_target): +@@ -1995,7 +1995,7 @@ def select_linker_tmpl(host_or_target): # ensure consistent output. env["LC_ALL"] = "C" retcode, stdout, stderr = get_cmd_output(*cmd, env=env) diff --git a/src/devtools/server/actors/animation-type-longhand-js.patch b/src/devtools/server/actors/animation-type-longhand-js.patch index 37951d646..888fb6e44 100644 --- a/src/devtools/server/actors/animation-type-longhand-js.patch +++ b/src/devtools/server/actors/animation-type-longhand-js.patch @@ -1,5 +1,5 @@ diff --git a/devtools/server/actors/animation-type-longhand.js b/devtools/server/actors/animation-type-longhand.js -index 76c58a23422b923e191870f27090c7fc6d63884e..b19f47d31195774cec2c7e67903c892aa1329f3d 100644 +index f6cd7b4599ab74fbdc301f316fd7ecc2e2eb841c..8279a943803ca75fe0a231606ae26a678fcc0b60 100644 --- a/devtools/server/actors/animation-type-longhand.js +++ b/devtools/server/actors/animation-type-longhand.js @@ -342,6 +342,7 @@ exports.ANIMATION_TYPE_FOR_LONGHANDS = [ diff --git a/src/devtools/startup/DevToolsStartup-sys-mjs.patch b/src/devtools/startup/DevToolsStartup-sys-mjs.patch index c21547187..8c192b373 100644 --- a/src/devtools/startup/DevToolsStartup-sys-mjs.patch +++ b/src/devtools/startup/DevToolsStartup-sys-mjs.patch @@ -1,8 +1,8 @@ diff --git a/devtools/startup/DevToolsStartup.sys.mjs b/devtools/startup/DevToolsStartup.sys.mjs -index 50fd07c1365ad25dc31c806f11751368f0d27a46..e26e90ece2d5dc42312f95661b5a38eec3556986 100644 +index 40926f9620bfe8ecc1d295026b219f5b7f83860c..6811d0681c9c9b8555f0c7f72d6cd3cd42a0b1bd 100644 --- a/devtools/startup/DevToolsStartup.sys.mjs +++ b/devtools/startup/DevToolsStartup.sys.mjs -@@ -829,6 +829,7 @@ DevToolsStartup.prototype = { +@@ -835,6 +835,7 @@ DevToolsStartup.prototype = { // account (see bug 832984). const mainKeyset = doc.getElementById("mainKeyset"); mainKeyset.parentNode.insertBefore(keyset, mainKeyset); diff --git a/src/dom/base/Document-cpp.patch b/src/dom/base/Document-cpp.patch index 46c246c18..5d15cbbea 100644 --- a/src/dom/base/Document-cpp.patch +++ b/src/dom/base/Document-cpp.patch @@ -1,5 +1,5 @@ diff --git a/dom/base/Document.cpp b/dom/base/Document.cpp -index 5a890d76ef8398c1a8dc6d84a6c43ec7e2b7c39e..aa25c68e36010004b95c14b8a8a88ca7e85de84d 100644 +index 7bbbaf6fb936eda9cf87f164f93f4a96a50cf733..b1a50d8b4932f60f882b7f60c7d65ce3a9fde99d 100644 --- a/dom/base/Document.cpp +++ b/dom/base/Document.cpp @@ -461,6 +461,7 @@ diff --git a/src/dom/base/use_counter_metrics-yaml.patch b/src/dom/base/use_counter_metrics-yaml.patch index 9c3e53f05..a662ebe0e 100644 --- a/src/dom/base/use_counter_metrics-yaml.patch +++ b/src/dom/base/use_counter_metrics-yaml.patch @@ -1,8 +1,8 @@ diff --git a/dom/base/use_counter_metrics.yaml b/dom/base/use_counter_metrics.yaml -index 0635fe4dc5bf231300c1b53b093e2200c4fde134..c1d868cb7ebcf322885d562217ff9c03b16f7119 100644 +index 84aa1ac40d01bc73f5039bd5c589c3fdf3a6c8ce..090f9e1eef46ed45c0a98a73013ad59faeb3414f 100644 --- a/dom/base/use_counter_metrics.yaml +++ b/dom/base/use_counter_metrics.yaml -@@ -21154,6 +21154,22 @@ use.counter.css.page: +@@ -22106,6 +22106,22 @@ use.counter.css.page: send_in_pings: - use-counters @@ -25,7 +25,7 @@ index 0635fe4dc5bf231300c1b53b093e2200c4fde134..c1d868cb7ebcf322885d562217ff9c03 css_transform_origin: type: counter description: > -@@ -33124,6 +33140,22 @@ use.counter.css.doc: +@@ -34076,6 +34092,22 @@ use.counter.css.doc: send_in_pings: - use-counters diff --git a/src/dom/media/mediaelement/HTMLMediaElement-cpp.patch b/src/dom/media/mediaelement/HTMLMediaElement-cpp.patch index 47846b210..f89fc4887 100644 --- a/src/dom/media/mediaelement/HTMLMediaElement-cpp.patch +++ b/src/dom/media/mediaelement/HTMLMediaElement-cpp.patch @@ -1,5 +1,5 @@ diff --git a/dom/media/mediaelement/HTMLMediaElement.cpp b/dom/media/mediaelement/HTMLMediaElement.cpp -index f26c8c26354fd65ebf2c5f4797cb2bd200f764e6..90e0b81b471d8bfa0140fa3c7996f7b796564d50 100644 +index 935c9783ceb66ad8c6c8748ca3113664f5b114d3..a9f256a83b68940c829b24a19c67c56f11a01765 100644 --- a/dom/media/mediaelement/HTMLMediaElement.cpp +++ b/dom/media/mediaelement/HTMLMediaElement.cpp @@ -451,6 +451,7 @@ class HTMLMediaElement::MediaControlKeyListener final @@ -10,7 +10,7 @@ index f26c8c26354fd65ebf2c5f4797cb2bd200f764e6..90e0b81b471d8bfa0140fa3c7996f7b7 NotifyAudibleStateChanged(mIsOwnerAudible ? MediaAudibleState::eAudible : MediaAudibleState::eInaudible); -@@ -7232,6 +7233,9 @@ void HTMLMediaElement::FireTimeUpdate(TimeupdateType aType) { +@@ -7247,6 +7248,9 @@ void HTMLMediaElement::FireTimeUpdate(TimeupdateType aType) { QueueTask(std::move(runner)); mQueueTimeUpdateRunnerTime = TimeStamp::Now(); mLastCurrentTime = CurrentTime(); diff --git a/src/firefox-patches/147_windows_border_fix_1.patch b/src/firefox-patches/147_windows_border_fix_1.patch deleted file mode 100644 index 3a4dfb7d2..000000000 --- a/src/firefox-patches/147_windows_border_fix_1.patch +++ /dev/null @@ -1,91 +0,0 @@ -From 433cc8224790300fdabe76bd225b644c1812da34 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= -Date: Thu, 27 Nov 2025 15:28:12 +0000 -Subject: [PATCH] Bug 1993474 - Ensure our WNDPROC has precedence over - WinAppSDK's. r=gstoll,win-reviewers - -See the comment for reasoning. WM_NCCALCSIZE wasn't getting called, and -we rely on that to get the right client area on things like maximized -windows. - -Differential Revision: https://phabricator.services.mozilla.com/D274281 ---- - widget/windows/nsWindow.cpp | 32 ++++++++++++++++++++++---------- - widget/windows/nsWindow.h | 2 ++ - 2 files changed, 24 insertions(+), 10 deletions(-) - -diff --git a/widget/windows/nsWindow.cpp b/widget/windows/nsWindow.cpp -index 0b98d157097da..b357df236cfcd 100644 ---- a/widget/windows/nsWindow.cpp -+++ b/widget/windows/nsWindow.cpp -@@ -1520,12 +1520,31 @@ DWORD nsWindow::WindowExStyle() { - * - **************************************************************/ - -+bool nsWindow::ShouldAssociateWithWinAppSDK() const { -+ // We currently don't need any SDK functionality for for PiP windows, -+ // and using the SDK on these windows causes them to go under the -+ // taskbar (bug 1995838). -+ // -+ // TODO(emilio): That might not be true anymore after bug 1993474, -+ // consider re-testing and removing that special-case. -+ return IsTopLevelWidget() && !mIsPIPWindow; -+} -+ - bool nsWindow::AssociateWithNativeWindow() { - if (!mWnd || !IsWindow(mWnd)) { - NS_ERROR("Invalid window handle"); - return false; - } - -+ if (ShouldAssociateWithWinAppSDK()) { -+ // Make sure to call this here to associate our window with the -+ // Windows App SDK _before_ setting our WNDPROC, if needed. -+ // This is important because the SDKs WNDPROC might handle messages like -+ // WM_NCCALCSIZE without calling into us, and that can cause sizing issues, -+ // see bug 1993474. -+ WindowsUIUtils::SetIsTitlebarCollapsed(mWnd, mCustomNonClient); -+ } -+ - // Connect the this pointer to the native window handle. - // This should be done before SetWindowLongPtrW, because nsWindow::WindowProc - // uses WinUtils::GetNSWindowPtr internally. -@@ -1552,12 +1571,7 @@ void nsWindow::DissociateFromNativeWindow() { - DebugOnly wndProcBeforeDissociate = - reinterpret_cast(::SetWindowLongPtrW( - mWnd, GWLP_WNDPROC, reinterpret_cast(*mPrevWndProc))); -- // If we've used the Windows App SDK to remove the minimize/maximize/close -- // entries from the titlebar, then the Windows App SDK sets its own WNDPROC -- // own the window, so this assertion would fail. But we only do this if -- // Mica is available. -- NS_ASSERTION(WinUtils::MicaAvailable() || -- wndProcBeforeDissociate == nsWindow::WindowProc, -+ NS_ASSERTION(wndProcBeforeDissociate == nsWindow::WindowProc, - "Unstacked an unexpected native window procedure"); - - WinUtils::SetNSWindowPtr(mWnd, nullptr); -@@ -2835,9 +2849,7 @@ void nsWindow::SetCustomTitlebar(bool aCustomTitlebar) { - mCustomNonClientMetrics = {}; - ResetLayout(); - } -- // Not needed for PiP windows, and using the Windows App SDK on -- // these windows causes them to go under the taskbar (bug 1995838) -- if (!mPIPWindow) { -+ if (ShouldAssociateWithWinAppSDK()) { - WindowsUIUtils::SetIsTitlebarCollapsed(mWnd, mCustomNonClient); - } - } -diff --git a/widget/windows/nsWindow.h b/widget/windows/nsWindow.h -index 20f016757dfee..2756b248368a3 100644 ---- a/widget/windows/nsWindow.h -+++ b/widget/windows/nsWindow.h -@@ -335,6 +335,8 @@ class nsWindow final : public nsIWidget { - - bool IsRTL() const { return mIsRTL; } - -+ bool ShouldAssociateWithWinAppSDK() const; -+ - /** - * AssociateDefaultIMC() associates or disassociates the default IMC for - * the window. - \ No newline at end of file diff --git a/src/firefox-patches/147_windows_border_fix_2.patch b/src/firefox-patches/147_windows_border_fix_2.patch deleted file mode 100644 index de070e124..000000000 --- a/src/firefox-patches/147_windows_border_fix_2.patch +++ /dev/null @@ -1,58 +0,0 @@ -diff --git a/widget/windows/nsWindow.h b/widget/windows/nsWindow.h ---- a/widget/windows/nsWindow.h -+++ b/widget/windows/nsWindow.h -@@ -850,13 +850,10 @@ - bool mHasTaskbarIconBeenCreated = false; - - // Whether we're in the process of sending a WM_SETTEXT ourselves - bool mSendingSetText = false; - -- // Whether we're a PIP window. -- bool mPIPWindow : 1; -- - // Whether we are asked to render a mica backdrop. - bool mMicaBackdrop : 1; - - int32_t mCachedHitTestResult = 0; - -diff --git a/widget/windows/nsWindow.cpp b/widget/windows/nsWindow.cpp ---- a/widget/windows/nsWindow.cpp -+++ b/widget/windows/nsWindow.cpp -@@ -815,11 +815,10 @@ - **************************************************************/ - - nsWindow::nsWindow() - : nsIWidget(BorderStyle::Default), - mFrameState(std::in_place, this), -- mPIPWindow(false), - mMicaBackdrop(false), - mLastPaintEndTime(TimeStamp::Now()), - mCachedHitTestTime(TimeStamp::Now()), - mSizeConstraintsScale(GetDefaultScale().scale) { - if (!gInitializedVirtualDesktopManager) { -@@ -1026,11 +1025,10 @@ - - HWND parent = - aParent ? (HWND)aParent->GetNativeData(NS_NATIVE_WINDOW) : nullptr; - - mIsRTL = aInitData.mRTL; -- mPIPWindow = aInitData.mPIPWindow; - mOpeningAnimationSuppressed = aInitData.mIsAnimationSuppressed; - mAlwaysOnTop = aInitData.mAlwaysOnTop; - mIsAlert = aInitData.mIsAlert; - mResizable = aInitData.mResizable; - -@@ -2805,11 +2803,11 @@ - } else if (sizeMode == nsSizeMode_Maximized) { - // We make the entire frame part of the client area. We leave the default - // frame sizes for left, right and bottom since Windows will automagically - // position the edges "offscreen" for maximized windows. - metrics.mOffset.top = metrics.mCaptionHeight; -- } else if (mPIPWindow && -+ } else if (mIsPIPWindow && - !StaticPrefs::widget_windows_pip_decorations_enabled()) { - metrics.mOffset = metrics.DefaultMargins(); - } else { - metrics.mOffset = NormalWindowNonClientOffset(); - } - diff --git a/src/firefox-patches/147_windows_border_fix_3.patch b/src/firefox-patches/147_windows_border_fix_3.patch deleted file mode 100644 index 8c93f7304..000000000 --- a/src/firefox-patches/147_windows_border_fix_3.patch +++ /dev/null @@ -1,34 +0,0 @@ -From dd4460727998a53e9fa7372afba2a93a9546cec3 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= -Date: Fri, 28 Nov 2025 15:06:26 +0000 -Subject: [PATCH] Bug 2002986 - Use IAppWindowTitlebar::ResetToDefault() for - non-collapsed titlebar. r=win-reviewers,gstoll - -This seems to actually go to the default DWM stuff and is the documented -way of doing so: - -https://learn.microsoft.com/en-us/windows/apps/develop/title-bar#reset-the-title-bar - -Differential Revision: https://phabricator.services.mozilla.com/D274413 ---- - widget/windows/WindowsUIUtils.cpp | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - -diff --git a/widget/windows/WindowsUIUtils.cpp b/widget/windows/WindowsUIUtils.cpp -index a5a6c893e7056..abaabfba69dfa 100644 ---- a/widget/windows/WindowsUIUtils.cpp -+++ b/widget/windows/WindowsUIUtils.cpp -@@ -1394,7 +1394,11 @@ void WindowsUIUtils::SetIsTitlebarCollapsed(HWND aWnd, bool aIsCollapsed) { - MOZ_ASSERT_UNREACHABLE("IAppWindowTitleBar could not be acquired"); - return; - } -- hr = titleBar->put_ExtendsContentIntoTitleBar(aIsCollapsed); -+ if (aIsCollapsed) { -+ hr = titleBar->put_ExtendsContentIntoTitleBar(aIsCollapsed); -+ } else { -+ hr = titleBar->ResetToDefault(); -+ } - if (FAILED(hr)) { - MOZ_LOG(gWindowsLog, LogLevel::Error, - ("Skipping SetIsTitlebarCollapsed() because " - \ No newline at end of file diff --git a/src/firefox-patches/147_windows_border_fix_4.patch b/src/firefox-patches/147_windows_border_fix_4.patch deleted file mode 100644 index 8c93f7304..000000000 --- a/src/firefox-patches/147_windows_border_fix_4.patch +++ /dev/null @@ -1,34 +0,0 @@ -From dd4460727998a53e9fa7372afba2a93a9546cec3 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= -Date: Fri, 28 Nov 2025 15:06:26 +0000 -Subject: [PATCH] Bug 2002986 - Use IAppWindowTitlebar::ResetToDefault() for - non-collapsed titlebar. r=win-reviewers,gstoll - -This seems to actually go to the default DWM stuff and is the documented -way of doing so: - -https://learn.microsoft.com/en-us/windows/apps/develop/title-bar#reset-the-title-bar - -Differential Revision: https://phabricator.services.mozilla.com/D274413 ---- - widget/windows/WindowsUIUtils.cpp | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - -diff --git a/widget/windows/WindowsUIUtils.cpp b/widget/windows/WindowsUIUtils.cpp -index a5a6c893e7056..abaabfba69dfa 100644 ---- a/widget/windows/WindowsUIUtils.cpp -+++ b/widget/windows/WindowsUIUtils.cpp -@@ -1394,7 +1394,11 @@ void WindowsUIUtils::SetIsTitlebarCollapsed(HWND aWnd, bool aIsCollapsed) { - MOZ_ASSERT_UNREACHABLE("IAppWindowTitleBar could not be acquired"); - return; - } -- hr = titleBar->put_ExtendsContentIntoTitleBar(aIsCollapsed); -+ if (aIsCollapsed) { -+ hr = titleBar->put_ExtendsContentIntoTitleBar(aIsCollapsed); -+ } else { -+ hr = titleBar->ResetToDefault(); -+ } - if (FAILED(hr)) { - MOZ_LOG(gWindowsLog, LogLevel::Error, - ("Skipping SetIsTitlebarCollapsed() because " - \ No newline at end of file diff --git a/src/layout/generic/nsIFrame-cpp.patch b/src/layout/generic/nsIFrame-cpp.patch index 7e42fa2d6..78de363d3 100644 --- a/src/layout/generic/nsIFrame-cpp.patch +++ b/src/layout/generic/nsIFrame-cpp.patch @@ -1,8 +1,8 @@ diff --git a/layout/generic/nsIFrame.cpp b/layout/generic/nsIFrame.cpp -index 794d02a892eaa180cb2aa4fdc46428e37aee2e1e..40daffbb32a2ec43ae2364bcadadbdb9813a3186 100644 +index c0ca05afc1e8eb5cb7115a22c39dcf45285fdfb7..84b3fec2c7b2bc671e7004d8571dc428b8ee011d 100644 --- a/layout/generic/nsIFrame.cpp +++ b/layout/generic/nsIFrame.cpp -@@ -11918,6 +11918,11 @@ gfx::Matrix nsIFrame::ComputeWidgetTransform() const { +@@ -11958,6 +11958,11 @@ gfx::Matrix nsIFrame::ComputeWidgetTransform() const { gfx::Matrix4x4 matrix = nsStyleTransformMatrix::ReadTransforms( uiReset->mMozWindowTransform, refBox, float(appUnitsPerDevPixel)); diff --git a/src/layout/style/nsStyleStruct-cpp.patch b/src/layout/style/nsStyleStruct-cpp.patch index 0af32a1b4..c7ab09331 100644 --- a/src/layout/style/nsStyleStruct-cpp.patch +++ b/src/layout/style/nsStyleStruct-cpp.patch @@ -1,8 +1,8 @@ diff --git a/layout/style/nsStyleStruct.cpp b/layout/style/nsStyleStruct.cpp -index ee49683ebfee306e23aed808006fd34f4db6d4c6..d7f55a861aa8a3d1e4d8c343b7da008ee559fd8a 100644 +index 3c84ea049b01c20c6a7e9ff717e19d1d9e86248b..ed6b15dffa571348d1c13bf31f3b2e1638151e8f 100644 --- a/layout/style/nsStyleStruct.cpp +++ b/layout/style/nsStyleStruct.cpp -@@ -3231,6 +3231,9 @@ nsStyleUIReset::nsStyleUIReset() +@@ -3217,6 +3217,9 @@ nsStyleUIReset::nsStyleUIReset() mWindowShadow(StyleWindowShadow::Auto), mWindowOpacity(1.0), mMozWindowInputRegionMargin(StyleLength::Zero()), @@ -12,7 +12,7 @@ index ee49683ebfee306e23aed808006fd34f4db6d4c6..d7f55a861aa8a3d1e4d8c343b7da008e mTransitions( nsStyleAutoArray::WITH_SINGLE_INITIAL_ELEMENT), mTransitionTimingFunctionCount(1), -@@ -3275,6 +3278,7 @@ nsStyleUIReset::nsStyleUIReset(const nsStyleUIReset& aSource) +@@ -3261,6 +3264,7 @@ nsStyleUIReset::nsStyleUIReset(const nsStyleUIReset& aSource) mWindowOpacity(aSource.mWindowOpacity), mMozWindowInputRegionMargin(aSource.mMozWindowInputRegionMargin), mMozWindowTransform(aSource.mMozWindowTransform), diff --git a/src/layout/style/nsStyleStruct-h.patch b/src/layout/style/nsStyleStruct-h.patch index 19a0798dd..53a947b9a 100644 --- a/src/layout/style/nsStyleStruct-h.patch +++ b/src/layout/style/nsStyleStruct-h.patch @@ -1,8 +1,8 @@ diff --git a/layout/style/nsStyleStruct.h b/layout/style/nsStyleStruct.h -index 37945cdc8fc664f9a21999ee147fb241f3e55dfd..2694aae35e911cce2fa2c39409333960675fdeeb 100644 +index 20d0dc30020ee7fcd27f689cb6c0754224b003c5..dcca0efd2c9822937c994dffeb63d2263fbb6331 100644 --- a/layout/style/nsStyleStruct.h +++ b/layout/style/nsStyleStruct.h -@@ -2087,6 +2087,7 @@ struct MOZ_NEEDS_MEMMOVABLE_MEMBERS nsStyleUIReset { +@@ -2080,6 +2080,7 @@ struct MOZ_NEEDS_MEMMOVABLE_MEMBERS nsStyleUIReset { // The margin of the window region that should be transparent to events. mozilla::StyleLength mMozWindowInputRegionMargin; mozilla::StyleTransform mMozWindowTransform; diff --git a/src/modules/libpref/init/StaticPrefList-yaml.patch b/src/modules/libpref/init/StaticPrefList-yaml.patch index 5ab3dcbb6..59c862248 100644 --- a/src/modules/libpref/init/StaticPrefList-yaml.patch +++ b/src/modules/libpref/init/StaticPrefList-yaml.patch @@ -1,8 +1,8 @@ diff --git a/modules/libpref/init/StaticPrefList.yaml b/modules/libpref/init/StaticPrefList.yaml -index 6c725ea8c727920cf85244ff5b13f24a41e93456..1a16c8cc6585786f87cbea54eb548099cf3a66b4 100644 +index cc7fd419035a972bfab1b0e7631b8856e846ce81..b4e6d699f99e7164e62ce20792919420a8e73810 100644 --- a/modules/libpref/init/StaticPrefList.yaml +++ b/modules/libpref/init/StaticPrefList.yaml -@@ -19534,6 +19534,7 @@ +@@ -19738,6 +19738,7 @@ mirror: always #endif diff --git a/src/testing/mochitest/browser-test-js.patch b/src/testing/mochitest/browser-test-js.patch index 80019526a..d52ce3e90 100644 --- a/src/testing/mochitest/browser-test-js.patch +++ b/src/testing/mochitest/browser-test-js.patch @@ -1,5 +1,5 @@ diff --git a/testing/mochitest/browser-test.js b/testing/mochitest/browser-test.js -index 91bd995c2910fae5a3f67a960d15d90de3c997df..a7157331184e099ee468a719d6ec0f2d766dbed1 100644 +index a687d271a91207f3e4a7b9afdf67031f8d9385d1..ebbf2e0cbf5e9eeca472c4c2a5963c290be8897d 100644 --- a/testing/mochitest/browser-test.js +++ b/testing/mochitest/browser-test.js @@ -442,10 +442,10 @@ Tester.prototype = { diff --git a/src/testing/profiles/mochitest/user-js.patch b/src/testing/profiles/mochitest/user-js.patch index 07e357a0a..b9dfb1495 100644 --- a/src/testing/profiles/mochitest/user-js.patch +++ b/src/testing/profiles/mochitest/user-js.patch @@ -1,8 +1,8 @@ diff --git a/testing/profiles/mochitest/user.js b/testing/profiles/mochitest/user.js -index a4068ac3f61161d014c49d54ae7a3bf886868f1b..b755e8004bc19817c83668603ecf0127000b709f 100644 +index 782258420cdce901f182897b796731a1fdf69ecf..59b2827a7cd8a8580ba5061cabb36a2ba13240ba 100644 --- a/testing/profiles/mochitest/user.js +++ b/testing/profiles/mochitest/user.js -@@ -41,3 +41,8 @@ user_pref("places.history.floodingPrevention.enabled", false); +@@ -36,3 +36,8 @@ 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); diff --git a/src/toolkit/actors/PictureInPictureChild-sys-mjs.patch b/src/toolkit/actors/PictureInPictureChild-sys-mjs.patch index a71cb9a62..bd8745935 100644 --- a/src/toolkit/actors/PictureInPictureChild-sys-mjs.patch +++ b/src/toolkit/actors/PictureInPictureChild-sys-mjs.patch @@ -1,8 +1,8 @@ diff --git a/toolkit/actors/PictureInPictureChild.sys.mjs b/toolkit/actors/PictureInPictureChild.sys.mjs -index 25ae1e984e3dbd610b60930492e1fa63ef889b9a..2680f2bdabf9884bc2c68b2db7b2fbedbb8af317 100644 +index 36652b2d70fd5131d56710a27e7cba350d032da8..13ebbf99b5517b635272d02db740bd3aee1b9ce4 100644 --- a/toolkit/actors/PictureInPictureChild.sys.mjs +++ b/toolkit/actors/PictureInPictureChild.sys.mjs -@@ -295,6 +295,7 @@ export class PictureInPictureLauncherChild extends JSWindowActorChild { +@@ -296,6 +296,7 @@ export class PictureInPictureLauncherChild extends JSWindowActorChild { if ( video && PictureInPictureChild.videoIsPlaying(video) && diff --git a/src/toolkit/components/pictureinpicture/PictureInPicture-sys-mjs.patch b/src/toolkit/components/pictureinpicture/PictureInPicture-sys-mjs.patch index 17604acc6..35eef7a60 100644 --- a/src/toolkit/components/pictureinpicture/PictureInPicture-sys-mjs.patch +++ b/src/toolkit/components/pictureinpicture/PictureInPicture-sys-mjs.patch @@ -1,5 +1,5 @@ diff --git a/toolkit/components/pictureinpicture/PictureInPicture.sys.mjs b/toolkit/components/pictureinpicture/PictureInPicture.sys.mjs -index ad325b45b882e8444b1b4bfc9c78950cf090b411..14f7d840bb91dfef0887537ef95de733d5591265 100644 +index 098742100858b266aebc8f764f918c85815f3c5f..71b8f8d71d48229fc96d6c84c635d09012a82250 100644 --- a/toolkit/components/pictureinpicture/PictureInPicture.sys.mjs +++ b/toolkit/components/pictureinpicture/PictureInPicture.sys.mjs @@ -122,6 +122,9 @@ export class PictureInPictureToggleParent extends JSWindowActorParent { @@ -12,7 +12,7 @@ index ad325b45b882e8444b1b4bfc9c78950cf090b411..14f7d840bb91dfef0887537ef95de733 let actor = browsingContext.currentWindowGlobal.getActor( "PictureInPictureLauncher" ); -@@ -490,7 +493,7 @@ export var PictureInPicture = { +@@ -493,7 +496,7 @@ export var PictureInPicture = { // focus the tab's window tab.ownerGlobal.focus(); diff --git a/src/toolkit/components/pictureinpicture/content/player-js.patch b/src/toolkit/components/pictureinpicture/content/player-js.patch index 6e461b23b..eab15a020 100644 --- a/src/toolkit/components/pictureinpicture/content/player-js.patch +++ b/src/toolkit/components/pictureinpicture/content/player-js.patch @@ -1,8 +1,8 @@ diff --git a/toolkit/components/pictureinpicture/content/player.js b/toolkit/components/pictureinpicture/content/player.js -index 8a1088b318dfd321b4e5f34819c689a10e7f87b2..8d1816b27a0c88ab41b654249ae52111129edbf5 100644 +index 34d92dcfba54de4752036d0e251243729b6c9626..20a0399e3bf6f9827f805ea6975b801ae269646d 100644 --- a/toolkit/components/pictureinpicture/content/player.js +++ b/toolkit/components/pictureinpicture/content/player.js -@@ -760,6 +760,11 @@ let Player = { +@@ -764,6 +764,11 @@ let Player = { document.getElementById("large").click(); break; } diff --git a/src/toolkit/content/widgets/browser-custom-element-mjs.patch b/src/toolkit/content/widgets/browser-custom-element-mjs.patch index 1bc326580..0403fae18 100644 --- a/src/toolkit/content/widgets/browser-custom-element-mjs.patch +++ b/src/toolkit/content/widgets/browser-custom-element-mjs.patch @@ -1,5 +1,5 @@ diff --git a/toolkit/content/widgets/browser-custom-element.mjs b/toolkit/content/widgets/browser-custom-element.mjs -index 98cbfdbe56bccc954aecca2b12950c74842fe201..303c86f29b532a7139f36f3cd86dfc72d2df8ab5 100644 +index bd950fab1b2382738297dff429ad9e6cc68e1ddb..dfda3b7cffec5c3ff35079761283c9baa43951ce 100644 --- a/toolkit/content/widgets/browser-custom-element.mjs +++ b/toolkit/content/widgets/browser-custom-element.mjs @@ -495,11 +495,11 @@ export class MozBrowser extends MozElements.MozElementMixin(XULFrameElement) { diff --git a/src/toolkit/content/widgets/findbar-js.patch b/src/toolkit/content/widgets/findbar-js.patch index 1390e7618..5ef6d8500 100644 --- a/src/toolkit/content/widgets/findbar-js.patch +++ b/src/toolkit/content/widgets/findbar-js.patch @@ -1,8 +1,8 @@ diff --git a/toolkit/content/widgets/findbar.js b/toolkit/content/widgets/findbar.js -index 589d96886b1c9a1bd0e819957978a8968402e98b..4df4be8dbbe67063f0e1920baa2db3f5b909b11b 100644 +index b66dce5bea757fdf6a9bbd656551d876e47aa8a3..bdfb6331d7ebfb283290b1c97601b743421194e3 100644 --- a/toolkit/content/widgets/findbar.js +++ b/toolkit/content/widgets/findbar.js -@@ -1188,6 +1188,7 @@ +@@ -1189,6 +1189,7 @@ * e.g. */ onFindCommand() { diff --git a/src/toolkit/content/widgets/tabbox-js.patch b/src/toolkit/content/widgets/tabbox-js.patch index 204071c79..8cec4b1fb 100644 --- a/src/toolkit/content/widgets/tabbox-js.patch +++ b/src/toolkit/content/widgets/tabbox-js.patch @@ -1,5 +1,5 @@ diff --git a/toolkit/content/widgets/tabbox.js b/toolkit/content/widgets/tabbox.js -index 4f5886c6142f8061f40a54aa3a5d99e47fd4d5ea..c57e169f5c73c4bc9b8253dd99ddb7f3c4547364 100644 +index 7f6e075c818a6aefdcbdfb8ab04df8daa07499d5..9e2d05a9ce02630b8305d5642b6c0d7cbafb10b2 100644 --- a/toolkit/content/widgets/tabbox.js +++ b/toolkit/content/widgets/tabbox.js @@ -11,6 +11,23 @@ diff --git a/src/toolkit/modules/LightweightThemeConsumer-sys-mjs.patch b/src/toolkit/modules/LightweightThemeConsumer-sys-mjs.patch index 95321d291..393f2c0f3 100644 --- a/src/toolkit/modules/LightweightThemeConsumer-sys-mjs.patch +++ b/src/toolkit/modules/LightweightThemeConsumer-sys-mjs.patch @@ -1,5 +1,5 @@ diff --git a/toolkit/modules/LightweightThemeConsumer.sys.mjs b/toolkit/modules/LightweightThemeConsumer.sys.mjs -index 57d5bf70c2584359f09b03932852a6e3fafb1008..39a798817f1a3e4a77a95fc04e9697c7b93ee044 100644 +index c12ba1cd3891dab6ccf07e0ee069d44cc11f3c8f..d7e35aa2dc93629f74e62d6437e3a064242e8974 100644 --- a/toolkit/modules/LightweightThemeConsumer.sys.mjs +++ b/toolkit/modules/LightweightThemeConsumer.sys.mjs @@ -32,7 +32,7 @@ const toolkitVariableMap = [ diff --git a/src/toolkit/modules/ShortcutUtils-sys-mjs.patch b/src/toolkit/modules/ShortcutUtils-sys-mjs.patch index d544c4f4b..6dd578029 100644 --- a/src/toolkit/modules/ShortcutUtils-sys-mjs.patch +++ b/src/toolkit/modules/ShortcutUtils-sys-mjs.patch @@ -1,5 +1,5 @@ diff --git a/toolkit/modules/ShortcutUtils.sys.mjs b/toolkit/modules/ShortcutUtils.sys.mjs -index e52e88a09a281e69ecf15e7b84b8b98736e1dbdd..f47fbe24e0860195e11fe5231ab27e52aad96d0b 100644 +index 0a2a5ac202fe7fbdd1540254db847d59c3fe2a88..fca3cd0719e51ffa745e8dac050dcefc7bc70f93 100644 --- a/toolkit/modules/ShortcutUtils.sys.mjs +++ b/toolkit/modules/ShortcutUtils.sys.mjs @@ -414,13 +414,11 @@ export var ShortcutUtils = { diff --git a/src/toolkit/moz-configure.patch b/src/toolkit/moz-configure.patch index 6b6aade83..501222625 100644 --- a/src/toolkit/moz-configure.patch +++ b/src/toolkit/moz-configure.patch @@ -1,5 +1,5 @@ diff --git a/toolkit/moz.configure b/toolkit/moz.configure -index 52bca068f90cd8e214900e8f3159e1f7e37fb3e8..bfb5a38258141ed28def7c9a340a61253b0e3274 100644 +index 226d0c5a93a9a2404e1974001da4e34b7b670067..18ac234b577eb514d3ef3467e24fceb0eb1ec8f8 100644 --- a/toolkit/moz.configure +++ b/toolkit/moz.configure @@ -22,6 +22,7 @@ def check_moz_app_id(moz_app_id, build_project): diff --git a/src/toolkit/mozapps/extensions/AddonManager-sys-mjs.patch b/src/toolkit/mozapps/extensions/AddonManager-sys-mjs.patch index 002478c6e..fd34f85c8 100644 --- a/src/toolkit/mozapps/extensions/AddonManager-sys-mjs.patch +++ b/src/toolkit/mozapps/extensions/AddonManager-sys-mjs.patch @@ -1,8 +1,8 @@ diff --git a/toolkit/mozapps/extensions/AddonManager.sys.mjs b/toolkit/mozapps/extensions/AddonManager.sys.mjs -index 3562dfc61f6462a4e46ff321d4df4df23f48949d..2afc42cae98a24ecfd129c8a3dd1e7e0a94882ab 100644 +index 4fe6aaa127d12bfebb9b246cf1bcaeb78aeef506..879831ff1f979f38c677b941fae447f876999d35 100644 --- a/toolkit/mozapps/extensions/AddonManager.sys.mjs +++ b/toolkit/mozapps/extensions/AddonManager.sys.mjs -@@ -1243,12 +1243,12 @@ var AddonManagerInternal = { +@@ -1278,12 +1278,12 @@ var AddonManagerInternal = { ITEM_VERSION: aAddon.version, ITEM_STATUS: addonStatus, APP_ID: Services.appinfo.ID, diff --git a/src/toolkit/mozapps/extensions/content/aboutaddons-css.patch b/src/toolkit/mozapps/extensions/content/aboutaddons-css.patch index 6d7811e7c..27b01add7 100644 --- a/src/toolkit/mozapps/extensions/content/aboutaddons-css.patch +++ b/src/toolkit/mozapps/extensions/content/aboutaddons-css.patch @@ -1,8 +1,8 @@ diff --git a/toolkit/mozapps/extensions/content/aboutaddons.css b/toolkit/mozapps/extensions/content/aboutaddons.css -index 60c64468fb23abc68296ebbe1a6fb7a260ab509c..25b93a2c6b587a50e9a900e822ef06e64959c7d0 100644 +index da127019467107973300b4df8d9b95e8bfb0e05c..bcee9583654609bdcba55605eebb97be8bec286e 100644 --- a/toolkit/mozapps/extensions/content/aboutaddons.css +++ b/toolkit/mozapps/extensions/content/aboutaddons.css -@@ -105,6 +105,13 @@ h2 { +@@ -106,6 +106,13 @@ h2 { .category[name="theme"] { background-image: url("chrome://mozapps/skin/extensions/category-themes.svg"); } diff --git a/src/toolkit/themes/shared/aboutReader-css.patch b/src/toolkit/themes/shared/aboutReader-css.patch index 3c6aac2c4..e17db5d0f 100644 --- a/src/toolkit/themes/shared/aboutReader-css.patch +++ b/src/toolkit/themes/shared/aboutReader-css.patch @@ -1,5 +1,5 @@ diff --git a/toolkit/themes/shared/aboutReader.css b/toolkit/themes/shared/aboutReader.css -index f1166fb9b8251ee7d631c53c443e5986cbf4d29d..9233941bbdbf235c0ce6ce9b680002f2023d659c 100644 +index 978d0ac8ae4a82947424c13c20d0f1d274dffe10..e5c7c489f7fff0661f103cdb383364bc8aa423a8 100644 --- a/toolkit/themes/shared/aboutReader.css +++ b/toolkit/themes/shared/aboutReader.css @@ -1187,3 +1187,43 @@ pre code { diff --git a/src/toolkit/themes/shared/design-system/tokens-brand-css.patch b/src/toolkit/themes/shared/design-system/tokens-brand-css.patch deleted file mode 100644 index 429c2ed41..000000000 --- a/src/toolkit/themes/shared/design-system/tokens-brand-css.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/toolkit/themes/shared/design-system/tokens-brand.css b/toolkit/themes/shared/design-system/tokens-brand.css -index 3ad65bc44fe06be77c4e5e679bb52bd0813cc972..3906b0bbcbbe6149ed7131460305074f079090a7 100644 ---- a/toolkit/themes/shared/design-system/tokens-brand.css -+++ b/toolkit/themes/shared/design-system/tokens-brand.css -@@ -6,6 +6,7 @@ - * and run `npm run build` to see your changes. */ - - @import url("chrome://global/skin/design-system/tokens-shared.css"); -+@import url("chrome://browser/content/zen-styles/zen-theme.css"); - - @layer tokens-foundation { - :root, diff --git a/src/toolkit/themes/shared/in-content/common-shared-css.patch b/src/toolkit/themes/shared/in-content/common-shared-css.patch index 89ad2aba0..6edb65368 100644 --- a/src/toolkit/themes/shared/in-content/common-shared-css.patch +++ b/src/toolkit/themes/shared/in-content/common-shared-css.patch @@ -1,8 +1,8 @@ diff --git a/toolkit/themes/shared/in-content/common-shared.css b/toolkit/themes/shared/in-content/common-shared.css -index 41f65a1f2c3065631780b02d820f632abdf542af..d15ff979c5d2deecca3d232f68551bec10ba6b8f 100644 +index c1acf2d6ab3c9a260e73d43af027f34a807e01dc..dbef9778a1582881dd83f4a1dde455308719b2be 100644 --- a/toolkit/themes/shared/in-content/common-shared.css +++ b/toolkit/themes/shared/in-content/common-shared.css -@@ -66,7 +66,7 @@ +@@ -63,7 +63,7 @@ * this in forced colors mode, as we should be using system colours then. */ :root[dialogroot] { @@ -11,7 +11,7 @@ index 41f65a1f2c3065631780b02d820f632abdf542af..d15ff979c5d2deecca3d232f68551bec } } -@@ -702,7 +702,7 @@ html|*#categories[last-input-type="mouse"] > html|button.category:focus-visible +@@ -696,7 +696,7 @@ html|*#categories[last-input-type="mouse"] > html|button.category:focus-visible fill-opacity: 1; } @@ -20,7 +20,7 @@ index 41f65a1f2c3065631780b02d820f632abdf542af..d15ff979c5d2deecca3d232f68551bec :root { --in-content-sidebar-width: 118px; } -@@ -1092,7 +1092,7 @@ xul|*.sidebar-footer-link { +@@ -1078,7 +1078,7 @@ xul|*.sidebar-footer-link { user-select: none; } diff --git a/src/toolkit/themes/shared/pictureinpicture/player-css.patch b/src/toolkit/themes/shared/pictureinpicture/player-css.patch index e326f8855..1891d3a67 100644 --- a/src/toolkit/themes/shared/pictureinpicture/player-css.patch +++ b/src/toolkit/themes/shared/pictureinpicture/player-css.patch @@ -1,5 +1,5 @@ diff --git a/toolkit/themes/shared/pictureinpicture/player.css b/toolkit/themes/shared/pictureinpicture/player.css -index 67d04f0f5a2ec003c4fa484df72c070afaa825c7..7cb0839d44c5c1988bc8a62d14ecd5e8cb581e2f 100644 +index 2e502fb075546bab4349f3da97069e764528d763..4ff7f2ee47085c2d2131f54a647468fab81c7d88 100644 --- a/toolkit/themes/shared/pictureinpicture/player.css +++ b/toolkit/themes/shared/pictureinpicture/player.css @@ -738,3 +738,17 @@ input:checked + .slider::before { diff --git a/src/widget/cocoa/VibrancyManager-mm.patch b/src/widget/cocoa/VibrancyManager-mm.patch index 1d071d639..e49e02f2b 100644 --- a/src/widget/cocoa/VibrancyManager-mm.patch +++ b/src/widget/cocoa/VibrancyManager-mm.patch @@ -35,7 +35,7 @@ index b4c14233c64dd3515518d3167f8ee2877fe41a93..2b91fa3044794765b8e15c6b66b348de case VibrancyType::Titlebar: return NSVisualEffectMaterialTitlebar; } -@@ -78,6 +95,7 @@ static NSVisualEffectBlendingMode VisualEffectBlendingModeForVibrancyType( +@@ -78,6 +95,7 @@ - (NSView*)hitTest:(NSPoint)aPoint { - (void)prefChanged { self.blendingMode = VisualEffectBlendingModeForVibrancyType(mType); diff --git a/src/xpfe/appshell/AppWindow-cpp.patch b/src/xpfe/appshell/AppWindow-cpp.patch index 6e5433301..19ae3adc1 100644 --- a/src/xpfe/appshell/AppWindow-cpp.patch +++ b/src/xpfe/appshell/AppWindow-cpp.patch @@ -1,8 +1,8 @@ diff --git a/xpfe/appshell/AppWindow.cpp b/xpfe/appshell/AppWindow.cpp -index eba6c332249bfe936da285f73b7a1723cf480950..85db9031b6605da91987901d0c6ce31ddb56c3ad 100644 +index 43b1546c4f4e4a2cba57c69ffb414c0b26c21ddd..0989f74f2f2e219162298d6ad7ea5c68ca9491a1 100644 --- a/xpfe/appshell/AppWindow.cpp +++ b/xpfe/appshell/AppWindow.cpp -@@ -1873,7 +1873,7 @@ nsresult AppWindow::MaybeSaveEarlyWindowPersistentValues( +@@ -1879,7 +1879,7 @@ nsresult AppWindow::MaybeSaveEarlyWindowPersistentValues( } } diff --git a/src/zen/common/modules/ZenUIManager.mjs b/src/zen/common/modules/ZenUIManager.mjs index b775ad136..806355e4a 100644 --- a/src/zen/common/modules/ZenUIManager.mjs +++ b/src/zen/common/modules/ZenUIManager.mjs @@ -531,7 +531,11 @@ window.gZenUIManager = { // Safely restore URL bar state with proper validation if (this._prevUrlbarLabel) { - gURLBar.setURI(this._prevUrlbarLabel, onSwitch, false, false, !onSwitch); + gURLBar.setURI({ + uri: this._prevUrlbarLabel, + dueToTabSwitch: onSwitch, + isSameDocument: !onSwitch, + }); } gURLBar.handleRevert(); @@ -545,7 +549,7 @@ window.gZenUIManager = { gURLBar.updateTextOverflow(); if (onElementPicked && onSwitch) { - gURLBar.setURI(null, onSwitch); + gURLBar.setURI({ dueToTabSwitch: onSwitch }); } // Ensure tab and browser are valid before updating state diff --git a/src/zen/split-view/ZenViewSplitter.mjs b/src/zen/split-view/ZenViewSplitter.mjs index 6d85041e2..7076daaf8 100644 --- a/src/zen/split-view/ZenViewSplitter.mjs +++ b/src/zen/split-view/ZenViewSplitter.mjs @@ -1141,7 +1141,7 @@ class nsZenViewSplitter extends nsZenDOMOperatedFeature { for (let i = 0; i < tabs.length; i++) { const tab = tabs[i]; if (!group.tabs.includes(tab)) { - gBrowser.moveTabToGroup(tab, this._getSplitViewGroup(tabs)); + gBrowser.moveTabToExistingGroup(tab, this._getSplitViewGroup(tabs)); group.tabs.push(tab); this.addTabToSplit(tab, group.layoutTree); } @@ -1188,7 +1188,7 @@ class nsZenViewSplitter extends nsZenDOMOperatedFeature { if (splitGroup) { for (const tab of tabs) { if (!tab.group || tab.group !== splitGroup) { - gBrowser.moveTabToGroup(tab, splitGroup); + gBrowser.moveTabToExistingGroup(tab, splitGroup); } } } @@ -1783,7 +1783,7 @@ class nsZenViewSplitter extends nsZenDOMOperatedFeature { let splitGroup = droppedOnTab.group; if (splitGroup && (!draggedTab.group || draggedTab.group !== splitGroup)) { this._moveTabsToContainer([draggedTab], droppedOnTab); - gBrowser.moveTabToGroup(draggedTab, splitGroup); + gBrowser.moveTabToExistingGroup(draggedTab, splitGroup); if (hoverSide === 'left' || hoverSide === 'top') { try { splitGroup.tabs[0].before(draggedTab);