Compare commits

...

82 Commits

Author SHA1 Message Date
mr. m
368cb06d77 Revert "chore: Change the twilight release tag name to canary, b=no-bug, c=workflows"
This reverts commit d28622e749.
2026-02-21 11:37:28 +01:00
mr. m
d28622e749 chore: Change the twilight release tag name to canary, b=no-bug, c=workflows 2026-02-21 10:30:28 +01:00
mr. m
84679f912d Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2026-02-21 10:10:21 +01:00
mr. m
b1ef36c670 feat: Only load about:blank for secondary views when needed, b=no-bug, c=no-component 2026-02-21 10:10:05 +01:00
Slowlife
c28d6520d6 feat: Live folders, p=#11921
Co-authored-by: Slowlife01 <slowlife1165@gmail.com>
Co-authored-by: mr. m <91018726+mr-cheffy@users.noreply.github.com>
Co-authored-by: reizumi <reizumichan@protonmail.com>
2026-02-21 00:17:05 +01:00
mr. m
97078b42ac feat: Make sure to search from other backups files when restoring, b=no-bug, c=no-component 2026-02-21 00:04:09 +01:00
mr. m
29eae92fcb feat: Fix spelling mistake on recovery data, b=no-bug, c=no-component 2026-02-20 22:23:00 +01:00
mr. m
124bcee596 Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2026-02-20 21:52:03 +01:00
mr. m
92faf227b7 feat: Disable rounded corners for GTK windows, b=closes #6302, c=no-component 2026-02-20 21:38:05 +01:00
kae
7280e03c12 fix: reset the search mode after closing the urlbar, p=#12437
Co-authored-by: mr. m <91018726+mr-cheffy@users.noreply.github.com>
2026-02-20 17:28:02 +01:00
mr. m
dbb1e28b2f chore: Sync upstream Firefox to version 148.0, p=#12440 2026-02-20 17:24:17 +01:00
mr. m
a8e245b28a feat: Listen for tabHide and tabShow events for window sync, b=bug #12408, c=no-component 2026-02-19 00:50:11 +01:00
mr. m
a30ddc98bd feat: Correctly calculate certain popup opening coordinates, b=no-bug, c=folders, workspaces 2026-02-19 00:38:21 +01:00
mr. m
6273313ce3 fix: Fixed startup freeze when a group was not found, b=closes #12420, c=no-component 2026-02-18 19:18:12 +01:00
mr. m
dd26ec1171 fix: Fixed tabs becoming empty tabs when switching between windows, b=bug #12421, c=no-component 2026-02-18 12:52:26 +01:00
mr. m
1d2a14f9e4 feat: Correctly calculate size of folder search popup, b=no-bug, c=flatpak, folders, workspaces 2026-02-17 22:40:00 +01:00
mr. m
5be2ffa418 fix: Fixed not being able to unload tabs that are in another workspace, b=closes #9683, c=no-component 2026-02-17 17:20:28 +01:00
mr. m
a30798a275 feat: Rework panel animations and updated Firefox 147.0.4, b=no-bug, c=split-view, folders, common, compact-mode, kbs, workspaces 2026-02-17 13:01:38 +01:00
mr. m
214fd4aff0 feat: Include X-AppImage-Version into the AppImage .desktop file, b=closes #12412, c=workflows 2026-02-17 12:13:41 +01:00
mr. m
ddd7f165bf feat: Lower the timing of panel animations, b=no-bug, c=common 2026-02-16 16:25:01 +01:00
Abdush salam
ae5f9060d4 fix: Remove duplicate fullscreen shortcuts from settings, b=closes #12237. p=#12395, c=kbs 2026-02-16 14:17:06 +01:00
mr. m
362764f497 Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2026-02-16 14:03:27 +01:00
mr. m
083f388176 chore: Remove x-checker-data for flatpak releases, b=no-bug, c=flatpak 2026-02-16 14:03:23 +01:00
Ivaon
813fc16986 fix: properly collapse folder when unloading all tabs, p=#12399
* fix: properly collapse folder when unloading all tabs

* chore: fix implementation in wrong function
2026-02-16 11:29:57 +01:00
mr. m
86a9c17acd feat: Make sure to always clear dragging-out flag on each new drag event, b=no-bug, c=tabs 2026-02-16 00:11:36 +01:00
mr. m
3d0bdbc71b chore: Fixed linting and formatting, b=no-bug, c=common 2026-02-15 23:54:22 +01:00
mr. m
119bedce30 feat: Don't trim the URL if the omnibox has been opened, b=no-bug, c=common 2026-02-15 22:41:00 +01:00
mr. m
1493c6be21 Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2026-02-15 22:32:19 +01:00
mr. m
4d4d6970e3 fix: Fixed DnD indicator not showing when there are no pinned tabs, b=no-bug, c=common, tabs 2026-02-15 22:31:59 +01:00
TogiFerretFerret
3914d33968 chore: fix issue where transparent browsers have a forced-white sync, p=#12392
* chore: fix issue where transparent browsers have a forced-white sync background without breaking non-transparent browsers

* chore: fix linting issue
2026-02-15 19:44:38 +01:00
mr. m
c4f98b0cd8 fix: Fixed back/frwd buttons switching tab's state instead of space, b=closes #9157, c=workspaces 2026-02-15 14:12:02 +01:00
mr. m
6e728d0e2f feat: Remove unnecesary browser flush calls, b=bug #12152, c=no-component 2026-02-15 13:59:08 +01:00
mr. m
3bd1101f7b fix: Fixed moving tabs to different spaces in separate windows, b=closes #12235, c=tabs 2026-02-15 13:50:51 +01:00
mr. m
c55126085b chore: Fix merge conflicts, b=no-bug, c=no-component 2026-02-15 13:38:00 +01:00
mr. m
9a6db5fb86 fix: Fixed migration data not working if there where any errors, b=no-bug, c=no-component 2026-02-15 13:36:37 +01:00
Ivaon
8274718d0d ft: add shortcut to toggle Firefox Sidebar, p=#12371 2026-02-13 23:42:48 +01:00
mr. m
5511defb1e feat: Dont restore sidebar if window-sync is disabled, b=no-bug, c=no-component 2026-02-13 21:18:13 +01:00
mr. m
894fbd6a4f fix: Fixed selected space not being highlighted, b=closes #12368, c=configs, common 2026-02-13 20:22:49 +01:00
mr. m
5a26cb6601 feat: Correctly start backup before-write session files, b=no-bug, c=folders 2026-02-13 00:01:35 +01:00
mr. m
2eb09f092c fix: Add a flag to change labels when restoring, b=bug #12152, c=no-component 2026-02-12 20:19:02 +01:00
mr. m
66081e97f6 fix: Remove clip overflow from nav-bar and update rust version, b=no-bug, c=workflows, common 2026-02-12 19:58:58 +01:00
mr. m
08873b0ce7 chore: Bump up rustc version, b=no-bug, c=no-component 2026-02-12 18:41:40 +01:00
mr. m
6dce6d60e9 fix: Fixed window caption buttons not having any padding, b=no-bug, c=common 2026-02-12 17:59:18 +01:00
mr. m
302e321da6 Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2026-02-12 12:05:49 +01:00
mr. m
5d5d51c6f3 fix: Only apply transparent background to windows of type navigator:browser, b=no-bug, c=common 2026-02-12 11:58:42 +01:00
Andrey Vlasenko
262209f5a3 feat: Add search option for URL-like input, p=#11998
Co-authored-by: mr. m <91018726+mr-cheffy@users.noreply.github.com>
Co-authored-by: Mr. M <mr.m@tuta.com>
2026-02-11 23:55:53 +01:00
Mr. M
aa4aae9e26 feat: Dont restore content to unsynced windows, b=no-bug, c=no-component 2026-02-11 23:46:59 +01:00
Mr. M
827b89d4e8 feat: Added --blank-window command line argument, b=no-bug, c=common, workspaces 2026-02-11 22:52:32 +01:00
mr. m
a1e7af81cc feat: Take always into account that no normal window may exist when restoring, b=no-bug, c=no-component 2026-02-11 20:35:56 +01:00
mr. m
1db7e19037 Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2026-02-11 13:47:50 +01:00
mr. m
c7db15fe9d feat: New ignore rules to moz.configure for patch calculations, b=no-bug, c=scripts 2026-02-11 13:47:34 +01:00
franky
502d3f7d94 fix: Restore current page URL when urlbar is emptied and blurred, p=#12322, c=no-component
When users click the address bar, clear all text, and then click away
to blur, the urlbar stays empty instead of restoring the current page
URL. This adds a handleRevert() call on blur when the urlbar content
is empty (non-newtab mode), so the current page URL is properly
restored. Partial input is still preserved on blur as before.
2026-02-11 12:50:30 +01:00
mr. m
bd0651165c fix: Fixed spaces disappearing when clearing all history, b=closes #12326, c=no-component 2026-02-11 12:34:44 +01:00
mr. m
af4f336bf5 fix: Make sure to save the state instantly on some occations, b=bug #12152, c=scripts 2026-02-11 11:59:05 +01:00
mr. m
bffc16ba29 chore: Run module list through a use-moz-source migration, b=no-bug, c=common, glance, workspaces 2026-02-11 00:35:08 +01:00
mr. m
7c53549076 feat: Allow favicons to have white boxes for more result types, b=no-bug, c=common 2026-02-10 13:53:54 +01:00
mr. m
0fe3a4af10 feat: Only allow overflowing webexts for twilight, b=no-bug, c=common, tabs 2026-02-10 13:44:27 +01:00
mr. m
4d1d4ab1b6 feat: Add pref to force synced windows to open on DnD, b=no-bug, c=no-component 2026-02-10 11:50:23 +01:00
mr. m
2990de8366 fix: Fixed wrong capitalized text for MacOS menu bar, b=closes #12213, c=common 2026-02-09 23:38:13 +01:00
mr. m
76966ee1c3 feat: Make sure to always restore tabs from a crash, b=no-bug, c=no-component 2026-02-09 23:14:51 +01:00
mr. m
4f9a932e77 fix: Fixed unpinned tabs not being cleared when the pref is off, b=closes #12307, c=no-component 2026-02-09 11:37:10 +01:00
mr. m
f2603521e5 chore: Update external patches, b=no-bug, c=folders 2026-02-09 11:34:02 +01:00
mr. m
24f695c452 Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2026-02-09 09:02:55 +01:00
mr. m
f5effd4dcd feat: Add preference to focus on urlbar on startup, b=no-bug, c=workspaces 2026-02-09 09:02:39 +01:00
Mr. M
b5bb7d7c8b feat: Make sure to use the proper parent reference for XDG paths, b=bug #11917, c=no-component 2026-02-08 20:07:14 +01:00
mr. m
604365dd38 chore: Update external mochitests, b=no-bug, c=tests, scripts, common 2026-02-08 19:20:36 +01:00
TogiFerretFerret
466d089fc0 feat: Add zen identification info, b=closes #12198, p=#12295
* feat: add zen identification to extension runtime for zen-specific features

* chore: add branding to nightly to assist with certain testing (e.g. browser identification)

* test: assert zen info in runtime.getBrowserInfo

* Revert "test: assert zen info in runtime.getBrowserInfo"

This reverts commit 94cfeff29f as the tests fail even without this commit.

* Discard changes to surfer.json

* chore: remove platform from getBrowserInfo (as requested)

---------

Co-authored-by: mr. m <91018726+mr-cheffy@users.noreply.github.com>
2026-02-08 17:48:04 +01:00
Roman
e28a10f6a9 fix: Use optional chaining and nullish coalescing in resetButton, p=#12300
Signed-off-by: Roman <58283566+rmdeuce@users.noreply.github.com>
2026-02-08 13:15:57 +01:00
mr. m
102be6cd90 fix: Remove psueod hidden browser background on close, b=no-bug, c=no-component 2026-02-08 13:15:42 +01:00
mr. m
6e1e1d061b fix: Fixed clicking on the 'add' button not closing the panel, b=no-bug, c=common, workspaces 2026-02-08 11:19:46 +01:00
mr. m
43250d6d37 fix: Fixed bookmarks not being synced with mozilla account, b=bug #12133, c=workspaces 2026-02-08 10:48:12 +01:00
mr. m
12f0c455d1 fix: Fixed 'restore previous tabs' ignored when only pinned sync is enabled, b=closes #12297, c=tabs 2026-02-08 10:35:05 +01:00
Andrey Bochkarev
049c3c6f54 feat: Implement vertical dnd tab splitting, p=#12289 2026-02-07 23:59:28 +01:00
Samuel Akhaze
658ac94334 fix: Fixed Incorrect (Reset pinned tab/Replace pinned url) Text on Essential tab context menu, p=#12283 2026-02-07 23:59:15 +01:00
mr. m
09a90099c7 Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2026-02-07 23:52:51 +01:00
mr. m
051470f139 feat: Small polishing changes, b=no-bug, c=common, workspaces 2026-02-07 21:25:24 +01:00
dependabot[bot]
8f1cb88c11 chore(deps-dev): bump lodash, p=#12292
Bumps the npm_and_yarn group with 1 update in the / directory: [lodash](https://github.com/lodash/lodash).


Updates `lodash` from 4.17.21 to 4.17.23
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.21...4.17.23)

---
updated-dependencies:
- dependency-name: lodash
  dependency-version: 4.17.23
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-07 18:49:21 +01:00
mr. m
3ef233a4c2 Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2026-02-07 18:48:46 +01:00
mr. m
38fcd7e872 fix: Fixed private windows closing when all tabs are cleared, b=closes #12242, c=common, folders, tabs, workspaces 2026-02-07 18:47:06 +01:00
mr. m
76f17c3a57 chore: Automatically import patches from phabricator and librewolf, p=#12271
* chore: Automatically import patches from phabricator and librewolf, b=no-bug, c=workflows, scripts

Signed-off-by: mr. m <91018726+mr-cheffy@users.noreply.github.com>

* feat: Remove legacy flag, b=no-bug, c=common, configs

---------
2026-02-07 18:02:40 +01:00
mr. m
b5c2451525 fix: Fixed overflowing addons not opening the panel at the correct anchor, b=no-bug, c=common 2026-02-07 16:51:44 +01:00
mr. m
ba2a854784 feat: Overflow web extensions below the urlbar, p=#12273
* feat: Overflow web extensions below the urlbar, b=no-bug, c=common

* chore: Ignore toolbar CSS, b=no-bug, c=no-component
2026-02-06 22:56:11 +01:00
195 changed files with 4366 additions and 1174 deletions

View File

