Compare commits

..

18 Commits

Author SHA1 Message Date
mr. m
ddad0cdc77 gh-14651: Change event listeners to not be inlined (gh-14700) 2026-07-24 19:36:35 +02:00
mr. m
797ff70b25 gh-14651: Start uploading windows binaries into release tags (gh-14698) 2026-07-24 14:08:22 +02:00
mr. m
0af54cad95 gh-14651: Start using compressed tars for release (gh-14689) 2026-07-23 17:31:11 +02:00
mr. m
d2068cd814 no-bug: Bump version (gh-14688) 2026-07-23 15:34:56 +02:00
mr. m
e3d7aaa66d Revert "gh-14651: Changed zip builds to use tar" (gh-14681) 2026-07-22 11:25:27 +02:00
mr. m
cd4c36732a gh-14651: Properly expand tar files for PGO builds (gh-14677) 2026-07-22 01:00:36 +02:00
mr. m
c3e1160a54 gh-14651: Changed zip builds to use tar (gh-14675) 2026-07-21 21:20:14 +02:00
mr. m
c874635c7e Revert "gh-14470: Add space and container sync (gh-14471)"
This reverts commit 647e219639.
2026-07-21 19:44:45 +02:00
mr. m
0ab979246a gh-14651: Fixed build failures due to wrong ZIP names (gh-14673) 2026-07-21 16:58:17 +02:00
mr. m
b4563ae65b gh-14651: Sync upstream Firefox to version 153.0 (gh-14652) 2026-07-21 14:47:07 +02:00
Ashvin Jangid
e21e5ed16d gh-14461: Fix boost size override not persisting (gh-14664) 2026-07-21 01:11:54 +02:00
Andrey Bochkarev
1b41af52d3 gh-14428: Resolve wrong essentials padding when cleanup (gh-14642) 2026-07-19 15:20:20 +02:00
mr. m
55c224bea7 gh-14424: Prevent startup hangs if no sibling exists (gh-14639) 2026-07-18 19:23:15 +02:00
mr. m
323a3ab1ff gh-14600: Fixed external links not being routed properly (gh-14637) 2026-07-18 15:31:46 +02:00
mr. m
278580ea43 gh-14616: Fixed add to essentials being disabled (gh-14631) 2026-07-17 17:08:15 +02:00
mr. m
a791c5dadc gh-14619: Fixed split view drag opening new windows (gh-14621) 2026-07-16 22:32:30 +02:00
mr. m
247cde9c09 gh-14618: Fixed workspaces not being able to be removed (gh-14620) 2026-07-16 22:28:09 +02:00
mr. m
425f0ae1c3 gh-14605: Bump release versions (gh-14608) 2026-07-16 10:02:53 +02:00
92 changed files with 3417 additions and 2861 deletions

View File

@@ -500,10 +500,24 @@ jobs:
path: updates-server path: updates-server
token: ${{ secrets.DEPLOY_KEY }} token: ${{ secrets.DEPLOY_KEY }}
- name: Download object files - name: Download signed windows objects
if: ${{ inputs.update_branch == 'release' }} if: ${{ inputs.update_branch == 'release' }}
env:
GH_TOKEN: ${{ secrets.DEPLOY_KEY }}
run: | run: |
git clone https://github.com/zen-browser/windows-binaries.git .github/workflows/object --depth 1 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
- name: Sign MAR files - name: Sign MAR files
env: env:
@@ -616,6 +630,17 @@ jobs:
./.github/workflows/object/windows-x64-signed-arm64/zen.installer-arm64.exe ./.github/workflows/object/windows-x64-signed-arm64/zen.installer-arm64.exe
./zen.macos-universal.dmg/* ./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: prepare-flatpak:
if: ${{ inputs.create_release && inputs.update_branch == 'release' }} if: ${{ inputs.create_release && inputs.update_branch == 'release' }}
permissions: write-all permissions: write-all

View File

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

View File

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

View File

@@ -1 +1 @@
1.90 1.94.1

View File

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

View File

@@ -1 +1 @@
e7fbb446077536139cdd78b6a0386a97237af20f b1d3fe8f65751e6d695fa9ef94b11ad81e70dac1

View File

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

View File

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

View File

@@ -1,12 +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/.
- name: services.sync.engine.spaces
value: true
condition: "@IS_TWILIGHT@"
- name: services.sync.engine.spaces
value: false
locked: true
condition: "!@IS_TWILIGHT@"

View File

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

View File

@@ -1,5 +1,5 @@
diff --git a/.stylelintrc.js b/.stylelintrc.js diff --git a/.stylelintrc.js b/.stylelintrc.js
index 3c9fecf731126fdbf900d1bdcd3635dd31ed53ef..c3a210b8153e9699c6cbdc0d568bb72433976b2c 100644 index b484bf6600a7e1b8ad2aed8c8b7fe5e84cc3d023..f89712e2c13dfa0bcb48e55cd3872c67f5c98dad 100644
--- a/.stylelintrc.js --- a/.stylelintrc.js
+++ b/.stylelintrc.js +++ b/.stylelintrc.js
@@ -67,7 +67,7 @@ module.exports = { @@ -67,7 +67,7 @@ module.exports = {
@@ -11,9 +11,9 @@ index 3c9fecf731126fdbf900d1bdcd3635dd31ed53ef..c3a210b8153e9699c6cbdc0d568bb724
{ {
ignore: ["blockless-at-rules"], ignore: ["blockless-at-rules"],
}, },
@@ -274,7 +274,7 @@ module.exports = { @@ -280,7 +280,7 @@ module.exports = {
// Remove this line setting `csscontrols/use-logical` to null after implementing fixes "media-query-no-invalid": null,
"csstools/use-logical": null, "stylelint-plugin-mozilla/media-query-no-invalid": true,
"stylelint-plugin-mozilla/no-base-design-tokens": true, "stylelint-plugin-mozilla/no-base-design-tokens": true,
- "stylelint-plugin-mozilla/use-design-tokens": true, - "stylelint-plugin-mozilla/use-design-tokens": true,
+ "stylelint-plugin-mozilla/use-design-tokens": false, + "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 diff --git a/browser/base/content/browser-box.inc.xhtml b/browser/base/content/browser-box.inc.xhtml
index 31cd4f927c273573b38021f84417101c57377902..f293e1c61d3b7a80b7dc472d927893f0439d6af9 100644 index 4a16fe93daeefb88af024c1dac05bc1f518c3fcb..a420768e4047937c8becefb69c1017e13fc12231 100644
--- a/browser/base/content/browser-box.inc.xhtml --- a/browser/base/content/browser-box.inc.xhtml
+++ b/browser/base/content/browser-box.inc.xhtml +++ b/browser/base/content/browser-box.inc.xhtml
@@ -3,12 +3,22 @@ @@ -3,12 +3,22 @@
@@ -10,7 +10,7 @@ index 31cd4f927c273573b38021f84417101c57377902..f293e1c61d3b7a80b7dc472d927893f0
+ <html:div id="zen-browser-background" class="zen-browser-generic-background"> + <html:div id="zen-browser-background" class="zen-browser-generic-background">
+ <html:div class="zen-browser-grain" /> + <html:div class="zen-browser-grain" />
+ </html:div> + </html:div>
<box context="sidebar-context-menu" id="sidebar-main" class="chrome-block" hidden="true"> <box context="sidebar-context-menu" id="sidebar-container" class="chrome-block" hidden="true">
<html:sidebar-main flex="1"> <html:sidebar-main flex="1">
<box id="vertical-tabs" slot="tabstrip" customizable="true" contextmenu="toolbar-context-menu"></box> <box id="vertical-tabs" slot="tabstrip" customizable="true" contextmenu="toolbar-context-menu"></box>
</html:sidebar-main> </html:sidebar-main>

View File

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

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 diff --git a/browser/components/aiwindow/ui/modules/AIWindow.sys.mjs b/browser/components/aiwindow/ui/modules/AIWindow.sys.mjs
index f6f1dd1f6b4d21d27e39b48bb7a57871ad5d019d..bf743120cf9f137cbe06d05896f706fb3d5b9435 100644 index 88c3545431cf1a300d968c296d9b171871b15fe5..754cd644f2e7b82db40d5c06618ac1764424484c 100644
--- a/browser/components/aiwindow/ui/modules/AIWindow.sys.mjs --- a/browser/components/aiwindow/ui/modules/AIWindow.sys.mjs
+++ b/browser/components/aiwindow/ui/modules/AIWindow.sys.mjs +++ b/browser/components/aiwindow/ui/modules/AIWindow.sys.mjs
@@ -287,6 +287,7 @@ export const AIWindow = { @@ -308,6 +308,7 @@ export const AIWindow = {
}, },
_updateToolbarButtonPositions(win, { isToggling = false } = {}) { _updateToolbarButtonPositions(win) {
+ return; + return;
const modeSwitcherButton = win.document.getElementById("ai-window-toggle"); const modeSwitcherButton = win.document.getElementById("ai-window-toggle");
const hamburgerMenu = win.document.getElementById("PanelUI-button"); 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 diff --git a/browser/components/extensions/parent/ext-browser.js b/browser/components/extensions/parent/ext-browser.js
index aca5a23deda6b0f2316b0e108cff20ffd7feda67..a06c90937f97a4994b0807b54984089dbe627a71 100644 index 91adc6bc3649af47745818e6f9d00cbbdffc35a5..e221b077dbfbe20c8696732f003bd5809d761a02 100644
--- a/browser/components/extensions/parent/ext-browser.js --- a/browser/components/extensions/parent/ext-browser.js
+++ b/browser/components/extensions/parent/ext-browser.js +++ b/browser/components/extensions/parent/ext-browser.js
@@ -352,6 +352,7 @@ class TabTracker extends TabTrackerBase { @@ -362,6 +362,7 @@ class TabTracker extends TabTrackerBase {
} }
getId(nativeTab) { getId(nativeTab) {
@@ -10,15 +10,15 @@ index aca5a23deda6b0f2316b0e108cff20ffd7feda67..a06c90937f97a4994b0807b54984089d
let id = this._tabs.get(nativeTab); let id = this._tabs.get(nativeTab);
if (id) { if (id) {
return id; return id;
@@ -386,6 +387,7 @@ class TabTracker extends TabTrackerBase { @@ -395,6 +396,7 @@ class TabTracker extends TabTrackerBase {
if (nativeTab.documentGlobal.closed) { if (nativeTab.documentGlobal.closed) {
throw new Error("Cannot attach ID to a tab in a closed window."); throw new Error("Cannot attach ID to a tab in a closed window.");
} }
+ if (nativeTab.hasAttribute("zen-empty-tab")) return; + if (nativeTab.hasAttribute("zen-empty-tab")) return;
this._tabs.set(nativeTab, id); this._tabs.set(nativeTab, id);
if (nativeTab.linkedBrowser) { this._tabIds.set(id, nativeTab);
@@ -1276,6 +1278,10 @@ class TabManager extends TabManagerBase { @@ -1262,6 +1264,10 @@ class TabManager extends TabManagerBase {
} }
canAccessTab(nativeTab) { 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 diff --git a/browser/components/extensions/parent/ext-tabs.js b/browser/components/extensions/parent/ext-tabs.js
index 8f5fdecc9394d42a1460a1b73fb8c4e92f63c41e..82c03e234289c7b00f49f73854be45fb95fb91d7 100644 index f342748d4b680a5de3a8b7c90df79f7c380b9e1c..65091cf370e00a580ae2cb1fad9cde76f10c8bd9 100644
--- a/browser/components/extensions/parent/ext-tabs.js --- a/browser/components/extensions/parent/ext-tabs.js
+++ b/browser/components/extensions/parent/ext-tabs.js +++ b/browser/components/extensions/parent/ext-tabs.js
@@ -514,6 +514,7 @@ this.tabs = class extends ExtensionAPIPersistent { @@ -438,6 +438,7 @@ this.tabs = class extends ExtensionAPIPersistent {
} }
let tab = tabManager.getWrapper(updatedTab); let tab = tabManager.getWrapper(updatedTab);
@@ -10,11 +10,11 @@ index 8f5fdecc9394d42a1460a1b73fb8c4e92f63c41e..82c03e234289c7b00f49f73854be45fb
let changeInfo = {}; let changeInfo = {};
for (let prop of needed) { for (let prop of needed) {
@@ -883,6 +884,7 @@ this.tabs = class extends ExtensionAPIPersistent { @@ -806,6 +807,7 @@ this.tabs = class extends ExtensionAPIPersistent {
}); });
} }
+ window.gZenCompactModeManager._nextTimeWillBeActive = active; + window.gZenCompactModeManager._nextTimeWillBeActive = active;
let nativeTab = window.gBrowser.addTab(url, options); let nativeTab = window.gBrowser.addTab(url, options);
tabTracker.addTabReadyBlocker(nativeTab);
if (active) {

View File

@@ -1,13 +0,0 @@
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 diff --git a/browser/components/places/PlacesUIUtils.sys.mjs b/browser/components/places/PlacesUIUtils.sys.mjs
index 7c2786cc1be512ddfc165fb8f6514131ac033040..5846aff53030ef0fad2f87d017ba3713889b474d 100644 index 7c11a2004c87aa6f0c61cf05ca522c7471c7be71..0f92f9925221cadbd258402f1b6a86a71fdb42e9 100644
--- a/browser/components/places/PlacesUIUtils.sys.mjs --- a/browser/components/places/PlacesUIUtils.sys.mjs
+++ b/browser/components/places/PlacesUIUtils.sys.mjs +++ b/browser/components/places/PlacesUIUtils.sys.mjs
@@ -61,6 +61,7 @@ class BookmarkState { @@ -61,6 +61,7 @@ class BookmarkState {
@@ -157,12 +157,3 @@ index 7c2786cc1be512ddfc165fb8f6514131ac033040..5846aff53030ef0fad2f87d017ba3713
/** /**
* Append transactions to update tags by given information. * 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.passwords", type: "bool" },
{ id: "services.sync.engine.addresses", type: "bool" }, { id: "services.sync.engine.addresses", type: "bool" },
{ id: "services.sync.engine.creditcards", 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 = { let gSyncChooseWhatToSync = {

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,15 +0,0 @@
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

@@ -1,28 +0,0 @@
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, + source: this.RESULT_SOURCE.WORKSPACES,
+ restrict: lazy.UrlbarTokenizer.RESTRICT.WORKSPACE, + restrict: lazy.UrlbarShared.RESTRICT_TOKENS.WORKSPACE,
+ icon: "chrome://browser/skin/zen-icons/selectable/layers.svg", + icon: "chrome://browser/skin/zen-icons/selectable/layers.svg",
+ pref: "shortcuts.workspaces", + pref: "shortcuts.workspaces",
+ telemetryLabel: "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 diff --git a/browser/components/urlbar/UrlbarValueFormatter.sys.mjs b/browser/components/urlbar/UrlbarValueFormatter.sys.mjs
index 8def83509f097ba034b9d94ae00d2ee474ec2d30..ebdb84b9af928b132b848bd4c5bb506d813e5e06 100644 index 7ccffa60be42ba5e554b0e91bc831c56c24dfb42..ca5d6f983490f6cfc392c92f3570a5fb1bb3c43d 100644
--- a/browser/components/urlbar/UrlbarValueFormatter.sys.mjs --- a/browser/components/urlbar/UrlbarValueFormatter.sys.mjs
+++ b/browser/components/urlbar/UrlbarValueFormatter.sys.mjs +++ b/browser/components/urlbar/UrlbarValueFormatter.sys.mjs
@@ -77,7 +77,7 @@ export class UrlbarValueFormatter { @@ -77,7 +77,7 @@ export class UrlbarValueFormatter {
@@ -11,7 +11,7 @@ index 8def83509f097ba034b9d94ae00d2ee474ec2d30..ebdb84b9af928b132b848bd4c5bb506d
}); });
} }
@@ -105,6 +105,18 @@ export class UrlbarValueFormatter { @@ -126,6 +126,18 @@ export class UrlbarValueFormatter {
} }
#ensureFormattedHostVisible(urlMetaData) { #ensureFormattedHostVisible(urlMetaData) {
@@ -30,7 +30,7 @@ index 8def83509f097ba034b9d94ae00d2ee474ec2d30..ebdb84b9af928b132b848bd4c5bb506d
// Make sure the host is always visible. Since it is aligned on // Make sure the host is always visible. Since it is aligned on
// the first strong directional character, we set scrollLeft // the first strong directional character, we set scrollLeft
// appropriately to ensure the domain stays visible in case of an // appropriately to ensure the domain stays visible in case of an
@@ -381,7 +393,7 @@ export class UrlbarValueFormatter { @@ -403,7 +415,7 @@ export class UrlbarValueFormatter {
* @returns {boolean} * @returns {boolean}
* True if formatting was applied and false if not. * True if formatting was applied and false if not.
*/ */
@@ -39,11 +39,15 @@ index 8def83509f097ba034b9d94ae00d2ee474ec2d30..ebdb84b9af928b132b848bd4c5bb506d
let urlMetaData = this.#getUrlMetaData(); let urlMetaData = this.#getUrlMetaData();
if (!urlMetaData) { if (!urlMetaData) {
return false; return false;
@@ -650,6 +662,7 @@ export class UrlbarValueFormatter { @@ -688,9 +700,10 @@ export class UrlbarValueFormatter {
this.#window.requestAnimationFrame(() => { ) {
if (instance == this.#resizeInstance) { // The host range is no longer valid.
this.#ensureFormattedHostVisible(); this.#removeURLFormat();
+ this._formatURL(); - this.#formatURL();
+ this._formatURL();
} else {
this.#ensureFormattedHostVisible();
+ this._formatURL();
}
} }
}); });
}, 100);

