Compare commits

..

33 Commits

Author SHA1 Message Date
Mr. M
123a7923af no-bug: Fix some conflicts 2026-07-10 13:04:45 +02:00
mr. m
cd71a36765 no-bug: Properly animate library icons 2026-07-03 14:34:17 +02:00
mr. m
80f424f68d Merge branch 'dev' into library 2026-07-03 12:22:25 +02:00
mr. m
7ce5fb77b9 no-bug: Update patches 2026-06-21 11:05:33 +02:00
mr. m
08acc6a39e Merge branch 'library' of https://github.com/zen-browser/desktop into library 2026-06-21 10:42:24 +02:00
mr. m
8ae271d982 Animate icons 2026-06-21 10:42:20 +02:00
mr. m
ba26c902fb Merge branch 'dev' into library
Signed-off-by: mr. m <91018726+mr-cheffy@users.noreply.github.com>
2026-06-21 10:36:00 +02:00
JustAdumbPrsn
89a50770a9 Adds library toolbar icon & adjustments to existing keyframes (#13950)
Co-authored-by: mr. m <91018726+mr-cheffy@users.noreply.github.com>
Signed-off-by: mr. m <91018726+mr-cheffy@users.noreply.github.com>
Signed-off-by: JustAdumbPrsn <73780892+JustAdumbPrsn@users.noreply.github.com>
2026-06-17 13:48:56 +02:00
JustAdumbPrsn
036f764d2b Add Boosts animated icons and minor adjustments (#13938)
Co-authored-by: mr. m <91018726+mr-cheffy@users.noreply.github.com>
Signed-off-by: mr. m <91018726+mr-cheffy@users.noreply.github.com>
Signed-off-by: JustAdumbPrsn <73780892+JustAdumbPrsn@users.noreply.github.com>
2026-05-29 16:05:49 +02:00
mr. m
2c11b9295e no-bug: Add animated icons 2026-05-29 14:35:48 +02:00
mr. m
d7839cdb91 Merge branch 'dev' into library 2026-05-28 09:14:19 +02:00
mr. m
67cef284dd Merge branch 'dev' into library
Signed-off-by: mr. m <91018726+mr-cheffy@users.noreply.github.com>
2026-05-18 16:50:30 +02:00
mr. m
36df7e718f no-bug: Continue library work 2026-05-18 16:46:43 +02:00
mr. m
d5b88ead22 Merge branch 'dev' into library 2026-05-13 20:06:51 +02:00
mr. m
7261eb1688 no-bug: Added history search 2026-05-10 15:54:12 +02:00
mr. m
b5a251a92f Merge branch 'dev' into library
Signed-off-by: mr. m <91018726+mr-cheffy@users.noreply.github.com>
2026-05-10 12:27:42 +02:00
JustAdumbPrsn
a217cacfef no-bug: Add basic UI, search implimentation (gh-12755)
Co-authored-by: mr. m <91018726+mr-cheffy@users.noreply.github.com>
2026-03-31 22:06:17 +02:00
mr. m
a56bcf3d9c no-bug: Small touches 2026-03-28 14:28:12 +01:00
mr. m
5963de1486 Merge branch 'library' of https://github.com/zen-browser/desktop into library 2026-03-28 10:27:18 +01:00
mr. m
57ad5c45e7 Merge branch 'dev' into library
Signed-off-by: mr. m <91018726+mr-cheffy@users.noreply.github.com>
2026-03-28 10:26:32 +01:00
JustAdumbPrsn
e6bebab10a change tab margin (i literally forgot to add 2px at bottom too)
Signed-off-by: JustAdumbPrsn <73780892+JustAdumbPrsn@users.noreply.github.com>
2026-03-13 12:34:32 +05:30
JustAdumbPrsn
a8820ed409 en-US locale .ftl for Zen-library
Signed-off-by: JustAdumbPrsn <73780892+JustAdumbPrsn@users.noreply.github.com>
2026-03-13 04:02:53 +05:30
JustAdumbPrsn
a82a7fb055 CSS for ZenLibrary but needs more changes :/
Signed-off-by: JustAdumbPrsn <73780892+JustAdumbPrsn@users.noreply.github.com>
2026-03-13 03:58:51 +05:30
JustAdumbPrsn
2be85a2890 UI, search (clicking item does nothing)
Signed-off-by: JustAdumbPrsn <73780892+JustAdumbPrsn@users.noreply.github.com>
2026-03-13 03:57:11 +05:30
JustAdumbPrsn
9301e1b64c Merge branch 'zen-browser:library' into library 2026-03-13 03:53:15 +05:30
mr. m
1e04f394a5 Merge branch 'dev' into library 2026-03-09 18:18:07 +01:00
JustAdumbPrsn
665f500925 feat: Implement Zen Library data backend (#12701) 2026-03-09 17:58:03 +01:00
JustAdumbPrsn
88ebf6e5da feat: improve section data backend
Signed-off-by: JustAdumbPrsn <73780892+JustAdumbPrsn@users.noreply.github.com>
2026-03-09 20:38:20 +05:30
mr. m
556beb01b0 feat: Add basic search component, b=no-bug, c=common 2026-03-08 12:09:31 +01:00
mr. m
48d5b32a5a feat: Improve transform detection, b=no-bug, c=common 2026-03-07 16:43:41 +01:00
mr. m
4682c8d545 feat: Add components to use, b=no-bug, c=no-component 2026-03-07 16:22:19 +01:00
mr. m
2c5fc47e74 Merge branch 'dev' into library 2026-03-07 12:29:53 +01:00
mr. m
237f0c0ea5 feat: Start implementing Zen Library, b=no-bug, c=common, folders 2026-03-06 10:16:05 +01:00
159 changed files with 13204 additions and 5991 deletions

View File

@@ -500,24 +500,10 @@ jobs:
path: updates-server
token: ${{ secrets.DEPLOY_KEY }}
- name: Download signed windows objects
- name: Download object files
if: ${{ inputs.update_branch == 'release' }}
env:
GH_TOKEN: ${{ secrets.DEPLOY_KEY }}
run: |
mkdir -p .github/workflows/object
gh release download "windows-signed-${{ github.run_id }}" \
--repo zen-browser/windows-binaries \
--pattern 'windows-x64-signed-*.tar.gz' \
--dir .github/workflows/object
for arch in x86_64 arm64; do
archive=".github/workflows/object/windows-x64-signed-$arch.tar.gz"
dest=".github/workflows/object/windows-x64-signed-$arch"
echo "Expanding $archive"
mkdir -p "$dest"
tar -xvf "$archive" -C "$dest"
done
git clone https://github.com/zen-browser/windows-binaries.git .github/workflows/object --depth 1
- name: Sign MAR files
env:
@@ -630,17 +616,6 @@ jobs:
./.github/workflows/object/windows-x64-signed-arm64/zen.installer-arm64.exe
./zen.macos-universal.dmg/*
- name: Clean up signed windows staging release
if: ${{ inputs.update_branch == 'release' }}
env:
GH_TOKEN: ${{ secrets.DEPLOY_KEY }}
run: |
# The per-run staging prerelease on windows-binaries has served its purpose
# now that the signed bundles are published in the real release. Never fail
# the release over this cleanup.
gh release delete "windows-signed-${{ github.run_id }}" \
--repo zen-browser/windows-binaries --cleanup-tag --yes || true
prepare-flatpak:
if: ${{ inputs.create_release && inputs.update_branch == 'release' }}
permissions: write-all

View File

@@ -61,6 +61,7 @@ jobs:
if: ${{ matrix.arch == 'x86_64' }}
run: |
cd C:\artifact
ls
Expand-Archive -Path .\${{ inputs.profile-data-path-archive }} -DestinationPath C:\artifact
ls

View File

@@ -260,8 +260,8 @@ jobs:
export ZEN_CROSS_COMPILING=1
export ZEN_RELEASE=1
npm run package
ls ./dist
mv ./dist/zen-$(npm run --silent surfer -- get version | xargs).en-US.win64${{ matrix.arch == 'aarch64' && '-aarch64' || '' }}.zip zen.win64.zip
ls ./dist
ls .
- name: Move package for PGO upload

View File

@@ -1 +1 @@
1.94.1
1.90

View File

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

View File

@@ -1 +1 @@
30959a45eaaf0bc499f3054793c76c6d7f0c8bc2
3985a970489e32fc751e1b80abf4d5534c905e45

View File

@@ -170,16 +170,14 @@ function SignAndPackage($name) {
echo "Packaging $name"
npm run package -- --verbose
# We assemble the signed bundle as a plain folder here (with no top-level
# directory inside it) and compress it into windows-x64-signed-$name.tar.gz
# at the end of the script, once every .exe has been signed. The release
# workflow expands it back with:
# In the release script, we do the following:
# tar -xvf .github/workflows/object/windows-x64-signed-x86_64.tar.gz -C windows-x64-signed-x86_64
# Inside the bundle we need:
# We need to create a tar with the same structure and no top-level directory
# Inside, we need:
# - update_manifest/*
# - windows.mar
# - zen.installer.exe
echo "Preparing signed bundle for $name"
echo "Creating tar for $name"
rm .\windsign-temp\windows-x64-signed-$name -Recurse -ErrorAction SilentlyContinue
mkdir windsign-temp\windows-x64-signed-$name
@@ -202,8 +200,9 @@ function SignAndPackage($name) {
# Move the manifest
mv .\dist\update\. windsign-temp\windows-x64-signed-$name\update_manifest
# The signed bundle stays in windsign-temp\windows-x64-signed-$name; it is
# compressed and uploaded to the staging release once every .exe is signed.
# note: We need to sign it into a parent folder, called windows-x64-signed-$name
rmdir .\windsign-temp\windows-binaries\windows-x64-signed-$name -Recurse -ErrorAction SilentlyContinue
mv windsign-temp\windows-x64-signed-$name .\windsign-temp\windows-binaries -Force
rmdir engine\obj-$objName-pc-windows-msvc\ -Recurse -ErrorAction SilentlyContinue
echo "Finished $name"
@@ -212,42 +211,16 @@ function SignAndPackage($name) {
SignAndPackage arm64
SignAndPackage x86_64
$files = Get-ChildItem .\windsign-temp\windows-x64-signed-x86_64, .\windsign-temp\windows-x64-signed-arm64 -Recurse -Include *.exe
$files = Get-ChildItem .\windsign-temp\windows-binaries -Recurse -Include *.exe
signtool.exe sign /n "$SignIdentity" /t http://time.certum.pl/ /fd sha256 /v $files
# Compress each signed bundle into a single gzip tarball (`-C <dir> .` so it has
# no top-level directory) and upload it as a release asset on the windows-binaries
# repo, keyed to this build's run id. Release assets keep the bundles out of git
# (they were too large to commit) while still living in the windows-binaries repo.
# The gated release job downloads and expands these from that repo's releases.
$binariesRepo = "zen-browser/windows-binaries"
$stagingTag = "windows-signed-$GithubRunId"
echo "Ensuring staging release $stagingTag exists on $binariesRepo"
gh release view $stagingTag --repo $binariesRepo *> $null
if ($LASTEXITCODE -ne 0) {
gh release create $stagingTag --repo $binariesRepo --prerelease --title "Windows signed bundles ($GithubRunId)" --notes "Signed Windows bundles for run $GithubRunId, consumed by the release workflow. Safe to delete."
if ($LASTEXITCODE -ne 0) {
throw "Failed to create staging release $stagingTag on $binariesRepo"
}
}
foreach ($name in @("x86_64", "arm64")) {
$signedDir = ".\windsign-temp\windows-x64-signed-$name"
$archive = ".\windsign-temp\windows-x64-signed-$name.tar.gz"
echo "Creating compressed tar for $name"
Remove-Item $archive -ErrorAction SilentlyContinue
tar -czvf $archive -C $signedDir .
if ($LASTEXITCODE -ne 0) {
throw "Failed to create tar archive for $name"
}
echo "Uploading $archive to $binariesRepo release $stagingTag"
gh release upload $stagingTag $archive --repo $binariesRepo --clobber
if ($LASTEXITCODE -ne 0) {
throw "Failed to upload $archive to release $stagingTag"
}
}
echo "All artifacts signed, packaged, and uploaded to $binariesRepo release $stagingTag!"
echo "All artifacts signed and packaged, ready for release!"
echo "Commiting the changes to the repository"
cd windsign-temp\windows-binaries
git add .
git commit -m "Sign and package windows artifacts"
git push
cd ..\..
# Cleaning up

View File

@@ -10,6 +10,7 @@ if test "$ZEN_CROSS_COMPILING"; then
export WINEDEBUG=-all
export MOZ_STUB_INSTALLER=1
export MOZ_PKG_FORMAT=TAR
export CROSS_BUILD=1
CROSS_COMPILE=1

View File

@@ -20,9 +20,9 @@ files:
translation: browser/browser/preferences/zen-preferences.ftl
- source: en-US/browser/browser/zen-folders.ftl
translation: browser/browser/zen-folders.ftl
- source: en-US/browser/browser/zen-library.ftl
translation: browser/browser/zen-library.ftl
- source: en-US/browser/browser/zen-boosts.ftl
translation: browser/browser/zen-boosts.ftl
- source: en-US/browser/browser/zen-space-routing.ftl
translation: browser/browser/zen-space-routing.ftl
- source: en-US/browser/browser/zen-command-palette.ftl
translation: browser/browser/zen-command-palette.ftl

View File

@@ -1,36 +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/.
zen-action-toggle-compact-mode = Toggle Compact Mode
zen-action-open-theme-picker = Open Theme Picker
zen-action-new-split-view = New Split View
zen-action-new-folder = New Folder
zen-action-copy-current-url = Copy Current URL
zen-action-settings = Settings
zen-action-open-private-window = Open Private Window
zen-action-open-new-window = Open New Window
zen-action-new-blank-window = New Blank Window
zen-action-pin-tab = Pin Tab
zen-action-unpin-tab = Unpin Tab
zen-action-open-space-routing = Open Space Routing
zen-action-new-boost = New Boost
zen-action-next-space = Next Space
zen-action-previous-space = Previous Space
zen-action-close-tab = Close Tab
zen-action-reload-tab = Reload Tab
zen-action-reload-tab-without-cache = Reload Tab Without Cache
zen-action-next-tab = Next Tab
zen-action-previous-tab = Previous Tab
zen-action-capture-screenshot = Capture Screenshot
zen-action-toggle-tabs-on-right = Toggle Tabs on right
zen-action-add-to-essentials = Add to Essentials
zen-action-remove-from-essentials = Remove from Essentials
zen-action-find-in-page = Find in Page
zen-action-manage-extensions = Manage Extensions
zen-action-switch-to-automatic-appearance = Switch to Automatic Appearance
zen-action-switch-to-light-mode = Switch to Light Mode
zen-action-switch-to-dark-mode = Switch to Dark Mode
zen-action-print = Print
zen-action-focus-on = Focus on
zen-action-extension = Extension

View File

@@ -87,8 +87,6 @@ zen-icons-picker-emoji =
.label = Emojis
zen-icons-picker-svg =
.label = Icons
zen-emojis-picker-search =
.placeholder = Search emojis
urlbar-search-mode-zen_actions = Actions
zen-site-data-settings = Settings

View File

@@ -0,0 +1,89 @@
# 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/.
library-spaces-section-title = Spaces
library-downloads-section-title = Downloads
library-history-section-title = History
library-boosts-section-title = Boosts
library-search-placeholder =
.placeholder = Search…
library-history-search-placeholder =
.placeholder = Search History…
library-downloads-search-placeholder =
.placeholder = Search Downloads…
library-history-today = Today
library-history-yesterday = Yesterday
library-history-empty = No history found
library-downloads-empty = No downloads found
library-spaces-empty = No spaces available
library-boosts-empty = No boosts yet
library-search-no-results = No results
library-boosts-search-placeholder =
.placeholder = Search Boosts…
library-boost-toggle =
.tooltiptext = Toggle boost for this site
library-boost-context-edit =
.label = Edit Boost
library-boost-context-export =
.label = Export Boost
library-boost-context-delete =
.label = Delete Boost
library-filter-button = Filter
library-history-filter-all =
.label = All time
library-history-filter-today =
.label = Today
library-history-filter-yesterday =
.label = Yesterday
library-history-filter-last-7-days =
.label = Last 7 days
library-history-filter-last-30-days =
.label = Last 30 days
library-downloads-filter-all =
.label = All
library-downloads-filter-completed =
.label = Completed
library-downloads-filter-in-progress =
.label = In progress
library-downloads-filter-failed =
.label = Failed
library-downloads-filter-paused =
.label = Paused
library-item-context-open =
.label = Open
library-item-context-open-glance =
.label = Open in Glance
library-item-context-open-new-tab =
.label = Open in New Tab
library-item-context-open-new-window =
.label = Open in New Window
library-item-context-copy-url =
.label = Copy URL
library-item-context-delete-history =
.label = Forget About This Page
library-item-context-open-source =
.label = Open Source URL
library-item-context-remove =
.label = Remove from History
library-item-context-delete-file =
.label = Delete File
library-history-action-remove =
.tooltiptext = Forget About This Page
library-history-action-open-tab =
.tooltiptext = Open in New Tab
library-downloads-state-downloading = Downloading…
library-downloads-state-canceled = Canceled
library-downloads-state-failed = Failed
library-downloads-state-incomplete = Incomplete

View File

@@ -82,7 +82,6 @@ zen-workspace-creation-profile = Profile
.tooltiptext = Profiles are used to separate cookies and site data between spaces.
zen-workspace-creation-header = Create a Space
zen-workspace-creation-label = Spaces are used to organize your tabs and sessions.
zen-workspace-default-profile = Default
zen-workspaces-delete-workspace-title = Delete Space?
zen-workspaces-delete-workspace-body = Are you sure you want to delete { $name }? This action cannot be undone.

View File

@@ -2,7 +2,5 @@
# 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/.
EXTRA_JS_MODULES.zen += [
"ZenSyncManager.sys.mjs",
"ZenWorkspacesSync.sys.mjs",
]
- name: zen.library.enabled
value: false

View File

@@ -32,6 +32,9 @@
- name: zen.workspaces.scroll-modifier-key
value: ctrl
- name: services.sync.engine.workspaces
value: false
- name: zen.workspaces.separate-essentials
value: true

View File

@@ -1,5 +1,5 @@
diff --git a/.stylelintrc.js b/.stylelintrc.js
index b484bf6600a7e1b8ad2aed8c8b7fe5e84cc3d023..f89712e2c13dfa0bcb48e55cd3872c67f5c98dad 100644
index 3c9fecf731126fdbf900d1bdcd3635dd31ed53ef..c3a210b8153e9699c6cbdc0d568bb72433976b2c 100644
--- a/.stylelintrc.js
+++ b/.stylelintrc.js
@@ -67,7 +67,7 @@ module.exports = {
@@ -11,9 +11,9 @@ index b484bf6600a7e1b8ad2aed8c8b7fe5e84cc3d023..f89712e2c13dfa0bcb48e55cd3872c67
{
ignore: ["blockless-at-rules"],
},
@@ -280,7 +280,7 @@ module.exports = {
"media-query-no-invalid": null,
"stylelint-plugin-mozilla/media-query-no-invalid": true,
@@ -274,7 +274,7 @@ module.exports = {
// Remove this line setting `csscontrols/use-logical` to null after implementing fixes
"csstools/use-logical": null,
"stylelint-plugin-mozilla/no-base-design-tokens": true,
- "stylelint-plugin-mozilla/use-design-tokens": true,
+ "stylelint-plugin-mozilla/use-design-tokens": false,

View File

@@ -1,5 +1,5 @@
diff --git a/browser/base/content/browser-box.inc.xhtml b/browser/base/content/browser-box.inc.xhtml
index 4a16fe93daeefb88af024c1dac05bc1f518c3fcb..a420768e4047937c8becefb69c1017e13fc12231 100644
index 31cd4f927c273573b38021f84417101c57377902..f293e1c61d3b7a80b7dc472d927893f0439d6af9 100644
--- a/browser/base/content/browser-box.inc.xhtml
+++ b/browser/base/content/browser-box.inc.xhtml
@@ -3,12 +3,22 @@
@@ -10,7 +10,7 @@ index 4a16fe93daeefb88af024c1dac05bc1f518c3fcb..a420768e4047937c8becefb69c1017e1
+ <html:div id="zen-browser-background" class="zen-browser-generic-background">
+ <html:div class="zen-browser-grain" />
+ </html:div>
<box context="sidebar-context-menu" id="sidebar-container" class="chrome-block" hidden="true">
<box context="sidebar-context-menu" id="sidebar-main" class="chrome-block" hidden="true">
<html:sidebar-main flex="1">
<box id="vertical-tabs" slot="tabstrip" customizable="true" contextmenu="toolbar-context-menu"></box>
</html:sidebar-main>

View File

@@ -1,5 +1,5 @@
diff --git a/browser/base/content/navigator-toolbox.inc.xhtml b/browser/base/content/navigator-toolbox.inc.xhtml
index e7e94e13a990c154fb54bda4a3420ca00bdac009..8253b7d403734973729a5982cceafc12bab24f54 100644
index e7e94e13a990c154fb54bda4a3420ca00bdac009..e3b4846e1b198711d3e0047d38da1c1ed58a2ab2 100644
--- a/browser/base/content/navigator-toolbox.inc.xhtml
+++ b/browser/base/content/navigator-toolbox.inc.xhtml
@@ -2,7 +2,7 @@
@@ -55,3 +55,11 @@ index e7e94e13a990c154fb54bda4a3420ca00bdac009..8253b7d403734973729a5982cceafc12
<toolbar id="nav-bar"
class="browser-toolbar chromeclass-location"
@@ -202,7 +210,6 @@
<toolbartabstop/>
<html:moz-urlbar id="urlbar"
class="urlbar"
- popover="manual"
pageproxystate="invalid"
unifiedsearchbutton-available=""
sap-name="urlbar">

View File

@@ -1,5 +1,5 @@
diff --git a/browser/base/content/navigator-toolbox.js b/browser/base/content/navigator-toolbox.js
index 10faff18ca0c6df472de81b5dbdba83309fa2eb8..b675df9ad22150f5a1060dedbabf6cb27c951619 100644
index 1982ebadbd2df5ea309db487a4f30288f1af43e5..926c681d4733c84768a23407d60ca05859408b6d 100644
--- a/browser/base/content/navigator-toolbox.js
+++ b/browser/base/content/navigator-toolbox.js
@@ -10,7 +10,7 @@ ChromeUtils.defineESModuleGetters(this, {
@@ -37,15 +37,15 @@ index 10faff18ca0c6df472de81b5dbdba83309fa2eb8..b675df9ad22150f5a1060dedbabf6cb2
case "back-button":
case "forward-button":
case "reload-button":
@@ -331,6 +343,7 @@ document.addEventListener(
@@ -329,6 +341,7 @@ document.addEventListener(
#downloads-button,
#fxa-toolbar-menu-button,
#unified-extensions-button,
+ #zen-site-data-icon-button,
#library-button,
#ipprotection-button,
#split-view-button,
@@ -416,6 +429,16 @@ document.addEventListener(
#smartwindow-ask-button
@@ -413,6 +426,16 @@ document.addEventListener(
gUnifiedExtensions.togglePanel(event);
break;

View File

@@ -20,4 +20,5 @@
#include ../../../zen/fonts/jar.inc.mn
#include ../../../zen/boosts/jar.inc.mn
#include ../../../zen/live-folders/jar.inc.mn
#include ../../../zen/library/jar.inc.mn
#include ../../../zen/space-routing/jar.inc.mn

View File

@@ -69,5 +69,7 @@
<command id="cmd_zenNewLiveFolder" />
<command id="cmd_zenToggleLibrary" />
<command id="cmd_zenDuplicateTab" />
</commandset>

View File

@@ -9,6 +9,7 @@
<link rel="localization" href="browser/zen-menubar.ftl"/>
<link rel="localization" href="browser/zen-vertical-tabs.ftl"/>
<link rel="localization" href="browser/zen-folders.ftl"/>
<link rel="localization" href="browser/zen-library.ftl"/>
<link rel="localization" href="browser/zen-boosts.ftl"/>
<link rel="localization" href="browser/zen-live-folders.ftl"/>
<link rel="localization" href="browser/zen-space-routing.ftl"/>

View File

@@ -14,7 +14,7 @@
<hbox id="PanelUI-zen-emojis-picker-pages">
<vbox emojis="true">
<hbox id="PanelUI-zen-emojis-picker-header">
<html:input type="search" id="PanelUI-zen-emojis-picker-search" data-l10n-id="zen-emojis-picker-search" />
<html:input type="search" id="PanelUI-zen-emojis-picker-search" placeholder="Search emojis" />
</hbox>
<hbox id="PanelUI-zen-emojis-picker-list" />
</vbox>

View File

@@ -13,6 +13,7 @@
skipintoolbarset="true"
context="toolbar-context-menu"
mode="icons">
<toolbarbutton removable="true" class="chromeclass-toolbar-additional toolbarbutton-1 zen-sidebar-action-button" id="zen-library-button" command="cmd_zenToggleLibrary"></toolbarbutton>
<toolbarbutton removable="true" class="chromeclass-toolbar-additional toolbarbutton-1 zen-sidebar-action-button" id="zen-expand-sidebar-button" command="cmd_zenToggleSidebar" data-l10n-id="sidebar-zen-expand"></toolbarbutton>
<zen-workspace-icons id="zen-workspaces-button" overflows="false" removable="false"></zen-workspace-icons>
<toolbarbutton removable="true" class="chromeclass-toolbar-additional toolbarbutton-1 zen-sidebar-action-button" id="zen-create-new-button" context="zenCreateNewPopup" data-l10n-id="sidebar-zen-create-new"></toolbarbutton>

View File

@@ -1,12 +1,12 @@
diff --git a/browser/components/aiwindow/ui/modules/AIWindow.sys.mjs b/browser/components/aiwindow/ui/modules/AIWindow.sys.mjs
index 88c3545431cf1a300d968c296d9b171871b15fe5..754cd644f2e7b82db40d5c06618ac1764424484c 100644
index f6f1dd1f6b4d21d27e39b48bb7a57871ad5d019d..bf743120cf9f137cbe06d05896f706fb3d5b9435 100644
--- a/browser/components/aiwindow/ui/modules/AIWindow.sys.mjs
+++ b/browser/components/aiwindow/ui/modules/AIWindow.sys.mjs
@@ -308,6 +308,7 @@ export const AIWindow = {
@@ -287,6 +287,7 @@ export const AIWindow = {
},
_updateToolbarButtonPositions(win) {
_updateToolbarButtonPositions(win, { isToggling = false } = {}) {
+ return;
const modeSwitcherButton = win.document.getElementById("ai-window-toggle");
const hamburgerMenu = win.document.getElementById("PanelUI-button");
const hamburgerMenuShouldBeAdjacent =

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/extensions/parent/ext-browser.js b/browser/components/extensions/parent/ext-browser.js
index 91adc6bc3649af47745818e6f9d00cbbdffc35a5..e221b077dbfbe20c8696732f003bd5809d761a02 100644
index aca5a23deda6b0f2316b0e108cff20ffd7feda67..a06c90937f97a4994b0807b54984089dbe627a71 100644
--- a/browser/components/extensions/parent/ext-browser.js
+++ b/browser/components/extensions/parent/ext-browser.js
@@ -362,6 +362,7 @@ class TabTracker extends TabTrackerBase {
@@ -352,6 +352,7 @@ class TabTracker extends TabTrackerBase {
}
getId(nativeTab) {
@@ -10,15 +10,15 @@ index 91adc6bc3649af47745818e6f9d00cbbdffc35a5..e221b077dbfbe20c8696732f003bd580
let id = this._tabs.get(nativeTab);
if (id) {
return id;
@@ -395,6 +396,7 @@ class TabTracker extends TabTrackerBase {
@@ -386,6 +387,7 @@ class TabTracker extends TabTrackerBase {
if (nativeTab.documentGlobal.closed) {
throw new Error("Cannot attach ID to a tab in a closed window.");
}
+ if (nativeTab.hasAttribute("zen-empty-tab")) return;
this._tabs.set(nativeTab, id);
this._tabIds.set(id, nativeTab);
@@ -1262,6 +1264,10 @@ class TabManager extends TabManagerBase {
if (nativeTab.linkedBrowser) {
@@ -1276,6 +1278,10 @@ class TabManager extends TabManagerBase {
}
canAccessTab(nativeTab) {

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/extensions/parent/ext-tabs.js b/browser/components/extensions/parent/ext-tabs.js
index f342748d4b680a5de3a8b7c90df79f7c380b9e1c..65091cf370e00a580ae2cb1fad9cde76f10c8bd9 100644
index 8f5fdecc9394d42a1460a1b73fb8c4e92f63c41e..82c03e234289c7b00f49f73854be45fb95fb91d7 100644
--- a/browser/components/extensions/parent/ext-tabs.js
+++ b/browser/components/extensions/parent/ext-tabs.js
@@ -438,6 +438,7 @@ this.tabs = class extends ExtensionAPIPersistent {
@@ -514,6 +514,7 @@ this.tabs = class extends ExtensionAPIPersistent {
}
let tab = tabManager.getWrapper(updatedTab);
@@ -10,11 +10,11 @@ index f342748d4b680a5de3a8b7c90df79f7c380b9e1c..65091cf370e00a580ae2cb1fad9cde76
let changeInfo = {};
for (let prop of needed) {
@@ -806,6 +807,7 @@ this.tabs = class extends ExtensionAPIPersistent {
@@ -883,6 +884,7 @@ this.tabs = class extends ExtensionAPIPersistent {
});
}
+ window.gZenCompactModeManager._nextTimeWillBeActive = active;
let nativeTab = window.gBrowser.addTab(url, options);
tabTracker.addTabReadyBlocker(nativeTab);
if (active) {

View File

@@ -0,0 +1,13 @@
diff --git a/browser/components/nova/NovaPrefs.sys.mjs b/browser/components/nova/NovaPrefs.sys.mjs
index 3d22c881c481643fcffbc581523905a1847a7d41..453dd4d9c43d7483c037a993afbf2b854533497c 100644
--- a/browser/components/nova/NovaPrefs.sys.mjs
+++ b/browser/components/nova/NovaPrefs.sys.mjs
@@ -18,7 +18,7 @@ const PLATFORM_PREFS = (() => {
})();
function applyNovaPlatformDefaults() {
- const on = Services.prefs.getBoolPref("browser.nova.enabled", false);
+ const on = true;
const defaults = Services.prefs.getDefaultBranch("");
for (const pref of PLATFORM_PREFS) {
defaults.setBoolPref(pref, on);

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/places/PlacesUIUtils.sys.mjs b/browser/components/places/PlacesUIUtils.sys.mjs
index 7c11a2004c87aa6f0c61cf05ca522c7471c7be71..0f92f9925221cadbd258402f1b6a86a71fdb42e9 100644
index 7c2786cc1be512ddfc165fb8f6514131ac033040..5846aff53030ef0fad2f87d017ba3713889b474d 100644
--- a/browser/components/places/PlacesUIUtils.sys.mjs
+++ b/browser/components/places/PlacesUIUtils.sys.mjs
@@ -61,6 +61,7 @@ class BookmarkState {
@@ -157,3 +157,12 @@ index 7c11a2004c87aa6f0c61cf05ca522c7471c7be71..0f92f9925221cadbd258402f1b6a86a7
/**
* Append transactions to update tags by given information.
*
@@ -915,7 +1024,7 @@ export var PlacesUIUtils = {
aNode,
aWhere,
aWindow,
- { aPrivate = false, userContextId = 0 } = {}
+ { aPrivate = false, userContextId = undefined } = {}
) {
if (
aNode &&

View File

@@ -1,20 +0,0 @@
diff --git a/browser/components/preferences/config/account-sync.mjs b/browser/components/preferences/config/account-sync.mjs
index b503987a08e2ce64bfc01c4e3a21e5e19ef834f0..b1c03a0b219fd3eddd93c1deaeb18ab79c85f168 100644
--- a/browser/components/preferences/config/account-sync.mjs
+++ b/browser/components/preferences/config/account-sync.mjs
@@ -42,6 +42,7 @@ Preferences.addAll([
{ id: "services.sync.engine.creditcards", type: "bool" },
{ id: "services.sync.engine.addons", type: "bool" },
{ id: "services.sync.engine.prefs", type: "bool" },
+ { id: "services.sync.engine.spaces", type: "bool" },
]);
/**
@@ -546,6 +547,7 @@ const SYNC_ENGINE_SETTINGS = [
type: "payments",
},
{ id: "syncAddons", pref: "services.sync.engine.addons", type: "addons" },
+ { id: "syncSpaces", pref: "services.sync.engine.spaces", type: "workspaces" },
{ id: "syncSettings", pref: "services.sync.engine.prefs", type: "settings" },
];

View File

@@ -6,7 +6,7 @@ index 64aa0d98a0622c01f3dcfff1a04bfcda368354d2..2013e04b0881ad2295d6897b91e1573c
{ id: "services.sync.engine.passwords", type: "bool" },
{ id: "services.sync.engine.addresses", type: "bool" },
{ id: "services.sync.engine.creditcards", type: "bool" },
+ { id: "services.sync.engine.spaces", type: "bool" },
+ { id: "services.sync.engine.workspaces", type: "bool" },
]);
let gSyncChooseWhatToSync = {

View File

@@ -20,7 +20,7 @@ index a893c5ec3d007820d98f5d92dd039640faa2c181..9cbd00102e44ccf98b37845474d92d57
+ <html:div class="sync-engine-workspaces">
+ <checkbox
+ data-l10n-id="sync-engine-workspaces"
+ preference="services.sync.engine.spaces"
+ preference="services.sync.engine.workspaces"
+ />
+ </html:div>
</html:div>

View File

@@ -1,10 +1,10 @@
diff --git a/browser/components/preferences/main.js b/browser/components/preferences/main.js
index fcbd421c99b24e53e46131a1e21ec690814cbf4f..fe3778a57aaeebc53f7f6763ea234cbb41816186 100644
index c86e54bb6f5e00d9d7bdd81154857a5be97f909c..4035f6a667a361ad106e816a172342724a770435 100644
--- a/browser/components/preferences/main.js
+++ b/browser/components/preferences/main.js
@@ -662,6 +662,11 @@ function createStartupConfig(hidden = false) {
},
],
@@ -643,6 +643,11 @@ function createStartupConfig(hidden = false) {
id: "browserRestoreSession",
l10nId: "startup-restore-windows-and-tabs",
},
+ {
+ id: "zenWorkspaceContinueWhereLeftOff",
@@ -14,7 +14,7 @@ index fcbd421c99b24e53e46131a1e21ec690814cbf4f..fe3778a57aaeebc53f7f6763ea234cbb
{
id: "windowsLaunchOnLogin",
l10nId: "windows-launch-on-login",
@@ -709,7 +714,7 @@ function createStartupConfig(hidden = false) {
@@ -690,7 +695,7 @@ function createStartupConfig(hidden = false) {
SettingGroupManager.registerGroups({
defaultBrowser: createDefaultBrowserConfig(),
startup: createStartupConfig(
@@ -23,7 +23,7 @@ index fcbd421c99b24e53e46131a1e21ec690814cbf4f..fe3778a57aaeebc53f7f6763ea234cbb
),
});
@@ -762,7 +767,7 @@ function getBundleForLocales(newLocales) {
@@ -743,7 +748,7 @@ function getBundleForLocales(newLocales) {
])
);
return new Localization(

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/preferences/preferences.js b/browser/components/preferences/preferences.js
index c76a0647e14bac806d9428483bb565b3e10c31e7..2188f7808aca090f92574c7f5c55a28a9c5bb3f8 100644
index 57add34d876fb885275f1147209c6fbeee367a7c..be0ab43b299317c0022a5e719f47a070c1574714 100644
--- a/browser/components/preferences/preferences.js
+++ b/browser/components/preferences/preferences.js
@@ -131,6 +131,7 @@ ChromeUtils.defineLazyGetter(this, "gSubDialog", function () {
@@ -132,6 +132,7 @@ ChromeUtils.defineLazyGetter(this, "gSubDialog", function () {
styleSheets: [
"chrome://browser/skin/preferences/dialog.css",
"chrome://browser/skin/preferences/preferences.css",
@@ -10,7 +10,7 @@ index c76a0647e14bac806d9428483bb565b3e10c31e7..2188f7808aca090f92574c7f5c55a28a
],
resizeCallback: async ({ title, frame }) => {
// Search within main document and highlight matched keyword.
@@ -437,6 +438,8 @@ const CONFIG_PANES = Object.freeze({
@@ -437,6 +437,8 @@ const CONFIG_PANES = Object.freeze({
tabsBrowsing: {
l10nId: "tabs-browsing-section",
groupIds: [
@@ -19,7 +19,7 @@ index c76a0647e14bac806d9428483bb565b3e10c31e7..2188f7808aca090f92574c7f5c55a28a
"browserLayout",
"tabs",
"pageNavigation",
@@ -483,7 +486,7 @@ function register_module(categoryName, categoryObject) {
@@ -477,7 +480,7 @@ function register_module(categoryName, categoryObject) {
}
this._initted = true;
let template = document.getElementById("template-" + categoryName);
@@ -28,10 +28,10 @@ index c76a0647e14bac806d9428483bb565b3e10c31e7..2188f7808aca090f92574c7f5c55a28a
// Replace the template element with the nodes inside of it.
template.replaceWith(template.content);
@@ -527,6 +530,10 @@ function init_all() {
register_module("paneHome", gHomePane);
@@ -522,6 +525,10 @@ function init_all() {
register_module("paneSearch", gSearchPane);
register_module("panePrivacy", gPrivacyPane);
register_module("paneContainers", gContainersPane);
+ register_module("paneZenLooks", gZenLooksAndFeel);
+ register_module("paneZenTabManagement", gZenWorkspacesSettings);
+ register_module("paneZenCKS", gZenCKSSettings);
@@ -39,7 +39,7 @@ index c76a0647e14bac806d9428483bb565b3e10c31e7..2188f7808aca090f92574c7f5c55a28a
// Restore the cached Firefox Labs nav button visibility so it shows
// immediately when recipes are expected to be available, before
@@ -656,9 +663,9 @@ async function gotoPref(
@@ -651,9 +658,9 @@ async function gotoPref(
let redesignEnabled = srdSectionPrefs.all;
let categories = document.getElementById("categories");
const kDefaultCategoryInternalName = redesignEnabled

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/preferences/preferences.xhtml b/browser/components/preferences/preferences.xhtml
index 1b8c38159314b6edee9e6f455beb2b63db1ad3f0..1308345db640dba6b2848b49ef7c11819f9f5727 100644
index 9760a4a35b0b3bd21edec07a70c10bccc23e4a09..9f22146c259ea5b45005be660bfcb9ea2c1297ee 100644
--- a/browser/components/preferences/preferences.xhtml
+++ b/browser/components/preferences/preferences.xhtml
@@ -39,6 +39,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-control.css" />
@@ -11,7 +11,7 @@ index 1b8c38159314b6edee9e6f455beb2b63db1ad3f0..1308345db640dba6b2848b49ef7c1181
<link rel="localization" href="branding/brand.ftl"/>
<link rel="localization" href="browser/browser.ftl"/>
<!-- Used by fontbuilder.js -->
@@ -118,6 +120,26 @@
@@ -121,6 +123,26 @@
iconsrc="chrome://browser/skin/preferences/category-general.svg"
data-l10n-id="pane-general-title">
</html:moz-page-nav-button>
@@ -38,8 +38,8 @@ index 1b8c38159314b6edee9e6f455beb2b63db1ad3f0..1308345db640dba6b2848b49ef7c1181
<html:moz-page-nav-button id="category-sync"
hidden="true"
view="paneSync"
@@ -248,6 +270,10 @@
#include privacy.inc.xhtml
@@ -253,6 +275,10 @@
#include containers.inc.xhtml
#include sync.inc.xhtml
#include moreFromMozilla.inc.xhtml
+#include zenLooksAndFeel.inc.xhtml

View File

@@ -6,7 +6,7 @@ index c379e1a5f82692406a92d9fcd3bca2769dfac5b2..af037dd3d995813d966524ac44a3795d
<image class="sync-engine-image sync-engine-prefs" alt=""/>
<label data-l10n-id="sync-currently-syncing-settings"/>
</html:div>
+ <html:div engine_preference="services.sync.engine.spaces">
+ <html:div engine_preference="services.sync.engine.workspaces">
+ <image class="sync-engine-image sync-engine-workspaces" alt=""/>
+ <label data-l10n-id="sync-currently-syncing-workspaces"/>
+ </html:div>

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/tabbrowser/content/tabbrowser.js b/browser/components/tabbrowser/content/tabbrowser.js
index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645eb49d12e9 100644
index 08b5b56e069d038d72c87355920c4ce8a55ed805..209c0ddc0297adb8340180c58de07ae107790751 100644
--- a/browser/components/tabbrowser/content/tabbrowser.js
+++ b/browser/components/tabbrowser/content/tabbrowser.js
@@ -509,6 +509,7 @@
@@ -511,6 +511,7 @@
* @type {MozBrowser[]}
*/
get splitViewBrowsers() {
@@ -10,7 +10,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
const browsers = [];
if (this.#activeSplitView) {
for (const tab of this.#activeSplitView.tabs) {
@@ -578,15 +579,66 @@
@@ -584,15 +585,66 @@
return this.tabContainer.visibleTabs;
}
@@ -79,7 +79,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
set selectedTab(val) {
if (
gSharedTabWarning.willShowSharedTabWarning(val) ||
@@ -595,6 +647,9 @@
@@ -601,6 +653,9 @@
) {
return;
}
@@ -89,7 +89,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
// Update the tab
this.tabbox.selectedTab = val;
}
@@ -662,6 +717,10 @@
@@ -668,6 +723,10 @@
userContextId = parseInt(tabArgument.getAttribute("usercontextid"), 10);
}
@@ -97,10 +97,10 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
+ userContextId = window._zenStartupUnsyncedUserContextId;
+ }
+
if (openWindowInfo) {
userContextId = openWindowInfo.originAttributes.userContextId;
}
@@ -763,6 +822,8 @@
if (tabArgument && tabArgument.linkedBrowser) {
remoteType = tabArgument.linkedBrowser.remoteType;
initialBrowsingContextGroupId =
@@ -760,6 +819,8 @@
this.tabpanels.appendChild(panel);
let tab = this.tabs[0];
@@ -109,7 +109,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
tab.linkedPanel = uniqueId;
this._selectedTab = tab;
this._selectedBrowser = browser;
@@ -1129,18 +1190,24 @@
@@ -1126,18 +1187,24 @@
aTab,
{ telemetrySource = this.TabMetrics.METRIC_SOURCE.UNKNOWN } = {}
) {
@@ -135,7 +135,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
aTab.setAttribute("pinned", "true");
this._updateTabBarForPinnedTabs();
@@ -1148,16 +1215,25 @@
@@ -1145,16 +1212,25 @@
}
unpinTab(aTab) {
@@ -162,7 +162,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
});
aTab.style.marginInlineStart = "";
@@ -1372,6 +1448,9 @@
@@ -1369,6 +1445,9 @@
let LOCAL_PROTOCOLS = ["chrome:", "about:", "resource:", "data:"];
@@ -172,7 +172,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
if (
aIconURL &&
!LOCAL_PROTOCOLS.some(protocol => aIconURL.startsWith(protocol))
@@ -1381,6 +1460,9 @@
@@ -1378,6 +1457,9 @@
);
return;
}
@@ -182,23 +182,23 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
let browser = this.getBrowserForTab(aTab);
browser.mIconURL = aIconURL;
@@ -1703,7 +1785,6 @@
@@ -1700,7 +1782,6 @@
// Preview mode should not reset the owner
if (!this.#previewMode && !oldTab.selected) {
if (!this._previewMode && !oldTab.selected) {
- oldTab.owner = null;
}
let lastRelatedTab = this.#lastRelatedTabMap.get(oldTab);
@@ -1794,6 +1875,7 @@
if (!this.#previewMode) {
let lastRelatedTab = this._lastRelatedTabMap.get(oldTab);
@@ -1791,6 +1872,7 @@
if (!this._previewMode) {
newTab.recordTimeFromUnloadToReload();
newTab.updateLastAccessed();
+ newTab.removeAttribute("unread");
oldTab.updateLastAccessed();
// if this is the foreground window, update the last-seen timestamps.
if (this.documentGlobal == BrowserWindowTracker.getTopWindow()) {
@@ -2008,6 +2090,9 @@
@@ -2005,6 +2087,9 @@
}
let activeEl = document.activeElement;
@@ -208,7 +208,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
// If focus is on the old tab, move it to the new tab.
if (activeEl == oldTab) {
newTab.focus();
@@ -2046,7 +2131,7 @@
@@ -2043,7 +2128,7 @@
// Focus the location bar if it was previously focused for that tab.
// In full screen mode, only bother making the location bar visible
// if the tab is a blank one.
@@ -217,7 +217,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
let selectURL = () => {
if (this._asyncTabSwitching) {
// Set _awaitingSetURI flag to suppress popup notification
@@ -2334,7 +2419,12 @@
@@ -2331,7 +2416,12 @@
return this._setTabLabel(aTab, aLabel);
}
@@ -231,16 +231,16 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
if (!aLabel || (isURL && /^about:reader\?url=/.test(aLabel))) {
return false;
}
@@ -2460,7 +2550,7 @@
@@ -2457,7 +2547,7 @@
newIndex = this.selectedTab._tPos + 1;
}
- if (replace) {
+ if (replace && !((targetTab || this.selectedTab)?.hasAttribute('zen-empty-tab'))) {
+ if (replace && !(!targetTab && this.selectedTab?.hasAttribute('zen-empty-tab'))) {
if (this.isTabGroupLabel(targetTab)) {
throw new Error(
"Replacing a tab group label with a tab is not supported"
@@ -2735,6 +2825,7 @@
@@ -2737,6 +2827,7 @@
uriIsAboutBlank,
userContextId,
skipLoad,
@@ -248,7 +248,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
} = {}) {
let b = document.createXULElement("browser");
// Use the JSM global to create the permanentKey, so that if the
@@ -2808,8 +2899,7 @@
@@ -2810,8 +2901,7 @@
// we use a different attribute name for this?
b.setAttribute("name", name);
}
@@ -258,7 +258,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
b.setAttribute("transparent", "true");
}
@@ -2964,7 +3054,7 @@
@@ -2981,7 +3071,7 @@
let panel = this.getPanel(browser);
let uniqueId = this._generateUniquePanelID();
@@ -267,7 +267,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
aTab.linkedPanel = uniqueId;
// Inject the <browser> into the DOM if necessary.
@@ -3024,8 +3114,8 @@
@@ -3041,8 +3131,8 @@
// If we transitioned from one browser to two browsers, we need to set
// hasSiblings=false on both the existing browser and the new browser.
if (this.tabs.length == 2) {
@@ -278,7 +278,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
} else {
aTab.linkedBrowser.browsingContext.hasSiblings = this.tabs.length > 1;
}
@@ -3210,7 +3300,6 @@
@@ -3227,7 +3317,6 @@
this.selectedTab = this.addTrustedTab(BROWSER_NEW_TAB_URL, {
tabIndex: tab._tPos + 1,
userContextId: tab.userContextId,
@@ -286,7 +286,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
focusUrlBar: true,
});
resolve(this.selectedBrowser);
@@ -3320,6 +3409,10 @@
@@ -3337,6 +3426,10 @@
schemelessInput,
hasValidUserGestureActivation = false,
textDirectiveUserActivation = false,
@@ -297,7 +297,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
} = {}
) {
// all callers of addTab that pass a params object need to pass
@@ -3330,10 +3423,25 @@
@@ -3347,10 +3440,25 @@
);
}
@@ -308,7 +308,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
+
+ let hasZenDefaultUserContextId = false;
+ let zenForcedWorkspaceId = undefined;
+ if (beforeRouteResult.isRouteFound && (typeof userContextId === "undefined" || fromExternal)) {
+ if (beforeRouteResult.isRouteFound && typeof userContextId !== "undefined") {
+ userContextId = beforeRouteResult.userContextId;
+ hasZenDefaultUserContextId = true;
+ } else if (typeof gZenWorkspaces !== "undefined" && !_forZenEmptyTab) {
@@ -323,7 +323,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
// If we're opening a foreground tab, set the owner by default.
ownerTab ??= inBackground ? null : this.selectedTab;
@@ -3341,6 +3449,7 @@
@@ -3358,6 +3466,7 @@
if (this.selectedTab.owner) {
this.selectedTab.owner = null;
}
@@ -331,7 +331,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
// Find the tab that opened this one, if any. This is used for
// determining positioning, and inherited attributes such as the
@@ -3393,6 +3502,22 @@
@@ -3410,6 +3519,22 @@
noInitialLabel,
skipBackgroundNotify,
});
@@ -354,7 +354,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
if (insertTab) {
// Insert the tab into the tab container in the correct position.
this.#insertTabAtIndex(t, {
@@ -3401,6 +3526,7 @@
@@ -3418,6 +3543,7 @@
ownerTab,
openerTab,
pinned,
@@ -362,7 +362,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
bulkOrderedOpen,
tabGroup: tabGroup ?? openerTab?.group,
});
@@ -3419,6 +3545,7 @@
@@ -3436,6 +3562,7 @@
openWindowInfo,
skipLoad,
triggeringRemoteType,
@@ -370,7 +370,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
}));
if (focusUrlBar) {
@@ -3543,6 +3670,12 @@
@@ -3560,6 +3687,12 @@
}
}
@@ -383,7 +383,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
// Additionally send pinned tab events
if (pinned) {
this.#notifyPinnedStatus(t);
@@ -3553,6 +3686,15 @@
@@ -3570,6 +3703,15 @@
if (!inBackground) {
this.selectedTab = t;
}
@@ -399,7 +399,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
return t;
}
@@ -3785,6 +3927,7 @@
@@ -3802,6 +3944,7 @@
isAdoptingGroup = false,
isUserTriggered = false,
telemetryUserCreateSource = "unknown",
@@ -407,7 +407,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
} = {}
) {
if (
@@ -3795,9 +3938,6 @@
@@ -3812,9 +3955,6 @@
!this.isSplitViewWrapper(tabOrSplitView)
)
) {
@@ -417,7 +417,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
}
if (!color) {
@@ -3818,9 +3958,14 @@
@@ -3835,9 +3975,14 @@
label,
isAdoptingGroup
);
@@ -434,7 +434,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
);
group.addTabs(tabsAndSplitViews);
@@ -3941,7 +4086,7 @@
@@ -3958,7 +4103,7 @@
}
this.#handleTabMove(tab, () =>
@@ -443,7 +443,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
);
}
@@ -4027,6 +4172,7 @@
@@ -4044,6 +4189,7 @@
color: group.color,
insertBefore: newTabs[0],
isAdoptingGroup: true,
@@ -451,7 +451,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
});
}
@@ -4237,6 +4383,7 @@
@@ -4254,6 +4400,7 @@
openWindowInfo,
skipLoad,
triggeringRemoteType,
@@ -459,7 +459,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
}
) {
// If we don't have a preferred remote type (or it is `NOT_REMOTE`), and
@@ -4297,6 +4444,7 @@
@@ -4323,6 +4470,7 @@
openWindowInfo,
name,
skipLoad,
@@ -467,7 +467,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
});
}
@@ -4510,9 +4658,9 @@
@@ -4536,9 +4684,9 @@
}
// Add a new tab if needed.
@@ -479,7 +479,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
let url = "about:blank";
if (tabData.entries?.length) {
@@ -4545,8 +4693,10 @@
@@ -4575,8 +4723,10 @@
insertTab: false,
skipLoad: true,
preferredRemoteType,
@@ -491,7 +491,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
if (select) {
tabToSelect = tab;
}
@@ -4568,7 +4718,8 @@
@@ -4598,7 +4748,8 @@
this.pinTab(tab);
// Then ensure all the tab open/pinning information is sent.
this._fireTabOpen(tab, {});
@@ -501,7 +501,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
let { groupId } = tabData;
const tabGroup = tabGroupWorkingData.get(groupId);
// if a tab refers to a tab group we don't know, skip any group
@@ -4588,7 +4739,10 @@
@@ -4618,7 +4769,10 @@
tabGroup.stateData.id,
tabGroup.stateData.color,
tabGroup.stateData.collapsed,
@@ -513,7 +513,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
);
tabsFragment.appendChild(tabGroup.node);
}
@@ -4643,9 +4797,21 @@
@@ -4673,9 +4827,21 @@
// to remove the old selected tab.
if (tabToSelect) {
let leftoverTab = this.selectedTab;
@@ -535,7 +535,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
if (tabs.length > 1 || !tabs[0].selected) {
this._updateTabsAfterInsert();
@@ -4836,11 +5002,17 @@
@@ -4866,11 +5032,17 @@
if (ownerTab) {
tab.owner = ownerTab;
}
@@ -554,16 +554,16 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
if (
!bulkOrderedOpen &&
((openerTab &&
@@ -4852,7 +5024,7 @@
@@ -4882,7 +5054,7 @@
let lastRelatedTab =
openerTab && this.#lastRelatedTabMap.get(openerTab);
openerTab && this._lastRelatedTabMap.get(openerTab);
let previousTab = lastRelatedTab || openerTab || this.selectedTab;
- if (!tabGroup) {
+ if (!tabGroup && pinned === previousTab.group?.pinned) {
tabGroup = previousTab.group;
}
if (
@@ -4868,7 +5040,7 @@
@@ -4898,7 +5070,7 @@
previousTab.splitview
) + 1;
} else if (previousTab.visible) {
@@ -572,7 +572,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
} else if (previousTab == FirefoxViewHandler.tab) {
elementIndex = 0;
}
@@ -4896,14 +5068,14 @@
@@ -4926,14 +5098,14 @@
}
// Ensure index is within bounds.
if (tab.pinned) {
@@ -591,7 +591,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
if (pinned && !itemAfter?.pinned) {
itemAfter = null;
@@ -4920,7 +5092,7 @@
@@ -4950,7 +5122,7 @@
this.tabContainer._invalidateCachedTabs();
@@ -600,7 +600,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
if (
(this.isTab(itemAfter) && itemAfter.group == tabGroup) ||
this.isSplitViewWrapper(itemAfter)
@@ -4951,7 +5123,11 @@
@@ -4981,7 +5153,11 @@
const tabContainer = pinned
? this.tabContainer.pinnedTabsContainer
: this.tabContainer;
@@ -612,7 +612,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
}
if (tab.group?.collapsed) {
@@ -4966,6 +5142,7 @@
@@ -4996,6 +5172,7 @@
if (pinned) {
this._updateTabBarForPinnedTabs();
}
@@ -620,7 +620,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
TabBarVisibility.update();
}
@@ -5514,6 +5691,7 @@
@@ -5544,6 +5721,7 @@
telemetrySource,
} = {}
) {
@@ -628,7 +628,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
// When 'closeWindowWithLastTab' pref is enabled, closing all tabs
// can be considered equivalent to closing the window.
if (
@@ -5603,6 +5781,7 @@
@@ -5633,6 +5811,7 @@
if (lastToClose) {
this.removeTab(lastToClose, aParams);
}
@@ -636,7 +636,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
} catch (e) {
console.error(e);
}
@@ -5648,6 +5827,14 @@
@@ -5678,6 +5857,14 @@
return;
}
@@ -651,7 +651,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
let isVisibleTab = aTab.visible;
// We have to sample the tab width now, since _beginRemoveTab might
// end up modifying the DOM in such a way that aTab gets a new
@@ -5655,6 +5842,9 @@
@@ -5685,6 +5872,9 @@
// state).
let tabWidth = window.windowUtils.getBoundsWithoutFlushing(aTab).width;
let isLastTab = this.#isLastTabInWindow(aTab);
@@ -661,7 +661,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
if (
!this._beginRemoveTab(aTab, {
closeWindowFastpath: true,
@@ -5666,13 +5856,14 @@
@@ -5696,13 +5886,14 @@
telemetrySource,
})
) {
@@ -677,7 +677,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
let lockTabSizing =
!this.tabContainer.verticalMode &&
!aTab.pinned &&
@@ -5703,7 +5894,13 @@
@@ -5733,7 +5924,13 @@
// We're not animating, so we can cancel the animation stopwatch.
Glean.browserTabclose.timeAnim.cancel(aTab._closeTimeAnimTimerId);
aTab._closeTimeAnimTimerId = null;
@@ -692,16 +692,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
return;
}
@@ -5746,7 +5943,7 @@
*/
#isLastTabInWindow(tab) {
for (const otherTab of this.tabs) {
- if (otherTab != tab && otherTab.isOpen && !otherTab.hidden) {
+ if (otherTab != tab && otherTab.isOpen && !otherTab.hidden && !otherTab.hasAttribute("zen-empty-tab")) {
return false;
}
}
@@ -5837,7 +6034,7 @@
@@ -5867,7 +6064,7 @@
closeWindowWithLastTab != null
? closeWindowWithLastTab
: !window.toolbar.visible ||
@@ -710,7 +701,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
if (closeWindow) {
// We've already called beforeunload on all the relevant tabs if we get here,
@@ -5861,6 +6058,7 @@
@@ -5891,6 +6088,7 @@
newTab = true;
}
@@ -718,7 +709,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
aTab._endRemoveArgs = [closeWindow, newTab];
// swapBrowsersAndCloseOther will take care of closing the window without animation.
@@ -5901,13 +6099,7 @@
@@ -5931,13 +6129,7 @@
aTab._mouseleave();
if (newTab) {
@@ -733,15 +724,15 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
} else {
TabBarVisibility.update();
}
@@ -6040,6 +6232,7 @@
@@ -6070,6 +6262,7 @@
this.tabs[i]._tPos = i;
}
+ gZenWorkspaces.updateTabsContainers();
if (!this.#windowIsClosing) {
if (!this._windowIsClosing) {
// update tab close buttons state
this.tabContainer._updateCloseButtons();
@@ -6225,6 +6418,7 @@
@@ -6255,6 +6448,7 @@
memory_after: await getTotalMemoryUsage(),
time_to_unload_in_ms: timeElapsed,
});
@@ -749,7 +740,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
}
/**
@@ -6270,6 +6464,7 @@
@@ -6300,6 +6494,7 @@
}
let excludeTabs = new Set(aExcludeTabs);
@@ -757,7 +748,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
// If this tab has a successor, it should be selectable, since
// hiding or closing a tab removes that tab as a successor.
@@ -6282,15 +6477,22 @@
@@ -6312,15 +6507,22 @@
!excludeTabs.has(aTab.owner) &&
Services.prefs.getBoolPref("browser.tabs.selectOwnerOnClose")
) {
@@ -782,7 +773,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
let tab = this.tabContainer.findNextTab(aTab, {
direction: 1,
filter: _tab => remainingTabs.includes(_tab),
@@ -6304,7 +6506,7 @@
@@ -6334,7 +6536,7 @@
}
if (tab) {
@@ -791,7 +782,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
}
// If no qualifying visible tab was found, see if there is a tab in
@@ -6325,7 +6527,7 @@
@@ -6355,7 +6557,7 @@
});
}
@@ -800,7 +791,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
}
_blurTab(aTab) {
@@ -6336,7 +6538,7 @@
@@ -6366,7 +6568,7 @@
* @returns {boolean}
* False if swapping isn't permitted, true otherwise.
*/
@@ -809,7 +800,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
// Do not allow transfering a private tab to a non-private window
// and vice versa.
if (
@@ -6390,6 +6592,7 @@
@@ -6420,6 +6622,7 @@
// fire the beforeunload event in the process. Close the other
// window if this was its last tab.
if (
@@ -817,7 +808,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
!remoteBrowser._beginRemoveTab(aOtherTab, {
adoptedByTab: aOurTab,
closeWindowWithLastTab: true,
@@ -6401,7 +6604,7 @@
@@ -6431,7 +6634,7 @@
// If this is the last tab of the window, hide the window
// immediately without animation before the docshell swap, to avoid
// about:blank being painted.
@@ -826,7 +817,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
if (closeWindow) {
let win = aOtherTab.documentGlobal;
win.windowUtils.suppressAnimation(true);
@@ -6535,11 +6738,13 @@
@@ -6565,11 +6768,13 @@
}
// Finish tearing down the tab that's going away.
@@ -840,7 +831,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
this.setTabTitle(aOurTab);
@@ -6759,10 +6964,10 @@
@@ -6771,10 +6976,10 @@
SessionStore.deleteCustomTabValue(aTab, "hiddenBy");
}
@@ -853,7 +844,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
aTab.selected ||
aTab.closing ||
// Tabs that are sharing the screen, microphone or camera cannot be hidden.
@@ -6822,7 +7027,8 @@
@@ -6834,7 +7039,8 @@
* @param {object} [aOptions={}]
* Key-value pairs that will be serialized into the features string.
*/
@@ -863,7 +854,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
if (this.tabs.length == 1) {
return null;
}
@@ -6839,7 +7045,7 @@
@@ -6851,7 +7057,7 @@
// tell a new window to take the "dropped" tab
let args = Cc["@mozilla.org/array;1"].createInstance(Ci.nsIMutableArray);
args.appendElement(aTab.splitview ?? aTab);
@@ -872,7 +863,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
private: PrivateBrowsingUtils.isWindowPrivate(window),
features: Object.entries(aOptions)
.map(([key, value]) => `${key}=${value}`)
@@ -6847,6 +7053,8 @@
@@ -6859,6 +7065,8 @@
openerWindow: window,
args,
});
@@ -881,7 +872,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
}
/**
@@ -6959,7 +7167,7 @@
@@ -6971,7 +7179,7 @@
* `true` if element is a `<tab-group>`
*/
isTabGroup(element) {
@@ -890,7 +881,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
}
/**
@@ -7044,8 +7252,8 @@
@@ -7056,8 +7264,8 @@
}
// Don't allow mixing pinned and unpinned tabs.
@@ -901,7 +892,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
} else {
tabIndex = Math.max(tabIndex, this.pinnedTabCount);
}
@@ -7091,8 +7299,8 @@
@@ -7103,8 +7311,8 @@
this.#handleTabMove(
element,
() => {
@@ -912,7 +903,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
neighbor = neighbor.group;
}
if (neighbor?.splitview) {
@@ -7103,6 +7311,12 @@
@@ -7115,6 +7323,12 @@
return;
}
}
@@ -925,7 +916,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
if (movingForwards && neighbor) {
neighbor.after(element);
@@ -7161,23 +7375,31 @@
@@ -7173,23 +7387,31 @@
#moveTabNextTo(element, targetElement, moveBefore = false, metricsContext) {
if (this.isTabGroupLabel(targetElement)) {
targetElement = targetElement.group;
@@ -963,7 +954,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
} else if (!element.pinned && targetElement && targetElement.pinned) {
// If the caller asks to move an unpinned element next to a pinned
// tab, move the unpinned element to be the first unpinned element
@@ -7190,12 +7412,35 @@
@@ -7202,12 +7424,35 @@
// move the tab group right before the first unpinned tab.
// 4. Moving a tab group and the first unpinned tab is grouped:
// move the tab group right before the first unpinned tab's tab group.
@@ -1000,7 +991,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
// We want to include the splitview wrapper if it's the targetElement, but
// not in the case where we want to reverse tabs within the same splitview.
@@ -7204,6 +7449,7 @@
@@ -7216,6 +7461,7 @@
}
let getContainer = () =>
@@ -1008,7 +999,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
element.pinned
? this.tabContainer.pinnedTabsContainer
: this.tabContainer;
@@ -7212,11 +7458,15 @@
@@ -7224,11 +7470,15 @@
element,
() => {
if (moveBefore) {
@@ -1025,7 +1016,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
}
},
metricsContext
@@ -7290,11 +7540,15 @@
@@ -7302,11 +7552,15 @@
* @param {TabMetricsContext} [metricsContext]
*/
moveTabToExistingGroup(aTab, aGroup, metricsContext) {
@@ -1044,7 +1035,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
}
if (aTab.group && aTab.group.id === aGroup.id) {
return;
@@ -7366,6 +7620,7 @@
@@ -7378,6 +7632,7 @@
let state = {
tabIndex: tab._tPos,
@@ -1052,7 +1043,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
};
if (tab.visible) {
state.elementIndex = tab.elementIndex;
@@ -7397,7 +7652,7 @@
@@ -7409,7 +7664,7 @@
let changedSplitView =
previousTabState.splitViewId != currentTabState.splitViewId;
@@ -1061,7 +1052,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
tab.dispatchEvent(
new CustomEvent("TabMove", {
bubbles: true,
@@ -7444,6 +7699,10 @@
@@ -7456,6 +7711,10 @@
moveActionCallback();
@@ -1072,7 +1063,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
// Clear tabs cache after moving nodes because the order of tabs may have
// changed.
this.tabContainer._invalidateCachedTabs();
@@ -7494,7 +7753,22 @@
@@ -7506,7 +7765,22 @@
* @returns {object}
* The new tab in the current window, null if the tab couldn't be adopted.
*/
@@ -1096,7 +1087,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
// 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
// windows). We also ensure that the tab we create to swap into has
@@ -7537,6 +7811,8 @@
@@ -7549,6 +7823,8 @@
}
params.skipLoad = true;
let newTab = this.addWebTab("about:blank", params);
@@ -1105,7 +1096,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
aTab.container.tabDragAndDrop.finishAnimateTabMove();
@@ -8247,7 +8523,7 @@
@@ -8259,7 +8535,7 @@
// preventDefault(). It will still raise the window if appropriate.
return;
}
@@ -1114,7 +1105,7 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
window.focus();
aEvent.preventDefault();
}
@@ -8264,7 +8540,6 @@
@@ -8276,7 +8552,6 @@
on_TabGroupCollapse(aEvent) {
aEvent.target.tabs.forEach(tab => {
@@ -1122,38 +1113,38 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
});
}
@@ -8618,7 +8893,9 @@
@@ -8630,7 +8905,9 @@
let filter = this.#tabFilters.get(tab);
let filter = this._tabFilters.get(tab);
if (filter) {
+ try {
browser.webProgress.removeProgressListener(filter);
+ } catch {}
let listener = this.#tabListeners.get(tab);
let listener = this._tabListeners.get(tab);
if (listener) {
@@ -9423,6 +9700,7 @@
@@ -9435,6 +9712,7 @@
aWebProgress.isTopLevel
) {
this._tab.setAttribute("busy", "true");
+ if (!this._tab.selected) this._tab.setAttribute("unread", "true");
gBrowser._tabAttrModified(this._tab, ["busy"]);
this._tab._notselectedsinceload = !this._tab.selected;
this.mTab.setAttribute("busy", "true");
+ if (!this.mTab.selected) this.mTab.setAttribute("unread", "true");
gBrowser._tabAttrModified(this.mTab, ["busy"]);
this.mTab._notselectedsinceload = !this.mTab.selected;
}
@@ -9503,6 +9781,7 @@
@@ -9515,6 +9793,7 @@
// known defaults. Note we use the original URL since about:newtab
// redirects to a prerendered page.
const shouldRemoveFavicon =
+ !this._tab.zenStaticIcon &&
!this._browser.mIconURL &&
+ !this.mTab.zenStaticIcon &&
!this.mBrowser.mIconURL &&
!ignoreBlank &&
!(originalLocation.spec in FAVICON_DEFAULTS);
@@ -9677,13 +9956,6 @@
this._browser.originalURI = aRequest.originalURI;
@@ -9689,13 +9968,6 @@
this.mBrowser.originalURI = aRequest.originalURI;
}
- if (!gBrowser._allowTransparentBrowser) {
- this._browser.toggleAttribute(
- this.mBrowser.toggleAttribute(
- "transparent",
- AIWindow.isAIWindowActive(window) &&
- AIWindow.isAIWindowContentPage(aLocation)
@@ -1161,8 +1152,8 @@ index c42b1a1a8df6b38886c17f71ea88e5aaa7eebc80..c741404ed973ee3ac246fe246c0f645e
- }
}
let userContextId = this._browser.getAttribute("usercontextid") || 0;
@@ -10532,7 +10804,8 @@ var TabContextMenu = {
let userContextId = this.mBrowser.getAttribute("usercontextid") || 0;
@@ -10587,7 +10859,8 @@ var TabContextMenu = {
);
contextUnpinSelectedTabs.hidden =
!this.contextTab.pinned || !this.multiselected;

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/urlbar/UrlbarProvidersManager.sys.mjs b/browser/components/urlbar/UrlbarProvidersManager.sys.mjs
index d2e2415e6b7c8833617dd1d4d01b16b110afbfa5..4a1e6e0940789b55144afd0566ecb91d88f7d590 100644
index 8de151f473ac6b95bc606251f78a4bede093ee0c..dbd302259c54b0196a370b9ff12ba0dcf1545272 100644
--- a/browser/components/urlbar/UrlbarProvidersManager.sys.mjs
+++ b/browser/components/urlbar/UrlbarProvidersManager.sys.mjs
@@ -914,6 +914,7 @@ export class Query {
@@ -913,6 +913,7 @@ export class Query {
if (
result.heuristic &&
this.context.searchMode &&
@@ -10,21 +10,21 @@ index d2e2415e6b7c8833617dd1d4d01b16b110afbfa5..4a1e6e0940789b55144afd0566ecb91d
(!this.context.trimmedSearchString ||
(!this.context.searchMode.engineName && !result.autofill))
) {
@@ -1044,6 +1045,7 @@ function updateSourcesIfEmpty(context) {
lazy.UrlbarShared.TOKEN_TYPE.RESTRICT_TITLE,
lazy.UrlbarShared.TOKEN_TYPE.RESTRICT_URL,
lazy.UrlbarShared.TOKEN_TYPE.RESTRICT_ACTION,
+ lazy.UrlbarShared.TOKEN_TYPE.RESTRICT_WORKSPACE,
@@ -1043,6 +1044,7 @@ function updateSourcesIfEmpty(context) {
lazy.UrlbarTokenizer.TYPE.RESTRICT_TITLE,
lazy.UrlbarTokenizer.TYPE.RESTRICT_URL,
lazy.UrlbarTokenizer.TYPE.RESTRICT_ACTION,
+ lazy.UrlbarTokenizer.TYPE.RESTRICT_WORKSPACE,
].includes(t.type)
);
@@ -1103,6 +1105,14 @@ function updateSourcesIfEmpty(context) {
@@ -1100,6 +1102,14 @@ function updateSourcesIfEmpty(context) {
acceptedSources.push(source);
}
break;
+ case lazy.UrlbarUtils.RESULT_SOURCE.WORKSPACES:
+ if (
+ restrictTokenType === lazy.UrlbarShared.TOKEN_TYPE.RESTRICT_WORKSPACE ||
+ restrictTokenType === lazy.UrlbarTokenizer.TYPE.RESTRICT_WORKSPACE ||
+ !restrictTokenType
+ ) {
+ acceptedSources.push(source);

View File

@@ -0,0 +1,15 @@
diff --git a/browser/components/urlbar/UrlbarResult.sys.mjs b/browser/components/urlbar/UrlbarResult.sys.mjs
index 21f7938f76375e7230f9509e4932cafa4d0e57f2..ab96b160b6c65da3bf267d9fe2f1f35c7507466e 100644
--- a/browser/components/urlbar/UrlbarResult.sys.mjs
+++ b/browser/components/urlbar/UrlbarResult.sys.mjs
@@ -181,6 +181,10 @@ export class UrlbarResult {
return this.#heuristic;
}
+ set heuristic(value) {
+ this.#heuristic = value;
+ }
+
get hideRowLabel() {
return this.#hideRowLabel;
}

View File

@@ -0,0 +1,28 @@
diff --git a/browser/components/urlbar/UrlbarTokenizer.sys.mjs b/browser/components/urlbar/UrlbarTokenizer.sys.mjs
index d4af0ee5138a69139b94d898fb07e2345172f025..f750aae3f9f0a849ca009784510575b2b7119e6d 100644
--- a/browser/components/urlbar/UrlbarTokenizer.sys.mjs
+++ b/browser/components/urlbar/UrlbarTokenizer.sys.mjs
@@ -66,6 +66,7 @@ export var UrlbarTokenizer = {
// `looksLikeOrigin()` returned `LOOKS_LIKE_ORIGIN.OTHER` for this token. It
// may or may not be an origin.
POSSIBLE_ORIGIN_BUT_SEARCH_ALLOWED: 12,
+ RESTRICT_WORKSPACE: 13,
}),
// The special characters below can be typed into the urlbar to restrict
@@ -83,6 +84,7 @@ export var UrlbarTokenizer = {
TITLE: "#",
URL: "$",
ACTION: ">",
+ WORKSPACE: "`",
}),
// The keys of characters in RESTRICT that will enter search mode.
@@ -97,6 +99,7 @@ export var UrlbarTokenizer = {
if (lazy.UrlbarPrefs.get("scotchBonnet.enableOverride")) {
keys.push(this.RESTRICT.ACTION);
}
+ keys.push(this.RESTRICT.WORKSPACE);
return new Set(keys);
},

View File

@@ -26,7 +26,7 @@ index aa7c67f2bfaa3f15d592a14b527a8721dfc9bc6f..d2fe012796ea3a5be05090a732011b3c
},
+ {
+ source: this.RESULT_SOURCE.WORKSPACES,
+ restrict: lazy.UrlbarShared.RESTRICT_TOKENS.WORKSPACE,
+ restrict: lazy.UrlbarTokenizer.RESTRICT.WORKSPACE,
+ icon: "chrome://browser/skin/zen-icons/selectable/layers.svg",
+ pref: "shortcuts.workspaces",
+ telemetryLabel: "workspaces",

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/urlbar/UrlbarValueFormatter.sys.mjs b/browser/components/urlbar/UrlbarValueFormatter.sys.mjs
index 7ccffa60be42ba5e554b0e91bc831c56c24dfb42..ca5d6f983490f6cfc392c92f3570a5fb1bb3c43d 100644
index 8def83509f097ba034b9d94ae00d2ee474ec2d30..ebdb84b9af928b132b848bd4c5bb506d813e5e06 100644
--- a/browser/components/urlbar/UrlbarValueFormatter.sys.mjs
+++ b/browser/components/urlbar/UrlbarValueFormatter.sys.mjs
@@ -77,7 +77,7 @@ export class UrlbarValueFormatter {
@@ -11,7 +11,7 @@ index 7ccffa60be42ba5e554b0e91bc831c56c24dfb42..ca5d6f983490f6cfc392c92f3570a5fb
});
}
@@ -126,6 +126,18 @@ export class UrlbarValueFormatter {
@@ -105,6 +105,18 @@ export class UrlbarValueFormatter {
}
#ensureFormattedHostVisible(urlMetaData) {
@@ -30,7 +30,7 @@ index 7ccffa60be42ba5e554b0e91bc831c56c24dfb42..ca5d6f983490f6cfc392c92f3570a5fb
// Make sure the host is always visible. Since it is aligned on
// the first strong directional character, we set scrollLeft
// appropriately to ensure the domain stays visible in case of an
@@ -403,7 +415,7 @@ export class UrlbarValueFormatter {
@@ -381,7 +393,7 @@ export class UrlbarValueFormatter {
* @returns {boolean}
* True if formatting was applied and false if not.
*/
@@ -39,15 +39,11 @@ index 7ccffa60be42ba5e554b0e91bc831c56c24dfb42..ca5d6f983490f6cfc392c92f3570a5fb
let urlMetaData = this.#getUrlMetaData();
if (!urlMetaData) {
return false;
@@ -688,9 +700,10 @@ export class UrlbarValueFormatter {
) {
// The host range is no longer valid.
this.#removeURLFormat();
- this.#formatURL();
+ this._formatURL();
} else {
this.#ensureFormattedHostVisible();
+ this._formatURL();
}
@@ -650,6 +662,7 @@ export class UrlbarValueFormatter {
this.#window.requestAnimationFrame(() => {
if (instance == this.#resizeInstance) {
this.#ensureFormattedHostVisible();
+ this._formatURL();
}
});
}, 100);

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/urlbar/content/UrlbarView.mjs b/browser/components/urlbar/content/UrlbarView.mjs
index 8afb2bf4a757b3ef7902f5a6e6eed6b70ca2845e..440dea1e66540ca1998cb7464b6695ac823fedcb 100644
--- a/browser/components/urlbar/content/UrlbarView.mjs
+++ b/browser/components/urlbar/content/UrlbarView.mjs
@@ -674,7 +674,7 @@ export class UrlbarView {
diff --git a/browser/components/urlbar/UrlbarView.sys.mjs b/browser/components/urlbar/UrlbarView.sys.mjs
index b665adb1a1ce8bbae8df4cbea6c3248c3e4fb431..1de7f9461b8ccbd4680b917e6dd5ba3c02f69a94 100644
--- a/browser/components/urlbar/UrlbarView.sys.mjs
+++ b/browser/components/urlbar/UrlbarView.sys.mjs
@@ -640,7 +640,7 @@ export class UrlbarView {
!this.input.value ||
this.input.getAttribute("pageproxystate") == "valid"
) {
@@ -11,7 +11,7 @@ index 8afb2bf4a757b3ef7902f5a6e6eed6b70ca2845e..440dea1e66540ca1998cb7464b6695ac
// Try to reuse the cached top-sites context. If it's not cached, then
// there will be a gap of time between when the input is focused and
// when the view opens that can be perceived as flicker.
@@ -812,10 +812,6 @@ export class UrlbarView {
@@ -777,10 +777,6 @@ export class UrlbarView {
}
// If search mode isn't active, close the view.
@@ -22,7 +22,7 @@ index 8afb2bf4a757b3ef7902f5a6e6eed6b70ca2845e..440dea1e66540ca1998cb7464b6695ac
// Search mode is active. If the one-offs should be shown, make sure they
// are enabled and show the view.
@@ -3031,6 +3027,8 @@ export class UrlbarView {
@@ -2988,6 +2984,8 @@ export class UrlbarView {
if (row?.hasAttribute("row-selectable")) {
row?.toggleAttribute("selected", true);
}
@@ -31,7 +31,7 @@ index 8afb2bf4a757b3ef7902f5a6e6eed6b70ca2845e..440dea1e66540ca1998cb7464b6695ac
if (element != row) {
row?.toggleAttribute("descendant-selected", true);
}
@@ -3544,7 +3542,7 @@ export class UrlbarView {
@@ -3477,7 +3475,7 @@ export class UrlbarView {
}
#enableOrDisableRowWrap() {

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/urlbar/content/UrlbarInput.mjs b/browser/components/urlbar/content/UrlbarInput.mjs
index 0b1b4b2f0f8d6b0fb126aa1224409ab6f1ffb8d8..942c6e1e3b6cd9de65df54a1d83884f2633c1284 100644
index 0fba59d62af9d3cd05bfee2cf84cd8b7cf9bfd6e..fdf4f8a89fc35a6cf214fb0213f6cd03fb88add9 100644
--- a/browser/components/urlbar/content/UrlbarInput.mjs
+++ b/browser/components/urlbar/content/UrlbarInput.mjs
@@ -98,6 +98,13 @@ const lazy = XPCOMUtils.declareLazy({
@@ -61,10 +61,10 @@ index 0b1b4b2f0f8d6b0fb126aa1224409ab6f1ffb8d8..942c6e1e3b6cd9de65df54a1d83884f2
}
/**
@@ -1630,7 +1659,11 @@ ${
openParams.avoidBrowserFocus = keepViewOpen;
@@ -1627,7 +1656,11 @@ ${
}
if (!this.#providesSearchMode(result) && !keepViewOpen) {
if (!this.#providesSearchMode(result)) {
- this.view.close({ elementPicked: true });
+ if (this._zenHandleUrlbarClose) {
+ this._zenHandleUrlbarClose(true, true);
@@ -74,7 +74,7 @@ index 0b1b4b2f0f8d6b0fb126aa1224409ab6f1ffb8d8..942c6e1e3b6cd9de65df54a1d83884f2
}
if (isCanonized) {
@@ -2940,6 +2973,42 @@ ${
@@ -2936,6 +2969,42 @@ ${
await this.#updateLayoutBreakoutDimensions();
}
@@ -117,10 +117,15 @@ index 0b1b4b2f0f8d6b0fb126aa1224409ab6f1ffb8d8..942c6e1e3b6cd9de65df54a1d83884f2
startLayoutExtend() {
if (!this.#allowBreakout || this.hasAttribute("breakout-extend")) {
// Do not expand if the Urlbar does not support being expanded or it is
@@ -2957,6 +3026,13 @@ ${
this.toggleAttribute("breakout-extend", true);
@@ -2950,10 +3019,18 @@ ${
return;
}
+ this.setAttribute("popover", "manual");
this.#updateTextboxPosition();
this.toggleAttribute("breakout-extend", true);
+ this.window.gZenUIManager.onUrlbarOpen();
+ if (this.zenUrlbarBehavior == 'float' || (this.zenUrlbarBehavior == 'floating-on-type' && !this.focusedViaMousedown)) {
+ this.setAttribute("zen-floating-urlbar", "true");
@@ -131,7 +136,7 @@ index 0b1b4b2f0f8d6b0fb126aa1224409ab6f1ffb8d8..942c6e1e3b6cd9de65df54a1d83884f2
// Enable the animation only after the first extend call to ensure it
// doesn't run when opening a new window.
if (!this.hasAttribute("breakout-extend-animate")) {
@@ -2984,6 +3060,29 @@ ${
@@ -2981,7 +3058,31 @@ ${
return;
}
@@ -159,9 +164,11 @@ index 0b1b4b2f0f8d6b0fb126aa1224409ab6f1ffb8d8..942c6e1e3b6cd9de65df54a1d83884f2
+ this.removeAttribute("zen-floating-urlbar");
+
this.toggleAttribute("breakout-extend", false);
+ this.removeAttribute("popover");
this.#updateTextboxPosition();
}
@@ -3031,7 +3130,7 @@ ${
@@ -3028,7 +3129,7 @@ ${
forceUnifiedSearchButtonAvailable = false
) {
let prevState = this.getAttribute("pageproxystate");
@@ -170,7 +177,7 @@ index 0b1b4b2f0f8d6b0fb126aa1224409ab6f1ffb8d8..942c6e1e3b6cd9de65df54a1d83884f2
this.setAttribute("pageproxystate", state);
this._inputContainer.setAttribute("pageproxystate", state);
this._identityBox?.setAttribute("pageproxystate", state);
@@ -3314,10 +3413,12 @@ ${
@@ -3309,10 +3410,12 @@ ${
}
this.style.top = px(
@@ -183,7 +190,7 @@ index 0b1b4b2f0f8d6b0fb126aa1224409ab6f1ffb8d8..942c6e1e3b6cd9de65df54a1d83884f2
);
}
@@ -3376,9 +3477,10 @@ ${
@@ -3371,9 +3474,10 @@ ${
return;
}
@@ -195,7 +202,7 @@ index 0b1b4b2f0f8d6b0fb126aa1224409ab6f1ffb8d8..942c6e1e3b6cd9de65df54a1d83884f2
);
this.style.setProperty(
"--urlbar-height",
@@ -3883,6 +3985,7 @@ ${
@@ -3878,6 +3982,7 @@ ${
}
_toggleActionOverride(event) {
@@ -203,7 +210,7 @@ index 0b1b4b2f0f8d6b0fb126aa1224409ab6f1ffb8d8..942c6e1e3b6cd9de65df54a1d83884f2
if (
event.keyCode == KeyEvent.DOM_VK_SHIFT ||
event.keyCode == KeyEvent.DOM_VK_ALT ||
@@ -3995,8 +4098,8 @@ ${
@@ -3990,8 +4095,8 @@ ${
if (!this.#isAddressbar) {
return val;
}
@@ -214,15 +221,15 @@ index 0b1b4b2f0f8d6b0fb126aa1224409ab6f1ffb8d8..942c6e1e3b6cd9de65df54a1d83884f2
: val;
// Only trim value if the directionality doesn't change to RTL and we're not
// showing a strikeout https protocol.
@@ -4298,6 +4401,7 @@ ${
browser = this.window.gBrowser.selectedBrowser,
keepViewOpen = false
@@ -4290,6 +4395,7 @@ ${
resultDetails = null,
browser = this.window.gBrowser.selectedBrowser
) {
+ openUILinkWhere = this.window.gZenUIManager.getOpenUILinkWhere(url, browser, openUILinkWhere);
if (this.#isAddressbar) {
this.#prepareAddressbarLoad(
url,
@@ -4411,6 +4515,10 @@ ${
@@ -4401,6 +4507,10 @@ ${
}
reuseEmpty = true;
}
@@ -233,7 +240,7 @@ index 0b1b4b2f0f8d6b0fb126aa1224409ab6f1ffb8d8..942c6e1e3b6cd9de65df54a1d83884f2
if (
where == "tab" &&
reuseEmpty &&
@@ -4418,6 +4526,9 @@ ${
@@ -4408,6 +4518,9 @@ ${
) {
where = "current";
}
@@ -243,7 +250,7 @@ index 0b1b4b2f0f8d6b0fb126aa1224409ab6f1ffb8d8..942c6e1e3b6cd9de65df54a1d83884f2
return where;
}
@@ -4672,6 +4783,7 @@ ${
@@ -4662,6 +4775,7 @@ ${
this.setResultForCurrentValue(null);
this.handleCommand();
this.controller.clearLastQueryContextCache();
@@ -251,7 +258,7 @@ index 0b1b4b2f0f8d6b0fb126aa1224409ab6f1ffb8d8..942c6e1e3b6cd9de65df54a1d83884f2
this._suppressStartQuery = false;
});
@@ -4679,7 +4791,6 @@ ${
@@ -4669,7 +4783,6 @@ ${
contextMenu.addEventListener("popupshowing", () => {
// Close the results pane when the input field contextual menu is open,
// because paste and go doesn't want a result selection.
@@ -259,7 +266,7 @@ index 0b1b4b2f0f8d6b0fb126aa1224409ab6f1ffb8d8..942c6e1e3b6cd9de65df54a1d83884f2
let controller =
this.document.commandDispatcher.getControllerForCommand("cmd_paste");
@@ -4842,7 +4953,11 @@ ${
@@ -4825,7 +4938,11 @@ ${
if (!engineName && !source && !this.hasAttribute("searchmode")) {
return;
}
@@ -272,7 +279,7 @@ index 0b1b4b2f0f8d6b0fb126aa1224409ab6f1ffb8d8..942c6e1e3b6cd9de65df54a1d83884f2
if (this._searchModeIndicatorTitle) {
this._searchModeIndicatorTitle.textContent = "";
this._searchModeIndicatorTitle.removeAttribute("data-l10n-id");
@@ -5159,6 +5274,7 @@ ${
@@ -5141,6 +5258,7 @@ ${
this.document.l10n.setAttributes(
this.inputField,
@@ -280,7 +287,7 @@ index 0b1b4b2f0f8d6b0fb126aa1224409ab6f1ffb8d8..942c6e1e3b6cd9de65df54a1d83884f2
l10nId,
l10nId == "urlbar-placeholder-with-name"
? { name: engineName }
@@ -5282,6 +5398,11 @@ ${
@@ -5264,6 +5382,11 @@ ${
}
_on_click(event) {
@@ -292,7 +299,7 @@ index 0b1b4b2f0f8d6b0fb126aa1224409ab6f1ffb8d8..942c6e1e3b6cd9de65df54a1d83884f2
switch (event.target) {
case this.inputField:
case this._inputContainer:
@@ -5374,7 +5495,7 @@ ${
@@ -5356,7 +5479,7 @@ ${
}
}
@@ -301,7 +308,7 @@ index 0b1b4b2f0f8d6b0fb126aa1224409ab6f1ffb8d8..942c6e1e3b6cd9de65df54a1d83884f2
this.view.autoOpen({ event });
} else {
if (this._untrimOnFocusAfterKeydown) {
@@ -5414,9 +5535,16 @@ ${
@@ -5396,9 +5519,16 @@ ${
}
_on_mousedown(event) {
@@ -319,7 +326,7 @@ index 0b1b4b2f0f8d6b0fb126aa1224409ab6f1ffb8d8..942c6e1e3b6cd9de65df54a1d83884f2
if (
event.composedTarget != this.inputField &&
event.composedTarget != this._inputContainer
@@ -5426,6 +5554,10 @@ ${
@@ -5408,6 +5538,10 @@ ${
this.focusedViaMousedown = !this.focused;
this.#preventClickSelectsAll = this.focused;
@@ -330,7 +337,7 @@ index 0b1b4b2f0f8d6b0fb126aa1224409ab6f1ffb8d8..942c6e1e3b6cd9de65df54a1d83884f2
// Keep the focus status, since the attribute may be changed
// upon calling this.focus().
@@ -5461,7 +5593,7 @@ ${
@@ -5443,7 +5577,7 @@ ${
}
// 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.
@@ -339,7 +346,7 @@ index 0b1b4b2f0f8d6b0fb126aa1224409ab6f1ffb8d8..942c6e1e3b6cd9de65df54a1d83884f2
break;
}
@@ -5750,7 +5882,7 @@ ${
@@ -5732,7 +5866,7 @@ ${
// When we are in actions search mode we can show more results so
// increase the limit.
let maxResults =

View File

@@ -1,15 +0,0 @@
diff --git a/browser/components/urlbar/content/UrlbarResult.mjs b/browser/components/urlbar/content/UrlbarResult.mjs
index 30662cbb0551a5efe12926eb1524719ece24ee48..1ed598c8b8c0836759b5af10e6cc9f5e334744ef 100644
--- a/browser/components/urlbar/content/UrlbarResult.mjs
+++ b/browser/components/urlbar/content/UrlbarResult.mjs
@@ -184,6 +184,10 @@ export class UrlbarResult {
return this.#heuristic;
}
+ set heuristic(value) {
+ this.#heuristic = value;
+ }
+
get hideRowLabel() {
return this.#hideRowLabel;
}

View File

@@ -1,28 +0,0 @@
diff --git a/browser/components/urlbar/content/UrlbarShared.mjs b/browser/components/urlbar/content/UrlbarShared.mjs
index 5522d8a8c8d9549453c1700ff6fec40be52747ce..7b8ad33cc337907249749074057254bf7e316994 100644
--- a/browser/components/urlbar/content/UrlbarShared.mjs
+++ b/browser/components/urlbar/content/UrlbarShared.mjs
@@ -32,6 +32,7 @@ export const UrlbarShared = {
// `looksLikeOrigin()` returned `LOOKS_LIKE_ORIGIN.OTHER` for this token.
// It may or may not be an origin.
POSSIBLE_ORIGIN_BUT_SEARCH_ALLOWED: 12,
+ RESTRICT_WORKSPACE: 13,
}),
/**
@@ -52,6 +53,7 @@ export const UrlbarShared = {
TITLE: "#",
URL: "$",
ACTION: ">",
+ WORKSPACE: "`",
}),
/**
@@ -68,6 +70,7 @@ export const UrlbarShared = {
if (lazy.UrlbarPrefs.get("scotchBonnet.enableOverride")) {
keys.push(this.RESTRICT_TOKENS.ACTION);
}
+ keys.push(this.RESTRICT_TOKENS.WORKSPACE);
return new Set(keys);
},
};

View File

@@ -1,18 +1,18 @@
diff --git a/browser/themes/shared/identity-block/identity-block.css b/browser/themes/shared/identity-block/identity-block.css
index 82c3e319f783e6383ce437131808bbde14293379..6b4444b8ad68664f746be057aae4c59e01e8d170 100644
index f239438ce661ae2c33a3e04ecc6d403b3a56a42b..c3a237aa78cff7aaaf0a7b931dd2b4d99049c051 100644
--- a/browser/themes/shared/identity-block/identity-block.css
+++ b/browser/themes/shared/identity-block/identity-block.css
@@ -12,7 +12,7 @@
}
@@ -7,7 +7,7 @@
#identity-box {
margin-inline-end: var(--identity-box-margin-inline);
- &[pageproxystate="invalid"] {
+ :root[zen-has-empty-tab='true'] & {
pointer-events: none;
-moz-user-focus: ignore;
@@ -96,13 +96,6 @@
margin: 0;
}
@@ -85,13 +85,6 @@
}
}
-#identity-box[pageproxystate="valid"]:is(.notSecureText, .chromeUI, .extensionPage) > .identity-box-button,
@@ -25,7 +25,7 @@ index 82c3e319f783e6383ce437131808bbde14293379..6b4444b8ad68664f746be057aae4c59e
#urlbar[focused] {
#identity-box[pageproxystate="valid"]:is(.notSecureText, .chromeUI, .extensionPage) > .identity-box-button:not(:hover, [open]),
@@ -193,16 +186,17 @@
@@ -182,16 +175,17 @@
}
#identity-icon {

View File

@@ -1,10 +1,11 @@
diff --git a/browser/themes/shared/jar.inc.mn b/browser/themes/shared/jar.inc.mn
index 7892988bd5994d5183d25bf575d486f89ac888d0..a837672bb2fa1a404640fc8b2908fe4bd68d3c04 100644
index e3bdc11e449fb2cd2a4033a1d8c1bba00455e748..f928bc1a3a668dcc1a9ecde9945c6349e5903828 100644
--- a/browser/themes/shared/jar.inc.mn
+++ b/browser/themes/shared/jar.inc.mn
@@ -357,3 +357,5 @@
@@ -352,3 +352,5 @@
skin/classic/browser/illustrations/market-opt-in.svg (../shared/illustrations/market-opt-in.svg)
skin/classic/browser/illustrations/tab-groups.svg (../shared/illustrations/tab-groups.svg)
skin/classic/browser/illustrations/yelpRealtime-opt-in.svg (../shared/illustrations/yelpRealtime-opt-in.svg)
+
+#include zen-sources.inc.mn
\ No newline at end of file

View File

@@ -1,21 +0,0 @@
diff --git a/browser/themes/shared/places/organizer-shared.css b/browser/themes/shared/places/organizer-shared.css
index fe6b79cfc2453927c324a044bd62040f866def95..a93813c76ba3633c365a739289b39187c0d1e881 100644
--- a/browser/themes/shared/places/organizer-shared.css
+++ b/browser/themes/shared/places/organizer-shared.css
@@ -52,6 +52,16 @@
}
}
+#places .zenEditBMPanel_fieldContainer {
+ display: contents;
+}
+
+#places label[control="editBMPanel_workspacesSelectorExpander"],
+#places #editBMPanel_workspaceDropdown,
+#places #editBMPanel_workspaceList {
+ display: none;
+}
+
#editBMPanel_itemsCountText {
grid-column: auto / span 2;
justify-self: center;

View File

@@ -484,10 +484,11 @@ groupbox h2 {
#helpButton,
#support-firefox,
#tabGroupSuggestions,
#web-appearance-manage-themes-link,
#setting-control-sidebarChatbotFieldset,
#setting-control-supportFirefox,
.mission-message,
html|setting-group:is([data-subcategory="layout"], [groupid="support"], [groupid="browserTheme"]) {
html|setting-group:is([data-subcategory="layout"], [groupid="support"]) {
display: none !important;
}

View File

@@ -1,16 +1,16 @@
diff --git a/browser/themes/shared/tabbrowser/content-area.css b/browser/themes/shared/tabbrowser/content-area.css
index 3acdec2b8e043fe27919cfa54e73f4d3c491bfc8..267a1087134464a8193a824a2d7f8ac15ff8ad60 100644
index dff8162a84dbbe6873fa771828698b47b80d0472..e0c378af7a5cc607c2de1c9b5693adb04ac6adbd 100644
--- a/browser/themes/shared/tabbrowser/content-area.css
+++ b/browser/themes/shared/tabbrowser/content-area.css
@@ -157,7 +157,6 @@
@@ -171,7 +171,6 @@
min-height: 0;
/* We want to be able to show the frame color behind the clipped radiused corner */
- background: var(--tabpanel-background-color);
/* stylelint-disable-next-line media-query-no-invalid */
@media -moz-pref("sidebar.revamp") {
outline: 0.01px solid var(--chrome-content-separator-color);
@@ -216,7 +215,6 @@
@@ -235,7 +234,6 @@
}
browser:is([blank], [pendingpaint]) {
@@ -18,7 +18,7 @@ index 3acdec2b8e043fe27919cfa54e73f4d3c491bfc8..267a1087134464a8193a824a2d7f8ac1
}
/* Exclude browsers with smartwindow-content attribute which inherit
@@ -553,7 +551,7 @@ split-view-footer {
@@ -555,7 +553,7 @@ split-view-footer {
.dialogStack {
z-index: var(--browser-stack-z-index-dialog-stack);
@@ -27,7 +27,7 @@ index 3acdec2b8e043fe27919cfa54e73f4d3c491bfc8..267a1087134464a8193a824a2d7f8ac1
inset: 0;
/* --browser-with-dialog set on browser[tabDialogShowing], we want to position the overlay
only on the top of the <browser> element so it doesn't overlap the DevTools toolbox */
@@ -718,7 +716,7 @@ split-view-footer {
@@ -722,7 +720,7 @@ split-view-footer {
.dialogOverlay[topmost="true"],
#window-modal-dialog::backdrop {

View File

@@ -1,8 +1,8 @@
diff --git a/browser/themes/shared/tabbrowser/tabs.css b/browser/themes/shared/tabbrowser/tabs.css
index 24ad9ab050a67d4a375eb1d05261a7f7c267d7d1..b2f2ae8e765ad1f052aa07ab1d47f285062fbbcc 100644
index b70af17781a4128593e3c092cf0f6aec81ab5f9a..1c11c2bf9dcde9d468959e9115a48cf272870987 100644
--- a/browser/themes/shared/tabbrowser/tabs.css
+++ b/browser/themes/shared/tabbrowser/tabs.css
@@ -33,7 +33,7 @@
@@ -34,7 +34,7 @@
--tab-group-line-thickness: 2px;
--tab-group-line-toolbar-border-distance: 1px;
/* Collapsed tabs should be square, so set width to match the min height */
@@ -11,7 +11,7 @@ index 24ad9ab050a67d4a375eb1d05261a7f7c267d7d1..b2f2ae8e765ad1f052aa07ab1d47f285
--tab-collapsed-width: calc(var(--tab-collapsed-background-width) + 2 * var(--tab-inner-inline-margin));
--tab-pinned-min-width-expanded: calc(var(--tab-pinned-expanded-background-width) + 2 * var(--tab-pinned-margin-inline-expanded));
--tab-note-icon-end-margin: var(--dimension-4);
@@ -282,7 +282,6 @@ tab-split-view-wrapper[dragtarget] {
@@ -285,7 +285,6 @@ tab-split-view-wrapper[dragtarget] {
}
:root:not([uidensity="compact"], [sidebar-expand-on-hover]) &[pinned] {
@@ -19,7 +19,7 @@ index 24ad9ab050a67d4a375eb1d05261a7f7c267d7d1..b2f2ae8e765ad1f052aa07ab1d47f285
}
&:is([selected], [multiselected]) {
@@ -296,6 +295,7 @@ tab-split-view-wrapper[dragtarget] {
@@ -299,6 +298,7 @@ tab-split-view-wrapper[dragtarget] {
border-radius: inherit;
position: relative;
overflow: hidden;
@@ -27,8 +27,8 @@ index 24ad9ab050a67d4a375eb1d05261a7f7c267d7d1..b2f2ae8e765ad1f052aa07ab1d47f285
&::before {
position: absolute;
@@ -493,10 +493,6 @@ tab-split-view-wrapper[dragtarget] {
@@ -498,10 +498,6 @@ tab-split-view-wrapper[dragtarget] {
/* stylelint-disable-next-line media-query-no-invalid */
@media -moz-pref("browser.tabs.fadeOutUnloadedTabs") {
&[pending] {
- filter: grayscale(100%);
@@ -38,8 +38,8 @@ index 24ad9ab050a67d4a375eb1d05261a7f7c267d7d1..b2f2ae8e765ad1f052aa07ab1d47f285
opacity: 0.5;
/* Fade the favicon out */
transition-property: filter, opacity;
@@ -512,10 +508,6 @@ tab-split-view-wrapper[dragtarget] {
@@ -518,10 +514,6 @@ tab-split-view-wrapper[dragtarget] {
/* stylelint-disable-next-line media-query-no-invalid */
@media -moz-pref("browser.tabs.fadeOutExplicitlyUnloadedTabs") {
&[pending][discarded] {
- filter: grayscale(100%);
@@ -49,7 +49,7 @@ index 24ad9ab050a67d4a375eb1d05261a7f7c267d7d1..b2f2ae8e765ad1f052aa07ab1d47f285
opacity: 0.5;
/* Fade the favicon out */
transition-property: filter, opacity;
@@ -589,7 +581,7 @@ tab-split-view-wrapper[dragtarget] {
@@ -596,7 +588,7 @@ tab-split-view-wrapper[dragtarget] {
}
#tabbrowser-tabs[orient="vertical"] & {
@@ -58,7 +58,7 @@ index 24ad9ab050a67d4a375eb1d05261a7f7c267d7d1..b2f2ae8e765ad1f052aa07ab1d47f285
}
&[crashed] {
@@ -597,7 +589,7 @@ tab-split-view-wrapper[dragtarget] {
@@ -604,7 +596,7 @@ tab-split-view-wrapper[dragtarget] {
}
#tabbrowser-tabs[orient="vertical"]:not([expanded]) &:not([crashed]),
@@ -67,7 +67,7 @@ index 24ad9ab050a67d4a375eb1d05261a7f7c267d7d1..b2f2ae8e765ad1f052aa07ab1d47f285
&[soundplaying] {
list-style-image: url("chrome://browser/skin/tabbrowser/tab-audio-playing-small.svg");
}
@@ -651,7 +643,7 @@ tab-split-view-wrapper[dragtarget] {
@@ -661,7 +653,7 @@ tab-split-view-wrapper[dragtarget] {
}
}
@@ -76,7 +76,7 @@ index 24ad9ab050a67d4a375eb1d05261a7f7c267d7d1..b2f2ae8e765ad1f052aa07ab1d47f285
&[crashed] {
display: revert;
}
@@ -811,7 +803,7 @@ tab-split-view-wrapper[dragtarget] {
@@ -829,7 +821,7 @@ tab-split-view-wrapper[dragtarget] {
has not been added to root. There are certain scenarios when that attribute is temporarily
removed from root such as when toggling the sidebar to expand with the toolbar button. */
#tabbrowser-tabs[orient="horizontal"] &:not([pinned]):not([crashed]),
@@ -85,7 +85,7 @@ index 24ad9ab050a67d4a375eb1d05261a7f7c267d7d1..b2f2ae8e765ad1f052aa07ab1d47f285
&:is([soundplaying], [muted], [activemedia-blocked]) {
display: flex;
}
@@ -1031,7 +1023,6 @@ tab-split-view-wrapper[dragtarget] {
@@ -1053,7 +1045,6 @@ tab-split-view-wrapper[dragtarget] {
.tabbrowser-tab:is([image], [pinned]) > .tab-stack > .tab-content[attention]:not([selected]),
.tabbrowser-tab > .tab-stack > .tab-content[pinned][titlechanged]:not([selected]),
#tabbrowser-tabs[orient="vertical"] .tabbrowser-tab > .tab-stack > .tab-content[titlechanged]:not([selected]) {
@@ -93,7 +93,7 @@ index 24ad9ab050a67d4a375eb1d05261a7f7c267d7d1..b2f2ae8e765ad1f052aa07ab1d47f285
background-position: center bottom 6.5px;
background-size: 4px 4px;
background-repeat: no-repeat;
@@ -1780,7 +1771,7 @@ tab-group {
@@ -1813,7 +1804,7 @@ tab-group {
}
#tabbrowser-tabs[orient="vertical"][expanded] {
@@ -102,7 +102,7 @@ index 24ad9ab050a67d4a375eb1d05261a7f7c267d7d1..b2f2ae8e765ad1f052aa07ab1d47f285
&[movingtab][movingtab-addToGroup]:not([movingtab-group], [movingtab-ungroup]) .tabbrowser-tab:is(:active, [multiselected]) {
margin-inline-start: var(--space-medium);
}
@@ -2335,7 +2326,7 @@ tab-group {
@@ -2378,7 +2369,7 @@ tab-group {
}
}
@@ -111,7 +111,7 @@ index 24ad9ab050a67d4a375eb1d05261a7f7c267d7d1..b2f2ae8e765ad1f052aa07ab1d47f285
#vertical-tabs-newtab-button {
appearance: none;
min-height: var(--tab-min-height);
@@ -2346,7 +2337,7 @@ tab-group {
@@ -2389,7 +2380,7 @@ tab-group {
margin-inline: var(--tab-inner-inline-margin);
#tabbrowser-tabs[orient="vertical"]:not([expanded]) & > .toolbarbutton-text {
@@ -120,7 +120,7 @@ index 24ad9ab050a67d4a375eb1d05261a7f7c267d7d1..b2f2ae8e765ad1f052aa07ab1d47f285
}
&:hover {
@@ -2370,7 +2361,7 @@ tab-group {
@@ -2413,7 +2404,7 @@ tab-group {
* flex container. #tabs-newtab-button is a child of the arrowscrollbox where
* we don't want a gap (between tabs), so we have to add some margin.
*/
@@ -129,7 +129,7 @@ index 24ad9ab050a67d4a375eb1d05261a7f7c267d7d1..b2f2ae8e765ad1f052aa07ab1d47f285
margin-block: var(--tab-block-margin);
}
@@ -2560,7 +2551,6 @@ tab-group {
@@ -2610,7 +2601,6 @@ tab-group {
&:not([expanded]) {
.tabbrowser-tab[pinned] {
@@ -137,7 +137,7 @@ index 24ad9ab050a67d4a375eb1d05261a7f7c267d7d1..b2f2ae8e765ad1f052aa07ab1d47f285
}
.tab-background {
@@ -2599,8 +2589,8 @@ tab-group {
@@ -2651,8 +2641,8 @@ tab-group {
display: block;
position: absolute;
inset: auto;
@@ -148,7 +148,7 @@ index 24ad9ab050a67d4a375eb1d05261a7f7c267d7d1..b2f2ae8e765ad1f052aa07ab1d47f285
&:-moz-window-inactive {
background-image:
@@ -2698,9 +2688,6 @@ tab-group {
@@ -2753,9 +2743,6 @@ tab-group {
~ #tabbrowser-tabs[orient="horizontal"]::before {
display: flex;
content: "";
@@ -158,7 +158,7 @@ index 24ad9ab050a67d4a375eb1d05261a7f7c267d7d1..b2f2ae8e765ad1f052aa07ab1d47f285
}
}
@@ -2733,7 +2720,6 @@ toolbar:not(#TabsToolbar) #firefox-view-button {
@@ -2788,7 +2775,6 @@ toolbar:not(#TabsToolbar) #firefox-view-button {
list-style-image: url(chrome://global/skin/icons/plus.svg);
}

View File

@@ -1,19 +1,17 @@
diff --git a/browser/themes/shared/urlbar-searchbar.css b/browser/themes/shared/urlbar-searchbar.css
index cc595de7e3839f7e688122552bca95f9f9ad3988..da4b1e1b5013d7a1a9af3d45d94db7194a1826f7 100644
index cbd074b9bacfbf7cc82a67ad586ebc31c4d85970..993c61ba389cb9d912b2cebee9d71bec772e3a7d 100644
--- a/browser/themes/shared/urlbar-searchbar.css
+++ b/browser/themes/shared/urlbar-searchbar.css
@@ -19,8 +19,8 @@
@@ -12,7 +12,7 @@
/* Usually we wouldn't need snapping border widths manually, but we use this
* for other layout calculations too */
--urlbar-container-border-width: max(env(hairline), round(down, 1px, env(hairline)));
- --urlbar-container-padding: round(up, 1px, env(hairline));
+ --urlbar-container-padding: 2px;
--urlbar-container-inset: calc(var(--urlbar-container-border-width) + var(--urlbar-container-padding));
@media not -moz-pref("browser.nova.enabled") {
--urlbar-basic-component-size: calc(var(--urlbar-min-height) - 2 * (var(--urlbar-input-container-border-width) + var(--urlbar-input-container-padding)));
- --urlbar-icon-padding: calc((var(--urlbar-min-height) - 2px /* border */ - 2px /* padding */ - 16px /* icon */) / 2);
- --urlbar-input-container-padding: round(up, 1px, env(hairline));
+ --urlbar-icon-padding: calc((var(--urlbar-min-height) - 2px /* border */ - 14px /* icon */) / 2);
+ --urlbar-input-container-padding: 2px;
}
@media (max-width: 770px) {
--urlbar-container-min-width: 240px;
@@ -114,7 +114,7 @@ toolbar[inactive="true"] .urlbar,
@@ -55,7 +55,7 @@ toolbar[inactive="true"] .urlbar,
.urlbar:not([usertyping]) > .urlbar-input-container > .urlbar-go-button,
.urlbar:not(#searchbar-new, [focused]) > .urlbar-input-container > .urlbar-go-button,
#urlbar-revert-button-container {
@@ -22,7 +20,7 @@ index cc595de7e3839f7e688122552bca95f9f9ad3988..da4b1e1b5013d7a1a9af3d45d94db719
}
/* Document Picture-in-Picture API window */
@@ -350,6 +350,10 @@ toolbar[inactive="true"] .urlbar,
@@ -205,6 +205,10 @@ toolbar[inactive="true"] .urlbar,
mask-image: linear-gradient(to right, transparent var(--urlbar-scheme-size), black calc(var(--urlbar-scheme-size) + 3ch));
}
@@ -30,10 +28,10 @@ index cc595de7e3839f7e688122552bca95f9f9ad3988..da4b1e1b5013d7a1a9af3d45d94db719
+ mask-image: linear-gradient(to right, transparent, black 3ch, black calc(100% - 3ch), transparent);
+ }
+
&::selection {
border-radius: var(--urlbar-selection-border-radius);
}
@@ -464,10 +468,14 @@ toolbar[inactive="true"] .urlbar,
/* stylelint-disable-next-line media-query-no-invalid */
@media -moz-pref("browser.nova.enabled") {
&::selection {
@@ -429,10 +433,14 @@ toolbar[inactive="true"] .urlbar,
.urlbar[breakout][breakout-extend] {
height: auto;
@@ -46,5 +44,5 @@ index cc595de7e3839f7e688122552bca95f9f9ad3988..da4b1e1b5013d7a1a9af3d45d94db719
> .urlbar-input-container {
+ align-items: center;
height: var(--urlbar-container-height);
padding-block: calc((var(--urlbar-container-height) - var(--urlbar-height)) / 2 + var(--urlbar-input-container-padding));
padding-inline: calc(var(--urlbar-margin-inline) + var(--urlbar-input-container-padding));
padding-block: calc((var(--urlbar-container-height) - var(--urlbar-height)) / 2 + var(--urlbar-container-padding));
padding-inline: calc(var(--urlbar-margin-inline) + var(--urlbar-container-padding));

View File

@@ -0,0 +1,13 @@
diff --git a/browser/themes/shared/urlbar/variables.css b/browser/themes/shared/urlbar/variables.css
index 64eb46b3061504e590d3fcee0c30c902f68764fe..6e7ffe043c5676da27a6eb5b105dac2fde3309da 100644
--- a/browser/themes/shared/urlbar/variables.css
+++ b/browser/themes/shared/urlbar/variables.css
@@ -9,7 +9,7 @@
:root {
--identity-box-margin-inline: 4px;
--urlbar-min-height: max(32px, 1.4em);
- --urlbar-icon-padding: calc((var(--urlbar-min-height) - 2px /* border */ - 2px /* padding */ - 16px /* icon */) / 2);
+ --urlbar-icon-padding: calc((var(--urlbar-min-height) - 2px /* border */ - 14px /* icon */) / 2);
/* 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

View File

@@ -0,0 +1,69 @@
#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 class="zen-library-icon" width="18" height="18" viewBox="4 4 18 18" fill="context-fill" fill-opacity="context-fill-opacity" xmlns="http://www.w3.org/2000/svg">
<style>
@property --zen-triangle-anim { syntax: '&lt;number&gt;'; initial-value: 0; inherits: false; }
@property --zen-circle-anim { syntax: '&lt;number&gt;'; initial-value: 0; inherits: false; }
@keyframes StarForward {
0% { transform: rotate(0deg); }
100% { transform: rotate(120deg); }
}
@keyframes TriangleForward {
0% { --zen-triangle-anim: 0; }
100% { --zen-triangle-anim: 1; }
}
@keyframes CircleForward {
0% { --zen-circle-anim: 0; }
100% { --zen-circle-anim: 1; }
}
@keyframes GlowForward {
0% { opacity: 0; }
100% { opacity: 0.4; }
}
@keyframes GlowElementsForward {
0% { opacity: 0; }
100% { opacity: 0.5; }
}
.zen-library-star { transform-origin: 10px 10.2px; animation: StarForward 0.4s cubic-bezier(0.4, 0, 0.2, 1) forwards; }
.zen-library-triangle-group { transform-origin: 17px 9.2px; animation: TriangleForward 0.4s cubic-bezier(0.4, 0, 0.2, 1) forwards; transform: translate(calc(var(--zen-triangle-anim) * 2px), 0px) rotate(calc(var(--zen-triangle-anim) * 365deg)) scale(max(1 - var(--zen-triangle-anim) / 0.65, (var(--zen-triangle-anim) - 0.65) / 0.35)); }
.zen-library-circle { transform-origin: 0px 0px; animation: CircleForward 0.4s cubic-bezier(0.4, 0, 0.2, 1) forwards; transform: translate(calc(var(--zen-circle-anim) * 1px), calc(var(--zen-circle-anim) * -1.5px)) scale(max(0, max((var(--zen-circle-anim) - 0.75) / 0.25, min(1, 1 - (var(--zen-circle-anim) - 0.3) / 0.35)))); }
.zen-library-glow { filter: blur(2px); animation: GlowForward 0.4s cubic-bezier(0.4, 0, 0.2, 1) forwards; }
.zen-library-glow-element { filter: blur(2px); animation: GlowElementsForward 0.4s cubic-bezier(0.4, 0, 0.2, 1) forwards; }
.zen-library-glow-bg, .zen-library-glow-element { fill: transparent !important; stroke: none !important; }
.zen-library-glow-rays { stroke: transparent !important; fill: none !important; }
@media (prefers-color-scheme: dark) {
.zen-library-glow-bg, .zen-library-glow-element { fill: white !important; }
.zen-library-glow-rays { stroke: white !important; }
.zen-library-star:not(.zen-library-glow-element), .zen-library-circle:not(.zen-library-glow-element), .zen-library-triangle:not(.zen-library-glow-element) { fill: white !important; }
}
</style>
<defs>
<mask id="zen-library-box-mask">
<rect x="-10" y="-10" width="40" height="40" fill="white"/>
<rect x="-10" y="11.635" width="40" height="40" fill="black"/>
</mask>
</defs>
<g fill-rule="evenodd">
<g mask="url(#zen-library-box-mask)">
<path class="zen-library-star zen-library-glow-element" d="M 7.773 11.635 C 8.136 11.863 8.24 12.075 8.218 12.294 L 8.036 14.082 C 7.984 14.598 8.584 14.917 8.982 14.585 L 10.362 13.432 C 10.53 13.291 10.764 13.258 10.966 13.347 L 12.61 14.072 C 13.085 14.281 13.574 13.808 13.38 13.327 L 12.701 11.635 C 12.632 11.437 12.675 11.216 12.816 11.058 L 14.014 9.718 C 14.36 9.331 14.061 8.72 13.544 8.756 L 11.75 8.877 C 11.531 8.892 11.322 8.781 11.211 8.591 L 10.307 7.038 C 10.046 6.59 9.373 6.685 9.247 7.188 L 8.808 8.931 C 8.754 9.144 8.585 9.309 8.37 9.355 L 6.613 9.735 C 6.106 9.845 5.988 10.514 6.427 10.79 L 7.773 11.635 Z"/>
<path class="zen-library-star" d="M 7.773 11.635 C 8.136 11.863 8.24 12.075 8.218 12.294 L 8.036 14.082 C 7.984 14.598 8.584 14.917 8.982 14.585 L 10.362 13.432 C 10.53 13.291 10.764 13.258 10.966 13.347 L 12.61 14.072 C 13.085 14.281 13.574 13.808 13.38 13.327 L 12.701 11.635 C 12.632 11.437 12.675 11.216 12.816 11.058 L 14.014 9.718 C 14.36 9.331 14.061 8.72 13.544 8.756 L 11.75 8.877 C 11.531 8.892 11.322 8.781 11.211 8.591 L 10.307 7.038 C 10.046 6.59 9.373 6.685 9.247 7.188 L 8.808 8.931 C 8.754 9.144 8.585 9.309 8.37 9.355 L 6.613 9.735 C 6.106 9.845 5.988 10.514 6.427 10.79 L 7.773 11.635 Z"/>
</g>
<g transform="translate(14, 7.3)">
<circle class="zen-library-circle zen-library-glow-element" cx="0" cy="0" r="1.4"/>
<circle class="zen-library-circle" cx="0" cy="0" r="1"/>
</g>
<g class="zen-library-triangle-group">
<g transform="translate(17, 9.2)">
<path class="zen-library-triangle zen-library-glow-element" d="M -1.1 1.8 C -1.4 2.0, -1.7 1.8, -1.7 1.5 L -1.7 -1.5 C -1.7 -1.8, -1.4 -2.0, -1.1 -1.8 L 1.4 -0.4 C 1.7 -0.2, 1.7 0.2, 1.4 0.4 Z"/>
<path class="zen-library-triangle" d="M -1.1 1.8 C -1.4 2.0, -1.7 1.8, -1.7 1.5 L -1.7 -1.5 C -1.7 -1.8, -1.4 -2.0, -1.1 -1.8 L 1.4 -0.4 C 1.7 -0.2, 1.7 0.2, 1.4 0.4 Z"/>
</g>
</g>
<g class="zen-library-glow">
<path class="zen-library-glow-bg" d="M 6.6 6.6 L 8.04 12.7 L 17.96 12.7 L 19.4 6.6 Z"/>
<path class="zen-library-glow-rays" d="M 6.1 6.6 L 8.04 12.7 L 17.96 12.7 L 19.9 6.6"/>
</g>
<path class="zen-library-box" d="M 7.218 13.287 C 7.218 12.831 7.588 12.461 8.044 12.461 H 17.957 C 18.414 12.461 18.783 12.831 18.783 13.287 V 17.418 C 18.783 19.243 17.304 20.722 15.479 20.722 H 10.523 C 8.698 20.722 7.218 19.243 7.218 17.418 V 13.287 Z M 10.609 14.526 C 10.609 14.07 10.979 13.7 11.435 13.7 H 14.739 C 15.196 13.7 15.565 14.07 15.565 14.526 C 15.565 14.982 15.196 15.352 14.739 15.352 H 11.435 C 10.979 15.352 10.609 14.982 10.609 14.526 Z"/>
</g>
</svg>

View File

@@ -0,0 +1,81 @@
#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 class="zen-boosts-icon" width="28" height="28" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg">
<style>
@keyframes zenBoostsCardTilt {
0%, 13.33% { transform: translate(61.889px, 63.143px) scale(1.1) rotate(-15deg); animation-timing-function: cubic-bezier(0.35, 0, 0.685, 1); }
37.77% { transform: translate(61.889px, 68.143px) scale(1.1) rotate(-23deg); animation-timing-function: cubic-bezier(0.25, 0, 0.7, 1); }
64.8% { transform: translate(61.889px, 55.143px) scale(1.1) rotate(-5.4deg); animation-timing-function: cubic-bezier(0.28, 0, 0.68, 1); }
87%, 100% { transform: translate(61.889px, 63.143px) scale(1.1) rotate(-15deg); }
}
@keyframes zenBoostsBrushRotate {
0%, 2.22% { transform: translate(18.247px, 109.504px) scale(1.1) rotate(0deg); animation-timing-function: cubic-bezier(0.6, 0, 0.7, 1); }
32% { transform: translate(18.247px, 112px) scale(1.1) rotate(12deg); animation-timing-function: cubic-bezier(0.3, 0, 0.6, 1); }
52% { transform: translate(18.247px, 97.957px) scale(1.1) rotate(-16.5deg); animation-timing-function: cubic-bezier(0.4, 0, 0.5, 1); }
80%, 100% { transform: translate(18.247px, 109.504px) scale(1.1) rotate(0deg); }
}
@keyframes zenBoostsStarLargeBounce {
0%, 20% { transform: translate(85.002px, 50.174px) rotate(2.014deg) scale(1); animation-timing-function: cubic-bezier(0.29, 0, 0.83, 1); }
33.3% { transform: translate(85.002px, 59px) rotate(2.014deg) scale(1); animation-timing-function: linear; }
42.2% { transform: translate(85.002px, 60.5px) rotate(2.014deg) scale(0); animation-timing-function: linear; }
53.3% { transform: translate(85.002px, 45px) rotate(2.014deg) scale(0); animation-timing-function: cubic-bezier(0.45, 0, 0.63, 1); }
62.2% { transform: translate(85.002px, 33.344px) rotate(2.014deg) scale(1); animation-timing-function: cubic-bezier(0.45, 0, 0.63, 1); }
88.8%, 100% { transform: translate(85.002px, 50.174px) rotate(2.014deg) scale(1); }
}
@keyframes zenBoostsStarSmallBounce {
0%, 26.6% { transform: translate(68.002px, 37.075px) rotate(2.014deg) scale(1); animation-timing-function: cubic-bezier(0.29, 0, 0.83, 1); }
44.8% { transform: translate(68.002px, 44.632px) rotate(2.014deg) scale(1); animation-timing-function: linear; }
55.5% { transform: translate(68.002px, 34px) rotate(2.014deg) scale(1); animation-timing-function: linear; }
64.4% { transform: translate(68.002px, 25px) rotate(2.014deg) scale(0); animation-timing-function: linear; }
75.5% { transform: translate(68.002px, 15px) rotate(2.014deg) scale(0); animation-timing-function: cubic-bezier(0.45, 0, 0.63, 1); }
84.4% { transform: translate(68.002px, 28px) rotate(2.014deg) scale(1); animation-timing-function: cubic-bezier(0.45, 0, 0.63, 1); }
93.3%, 100% { transform: translate(68.002px, 37.075px) rotate(2.014deg) scale(1); }
}
.zen-boosts-card { animation: zenBoostsCardTilt 0.583s forwards; }
.zen-boosts-brush { animation: zenBoostsBrushRotate 0.583s forwards; }
.zen-boosts-star-large { animation: zenBoostsStarLargeBounce 0.583s forwards; }
.zen-boosts-star-small { animation: zenBoostsStarSmallBounce 0.583s forwards; }
</style>
<defs>
<linearGradient id="zen-boosts-grad" gradientUnits="userSpaceOnUse" x1="64" y1="16" x2="64" y2="144">
<stop offset="0" stop-color="context-fill"/>
<stop offset="1" stop-color="context-stroke"/>
</linearGradient>
<mask id="zen-boosts-mask" maskContentUnits="userSpaceOnUse">
<rect x="-100" y="-100" width="300" height="300" fill="#fff"/>
<path fill="#000" stroke="#000" stroke-width="8" stroke-linejoin="round" d="M-3.79 54.121C-5.31 51.635-6.984 48.884-7.082 42.132L-7.073 42.091-7.063 42.051C-6.2 38.573-3.904 36.054-1.1 34.382L4.474 31.059C6.968 29.572 9.896 28.739 13.003 29.233 13.558 28.514 14.137 27.648 14.736 26.617L14.752 26.589 14.769 26.561C15.438 25.438 16.22 24.032 17.105 22.317 18.032 20.521 19.176 18.3 20.531 15.65 21.63 13.5 23.221 11.59 25.405 10.221 27.368 8.99 29.589 8.271 31.984 8.218L32.013 8.218C34.325 8.178 36.528 8.749 38.557 9.821 40.713 10.96 42.401 12.627 43.642 14.615L43.662 14.646 63.922 47.997C66.006 51.466 67.049 55.422 66.104 59.547 65.148 63.723 62.394 66.785 58.898 68.869L44.274 77.586C44.222 77.953 44.148 78.323 44.06 78.696 43.24 82.158 40.963 84.66 38.246 86.34L38.205 86.365 32.548 89.738C29.738 91.413 26.42 92.18 22.922 91.299 18.565 90.201 14.485 87.919 10.34 86.196 10.34 86.196 8.779 87.737 7.305 89.123 5.699 90.632 4.021 91.927 2.291 92.956-2.345 95.712-7.442 96.912-12.65 95.581-17.868 94.248-21.776 90.71-24.597 86.068-27.411 81.439-28.702 76.368-27.456 71.195-26.206 66.005-22.739 62.101-18.096 59.333-16.417 58.332-14.507 57.488-12.438 56.763L-12.4 56.75C-10.473 56.089-8.488 55.472-6.445 54.899-5.537 54.635-4.652 54.375-3.79 54.121Z"/>
</mask>
</defs>
<g class="zen-boosts-card" style="transform-origin: 0 0;" transform="translate(61.889 63.143) scale(1.1) rotate(-15)">
<g class="zen-boosts-card-anchor" transform="translate(-44 -44)">
<rect class="zen-boosts-bg" x="3.55" y="3.55" width="80.9" height="80.9" rx="12.45" fill="context-fill" fill-opacity="1"/>
<rect class="zen-boosts-gradient" x="3.55" y="3.55" width="80.9" height="80.9" rx="12.45" fill="url(#zen-boosts-grad)" style="mix-blend-mode: overlay; opacity: 0.1;"/>
<rect class="zen-boosts-border" width="88" height="88" rx="16" mask="url(#zen-boosts-mask)" fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
</g>
<g class="zen-boosts-brush" style="transform-origin: 0 0;" transform="translate(18.247 109.504) scale(1.1)">
<g class="zen-boosts-brush-anchor" transform="translate(-15 -70)">
<g class="zen-boosts-brush-tip-translate" transform="translate(27.307 3.73)">
<path class="zen-boosts-bg" d="M0 28 6 14 12 0 44 34 26 54Z" fill="context-fill" fill-opacity="1"/>
<path class="zen-boosts-gradient" d="M0 28 6 14 12 0 44 34 26 54Z" fill="url(#zen-boosts-grad)" style="mix-blend-mode: overlay; opacity: 0.1;"/>
</g>
<g class="zen-boosts-brush-silhouette-fills">
<path class="zen-boosts-bg" fill="context-fill" fill-opacity="1" d="M0 69.826C-0.023 66.459 1.467 63.29 4.469 60.318 5.501 59.296 6.814 58.264 8.409 57.219 10.027 56.174 11.717 55.176 13.476 54.154 15.235 53.132 16.877 52.158 18.472 51.229L22.377 48.617 15.024 41.373C13.546 39.91 12.795 38.354 12.772 36.706 12.772 35.034 13.5 33.479 14.954 32.04L19.563 27.478C21.017 26.039 22.577 25.33 24.242 25.353 26.219 25.381 26.531 25.828 28.992 27.547L56.964 55.303C58.465 56.766 59.215 58.322 59.215 59.97 59.238 61.595 58.535 63.139 57.104 64.602L52.46 69.199C51.029 70.615 49.47 71.311 47.781 71.288 46.092 71.288 44.52 70.557 43.066 69.094L35.748 61.816C34.904 62.814 34.012 64.091 33.074 65.647 32.136 67.203 31.15 68.862 30.118 70.627 29.109 72.392 28.078 74.063 27.022 75.642 25.99 77.244 24.946 78.555 23.89 79.577 20.888 82.549 17.686 84.023 14.285 84 10.884 83.977 7.658 82.444 4.609 79.403 1.56 76.385 0.023 73.193 0 69.826ZM56.257 54.603L54.309 52.669 68.012 38.552C68.669 37.902 68.997 37.182 68.997 36.393 68.997 35.604 68.633 34.849 67.906 34.129L41.764 8.289C41.412 7.941 41.048 7.754 40.673 7.731 40.321 7.708 39.993 7.825 39.688 8.08 39.407 8.312 39.196 8.695 39.055 9.229 38.211 12.294 37.495 14.917 36.909 17.099 36.323 19.281 35.712 21.244 35.079 22.985 34.446 24.726 33.636 26.444 32.651 28.139 31.689 29.811 31.369 29.906 31.369 29.906L28.992 27.547 26.531 25.828C27.258 24.69 28.147 22.962 28.64 21.871 29.133 20.757 29.578 19.514 29.977 18.144 30.399 16.751 30.845 15.079 31.314 13.129 31.783 11.156 32.358 8.718 33.038 5.816 33.39 4.307 34.023 3.088 34.938 2.159 35.853 1.207 36.909 0.569 38.105 0.244 39.325-0.081 40.556-0.081 41.799 0.244 43.042 0.546 44.168 1.184 45.177 2.159L72.832 29.567C74.92 31.657 75.975 33.85 75.998 36.149 76.045 38.447 75.049 40.607 73.008 42.627L58.083 56.603 56.257 54.603Z"/>
<path class="zen-boosts-gradient" fill="url(#zen-boosts-grad)" style="mix-blend-mode: overlay; opacity: 0.1;" d="M0 69.826C-0.023 66.459 1.467 63.29 4.469 60.318 5.501 59.296 6.814 58.264 8.409 57.219 10.027 56.174 11.717 55.176 13.476 54.154 15.235 53.132 16.877 52.158 18.472 51.229L22.377 48.617 15.024 41.373C13.546 39.91 12.795 38.354 12.772 36.706 12.772 35.034 13.5 33.479 14.954 32.04L19.563 27.478C21.017 26.039 22.577 25.33 24.242 25.353 26.219 25.381 26.531 25.828 28.992 27.547L56.964 55.303C58.465 56.766 59.215 58.322 59.215 59.97 59.238 61.595 58.535 63.139 57.104 64.602L52.46 69.199C51.029 70.615 49.47 71.311 47.781 71.288 46.092 71.288 44.52 70.557 43.066 69.094L35.748 61.816C34.904 62.814 34.012 64.091 33.074 65.647 32.136 67.203 31.15 68.862 30.118 70.627 29.109 72.392 28.078 74.063 27.022 75.642 25.99 77.244 24.946 78.555 23.89 79.577 20.888 82.549 17.686 84.023 14.285 84 10.884 83.977 7.658 82.444 4.609 79.403 1.56 76.385 0.023 73.193 0 69.826ZM56.257 54.603L54.309 52.669 68.012 38.552C68.669 37.902 68.997 37.182 68.997 36.393 68.997 35.604 68.633 34.849 67.906 34.129L41.764 8.289C41.412 7.941 41.048 7.754 40.673 7.731 40.321 7.708 39.993 7.825 39.688 8.08 39.407 8.312 39.196 8.695 39.055 9.229 38.211 12.294 37.495 14.917 36.909 17.099 36.323 19.281 35.712 21.244 35.079 22.985 34.446 24.726 33.636 26.444 32.651 28.139 31.689 29.811 31.369 29.906 31.369 29.906L28.992 27.547 26.531 25.828C27.258 24.69 28.147 22.962 28.64 21.871 29.133 20.757 29.578 19.514 29.977 18.144 30.399 16.751 30.845 15.079 31.314 13.129 31.783 11.156 32.358 8.718 33.038 5.816 33.39 4.307 34.023 3.088 34.938 2.159 35.853 1.207 36.909 0.569 38.105 0.244 39.325-0.081 40.556-0.081 41.799 0.244 43.042 0.546 44.168 1.184 45.177 2.159L72.832 29.567C74.92 31.657 75.975 33.85 75.998 36.149 76.045 38.447 75.049 40.607 73.008 42.627L58.083 56.603 56.257 54.603Z"/>
</g>
<path class="zen-boosts-border" fill-rule="evenodd" fill="context-stroke" d="M0 69.826C-0.023 66.459 1.467 63.29 4.469 60.318 5.501 59.296 6.814 58.264 8.409 57.219 10.027 56.174 11.717 55.176 13.476 54.154 15.235 53.132 16.877 52.158 18.472 51.229L22.377 48.617 15.024 41.373C13.546 39.91 12.795 38.354 12.772 36.706 12.772 35.034 13.5 33.479 14.954 32.04L19.563 27.478C21.017 26.039 22.577 25.33 24.242 25.353 26.219 25.381 26.531 25.828 28.992 27.547L56.964 55.303C58.465 56.766 59.215 58.322 59.215 59.97 59.238 61.595 58.535 63.139 57.104 64.602L52.46 69.199C51.029 70.615 49.47 71.311 47.781 71.288 46.092 71.288 44.52 70.557 43.066 69.094L35.748 61.816C34.904 62.814 34.012 64.091 33.074 65.647 32.136 67.203 31.15 68.862 30.118 70.627 29.109 72.392 28.078 74.063 27.022 75.642 25.99 77.244 24.946 78.555 23.89 79.577 20.888 82.549 17.686 84.023 14.285 84 10.884 83.977 7.658 82.444 4.609 79.403 1.56 76.385 0.023 73.193 0 69.826ZM20.618 38.308L29.133 46.701C29.86 47.398 30.188 48.187 30.118 49.069 30.048 49.951 29.625 50.799 28.851 51.612 28.171 52.309 27.034 53.11 25.439 54.015 23.844 54.92 22.037 55.931 20.02 57.045 18.026 58.159 16.044 59.355 14.074 60.632 12.104 61.909 10.427 63.232 9.043 64.602 7.425 66.181 6.615 67.887 6.615 69.721 6.638 71.555 7.471 73.297 9.113 74.945 10.778 76.57 12.525 77.383 14.355 77.383 16.208 77.406 17.945 76.617 19.563 75.015 20.97 73.645 22.307 71.985 23.574 70.035 24.864 68.085 26.072 66.122 27.198 64.149 28.324 62.152 29.344 60.377 30.259 58.821 31.197 57.242 32.007 56.116 32.687 55.443 33.508 54.654 34.364 54.235 35.255 54.189 36.146 54.119 36.956 54.444 37.683 55.164L46.127 63.557C46.971 64.416 47.804 64.404 48.625 63.522L51.299 60.875C52.12 60.039 52.132 59.216 51.334 58.403L25.79 33.154C25.415 32.759 25.016 32.574 24.594 32.597 24.172 32.597 23.762 32.794 23.363 33.189L20.618 35.836C19.774 36.649 19.774 37.472 20.618 38.308ZM11.294 72.855C10.473 72.042 10.063 71.068 10.063 69.93 10.063 68.792 10.473 67.818 11.294 67.005 12.115 66.192 13.101 65.786 14.25 65.786 15.399 65.786 16.384 66.192 17.205 67.005 18.026 67.818 18.437 68.792 18.437 69.93 18.437 71.068 18.026 72.042 17.205 72.855 16.384 73.668 15.399 74.074 14.25 74.074 13.101 74.074 12.115 73.668 11.294 72.855ZM56.257 54.603L54.309 52.669 68.012 38.552C68.669 37.902 68.997 37.182 68.997 36.393 68.997 35.604 68.633 34.849 67.906 34.129L41.764 8.289C41.412 7.941 41.048 7.754 40.673 7.731 40.321 7.708 39.993 7.825 39.688 8.08 39.407 8.312 39.196 8.695 39.055 9.229 38.211 12.294 37.495 14.917 36.909 17.099 36.323 19.281 35.712 21.244 35.079 22.985 34.446 24.726 33.636 26.444 32.651 28.139 31.689 29.811 31.369 29.906 31.369 29.906L28.992 27.547 26.531 25.828C27.258 24.69 28.147 22.962 28.64 21.871 29.133 20.757 29.578 19.514 29.977 18.144 30.399 16.751 30.845 15.079 31.314 13.129 31.783 11.156 32.358 8.718 33.038 5.816 33.39 4.307 34.023 3.088 34.938 2.159 35.853 1.207 36.909 0.569 38.105 0.244 39.325-0.081 40.556-0.081 41.799 0.244 43.042 0.546 44.168 1.184 45.177 2.159L72.832 29.567C74.92 31.657 75.975 33.85 75.998 36.149 76.045 38.447 75.049 40.607 73.008 42.627L58.083 56.603 56.257 54.603ZM50.455 37.786C52.425 35.836 54.138 33.7 55.592 31.378 57.07 29.056 57.973 26.352 58.301 23.264L66.041 30.89C65.15 32.004 63.93 33.142 62.382 34.303 60.834 35.441 59.216 36.463 57.527 37.368 55.862 38.25 54.36 38.878 53.023 39.249 51.709 39.62 50.818 39.573 50.349 39.109 49.927 38.714 49.962 38.274 50.455 37.786Z"/>
</g>
</g>
<g class="zen-boosts-star-small" style="transform-origin: 0 0;" transform="translate(68.002 37.075) rotate(2.014)">
<g class="zen-boosts-star-small-anchor" transform="translate(-8 -8)">
<path class="zen-boosts-border" d="M8 0C8 4.418 4.418 8 0 8 4.418 8 8 11.582 8 16 8 11.582 11.582 8 16 8 11.582 8 8 4.418 8 0Z" fill="context-stroke" stroke="context-stroke" stroke-width="3" stroke-linejoin="round"/>
</g>
</g>
<g class="zen-boosts-star-large" style="transform-origin: 0 0;" transform="translate(85.002 50.174) rotate(2.014)">
<g class="zen-boosts-star-large-anchor" transform="translate(-12 -12)">
<path class="zen-boosts-border" d="M12 0C12 6.627 6.627 12 0 12 6.627 12 12 17.373 12 24 12 17.373 17.373 12 24 12 17.373 12 12 6.627 12 0Z" fill="context-stroke" stroke="context-stroke" stroke-width="3" stroke-linejoin="round"/>
</g>
</g>
</svg>

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 400 KiB

View File

@@ -0,0 +1,32 @@
#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 class="zen-boosts-icon" width="28" height="28" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg">
<defs>
<mask id="zen-boosts-mask" maskContentUnits="userSpaceOnUse">
<rect x="-100" y="-100" width="300" height="300" fill="#fff"/>
<path fill="#000" stroke="#000" stroke-width="8" stroke-linejoin="round" d="M-3.79 54.121C-5.31 51.635-6.984 48.884-7.082 42.132L-7.073 42.091-7.063 42.051C-6.2 38.573-3.904 36.054-1.1 34.382L4.474 31.059C6.968 29.572 9.896 28.739 13.003 29.233 13.558 28.514 14.137 27.648 14.736 26.617L14.752 26.589 14.769 26.561C15.438 25.438 16.22 24.032 17.105 22.317 18.032 20.521 19.176 18.3 20.531 15.65 21.63 13.5 23.221 11.59 25.405 10.221 27.368 8.99 29.589 8.271 31.984 8.218L32.013 8.218C34.325 8.178 36.528 8.749 38.557 9.821 40.713 10.96 42.401 12.627 43.642 14.615L43.662 14.646 63.922 47.997C66.006 51.466 67.049 55.422 66.104 59.547 65.148 63.723 62.394 66.785 58.898 68.869L44.274 77.586C44.222 77.953 44.148 78.323 44.06 78.696 43.24 82.158 40.963 84.66 38.246 86.34L38.205 86.365 32.548 89.738C29.738 91.413 26.42 92.18 22.922 91.299 18.565 90.201 14.485 87.919 10.34 86.196 10.34 86.196 8.779 87.737 7.305 89.123 5.699 90.632 4.021 91.927 2.291 92.956-2.345 95.712-7.442 96.912-12.65 95.581-17.868 94.248-21.776 90.71-24.597 86.068-27.411 81.439-28.702 76.368-27.456 71.195-26.206 66.005-22.739 62.101-18.096 59.333-16.417 58.332-14.507 57.488-12.438 56.763L-12.4 56.75C-10.473 56.089-8.488 55.472-6.445 54.899-5.537 54.635-4.652 54.375-3.79 54.121Z"/>
</mask>
</defs>
<g transform="translate(61.889 63.143) scale(1.1) rotate(-15)">
<g transform="translate(-44 -44)">
<rect width="88" height="88" rx="16" mask="url(#zen-boosts-mask)" fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
</g>
<g transform="translate(18.247 109.504) scale(1.1)">
<g transform="translate(-15 -70)">
<path fill-rule="evenodd" fill="context-stroke" d="M0 69.826C-0.023 66.459 1.467 63.29 4.469 60.318 5.501 59.296 6.814 58.264 8.409 57.219 10.027 56.174 11.717 55.176 13.476 54.154 15.235 53.132 16.877 52.158 18.472 51.229L22.377 48.617 15.024 41.373C13.546 39.91 12.795 38.354 12.772 36.706 12.772 35.034 13.5 33.479 14.954 32.04L19.563 27.478C21.017 26.039 22.577 25.33 24.242 25.353 26.219 25.381 26.531 25.828 28.992 27.547L56.964 55.303C58.465 56.766 59.215 58.322 59.215 59.97 59.238 61.595 58.535 63.139 57.104 64.602L52.46 69.199C51.029 70.615 49.47 71.311 47.781 71.288 46.092 71.288 44.52 70.557 43.066 69.094L35.748 61.816C34.904 62.814 34.012 64.091 33.074 65.647 32.136 67.203 31.15 68.862 30.118 70.627 29.109 72.392 28.078 74.063 27.022 75.642 25.99 77.244 24.946 78.555 23.89 79.577 20.888 82.549 17.686 84.023 14.285 84 10.884 83.977 7.658 82.444 4.609 79.403 1.56 76.385 0.023 73.193 0 69.826ZM20.618 38.308L29.133 46.701C29.86 47.398 30.188 48.187 30.118 49.069 30.048 49.951 29.625 50.799 28.851 51.612 28.171 52.309 27.034 53.11 25.439 54.015 23.844 54.92 22.037 55.931 20.02 57.045 18.026 58.159 16.044 59.355 14.074 60.632 12.104 61.909 10.427 63.232 9.043 64.602 7.425 66.181 6.615 67.887 6.615 69.721 6.638 71.555 7.471 73.297 9.113 74.945 10.778 76.57 12.525 77.383 14.355 77.383 16.208 77.406 17.945 76.617 19.563 75.015 20.97 73.645 22.307 71.985 23.574 70.035 24.864 68.085 26.072 66.122 27.198 64.149 28.324 62.152 29.344 60.377 30.259 58.821 31.197 57.242 32.007 56.116 32.687 55.443 33.508 54.654 34.364 54.235 35.255 54.189 36.146 54.119 36.956 54.444 37.683 55.164L46.127 63.557C46.971 64.416 47.804 64.404 48.625 63.522L51.299 60.875C52.12 60.039 52.132 59.216 51.334 58.403L25.79 33.154C25.415 32.759 25.016 32.574 24.594 32.597 24.172 32.597 23.762 32.794 23.363 33.189L20.618 35.836C19.774 36.649 19.774 37.472 20.618 38.308ZM11.294 72.855C10.473 72.042 10.063 71.068 10.063 69.93 10.063 68.792 10.473 67.818 11.294 67.005 12.115 66.192 13.101 65.786 14.25 65.786 15.399 65.786 16.384 66.192 17.205 67.005 18.026 67.818 18.437 68.792 18.437 69.93 18.437 71.068 18.026 72.042 17.205 72.855 16.384 73.668 15.399 74.074 14.25 74.074 13.101 74.074 12.115 73.668 11.294 72.855ZM56.257 54.603L54.309 52.669 68.012 38.552C68.669 37.902 68.997 37.182 68.997 36.393 68.997 35.604 68.633 34.849 67.906 34.129L41.764 8.289C41.412 7.941 41.048 7.754 40.673 7.731 40.321 7.708 39.993 7.825 39.688 8.08 39.407 8.312 39.196 8.695 39.055 9.229 38.211 12.294 37.495 14.917 36.909 17.099 36.323 19.281 35.712 21.244 35.079 22.985 34.446 24.726 33.636 26.444 32.651 28.139 31.689 29.811 31.369 29.906 31.369 29.906L28.992 27.547 26.531 25.828C27.258 24.69 28.147 22.962 28.64 21.871 29.133 20.757 29.578 19.514 29.977 18.144 30.399 16.751 30.845 15.079 31.314 13.129 31.783 11.156 32.358 8.718 33.038 5.816 33.39 4.307 34.023 3.088 34.938 2.159 35.853 1.207 36.909 0.569 38.105 0.244 39.325-0.081 40.556-0.081 41.799 0.244 43.042 0.546 44.168 1.184 45.177 2.159L72.832 29.567C74.92 31.657 75.975 33.85 75.998 36.149 76.045 38.447 75.049 40.607 73.008 42.627L58.083 56.603 56.257 54.603ZM50.455 37.786C52.425 35.836 54.138 33.7 55.592 31.378 57.07 29.056 57.973 26.352 58.301 23.264L66.041 30.89C65.15 32.004 63.93 33.142 62.382 34.303 60.834 35.441 59.216 36.463 57.527 37.368 55.862 38.25 54.36 38.878 53.023 39.249 51.709 39.62 50.818 39.573 50.349 39.109 49.927 38.714 49.962 38.274 50.455 37.786Z"/>
</g>
</g>
<g transform="translate(68.002 37.075) rotate(2.014)">
<g transform="translate(-8 -8)">
<path d="M8 0C8 4.418 4.418 8 0 8 4.418 8 8 11.582 8 16 8 11.582 11.582 8 16 8 11.582 8 8 4.418 8 0Z" fill="context-stroke" stroke="context-stroke" stroke-width="3" stroke-linejoin="round"/>
</g>
</g>
<g transform="translate(85.002 50.174) rotate(2.014)">
<g transform="translate(-12 -12)">
<path d="M12 0C12 6.627 6.627 12 0 12 6.627 12 12 17.373 12 24 12 17.373 17.373 12 24 12 17.373 12 12 6.627 12 0Z" fill="context-stroke" stroke="context-stroke" stroke-width="3" stroke-linejoin="round"/>
</g>
</g>
</svg>

View File

@@ -0,0 +1,36 @@
#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 class="zen-downloads-icon" width="28" height="28" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg">
<style>
@keyframes zenDownloadsArrowBounce {
0% { transform: translateY(0px); d: path('M 64 45 L 64 83 M 50 69 L 64 83 L 78 69'); animation-timing-function: cubic-bezier(0.33, 0, 0.7, 1.28); }
31.43% { transform: translateY(10px); d: path('M 64 57 L 64 83 M 50 69 L 64 83 L 78 69'); animation-timing-function: cubic-bezier(0.44, 0.2, 0.44, 0.98); }
54.29% { transform: translateY(-10.83px); d: path('M 64 45 L 64 83 M 50 69 L 64 83 L 78 69'); animation-timing-function: cubic-bezier(0.45, -0.03, 0.83, 0.9); }
85.71% { transform: translateY(0.66px); d: path('M 64 45 L 64 83 M 50 69 L 64 83 L 78 69'); animation-timing-function: cubic-bezier(0.17, -0.98, 0.83, 0.83); }
100% { transform: translateY(0px); d: path('M 64 45 L 64 83 M 50 69 L 64 83 L 78 69'); }
}
@keyframes zenDownloadsCircleBounce {
0% { transform: translateY(0px); animation-timing-function: cubic-bezier(0.33, 0, 0.71, 2.31); }
31.43% { transform: translateY(2.5px); animation-timing-function: cubic-bezier(0.23, 0.15, 0.36, 0.97); }
54.29% { transform: translateY(-11.46px); animation-timing-function: cubic-bezier(0.48, -0.04, 0.83, 0.89); }
85.71% { transform: translateY(0.85px); animation-timing-function: cubic-bezier(0.17, -0.70, 0.83, 0.83); }
100% { transform: translateY(0px); }
}
.zen-downloads-circle-translate { animation: zenDownloadsCircleBounce 0.583s forwards; }
.zen-downloads-arrow { animation: zenDownloadsArrowBounce 0.583s forwards; }
</style>
<defs>
<linearGradient gradientUnits="userSpaceOnUse" x1="64" y1="20" x2="64" y2="148" id="zen-downloads-grad-front">
<stop offset="0" stop-color="context-fill"/>
<stop offset="1" stop-color="context-stroke"/>
</linearGradient>
</defs>
<g class="zen-downloads-circle-translate" style="transform-origin: 64px 64px;">
<circle class="zen-downloads-bg" cx="64" cy="64" r="47.5" fill="context-fill" fill-opacity="1"/>
<circle class="zen-downloads-gradient" cx="64" cy="64" r="47.5" fill="url(#zen-downloads-grad-front)" style="mix-blend-mode: overlay; opacity: 0.1;"/>
<circle class="zen-downloads-border" cx="64" cy="64" r="47.5" fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
<path class="zen-downloads-arrow" d="M 64 45 L 64 83 M 50 69 L 64 83 L 78 69" stroke="context-stroke" stroke-width="7.1" fill="none" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

View File

@@ -0,0 +1,511 @@
<!-- 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/. -->
<!-- Generated by scripts/generate-library-sprites.mjs. Do not edit;
- regenerate from the library-*-active.svg sources instead. -->
<svg xmlns="http://www.w3.org/2000/svg" width="1008" height="28" fill="none">
<svg x="0" width="28" height="28" viewBox="0 0 128 128">
<defs>
<linearGradient gradientUnits="userSpaceOnUse" x1="64" y1="20" x2="64" y2="148" id="zen-downloads-grad-front-f0">
<stop offset="0" stop-color="context-fill"/>
<stop offset="1" stop-color="context-stroke"/>
</linearGradient>
</defs>
<g class="zen-downloads-circle-translate" transform="translate(64 64) translate(0 0) translate(-64 -64)">
<circle class="zen-downloads-bg" cx="64" cy="64" r="47.5" fill="context-fill" fill-opacity="1"/>
<circle class="zen-downloads-gradient" cx="64" cy="64" r="47.5" fill="url(#zen-downloads-grad-front-f0)" style="mix-blend-mode: overlay; opacity: 0.1;"/>
<circle class="zen-downloads-border" cx="64" cy="64" r="47.5" fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
<path class="zen-downloads-arrow" d="M 64 45 L 64 83 M 50 69 L 64 83 L 78 69" stroke="context-stroke" stroke-width="7.1" fill="none" stroke-linecap="round" stroke-linejoin="round" transform="translate(0 0)"/>
</svg>
<svg x="28" width="28" height="28" viewBox="0 0 128 128">
<defs>
<linearGradient gradientUnits="userSpaceOnUse" x1="64" y1="20" x2="64" y2="148" id="zen-downloads-grad-front-f1">
<stop offset="0" stop-color="context-fill"/>
<stop offset="1" stop-color="context-stroke"/>
</linearGradient>
</defs>
<g class="zen-downloads-circle-translate" transform="translate(64 64) translate(0 0.131) translate(-64 -64)">
<circle class="zen-downloads-bg" cx="64" cy="64" r="47.5" fill="context-fill" fill-opacity="1"/>
<circle class="zen-downloads-gradient" cx="64" cy="64" r="47.5" fill="url(#zen-downloads-grad-front-f1)" style="mix-blend-mode: overlay; opacity: 0.1;"/>
<circle class="zen-downloads-border" cx="64" cy="64" r="47.5" fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
<path class="zen-downloads-arrow" d="M 64 45.355 L 64 83 M 50 69 L 64 83 L 78 69" stroke="context-stroke" stroke-width="7.1" fill="none" stroke-linecap="round" stroke-linejoin="round" transform="translate(0 0.296)"/>
</svg>
<svg x="56" width="28" height="28" viewBox="0 0 128 128">
<defs>
<linearGradient gradientUnits="userSpaceOnUse" x1="64" y1="20" x2="64" y2="148" id="zen-downloads-grad-front-f2">
<stop offset="0" stop-color="context-fill"/>
<stop offset="1" stop-color="context-stroke"/>
</linearGradient>
</defs>
<g class="zen-downloads-circle-translate" transform="translate(64 64) translate(0 0.473) translate(-64 -64)">
<circle class="zen-downloads-bg" cx="64" cy="64" r="47.5" fill="context-fill" fill-opacity="1"/>
<circle class="zen-downloads-gradient" cx="64" cy="64" r="47.5" fill="url(#zen-downloads-grad-front-f2)" style="mix-blend-mode: overlay; opacity: 0.1;"/>
<circle class="zen-downloads-border" cx="64" cy="64" r="47.5" fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
<path class="zen-downloads-arrow" d="M 64 46.299 L 64 83 M 50 69 L 64 83 L 78 69" stroke="context-stroke" stroke-width="7.1" fill="none" stroke-linecap="round" stroke-linejoin="round" transform="translate(0 1.082)"/>
</svg>
<svg x="84" width="28" height="28" viewBox="0 0 128 128">
<defs>
<linearGradient gradientUnits="userSpaceOnUse" x1="64" y1="20" x2="64" y2="148" id="zen-downloads-grad-front-f3">
<stop offset="0" stop-color="context-fill"/>
<stop offset="1" stop-color="context-stroke"/>
</linearGradient>
</defs>
<g class="zen-downloads-circle-translate" transform="translate(64 64) translate(0 0.955) translate(-64 -64)">
<circle class="zen-downloads-bg" cx="64" cy="64" r="47.5" fill="context-fill" fill-opacity="1"/>
<circle class="zen-downloads-gradient" cx="64" cy="64" r="47.5" fill="url(#zen-downloads-grad-front-f3)" style="mix-blend-mode: overlay; opacity: 0.1;"/>
<circle class="zen-downloads-border" cx="64" cy="64" r="47.5" fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
<path class="zen-downloads-arrow" d="M 64 47.669 L 64 83 M 50 69 L 64 83 L 78 69" stroke="context-stroke" stroke-width="7.1" fill="none" stroke-linecap="round" stroke-linejoin="round" transform="translate(0 2.224)"/>
</svg>
<svg x="112" width="28" height="28" viewBox="0 0 128 128">
<defs>
<linearGradient gradientUnits="userSpaceOnUse" x1="64" y1="20" x2="64" y2="148" id="zen-downloads-grad-front-f4">
<stop offset="0" stop-color="context-fill"/>
<stop offset="1" stop-color="context-stroke"/>
</linearGradient>
</defs>
<g class="zen-downloads-circle-translate" transform="translate(64 64) translate(0 1.517) translate(-64 -64)">
<circle class="zen-downloads-bg" cx="64" cy="64" r="47.5" fill="context-fill" fill-opacity="1"/>
<circle class="zen-downloads-gradient" cx="64" cy="64" r="47.5" fill="url(#zen-downloads-grad-front-f4)" style="mix-blend-mode: overlay; opacity: 0.1;"/>
<circle class="zen-downloads-border" cx="64" cy="64" r="47.5" fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
<path class="zen-downloads-arrow" d="M 64 49.32 L 64 83 M 50 69 L 64 83 L 78 69" stroke="context-stroke" stroke-width="7.1" fill="none" stroke-linecap="round" stroke-linejoin="round" transform="translate(0 3.6)"/>
</svg>
<svg x="140" width="28" height="28" viewBox="0 0 128 128">
<defs>
<linearGradient gradientUnits="userSpaceOnUse" x1="64" y1="20" x2="64" y2="148" id="zen-downloads-grad-front-f5">
<stop offset="0" stop-color="context-fill"/>
<stop offset="1" stop-color="context-stroke"/>
</linearGradient>
</defs>
<g class="zen-downloads-circle-translate" transform="translate(64 64) translate(0 2.103) translate(-64 -64)">
<circle class="zen-downloads-bg" cx="64" cy="64" r="47.5" fill="context-fill" fill-opacity="1"/>
<circle class="zen-downloads-gradient" cx="64" cy="64" r="47.5" fill="url(#zen-downloads-grad-front-f5)" style="mix-blend-mode: overlay; opacity: 0.1;"/>
<circle class="zen-downloads-border" cx="64" cy="64" r="47.5" fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
<path class="zen-downloads-arrow" d="M 64 51.12 L 64 83 M 50 69 L 64 83 L 78 69" stroke="context-stroke" stroke-width="7.1" fill="none" stroke-linecap="round" stroke-linejoin="round" transform="translate(0 5.1)"/>
</svg>
<svg x="168" width="28" height="28" viewBox="0 0 128 128">
<defs>
<linearGradient gradientUnits="userSpaceOnUse" x1="64" y1="20" x2="64" y2="148" id="zen-downloads-grad-front-f6">
<stop offset="0" stop-color="context-fill"/>
<stop offset="1" stop-color="context-stroke"/>
</linearGradient>
</defs>
<g class="zen-downloads-circle-translate" transform="translate(64 64) translate(0 2.656) translate(-64 -64)">
<circle class="zen-downloads-bg" cx="64" cy="64" r="47.5" fill="context-fill" fill-opacity="1"/>
<circle class="zen-downloads-gradient" cx="64" cy="64" r="47.5" fill="url(#zen-downloads-grad-front-f6)" style="mix-blend-mode: overlay; opacity: 0.1;"/>
<circle class="zen-downloads-border" cx="64" cy="64" r="47.5" fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
<path class="zen-downloads-arrow" d="M 64 52.937 L 64 83 M 50 69 L 64 83 L 78 69" stroke="context-stroke" stroke-width="7.1" fill="none" stroke-linecap="round" stroke-linejoin="round" transform="translate(0 6.614)"/>
</svg>
<svg x="196" width="28" height="28" viewBox="0 0 128 128">
<defs>
<linearGradient gradientUnits="userSpaceOnUse" x1="64" y1="20" x2="64" y2="148" id="zen-downloads-grad-front-f7">
<stop offset="0" stop-color="context-fill"/>
<stop offset="1" stop-color="context-stroke"/>
</linearGradient>
</defs>
<g class="zen-downloads-circle-translate" transform="translate(64 64) translate(0 3.119) translate(-64 -64)">
<circle class="zen-downloads-bg" cx="64" cy="64" r="47.5" fill="context-fill" fill-opacity="1"/>
<circle class="zen-downloads-gradient" cx="64" cy="64" r="47.5" fill="url(#zen-downloads-grad-front-f7)" style="mix-blend-mode: overlay; opacity: 0.1;"/>
<circle class="zen-downloads-border" cx="64" cy="64" r="47.5" fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
<path class="zen-downloads-arrow" d="M 64 54.637 L 64 83 M 50 69 L 64 83 L 78 69" stroke="context-stroke" stroke-width="7.1" fill="none" stroke-linecap="round" stroke-linejoin="round" transform="translate(0 8.031)"/>
</svg>
<svg x="224" width="28" height="28" viewBox="0 0 128 128">
<defs>
<linearGradient gradientUnits="userSpaceOnUse" x1="64" y1="20" x2="64" y2="148" id="zen-downloads-grad-front-f8">
<stop offset="0" stop-color="context-fill"/>
<stop offset="1" stop-color="context-stroke"/>
</linearGradient>
</defs>
<g class="zen-downloads-circle-translate" transform="translate(64 64) translate(0 3.425) translate(-64 -64)">
<circle class="zen-downloads-bg" cx="64" cy="64" r="47.5" fill="context-fill" fill-opacity="1"/>
<circle class="zen-downloads-gradient" cx="64" cy="64" r="47.5" fill="url(#zen-downloads-grad-front-f8)" style="mix-blend-mode: overlay; opacity: 0.1;"/>
<circle class="zen-downloads-border" cx="64" cy="64" r="47.5" fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
<path class="zen-downloads-arrow" d="M 64 56.076 L 64 83 M 50 69 L 64 83 L 78 69" stroke="context-stroke" stroke-width="7.1" fill="none" stroke-linecap="round" stroke-linejoin="round" transform="translate(0 9.23)"/>
</svg>
<svg x="252" width="28" height="28" viewBox="0 0 128 128">
<defs>
<linearGradient gradientUnits="userSpaceOnUse" x1="64" y1="20" x2="64" y2="148" id="zen-downloads-grad-front-f9">
<stop offset="0" stop-color="context-fill"/>
<stop offset="1" stop-color="context-stroke"/>
</linearGradient>
</defs>
<g class="zen-downloads-circle-translate" transform="translate(64 64) translate(0 3.496) translate(-64 -64)">
<circle class="zen-downloads-bg" cx="64" cy="64" r="47.5" fill="context-fill" fill-opacity="1"/>
<circle class="zen-downloads-gradient" cx="64" cy="64" r="47.5" fill="url(#zen-downloads-grad-front-f9)" style="mix-blend-mode: overlay; opacity: 0.1;"/>
<circle class="zen-downloads-border" cx="64" cy="64" r="47.5" fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
<path class="zen-downloads-arrow" d="M 64 57.089 L 64 83 M 50 69 L 64 83 L 78 69" stroke="context-stroke" stroke-width="7.1" fill="none" stroke-linecap="round" stroke-linejoin="round" transform="translate(0 10.075)"/>
</svg>
<svg x="280" width="28" height="28" viewBox="0 0 128 128">
<defs>
<linearGradient gradientUnits="userSpaceOnUse" x1="64" y1="20" x2="64" y2="148" id="zen-downloads-grad-front-f10">
<stop offset="0" stop-color="context-fill"/>
<stop offset="1" stop-color="context-stroke"/>
</linearGradient>
</defs>
<g class="zen-downloads-circle-translate" transform="translate(64 64) translate(0 3.233) translate(-64 -64)">
<circle class="zen-downloads-bg" cx="64" cy="64" r="47.5" fill="context-fill" fill-opacity="1"/>
<circle class="zen-downloads-gradient" cx="64" cy="64" r="47.5" fill="url(#zen-downloads-grad-front-f10)" style="mix-blend-mode: overlay; opacity: 0.1;"/>
<circle class="zen-downloads-border" cx="64" cy="64" r="47.5" fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
<path class="zen-downloads-arrow" d="M 64 57.481 L 64 83 M 50 69 L 64 83 L 78 69" stroke="context-stroke" stroke-width="7.1" fill="none" stroke-linecap="round" stroke-linejoin="round" transform="translate(0 10.4)"/>
</svg>
<svg x="308" width="28" height="28" viewBox="0 0 128 128">
<defs>
<linearGradient gradientUnits="userSpaceOnUse" x1="64" y1="20" x2="64" y2="148" id="zen-downloads-grad-front-f11">
<stop offset="0" stop-color="context-fill"/>
<stop offset="1" stop-color="context-stroke"/>
</linearGradient>
</defs>
<g class="zen-downloads-circle-translate" transform="translate(64 64) translate(0 2.501) translate(-64 -64)">
<circle class="zen-downloads-bg" cx="64" cy="64" r="47.5" fill="context-fill" fill-opacity="1"/>
<circle class="zen-downloads-gradient" cx="64" cy="64" r="47.5" fill="url(#zen-downloads-grad-front-f11)" style="mix-blend-mode: overlay; opacity: 0.1;"/>
<circle class="zen-downloads-border" cx="64" cy="64" r="47.5" fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
<path class="zen-downloads-arrow" d="M 64 57.001 L 64 83 M 50 69 L 64 83 L 78 69" stroke="context-stroke" stroke-width="7.1" fill="none" stroke-linecap="round" stroke-linejoin="round" transform="translate(0 10)"/>
</svg>
<svg x="336" width="28" height="28" viewBox="0 0 128 128">
<defs>
<linearGradient gradientUnits="userSpaceOnUse" x1="64" y1="20" x2="64" y2="148" id="zen-downloads-grad-front-f12">
<stop offset="0" stop-color="context-fill"/>
<stop offset="1" stop-color="context-stroke"/>
</linearGradient>
</defs>
<g class="zen-downloads-circle-translate" transform="translate(64 64) translate(0 0.423) translate(-64 -64)">
<circle class="zen-downloads-bg" cx="64" cy="64" r="47.5" fill="context-fill" fill-opacity="1"/>
<circle class="zen-downloads-gradient" cx="64" cy="64" r="47.5" fill="url(#zen-downloads-grad-front-f12)" style="mix-blend-mode: overlay; opacity: 0.1;"/>
<circle class="zen-downloads-border" cx="64" cy="64" r="47.5" fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
<path class="zen-downloads-arrow" d="M 64 56.035 L 64 83 M 50 69 L 64 83 L 78 69" stroke="context-stroke" stroke-width="7.1" fill="none" stroke-linecap="round" stroke-linejoin="round" transform="translate(0 8.325)"/>
</svg>
<svg x="364" width="28" height="28" viewBox="0 0 128 128">
<defs>
<linearGradient gradientUnits="userSpaceOnUse" x1="64" y1="20" x2="64" y2="148" id="zen-downloads-grad-front-f13">
<stop offset="0" stop-color="context-fill"/>
<stop offset="1" stop-color="context-stroke"/>
</linearGradient>
</defs>
<g class="zen-downloads-circle-translate" transform="translate(64 64) translate(0 -2.757) translate(-64 -64)">
<circle class="zen-downloads-bg" cx="64" cy="64" r="47.5" fill="context-fill" fill-opacity="1"/>
<circle class="zen-downloads-gradient" cx="64" cy="64" r="47.5" fill="url(#zen-downloads-grad-front-f13)" style="mix-blend-mode: overlay; opacity: 0.1;"/>
<circle class="zen-downloads-border" cx="64" cy="64" r="47.5" fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
<path class="zen-downloads-arrow" d="M 64 54.37 L 64 83 M 50 69 L 64 83 L 78 69" stroke="context-stroke" stroke-width="7.1" fill="none" stroke-linecap="round" stroke-linejoin="round" transform="translate(0 5.434)"/>
</svg>
<svg x="392" width="28" height="28" viewBox="0 0 128 128">
<defs>
<linearGradient gradientUnits="userSpaceOnUse" x1="64" y1="20" x2="64" y2="148" id="zen-downloads-grad-front-f14">
<stop offset="0" stop-color="context-fill"/>
<stop offset="1" stop-color="context-stroke"/>
</linearGradient>
</defs>
<g class="zen-downloads-circle-translate" transform="translate(64 64) translate(0 -5.733) translate(-64 -64)">
<circle class="zen-downloads-bg" cx="64" cy="64" r="47.5" fill="context-fill" fill-opacity="1"/>
<circle class="zen-downloads-gradient" cx="64" cy="64" r="47.5" fill="url(#zen-downloads-grad-front-f14)" style="mix-blend-mode: overlay; opacity: 0.1;"/>
<circle class="zen-downloads-border" cx="64" cy="64" r="47.5" fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
<path class="zen-downloads-arrow" d="M 64 51.937 L 64 83 M 50 69 L 64 83 L 78 69" stroke="context-stroke" stroke-width="7.1" fill="none" stroke-linecap="round" stroke-linejoin="round" transform="translate(0 1.211)"/>
</svg>
<svg x="420" width="28" height="28" viewBox="0 0 128 128">
<defs>
<linearGradient gradientUnits="userSpaceOnUse" x1="64" y1="20" x2="64" y2="148" id="zen-downloads-grad-front-f15">
<stop offset="0" stop-color="context-fill"/>
<stop offset="1" stop-color="context-stroke"/>
</linearGradient>
</defs>
<g class="zen-downloads-circle-translate" transform="translate(64 64) translate(0 -8.006) translate(-64 -64)">
<circle class="zen-downloads-bg" cx="64" cy="64" r="47.5" fill="context-fill" fill-opacity="1"/>
<circle class="zen-downloads-gradient" cx="64" cy="64" r="47.5" fill="url(#zen-downloads-grad-front-f15)" style="mix-blend-mode: overlay; opacity: 0.1;"/>
<circle class="zen-downloads-border" cx="64" cy="64" r="47.5" fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
<path class="zen-downloads-arrow" d="M 64 49.263 L 64 83 M 50 69 L 64 83 L 78 69" stroke="context-stroke" stroke-width="7.1" fill="none" stroke-linecap="round" stroke-linejoin="round" transform="translate(0 -3.429)"/>
</svg>
<svg x="448" width="28" height="28" viewBox="0 0 128 128">
<defs>
<linearGradient gradientUnits="userSpaceOnUse" x1="64" y1="20" x2="64" y2="148" id="zen-downloads-grad-front-f16">
<stop offset="0" stop-color="context-fill"/>
<stop offset="1" stop-color="context-stroke"/>
</linearGradient>
</defs>
<g class="zen-downloads-circle-translate" transform="translate(64 64) translate(0 -9.597) translate(-64 -64)">
<circle class="zen-downloads-bg" cx="64" cy="64" r="47.5" fill="context-fill" fill-opacity="1"/>
<circle class="zen-downloads-gradient" cx="64" cy="64" r="47.5" fill="url(#zen-downloads-grad-front-f16)" style="mix-blend-mode: overlay; opacity: 0.1;"/>
<circle class="zen-downloads-border" cx="64" cy="64" r="47.5" fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
<path class="zen-downloads-arrow" d="M 64 47.182 L 64 83 M 50 69 L 64 83 L 78 69" stroke="context-stroke" stroke-width="7.1" fill="none" stroke-linecap="round" stroke-linejoin="round" transform="translate(0 -7.043)"/>
</svg>
<svg x="476" width="28" height="28" viewBox="0 0 128 128">
<defs>
<linearGradient gradientUnits="userSpaceOnUse" x1="64" y1="20" x2="64" y2="148" id="zen-downloads-grad-front-f17">
<stop offset="0" stop-color="context-fill"/>
<stop offset="1" stop-color="context-stroke"/>
</linearGradient>
</defs>
<g class="zen-downloads-circle-translate" transform="translate(64 64) translate(0 -10.631) translate(-64 -64)">
<circle class="zen-downloads-bg" cx="64" cy="64" r="47.5" fill="context-fill" fill-opacity="1"/>
<circle class="zen-downloads-gradient" cx="64" cy="64" r="47.5" fill="url(#zen-downloads-grad-front-f17)" style="mix-blend-mode: overlay; opacity: 0.1;"/>
<circle class="zen-downloads-border" cx="64" cy="64" r="47.5" fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
<path class="zen-downloads-arrow" d="M 64 45.895 L 64 83 M 50 69 L 64 83 L 78 69" stroke="context-stroke" stroke-width="7.1" fill="none" stroke-linecap="round" stroke-linejoin="round" transform="translate(0 -9.277)"/>
</svg>
<svg x="504" width="28" height="28" viewBox="0 0 128 128">
<defs>
<linearGradient gradientUnits="userSpaceOnUse" x1="64" y1="20" x2="64" y2="148" id="zen-downloads-grad-front-f18">
<stop offset="0" stop-color="context-fill"/>
<stop offset="1" stop-color="context-stroke"/>
</linearGradient>
</defs>
<g class="zen-downloads-circle-translate" transform="translate(64 64) translate(0 -11.223) translate(-64 -64)">
<circle class="zen-downloads-bg" cx="64" cy="64" r="47.5" fill="context-fill" fill-opacity="1"/>
<circle class="zen-downloads-gradient" cx="64" cy="64" r="47.5" fill="url(#zen-downloads-grad-front-f18)" style="mix-blend-mode: overlay; opacity: 0.1;"/>
<circle class="zen-downloads-border" cx="64" cy="64" r="47.5" fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
<path class="zen-downloads-arrow" d="M 64 45.228 L 64 83 M 50 69 L 64 83 L 78 69" stroke="context-stroke" stroke-width="7.1" fill="none" stroke-linecap="round" stroke-linejoin="round" transform="translate(0 -10.434)"/>
</svg>
<svg x="532" width="28" height="28" viewBox="0 0 128 128">
<defs>
<linearGradient gradientUnits="userSpaceOnUse" x1="64" y1="20" x2="64" y2="148" id="zen-downloads-grad-front-f19">
<stop offset="0" stop-color="context-fill"/>
<stop offset="1" stop-color="context-stroke"/>
</linearGradient>
</defs>
<g class="zen-downloads-circle-translate" transform="translate(64 64) translate(0 -11.46) translate(-64 -64)">
<circle class="zen-downloads-bg" cx="64" cy="64" r="47.5" fill="context-fill" fill-opacity="1"/>
<circle class="zen-downloads-gradient" cx="64" cy="64" r="47.5" fill="url(#zen-downloads-grad-front-f19)" style="mix-blend-mode: overlay; opacity: 0.1;"/>
<circle class="zen-downloads-border" cx="64" cy="64" r="47.5" fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
<path class="zen-downloads-arrow" d="M 64 45 L 64 83 M 50 69 L 64 83 L 78 69" stroke="context-stroke" stroke-width="7.1" fill="none" stroke-linecap="round" stroke-linejoin="round" transform="translate(0 -10.83)"/>
</svg>
<svg x="560" width="28" height="28" viewBox="0 0 128 128">
<defs>
<linearGradient gradientUnits="userSpaceOnUse" x1="64" y1="20" x2="64" y2="148" id="zen-downloads-grad-front-f20">
<stop offset="0" stop-color="context-fill"/>
<stop offset="1" stop-color="context-stroke"/>
</linearGradient>
</defs>
<g class="zen-downloads-circle-translate" transform="translate(64 64) translate(0 -11.413) translate(-64 -64)">
<circle class="zen-downloads-bg" cx="64" cy="64" r="47.5" fill="context-fill" fill-opacity="1"/>
<circle class="zen-downloads-gradient" cx="64" cy="64" r="47.5" fill="url(#zen-downloads-grad-front-f20)" style="mix-blend-mode: overlay; opacity: 0.1;"/>
<circle class="zen-downloads-border" cx="64" cy="64" r="47.5" fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
<path class="zen-downloads-arrow" d="M 64 45 L 64 83 M 50 69 L 64 83 L 78 69" stroke="context-stroke" stroke-width="7.1" fill="none" stroke-linecap="round" stroke-linejoin="round" transform="translate(0 -10.754)"/>
</svg>
<svg x="588" width="28" height="28" viewBox="0 0 128 128">
<defs>
<linearGradient gradientUnits="userSpaceOnUse" x1="64" y1="20" x2="64" y2="148" id="zen-downloads-grad-front-f21">
<stop offset="0" stop-color="context-fill"/>
<stop offset="1" stop-color="context-stroke"/>
</linearGradient>
</defs>
<g class="zen-downloads-circle-translate" transform="translate(64 64) translate(0 -11.089) translate(-64 -64)">
<circle class="zen-downloads-bg" cx="64" cy="64" r="47.5" fill="context-fill" fill-opacity="1"/>
<circle class="zen-downloads-gradient" cx="64" cy="64" r="47.5" fill="url(#zen-downloads-grad-front-f21)" style="mix-blend-mode: overlay; opacity: 0.1;"/>
<circle class="zen-downloads-border" cx="64" cy="64" r="47.5" fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
<path class="zen-downloads-arrow" d="M 64 45 L 64 83 M 50 69 L 64 83 L 78 69" stroke="context-stroke" stroke-width="7.1" fill="none" stroke-linecap="round" stroke-linejoin="round" transform="translate(0 -10.398)"/>
</svg>
<svg x="616" width="28" height="28" viewBox="0 0 128 128">
<defs>
<linearGradient gradientUnits="userSpaceOnUse" x1="64" y1="20" x2="64" y2="148" id="zen-downloads-grad-front-f22">
<stop offset="0" stop-color="context-fill"/>
<stop offset="1" stop-color="context-stroke"/>
</linearGradient>
</defs>
<g class="zen-downloads-circle-translate" transform="translate(64 64) translate(0 -10.494) translate(-64 -64)">
<circle class="zen-downloads-bg" cx="64" cy="64" r="47.5" fill="context-fill" fill-opacity="1"/>
<circle class="zen-downloads-gradient" cx="64" cy="64" r="47.5" fill="url(#zen-downloads-grad-front-f22)" style="mix-blend-mode: overlay; opacity: 0.1;"/>
<circle class="zen-downloads-border" cx="64" cy="64" r="47.5" fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
<path class="zen-downloads-arrow" d="M 64 45 L 64 83 M 50 69 L 64 83 L 78 69" stroke="context-stroke" stroke-width="7.1" fill="none" stroke-linecap="round" stroke-linejoin="round" transform="translate(0 -9.781)"/>
</svg>
<svg x="644" width="28" height="28" viewBox="0 0 128 128">
<defs>
<linearGradient gradientUnits="userSpaceOnUse" x1="64" y1="20" x2="64" y2="148" id="zen-downloads-grad-front-f23">
<stop offset="0" stop-color="context-fill"/>
<stop offset="1" stop-color="context-stroke"/>
</linearGradient>
</defs>
<g class="zen-downloads-circle-translate" transform="translate(64 64) translate(0 -9.636) translate(-64 -64)">
<circle class="zen-downloads-bg" cx="64" cy="64" r="47.5" fill="context-fill" fill-opacity="1"/>
<circle class="zen-downloads-gradient" cx="64" cy="64" r="47.5" fill="url(#zen-downloads-grad-front-f23)" style="mix-blend-mode: overlay; opacity: 0.1;"/>
<circle class="zen-downloads-border" cx="64" cy="64" r="47.5" fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
<path class="zen-downloads-arrow" d="M 64 45 L 64 83 M 50 69 L 64 83 L 78 69" stroke="context-stroke" stroke-width="7.1" fill="none" stroke-linecap="round" stroke-linejoin="round" transform="translate(0 -8.922)"/>
</svg>
<svg x="672" width="28" height="28" viewBox="0 0 128 128">
<defs>
<linearGradient gradientUnits="userSpaceOnUse" x1="64" y1="20" x2="64" y2="148" id="zen-downloads-grad-front-f24">
<stop offset="0" stop-color="context-fill"/>
<stop offset="1" stop-color="context-stroke"/>
</linearGradient>
</defs>
<g class="zen-downloads-circle-translate" transform="translate(64 64) translate(0 -8.527) translate(-64 -64)">
<circle class="zen-downloads-bg" cx="64" cy="64" r="47.5" fill="context-fill" fill-opacity="1"/>
<circle class="zen-downloads-gradient" cx="64" cy="64" r="47.5" fill="url(#zen-downloads-grad-front-f24)" style="mix-blend-mode: overlay; opacity: 0.1;"/>
<circle class="zen-downloads-border" cx="64" cy="64" r="47.5" fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
<path class="zen-downloads-arrow" d="M 64 45 L 64 83 M 50 69 L 64 83 L 78 69" stroke="context-stroke" stroke-width="7.1" fill="none" stroke-linecap="round" stroke-linejoin="round" transform="translate(0 -7.844)"/>
</svg>
<svg x="700" width="28" height="28" viewBox="0 0 128 128">
<defs>
<linearGradient gradientUnits="userSpaceOnUse" x1="64" y1="20" x2="64" y2="148" id="zen-downloads-grad-front-f25">
<stop offset="0" stop-color="context-fill"/>
<stop offset="1" stop-color="context-stroke"/>
</linearGradient>
</defs>
<g class="zen-downloads-circle-translate" transform="translate(64 64) translate(0 -7.186) translate(-64 -64)">
<circle class="zen-downloads-bg" cx="64" cy="64" r="47.5" fill="context-fill" fill-opacity="1"/>
<circle class="zen-downloads-gradient" cx="64" cy="64" r="47.5" fill="url(#zen-downloads-grad-front-f25)" style="mix-blend-mode: overlay; opacity: 0.1;"/>
<circle class="zen-downloads-border" cx="64" cy="64" r="47.5" fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
<path class="zen-downloads-arrow" d="M 64 45 L 64 83 M 50 69 L 64 83 L 78 69" stroke="context-stroke" stroke-width="7.1" fill="none" stroke-linecap="round" stroke-linejoin="round" transform="translate(0 -6.57)"/>
</svg>
<svg x="728" width="28" height="28" viewBox="0 0 128 128">
<defs>
<linearGradient gradientUnits="userSpaceOnUse" x1="64" y1="20" x2="64" y2="148" id="zen-downloads-grad-front-f26">
<stop offset="0" stop-color="context-fill"/>
<stop offset="1" stop-color="context-stroke"/>
</linearGradient>
</defs>
<g class="zen-downloads-circle-translate" transform="translate(64 64) translate(0 -5.639) translate(-64 -64)">
<circle class="zen-downloads-bg" cx="64" cy="64" r="47.5" fill="context-fill" fill-opacity="1"/>
<circle class="zen-downloads-gradient" cx="64" cy="64" r="47.5" fill="url(#zen-downloads-grad-front-f26)" style="mix-blend-mode: overlay; opacity: 0.1;"/>
<circle class="zen-downloads-border" cx="64" cy="64" r="47.5" fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
<path class="zen-downloads-arrow" d="M 64 45 L 64 83 M 50 69 L 64 83 L 78 69" stroke="context-stroke" stroke-width="7.1" fill="none" stroke-linecap="round" stroke-linejoin="round" transform="translate(0 -5.133)"/>
</svg>
<svg x="756" width="28" height="28" viewBox="0 0 128 128">
<defs>
<linearGradient gradientUnits="userSpaceOnUse" x1="64" y1="20" x2="64" y2="148" id="zen-downloads-grad-front-f27">
<stop offset="0" stop-color="context-fill"/>
<stop offset="1" stop-color="context-stroke"/>
</linearGradient>
</defs>
<g class="zen-downloads-circle-translate" transform="translate(64 64) translate(0 -3.928) translate(-64 -64)">
<circle class="zen-downloads-bg" cx="64" cy="64" r="47.5" fill="context-fill" fill-opacity="1"/>
<circle class="zen-downloads-gradient" cx="64" cy="64" r="47.5" fill="url(#zen-downloads-grad-front-f27)" style="mix-blend-mode: overlay; opacity: 0.1;"/>
<circle class="zen-downloads-border" cx="64" cy="64" r="47.5" fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
<path class="zen-downloads-arrow" d="M 64 45 L 64 83 M 50 69 L 64 83 L 78 69" stroke="context-stroke" stroke-width="7.1" fill="none" stroke-linecap="round" stroke-linejoin="round" transform="translate(0 -3.575)"/>
</svg>
<svg x="784" width="28" height="28" viewBox="0 0 128 128">
<defs>
<linearGradient gradientUnits="userSpaceOnUse" x1="64" y1="20" x2="64" y2="148" id="zen-downloads-grad-front-f28">
<stop offset="0" stop-color="context-fill"/>
<stop offset="1" stop-color="context-stroke"/>
</linearGradient>
</defs>
<g class="zen-downloads-circle-translate" transform="translate(64 64) translate(0 -2.132) translate(-64 -64)">
<circle class="zen-downloads-bg" cx="64" cy="64" r="47.5" fill="context-fill" fill-opacity="1"/>
<circle class="zen-downloads-gradient" cx="64" cy="64" r="47.5" fill="url(#zen-downloads-grad-front-f28)" style="mix-blend-mode: overlay; opacity: 0.1;"/>
<circle class="zen-downloads-border" cx="64" cy="64" r="47.5" fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
<path class="zen-downloads-arrow" d="M 64 45 L 64 83 M 50 69 L 64 83 L 78 69" stroke="context-stroke" stroke-width="7.1" fill="none" stroke-linecap="round" stroke-linejoin="round" transform="translate(0 -1.967)"/>
</svg>
<svg x="812" width="28" height="28" viewBox="0 0 128 128">
<defs>
<linearGradient gradientUnits="userSpaceOnUse" x1="64" y1="20" x2="64" y2="148" id="zen-downloads-grad-front-f29">
<stop offset="0" stop-color="context-fill"/>
<stop offset="1" stop-color="context-stroke"/>
</linearGradient>
</defs>
<g class="zen-downloads-circle-translate" transform="translate(64 64) translate(0 -0.407) translate(-64 -64)">
<circle class="zen-downloads-bg" cx="64" cy="64" r="47.5" fill="context-fill" fill-opacity="1"/>
<circle class="zen-downloads-gradient" cx="64" cy="64" r="47.5" fill="url(#zen-downloads-grad-front-f29)" style="mix-blend-mode: overlay; opacity: 0.1;"/>
<circle class="zen-downloads-border" cx="64" cy="64" r="47.5" fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
<path class="zen-downloads-arrow" d="M 64 45 L 64 83 M 50 69 L 64 83 L 78 69" stroke="context-stroke" stroke-width="7.1" fill="none" stroke-linecap="round" stroke-linejoin="round" transform="translate(0 -0.441)"/>
</svg>
<svg x="840" width="28" height="28" viewBox="0 0 128 128">
<defs>
<linearGradient gradientUnits="userSpaceOnUse" x1="64" y1="20" x2="64" y2="148" id="zen-downloads-grad-front-f30">
<stop offset="0" stop-color="context-fill"/>
<stop offset="1" stop-color="context-stroke"/>
</linearGradient>
</defs>
<g class="zen-downloads-circle-translate" transform="translate(64 64) translate(0 0.851) translate(-64 -64)">
<circle class="zen-downloads-bg" cx="64" cy="64" r="47.5" fill="context-fill" fill-opacity="1"/>
<circle class="zen-downloads-gradient" cx="64" cy="64" r="47.5" fill="url(#zen-downloads-grad-front-f30)" style="mix-blend-mode: overlay; opacity: 0.1;"/>
<circle class="zen-downloads-border" cx="64" cy="64" r="47.5" fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
<path class="zen-downloads-arrow" d="M 64 45 L 64 83 M 50 69 L 64 83 L 78 69" stroke="context-stroke" stroke-width="7.1" fill="none" stroke-linecap="round" stroke-linejoin="round" transform="translate(0 0.661)"/>
</svg>
<svg x="868" width="28" height="28" viewBox="0 0 128 128">
<defs>
<linearGradient gradientUnits="userSpaceOnUse" x1="64" y1="20" x2="64" y2="148" id="zen-downloads-grad-front-f31">
<stop offset="0" stop-color="context-fill"/>
<stop offset="1" stop-color="context-stroke"/>
</linearGradient>
</defs>
<g class="zen-downloads-circle-translate" transform="translate(64 64) translate(0 0.99) translate(-64 -64)">
<circle class="zen-downloads-bg" cx="64" cy="64" r="47.5" fill="context-fill" fill-opacity="1"/>
<circle class="zen-downloads-gradient" cx="64" cy="64" r="47.5" fill="url(#zen-downloads-grad-front-f31)" style="mix-blend-mode: overlay; opacity: 0.1;"/>
<circle class="zen-downloads-border" cx="64" cy="64" r="47.5" fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
<path class="zen-downloads-arrow" d="M 64 45 L 64 83 M 50 69 L 64 83 L 78 69" stroke="context-stroke" stroke-width="7.1" fill="none" stroke-linecap="round" stroke-linejoin="round" transform="translate(0 0.846)"/>
</svg>
<svg x="896" width="28" height="28" viewBox="0 0 128 128">
<defs>
<linearGradient gradientUnits="userSpaceOnUse" x1="64" y1="20" x2="64" y2="148" id="zen-downloads-grad-front-f32">
<stop offset="0" stop-color="context-fill"/>
<stop offset="1" stop-color="context-stroke"/>
</linearGradient>
</defs>
<g class="zen-downloads-circle-translate" transform="translate(64 64) translate(0 0.823) translate(-64 -64)">
<circle class="zen-downloads-bg" cx="64" cy="64" r="47.5" fill="context-fill" fill-opacity="1"/>
<circle class="zen-downloads-gradient" cx="64" cy="64" r="47.5" fill="url(#zen-downloads-grad-front-f32)" style="mix-blend-mode: overlay; opacity: 0.1;"/>
<circle class="zen-downloads-border" cx="64" cy="64" r="47.5" fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
<path class="zen-downloads-arrow" d="M 64 45 L 64 83 M 50 69 L 64 83 L 78 69" stroke="context-stroke" stroke-width="7.1" fill="none" stroke-linecap="round" stroke-linejoin="round" transform="translate(0 0.718)"/>
</svg>
<svg x="924" width="28" height="28" viewBox="0 0 128 128">
<defs>
<linearGradient gradientUnits="userSpaceOnUse" x1="64" y1="20" x2="64" y2="148" id="zen-downloads-grad-front-f33">
<stop offset="0" stop-color="context-fill"/>
<stop offset="1" stop-color="context-stroke"/>
</linearGradient>
</defs>
<g class="zen-downloads-circle-translate" transform="translate(64 64) translate(0 0.566) translate(-64 -64)">
<circle class="zen-downloads-bg" cx="64" cy="64" r="47.5" fill="context-fill" fill-opacity="1"/>
<circle class="zen-downloads-gradient" cx="64" cy="64" r="47.5" fill="url(#zen-downloads-grad-front-f33)" style="mix-blend-mode: overlay; opacity: 0.1;"/>
<circle class="zen-downloads-border" cx="64" cy="64" r="47.5" fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
<path class="zen-downloads-arrow" d="M 64 45 L 64 83 M 50 69 L 64 83 L 78 69" stroke="context-stroke" stroke-width="7.1" fill="none" stroke-linecap="round" stroke-linejoin="round" transform="translate(0 0.496)"/>
</svg>
<svg x="952" width="28" height="28" viewBox="0 0 128 128">
<defs>
<linearGradient gradientUnits="userSpaceOnUse" x1="64" y1="20" x2="64" y2="148" id="zen-downloads-grad-front-f34">
<stop offset="0" stop-color="context-fill"/>
<stop offset="1" stop-color="context-stroke"/>
</linearGradient>
</defs>
<g class="zen-downloads-circle-translate" transform="translate(64 64) translate(0 0.271) translate(-64 -64)">
<circle class="zen-downloads-bg" cx="64" cy="64" r="47.5" fill="context-fill" fill-opacity="1"/>
<circle class="zen-downloads-gradient" cx="64" cy="64" r="47.5" fill="url(#zen-downloads-grad-front-f34)" style="mix-blend-mode: overlay; opacity: 0.1;"/>
<circle class="zen-downloads-border" cx="64" cy="64" r="47.5" fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
<path class="zen-downloads-arrow" d="M 64 45 L 64 83 M 50 69 L 64 83 L 78 69" stroke="context-stroke" stroke-width="7.1" fill="none" stroke-linecap="round" stroke-linejoin="round" transform="translate(0 0.236)"/>
</svg>
<svg x="980" width="28" height="28" viewBox="0 0 128 128">
<defs>
<linearGradient gradientUnits="userSpaceOnUse" x1="64" y1="20" x2="64" y2="148" id="zen-downloads-grad-front-f35">
<stop offset="0" stop-color="context-fill"/>
<stop offset="1" stop-color="context-stroke"/>
</linearGradient>
</defs>
<g class="zen-downloads-circle-translate" transform="translate(64 64) translate(0 0) translate(-64 -64)">
<circle class="zen-downloads-bg" cx="64" cy="64" r="47.5" fill="context-fill" fill-opacity="1"/>
<circle class="zen-downloads-gradient" cx="64" cy="64" r="47.5" fill="url(#zen-downloads-grad-front-f35)" style="mix-blend-mode: overlay; opacity: 0.1;"/>
<circle class="zen-downloads-border" cx="64" cy="64" r="47.5" fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
<path class="zen-downloads-arrow" d="M 64 45 L 64 83 M 50 69 L 64 83 L 78 69" stroke="context-stroke" stroke-width="7.1" fill="none" stroke-linecap="round" stroke-linejoin="round" transform="translate(0 0)"/>
</svg>
</svg>

After

Width:  |  Height:  |  Size: 39 KiB

View File

@@ -0,0 +1,8 @@
#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 class="zen-downloads-icon" width="28" height="28" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="64" cy="64" r="47.5" fill="none" stroke="context-stroke" stroke-width="7.1"/>
<path d="M 64 45 L 64 83 M 50 69 L 64 83 L 78 69" stroke="context-stroke" stroke-width="7.1" fill="none" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

View File

@@ -0,0 +1,62 @@
#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 class="zen-history-icon" width="28" height="28" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg">
<style>
@keyframes zenHistoryBodyTranslate {
0%, 31.43% { transform: translate(63.977px, 79.047px); animation-timing-function: cubic-bezier(0.16, 0.41, 0.34, 1); }
60% { transform: translate(63.977px, 63.253px); animation-timing-function: cubic-bezier(0.33, 0, 0.62, 0.55); }
77.14%, 100% { transform: translate(63.977px, 79.047px); }
}
@keyframes zenHistoryLid {
0% { transform: translate(63.977px, 37.148px) rotate(0deg) translate(-46.852px, -12.82px); animation-timing-function: cubic-bezier(0.21, 0, 0.56, 1); }
31.43% { transform: translate(63.977px, 51.609px) rotate(0deg) translate(-46.852px, -12.82px); animation-timing-function: cubic-bezier(0.38, 0, 0.55, 1); }
62.86% { transform: translate(63.977px, 17.08px) rotate(-6.93deg) translate(-46.852px, -12.82px); animation-timing-function: cubic-bezier(0.43, 0.14, 0.38, 1); }
82.86% { transform: translate(63.977px, 23.397px) rotate(4.2deg) translate(-46.852px, -12.82px); animation-timing-function: cubic-bezier(0.41, 0, 0.49, 1); }
100% { transform: translate(63.977px, 37.148px) rotate(0deg) translate(-46.852px, -12.82px); }
}
@keyframes zenHistoryDashTranslate {
0% { transform: translate(64px, 65px) scale(0.9, 1); animation-timing-function: cubic-bezier(0.33, 0, 0.7, 1.28); }
31.43% { transform: translate(64px, 79.461px) scale(0.8, 1); animation-timing-function: cubic-bezier(0.44, 0.2, 0.44, 0.98); }
54.29% { transform: translate(64px, 61.033px) scale(0.86, 1); animation-timing-function: cubic-bezier(0.45, -0.03, 0.83, 0.9); }
85.71% { transform: translate(64px, 65.66px) scale(0.9, 1); animation-timing-function: cubic-bezier(0.22, -0.9, 0.25, 1.25); }
100% { transform: translate(64px, 65px) scale(0.9, 1); }
}
.zen-history-body-translate { animation: zenHistoryBodyTranslate 0.583s forwards; }
.zen-history-lid { animation: zenHistoryLid 0.583s forwards; }
.zen-history-dash-translate { animation: zenHistoryDashTranslate 0.583s forwards; }
</style>
<defs>
<linearGradient gradientUnits="userSpaceOnUse" x1="64" y1="0" x2="64" y2="128" id="zen-history-grad-front">
<stop offset="0" stop-color="context-fill"/>
<stop offset="1" stop-color="context-stroke"/>
</linearGradient>
</defs>
<g class="zen-history-body-translate" style="transform-origin: 0 0; transform: translate(63.977px, 79.047px);">
<g transform="translate(-39.867, -30.328)">
<path class="zen-history-bg"
d="M 3.55 0 L 76.184 0 L 76.184 46.856 A 10.25 10.25 0 0 1 65.934 57.106 L 13.8 57.106 A 10.25 10.25 0 0 1 3.55 46.856 Z"
fill="context-fill" fill-opacity="1"/>
<path class="zen-history-gradient"
d="M 3.55 0 L 76.184 0 L 76.184 46.856 A 10.25 10.25 0 0 1 65.934 57.106 L 13.8 57.106 A 10.25 10.25 0 0 1 3.55 46.856 Z"
fill="url(#zen-history-grad-front)" style="mix-blend-mode: overlay; opacity: 0.1;"/>
<path class="zen-history-border"
d="M 3.55 0 L 76.184 0 L 76.184 46.856 A 10.25 10.25 0 0 1 65.934 57.106 L 13.8 57.106 A 10.25 10.25 0 0 1 3.55 46.856 Z"
fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
</g>
<g class="zen-history-lid" style="transform-origin: 0 0; transform: translate(63.977px, 37.148px) rotate(0deg) translate(-46.852px, -12.82px);">
<rect class="zen-history-bg" x="3.55" y="3.55" width="86.603" height="18.541" rx="6.05"
fill="context-fill" fill-opacity="1"/>
<rect class="zen-history-gradient" x="3.55" y="3.55" width="86.603" height="18.541" rx="6.05"
fill="url(#zen-history-grad-front)" style="mix-blend-mode: overlay; opacity: 0.1;"/>
<rect class="zen-history-border" x="3.55" y="3.55" width="86.603" height="18.541" rx="6.05"
fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
<g class="zen-history-dash-translate" style="transform-origin: 0 0; transform: translate(64px, 65px) scale(0.9, 1);">
<path class="zen-history-dash-path" fill="none"
d="M -16 0 L 16 0"
stroke="context-stroke" stroke-width="8" stroke-linecap="round" stroke-linejoin="round"/>
</g>
</svg>

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 79 KiB

View File

@@ -0,0 +1,14 @@
#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 class="zen-history-icon" width="28" height="28" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg">
<g transform="translate(63.977, 79.047)">
<path d="M -36.317 -30.328 L 36.317 -30.328 L 36.317 16.528 A 10.25 10.25 0 0 1 26.067 26.778 L -26.067 26.778 A 10.25 10.25 0 0 1 -36.317 16.528 Z"
fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
<g transform="translate(17.125, 24.328)">
<rect x="3.55" y="3.55" width="86.603" height="18.541" rx="6.05" fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
<path d="M 49.6 65 L 78.4 65" fill="none" stroke="context-stroke" stroke-width="8" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

View File

@@ -0,0 +1,74 @@
#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 class="zen-media-icon" width="28" height="28" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg">
<style>
@keyframes zenMediaBackBounce {
0% { transform: translate(54.799px, 57.743px) rotate(-7deg) translate(-46.27px, -36.445px); animation-timing-function: cubic-bezier(0.33, 0, 0.67, 1); }
24.41% { transform: translate(57.299px, 65.243px) rotate(3deg) translate(-46.27px, -36.445px); animation-timing-function: cubic-bezier(0.3, 0, 0.8, 1); }
43.67% { transform: translate(56.16px, 47.803px) rotate(-18.58deg) translate(-46.27px, -36.445px); animation-timing-function: cubic-bezier(0.16, 0, 0.8, 1); }
78.21% { transform: translate(55.25px, 54.3px) rotate(-3.2deg) translate(-46.27px, -36.445px); animation-timing-function: cubic-bezier(0.65, 0, 0.35, 1); }
100% { transform: translate(54.799px, 57.743px) rotate(-7deg) translate(-46.27px, -36.445px); }
}
@keyframes zenMediaFrontBounce {
0% { transform: translate(78.827px, 77.737px) rotate(0deg) translate(-46.27px, -36.445px); animation-timing-function: cubic-bezier(0.33, 0, 0.67, 1); }
24.41% { transform: translate(78.827px, 80.737px) rotate(0deg) translate(-46.27px, -36.445px); animation-timing-function: cubic-bezier(0.4, 0, 0.64, 1); }
55.88% { transform: translate(75.827px, 62.61px) rotate(9.32deg) translate(-46.27px, -36.445px); animation-timing-function: cubic-bezier(0.25, 0, 0.75, 1); }
88.24% { transform: translate(78.827px, 77.737px) rotate(0deg) translate(-46.27px, -36.445px); animation-timing-function: linear; }
100% { transform: translate(78.827px, 77.737px) rotate(0deg) translate(-46.27px, -36.445px); }
}
@keyframes zenMediaSunBounce {
0% { transform: translate(64.76px, 67.886px) translate(-9.914px, -9.984px); animation-timing-function: cubic-bezier(0.32, 0, 0.67, 1); }
24.41% { transform: translate(64.76px, 73.606px) translate(-9.914px, -9.984px); animation-timing-function: linear; }
35.29% { transform: translate(64.76px, 73.606px) translate(-9.914px, -9.984px); animation-timing-function: cubic-bezier(0.35, 0, 0.76, 0.72); }
55.88% { transform: translate(61.737px, 51.974px) translate(-9.914px, -9.984px); animation-timing-function: cubic-bezier(0.21, -0.71, 0.45, 1); }
100% { transform: translate(64.76px, 67.886px) translate(-9.914px, -9.984px); }
}
.zen-media-back-card { animation: zenMediaBackBounce 0.583s forwards; }
.zen-media-front-card { animation: zenMediaFrontBounce 0.583s forwards; }
.zen-media-sun { animation: zenMediaSunBounce 0.583s forwards; }
</style>
<defs>
<mask id="zen-media-mask">
<rect x="-10" y="-10" width="148" height="148" fill="white"/>
<g class="zen-media-front-card-mask" transform="translate(78.827, 77.737) translate(-46.27, -36.445)">
<rect x="0" y="0" width="92.539" height="72.891" rx="12.812" fill="black"/>
</g>
</mask>
<linearGradient gradientUnits="userSpaceOnUse" x1="64" y1="0" x2="64" y2="128" id="zen-media-grad-back">
<stop offset="0" stop-color="context-fill"/>
<stop offset="1" stop-color="context-stroke"/>
</linearGradient>
<linearGradient gradientUnits="userSpaceOnUse" x1="64" y1="0" x2="64" y2="128" id="zen-media-grad-front">
<stop offset="0" stop-color="context-fill"/>
<stop offset="1" stop-color="context-stroke"/>
</linearGradient>
</defs>
<g class="zen-media-back-wrapper" mask="url(#zen-media-mask)">
<g class="zen-media-back-card" transform="translate(54.799, 57.743) rotate(-7) translate(-46.27, -36.445)">
<rect class="zen-media-bg" x="3.55" y="3.55" width="85.439" height="65.791" rx="9.262"
fill="context-fill" fill-opacity="1"/>
<rect class="zen-media-gradient" x="3.55" y="3.55" width="85.439" height="65.791" rx="9.262"
fill="url(#zen-media-grad-back)" fill-opacity="1" style="mix-blend-mode: overlay; opacity: 0.1;"/>
<rect class="zen-media-border" x="3.55" y="3.55" width="85.439" height="65.791" rx="9.262"
fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
</g>
<g class="zen-media-front-card" transform="translate(78.827, 77.737) translate(-46.27, -36.445)">
<rect class="zen-media-bg" x="3.55" y="3.55" width="85.439" height="65.791" rx="9.262"
fill="context-fill" fill-opacity="1"/>
<rect class="zen-media-gradient" x="3.55" y="3.55" width="85.439" height="65.791" rx="9.262"
fill="url(#zen-media-grad-front)" fill-opacity="1" style="mix-blend-mode: overlay; opacity: 0.1;"/>
<g class="zen-media-mountain" transform="translate(0.289, 32.609)">
<path class="zen-media-mountain-path" d="M7.432 21.147 L17.865 12.11 C19.665 10.596 21.373 9.862 23.173 9.862 C25.158 9.862 27.005 10.596 28.805 12.202 L36.191 18.853 L54.84 2.431 C56.779 0.734 58.81 0 61.072 0 C63.334 0 65.55 0.826 67.35 2.477 L84.568 18.67 L92 25.78 C92 35.23 87.153 40 77.551 40 L14.495 40 C4.801 40 0 35.275 0 25.78 Z"
fill="context-stroke"/>
</g>
<rect class="zen-media-border" x="3.55" y="3.55" width="85.439" height="65.791" rx="9.262"
fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
<g class="zen-media-sun" transform="translate(64.76, 67.886) translate(-9.914, -9.984)">
<circle class="zen-media-sun-path" cx="9.914" cy="9.984" r="9.914"
fill="context-stroke"/>
</g>
</svg>

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 108 KiB

View File

@@ -0,0 +1,22 @@
#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 class="zen-media-icon" width="28" height="28" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg">
<defs>
<mask id="zen-media-mask-inactive">
<rect x="-10" y="-10" width="148" height="148" fill="white"/>
<g transform="translate(78.827, 77.737) translate(-46.27, -36.445)">
<rect x="0" y="0" width="92.539" height="72.891" rx="12.812" fill="black"/>
</g>
</mask>
</defs>
<g mask="url(#zen-media-mask-inactive)">
<g transform="translate(54.799, 57.743) rotate(-7) translate(-46.27, -36.445)">
<rect x="3.55" y="3.55" width="85.439" height="65.791" rx="9.262" fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
</g>
<g transform="translate(78.827, 77.737) translate(-46.27, -36.445)">
<rect x="3.55" y="3.55" width="85.439" height="65.791" rx="9.262" fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
</svg>

View File

@@ -0,0 +1,56 @@
#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 class="zen-spaces-icon" width="28" height="28" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg">
<style>
@keyframes zenSpacesBackBounce {
0% { transform: translate(51.28px, 61.69px) rotate(-17.5deg) translate(-35.022px, -44.68px); animation-timing-function: cubic-bezier(0.21, 0, 0.56, 1); }
34.28% { transform: translate(56.28px, 72.19px) rotate(6deg) translate(-35.022px, -44.68px); animation-timing-function: cubic-bezier(0.38, 0, 0.55, 1); }
62.86% { transform: translate(51.28px, 55.52px) rotate(-27.83deg) translate(-35.022px, -44.68px); animation-timing-function: cubic-bezier(0.73, 0, 0.63, 1); }
100% { transform: translate(51.28px, 61.69px) rotate(-17.5deg) translate(-35.022px, -44.68px); }
}
@keyframes zenSpacesFrontBounce {
0% { transform: translate(77.02px, 75.93px) rotate(0deg) translate(-35.022px, -44.68px); animation-timing-function: cubic-bezier(0.21, 0, 0.56, 1); }
31.43% { transform: translate(77.02px, 78.18px) rotate(-5deg) translate(-35.022px, -44.68px); animation-timing-function: cubic-bezier(0.38, 0, 0.55, 1); }
54.28% { transform: translate(77.02px, 55.71px) rotate(28.96deg) translate(-35.022px, -44.68px); animation-timing-function: cubic-bezier(0.73, 0, 0.63, 1); }
100% { transform: translate(77.02px, 75.93px) rotate(0deg) translate(-35.022px, -44.68px); }
}
.zen-spaces-back-card { animation: zenSpacesBackBounce 0.583s forwards; }
.zen-spaces-front-card { animation: zenSpacesFrontBounce 0.583s forwards; }
</style>
<defs>
<mask id="zen-spaces-mask">
<rect x="-10" y="-10" width="148" height="148" fill="white"/>
<g class="zen-spaces-front-card" style="transform-origin: 0 0; transform: translate(77.02px, 75.93px) rotate(0deg) translate(-35.022px, -44.68px);">
<rect x="0" y="0" width="70.04" height="89.36" rx="14" fill="black"/>
</g>
</mask>
<linearGradient gradientUnits="userSpaceOnUse" x1="64" y1="20" x2="64" y2="148" id="zen-spaces-grad-back">
<stop offset="0" stop-color="context-fill"/>
<stop offset="1" stop-color="context-stroke"/>
</linearGradient>
<linearGradient gradientUnits="userSpaceOnUse" x1="64" y1="20" x2="64" y2="148" id="zen-spaces-grad-front">
<stop offset="0" stop-color="context-fill"/>
<stop offset="1" stop-color="context-stroke"/>
</linearGradient>
</defs>
<g class="zen-spaces-back-wrapper" mask="url(#zen-spaces-mask)">
<g class="zen-spaces-back-card" style="transform-origin: 0 0; transform: translate(51.28px, 61.69px) rotate(-17.5deg) translate(-35.022px, -44.68px);">
<rect class="zen-spaces-bg" x="3.55" y="3.55" width="62.94" height="82.26" rx="10.45"
fill="context-fill" fill-opacity="1"/>
<rect class="zen-spaces-gradient" x="3.55" y="3.55" width="62.94" height="82.26" rx="10.45"
fill="url(#zen-spaces-grad-back)" style="mix-blend-mode: overlay; opacity: 0.1;"/>
<rect class="zen-spaces-border" x="3.55" y="3.55" width="62.94" height="82.26" rx="10.45"
fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
</g>
<g class="zen-spaces-front-card" style="transform-origin: 0 0; transform: translate(77.02px, 75.93px) rotate(0deg) translate(-35.022px, -44.68px);">
<rect class="zen-spaces-bg" x="3.55" y="3.55" width="62.94" height="82.26" rx="10.45"
fill="context-fill" fill-opacity="1"/>
<rect class="zen-spaces-gradient" x="3.55" y="3.55" width="62.94" height="82.26" rx="10.45"
fill="url(#zen-spaces-grad-front)" style="mix-blend-mode: overlay; opacity: 0.1;"/>
<rect class="zen-spaces-border" x="3.55" y="3.55" width="62.94" height="82.26" rx="10.45"
fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
</svg>

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 83 KiB

View File

@@ -0,0 +1,22 @@
#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 class="zen-spaces-icon" width="28" height="28" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg">
<defs>
<mask id="zen-spaces-mask-inactive">
<rect x="-10" y="-10" width="148" height="148" fill="white"/>
<g style="transform-origin: 0 0; transform: translate(77.02px, 75.93px) translate(-35.022px, -44.68px);">
<rect x="0" y="0" width="70.04" height="89.36" rx="14" fill="black"/>
</g>
</mask>
</defs>
<g mask="url(#zen-spaces-mask-inactive)">
<g style="transform-origin: 0 0; transform: translate(51.28px, 61.69px) rotate(-17.5deg) translate(-35.022px, -44.68px);">
<rect x="3.55" y="3.55" width="62.94" height="82.26" rx="10.45" fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
</g>
<g style="transform-origin: 0 0; transform: translate(77.02px, 75.93px) translate(-35.022px, -44.68px);">
<rect x="3.55" y="3.55" width="62.94" height="82.26" rx="10.45" fill="none" stroke="context-stroke" stroke-width="7.1"/>
</g>
</svg>

View File

@@ -0,0 +1,68 @@
#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 class="zen-library-icon" width="18" height="18" viewBox="4 4 18 18" fill="context-fill" fill-opacity="context-fill-opacity" xmlns="http://www.w3.org/2000/svg">
<style>
@property --zen-triangle-anim { syntax: '&lt;number&gt;'; initial-value: 1; inherits: false; }
@property --zen-circle-anim { syntax: '&lt;number&gt;'; initial-value: 1; inherits: false; }
@keyframes StarBackward {
0% { transform: rotate(120deg); }
100% { transform: rotate(0deg); }
}
@keyframes TriangleBackward {
0% { --zen-triangle-anim: 1; }
100% { --zen-triangle-anim: 0; }
}
@keyframes CircleBackward {
0% { --zen-circle-anim: 1; }
100% { --zen-circle-anim: 0; }
}
@keyframes GlowBackward {
0% { opacity: 0.4; }
100% { opacity: 0; }
}
@keyframes GlowElementsBackward {
0% { opacity: 0.5; }
100% { opacity: 0; }
}
.zen-library-star { transform-origin: 10px 10.2px; animation: StarBackward 0.4s cubic-bezier(0.4, 0, 0.2, 1) forwards; }
.zen-library-triangle-group { transform-origin: 17px 9.2px; animation: TriangleBackward 0.4s cubic-bezier(0.4, 0, 0.2, 1) forwards; transform: translate(calc(var(--zen-triangle-anim) * 2px), 0px) rotate(calc(var(--zen-triangle-anim) * 365deg)) scale(max(1 - var(--zen-triangle-anim) / 0.65, (var(--zen-triangle-anim) - 0.65) / 0.35)); }
.zen-library-circle { transform-origin: 0px 0px; animation: CircleBackward 0.4s cubic-bezier(0.4, 0, 0.2, 1) forwards; transform: translate(calc(var(--zen-circle-anim) * 1px), calc(var(--zen-circle-anim) * -1.5px)) scale(max(0, max((var(--zen-circle-anim) - 0.75) / 0.25, min(1, 1 - (var(--zen-circle-anim) - 0.3) / 0.35)))); }
.zen-library-glow { filter: blur(2px); animation: GlowBackward 0.4s cubic-bezier(0.4, 0, 0.2, 1) forwards; }
.zen-library-glow-element { filter: blur(2px); animation: GlowElementsBackward 0.4s cubic-bezier(0.4, 0, 0.2, 1) forwards; }
.zen-library-glow-bg, .zen-library-glow-element { fill: transparent !important; stroke: none !important; }
.zen-library-glow-rays { stroke: transparent !important; fill: none !important; }
@media (prefers-color-scheme: dark) {
.zen-library-glow-bg, .zen-library-glow-element { fill: white !important; }
.zen-library-glow-rays { stroke: white !important; }
}
</style>
<defs>
<mask id="zen-library-box-mask">
<rect x="-10" y="-10" width="40" height="40" fill="white"/>
<rect x="-10" y="11.635" width="40" height="40" fill="black"/>
</mask>
</defs>
<g fill-rule="evenodd">
<g mask="url(#zen-library-box-mask)">
<path class="zen-library-star zen-library-glow-element" d="M 7.773 11.635 C 8.136 11.863 8.24 12.075 8.218 12.294 L 8.036 14.082 C 7.984 14.598 8.584 14.917 8.982 14.585 L 10.362 13.432 C 10.53 13.291 10.764 13.258 10.966 13.347 L 12.61 14.072 C 13.085 14.281 13.574 13.808 13.38 13.327 L 12.701 11.635 C 12.632 11.437 12.675 11.216 12.816 11.058 L 14.014 9.718 C 14.36 9.331 14.061 8.72 13.544 8.756 L 11.75 8.877 C 11.531 8.892 11.322 8.781 11.211 8.591 L 10.307 7.038 C 10.046 6.59 9.373 6.685 9.247 7.188 L 8.808 8.931 C 8.754 9.144 8.585 9.309 8.37 9.355 L 6.613 9.735 C 6.106 9.845 5.988 10.514 6.427 10.79 L 7.773 11.635 Z"/>
<path class="zen-library-star" d="M 7.773 11.635 C 8.136 11.863 8.24 12.075 8.218 12.294 L 8.036 14.082 C 7.984 14.598 8.584 14.917 8.982 14.585 L 10.362 13.432 C 10.53 13.291 10.764 13.258 10.966 13.347 L 12.61 14.072 C 13.085 14.281 13.574 13.808 13.38 13.327 L 12.701 11.635 C 12.632 11.437 12.675 11.216 12.816 11.058 L 14.014 9.718 C 14.36 9.331 14.061 8.72 13.544 8.756 L 11.75 8.877 C 11.531 8.892 11.322 8.781 11.211 8.591 L 10.307 7.038 C 10.046 6.59 9.373 6.685 9.247 7.188 L 8.808 8.931 C 8.754 9.144 8.585 9.309 8.37 9.355 L 6.613 9.735 C 6.106 9.845 5.988 10.514 6.427 10.79 L 7.773 11.635 Z"/>
</g>
<g transform="translate(14, 6.2)">
<circle class="zen-library-circle zen-library-glow-element" cx="0" cy="0" r="1.4"/>
<circle class="zen-library-circle" cx="0" cy="0" r="1"/>
</g>
<g class="zen-library-triangle-group">
<g transform="translate(17, 9.2)">
<path class="zen-library-triangle zen-library-glow-element" d="M -1.1 1.8 C -1.4 2.0, -1.7 1.8, -1.7 1.5 L -1.7 -1.5 C -1.7 -1.8, -1.4 -2.0, -1.1 -1.8 L 1.4 -0.4 C 1.7 -0.2, 1.7 0.2, 1.4 0.4 Z"/>
<path class="zen-library-triangle" d="M -1.1 1.8 C -1.4 2.0, -1.7 1.8, -1.7 1.5 L -1.7 -1.5 C -1.7 -1.8, -1.4 -2.0, -1.1 -1.8 L 1.4 -0.4 C 1.7 -0.2, 1.7 0.2, 1.4 0.4 Z"/>
</g>
</g>
<g class="zen-library-glow">
<path class="zen-library-glow-bg" d="M 6.6 6.6 L 8.04 12.7 L 17.96 12.7 L 19.4 6.6 Z"/>
<path class="zen-library-glow-rays" d="M 6.1 6.6 L 8.04 12.7 L 17.96 12.7 L 19.9 6.6"/>
</g>
<path class="zen-library-box" d="M 7.218 13.287 C 7.218 12.831 7.588 12.461 8.044 12.461 H 17.957 C 18.414 12.461 18.783 12.831 18.783 13.287 V 17.418 C 18.783 19.243 17.304 20.722 15.479 20.722 H 10.523 C 8.698 20.722 7.218 19.243 7.218 17.418 V 13.287 Z M 10.609 14.526 C 10.609 14.07 10.979 13.7 11.435 13.7 H 14.739 C 15.196 13.7 15.565 14.07 15.565 14.526 C 15.565 14.982 15.196 15.352 14.739 15.352 H 11.435 C 10.979 15.352 10.609 14.982 10.609 14.526 Z"/>
</g>
</svg>

View File

@@ -309,7 +309,8 @@
display: none;
}
#library-button {
#library-button,
#zen-library-button {
list-style-image: url("library.svg") !important;
}

View File

@@ -14,8 +14,8 @@
* skin/classic/browser/zen-icons/autoplay-media-fill.svg (../shared/zen-icons/nucleo/autoplay-media-fill.svg)
* skin/classic/browser/zen-icons/autoplay-media.svg (../shared/zen-icons/nucleo/autoplay-media.svg)
* skin/classic/browser/zen-icons/back.svg (../shared/zen-icons/nucleo/back.svg)
* skin/classic/browser/zen-icons/blocked-element.svg (../shared/zen-icons/nucleo/blocked-element.svg)
* skin/classic/browser/zen-icons/block.svg (../shared/zen-icons/nucleo/block.svg)
* skin/classic/browser/zen-icons/blocked-element.svg (../shared/zen-icons/nucleo/blocked-element.svg)
* skin/classic/browser/zen-icons/bolt.svg (../shared/zen-icons/nucleo/bolt.svg)
* skin/classic/browser/zen-icons/bookmark-hollow.svg (../shared/zen-icons/nucleo/bookmark-hollow.svg)
* skin/classic/browser/zen-icons/bookmark-star-on-tray.svg (../shared/zen-icons/nucleo/bookmark-star-on-tray.svg)
@@ -104,26 +104,26 @@
* skin/classic/browser/zen-icons/popup-fill.svg (../shared/zen-icons/nucleo/popup-fill.svg)
* skin/classic/browser/zen-icons/popup.svg (../shared/zen-icons/nucleo/popup.svg)
* skin/classic/browser/zen-icons/print.svg (../shared/zen-icons/nucleo/print.svg)
* skin/classic/browser/zen-icons/privateBrowsing.svg (../shared/zen-icons/nucleo/privateBrowsing.svg)
* skin/classic/browser/zen-icons/private-window.svg (../shared/zen-icons/nucleo/private-window.svg)
* skin/classic/browser/zen-icons/privateBrowsing.svg (../shared/zen-icons/nucleo/privateBrowsing.svg)
* skin/classic/browser/zen-icons/reader-mode.svg (../shared/zen-icons/nucleo/reader-mode.svg)
* skin/classic/browser/zen-icons/reload.svg (../shared/zen-icons/nucleo/reload.svg)
* skin/classic/browser/zen-icons/save.svg (../shared/zen-icons/nucleo/save.svg)
* skin/classic/browser/zen-icons/screen-blocked.svg (../shared/zen-icons/nucleo/screen-blocked.svg)
* skin/classic/browser/zen-icons/screenshot.svg (../shared/zen-icons/nucleo/screenshot.svg)
* skin/classic/browser/zen-icons/screen.svg (../shared/zen-icons/nucleo/screen.svg)
* skin/classic/browser/zen-icons/screenshot.svg (../shared/zen-icons/nucleo/screenshot.svg)
* skin/classic/browser/zen-icons/search-glass.svg (../shared/zen-icons/nucleo/search-glass.svg)
* skin/classic/browser/zen-icons/search-page.svg (../shared/zen-icons/nucleo/search-page.svg)
* skin/classic/browser/zen-icons/security-broken.svg (../shared/zen-icons/nucleo/security-broken.svg)
* skin/classic/browser/zen-icons/security.svg (../shared/zen-icons/nucleo/security.svg)
* skin/classic/browser/zen-icons/security-warning.svg (../shared/zen-icons/nucleo/security-warning.svg)
* skin/classic/browser/zen-icons/security.svg (../shared/zen-icons/nucleo/security.svg)
* skin/classic/browser/zen-icons/send-to-device.svg (../shared/zen-icons/nucleo/send-to-device.svg)
* skin/classic/browser/zen-icons/settings-fill.svg (../shared/zen-icons/nucleo/settings-fill.svg)
* skin/classic/browser/zen-icons/settings.svg (../shared/zen-icons/nucleo/settings.svg)
* skin/classic/browser/zen-icons/share.svg (../shared/zen-icons/nucleo/share.svg)
* skin/classic/browser/zen-icons/sidebar-right.svg (../shared/zen-icons/nucleo/sidebar-right.svg)
* skin/classic/browser/zen-icons/sidebars-right.svg (../shared/zen-icons/nucleo/sidebars-right.svg)
* skin/classic/browser/zen-icons/sidebar.svg (../shared/zen-icons/nucleo/sidebar.svg)
* skin/classic/browser/zen-icons/sidebars-right.svg (../shared/zen-icons/nucleo/sidebars-right.svg)
* skin/classic/browser/zen-icons/sliders.svg (../shared/zen-icons/nucleo/sliders.svg)
* skin/classic/browser/zen-icons/sparkles.svg (../shared/zen-icons/nucleo/sparkles.svg)
* skin/classic/browser/zen-icons/spell-check.svg (../shared/zen-icons/nucleo/spell-check.svg)
@@ -164,8 +164,8 @@
* skin/classic/browser/zen-icons/autoplay-media-fill.svg (../shared/zen-icons/nucleo/autoplay-media-fill.svg)
* skin/classic/browser/zen-icons/autoplay-media.svg (../shared/zen-icons/nucleo/autoplay-media.svg)
* skin/classic/browser/zen-icons/back.svg (../shared/zen-icons/nucleo/back.svg)
* skin/classic/browser/zen-icons/blocked-element.svg (../shared/zen-icons/nucleo/blocked-element.svg)
* skin/classic/browser/zen-icons/block.svg (../shared/zen-icons/nucleo/block.svg)
* skin/classic/browser/zen-icons/blocked-element.svg (../shared/zen-icons/nucleo/blocked-element.svg)
* skin/classic/browser/zen-icons/bolt.svg (../shared/zen-icons/nucleo/bolt.svg)
* skin/classic/browser/zen-icons/bookmark-hollow.svg (../shared/zen-icons/nucleo/bookmark-hollow.svg)
* skin/classic/browser/zen-icons/bookmark-star-on-tray.svg (../shared/zen-icons/nucleo/bookmark-star-on-tray.svg)
@@ -254,26 +254,26 @@
* skin/classic/browser/zen-icons/popup-fill.svg (../shared/zen-icons/nucleo/popup-fill.svg)
* skin/classic/browser/zen-icons/popup.svg (../shared/zen-icons/nucleo/popup.svg)
* skin/classic/browser/zen-icons/print.svg (../shared/zen-icons/nucleo/print.svg)
* skin/classic/browser/zen-icons/privateBrowsing.svg (../shared/zen-icons/nucleo/privateBrowsing.svg)
* skin/classic/browser/zen-icons/private-window.svg (../shared/zen-icons/nucleo/private-window.svg)
* skin/classic/browser/zen-icons/privateBrowsing.svg (../shared/zen-icons/nucleo/privateBrowsing.svg)
* skin/classic/browser/zen-icons/reader-mode.svg (../shared/zen-icons/nucleo/reader-mode.svg)
* skin/classic/browser/zen-icons/reload.svg (../shared/zen-icons/nucleo/reload.svg)
* skin/classic/browser/zen-icons/save.svg (../shared/zen-icons/nucleo/save.svg)
* skin/classic/browser/zen-icons/screen-blocked.svg (../shared/zen-icons/nucleo/screen-blocked.svg)
* skin/classic/browser/zen-icons/screenshot.svg (../shared/zen-icons/nucleo/screenshot.svg)
* skin/classic/browser/zen-icons/screen.svg (../shared/zen-icons/nucleo/screen.svg)
* skin/classic/browser/zen-icons/screenshot.svg (../shared/zen-icons/nucleo/screenshot.svg)
* skin/classic/browser/zen-icons/search-glass.svg (../shared/zen-icons/nucleo/search-glass.svg)
* skin/classic/browser/zen-icons/search-page.svg (../shared/zen-icons/nucleo/search-page.svg)
* skin/classic/browser/zen-icons/security-broken.svg (../shared/zen-icons/nucleo/security-broken.svg)
* skin/classic/browser/zen-icons/security.svg (../shared/zen-icons/nucleo/security.svg)
* skin/classic/browser/zen-icons/security-warning.svg (../shared/zen-icons/nucleo/security-warning.svg)
* skin/classic/browser/zen-icons/security.svg (../shared/zen-icons/nucleo/security.svg)
* skin/classic/browser/zen-icons/send-to-device.svg (../shared/zen-icons/nucleo/send-to-device.svg)
* skin/classic/browser/zen-icons/settings-fill.svg (../shared/zen-icons/nucleo/settings-fill.svg)
* skin/classic/browser/zen-icons/settings.svg (../shared/zen-icons/nucleo/settings.svg)
* skin/classic/browser/zen-icons/share.svg (../shared/zen-icons/nucleo/share.svg)
* skin/classic/browser/zen-icons/sidebar-right.svg (../shared/zen-icons/nucleo/sidebar-right.svg)
* skin/classic/browser/zen-icons/sidebars-right.svg (../shared/zen-icons/nucleo/sidebars-right.svg)
* skin/classic/browser/zen-icons/sidebar.svg (../shared/zen-icons/nucleo/sidebar.svg)
* skin/classic/browser/zen-icons/sidebars-right.svg (../shared/zen-icons/nucleo/sidebars-right.svg)
* skin/classic/browser/zen-icons/sliders.svg (../shared/zen-icons/nucleo/sliders.svg)
* skin/classic/browser/zen-icons/sparkles.svg (../shared/zen-icons/nucleo/sparkles.svg)
* skin/classic/browser/zen-icons/spell-check.svg (../shared/zen-icons/nucleo/spell-check.svg)
@@ -314,8 +314,8 @@
* skin/classic/browser/zen-icons/autoplay-media-fill.svg (../shared/zen-icons/nucleo/autoplay-media-fill.svg)
* skin/classic/browser/zen-icons/autoplay-media.svg (../shared/zen-icons/nucleo/autoplay-media.svg)
* skin/classic/browser/zen-icons/back.svg (../shared/zen-icons/nucleo/back.svg)
* skin/classic/browser/zen-icons/blocked-element.svg (../shared/zen-icons/nucleo/blocked-element.svg)
* skin/classic/browser/zen-icons/block.svg (../shared/zen-icons/nucleo/block.svg)
* skin/classic/browser/zen-icons/blocked-element.svg (../shared/zen-icons/nucleo/blocked-element.svg)
* skin/classic/browser/zen-icons/bolt.svg (../shared/zen-icons/nucleo/bolt.svg)
* skin/classic/browser/zen-icons/bookmark-hollow.svg (../shared/zen-icons/nucleo/bookmark-hollow.svg)
* skin/classic/browser/zen-icons/bookmark-star-on-tray.svg (../shared/zen-icons/nucleo/bookmark-star-on-tray.svg)
@@ -404,26 +404,26 @@
* skin/classic/browser/zen-icons/popup-fill.svg (../shared/zen-icons/nucleo/popup-fill.svg)
* skin/classic/browser/zen-icons/popup.svg (../shared/zen-icons/nucleo/popup.svg)
* skin/classic/browser/zen-icons/print.svg (../shared/zen-icons/nucleo/print.svg)
* skin/classic/browser/zen-icons/privateBrowsing.svg (../shared/zen-icons/nucleo/privateBrowsing.svg)
* skin/classic/browser/zen-icons/private-window.svg (../shared/zen-icons/nucleo/private-window.svg)
* skin/classic/browser/zen-icons/privateBrowsing.svg (../shared/zen-icons/nucleo/privateBrowsing.svg)
* skin/classic/browser/zen-icons/reader-mode.svg (../shared/zen-icons/nucleo/reader-mode.svg)
* skin/classic/browser/zen-icons/reload.svg (../shared/zen-icons/nucleo/reload.svg)
* skin/classic/browser/zen-icons/save.svg (../shared/zen-icons/nucleo/save.svg)
* skin/classic/browser/zen-icons/screen-blocked.svg (../shared/zen-icons/nucleo/screen-blocked.svg)
* skin/classic/browser/zen-icons/screenshot.svg (../shared/zen-icons/nucleo/screenshot.svg)
* skin/classic/browser/zen-icons/screen.svg (../shared/zen-icons/nucleo/screen.svg)
* skin/classic/browser/zen-icons/screenshot.svg (../shared/zen-icons/nucleo/screenshot.svg)
* skin/classic/browser/zen-icons/search-glass.svg (../shared/zen-icons/nucleo/search-glass.svg)
* skin/classic/browser/zen-icons/search-page.svg (../shared/zen-icons/nucleo/search-page.svg)
* skin/classic/browser/zen-icons/security-broken.svg (../shared/zen-icons/nucleo/security-broken.svg)
* skin/classic/browser/zen-icons/security.svg (../shared/zen-icons/nucleo/security.svg)
* skin/classic/browser/zen-icons/security-warning.svg (../shared/zen-icons/nucleo/security-warning.svg)
* skin/classic/browser/zen-icons/security.svg (../shared/zen-icons/nucleo/security.svg)
* skin/classic/browser/zen-icons/send-to-device.svg (../shared/zen-icons/nucleo/send-to-device.svg)
* skin/classic/browser/zen-icons/settings-fill.svg (../shared/zen-icons/nucleo/settings-fill.svg)
* skin/classic/browser/zen-icons/settings.svg (../shared/zen-icons/nucleo/settings.svg)
* skin/classic/browser/zen-icons/share.svg (../shared/zen-icons/nucleo/share.svg)
* skin/classic/browser/zen-icons/sidebar-right.svg (../shared/zen-icons/nucleo/sidebar-right.svg)
* skin/classic/browser/zen-icons/sidebars-right.svg (../shared/zen-icons/nucleo/sidebars-right.svg)
* skin/classic/browser/zen-icons/sidebar.svg (../shared/zen-icons/nucleo/sidebar.svg)
* skin/classic/browser/zen-icons/sidebars-right.svg (../shared/zen-icons/nucleo/sidebars-right.svg)
* skin/classic/browser/zen-icons/sliders.svg (../shared/zen-icons/nucleo/sliders.svg)
* skin/classic/browser/zen-icons/sparkles.svg (../shared/zen-icons/nucleo/sparkles.svg)
* skin/classic/browser/zen-icons/spell-check.svg (../shared/zen-icons/nucleo/spell-check.svg)
@@ -453,14 +453,19 @@
* skin/classic/browser/zen-icons/zoom-out.svg (../shared/zen-icons/nucleo/zoom-out.svg)
#endif
* skin/classic/browser/zen-icons/urlbar-arrow.svg (../shared/zen-icons/common/urlbar-arrow.svg)
skin/classic/browser/zen-icons/library/library-boosts-sprite.svg (../shared/zen-icons/common/library/library-boosts-sprite.svg)
skin/classic/browser/zen-icons/library/library-downloads-sprite.svg (../shared/zen-icons/common/library/library-downloads-sprite.svg)
skin/classic/browser/zen-icons/library/library-history-sprite.svg (../shared/zen-icons/common/library/library-history-sprite.svg)
skin/classic/browser/zen-icons/library/library-media-sprite.svg (../shared/zen-icons/common/library/library-media-sprite.svg)
skin/classic/browser/zen-icons/library/library-spaces-sprite.svg (../shared/zen-icons/common/library/library-spaces-sprite.svg)
* skin/classic/browser/zen-icons/selectable/airplane.svg (../shared/zen-icons/common/selectable/airplane.svg)
* skin/classic/browser/zen-icons/selectable/american-football.svg (../shared/zen-icons/common/selectable/american-football.svg)
* skin/classic/browser/zen-icons/selectable/baseball.svg (../shared/zen-icons/common/selectable/baseball.svg)
* skin/classic/browser/zen-icons/selectable/basket.svg (../shared/zen-icons/common/selectable/basket.svg)
* skin/classic/browser/zen-icons/selectable/bed.svg (../shared/zen-icons/common/selectable/bed.svg)
* skin/classic/browser/zen-icons/selectable/bell.svg (../shared/zen-icons/common/selectable/bell.svg)
* skin/classic/browser/zen-icons/selectable/bookmark.svg (../shared/zen-icons/common/selectable/bookmark.svg)
* skin/classic/browser/zen-icons/selectable/book.svg (../shared/zen-icons/common/selectable/book.svg)
* skin/classic/browser/zen-icons/selectable/bookmark.svg (../shared/zen-icons/common/selectable/bookmark.svg)
* skin/classic/browser/zen-icons/selectable/briefcase.svg (../shared/zen-icons/common/selectable/briefcase.svg)
* skin/classic/browser/zen-icons/selectable/brush.svg (../shared/zen-icons/common/selectable/brush.svg)
* skin/classic/browser/zen-icons/selectable/bug.svg (../shared/zen-icons/common/selectable/bug.svg)
@@ -522,8 +527,8 @@
* skin/classic/browser/zen-icons/selectable/shapes.svg (../shared/zen-icons/common/selectable/shapes.svg)
* skin/classic/browser/zen-icons/selectable/shirt.svg (../shared/zen-icons/common/selectable/shirt.svg)
* skin/classic/browser/zen-icons/selectable/skull.svg (../shared/zen-icons/common/selectable/skull.svg)
* skin/classic/browser/zen-icons/selectable/squares.svg (../shared/zen-icons/common/selectable/squares.svg)
* skin/classic/browser/zen-icons/selectable/square.svg (../shared/zen-icons/common/selectable/square.svg)
* skin/classic/browser/zen-icons/selectable/squares.svg (../shared/zen-icons/common/selectable/squares.svg)
* skin/classic/browser/zen-icons/selectable/star-1.svg (../shared/zen-icons/common/selectable/star-1.svg)
* skin/classic/browser/zen-icons/selectable/star.svg (../shared/zen-icons/common/selectable/star.svg)
* skin/classic/browser/zen-icons/selectable/stats-chart.svg (../shared/zen-icons/common/selectable/stats-chart.svg)

View File

@@ -53,12 +53,15 @@ do_common_icons() {
echo "Working on $filename"
echo "* skin/classic/browser/zen-icons/$filename (../shared/zen-icons/common/$filename) " >> jar.inc.mn
done
for filename in common/selectable/*.svg; do
# remove the os/ prefix
add_header_to_file $filename
filename=$(basename $filename)
echo "Working on $filename"
echo "* skin/classic/browser/zen-icons/selectable/$filename (../shared/zen-icons/common/selectable/$filename) " >> jar.inc.mn
# go through all subdirectories of common and do the same
for dir in common/*/; do
display_dir=$(basename $dir)
for filename in $dir/*.svg; do
add_header_to_file $filename
filename=$(basename $filename)
echo "Working on $filename"
echo "* skin/classic/browser/zen-icons/$display_dir/$filename (../shared/zen-icons/common/$display_dir/$filename) " >> jar.inc.mn
done
done
}

View File

@@ -1,5 +1,5 @@
diff --git a/docshell/base/BrowsingContext.h b/docshell/base/BrowsingContext.h
index 6f7f58bba3be6f08b3b27e81f30864c61d683351..2516126365ee9e1c07e245a873efe5f48767aff7 100644
index 02abb6ab9562a7b41f4a95a6289c80da8d1176e8..1722802021f331338fc10c768301a953e582b711 100644
--- a/docshell/base/BrowsingContext.h
+++ b/docshell/base/BrowsingContext.h
@@ -265,6 +265,9 @@ struct EmbedderColorSchemes {
@@ -24,23 +24,13 @@ index 6f7f58bba3be6f08b3b27e81f30864c61d683351..2516126365ee9e1c07e245a873efe5f4
float FullZoom() const { return GetFullZoom(); }
float TextZoom() const { return GetTextZoom(); }
@@ -1290,6 +1298,19 @@ class BrowsingContext : public nsILoadContext, public nsWrapperCache {
@@ -1275,6 +1283,9 @@ class BrowsingContext : public nsILoadContext, public nsWrapperCache {
}
void DidSet(FieldIndex<IDX_SessionStoreEpoch>, uint32_t aOldValue);
+ void DidSet(FieldIndex<IDX_ZenBoostsData>, nscolor aOldValue);
+ void DidSet(FieldIndex<IDX_ZenBoostsComplementaryRotation>, float aOldValue);
+ void DidSet(FieldIndex<IDX_IsZenBoostsInverted>, bool aOldValue);
+ bool CanSet(FieldIndex<IDX_ZenBoostsData>, const nscolor&, ContentParent*) {
+ return true;
+ }
+ bool CanSet(FieldIndex<IDX_ZenBoostsComplementaryRotation>, const float&,
+ ContentParent*) {
+ return true;
+ }
+ bool CanSet(FieldIndex<IDX_IsZenBoostsInverted>, const bool&, ContentParent*) {
+ return true;
+ }
// Ensure that opener is in the same BrowsingContextGroup.
bool CanSet(FieldIndex<IDX_OpenerId>, const uint64_t& aValue,
using CanSetResult = syncedcontext::CanSetResult;

View File

@@ -1,8 +1,8 @@
diff --git a/dom/base/Document.cpp b/dom/base/Document.cpp
index 73eb08f648d55121a0cd96cd808f932fb14bfee6..efa99861a5da12ad8d0daa2c0eb1473c57810397 100644
index 328b7524810322561700347fa7f26403897635a8..58d33d68e050d11ea712413ad5c2170a112e404a 100644
--- a/dom/base/Document.cpp
+++ b/dom/base/Document.cpp
@@ -471,6 +471,7 @@
@@ -467,6 +467,7 @@
#include "prtime.h"
#include "prtypes.h"
#include "xpcpublic.h"
@@ -10,15 +10,14 @@ index 73eb08f648d55121a0cd96cd808f932fb14bfee6..efa99861a5da12ad8d0daa2c0eb1473c
// clang-format off
#include "mozilla/Encoding.h"
@@ -3164,6 +3165,11 @@ void Document::FillStyleSetUserAndUASheets() {
}
};
+ if (IsInChromeDocShell()) {
@@ -3198,6 +3199,10 @@ void Document::FillStyleSetUserAndUASheets() {
for (StyleSheet* sheet : *sheetService->UserStyleSheets()) {
styleSet.AppendStyleSheet(*sheet);
}
+ if (auto sheet = zen::ZenStyleSheetCache::Singleton()->GetModsSheet(); sheet && IsInChromeDocShell()) {
+ // The mods sheet is only used in the chrome docshell.
+ MaybeAppend(zen::ZenStyleSheetCache::Singleton()->GetModsSheet());
+ styleSet.AppendStyleSheet(*sheet);
+ }
+
MaybeAppend(IsInChromeDocShell() ? cache->GetUserChromeSheet()
: cache->GetUserContentSheet());
MaybeAppend(cache->GetUASheet());
StyleSheet* sheet = IsInChromeDocShell() ? cache->GetUserChromeSheet()
: cache->GetUserContentSheet();

View File

@@ -1,5 +1,5 @@
diff --git a/dom/chrome-webidl/MediaController.webidl b/dom/chrome-webidl/MediaController.webidl
index 790bc66a31253a861b21658e67c83796ae939298..0fb7e6cfbb1d1d35aeceb8d7b903cd86bf64403c 100644
index 6063e86e747dac87aafc865af95800daef2a5b9d..7fc4e72ee73a16b9ec2c1b9d11d926246fb7f7b6 100644
--- a/dom/chrome-webidl/MediaController.webidl
+++ b/dom/chrome-webidl/MediaController.webidl
@@ -23,6 +23,12 @@ enum MediaControlKey {
@@ -15,15 +15,12 @@ index 790bc66a31253a861b21658e67c83796ae939298..0fb7e6cfbb1d1d35aeceb8d7b903cd86
/**
* MediaController is used to control media playback for a tab, and each tab
* would only have one media controller, which can be accessed from the
@@ -36,6 +42,7 @@ interface MediaController : EventTarget {
@@ -36,10 +42,14 @@ interface MediaController : EventTarget {
readonly attribute boolean isPlaying;
readonly attribute boolean isAnyMediaBeingControlled;
readonly attribute MediaSessionPlaybackState playbackState;
+ readonly attribute boolean isBeingUsedInPIPModeOrFullscreen;
// The effective audio-session type the tab is currently claiming. Chrome
// consumers can use this to apply tab/application level audio-focus
@@ -46,6 +53,9 @@ interface MediaController : EventTarget {
[Throws]
MediaMetadataInit getMetadata();

View File

@@ -1,5 +1,5 @@
diff --git a/eslint-file-globals.config.mjs b/eslint-file-globals.config.mjs
index c15744aeaf940cea9e438e7b9924a328d2615b9f..df5c6c3f36e78537e0a54fb89dfd5b3d510a51a4 100644
index bf1341a84382380d45b936aeffde3f167301a9ed..b6aa373252888dcdefd528a40329f1959086d8e5 100644
--- a/eslint-file-globals.config.mjs
+++ b/eslint-file-globals.config.mjs
@@ -22,6 +22,7 @@
@@ -10,9 +10,9 @@ index c15744aeaf940cea9e438e7b9924a328d2615b9f..df5c6c3f36e78537e0a54fb89dfd5b3d
export default [
{
@@ -576,4 +577,9 @@ export default [
globals: globals.audioWorklet,
},
@@ -550,4 +551,9 @@ export default [
],
languageOptions: { globals: globals.worker },
},
+ {
+ name: "zen-globals",

View File

@@ -32,9 +32,9 @@ diff --git a/browser/components/urlbar/UrlbarPrefs.sys.mjs b/browser/components/
// or remote settings.
["flightStatus.minKeywordLength", 0],
diff --git a/browser/components/urlbar/content/UrlbarView.mjs b/browser/components/urlbar/content/UrlbarView.mjs
--- a/browser/components/urlbar/content/UrlbarView.mjs
+++ b/browser/components/urlbar/content/UrlbarView.mjs
diff --git a/browser/components/urlbar/UrlbarView.sys.mjs b/browser/components/urlbar/UrlbarView.sys.mjs
--- a/browser/components/urlbar/UrlbarView.sys.mjs
+++ b/browser/components/urlbar/UrlbarView.sys.mjs
@@ -3909,10 +3909,16 @@
}
}

View File

@@ -1,5 +1,5 @@
diff --git a/layout/base/nsPresContext.h b/layout/base/nsPresContext.h
index 5f27c288fd027cf245421e7f049103a7e19da18a..fcd65b74c5881a75d9cb6847379e32d0a0652e67 100644
index 13aa7141c8e5297d0dd6aa9bd78fd32f050e8123..149a89e928d354f116c54f71605830f5ec6b7f8a 100644
--- a/layout/base/nsPresContext.h
+++ b/layout/base/nsPresContext.h
@@ -594,6 +594,22 @@ class nsPresContext : public nsISupports,
@@ -23,11 +23,11 @@ index 5f27c288fd027cf245421e7f049103a7e19da18a..fcd65b74c5881a75d9cb6847379e32d0
+ bool ZenBoostsOverrideInverted() const { return mZenBoostsOverrideInverted; }
+
/**
* Sets the effective link parameters overrides, and invalidate stuff as
* needed.
@@ -1434,6 +1450,11 @@ class nsPresContext : public nsISupports,
* Return the device's screen size in inches, for font size
* inflation.
@@ -1441,6 +1457,11 @@ class nsPresContext : public nsISupports,
mozilla::dom::PrefersColorSchemeOverride mOverriddenOrEmbedderColorScheme;
mozilla::StyleForcedColors mForcedColors;
mozilla::StyleLinkParameters mLinkParameters;
+ nscolor mZenBoostsOverrideAccent = 0;
+ float mZenBoostsOverrideComplementaryRotation = 0.0f;

View File

@@ -1,5 +1,5 @@
diff --git a/layout/generic/nsTextPaintStyle.cpp b/layout/generic/nsTextPaintStyle.cpp
index f741ab5eb83778ec2460a5d975757f09b3f2865e..f39a019c0d82db7ba9a122ce5269d0833ae04568 100644
index 5d1bf44687e925aff67f44c8e0629f7f06e84e98..1fa60a4d91edc60ba733cefc5f73ab8b7684d02a 100644
--- a/layout/generic/nsTextPaintStyle.cpp
+++ b/layout/generic/nsTextPaintStyle.cpp
@@ -240,7 +240,7 @@ bool nsTextPaintStyle::GetTargetTextColor(nscolor* aForeColor) {
@@ -39,8 +39,18 @@ index f741ab5eb83778ec2460a5d975757f09b3f2865e..f39a019c0d82db7ba9a122ce5269d083
return NS_GET_A(*aBackColor) != 0;
}
@@ -462,12 +463,12 @@ bool nsTextPaintStyle::InitSelectionColorsAndShadow() {
mSelectionPseudoStyle = std::move(style);
@@ -466,19 +467,19 @@ bool nsTextPaintStyle::InitSelectionColorsAndShadow() {
// this is web content or chrome content. See bug 2029839.
if (!mFrame->PresContext()->Document()->ChromeRulesEnabled()) {
mSelectionBGColor = mSelectionPseudoStyle->GetVisitedDependentColor(
- &nsStyleBackground::mBackgroundColor);
- mSelectionTextColor =
- mSelectionPseudoStyle->GetVisitedDependentColor(&nsStyleText::mColor);
+ &nsStyleBackground::mBackgroundColor, mFrame);
+ mSelectionTextColor = mSelectionPseudoStyle->GetVisitedDependentColor(
+ &nsStyleText::mColor, mFrame);
return true;
}
if (nscolor bgColor = mSelectionPseudoStyle->GetVisitedDependentColor(
- &nsStyleBackground::mBackgroundColor);

View File

@@ -1,8 +1,8 @@
diff --git a/layout/style/StyleColor.cpp b/layout/style/StyleColor.cpp
index bbee32af30f35525730a10d0b242c0e8a8fe4695..a590fff105b30bc96fa7a0d8a8d3b1d5aa997e08 100644
index 95c7ae6abea5032bef0466e8d59d212374d7a4d0..85a48f27251756c72db8ed03a673a18e96cf76f9 100644
--- a/layout/style/StyleColor.cpp
+++ b/layout/style/StyleColor.cpp
@@ -9,6 +9,7 @@
@@ -8,6 +8,7 @@
#include "mozilla/dom/BindingDeclarations.h"
#include "nsIFrame.h"
#include "nsStyleStruct.h"
@@ -10,7 +10,7 @@ index bbee32af30f35525730a10d0b242c0e8a8fe4695..a590fff105b30bc96fa7a0d8a8d3b1d5
namespace mozilla {
@@ -96,23 +97,24 @@ StyleAbsoluteColor StyleColor::ResolveColor(
@@ -34,23 +35,24 @@ StyleAbsoluteColor StyleColor::ResolveColor(
template <>
nscolor StyleColor::CalcColor(nscolor aColor) const {
@@ -40,31 +40,27 @@ index bbee32af30f35525730a10d0b242c0e8a8fe4695..a590fff105b30bc96fa7a0d8a8d3b1d5
}
StyleAbsoluteColor StyleAbsoluteColor::ToColorSpace(
@@ -120,7 +122,7 @@ StyleAbsoluteColor StyleAbsoluteColor::ToColorSpace(
@@ -58,7 +60,7 @@ StyleAbsoluteColor StyleAbsoluteColor::ToColorSpace(
return Servo_ConvertColorSpace(this, aColorSpace);
}
-nscolor StyleAbsoluteColor::ToColor() const {
+nscolor StyleAbsoluteColor::ToColor(const nsIFrame* aFrame) const {
constexpr StyleColorSpace DEST_COLOR_SPACE = StyleColorSpace::Srgb;
auto srgb = ToColorSpace(StyleColorSpace::Srgb);
constexpr float MIN = 0.0f;
@@ -162,11 +164,13 @@ nscolor StyleAbsoluteColor::ToColor() const {
}
}
// TODO(tlouw): Needs gamut mapping here. Right now we just hard clip the
@@ -68,10 +70,12 @@ nscolor StyleAbsoluteColor::ToColor() const {
auto green = std::clamp(srgb.components._1, 0.0f, 1.0f);
auto blue = std::clamp(srgb.components._2, 0.0f, 1.0f);
- return NS_RGBA(
- nsStyleUtil::FloatToColorComponent(translatedColor.components._0),
- nsStyleUtil::FloatToColorComponent(translatedColor.components._1),
- nsStyleUtil::FloatToColorComponent(translatedColor.components._2),
- nsStyleUtil::FloatToColorComponent(translatedColor.alpha));
- return NS_RGBA(nsStyleUtil::FloatToColorComponent(red),
+ return zen::nsZenBoostsBackend::ResolveStyleColor(
+ NS_RGBA(
+ nsStyleUtil::FloatToColorComponent(translatedColor.components._0),
+ nsStyleUtil::FloatToColorComponent(translatedColor.components._1),
+ nsStyleUtil::FloatToColorComponent(translatedColor.components._2),
+ nsStyleUtil::FloatToColorComponent(translatedColor.alpha)),
+ aFrame);
+ NS_RGBA(nsStyleUtil::FloatToColorComponent(red),
nsStyleUtil::FloatToColorComponent(green),
nsStyleUtil::FloatToColorComponent(blue),
- nsStyleUtil::FloatToColorComponent(srgb.alpha));
+ nsStyleUtil::FloatToColorComponent(srgb.alpha)),
+ aFrame);
}
} // namespace mozilla

View File

@@ -1,5 +1,5 @@
diff --git a/layout/svg/SVGImageContext.cpp b/layout/svg/SVGImageContext.cpp
index 384401ae2cb80a1bf438b1fb3d849254de100210..e5ef332bc529e6588c33b507993880ca9def51d1 100644
index ecbda963b75fb70b62885a0c8f7a517011a8d5dc..5f55f0a4174db830656d434b5295835ab18e6619 100644
--- a/layout/svg/SVGImageContext.cpp
+++ b/layout/svg/SVGImageContext.cpp
@@ -10,6 +10,7 @@
@@ -30,8 +30,8 @@ index 384401ae2cb80a1bf438b1fb3d849254de100210..e5ef332bc529e6588c33b507993880ca
/* static */
void SVGImageContext::MaybeStoreContextPaint(SVGImageContext& aContext,
nsIFrame* aFromFrame,
@@ -50,6 +64,8 @@ void SVGImageContext::MaybeStoreContextPaint(SVGImageContext& aContext,
}
@@ -43,6 +57,8 @@ void SVGImageContext::MaybeStoreContextPaint(SVGImageContext& aContext,
aContext.SetColorScheme(Some(scheme));
}
+ MaybeStoreZenBoosts(aContext, aPresContext);
@@ -39,7 +39,7 @@ index 384401ae2cb80a1bf438b1fb3d849254de100210..e5ef332bc529e6588c33b507993880ca
const nsStyleSVG* style = aStyle.StyleSVG();
if (!style->ExposesContextProperties()) {
// Content must have '-moz-context-properties' set to the names of the
@@ -64,12 +80,14 @@ void SVGImageContext::MaybeStoreContextPaint(SVGImageContext& aContext,
@@ -57,12 +73,14 @@ void SVGImageContext::MaybeStoreContextPaint(SVGImageContext& aContext,
if ((style->mMozContextProperties.bits & StyleContextPropertyBits::FILL) &&
style->mFill.kind.IsColor()) {
haveContextPaint = true;

View File

@@ -1,5 +1,5 @@
diff --git a/layout/svg/SVGImageContext.h b/layout/svg/SVGImageContext.h
index b1f811989697966e30859610f4fc07579d0385ab..f6f4cd5a45fc49b416111d980fab4e612788903e 100644
index 159d9cbbd0711076ee6c2a71a3da04bd92a0102c..daefc40590c4d7d7fac9db25c6ec4ba2424dded5 100644
--- a/layout/svg/SVGImageContext.h
+++ b/layout/svg/SVGImageContext.h
@@ -6,6 +6,7 @@
@@ -44,12 +44,12 @@ index b1f811989697966e30859610f4fc07579d0385ab..f6f4cd5a45fc49b416111d980fab4e61
const Maybe<SVGPreserveAspectRatio>& GetPreserveAspectRatio() const {
return mPreserveAspectRatio;
}
@@ -116,7 +137,11 @@ class SVGImageContext {
@@ -107,7 +128,11 @@ class SVGImageContext {
return contextPaintIsEqual && mViewportSize == aOther.mViewportSize &&
mPreserveAspectRatio == aOther.mPreserveAspectRatio &&
mColorScheme == aOther.mColorScheme &&
- mLinkParameters == aOther.mLinkParameters;
+ mLinkParameters == aOther.mLinkParameters &&
- mColorScheme == aOther.mColorScheme;
+ mColorScheme == aOther.mColorScheme &&
+ mZenBoostsAccent == aOther.mZenBoostsAccent &&
+ mZenBoostsComplementaryRotation ==
+ aOther.mZenBoostsComplementaryRotation &&
@@ -57,20 +57,21 @@ index b1f811989697966e30859610f4fc07579d0385ab..f6f4cd5a45fc49b416111d980fab4e61
}
bool operator!=(const SVGImageContext&) const = default;
@@ -129,7 +154,8 @@ class SVGImageContext {
@@ -119,7 +144,9 @@ class SVGImageContext {
}
return HashGeneric(hash, mViewportSize.map(HashSize).valueOr(0),
mPreserveAspectRatio.map(HashPAR).valueOr(0),
mColorScheme.map(HashColorScheme).valueOr(0),
- HashLinkParameters(mLinkParameters));
+ HashLinkParameters(mLinkParameters), mZenBoostsAccent,
+ mZenBoostsComplementaryRotation, mZenBoostsInverted);
- mColorScheme.map(HashColorScheme).valueOr(0));
+ mColorScheme.map(HashColorScheme).valueOr(0),
+ mZenBoostsAccent, mZenBoostsComplementaryRotation,
+ mZenBoostsInverted);
}
private:
@@ -167,6 +193,9 @@ class SVGImageContext {
@@ -138,6 +165,9 @@ class SVGImageContext {
Maybe<CSSIntSize> mViewportSize;
Maybe<SVGPreserveAspectRatio> mPreserveAspectRatio;
Maybe<ColorScheme> mColorScheme;
StyleLinkParameters mLinkParameters;
+ nscolor mZenBoostsAccent = 0;
+ float mZenBoostsComplementaryRotation = 0.0f;
+ bool mZenBoostsInverted = false;

View File

@@ -1,15 +0,0 @@
diff --git a/services/sync/modules/service.sys.mjs b/services/sync/modules/service.sys.mjs
index 4f4efe572909441abdd81909282936702c225621..81ab06a9414ed656b644a21b40b683f06a4f8dbf 100644
--- a/services/sync/modules/service.sys.mjs
+++ b/services/sync/modules/service.sys.mjs
@@ -99,6 +99,10 @@ function getEngineModules() {
whenTrue: "ExtensionStorageEngineKinto",
whenFalse: "ExtensionStorageEngineBridge",
};
+ result.Spaces = {
+ module: "resource:///modules/zen/ZenWorkspacesSync.sys.mjs",
+ symbol: "ZenWorkspacesEngine",
+ };
return result;
}

View File

@@ -1,8 +1,8 @@
diff --git a/servo/ports/geckolib/cbindgen.toml b/servo/ports/geckolib/cbindgen.toml
index 10c0c702dbad97d5e73d84e2c913a3541380c4dd..2291871e58ae259f3bc3d573eb32e7cb47cc8953 100644
index 17937bd70ead3b86e59b3da8c8d90591ee48e0a2..2bddfd549243ddc387107df00625ea5f38e5c655 100644
--- a/servo/ports/geckolib/cbindgen.toml
+++ b/servo/ports/geckolib/cbindgen.toml
@@ -673,9 +673,9 @@ renaming_overrides_prefixing = true
@@ -666,9 +666,9 @@ renaming_overrides_prefixing = true
nscolor CalcColor(const nsIFrame*) const;
/**
* Compute the final color, taking into account the foreground color from the
@@ -14,7 +14,7 @@ index 10c0c702dbad97d5e73d84e2c913a3541380c4dd..2291871e58ae259f3bc3d573eb32e7cb
/**
* Compute the final color, making the argument the foreground color.
*/
@@ -698,9 +698,11 @@ renaming_overrides_prefixing = true
@@ -691,9 +691,11 @@ renaming_overrides_prefixing = true
/**
* Convert this color to an nscolor. The color will be converted to sRGB first
@@ -27,4 +27,4 @@ index 10c0c702dbad97d5e73d84e2c913a3541380c4dd..2291871e58ae259f3bc3d573eb32e7cb
+ nscolor ToColor(const nsIFrame*) const;
"""
"ColorFunction" = """
"OwnedSlice" = """

View File

@@ -1,37 +0,0 @@
diff --git a/toolkit/components/contextualidentity/ContextualIdentityService.sys.mjs b/toolkit/components/contextualidentity/ContextualIdentityService.sys.mjs
index 5702ff28cc22206f5ce16584dac8a78d816562ce..3d08ecc97ce5995b30d8a4af0c33df329b428008 100644
--- a/toolkit/components/contextualidentity/ContextualIdentityService.sys.mjs
+++ b/toolkit/components/contextualidentity/ContextualIdentityService.sys.mjs
@@ -270,11 +270,29 @@ _ContextualIdentityService.prototype = {
});
},
- create(name, icon, color) {
+ create(name, icon, color, id = null) {
this.ensureDataReady();
- // Retrieve the next userContextId available.
- let userContextId = ++this._lastUserContextId;
+ if (id !== null) {
+ id = typeof id == "string" ? Number(id) : id;
+ if (!Number.isSafeInteger(id) || id <= 0) {
+ throw new Error(`Invalid userContextId '${id}'`);
+ }
+ }
+
+ let userContextId;
+ if (
+ id !== null &&
+ !this._identities.some(identity => identity.userContextId === id)
+ ) {
+ userContextId = id;
+ this._lastUserContextId = Math.max(
+ this._lastUserContextId,
+ userContextId
+ );
+ } else {
+ userContextId = ++this._lastUserContextId;
+ }
// Throw an error if the next userContextId available is invalid (the one associated to
// MAX_USER_CONTEXT_ID is already reserved to "userContextIdInternal.webextStorageLocal", which

View File

@@ -1,22 +0,0 @@
diff --git a/toolkit/mozapps/extensions/Blocklist.sys.mjs b/toolkit/mozapps/extensions/Blocklist.sys.mjs
index 4e1e0aac91612c846bb664efe3dbb50ecf63597d..93eb9a05520198eb3f9af35aa58d789719169434 100644
--- a/toolkit/mozapps/extensions/Blocklist.sys.mjs
+++ b/toolkit/mozapps/extensions/Blocklist.sys.mjs
@@ -411,7 +411,7 @@ class TargetAppFilter {
if (!Array.isArray(versionRange)) {
const { maxVersion = "*" } = versionRange;
const matchesRange =
- Services.vc.compare(lazy.gApp.version, maxVersion) <= 0;
+ Services.vc.compare(AppConstants.ZEN_FIREFOX_VERSION, maxVersion) <= 0;
return matchesRange ? entry : null;
}
@@ -433,7 +433,7 @@ class TargetAppFilter {
const { maxVersion = "*" } = ta;
if (
guid == lazy.gAppID &&
- Services.vc.compare(lazy.gApp.version, maxVersion) <= 0
+ Services.vc.compare(AppConstants.ZEN_FIREFOX_VERSION, maxVersion) <= 0
) {
return entry;
}

View File

@@ -1,17 +1,18 @@
diff --git a/toolkit/mozapps/extensions/content/aboutaddons.css b/toolkit/mozapps/extensions/content/aboutaddons.css
index d0af33257f01df0deb5469d964a53be687a15f2f..2ef7fc1f0d8b0b67743b7d67df3719be0b46a4b0 100644
index 619ae975710359fe879f197c689969ed726de7c0..542adaf0aa4f9d7336d969754228c1a93640b6af 100644
--- a/toolkit/mozapps/extensions/content/aboutaddons.css
+++ b/toolkit/mozapps/extensions/content/aboutaddons.css
@@ -713,6 +713,12 @@ section:not(:empty) ~ #empty-addons-message {
font-weight: var(--font-weight-bold);
@@ -105,6 +105,13 @@ h2 {
.category[name="theme"] {
background-image: url("chrome://mozapps/skin/extensions/category-themes.svg");
}
+
+@media -moz-pref('zen.theme.disable-lightweight') {
+ #category-theme {
+ .category[name="theme"] {
+ display: none;
+ }
+}
+
/* Position the badged dot in the top-end (right in ltr, left in rtl)
* corner of the badged category icon. */
@media (max-width: 950px) {
.category[name="plugin"] {
background-image: url("chrome://mozapps/skin/extensions/category-plugins.svg");
}

View File

@@ -1,19 +1,19 @@
diff --git a/toolkit/themes/shared/design-system/dist/tokens-shared.css b/toolkit/themes/shared/design-system/dist/tokens-shared.css
index 15c0d98a18b4f19e7f2e03d2b78066b0353f416a..b32f6244c7a07e93894bab422691a605456034a1 100644
index 94afbe630914eef375967f2eff310d69c61fa1aa..04b42529d43c5100a76c883220875c0b70ad0616 100644
--- a/toolkit/themes/shared/design-system/dist/tokens-shared.css
+++ b/toolkit/themes/shared/design-system/dist/tokens-shared.css
@@ -7,6 +7,8 @@
@layer tokens-foundation, tokens-browser-theme, tokens-foundation-brand, tokens-foundation-nova, tokens-browser-theme-nova, tokens-foundation-brand-nova, tokens-prefers-contrast, tokens-prefers-contrast-nova, tokens-forced-colors, tokens-forced-colors-nova;
@layer tokens-foundation, tokens-foundation-nova, tokens-prefers-contrast, tokens-prefers-contrast-nova, tokens-forced-colors, tokens-forced-colors-nova, tokens-browser-theme, tokens-browser-theme-nova;
+@import url("chrome://browser/content/zen-styles/zen-theme.css");
+
@layer tokens-foundation {
:root,
:host(.anonymous-content-host) {
@@ -424,8 +426,8 @@
--panel-background-color-dimmed-further: var(--background-color-dimmed-further);
--panel-border-color: light-dark(rgb(240, 240, 244), rgb(82, 82, 94));
@@ -368,8 +370,8 @@
--panel-background-color-dimmed-further: color-mix(in srgb, currentColor 30%, transparent);
--panel-border-color: ThreeDShadow;
--panel-border-radius: var(--border-radius-medium);
- --panel-box-shadow: 0 0 var(--panel-box-shadow-margin) hsla(0, 0%, 0%, 0.2);
- --panel-box-shadow-margin: 4px;
@@ -21,4 +21,4 @@ index 15c0d98a18b4f19e7f2e03d2b78066b0353f416a..b32f6244c7a07e93894bab422691a605
+ --panel-box-shadow-margin: 8px;
--panel-menuitem-border-radius: var(--border-radius-small);
--panel-menuitem-margin: var(--panel-menuitem-margin-block) var(--panel-menuitem-margin-inline);
--panel-menuitem-margin-block: 0;
--panel-menuitem-margin-block: 0px;

View File

@@ -1,17 +1,17 @@
diff --git a/toolkit/themes/shared/in-content/common-shared.css b/toolkit/themes/shared/in-content/common-shared.css
index 087d356b80886b22692f948a97f229ccf75737fd..9c2d370e94d1f901ded4a7a786a475fdf867de07 100644
index 8cbeb5d266b19c2c5b3d605b23c8c421a03c2a0e..7db0baeee11b99a5da1c143c682e38751a9ac03c 100644
--- a/toolkit/themes/shared/in-content/common-shared.css
+++ b/toolkit/themes/shared/in-content/common-shared.css
@@ -40,7 +40,7 @@
@@ -57,7 +57,7 @@
* this in forced colors mode, as we should be using system colours then.
*/
:root[dialogroot] {
- --background-color-canvas: var(--color-gray-80);
- --background-color-canvas: #42414d;
+ --background-color-canvas: var(--zen-dialog-background);
}
}
@@ -141,7 +141,7 @@ xul|menulist {
@@ -158,7 +158,7 @@ xul|menulist {
border-radius: var(--button-border-radius);
background-color: var(--button-background-color);
font-weight: normal;

View File

@@ -1,3 +1,6 @@
// 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/.
/**
* NOTE: Do not modify this file by hand.
* Content was generated from source XPCOM .idl files.
@@ -5,7 +8,7 @@
*/
declare global {
// https://searchfox.org/firefox-main/source/accessible/interfaces/nsIAccessibleMacInterface.idl
// https://searchfox.org/mozilla-central/source/accessible/interfaces/nsIAccessibleMacInterface.idl
interface nsIAccessibleMacNSObjectWrapper extends nsISupports {}
@@ -26,13 +29,13 @@ declare global {
readonly data: any;
}
// https://searchfox.org/firefox-main/source/browser/components/migration/nsIKeychainMigrationUtils.idl
// https://searchfox.org/mozilla-central/source/browser/components/migration/nsIKeychainMigrationUtils.idl
interface nsIKeychainMigrationUtils extends nsISupports {
getGenericPassword(aServiceName: string, aAccountName: string): string;
}
// https://searchfox.org/firefox-main/source/browser/components/shell/nsIMacShellService.idl
// https://searchfox.org/mozilla-central/source/browser/components/shell/nsIMacShellService.idl
interface nsIMacShellService extends nsIShellService {
showDesktopPreferences(): void;
@@ -40,7 +43,7 @@ declare global {
getAvailableApplicationsForProtocol(protocol: string): string[][];
}
// https://searchfox.org/firefox-main/source/widget/nsIMacDockSupport.idl
// https://searchfox.org/mozilla-central/source/widget/nsIMacDockSupport.idl
interface nsIAppBundleLaunchOptions extends nsISupports {
readonly addsToRecentItems: boolean;
@@ -66,7 +69,7 @@ declare global {
): void;
}
// https://searchfox.org/firefox-main/source/widget/nsIMacFinderProgress.idl
// https://searchfox.org/mozilla-central/source/widget/nsIMacFinderProgress.idl
type nsIMacFinderProgressCanceledCallback = Callable<{
canceled(): void;
@@ -81,7 +84,7 @@ declare global {
end(): void;
}
// https://searchfox.org/firefox-main/source/widget/nsIMacSharingService.idl
// https://searchfox.org/mozilla-central/source/widget/nsIMacSharingService.idl
interface nsIMacSharingService extends nsISupports {
getSharingProviders(pageUrl: string): any;
@@ -89,7 +92,7 @@ declare global {
openSharingPreferences(): void;
}
// https://searchfox.org/firefox-main/source/widget/nsIMacUserActivityUpdater.idl
// https://searchfox.org/mozilla-central/source/widget/nsIMacUserActivityUpdater.idl
interface nsIMacUserActivityUpdater extends nsISupports {
updateLocation(
@@ -99,7 +102,7 @@ declare global {
): void;
}
// https://searchfox.org/firefox-main/source/widget/nsIMacWebAppUtils.idl
// https://searchfox.org/mozilla-central/source/widget/nsIMacWebAppUtils.idl
type nsITrashAppCallback = Callable<{
trashAppFinished(rv: nsresult): void;
@@ -111,7 +114,7 @@ declare global {
trashApp(path: string, callback: nsITrashAppCallback): void;
}
// https://searchfox.org/firefox-main/source/widget/nsIStandaloneNativeMenu.idl
// https://searchfox.org/mozilla-central/source/widget/nsIStandaloneNativeMenu.idl
interface nsIStandaloneNativeMenu extends nsISupports {
init(aElement: Element): void;
@@ -121,7 +124,7 @@ declare global {
dump(): void;
}
// https://searchfox.org/firefox-main/source/widget/nsITaskbarProgress.idl
// https://searchfox.org/mozilla-central/source/widget/nsITaskbarProgress.idl
interface nsITaskbarProgress extends nsISupports {
readonly STATE_NO_PROGRESS?: 0;
@@ -137,7 +140,7 @@ declare global {
): void;
}
// https://searchfox.org/firefox-main/source/widget/nsITouchBarHelper.idl
// https://searchfox.org/mozilla-central/source/widget/nsITouchBarHelper.idl
interface nsITouchBarHelper extends nsISupports {
readonly activeUrl: string;
@@ -151,7 +154,7 @@ declare global {
insertRestrictionInUrlbar(aToken: string): void;
}
// https://searchfox.org/firefox-main/source/widget/nsITouchBarInput.idl
// https://searchfox.org/mozilla-central/source/widget/nsITouchBarInput.idl
type nsITouchBarInputCallback = Callable<{
onCommand(): void;
@@ -168,7 +171,7 @@ declare global {
children: nsIArray;
}
// https://searchfox.org/firefox-main/source/widget/nsITouchBarUpdater.idl
// https://searchfox.org/mozilla-central/source/widget/nsITouchBarUpdater.idl
interface nsITouchBarUpdater extends nsISupports {
updateTouchBarInputs(
@@ -185,14 +188,14 @@ declare global {
): void;
}
// https://searchfox.org/firefox-main/source/xpcom/base/nsIMacPreferencesReader.idl
// https://searchfox.org/mozilla-central/source/xpcom/base/nsIMacPreferencesReader.idl
interface nsIMacPreferencesReader extends nsISupports {
policiesEnabled(): boolean;
readPreferences(): any;
}
// https://searchfox.org/firefox-main/source/xpcom/io/nsILocalFileMac.idl
// https://searchfox.org/mozilla-central/source/xpcom/io/nsILocalFileMac.idl
interface nsILocalFileMac extends nsIFile {
launchWithDoc(aDocToLoad: nsIFile, aLaunchInBackground: boolean): void;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,3 +1,6 @@
// 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/.
/**
* NOTE: Do not modify this file by hand.
* Content was generated from source XPCOM .idl files.
@@ -5,7 +8,7 @@
*/
declare global {
// https://searchfox.org/firefox-main/source/browser/components/shell/nsIGNOMEShellService.idl
// https://searchfox.org/mozilla-central/source/browser/components/shell/nsIGNOMEShellService.idl
interface nsIGNOMEShellService extends nsIShellService {
readonly canSetDesktopBackground: boolean;
@@ -14,14 +17,14 @@ declare global {
setGSettingsString(aScheme: string, aKey: string, aValue: string): void;
}
// https://searchfox.org/firefox-main/source/browser/components/shell/nsIOpenTabsProvider.idl
// https://searchfox.org/mozilla-central/source/browser/components/shell/nsIOpenTabsProvider.idl
interface nsIOpenTabsProvider extends nsISupports {
getOpenTabs(): string[];
switchToOpenTab(url: string): void;
}
// https://searchfox.org/firefox-main/source/widget/nsIApplicationChooser.idl
// https://searchfox.org/mozilla-central/source/widget/nsIApplicationChooser.idl
type nsIApplicationChooserFinishedCallback = Callable<{
done(handlerApp: nsIHandlerApp): void;
@@ -35,13 +38,13 @@ declare global {
): void;
}
// https://searchfox.org/firefox-main/source/widget/nsIGtkTaskbarProgress.idl
// https://searchfox.org/mozilla-central/source/widget/nsIGtkTaskbarProgress.idl
interface nsIGtkTaskbarProgress extends nsITaskbarProgress {
setPrimaryWindow(aWindow: mozIDOMWindowProxy): void;
}
// https://searchfox.org/firefox-main/source/widget/nsITaskbarProgress.idl
// https://searchfox.org/mozilla-central/source/widget/nsITaskbarProgress.idl
interface nsITaskbarProgress extends nsISupports {
readonly STATE_NO_PROGRESS?: 0;

View File

@@ -1,3 +1,6 @@
// 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/.
/**
* NOTE: Do not modify this file by hand.
* Content was generated by running "mach ts paths".
@@ -5,7 +8,6 @@
export interface Modules {
"chrome://browser/content/aboutlogins/aboutLoginsUtils.mjs": typeof import("chrome://browser/content/aboutlogins/aboutLoginsUtils.mjs");
"chrome://browser/content/aiwindow/modules/ChatMarkdownParser.mjs": typeof import("chrome://browser/content/aiwindow/modules/ChatMarkdownParser.mjs");
"chrome://browser/content/aiwindow/modules/TokenStreamParser.mjs": typeof import("chrome://browser/content/aiwindow/modules/TokenStreamParser.mjs");
"chrome://browser/content/asrouter/components/menu-message.mjs": typeof import("chrome://browser/content/asrouter/components/menu-message.mjs");
"chrome://browser/content/backup/backup-constants.mjs": typeof import("chrome://browser/content/backup/backup-constants.mjs");
@@ -13,48 +15,28 @@ export interface Modules {
"chrome://browser/content/genai/content/link-preview-card.mjs": typeof import("chrome://browser/content/genai/content/link-preview-card.mjs");
"chrome://browser/content/genai/content/model-optin.mjs": typeof import("chrome://browser/content/genai/content/model-optin.mjs");
"chrome://browser/content/ipprotection/ipprotection-constants.mjs": typeof import("chrome://browser/content/ipprotection/ipprotection-constants.mjs");
"chrome://browser/content/ipprotection/ipprotection-utils.mjs": typeof import("chrome://browser/content/ipprotection/ipprotection-utils.mjs");
"chrome://browser/content/migration/migration-wizard-constants.mjs": typeof import("chrome://browser/content/migration/migration-wizard-constants.mjs");
"chrome://browser/content/multilineeditor/prosemirror.bundle.mjs": typeof import("chrome://browser/content/multilineeditor/prosemirror.bundle.mjs");
"chrome://browser/content/nsContextMenu.sys.mjs": typeof import("chrome://browser/content/nsContextMenu.sys.mjs");
"chrome://browser/content/preferences/config/LegacyPaneMappings.mjs": typeof import("chrome://browser/content/preferences/config/LegacyPaneMappings.mjs");
"chrome://browser/content/preferences/config/SettingGroupManager.mjs": typeof import("chrome://browser/content/preferences/config/SettingGroupManager.mjs");
"chrome://browser/content/preferences/config/SettingPaneManager.mjs": typeof import("chrome://browser/content/preferences/config/SettingPaneManager.mjs");
"chrome://browser/content/preferences/config/about-firefox.mjs": typeof import("chrome://browser/content/preferences/config/about-firefox.mjs");
"chrome://browser/content/preferences/config/accessibility.mjs": typeof import("chrome://browser/content/preferences/config/accessibility.mjs");
"chrome://browser/content/preferences/config/account-sync.mjs": typeof import("chrome://browser/content/preferences/config/account-sync.mjs");
"chrome://browser/content/preferences/config/appearance.mjs": typeof import("chrome://browser/content/preferences/config/appearance.mjs");
"chrome://browser/content/preferences/config/downloads.mjs": typeof import("chrome://browser/content/preferences/config/downloads.mjs");
"chrome://browser/content/preferences/config/home-startup.mjs": typeof import("chrome://browser/content/preferences/config/home-startup.mjs");
"chrome://browser/content/preferences/config/languages.mjs": typeof import("chrome://browser/content/preferences/config/languages.mjs");
"chrome://browser/content/preferences/config/passwords-autofill.mjs": typeof import("chrome://browser/content/preferences/config/passwords-autofill.mjs");
"chrome://browser/content/preferences/config/privacy.mjs": typeof import("chrome://browser/content/preferences/config/privacy.mjs");
"chrome://browser/content/preferences/config/search.mjs": typeof import("chrome://browser/content/preferences/config/search.mjs");
"chrome://browser/content/preferences/config/tabs-browsing.mjs": typeof import("chrome://browser/content/preferences/config/tabs-browsing.mjs");
"chrome://browser/content/screenshots/fileHelpers.mjs": typeof import("chrome://browser/content/screenshots/fileHelpers.mjs");
"chrome://browser/content/sidebar/sidebar-main.mjs": typeof import("chrome://browser/content/sidebar/sidebar-main.mjs");
"chrome://browser/content/sidebar/sidebar-panel-header.mjs": typeof import("chrome://browser/content/sidebar/sidebar-panel-header.mjs");
"chrome://browser/content/sidebar/sidebar-permissions-ui.mjs": typeof import("chrome://browser/content/sidebar/sidebar-permissions-ui.mjs");
"chrome://browser/content/sidebar/sidebar-permissions.mjs": typeof import("chrome://browser/content/sidebar/sidebar-permissions.mjs");
"chrome://browser/content/tabbrowser/tab-groups-list.mjs": typeof import("chrome://browser/content/tabbrowser/tab-groups-list.mjs");
"chrome://browser/content/tabbrowser/tab-hover-preview.mjs": typeof import("chrome://browser/content/tabbrowser/tab-hover-preview.mjs");
"chrome://browser/content/translations/TranslationsPanelShared.sys.mjs": typeof import("chrome://browser/content/translations/TranslationsPanelShared.sys.mjs");
"chrome://browser/content/urlbar/SmartbarInput.mjs": typeof import("chrome://browser/content/urlbar/SmartbarInput.mjs");
"chrome://browser/content/urlbar/SmartbarInputController.mjs": typeof import("chrome://browser/content/urlbar/SmartbarInputController.mjs");
"chrome://browser/content/urlbar/UrlbarEventBufferer.mjs": typeof import("chrome://browser/content/urlbar/UrlbarEventBufferer.mjs");
"chrome://browser/content/urlbar/UrlbarInput.mjs": typeof import("chrome://browser/content/urlbar/UrlbarInput.mjs");
"chrome://browser/content/urlbar/UrlbarResult.mjs": typeof import("chrome://browser/content/urlbar/UrlbarResult.mjs");
"chrome://browser/content/urlbar/UrlbarShared.mjs": typeof import("chrome://browser/content/urlbar/UrlbarShared.mjs");
"chrome://browser/content/webrtc/webrtc-preview.mjs": typeof import("chrome://browser/content/webrtc/webrtc-preview.mjs");
"chrome://devtools-startup/content/DevToolsShim.sys.mjs": typeof import("chrome://devtools-startup/content/DevToolsShim.sys.mjs");
"chrome://formautofill/content/manageDialog.mjs": typeof import("chrome://formautofill/content/manageDialog.mjs");
"chrome://global/content/ScrollOffsets.mjs": typeof import("chrome://global/content/ScrollOffsets.mjs");
"chrome://global/content/aboutLogging/profileStorage.mjs": typeof import("chrome://global/content/aboutLogging/profileStorage.mjs");
"chrome://global/content/bindings/colorpicker-common.mjs": typeof import("chrome://global/content/bindings/colorpicker-common.mjs");
"chrome://global/content/certviewer/certDecoder.mjs": typeof import("chrome://global/content/certviewer/certDecoder.mjs");
"chrome://global/content/elements/browser-custom-element.mjs": typeof import("chrome://global/content/elements/browser-custom-element.mjs");
"chrome://global/content/errors/error-lookup.mjs": typeof import("chrome://global/content/errors/error-lookup.mjs");
"chrome://global/content/errors/error-registry.mjs": typeof import("chrome://global/content/errors/error-registry.mjs");
"chrome://global/content/ml/BlockWords.sys.mjs": typeof import("chrome://global/content/ml/BlockWords.sys.mjs");
"chrome://global/content/ml/ClusterAlgos.sys.mjs": typeof import("chrome://global/content/ml/ClusterAlgos.sys.mjs");
"chrome://global/content/ml/EmbeddingsGenerator.sys.mjs": typeof import("chrome://global/content/ml/EmbeddingsGenerator.sys.mjs");
@@ -91,7 +73,6 @@ export interface Modules {
"chrome://mochikit/content/tests/SimpleTest/DragTargetParentContext.sys.mjs": typeof import("chrome://mochikit/content/tests/SimpleTest/DragTargetParentContext.sys.mjs");
"chrome://mochitests/content/browser/accessible/tests/browser/Common.sys.mjs": typeof import("chrome://mochitests/content/browser/accessible/tests/browser/Common.sys.mjs");
"chrome://mochitests/content/browser/accessible/tests/browser/Layout.sys.mjs": typeof import("chrome://mochitests/content/browser/accessible/tests/browser/Layout.sys.mjs");
"chrome://mochitests/content/browser/browser/components/aiwindow/models/tests/browser_eval/tests/basic_quality.sys.mjs": typeof import("chrome://mochitests/content/browser/browser/components/aiwindow/models/tests/browser_eval/tests/basic_quality.sys.mjs");
"chrome://mochitests/content/browser/devtools/client/debugger/test/mochitest/examples/worker-esm-dep.mjs": typeof import("chrome://mochitests/content/browser/devtools/client/debugger/test/mochitest/examples/worker-esm-dep.mjs");
"chrome://mochitests/content/browser/devtools/shared/test-helpers/trace-objects.sys.mjs": typeof import("chrome://mochitests/content/browser/devtools/shared/test-helpers/trace-objects.sys.mjs");
"chrome://mochitests/content/browser/js/xpconnect/tests/browser/worker_source.mjs": typeof import("chrome://mochitests/content/browser/js/xpconnect/tests/browser/worker_source.mjs");
@@ -132,7 +113,6 @@ export interface Modules {
"chrome://remote/content/shared/AsyncQueue.sys.mjs": typeof import("chrome://remote/content/shared/AsyncQueue.sys.mjs");
"chrome://remote/content/shared/BiMap.sys.mjs": typeof import("chrome://remote/content/shared/BiMap.sys.mjs");
"chrome://remote/content/shared/Browser.sys.mjs": typeof import("chrome://remote/content/shared/Browser.sys.mjs");
"chrome://remote/content/shared/BrowsingContextUtils.sys.mjs": typeof import("chrome://remote/content/shared/BrowsingContextUtils.sys.mjs");
"chrome://remote/content/shared/Capture.sys.mjs": typeof import("chrome://remote/content/shared/Capture.sys.mjs");
"chrome://remote/content/shared/ChallengeHeaderParser.sys.mjs": typeof import("chrome://remote/content/shared/ChallengeHeaderParser.sys.mjs");
"chrome://remote/content/shared/DOM.sys.mjs": typeof import("chrome://remote/content/shared/DOM.sys.mjs");
@@ -187,6 +167,7 @@ export interface Modules {
"chrome://remote/content/shared/messagehandler/WindowGlobalMessageHandler.sys.mjs": typeof import("chrome://remote/content/shared/messagehandler/WindowGlobalMessageHandler.sys.mjs");
"chrome://remote/content/shared/messagehandler/sessiondata/SessionData.sys.mjs": typeof import("chrome://remote/content/shared/messagehandler/sessiondata/SessionData.sys.mjs");
"chrome://remote/content/shared/messagehandler/sessiondata/SessionDataReader.sys.mjs": typeof import("chrome://remote/content/shared/messagehandler/sessiondata/SessionDataReader.sys.mjs");
"chrome://remote/content/shared/messagehandler/transports/BrowsingContextUtils.sys.mjs": typeof import("chrome://remote/content/shared/messagehandler/transports/BrowsingContextUtils.sys.mjs");
"chrome://remote/content/shared/messagehandler/transports/RootTransport.sys.mjs": typeof import("chrome://remote/content/shared/messagehandler/transports/RootTransport.sys.mjs");
"chrome://remote/content/shared/messagehandler/transports/js-window-actors/MessageHandlerFrameActor.sys.mjs": typeof import("chrome://remote/content/shared/messagehandler/transports/js-window-actors/MessageHandlerFrameActor.sys.mjs");
"chrome://remote/content/shared/messagehandler/transports/js-window-actors/MessageHandlerFrameChild.sys.mjs": typeof import("chrome://remote/content/shared/messagehandler/transports/js-window-actors/MessageHandlerFrameChild.sys.mjs");
@@ -204,9 +185,7 @@ export interface Modules {
"chrome://remote/content/shared/webdriver/URLPattern.sys.mjs": typeof import("chrome://remote/content/shared/webdriver/URLPattern.sys.mjs");
"chrome://remote/content/shared/webdriver/UserPromptHandler.sys.mjs": typeof import("chrome://remote/content/shared/webdriver/UserPromptHandler.sys.mjs");
"chrome://remote/content/shared/webdriver/process-actors/WebDriverProcessDataParent.sys.mjs": typeof import("chrome://remote/content/shared/webdriver/process-actors/WebDriverProcessDataParent.sys.mjs");
"chrome://remote/content/webdriver-bidi/ConsoleMessageFormatter.sys.mjs": typeof import("chrome://remote/content/webdriver-bidi/ConsoleMessageFormatter.sys.mjs");
"chrome://remote/content/webdriver-bidi/DownloadBehaviorManager.sys.mjs": typeof import("chrome://remote/content/webdriver-bidi/DownloadBehaviorManager.sys.mjs");
"chrome://remote/content/webdriver-bidi/HelperAppDialogHandler.sys.mjs": typeof import("chrome://remote/content/webdriver-bidi/HelperAppDialogHandler.sys.mjs");
"chrome://remote/content/webdriver-bidi/NewSessionHandler.sys.mjs": typeof import("chrome://remote/content/webdriver-bidi/NewSessionHandler.sys.mjs");
"chrome://remote/content/webdriver-bidi/ProxyPerUserContextManager.sys.mjs": typeof import("chrome://remote/content/webdriver-bidi/ProxyPerUserContextManager.sys.mjs");
"chrome://remote/content/webdriver-bidi/RemoteValue.sys.mjs": typeof import("chrome://remote/content/webdriver-bidi/RemoteValue.sys.mjs");
@@ -245,17 +224,11 @@ export interface Modules {
"moz-src:///browser/components/StartupTelemetry.sys.mjs": typeof import("moz-src:///browser/components/StartupTelemetry.sys.mjs");
"moz-src:///browser/components/aiwindow/models/Chat.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/models/Chat.sys.mjs");
"moz-src:///browser/components/aiwindow/models/ChatUtils.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/models/ChatUtils.sys.mjs");
"moz-src:///browser/components/aiwindow/models/CitationParser.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/models/CitationParser.sys.mjs");
"moz-src:///browser/components/aiwindow/models/ConversationSuggestions.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/models/ConversationSuggestions.sys.mjs");
"moz-src:///browser/components/aiwindow/models/IntentClassifier.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/models/IntentClassifier.sys.mjs");
"moz-src:///browser/components/aiwindow/models/PreferencesNavMap.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/models/PreferencesNavMap.sys.mjs");
"moz-src:///browser/components/aiwindow/models/PromptLoader.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/models/PromptLoader.sys.mjs");
"moz-src:///browser/components/aiwindow/models/PromptOptimizer.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/models/PromptOptimizer.sys.mjs");
"moz-src:///browser/components/aiwindow/models/SearchBrowsingHistory.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/models/SearchBrowsingHistory.sys.mjs");
"moz-src:///browser/components/aiwindow/models/SearchBrowsingHistoryDomainBoost.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/models/SearchBrowsingHistoryDomainBoost.sys.mjs");
"moz-src:///browser/components/aiwindow/models/SecurityProperties.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/models/SecurityProperties.sys.mjs");
"moz-src:///browser/components/aiwindow/models/SmartWindowNavigationInfo.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/models/SmartWindowNavigationInfo.sys.mjs");
"moz-src:///browser/components/aiwindow/models/TelemetryManager.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/models/TelemetryManager.sys.mjs");
"moz-src:///browser/components/aiwindow/models/TelemetryUtils.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/models/TelemetryUtils.sys.mjs");
"moz-src:///browser/components/aiwindow/models/TitleGeneration.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/models/TitleGeneration.sys.mjs");
"moz-src:///browser/components/aiwindow/models/Tools.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/models/Tools.sys.mjs");
"moz-src:///browser/components/aiwindow/models/Utils.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/models/Utils.sys.mjs");
@@ -268,27 +241,19 @@ export interface Modules {
"moz-src:///browser/components/aiwindow/models/memories/MemoriesHistorySource.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/models/memories/MemoriesHistorySource.sys.mjs");
"moz-src:///browser/components/aiwindow/models/memories/MemoriesManager.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/models/memories/MemoriesManager.sys.mjs");
"moz-src:///browser/components/aiwindow/models/memories/MemoriesSchedulers.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/models/memories/MemoriesSchedulers.sys.mjs");
"moz-src:///browser/components/aiwindow/models/memories/MemoriesSessions.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/models/memories/MemoriesSessions.sys.mjs");
"moz-src:///browser/components/aiwindow/models/memories/SensitiveInfoDetector.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/models/memories/SensitiveInfoDetector.sys.mjs");
"moz-src:///browser/components/aiwindow/services/MemoryStore.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/services/MemoryStore.sys.mjs");
"moz-src:///browser/components/aiwindow/ui/actors/AIChatContentChild.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/ui/actors/AIChatContentChild.sys.mjs");
"moz-src:///browser/components/aiwindow/ui/modules/AIWindow.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/ui/modules/AIWindow.sys.mjs");
"moz-src:///browser/components/aiwindow/ui/modules/AIWindowAccountAuth.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/ui/modules/AIWindowAccountAuth.sys.mjs");
"moz-src:///browser/components/aiwindow/ui/modules/AIWindowConstants.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/ui/modules/AIWindowConstants.sys.mjs");
"moz-src:///browser/components/aiwindow/ui/modules/AIWindowMenu.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/ui/modules/AIWindowMenu.sys.mjs");
"moz-src:///browser/components/aiwindow/ui/modules/AIWindowTabStatesManager.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/ui/modules/AIWindowTabStatesManager.sys.mjs");
"moz-src:///browser/components/aiwindow/ui/modules/AIWindowUI.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/ui/modules/AIWindowUI.sys.mjs");
"moz-src:///browser/components/aiwindow/ui/modules/ChatConstants.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/ui/modules/ChatConstants.sys.mjs");
"moz-src:///browser/components/aiwindow/ui/modules/ChatConversation.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/ui/modules/ChatConversation.sys.mjs");
"moz-src:///browser/components/aiwindow/ui/modules/ChatEnums.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/ui/modules/ChatEnums.sys.mjs");
"moz-src:///browser/components/aiwindow/ui/modules/ChatMessage.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/ui/modules/ChatMessage.sys.mjs");
"moz-src:///browser/components/aiwindow/ui/modules/ChatStore.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/ui/modules/ChatStore.sys.mjs");
"moz-src:///browser/components/aiwindow/ui/modules/ChatUtils.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/ui/modules/ChatUtils.sys.mjs");
"moz-src:///browser/components/aiwindow/ui/modules/FeedbackModal.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/ui/modules/FeedbackModal.sys.mjs");
"moz-src:///browser/components/aiwindow/ui/modules/SmartWindowTelemetry.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/ui/modules/SmartWindowTelemetry.sys.mjs");
"moz-src:///browser/components/aiwindow/ui/modules/TabManagementService.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/ui/modules/TabManagementService.sys.mjs");
"moz-src:///browser/components/aiwindow/ui/modules/ToolActionLog.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/ui/modules/ToolActionLog.sys.mjs");
"moz-src:///browser/components/aiwindow/ui/modules/ToolUI.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/ui/modules/ToolUI.sys.mjs");
"moz-src:///browser/components/aiwindow/ui/modules/ToolUITelemetry.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/ui/modules/ToolUITelemetry.sys.mjs");
"moz-src:///browser/components/attribution/AttributionCode.sys.mjs": typeof import("moz-src:///browser/components/attribution/AttributionCode.sys.mjs");
"moz-src:///browser/components/attribution/MacAttribution.sys.mjs": typeof import("moz-src:///browser/components/attribution/MacAttribution.sys.mjs");
"moz-src:///browser/components/contentanalysis/content/ContentAnalysis.sys.mjs": typeof import("moz-src:///browser/components/contentanalysis/content/ContentAnalysis.sys.mjs");
@@ -300,7 +265,6 @@ export interface Modules {
"moz-src:///browser/components/customizableui/SearchWidgetTracker.sys.mjs": typeof import("moz-src:///browser/components/customizableui/SearchWidgetTracker.sys.mjs");
"moz-src:///browser/components/customizableui/ToolbarContextMenu.sys.mjs": typeof import("moz-src:///browser/components/customizableui/ToolbarContextMenu.sys.mjs");
"moz-src:///browser/components/customizableui/ToolbarDropHandler.sys.mjs": typeof import("moz-src:///browser/components/customizableui/ToolbarDropHandler.sys.mjs");
"moz-src:///browser/components/customkeys/CustomKeys.sys.mjs": typeof import("moz-src:///browser/components/customkeys/CustomKeys.sys.mjs");
"moz-src:///browser/components/downloads/DownloadSpamProtection.sys.mjs": typeof import("moz-src:///browser/components/downloads/DownloadSpamProtection.sys.mjs");
"moz-src:///browser/components/downloads/DownloadsCommon.sys.mjs": typeof import("moz-src:///browser/components/downloads/DownloadsCommon.sys.mjs");
"moz-src:///browser/components/downloads/DownloadsMacFinderProgress.sys.mjs": typeof import("moz-src:///browser/components/downloads/DownloadsMacFinderProgress.sys.mjs");
@@ -310,12 +274,25 @@ export interface Modules {
"moz-src:///browser/components/genai/LinkPreview.sys.mjs": typeof import("moz-src:///browser/components/genai/LinkPreview.sys.mjs");
"moz-src:///browser/components/genai/LinkPreviewModel.sys.mjs": typeof import("moz-src:///browser/components/genai/LinkPreviewModel.sys.mjs");
"moz-src:///browser/components/genai/PageAssist.sys.mjs": typeof import("moz-src:///browser/components/genai/PageAssist.sys.mjs");
"moz-src:///browser/components/ipprotection/GuardianClient.sys.mjs": typeof import("moz-src:///browser/components/ipprotection/GuardianClient.sys.mjs");
"moz-src:///browser/components/ipprotection/IPPAutoRestore.sys.mjs": typeof import("moz-src:///browser/components/ipprotection/IPPAutoRestore.sys.mjs");
"moz-src:///browser/components/ipprotection/IPPChannelFilter.sys.mjs": typeof import("moz-src:///browser/components/ipprotection/IPPChannelFilter.sys.mjs");
"moz-src:///browser/components/ipprotection/IPPEnrollAndEntitleManager.sys.mjs": typeof import("moz-src:///browser/components/ipprotection/IPPEnrollAndEntitleManager.sys.mjs");
"moz-src:///browser/components/ipprotection/IPPExceptionsManager.sys.mjs": typeof import("moz-src:///browser/components/ipprotection/IPPExceptionsManager.sys.mjs");
"moz-src:///browser/components/ipprotection/IPPNetworkErrorObserver.sys.mjs": typeof import("moz-src:///browser/components/ipprotection/IPPNetworkErrorObserver.sys.mjs");
"moz-src:///browser/components/ipprotection/IPPNetworkUtils.sys.mjs": typeof import("moz-src:///browser/components/ipprotection/IPPNetworkUtils.sys.mjs");
"moz-src:///browser/components/ipprotection/IPPNimbusHelper.sys.mjs": typeof import("moz-src:///browser/components/ipprotection/IPPNimbusHelper.sys.mjs");
"moz-src:///browser/components/ipprotection/IPPOnboardingMessageHelper.sys.mjs": typeof import("moz-src:///browser/components/ipprotection/IPPOnboardingMessageHelper.sys.mjs");
"moz-src:///browser/components/ipprotection/IPPUsageHelper.sys.mjs": typeof import("moz-src:///browser/components/ipprotection/IPPUsageHelper.sys.mjs");
"moz-src:///browser/components/ipprotection/IPPProxyManager.sys.mjs": typeof import("moz-src:///browser/components/ipprotection/IPPProxyManager.sys.mjs");
"moz-src:///browser/components/ipprotection/IPPSignInWatcher.sys.mjs": typeof import("moz-src:///browser/components/ipprotection/IPPSignInWatcher.sys.mjs");
"moz-src:///browser/components/ipprotection/IPPStartupCache.sys.mjs": typeof import("moz-src:///browser/components/ipprotection/IPPStartupCache.sys.mjs");
"moz-src:///browser/components/ipprotection/IPProtection.sys.mjs": typeof import("moz-src:///browser/components/ipprotection/IPProtection.sys.mjs");
"moz-src:///browser/components/ipprotection/IPProtectionAlertManager.sys.mjs": typeof import("moz-src:///browser/components/ipprotection/IPProtectionAlertManager.sys.mjs");
"moz-src:///browser/components/ipprotection/IPProtectionHelpers.sys.mjs": typeof import("moz-src:///browser/components/ipprotection/IPProtectionHelpers.sys.mjs");
"moz-src:///browser/components/ipprotection/IPProtectionInfobarManager.sys.mjs": typeof import("moz-src:///browser/components/ipprotection/IPProtectionInfobarManager.sys.mjs");
"moz-src:///browser/components/ipprotection/IPProtectionPanel.sys.mjs": typeof import("moz-src:///browser/components/ipprotection/IPProtectionPanel.sys.mjs");
"moz-src:///browser/components/ipprotection/IPProtectionServerlist.sys.mjs": typeof import("moz-src:///browser/components/ipprotection/IPProtectionServerlist.sys.mjs");
"moz-src:///browser/components/ipprotection/IPProtectionService.sys.mjs": typeof import("moz-src:///browser/components/ipprotection/IPProtectionService.sys.mjs");
"moz-src:///browser/components/ipprotection/IPProtectionToolbarButton.sys.mjs": typeof import("moz-src:///browser/components/ipprotection/IPProtectionToolbarButton.sys.mjs");
"moz-src:///browser/components/mozcachedohttp/MozCachedOHTTPProtocolHandler.sys.mjs": typeof import("moz-src:///browser/components/mozcachedohttp/MozCachedOHTTPProtocolHandler.sys.mjs");
"moz-src:///browser/components/newtab/AboutNewTabComponents.sys.mjs": typeof import("moz-src:///browser/components/newtab/AboutNewTabComponents.sys.mjs");
@@ -331,12 +308,9 @@ export interface Modules {
"moz-src:///browser/components/places/PlacesUIUtils.sys.mjs": typeof import("moz-src:///browser/components/places/PlacesUIUtils.sys.mjs");
"moz-src:///browser/components/privatebrowsing/ResetPBMPanel.sys.mjs": typeof import("moz-src:///browser/components/privatebrowsing/ResetPBMPanel.sys.mjs");
"moz-src:///browser/components/protections/ContentBlockingPrefs.sys.mjs": typeof import("moz-src:///browser/components/protections/ContentBlockingPrefs.sys.mjs");
"moz-src:///browser/components/protections/PrivacyMetricsService.sys.mjs": typeof import("moz-src:///browser/components/protections/PrivacyMetricsService.sys.mjs");
"moz-src:///browser/components/qrcode/QRCodeGenerator.sys.mjs": typeof import("moz-src:///browser/components/qrcode/QRCodeGenerator.sys.mjs");
"moz-src:///browser/components/qrcode/QRCodeWorker.sys.mjs": typeof import("moz-src:///browser/components/qrcode/QRCodeWorker.sys.mjs");
"moz-src:///browser/components/reportbrokensite/ReportBrokenSite.sys.mjs": typeof import("moz-src:///browser/components/reportbrokensite/ReportBrokenSite.sys.mjs");
"moz-src:///browser/components/screenshots/ScreenshotsOverlayChild.sys.mjs": typeof import("moz-src:///browser/components/screenshots/ScreenshotsOverlayChild.sys.mjs");
"moz-src:///browser/components/screenshots/ScreenshotsUtils.sys.mjs": typeof import("moz-src:///browser/components/screenshots/ScreenshotsUtils.sys.mjs");
"moz-src:///browser/components/search/BrowserSearchTelemetry.sys.mjs": typeof import("moz-src:///browser/components/search/BrowserSearchTelemetry.sys.mjs");
"moz-src:///browser/components/search/OpenSearchManager.sys.mjs": typeof import("moz-src:///browser/components/search/OpenSearchManager.sys.mjs");
"moz-src:///browser/components/search/SERPCategorization.sys.mjs": typeof import("moz-src:///browser/components/search/SERPCategorization.sys.mjs");
@@ -366,10 +340,11 @@ export interface Modules {
"moz-src:///browser/components/urlbar/MerinoClient.sys.mjs": typeof import("moz-src:///browser/components/urlbar/MerinoClient.sys.mjs");
"moz-src:///browser/components/urlbar/QuickActionsLoaderDefault.sys.mjs": typeof import("moz-src:///browser/components/urlbar/QuickActionsLoaderDefault.sys.mjs");
"moz-src:///browser/components/urlbar/QuickSuggest.sys.mjs": typeof import("moz-src:///browser/components/urlbar/QuickSuggest.sys.mjs");
"moz-src:///browser/components/urlbar/SearchModeSwitcher.sys.mjs": typeof import("moz-src:///browser/components/urlbar/SearchModeSwitcher.sys.mjs");
"moz-src:///browser/components/urlbar/SmartbarMentionsPanelSearch.sys.mjs": typeof import("moz-src:///browser/components/urlbar/SmartbarMentionsPanelSearch.sys.mjs");
"moz-src:///browser/components/urlbar/UrlbarController.sys.mjs": typeof import("moz-src:///browser/components/urlbar/UrlbarController.sys.mjs");
"moz-src:///browser/components/urlbar/UrlbarEventBufferer.sys.mjs": typeof import("moz-src:///browser/components/urlbar/UrlbarEventBufferer.sys.mjs");
"moz-src:///browser/components/urlbar/UrlbarPrefs.sys.mjs": typeof import("moz-src:///browser/components/urlbar/UrlbarPrefs.sys.mjs");
"moz-src:///browser/components/urlbar/UrlbarProviderActionsSearchMode.sys.mjs": typeof import("moz-src:///browser/components/urlbar/UrlbarProviderActionsSearchMode.sys.mjs");
"moz-src:///browser/components/urlbar/UrlbarProviderAiChat.sys.mjs": typeof import("moz-src:///browser/components/urlbar/UrlbarProviderAiChat.sys.mjs");
"moz-src:///browser/components/urlbar/UrlbarProviderAutofill.sys.mjs": typeof import("moz-src:///browser/components/urlbar/UrlbarProviderAutofill.sys.mjs");
"moz-src:///browser/components/urlbar/UrlbarProviderCalculator.sys.mjs": typeof import("moz-src:///browser/components/urlbar/UrlbarProviderCalculator.sys.mjs");
@@ -388,19 +363,24 @@ export interface Modules {
"moz-src:///browser/components/urlbar/UrlbarProviderTopSites.sys.mjs": typeof import("moz-src:///browser/components/urlbar/UrlbarProviderTopSites.sys.mjs");
"moz-src:///browser/components/urlbar/UrlbarProviderUnitConversion.sys.mjs": typeof import("moz-src:///browser/components/urlbar/UrlbarProviderUnitConversion.sys.mjs");
"moz-src:///browser/components/urlbar/UrlbarProvidersManager.sys.mjs": typeof import("moz-src:///browser/components/urlbar/UrlbarProvidersManager.sys.mjs");
"moz-src:///browser/components/urlbar/UrlbarResult.sys.mjs": typeof import("moz-src:///browser/components/urlbar/UrlbarResult.sys.mjs");
"moz-src:///browser/components/urlbar/UrlbarSearchOneOffs.sys.mjs": typeof import("moz-src:///browser/components/urlbar/UrlbarSearchOneOffs.sys.mjs");
"moz-src:///browser/components/urlbar/UrlbarSearchTermsPersistence.sys.mjs": typeof import("moz-src:///browser/components/urlbar/UrlbarSearchTermsPersistence.sys.mjs");
"moz-src:///browser/components/urlbar/UrlbarSearchUtils.sys.mjs": typeof import("moz-src:///browser/components/urlbar/UrlbarSearchUtils.sys.mjs");
"moz-src:///browser/components/urlbar/UrlbarTokenizer.sys.mjs": typeof import("moz-src:///browser/components/urlbar/UrlbarTokenizer.sys.mjs");
"moz-src:///browser/components/urlbar/UrlbarUtils.sys.mjs": typeof import("moz-src:///browser/components/urlbar/UrlbarUtils.sys.mjs");
"moz-src:///browser/components/urlbar/UrlbarValueFormatter.sys.mjs": typeof import("moz-src:///browser/components/urlbar/UrlbarValueFormatter.sys.mjs");
"moz-src:///browser/components/urlbar/UrlbarView.sys.mjs": typeof import("moz-src:///browser/components/urlbar/UrlbarView.sys.mjs");
"moz-src:///browser/components/urlbar/private/AmpSuggestions.sys.mjs": typeof import("moz-src:///browser/components/urlbar/private/AmpSuggestions.sys.mjs");
"moz-src:///browser/components/urlbar/private/GeolocationUtils.sys.mjs": typeof import("moz-src:///browser/components/urlbar/private/GeolocationUtils.sys.mjs");
"moz-src:///browser/components/urlbar/private/MLSuggest.sys.mjs": typeof import("moz-src:///browser/components/urlbar/private/MLSuggest.sys.mjs");
"moz-src:///browser/components/urlbar/private/SportsSuggestions.sys.mjs": typeof import("moz-src:///browser/components/urlbar/private/SportsSuggestions.sys.mjs");
"moz-src:///browser/components/urlbar/private/SuggestBackendRust.sys.mjs": typeof import("moz-src:///browser/components/urlbar/private/SuggestBackendRust.sys.mjs");
"moz-src:///browser/modules/CanvasPermissionPromptHelper.sys.mjs": typeof import("moz-src:///browser/modules/CanvasPermissionPromptHelper.sys.mjs");
"moz-src:///browser/modules/ContextId.sys.mjs": typeof import("moz-src:///browser/modules/ContextId.sys.mjs");
"moz-src:///browser/modules/PrivateBrowsingUI.sys.mjs": typeof import("moz-src:///browser/modules/PrivateBrowsingUI.sys.mjs");
"moz-src:///browser/modules/UnexpectedScriptObserver.sys.mjs": typeof import("moz-src:///browser/modules/UnexpectedScriptObserver.sys.mjs");
"moz-src:///browser/modules/WebAuthnPromptHelper.sys.mjs": typeof import("moz-src:///browser/modules/WebAuthnPromptHelper.sys.mjs");
"moz-src:///browser/themes/ToolbarIconColor.sys.mjs": typeof import("moz-src:///browser/themes/ToolbarIconColor.sys.mjs");
"moz-src:///dom/notification/MemoryNotificationDB.sys.mjs": typeof import("moz-src:///dom/notification/MemoryNotificationDB.sys.mjs");
"moz-src:///dom/notification/NotificationDB.sys.mjs": typeof import("moz-src:///dom/notification/NotificationDB.sys.mjs");
@@ -412,30 +392,6 @@ export interface Modules {
"moz-src:///toolkit/components/doh/DoHController.sys.mjs": typeof import("moz-src:///toolkit/components/doh/DoHController.sys.mjs");
"moz-src:///toolkit/components/doh/DoHHeuristics.sys.mjs": typeof import("moz-src:///toolkit/components/doh/DoHHeuristics.sys.mjs");
"moz-src:///toolkit/components/doh/TRRPerformance.sys.mjs": typeof import("moz-src:///toolkit/components/doh/TRRPerformance.sys.mjs");
"moz-src:///toolkit/components/ipprotection/GuardianTypes.sys.mjs": typeof import("moz-src:///toolkit/components/ipprotection/GuardianTypes.sys.mjs");
"moz-src:///toolkit/components/ipprotection/IPPAuthProvider.sys.mjs": typeof import("moz-src:///toolkit/components/ipprotection/IPPAuthProvider.sys.mjs");
"moz-src:///toolkit/components/ipprotection/IPPAutoRestore.sys.mjs": typeof import("moz-src:///toolkit/components/ipprotection/IPPAutoRestore.sys.mjs");
"moz-src:///toolkit/components/ipprotection/IPPAutoStart.sys.mjs": typeof import("moz-src:///toolkit/components/ipprotection/IPPAutoStart.sys.mjs");
"moz-src:///toolkit/components/ipprotection/IPPChannelFilter.sys.mjs": typeof import("moz-src:///toolkit/components/ipprotection/IPPChannelFilter.sys.mjs");
"moz-src:///toolkit/components/ipprotection/IPPEarlyStartupFilter.sys.mjs": typeof import("moz-src:///toolkit/components/ipprotection/IPPEarlyStartupFilter.sys.mjs");
"moz-src:///toolkit/components/ipprotection/IPPExceptionsManager.sys.mjs": typeof import("moz-src:///toolkit/components/ipprotection/IPPExceptionsManager.sys.mjs");
"moz-src:///toolkit/components/ipprotection/IPPNetworkErrorObserver.sys.mjs": typeof import("moz-src:///toolkit/components/ipprotection/IPPNetworkErrorObserver.sys.mjs");
"moz-src:///toolkit/components/ipprotection/IPPNetworkUtils.sys.mjs": typeof import("moz-src:///toolkit/components/ipprotection/IPPNetworkUtils.sys.mjs");
"moz-src:///toolkit/components/ipprotection/IPPNimbusHelper.sys.mjs": typeof import("moz-src:///toolkit/components/ipprotection/IPPNimbusHelper.sys.mjs");
"moz-src:///toolkit/components/ipprotection/IPPProxyManager.sys.mjs": typeof import("moz-src:///toolkit/components/ipprotection/IPPProxyManager.sys.mjs");
"moz-src:///toolkit/components/ipprotection/IPPSessionPrefManager.sys.mjs": typeof import("moz-src:///toolkit/components/ipprotection/IPPSessionPrefManager.sys.mjs");
"moz-src:///toolkit/components/ipprotection/IPPStartupCache.sys.mjs": typeof import("moz-src:///toolkit/components/ipprotection/IPPStartupCache.sys.mjs");
"moz-src:///toolkit/components/ipprotection/IPProtectionActivator.sys.mjs": typeof import("moz-src:///toolkit/components/ipprotection/IPProtectionActivator.sys.mjs");
"moz-src:///toolkit/components/ipprotection/IPProtectionServerlist.sys.mjs": typeof import("moz-src:///toolkit/components/ipprotection/IPProtectionServerlist.sys.mjs");
"moz-src:///toolkit/components/ipprotection/IPProtectionService.sys.mjs": typeof import("moz-src:///toolkit/components/ipprotection/IPProtectionService.sys.mjs");
"moz-src:///toolkit/components/ipprotection/enterprise/IPPAlwaysOn.sys.mjs": typeof import("moz-src:///toolkit/components/ipprotection/enterprise/IPPAlwaysOn.sys.mjs");
"moz-src:///toolkit/components/ipprotection/enterprise/IPPEnterpriseAuthProvider.sys.mjs": typeof import("moz-src:///toolkit/components/ipprotection/enterprise/IPPEnterpriseAuthProvider.sys.mjs");
"moz-src:///toolkit/components/ipprotection/fxa/GuardianClient.sys.mjs": typeof import("moz-src:///toolkit/components/ipprotection/fxa/GuardianClient.sys.mjs");
"moz-src:///toolkit/components/ipprotection/fxa/IPPAndroidAuthProvider.sys.mjs": typeof import("moz-src:///toolkit/components/ipprotection/fxa/IPPAndroidAuthProvider.sys.mjs");
"moz-src:///toolkit/components/ipprotection/fxa/IPPFxaActivateAuthProvider.sys.mjs": typeof import("moz-src:///toolkit/components/ipprotection/fxa/IPPFxaActivateAuthProvider.sys.mjs");
"moz-src:///toolkit/components/ipprotection/fxa/IPPFxaAuthProvider.sys.mjs": typeof import("moz-src:///toolkit/components/ipprotection/fxa/IPPFxaAuthProvider.sys.mjs");
"moz-src:///toolkit/components/ipprotection/fxa/IPPSignInWatcher.sys.mjs": typeof import("moz-src:///toolkit/components/ipprotection/fxa/IPPSignInWatcher.sys.mjs");
"moz-src:///toolkit/components/ipprotection/gpi/IPPGpiAuthProvider.sys.mjs": typeof import("moz-src:///toolkit/components/ipprotection/gpi/IPPGpiAuthProvider.sys.mjs");
"moz-src:///toolkit/components/pageextractor/DOMExtractor.sys.mjs": typeof import("moz-src:///toolkit/components/pageextractor/DOMExtractor.sys.mjs");
"moz-src:///toolkit/components/qrcode/encoder.mjs": typeof import("moz-src:///toolkit/components/qrcode/encoder.mjs");
"moz-src:///toolkit/components/reader/AboutReader.sys.mjs": typeof import("moz-src:///toolkit/components/reader/AboutReader.sys.mjs");
@@ -445,7 +401,6 @@ export interface Modules {
"moz-src:///toolkit/components/search/ConfigSearchEngine.sys.mjs": typeof import("moz-src:///toolkit/components/search/ConfigSearchEngine.sys.mjs");
"moz-src:///toolkit/components/search/OpenSearchEngine.sys.mjs": typeof import("moz-src:///toolkit/components/search/OpenSearchEngine.sys.mjs");
"moz-src:///toolkit/components/search/OpenSearchLoader.sys.mjs": typeof import("moz-src:///toolkit/components/search/OpenSearchLoader.sys.mjs");
"moz-src:///toolkit/components/search/OpenSearchParser.sys.mjs": typeof import("moz-src:///toolkit/components/search/OpenSearchParser.sys.mjs");
"moz-src:///toolkit/components/search/PolicySearchEngine.sys.mjs": typeof import("moz-src:///toolkit/components/search/PolicySearchEngine.sys.mjs");
"moz-src:///toolkit/components/search/SearchEngine.sys.mjs": typeof import("moz-src:///toolkit/components/search/SearchEngine.sys.mjs");
"moz-src:///toolkit/components/search/SearchEngineSelector.sys.mjs": typeof import("moz-src:///toolkit/components/search/SearchEngineSelector.sys.mjs");
@@ -468,7 +423,6 @@ export interface Modules {
"moz-src:///toolkit/modules/DateTimePickerPanel.sys.mjs": typeof import("moz-src:///toolkit/modules/DateTimePickerPanel.sys.mjs");
"moz-src:///toolkit/modules/FaviconUtils.sys.mjs": typeof import("moz-src:///toolkit/modules/FaviconUtils.sys.mjs");
"moz-src:///toolkit/modules/PrefUtils.sys.mjs": typeof import("moz-src:///toolkit/modules/PrefUtils.sys.mjs");
"moz-src:///toolkit/modules/WebAuthnPromptHelper.sys.mjs": typeof import("moz-src:///toolkit/modules/WebAuthnPromptHelper.sys.mjs");
"moz-src:///toolkit/profile/ProfilesDatastoreService.sys.mjs": typeof import("moz-src:///toolkit/profile/ProfilesDatastoreService.sys.mjs");
"resource:///actors/AboutLoginsParent.sys.mjs": typeof import("resource:///actors/AboutLoginsParent.sys.mjs");
"resource:///actors/AboutNewTabParent.sys.mjs": typeof import("resource:///actors/AboutNewTabParent.sys.mjs");
@@ -504,8 +458,8 @@ export interface Modules {
"resource:///modules/ChromeProfileMigrator.sys.mjs": typeof import("resource:///modules/ChromeProfileMigrator.sys.mjs");
"resource:///modules/ChromeWindowsLoginCrypto.sys.mjs": typeof import("resource:///modules/ChromeWindowsLoginCrypto.sys.mjs");
"resource:///modules/ContentCrashHandlers.sys.mjs": typeof import("resource:///modules/ContentCrashHandlers.sys.mjs");
"resource:///modules/CustomKeys.sys.mjs": typeof import("resource:///modules/CustomKeys.sys.mjs");
"resource:///modules/Dedupe.sys.mjs": typeof import("resource:///modules/Dedupe.sys.mjs");
"resource:///modules/DefaultWindowsLaunchOnLogin.sys.mjs": typeof import("resource:///modules/DefaultWindowsLaunchOnLogin.sys.mjs");
"resource:///modules/DevToolsStartup.sys.mjs": typeof import("resource:///modules/DevToolsStartup.sys.mjs");
"resource:///modules/Discovery.sys.mjs": typeof import("resource:///modules/Discovery.sys.mjs");
"resource:///modules/ESEDBReader.sys.mjs": typeof import("resource:///modules/ESEDBReader.sys.mjs");
@@ -537,13 +491,13 @@ export interface Modules {
"resource:///modules/OpenTabsController.sys.mjs": typeof import("resource:///modules/OpenTabsController.sys.mjs");
"resource:///modules/PageActions.sys.mjs": typeof import("resource:///modules/PageActions.sys.mjs");
"resource:///modules/PartnerLinkAttribution.sys.mjs": typeof import("resource:///modules/PartnerLinkAttribution.sys.mjs");
"resource:///modules/PermissionPromptTargeting.sys.mjs": typeof import("resource:///modules/PermissionPromptTargeting.sys.mjs");
"resource:///modules/PermissionUI.sys.mjs": typeof import("resource:///modules/PermissionUI.sys.mjs");
"resource:///modules/PopupAndRedirectBlockerObserver.sys.mjs": typeof import("resource:///modules/PopupAndRedirectBlockerObserver.sys.mjs");
"resource:///modules/ProcessHangMonitor.sys.mjs": typeof import("resource:///modules/ProcessHangMonitor.sys.mjs");
"resource:///modules/ReducedProtectionNotification.sys.mjs": typeof import("resource:///modules/ReducedProtectionNotification.sys.mjs");
"resource:///modules/SafariProfileMigrator.sys.mjs": typeof import("resource:///modules/SafariProfileMigrator.sys.mjs");
"resource:///modules/Sanitizer.sys.mjs": typeof import("resource:///modules/Sanitizer.sys.mjs");
"resource:///modules/ScreenshotsOverlayChild.sys.mjs": typeof import("resource:///modules/ScreenshotsOverlayChild.sys.mjs");
"resource:///modules/ScreenshotsUtils.sys.mjs": typeof import("resource:///modules/ScreenshotsUtils.sys.mjs");
"resource:///modules/SelectionChangedMenulist.sys.mjs": typeof import("resource:///modules/SelectionChangedMenulist.sys.mjs");
"resource:///modules/SharingUtils.sys.mjs": typeof import("resource:///modules/SharingUtils.sys.mjs");
"resource:///modules/SiteDataManager.sys.mjs": typeof import("resource:///modules/SiteDataManager.sys.mjs");
@@ -553,11 +507,11 @@ export interface Modules {
"resource:///modules/ThemeVariableMap.sys.mjs": typeof import("resource:///modules/ThemeVariableMap.sys.mjs");
"resource:///modules/TransientPrefs.sys.mjs": typeof import("resource:///modules/TransientPrefs.sys.mjs");
"resource:///modules/URILoadingHelper.sys.mjs": typeof import("resource:///modules/URILoadingHelper.sys.mjs");
"resource:///modules/UpdatePolicyEnforcer.sys.mjs": typeof import("resource:///modules/UpdatePolicyEnforcer.sys.mjs");
"resource:///modules/WebProtocolHandlerRegistrar.sys.mjs": typeof import("resource:///modules/WebProtocolHandlerRegistrar.sys.mjs");
"resource:///modules/WindowsJumpLists.sys.mjs": typeof import("resource:///modules/WindowsJumpLists.sys.mjs");
"resource:///modules/WindowsPreviewPerTab.sys.mjs": typeof import("resource:///modules/WindowsPreviewPerTab.sys.mjs");
"resource:///modules/ZoomUI.sys.mjs": typeof import("resource:///modules/ZoomUI.sys.mjs");
"resource:///modules/aboutwelcome/AWScreenUtils.sys.mjs": typeof import("resource:///modules/aboutwelcome/AWScreenUtils.sys.mjs");
"resource:///modules/aboutwelcome/AWToolbarUtils.sys.mjs": typeof import("resource:///modules/aboutwelcome/AWToolbarUtils.sys.mjs");
"resource:///modules/aboutwelcome/AboutWelcomeDefaults.sys.mjs": typeof import("resource:///modules/aboutwelcome/AboutWelcomeDefaults.sys.mjs");
"resource:///modules/aboutwelcome/AboutWelcomeTelemetry.sys.mjs": typeof import("resource:///modules/aboutwelcome/AboutWelcomeTelemetry.sys.mjs");
@@ -566,7 +520,6 @@ export interface Modules {
"resource:///modules/asrouter/ASRouterDefaultConfig.sys.mjs": typeof import("resource:///modules/asrouter/ASRouterDefaultConfig.sys.mjs");
"resource:///modules/asrouter/ASRouterNewTabHook.sys.mjs": typeof import("resource:///modules/asrouter/ASRouterNewTabHook.sys.mjs");
"resource:///modules/asrouter/ASRouterPreferences.sys.mjs": typeof import("resource:///modules/asrouter/ASRouterPreferences.sys.mjs");
"resource:///modules/asrouter/ASRouterScreenUtils.sys.mjs": typeof import("resource:///modules/asrouter/ASRouterScreenUtils.sys.mjs");
"resource:///modules/asrouter/ASRouterStorage.sys.mjs": typeof import("resource:///modules/asrouter/ASRouterStorage.sys.mjs");
"resource:///modules/asrouter/ASRouterTargeting.sys.mjs": typeof import("resource:///modules/asrouter/ASRouterTargeting.sys.mjs");
"resource:///modules/asrouter/ASRouterTelemetry.sys.mjs": typeof import("resource:///modules/asrouter/ASRouterTelemetry.sys.mjs");
@@ -585,7 +538,6 @@ export interface Modules {
"resource:///modules/asrouter/PageEventManager.sys.mjs": typeof import("resource:///modules/asrouter/PageEventManager.sys.mjs");
"resource:///modules/asrouter/PanelTestProvider.sys.mjs": typeof import("resource:///modules/asrouter/PanelTestProvider.sys.mjs");
"resource:///modules/asrouter/RemoteL10n.sys.mjs": typeof import("resource:///modules/asrouter/RemoteL10n.sys.mjs");
"resource:///modules/asrouter/SmartWindowNewTabPromo.sys.mjs": typeof import("resource:///modules/asrouter/SmartWindowNewTabPromo.sys.mjs");
"resource:///modules/asrouter/Spotlight.sys.mjs": typeof import("resource:///modules/asrouter/Spotlight.sys.mjs");
"resource:///modules/asrouter/ToastNotification.sys.mjs": typeof import("resource:///modules/asrouter/ToastNotification.sys.mjs");
"resource:///modules/asrouter/ToolbarBadgeHub.sys.mjs": typeof import("resource:///modules/asrouter/ToolbarBadgeHub.sys.mjs");
@@ -607,7 +559,6 @@ export interface Modules {
"resource:///modules/backup/SelectableProfileBackupResource.sys.mjs": typeof import("resource:///modules/backup/SelectableProfileBackupResource.sys.mjs");
"resource:///modules/backup/SessionStoreBackupResource.sys.mjs": typeof import("resource:///modules/backup/SessionStoreBackupResource.sys.mjs");
"resource:///modules/backup/SiteSettingsBackupResource.sys.mjs": typeof import("resource:///modules/backup/SiteSettingsBackupResource.sys.mjs");
"resource:///modules/contentsharing/ContentSharingUtils.sys.mjs": typeof import("resource:///modules/contentsharing/ContentSharingUtils.sys.mjs");
"resource:///modules/distribution.sys.mjs": typeof import("resource:///modules/distribution.sys.mjs");
"resource:///modules/firefox-view-synced-tabs-error-handler.sys.mjs": typeof import("resource:///modules/firefox-view-synced-tabs-error-handler.sys.mjs");
"resource:///modules/firefox-view-tabs-setup-manager.sys.mjs": typeof import("resource:///modules/firefox-view-tabs-setup-manager.sys.mjs");
@@ -689,11 +640,6 @@ export interface Modules {
"resource://devtools/client/shared/components/tree/TreeRow.mjs": typeof import("resource://devtools/client/shared/components/tree/TreeRow.mjs");
"resource://devtools/client/shared/components/tree/TreeView.mjs": typeof import("resource://devtools/client/shared/components/tree/TreeView.mjs");
"resource://devtools/client/shared/focus.mjs": typeof import("resource://devtools/client/shared/focus.mjs");
"resource://devtools/client/shared/inplace-editor-utils/autocomplete-anchor-function.mjs": typeof import("resource://devtools/client/shared/inplace-editor-utils/autocomplete-anchor-function.mjs");
"resource://devtools/client/shared/inplace-editor-utils/autocomplete-anchor-size-function.mjs": typeof import("resource://devtools/client/shared/inplace-editor-utils/autocomplete-anchor-size-function.mjs");
"resource://devtools/client/shared/inplace-editor-utils/autocomplete-color-function.mjs": typeof import("resource://devtools/client/shared/inplace-editor-utils/autocomplete-color-function.mjs");
"resource://devtools/client/shared/inplace-editor-utils/autocomplete-linear-gradient-function.mjs": typeof import("resource://devtools/client/shared/inplace-editor-utils/autocomplete-linear-gradient-function.mjs");
"resource://devtools/client/shared/inplace-editor-utils/constants.mjs": typeof import("resource://devtools/client/shared/inplace-editor-utils/constants.mjs");
"resource://devtools/client/shared/scroll.mjs": typeof import("resource://devtools/client/shared/scroll.mjs");
"resource://devtools/client/shared/sourceeditor/codemirror6/codemirror6.bundle.mjs": typeof import("resource://devtools/client/shared/sourceeditor/codemirror6/codemirror6.bundle.mjs");
"resource://devtools/client/storage/VariablesView.sys.mjs": typeof import("resource://devtools/client/storage/VariablesView.sys.mjs");
@@ -739,7 +685,6 @@ export interface Modules {
"resource://devtools/shared/test-helpers/dump-scope.sys.mjs": typeof import("resource://devtools/shared/test-helpers/dump-scope.sys.mjs");
"resource://devtools/shared/test-helpers/tracked-objects.sys.mjs": typeof import("resource://devtools/shared/test-helpers/tracked-objects.sys.mjs");
"resource://devtools/shared/validate-breakpoint.sys.mjs": typeof import("resource://devtools/shared/validate-breakpoint.sys.mjs");
"resource://devtools/shared/webconsole/formatMessageParametersAndText.sys.mjs": typeof import("resource://devtools/shared/webconsole/formatMessageParametersAndText.sys.mjs");
"resource://devtools/shared/worker/worker.sys.mjs": typeof import("resource://devtools/shared/worker/worker.sys.mjs");
"resource://gre/actors/AutoCompleteParent.sys.mjs": typeof import("resource://gre/actors/AutoCompleteParent.sys.mjs");
"resource://gre/actors/FormHandlerChild.sys.mjs": typeof import("resource://gre/actors/FormHandlerChild.sys.mjs");
@@ -774,7 +719,6 @@ export interface Modules {
"resource://gre/modules/BookmarkJSONUtils.sys.mjs": typeof import("resource://gre/modules/BookmarkJSONUtils.sys.mjs");
"resource://gre/modules/BookmarkList.sys.mjs": typeof import("resource://gre/modules/BookmarkList.sys.mjs");
"resource://gre/modules/Bookmarks.sys.mjs": typeof import("resource://gre/modules/Bookmarks.sys.mjs");
"resource://gre/modules/BreachAlertStore.sys.mjs": typeof import("resource://gre/modules/BreachAlertStore.sys.mjs");
"resource://gre/modules/BrowserTelemetryUtils.sys.mjs": typeof import("resource://gre/modules/BrowserTelemetryUtils.sys.mjs");
"resource://gre/modules/BrowserUtils.sys.mjs": typeof import("resource://gre/modules/BrowserUtils.sys.mjs");
"resource://gre/modules/CSV.sys.mjs": typeof import("resource://gre/modules/CSV.sys.mjs");
@@ -901,15 +845,14 @@ export interface Modules {
"resource://gre/modules/GeckoViewActorManager.sys.mjs": typeof import("resource://gre/modules/GeckoViewActorManager.sys.mjs");
"resource://gre/modules/GeckoViewAutocomplete.sys.mjs": typeof import("resource://gre/modules/GeckoViewAutocomplete.sys.mjs");
"resource://gre/modules/GeckoViewAutofill.sys.mjs": typeof import("resource://gre/modules/GeckoViewAutofill.sys.mjs");
"resource://gre/modules/GeckoViewChildModule.sys.mjs": typeof import("resource://gre/modules/GeckoViewChildModule.sys.mjs");
"resource://gre/modules/GeckoViewClipboardPermission.sys.mjs": typeof import("resource://gre/modules/GeckoViewClipboardPermission.sys.mjs");
"resource://gre/modules/GeckoViewIdentityCredential.sys.mjs": typeof import("resource://gre/modules/GeckoViewIdentityCredential.sys.mjs");
"resource://gre/modules/GeckoViewPreferences.sys.mjs": typeof import("resource://gre/modules/GeckoViewPreferences.sys.mjs");
"resource://gre/modules/GeckoViewPrompter.sys.mjs": typeof import("resource://gre/modules/GeckoViewPrompter.sys.mjs");
"resource://gre/modules/GeckoViewSettings.sys.mjs": typeof import("resource://gre/modules/GeckoViewSettings.sys.mjs");
"resource://gre/modules/GeckoViewTab.sys.mjs": typeof import("resource://gre/modules/GeckoViewTab.sys.mjs");
"resource://gre/modules/GeckoViewTelemetry.sys.mjs": typeof import("resource://gre/modules/GeckoViewTelemetry.sys.mjs");
"resource://gre/modules/GeckoViewTestUtils.sys.mjs": typeof import("resource://gre/modules/GeckoViewTestUtils.sys.mjs");
"resource://gre/modules/GeckoViewTrackingDB.sys.mjs": typeof import("resource://gre/modules/GeckoViewTrackingDB.sys.mjs");
"resource://gre/modules/GeckoViewUtils.sys.mjs": typeof import("resource://gre/modules/GeckoViewUtils.sys.mjs");
"resource://gre/modules/GeckoViewWebExtension.sys.mjs": typeof import("resource://gre/modules/GeckoViewWebExtension.sys.mjs");
"resource://gre/modules/Geometry.sys.mjs": typeof import("resource://gre/modules/Geometry.sys.mjs");
@@ -925,9 +868,9 @@ export interface Modules {
"resource://gre/modules/Integration.sys.mjs": typeof import("resource://gre/modules/Integration.sys.mjs");
"resource://gre/modules/JSONFile.sys.mjs": typeof import("resource://gre/modules/JSONFile.sys.mjs");
"resource://gre/modules/JsonSchema.sys.mjs": typeof import("resource://gre/modules/JsonSchema.sys.mjs");
"resource://gre/modules/KeyboardLockUtils.sys.mjs": typeof import("resource://gre/modules/KeyboardLockUtils.sys.mjs");
"resource://gre/modules/KeywordUtils.sys.mjs": typeof import("resource://gre/modules/KeywordUtils.sys.mjs");
"resource://gre/modules/LangPackMatcher.sys.mjs": typeof import("resource://gre/modules/LangPackMatcher.sys.mjs");
"resource://gre/modules/LayoutUtils.sys.mjs": typeof import("resource://gre/modules/LayoutUtils.sys.mjs");
"resource://gre/modules/LightweightThemeConsumer.sys.mjs": typeof import("resource://gre/modules/LightweightThemeConsumer.sys.mjs");
"resource://gre/modules/LightweightThemeManager.sys.mjs": typeof import("resource://gre/modules/LightweightThemeManager.sys.mjs");
"resource://gre/modules/LoadURIDelegate.sys.mjs": typeof import("resource://gre/modules/LoadURIDelegate.sys.mjs");
@@ -961,7 +904,6 @@ export interface Modules {
"resource://gre/modules/NativeMessaging.sys.mjs": typeof import("resource://gre/modules/NativeMessaging.sys.mjs");
"resource://gre/modules/NetUtil.sys.mjs": typeof import("resource://gre/modules/NetUtil.sys.mjs");
"resource://gre/modules/NewTabUtils.sys.mjs": typeof import("resource://gre/modules/NewTabUtils.sys.mjs");
"resource://gre/modules/NimbusGeckoViewQATelemetry.sys.mjs": typeof import("resource://gre/modules/NimbusGeckoViewQATelemetry.sys.mjs");
"resource://gre/modules/OSCrypto_win.sys.mjs": typeof import("resource://gre/modules/OSCrypto_win.sys.mjs");
"resource://gre/modules/OSKeyStore.sys.mjs": typeof import("resource://gre/modules/OSKeyStore.sys.mjs");
"resource://gre/modules/ObjectUtils.sys.mjs": typeof import("resource://gre/modules/ObjectUtils.sys.mjs");
@@ -1008,7 +950,6 @@ export interface Modules {
"resource://gre/modules/RustSharedRemoteSettingsService.sys.mjs": typeof import("resource://gre/modules/RustSharedRemoteSettingsService.sys.mjs");
"resource://gre/modules/SafeBrowsing.sys.mjs": typeof import("resource://gre/modules/SafeBrowsing.sys.mjs");
"resource://gre/modules/SandboxUtils.sys.mjs": typeof import("resource://gre/modules/SandboxUtils.sys.mjs");
"resource://gre/modules/ScheduledTask.sys.mjs": typeof import("resource://gre/modules/ScheduledTask.sys.mjs");
"resource://gre/modules/Schemas.sys.mjs": typeof import("resource://gre/modules/Schemas.sys.mjs");
"resource://gre/modules/SecurityInfo.sys.mjs": typeof import("resource://gre/modules/SecurityInfo.sys.mjs");
"resource://gre/modules/SelectionUtils.sys.mjs": typeof import("resource://gre/modules/SelectionUtils.sys.mjs");
@@ -1034,6 +975,7 @@ export interface Modules {
"resource://gre/modules/TelemetrySession.sys.mjs": typeof import("resource://gre/modules/TelemetrySession.sys.mjs");
"resource://gre/modules/TelemetryStorage.sys.mjs": typeof import("resource://gre/modules/TelemetryStorage.sys.mjs");
"resource://gre/modules/TelemetryTimestamps.sys.mjs": typeof import("resource://gre/modules/TelemetryTimestamps.sys.mjs");
"resource://gre/modules/TelemetryUtils.sys.mjs": typeof import("resource://gre/modules/TelemetryUtils.sys.mjs");
"resource://gre/modules/Timer.sys.mjs": typeof import("resource://gre/modules/Timer.sys.mjs");
"resource://gre/modules/Troubleshoot.sys.mjs": typeof import("resource://gre/modules/Troubleshoot.sys.mjs");
"resource://gre/modules/UninstallPing.sys.mjs": typeof import("resource://gre/modules/UninstallPing.sys.mjs");
@@ -1094,7 +1036,6 @@ export interface Modules {
"resource://gre/modules/narrate/NarrateControls.sys.mjs": typeof import("resource://gre/modules/narrate/NarrateControls.sys.mjs");
"resource://gre/modules/policies/WindowsGPOParser.sys.mjs": typeof import("resource://gre/modules/policies/WindowsGPOParser.sys.mjs");
"resource://gre/modules/policies/macOSPoliciesParser.sys.mjs": typeof import("resource://gre/modules/policies/macOSPoliciesParser.sys.mjs");
"resource://gre/modules/psm/DER.sys.mjs": typeof import("resource://gre/modules/psm/DER.sys.mjs");
"resource://gre/modules/psm/QWACs.sys.mjs": typeof import("resource://gre/modules/psm/QWACs.sys.mjs");
"resource://gre/modules/psm/RemoteSecuritySettings.sys.mjs": typeof import("resource://gre/modules/psm/RemoteSecuritySettings.sys.mjs");
"resource://gre/modules/psm/X509.sys.mjs": typeof import("resource://gre/modules/psm/X509.sys.mjs");
@@ -1118,7 +1059,6 @@ export interface Modules {
"resource://gre/modules/shared/FieldScanner.sys.mjs": typeof import("resource://gre/modules/shared/FieldScanner.sys.mjs");
"resource://gre/modules/shared/FormAutofillHandler.sys.mjs": typeof import("resource://gre/modules/shared/FormAutofillHandler.sys.mjs");
"resource://gre/modules/shared/FormAutofillHeuristics.sys.mjs": typeof import("resource://gre/modules/shared/FormAutofillHeuristics.sys.mjs");
"resource://gre/modules/shared/FormAutofillML.sys.mjs": typeof import("resource://gre/modules/shared/FormAutofillML.sys.mjs");
"resource://gre/modules/shared/FormAutofillNameUtils.sys.mjs": typeof import("resource://gre/modules/shared/FormAutofillNameUtils.sys.mjs");
"resource://gre/modules/shared/FormAutofillSection.sys.mjs": typeof import("resource://gre/modules/shared/FormAutofillSection.sys.mjs");
"resource://gre/modules/shared/FormAutofillUtils.sys.mjs": typeof import("resource://gre/modules/shared/FormAutofillUtils.sys.mjs");
@@ -1158,7 +1098,6 @@ export interface Modules {
"resource://newtab/lib/HighlightsFeed.sys.mjs": typeof import("resource://newtab/lib/HighlightsFeed.sys.mjs");
"resource://newtab/lib/InferredModel/FeatureModel.sys.mjs": typeof import("resource://newtab/lib/InferredModel/FeatureModel.sys.mjs");
"resource://newtab/lib/InferredModel/GreedyContentRanker.mjs": typeof import("resource://newtab/lib/InferredModel/GreedyContentRanker.mjs");
"resource://newtab/lib/InferredModel/InferredConstants.sys.mjs": typeof import("resource://newtab/lib/InferredModel/InferredConstants.sys.mjs");
"resource://newtab/lib/InferredPersonalizationFeed.sys.mjs": typeof import("resource://newtab/lib/InferredPersonalizationFeed.sys.mjs");
"resource://newtab/lib/NewTabActorRegistry.sys.mjs": typeof import("resource://newtab/lib/NewTabActorRegistry.sys.mjs");
"resource://newtab/lib/NewTabAttributionFeed.sys.mjs": typeof import("resource://newtab/lib/NewTabAttributionFeed.sys.mjs");
@@ -1170,7 +1109,6 @@ export interface Modules {
"resource://newtab/lib/PersistentCache.sys.mjs": typeof import("resource://newtab/lib/PersistentCache.sys.mjs");
"resource://newtab/lib/PlacesFeed.sys.mjs": typeof import("resource://newtab/lib/PlacesFeed.sys.mjs");
"resource://newtab/lib/PrefsFeed.sys.mjs": typeof import("resource://newtab/lib/PrefsFeed.sys.mjs");
"resource://newtab/lib/RemoteRenderer.sys.mjs": typeof import("resource://newtab/lib/RemoteRenderer.sys.mjs");
"resource://newtab/lib/Screenshots.sys.mjs": typeof import("resource://newtab/lib/Screenshots.sys.mjs");
"resource://newtab/lib/SectionsLayoutFeed.sys.mjs": typeof import("resource://newtab/lib/SectionsLayoutFeed.sys.mjs");
"resource://newtab/lib/SectionsManager.sys.mjs": typeof import("resource://newtab/lib/SectionsManager.sys.mjs");
@@ -1187,10 +1125,8 @@ export interface Modules {
"resource://newtab/lib/TopStoriesFeed.sys.mjs": typeof import("resource://newtab/lib/TopStoriesFeed.sys.mjs");
"resource://newtab/lib/UTEventReporting.sys.mjs": typeof import("resource://newtab/lib/UTEventReporting.sys.mjs");
"resource://newtab/lib/Wallpapers/WallpaperFeed.sys.mjs": typeof import("resource://newtab/lib/Wallpapers/WallpaperFeed.sys.mjs");
"resource://newtab/lib/Wallpapers/WallpaperThemeUtils.mjs": typeof import("resource://newtab/lib/Wallpapers/WallpaperThemeUtils.mjs");
"resource://newtab/lib/WeatherFeed.sys.mjs": typeof import("resource://newtab/lib/WeatherFeed.sys.mjs");
"resource://newtab/lib/Widgets/ListsFeed.sys.mjs": typeof import("resource://newtab/lib/Widgets/ListsFeed.sys.mjs");
"resource://newtab/lib/Widgets/SportsFeed.sys.mjs": typeof import("resource://newtab/lib/Widgets/SportsFeed.sys.mjs");
"resource://newtab/lib/Widgets/TimerFeed.sys.mjs": typeof import("resource://newtab/lib/Widgets/TimerFeed.sys.mjs");
"resource://newtab/lib/actors/NewTabAttributionParent.sys.mjs": typeof import("resource://newtab/lib/actors/NewTabAttributionParent.sys.mjs");
"resource://nimbus/ExperimentAPI.sys.mjs": typeof import("resource://nimbus/ExperimentAPI.sys.mjs");
@@ -1242,8 +1178,6 @@ export interface Modules {
"resource://pdf.js/PdfJsTelemetry.sys.mjs": typeof import("resource://pdf.js/PdfJsTelemetry.sys.mjs");
"resource://pdf.js/PdfSandbox.sys.mjs": typeof import("resource://pdf.js/PdfSandbox.sys.mjs");
"resource://pdf.js/PdfStreamConverter.sys.mjs": typeof import("resource://pdf.js/PdfStreamConverter.sys.mjs");
"resource://pdf.js/PdfjsParent.sys.mjs": typeof import("resource://pdf.js/PdfjsParent.sys.mjs");
"resource://pdf.js/build/pdf.mjs": typeof import("resource://pdf.js/build/pdf.mjs");
"resource://reftest/AsyncSpellCheckTestHelper.sys.mjs": typeof import("resource://reftest/AsyncSpellCheckTestHelper.sys.mjs");
"resource://reftest/PerTestCoverageUtils.sys.mjs": typeof import("resource://reftest/PerTestCoverageUtils.sys.mjs");
"resource://reftest/reftest.sys.mjs": typeof import("resource://reftest/reftest.sys.mjs");
@@ -1256,6 +1190,7 @@ export interface Modules {
"resource://services-common/observers.sys.mjs": typeof import("resource://services-common/observers.sys.mjs");
"resource://services-common/rest.sys.mjs": typeof import("resource://services-common/rest.sys.mjs");
"resource://services-common/tokenserverclient.sys.mjs": typeof import("resource://services-common/tokenserverclient.sys.mjs");
"resource://services-common/uptake-telemetry.sys.mjs": typeof import("resource://services-common/uptake-telemetry.sys.mjs");
"resource://services-common/utils.sys.mjs": typeof import("resource://services-common/utils.sys.mjs");
"resource://services-settings/Attachments.sys.mjs": typeof import("resource://services-settings/Attachments.sys.mjs");
"resource://services-settings/Database.sys.mjs": typeof import("resource://services-settings/Database.sys.mjs");
@@ -1264,7 +1199,6 @@ export interface Modules {
"resource://services-settings/RemoteSettingsWorker.sys.mjs": typeof import("resource://services-settings/RemoteSettingsWorker.sys.mjs");
"resource://services-settings/SharedUtils.sys.mjs": typeof import("resource://services-settings/SharedUtils.sys.mjs");
"resource://services-settings/SyncHistory.sys.mjs": typeof import("resource://services-settings/SyncHistory.sys.mjs");
"resource://services-settings/UptakeTelemetry.sys.mjs": typeof import("resource://services-settings/UptakeTelemetry.sys.mjs");
"resource://services-settings/Utils.sys.mjs": typeof import("resource://services-settings/Utils.sys.mjs");
"resource://services-settings/remote-settings.sys.mjs": typeof import("resource://services-settings/remote-settings.sys.mjs");
"resource://services-sync/SyncDisconnect.sys.mjs": typeof import("resource://services-sync/SyncDisconnect.sys.mjs");
@@ -1329,9 +1263,6 @@ export interface Modules {
"resource://test/esmified-1.sys.mjs": typeof import("resource://test/esmified-1.sys.mjs");
"resource://test/esmified-3.sys.mjs": typeof import("resource://test/esmified-3.sys.mjs");
"resource://test/esmified-4.sys.mjs": typeof import("resource://test/esmified-4.sys.mjs");
"resource://test/import_attributes.mjs": typeof import("resource://test/import_attributes.mjs");
"resource://test/import_attributes_css.mjs": typeof import("resource://test/import_attributes_css.mjs");
"resource://test/import_attributes_text.mjs": typeof import("resource://test/import_attributes_text.mjs");
"resource://test/import_non_shared_1.mjs": typeof import("resource://test/import_non_shared_1.mjs");
"resource://test/non_shared_1.mjs": typeof import("resource://test/non_shared_1.mjs");
"resource://test/non_shared_nest_import_non_shared_1.mjs": typeof import("resource://test/non_shared_nest_import_non_shared_1.mjs");
@@ -1345,7 +1276,6 @@ export interface Modules {
"resource://test/non_shared_nest_import_shared_target_2.sys.mjs": typeof import("resource://test/non_shared_nest_import_shared_target_2.sys.mjs");
"resource://test/not_found.mjs": typeof import("resource://test/not_found.mjs");
"resource://testing-common/AIWindowTestUtils.sys.mjs": typeof import("resource://testing-common/AIWindowTestUtils.sys.mjs");
"resource://testing-common/AboutAddonsTestUtils.sys.mjs": typeof import("resource://testing-common/AboutAddonsTestUtils.sys.mjs");
"resource://testing-common/AddonTestUtils.sys.mjs": typeof import("resource://testing-common/AddonTestUtils.sys.mjs");
"resource://testing-common/AllJavascriptTypes.mjs": typeof import("resource://testing-common/AllJavascriptTypes.mjs");
"resource://testing-common/AppData.sys.mjs": typeof import("resource://testing-common/AppData.sys.mjs");
@@ -1355,7 +1285,6 @@ export interface Modules {
"resource://testing-common/AsyncSpellCheckTestHelper.sys.mjs": typeof import("resource://testing-common/AsyncSpellCheckTestHelper.sys.mjs");
"resource://testing-common/BackgroundTasksTestUtils.sys.mjs": typeof import("resource://testing-common/BackgroundTasksTestUtils.sys.mjs");
"resource://testing-common/BrowserTestUtils.sys.mjs": typeof import("resource://testing-common/BrowserTestUtils.sys.mjs");
"resource://testing-common/ContentSharingMockServer.sys.mjs": typeof import("resource://testing-common/ContentSharingMockServer.sys.mjs");
"resource://testing-common/ContentTask.sys.mjs": typeof import("resource://testing-common/ContentTask.sys.mjs");
"resource://testing-common/ContentTaskUtils.sys.mjs": typeof import("resource://testing-common/ContentTaskUtils.sys.mjs");
"resource://testing-common/CookieXPCShellUtils.sys.mjs": typeof import("resource://testing-common/CookieXPCShellUtils.sys.mjs");
@@ -1376,7 +1305,6 @@ export interface Modules {
"resource://testing-common/JSObjectsTestUtils.sys.mjs": typeof import("resource://testing-common/JSObjectsTestUtils.sys.mjs");
"resource://testing-common/LangPackMatcherTestUtils.sys.mjs": typeof import("resource://testing-common/LangPackMatcherTestUtils.sys.mjs");
"resource://testing-common/LoginTestUtils.sys.mjs": typeof import("resource://testing-common/LoginTestUtils.sys.mjs");
"resource://testing-common/MLTestUtils.sys.mjs": typeof import("resource://testing-common/MLTestUtils.sys.mjs");
"resource://testing-common/MerinoTestUtils.sys.mjs": typeof import("resource://testing-common/MerinoTestUtils.sys.mjs");
"resource://testing-common/MessageChannel.sys.mjs": typeof import("resource://testing-common/MessageChannel.sys.mjs");
"resource://testing-common/MockColorPicker.sys.mjs": typeof import("resource://testing-common/MockColorPicker.sys.mjs");
@@ -1405,7 +1333,6 @@ export interface Modules {
"resource://testing-common/SearchTestUtils.sys.mjs": typeof import("resource://testing-common/SearchTestUtils.sys.mjs");
"resource://testing-common/SearchUITestUtils.sys.mjs": typeof import("resource://testing-common/SearchUITestUtils.sys.mjs");
"resource://testing-common/SessionStoreTestUtils.sys.mjs": typeof import("resource://testing-common/SessionStoreTestUtils.sys.mjs");
"resource://testing-common/SidebarTestUtils.sys.mjs": typeof import("resource://testing-common/SidebarTestUtils.sys.mjs");
"resource://testing-common/Sinon.sys.mjs": typeof import("resource://testing-common/Sinon.sys.mjs");
"resource://testing-common/SiteDataTestUtils.sys.mjs": typeof import("resource://testing-common/SiteDataTestUtils.sys.mjs");
"resource://testing-common/SpecialPowersParent.sys.mjs": typeof import("resource://testing-common/SpecialPowersParent.sys.mjs");
@@ -1441,10 +1368,6 @@ export interface Modules {
"resource://testing-common/dom/simpledb/test/modules/SimpleDBUtils.sys.mjs": typeof import("resource://testing-common/dom/simpledb/test/modules/SimpleDBUtils.sys.mjs");
"resource://testing-common/early_hint_preload_test_helper.sys.mjs": typeof import("resource://testing-common/early_hint_preload_test_helper.sys.mjs");
"resource://testing-common/httpd.sys.mjs": typeof import("resource://testing-common/httpd.sys.mjs");
"resource://testing-common/ipprotection/IPPAlwaysOn.sys.mjs": typeof import("resource://testing-common/ipprotection/IPPAlwaysOn.sys.mjs");
"resource://testing-common/ipprotection/IPPDummyAuthProvider.sys.mjs": typeof import("resource://testing-common/ipprotection/IPPDummyAuthProvider.sys.mjs");
"resource://testing-common/ipprotection/IPPEnterpriseAuthProvider.sys.mjs": typeof import("resource://testing-common/ipprotection/IPPEnterpriseAuthProvider.sys.mjs");
"resource://testing-common/ipprotection/IPPGpiAuthProvider.sys.mjs": typeof import("resource://testing-common/ipprotection/IPPGpiAuthProvider.sys.mjs");
"resource://testing-common/services/common/logging.sys.mjs": typeof import("resource://testing-common/services/common/logging.sys.mjs");
"resource://testing-common/services/sync/fakeservices.sys.mjs": typeof import("resource://testing-common/services/sync/fakeservices.sys.mjs");
"resource://testing-common/services/sync/fxa_utils.sys.mjs": typeof import("resource://testing-common/services/sync/fxa_utils.sys.mjs");

View File

@@ -1,3 +1,6 @@
// 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/.
/**
* NOTE: Do not modify this file by hand.
* Content was generated from xpc.msg and error_list.json.
@@ -671,9 +674,6 @@ interface nsIXPCComponents_Results {
/** The URI is not available for add-ons */
NS_ERROR_HARMFULADDON_URI: 0x805d002e;
/** Save Link As failed to see the headers early enough to choose a filename */
NS_ERROR_SAVE_LINK_AS_TIMEOUT: 0x805d0020;
// Profile manager error codes
/** Flushing the profiles to disk would have overwritten changes made elsewhere. */
@@ -703,11 +703,6 @@ interface nsIXPCComponents_Results {
/** Client initialization attempted before origin has been initialized. */
NS_ERROR_DOM_QM_CLIENT_INIT_ORIGIN_UNINITIALIZED: 0x80730001;
// Codes related to IndexedDB
/** A mutation operation was attempted on a database that did not allow mutations. */
NS_ERROR_DOM_INDEXEDDB_NOT_ALLOWED_ERR: 0x80660006;
}
type nsIXPCComponents_Values =

View File

@@ -1,3 +1,6 @@
// 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/.
/**
* NOTE: Do not modify this file by hand.
* Content was generated from services.json.

View File

@@ -1,3 +1,6 @@
// 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/.
/**
* Gecko generic/specialized adjustments for xpcom and webidl types.
*/

View File

@@ -1,3 +1,6 @@
// 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/.
/**
* NOTE: Do not modify this file by hand.
* Content was generated from source XPCOM .idl files.
@@ -5,7 +8,7 @@
*/
declare global {
// https://searchfox.org/firefox-main/source/toolkit/components/aboutthirdparty/nsIAboutThirdParty.idl
// https://searchfox.org/mozilla-central/source/toolkit/components/aboutthirdparty/nsIAboutThirdParty.idl
interface nsIInstalledApplication extends nsISupports {
readonly name: string;
@@ -28,7 +31,7 @@ declare global {
loadModuleForTesting(aModulePath: string): void;
}
// https://searchfox.org/firefox-main/source/toolkit/components/aboutwindowsmessages/nsIAboutWindowsMessages.idl
// https://searchfox.org/mozilla-central/source/toolkit/components/aboutwindowsmessages/nsIAboutWindowsMessages.idl
interface nsIAboutWindowsMessages extends nsISupports {
getMessages(
@@ -38,7 +41,7 @@ declare global {
): void;
}
// https://searchfox.org/firefox-main/source/toolkit/components/alerts/nsIWindowsAlertsService.idl
// https://searchfox.org/mozilla-central/source/toolkit/components/alerts/nsIWindowsAlertsService.idl
} // global
declare enum nsIWindowsAlertNotification_ImagePlacement {
@@ -68,7 +71,7 @@ declare global {
removeAllNotificationsForInstall(): void;
}
// https://searchfox.org/firefox-main/source/toolkit/mozapps/defaultagent/nsIDefaultAgent.idl
// https://searchfox.org/mozilla-central/source/toolkit/mozapps/defaultagent/nsIDefaultAgent.idl
interface nsIDefaultAgent extends nsISupports {
registerTask(aUniqueToken: string): void;
@@ -102,7 +105,7 @@ declare global {
agentDisabled(): boolean;
}
// https://searchfox.org/firefox-main/source/toolkit/mozapps/defaultagent/nsIWindowsMutex.idl
// https://searchfox.org/mozilla-central/source/toolkit/mozapps/defaultagent/nsIWindowsMutex.idl
interface nsIWindowsMutex extends nsISupports {
tryLock(): void;
@@ -114,15 +117,15 @@ declare global {
createMutex(aName: string): nsIWindowsMutex;
}
// https://searchfox.org/firefox-main/source/dom/geolocation/nsIGeolocationUIUtilsWin.idl
// https://searchfox.org/mozilla-central/source/dom/geolocation/nsIGeolocationUIUtilsWin.idl
interface nsIGeolocationUIUtilsWin extends nsISupports {
dismissPrompts(aBC: BrowsingContext): void;
}
// https://searchfox.org/firefox-main/source/netwerk/socket/nsINamedPipeService.idl
// https://searchfox.org/mozilla-central/source/netwerk/socket/nsINamedPipeService.idl
// https://searchfox.org/firefox-main/source/browser/components/shell/nsIWindowsShellService.idl
// https://searchfox.org/mozilla-central/source/browser/components/shell/nsIWindowsShellService.idl
} // global
declare enum nsIWindowsShellService_LaunchOnLoginEnabledEnumerator {
@@ -182,7 +185,7 @@ declare global {
queryCurrentDefaultHandlerFor(aFileExtensionOrProtocol: string): string;
}
// https://searchfox.org/firefox-main/source/toolkit/components/taskscheduler/nsIWinTaskSchedulerService.idl
// https://searchfox.org/mozilla-central/source/toolkit/components/taskscheduler/nsIWinTaskSchedulerService.idl
interface nsIWinTaskSchedulerService extends nsISupports {
registerTask(
@@ -200,7 +203,7 @@ declare global {
deleteFolder(aParentFolderName: string, aSubFolderName: string): void;
}
// https://searchfox.org/firefox-main/source/widget/nsIJumpListBuilder.idl
// https://searchfox.org/mozilla-central/source/widget/nsIJumpListBuilder.idl
interface nsIJumpListBuilder extends nsISupports {
obtainAndCacheFavicon(faviconURL: nsIURI): string;
@@ -215,9 +218,9 @@ declare global {
clearJumpList(): Promise<any>;
}
// https://searchfox.org/firefox-main/source/widget/nsIPrintSettingsWin.idl
// https://searchfox.org/mozilla-central/source/widget/nsIPrintSettingsWin.idl
// https://searchfox.org/firefox-main/source/widget/nsITaskbarOverlayIconController.idl
// https://searchfox.org/mozilla-central/source/widget/nsITaskbarOverlayIconController.idl
interface nsITaskbarOverlayIconController extends nsISupports {
setOverlayIcon(
@@ -227,7 +230,7 @@ declare global {
): void;
}
// https://searchfox.org/firefox-main/source/widget/nsITaskbarPreview.idl
// https://searchfox.org/mozilla-central/source/widget/nsITaskbarPreview.idl
interface nsITaskbarPreview extends nsISupports {
controller: nsITaskbarPreviewController;
@@ -237,7 +240,7 @@ declare global {
invalidate(): void;
}
// https://searchfox.org/firefox-main/source/widget/nsITaskbarPreviewButton.idl
// https://searchfox.org/mozilla-central/source/widget/nsITaskbarPreviewButton.idl
interface nsITaskbarPreviewButton extends nsISupports {
tooltip: string;
@@ -248,7 +251,7 @@ declare global {
visible: boolean;
}
// https://searchfox.org/firefox-main/source/widget/nsITaskbarPreviewController.idl
// https://searchfox.org/mozilla-central/source/widget/nsITaskbarPreviewController.idl
type nsITaskbarPreviewCallback = Callable<{
done(aCanvas: nsISupports, aDrawBorder: boolean): void;
@@ -269,7 +272,7 @@ declare global {
onClick(button: nsITaskbarPreviewButton): void;
}
// https://searchfox.org/firefox-main/source/widget/nsITaskbarProgress.idl
// https://searchfox.org/mozilla-central/source/widget/nsITaskbarProgress.idl
interface nsITaskbarProgress extends nsISupports {
readonly STATE_NO_PROGRESS?: 0;
@@ -285,7 +288,7 @@ declare global {
): void;
}
// https://searchfox.org/firefox-main/source/widget/nsITaskbarTabPreview.idl
// https://searchfox.org/mozilla-central/source/widget/nsITaskbarTabPreview.idl
interface nsITaskbarTabPreview extends nsITaskbarPreview {
title: string;
@@ -293,7 +296,7 @@ declare global {
move(aNext: nsITaskbarTabPreview): void;
}
// https://searchfox.org/firefox-main/source/widget/nsITaskbarWindowPreview.idl
// https://searchfox.org/mozilla-central/source/widget/nsITaskbarWindowPreview.idl
interface nsITaskbarWindowPreview extends nsITaskbarPreview {
readonly NUM_TOOLBAR_BUTTONS?: 7;
@@ -302,7 +305,7 @@ declare global {
enableCustomDrawing: boolean;
}
// https://searchfox.org/firefox-main/source/widget/nsIWinTaskbar.idl
// https://searchfox.org/mozilla-central/source/widget/nsIWinTaskbar.idl
interface nsIWinTaskbar extends nsISupports {
readonly available: boolean;
@@ -322,7 +325,7 @@ declare global {
setGroupIdForWindow(aParent: mozIDOMWindow, aIdentifier: string): void;
}
// https://searchfox.org/firefox-main/source/widget/nsIWindowsUIUtils.idl
// https://searchfox.org/mozilla-central/source/widget/nsIWindowsUIUtils.idl
interface nsIWindowsUIUtils extends nsISupports {
readonly systemSmallIconSize: i32;
@@ -343,7 +346,7 @@ declare global {
shareUrl(urlToShare: string, shareTitle: string): void;
}
// https://searchfox.org/firefox-main/source/toolkit/system/windowsPackageManager/nsIWindowsPackageManager.idl
// https://searchfox.org/mozilla-central/source/toolkit/system/windowsPackageManager/nsIWindowsPackageManager.idl
interface nsIWindowsPackageManager extends nsISupports {
findUserInstalledPackages(prefix: string[]): string[];
@@ -351,7 +354,7 @@ declare global {
campaignId(): Promise<any>;
}
// https://searchfox.org/firefox-main/source/xpcom/ds/nsIWindowsRegKey.idl
// https://searchfox.org/mozilla-central/source/xpcom/ds/nsIWindowsRegKey.idl
interface nsIWindowsRegKey extends nsISupports {
readonly ROOT_KEY_CLASSES_ROOT?: 2147483648;
@@ -398,7 +401,7 @@ declare global {
writeBinaryValue(name: string, data: string): void;
}
// https://searchfox.org/firefox-main/source/toolkit/xre/nsIWinAppHelper.idl
// https://searchfox.org/mozilla-central/source/toolkit/xre/nsIWinAppHelper.idl
interface nsIWinAppHelper extends nsISupports {
readonly userCanElevate: boolean;

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