@@ -368,7 +368,7 @@ jobs:
strategy: strategy:
matrix: matrix:
arch: [x86_64, aarch64] arch: [x86_64, aarch64]
needs: [linux] needs: [linux, build-data]
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v4 uses: actions/checkout@v4
@@ -406,6 +406,8 @@ jobs:
sed -i -e 's/StartupWMClass=zen/StartupWMClass=zen-twilight/g' build/AppDir/zen.desktop sed -i -e 's/StartupWMClass=zen/StartupWMClass=zen-twilight/g' build/AppDir/zen.desktop
fi fi
sed -i -e 's/\$VERSION/${{ needs.build-data.outputs.version }}/g' build/AppDir/zen.desktop
APPDIR=build/AppDir APPDIR=build/AppDir
tar -xvf *.tar.* && rm -rf *.tar.* tar -xvf *.tar.* && rm -rf *.tar.*
mv zen/* $APPDIR/ mv zen/* $APPDIR/

View File

@@ -92,7 +92,6 @@ jobs:
- name: Fix Rust version - name: Fix Rust version
run: | run: |
# Install a rust version compatible with LLVM 18
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain $(cat .rust-toolchain) curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain $(cat .rust-toolchain)
source $HOME/.cargo/env source $HOME/.cargo/env

View File

@@ -73,15 +73,13 @@ jobs:
npm run sync npm run sync
fi fi
- name: Run formatter - name: Install autopep8
if: steps.check-upstream-branch.outputs.branch_exists == 'false' run: sudo apt install python3-autopep8
run: |
sudo apt install python3-autopep8
npm run pretty
- name: Check if any files changed - name: Check if any files changed
id: git-check id: git-check
run: | run: |
npm run pretty
if [ -n "$(git status --porcelain)" ]; then if [ -n "$(git status --porcelain)" ]; then
echo "files_changed=true" >> $GITHUB_OUTPUT echo "files_changed=true" >> $GITHUB_OUTPUT
else else
@@ -111,6 +109,15 @@ jobs:
if: steps.git-check.outputs.files_changed == 'true' if: steps.git-check.outputs.files_changed == 'true'
run: python3 scripts/import_external_tests.py || true run: python3 scripts/import_external_tests.py || true
- name: Import external patches
if: steps.git-check.outputs.files_changed == 'true'
run: python3 scripts/import_external_patches.py || true
- name: Run formatter
if: steps.check-upstream-branch.outputs.branch_exists == 'false'
run: |
npm run pretty
- name: Create pull request - name: Create pull request
uses: peter-evans/create-pull-request@v7 uses: peter-evans/create-pull-request@v7
if: steps.git-check.outputs.files_changed == 'true' if: steps.git-check.outputs.files_changed == 'true'

View File

@@ -37,5 +37,6 @@ src/zen/common/ZenEmojis.mjs
src/zen/split-view/zen-decks.css src/zen/split-view/zen-decks.css
src/zen/workspaces/zen-workspaces.css src/zen/workspaces/zen-workspaces.css
src/zen/common/styles/zen-toolbar.css
*.inc *.inc

View File

@@ -1 +1 @@
1.83 1.89

View File

@@ -34,8 +34,8 @@ Zen is a firefox-based browser with the aim of pushing your productivity to a ne
### Firefox Versions ### Firefox Versions
- [`Release`](https://zen-browser.app/download) - Is currently built using Firefox version `147.0.3`! 🚀 - [`Release`](https://zen-browser.app/download) - Is currently built using Firefox version `147.0.4`! 🚀
- [`Twilight`](https://zen-browser.app/download?twilight) - Is currently built using Firefox version `RC 147.0.3`! - [`Twilight`](https://zen-browser.app/download?twilight) - Is currently built using Firefox version `RC 148.0`!
### Contributing ### Contributing

View File

@@ -12,6 +12,7 @@ Terminal=false
X-MultipleArgs=false X-MultipleArgs=false
Keywords=Internet;WWW;Browser;Web;Explorer; Keywords=Internet;WWW;Browser;Web;Explorer;
Actions=new-window;new-private-window;profilemanager; Actions=new-window;new-private-window;profilemanager;
X-AppImage-Version=$VERSION
[Desktop Action new-window] [Desktop Action new-window]
Name=Open a New Window Name=Open a New Window

View File

@@ -1 +1 @@
b1e00b74d3791a5a7bbd6ba3d32b69b60471e73b b7d21837fa8fcae98dab2a4f016cc9fb3053903d

View File

@@ -25,6 +25,7 @@ finish-args:
- --filesystem=xdg-run/speech-dispatcher:ro - --filesystem=xdg-run/speech-dispatcher:ro
- --device=all - --device=all
- --talk-name=org.freedesktop.FileManager1 - --talk-name=org.freedesktop.FileManager1
- --talk-name=org.freedesktop.Notifications
- --system-talk-name=org.freedesktop.NetworkManager - --system-talk-name=org.freedesktop.NetworkManager
- --talk-name=org.a11y.Bus - --talk-name=org.a11y.Bus
- --talk-name=org.gtk.vfs.* - --talk-name=org.gtk.vfs.*
@@ -62,12 +63,6 @@ modules:
strip-components: 0 strip-components: 0
only-arches: only-arches:
- x86_64 - x86_64
x-checker-data:
type: json
url: https://api.github.com/repos/zen-browser/desktop/releases/latest
version-query: .tag_name
url-query: .assets[] | select(.name=="zen.linux-x86_64.tar.xz") | .browser_download_url
is-main-source: true
- type: archive - type: archive
url: https://github.com/zen-browser/desktop/releases/download/{version}/zen.linux-aarch64.tar.xz url: https://github.com/zen-browser/desktop/releases/download/{version}/zen.linux-aarch64.tar.xz
@@ -75,12 +70,6 @@ modules:
strip-components: 0 strip-components: 0
only-arches: only-arches:
- aarch64 - aarch64
x-checker-data:
type: json
url: https://api.github.com/repos/zen-browser/desktop/releases/latest
version-query: .tag_name
url-query: .assets[] | select(.name=="zen.linux-aarch64.tar.xz") | .browser_download_url
is-main-source: true
- type: archive - type: archive
url: https://github.com/zen-browser/flatpak/releases/download/{version}/archive.tar url: https://github.com/zen-browser/flatpak/releases/download/{version}/archive.tar

View File

@@ -9,9 +9,6 @@ ac_add_options --with-app-basename=Zen
# Localization (Must be an absolute path) # Localization (Must be an absolute path)
ac_add_options --with-l10n-base="${topsrcdir}/browser/locales" ac_add_options --with-l10n-base="${topsrcdir}/browser/locales"
# See https://github.com/zen-browser/desktop/issues/11917 for future plans.
# We should be removing this at some point and start supporting XDG dirs.
ac_add_options --with-user-appdir=".${binName}"
export MOZ_APP_BASENAME=Zen export MOZ_APP_BASENAME=Zen
export MOZ_BRANDING_DIRECTORY=${brandingDir} export MOZ_BRANDING_DIRECTORY=${brandingDir}
export MOZ_OFFICIAL_BRANDING_DIRECTORY=${brandingDir} export MOZ_OFFICIAL_BRANDING_DIRECTORY=${brandingDir}
@@ -85,6 +82,11 @@ if test "$ZEN_RELEASE"; then
export MOZ_PACKAGE_JSSHELL=1 export MOZ_PACKAGE_JSSHELL=1
ac_add_options --disable-crashreporter ac_add_options --disable-crashreporter
# Experimental flag, enabled only on nightly for Firefox.
# Should bring in some nice performance improvements,
# but may cause stability issues.
ac_add_options --enable-replace-malloc
fi fi
ac_add_options --enable-unverified-updates ac_add_options --enable-unverified-updates

View File

@@ -30,17 +30,11 @@ if test "$ZEN_RELEASE"; then
fi fi
# Disable DMD and ELF hacks, enable linker lld # Disable DMD and ELF hacks, enable linker lld
ac_add_options --disable-dmd
ac_add_options --enable-linker=lld ac_add_options --enable-linker=lld
ac_add_options --disable-elf-hack ac_add_options --disable-elf-hack
ac_add_options --disable-necko-wifi
# Stripping options for release builds # Stripping options for release builds
ac_add_options --enable-install-strip ac_add_options --enable-install-strip
ac_add_options --enable-strip ac_add_options --enable-strip
export STRIP_FLAGS="--strip-debug --strip-unneeded" export STRIP_FLAGS="--strip-debug --strip-unneeded"
fi fi
# Common options
ac_add_options --enable-alsa
ac_add_options --enable-pulseaudio

View File

@@ -6,7 +6,11 @@ zen-panel-ui-current-profile-text = current profile
unified-extensions-description = Extensions are used to bring more extra functionality into { -brand-short-name }. unified-extensions-description = Extensions are used to bring more extra functionality into { -brand-short-name }.
tab-context-zen-reset-pinned-tab = tab-context-zen-reset-pinned-tab =
.label = Reset Pinned Tab .label =
{ $isEssential ->
[true] Reset Essential Tab
*[false] Reset Pinned Tab
}
.accesskey = R .accesskey = R
tab-context-zen-add-essential = tab-context-zen-add-essential =
.label = Add to Essentials .label = Add to Essentials
@@ -16,7 +20,11 @@ tab-context-zen-remove-essential =
.label = Remove from Essentials .label = Remove from Essentials
.accesskey = R .accesskey = R
tab-context-zen-replace-pinned-url-with-current = tab-context-zen-replace-pinned-url-with-current =
.label = Replace Pinned URL with Current .label =
{ $isEssential ->
[true] Replace Essential URL with Current
*[false] Replace Pinned URL with Current
}
.accesskey = C .accesskey = C
tab-context-zen-edit-title = tab-context-zen-edit-title =
.label = Change Label... .label = Change Label...
@@ -137,3 +145,7 @@ zen-window-sync-migration-dialog-title = Keep Your Windows in Sync
zen-window-sync-migration-dialog-message = Zen now syncs windows on the same device, so changes in one window are reflected across the others instantly. zen-window-sync-migration-dialog-message = Zen now syncs windows on the same device, so changes in one window are reflected across the others instantly.
zen-window-sync-migration-dialog-learn-more = Learn More zen-window-sync-migration-dialog-learn-more = Learn More
zen-window-sync-migration-dialog-accept = Got It zen-window-sync-migration-dialog-accept = Got It
zen-appmenu-new-blank-window =
.label = New blank window

View File

@@ -0,0 +1,98 @@
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
zen-live-folder-options =
.label = Live Folder Options
zen-live-folder-last-fetched =
.label = Last fetch: { $time }
zen-live-folder-refresh =
.label = Refresh
zen-live-folder-github-option-author-self =
.label = Created by Me
zen-live-folder-github-option-assigned-self =
.label = Assigned to Me
zen-live-folder-github-option-review-requested =
.label = Review Requests
zen-live-folder-type-rss =
.label = RSS Feed
zen-live-folder-option-fetch-interval =
.label = Fetch Interval
zen-live-folder-fetch-interval-mins =
.label = { $mins ->
[one] 1 minute
*[other] { $mins } minutes
}
zen-live-folder-fetch-interval-hours =
.label = { $hours ->
[one] 1 hour
*[other] { $hours } hours
}
zen-live-folder-rss-option-time-range =
.label = Time Range
zen-live-folder-time-range-hours =
.label = { $hours ->
[one] Last hour
*[other] Last { $hours } hours
}
zen-live-folder-time-range-all-time =
.label = All time
zen-live-folder-time-range-days =
.label = { $days ->
[one] Last day
*[other] Last { $days } days
}
zen-live-folder-rss-option-item-limit =
.label = Item Limit
zen-live-folder-rss-option-feed-url =
.label = Feed URL
zen-live-folder-rss-prompt-feed-url = Please enter the feed URL
zen-live-folder-rss-option-item-limit-num =
.label = { $limit } items
zen-live-folder-failed-fetch =
.label = Failed to update
.tooltiptext = Failed to update. Try again.
zen-live-folder-github-no-auth =
.label = Not signed in to GitHub
.tooltiptext = Sign back in to GitHub.
zen-live-folder-github-no-filter =
.label = Filter is not set
.tooltiptext = No filter set, nothing will be fetched.
zen-live-folder-rss-invalid-url-title = Failed to create the Live Folder
zen-live-folder-rss-invalid-url-description = The feed URL is invalid. Check the address and try again
zen-live-folder-github-option-repo-filter =
.label = Repositories
zen-live-folder-github-option-repo =
.label = { $repo }
zen-live-folder-github-pull-requests =
.label = Pull Requests
zen-live-folder-github-issues =
.label = Issues
zen-live-folder-github-option-repo-list-note =
.label = This list is generated based on your currently active pull requests.

View File

@@ -22,5 +22,5 @@ zen-menubar-appearance-light =
zen-menubar-appearance-dark = zen-menubar-appearance-dark =
.label = Dark .label = Dark
zen-menubar-new-unsynced-window = zen-menubar-new-blank-window =
.label = New blank window .label = New Blank Window

View File

@@ -16,7 +16,4 @@ zen-split-link =
zen-split-view-modifier-header = Split View zen-split-view-modifier-header = Split View
zen-split-view-modifier-activate-reallocation = zen-split-view-modifier-activate-reallocation =
.label = Activate reallocation .label = Activate reallocation
zen-split-view-modifier-enabled-toast = Split view rearrange is ON.
zen-split-view-modifier-enabled-toast-description = Drag and drop the view to rearrange. Press Esc to exit.
zen-split-view-modifier-disabled-toast = Split view rearrange is OFF.

View File

@@ -42,4 +42,9 @@ tabbrowser-reset-pin-button =
[one] Reset and pin tab [one] Reset and pin tab
*[other] Reset and pin { $tabCount } tabs *[other] Reset and pin { $tabCount } tabs
} }
tab-reset-pin-label = Back to pinned url
zen-tab-sublabel =
{ $tabSubtitle ->
[zen-default-pinned] Back to pinned url
*[other] { $tabSubtitle }
}

View File

@@ -13,6 +13,9 @@ zen-panel-ui-workspaces-create =
zen-panel-ui-folder-create = zen-panel-ui-folder-create =
.label = Create Folder .label = Create Folder
zen-panel-ui-live-folder-create =
.label = Live Folder
zen-panel-ui-new-empty-split = zen-panel-ui-new-empty-split =
.label = New Split .label = New Split

6
package-lock.json generated
View File

@@ -5610,9 +5610,9 @@
} }
}, },
"node_modules/lodash": { "node_modules/lodash": {
"version": "4.17.21", "version": "4.17.23",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==",
"dev": true, "dev": true,
"license": "MIT" "license": "MIT"
}, },

View File

@@ -63,6 +63,10 @@
value: false value: false
locked: true locked: true
- name: browser.search.serpEventTelemetryCategorization.enabled
value: false
locked: true
- name: browser.newtabpage.activity-stream.telemetry - name: browser.newtabpage.activity-stream.telemetry
value: false value: false
locked: true locked: true

View File

@@ -6,7 +6,7 @@
value: true value: true
- name: zen.folders.search.hover-delay - name: zen.folders.search.hover-delay
value: 700 # ms value: 500 # ms
- name: zen.folders.max-subfolders - name: zen.folders.max-subfolders
value: 5 value: 5

View File

@@ -4,7 +4,9 @@
# GTK-specific preferences # GTK-specific preferences
- name: widget.gtk.rounded-bottom-corners.enabled - name: widget.gtk.rounded-bottom-corners.enabled
value: true # Disabled for https://github.com/zen-browser/desktop/issues/6302,
# also see https://bugzilla.mozilla.org/show_bug.cgi?id=1979083
value: false
condition: "defined(MOZ_WIDGET_GTK)" condition: "defined(MOZ_WIDGET_GTK)"
- name: zen.widget.linux.transparency - name: zen.widget.linux.transparency

View File

@@ -54,3 +54,6 @@
- name: zen.view.draggable-sidebar - name: zen.view.draggable-sidebar
value: true value: true
- name: zen.view.overflow-webext-toolbar
value: "@IS_TWILIGHT@"

View File

@@ -32,6 +32,9 @@
- name: zen.urlbar.show-pip-button - name: zen.urlbar.show-pip-button
value: false value: false
- name: zen.urlbar.open-on-startup
value: true
# Mark: Zen suggestions controls # Mark: Zen suggestions controls
- name: zen.urlbar.suggestions.quick-actions - name: zen.urlbar.suggestions.quick-actions

View File

@@ -1,41 +0,0 @@
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
import os
import sys
import requests
BASE_URI = "https://phabricator.services.mozilla.com"
OUTPUT_DIR = os.path.join(os.getcwd(), "src", "firefox-patches")
def download_phab_patch(phab_id, output_file):
"""Download a Phabricator patch by its ID and save it to output_file."""
patch_url = f"{BASE_URI}/{phab_id}?download=true"
try:
print(f"Downloading patch from {patch_url}")
response = requests.get(patch_url)
response.raise_for_status() # Raise an error for bad responses
with open(output_file, 'wb') as f:
f.write(response.content)
print(f"Patch saved to {output_file}")
except requests.RequestException as e:
print(f"Error downloading patch: {e}")
sys.exit(1)
def main():
if len(sys.argv) < 2:
print("Usage: python download_phab_patch.py <PHABRICATOR_ID> [output_file]", file=sys.stderr)
sys.exit(1)
phab_id = sys.argv[1]
output_file = sys.argv[2] if len(sys.argv) > 2 else f"phab_{phab_id}"
output_file = os.path.join(OUTPUT_DIR, output_file + ".patch")
download_phab_patch(phab_id, output_file)
if __name__ == "__main__":
main()

View File

@@ -18,10 +18,18 @@ FILE_PREFIX = """
# This file is autogenerated by scripts/import_external_tests.py # This file is autogenerated by scripts/import_external_tests.py
# Do not edit manually. # Do not edit manually.
"""
BROWSER_MANIFEST_LIST_PREFIX = """
BROWSER_CHROME_MANIFESTS += [ BROWSER_CHROME_MANIFESTS += [
""" """
XPCSHELL_MANIFESTS_LIST_PREFIX = """
XPCSHELL_TESTS_MANIFESTS += [
"""
FILE_SUFFIX = "]" FILE_SUFFIX = "]"
VALID_MANIFEST_FILES = ["browser.toml", "xpcshell.toml"]
def get_tests_manifest(): def get_tests_manifest():
@@ -38,12 +46,17 @@ def validate_tests_path(path, files, ignore_list):
for ignore in ignore_list: for ignore in ignore_list:
if ignore not in files: if ignore not in files:
die_with_error(f"Ignore file '{ignore}' not found in tests folder '{path}'") die_with_error(f"Ignore file '{ignore}' not found in tests folder '{path}'")
if "browser.toml" not in files or "browser.js" in ignore_list: if not any(manifest_file in files for manifest_file in VALID_MANIFEST_FILES):
die_with_error(f"'browser.toml' not found in tests folder '{path}'") die_with_error(f"None of the valid manifest files {VALID_MANIFEST_FILES} found in tests folder '{path}'")
def disable_and_replace_manifest(manifest, output_path): def disable_and_replace_manifest(manifest, output_path):
toml_file = os.path.join(output_path, "browser.toml") toml_file = None
for manifest_file in VALID_MANIFEST_FILES:
candidate = os.path.join(output_path, manifest_file)
if os.path.exists(candidate):
toml_file = candidate
break
disabled_tests = manifest.get("disable", []) disabled_tests = manifest.get("disable", [])
with open(toml_file, "r") as f: with open(toml_file, "r") as f:
data = f.read() data = f.read()
@@ -90,8 +103,17 @@ def write_moz_build_file(manifest):
print(f"Writing moz.build file to '{moz_build_path}'") print(f"Writing moz.build file to '{moz_build_path}'")
with open(moz_build_path, "w") as f: with open(moz_build_path, "w") as f:
f.write(FILE_PREFIX) f.write(FILE_PREFIX)
f.write(BROWSER_MANIFEST_LIST_PREFIX)
for test_suite in manifest.keys(): for test_suite in manifest.keys():
f.write(f'\t"{test_suite}/browser.toml",\n') # add for browser.toml first
if not manifest[test_suite].get("xpcshell", False):
f.write(f'\t"{test_suite}/browser.toml",\n')
f.write(FILE_SUFFIX)
f.write(XPCSHELL_MANIFESTS_LIST_PREFIX)
for test_suite in manifest.keys():
# add for xpcshell.toml
if manifest[test_suite].get("xpcshell", False):
f.write(f'\t"{test_suite}/xpcshell.toml",\n')
f.write(FILE_SUFFIX) f.write(FILE_SUFFIX)

View File

@@ -11,6 +11,7 @@ npm run import
IGNORE_FILES=( IGNORE_FILES=(
"shared.nsh" "shared.nsh"
"ignorePrefs.json" "ignorePrefs.json"
"moz.configure"
) )
# Recursively find all .patch files in the current directory and its subdirectories # Recursively find all .patch files in the current directory and its subdirectories

View File

@@ -56,7 +56,7 @@ def main():
os.chdir(engine_dir) os.chdir(engine_dir)
def run_mach_with_paths(test_paths): def run_mach_with_paths(test_paths):
command = ['./mach', 'mochitest'] + other_args + test_paths command = ['./mach', 'test'] + other_args + test_paths
# Replace the current process with the mach command # Replace the current process with the mach command
os.execvp(command[0], command) os.execvp(command[0], command)

View File

@@ -0,0 +1,99 @@
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
import os
import sys
import json
import requests
from json_with_comments import JSONWithCommentsDecoder
BASE_URI = "https://phabricator.services.mozilla.com"
OUTPUT_DIR = os.path.join(os.getcwd(), "src", "external-patches")
def die(message):
print(f"Error: {message}")
sys.exit(1)
def download_phab_patch(phab_id, output_file):
"""Download a Phabricator patch by its ID and save it to output_file."""
patch_url = f"{BASE_URI}/{phab_id}?download=true"
try:
print(f"Downloading patch from {patch_url}")
response = requests.get(patch_url)
response.raise_for_status() # Raise an error for bad responses
with open(output_file, 'wb') as f:
f.write(response.content)
print(f"Patch saved to {output_file}")
except requests.RequestException as e:
die(f"Failed to download patch {phab_id}: {e}")
def download_patch_from_url(url, output_file):
"""Download a patch from a given URL and save it to output_file."""
try:
print(f"Downloading patch from {url}")
response = requests.get(url)
response.raise_for_status() # Raise an error for bad responses
with open(output_file, 'wb') as f:
f.write(response.content)
print(f"Patch saved to {output_file}")
except requests.RequestException as e:
die(f"Failed to download patch from {url}: {e}")
def main():
with open(os.path.join(OUTPUT_DIR, "manifest.json"), 'r') as f:
manifest = json.load(f, cls=JSONWithCommentsDecoder)
expected_files = set()
for patch in manifest:
if patch.get("type") == "phabricator":
phab_id = patch.get("id")
name = patch.get("name")
if not phab_id or not name:
die(f"Patch entry missing 'id' or 'name': {patch}")
name = name.replace(" ", "_").lower()
output_file = os.path.join(OUTPUT_DIR, "firefox", f"{name}.patch")
print(f"Processing Phabricator patch: {phab_id} -> {output_file}")
download_phab_patch(phab_id, output_file)
expected_files.add(output_file)
elif patch.get("type") == "local":
print(f"Local patch: {patch.get('path')}")
expected_files.add(os.path.join(OUTPUT_DIR, patch.get("path")))
elif patch.get("type") == "patch":
url = patch.get("url")
dest = patch.get("dest")
if not url or not dest:
die(f"Patch entry missing 'url' or 'dest': {patch}")
filename = url.split("/")[-1]
output_file = os.path.join(OUTPUT_DIR, dest, filename)
download_patch_from_url(url, output_file)
replaces = patch.get("replaces", {})
for replace in replaces.keys():
value = replaces[replace]
with open(output_file, 'r') as f:
content = f.read()
if replace not in content:
die(f"Replace string '{replace}' not found in {output_file}")
with open(output_file, 'w') as f:
f.write(content.replace(replace, value))
expected_files.add(output_file)
else:
die(f"Unknown patch type: {patch.get('type')}")
# Check for unexpected files in the output directory
# and remove them if they are not in the expected_files set.
for root, dirs, files in os.walk(OUTPUT_DIR):
for file in files:
if file.endswith(".patch"):
file_path = os.path.join(root, file)
if file_path not in expected_files:
print(f"Removing unexpected patch file: {file_path}")
os.remove(file_path)
if __name__ == "__main__":
main()

View File

@@ -1,5 +1,5 @@
diff --git a/Cargo.lock b/Cargo.lock diff --git a/Cargo.lock b/Cargo.lock
index 723445447f491058784992e66245e0e0f8e61e19..02816c1df3e20d96ce68f16970b8a6e38080533e 100644 index abc04e6a8e1e68fa71c6de0375f8e953e6369d8b..7bdfb41e255fc12065de064162e9bf9e15d7ff12 100644
--- a/Cargo.lock --- a/Cargo.lock
+++ b/Cargo.lock +++ b/Cargo.lock
@@ -4214,8 +4214,6 @@ dependencies = [ @@ -4214,8 +4214,6 @@ dependencies = [

View File

@@ -1,13 +1,13 @@
diff --git a/Cargo.toml b/Cargo.toml diff --git a/Cargo.toml b/Cargo.toml
index 35e725043bce0b39fea550e8fb2b0ae1ff752e43..abac2042d537fcc1ce26e0e3acbf98fc2975b793 100644 index ab9eda43302a6281e59a2738170e77bb0f0b1b90..3389f1c744b56e3a6a4eb3f05b0601bed4538fa1 100644
--- a/Cargo.toml --- a/Cargo.toml
+++ b/Cargo.toml +++ b/Cargo.toml
@@ -237,6 +237,8 @@ moz_asserts = { path = "mozglue/static/rust/moz_asserts" } @@ -240,6 +240,8 @@ moz_asserts = { path = "mozglue/static/rust/moz_asserts" }
# Workaround for https://github.com/rust-lang/cargo/issues/11232 # Workaround for https://github.com/rust-lang/cargo/issues/11232
rure = { path = "third_party/rust/rure" } rure = { path = "third_party/rust/rure" }
+mime_guess = { path = "third_party/rust/mime_guess" } +mime_guess = { path = "third_party/rust/mime_guess" }
+ +
# Patch `unicode-width` 0.1.* to 0.2. # To-be-published changes.
unicode-width = { path = "build/rust/unicode-width" } unicode-bidi = { git = "https://github.com/servo/unicode-bidi", rev = "ca612daf1c08c53abe07327cb3e6ef6e0a760f0c" }
nss-gk-api = { git = "https://github.com/beurdouche/nss-gk-api", rev = "e48a946811ffd64abc78de3ee284957d8d1c0d63" }

View File

@@ -1,8 +1,8 @@
diff --git a/browser/base/content/browser-init.js b/browser/base/content/browser-init.js diff --git a/browser/base/content/browser-init.js b/browser/base/content/browser-init.js
index 288a79e5fb4da24cffcb30fb4b8adc9604b15d26..bf9bd3e666dfb6298dbeec0546cae223a7bc68f0 100644 index 0186e3a6508fc8e40f93619d8b3e5a0c003cbd4a..1f4fa115e591cfbe3e23d4ce880be66277a50a26 100644
--- a/browser/base/content/browser-init.js --- a/browser/base/content/browser-init.js
+++ b/browser/base/content/browser-init.js +++ b/browser/base/content/browser-init.js
@@ -200,6 +200,7 @@ var gBrowserInit = { @@ -243,6 +243,7 @@ var gBrowserInit = {
}, },
onLoad() { onLoad() {
@@ -10,7 +10,7 @@ index 288a79e5fb4da24cffcb30fb4b8adc9604b15d26..bf9bd3e666dfb6298dbeec0546cae223
gBrowser.addEventListener("DOMUpdateBlockedPopups", e => gBrowser.addEventListener("DOMUpdateBlockedPopups", e =>
PopupAndRedirectBlockerObserver.handleEvent(e) PopupAndRedirectBlockerObserver.handleEvent(e)
); );
@@ -375,6 +376,7 @@ var gBrowserInit = { @@ -433,6 +434,7 @@ var gBrowserInit = {
this._handleURIToLoad(); this._handleURIToLoad();

View File

@@ -1,5 +1,5 @@
diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js
index 16cf3e201358d24c9216f9b06b0ba3b89684d32a..2cfa507bbdc96b8a293b18595d0beae031fe6119 100644 index e2e0526a0ddd617291f1f6c17bcfb807954b481f..c3d2afff6eaa788309d1c1a7fa40f9b8b4f0fffe 100644
--- a/browser/base/content/browser.js --- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js +++ b/browser/base/content/browser.js
@@ -33,6 +33,7 @@ ChromeUtils.defineESModuleGetters(this, { @@ -33,6 +33,7 @@ ChromeUtils.defineESModuleGetters(this, {
@@ -10,7 +10,7 @@ index 16cf3e201358d24c9216f9b06b0ba3b89684d32a..2cfa507bbdc96b8a293b18595d0beae0
DevToolsSocketStatus: DevToolsSocketStatus:
"resource://devtools/shared/security/DevToolsSocketStatus.sys.mjs", "resource://devtools/shared/security/DevToolsSocketStatus.sys.mjs",
DownloadUtils: "resource://gre/modules/DownloadUtils.sys.mjs", DownloadUtils: "resource://gre/modules/DownloadUtils.sys.mjs",
@@ -819,7 +820,12 @@ function UpdateBackForwardCommands(aWebNavigation) { @@ -814,7 +815,12 @@ function UpdateBackForwardCommands(aWebNavigation) {
var backDisabled = backCommand.hasAttribute("disabled"); var backDisabled = backCommand.hasAttribute("disabled");
var forwardDisabled = forwardCommand.hasAttribute("disabled"); var forwardDisabled = forwardCommand.hasAttribute("disabled");
@@ -24,7 +24,7 @@ index 16cf3e201358d24c9216f9b06b0ba3b89684d32a..2cfa507bbdc96b8a293b18595d0beae0
if (backDisabled) { if (backDisabled) {
backCommand.removeAttribute("disabled"); backCommand.removeAttribute("disabled");
} else { } else {
@@ -2305,6 +2311,8 @@ var XULBrowserWindow = { @@ -2301,6 +2307,8 @@ var XULBrowserWindow = {
AboutReaderParent.updateReaderButton(gBrowser.selectedBrowser); AboutReaderParent.updateReaderButton(gBrowser.selectedBrowser);
TranslationsParent.onLocationChange(gBrowser.selectedBrowser); TranslationsParent.onLocationChange(gBrowser.selectedBrowser);
@@ -33,7 +33,7 @@ index 16cf3e201358d24c9216f9b06b0ba3b89684d32a..2cfa507bbdc96b8a293b18595d0beae0
PictureInPicture.updateUrlbarToggle(gBrowser.selectedBrowser); PictureInPicture.updateUrlbarToggle(gBrowser.selectedBrowser);
if (!gMultiProcessBrowser) { if (!gMultiProcessBrowser) {
@@ -3818,7 +3826,7 @@ function warnAboutClosingWindow() { @@ -3821,7 +3829,7 @@ function warnAboutClosingWindow() {
if (!isPBWindow && !toolbar.visible) { if (!isPBWindow && !toolbar.visible) {
return gBrowser.warnAboutClosingTabs( return gBrowser.warnAboutClosingTabs(
@@ -42,7 +42,7 @@ index 16cf3e201358d24c9216f9b06b0ba3b89684d32a..2cfa507bbdc96b8a293b18595d0beae0
gBrowser.closingTabsEnum.ALL gBrowser.closingTabsEnum.ALL
); );
} }
@@ -3858,7 +3866,7 @@ function warnAboutClosingWindow() { @@ -3861,7 +3869,7 @@ function warnAboutClosingWindow() {
return ( return (
isPBWindow || isPBWindow ||
gBrowser.warnAboutClosingTabs( gBrowser.warnAboutClosingTabs(
@@ -51,7 +51,7 @@ index 16cf3e201358d24c9216f9b06b0ba3b89684d32a..2cfa507bbdc96b8a293b18595d0beae0
gBrowser.closingTabsEnum.ALL gBrowser.closingTabsEnum.ALL
) )
); );
@@ -3883,7 +3891,7 @@ function warnAboutClosingWindow() { @@ -3886,7 +3894,7 @@ function warnAboutClosingWindow() {
AppConstants.platform != "macosx" || AppConstants.platform != "macosx" ||
isPBWindow || isPBWindow ||
gBrowser.warnAboutClosingTabs( gBrowser.warnAboutClosingTabs(
@@ -60,7 +60,7 @@ index 16cf3e201358d24c9216f9b06b0ba3b89684d32a..2cfa507bbdc96b8a293b18595d0beae0
gBrowser.closingTabsEnum.ALL gBrowser.closingTabsEnum.ALL
) )
); );
@@ -4806,6 +4814,9 @@ var ConfirmationHint = { @@ -4809,6 +4817,9 @@ var ConfirmationHint = {
MozXULElement.insertFTLIfNeeded("toolkit/branding/brandings.ftl"); MozXULElement.insertFTLIfNeeded("toolkit/branding/brandings.ftl");
MozXULElement.insertFTLIfNeeded("browser/confirmationHints.ftl"); MozXULElement.insertFTLIfNeeded("browser/confirmationHints.ftl");
document.l10n.setAttributes(this._message, messageId, options.l10nArgs); document.l10n.setAttributes(this._message, messageId, options.l10nArgs);

View File

@@ -1,8 +1,8 @@
diff --git a/browser/base/content/browser-sets.inc b/browser/base/content/browser-sets.inc diff --git a/browser/base/content/browser-sets.inc b/browser/base/content/browser-sets.inc
index 139f7c2617f5e4843e0072435818c859def2f6bb..6ac1467b4117e2d76102d6977f13268827b4588f 100644 index df768aaa77a6986260da5052ed14c8403d48de6b..a30e3a2784a6215c959d23802b5c2c966f89ca10 100644
--- a/browser/base/content/browser-sets.inc --- a/browser/base/content/browser-sets.inc
+++ b/browser/base/content/browser-sets.inc +++ b/browser/base/content/browser-sets.inc
@@ -413,3 +413,4 @@ @@ -414,3 +414,4 @@
internal="true"/> internal="true"/>
#endif #endif
</keyset> </keyset>

View File

@@ -1,8 +1,8 @@
diff --git a/browser/base/content/browser-sets.js b/browser/base/content/browser-sets.js diff --git a/browser/base/content/browser-sets.js b/browser/base/content/browser-sets.js
index 94a05a510204c027e482fda33deaf3dc0d7471c9..79d37a7c7f29739d3ad2d9f6a3b3b8d638836b10 100644 index 50845ebd925955bf9646fc499b9828eccbf266ef..5482a24576ebcd4382409cae01a4c6bcbd88a96c 100644
--- a/browser/base/content/browser-sets.js --- a/browser/base/content/browser-sets.js
+++ b/browser/base/content/browser-sets.js +++ b/browser/base/content/browser-sets.js
@@ -266,7 +266,7 @@ document.addEventListener( @@ -270,7 +270,7 @@ document.addEventListener(
} }
}); });
@@ -11,3 +11,12 @@ index 94a05a510204c027e482fda33deaf3dc0d7471c9..79d37a7c7f29739d3ad2d9f6a3b3b8d6
const SIDEBAR_REVAMP_PREF = "sidebar.revamp"; const SIDEBAR_REVAMP_PREF = "sidebar.revamp";
const SIDEBAR_REVAMP_ENABLED = Services.prefs.getBoolPref( const SIDEBAR_REVAMP_ENABLED = Services.prefs.getBoolPref(
SIDEBAR_REVAMP_PREF, SIDEBAR_REVAMP_PREF,
@@ -308,6 +308,8 @@ document.addEventListener(
panel: SidebarController.currentID,
opened: SidebarController._state.launcherExpanded,
});
+ } else {
+ SidebarController.toggle();
}
break;
case "key_gotoHistory":

View File

@@ -1,8 +1,8 @@
diff --git a/browser/base/content/browser-siteIdentity.js b/browser/base/content/browser-siteIdentity.js diff --git a/browser/base/content/browser-siteIdentity.js b/browser/base/content/browser-siteIdentity.js
index 8369e546866aa313e62f808acb8d51afa8da4f9b..7a4b20dd5922425cebfac542893a52cd68a26449 100644 index 6d2052e060896bb5e91ba84c15bf14c969340935..6ceef1806e2d88cd7e2ebc867d633e9148f3b298 100644
--- a/browser/base/content/browser-siteIdentity.js --- a/browser/base/content/browser-siteIdentity.js
+++ b/browser/base/content/browser-siteIdentity.js +++ b/browser/base/content/browser-siteIdentity.js
@@ -451,11 +451,6 @@ var gIdentityHandler = { @@ -464,11 +464,6 @@ var gIdentityHandler = {
// avoid a pretty ugly transition. Also hide it even // avoid a pretty ugly transition. Also hide it even
// if the update resulted in no site data, to keep the // if the update resulted in no site data, to keep the
// illusion that clicking the button had an effect. // illusion that clicking the button had an effect.
@@ -14,7 +14,7 @@ index 8369e546866aa313e62f808acb8d51afa8da4f9b..7a4b20dd5922425cebfac542893a52cd
let baseDomain = SiteDataManager.getBaseDomainFromHost(this._uri.host); let baseDomain = SiteDataManager.getBaseDomainFromHost(this._uri.host);
if (SiteDataManager.promptSiteDataRemoval(window, [baseDomain])) { if (SiteDataManager.promptSiteDataRemoval(window, [baseDomain])) {
@@ -832,7 +827,7 @@ var gIdentityHandler = { @@ -847,7 +842,7 @@ var gIdentityHandler = {
// This is a secure internal Firefox page. // This is a secure internal Firefox page.
this._identityBox.className = "chromeUI"; this._identityBox.className = "chromeUI";
let brandBundle = document.getElementById("bundle_brand"); let brandBundle = document.getElementById("bundle_brand");
@@ -23,7 +23,7 @@ index 8369e546866aa313e62f808acb8d51afa8da4f9b..7a4b20dd5922425cebfac542893a52cd
} else if (this._pageExtensionPolicy) { } else if (this._pageExtensionPolicy) {
// This is a WebExtension page. // This is a WebExtension page.
this._identityBox.className = "extensionPage"; this._identityBox.className = "extensionPage";
@@ -1161,6 +1156,12 @@ var gIdentityHandler = { @@ -1190,6 +1185,12 @@ var gIdentityHandler = {
} }
} }

View File

@@ -1,5 +1,5 @@
diff --git a/browser/base/content/browser.xhtml b/browser/base/content/browser.xhtml diff --git a/browser/base/content/browser.xhtml b/browser/base/content/browser.xhtml
index ac82dcd286b5502d1ba38ed740813db08941eb7b..c26b3f0468ee6acd7716d4e8a24ad8cc84fce186 100644 index 832d98f911e0bd0e231421332a521bfefea72ef8..a9955256c81b252fe0527ae5857c9283e2518274 100644
--- a/browser/base/content/browser.xhtml --- a/browser/base/content/browser.xhtml
+++ b/browser/base/content/browser.xhtml +++ b/browser/base/content/browser.xhtml
@@ -19,6 +19,7 @@ @@ -19,6 +19,7 @@
@@ -10,7 +10,7 @@ index ac82dcd286b5502d1ba38ed740813db08941eb7b..c26b3f0468ee6acd7716d4e8a24ad8cc
persist="screenX screenY width height sizemode" persist="screenX screenY width height sizemode"
data-l10n-sync="true"> data-l10n-sync="true">
<head> <head>
@@ -99,8 +100,10 @@ @@ -100,8 +101,10 @@
<title data-l10n-id="browser-main-window-default-title"></title> <title data-l10n-id="browser-main-window-default-title"></title>
@@ -21,7 +21,7 @@ index ac82dcd286b5502d1ba38ed740813db08941eb7b..c26b3f0468ee6acd7716d4e8a24ad8cc
</head> </head>
<html:body xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <html:body xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
# All sets except for popupsets (commands, keys, and stringbundles) # All sets except for popupsets (commands, keys, and stringbundles)
@@ -133,9 +136,11 @@ @@ -134,9 +137,11 @@
</vbox> </vbox>
</html:template> </html:template>

View File

@@ -1,8 +1,8 @@
diff --git a/browser/base/content/main-popupset.inc.xhtml b/browser/base/content/main-popupset.inc.xhtml diff --git a/browser/base/content/main-popupset.inc.xhtml b/browser/base/content/main-popupset.inc.xhtml
index 79b604c5965ba03762acbf085c9288c73001ec24..d75d5481e5de93c592850e39d4b0b4fd07e12678 100644 index 0d73eb17b340001312a885ea10f5d6ad871f14d2..475824a0f9a4bbc15dc9bc7f1d2a09a51e58bc65 100644
--- a/browser/base/content/main-popupset.inc.xhtml --- a/browser/base/content/main-popupset.inc.xhtml
+++ b/browser/base/content/main-popupset.inc.xhtml +++ b/browser/base/content/main-popupset.inc.xhtml
@@ -226,6 +226,10 @@ @@ -234,6 +234,10 @@
hidden="true" hidden="true"
tabspecific="true" tabspecific="true"
aria-labelledby="editBookmarkPanelTitle"> aria-labelledby="editBookmarkPanelTitle">
@@ -13,7 +13,7 @@ index 79b604c5965ba03762acbf085c9288c73001ec24..d75d5481e5de93c592850e39d4b0b4fd
<box class="panel-header"> <box class="panel-header">
<html:h1> <html:h1>
<html:span id="editBookmarkPanelTitle"/> <html:span id="editBookmarkPanelTitle"/>
@@ -251,6 +255,7 @@ @@ -259,6 +263,7 @@
class="footer-button"/> class="footer-button"/>
</html:moz-button-group> </html:moz-button-group>
</vbox> </vbox>
@@ -21,7 +21,7 @@ index 79b604c5965ba03762acbf085c9288c73001ec24..d75d5481e5de93c592850e39d4b0b4fd
</panel> </panel>
</html:template> </html:template>
@@ -656,6 +661,8 @@ @@ -678,6 +683,8 @@
#include popup-notifications.inc.xhtml #include popup-notifications.inc.xhtml

View File

@@ -1,5 +1,5 @@
diff --git a/browser/base/content/navigator-toolbox.inc.xhtml b/browser/base/content/navigator-toolbox.inc.xhtml diff --git a/browser/base/content/navigator-toolbox.inc.xhtml b/browser/base/content/navigator-toolbox.inc.xhtml
index 68c24f730d56f548cf1e286198a04f8363529378..71418c93ce7216d71412f2fa67295322bb73abad 100644 index 4d4223c508560136aba220adb18528aac913a188..7e7432f7adb761a598d3e3e5ca4c6385a3bfe223 100644
--- a/browser/base/content/navigator-toolbox.inc.xhtml --- a/browser/base/content/navigator-toolbox.inc.xhtml
+++ b/browser/base/content/navigator-toolbox.inc.xhtml +++ b/browser/base/content/navigator-toolbox.inc.xhtml
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
@@ -11,27 +11,28 @@ index 68c24f730d56f548cf1e286198a04f8363529378..71418c93ce7216d71412f2fa67295322
<script src="chrome://browser/content/navigator-toolbox.js" /> <script src="chrome://browser/content/navigator-toolbox.js" />
<!-- Menu --> <!-- Menu -->
@@ -18,9 +18,8 @@ @@ -18,9 +18,9 @@
#include browser-menubar.inc #include browser-menubar.inc
</toolbaritem> </toolbaritem>
<spacer flex="1" skipintoolbarset="true" style="order: 1000;"/> <spacer flex="1" skipintoolbarset="true" style="order: 1000;"/>
-#include titlebar-items.inc.xhtml -#include titlebar-items.inc.xhtml
</toolbar> </toolbar>
-
+<hbox id="titlebar"> +<hbox id="titlebar">
<toolbar id="TabsToolbar" <toolbar id="TabsToolbar"
class="browser-toolbar browser-titlebar" class="browser-toolbar browser-titlebar"
fullscreentoolbar="true" fullscreentoolbar="true"
@@ -62,6 +61,8 @@ @@ -62,6 +62,9 @@
<html:sidebar-pins-promo id="drag-to-pin-promo-card"></html:sidebar-pins-promo> <html:sidebar-pins-promo id="drag-to-pin-promo-card"></html:sidebar-pins-promo>
<arrowscrollbox id="pinned-tabs-container" orient="horizontal" clicktoscroll=""></arrowscrollbox> <arrowscrollbox id="pinned-tabs-container" orient="horizontal" clicktoscroll=""></arrowscrollbox>
<splitter orient="vertical" id="vertical-pinned-tabs-splitter" resizebefore="sibling" resizeafter="none" hidden="true"/> <splitter orient="vertical" id="vertical-pinned-tabs-splitter" resizebefore="sibling" resizeafter="none" hidden="true"/>
+<html:div id="zen-overflow-extensions-list" skipintoolbarset="true"></html:div>
+<html:div id="zen-essentials" skipintoolbarset="true"></html:div> +<html:div id="zen-essentials" skipintoolbarset="true"></html:div>
+<html:div id="zen-tabs-wrapper"> +<html:div id="zen-tabs-wrapper">
<hbox class="tab-drop-indicator" hidden="true"/> <hbox class="tab-drop-indicator" hidden="true"/>
<arrowscrollbox id="tabbrowser-arrowscrollbox" orient="horizontal" flex="1" clicktoscroll="" scrolledtostart="" scrolledtoend=""> <arrowscrollbox id="tabbrowser-arrowscrollbox" orient="horizontal" flex="1" clicktoscroll="" scrolledtostart="" scrolledtoend="">
<tab is="tabbrowser-tab" class="tabbrowser-tab" selected="true" visuallyselected="" fadein=""/> <tab is="tabbrowser-tab" class="tabbrowser-tab" selected="true" visuallyselected="" fadein=""/>
@@ -81,6 +82,7 @@ @@ -81,6 +84,7 @@
tooltip="dynamic-shortcut-tooltip" tooltip="dynamic-shortcut-tooltip"
data-l10n-id="tabs-toolbar-new-tab"/> data-l10n-id="tabs-toolbar-new-tab"/>
<html:span id="tabbrowser-tab-a11y-desc" hidden="true"/> <html:span id="tabbrowser-tab-a11y-desc" hidden="true"/>
@@ -39,8 +40,8 @@ index 68c24f730d56f548cf1e286198a04f8363529378..71418c93ce7216d71412f2fa67295322
</tabs> </tabs>
<toolbarbutton id="new-tab-button" <toolbarbutton id="new-tab-button"
@@ -106,9 +108,10 @@ @@ -114,9 +118,10 @@
#include private-browsing-indicator.inc.xhtml
<toolbarbutton class="content-analysis-indicator toolbarbutton-1 content-analysis-indicator-icon"/> <toolbarbutton class="content-analysis-indicator toolbarbutton-1 content-analysis-indicator-icon"/>
-#include titlebar-items.inc.xhtml -#include titlebar-items.inc.xhtml

View File

@@ -1,5 +1,5 @@
diff --git a/browser/base/content/nsContextMenu.sys.mjs b/browser/base/content/nsContextMenu.sys.mjs diff --git a/browser/base/content/nsContextMenu.sys.mjs b/browser/base/content/nsContextMenu.sys.mjs
index d9fbd3a9a78c993c89efa75be9e2ffc975158aba..e64382b32580c2d113774e76e3587002ce0aebad 100644 index 90c8d48fa992ca5ac125fa2998741db79264de4a..a598431671e42b9ede23b0595790564202408a8e 100644
--- a/browser/base/content/nsContextMenu.sys.mjs --- a/browser/base/content/nsContextMenu.sys.mjs
+++ b/browser/base/content/nsContextMenu.sys.mjs +++ b/browser/base/content/nsContextMenu.sys.mjs
@@ -371,6 +371,9 @@ export class nsContextMenu { @@ -371,6 +371,9 @@ export class nsContextMenu {

View File

@@ -51,3 +51,4 @@
<script type="module" src="chrome://browser/content/zen-components/ZenFolders.mjs"></script> <script type="module" src="chrome://browser/content/zen-components/ZenFolders.mjs"></script>
<script type="module" src="chrome://browser/content/zen-components/ZenDownloadAnimation.mjs"></script> <script type="module" src="chrome://browser/content/zen-components/ZenDownloadAnimation.mjs"></script>
<script type="module" src="chrome://browser/content/zen-components/ZenEmojiPicker.mjs"></script> <script type="module" src="chrome://browser/content/zen-components/ZenEmojiPicker.mjs"></script>
<script type="module" src="chrome://browser/content/zen-components/ZenLiveFoldersUI.mjs"></script>

View File

@@ -18,3 +18,4 @@
#include ../../../zen/images/jar.inc.mn #include ../../../zen/images/jar.inc.mn
#include ../../../zen/vendor/jar.inc.mn #include ../../../zen/vendor/jar.inc.mn
#include ../../../zen/fonts/jar.inc.mn #include ../../../zen/fonts/jar.inc.mn
#include ../../../zen/live-folders/jar.inc.mn

View File

@@ -63,4 +63,6 @@
<command id="cmd_zenCloseUnpinnedTabs" /> <command id="cmd_zenCloseUnpinnedTabs" />
<command id="cmd_zenNewNavigatorUnsynced" /> <command id="cmd_zenNewNavigatorUnsynced" />
<command id="cmd_zenNewLiveFolder" />
</commandset> </commandset>

View File

@@ -9,4 +9,5 @@
<link rel="localization" href="browser/zen-menubar.ftl"/> <link rel="localization" href="browser/zen-menubar.ftl"/>
<link rel="localization" href="browser/zen-vertical-tabs.ftl"/> <link rel="localization" href="browser/zen-vertical-tabs.ftl"/>
<link rel="localization" href="browser/zen-folders.ftl"/> <link rel="localization" href="browser/zen-folders.ftl"/>
<link rel="localization" href="browser/zen-live-folders.ftl"/>
</linkset> </linkset>

View File

@@ -2,7 +2,7 @@
# License, v. 2.0. If a copy of the MPL was not distributed with this # License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/. # file, You can obtain one at http://mozilla.org/MPL/2.0/.
<panel id="zen-folder-tabs-popup" type="arrow" orient="vertical"> <panel id="zen-folder-tabs-popup" type="arrow" orient="vertical" side="left">
<hbox class="tabs-list-header" flex="1"> <hbox class="tabs-list-header" flex="1">
<image class="zen-folder-tabs-list-search-icon" src="chrome://global/skin/icons/search-glass.svg"/> <image class="zen-folder-tabs-list-search-icon" src="chrome://global/skin/icons/search-glass.svg"/>
<html:input id="zen-folder-tabs-list-search" <html:input id="zen-folder-tabs-list-search"

View File

@@ -3,6 +3,23 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/. # file, You can obtain one at http://mozilla.org/MPL/2.0/.
<menupopup id="zenCreateNewPopup"> <menupopup id="zenCreateNewPopup">
<menu data-l10n-id="zen-panel-ui-live-folder-create" id="zen-panel-ui-live-folder-create">
<menupopup>
<menuitem
data-l10n-id="zen-live-folder-github-pull-requests"
command="cmd_zenNewLiveFolder"
image="chrome://browser/content/zen-images/favicons/github.svg" />
<menuitem
data-l10n-id="zen-live-folder-github-issues"
command="cmd_zenNewLiveFolder"
image="chrome://browser/content/zen-images/favicons/github.svg" />
<menuitem
data-l10n-id="zen-live-folder-type-rss"
command="cmd_zenNewLiveFolder"
image="chrome://browser/skin/zen-icons/selectable/logo-rss.svg"/>
</menupopup>
</menu>
<menuseparator/>
<menuitem data-l10n-id="zen-panel-ui-workspaces-create" command="cmd_zenOpenWorkspaceCreation" image="chrome://browser/skin/zen-icons/duplicate-tab.svg" /> <menuitem data-l10n-id="zen-panel-ui-workspaces-create" command="cmd_zenOpenWorkspaceCreation" image="chrome://browser/skin/zen-icons/duplicate-tab.svg" />
<menuitem data-l10n-id="zen-panel-ui-folder-create" command="cmd_zenOpenFolderCreation" image="chrome://browser/skin/zen-icons/folder.svg" /> <menuitem data-l10n-id="zen-panel-ui-folder-create" command="cmd_zenOpenFolderCreation" image="chrome://browser/skin/zen-icons/folder.svg" />
<menuseparator/> <menuseparator/>
@@ -35,6 +52,12 @@
</menupopup> </menupopup>
<menupopup id="zenFolderActions"> <menupopup id="zenFolderActions">
<menu id="context_zenLiveFolderOptions"
data-l10n-id="zen-live-folder-options"
hidden="true">
<menupopup />
</menu>
<menuseparator id="live-folder-separator" hidden="true"/>
<menuitem id="context_zenFolderRename" data-l10n-id="zen-folders-panel-rename-folder"/> <menuitem id="context_zenFolderRename" data-l10n-id="zen-folders-panel-rename-folder"/>
<menuitem id="context_zenFolderChangeIcon" data-l10n-id="tab-context-zen-edit-icon"/> <menuitem id="context_zenFolderChangeIcon" data-l10n-id="tab-context-zen-edit-icon"/>
<menuseparator /> <menuseparator />

View File

@@ -0,0 +1,41 @@
diff --git a/browser/components/BrowserContentHandler.sys.mjs b/browser/components/BrowserContentHandler.sys.mjs
index 2152327b42c884456785ef065422e3ca6cc8c50b..932150495d23c0a63987abf14b3dc8a12eb42d6c 100644
--- a/browser/components/BrowserContentHandler.sys.mjs
+++ b/browser/components/BrowserContentHandler.sys.mjs
@@ -603,6 +603,28 @@ nsBrowserContentHandler.prototype = {
}
}
+ try {
+ let blankWindowParam = cmdLine.handleFlagWithParam("blank-window", false);
+ if (blankWindowParam !== null) {
+ let { uri, principal } = resolveURIInternal(cmdLine, blankWindowParam);
+ if (shouldLoadURI(uri)) {
+ let win = openBrowserWindow(cmdLine, principal, uri.spec);
+ win._zenStartupSyncFlag = 'unsynced';
+ cmdLine.preventDefault = true;
+ }
+ }
+ } catch (e) {
+ if (e.result != Cr.NS_ERROR_INVALID_ARG) {
+ throw e;
+ }
+ if (cmdLine.handleFlag("blank-window", false)) {
+ let win = openBrowserWindow(cmdLine, null, null);
+ win._zenStartupSyncFlag = 'unsynced';
+ cmdLine.preventDefault = true;
+ }
+ }
+
+
var searchParam = cmdLine.handleFlagWithParam("search", false);
if (searchParam) {
doSearch(searchParam, cmdLine);
@@ -672,6 +694,7 @@ nsBrowserContentHandler.prototype = {
" --new-window <url> Open <url> in a new window.\n" +
" --new-tab <url> Open <url> in a new tab.\n" +
" --private-window [<url>] Open <url> in a new private window.\n";
+ info += " --blank-window [<url>] Open the new blank window.\n";
if (AppConstants.platform == "win") {
info += " --preferences Open Options dialog.\n";
} else {

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/BrowserGlue.sys.mjs b/browser/components/BrowserGlue.sys.mjs diff --git a/browser/components/BrowserGlue.sys.mjs b/browser/components/BrowserGlue.sys.mjs
index 8acc1e5a97f769dc76d30ca0534f28b0a4511ab5..bd54169f976d3abe7d122b0efc0fa0d0626179eb 100644 index 33a0f6b7e5cfe087388483fefa55b927e3e3f4a3..65135c6904b5e9523f77689dfc572aefe11b0961 100644
--- a/browser/components/BrowserGlue.sys.mjs --- a/browser/components/BrowserGlue.sys.mjs
+++ b/browser/components/BrowserGlue.sys.mjs +++ b/browser/components/BrowserGlue.sys.mjs
@@ -8,6 +8,7 @@ import { XPCOMUtils } from "resource://gre/modules/XPCOMUtils.sys.mjs"; @@ -8,6 +8,7 @@ import { XPCOMUtils } from "resource://gre/modules/XPCOMUtils.sys.mjs";
@@ -10,7 +10,7 @@ index 8acc1e5a97f769dc76d30ca0534f28b0a4511ab5..bd54169f976d3abe7d122b0efc0fa0d0
AboutHomeStartupCache: "resource:///modules/AboutHomeStartupCache.sys.mjs", AboutHomeStartupCache: "resource:///modules/AboutHomeStartupCache.sys.mjs",
AWToolbarButton: "resource:///modules/aboutwelcome/AWToolbarUtils.sys.mjs", AWToolbarButton: "resource:///modules/aboutwelcome/AWToolbarUtils.sys.mjs",
ASRouter: "resource:///modules/asrouter/ASRouter.sys.mjs", ASRouter: "resource:///modules/asrouter/ASRouter.sys.mjs",
@@ -1452,7 +1453,7 @@ BrowserGlue.prototype = { @@ -1455,7 +1456,7 @@ BrowserGlue.prototype = {
windowcount++; windowcount++;
let tabbrowser = win.gBrowser; let tabbrowser = win.gBrowser;
if (tabbrowser) { if (tabbrowser) {
@@ -19,7 +19,7 @@ index 8acc1e5a97f769dc76d30ca0534f28b0a4511ab5..bd54169f976d3abe7d122b0efc0fa0d0
} }
} }
@@ -1617,6 +1618,8 @@ BrowserGlue.prototype = { @@ -1620,6 +1621,8 @@ BrowserGlue.prototype = {
} else if (profileDataVersion < APP_DATA_VERSION) { } else if (profileDataVersion < APP_DATA_VERSION) {
lazy.ProfileDataUpgrader.upgrade(profileDataVersion, APP_DATA_VERSION); lazy.ProfileDataUpgrader.upgrade(profileDataVersion, APP_DATA_VERSION);
} }

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/controlcenter/content/identityPanel.inc.xhtml b/browser/components/controlcenter/content/identityPanel.inc.xhtml diff --git a/browser/components/controlcenter/content/identityPanel.inc.xhtml b/browser/components/controlcenter/content/identityPanel.inc.xhtml
index 8e23aad8ca0bb686a669b11e1d78b7906f5f38d0..cf4873cc6165b5f77091c056d7e275e0f3d36769 100644 index d7f214f471f70de3805e0f5b3b2d77f49a06c4f1..555b55089368e1782cf0266415fb3040b269d3a5 100644
--- a/browser/components/controlcenter/content/identityPanel.inc.xhtml --- a/browser/components/controlcenter/content/identityPanel.inc.xhtml
+++ b/browser/components/controlcenter/content/identityPanel.inc.xhtml +++ b/browser/components/controlcenter/content/identityPanel.inc.xhtml
@@ -28,7 +28,7 @@ @@ -28,7 +28,7 @@

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/customizableui/CustomizableUI.sys.mjs b/browser/components/customizableui/CustomizableUI.sys.mjs diff --git a/browser/components/customizableui/CustomizableUI.sys.mjs b/browser/components/customizableui/CustomizableUI.sys.mjs
index 9a98f56d83ee38e0f1aa41467b4ddf215c3d90f7..39e947ce083ce3b293337f5dbb40cd0b46db12e2 100644 index 9a98f56d83ee38e0f1aa41467b4ddf215c3d90f7..c50781a1e8fd1a71baf497ba64d85292fa1347f4 100644
--- a/browser/components/customizableui/CustomizableUI.sys.mjs --- a/browser/components/customizableui/CustomizableUI.sys.mjs
+++ b/browser/components/customizableui/CustomizableUI.sys.mjs +++ b/browser/components/customizableui/CustomizableUI.sys.mjs
@@ -14,6 +14,7 @@ ChromeUtils.defineESModuleGetters(lazy, { @@ -14,6 +14,7 @@ ChromeUtils.defineESModuleGetters(lazy, {
@@ -153,7 +153,17 @@ index 9a98f56d83ee38e0f1aa41467b4ddf215c3d90f7..39e947ce083ce3b293337f5dbb40cd0b
/** /**
* Add a widget to an area. * Add a widget to an area.
* If the area to which you try to add is not known to CustomizableUI, * If the area to which you try to add is not known to CustomizableUI,
@@ -7858,7 +7858,7 @@ class OverflowableToolbar { @@ -7798,7 +7798,9 @@ class OverflowableToolbar {
);
if (webExtList && CustomizableUI.isWebExtensionWidget(child.id)) {
+ if (webExtList.id !== "zen-overflow-extensions-list") {
child.setAttribute("cui-anchorid", webExtButtonID);
+ }
webExtList.insertBefore(child, webExtList.firstElementChild);
} else {
child.setAttribute("cui-anchorid", this.#defaultListButton.id);
@@ -7858,7 +7860,7 @@ class OverflowableToolbar {
) { ) {
continue; continue;
} }
@@ -162,7 +172,7 @@ index 9a98f56d83ee38e0f1aa41467b4ddf215c3d90f7..39e947ce083ce3b293337f5dbb40cd0b
if (child != aExceptChild) { if (child != aExceptChild) {
sum += getInlineSize(child); sum += getInlineSize(child);
} }
@@ -7882,11 +7882,11 @@ class OverflowableToolbar { @@ -7882,11 +7884,11 @@ class OverflowableToolbar {
parseFloat(style.paddingLeft) - parseFloat(style.paddingLeft) -
parseFloat(style.paddingRight) - parseFloat(style.paddingRight) -
toolbarChildrenWidth; toolbarChildrenWidth;
@@ -176,7 +186,7 @@ index 9a98f56d83ee38e0f1aa41467b4ddf215c3d90f7..39e947ce083ce3b293337f5dbb40cd0b
}); });
lazy.log.debug( lazy.log.debug(
@@ -7901,7 +7901,14 @@ class OverflowableToolbar { @@ -7901,7 +7903,14 @@ class OverflowableToolbar {
Math.max(targetWidth, targetChildrenWidth) Math.max(targetWidth, targetChildrenWidth)
); );
totalAvailWidth = Math.ceil(totalAvailWidth); totalAvailWidth = Math.ceil(totalAvailWidth);
@@ -192,7 +202,7 @@ index 9a98f56d83ee38e0f1aa41467b4ddf215c3d90f7..39e947ce083ce3b293337f5dbb40cd0b
return { isOverflowing, targetContentWidth, totalAvailWidth }; return { isOverflowing, targetContentWidth, totalAvailWidth };
} }
@@ -7962,7 +7969,11 @@ class OverflowableToolbar { @@ -7962,7 +7971,11 @@ class OverflowableToolbar {
return; return;
} }
} }
@@ -205,7 +215,7 @@ index 9a98f56d83ee38e0f1aa41467b4ddf215c3d90f7..39e947ce083ce3b293337f5dbb40cd0b
lazy.log.debug( lazy.log.debug(
`Need ${minSize} but width is ${totalAvailWidth} so bailing` `Need ${minSize} but width is ${totalAvailWidth} so bailing`
); );
@@ -7995,7 +8006,7 @@ class OverflowableToolbar { @@ -7995,7 +8008,7 @@ class OverflowableToolbar {
} }
} }
if (!inserted) { if (!inserted) {
@@ -214,7 +224,27 @@ index 9a98f56d83ee38e0f1aa41467b4ddf215c3d90f7..39e947ce083ce3b293337f5dbb40cd0b
} }
child.removeAttribute("cui-anchorid"); child.removeAttribute("cui-anchorid");
child.removeAttribute("overflowedItem"); child.removeAttribute("overflowedItem");
@@ -8340,7 +8351,7 @@ class OverflowableToolbar { @@ -8121,6 +8134,9 @@ class OverflowableToolbar {
* if no such list exists.
*/
get #webExtList() {
+ if (this.#toolbar.getAttribute("addon-webext-overflowtarget") !== this.#webExtListRef?.id) {
+ this.#webExtListRef = null;
+ }
if (!this.#webExtListRef) {
let targetID = this.#toolbar.getAttribute("addon-webext-overflowtarget");
if (!targetID) {
@@ -8132,6 +8148,9 @@ class OverflowableToolbar {
let win = this.#toolbar.ownerGlobal;
let { panel } = win.gUnifiedExtensions;
this.#webExtListRef = panel.querySelector(`#${targetID}`);
+ if (!this.#webExtListRef) {
+ this.#webExtListRef = win.document.getElementById(targetID);
+ }
}
return this.#webExtListRef;
}
@@ -8340,7 +8359,7 @@ class OverflowableToolbar {
break; break;
} }
case "mousedown": { case "mousedown": {

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/customizableui/content/panelUI.js b/browser/components/customizableui/content/panelUI.js diff --git a/browser/components/customizableui/content/panelUI.js b/browser/components/customizableui/content/panelUI.js
index d016811caa6c1ecc947fd705f6e1b27e3b5a12a5..89f2a9ec9ebd80e744ed0118e1b3c164151cf2b8 100644 index 1c696a11d831ea25b4b01689e9b23bda8a754900..fed5576c05aeffd87022565580ce085cb81fe70c 100644
--- a/browser/components/customizableui/content/panelUI.js --- a/browser/components/customizableui/content/panelUI.js
+++ b/browser/components/customizableui/content/panelUI.js +++ b/browser/components/customizableui/content/panelUI.js
@@ -619,10 +619,12 @@ const PanelUI = { @@ -627,10 +627,12 @@ const PanelUI = {
if (hasKids && !this.navbar.hasAttribute("nonemptyoverflow")) { if (hasKids && !this.navbar.hasAttribute("nonemptyoverflow")) {
this.navbar.setAttribute("nonemptyoverflow", "true"); this.navbar.setAttribute("nonemptyoverflow", "true");
this.overflowPanel.setAttribute("hasfixeditems", "true"); this.overflowPanel.setAttribute("hasfixeditems", "true");
@@ -15,7 +15,7 @@ index d016811caa6c1ecc947fd705f6e1b27e3b5a12a5..89f2a9ec9ebd80e744ed0118e1b3c164
} }
}, },
@@ -970,7 +972,7 @@ const PanelUI = { @@ -978,7 +980,7 @@ const PanelUI = {
el.removeAttribute("data-lazy-l10n-id"); el.removeAttribute("data-lazy-l10n-id");
}); });

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/extensions/parent/ext-tabs.js b/browser/components/extensions/parent/ext-tabs.js diff --git a/browser/components/extensions/parent/ext-tabs.js b/browser/components/extensions/parent/ext-tabs.js
index bff93996b42aa1f88f1bfcbd813c3af4a5806f13..1252727b4811248e138cf7a38f8d1fd422576d28 100644 index 7e32fc3f3c325b7317533acf5142bb912556fdbe..04bbe6bece881a05d2eadf81411bd4df2b745017 100644
--- a/browser/components/extensions/parent/ext-tabs.js --- a/browser/components/extensions/parent/ext-tabs.js
+++ b/browser/components/extensions/parent/ext-tabs.js +++ b/browser/components/extensions/parent/ext-tabs.js
@@ -501,6 +501,7 @@ this.tabs = class extends ExtensionAPIPersistent { @@ -501,6 +501,7 @@ this.tabs = class extends ExtensionAPIPersistent {

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/preferences/jar.mn b/browser/components/preferences/jar.mn diff --git a/browser/components/preferences/jar.mn b/browser/components/preferences/jar.mn
index 5e53352fdbd25d2aed40d0117c3ad7072b9acf8c..0f400864ba7cc850d212ddeeefb71a06376e845f 100644 index f06aaedc681cac4dc26d8e168d47991098477424..db2e81338793f99d9f034555abb1f6ef28bb1ae9 100644
--- a/browser/components/preferences/jar.mn --- a/browser/components/preferences/jar.mn
+++ b/browser/components/preferences/jar.mn +++ b/browser/components/preferences/jar.mn
@@ -42,3 +42,5 @@ browser.jar: @@ -46,3 +46,5 @@ browser.jar:
content/browser/preferences/widgets/sync-device-name.mjs (widgets/sync-device-name/sync-device-name.mjs) content/browser/preferences/widgets/sync-device-name.mjs (widgets/sync-device-name/sync-device-name.mjs)
content/browser/preferences/widgets/sync-engines-list.mjs (widgets/sync-engine-list/sync-engines-list.mjs) content/browser/preferences/widgets/sync-engines-list.mjs (widgets/sync-engine-list/sync-engines-list.mjs)
content/browser/preferences/widgets/sync-engines-list.css (widgets/sync-engine-list/sync-engines-list.css) content/browser/preferences/widgets/sync-engines-list.css (widgets/sync-engine-list/sync-engines-list.css)

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/preferences/main.inc.xhtml b/browser/components/preferences/main.inc.xhtml diff --git a/browser/components/preferences/main.inc.xhtml b/browser/components/preferences/main.inc.xhtml
index d218a04e0ab44e6a55e368566c97df95e939565b..59f038e59fe1a8554a8b112c5ac33e700b71c79c 100644 index 171021979f4783251db7f74d52a922d4bd244f08..cdc91ac91905956a82dfa3ed229146622d1d3d80 100644
--- a/browser/components/preferences/main.inc.xhtml --- a/browser/components/preferences/main.inc.xhtml
+++ b/browser/components/preferences/main.inc.xhtml +++ b/browser/components/preferences/main.inc.xhtml
@@ -48,7 +48,8 @@ @@ -49,7 +49,8 @@
<!-- Browser layout --> <!-- Browser layout -->
<groupbox data-category="paneGeneral" <groupbox data-category="paneGeneral"
data-subcategory="layout" data-subcategory="layout"
@@ -12,7 +12,7 @@ index d218a04e0ab44e6a55e368566c97df95e939565b..59f038e59fe1a8554a8b112c5ac33e70
<label><html:h2 data-l10n-id="browser-layout-header"/></label> <label><html:h2 data-l10n-id="browser-layout-header"/></label>
<radiogroup id="browserLayoutRadioGroup" preference="sidebar.verticalTabs"> <radiogroup id="browserLayoutRadioGroup" preference="sidebar.verticalTabs">
<radio id="browserLayoutHorizontalTabs" data-l10n-id="browser-layout-horizontal-tabs" value="false"/> <radio id="browserLayoutHorizontalTabs" data-l10n-id="browser-layout-horizontal-tabs" value="false"/>
@@ -253,6 +254,7 @@ @@ -210,6 +211,7 @@
languages-customize-add.label, languages-customize-add.label,
" /> " />
</hbox> </hbox>

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/preferences/main.js b/browser/components/preferences/main.js diff --git a/browser/components/preferences/main.js b/browser/components/preferences/main.js
index 6f99cbf973d414ffd4036d17740abe963629db37..520dcce0adb06c5ebfee8c76f72f7d7b40e106da 100644 index 3720de145e6aa3fa2fb13f8480155d9472edaa8b..f04808d58b29611f4058d9fc52ab8bc20a34825a 100644
--- a/browser/components/preferences/main.js --- a/browser/components/preferences/main.js
+++ b/browser/components/preferences/main.js +++ b/browser/components/preferences/main.js
@@ -1729,6 +1729,11 @@ SettingGroupManager.registerGroups({ @@ -2190,6 +2190,11 @@ SettingGroupManager.registerGroups({
id: "browserRestoreSession", id: "browserRestoreSession",
l10nId: "startup-restore-windows-and-tabs", l10nId: "startup-restore-windows-and-tabs",
}, },
@@ -14,7 +14,7 @@ index 6f99cbf973d414ffd4036d17740abe963629db37..520dcce0adb06c5ebfee8c76f72f7d7b
{ {
id: "windowsLaunchOnLogin", id: "windowsLaunchOnLogin",
l10nId: "windows-launch-on-login", l10nId: "windows-launch-on-login",
@@ -3133,7 +3138,7 @@ function getBundleForLocales(newLocales) { @@ -4606,7 +4611,7 @@ function getBundleForLocales(newLocales) {
]) ])
); );
return new Localization( return new Localization(

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/preferences/preferences.js b/browser/components/preferences/preferences.js diff --git a/browser/components/preferences/preferences.js b/browser/components/preferences/preferences.js
index 7d6835b8636f771943b8081b7d56f579812026c2..97227eec4baeffd39b23ed6194ce7fa108c3b862 100644 index 7a279d4655523156ff259c9f6bcb2a0def9d1749..de71cec7693d1fe3bf34017ab76027b83631830a 100644
--- a/browser/components/preferences/preferences.js --- a/browser/components/preferences/preferences.js
+++ b/browser/components/preferences/preferences.js +++ b/browser/components/preferences/preferences.js
@@ -124,6 +124,7 @@ ChromeUtils.defineLazyGetter(this, "gSubDialog", function () { @@ -121,6 +121,7 @@ ChromeUtils.defineLazyGetter(this, "gSubDialog", function () {
styleSheets: [ styleSheets: [
"chrome://browser/skin/preferences/dialog.css", "chrome://browser/skin/preferences/dialog.css",
"chrome://browser/skin/preferences/preferences.css", "chrome://browser/skin/preferences/preferences.css",
@@ -10,7 +10,7 @@ index 7d6835b8636f771943b8081b7d56f579812026c2..97227eec4baeffd39b23ed6194ce7fa1
], ],
resizeCallback: async ({ title, frame }) => { resizeCallback: async ({ title, frame }) => {
// Search within main document and highlight matched keyword. // Search within main document and highlight matched keyword.
@@ -344,6 +345,10 @@ function init_all() { @@ -350,6 +351,10 @@ function init_all() {
register_module("paneSearch", gSearchPane); register_module("paneSearch", gSearchPane);
register_module("panePrivacy", gPrivacyPane); register_module("panePrivacy", gPrivacyPane);
register_module("paneContainers", gContainersPane); register_module("paneContainers", gContainersPane);

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/preferences/preferences.xhtml b/browser/components/preferences/preferences.xhtml diff --git a/browser/components/preferences/preferences.xhtml b/browser/components/preferences/preferences.xhtml
index a1aec823d6266d69ff02aa8523d2da999a0871b9..559f2ea12e53dd19f24e7953db4388456b97f02c 100644 index 0dd43c76f947e593a9be5edae936f1af17f9b627..df026b3e164da92536adef72ee0388386cb9708b 100644
--- a/browser/components/preferences/preferences.xhtml --- a/browser/components/preferences/preferences.xhtml
+++ b/browser/components/preferences/preferences.xhtml +++ b/browser/components/preferences/preferences.xhtml
@@ -46,6 +46,8 @@ @@ -42,6 +42,8 @@
<link rel="stylesheet" href="chrome://browser/content/preferences/widgets/setting-pane.css" /> <link rel="stylesheet" href="chrome://browser/content/preferences/widgets/setting-pane.css" />
<link rel="stylesheet" href="chrome://browser/content/preferences/widgets/setting-control.css" /> <link rel="stylesheet" href="chrome://browser/content/preferences/widgets/setting-control.css" />
@@ -11,7 +11,7 @@ index a1aec823d6266d69ff02aa8523d2da999a0871b9..559f2ea12e53dd19f24e7953db438845
<link rel="localization" href="branding/brand.ftl"/> <link rel="localization" href="branding/brand.ftl"/>
<link rel="localization" href="browser/browser.ftl"/> <link rel="localization" href="browser/browser.ftl"/>
<!-- Used by fontbuilder.js --> <!-- Used by fontbuilder.js -->
@@ -115,6 +117,11 @@ @@ -111,6 +113,11 @@
<hbox flex="1"> <hbox flex="1">
<vbox class="navigation"> <vbox class="navigation">
@@ -23,7 +23,7 @@ index a1aec823d6266d69ff02aa8523d2da999a0871b9..559f2ea12e53dd19f24e7953db438845
<!-- category list --> <!-- category list -->
<richlistbox id="categories" data-l10n-id="category-list" data-l10n-attrs="aria-label"> <richlistbox id="categories" data-l10n-id="category-list" data-l10n-attrs="aria-label">
<richlistitem id="category-general" <richlistitem id="category-general"
@@ -127,6 +134,50 @@ @@ -123,6 +130,50 @@
<label class="category-name" flex="1" data-l10n-id="pane-general-title"></label> <label class="category-name" flex="1" data-l10n-id="pane-general-title"></label>
</richlistitem> </richlistitem>
@@ -74,7 +74,7 @@ index a1aec823d6266d69ff02aa8523d2da999a0871b9..559f2ea12e53dd19f24e7953db438845
<richlistitem id="category-home" <richlistitem id="category-home"
class="category" class="category"
value="paneHome" value="paneHome"
@@ -242,11 +293,6 @@ @@ -248,11 +299,6 @@
<html:a href="about:policies" target="_blank" data-l10n-id="managed-notice"/> <html:a href="about:policies" target="_blank" data-l10n-id="managed-notice"/>
</hbox> </hbox>
</hbox> </hbox>
@@ -86,7 +86,7 @@ index a1aec823d6266d69ff02aa8523d2da999a0871b9..559f2ea12e53dd19f24e7953db438845
</hbox> </hbox>
</hbox> </hbox>
<vbox id="mainPrefPane"> <vbox id="mainPrefPane">
@@ -260,6 +306,10 @@ @@ -265,6 +311,10 @@
#include sync.inc.xhtml #include sync.inc.xhtml
#include experimental.inc.xhtml #include experimental.inc.xhtml
#include moreFromMozilla.inc.xhtml #include moreFromMozilla.inc.xhtml

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/preferences/sync.inc.xhtml b/browser/components/preferences/sync.inc.xhtml diff --git a/browser/components/preferences/sync.inc.xhtml b/browser/components/preferences/sync.inc.xhtml
index 4ecdbdb129577165ed0df619577327f7610e138f..761a4d4f26a21ba555b7af180e8a6030615db500 100644 index 86053cbf35ef1b004185ee54e9d7b9f2e2b8d550..a8fe2db034ffe99e01fd0f92d629151df7f708a8 100644
--- a/browser/components/preferences/sync.inc.xhtml --- a/browser/components/preferences/sync.inc.xhtml
+++ b/browser/components/preferences/sync.inc.xhtml +++ b/browser/components/preferences/sync.inc.xhtml
@@ -223,6 +223,10 @@ @@ -223,6 +223,10 @@

View File

@@ -818,6 +818,13 @@ const zenMissingKeyboardShortcutL10n = {
key_accessibility: "zen-devtools-toggle-accessibility-shortcut", key_accessibility: "zen-devtools-toggle-accessibility-shortcut",
}; };
var zenIgnoreKeyboardShortcutIDs = [
"key_enterFullScreen_old",
"key_enterFullScreen_compat",
"key_exitFullScreen_old",
"key_exitFullScreen_compat",
];
var zenIgnoreKeyboardShortcutL10n = [ var zenIgnoreKeyboardShortcutL10n = [
"zen-full-zoom-reduce-shortcut-alt-b", "zen-full-zoom-reduce-shortcut-alt-b",
"zen-full-zoom-reduce-shortcut-alt-a", "zen-full-zoom-reduce-shortcut-alt-a",
@@ -888,7 +895,11 @@ var gZenCKSSettings = {
const labelValue = zenMissingKeyboardShortcutL10n[keyID] ?? l10nID; const labelValue = zenMissingKeyboardShortcutL10n[keyID] ?? l10nID;
if (zenIgnoreKeyboardShortcutL10n.includes(labelValue) || shortcut.shouldBeEmpty) { if (
zenIgnoreKeyboardShortcutIDs.includes(keyID) ||
zenIgnoreKeyboardShortcutL10n.includes(labelValue) ||
shortcut.shouldBeEmpty
) {
continue; continue;
} }

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/screenshots/overlay/overlay.css b/browser/components/screenshots/overlay/overlay.css diff --git a/browser/components/screenshots/overlay/overlay.css b/browser/components/screenshots/overlay/overlay.css
index 43a5d2109ad107ce1c79eef7cb8635bc1fa813f7..c1e5648d0e71826119bda1bc18c5d16886bab8fd 100644 index 94d87522bfaaf59b9138ec5ca960be0a0ea31339..ab3fa41cefdfc1d93edeb8a2d626bd9b1e07344b 100644
--- a/browser/components/screenshots/overlay/overlay.css --- a/browser/components/screenshots/overlay/overlay.css
+++ b/browser/components/screenshots/overlay/overlay.css +++ b/browser/components/screenshots/overlay/overlay.css
@@ -196,6 +196,9 @@ @@ -200,6 +200,9 @@
pointer-events: none; pointer-events: none;
position: absolute; position: absolute;
z-index: var(--screenshots-high-layer); z-index: var(--screenshots-high-layer);
@@ -12,11 +12,11 @@ index 43a5d2109ad107ce1c79eef7cb8635bc1fa813f7..c1e5648d0e71826119bda1bc18c5d168
} }
#top-background { #top-background {
@@ -214,7 +217,7 @@ @@ -218,7 +221,7 @@
} }
.bghighlight { .bghighlight {
- background-color: rgba(0, 0, 0, 0.7); - background-color: var(--background-color-overlay);
+ background-color: rgba(0, 0, 0, 0.5); + background-color: rgba(0, 0, 0, 0.5);
position: absolute; position: absolute;
overflow: clip; overflow: clip;

View File

@@ -1,13 +1,12 @@
diff --git a/browser/components/search/SearchUIUtils.sys.mjs b/browser/components/search/SearchUIUtils.sys.mjs diff --git a/browser/components/search/SearchUIUtils.sys.mjs b/browser/components/search/SearchUIUtils.sys.mjs
index 65daa1402a52e252360386e60471f726c1387bb3..be8f588316a8a4d7f33a324bf11f9e1f19def32d 100644 index 22680c91da251adc21bb46debc73b3dbf6cdf08c..80d465e698c9900a6495d3f17ca2e66a25ff4021 100644
--- a/browser/components/search/SearchUIUtils.sys.mjs --- a/browser/components/search/SearchUIUtils.sys.mjs
+++ b/browser/components/search/SearchUIUtils.sys.mjs +++ b/browser/components/search/SearchUIUtils.sys.mjs
@@ -444,7 +444,7 @@ export var SearchUIUtils = { @@ -445,6 +445,7 @@ export var SearchUIUtils = {
triggeringSearchEngine: engine.name,
}, },
}); });
-
+ window.gZenGlanceManager?.onSearchSelectCommand(where);
return { engine, url: submission.uri };
},
+ window.gZenGlanceManager?.onSearchSelectCommand(where);
lazy.BrowserSearchTelemetry.recordSearch(
window.gBrowser.selectedBrowser,
engine,

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/sessionstore/SessionStartup.sys.mjs b/browser/components/sessionstore/SessionStartup.sys.mjs diff --git a/browser/components/sessionstore/SessionStartup.sys.mjs b/browser/components/sessionstore/SessionStartup.sys.mjs
index 86600ffb5178599ab23270a964064ca657a3283f..e7014e5bce547d37ec92377a95bad5be4d52152e 100644 index 86600ffb5178599ab23270a964064ca657a3283f..70d7b5c7d69d3700475d663b595052264c67d351 100644
--- a/browser/components/sessionstore/SessionStartup.sys.mjs --- a/browser/components/sessionstore/SessionStartup.sys.mjs
+++ b/browser/components/sessionstore/SessionStartup.sys.mjs +++ b/browser/components/sessionstore/SessionStartup.sys.mjs
@@ -40,6 +40,7 @@ ChromeUtils.defineESModuleGetters(lazy, { @@ -40,6 +40,7 @@ ChromeUtils.defineESModuleGetters(lazy, {
@@ -28,7 +28,16 @@ index 86600ffb5178599ab23270a964064ca657a3283f..e7014e5bce547d37ec92377a95bad5be
if (this._initialState == null) { if (this._initialState == null) {
// No valid session found. // No valid session found.
this._sessionType = this.NO_SESSION; this._sessionType = this.NO_SESSION;
@@ -336,12 +339,7 @@ export var SessionStartup = { @@ -276,6 +279,8 @@ export var SessionStartup = {
`Previous shutdown ok? ${this._previousSessionCrashed}, reason: ${previousSessionCrashedReason}`
);
+ lazy.ZenSessionStore.onCrashCheckpoints(this._initialState);
+
Services.obs.addObserver(this, "sessionstore-windows-restored", true);
if (this.sessionType == this.NO_SESSION) {
@@ -336,12 +341,7 @@ export var SessionStartup = {
isAutomaticRestoreEnabled() { isAutomaticRestoreEnabled() {
if (this._resumeSessionEnabled === null) { if (this._resumeSessionEnabled === null) {
this._resumeSessionEnabled = this._resumeSessionEnabled =
@@ -42,3 +51,13 @@ index 86600ffb5178599ab23270a964064ca657a3283f..e7014e5bce547d37ec92377a95bad5be
} }
return this._resumeSessionEnabled; return this._resumeSessionEnabled;
@@ -354,8 +354,7 @@ export var SessionStartup = {
*/
willRestore() {
return (
- this.sessionType == this.RECOVER_SESSION ||
- this.sessionType == this.RESUME_SESSION
+ true
);
},

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/sessionstore/SessionStore.sys.mjs b/browser/components/sessionstore/SessionStore.sys.mjs diff --git a/browser/components/sessionstore/SessionStore.sys.mjs b/browser/components/sessionstore/SessionStore.sys.mjs
index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96faedf6f0b 100644 index f066bc7a9cca1788080d088141030c225a733931..accb078ebbc23f9a823ae6c277f1e1bf06644d92 100644
--- a/browser/components/sessionstore/SessionStore.sys.mjs --- a/browser/components/sessionstore/SessionStore.sys.mjs
+++ b/browser/components/sessionstore/SessionStore.sys.mjs +++ b/browser/components/sessionstore/SessionStore.sys.mjs
@@ -127,6 +127,9 @@ const TAB_EVENTS = [ @@ -127,6 +127,9 @@ const TAB_EVENTS = [
@@ -12,7 +12,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
]; ];
const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
@@ -196,6 +199,8 @@ ChromeUtils.defineESModuleGetters(lazy, { @@ -198,6 +201,8 @@ ChromeUtils.defineESModuleGetters(lazy, {
TabStateCache: "resource:///modules/sessionstore/TabStateCache.sys.mjs", TabStateCache: "resource:///modules/sessionstore/TabStateCache.sys.mjs",
TabStateFlusher: "resource:///modules/sessionstore/TabStateFlusher.sys.mjs", TabStateFlusher: "resource:///modules/sessionstore/TabStateFlusher.sys.mjs",
setTimeout: "resource://gre/modules/Timer.sys.mjs", setTimeout: "resource://gre/modules/Timer.sys.mjs",
@@ -21,7 +21,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
}); });
ChromeUtils.defineLazyGetter(lazy, "blankURI", () => { ChromeUtils.defineLazyGetter(lazy, "blankURI", () => {
@@ -1261,10 +1266,7 @@ var SessionStoreInternal = { @@ -1263,10 +1268,7 @@ var SessionStoreInternal = {
*/ */
get willAutoRestore() { get willAutoRestore() {
return ( return (
@@ -33,7 +33,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
); );
}, },
@@ -1934,6 +1936,9 @@ var SessionStoreInternal = { @@ -1940,6 +1942,9 @@ var SessionStoreInternal = {
case "TabPinned": case "TabPinned":
case "TabUnpinned": case "TabUnpinned":
case "SwapDocShells": case "SwapDocShells":
@@ -43,7 +43,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
this.saveStateDelayed(win); this.saveStateDelayed(win);
break; break;
case "TabGroupCreate": case "TabGroupCreate":
@@ -2044,6 +2049,10 @@ var SessionStoreInternal = { @@ -2050,6 +2055,10 @@ var SessionStoreInternal = {
this._windows[aWindow.__SSi].isTaskbarTab = true; this._windows[aWindow.__SSi].isTaskbarTab = true;
} }
@@ -51,10 +51,10 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
+ this._windows[aWindow.__SSi].isZenUnsynced = true; + this._windows[aWindow.__SSi].isZenUnsynced = true;
+ } + }
+ +
let tabbrowser = aWindow.gBrowser; if (lazy.AIWindow.isAIWindowActiveAndEnabled(aWindow)) {
this._windows[aWindow.__SSi].isAIWindow = true;
// add tab change listeners to all already existing tabs }
@@ -2076,7 +2085,7 @@ var SessionStoreInternal = { @@ -2086,7 +2095,7 @@ var SessionStoreInternal = {
let isTaskbarTab = this._windows[aWindow.__SSi].isTaskbarTab; let isTaskbarTab = this._windows[aWindow.__SSi].isTaskbarTab;
// A regular window is not a private window, taskbar tab window, or popup window // A regular window is not a private window, taskbar tab window, or popup window
let isRegularWindow = let isRegularWindow =
@@ -63,7 +63,16 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
// perform additional initialization when the first window is loading // perform additional initialization when the first window is loading
if (lazy.RunState.isStopped) { if (lazy.RunState.isStopped) {
@@ -2131,6 +2140,7 @@ var SessionStoreInternal = { @@ -2098,7 +2107,7 @@ var SessionStoreInternal = {
// to disk to NOW() to enforce a full interval before the next write.
lazy.SessionSaver.updateLastSaveTime();
- if (isPrivateWindow || isTaskbarTab) {
+ if (isPrivateWindow || isTaskbarTab || aWindow.document.documentElement.hasAttribute("zen-unsynced-window")) {
this._log.debug(
"initializeWindow, the window is private or a web app. Saving SessionStartup.state for possibly restoring later"
);
@@ -2141,6 +2150,7 @@ var SessionStoreInternal = {
null, null,
"sessionstore-one-or-no-tab-restored" "sessionstore-one-or-no-tab-restored"
); );
@@ -71,7 +80,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
this._deferredAllWindowsRestored.resolve(); this._deferredAllWindowsRestored.resolve();
} }
// this window was opened by _openWindowWithState // this window was opened by _openWindowWithState
@@ -2175,7 +2185,6 @@ var SessionStoreInternal = { @@ -2190,7 +2200,6 @@ var SessionStoreInternal = {
if (closedWindowState) { if (closedWindowState) {
let newWindowState; let newWindowState;
if ( if (
@@ -79,7 +88,15 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
!lazy.SessionStartup.willRestore() !lazy.SessionStartup.willRestore()
) { ) {
// We want to split the window up into pinned tabs and unpinned tabs. // We want to split the window up into pinned tabs and unpinned tabs.
@@ -2239,6 +2248,15 @@ var SessionStoreInternal = { @@ -2226,6 +2235,7 @@ var SessionStoreInternal = {
}
if (newWindowState) {
+ lazy.ZenSessionStore.onRestoringClosedWindow(newWindowState);
// Ensure that the window state isn't hidden
this._restoreCount = 1;
let state = { windows: [newWindowState] };
@@ -2254,6 +2264,15 @@ var SessionStoreInternal = {
}); });
this._shouldRestoreLastSession = false; this._shouldRestoreLastSession = false;
} }
@@ -95,7 +112,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
if (this._restoreLastWindow && aWindow.toolbar.visible) { if (this._restoreLastWindow && aWindow.toolbar.visible) {
// always reset (if not a popup window) // always reset (if not a popup window)
@@ -2383,7 +2401,7 @@ var SessionStoreInternal = { @@ -2404,7 +2423,7 @@ var SessionStoreInternal = {
var tabbrowser = aWindow.gBrowser; var tabbrowser = aWindow.gBrowser;
@@ -104,7 +121,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
TAB_EVENTS.forEach(function (aEvent) { TAB_EVENTS.forEach(function (aEvent) {
tabbrowser.tabContainer.removeEventListener(aEvent, this, true); tabbrowser.tabContainer.removeEventListener(aEvent, this, true);
@@ -2434,7 +2452,7 @@ var SessionStoreInternal = { @@ -2455,7 +2474,7 @@ var SessionStoreInternal = {
let isLastRegularWindow = let isLastRegularWindow =
Object.values(this._windows).filter( Object.values(this._windows).filter(
@@ -113,7 +130,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
).length == 1; ).length == 1;
this._log.debug( this._log.debug(
`onClose, closing window isLastRegularWindow? ${isLastRegularWindow}` `onClose, closing window isLastRegularWindow? ${isLastRegularWindow}`
@@ -2491,8 +2509,8 @@ var SessionStoreInternal = { @@ -2512,8 +2531,8 @@ var SessionStoreInternal = {
// 2) Flush the window. // 2) Flush the window.
// 3) When the flush is complete, revisit our decision to store the window // 3) When the flush is complete, revisit our decision to store the window
// in _closedWindows, and add/remove as necessary. // in _closedWindows, and add/remove as necessary.
@@ -124,7 +141,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
} }
completionPromise = lazy.TabStateFlusher.flushWindow(aWindow).then(() => { completionPromise = lazy.TabStateFlusher.flushWindow(aWindow).then(() => {
@@ -2512,8 +2530,9 @@ var SessionStoreInternal = { @@ -2533,8 +2552,9 @@ var SessionStoreInternal = {
// Save non-private windows if they have at // Save non-private windows if they have at
// least one saveable tab or are the last window. // least one saveable tab or are the last window.
@@ -136,7 +153,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
if (!isLastWindow && winData.closedId > -1) { if (!isLastWindow && winData.closedId > -1) {
this._addClosedAction( this._addClosedAction(
@@ -2589,7 +2608,7 @@ var SessionStoreInternal = { @@ -2610,7 +2630,7 @@ var SessionStoreInternal = {
* to call this method again asynchronously (for example, after * to call this method again asynchronously (for example, after
* a window flush). * a window flush).
*/ */
@@ -145,7 +162,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
// Make sure SessionStore is still running, and make sure that we // Make sure SessionStore is still running, and make sure that we
// haven't chosen to forget this window. // haven't chosen to forget this window.
if ( if (
@@ -2606,6 +2625,7 @@ var SessionStoreInternal = { @@ -2627,6 +2647,7 @@ var SessionStoreInternal = {
// _closedWindows from a previous call to this function. // _closedWindows from a previous call to this function.
let winIndex = this._closedWindows.indexOf(winData); let winIndex = this._closedWindows.indexOf(winData);
let alreadyStored = winIndex != -1; let alreadyStored = winIndex != -1;
@@ -153,7 +170,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
// If sidebar command is truthy, i.e. sidebar is open, store sidebar settings // If sidebar command is truthy, i.e. sidebar is open, store sidebar settings
let shouldStore = hasSaveableTabs || isLastWindow; let shouldStore = hasSaveableTabs || isLastWindow;
@@ -3408,7 +3428,7 @@ var SessionStoreInternal = { @@ -3429,7 +3450,7 @@ var SessionStoreInternal = {
if (!isPrivateWindow && tabState.isPrivate) { if (!isPrivateWindow && tabState.isPrivate) {
return; return;
} }
@@ -162,7 +179,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
return; return;
} }
@@ -4129,6 +4149,12 @@ var SessionStoreInternal = { @@ -4150,6 +4171,12 @@ var SessionStoreInternal = {
Math.min(tabState.index, tabState.entries.length) Math.min(tabState.index, tabState.entries.length)
); );
tabState.pinned = false; tabState.pinned = false;
@@ -175,7 +192,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
if (inBackground === false) { if (inBackground === false) {
aWindow.gBrowser.selectedTab = newTab; aWindow.gBrowser.selectedTab = newTab;
@@ -4565,6 +4591,8 @@ var SessionStoreInternal = { @@ -4586,6 +4613,8 @@ var SessionStoreInternal = {
// Append the tab if we're opening into a different window, // Append the tab if we're opening into a different window,
tabIndex: aSource == aTargetWindow ? pos : Infinity, tabIndex: aSource == aTargetWindow ? pos : Infinity,
pinned: state.pinned, pinned: state.pinned,
@@ -184,7 +201,19 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
userContextId: state.userContextId, userContextId: state.userContextId,
skipLoad: true, skipLoad: true,
preferredRemoteType, preferredRemoteType,
@@ -5414,7 +5442,7 @@ var SessionStoreInternal = { @@ -5087,9 +5116,10 @@ var SessionStoreInternal = {
if (activePageData.title && activePageData.title != activePageData.url) {
win.gBrowser.setInitialTabTitle(tab, activePageData.title, {
isContentTitle: true,
+ _zenChangeLabelFlag: true,
});
} else {
- win.gBrowser.setInitialTabTitle(tab, activePageData.url);
+ win.gBrowser.setInitialTabTitle(tab, activePageData.url, { _zenChangeLabelFlag: true });
}
}
@@ -5446,7 +5476,7 @@ var SessionStoreInternal = {
for (let i = tabbrowser.pinnedTabCount; i < tabbrowser.tabs.length; i++) { for (let i = tabbrowser.pinnedTabCount; i < tabbrowser.tabs.length; i++) {
let tab = tabbrowser.tabs[i]; let tab = tabbrowser.tabs[i];
@@ -193,7 +222,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
removableTabs.push(tab); removableTabs.push(tab);
} }
} }
@@ -5525,7 +5553,7 @@ var SessionStoreInternal = { @@ -5559,7 +5589,7 @@ var SessionStoreInternal = {
// collect the data for all windows // collect the data for all windows
for (ix in this._windows) { for (ix in this._windows) {
@@ -202,7 +231,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
// window data is still in _statesToRestore // window data is still in _statesToRestore
continue; continue;
} }
@@ -5668,11 +5696,12 @@ var SessionStoreInternal = { @@ -5702,11 +5732,12 @@ var SessionStoreInternal = {
} }
let tabbrowser = aWindow.gBrowser; let tabbrowser = aWindow.gBrowser;
@@ -216,7 +245,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
// update the internal state data for this window // update the internal state data for this window
for (let tab of tabs) { for (let tab of tabs) {
if (tab == aWindow.FirefoxViewHandler.tab) { if (tab == aWindow.FirefoxViewHandler.tab) {
@@ -5683,6 +5712,9 @@ var SessionStoreInternal = { @@ -5717,6 +5748,9 @@ var SessionStoreInternal = {
tabsData.push(tabData); tabsData.push(tabData);
} }
@@ -226,7 +255,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
// update tab group state for this window // update tab group state for this window
winData.groups = []; winData.groups = [];
for (let tabGroup of aWindow.gBrowser.tabGroups) { for (let tabGroup of aWindow.gBrowser.tabGroups) {
@@ -5695,7 +5727,7 @@ var SessionStoreInternal = { @@ -5729,7 +5763,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, // 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). // since it's only inserted into the tab strip after it's selected).
if (aWindow.FirefoxViewHandler.tab?.selected) { if (aWindow.FirefoxViewHandler.tab?.selected) {
@@ -235,7 +264,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
winData.title = tabbrowser.tabs[0].label; winData.title = tabbrowser.tabs[0].label;
} }
winData.selected = selectedIndex; winData.selected = selectedIndex;
@@ -5810,8 +5842,8 @@ var SessionStoreInternal = { @@ -5844,8 +5878,8 @@ var SessionStoreInternal = {
// selectTab represents. // selectTab represents.
let selectTab = 0; let selectTab = 0;
if (overwriteTabs) { if (overwriteTabs) {
@@ -246,7 +275,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
selectTab = Math.min(selectTab, winData.tabs.length); selectTab = Math.min(selectTab, winData.tabs.length);
} }
@@ -5833,6 +5865,7 @@ var SessionStoreInternal = { @@ -5867,6 +5901,7 @@ var SessionStoreInternal = {
if (overwriteTabs) { if (overwriteTabs) {
for (let i = tabbrowser.browsers.length - 1; i >= 0; i--) { for (let i = tabbrowser.browsers.length - 1; i >= 0; i--) {
if (!tabbrowser.tabs[i].selected) { if (!tabbrowser.tabs[i].selected) {
@@ -254,7 +283,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
tabbrowser.removeTab(tabbrowser.tabs[i]); tabbrowser.removeTab(tabbrowser.tabs[i]);
} }
} }
@@ -5866,6 +5899,12 @@ var SessionStoreInternal = { @@ -5900,6 +5935,12 @@ var SessionStoreInternal = {
savedTabGroup => !openTabGroupIdsInWindow.has(savedTabGroup.id) savedTabGroup => !openTabGroupIdsInWindow.has(savedTabGroup.id)
); );
} }
@@ -267,7 +296,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
// Move the originally open tabs to the end. // Move the originally open tabs to the end.
if (initialTabs) { if (initialTabs) {
@@ -6419,6 +6458,25 @@ var SessionStoreInternal = { @@ -6453,6 +6494,25 @@ var SessionStoreInternal = {
// Most of tabData has been restored, now continue with restoring // Most of tabData has been restored, now continue with restoring
// attributes that may trigger external events. // attributes that may trigger external events.
@@ -293,7 +322,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
if (tabData.pinned) { if (tabData.pinned) {
tabbrowser.pinTab(tab); tabbrowser.pinTab(tab);
@@ -6567,6 +6625,9 @@ var SessionStoreInternal = { @@ -6601,6 +6661,9 @@ var SessionStoreInternal = {
aWindow.gURLBar.readOnly = false; aWindow.gURLBar.readOnly = false;
} }
} }
@@ -303,7 +332,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
let promiseParts = Promise.withResolvers(); let promiseParts = Promise.withResolvers();
aWindow.setTimeout(() => { aWindow.setTimeout(() => {
@@ -7343,7 +7404,7 @@ var SessionStoreInternal = { @@ -7389,7 +7452,7 @@ var SessionStoreInternal = {
let groupsToSave = new Map(); let groupsToSave = new Map();
for (let tIndex = 0; tIndex < window.tabs.length; ) { for (let tIndex = 0; tIndex < window.tabs.length; ) {
@@ -312,7 +341,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
// Adjust window.selected // Adjust window.selected
if (tIndex + 1 < window.selected) { if (tIndex + 1 < window.selected) {
window.selected -= 1; window.selected -= 1;
@@ -7358,7 +7419,7 @@ var SessionStoreInternal = { @@ -7404,7 +7467,7 @@ var SessionStoreInternal = {
); );
// We don't want to increment tIndex here. // We don't want to increment tIndex here.
continue; continue;

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/sessionstore/TabState.sys.mjs b/browser/components/sessionstore/TabState.sys.mjs diff --git a/browser/components/sessionstore/TabState.sys.mjs b/browser/components/sessionstore/TabState.sys.mjs
index 82721356d191055bec0d4b0ca49e481221988801..68437e6f9fa54fc75ca9e24d738e8afcd0ea22f8 100644 index 82721356d191055bec0d4b0ca49e481221988801..e01904a6ea73e068c236adecbac6a97adedb2bd3 100644
--- a/browser/components/sessionstore/TabState.sys.mjs --- a/browser/components/sessionstore/TabState.sys.mjs
+++ b/browser/components/sessionstore/TabState.sys.mjs +++ b/browser/components/sessionstore/TabState.sys.mjs
@@ -85,7 +85,24 @@ class _TabState { @@ -85,7 +85,25 @@ class _TabState {
tabData.groupId = tab.group.id; tabData.groupId = tab.group.id;
} }
@@ -19,6 +19,7 @@ index 82721356d191055bec0d4b0ca49e481221988801..68437e6f9fa54fc75ca9e24d738e8afc
+ tabData.zenIsGlance = tab.hasAttribute("zen-glance-tab"); + tabData.zenIsGlance = tab.hasAttribute("zen-glance-tab");
+ tabData._zenPinnedInitialState = tab._zenPinnedInitialState; + tabData._zenPinnedInitialState = tab._zenPinnedInitialState;
+ tabData._zenIsActiveTab = tab._zenContentsVisible; + tabData._zenIsActiveTab = tab._zenContentsVisible;
+ tabData.zenLiveFolderItemId = tab.getAttribute("zen-live-folder-item-id");
+ +
tabData.searchMode = tab.ownerGlobal.gURLBar.getSearchMode(browser, true); tabData.searchMode = tab.ownerGlobal.gURLBar.getSearchMode(browser, true);
+ if (tabData.searchMode?.source === tab.ownerGlobal.UrlbarUtils.RESULT_SOURCE.ZEN_ACTIONS) { + if (tabData.searchMode?.source === tab.ownerGlobal.UrlbarUtils.RESULT_SOURCE.ZEN_ACTIONS) {

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/sidebar/browser-sidebar.js b/browser/components/sidebar/browser-sidebar.js diff --git a/browser/components/sidebar/browser-sidebar.js b/browser/components/sidebar/browser-sidebar.js
index bd6db85732e6e99ca51ce9c4c1a7d469199cf8cb..6c7859c1014baf4e343714ef797cf558d065e189 100644 index 86a74b2abfe9b49d71ce61fefc636b865bef83a9..7c18fcf15d127d79febb03ca15f0193dd6263604 100644
--- a/browser/components/sidebar/browser-sidebar.js --- a/browser/components/sidebar/browser-sidebar.js
+++ b/browser/components/sidebar/browser-sidebar.js +++ b/browser/components/sidebar/browser-sidebar.js
@@ -793,7 +793,7 @@ var SidebarController = { @@ -799,7 +799,7 @@ var SidebarController = {
setPosition() { setPosition() {
// First reset all ordinals to match DOM ordering. // First reset all ordinals to match DOM ordering.
let contentArea = document.getElementById("tabbrowser-tabbox"); let contentArea = document.getElementById("tabbrowser-tabbox");

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/tabbrowser/TabUnloader.sys.mjs b/browser/components/tabbrowser/TabUnloader.sys.mjs diff --git a/browser/components/tabbrowser/TabUnloader.sys.mjs b/browser/components/tabbrowser/TabUnloader.sys.mjs
index aefccef39f0b81176a5710a794e8a5e2650d6507..e073c65790df6d55e827a4f4596199f4f1a99a57 100644 index aefccef39f0b81176a5710a794e8a5e2650d6507..53c838b3bc322cadee4ef9b411d02fc0af8c35e5 100644
--- a/browser/components/tabbrowser/TabUnloader.sys.mjs --- a/browser/components/tabbrowser/TabUnloader.sys.mjs
+++ b/browser/components/tabbrowser/TabUnloader.sys.mjs +++ b/browser/components/tabbrowser/TabUnloader.sys.mjs
@@ -52,7 +52,7 @@ let CRITERIA_WEIGHT = 1; @@ -52,7 +52,7 @@ let CRITERIA_WEIGHT = 1;
@@ -11,3 +11,12 @@ index aefccef39f0b81176a5710a794e8a5e2650d6507..e073c65790df6d55e827a4f4596199f4
return weight; return weight;
} }
@@ -106,7 +106,7 @@ let DefaultTabUnloaderMethods = {
*iterateTabs() {
for (let win of Services.wm.getEnumerator("navigator:browser")) {
- for (let tab of win.gBrowser.tabs) {
+ for (let tab of win.gZenWorkspaces.allStoredTabs) {
yield { tab, gBrowser: win.gBrowser };
}
}

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/tabbrowser/content/browser-ctrlTab.js b/browser/components/tabbrowser/content/browser-ctrlTab.js diff --git a/browser/components/tabbrowser/content/browser-ctrlTab.js b/browser/components/tabbrowser/content/browser-ctrlTab.js
index 3330dc133c120e7fbeecd2a36c71f9dfba60b3fb..0243cdfe67e5eb3f68fc7cde66bb3809e79bd6c3 100644 index b435917892ac77fb433ea709f2524db2f2347a1d..fcbfeb92f3ae4effbfd3333514ed4d412e3063c6 100644
--- a/browser/components/tabbrowser/content/browser-ctrlTab.js --- a/browser/components/tabbrowser/content/browser-ctrlTab.js
+++ b/browser/components/tabbrowser/content/browser-ctrlTab.js +++ b/browser/components/tabbrowser/content/browser-ctrlTab.js
@@ -252,7 +252,8 @@ var ctrlTab = { @@ -252,7 +252,8 @@ var ctrlTab = {

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/tabbrowser/content/drag-and-drop.js b/browser/components/tabbrowser/content/drag-and-drop.js diff --git a/browser/components/tabbrowser/content/drag-and-drop.js b/browser/components/tabbrowser/content/drag-and-drop.js
index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a1ef240b5 100644 index 730190d845f5312736f437cdc654c1693241ce56..d0404c46955fa16103a6f83e410f4f8ad7e78655 100644
--- a/browser/components/tabbrowser/content/drag-and-drop.js --- a/browser/components/tabbrowser/content/drag-and-drop.js
+++ b/browser/components/tabbrowser/content/drag-and-drop.js +++ b/browser/components/tabbrowser/content/drag-and-drop.js
@@ -35,6 +35,9 @@ @@ -35,6 +35,9 @@
@@ -12,7 +12,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
if (isTab(element) || isSplitViewWrapper(element)) { if (isTab(element) || isSplitViewWrapper(element)) {
return element; return element;
} }
@@ -115,6 +118,9 @@ @@ -118,6 +121,9 @@
} }
let draggedTab = event.dataTransfer.mozGetDataAt(TAB_DROP_TYPE, 0); let draggedTab = event.dataTransfer.mozGetDataAt(TAB_DROP_TYPE, 0);
@@ -22,18 +22,18 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
if ( if (
(dropEffect == "move" || dropEffect == "copy") && (dropEffect == "move" || dropEffect == "copy") &&
document == draggedTab.ownerDocument && document == draggedTab.ownerDocument &&
@@ -133,10 +139,6 @@ @@ -136,10 +142,6 @@
// Pinned tabs in expanded vertical mode are on a grid format and require // Pinned tabs in expanded vertical mode are on a grid format and require
// different logic to drag and drop. // different logic to drag and drop.
- if (this._isContainerVerticalPinnedGrid(draggedTab)) { - if (this._tabbrowserTabs.isContainerVerticalPinnedGrid(draggedTab)) {
- this._animateExpandedPinnedTabMove(event); - this._animateExpandedPinnedTabMove(event);
- return; - return;
- } - }
this._animateTabMove(event); this._animateTabMove(event);
return; return;
} }
@@ -269,6 +271,10 @@ @@ -272,6 +274,10 @@
this._tabDropIndicator.hidden = true; this._tabDropIndicator.hidden = true;
event.stopPropagation(); event.stopPropagation();
@@ -44,7 +44,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
if (draggedTab && dropEffect == "copy") { if (draggedTab && dropEffect == "copy") {
let duplicatedDraggedTab; let duplicatedDraggedTab;
let duplicatedTabs = []; let duplicatedTabs = [];
@@ -294,8 +300,9 @@ @@ -297,8 +303,9 @@
let translateOffsetY = oldTranslateY % tabHeight; let translateOffsetY = oldTranslateY % tabHeight;
let newTranslateX = oldTranslateX - translateOffsetX; let newTranslateX = oldTranslateX - translateOffsetX;
let newTranslateY = oldTranslateY - translateOffsetY; let newTranslateY = oldTranslateY - translateOffsetY;
@@ -54,9 +54,9 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
+ let numPinned = gBrowser._numVisiblePinTabsWithoutCollapsed; + let numPinned = gBrowser._numVisiblePinTabsWithoutCollapsed;
+ let essential = draggedTab.hasAttribute("zen-essential"); + let essential = draggedTab.hasAttribute("zen-essential");
if (this._isContainerVerticalPinnedGrid(draggedTab)) { if (this._tabbrowserTabs.isContainerVerticalPinnedGrid(draggedTab)) {
// Update both translate axis for pinned vertical expanded tabs // Update both translate axis for pinned vertical expanded tabs
@@ -311,9 +318,12 @@ @@ -314,9 +321,12 @@
} }
} else { } else {
let tabs = this._tabbrowserTabs.dragAndDropElements.slice( let tabs = this._tabbrowserTabs.dragAndDropElements.slice(
@@ -71,7 +71,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
let size = this._tabbrowserTabs.verticalMode ? "height" : "width"; let size = this._tabbrowserTabs.verticalMode ? "height" : "width";
let screenAxis = this._tabbrowserTabs.verticalMode let screenAxis = this._tabbrowserTabs.verticalMode
? "screenY" ? "screenY"
@@ -365,11 +375,13 @@ @@ -368,11 +378,13 @@
this._dragToPinPromoCard, this._dragToPinPromoCard,
]; ];
let shouldPin = let shouldPin =
@@ -85,7 +85,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
isTab(draggedTab) && isTab(draggedTab) &&
draggedTab.pinned && draggedTab.pinned &&
this._tabbrowserTabs.arrowScrollbox.contains(event.target); this._tabbrowserTabs.arrowScrollbox.contains(event.target);
@@ -432,6 +444,7 @@ @@ -436,6 +448,7 @@
} }
} }
@@ -93,7 +93,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
if (shouldTranslate) { if (shouldTranslate) {
let translationPromises = []; let translationPromises = [];
for (let item of movingTabs) { for (let item of movingTabs) {
@@ -443,7 +456,7 @@ @@ -447,7 +460,7 @@
item.removeAttribute("tabdrop-samewindow"); item.removeAttribute("tabdrop-samewindow");
resolve(); resolve();
}; };
@@ -102,7 +102,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
postTransitionCleanup(); postTransitionCleanup();
} else { } else {
let onTransitionEnd = transitionendEvent => { let onTransitionEnd = transitionendEvent => {
@@ -513,7 +526,7 @@ @@ -521,7 +534,7 @@
if (tab.selected) { if (tab.selected) {
selectedTab = tab; selectedTab = tab;
indexForSelectedTab = newIndex; indexForSelectedTab = newIndex;
@@ -111,7 +111,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
const newTab = gBrowser.adoptTab(tab, { const newTab = gBrowser.adoptTab(tab, {
elementIndex: newIndex, elementIndex: newIndex,
selectTab: tab == draggedTab, selectTab: tab == draggedTab,
@@ -523,7 +536,7 @@ @@ -531,7 +544,7 @@
} }
} }
} }
@@ -120,7 +120,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
const newTab = gBrowser.adoptTab(selectedTab, { const newTab = gBrowser.adoptTab(selectedTab, {
elementIndex: indexForSelectedTab, elementIndex: indexForSelectedTab,
selectTab: selectedTab == draggedTab, selectTab: selectedTab == draggedTab,
@@ -534,10 +547,6 @@ @@ -542,10 +555,6 @@
} }
// Restore tab selection // Restore tab selection
@@ -131,7 +131,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
} else { } else {
// Pass true to disallow dropping javascript: or data: urls // Pass true to disallow dropping javascript: or data: urls
let links; let links;
@@ -584,6 +593,7 @@ @@ -592,6 +601,7 @@
let nextItem = this._tabbrowserTabs.dragAndDropElements[newIndex]; let nextItem = this._tabbrowserTabs.dragAndDropElements[newIndex];
let tabGroup = isTab(nextItem) && nextItem.group; let tabGroup = isTab(nextItem) && nextItem.group;
@@ -139,7 +139,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
gBrowser.loadTabs(urls, { gBrowser.loadTabs(urls, {
inBackground, inBackground,
replace, replace,
@@ -621,7 +631,16 @@ @@ -629,7 +639,16 @@
this._expandGroupOnDrop(draggedTab); this._expandGroupOnDrop(draggedTab);
} }
this._resetTabsAfterDrop(draggedTab.ownerDocument); this._resetTabsAfterDrop(draggedTab.ownerDocument);
@@ -157,11 +157,15 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
if ( if (
dt.mozUserCancelled || dt.mozUserCancelled ||
dt.dropEffect != "none" || dt.dropEffect != "none" ||
@@ -825,7 +844,10 @@ @@ -833,11 +852,10 @@
_getDragTarget(event, { ignoreSides = false } = {}) { _getDragTarget(event, { ignoreSides = false } = {}) {
let { target } = event; let { target } = event;
while (target) { while (target) {
- if (isTab(target) || isTabGroupLabel(target)) { - if (
- isTab(target) ||
- isTabGroupLabel(target) ||
- isSplitViewWrapper(target)
- ) {
+ if (isTab(target) || isTabGroupLabel(target) || target?.classList?.contains("tab-group-label-container")) { + if (isTab(target) || isTabGroupLabel(target) || target?.classList?.contains("tab-group-label-container")) {
+ if (target.classList?.contains("tab-group-label-container")) { + if (target.classList?.contains("tab-group-label-container")) {
+ target = target.querySelector(".tab-group-label"); + target = target.querySelector(".tab-group-label");
@@ -169,7 +173,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
break; break;
} }
target = target.parentNode; target = target.parentNode;
@@ -842,14 +864,17 @@ @@ -854,6 +872,9 @@
return null; return null;
} }
} }
@@ -179,17 +183,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
return target; return target;
} }
_isContainerVerticalPinnedGrid(tab) { @@ -883,7 +904,8 @@
return (
this._tabbrowserTabs.verticalMode &&
- tab.pinned &&
- this._tabbrowserTabs.hasAttribute("expanded") &&
+ tab.hasAttribute("zen-essential") &&
+ (this._tabbrowserTabs.hasAttribute("expanded") || document.documentElement.hasAttribute("zen-sidebar-expanded")) &&
!this._tabbrowserTabs.expandOnHover
);
}
@@ -880,7 +905,8 @@
isTabGroupLabel(draggedTab) && isTabGroupLabel(draggedTab) &&
draggedTab._dragData?.expandGroupOnDrop draggedTab._dragData?.expandGroupOnDrop
) { ) {
@@ -199,7 +193,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
} }
} }
@@ -1058,7 +1084,6 @@ @@ -1061,7 +1083,6 @@
// using updateDragImage. On Linux, we can use a panel. // using updateDragImage. On Linux, we can use a panel.
if (platform == "win" || platform == "macosx") { if (platform == "win" || platform == "macosx") {
captureListener = function () { captureListener = function () {
@@ -207,7 +201,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
}; };
} else { } else {
// Create a panel to use it in setDragImage // Create a panel to use it in setDragImage
@@ -1096,7 +1121,6 @@ @@ -1099,7 +1120,6 @@
); );
dragImageOffset = dragImageOffset * scale; dragImageOffset = dragImageOffset * scale;
} }
@@ -215,7 +209,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
// _dragData.offsetX/Y give the coordinates that the mouse should be // _dragData.offsetX/Y give the coordinates that the mouse should be
// positioned relative to the corner of the new window created upon // positioned relative to the corner of the new window created upon
@@ -1115,7 +1139,7 @@ @@ -1118,7 +1138,7 @@
let dropEffect = this.getDropEffectForTabDrag(event); let dropEffect = this.getDropEffectForTabDrag(event);
let isMovingInTabStrip = !fromTabList && dropEffect == "move"; let isMovingInTabStrip = !fromTabList && dropEffect == "move";
let collapseTabGroupDuringDrag = let collapseTabGroupDuringDrag =
@@ -224,7 +218,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
tab._dragData = { tab._dragData = {
offsetX: this._tabbrowserTabs.verticalMode offsetX: this._tabbrowserTabs.verticalMode
@@ -1125,7 +1149,7 @@ @@ -1128,7 +1148,7 @@
? event.screenY - window.screenY - tabOffset ? event.screenY - window.screenY - tabOffset
: event.screenY - window.screenY, : event.screenY - window.screenY,
scrollPos: scrollPos:
@@ -233,7 +227,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
? this._tabbrowserTabs.pinnedTabsContainer.scrollPosition ? this._tabbrowserTabs.pinnedTabsContainer.scrollPosition
: this._tabbrowserTabs.arrowScrollbox.scrollPosition, : this._tabbrowserTabs.arrowScrollbox.scrollPosition,
screenX: event.screenX, screenX: event.screenX,
@@ -1152,6 +1176,7 @@ @@ -1155,6 +1175,7 @@
if (collapseTabGroupDuringDrag) { if (collapseTabGroupDuringDrag) {
tab.group.collapsed = true; tab.group.collapsed = true;
@@ -241,7 +235,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
} }
} }
} }
@@ -1176,6 +1201,7 @@ @@ -1179,6 +1200,7 @@
if (tabStripItemElement.hasAttribute("dragtarget")) { if (tabStripItemElement.hasAttribute("dragtarget")) {
return; return;
} }
@@ -249,7 +243,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
let isPinned = tab.pinned; let isPinned = tab.pinned;
let numPinned = gBrowser.pinnedTabCount; let numPinned = gBrowser.pinnedTabCount;
let dragAndDropElements = this._tabbrowserTabs.dragAndDropElements; let dragAndDropElements = this._tabbrowserTabs.dragAndDropElements;
@@ -1601,7 +1627,6 @@ @@ -1604,7 +1626,6 @@
for (let item of this._tabbrowserTabs.dragAndDropElements) { for (let item of this._tabbrowserTabs.dragAndDropElements) {
item = elementToMove(item); item = elementToMove(item);
@@ -257,7 +251,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
item.removeAttribute("multiselected-move-together"); item.removeAttribute("multiselected-move-together");
delete item._moveTogetherSelectedTabsData; delete item._moveTogetherSelectedTabsData;
} }
@@ -2429,7 +2454,6 @@ @@ -2432,7 +2453,6 @@
for (let item of this._tabbrowserTabs.dragAndDropElements) { for (let item of this._tabbrowserTabs.dragAndDropElements) {
this._resetGroupTarget(item); this._resetGroupTarget(item);
item = elementToMove(item); item = elementToMove(item);
@@ -265,7 +259,7 @@ index 57800333445ec7850742145527e04ae8d504b0bb..a13875436a72f89178455a09c8665b9a
} }
this._tabbrowserTabs.removeAttribute("movingtab-group"); this._tabbrowserTabs.removeAttribute("movingtab-group");
this._tabbrowserTabs.removeAttribute("movingtab-ungroup"); this._tabbrowserTabs.removeAttribute("movingtab-ungroup");
@@ -2460,17 +2484,14 @@ @@ -2463,17 +2483,14 @@
tab.style.left = ""; tab.style.left = "";
tab.style.top = ""; tab.style.top = "";
tab.style.maxWidth = ""; tab.style.maxWidth = "";

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/tabbrowser/content/tab.js b/browser/components/tabbrowser/content/tab.js diff --git a/browser/components/tabbrowser/content/tab.js b/browser/components/tabbrowser/content/tab.js
index 6528da245d922e2ccdb59cbf8106055bc34d1e74..b5d5ac633c06d7d9c909ec9456a5f3c165a6b925 100644 index 836bee14d2b63604688ebe477a5d915a5e99b305..a675aed711560b4a44604fc17478cffa7fb68439 100644
--- a/browser/components/tabbrowser/content/tab.js --- a/browser/components/tabbrowser/content/tab.js
+++ b/browser/components/tabbrowser/content/tab.js +++ b/browser/components/tabbrowser/content/tab.js
@@ -21,6 +21,7 @@ @@ -21,6 +21,7 @@
@@ -14,7 +14,7 @@ index 6528da245d922e2ccdb59cbf8106055bc34d1e74..b5d5ac633c06d7d9c909ec9456a5f3c1
<hbox class="tab-secondary-label"> <hbox class="tab-secondary-label">
<label class="tab-icon-sound-label tab-icon-sound-pip-label" data-l10n-id="browser-tab-audio-pip" role="presentation"/> <label class="tab-icon-sound-label tab-icon-sound-pip-label" data-l10n-id="browser-tab-audio-pip" role="presentation"/>
</hbox> </hbox>
+ <label class="tab-reset-pin-label" data-l10n-id="tab-reset-pin-label" role="presentation"/> + <label class="zen-tab-sublabel" data-l10n-id="zen-tab-sublabel" data-l10n-args='{"tabSubtitle": "zen-default-pinned"}' role="presentation"/>
</vbox> </vbox>
<image class="tab-note-icon" role="presentation"/> <image class="tab-note-icon" role="presentation"/>
<image class="tab-close-button close-icon" role="button" data-l10n-id="tabbrowser-close-tabs-button" data-l10n-args='{"tabCount": 1}' keyNav="false"/> <image class="tab-close-button close-icon" role="button" data-l10n-id="tabbrowser-close-tabs-button" data-l10n-args='{"tabCount": 1}' keyNav="false"/>

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/tabbrowser/content/tabbrowser.js b/browser/components/tabbrowser/content/tabbrowser.js diff --git a/browser/components/tabbrowser/content/tabbrowser.js b/browser/components/tabbrowser/content/tabbrowser.js
index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256ca3c9175 100644 index d7765e0adb37216d35f2125abf96025cbb150bab..27202066cef98d9826884806f71e70812457bd78 100644
--- a/browser/components/tabbrowser/content/tabbrowser.js --- a/browser/components/tabbrowser/content/tabbrowser.js
+++ b/browser/components/tabbrowser/content/tabbrowser.js +++ b/browser/components/tabbrowser/content/tabbrowser.js
@@ -398,6 +398,7 @@ @@ -405,6 +405,7 @@
* @type {MozBrowser[]} * @type {MozBrowser[]}
*/ */
get splitViewBrowsers() { get splitViewBrowsers() {
@@ -10,7 +10,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
const browsers = []; const browsers = [];
if (this.#activeSplitView) { if (this.#activeSplitView) {
for (const tab of this.#activeSplitView.tabs) { for (const tab of this.#activeSplitView.tabs) {
@@ -462,15 +463,66 @@ @@ -469,15 +470,66 @@
return this.tabContainer.visibleTabs; return this.tabContainer.visibleTabs;
} }
@@ -79,7 +79,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
set selectedTab(val) { set selectedTab(val) {
if ( if (
gSharedTabWarning.willShowSharedTabWarning(val) || gSharedTabWarning.willShowSharedTabWarning(val) ||
@@ -546,6 +598,10 @@ @@ -553,6 +605,10 @@
userContextId = parseInt(tabArgument.getAttribute("usercontextid"), 10); userContextId = parseInt(tabArgument.getAttribute("usercontextid"), 10);
} }
@@ -90,7 +90,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
if (tabArgument && tabArgument.linkedBrowser) { if (tabArgument && tabArgument.linkedBrowser) {
remoteType = tabArgument.linkedBrowser.remoteType; remoteType = tabArgument.linkedBrowser.remoteType;
initialBrowsingContextGroupId = initialBrowsingContextGroupId =
@@ -625,6 +681,8 @@ @@ -645,6 +701,8 @@
this.tabpanels.appendChild(panel); this.tabpanels.appendChild(panel);
let tab = this.tabs[0]; let tab = this.tabs[0];
@@ -99,7 +99,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
tab.linkedPanel = uniqueId; tab.linkedPanel = uniqueId;
this._selectedTab = tab; this._selectedTab = tab;
this._selectedBrowser = browser; this._selectedBrowser = browser;
@@ -912,13 +970,18 @@ @@ -932,13 +990,18 @@
} }
this.showTab(aTab); this.showTab(aTab);
@@ -119,7 +119,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
aTab.setAttribute("pinned", "true"); aTab.setAttribute("pinned", "true");
this._updateTabBarForPinnedTabs(); this._updateTabBarForPinnedTabs();
@@ -931,11 +994,19 @@ @@ -951,11 +1014,19 @@
} }
this.#handleTabMove(aTab, () => { this.#handleTabMove(aTab, () => {
@@ -140,7 +140,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
}); });
aTab.style.marginInlineStart = ""; aTab.style.marginInlineStart = "";
@@ -1112,6 +1183,9 @@ @@ -1132,6 +1203,9 @@
let LOCAL_PROTOCOLS = ["chrome:", "about:", "resource:", "data:"]; let LOCAL_PROTOCOLS = ["chrome:", "about:", "resource:", "data:"];
@@ -150,7 +150,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
if ( if (
aIconURL && aIconURL &&
!LOCAL_PROTOCOLS.some(protocol => aIconURL.startsWith(protocol)) !LOCAL_PROTOCOLS.some(protocol => aIconURL.startsWith(protocol))
@@ -1121,6 +1195,9 @@ @@ -1141,6 +1215,9 @@
); );
return; return;
} }
@@ -160,7 +160,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
let browser = this.getBrowserForTab(aTab); let browser = this.getBrowserForTab(aTab);
browser.mIconURL = aIconURL; browser.mIconURL = aIconURL;
@@ -1393,7 +1470,6 @@ @@ -1422,7 +1499,6 @@
// Preview mode should not reset the owner // Preview mode should not reset the owner
if (!this._previewMode && !oldTab.selected) { if (!this._previewMode && !oldTab.selected) {
@@ -168,7 +168,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
} }
let lastRelatedTab = this._lastRelatedTabMap.get(oldTab); let lastRelatedTab = this._lastRelatedTabMap.get(oldTab);
@@ -1484,6 +1560,7 @@ @@ -1513,6 +1589,7 @@
if (!this._previewMode) { if (!this._previewMode) {
newTab.recordTimeFromUnloadToReload(); newTab.recordTimeFromUnloadToReload();
newTab.updateLastAccessed(); newTab.updateLastAccessed();
@@ -176,7 +176,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
oldTab.updateLastAccessed(); oldTab.updateLastAccessed();
// if this is the foreground window, update the last-seen timestamps. // if this is the foreground window, update the last-seen timestamps.
if (this.ownerGlobal == BrowserWindowTracker.getTopWindow()) { if (this.ownerGlobal == BrowserWindowTracker.getTopWindow()) {
@@ -1636,6 +1713,9 @@ @@ -1665,6 +1742,9 @@
} }
let activeEl = document.activeElement; let activeEl = document.activeElement;
@@ -186,11 +186,13 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
// If focus is on the old tab, move it to the new tab. // If focus is on the old tab, move it to the new tab.
if (activeEl == oldTab) { if (activeEl == oldTab) {
newTab.focus(); newTab.focus();
@@ -1959,6 +2039,11 @@ @@ -1987,7 +2067,12 @@
return this._setTabLabel(aTab, aLabel);
} }
_setTabLabel(aTab, aLabel, { beforeTabOpen, isContentTitle, isURL } = {}) { - _setTabLabel(aTab, aLabel, { beforeTabOpen, isContentTitle, isURL } = {}) {
+ if (!aTab._zenContentsVisible && !aTab._zenChangeLabelFlag && !aTab._labelIsInitialTitle && !gZenWorkspaces.privateWindowOrDisabled) { + _setTabLabel(aTab, aLabel, { beforeTabOpen, isContentTitle, isURL, _zenChangeLabelFlag } = {}) {
+ if (!aTab._zenContentsVisible && !aTab._zenChangeLabelFlag && !aTab._labelIsInitialTitle && !gZenWorkspaces.privateWindowOrDisabled && !_zenChangeLabelFlag) {
+ return false; + return false;
+ } + }
+ aLabel = (typeof aTab.zenStaticLabel === "string" && aTab.zenStaticLabel) ? aTab.zenStaticLabel : aLabel; + aLabel = (typeof aTab.zenStaticLabel === "string" && aTab.zenStaticLabel) ? aTab.zenStaticLabel : aLabel;
@@ -198,7 +200,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
if (!aLabel || aLabel.includes("about:reader?")) { if (!aLabel || aLabel.includes("about:reader?")) {
return false; return false;
} }
@@ -2067,7 +2152,7 @@ @@ -2096,7 +2181,7 @@
newIndex = this.selectedTab._tPos + 1; newIndex = this.selectedTab._tPos + 1;
} }
@@ -207,7 +209,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
if (this.isTabGroupLabel(targetTab)) { if (this.isTabGroupLabel(targetTab)) {
throw new Error( throw new Error(
"Replacing a tab group label with a tab is not supported" "Replacing a tab group label with a tab is not supported"
@@ -2342,6 +2427,7 @@ @@ -2371,6 +2456,7 @@
uriIsAboutBlank, uriIsAboutBlank,
userContextId, userContextId,
skipLoad, skipLoad,
@@ -215,17 +217,17 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
} = {}) { } = {}) {
let b = document.createXULElement("browser"); let b = document.createXULElement("browser");
// Use the JSM global to create the permanentKey, so that if the // Use the JSM global to create the permanentKey, so that if the
@@ -2415,8 +2501,7 @@ @@ -2444,8 +2530,7 @@
// we use a different attribute name for this? // we use a different attribute name for this?
b.setAttribute("name", name); b.setAttribute("name", name);
} }
- -
- if (this._allowTransparentBrowser) { - if (AIWindow.isAIWindowActive(window) || this._allowTransparentBrowser) {
+ if (this._allowTransparentBrowser || _forZenEmptyTab) { + if (this._allowTransparentBrowser || _forZenEmptyTab) {
b.setAttribute("transparent", "true"); b.setAttribute("transparent", "true");
} }
@@ -2581,7 +2666,7 @@ @@ -2610,7 +2695,7 @@
let panel = this.getPanel(browser); let panel = this.getPanel(browser);
let uniqueId = this._generateUniquePanelID(); let uniqueId = this._generateUniquePanelID();
@@ -234,7 +236,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
aTab.linkedPanel = uniqueId; aTab.linkedPanel = uniqueId;
// Inject the <browser> into the DOM if necessary. // Inject the <browser> into the DOM if necessary.
@@ -2640,8 +2725,8 @@ @@ -2670,8 +2755,8 @@
// If we transitioned from one browser to two browsers, we need to set // If we transitioned from one browser to two browsers, we need to set
// hasSiblings=false on both the existing browser and the new browser. // hasSiblings=false on both the existing browser and the new browser.
if (this.tabs.length == 2) { if (this.tabs.length == 2) {
@@ -245,7 +247,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
} else { } else {
aTab.linkedBrowser.browsingContext.hasSiblings = this.tabs.length > 1; aTab.linkedBrowser.browsingContext.hasSiblings = this.tabs.length > 1;
} }
@@ -2828,7 +2913,6 @@ @@ -2858,7 +2943,6 @@
this.selectedTab = this.addTrustedTab(BROWSER_NEW_TAB_URL, { this.selectedTab = this.addTrustedTab(BROWSER_NEW_TAB_URL, {
tabIndex: tab._tPos + 1, tabIndex: tab._tPos + 1,
userContextId: tab.userContextId, userContextId: tab.userContextId,
@@ -253,7 +255,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
focusUrlBar: true, focusUrlBar: true,
}); });
resolve(this.selectedBrowser); resolve(this.selectedBrowser);
@@ -2938,6 +3022,9 @@ @@ -2968,6 +3052,9 @@
schemelessInput, schemelessInput,
hasValidUserGestureActivation = false, hasValidUserGestureActivation = false,
textDirectiveUserActivation = false, textDirectiveUserActivation = false,
@@ -263,7 +265,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
} = {} } = {}
) { ) {
// all callers of addTab that pass a params object need to pass // all callers of addTab that pass a params object need to pass
@@ -2948,10 +3035,17 @@ @@ -2978,10 +3065,17 @@
); );
} }
@@ -281,7 +283,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
// If we're opening a foreground tab, set the owner by default. // If we're opening a foreground tab, set the owner by default.
ownerTab ??= inBackground ? null : this.selectedTab; ownerTab ??= inBackground ? null : this.selectedTab;
@@ -2959,6 +3053,7 @@ @@ -2989,6 +3083,7 @@
if (this.selectedTab.owner) { if (this.selectedTab.owner) {
this.selectedTab.owner = null; this.selectedTab.owner = null;
} }
@@ -289,7 +291,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
// Find the tab that opened this one, if any. This is used for // Find the tab that opened this one, if any. This is used for
// determining positioning, and inherited attributes such as the // determining positioning, and inherited attributes such as the
@@ -3011,6 +3106,22 @@ @@ -3041,6 +3136,22 @@
noInitialLabel, noInitialLabel,
skipBackgroundNotify, skipBackgroundNotify,
}); });
@@ -312,7 +314,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
if (insertTab) { if (insertTab) {
// Insert the tab into the tab container in the correct position. // Insert the tab into the tab container in the correct position.
this.#insertTabAtIndex(t, { this.#insertTabAtIndex(t, {
@@ -3019,6 +3130,7 @@ @@ -3049,6 +3160,7 @@
ownerTab, ownerTab,
openerTab, openerTab,
pinned, pinned,
@@ -320,7 +322,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
bulkOrderedOpen, bulkOrderedOpen,
tabGroup: tabGroup ?? openerTab?.group, tabGroup: tabGroup ?? openerTab?.group,
}); });
@@ -3037,6 +3149,7 @@ @@ -3067,6 +3179,7 @@
openWindowInfo, openWindowInfo,
skipLoad, skipLoad,
triggeringRemoteType, triggeringRemoteType,
@@ -328,7 +330,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
})); }));
if (focusUrlBar) { if (focusUrlBar) {
@@ -3161,6 +3274,12 @@ @@ -3191,6 +3304,12 @@
} }
} }
@@ -341,7 +343,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
// Additionally send pinned tab events // Additionally send pinned tab events
if (pinned) { if (pinned) {
this.#notifyPinnedStatus(t); this.#notifyPinnedStatus(t);
@@ -3375,6 +3494,7 @@ @@ -3426,6 +3545,7 @@
isAdoptingGroup = false, isAdoptingGroup = false,
isUserTriggered = false, isUserTriggered = false,
telemetryUserCreateSource = "unknown", telemetryUserCreateSource = "unknown",
@@ -349,7 +351,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
} = {} } = {}
) { ) {
if ( if (
@@ -3385,9 +3505,6 @@ @@ -3436,9 +3556,6 @@
!this.isSplitViewWrapper(tabOrSplitView) !this.isSplitViewWrapper(tabOrSplitView)
) )
) { ) {
@@ -359,7 +361,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
} }
if (!color) { if (!color) {
@@ -3408,9 +3525,14 @@ @@ -3459,9 +3576,14 @@
label, label,
isAdoptingGroup isAdoptingGroup
); );
@@ -376,7 +378,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
); );
group.addTabs(tabsAndSplitViews); group.addTabs(tabsAndSplitViews);
@@ -3531,7 +3653,7 @@ @@ -3582,7 +3704,7 @@
} }
this.#handleTabMove(tab, () => this.#handleTabMove(tab, () =>
@@ -385,7 +387,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
); );
} }
@@ -3599,6 +3721,7 @@ @@ -3666,6 +3788,7 @@
color: group.color, color: group.color,
insertBefore: newTabs[0], insertBefore: newTabs[0],
isAdoptingGroup: true, isAdoptingGroup: true,
@@ -393,7 +395,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
}); });
} }
@@ -3746,6 +3869,7 @@ @@ -3856,6 +3979,7 @@
openWindowInfo, openWindowInfo,
skipLoad, skipLoad,
triggeringRemoteType, triggeringRemoteType,
@@ -401,7 +403,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
} }
) { ) {
// If we don't have a preferred remote type (or it is `NOT_REMOTE`), and // If we don't have a preferred remote type (or it is `NOT_REMOTE`), and
@@ -3815,6 +3939,7 @@ @@ -3925,6 +4049,7 @@
openWindowInfo, openWindowInfo,
name, name,
skipLoad, skipLoad,
@@ -409,7 +411,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
}); });
} }
@@ -4003,7 +4128,7 @@ @@ -4122,7 +4247,7 @@
// Add a new tab if needed. // Add a new tab if needed.
if (!tab) { if (!tab) {
let createLazyBrowser = let createLazyBrowser =
@@ -418,7 +420,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
let url = "about:blank"; let url = "about:blank";
if (tabData.entries?.length) { if (tabData.entries?.length) {
@@ -4040,8 +4165,10 @@ @@ -4159,8 +4284,10 @@
insertTab: false, insertTab: false,
skipLoad: true, skipLoad: true,
preferredRemoteType, preferredRemoteType,
@@ -430,17 +432,17 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
if (select) { if (select) {
tabToSelect = tab; tabToSelect = tab;
} }
@@ -4053,7 +4180,8 @@ @@ -4172,7 +4299,8 @@
this.pinTab(tab); this.pinTab(tab);
// Then ensure all the tab open/pinning information is sent. // Then ensure all the tab open/pinning information is sent.
this._fireTabOpen(tab, {}); this._fireTabOpen(tab, {});
- } else if (tabData.groupId) { - } else if (tabData.groupId) {
+ } + }
+ if (tabData.groupId) { + if (tabData.groupId && tabGroupWorkingData.get(tabData.groupId)) {
let { groupId } = tabData; let { groupId } = tabData;
const tabGroup = tabGroupWorkingData.get(groupId); const tabGroup = tabGroupWorkingData.get(groupId);
// if a tab refers to a tab group we don't know, skip any group // if a tab refers to a tab group we don't know, skip any group
@@ -4067,7 +4195,10 @@ @@ -4186,7 +4314,10 @@
tabGroup.stateData.id, tabGroup.stateData.id,
tabGroup.stateData.color, tabGroup.stateData.color,
tabGroup.stateData.collapsed, tabGroup.stateData.collapsed,
@@ -452,7 +454,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
); );
tabsFragment.appendChild(tabGroup.node); tabsFragment.appendChild(tabGroup.node);
} }
@@ -4112,9 +4243,23 @@ @@ -4231,9 +4362,23 @@
// to remove the old selected tab. // to remove the old selected tab.
if (tabToSelect) { if (tabToSelect) {
let leftoverTab = this.selectedTab; let leftoverTab = this.selectedTab;
@@ -476,7 +478,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
if (tabs.length > 1 || !tabs[0].selected) { if (tabs.length > 1 || !tabs[0].selected) {
this._updateTabsAfterInsert(); this._updateTabsAfterInsert();
@@ -4305,11 +4450,14 @@ @@ -4424,11 +4569,14 @@
if (ownerTab) { if (ownerTab) {
tab.owner = ownerTab; tab.owner = ownerTab;
} }
@@ -492,7 +494,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
if ( if (
!bulkOrderedOpen && !bulkOrderedOpen &&
((openerTab && ((openerTab &&
@@ -4321,7 +4469,7 @@ @@ -4440,7 +4588,7 @@
let lastRelatedTab = let lastRelatedTab =
openerTab && this._lastRelatedTabMap.get(openerTab); openerTab && this._lastRelatedTabMap.get(openerTab);
let previousTab = lastRelatedTab || openerTab || this.selectedTab; let previousTab = lastRelatedTab || openerTab || this.selectedTab;
@@ -501,7 +503,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
tabGroup = previousTab.group; tabGroup = previousTab.group;
} }
if ( if (
@@ -4337,7 +4485,7 @@ @@ -4456,7 +4604,7 @@
previousTab.splitview previousTab.splitview
) + 1; ) + 1;
} else if (previousTab.visible) { } else if (previousTab.visible) {
@@ -510,7 +512,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
} else if (previousTab == FirefoxViewHandler.tab) { } else if (previousTab == FirefoxViewHandler.tab) {
elementIndex = 0; elementIndex = 0;
} }
@@ -4365,14 +4513,14 @@ @@ -4484,14 +4632,14 @@
} }
// Ensure index is within bounds. // Ensure index is within bounds.
if (tab.pinned) { if (tab.pinned) {
@@ -529,7 +531,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
if (pinned && !itemAfter?.pinned) { if (pinned && !itemAfter?.pinned) {
itemAfter = null; itemAfter = null;
@@ -4385,7 +4533,7 @@ @@ -4504,7 +4652,7 @@
this.tabContainer._invalidateCachedTabs(); this.tabContainer._invalidateCachedTabs();
@@ -538,7 +540,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
if ( if (
(this.isTab(itemAfter) && itemAfter.group == tabGroup) || (this.isTab(itemAfter) && itemAfter.group == tabGroup) ||
this.isSplitViewWrapper(itemAfter) this.isSplitViewWrapper(itemAfter)
@@ -4416,7 +4564,11 @@ @@ -4535,7 +4683,11 @@
const tabContainer = pinned const tabContainer = pinned
? this.tabContainer.pinnedTabsContainer ? this.tabContainer.pinnedTabsContainer
: this.tabContainer; : this.tabContainer;
@@ -550,7 +552,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
} }
if (tab.group?.collapsed) { if (tab.group?.collapsed) {
@@ -4431,6 +4583,7 @@ @@ -4550,6 +4702,7 @@
if (pinned) { if (pinned) {
this._updateTabBarForPinnedTabs(); this._updateTabBarForPinnedTabs();
} }
@@ -558,7 +560,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
TabBarVisibility.update(); TabBarVisibility.update();
} }
@@ -4983,6 +5136,7 @@ @@ -5102,6 +5255,7 @@
telemetrySource, telemetrySource,
} = {} } = {}
) { ) {
@@ -566,7 +568,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
// When 'closeWindowWithLastTab' pref is enabled, closing all tabs // When 'closeWindowWithLastTab' pref is enabled, closing all tabs
// can be considered equivalent to closing the window. // can be considered equivalent to closing the window.
if ( if (
@@ -5072,6 +5226,7 @@ @@ -5191,6 +5345,7 @@
if (lastToClose) { if (lastToClose) {
this.removeTab(lastToClose, aParams); this.removeTab(lastToClose, aParams);
} }
@@ -574,7 +576,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
} catch (e) { } catch (e) {
console.error(e); console.error(e);
} }
@@ -5110,6 +5265,12 @@ @@ -5229,6 +5384,12 @@
aTab._closeTimeNoAnimTimerId = Glean.browserTabclose.timeNoAnim.start(); aTab._closeTimeNoAnimTimerId = Glean.browserTabclose.timeNoAnim.start();
} }
@@ -587,7 +589,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
// Handle requests for synchronously removing an already // Handle requests for synchronously removing an already
// asynchronously closing tab. // asynchronously closing tab.
if (!animate && aTab.closing) { if (!animate && aTab.closing) {
@@ -5124,6 +5285,9 @@ @@ -5243,6 +5404,9 @@
// state). // state).
let tabWidth = window.windowUtils.getBoundsWithoutFlushing(aTab).width; let tabWidth = window.windowUtils.getBoundsWithoutFlushing(aTab).width;
let isLastTab = this.#isLastTabInWindow(aTab); let isLastTab = this.#isLastTabInWindow(aTab);
@@ -597,7 +599,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
if ( if (
!this._beginRemoveTab(aTab, { !this._beginRemoveTab(aTab, {
closeWindowFastpath: true, closeWindowFastpath: true,
@@ -5172,7 +5336,13 @@ @@ -5291,7 +5455,13 @@
// We're not animating, so we can cancel the animation stopwatch. // We're not animating, so we can cancel the animation stopwatch.
Glean.browserTabclose.timeAnim.cancel(aTab._closeTimeAnimTimerId); Glean.browserTabclose.timeAnim.cancel(aTab._closeTimeAnimTimerId);
aTab._closeTimeAnimTimerId = null; aTab._closeTimeAnimTimerId = null;
@@ -612,7 +614,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
return; return;
} }
@@ -5306,7 +5476,7 @@ @@ -5425,7 +5595,7 @@
closeWindowWithLastTab != null closeWindowWithLastTab != null
? closeWindowWithLastTab ? closeWindowWithLastTab
: !window.toolbar.visible || : !window.toolbar.visible ||
@@ -621,7 +623,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
if (closeWindow) { if (closeWindow) {
// We've already called beforeunload on all the relevant tabs if we get here, // We've already called beforeunload on all the relevant tabs if we get here,
@@ -5330,6 +5500,7 @@ @@ -5449,6 +5619,7 @@
newTab = true; newTab = true;
} }
@@ -629,7 +631,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
aTab._endRemoveArgs = [closeWindow, newTab]; aTab._endRemoveArgs = [closeWindow, newTab];
// swapBrowsersAndCloseOther will take care of closing the window without animation. // swapBrowsersAndCloseOther will take care of closing the window without animation.
@@ -5370,13 +5541,7 @@ @@ -5489,13 +5660,7 @@
aTab._mouseleave(); aTab._mouseleave();
if (newTab) { if (newTab) {
@@ -644,7 +646,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
} else { } else {
TabBarVisibility.update(); TabBarVisibility.update();
} }
@@ -5509,6 +5674,7 @@ @@ -5628,6 +5793,7 @@
this.tabs[i]._tPos = i; this.tabs[i]._tPos = i;
} }
@@ -652,7 +654,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
if (!this._windowIsClosing) { if (!this._windowIsClosing) {
// update tab close buttons state // update tab close buttons state
this.tabContainer._updateCloseButtons(); this.tabContainer._updateCloseButtons();
@@ -5732,6 +5898,7 @@ @@ -5851,6 +6017,7 @@
} }
let excludeTabs = new Set(aExcludeTabs); let excludeTabs = new Set(aExcludeTabs);
@@ -660,7 +662,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
// If this tab has a successor, it should be selectable, since // If this tab has a successor, it should be selectable, since
// hiding or closing a tab removes that tab as a successor. // hiding or closing a tab removes that tab as a successor.
@@ -5744,15 +5911,22 @@ @@ -5863,15 +6030,22 @@
!excludeTabs.has(aTab.owner) && !excludeTabs.has(aTab.owner) &&
Services.prefs.getBoolPref("browser.tabs.selectOwnerOnClose") Services.prefs.getBoolPref("browser.tabs.selectOwnerOnClose")
) { ) {
@@ -685,7 +687,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
let tab = this.tabContainer.findNextTab(aTab, { let tab = this.tabContainer.findNextTab(aTab, {
direction: 1, direction: 1,
filter: _tab => remainingTabs.includes(_tab), filter: _tab => remainingTabs.includes(_tab),
@@ -5766,7 +5940,7 @@ @@ -5885,7 +6059,7 @@
} }
if (tab) { if (tab) {
@@ -694,7 +696,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
} }
// If no qualifying visible tab was found, see if there is a tab in // If no qualifying visible tab was found, see if there is a tab in
@@ -5787,7 +5961,7 @@ @@ -5906,7 +6080,7 @@
}); });
} }
@@ -703,7 +705,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
} }
_blurTab(aTab) { _blurTab(aTab) {
@@ -5798,7 +5972,7 @@ @@ -5917,7 +6091,7 @@
* @returns {boolean} * @returns {boolean}
* False if swapping isn't permitted, true otherwise. * False if swapping isn't permitted, true otherwise.
*/ */
@@ -712,7 +714,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
// Do not allow transfering a private tab to a non-private window // Do not allow transfering a private tab to a non-private window
// and vice versa. // and vice versa.
if ( if (
@@ -5852,6 +6026,7 @@ @@ -5971,6 +6145,7 @@
// fire the beforeunload event in the process. Close the other // fire the beforeunload event in the process. Close the other
// window if this was its last tab. // window if this was its last tab.
if ( if (
@@ -720,7 +722,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
!remoteBrowser._beginRemoveTab(aOtherTab, { !remoteBrowser._beginRemoveTab(aOtherTab, {
adoptedByTab: aOurTab, adoptedByTab: aOurTab,
closeWindowWithLastTab: true, closeWindowWithLastTab: true,
@@ -5863,7 +6038,7 @@ @@ -5982,7 +6157,7 @@
// If this is the last tab of the window, hide the window // If this is the last tab of the window, hide the window
// immediately without animation before the docshell swap, to avoid // immediately without animation before the docshell swap, to avoid
// about:blank being painted. // about:blank being painted.
@@ -729,7 +731,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
if (closeWindow) { if (closeWindow) {
let win = aOtherTab.ownerGlobal; let win = aOtherTab.ownerGlobal;
win.windowUtils.suppressAnimation(true); win.windowUtils.suppressAnimation(true);
@@ -5987,11 +6162,13 @@ @@ -6110,11 +6285,13 @@
} }
// Finish tearing down the tab that's going away. // Finish tearing down the tab that's going away.
@@ -743,7 +745,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
this.setTabTitle(aOurTab); this.setTabTitle(aOurTab);
@@ -6193,10 +6370,10 @@ @@ -6316,10 +6493,10 @@
SessionStore.deleteCustomTabValue(aTab, "hiddenBy"); SessionStore.deleteCustomTabValue(aTab, "hiddenBy");
} }
@@ -756,7 +758,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
aTab.selected || aTab.selected ||
aTab.closing || aTab.closing ||
// Tabs that are sharing the screen, microphone or camera cannot be hidden. // Tabs that are sharing the screen, microphone or camera cannot be hidden.
@@ -6254,7 +6431,8 @@ @@ -6377,7 +6554,8 @@
* *
* @param {MozTabbrowserTab|MozTabbrowserTabGroup|MozTabbrowserTabGroup.labelElement} aTab * @param {MozTabbrowserTab|MozTabbrowserTabGroup|MozTabbrowserTabGroup.labelElement} aTab
*/ */
@@ -766,7 +768,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
if (this.tabs.length == 1) { if (this.tabs.length == 1) {
return null; return null;
} }
@@ -6278,12 +6456,14 @@ @@ -6401,12 +6579,14 @@
} }
// tell a new window to take the "dropped" tab // tell a new window to take the "dropped" tab
@@ -777,12 +779,12 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
options, options,
aTab aTab
); );
+ win._zenStartupSyncFlag = zenForceSync ? 'synced' : 'unsynced'; + win._zenStartupSyncFlag = (zenForceSync || !Services.prefs.getBoolPref("zen.tabs.dnd-open-blank-window", true)) ? 'synced' : 'unsynced';
+ return win; + return win;
} }
/** /**
@@ -6388,7 +6568,7 @@ @@ -6511,7 +6691,7 @@
* `true` if element is a `<tab-group>` * `true` if element is a `<tab-group>`
*/ */
isTabGroup(element) { isTabGroup(element) {
@@ -791,7 +793,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
} }
/** /**
@@ -6473,8 +6653,8 @@ @@ -6596,8 +6776,8 @@
} }
// Don't allow mixing pinned and unpinned tabs. // Don't allow mixing pinned and unpinned tabs.
@@ -802,7 +804,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
} else { } else {
tabIndex = Math.max(tabIndex, this.pinnedTabCount); tabIndex = Math.max(tabIndex, this.pinnedTabCount);
} }
@@ -6500,10 +6680,16 @@ @@ -6623,10 +6803,16 @@
this.#handleTabMove( this.#handleTabMove(
element, element,
() => { () => {
@@ -821,7 +823,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
if (neighbor && this.isTab(element) && tabIndex > element._tPos) { if (neighbor && this.isTab(element) && tabIndex > element._tPos) {
neighbor.after(element); neighbor.after(element);
} else { } else {
@@ -6561,23 +6747,31 @@ @@ -6684,23 +6870,31 @@
#moveTabNextTo(element, targetElement, moveBefore = false, metricsContext) { #moveTabNextTo(element, targetElement, moveBefore = false, metricsContext) {
if (this.isTabGroupLabel(targetElement)) { if (this.isTabGroupLabel(targetElement)) {
targetElement = targetElement.group; targetElement = targetElement.group;
@@ -859,7 +861,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
} else if (!element.pinned && targetElement && targetElement.pinned) { } else if (!element.pinned && targetElement && targetElement.pinned) {
// If the caller asks to move an unpinned element next to a pinned // If the caller asks to move an unpinned element next to a pinned
// tab, move the unpinned element to be the first unpinned element // tab, move the unpinned element to be the first unpinned element
@@ -6590,14 +6784,38 @@ @@ -6713,14 +6907,38 @@
// move the tab group right before the first unpinned tab. // move the tab group right before the first unpinned tab.
// 4. Moving a tab group and the first unpinned tab is grouped: // 4. Moving a tab group and the first unpinned tab is grouped:
// move the tab group right before the first unpinned tab's tab group. // move the tab group right before the first unpinned tab's tab group.
@@ -899,7 +901,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
element.pinned element.pinned
? this.tabContainer.pinnedTabsContainer ? this.tabContainer.pinnedTabsContainer
: this.tabContainer; : this.tabContainer;
@@ -6606,11 +6824,15 @@ @@ -6729,11 +6947,15 @@
element, element,
() => { () => {
if (moveBefore) { if (moveBefore) {
@@ -916,7 +918,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
} }
}, },
metricsContext metricsContext
@@ -6676,10 +6898,10 @@ @@ -6799,10 +7021,10 @@
* @param {TabMetricsContext} [metricsContext] * @param {TabMetricsContext} [metricsContext]
*/ */
moveTabToExistingGroup(aTab, aGroup, metricsContext) { moveTabToExistingGroup(aTab, aGroup, metricsContext) {
@@ -929,7 +931,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
return; return;
} }
if (aTab.group && aTab.group.id === aGroup.id) { if (aTab.group && aTab.group.id === aGroup.id) {
@@ -6751,6 +6973,7 @@ @@ -6874,6 +7096,7 @@
let state = { let state = {
tabIndex: tab._tPos, tabIndex: tab._tPos,
@@ -937,7 +939,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
}; };
if (tab.visible) { if (tab.visible) {
state.elementIndex = tab.elementIndex; state.elementIndex = tab.elementIndex;
@@ -6777,7 +7000,7 @@ @@ -6903,7 +7126,7 @@
let changedTabGroup = let changedTabGroup =
previousTabState.tabGroupId != currentTabState.tabGroupId; previousTabState.tabGroupId != currentTabState.tabGroupId;
@@ -946,7 +948,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
tab.dispatchEvent( tab.dispatchEvent(
new CustomEvent("TabMove", { new CustomEvent("TabMove", {
bubbles: true, bubbles: true,
@@ -6818,6 +7041,10 @@ @@ -6942,6 +7165,10 @@
moveActionCallback(); moveActionCallback();
@@ -957,16 +959,21 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
// Clear tabs cache after moving nodes because the order of tabs may have // Clear tabs cache after moving nodes because the order of tabs may have
// changed. // changed.
this.tabContainer._invalidateCachedTabs(); this.tabContainer._invalidateCachedTabs();
@@ -6869,6 +7096,18 @@ @@ -6992,7 +7219,22 @@
* @returns {object}
* The new tab in the current window, null if the tab couldn't be adopted. * The new tab in the current window, null if the tab couldn't be adopted.
*/ */
adoptTab(aTab, { elementIndex, tabIndex, selectTab = false } = {}) { - adoptTab(aTab, { elementIndex, tabIndex, selectTab = false } = {}) {
+ adoptTab(aTab, { elementIndex, tabIndex, selectTab = false, spaceId = null } = {}) {
+ if (window.gZenWorkspaces.currentWindowIsSyncing && aTab.ownerGlobal.gZenWorkspaces?.currentWindowIsSyncing) { + if (window.gZenWorkspaces.currentWindowIsSyncing && aTab.ownerGlobal.gZenWorkspaces?.currentWindowIsSyncing) {
+ const tabId = aTab.id; + const tabId = aTab.id;
+ const thisTab = window.gZenWindowSync.getItemFromWindow(window, tabId); + const thisTab = window.gZenWindowSync.getItemFromWindow(window, tabId);
+ if (thisTab) { + if (thisTab) {
+ // Just move the tab to the index + // Just move the tab to the index
+ this.moveTabTo(thisTab, { elementIndex, tabIndex }); + this.moveTabTo(thisTab, { elementIndex, tabIndex });
+ if (spaceId) {
+ thisTab.setAttribute("zen-workspace-id", spaceId);
+ }
+ if (selectTab) { + if (selectTab) {
+ this.selectedTab = thisTab; + this.selectedTab = thisTab;
+ } + }
@@ -976,16 +983,16 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
// Swap the dropped tab with a new one we create and then close // Swap the dropped tab with a new one we create and then close
// it in the other window (making it seem to have moved between // it in the other window (making it seem to have moved between
// windows). We also ensure that the tab we create to swap into has // windows). We also ensure that the tab we create to swap into has
@@ -6910,6 +7149,8 @@ @@ -7035,6 +7277,8 @@
params.userContextId = aTab.getAttribute("usercontextid");
} }
params.skipLoad = true;
let newTab = this.addWebTab("about:blank", params); let newTab = this.addWebTab("about:blank", params);
+ newTab._zenContentsVisible = true; + newTab._zenContentsVisible = true;
+ newTab.zenStaticLabel = aTab.zenStaticLabel; + newTab.zenStaticLabel = aTab.zenStaticLabel;
let newBrowser = this.getBrowserForTab(newTab);
aTab.container.tabDragAndDrop.finishAnimateTabMove(); aTab.container.tabDragAndDrop.finishAnimateTabMove();
@@ -7718,7 +7959,7 @@
@@ -7837,7 +8081,7 @@
// preventDefault(). It will still raise the window if appropriate. // preventDefault(). It will still raise the window if appropriate.
break; break;
} }
@@ -994,7 +1001,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
window.focus(); window.focus();
aEvent.preventDefault(); aEvent.preventDefault();
break; break;
@@ -7735,7 +7976,6 @@ @@ -7854,7 +8098,6 @@
} }
case "TabGroupCollapse": case "TabGroupCollapse":
aEvent.target.tabs.forEach(tab => { aEvent.target.tabs.forEach(tab => {
@@ -1002,7 +1009,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
}); });
break; break;
case "TabGroupCreateByUser": case "TabGroupCreateByUser":
@@ -7895,7 +8135,9 @@ @@ -8014,7 +8257,9 @@
let filter = this._tabFilters.get(tab); let filter = this._tabFilters.get(tab);
if (filter) { if (filter) {
@@ -1012,7 +1019,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
let listener = this._tabListeners.get(tab); let listener = this._tabListeners.get(tab);
if (listener) { if (listener) {
@@ -8698,6 +8940,7 @@ @@ -8817,6 +9062,7 @@
aWebProgress.isTopLevel aWebProgress.isTopLevel
) { ) {
this.mTab.setAttribute("busy", "true"); this.mTab.setAttribute("busy", "true");
@@ -1020,7 +1027,7 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
gBrowser._tabAttrModified(this.mTab, ["busy"]); gBrowser._tabAttrModified(this.mTab, ["busy"]);
this.mTab._notselectedsinceload = !this.mTab.selected; this.mTab._notselectedsinceload = !this.mTab.selected;
} }
@@ -8778,6 +9021,7 @@ @@ -8897,6 +9143,7 @@
// known defaults. Note we use the original URL since about:newtab // known defaults. Note we use the original URL since about:newtab
// redirects to a prerendered page. // redirects to a prerendered page.
const shouldRemoveFavicon = const shouldRemoveFavicon =
@@ -1028,7 +1035,21 @@ index 0eaca7a58e0026237b71b2ad515efe84d9e8c779..d21c461c4e05fa5b28bc0806b07f9256
!this.mBrowser.mIconURL && !this.mBrowser.mIconURL &&
!ignoreBlank && !ignoreBlank &&
!(originalLocation.spec in FAVICON_DEFAULTS); !(originalLocation.spec in FAVICON_DEFAULTS);
@@ -9803,7 +10047,7 @@ var TabContextMenu = { @@ -9071,13 +9318,6 @@
this.mBrowser.originalURI = aRequest.originalURI;
}
- if (!gBrowser._allowTransparentBrowser) {
- this.mBrowser.toggleAttribute(
- "transparent",
- AIWindow.isAIWindowActive(window) &&
- AIWindow.isAIWindowContentPage(aLocation)
- );
- }
}
let userContextId = this.mBrowser.getAttribute("usercontextid") || 0;
@@ -9941,7 +10181,7 @@ var TabContextMenu = {
); );
contextUnpinSelectedTabs.hidden = contextUnpinSelectedTabs.hidden =
!this.contextTab.pinned || !this.multiselected; !this.contextTab.pinned || !this.multiselected;

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/tabbrowser/content/tabgroup.js b/browser/components/tabbrowser/content/tabgroup.js diff --git a/browser/components/tabbrowser/content/tabgroup.js b/browser/components/tabbrowser/content/tabgroup.js
index 9abf115062e7c86196d7cb6b8ac82a9bb63b5a65..9a38d7dc10403c1ee721b6abf33d525a4aa1f821 100644 index ebcc072abca51ba9936d0e6d97bbd329427c0231..62e8209bbc38fb209340279e5ed3e2cc2441c48c 100644
--- a/browser/components/tabbrowser/content/tabgroup.js --- a/browser/components/tabbrowser/content/tabgroup.js
+++ b/browser/components/tabbrowser/content/tabgroup.js +++ b/browser/components/tabbrowser/content/tabgroup.js
@@ -14,11 +14,11 @@ @@ -14,11 +14,11 @@
@@ -201,7 +201,7 @@ index 9abf115062e7c86196d7cb6b8ac82a9bb63b5a65..9a38d7dc10403c1ee721b6abf33d525a
} }
/** /**
@@ -560,7 +640,6 @@ @@ -569,7 +649,6 @@
); );
} else { } else {
if (tabOrSplitView.pinned) { if (tabOrSplitView.pinned) {
@@ -209,7 +209,7 @@ index 9abf115062e7c86196d7cb6b8ac82a9bb63b5a65..9a38d7dc10403c1ee721b6abf33d525a
} }
let tabToMove = let tabToMove =
this.ownerGlobal === tabOrSplitView.ownerGlobal this.ownerGlobal === tabOrSplitView.ownerGlobal
@@ -625,7 +704,7 @@ @@ -634,7 +713,7 @@
*/ */
on_click(event) { on_click(event) {
let isToggleElement = let isToggleElement =
@@ -218,7 +218,7 @@ index 9abf115062e7c86196d7cb6b8ac82a9bb63b5a65..9a38d7dc10403c1ee721b6abf33d525a
event.target === this.#overflowCountLabel; event.target === this.#overflowCountLabel;
if (isToggleElement && event.button === 0) { if (isToggleElement && event.button === 0) {
event.preventDefault(); event.preventDefault();
@@ -696,5 +775,6 @@ @@ -705,5 +784,6 @@
} }
} }

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/tabbrowser/content/tabs.js b/browser/components/tabbrowser/content/tabs.js diff --git a/browser/components/tabbrowser/content/tabs.js b/browser/components/tabbrowser/content/tabs.js
index a61b4e7af40f1404bf3555a7011c6211de917635..69e3e360b3040dfcb4541bda57e88b0da1d59be3 100644 index 2760f6700056e2ae9b6a6fdad006c5b679a97233..9661404c030e6815ded926a6d91d4f24f4139f9e 100644
--- a/browser/components/tabbrowser/content/tabs.js --- a/browser/components/tabbrowser/content/tabs.js
+++ b/browser/components/tabbrowser/content/tabs.js +++ b/browser/components/tabbrowser/content/tabs.js
@@ -240,7 +240,7 @@ @@ -244,7 +244,7 @@
true true
) )
? new window.TabStacking(this) ? new window.TabStacking(this)
@@ -11,7 +11,7 @@ index a61b4e7af40f1404bf3555a7011c6211de917635..69e3e360b3040dfcb4541bda57e88b0d
this.tabDragAndDrop.init(); this.tabDragAndDrop.init();
} }
@@ -453,7 +453,7 @@ @@ -450,7 +450,7 @@
// and we're not hitting the scroll buttons. // and we're not hitting the scroll buttons.
if ( if (
event.button != 0 || event.button != 0 ||
@@ -20,7 +20,7 @@ index a61b4e7af40f1404bf3555a7011c6211de917635..69e3e360b3040dfcb4541bda57e88b0d
event.composedTarget.localName == "toolbarbutton" event.composedTarget.localName == "toolbarbutton"
) { ) {
return; return;
@@ -534,7 +534,6 @@ @@ -531,7 +531,6 @@
}); });
} }
} else if (isTabGroupLabel(event.target)) { } else if (isTabGroupLabel(event.target)) {
@@ -28,7 +28,7 @@ index a61b4e7af40f1404bf3555a7011c6211de917635..69e3e360b3040dfcb4541bda57e88b0d
} else if ( } else if (
event.originalTarget.closest("scrollbox") && event.originalTarget.closest("scrollbox") &&
!Services.prefs.getBoolPref( !Services.prefs.getBoolPref(
@@ -570,6 +569,9 @@ @@ -567,6 +566,9 @@
} }
on_keydown(event) { on_keydown(event) {
@@ -38,7 +38,7 @@ index a61b4e7af40f1404bf3555a7011c6211de917635..69e3e360b3040dfcb4541bda57e88b0d
let { altKey, shiftKey } = event; let { altKey, shiftKey } = event;
let [accel, nonAccel] = let [accel, nonAccel] =
AppConstants.platform == "macosx" AppConstants.platform == "macosx"
@@ -764,7 +766,6 @@ @@ -761,7 +763,6 @@
this._updateCloseButtons(); this._updateCloseButtons();
if (!this.#animatingGroups.size) { if (!this.#animatingGroups.size) {
@@ -46,7 +46,7 @@ index a61b4e7af40f1404bf3555a7011c6211de917635..69e3e360b3040dfcb4541bda57e88b0d
} }
document document
@@ -825,7 +826,7 @@ @@ -822,7 +823,7 @@
} }
get newTabButton() { get newTabButton() {
@@ -55,7 +55,7 @@ index a61b4e7af40f1404bf3555a7011c6211de917635..69e3e360b3040dfcb4541bda57e88b0d
} }
get verticalMode() { get verticalMode() {
@@ -841,6 +842,7 @@ @@ -838,6 +839,7 @@
} }
get overflowing() { get overflowing() {
@@ -63,7 +63,7 @@ index a61b4e7af40f1404bf3555a7011c6211de917635..69e3e360b3040dfcb4541bda57e88b0d
return this.hasAttribute("overflow"); return this.hasAttribute("overflow");
} }
@@ -854,29 +856,56 @@ @@ -851,29 +853,56 @@
if (pinnedChildren?.at(-1)?.id == "pinned-tabs-container-periphery") { if (pinnedChildren?.at(-1)?.id == "pinned-tabs-container-periphery") {
pinnedChildren.pop(); pinnedChildren.pop();
} }
@@ -130,7 +130,7 @@ index a61b4e7af40f1404bf3555a7011c6211de917635..69e3e360b3040dfcb4541bda57e88b0d
} }
/** /**
@@ -944,29 +973,28 @@ @@ -941,29 +970,28 @@
return this.#focusableItems; return this.#focusableItems;
} }
@@ -170,7 +170,7 @@ index a61b4e7af40f1404bf3555a7011c6211de917635..69e3e360b3040dfcb4541bda57e88b0d
this.#focusableItems = focusableItems; this.#focusableItems = focusableItems;
return this.#focusableItems; return this.#focusableItems;
@@ -979,6 +1007,7 @@ @@ -976,6 +1004,7 @@
* focusable (ex, we don't want the splitview container to be focusable, only its children). * focusable (ex, we don't want the splitview container to be focusable, only its children).
*/ */
get dragAndDropElements() { get dragAndDropElements() {
@@ -178,7 +178,7 @@ index a61b4e7af40f1404bf3555a7011c6211de917635..69e3e360b3040dfcb4541bda57e88b0d
if (this.#dragAndDropElements) { if (this.#dragAndDropElements) {
return this.#dragAndDropElements; return this.#dragAndDropElements;
} }
@@ -1050,6 +1079,7 @@ @@ -1046,6 +1075,7 @@
_invalidateCachedTabs() { _invalidateCachedTabs() {
this.#allTabs = null; this.#allTabs = null;
this._invalidateCachedVisibleTabs(); this._invalidateCachedVisibleTabs();
@@ -186,7 +186,17 @@ index a61b4e7af40f1404bf3555a7011c6211de917635..69e3e360b3040dfcb4541bda57e88b0d
} }
_invalidateCachedVisibleTabs() { _invalidateCachedVisibleTabs() {
@@ -1154,7 +1184,7 @@ @@ -1065,7 +1095,8 @@
isContainerVerticalPinnedGrid(tab) {
return (
- tab.pinned &&
+ tab.hasAttribute("zen-essential") &&
+ (this._tabbrowserTabs.hasAttribute("expanded") || document.documentElement.hasAttribute("zen-sidebar-expanded")) &&
this.verticalMode &&
this.hasAttribute("expanded") &&
!this.expandOnHover
@@ -1159,7 +1190,7 @@
if (node == null) { if (node == null) {
// We have a container for non-tab elements at the end of the scrollbox. // We have a container for non-tab elements at the end of the scrollbox.
@@ -195,7 +205,7 @@ index a61b4e7af40f1404bf3555a7011c6211de917635..69e3e360b3040dfcb4541bda57e88b0d
} }
node.before(tab); node.before(tab);
@@ -1252,7 +1282,7 @@ @@ -1257,7 +1288,7 @@
// There are separate "new tab" buttons for horizontal tabs toolbar, vertical tabs and // There are separate "new tab" buttons for horizontal tabs toolbar, vertical tabs and
// for when the tab strip is overflowed (which is shared by vertical and horizontal tabs); // for when the tab strip is overflowed (which is shared by vertical and horizontal tabs);
// Attach the long click popup to all of them. // Attach the long click popup to all of them.
@@ -204,7 +214,7 @@ index a61b4e7af40f1404bf3555a7011c6211de917635..69e3e360b3040dfcb4541bda57e88b0d
const newTab2 = this.newTabButton; const newTab2 = this.newTabButton;
const newTabVertical = document.getElementById( const newTabVertical = document.getElementById(
"vertical-tabs-newtab-button" "vertical-tabs-newtab-button"
@@ -1353,8 +1383,10 @@ @@ -1358,8 +1389,10 @@
*/ */
_handleTabSelect(aInstant) { _handleTabSelect(aInstant) {
let selectedTab = this.selectedItem; let selectedTab = this.selectedItem;
@@ -215,7 +225,7 @@ index a61b4e7af40f1404bf3555a7011c6211de917635..69e3e360b3040dfcb4541bda57e88b0d
selectedTab._notselectedsinceload = false; selectedTab._notselectedsinceload = false;
} }
@@ -1363,7 +1395,7 @@ @@ -1368,7 +1401,7 @@
* @param {boolean} [shouldScrollInstantly=false] * @param {boolean} [shouldScrollInstantly=false]
*/ */
#ensureTabIsVisible(tab, shouldScrollInstantly = false) { #ensureTabIsVisible(tab, shouldScrollInstantly = false) {
@@ -224,7 +234,7 @@ index a61b4e7af40f1404bf3555a7011c6211de917635..69e3e360b3040dfcb4541bda57e88b0d
if (arrowScrollbox?.overflowing) { if (arrowScrollbox?.overflowing) {
arrowScrollbox.ensureElementIsVisible(tab, shouldScrollInstantly); arrowScrollbox.ensureElementIsVisible(tab, shouldScrollInstantly);
} }
@@ -1496,7 +1528,7 @@ @@ -1501,7 +1534,7 @@
} }
_notifyBackgroundTab(aTab) { _notifyBackgroundTab(aTab) {

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/urlbar/UrlbarController.sys.mjs b/browser/components/urlbar/UrlbarController.sys.mjs diff --git a/browser/components/urlbar/UrlbarController.sys.mjs b/browser/components/urlbar/UrlbarController.sys.mjs
index dc8ca021feff9e5c623dd2e9b3e3a8d6f55aa461..b6382bdcfef0cf6c2975fdb6f1a3c9b5c53f81af 100644 index 2dff3603fda9d70d875367fc2b9a05ea5f8eb8c9..0ed283c65f69f00236957aefcb608209e35a3f7c 100644
--- a/browser/components/urlbar/UrlbarController.sys.mjs --- a/browser/components/urlbar/UrlbarController.sys.mjs
+++ b/browser/components/urlbar/UrlbarController.sys.mjs +++ b/browser/components/urlbar/UrlbarController.sys.mjs
@@ -302,7 +302,6 @@ export class UrlbarController { @@ -302,7 +302,6 @@ export class UrlbarController {

View File

@@ -1,8 +1,17 @@
diff --git a/browser/components/urlbar/UrlbarMuxerStandard.sys.mjs b/browser/components/urlbar/UrlbarMuxerStandard.sys.mjs diff --git a/browser/components/urlbar/UrlbarMuxerStandard.sys.mjs b/browser/components/urlbar/UrlbarMuxerStandard.sys.mjs
index c12d875172650dddfe7de623a776149517c83302..66e923ed2c84e350dd7ba7a20e362666cec8f307 100644 index 000a00f3e56c2f1d3bf4eec8c4924228de1cb418..f91f8cf38f0ba9c403bc284a7cdaaee17435b258 100644
--- a/browser/components/urlbar/UrlbarMuxerStandard.sys.mjs --- a/browser/components/urlbar/UrlbarMuxerStandard.sys.mjs
+++ b/browser/components/urlbar/UrlbarMuxerStandard.sys.mjs +++ b/browser/components/urlbar/UrlbarMuxerStandard.sys.mjs
@@ -854,6 +854,7 @@ class MuxerUnifiedComplete extends UrlbarMuxer { @@ -839,11 +839,16 @@ class MuxerUnifiedComplete extends UrlbarMuxer {
result.providerName == "UrlbarProviderHeuristicFallback" &&
state.context.heuristicResult?.providerName !=
"UrlbarProviderHeuristicFallback"
+ && !(
+ result.type == UrlbarUtils.RESULT_TYPE.SEARCH &&
+ state.context.heuristicResult?.type == UrlbarUtils.RESULT_TYPE.URL
+ )
) {
return false;
} }
if (result.providerName == "UrlbarProviderTabToSearch") { if (result.providerName == "UrlbarProviderTabToSearch") {
@@ -10,7 +19,7 @@ index c12d875172650dddfe7de623a776149517c83302..66e923ed2c84e350dd7ba7a20e362666
// Discard the result if a tab-to-search result was added already. // Discard the result if a tab-to-search result was added already.
if (!state.canAddTabToSearch) { if (!state.canAddTabToSearch) {
return false; return false;
@@ -1500,7 +1501,9 @@ class MuxerUnifiedComplete extends UrlbarMuxer { @@ -1490,7 +1495,9 @@ class MuxerUnifiedComplete extends UrlbarMuxer {
usedLimits.maxResultCount++; usedLimits.maxResultCount++;
} }

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/urlbar/UrlbarPrefs.sys.mjs b/browser/components/urlbar/UrlbarPrefs.sys.mjs diff --git a/browser/components/urlbar/UrlbarPrefs.sys.mjs b/browser/components/urlbar/UrlbarPrefs.sys.mjs
index 41e8aa0ee37fef0d24d41f2c4e776c39ed3895f6..293e993175bbbd67fa1541db6b9419b687de7fcd 100644 index e09c9b6007c29ea31005a69cf458ce502b0df361..5846f943c03b2b36a36c1e4a8dbbd9a80ff10fe0 100644
--- a/browser/components/urlbar/UrlbarPrefs.sys.mjs --- a/browser/components/urlbar/UrlbarPrefs.sys.mjs
+++ b/browser/components/urlbar/UrlbarPrefs.sys.mjs +++ b/browser/components/urlbar/UrlbarPrefs.sys.mjs
@@ -759,6 +759,7 @@ function makeResultGroups({ showSearchSuggestionsFirst }) { @@ -760,6 +760,7 @@ function makeDefaultResultGroups({ showSearchSuggestionsFirst }) {
*/ */
let rootGroup = { let rootGroup = {
children: [ children: [

View File

@@ -0,0 +1,42 @@
diff --git a/browser/components/urlbar/UrlbarProviderHeuristicFallback.sys.mjs b/browser/components/urlbar/UrlbarProviderHeuristicFallback.sys.mjs
index 1e159d12ffdc39be87046689b05022813ea925ac..cba7168eeffa54d2c576982927f096b21e039c83 100644
--- a/browser/components/urlbar/UrlbarProviderHeuristicFallback.sys.mjs
+++ b/browser/components/urlbar/UrlbarProviderHeuristicFallback.sys.mjs
@@ -77,22 +77,26 @@ export class UrlbarProviderHeuristicFallback extends UrlbarProvider {
// Since we can't tell if this is a real URL and whether the user wants
// to visit or search for it, we provide an alternative searchengine
// match if the string looks like an alphanumeric origin or an e-mail.
- let str = queryContext.searchString;
- if (!URL.canParse(str)) {
- if (
- lazy.UrlbarPrefs.get("keyword.enabled") &&
- (lazy.UrlUtils.looksLikeOrigin(str, {
- noIp: true,
- noPort: true,
- }) ||
- lazy.UrlUtils.REGEXP_COMMON_EMAIL.test(str))
- ) {
+ let trimmedSearchString = queryContext.trimmedSearchString;
+ let [searchCandidate] = UrlbarUtils.stripPrefixAndTrim(
+ trimmedSearchString,
+ {
+ trimSlash: true,
+ }
+ );
+ if (
+ lazy.UrlbarPrefs.get("keyword.enabled") &&
+ (lazy.UrlUtils.looksLikeUrl(searchCandidate) ||
+ lazy.UrlUtils.looksLikeOrigin(searchCandidate, {
+ allowPartialNumericalTLDs: true,
+ }) !== lazy.UrlUtils.LOOKS_LIKE_ORIGIN.NONE ||
+ lazy.UrlUtils.REGEXP_COMMON_EMAIL.test(trimmedSearchString))
+ ) {
let searchResult = await this._engineSearchResult({ queryContext });
if (instance != this.queryInstance) {
return;
}
addCallback(this, searchResult);
- }
}
return;
}

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/urlbar/UrlbarResult.sys.mjs b/browser/components/urlbar/UrlbarResult.sys.mjs diff --git a/browser/components/urlbar/UrlbarResult.sys.mjs b/browser/components/urlbar/UrlbarResult.sys.mjs
index 99f331b2c6e4f8eda1bda02cbc6bc6d3f9f4a572..d504632a3f689aefb7d22b863649cb1a8bb3c6a4 100644 index e6eccc010ed3b4595c0aabb1e7d528b20ce1be9b..b71466ebfad0edecb8d7b78ffbe20a95cd69df98 100644
--- a/browser/components/urlbar/UrlbarResult.sys.mjs --- a/browser/components/urlbar/UrlbarResult.sys.mjs
+++ b/browser/components/urlbar/UrlbarResult.sys.mjs +++ b/browser/components/urlbar/UrlbarResult.sys.mjs
@@ -179,6 +179,10 @@ export class UrlbarResult { @@ -178,6 +178,10 @@ export class UrlbarResult {
return this.#heuristic; return this.#heuristic;
} }

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/urlbar/UrlbarUtils.sys.mjs b/browser/components/urlbar/UrlbarUtils.sys.mjs diff --git a/browser/components/urlbar/UrlbarUtils.sys.mjs b/browser/components/urlbar/UrlbarUtils.sys.mjs
index b97fa81cef276e4bb22414b7c182e00b4bb835dc..1f489eceead0aa331ace59281cb777db5e635366 100644 index caceb63a04fe282d7c906e27a6a2cfebc1ec8cda..74e395e649dd2cbe84683cb583d641b5596082d4 100644
--- a/browser/components/urlbar/UrlbarUtils.sys.mjs --- a/browser/components/urlbar/UrlbarUtils.sys.mjs
+++ b/browser/components/urlbar/UrlbarUtils.sys.mjs +++ b/browser/components/urlbar/UrlbarUtils.sys.mjs
@@ -81,6 +81,7 @@ export var UrlbarUtils = { @@ -81,6 +81,7 @@ export var UrlbarUtils = {
@@ -18,7 +18,7 @@ index b97fa81cef276e4bb22414b7c182e00b4bb835dc..1f489eceead0aa331ace59281cb777db
}), }),
// Per-result exposure telemetry. // Per-result exposure telemetry.
@@ -552,6 +554,8 @@ export var UrlbarUtils = { @@ -561,6 +563,8 @@ export var UrlbarUtils = {
return this.RESULT_GROUP.HEURISTIC_FALLBACK; return this.RESULT_GROUP.HEURISTIC_FALLBACK;
case "UrlbarProviderHistoryUrlHeuristic": case "UrlbarProviderHistoryUrlHeuristic":
return this.RESULT_GROUP.HEURISTIC_HISTORY_URL; return this.RESULT_GROUP.HEURISTIC_HISTORY_URL;

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/urlbar/UrlbarView.sys.mjs b/browser/components/urlbar/UrlbarView.sys.mjs diff --git a/browser/components/urlbar/UrlbarView.sys.mjs b/browser/components/urlbar/UrlbarView.sys.mjs
index 6d6cc27e203a5799683a4e6eae1007ff30a69cd0..953c5cd09bcfd832d8ad11016977509f55935eb7 100644 index cba492223601a8aa4656d9dc60a09faeda9f2313..a40bd5d46912389ef7208c4c7b481027444400fd 100644
--- a/browser/components/urlbar/UrlbarView.sys.mjs --- a/browser/components/urlbar/UrlbarView.sys.mjs
+++ b/browser/components/urlbar/UrlbarView.sys.mjs +++ b/browser/components/urlbar/UrlbarView.sys.mjs
@@ -618,7 +618,7 @@ export class UrlbarView { @@ -618,7 +618,7 @@ export class UrlbarView {
@@ -11,7 +11,7 @@ index 6d6cc27e203a5799683a4e6eae1007ff30a69cd0..953c5cd09bcfd832d8ad11016977509f
// Try to reuse the cached top-sites context. If it's not cached, then // Try to reuse the cached top-sites context. If it's not cached, then
// there will be a gap of time between when the input is focused and // there will be a gap of time between when the input is focused and
// when the view opens that can be perceived as flicker. // when the view opens that can be perceived as flicker.
@@ -2852,6 +2852,8 @@ export class UrlbarView { @@ -2871,6 +2871,8 @@ export class UrlbarView {
if (row?.hasAttribute("row-selectable")) { if (row?.hasAttribute("row-selectable")) {
row?.toggleAttribute("selected", true); row?.toggleAttribute("selected", true);
} }
@@ -20,7 +20,7 @@ index 6d6cc27e203a5799683a4e6eae1007ff30a69cd0..953c5cd09bcfd832d8ad11016977509f
if (element != row) { if (element != row) {
row?.toggleAttribute("descendant-selected", true); row?.toggleAttribute("descendant-selected", true);
} }
@@ -3336,7 +3338,7 @@ export class UrlbarView { @@ -3359,7 +3361,7 @@ export class UrlbarView {
} }
#enableOrDisableRowWrap() { #enableOrDisableRowWrap() {

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/urlbar/content/UrlbarInput.mjs b/browser/components/urlbar/content/UrlbarInput.mjs diff --git a/browser/components/urlbar/content/UrlbarInput.mjs b/browser/components/urlbar/content/UrlbarInput.mjs
index edb0482f0bfb22c70a585b0770e5b0437983779e..545f65db4fe8b807b388d5552842cd9e56a72eb3 100644 index 2e6e2be9d7e28c3f189131ec19a26d552d13af99..101b5a3a70c24f28a755f2ca6630a6bc6b01181b 100644
--- a/browser/components/urlbar/content/UrlbarInput.mjs --- a/browser/components/urlbar/content/UrlbarInput.mjs
+++ b/browser/components/urlbar/content/UrlbarInput.mjs +++ b/browser/components/urlbar/content/UrlbarInput.mjs
@@ -68,6 +68,13 @@ const lazy = XPCOMUtils.declareLazy({ @@ -68,6 +68,13 @@ const lazy = XPCOMUtils.declareLazy({
@@ -16,7 +16,7 @@ index edb0482f0bfb22c70a585b0770e5b0437983779e..545f65db4fe8b807b388d5552842cd9e
const UNLIMITED_MAX_RESULTS = 99; const UNLIMITED_MAX_RESULTS = 99;
let getBoundsWithoutFlushing = element => let getBoundsWithoutFlushing = element =>
@@ -630,7 +637,16 @@ export class UrlbarInput extends HTMLElement { @@ -649,7 +656,16 @@ export class UrlbarInput extends HTMLElement {
// See _on_select(). HTMLInputElement.select() dispatches a "select" // See _on_select(). HTMLInputElement.select() dispatches a "select"
// event but does not set the primary selection. // event but does not set the primary selection.
this._suppressPrimaryAdjustment = true; this._suppressPrimaryAdjustment = true;
@@ -33,7 +33,7 @@ index edb0482f0bfb22c70a585b0770e5b0437983779e..545f65db4fe8b807b388d5552842cd9e
this._suppressPrimaryAdjustment = false; this._suppressPrimaryAdjustment = false;
} }
@@ -704,6 +720,10 @@ export class UrlbarInput extends HTMLElement { @@ -723,6 +739,10 @@ export class UrlbarInput extends HTMLElement {
hideSearchTerms = false, hideSearchTerms = false,
isSameDocument = false, isSameDocument = false,
} = {}) { } = {}) {
@@ -44,7 +44,7 @@ index edb0482f0bfb22c70a585b0770e5b0437983779e..545f65db4fe8b807b388d5552842cd9e
if (!this.#isAddressbar) { if (!this.#isAddressbar) {
throw new Error( throw new Error(
"Cannot set URI for UrlbarInput that is not an address bar" "Cannot set URI for UrlbarInput that is not an address bar"
@@ -985,8 +1005,16 @@ export class UrlbarInput extends HTMLElement { @@ -1012,8 +1032,16 @@ export class UrlbarInput extends HTMLElement {
return; return;
} }
} }
@@ -62,7 +62,7 @@ index edb0482f0bfb22c70a585b0770e5b0437983779e..545f65db4fe8b807b388d5552842cd9e
} }
/** /**
@@ -1405,7 +1433,11 @@ export class UrlbarInput extends HTMLElement { @@ -1432,7 +1460,11 @@ export class UrlbarInput extends HTMLElement {
} }
if (!this.#providesSearchMode(result)) { if (!this.#providesSearchMode(result)) {
@@ -75,7 +75,7 @@ index edb0482f0bfb22c70a585b0770e5b0437983779e..545f65db4fe8b807b388d5552842cd9e
} }
if (isCanonized) { if (isCanonized) {
@@ -2529,6 +2561,32 @@ export class UrlbarInput extends HTMLElement { @@ -2598,6 +2630,32 @@ export class UrlbarInput extends HTMLElement {
await this.#updateLayoutBreakoutDimensions(); await this.#updateLayoutBreakoutDimensions();
} }
@@ -108,7 +108,7 @@ index edb0482f0bfb22c70a585b0770e5b0437983779e..545f65db4fe8b807b388d5552842cd9e
startLayoutExtend() { startLayoutExtend() {
if (!this.#allowBreakout || this.hasAttribute("breakout-extend")) { if (!this.#allowBreakout || this.hasAttribute("breakout-extend")) {
// Do not expand if the Urlbar does not support being expanded or it is // Do not expand if the Urlbar does not support being expanded or it is
@@ -2543,6 +2601,13 @@ export class UrlbarInput extends HTMLElement { @@ -2612,6 +2670,13 @@ export class UrlbarInput extends HTMLElement {
this.setAttribute("breakout-extend", "true"); this.setAttribute("breakout-extend", "true");
@@ -122,14 +122,17 @@ index edb0482f0bfb22c70a585b0770e5b0437983779e..545f65db4fe8b807b388d5552842cd9e
// Enable the animation only after the first extend call to ensure it // Enable the animation only after the first extend call to ensure it
// doesn't run when opening a new window. // doesn't run when opening a new window.
if (!this.hasAttribute("breakout-extend-animate")) { if (!this.hasAttribute("breakout-extend-animate")) {
@@ -2562,6 +2627,24 @@ export class UrlbarInput extends HTMLElement { @@ -2631,6 +2696,27 @@ export class UrlbarInput extends HTMLElement {
return; return;
} }
+ if (this._zenHandleUrlbarClose) { + if (this._zenHandleUrlbarClose) {
+ this._zenHandleUrlbarClose(); + this._zenHandleUrlbarClose();
+ } else if (!this._untrimmedValue || this.searchMode) {
+ // Restore the current page URL when the urlbar is empty on blur
+ this.handleRevert();
+ } + }
+ +
+ // Arc like URLbar: Blur the input on exit + // Arc like URLbar: Blur the input on exit
+ const zenToolbox = this.document.getElementById("navigator-toolbox"); + const zenToolbox = this.document.getElementById("navigator-toolbox");
+ this.window.document.documentElement.setAttribute("supress-primary-adjustment", !( + this.window.document.documentElement.setAttribute("supress-primary-adjustment", !(
@@ -147,7 +150,7 @@ index edb0482f0bfb22c70a585b0770e5b0437983779e..545f65db4fe8b807b388d5552842cd9e
this.removeAttribute("breakout-extend"); this.removeAttribute("breakout-extend");
this.#updateTextboxPosition(); this.#updateTextboxPosition();
} }
@@ -2592,7 +2675,7 @@ export class UrlbarInput extends HTMLElement { @@ -2661,7 +2747,7 @@ export class UrlbarInput extends HTMLElement {
forceUnifiedSearchButtonAvailable = false forceUnifiedSearchButtonAvailable = false
) { ) {
let prevState = this.getAttribute("pageproxystate"); let prevState = this.getAttribute("pageproxystate");
@@ -156,7 +159,7 @@ index edb0482f0bfb22c70a585b0770e5b0437983779e..545f65db4fe8b807b388d5552842cd9e
this.setAttribute("pageproxystate", state); this.setAttribute("pageproxystate", state);
this._inputContainer.setAttribute("pageproxystate", state); this._inputContainer.setAttribute("pageproxystate", state);
this._identityBox?.setAttribute("pageproxystate", state); this._identityBox?.setAttribute("pageproxystate", state);
@@ -2846,10 +2929,12 @@ export class UrlbarInput extends HTMLElement { @@ -2915,10 +3001,12 @@ export class UrlbarInput extends HTMLElement {
return; return;
} }
this.style.top = px( this.style.top = px(
@@ -169,7 +172,7 @@ index edb0482f0bfb22c70a585b0770e5b0437983779e..545f65db4fe8b807b388d5552842cd9e
); );
} }
@@ -2908,9 +2993,10 @@ export class UrlbarInput extends HTMLElement { @@ -2977,9 +3065,10 @@ export class UrlbarInput extends HTMLElement {
return; return;
} }
@@ -181,7 +184,7 @@ index edb0482f0bfb22c70a585b0770e5b0437983779e..545f65db4fe8b807b388d5552842cd9e
); );
this.style.setProperty( this.style.setProperty(
"--urlbar-height", "--urlbar-height",
@@ -3344,6 +3430,7 @@ export class UrlbarInput extends HTMLElement { @@ -3413,6 +3502,7 @@ export class UrlbarInput extends HTMLElement {
} }
_toggleActionOverride(event) { _toggleActionOverride(event) {
@@ -189,7 +192,7 @@ index edb0482f0bfb22c70a585b0770e5b0437983779e..545f65db4fe8b807b388d5552842cd9e
if ( if (
event.keyCode == KeyEvent.DOM_VK_SHIFT || event.keyCode == KeyEvent.DOM_VK_SHIFT ||
event.keyCode == KeyEvent.DOM_VK_ALT || event.keyCode == KeyEvent.DOM_VK_ALT ||
@@ -3447,8 +3534,8 @@ export class UrlbarInput extends HTMLElement { @@ -3516,8 +3606,8 @@ export class UrlbarInput extends HTMLElement {
if (!this.#isAddressbar) { if (!this.#isAddressbar) {
return val; return val;
} }
@@ -200,7 +203,7 @@ index edb0482f0bfb22c70a585b0770e5b0437983779e..545f65db4fe8b807b388d5552842cd9e
: val; : val;
// Only trim value if the directionality doesn't change to RTL and we're not // Only trim value if the directionality doesn't change to RTL and we're not
// showing a strikeout https protocol. // showing a strikeout https protocol.
@@ -3754,6 +3841,7 @@ export class UrlbarInput extends HTMLElement { @@ -3824,6 +3914,7 @@ export class UrlbarInput extends HTMLElement {
resultDetails = null, resultDetails = null,
browser = this.window.gBrowser.selectedBrowser browser = this.window.gBrowser.selectedBrowser
) { ) {
@@ -208,7 +211,7 @@ index edb0482f0bfb22c70a585b0770e5b0437983779e..545f65db4fe8b807b388d5552842cd9e
if (this.#isAddressbar) { if (this.#isAddressbar) {
this.#prepareAddressbarLoad( this.#prepareAddressbarLoad(
url, url,
@@ -3861,6 +3949,10 @@ export class UrlbarInput extends HTMLElement { @@ -3935,6 +4026,10 @@ export class UrlbarInput extends HTMLElement {
} }
reuseEmpty = true; reuseEmpty = true;
} }
@@ -219,7 +222,7 @@ index edb0482f0bfb22c70a585b0770e5b0437983779e..545f65db4fe8b807b388d5552842cd9e
if ( if (
where == "tab" && where == "tab" &&
reuseEmpty && reuseEmpty &&
@@ -3868,6 +3960,9 @@ export class UrlbarInput extends HTMLElement { @@ -3942,6 +4037,9 @@ export class UrlbarInput extends HTMLElement {
) { ) {
where = "current"; where = "current";
} }
@@ -229,7 +232,7 @@ index edb0482f0bfb22c70a585b0770e5b0437983779e..545f65db4fe8b807b388d5552842cd9e
return where; return where;
} }
@@ -4122,6 +4217,7 @@ export class UrlbarInput extends HTMLElement { @@ -4196,6 +4294,7 @@ export class UrlbarInput extends HTMLElement {
this.setResultForCurrentValue(null); this.setResultForCurrentValue(null);
this.handleCommand(); this.handleCommand();
this.controller.clearLastQueryContextCache(); this.controller.clearLastQueryContextCache();
@@ -237,7 +240,7 @@ index edb0482f0bfb22c70a585b0770e5b0437983779e..545f65db4fe8b807b388d5552842cd9e
this._suppressStartQuery = false; this._suppressStartQuery = false;
}); });
@@ -4129,7 +4225,6 @@ export class UrlbarInput extends HTMLElement { @@ -4203,7 +4302,6 @@ export class UrlbarInput extends HTMLElement {
contextMenu.addEventListener("popupshowing", () => { contextMenu.addEventListener("popupshowing", () => {
// Close the results pane when the input field contextual menu is open, // Close the results pane when the input field contextual menu is open,
// because paste and go doesn't want a result selection. // because paste and go doesn't want a result selection.
@@ -245,7 +248,7 @@ index edb0482f0bfb22c70a585b0770e5b0437983779e..545f65db4fe8b807b388d5552842cd9e
let controller = let controller =
this.document.commandDispatcher.getControllerForCommand("cmd_paste"); this.document.commandDispatcher.getControllerForCommand("cmd_paste");
@@ -4239,7 +4334,11 @@ export class UrlbarInput extends HTMLElement { @@ -4319,7 +4417,11 @@ export class UrlbarInput extends HTMLElement {
if (!engineName && !source && !this.hasAttribute("searchmode")) { if (!engineName && !source && !this.hasAttribute("searchmode")) {
return; return;
} }
@@ -258,7 +261,7 @@ index edb0482f0bfb22c70a585b0770e5b0437983779e..545f65db4fe8b807b388d5552842cd9e
if (this._searchModeIndicatorTitle) { if (this._searchModeIndicatorTitle) {
this._searchModeIndicatorTitle.textContent = ""; this._searchModeIndicatorTitle.textContent = "";
this._searchModeIndicatorTitle.removeAttribute("data-l10n-id"); this._searchModeIndicatorTitle.removeAttribute("data-l10n-id");
@@ -4549,6 +4648,7 @@ export class UrlbarInput extends HTMLElement { @@ -4629,6 +4731,7 @@ export class UrlbarInput extends HTMLElement {
this.document.l10n.setAttributes( this.document.l10n.setAttributes(
this.inputField, this.inputField,
@@ -266,7 +269,7 @@ index edb0482f0bfb22c70a585b0770e5b0437983779e..545f65db4fe8b807b388d5552842cd9e
l10nId, l10nId,
l10nId == "urlbar-placeholder-with-name" l10nId == "urlbar-placeholder-with-name"
? { name: engineName } ? { name: engineName }
@@ -4662,6 +4762,11 @@ export class UrlbarInput extends HTMLElement { @@ -4742,6 +4845,11 @@ export class UrlbarInput extends HTMLElement {
} }
_on_click(event) { _on_click(event) {
@@ -278,7 +281,7 @@ index edb0482f0bfb22c70a585b0770e5b0437983779e..545f65db4fe8b807b388d5552842cd9e
switch (event.target) { switch (event.target) {
case this.inputField: case this.inputField:
case this._inputContainer: case this._inputContainer:
@@ -4740,7 +4845,7 @@ export class UrlbarInput extends HTMLElement { @@ -4820,7 +4928,7 @@ export class UrlbarInput extends HTMLElement {
} }
} }
@@ -287,7 +290,7 @@ index edb0482f0bfb22c70a585b0770e5b0437983779e..545f65db4fe8b807b388d5552842cd9e
this.view.autoOpen({ event }); this.view.autoOpen({ event });
} else { } else {
if (this._untrimOnFocusAfterKeydown) { if (this._untrimOnFocusAfterKeydown) {
@@ -4780,9 +4885,16 @@ export class UrlbarInput extends HTMLElement { @@ -4860,9 +4968,16 @@ export class UrlbarInput extends HTMLElement {
} }
_on_mousedown(event) { _on_mousedown(event) {
@@ -305,7 +308,7 @@ index edb0482f0bfb22c70a585b0770e5b0437983779e..545f65db4fe8b807b388d5552842cd9e
if ( if (
event.composedTarget != this.inputField && event.composedTarget != this.inputField &&
event.composedTarget != this._inputContainer event.composedTarget != this._inputContainer
@@ -4792,6 +4904,10 @@ export class UrlbarInput extends HTMLElement { @@ -4872,6 +4987,10 @@ export class UrlbarInput extends HTMLElement {
this.focusedViaMousedown = !this.focused; this.focusedViaMousedown = !this.focused;
this._preventClickSelectsAll = this.focused; this._preventClickSelectsAll = this.focused;
@@ -316,7 +319,7 @@ index edb0482f0bfb22c70a585b0770e5b0437983779e..545f65db4fe8b807b388d5552842cd9e
// Keep the focus status, since the attribute may be changed // Keep the focus status, since the attribute may be changed
// upon calling this.focus(). // upon calling this.focus().
@@ -4827,7 +4943,7 @@ export class UrlbarInput extends HTMLElement { @@ -4907,7 +5026,7 @@ export class UrlbarInput extends HTMLElement {
} }
// Don't close the view when clicking on a tab; we may want to keep the // Don't close the view when clicking on a tab; we may want to keep the
// view open on tab switch, and the TabSelect event arrived earlier. // view open on tab switch, and the TabSelect event arrived earlier.
@@ -325,7 +328,7 @@ index edb0482f0bfb22c70a585b0770e5b0437983779e..545f65db4fe8b807b388d5552842cd9e
break; break;
} }
@@ -5155,7 +5271,7 @@ export class UrlbarInput extends HTMLElement { @@ -5235,7 +5354,7 @@ export class UrlbarInput extends HTMLElement {
// When we are in actions search mode we can show more results so // When we are in actions search mode we can show more results so
// increase the limit. // increase the limit.
let maxResults = let maxResults =

View File

@@ -1,8 +1,8 @@
diff --git a/browser/extensions/newtab/lib/ActivityStream.sys.mjs b/browser/extensions/newtab/lib/ActivityStream.sys.mjs diff --git a/browser/extensions/newtab/lib/ActivityStream.sys.mjs b/browser/extensions/newtab/lib/ActivityStream.sys.mjs
index ae3c01650b3023a692cd4c50e33e3c3c39770c47..27a5fb0a630b9b79566be08cd5f7c9466ca30381 100644 index 5e182ead8a17ef2e8e3e1701fe227f279d0506ff..7fc7cba4152c2682dd8ef90c35ab1a3a92e04529 100644
--- a/browser/extensions/newtab/lib/ActivityStream.sys.mjs --- a/browser/extensions/newtab/lib/ActivityStream.sys.mjs
+++ b/browser/extensions/newtab/lib/ActivityStream.sys.mjs +++ b/browser/extensions/newtab/lib/ActivityStream.sys.mjs
@@ -295,7 +295,7 @@ export const PREFS_CONFIG = new Map([ @@ -288,7 +288,7 @@ export const PREFS_CONFIG = new Map([
"showSponsoredTopSites", "showSponsoredTopSites",
{ {
title: "Show sponsored top sites", title: "Show sponsored top sites",

View File

@@ -1,5 +1,5 @@
diff --git a/browser/installer/windows/nsis/installer.nsi b/browser/installer/windows/nsis/installer.nsi diff --git a/browser/installer/windows/nsis/installer.nsi b/browser/installer/windows/nsis/installer.nsi
index e877b4b8a8cc6fc233025d0b58de50a68ecb9fd9..9d7d9064d0b4c62a3de3b81e852b2b49170bf8a3 100755 index 74bfc36cb6e370b7dbf9fff6697a469c207f10d6..c5cdc832a430752340b33655d010c0348183b601 100755
--- a/browser/installer/windows/nsis/installer.nsi --- a/browser/installer/windows/nsis/installer.nsi
+++ b/browser/installer/windows/nsis/installer.nsi +++ b/browser/installer/windows/nsis/installer.nsi
@@ -836,7 +836,7 @@ Section "-InstallEndCleanup" @@ -836,7 +836,7 @@ Section "-InstallEndCleanup"

View File

@@ -1,16 +1,16 @@
diff --git a/browser/modules/BrowserWindowTracker.sys.mjs b/browser/modules/BrowserWindowTracker.sys.mjs diff --git a/browser/modules/BrowserWindowTracker.sys.mjs b/browser/modules/BrowserWindowTracker.sys.mjs
index 0cd9e9630fff20d71dc1dd7367ae6af4f7a53f71..7212c5f4745f3c93c1ede932af1b0e85580aa679 100644 index 0f2f66e4bbc27785d53e262001f2ad7f9a1b3216..ed8b600fd2093428e01489d7dc4aa1f5365b645e 100644
--- a/browser/modules/BrowserWindowTracker.sys.mjs --- a/browser/modules/BrowserWindowTracker.sys.mjs
+++ b/browser/modules/BrowserWindowTracker.sys.mjs +++ b/browser/modules/BrowserWindowTracker.sys.mjs
@@ -326,6 +326,7 @@ export const BrowserWindowTracker = { @@ -331,6 +331,7 @@ export const BrowserWindowTracker = {
args = null, args = null,
remote = undefined, remote = undefined,
fission = undefined, fission = undefined,
+ zenSyncedWindow = true, + zenSyncedWindow = true,
} = {}) { } = options;
let windowFeatures = "chrome,dialog=no";
if (all) { args = lazy.AIWindow.handleAIWindowOptions(options);
@@ -382,6 +383,12 @@ export const BrowserWindowTracker = { @@ -390,6 +391,12 @@ export const BrowserWindowTracker = {
windowFeatures, windowFeatures,
args args
); );

View File

@@ -1,5 +1,5 @@
diff --git a/browser/themes/linux/browser.css b/browser/themes/linux/browser.css diff --git a/browser/themes/linux/browser.css b/browser/themes/linux/browser.css
index 646cf238ebfbd5ac1826cf47f578f66aa020199f..ba5a1950f683c4d8cb836ee9cd466c0b446f2241 100644 index e6ef8578b460282eeb473f78c71addc43192e228..2c7418f6eb416a58166287e2c6a37c22ee12d6ea 100644
--- a/browser/themes/linux/browser.css --- a/browser/themes/linux/browser.css
+++ b/browser/themes/linux/browser.css +++ b/browser/themes/linux/browser.css
@@ -14,7 +14,6 @@ @@ -14,7 +14,6 @@
@@ -10,7 +10,7 @@ index 646cf238ebfbd5ac1826cf47f578f66aa020199f..ba5a1950f683c4d8cb836ee9cd466c0b
} }
} }
} }
@@ -43,7 +42,8 @@ @@ -58,7 +57,8 @@
-moz-default-appearance: -moz-window-decorations; -moz-default-appearance: -moz-window-decorations;
appearance: auto; appearance: auto;
@@ -20,7 +20,7 @@ index 646cf238ebfbd5ac1826cf47f578f66aa020199f..ba5a1950f683c4d8cb836ee9cd466c0b
dialog::backdrop { dialog::backdrop {
border-top-left-radius: env(-moz-gtk-csd-titlebar-radius); border-top-left-radius: env(-moz-gtk-csd-titlebar-radius);
border-top-right-radius: env(-moz-gtk-csd-titlebar-radius); border-top-right-radius: env(-moz-gtk-csd-titlebar-radius);
@@ -51,13 +51,11 @@ @@ -66,13 +66,11 @@
/* stylelint-disable-next-line media-query-no-invalid */ /* stylelint-disable-next-line media-query-no-invalid */
@media -moz-pref("widget.gtk.rounded-bottom-corners.enabled") { @media -moz-pref("widget.gtk.rounded-bottom-corners.enabled") {

View File

@@ -1,8 +1,8 @@
diff --git a/browser/themes/shared/browser-shared.css b/browser/themes/shared/browser-shared.css diff --git a/browser/themes/shared/browser-shared.css b/browser/themes/shared/browser-shared.css
index 63d9641c7107c1444cb74f1536193246106f5cae..4298760fab4862e64ec74df23e00b373c5745605 100644 index aceda010e08cd20dcfb5eb2e6f253314ea087849..9b0b4af4fded24be573d59b62b9905d15e1e2dd6 100644
--- a/browser/themes/shared/browser-shared.css --- a/browser/themes/shared/browser-shared.css
+++ b/browser/themes/shared/browser-shared.css +++ b/browser/themes/shared/browser-shared.css
@@ -103,7 +103,7 @@ body { @@ -104,7 +104,7 @@ body {
--toolbarbutton-border-radius: var(--button-border-radius); --toolbarbutton-border-radius: var(--button-border-radius);
--identity-box-margin-inline: 4px; --identity-box-margin-inline: 4px;
--urlbar-min-height: max(32px, 1.4em); --urlbar-min-height: max(32px, 1.4em);
@@ -11,7 +11,7 @@ index 63d9641c7107c1444cb74f1536193246106f5cae..4298760fab4862e64ec74df23e00b373
/* This should be used for icons and chiclets inside the input field, as well /* 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 as result rows. It makes the gap around them more uniform when they are
@@ -172,8 +172,6 @@ body { @@ -173,8 +173,6 @@ body {
*/ */
&.fullscreen-with-menubar { &.fullscreen-with-menubar {
z-index: var(--browser-area-z-index-toolbox-while-animating); z-index: var(--browser-area-z-index-toolbox-while-animating);
@@ -20,7 +20,7 @@ index 63d9641c7107c1444cb74f1536193246106f5cae..4298760fab4862e64ec74df23e00b373
} }
/* Themes define a set of toolbox foreground and background colors which we /* Themes define a set of toolbox foreground and background colors which we
@@ -282,13 +280,13 @@ body { @@ -283,13 +281,13 @@ body {
@media (-moz-platform: macos) and (not (-moz-mac-rtl)) { @media (-moz-platform: macos) and (not (-moz-mac-rtl)) {
&:-moz-locale-dir(ltr) { &:-moz-locale-dir(ltr) {

View File

@@ -1,5 +1,5 @@
diff --git a/browser/themes/shared/identity-block/identity-block.css b/browser/themes/shared/identity-block/identity-block.css diff --git a/browser/themes/shared/identity-block/identity-block.css b/browser/themes/shared/identity-block/identity-block.css
index e9f0ea328cde3631ef856f44d47abb9c5cec5ee1..66ec2bc8bb716ad9e87f88f3d93f9516c9eb8052 100644 index 3996a050162f4baa3a3ed3d09bc6b7bd0c3a1404..ba432205acde344dfec9f98333df2d4dd85c14ba 100644
--- a/browser/themes/shared/identity-block/identity-block.css --- a/browser/themes/shared/identity-block/identity-block.css
+++ b/browser/themes/shared/identity-block/identity-block.css +++ b/browser/themes/shared/identity-block/identity-block.css
@@ -7,7 +7,7 @@ @@ -7,7 +7,7 @@

View File

@@ -1,8 +1,8 @@
diff --git a/browser/themes/shared/jar.inc.mn b/browser/themes/shared/jar.inc.mn diff --git a/browser/themes/shared/jar.inc.mn b/browser/themes/shared/jar.inc.mn
index ab8601e76409ad1a026763379a395dd52f503f27..3b32198dfa770d29f4e2f2b0faed5f3ff735c664 100644 index ccae208d64af19d15b85f72a4a38ea95448ed9e9..5c184a33c1d3416d9c16e3edf1353174aea3ed03 100644
--- a/browser/themes/shared/jar.inc.mn --- a/browser/themes/shared/jar.inc.mn
+++ b/browser/themes/shared/jar.inc.mn +++ b/browser/themes/shared/jar.inc.mn
@@ -326,3 +326,5 @@ @@ -328,3 +328,5 @@
skin/classic/browser/illustrations/market-opt-in.svg (../shared/illustrations/market-opt-in.svg) skin/classic/browser/illustrations/market-opt-in.svg (../shared/illustrations/market-opt-in.svg)
skin/classic/browser/illustrations/yelpRealtime-opt-in.svg (../shared/illustrations/yelpRealtime-opt-in.svg) skin/classic/browser/illustrations/yelpRealtime-opt-in.svg (../shared/illustrations/yelpRealtime-opt-in.svg)

View File

@@ -1,8 +1,8 @@
diff --git a/browser/themes/shared/tabbrowser/content-area.css b/browser/themes/shared/tabbrowser/content-area.css diff --git a/browser/themes/shared/tabbrowser/content-area.css b/browser/themes/shared/tabbrowser/content-area.css
index b00139d7af878326ff303c08d5ddd47501b8c7db..7361a5e98d6ea372f6fdc583d90044d276cfb81b 100644 index 7fbe572527a702f35434ad73ad6cda41c5c082c0..ccf7c8c5f408cec50e562a9821767ea3e22b7e3c 100644
--- a/browser/themes/shared/tabbrowser/content-area.css --- a/browser/themes/shared/tabbrowser/content-area.css
+++ b/browser/themes/shared/tabbrowser/content-area.css +++ b/browser/themes/shared/tabbrowser/content-area.css
@@ -90,7 +90,6 @@ @@ -89,7 +89,6 @@
min-height: 0; min-height: 0;
/* We want to be able to show the frame color behind the clipped radiused corner */ /* We want to be able to show the frame color behind the clipped radiused corner */
@@ -18,20 +18,20 @@ index b00139d7af878326ff303c08d5ddd47501b8c7db..7361a5e98d6ea372f6fdc583d90044d2
} }
browser[type="content"] { browser[type="content"] {
@@ -392,7 +390,7 @@ split-view-footer { @@ -423,7 +421,7 @@ split-view-footer {
.dialogStack { .dialogStack {
z-index: var(--browser-stack-z-index-dialog-stack); z-index: var(--browser-stack-z-index-dialog-stack);
- position: absolute; - position: absolute;
+ position: fixed; + position: fixed;
inset: 0; inset: 0;
/* --browser-with-dialog set on browser[tabDialogShowing], we want to position the overlay
/* Hide tab-modal dialogs when a window-modal one is up. */ only on the top of the <browser> element so it doesn't overlap the DevTools toolbox */
@@ -553,7 +551,7 @@ split-view-footer { @@ -590,7 +588,7 @@ split-view-footer {
.dialogOverlay[topmost="true"], .dialogOverlay[topmost="true"],
#window-modal-dialog::backdrop { #window-modal-dialog::backdrop {
- background-color: var(--dialog-backdrop-color); - background-color: var(--background-color-overlay);
+ background-color: light-dark(rgba(255, 255, 255, .3), rgba(0, 0, 0, .3)); + background-color: light-dark(rgba(255, 255, 255, .3), rgba(0, 0, 0, .3));
} }

View File

@@ -1,5 +1,5 @@
diff --git a/browser/themes/shared/tabbrowser/ctrlTab.css b/browser/themes/shared/tabbrowser/ctrlTab.css diff --git a/browser/themes/shared/tabbrowser/ctrlTab.css b/browser/themes/shared/tabbrowser/ctrlTab.css
index ffda4922c675f6159c825334cba9d49658d316ba..7b3d4d2b5c6d732a1d0074e05cc48131fe57c630 100644 index 6a7d295bfaed7f0429a8ff5ac9b8a2db4ee911e3..d1a3a8d44bc06102adaef294dc72f8f404be17dc 100644
--- a/browser/themes/shared/tabbrowser/ctrlTab.css --- a/browser/themes/shared/tabbrowser/ctrlTab.css
+++ b/browser/themes/shared/tabbrowser/ctrlTab.css +++ b/browser/themes/shared/tabbrowser/ctrlTab.css
@@ -11,6 +11,7 @@ @@ -11,6 +11,7 @@

View File

@@ -1,5 +1,5 @@
diff --git a/browser/themes/shared/tabbrowser/tabs.css b/browser/themes/shared/tabbrowser/tabs.css diff --git a/browser/themes/shared/tabbrowser/tabs.css b/browser/themes/shared/tabbrowser/tabs.css
index 310e7866b942df5c3c34815f4612a2a2ad8c42a6..d4931a0184209951ced288c894613dccdf3b11fc 100644 index dff30e3f3f800e3fb499aa84450d3571e705820f..57a97e8955f3a6c9b0b8b6a9a15addd343204691 100644
--- a/browser/themes/shared/tabbrowser/tabs.css --- a/browser/themes/shared/tabbrowser/tabs.css
+++ b/browser/themes/shared/tabbrowser/tabs.css +++ b/browser/themes/shared/tabbrowser/tabs.css
@@ -21,7 +21,7 @@ @@ -21,7 +21,7 @@
@@ -23,7 +23,7 @@ index 310e7866b942df5c3c34815f4612a2a2ad8c42a6..d4931a0184209951ced288c894613dcc
--tab-selected-bgcolor: var(--toolbar-bgcolor); --tab-selected-bgcolor: var(--toolbar-bgcolor);
--tab-selected-color-scheme: var(--toolbar-color-scheme); --tab-selected-color-scheme: var(--toolbar-color-scheme);
&[lwt-tab-selected="light"] { &[lwt-tab-selected="light"] {
@@ -293,7 +293,6 @@ @@ -294,7 +294,6 @@ tab-split-view-wrapper[dragtarget] {
} }
:root:not([uidensity="compact"], [sidebar-expand-on-hover]) &[pinned] { :root:not([uidensity="compact"], [sidebar-expand-on-hover]) &[pinned] {
@@ -31,7 +31,7 @@ index 310e7866b942df5c3c34815f4612a2a2ad8c42a6..d4931a0184209951ced288c894613dcc
} }
&:is([selected], [multiselected]) { &:is([selected], [multiselected]) {
@@ -307,6 +306,7 @@ @@ -308,6 +307,7 @@ tab-split-view-wrapper[dragtarget] {
border-radius: inherit; border-radius: inherit;
position: relative; position: relative;
overflow: hidden; overflow: hidden;
@@ -39,7 +39,7 @@ index 310e7866b942df5c3c34815f4612a2a2ad8c42a6..d4931a0184209951ced288c894613dcc
&::before { &::before {
position: absolute; position: absolute;
@@ -506,10 +506,6 @@ @@ -507,10 +507,6 @@ tab-split-view-wrapper[dragtarget] {
/* stylelint-disable-next-line media-query-no-invalid */ /* stylelint-disable-next-line media-query-no-invalid */
@media -moz-pref("browser.tabs.fadeOutUnloadedTabs") { @media -moz-pref("browser.tabs.fadeOutUnloadedTabs") {
&[pending] { &[pending] {
@@ -50,7 +50,7 @@ index 310e7866b942df5c3c34815f4612a2a2ad8c42a6..d4931a0184209951ced288c894613dcc
opacity: 0.5; opacity: 0.5;
/* Fade the favicon out */ /* Fade the favicon out */
transition-property: filter, opacity; transition-property: filter, opacity;
@@ -526,10 +522,6 @@ @@ -527,10 +523,6 @@ tab-split-view-wrapper[dragtarget] {
/* stylelint-disable-next-line media-query-no-invalid */ /* stylelint-disable-next-line media-query-no-invalid */
@media -moz-pref("browser.tabs.fadeOutExplicitlyUnloadedTabs") { @media -moz-pref("browser.tabs.fadeOutExplicitlyUnloadedTabs") {
&[pending][discarded] { &[pending][discarded] {
@@ -61,7 +61,7 @@ index 310e7866b942df5c3c34815f4612a2a2ad8c42a6..d4931a0184209951ced288c894613dcc
opacity: 0.5; opacity: 0.5;
/* Fade the favicon out */ /* Fade the favicon out */
transition-property: filter, opacity; transition-property: filter, opacity;
@@ -598,7 +590,7 @@ @@ -599,7 +591,7 @@ tab-split-view-wrapper[dragtarget] {
z-index: 1; /* Overlay tab title */ z-index: 1; /* Overlay tab title */
#tabbrowser-tabs[orient="vertical"] & { #tabbrowser-tabs[orient="vertical"] & {
@@ -70,7 +70,7 @@ index 310e7866b942df5c3c34815f4612a2a2ad8c42a6..d4931a0184209951ced288c894613dcc
} }
&[crashed] { &[crashed] {
@@ -606,7 +598,7 @@ @@ -607,7 +599,7 @@ tab-split-view-wrapper[dragtarget] {
} }
#tabbrowser-tabs[orient="vertical"]:not([expanded]) &:not([crashed]), #tabbrowser-tabs[orient="vertical"]:not([expanded]) &:not([crashed]),
@@ -79,7 +79,7 @@ index 310e7866b942df5c3c34815f4612a2a2ad8c42a6..d4931a0184209951ced288c894613dcc
&[soundplaying] { &[soundplaying] {
list-style-image: url("chrome://browser/skin/tabbrowser/tab-audio-playing-small.svg"); list-style-image: url("chrome://browser/skin/tabbrowser/tab-audio-playing-small.svg");
} }
@@ -663,7 +655,7 @@ @@ -664,7 +656,7 @@ tab-split-view-wrapper[dragtarget] {
} }
} }
@@ -88,7 +88,7 @@ index 310e7866b942df5c3c34815f4612a2a2ad8c42a6..d4931a0184209951ced288c894613dcc
&[crashed] { &[crashed] {
display: revert; display: revert;
} }
@@ -830,7 +822,7 @@ @@ -831,7 +823,7 @@ tab-split-view-wrapper[dragtarget] {
has not been added to root. There are certain scenarios when that attribute is temporarily 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. */ removed from root such as when toggling the sidebar to expand with the toolbar button. */
#tabbrowser-tabs[orient="horizontal"] &:not([pinned]):not([crashed]), #tabbrowser-tabs[orient="horizontal"] &:not([pinned]):not([crashed]),
@@ -97,7 +97,7 @@ index 310e7866b942df5c3c34815f4612a2a2ad8c42a6..d4931a0184209951ced288c894613dcc
&:is([soundplaying], [muted], [activemedia-blocked]) { &:is([soundplaying], [muted], [activemedia-blocked]) {
display: flex; display: flex;
} }
@@ -1521,7 +1513,7 @@ tab-group { @@ -1529,7 +1521,7 @@ tab-group {
} }
#tabbrowser-tabs[orient="vertical"][expanded] { #tabbrowser-tabs[orient="vertical"][expanded] {
@@ -106,7 +106,7 @@ index 310e7866b942df5c3c34815f4612a2a2ad8c42a6..d4931a0184209951ced288c894613dcc
&[movingtab][movingtab-addToGroup]:not([movingtab-group], [movingtab-ungroup]) .tabbrowser-tab:is(:active, [multiselected]) { &[movingtab][movingtab-addToGroup]:not([movingtab-group], [movingtab-ungroup]) .tabbrowser-tab:is(:active, [multiselected]) {
margin-inline-start: var(--space-medium); margin-inline-start: var(--space-medium);
} }
@@ -1999,7 +1991,7 @@ tab-group { @@ -2036,7 +2028,7 @@ tab-group {
} }
} }
@@ -115,7 +115,7 @@ index 310e7866b942df5c3c34815f4612a2a2ad8c42a6..d4931a0184209951ced288c894613dcc
#vertical-tabs-newtab-button { #vertical-tabs-newtab-button {
appearance: none; appearance: none;
min-height: var(--tab-min-height); min-height: var(--tab-min-height);
@@ -2010,7 +2002,7 @@ tab-group { @@ -2047,7 +2039,7 @@ tab-group {
margin-inline: var(--tab-inner-inline-margin); margin-inline: var(--tab-inner-inline-margin);
#tabbrowser-tabs[orient="vertical"]:not([expanded]) & > .toolbarbutton-text { #tabbrowser-tabs[orient="vertical"]:not([expanded]) & > .toolbarbutton-text {
@@ -124,7 +124,7 @@ index 310e7866b942df5c3c34815f4612a2a2ad8c42a6..d4931a0184209951ced288c894613dcc
} }
&:hover { &:hover {
@@ -2034,7 +2026,7 @@ tab-group { @@ -2071,7 +2063,7 @@ tab-group {
* flex container. #tabs-newtab-button is a child of the arrowscrollbox where * flex container. #tabs-newtab-button is a child of the arrowscrollbox where
* we don't want a gap (between tabs), so we have to add some margin. * we don't want a gap (between tabs), so we have to add some margin.
*/ */
@@ -133,7 +133,7 @@ index 310e7866b942df5c3c34815f4612a2a2ad8c42a6..d4931a0184209951ced288c894613dcc
margin-block: var(--tab-block-margin); margin-block: var(--tab-block-margin);
} }
@@ -2222,7 +2214,6 @@ tab-group { @@ -2259,7 +2251,6 @@ tab-group {
&:not([expanded]) { &:not([expanded]) {
.tabbrowser-tab[pinned] { .tabbrowser-tab[pinned] {
@@ -141,7 +141,7 @@ index 310e7866b942df5c3c34815f4612a2a2ad8c42a6..d4931a0184209951ced288c894613dcc
} }
.tab-background { .tab-background {
@@ -2262,8 +2253,8 @@ tab-group { @@ -2299,8 +2290,8 @@ tab-group {
display: block; display: block;
position: absolute; position: absolute;
inset: auto; inset: auto;
@@ -152,7 +152,7 @@ index 310e7866b942df5c3c34815f4612a2a2ad8c42a6..d4931a0184209951ced288c894613dcc
&:-moz-window-inactive { &:-moz-window-inactive {
background-image: background-image:
@@ -2348,9 +2339,6 @@ tab-group { @@ -2385,9 +2376,6 @@ tab-group {
:root:not([privatebrowsingmode]) :is(toolbarbutton, toolbarpaletteitem) ~ #tabbrowser-tabs, :root:not([privatebrowsingmode]) :is(toolbarbutton, toolbarpaletteitem) ~ #tabbrowser-tabs,
:root[privatebrowsingmode] :is(toolbarbutton:not(#firefox-view-button), toolbarpaletteitem:not(#wrapper-firefox-view-button)) ~ #tabbrowser-tabs { :root[privatebrowsingmode] :is(toolbarbutton:not(#firefox-view-button), toolbarpaletteitem:not(#wrapper-firefox-view-button)) ~ #tabbrowser-tabs {
@@ -162,7 +162,7 @@ index 310e7866b942df5c3c34815f4612a2a2ad8c42a6..d4931a0184209951ced288c894613dcc
} }
:root[privatebrowsingmode] :is(#firefox-view-button, #menu_openFirefoxView) { :root[privatebrowsingmode] :is(#firefox-view-button, #menu_openFirefoxView) {
@@ -2382,7 +2370,6 @@ toolbar:not(#TabsToolbar) #firefox-view-button { @@ -2419,7 +2407,6 @@ toolbar:not(#TabsToolbar) #firefox-view-button {
list-style-image: url(chrome://global/skin/icons/plus.svg); list-style-image: url(chrome://global/skin/icons/plus.svg);
} }

View File

@@ -1,5 +1,5 @@
diff --git a/browser/themes/shared/toolbarbuttons.css b/browser/themes/shared/toolbarbuttons.css diff --git a/browser/themes/shared/toolbarbuttons.css b/browser/themes/shared/toolbarbuttons.css
index e2b8a7cae70ed2bd3c80ee4214a09dbdb68a0d01..ab1b50a06b68cc6941789b31494b44da6aecdb19 100644 index f681decf193605b633f1cffa493ac3b000b542bd..21ee9ce2594308aba0ae6d86e4f82bef6ef95b6d 100644
--- a/browser/themes/shared/toolbarbuttons.css --- a/browser/themes/shared/toolbarbuttons.css
+++ b/browser/themes/shared/toolbarbuttons.css +++ b/browser/themes/shared/toolbarbuttons.css
@@ -44,20 +44,6 @@ @@ -44,20 +44,6 @@

View File

@@ -1,5 +1,5 @@
diff --git a/browser/themes/shared/urlbar-searchbar.css b/browser/themes/shared/urlbar-searchbar.css diff --git a/browser/themes/shared/urlbar-searchbar.css b/browser/themes/shared/urlbar-searchbar.css
index edfe3e05a1b4517a4de6e09221ebdcfb5d8f1fe5..5986f88babf2b8d48ec8a5c0724787b13275aeff 100644 index 78a2c85af51f90958b445eac53a540b382163102..7509b28c6d868a6f1c34f36330e695c163e12788 100644
--- a/browser/themes/shared/urlbar-searchbar.css --- a/browser/themes/shared/urlbar-searchbar.css
+++ b/browser/themes/shared/urlbar-searchbar.css +++ b/browser/themes/shared/urlbar-searchbar.css
@@ -9,7 +9,7 @@ @@ -9,7 +9,7 @@
@@ -11,16 +11,16 @@ index edfe3e05a1b4517a4de6e09221ebdcfb5d8f1fe5..5986f88babf2b8d48ec8a5c0724787b1
--urlbar-container-border-padding: calc(var(--urlbar-container-border-width) + var(--urlbar-container-padding)); --urlbar-container-border-padding: calc(var(--urlbar-container-border-width) + var(--urlbar-container-padding));
--urlbar-margin-inline: 5px; --urlbar-margin-inline: 5px;
--urlbar-padding-block: 4px; --urlbar-padding-block: 4px;
@@ -52,7 +52,7 @@ @@ -54,7 +54,7 @@ toolbar[inactive="true"] .urlbar,
#urlbar[usertyping] > .urlbar-input-container > #page-action-buttons > #urlbar-zoom-button, .urlbar:not([usertyping]) > .urlbar-input-container > .urlbar-go-button,
.urlbar:is(:not([usertyping]), :not([focused])) > .urlbar-input-container > .urlbar-go-button, .urlbar:not(#searchbar-new, [focused]) > .urlbar-input-container > .urlbar-go-button,
.urlbar-revert-button-container { #urlbar-revert-button-container {
- display: none; - display: none;
+ display: none !important; + display: none !important;
} }
/* When rich suggestions are enabled the urlbar identity icon is given extra padding to /* When rich suggestions are enabled the urlbar identity icon is given extra padding to
@@ -323,10 +323,14 @@ @@ -325,10 +325,14 @@ toolbar[inactive="true"] .urlbar,
.urlbar[breakout][breakout-extend] { .urlbar[breakout][breakout-extend] {
height: auto; height: auto;

View File

@@ -1,5 +1,5 @@
diff --git a/browser/themes/shared/urlbarView.css b/browser/themes/shared/urlbarView.css diff --git a/browser/themes/shared/urlbarView.css b/browser/themes/shared/urlbarView.css
index 1ba5a570cb1fe690cf88396643baba02f9265095..312891b41e1c62b4ed53f5cbd63bd3280dde7512 100644 index 1af12e42c529481ff87539a84db20a1d6016d63a..7060711042a72c9df54c98ceb2c3ba3c850f9295 100644
--- a/browser/themes/shared/urlbarView.css --- a/browser/themes/shared/urlbarView.css
+++ b/browser/themes/shared/urlbarView.css +++ b/browser/themes/shared/urlbarView.css
@@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@

View File

@@ -0,0 +1,5 @@
#filter dumbComments emptyLines substitution
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
<svg fill="context-fill" fill-opacity="context-fill-opacity" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg"><path d="M256 32C132.3 32 32 134.9 32 261.7c0 101.5 64.2 187.5 153.2 217.9a17.56 17.56 0 003.8.4c8.3 0 11.5-6.1 11.5-11.4 0-5.5-.2-19.9-.3-39.1a102.4 102.4 0 01-22.6 2.7c-43.1 0-52.9-33.5-52.9-33.5-10.2-26.5-24.9-33.6-24.9-33.6-19.5-13.7-.1-14.1 1.4-14.1h.1c22.5 2 34.3 23.8 34.3 23.8 11.2 19.6 26.2 25.1 39.6 25.1a63 63 0 0025.6-6c2-14.8 7.8-24.9 14.2-30.7-49.7-5.8-102-25.5-102-113.5 0-25.1 8.7-45.6 23-61.6-2.3-5.8-10-29.2 2.2-60.8a18.64 18.64 0 015-.5c8.1 0 26.4 3.1 56.6 24.1a208.21 208.21 0 01112.2 0c30.2-21 48.5-24.1 56.6-24.1a18.64 18.64 0 015 .5c12.2 31.6 4.5 55 2.2 60.8 14.3 16.1 23 36.6 23 61.6 0 88.2-52.4 107.6-102.3 113.3 8 7.1 15.2 21.1 15.2 42.5 0 30.7-.3 55.5-.3 63 0 5.4 3.1 11.5 11.4 11.5a19.35 19.35 0 004-.4C415.9 449.2 480 363.1 480 261.7 480 134.9 379.7 32 256 32z"/></svg>

View File

@@ -18,6 +18,11 @@
border-radius: 100% !important; border-radius: 100% !important;
} }
#zenCreateNewPopup menuitem {
-moz-context-properties: fill, fill-opacity;
fill: currentColor;
}
#back-button { #back-button {
list-style-image: url("back.svg") !important; list-style-image: url("back.svg") !important;
} }
@@ -485,7 +490,7 @@
} }
#zen-site-data-icon-button { #zen-site-data-icon-button {
padding: 0 6px !important; padding: 0 4px !important;
border-radius: var(--urlbar-icon-border-radius) !important; border-radius: var(--urlbar-icon-border-radius) !important;
& image { & image {

View File

@@ -437,6 +437,7 @@
* skin/classic/browser/zen-icons/selectable/lightning.svg (../shared/zen-icons/common/selectable/lightning.svg) * skin/classic/browser/zen-icons/selectable/lightning.svg (../shared/zen-icons/common/selectable/lightning.svg)
* skin/classic/browser/zen-icons/selectable/location.svg (../shared/zen-icons/common/selectable/location.svg) * skin/classic/browser/zen-icons/selectable/location.svg (../shared/zen-icons/common/selectable/location.svg)
* skin/classic/browser/zen-icons/selectable/lock-closed.svg (../shared/zen-icons/common/selectable/lock-closed.svg) * skin/classic/browser/zen-icons/selectable/lock-closed.svg (../shared/zen-icons/common/selectable/lock-closed.svg)
* skin/classic/browser/zen-icons/selectable/logo-github.svg (../shared/zen-icons/common/selectable/logo-github.svg)
* skin/classic/browser/zen-icons/selectable/logo-rss.svg (../shared/zen-icons/common/selectable/logo-rss.svg) * skin/classic/browser/zen-icons/selectable/logo-rss.svg (../shared/zen-icons/common/selectable/logo-rss.svg)
* skin/classic/browser/zen-icons/selectable/logo-usd.svg (../shared/zen-icons/common/selectable/logo-usd.svg) * skin/classic/browser/zen-icons/selectable/logo-usd.svg (../shared/zen-icons/common/selectable/logo-usd.svg)
* skin/classic/browser/zen-icons/selectable/mail.svg (../shared/zen-icons/common/selectable/mail.svg) * skin/classic/browser/zen-icons/selectable/mail.svg (../shared/zen-icons/common/selectable/mail.svg)

View File

@@ -2,4 +2,4 @@
# This Source Code Form is subject to the terms of the Mozilla Public # This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this # License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/. # file, You can obtain one at http://mozilla.org/MPL/2.0/.
<svg fill="none" stroke="context-fill" stroke-width="1.5" stroke-opacity="context-fill-opacity" height="18" width="18" viewBox="0 0 18 18" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg"><path d="m 9,13.569 c -0.552,0 -1,-0.449 -1,-1 0,-0.551 0.448,-1 1,-1 0.552,0 1,0.449 1,1 0,0.551 -0.448,1 -1,1 z M 9,6.5 V 10 M 7.638,3.495 2.213,12.891 c -0.605,1.048 0.151,2.359 1.362,2.359 h 10.85 c 1.211,0 1.967,-1.31 1.362,-2.359 L 10.362,3.495 C 9.757,2.447 8.243,2.447 7.638,3.495 Z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" height="18" width="18" viewBox="0 0 18 18"><g stroke-linecap="round" stroke-width="1.5" fill="none" stroke="context-fill" stroke-opacity="context-fill-opacity" stroke-linejoin="round"><path d="M7.638,3.495L2.213,12.891c-.605,1.048,.151,2.359,1.362,2.359H14.425c1.211,0,1.967-1.31,1.362-2.359L10.362,3.495c-.605-1.048-2.119-1.048-2.724,0Z"></path><line x1="9" y1="6.5" x2="9" y2="10"></line><path d="M9,13.569c-.552,0-1-.449-1-1s.448-1,1-1,1,.449,1,1-.448,1-1,1Z" fill="context-fill" data-stroke="none" stroke="none"></path></g></svg>

View File

@@ -4,6 +4,13 @@
# note: you need to be in the same directory as the script to run it # note: you need to be in the same directory as the script to run it
# a list of SVG files that we should ignore when exporting, because
# they render poorly when optimized, and we don't use them in many places
# so the cost of optimizing them is higher than the benefit of having optimized SVGs
do_not_optimize=(
"security-broken.svg"
)
if [ $(basename $PWD) != "zen-icons" ]; then if [ $(basename $PWD) != "zen-icons" ]; then
echo "You need to be in the zen-icons directory to run this script" echo "You need to be in the zen-icons directory to run this script"
exit 1 exit 1
@@ -35,6 +42,11 @@ merge_svg_paths() {
stroke_attr=$(grep -o 'stroke="[^"]*"' "$file" | head -n 1) stroke_attr=$(grep -o 'stroke="[^"]*"' "$file" | head -n 1)
stroke_width_attr=$(grep -o 'stroke-width="[^"]*"' "$file" | head -n 1) stroke_width_attr=$(grep -o 'stroke-width="[^"]*"' "$file" | head -n 1)
stroke_opacity_attr=$(grep -o 'stroke-opacity="[^"]*"' "$file" | head -n 1) stroke_opacity_attr=$(grep -o 'stroke-opacity="[^"]*"' "$file" | head -n 1)
# Check if the file is in the do_not_optimize list
if [[ " ${do_not_optimize[@]} " =~ " $(basename $file) " ]]; then
echo "Skipping optimization for $file"
return
fi
# Use inkscape to merge all paths into one # Use inkscape to merge all paths into one
inkscape "$file" --actions="select-all;object-to-path;select-all;path-combine" --export-plain-svg --export-filename="${temp_file}" inkscape "$file" --actions="select-all;object-to-path;select-all;path-combine" --export-plain-svg --export-filename="${temp_file}"
# optimize the svg # optimize the svg

View File

@@ -1,16 +1,16 @@
diff --git a/browser/themes/windows/browser.css b/browser/themes/windows/browser.css diff --git a/browser/themes/windows/browser.css b/browser/themes/windows/browser.css
index b114781254018a27cd559c28d5d469fbab8673b5..79e6e21dd6e0a63237850bd315558540f050793c 100644 index a0ffa8cac5a4d7ec220e7ee5dd7d70dba81e9026..766d69d1a2c41f3de7de9b05ef096fcccaa5c2a0 100644
--- a/browser/themes/windows/browser.css --- a/browser/themes/windows/browser.css
+++ b/browser/themes/windows/browser.css +++ b/browser/themes/windows/browser.css
@@ -39,7 +39,6 @@ @@ -41,7 +41,6 @@
/* stylelint-disable-next-line media-query-no-invalid */
@media -moz-pref("widget.windows.mica.toplevel-backdrop", 2) { @media -moz-pref("widget.windows.mica.toplevel-backdrop", 2) {
/* For acrylic, do the same we do for popups to guarantee some contrast */ /* For acrylic, do the same we do for popups to guarantee some contrast */
- background-color: light-dark(rgba(255, 255, 255, 0.6), rgba(0, 0, 0, 0.6)); /* stylelint-disable-next-line stylelint-plugin-mozilla/use-design-tokens, stylelint-plugin-mozilla/no-base-design-tokens */
- background-color: light-dark(var(--color-white-alpha-60), var(--color-black-alpha-60));
} }
/* Using a semitransparent background preserves the tinting from the backdrop. /* Using a semitransparent background preserves the tinting from the backdrop.
@@ -68,14 +67,13 @@ @@ -70,14 +69,13 @@
} }
/* This is needed for Windows 10, see bug 1961257 */ /* This is needed for Windows 10, see bug 1961257 */

View File

@@ -1,12 +1,14 @@
diff --git a/devtools/startup/DevToolsStartup.sys.mjs b/devtools/startup/DevToolsStartup.sys.mjs diff --git a/devtools/startup/DevToolsStartup.sys.mjs b/devtools/startup/DevToolsStartup.sys.mjs
index 40926f9620bfe8ecc1d295026b219f5b7f83860c..6811d0681c9c9b8555f0c7f72d6cd3cd42a0b1bd 100644 index d6428524107325bc6680947f45a890991936cad4..9dd68c54b72ee17ba2cc998634b38b6155b8b388 100644
--- a/devtools/startup/DevToolsStartup.sys.mjs --- a/devtools/startup/DevToolsStartup.sys.mjs
+++ b/devtools/startup/DevToolsStartup.sys.mjs +++ b/devtools/startup/DevToolsStartup.sys.mjs
@@ -835,6 +835,7 @@ DevToolsStartup.prototype = { @@ -836,6 +836,9 @@ export class DevToolsStartup {
// account (see bug 832984). // account (see bug 832984).
const mainKeyset = doc.getElementById("mainKeyset"); const mainKeyset = doc.getElementById("mainKeyset");
mainKeyset.parentNode.insertBefore(keyset, mainKeyset); mainKeyset.parentNode.insertBefore(keyset, mainKeyset);
+ window.dispatchEvent(new window.Event("zen-devtools-keyset-added")); + mainKeyset.ownerGlobal.setTimeout(() => {
}, + window.dispatchEvent(new window.Event("zen-devtools-keyset-added"));
+ }, 0);
}
/** /**

View File

@@ -1,5 +1,5 @@
diff --git a/docshell/base/nsAboutRedirector.cpp b/docshell/base/nsAboutRedirector.cpp diff --git a/docshell/base/nsAboutRedirector.cpp b/docshell/base/nsAboutRedirector.cpp
index 49779b7cc79a602e764c8346e17a02310808aab8..1b1000cf7177bd83ca6d6c484a1c3b48c7216fc9 100644 index d6720d69cb123ab7cdc53671e49d27a8970d9607..b83748e2f6b5bb4623db709a6ac8803644c6d56a 100644
--- a/docshell/base/nsAboutRedirector.cpp --- a/docshell/base/nsAboutRedirector.cpp
+++ b/docshell/base/nsAboutRedirector.cpp +++ b/docshell/base/nsAboutRedirector.cpp
@@ -117,7 +117,7 @@ static const RedirEntry kRedirMap[] = { @@ -117,7 +117,7 @@ static const RedirEntry kRedirMap[] = {

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