View File

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

View File

@@ -0,0 +1,15 @@
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

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

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

View File

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

View File

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

View File

@@ -1,17 +1,19 @@
diff --git a/browser/themes/shared/urlbar-searchbar.css b/browser/themes/shared/urlbar-searchbar.css diff --git a/browser/themes/shared/urlbar-searchbar.css b/browser/themes/shared/urlbar-searchbar.css
index cbd074b9bacfbf7cc82a67ad586ebc31c4d85970..993c61ba389cb9d912b2cebee9d71bec772e3a7d 100644 index cc595de7e3839f7e688122552bca95f9f9ad3988..da4b1e1b5013d7a1a9af3d45d94db7194a1826f7 100644
--- a/browser/themes/shared/urlbar-searchbar.css --- a/browser/themes/shared/urlbar-searchbar.css
+++ b/browser/themes/shared/urlbar-searchbar.css +++ b/browser/themes/shared/urlbar-searchbar.css
@@ -12,7 +12,7 @@ @@ -19,8 +19,8 @@
/* 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) { @media (max-width: 770px) {
@@ -55,7 +55,7 @@ toolbar[inactive="true"] .urlbar, --urlbar-container-min-width: 240px;
@@ -114,7 +114,7 @@ toolbar[inactive="true"] .urlbar,
.urlbar:not([usertyping]) > .urlbar-input-container > .urlbar-go-button, .urlbar:not([usertyping]) > .urlbar-input-container > .urlbar-go-button,
.urlbar:not(#searchbar-new, [focused]) > .urlbar-input-container > .urlbar-go-button, .urlbar:not(#searchbar-new, [focused]) > .urlbar-input-container > .urlbar-go-button,
#urlbar-revert-button-container { #urlbar-revert-button-container {
@@ -20,7 +22,7 @@ index cbd074b9bacfbf7cc82a67ad586ebc31c4d85970..993c61ba389cb9d912b2cebee9d71bec
} }
/* Document Picture-in-Picture API window */ /* Document Picture-in-Picture API window */
@@ -205,6 +205,10 @@ toolbar[inactive="true"] .urlbar, @@ -350,6 +350,10 @@ toolbar[inactive="true"] .urlbar,
mask-image: linear-gradient(to right, transparent var(--urlbar-scheme-size), black calc(var(--urlbar-scheme-size) + 3ch)); mask-image: linear-gradient(to right, transparent var(--urlbar-scheme-size), black calc(var(--urlbar-scheme-size) + 3ch));
} }
@@ -28,10 +30,10 @@ index cbd074b9bacfbf7cc82a67ad586ebc31c4d85970..993c61ba389cb9d912b2cebee9d71bec
+ mask-image: linear-gradient(to right, transparent, black 3ch, black calc(100% - 3ch), transparent); + mask-image: linear-gradient(to right, transparent, black 3ch, black calc(100% - 3ch), transparent);
+ } + }
+ +
/* stylelint-disable-next-line media-query-no-invalid */ &::selection {
@media -moz-pref("browser.nova.enabled") { border-radius: var(--urlbar-selection-border-radius);
&::selection { }
@@ -429,10 +433,14 @@ toolbar[inactive="true"] .urlbar, @@ -464,10 +468,14 @@ toolbar[inactive="true"] .urlbar,
.urlbar[breakout][breakout-extend] { .urlbar[breakout][breakout-extend] {
height: auto; height: auto;
@@ -44,5 +46,5 @@ index cbd074b9bacfbf7cc82a67ad586ebc31c4d85970..993c61ba389cb9d912b2cebee9d71bec
> .urlbar-input-container { > .urlbar-input-container {
+ align-items: center; + align-items: center;
height: var(--urlbar-container-height); height: var(--urlbar-container-height);
padding-block: calc((var(--urlbar-container-height) - var(--urlbar-height)) / 2 + var(--urlbar-container-padding)); 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-container-padding)); padding-inline: calc(var(--urlbar-margin-inline) + var(--urlbar-input-container-padding));

View File

@@ -1,13 +0,0 @@
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

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

View File

@@ -1,5 +1,5 @@
diff --git a/dom/chrome-webidl/MediaController.webidl b/dom/chrome-webidl/MediaController.webidl diff --git a/dom/chrome-webidl/MediaController.webidl b/dom/chrome-webidl/MediaController.webidl
index 6063e86e747dac87aafc865af95800daef2a5b9d..7fc4e72ee73a16b9ec2c1b9d11d926246fb7f7b6 100644 index 790bc66a31253a861b21658e67c83796ae939298..0fb7e6cfbb1d1d35aeceb8d7b903cd86bf64403c 100644
--- a/dom/chrome-webidl/MediaController.webidl --- a/dom/chrome-webidl/MediaController.webidl
+++ b/dom/chrome-webidl/MediaController.webidl +++ b/dom/chrome-webidl/MediaController.webidl
@@ -23,6 +23,12 @@ enum MediaControlKey { @@ -23,6 +23,12 @@ enum MediaControlKey {
@@ -15,12 +15,15 @@ index 6063e86e747dac87aafc865af95800daef2a5b9d..7fc4e72ee73a16b9ec2c1b9d11d92624
/** /**
* MediaController is used to control media playback for a tab, and each tab * 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 * would only have one media controller, which can be accessed from the
@@ -36,10 +42,14 @@ interface MediaController : EventTarget { @@ -36,6 +42,7 @@ interface MediaController : EventTarget {
readonly attribute boolean isPlaying; readonly attribute boolean isPlaying;
readonly attribute boolean isAnyMediaBeingControlled; readonly attribute boolean isAnyMediaBeingControlled;
readonly attribute MediaSessionPlaybackState playbackState; readonly attribute MediaSessionPlaybackState playbackState;
+ readonly attribute boolean isBeingUsedInPIPModeOrFullscreen; + 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] [Throws]
MediaMetadataInit getMetadata(); MediaMetadataInit getMetadata();

View File

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

View File

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

View File

@@ -1,167 +0,0 @@
diff --git a/gfx/webrender_bindings/WebRenderAPI.cpp b/gfx/webrender_bindings/WebRenderAPI.cpp
--- a/gfx/webrender_bindings/WebRenderAPI.cpp
+++ b/gfx/webrender_bindings/WebRenderAPI.cpp
@@ -298,11 +298,13 @@
panic_on_gl_error, picTileWidth, picTileHeight,
gfx::gfxVars::WebRenderRequiresHardwareDriver(),
StaticPrefs::gfx_webrender_low_quality_pinch_zoom_AtStartup(),
StaticPrefs::gfx_webrender_max_shared_surface_size_AtStartup(),
StaticPrefs::gfx_webrender_enable_subpixel_aa_AtStartup(),
- compositor->ShouldUseLayerCompositor())) {
+ compositor->ShouldUseLayerCompositor(),
+ StaticPrefs::
+ gfx_webrender_opaque_backdrop_fallback_AtStartup())) {
// wr_window_new puts a message into gfxCriticalNote if it returns
// false
MOZ_ASSERT(errorMessage);
error.AssignASCII(errorMessage);
wr_api_free_error_msg(errorMessage);
diff --git a/gfx/webrender_bindings/src/bindings.rs b/gfx/webrender_bindings/src/bindings.rs
--- a/gfx/webrender_bindings/src/bindings.rs
+++ b/gfx/webrender_bindings/src/bindings.rs
@@ -1998,10 +1998,11 @@
reject_software_rasterizer: bool,
low_quality_pinch_zoom: bool,
max_shared_surface_size: i32,
enable_subpixel_aa: bool,
use_layer_compositor: bool,
+ opaque_backdrop_fallback: bool,
) -> bool {
assert!(unsafe { is_in_render_thread() });
// Ensure the WR profiler callbacks are hooked up to the Gecko profiler.
set_profiler_hooks(Some(&PROFILER_HOOKS));
@@ -2164,10 +2165,11 @@
texture_cache_config,
reject_software_rasterizer,
low_quality_pinch_zoom,
max_shared_surface_size,
enable_dithering,
+ opaque_backdrop_fallback,
..Default::default()
};
let window_size = DeviceIntSize::new(window_width, window_height);
let notifier = Box::new(CppNotifier { window_id });
diff --git a/gfx/wr/webrender/src/device/gl.rs b/gfx/wr/webrender/src/device/gl.rs
--- a/gfx/wr/webrender/src/device/gl.rs
+++ b/gfx/wr/webrender/src/device/gl.rs
@@ -3982,10 +3982,14 @@
pub fn disable_color_write(&self) {
self.gl.color_mask(false, false, false, false);
}
+ pub fn set_color_mask(&self, r: bool, g: bool, b: bool, a: bool) {
+ self.gl.color_mask(r, g, b, a);
+ }
+
pub fn set_blend(&mut self, enable: bool) {
if enable {
self.gl.enable(gl::BLEND);
} else {
self.gl.disable(gl::BLEND);
diff --git a/gfx/wr/webrender/src/renderer/init.rs b/gfx/wr/webrender/src/renderer/init.rs
--- a/gfx/wr/webrender/src/renderer/init.rs
+++ b/gfx/wr/webrender/src/renderer/init.rs
@@ -204,6 +204,8 @@
pub low_quality_pinch_zoom: bool,
pub max_shared_surface_size: i32,
/// If true, open a debug socket to listen for remote debugger.
/// Relies on `debugger` cargo feature being enabled.
pub enable_debugger: bool,
+ /// See explanation of `gfx.webrender.opaque-backdrop-fallback`.
+ pub opaque_backdrop_fallback: bool,
}
@@ -277,9 +279,10 @@
enable_instancing: true,
reject_software_rasterizer: false,
low_quality_pinch_zoom: false,
max_shared_surface_size: 2048,
enable_debugger: true,
+ opaque_backdrop_fallback: false,
}
}
}
@@ -802,10 +805,11 @@
allocated_native_surfaces: FastHashSet::default(),
debug_overlay_state: DebugOverlayState::new(),
buffer_damage_tracker: BufferDamageTracker::default(),
max_primitive_instance_count,
enable_instancing: options.enable_instancing,
+ opaque_backdrop_fallback: options.opaque_backdrop_fallback,
consecutive_oom_frames: 0,
target_frame_publish_id: None,
pending_result_msg: None,
layer_compositor_frame_state_in_prev_frame: None,
external_composite_debug_items: Vec::new(),
diff --git a/gfx/wr/webrender/src/renderer/mod.rs b/gfx/wr/webrender/src/renderer/mod.rs
--- a/gfx/wr/webrender/src/renderer/mod.rs
+++ b/gfx/wr/webrender/src/renderer/mod.rs
@@ -867,10 +867,12 @@
buffer_damage_tracker: BufferDamageTracker,
max_primitive_instance_count: usize,
enable_instancing: bool,
+ opaque_backdrop_fallback: bool,
+
/// Count consecutive oom frames to detectif we are stuck unable to render
/// in a loop.
consecutive_oom_frames: u32,
/// update() defers processing of ResultMsg, if frame_publish_id of
@@ -2787,18 +2789,29 @@
let read_target = ReadTarget::from_texture(cache_texture);
// Should always be drawing to picture cache tiles or off-screen surface!
debug_assert!(!draw_target.is_default());
let device_to_framebuffer = Scale::new(1i32);
+ let dest_fb_rect = dest * device_to_framebuffer;
self.device.blit_render_target(
read_target,
src * device_to_framebuffer,
draw_target,
- dest * device_to_framebuffer,
+ dest_fb_rect,
TextureFilter::Linear,
);
+
+ if self.opaque_backdrop_fallback {
+ self.device.set_color_mask(false, false, false, true);
+ self.device.clear_target(
+ Some([0.0, 0.0, 0.0, 1.0]),
+ None,
+ Some(dest_fb_rect),
+ );
+ self.device.set_color_mask(true, true, true, true);
+ }
}
}
}
fn draw_picture_cache_target(
diff --git a/modules/libpref/init/StaticPrefList.yaml b/modules/libpref/init/StaticPrefList.yaml
--- a/modules/libpref/init/StaticPrefList.yaml
+++ b/modules/libpref/init/StaticPrefList.yaml
@@ -8439,10 +8439,17 @@
#else
value: false
#endif
mirror: once
+# Make backdrop-filter treat its captured backdrop as if it had been
+# composited over an opaque-black background. (See bug 2036640)
+- name: gfx.webrender.opaque-backdrop-fallback
+ type: bool
+ value: true
+ mirror: once
+
# Disable wait of GPU execution completion
- name: gfx.webrender.wait-gpu-finished.disabled
type: bool
value: false
mirror: once

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,5 +1,5 @@
diff --git a/layout/svg/SVGImageContext.h b/layout/svg/SVGImageContext.h diff --git a/layout/svg/SVGImageContext.h b/layout/svg/SVGImageContext.h
index 159d9cbbd0711076ee6c2a71a3da04bd92a0102c..daefc40590c4d7d7fac9db25c6ec4ba2424dded5 100644 index b1f811989697966e30859610f4fc07579d0385ab..f6f4cd5a45fc49b416111d980fab4e612788903e 100644
--- a/layout/svg/SVGImageContext.h --- a/layout/svg/SVGImageContext.h
+++ b/layout/svg/SVGImageContext.h +++ b/layout/svg/SVGImageContext.h
@@ -6,6 +6,7 @@ @@ -6,6 +6,7 @@
@@ -44,12 +44,12 @@ index 159d9cbbd0711076ee6c2a71a3da04bd92a0102c..daefc40590c4d7d7fac9db25c6ec4ba2
const Maybe<SVGPreserveAspectRatio>& GetPreserveAspectRatio() const { const Maybe<SVGPreserveAspectRatio>& GetPreserveAspectRatio() const {
return mPreserveAspectRatio; return mPreserveAspectRatio;
} }
@@ -107,7 +128,11 @@ class SVGImageContext { @@ -116,7 +137,11 @@ class SVGImageContext {
return contextPaintIsEqual && mViewportSize == aOther.mViewportSize && return contextPaintIsEqual && mViewportSize == aOther.mViewportSize &&
mPreserveAspectRatio == aOther.mPreserveAspectRatio && mPreserveAspectRatio == aOther.mPreserveAspectRatio &&
- mColorScheme == aOther.mColorScheme; mColorScheme == aOther.mColorScheme &&
+ mColorScheme == aOther.mColorScheme && - mLinkParameters == aOther.mLinkParameters;
+ mLinkParameters == aOther.mLinkParameters &&
+ mZenBoostsAccent == aOther.mZenBoostsAccent && + mZenBoostsAccent == aOther.mZenBoostsAccent &&
+ mZenBoostsComplementaryRotation == + mZenBoostsComplementaryRotation ==
+ aOther.mZenBoostsComplementaryRotation && + aOther.mZenBoostsComplementaryRotation &&
@@ -57,21 +57,20 @@ index 159d9cbbd0711076ee6c2a71a3da04bd92a0102c..daefc40590c4d7d7fac9db25c6ec4ba2
} }
bool operator!=(const SVGImageContext&) const = default; bool operator!=(const SVGImageContext&) const = default;
@@ -119,7 +144,9 @@ class SVGImageContext { @@ -129,7 +154,8 @@ class SVGImageContext {
}
return HashGeneric(hash, mViewportSize.map(HashSize).valueOr(0), return HashGeneric(hash, mViewportSize.map(HashSize).valueOr(0),
mPreserveAspectRatio.map(HashPAR).valueOr(0), mPreserveAspectRatio.map(HashPAR).valueOr(0),
- mColorScheme.map(HashColorScheme).valueOr(0)); mColorScheme.map(HashColorScheme).valueOr(0),
+ mColorScheme.map(HashColorScheme).valueOr(0), - HashLinkParameters(mLinkParameters));
+ mZenBoostsAccent, mZenBoostsComplementaryRotation, + HashLinkParameters(mLinkParameters), mZenBoostsAccent,
+ mZenBoostsInverted); + mZenBoostsComplementaryRotation, mZenBoostsInverted);
} }
private: private:
@@ -138,6 +165,9 @@ class SVGImageContext { @@ -167,6 +193,9 @@ class SVGImageContext {
Maybe<CSSIntSize> mViewportSize;
Maybe<SVGPreserveAspectRatio> mPreserveAspectRatio; Maybe<SVGPreserveAspectRatio> mPreserveAspectRatio;
Maybe<ColorScheme> mColorScheme; Maybe<ColorScheme> mColorScheme;
StyleLinkParameters mLinkParameters;
+ nscolor mZenBoostsAccent = 0; + nscolor mZenBoostsAccent = 0;
+ float mZenBoostsComplementaryRotation = 0.0f; + float mZenBoostsComplementaryRotation = 0.0f;
+ bool mZenBoostsInverted = false; + 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 diff --git a/servo/ports/geckolib/cbindgen.toml b/servo/ports/geckolib/cbindgen.toml
index 17937bd70ead3b86e59b3da8c8d90591ee48e0a2..2bddfd549243ddc387107df00625ea5f38e5c655 100644 index 10c0c702dbad97d5e73d84e2c913a3541380c4dd..2291871e58ae259f3bc3d573eb32e7cb47cc8953 100644
--- a/servo/ports/geckolib/cbindgen.toml --- a/servo/ports/geckolib/cbindgen.toml
+++ b/servo/ports/geckolib/cbindgen.toml +++ b/servo/ports/geckolib/cbindgen.toml
@@ -666,9 +666,9 @@ renaming_overrides_prefixing = true @@ -673,9 +673,9 @@ renaming_overrides_prefixing = true
nscolor CalcColor(const nsIFrame*) const; nscolor CalcColor(const nsIFrame*) const;
/** /**
* Compute the final color, taking into account the foreground color from the * Compute the final color, taking into account the foreground color from the
@@ -14,7 +14,7 @@ index 17937bd70ead3b86e59b3da8c8d90591ee48e0a2..2bddfd549243ddc387107df00625ea5f
/** /**
* Compute the final color, making the argument the foreground color. * Compute the final color, making the argument the foreground color.
*/ */
@@ -691,9 +691,11 @@ renaming_overrides_prefixing = true @@ -698,9 +698,11 @@ renaming_overrides_prefixing = true
/** /**
* Convert this color to an nscolor. The color will be converted to sRGB first * Convert this color to an nscolor. The color will be converted to sRGB first
@@ -27,4 +27,4 @@ index 17937bd70ead3b86e59b3da8c8d90591ee48e0a2..2bddfd549243ddc387107df00625ea5f
+ nscolor ToColor(const nsIFrame*) const; + nscolor ToColor(const nsIFrame*) const;
""" """
"OwnedSlice" = """ "ColorFunction" = """

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

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

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

View File

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

View File

@@ -1,6 +1,3 @@
// 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. * NOTE: Do not modify this file by hand.
* Content was generated by running "mach ts paths". * Content was generated by running "mach ts paths".
@@ -8,6 +5,7 @@
export interface Modules { export interface Modules {
"chrome://browser/content/aboutlogins/aboutLoginsUtils.mjs": typeof import("chrome://browser/content/aboutlogins/aboutLoginsUtils.mjs"); "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/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/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"); "chrome://browser/content/backup/backup-constants.mjs": typeof import("chrome://browser/content/backup/backup-constants.mjs");
@@ -15,28 +13,48 @@ 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/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/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-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/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/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/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/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/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/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-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-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-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/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/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/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/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/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/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://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://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://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/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/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/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/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/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/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"); "chrome://global/content/ml/EmbeddingsGenerator.sys.mjs": typeof import("chrome://global/content/ml/EmbeddingsGenerator.sys.mjs");
@@ -73,6 +91,7 @@ export interface Modules {
"chrome://mochikit/content/tests/SimpleTest/DragTargetParentContext.sys.mjs": typeof import("chrome://mochikit/content/tests/SimpleTest/DragTargetParentContext.sys.mjs"); "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/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/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/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/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"); "chrome://mochitests/content/browser/js/xpconnect/tests/browser/worker_source.mjs": typeof import("chrome://mochitests/content/browser/js/xpconnect/tests/browser/worker_source.mjs");
@@ -113,6 +132,7 @@ export interface Modules {
"chrome://remote/content/shared/AsyncQueue.sys.mjs": typeof import("chrome://remote/content/shared/AsyncQueue.sys.mjs"); "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/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/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/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/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"); "chrome://remote/content/shared/DOM.sys.mjs": typeof import("chrome://remote/content/shared/DOM.sys.mjs");
@@ -167,7 +187,6 @@ 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/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/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/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/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/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"); "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");
@@ -185,7 +204,9 @@ 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/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/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/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/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/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/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"); "chrome://remote/content/webdriver-bidi/RemoteValue.sys.mjs": typeof import("chrome://remote/content/webdriver-bidi/RemoteValue.sys.mjs");
@@ -224,11 +245,17 @@ export interface Modules {
"moz-src:///browser/components/StartupTelemetry.sys.mjs": typeof import("moz-src:///browser/components/StartupTelemetry.sys.mjs"); "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/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/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/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/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/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/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/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/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"); "moz-src:///browser/components/aiwindow/models/Utils.sys.mjs": typeof import("moz-src:///browser/components/aiwindow/models/Utils.sys.mjs");
@@ -241,19 +268,27 @@ 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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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"); "moz-src:///browser/components/contentanalysis/content/ContentAnalysis.sys.mjs": typeof import("moz-src:///browser/components/contentanalysis/content/ContentAnalysis.sys.mjs");
@@ -265,6 +300,7 @@ 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/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/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/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/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/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"); "moz-src:///browser/components/downloads/DownloadsMacFinderProgress.sys.mjs": typeof import("moz-src:///browser/components/downloads/DownloadsMacFinderProgress.sys.mjs");
@@ -274,25 +310,12 @@ 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/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/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/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/IPPOnboardingMessageHelper.sys.mjs": typeof import("moz-src:///browser/components/ipprotection/IPPOnboardingMessageHelper.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/IPPUsageHelper.sys.mjs": typeof import("moz-src:///browser/components/ipprotection/IPPUsageHelper.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/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/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/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/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/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/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"); "moz-src:///browser/components/newtab/AboutNewTabComponents.sys.mjs": typeof import("moz-src:///browser/components/newtab/AboutNewTabComponents.sys.mjs");
@@ -308,9 +331,12 @@ 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/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/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/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/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/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/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/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/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"); "moz-src:///browser/components/search/SERPCategorization.sys.mjs": typeof import("moz-src:///browser/components/search/SERPCategorization.sys.mjs");
@@ -340,11 +366,10 @@ 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/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/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/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/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/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/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/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/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"); "moz-src:///browser/components/urlbar/UrlbarProviderCalculator.sys.mjs": typeof import("moz-src:///browser/components/urlbar/UrlbarProviderCalculator.sys.mjs");
@@ -363,24 +388,19 @@ 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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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:///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/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"); "moz-src:///dom/notification/NotificationDB.sys.mjs": typeof import("moz-src:///dom/notification/NotificationDB.sys.mjs");
@@ -392,6 +412,30 @@ 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/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/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/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/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/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"); "moz-src:///toolkit/components/reader/AboutReader.sys.mjs": typeof import("moz-src:///toolkit/components/reader/AboutReader.sys.mjs");
@@ -401,6 +445,7 @@ 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/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/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/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/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/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"); "moz-src:///toolkit/components/search/SearchEngineSelector.sys.mjs": typeof import("moz-src:///toolkit/components/search/SearchEngineSelector.sys.mjs");
@@ -423,6 +468,7 @@ export interface Modules {
"moz-src:///toolkit/modules/DateTimePickerPanel.sys.mjs": typeof import("moz-src:///toolkit/modules/DateTimePickerPanel.sys.mjs"); "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/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/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"); "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/AboutLoginsParent.sys.mjs": typeof import("resource:///actors/AboutLoginsParent.sys.mjs");
"resource:///actors/AboutNewTabParent.sys.mjs": typeof import("resource:///actors/AboutNewTabParent.sys.mjs"); "resource:///actors/AboutNewTabParent.sys.mjs": typeof import("resource:///actors/AboutNewTabParent.sys.mjs");
@@ -458,8 +504,8 @@ export interface Modules {
"resource:///modules/ChromeProfileMigrator.sys.mjs": typeof import("resource:///modules/ChromeProfileMigrator.sys.mjs"); "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/ChromeWindowsLoginCrypto.sys.mjs": typeof import("resource:///modules/ChromeWindowsLoginCrypto.sys.mjs");
"resource:///modules/ContentCrashHandlers.sys.mjs": typeof import("resource:///modules/ContentCrashHandlers.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/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/DevToolsStartup.sys.mjs": typeof import("resource:///modules/DevToolsStartup.sys.mjs");
"resource:///modules/Discovery.sys.mjs": typeof import("resource:///modules/Discovery.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"); "resource:///modules/ESEDBReader.sys.mjs": typeof import("resource:///modules/ESEDBReader.sys.mjs");
@@ -491,13 +537,13 @@ export interface Modules {
"resource:///modules/OpenTabsController.sys.mjs": typeof import("resource:///modules/OpenTabsController.sys.mjs"); "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/PageActions.sys.mjs": typeof import("resource:///modules/PageActions.sys.mjs");
"resource:///modules/PartnerLinkAttribution.sys.mjs": typeof import("resource:///modules/PartnerLinkAttribution.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/PermissionUI.sys.mjs": typeof import("resource:///modules/PermissionUI.sys.mjs");
"resource:///modules/PopupAndRedirectBlockerObserver.sys.mjs": typeof import("resource:///modules/PopupAndRedirectBlockerObserver.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/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/SafariProfileMigrator.sys.mjs": typeof import("resource:///modules/SafariProfileMigrator.sys.mjs");
"resource:///modules/Sanitizer.sys.mjs": typeof import("resource:///modules/Sanitizer.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/SelectionChangedMenulist.sys.mjs": typeof import("resource:///modules/SelectionChangedMenulist.sys.mjs");
"resource:///modules/SharingUtils.sys.mjs": typeof import("resource:///modules/SharingUtils.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"); "resource:///modules/SiteDataManager.sys.mjs": typeof import("resource:///modules/SiteDataManager.sys.mjs");
@@ -507,11 +553,11 @@ export interface Modules {
"resource:///modules/ThemeVariableMap.sys.mjs": typeof import("resource:///modules/ThemeVariableMap.sys.mjs"); "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/TransientPrefs.sys.mjs": typeof import("resource:///modules/TransientPrefs.sys.mjs");
"resource:///modules/URILoadingHelper.sys.mjs": typeof import("resource:///modules/URILoadingHelper.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/WebProtocolHandlerRegistrar.sys.mjs": typeof import("resource:///modules/WebProtocolHandlerRegistrar.sys.mjs");
"resource:///modules/WindowsJumpLists.sys.mjs": typeof import("resource:///modules/WindowsJumpLists.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/WindowsPreviewPerTab.sys.mjs": typeof import("resource:///modules/WindowsPreviewPerTab.sys.mjs");
"resource:///modules/ZoomUI.sys.mjs": typeof import("resource:///modules/ZoomUI.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/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/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"); "resource:///modules/aboutwelcome/AboutWelcomeTelemetry.sys.mjs": typeof import("resource:///modules/aboutwelcome/AboutWelcomeTelemetry.sys.mjs");
@@ -520,6 +566,7 @@ export interface Modules {
"resource:///modules/asrouter/ASRouterDefaultConfig.sys.mjs": typeof import("resource:///modules/asrouter/ASRouterDefaultConfig.sys.mjs"); "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/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/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/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/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"); "resource:///modules/asrouter/ASRouterTelemetry.sys.mjs": typeof import("resource:///modules/asrouter/ASRouterTelemetry.sys.mjs");
@@ -538,6 +585,7 @@ export interface Modules {
"resource:///modules/asrouter/PageEventManager.sys.mjs": typeof import("resource:///modules/asrouter/PageEventManager.sys.mjs"); "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/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/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/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/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"); "resource:///modules/asrouter/ToolbarBadgeHub.sys.mjs": typeof import("resource:///modules/asrouter/ToolbarBadgeHub.sys.mjs");
@@ -559,6 +607,7 @@ export interface Modules {
"resource:///modules/backup/SelectableProfileBackupResource.sys.mjs": typeof import("resource:///modules/backup/SelectableProfileBackupResource.sys.mjs"); "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/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/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/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-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"); "resource:///modules/firefox-view-tabs-setup-manager.sys.mjs": typeof import("resource:///modules/firefox-view-tabs-setup-manager.sys.mjs");
@@ -640,6 +689,11 @@ 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/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/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/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/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/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"); "resource://devtools/client/storage/VariablesView.sys.mjs": typeof import("resource://devtools/client/storage/VariablesView.sys.mjs");
@@ -685,6 +739,7 @@ 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/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/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/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://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/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"); "resource://gre/actors/FormHandlerChild.sys.mjs": typeof import("resource://gre/actors/FormHandlerChild.sys.mjs");
@@ -719,6 +774,7 @@ export interface Modules {
"resource://gre/modules/BookmarkJSONUtils.sys.mjs": typeof import("resource://gre/modules/BookmarkJSONUtils.sys.mjs"); "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/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/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/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/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"); "resource://gre/modules/CSV.sys.mjs": typeof import("resource://gre/modules/CSV.sys.mjs");
@@ -845,14 +901,15 @@ export interface Modules {
"resource://gre/modules/GeckoViewActorManager.sys.mjs": typeof import("resource://gre/modules/GeckoViewActorManager.sys.mjs"); "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/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/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/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/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/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/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/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/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/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/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/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"); "resource://gre/modules/Geometry.sys.mjs": typeof import("resource://gre/modules/Geometry.sys.mjs");
@@ -868,9 +925,9 @@ export interface Modules {
"resource://gre/modules/Integration.sys.mjs": typeof import("resource://gre/modules/Integration.sys.mjs"); "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/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/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/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/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/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/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"); "resource://gre/modules/LoadURIDelegate.sys.mjs": typeof import("resource://gre/modules/LoadURIDelegate.sys.mjs");
@@ -904,6 +961,7 @@ export interface Modules {
"resource://gre/modules/NativeMessaging.sys.mjs": typeof import("resource://gre/modules/NativeMessaging.sys.mjs"); "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/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/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/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/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"); "resource://gre/modules/ObjectUtils.sys.mjs": typeof import("resource://gre/modules/ObjectUtils.sys.mjs");
@@ -950,6 +1008,7 @@ export interface Modules {
"resource://gre/modules/RustSharedRemoteSettingsService.sys.mjs": typeof import("resource://gre/modules/RustSharedRemoteSettingsService.sys.mjs"); "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/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/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/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/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"); "resource://gre/modules/SelectionUtils.sys.mjs": typeof import("resource://gre/modules/SelectionUtils.sys.mjs");
@@ -975,7 +1034,6 @@ export interface Modules {
"resource://gre/modules/TelemetrySession.sys.mjs": typeof import("resource://gre/modules/TelemetrySession.sys.mjs"); "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/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/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/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/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"); "resource://gre/modules/UninstallPing.sys.mjs": typeof import("resource://gre/modules/UninstallPing.sys.mjs");
@@ -1036,6 +1094,7 @@ export interface Modules {
"resource://gre/modules/narrate/NarrateControls.sys.mjs": typeof import("resource://gre/modules/narrate/NarrateControls.sys.mjs"); "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/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/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/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/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"); "resource://gre/modules/psm/X509.sys.mjs": typeof import("resource://gre/modules/psm/X509.sys.mjs");
@@ -1059,6 +1118,7 @@ export interface Modules {
"resource://gre/modules/shared/FieldScanner.sys.mjs": typeof import("resource://gre/modules/shared/FieldScanner.sys.mjs"); "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/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/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/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/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"); "resource://gre/modules/shared/FormAutofillUtils.sys.mjs": typeof import("resource://gre/modules/shared/FormAutofillUtils.sys.mjs");
@@ -1098,6 +1158,7 @@ export interface Modules {
"resource://newtab/lib/HighlightsFeed.sys.mjs": typeof import("resource://newtab/lib/HighlightsFeed.sys.mjs"); "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/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/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/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/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"); "resource://newtab/lib/NewTabAttributionFeed.sys.mjs": typeof import("resource://newtab/lib/NewTabAttributionFeed.sys.mjs");
@@ -1109,6 +1170,7 @@ export interface Modules {
"resource://newtab/lib/PersistentCache.sys.mjs": typeof import("resource://newtab/lib/PersistentCache.sys.mjs"); "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/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/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/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/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"); "resource://newtab/lib/SectionsManager.sys.mjs": typeof import("resource://newtab/lib/SectionsManager.sys.mjs");
@@ -1125,8 +1187,10 @@ export interface Modules {
"resource://newtab/lib/TopStoriesFeed.sys.mjs": typeof import("resource://newtab/lib/TopStoriesFeed.sys.mjs"); "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/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/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/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/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/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://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"); "resource://nimbus/ExperimentAPI.sys.mjs": typeof import("resource://nimbus/ExperimentAPI.sys.mjs");
@@ -1178,6 +1242,8 @@ export interface Modules {
"resource://pdf.js/PdfJsTelemetry.sys.mjs": typeof import("resource://pdf.js/PdfJsTelemetry.sys.mjs"); "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/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/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/AsyncSpellCheckTestHelper.sys.mjs": typeof import("resource://reftest/AsyncSpellCheckTestHelper.sys.mjs");
"resource://reftest/PerTestCoverageUtils.sys.mjs": typeof import("resource://reftest/PerTestCoverageUtils.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"); "resource://reftest/reftest.sys.mjs": typeof import("resource://reftest/reftest.sys.mjs");
@@ -1190,7 +1256,6 @@ export interface Modules {
"resource://services-common/observers.sys.mjs": typeof import("resource://services-common/observers.sys.mjs"); "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/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/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-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/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"); "resource://services-settings/Database.sys.mjs": typeof import("resource://services-settings/Database.sys.mjs");
@@ -1199,6 +1264,7 @@ export interface Modules {
"resource://services-settings/RemoteSettingsWorker.sys.mjs": typeof import("resource://services-settings/RemoteSettingsWorker.sys.mjs"); "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/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/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/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-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"); "resource://services-sync/SyncDisconnect.sys.mjs": typeof import("resource://services-sync/SyncDisconnect.sys.mjs");
@@ -1263,6 +1329,9 @@ export interface Modules {
"resource://test/esmified-1.sys.mjs": typeof import("resource://test/esmified-1.sys.mjs"); "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-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/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/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_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"); "resource://test/non_shared_nest_import_non_shared_1.mjs": typeof import("resource://test/non_shared_nest_import_non_shared_1.mjs");
@@ -1276,6 +1345,7 @@ 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/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://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/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/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/AllJavascriptTypes.mjs": typeof import("resource://testing-common/AllJavascriptTypes.mjs");
"resource://testing-common/AppData.sys.mjs": typeof import("resource://testing-common/AppData.sys.mjs"); "resource://testing-common/AppData.sys.mjs": typeof import("resource://testing-common/AppData.sys.mjs");
@@ -1285,6 +1355,7 @@ export interface Modules {
"resource://testing-common/AsyncSpellCheckTestHelper.sys.mjs": typeof import("resource://testing-common/AsyncSpellCheckTestHelper.sys.mjs"); "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/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/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/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/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"); "resource://testing-common/CookieXPCShellUtils.sys.mjs": typeof import("resource://testing-common/CookieXPCShellUtils.sys.mjs");
@@ -1305,6 +1376,7 @@ export interface Modules {
"resource://testing-common/JSObjectsTestUtils.sys.mjs": typeof import("resource://testing-common/JSObjectsTestUtils.sys.mjs"); "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/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/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/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/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"); "resource://testing-common/MockColorPicker.sys.mjs": typeof import("resource://testing-common/MockColorPicker.sys.mjs");
@@ -1333,6 +1405,7 @@ export interface Modules {
"resource://testing-common/SearchTestUtils.sys.mjs": typeof import("resource://testing-common/SearchTestUtils.sys.mjs"); "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/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/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/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/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"); "resource://testing-common/SpecialPowersParent.sys.mjs": typeof import("resource://testing-common/SpecialPowersParent.sys.mjs");
@@ -1368,6 +1441,10 @@ 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/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/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/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/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/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"); "resource://testing-common/services/sync/fxa_utils.sys.mjs": typeof import("resource://testing-common/services/sync/fxa_utils.sys.mjs");

View File

@@ -1,6 +1,3 @@
// 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. * NOTE: Do not modify this file by hand.
* Content was generated from xpc.msg and error_list.json. * Content was generated from xpc.msg and error_list.json.
@@ -674,6 +671,9 @@ interface nsIXPCComponents_Results {
/** The URI is not available for add-ons */ /** The URI is not available for add-ons */
NS_ERROR_HARMFULADDON_URI: 0x805d002e; 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 // Profile manager error codes
/** Flushing the profiles to disk would have overwritten changes made elsewhere. */ /** Flushing the profiles to disk would have overwritten changes made elsewhere. */
@@ -703,6 +703,11 @@ interface nsIXPCComponents_Results {
/** Client initialization attempted before origin has been initialized. */ /** Client initialization attempted before origin has been initialized. */
NS_ERROR_DOM_QM_CLIENT_INIT_ORIGIN_UNINITIALIZED: 0x80730001; 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 = type nsIXPCComponents_Values =

View File

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

View File

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

View File

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

File diff suppressed because it is too large Load Diff

View File

@@ -1,13 +1,10 @@
// 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 XPIDL base types. * Gecko XPIDL base types.
*/ */
/** /**
* Generic IDs are created by most code which passes a nsID to js. * Generic IDs are created by most code which passes a nsID to js.
* https://searchfox.org/mozilla-central/source/js/xpconnect/src/XPCJSID.cpp#24 * https://searchfox.org/firefox-main/source/js/xpconnect/src/XPCJSID.cpp#24
*/ */
interface nsID<uuid = string> { interface nsID<uuid = string> {
readonly number: uuid; readonly number: uuid;
@@ -16,7 +13,7 @@ interface nsID<uuid = string> {
/** /**
* In addition to nsID, interface IIDs support instanceof type guards, * In addition to nsID, interface IIDs support instanceof type guards,
* and expose constants defined on the class, including variants from enums. * and expose constants defined on the class, including variants from enums.
* https://searchfox.org/mozilla-central/source/js/xpconnect/src/XPCJSID.cpp#45 * https://searchfox.org/firefox-main/source/js/xpconnect/src/XPCJSID.cpp#45
*/ */
type nsJSIID<iface, enums = {}> = nsID & type nsJSIID<iface, enums = {}> = nsID &
Constants<iface> & Constants<iface> &
@@ -31,8 +28,10 @@ type nsIID = nsIXPCComponents_Interfaces[keyof nsIXPCComponents_Interfaces];
/** A generic to resolve QueryInterface return type from a nsIID. */ /** A generic to resolve QueryInterface return type from a nsIID. */
type nsQIResult<iid> = iid extends { prototype: infer U } ? U : never; type nsQIResult<iid> = iid extends { prototype: infer U } ? U : never;
/** Picks only const number properties from T. */ /** Picks only const number properties from T and marks them as required. */
type Constants<T> = { [K in keyof T as IfConst<K, T[K]>]: T[K] }; type Constants<T> = {
[K in keyof T as IfConst<K, T[K]>]-?: Exclude<T[K], undefined>;
};
/** Resolves only for keys K whose corresponding type T is a narrow number. */ /** Resolves only for keys K whose corresponding type T is a narrow number. */
type IfConst<K, T> = T extends number ? (number extends T ? never : K) : never; type IfConst<K, T> = T extends number ? (number extends T ? never : K) : never;

View File

@@ -138,6 +138,18 @@ export class nsZenBoostEditor {
.getElementById("zen-boost-css-inspector") .getElementById("zen-boost-css-inspector")
.addEventListener("click", this.onInspectorButtonPressed.bind(this)); .addEventListener("click", this.onInspectorButtonPressed.bind(this));
const commandActions = {
cmd_zenBoostEditName: () => this.editBoostName(),
cmd_zenBoostShuffle: () => this.shuffleBoost(),
cmd_zenBoostReset: () => this.resetBoost(),
cmd_zenBoostLoad: () => this.onLoadBoostClick(),
cmd_zenBoostSave: () => this.onSaveBoostClick(),
cmd_zenBoostDelete: () => this.deleteBoost(),
};
for (const [id, action] of Object.entries(commandActions)) {
this.doc.getElementById(id).addEventListener("command", action);
}
this.doc.addEventListener("keydown", event => { this.doc.addEventListener("keydown", event => {
if ( if (
event.key === "Escape" || event.key === "Escape" ||
@@ -659,7 +671,10 @@ ${cssSelector} {
this.currentBoostData.sizeOverride = 0.9; this.currentBoostData.sizeOverride = 0.9;
} else if (this.currentBoostData.sizeOverride == 0.9) { } else if (this.currentBoostData.sizeOverride == 0.9) {
this.currentBoostData.sizeOverride = 1; this.currentBoostData.sizeOverride = 1;
await this.zenBoostsChild.sendQuery("ZenBoost:DisableSizeOverride"); await this.zenBoostsChild.updateBoostSizeOverride(
this.currentBoostData.sizeOverride,
/* disable: */ true
);
} }
this.currentBoostData.changeWasMade = true; this.currentBoostData.changeWasMade = true;

View File

@@ -280,9 +280,6 @@ export class ZenBoostsChild extends JSWindowActorChild {
case "ZenBoost:OpenInspector": case "ZenBoost:OpenInspector":
this.sendAsyncMessage("ZenBoost:OpenInspector"); this.sendAsyncMessage("ZenBoost:OpenInspector");
break; break;
case "ZenBoost:DisableSizeOverride":
this.disableSizeOverride();
break;
} }
return null; return null;
} }
@@ -359,13 +356,9 @@ export class ZenBoostsChild extends JSWindowActorChild {
this.#loadStyleSheet(boost.styleSheet); this.#loadStyleSheet(boost.styleSheet);
} }
if ( this.sendAsyncMessage("ZenBoost:UpdateBoostSize", {
boostData.sizeOverride && sizeOverride: boostData.sizeOverride,
isFinite(boostData.sizeOverride) && });
boostData.sizeOverride !== 1
) {
browsingContext.fullZoom = boostData.sizeOverride;
}
browsingContext.isZenBoostsInverted = boostData.smartInvert; browsingContext.isZenBoostsInverted = boostData.smartInvert;
if (boostData.enableColorBoost) { if (boostData.enableColorBoost) {
@@ -552,14 +545,6 @@ export class ZenBoostsChild extends JSWindowActorChild {
this.sendNotify("selector-picker-state-update", "ondisable"); this.sendNotify("selector-picker-state-update", "ondisable");
} }
disableSizeOverride() {
const browsingContext = this.browsingContext;
if (!browsingContext || browsingContext.parent !== null) {
return;
}
browsingContext.fullZoom = 1;
}
sendNotify(topic, msg = null) { sendNotify(topic, msg = null) {
this.sendAsyncMessage("ZenBoost:Notify", { topic, msg }); this.sendAsyncMessage("ZenBoost:Notify", { topic, msg });
} }

View File

@@ -72,6 +72,23 @@ export class ZenBoostsParent extends JSWindowActorParent {
} }
} }
/**
* Updates the boost size override on webpage
*
* @param {number} sizeOverride - The size to apply on the webpage as a override
* @param {boolean} disable - Whether to disable the override (sets override to the default 1)
*/
updateBoostSizeOverride(sizeOverride, disable = false) {
if (
sizeOverride &&
isFinite(sizeOverride) &&
(sizeOverride !== 1 || disable)
) {
const fullZoom = this.browsingContext.topChromeWindow.FullZoom;
fullZoom.setZoom(sizeOverride);
}
}
/** /**
* Handles messages received from child actors. * Handles messages received from child actors.
* Retrieves boost data for a domain when requested. * Retrieves boost data for a domain when requested.
@@ -174,6 +191,11 @@ export class ZenBoostsParent extends JSWindowActorParent {
: null, : null,
}; };
} }
case "ZenBoost:UpdateBoostSize": {
const { sizeOverride } = message.data;
this.updateBoostSizeOverride(sizeOverride);
break;
}
default: { default: {
console.warn(`[ZenBoostsParent]: Unknown message: ${message.name}`); console.warn(`[ZenBoostsParent]: Unknown message: ${message.name}`);
break; break;

View File

@@ -9,6 +9,7 @@
# Windows # Windows
* content/browser/zen-components/windows/zen-boost-editor.xhtml (../../zen/boosts/zen-boost-editor.inc.xhtml) * content/browser/zen-components/windows/zen-boost-editor.xhtml (../../zen/boosts/zen-boost-editor.inc.xhtml)
content/browser/zen-components/windows/zen-boost-editor.js (../../zen/boosts/zen-boost-editor.js)
# Images # Images
content/browser/zen-images/boost-indicator.svg (../../zen/images/boost-indicator.svg) content/browser/zen-images/boost-indicator.svg (../../zen/images/boost-indicator.svg)

View File

@@ -138,28 +138,14 @@
</popupset> </popupset>
<commandset id="zenBoostCommandSet"> <commandset id="zenBoostCommandSet">
<command id="cmd_zenBoostEditName" <command id="cmd_zenBoostEditName" />
oncommand="window.boostEditor.editBoostName();" /> <command id="cmd_zenBoostShuffle" />
<command id="cmd_zenBoostReset" />
<command id="cmd_zenBoostShuffle" <command id="cmd_zenBoostLoad" />
oncommand="window.boostEditor.shuffleBoost();" /> <command id="cmd_zenBoostSave" />
<command id="cmd_zenBoostDelete" />
<command id="cmd_zenBoostReset"
oncommand="window.boostEditor.resetBoost();" />
<command id="cmd_zenBoostLoad"
oncommand="window.boostEditor.onLoadBoostClick();" />
<command id="cmd_zenBoostSave"
oncommand="window.boostEditor.onSaveBoostClick();" />
<command id="cmd_zenBoostDelete"
oncommand="window.boostEditor.deleteBoost();" />
</commandset> </commandset>
<script> <script src="chrome://browser/content/zen-components/windows/zen-boost-editor.js"></script>
const { nsZenBoostEditor } = ChromeUtils.importESModule( "resource:///modules/zen/boosts/ZenBoostsEditor.mjs" );
window.boostEditor = new nsZenBoostEditor(document, window.domain, window, window.openerWindow);
</script>
</html:body> </html:body>
</html> </html>

View File

@@ -0,0 +1,14 @@
/* 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/. */
const { nsZenBoostEditor } = ChromeUtils.importESModule(
"resource:///modules/zen/boosts/ZenBoostsEditor.mjs"
);
window.boostEditor = new nsZenBoostEditor(
document,
window.domain,
window,
window.openerWindow
);

View File

@@ -898,7 +898,10 @@
handle_windowDragLeave(event) { handle_windowDragLeave(event) {
// If relatedTarget exists, then we are still in the window // If relatedTarget exists, then we are still in the window
if (event.relatedTarget) { if (
event.relatedTarget ||
event.target.id === "zen-split-view-fake-browser"
) {
return; return;
} }
const canvas = this._tabbrowserTabs._dndCanvas; const canvas = this._tabbrowserTabs._dndCanvas;

View File

@@ -1297,8 +1297,17 @@ class nsZenFolders extends nsZenDOMOperatedFeature {
} }
default: { default: {
// Should insert after zen-empty-tab // Should insert after zen-empty-tab
const start = let start =
parentWorkingData.node.groupStartElement.nextElementSibling; parentWorkingData.node.groupStartElement.nextElementSibling;
start ||=
parentWorkingData.node.tabs[0] ||
parentWorkingData.node.groupStartElement;
if (!start) {
console.error(
`Zen Folders: Could not find start element for parent folder with id ${stateData.parentId} while restoring session.`
);
break;
}
start.after(node); start.after(node);
} }
} }

View File

@@ -12,9 +12,10 @@
#include "nsStyleSheetService.h" #include "nsStyleSheetService.h"
#include "mozilla/ClearOnShutdown.h" #include "mozilla/ClearOnShutdown.h"
#include "mozilla/css/SheetParsingMode.h"
#include "mozilla/GlobalStyleSheetCache.h" #include "mozilla/GlobalStyleSheetCache.h"
#include "mozilla/RefPtr.h" #include "mozilla/RefPtr.h"
#include "mozilla/ServoStyleConsts.h"
#include "mozilla/StyleSheet.h"
#define GET_MODS_FILE(chromeFile, err) \ #define GET_MODS_FILE(chromeFile, err) \
NS_GetSpecialDirectory(NS_APP_USER_CHROME_DIR, getter_AddRefs(chromeFile)); \ NS_GetSpecialDirectory(NS_APP_USER_CHROME_DIR, getter_AddRefs(chromeFile)); \
@@ -46,12 +47,11 @@ auto ZenStyleSheetCache::GetModsSheet() -> StyleSheet* {
} }
} }
LoadSheetFile(chromeFile, css::eUserSheetFeatures); LoadSheetFile(chromeFile, StyleOrigin::User);
return mModsSheet; return mModsSheet;
} }
auto ZenStyleSheetCache::LoadSheetFile(nsIFile* aFile, auto ZenStyleSheetCache::LoadSheetFile(nsIFile* aFile, StyleOrigin aOrigin)
css::SheetParsingMode aParsingMode)
-> void { -> void {
nsCOMPtr<nsIURI> uri; nsCOMPtr<nsIURI> uri;
NS_NewFileURI(getter_AddRefs(uri), aFile); NS_NewFileURI(getter_AddRefs(uri), aFile);
@@ -60,8 +60,8 @@ auto ZenStyleSheetCache::LoadSheetFile(nsIFile* aFile,
} }
RefPtr<mozilla::css::Loader> loader = new mozilla::css::Loader; RefPtr<mozilla::css::Loader> loader = new mozilla::css::Loader;
auto result = loader->LoadSheetSync(uri, aParsingMode, auto result =
css::Loader::UseSystemPrincipal::Yes); loader->LoadSheetSync(uri, aOrigin, css::Loader::UseSystemPrincipal::Yes);
if (MOZ_UNLIKELY(result.isErr())) { if (MOZ_UNLIKELY(result.isErr())) {
return; return;
} }

View File

@@ -46,8 +46,7 @@ class ZenStyleSheetCache final : public nsISupports {
* @brief Load the stylesheet from the given file. * @brief Load the stylesheet from the given file.
* @param aFile The file to load the stylesheet from. * @param aFile The file to load the stylesheet from.
*/ */
auto LoadSheetFile(nsIFile* aFile, auto LoadSheetFile(nsIFile* aFile, mozilla::StyleOrigin aOrigin) -> void;
mozilla::css::SheetParsingMode aParsingMode) -> void;
static mozilla::StaticRefPtr<ZenStyleSheetCache> gZenModsCache; static mozilla::StaticRefPtr<ZenStyleSheetCache> gZenModsCache;

View File

@@ -20,5 +20,4 @@ DIRS += [
"share", "share",
"spaces", "spaces",
"space-routing", "space-routing",
"sync",
] ]

View File

@@ -10,7 +10,6 @@ const lazy = {};
ChromeUtils.defineESModuleGetters(lazy, { ChromeUtils.defineESModuleGetters(lazy, {
ZenLiveFoldersManager: ZenLiveFoldersManager:
"resource:///modules/zen/ZenLiveFoldersManager.sys.mjs", "resource:///modules/zen/ZenLiveFoldersManager.sys.mjs",
ZenSyncStore: "resource:///modules/zen/ZenSyncManager.sys.mjs",
PrivateBrowsingUtils: "resource://gre/modules/PrivateBrowsingUtils.sys.mjs", PrivateBrowsingUtils: "resource://gre/modules/PrivateBrowsingUtils.sys.mjs",
SessionStore: "resource:///modules/sessionstore/SessionStore.sys.mjs", SessionStore: "resource:///modules/sessionstore/SessionStore.sys.mjs",
SessionStartup: "resource:///modules/sessionstore/SessionStartup.sys.mjs", SessionStartup: "resource:///modules/sessionstore/SessionStartup.sys.mjs",
@@ -610,7 +609,6 @@ export class nsZenSessionManager {
} }
); );
this.#collectWindowData(windows); this.#collectWindowData(windows);
lazy.ZenSyncStore.notifyAboutChanges();
// This would save the data to disk asynchronously or when quitting the app. // This would save the data to disk asynchronously or when quitting the app.
let sidebar = this.#sidebarWithoutCloning; let sidebar = this.#sidebarWithoutCloning;
this.#file.data = sidebar; this.#file.data = sidebar;
@@ -624,15 +622,6 @@ export class nsZenSessionManager {
this.log(`Saving Zen session data with ${sidebar.tabs?.length || 0} tabs`); this.log(`Saving Zen session data with ${sidebar.tabs?.length || 0} tabs`);
} }
/**
* Returns the sidebar data object.
*
* @returns {object}
*/
getSidebarData() {
return this.#sidebarWithoutCloning;
}
/** /**
* Called when the last known backup should be deleted and a new one * Called when the last known backup should be deleted and a new one
* created. This uses the #deferredBackupTask to debounce clusters of * created. This uses the #deferredBackupTask to debounce clusters of

View File

@@ -7,3 +7,4 @@
# Windows # Windows
* content/browser/zen-components/windows/zen-space-routing.xhtml (../../zen/space-routing/zen-space-routing.inc.xhtml) * content/browser/zen-components/windows/zen-space-routing.xhtml (../../zen/space-routing/zen-space-routing.inc.xhtml)
content/browser/zen-components/windows/zen-space-routing.js (../../zen/space-routing/zen-space-routing.js)

View File

@@ -82,15 +82,5 @@
</hbox> </hbox>
</vbox> </vbox>
<script> <script src="chrome://browser/content/zen-components/windows/zen-space-routing.js"></script>
const { nsZenSpaceRoutingDialog } = ChromeUtils.importESModule(
"resource:///modules/zen/spacerouting/ZenSpaceRoutingDialog.mjs",
);
const args = window.arguments?.[0] || {};
window.spaceroutingDialog = new nsZenSpaceRoutingDialog(
document,
window,
args.parentWindow,
);
</script>
</window> </window>

View File

@@ -0,0 +1,14 @@
/* 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/. */
const { nsZenSpaceRoutingDialog } = ChromeUtils.importESModule(
"resource:///modules/zen/spacerouting/ZenSpaceRoutingDialog.mjs"
);
const args = window.arguments?.[0] || {};
window.spaceroutingDialog = new nsZenSpaceRoutingDialog(
document,
window,
args.parentWindow
);

View File

@@ -370,7 +370,6 @@ class nsZenWorkspaceCreation extends MozXULElement {
} }
this.remove(); this.remove();
gZenUIManager.updateTabsToolbar();
const workspace = gZenWorkspaces.getActiveWorkspace(); const workspace = gZenWorkspaces.getActiveWorkspace();
gZenWorkspaces._organizeWorkspaceStripLocations(workspace); gZenWorkspaces._organizeWorkspaceStripLocations(workspace);
@@ -398,6 +397,7 @@ class nsZenWorkspaceCreation extends MozXULElement {
} }
this.#hiddenElements = []; this.#hiddenElements = [];
gZenUIManager.updateTabsToolbar();
} }
} }

View File

@@ -11,7 +11,6 @@ const lazy = {};
ChromeUtils.defineESModuleGetters(lazy, { ChromeUtils.defineESModuleGetters(lazy, {
ZenSessionStore: "resource:///modules/zen/ZenSessionManager.sys.mjs", ZenSessionStore: "resource:///modules/zen/ZenSessionManager.sys.mjs",
ZenSyncStore: "resource:///modules/zen/ZenSyncManager.sys.mjs",
}); });
ChromeUtils.defineLazyGetter(lazy, "browserBackgroundElement", () => { ChromeUtils.defineLazyGetter(lazy, "browserBackgroundElement", () => {
@@ -149,7 +148,7 @@ class nsZenWorkspaces {
if (!this.privateWindowOrDisabled) { if (!this.privateWindowOrDisabled) {
const observerFunction = async () => { const observerFunction = async () => {
delete this._workspaceBookmarksCache; delete this._workspaceBookmarksCache;
await this.#initializeWorkspaceBookmarks(); await this.workspaceBookmarks();
this._invalidateBookmarkContainers(); this._invalidateBookmarkContainers();
}; };
Services.obs.addObserver(observerFunction, "workspace-bookmarks-updated"); Services.obs.addObserver(observerFunction, "workspace-bookmarks-updated");
@@ -169,63 +168,6 @@ class nsZenWorkspaces {
} }
} }
/**
* Applies live sync changes: updates workspace cache, removes deleted items,
* then creates/updates pulled items.
*
* @param {{ spaces: Array}} pulled Reconcile-pulled items.
* @param {{ spaces: Array}} removals Items to remove.
*/
async _applySyncChanges(pulled, removals = {}) {
if (!this.shouldHaveWorkspaces || this.privateWindowOrDisabled) {
return;
}
await this.promiseInitialized;
// 1. Update workspace cache (remove deleted, merge pulled)
const removedSpaceIds = new Set((removals.spaces || []).map(s => s.uuid));
if (removedSpaceIds.size || pulled.spaces?.length) {
const localMap = new Map(
this.getWorkspaces()
.filter(w => !removedSpaceIds.has(w.uuid))
.map(w => [w.uuid, w])
);
for (const space of pulled.spaces || []) {
if (!space?.uuid) {
continue;
}
const existing = localMap.get(space.uuid);
localMap.set(space.uuid, existing ? { ...existing, ...space } : space);
}
await this.propagateWorkspaces(
this.#getOrderedWorkspacesByPosition(Array.from(localMap.values()))
);
this.#propagateWorkspaceData();
}
}
#getOrderedWorkspacesByPosition(workspaces) {
return [...workspaces]
.map((workspace, index) => ({ workspace, index }))
.sort((a, b) => {
const aPosition =
typeof a.workspace.position === "number"
? a.workspace.position
: a.index;
const bPosition =
typeof b.workspace.position === "number"
? b.workspace.position
: b.index;
return aPosition - bPosition || a.index - b.index;
})
.map(({ workspace }) => {
// strip the position property that comes from pulled workspaces
const rest = { ...workspace };
delete rest.position;
return rest;
});
}
#afterLoadInit() { #afterLoadInit() {
const onResize = (...args) => { const onResize = (...args) => {
requestAnimationFrame(() => { requestAnimationFrame(() => {
@@ -752,17 +694,17 @@ class nsZenWorkspaces {
return spacesForSS; return spacesForSS;
} }
async #initializeWorkspaceBookmarks() { async workspaceBookmarks() {
if (this.privateWindowOrDisabled) { if (this.privateWindowOrDisabled) {
this._workspaceBookmarksCache = { this._workspaceBookmarksCache = {
bookmarks: [], bookmarks: [],
lastChangeTimestamp: 0, lastChangeTimestamp: 0,
}; };
return; return this._workspaceBookmarksCache;
} }
if (this._workspaceBookmarksCache) { if (this._workspaceBookmarksCache) {
return; return this._workspaceBookmarksCache;
} }
const [bookmarks, lastChangeTimestamp] = await Promise.all([ const [bookmarks, lastChangeTimestamp] = await Promise.all([
@@ -771,6 +713,8 @@ class nsZenWorkspaces {
]); ]);
this._workspaceBookmarksCache = { bookmarks, lastChangeTimestamp }; this._workspaceBookmarksCache = { bookmarks, lastChangeTimestamp };
return this._workspaceCache;
} }
restoreWorkspacesFromSessionStore(aWinData = {}) { restoreWorkspacesFromSessionStore(aWinData = {}) {
@@ -830,7 +774,7 @@ class nsZenWorkspaces {
return (async () => { return (async () => {
await this.#waitForPromises(); await this.#waitForPromises();
this.#afterLoadInit(); this.#afterLoadInit();
await this.#initializeWorkspaceBookmarks(); await this.workspaceBookmarks();
await this.changeWorkspace(activeWorkspace, { onInit: true }); await this.changeWorkspace(activeWorkspace, { onInit: true });
this.#fixTabPositions(); this.#fixTabPositions();
this.onWindowResize(); this.onWindowResize();
@@ -856,13 +800,6 @@ class nsZenWorkspaces {
})(); })();
} }
#markWorkspaceChanged(workspaceId) {
lazy.ZenSyncStore.markItemChanged({
type: "space",
id: workspaceId,
});
}
async selectStartPage() { async selectStartPage() {
if (!this.workspaceEnabled || gZenUIManager.testingEnabled) { if (!this.workspaceEnabled || gZenUIManager.testingEnabled) {
return; return;
@@ -1283,19 +1220,12 @@ class nsZenWorkspaces {
} else { } else {
workspacesData.push(workspaceData); workspacesData.push(workspaceData);
} }
// mark item as changed for sync
this.#markWorkspaceChanged(workspaceData.uuid);
this.#propagateWorkspaceData(); this.#propagateWorkspaceData();
} }
removeWorkspace(windowID) { removeWorkspace(windowID) {
let { promise, resolve } = Promise.withResolvers(); let { promise, resolve } = Promise.withResolvers();
this.#deleteWorkspaceOwnedTabs(windowID); this.#deleteWorkspaceOwnedTabs(windowID);
// mark item as changed for sync
this.#markWorkspaceChanged(windowID);
let workspacesData = this.getWorkspaces(); let workspacesData = this.getWorkspaces();
// Remove the workspace from the cache // Remove the workspace from the cache
workspacesData = workspacesData.filter( workspacesData = workspacesData.filter(
@@ -1427,50 +1357,30 @@ class nsZenWorkspaces {
if (this.privateWindowOrDisabled) { if (this.privateWindowOrDisabled) {
return; return;
} }
const workspaces = this.getWorkspaces(); const workspaces = this._workspaceCache;
// Track previous positions so we only notify observers for workspaces whose
// position changed during the reorder.
const previousPositions = new Map(
workspaces.map((workspace, index) => [workspace.uuid, index])
);
const workspace = workspaces.find(w => w.uuid === id); const workspace = workspaces.find(w => w.uuid === id);
if (!workspace) { if (!workspace) {
console.warn(`Workspace with ID ${id} not found for reordering.`); console.warn(`Workspace with ID ${id} not found for reordering.`);
return; return;
} }
// Remove the workspace from its current position // Remove the workspace from its current position
const currentIndex = workspaces.indexOf(workspace); const currentIndex = workspaces.indexOf(workspace);
if (currentIndex === -1) { if (currentIndex === -1) {
console.warn(`Workspace with ID ${id} not found in the list.`); console.warn(`Workspace with ID ${id} not found in the list.`);
return; return;
} }
workspaces.splice(currentIndex, 1);
// Insert the workspace at the new position // Insert the workspace at the new position
if (newPosition < 0 || newPosition >= workspaces.length) { if (newPosition < 0 || newPosition > workspaces.length) {
console.warn( console.warn(
`Invalid position ${newPosition} for reordering workspace with ID ${id}.` `Invalid position ${newPosition} for reordering workspace with ID ${id}.`
); );
return; return;
} }
workspaces.splice(currentIndex, 1);
workspaces.splice(newPosition, 0, workspace); workspaces.splice(newPosition, 0, workspace);
// Propagate the changes if the order has changed // Propagate the changes if the order has changed
if (currentIndex !== newPosition) { if (currentIndex !== newPosition) {
this._workspaceCache = workspaces; this.#propagateWorkspaceData();
for (const [i, ws] of workspaces.entries()) {
if (previousPositions.get(ws.uuid) === i) {
continue;
}
// mark item as changed for sync
this.#markWorkspaceChanged(ws.uuid);
}
this.#propagateWorkspaceData(workspaces);
} }
} }
@@ -2443,7 +2353,7 @@ class nsZenWorkspaces {
for (const tab of gBrowser.tabs) { for (const tab of gBrowser.tabs) {
if ( if (
!tab.hasAttribute("zen-workspace-id") && !tab.hasAttribute("zen-workspace-id") &&
!tab.hasAttribute("zen-essential") !tab.hasAttribute("zen-workspace-id")
) { ) {
tab.setAttribute("zen-workspace-id", workspace.uuid); tab.setAttribute("zen-workspace-id", workspace.uuid);
} }
@@ -2486,7 +2396,8 @@ class nsZenWorkspaces {
w => w.uuid !== this.activeWorkspace w => w.uuid !== this.activeWorkspace
); );
const ctxCommand = document.getElementById("cmd_zenCtxDeleteWorkspace"); const ctxCommand = document.getElementById("cmd_zenCtxDeleteWorkspace");
if (workspaces.length <= 1) { const hasMultipleWorkspaces = !!workspaces.length;
if (!hasMultipleWorkspaces) {
ctxCommand.setAttribute("disabled", "true"); ctxCommand.setAttribute("disabled", "true");
} else { } else {
ctxCommand.removeAttribute("disabled"); ctxCommand.removeAttribute("disabled");
@@ -2506,6 +2417,9 @@ class nsZenWorkspaces {
)) { )) {
item.remove(); item.remove();
} }
if (!hasMultipleWorkspaces) {
continue;
}
const separator = document.createXULElement("menuseparator"); const separator = document.createXULElement("menuseparator");
separator.classList.add("zen-workspace-context-menu-item"); separator.classList.add("zen-workspace-context-menu-item");
if (isMoveTabPopup) { if (isMoveTabPopup) {

View File

@@ -1,160 +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/. */
const lazy = {};
ChromeUtils.defineESModuleGetters(lazy, {
ZenSessionStore: "resource:///modules/zen/ZenSessionManager.sys.mjs",
ContextualIdentityService:
"resource://gre/modules/ContextualIdentityService.sys.mjs",
ZenWindowSync: "resource:///modules/zen/ZenWindowSync.sys.mjs",
});
function normalizeUserContextId(value) {
const normalized = typeof value === "string" ? Number(value) : value;
if (!Number.isSafeInteger(normalized) || normalized <= 0) {
return null;
}
return normalized;
}
class ZenSyncManager {
getSidebarData() {
return lazy.ZenSessionStore.getSidebarData();
}
/**
* Whether to ignore changes to items. This is used to prevent
* infinite loops when applying incoming sync changes.
*
* @type {boolean}
*/
#ignoreChanges = false;
#changedItems = new Map();
markItemChanged(item) {
if (item.type && item.id && !this.#ignoreChanges) {
const key = `${item.type}~${item.id}`;
this.#changedItems.set(key, { type: item.type, id: item.id });
}
}
#getChangedItems() {
return Array.from(this.#changedItems.values());
}
#clearChangedItems() {
this.#changedItems.clear();
}
notifyAboutChanges() {
const changedItems = this.#getChangedItems();
for (const item of changedItems) {
Services.obs.notifyObservers(
{ wrappedJSObject: item },
"zen-workspace-item-changed"
);
}
this.#clearChangedItems();
}
async applyIncomingBatch(pulled, removals) {
try {
this.#ignoreChanges = true;
this.#applyIncomingContainers(
pulled.containers || [],
removals.containers || []
);
const win = lazy.ZenWindowSync.firstSyncedWindow;
if (win?.gZenWorkspaces) {
await win.gZenWorkspaces._applySyncChanges(pulled, removals);
}
} catch (e) {
console.error("ZenSyncManager: Failed to apply incoming sync data:", e);
throw e;
} finally {
this.#ignoreChanges = false;
}
}
#applyIncomingContainers(pulledContainers, removedContainers) {
const localContainersById = new Map(
lazy.ContextualIdentityService.getPublicIdentities().map(container => [
container.userContextId,
container,
])
);
for (const container of pulledContainers) {
if (!container.name) {
continue;
}
const userContextId = normalizeUserContextId(container.userContextId);
if (userContextId === null) {
console.warn(
"ZenSyncManager: Ignoring incoming container with invalid userContextId",
{ container }
);
continue;
}
const existsLocally = localContainersById.has(userContextId);
if (existsLocally) {
lazy.ContextualIdentityService.update(
userContextId,
container.name,
container.icon,
container.color
);
continue;
}
const createdIdentity = lazy.ContextualIdentityService.create(
container.name,
container.icon,
container.color,
userContextId
);
if (createdIdentity) {
localContainersById.set(createdIdentity.userContextId, createdIdentity);
}
if (createdIdentity && createdIdentity.userContextId !== userContextId) {
console.warn("ZenSyncManager: Container sync created unexpected ID", {
requestedId: userContextId,
createdId: createdIdentity.userContextId,
name: container.name,
});
}
}
for (const container of removedContainers) {
const userContextId = normalizeUserContextId(container.userContextId);
if (userContextId === null) {
console.warn(
"ZenSyncManager: Ignoring container removal with invalid userContextId",
{ container }
);
continue;
}
if (!localContainersById.has(userContextId)) {
continue;
}
try {
lazy.ContextualIdentityService.remove(userContextId);
localContainersById.delete(userContextId);
} catch {
// Container may already be gone locally.
}
}
}
}
export const ZenSyncStore = new ZenSyncManager();

View File

@@ -1,404 +0,0 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
import {
Store,
SyncEngine,
Tracker,
} from "resource://services-sync/engines.sys.mjs";
import { CryptoWrapper } from "resource://services-sync/record.sys.mjs";
import { SCORE_INCREMENT_XLARGE } from "resource://services-sync/constants.sys.mjs";
const lazy = {};
ChromeUtils.defineESModuleGetters(lazy, {
ZenSyncStore: "resource:///modules/zen/ZenSyncManager.sys.mjs",
ContextualIdentityService:
"resource://gre/modules/ContextualIdentityService.sys.mjs",
});
const RECORD_ID_PREFIX_BY_TYPE = Object.freeze({
space: "s",
container: "c",
});
const RECORD_TYPE_BY_PREFIX = Object.freeze({
s: "space",
c: "container",
});
/**
* Sync record wrapper for workspace and container items stored in the
* Workspaces engine collection.
*/
export class ZenWorkspacesRecord extends CryptoWrapper {
_logName = "Sync.Record.ZenSpaces";
}
ZenWorkspacesRecord.prototype.type = "spaces";
function parseRecordId(id) {
const sep = id.indexOf("~");
if (sep === -1) {
return null;
}
const prefix = id.slice(0, sep);
const key = id.slice(sep + 1);
return { type: RECORD_TYPE_BY_PREFIX[prefix] || prefix, key };
}
function createRecordId(type, id) {
const prefix = RECORD_ID_PREFIX_BY_TYPE[type];
if (!prefix) {
throw new Error(`Unknown Spaces Sync record type: ${type}`);
}
return `${prefix}~${id}`;
}
function normalizeUserContextId(value) {
const normalized = typeof value === "string" ? Number(value) : value;
if (!Number.isSafeInteger(normalized) || normalized <= 0) {
return null;
}
return normalized;
}
/**
* Strips the sync-envelope fields (`id` and `type`) from incoming record data
* and restores the item's real identity key where needed
*
* @param {object} data
*/
function stripSyncFields(data) {
const rest = { ...data };
delete rest.id;
delete rest.type;
return rest;
}
/**
* Sync store implementation that serializes local workspace and container
* state into records and applies incoming remote changes.
*/
class ZenWorkspacesStore extends Store {
constructor(name, engine) {
super(name, engine);
}
async getAllIDs() {
const ids = {};
const sidebar = lazy.ZenSyncStore.getSidebarData();
for (const space of sidebar.spaces || []) {
if (space.uuid) {
ids[createRecordId("space", space.uuid)] = true;
}
}
for (const c of lazy.ContextualIdentityService.getPublicIdentities()) {
ids[createRecordId("container", c.userContextId)] = true;
}
return ids;
}
async itemExists(id) {
const parsed = parseRecordId(id);
if (!parsed) {
return false;
}
const sidebar = lazy.ZenSyncStore.getSidebarData();
switch (parsed.type) {
case "space":
return (sidebar.spaces || []).some(s => s.uuid === parsed.key);
case "container":
return lazy.ContextualIdentityService.getPublicIdentities().some(
c => String(c.userContextId) === parsed.key
);
default:
return false;
}
}
async createRecord(id, collection) {
const record = new ZenWorkspacesRecord(collection, id);
const parsed = parseRecordId(id);
if (!parsed) {
record.deleted = true;
return record;
}
const sidebar = lazy.ZenSyncStore.getSidebarData();
switch (parsed.type) {
case "space": {
const spaces = sidebar.spaces || [];
const idx = spaces.findIndex(s => s.uuid === parsed.key);
if (idx === -1) {
record.deleted = true;
return record;
}
const rest = { ...spaces[idx] };
delete rest.syncStatus;
record.cleartext = { id, type: "space", ...rest, position: idx };
break;
}
case "container": {
const container =
lazy.ContextualIdentityService.getPublicIdentities().find(
c => String(c.userContextId) === parsed.key
);
if (!container) {
record.deleted = true;
return record;
}
record.cleartext = {
id,
type: "container",
userContextId: container.userContextId,
name: container.name,
icon: container.icon,
color: container.color,
};
break;
}
default:
record.deleted = true;
}
return record;
}
async applyIncomingBatch(records, _countTelemetry) {
const pulled = { spaces: [], containers: [] };
const removals = { spaces: [], containers: [] };
for (const record of records) {
if (record.deleted) {
this._collectRemoval(record.id, removals);
continue;
}
const data = record.cleartext;
if (!data?.type) {
continue;
}
const clean = stripSyncFields(data);
switch (data.type) {
case "space":
pulled.spaces.push(clean);
break;
case "container":
pulled.containers.push(clean);
break;
}
}
// Suppress change tracking while applying incoming data to prevent
// feedback loops where applied items get re-uploaded immediately.
this.engine._tracker.ignoreAll = true;
try {
await lazy.ZenSyncStore.applyIncomingBatch(pulled, removals);
} finally {
this.engine._tracker.ignoreAll = false;
}
return [];
}
_collectRemoval(id, removals) {
const parsed = parseRecordId(id);
if (!parsed) {
return;
}
switch (parsed.type) {
case "space":
removals.spaces.push({ uuid: parsed.key });
break;
case "container": {
const userContextId = normalizeUserContextId(parsed.key);
if (userContextId === null) {
console.warn(
"ZenWorkspacesStore: Ignoring container removal with invalid userContextId",
{ id }
);
break;
}
removals.containers.push({ userContextId });
break;
}
}
}
async create(record) {
await this._applySingle(record);
}
async update(record) {
await this._applySingle(record);
}
async _applySingle(record) {
this.engine._tracker.ignoreAll = true;
try {
if (record.deleted) {
const removals = { spaces: [], containers: [] };
this._collectRemoval(record.id, removals);
await lazy.ZenSyncStore.applyIncomingBatch(
{ spaces: [], containers: [] },
removals
);
return;
}
const data = record.cleartext;
if (!data?.type) {
return;
}
const clean = stripSyncFields(data);
const pulled = { spaces: [], containers: [] };
switch (data.type) {
case "space":
pulled.spaces.push(clean);
break;
case "container":
pulled.containers.push(clean);
break;
}
await lazy.ZenSyncStore.applyIncomingBatch(pulled, {
spaces: [],
containers: [],
});
} finally {
this.engine._tracker.ignoreAll = false;
}
}
async remove() {
// No-op: never delete user data on wipe
}
async wipe() {
// No-op: never delete user data on wipe
}
changeItemID() {
// No-op
}
}
/**
* Sync tracker that watches workspace and contextual identity observers and
* marks the corresponding record IDs as changed.
*/
class ZenWorkspacesTracker extends Tracker {
#changedIDs = {};
#ignoreAll = false;
get ignoreAll() {
return this.#ignoreAll;
}
set ignoreAll(value) {
this.#ignoreAll = value;
}
onStart() {
Services.obs.addObserver(this, "zen-workspace-item-changed");
Services.obs.addObserver(this, "contextual-identity-created");
Services.obs.addObserver(this, "contextual-identity-updated");
Services.obs.addObserver(this, "contextual-identity-deleted");
}
onStop() {
Services.obs.removeObserver(this, "zen-workspace-item-changed");
Services.obs.removeObserver(this, "contextual-identity-created");
Services.obs.removeObserver(this, "contextual-identity-updated");
Services.obs.removeObserver(this, "contextual-identity-deleted");
}
observe(subject, topic, _data) {
if (this.#ignoreAll) {
return;
}
if (topic === "zen-workspace-item-changed") {
const type = subject?.wrappedJSObject?.type;
const id = subject?.wrappedJSObject?.id;
if (type && id) {
this._trackChange({ type, id });
}
} else if (topic.startsWith("contextual-identity-")) {
const id = subject?.wrappedJSObject?.userContextId;
if (id && normalizeUserContextId(id) !== null) {
this._trackChange({ type: "container", id });
}
}
}
_trackChange(data) {
if (data.type && data.id) {
const id = createRecordId(data.type, data.id);
this.#changedIDs[id] = Date.now() / 1000;
this.score += SCORE_INCREMENT_XLARGE;
}
}
async getChangedIDs() {
return { ...this.#changedIDs };
}
async addChangedID(id, when) {
this.#changedIDs[id] = when;
return true;
}
async removeChangedID(...ids) {
for (const id of ids) {
delete this.#changedIDs[id];
}
return true;
}
clearChangedIDs() {
this.#changedIDs = {};
}
}
/**
* Sync engine entrypoint that wires the Workspaces record, store, and tracker
* implementations into Firefox Sync.
*/
export class ZenWorkspacesEngine extends SyncEngine {
static get name() {
return "Spaces";
}
constructor(service) {
super("Spaces", service);
}
get _storeObj() {
return ZenWorkspacesStore;
}
get _trackerObj() {
return ZenWorkspacesTracker;
}
get _recordObj() {
return ZenWorkspacesRecord;
}
get version() {
return 2;
}
get syncPriority() {
return 8;
}
get allowSkippedRecord() {
return false;
}
}

View File

@@ -1,8 +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/.
EXTRA_JS_MODULES.zen += [
"ZenSyncManager.sys.mjs",
"ZenWorkspacesSync.sys.mjs",
]

View File

@@ -837,7 +837,7 @@ class nsZenPinnedTabManager extends nsZenDOMOperatedFeature {
if (essentialTabsTarget) { if (essentialTabsTarget) {
if (gZenWorkspaces.containerSpecificEssentials) { if (gZenWorkspaces.containerSpecificEssentials) {
const targetContainerId = const targetContainerId =
gZenWorkspaces.getActiveWorkspaceFromCache().containerTabId; gZenWorkspaces.getActiveWorkspaceFromCache().containerTabId || 0;
const sameContextId = const sameContextId =
(tab.getAttribute("usercontextid") || 0) == targetContainerId; (tab.getAttribute("usercontextid") || 0) == targetContainerId;
if (!sameContextId && tab.hasAttribute("zen-essential")) { if (!sameContextId && tab.hasAttribute("zen-essential")) {
@@ -1022,7 +1022,7 @@ class nsZenPinnedTabManager extends nsZenDOMOperatedFeature {
return ( return (
!( !(
(tab.getAttribute("usercontextid") || 0) != (tab.getAttribute("usercontextid") || 0) !=
gZenWorkspaces.getActiveWorkspaceFromCache().containerTabId && (gZenWorkspaces.getActiveWorkspaceFromCache().containerTabId || 0) &&
gZenWorkspaces.containerSpecificEssentials gZenWorkspaces.containerSpecificEssentials
) && gBrowser._numZenEssentials < this.maxEssentialTabs ) && gBrowser._numZenEssentials < this.maxEssentialTabs
); );

View File

@@ -21,7 +21,7 @@ const MINIMUM_QUERY_SCORE = 92;
const MINIMUM_PREFIXED_QUERY_SCORE = 30; const MINIMUM_PREFIXED_QUERY_SCORE = 30;
ChromeUtils.defineESModuleGetters(lazy, { ChromeUtils.defineESModuleGetters(lazy, {
UrlbarResult: "moz-src:///browser/components/urlbar/UrlbarResult.sys.mjs", UrlbarResult: "chrome://browser/content/urlbar/UrlbarResult.mjs",
BrowserWindowTracker: "resource:///modules/BrowserWindowTracker.sys.mjs", BrowserWindowTracker: "resource:///modules/BrowserWindowTracker.sys.mjs",
AddonManager: "resource://gre/modules/AddonManager.sys.mjs", AddonManager: "resource://gre/modules/AddonManager.sys.mjs",
UrlUtils: "resource://gre/modules/UrlUtils.sys.mjs", UrlUtils: "resource://gre/modules/UrlUtils.sys.mjs",
@@ -134,11 +134,6 @@ function payloadAndSimpleHighlights(tokens, payloadInfo) {
export class ZenUrlbarProviderGlobalActions extends UrlbarProvider { export class ZenUrlbarProviderGlobalActions extends UrlbarProvider {
#seenCommands = new Set(); #seenCommands = new Set();
constructor() {
super();
lazy.UrlbarResult.addDynamicResultType(DYNAMIC_TYPE_NAME);
}
get name() { get name() {
return "ZenUrlbarProviderGlobalActions"; return "ZenUrlbarProviderGlobalActions";
} }

View File

@@ -5,8 +5,8 @@
"binaryName": "zen", "binaryName": "zen",
"version": { "version": {
"product": "firefox", "product": "firefox",
"version": "152.0.6", "version": "153.0",
"candidate": "152.0.6", "candidate": "153.0",
"candidateBuild": 1 "candidateBuild": 1
}, },
"buildOptions": { "buildOptions": {
@@ -20,7 +20,7 @@
"brandShortName": "Zen", "brandShortName": "Zen",
"brandFullName": "Zen Browser", "brandFullName": "Zen Browser",
"release": { "release": {
"displayVersion": "1.21.7b", "displayVersion": "1.21.9b",
"github": { "github": {
"repo": "zen-browser/desktop" "repo": "zen-browser/desktop"
}, },

View File

@@ -346,17 +346,6 @@ fn expand_pref_values(prefs: &mut [Preference]) {
} }
pref.value = new_value.clone(); pref.value = new_value.clone();
} }
// Also change the condition if it contains placeholders
if let Some(condition) = &pref.condition {
let mut new_condition = condition.clone();
for (key, value) in &env_values {
let placeholder = format!("@{}@", key);
if new_condition.contains(&placeholder) {
new_condition = new_condition.replace(&placeholder, if *value { "1" } else { "0" });
}
pref.condition = Some(new_condition.clone());
}
}
} }
} }