tbb-commits
Threads by month
- ----- 2025 -----
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- 1 participants
- 18563 discussions

[Git][tpo/applications/rbm][main] Bug 40085: Add the "rbm show_used_projects" command
by morgan (@morgan) 19 Jun '25
by morgan (@morgan) 19 Jun '25
19 Jun '25
morgan pushed to branch main at The Tor Project / Applications / RBM
Commits:
1b1b183f by Nicolas Vigier at 2025-06-19T15:45:19+02:00
Bug 40085: Add the "rbm show_used_projects" command
- - - - -
5 changed files:
- doc/Makefile
- doc/documentation.asc
- + doc/rbm-show_used_projects.asc
- lib/RBM.pm
- rbm
Changes:
=====================================
doc/Makefile
=====================================
@@ -27,6 +27,7 @@ MAN1_ASC += rbm.asc
MAN1_ASC += rbm-usage.asc
MAN1_ASC += rbm-tar.…
[View More]asc
MAN1_ASC += rbm-showconf.asc
+MAN1_ASC += rbm-show_used_projects.asc
MAN1_ASC += rbm-fetch.asc
MAN1_ASC += rbm-build.asc
=====================================
doc/documentation.asc
=====================================
@@ -15,6 +15,7 @@ rbm commands :
- link:rbm-usage.html[rbm-usage(1)]
- link:rbm-tar.html[rbm-tar(1)]
- link:rbm-showconf.html[rbm-showconf(1)]
+- link:rbm-show_used_projects.html[rbm-show_used_projects(1)]
- link:rbm-build.html[rbm-build(1)]
- link:rbm-fetch.html[rbm-fetch(1)]
=====================================
doc/rbm-show_used_projects.asc
=====================================
@@ -0,0 +1,37 @@
+rbm-show_used_projects(1)
+=========================
+
+NAME
+----
+rbm-show_used_projects - Show which projects are used when processing a config option
+
+
+SYNOPSIS
+--------
+[verse]
+'rbm show_used_projects' <project> <config name> [options]
+
+DESCRIPTION
+-----------
+
+This command works in a similar way to showconf, but instead of printing
+the selected config option, it will print the projects that were used
+while processing this option.
+
+COMMAND LINE OPTIONS
+--------------------
+See link:rbm_cli.html[rbm_cli(7)].
+
+EXAMPLE
+-------
+
+Show which projects are being used when processing the build script
+from the 'release' project using the 'alpha' target:
+----
+$ rbm show_used_projects release build --target alpha
+----
+
+SEE ALSO
+--------
+link:rbm.html[rbm(1)],
+link:rbm_config.html[rbm_config(7)]
=====================================
lib/RBM.pm
=====================================
@@ -34,6 +34,13 @@ BEGIN {
our $config;
+our %used_projects;
+our $store_used_projects;
+
+sub get_used_projects {
+ return sort keys %used_projects;
+}
+
sub load_config_file {
my $res = {};
my @conf;
@@ -243,6 +250,7 @@ sub confkey_str {
sub project_config {
my ($project, $name, $options) = @_;
+ $used_projects{$project} = 1 if $store_used_projects;
CORE::state %config_cache;
my $res;
my $error_if_undef = $options->{error_if_undef};
=====================================
rbm
=====================================
@@ -30,6 +30,10 @@ my %actions = (
run => \&show_conf,
descr => 'Show configuration',
},
+ show_used_projects => {
+ run => \&show_used_projects,
+ descr => 'Show the list of used projects when getting a config option',
+ },
usage => {
run => \&usage,
descr => 'Show usage information for an action',
@@ -104,6 +108,19 @@ sub show_conf {
print ref $r ? YAML::XS::Dump($r) : "$r\n";
}
+sub show_used_projects {
+ shift;
+ my $args = set_options(@_);
+ usageexit('show_used_projects') unless @$args == 2;
+ my $project = shift @$args;
+ $RBM::store_used_projects = 1;
+ RBM::valid_project($project);
+ my $r = RBM::project_config($project, @$args);
+ RBM::exit_error "Undefined" unless defined $r;
+ my @usedprojects = RBM::get_used_projects;
+ print join("\n", @usedprojects), "\n";
+}
+
sub fetch {
shift;
$RBM::config->{run}{fetch} = 1;
View it on GitLab: https://gitlab.torproject.org/tpo/applications/rbm/-/commit/1b1b183f85b3602…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/rbm/-/commit/1b1b183f85b3602…
You're receiving this email because of your account on gitlab.torproject.org.
[View Less]
1
0

[Git][tpo/applications/tor-browser-build][main] Bug 34434: Remove unused variables from rbm.conf
by morgan (@morgan) 19 Jun '25
by morgan (@morgan) 19 Jun '25
19 Jun '25
morgan pushed to branch main at The Tor Project / Applications / tor-browser-build
Commits:
242984e0 by Nicolas Vigier at 2025-06-19T19:07:52+00:00
Bug 34434: Remove unused variables from rbm.conf
- - - - -
1 changed file:
- rbm.conf
Changes:
=====================================
rbm.conf
=====================================
@@ -150,8 +150,7 @@ var:
[% SET step = c("step") -%]
[% c(step, { filename => 'f', output_dir => '/out', norec => {} }) %]
- …
[View More]Project_Name_Channel: '[% c("var/Project_Name") %] [% c("var/channel") FILTER ucfirst %]'
- display_name: '[% c("var/Project_Name_Channel") %]'
+ display_name: '[% c("var/Project_Name") %] [% c("var/channel") FILTER ucfirst %]'
exe_name: firefox
faketime_date: "[% USE date; GET date.format(c('timestamp'), format = '%Y-%m-%d %H:%M:%S') %]"
faketime_setup: |
@@ -269,7 +268,6 @@ var:
[% END -%]
- DOCSDIR_project: '[% project %]'
set_MOZ_BUILD_DATE: 'export MOZ_BUILD_DATE=[% c("var/MOZ_BUILD_DATE") %]'
MOZ_BUILD_DATE: '[% USE date; date.format(c("var/browser_release_date"), "%Y%m%d%H%M%S") %]'
@@ -467,7 +465,6 @@ targets:
compiler: android-toolchain
android_min_api: 21
CC: '[% c("var/cross_prefix") %][% c("var/android_min_api") %]-clang'
- CXX: '[% c("var/cross_prefix") %][% c("var/android_min_api") %]-clang'
container:
suite: bookworm
arch: amd64
@@ -592,9 +589,6 @@ targets:
platform: linux
compiler: gcc
configure_opt: '[% c("var/configure_opt_project") %]'
- # Only build Namecoin for linux on nightly
- # Temporarily disabled until we have a fix for tor-browser-build#40845
- #namecoin: '[% c("var/nightly") && c("var/tor-browser") %]'
container:
suite: stretch
arch: amd64
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/2…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/2…
You're receiving this email because of your account on gitlab.torproject.org.
[View Less]
1
0

[Git][tpo/applications/tor-browser-build][main] 3 commits: Bug 41444: Fix android artifact generation
by brizental (@brizental) 19 Jun '25
by brizental (@brizental) 19 Jun '25
19 Jun '25
brizental pushed to branch main at The Tor Project / Applications / tor-browser-build
Commits:
83acc092 by Beatriz Rizental at 2025-06-18T18:36:17+02:00
Bug 41444: Fix android artifact generation
- - - - -
dde97fb2 by Beatriz Rizental at 2025-06-18T18:36:19+02:00
Bug 41444: Fix macos and windows artifact generation
There were multiple issues.
For MacOS there were missing tools, namely hfsplus and libdmg,
the location of some bundle files were different than expected
and teh generated …
[View More]artifacts were not the same as the ones in
Linux, so we were copying the wrong things. Finally, we were not
taking into account universal builds when copying artifacts.
For Windows we were just not copying the right artifacts.
- - - - -
d5e2db25 by Beatriz Rizental at 2025-06-19T14:16:37+02:00
Bug 41444: Put geckoview build artifacts in separate folders
Otherwise different architecture artifacts override each other.
Also stop compressing the final folder. It's not worth it, the size
difference is minimal.
- - - - -
27 changed files:
- projects/browser/build
- projects/browser/build.android
- projects/browser/config
- projects/browser/Bundle-Data/BaseBrowser.dmg/.VolumeIcon.icns → projects/common/dmg-root/BaseBrowser.dmg/.VolumeIcon.icns
- projects/browser/Bundle-Data/BaseBrowser.dmg/.background/background.tiff → projects/common/dmg-root/BaseBrowser.dmg/.background/background.tiff
- projects/browser/Bundle-Data/BaseBrowser.dmg/alpha.DS_Store → projects/common/dmg-root/BaseBrowser.dmg/alpha.DS_Store
- projects/browser/Bundle-Data/BaseBrowser.dmg/nightly.DS_Store → projects/common/dmg-root/BaseBrowser.dmg/nightly.DS_Store
- projects/browser/Bundle-Data/BaseBrowser.dmg/release.DS_Store → projects/common/dmg-root/BaseBrowser.dmg/release.DS_Store
- projects/browser/Bundle-Data/MullvadBrowser.dmg/.VolumeIcon.icns → projects/common/dmg-root/MullvadBrowser.dmg/.VolumeIcon.icns
- projects/browser/Bundle-Data/MullvadBrowser.dmg/.background/background.png → projects/common/dmg-root/MullvadBrowser.dmg/.background/background.png
- projects/browser/Bundle-Data/MullvadBrowser.dmg/alpha.DS_Store → projects/common/dmg-root/MullvadBrowser.dmg/alpha.DS_Store
- projects/browser/Bundle-Data/MullvadBrowser.dmg/nightly.DS_Store → projects/common/dmg-root/MullvadBrowser.dmg/nightly.DS_Store
- projects/browser/Bundle-Data/MullvadBrowser.dmg/release.DS_Store → projects/common/dmg-root/MullvadBrowser.dmg/release.DS_Store
- projects/browser/Bundle-Data/TorBrowser.dmg/.VolumeIcon.icns → projects/common/dmg-root/TorBrowser.dmg/.VolumeIcon.icns
- projects/browser/Bundle-Data/TorBrowser.dmg/.background/dmg-window_2x.png → projects/common/dmg-root/TorBrowser.dmg/.background/dmg-window_2x.png
- projects/browser/Bundle-Data/TorBrowser.dmg/alpha.DS_Store → projects/common/dmg-root/TorBrowser.dmg/alpha.DS_Store
- projects/browser/Bundle-Data/TorBrowser.dmg/nightly.DS_Store → projects/common/dmg-root/TorBrowser.dmg/nightly.DS_Store
- projects/browser/Bundle-Data/TorBrowser.dmg/release.DS_Store → projects/common/dmg-root/TorBrowser.dmg/release.DS_Store
- projects/firefox/build
- projects/firefox/config
- projects/firefox/mozconfig
- projects/geckoview/build
- projects/geckoview/build_ac_fenix
- projects/geckoview/build_apk
- projects/geckoview/build_common
- projects/geckoview/config
- tools/signing/gatekeeper-bundling.sh
Changes:
=====================================
projects/browser/build
=====================================
@@ -217,7 +217,7 @@ tar -C "${TB_STAGE_DIR}" -xf [% c('input_files_by_name/firefox') %]/browser.tar.
END; %]
[% IF c("var/macos") %]
- tar -C "Bundle-Data/[% c('var/ProjectName') %].dmg" -c . | tar -C "$TB_STAGE_DIR" -x
+ tar -C "$rootdir/dmg-root/[% c('var/ProjectName') %].dmg" -c . | tar -C "$TB_STAGE_DIR" -x
pushd "$TB_STAGE_DIR"
cp [% c('var/channel') %].DS_Store .DS_Store
rm *.DS_Store
@@ -429,7 +429,14 @@ cd $distdir
popd
[% END %]
-[% IF c("var/nightly") && c("var/linux") -%]
- mkdir -p "$OUTDIR"/artifacts
- cp -r $rootdir/[% c('input_files_by_name/firefox') %]/artifacts "$OUTDIR"
+[% IF c("var/nightly") -%]
+ [% IF c("var/macos_universal") -%]
+ mkdir -p "$OUTDIR"/artifacts/aarch64
+ cp -a $rootdir/[% c('input_files_by_name/firefox-aarch64') %]/artifacts/. "$OUTDIR/artifacts/aarch64"
+ mkdir -p "$OUTDIR"/artifacts/x86_64
+ cp -a $rootdir/[% c('input_files_by_name/firefox') %]/artifacts/. "$OUTDIR/artifacts/x86_64"
+ [% ELSE -%]
+ mkdir -p "$OUTDIR"/artifacts
+ cp -a $rootdir/[% c('input_files_by_name/firefox') %]/artifacts "$OUTDIR"
+ [% END -%]
[% END %]
=====================================
projects/browser/build.android
=====================================
@@ -2,8 +2,6 @@
[% c("var/set_default_env") -%]
[% pc(c('var/compiler'), 'var/setup', { compiler_tarfile => c('input_files_by_name/' _ c('var/compiler')) }) %]
-tar -xf $rootdir/[% c('input_files_by_name/fenix') %]
-
# Bundle our extension(s).
#
# NoScript will be copied over to the profile folder
@@ -97,20 +95,22 @@ function generate_apk {
rm $aligned_apk
}
+geckoviewdir="$rootdir/[% c('input_files_by_name/fenix') %]/geckoview"
+
# Generate the QA APK and unsign patch.
qa_apk=[% dest_dir %]/[% c('filename') %]/[% c("var/project-name") %]-qa-[% c("var/osname") %]-[% c("version") %].apk
qa_unsign_patch="[% dest_dir %]/[% c('filename') %]/[% c('var/project-name') %]-qa-unsign-[% c('var/osname') %]-[% c('version') %].bspatch"
-apk=$rootdir/geckoview/*-[% c("var/abi") %]-*.apk
+apk=$geckoviewdir/*-[% c("var/abi") %]-*.apk
generate_apk $qa_apk $apk $qa_unsign_patch
# Generate the non-optimized APK used for testing and its unsign patch.
noopt_apk=[% dest_dir %]/[% c('filename') %]/[% c("var/project-name") %]-noopt-[% c("var/osname") %]-[% c("version") %].apk
-noopt_final_apk=$rootdir/geckoview/tests/*-[% c("var/abi") %]-*.apk
+noopt_final_apk=$geckoviewdir/tests/*-[% c("var/abi") %]-*.apk
generate_apk $noopt_apk $noopt_final_apk
# Copy and sign the Android test APK.
test_apk=[% dest_dir %]/[% c('filename') %]/[% c("var/project-name") %]-[% c("version") %]-androidTest.apk
-cp $rootdir/geckoview/tests/*-androidTest.apk $test_apk
+cp $geckoviewdir/tests/*-androidTest.apk $test_apk
apksigner sign --verbose --min-sdk-version [% c("var/android_min_api") %] --ks $rootdir/android-qa.keystore --out $test_apk --in $test_apk --ks-key-alias androidqakey --key-pass pass:android --ks-pass pass:android
[%IF c("var/tor-browser") -%]
@@ -122,5 +122,5 @@ apksigner sign --verbose --min-sdk-version [% c("var/android_min_api") %] --ks $
[% IF c("var/nightly") -%]
mkdir -p "[% dest_dir %]/[% c('filename') %]/artifacts"
- cp -r $rootdir/geckoview/artifacts [% dest_dir %]/[% c('filename') %]
+ cp -r $rootdir/[% c('input_files_by_name/fenix') %]/artifacts [% dest_dir %]/[% c('filename') %]
[% END %]
=====================================
projects/browser/config
=====================================
@@ -111,6 +111,8 @@ input_files:
enable: '[% ! c("var/android") %]'
- filename: Bundle-Data
enable: '[% ! c("var/android") %]'
+ - filename: dmg-root
+ enable: '[% ! c("var/android") %]'
- URL: https://addons.mozilla.org/firefox/downloads/file/4411102/noscript-12.1.1.x…
name: noscript
sha256sum: f9639e63ffcfc352036de00e4ff6694bb0ca65a0bb8fbd103bd08f32dc1ff31a
=====================================
projects/browser/Bundle-Data/BaseBrowser.dmg/.VolumeIcon.icns → projects/common/dmg-root/BaseBrowser.dmg/.VolumeIcon.icns
=====================================
=====================================
projects/browser/Bundle-Data/BaseBrowser.dmg/.background/background.tiff → projects/common/dmg-root/BaseBrowser.dmg/.background/background.tiff
=====================================
=====================================
projects/browser/Bundle-Data/BaseBrowser.dmg/alpha.DS_Store → projects/common/dmg-root/BaseBrowser.dmg/alpha.DS_Store
=====================================
=====================================
projects/browser/Bundle-Data/BaseBrowser.dmg/nightly.DS_Store → projects/common/dmg-root/BaseBrowser.dmg/nightly.DS_Store
=====================================
=====================================
projects/browser/Bundle-Data/BaseBrowser.dmg/release.DS_Store → projects/common/dmg-root/BaseBrowser.dmg/release.DS_Store
=====================================
=====================================
projects/browser/Bundle-Data/MullvadBrowser.dmg/.VolumeIcon.icns → projects/common/dmg-root/MullvadBrowser.dmg/.VolumeIcon.icns
=====================================
=====================================
projects/browser/Bundle-Data/MullvadBrowser.dmg/.background/background.png → projects/common/dmg-root/MullvadBrowser.dmg/.background/background.png
=====================================
=====================================
projects/browser/Bundle-Data/MullvadBrowser.dmg/alpha.DS_Store → projects/common/dmg-root/MullvadBrowser.dmg/alpha.DS_Store
=====================================
=====================================
projects/browser/Bundle-Data/MullvadBrowser.dmg/nightly.DS_Store → projects/common/dmg-root/MullvadBrowser.dmg/nightly.DS_Store
=====================================
=====================================
projects/browser/Bundle-Data/MullvadBrowser.dmg/release.DS_Store → projects/common/dmg-root/MullvadBrowser.dmg/release.DS_Store
=====================================
=====================================
projects/browser/Bundle-Data/TorBrowser.dmg/.VolumeIcon.icns → projects/common/dmg-root/TorBrowser.dmg/.VolumeIcon.icns
=====================================
=====================================
projects/browser/Bundle-Data/TorBrowser.dmg/.background/dmg-window_2x.png → projects/common/dmg-root/TorBrowser.dmg/.background/dmg-window_2x.png
=====================================
=====================================
projects/browser/Bundle-Data/TorBrowser.dmg/alpha.DS_Store → projects/common/dmg-root/TorBrowser.dmg/alpha.DS_Store
=====================================
=====================================
projects/browser/Bundle-Data/TorBrowser.dmg/nightly.DS_Store → projects/common/dmg-root/TorBrowser.dmg/nightly.DS_Store
=====================================
=====================================
projects/browser/Bundle-Data/TorBrowser.dmg/release.DS_Store → projects/common/dmg-root/TorBrowser.dmg/release.DS_Store
=====================================
=====================================
projects/firefox/build
=====================================
@@ -49,6 +49,11 @@ export PATH="/var/tmp/dist/rust/bin:/var/tmp/dist/cbindgen:/var/tmp/dist/node/bi
[% END -%]
[% END -%]
+[% IF c("var/macos") && c("var/nightly") %]
+ tar -C /var/tmp/dist -xf $rootdir/[% c('input_files_by_name/hfsplus-tools') %]
+ tar -C /var/tmp/dist -xf $rootdir/[% c('input_files_by_name/libdmg') %]
+[% END %]
+
[% IF c("var/rlbox") -%]
tar -C /var/tmp/dist -xf [% c('input_files_by_name/wasi-sysroot') %]
export WASI_SYSROOT=/var/tmp/dist/wasi-sysroot
@@ -128,16 +133,36 @@ echo "Starting ./mach build $(date)"
./mach build stage-package
[% END -%]
-[% IF c("var/nightly") && c("var/linux") -%]
+[% IF c("var/nightly") -%]
echo "Building development artifacts"
+
+ [% IF c("var/macos") -%]
+ export MOZ_PKG_MAC_BACKGROUND=$rootdir/dmg-root/[% c('var/ProjectName') %].dmg/.background/background.tiff
+ export MOZ_PKG_MAC_DSSTORE=$rootdir/dmg-root/[% c('var/ProjectName') %].dmg/nightly.DS_Store
+ export MOZ_PKG_MAC_ICON=$rootdir/dmg-root/[% c('var/ProjectName') %].dmg/.VolumeIcon.icns
+ [% END -%]
./mach package
artifactsdir=[% out_dir %]/artifacts
mkdir $artifactsdir
+
# Copy the artifacts to the target directory
# Naming convention is the same as Mozilla uses for their artifacts
- cp -a obj-*/dist/*.tar.xz $artifactsdir/target.tar.xz
- cp -a obj-*/dist/*.zip $artifactsdir/target.xpt_artifacts.zip
+ mv obj-*/dist/*.xpt_artifacts.zip $artifactsdir/target.xpt_artifacts.zip
+
+ [% IF c("var/macos") -%]
+ mv obj-*/dist/*.dmg $artifactsdir/target.dmg
+ mv obj-*/dist/*.update_framework_artifacts.zip $artifactsdir/target.update_framework_artifacts.zip
+ [% END -%]
+
+ [% IF c("var/linux") -%]
+ mv obj-*/dist/*.tar.xz $artifactsdir/target.tar.xz
+ [% END -%]
+
+ [% IF c("var/windows") -%]
+ mv obj-*/dist/*.zip $artifactsdir/target.zip
+ [% END -%]
+
./mach python -m mozbuild.action.test_archive common $artifactsdir/target.common.tests.tar.gz
[% END %]
=====================================
projects/firefox/config
=====================================
@@ -249,3 +249,11 @@ input_files:
# TorButton patch authored by Arthur Edelstein, from https://github.com/arthuredelstein/torbutton/ branch 2.1.10-namecoin
- filename: namecoin-etld.patch
enable: '[% c("var/namecoin") %]'
+ - filename: dmg-root
+ enable: '[% c("var/macos") && c("var/nightly") %]'
+ - project: hfsplus-tools
+ name: hfsplus-tools
+ enable: '[% c("var/macos") && c("var/nightly") %]'
+ - project: libdmg-hfsplus
+ name: libdmg
+ enable: '[% c("var/macos") && c("var/nightly") %]'
=====================================
projects/firefox/mozconfig
=====================================
@@ -56,6 +56,12 @@
export TOOLCHAIN_PREFIX=$CROSS_CCTOOLS_PATH/bin/[% c('var/build_target') %]-
export DSYMUTIL="$TOOLCHAIN_DIR/clang/bin/dsymutil"
+ [% IF c("var/nightly") -%]
+ export MKFSHFS=/var/tmp/dist/hfsplus-tools/newfs_hfs
+ export DMG_TOOL=/var/tmp/dist/libdmg-hfsplus/dmg
+ export HFS_TOOL=/var/tmp/dist/libdmg-hfsplus/hfsplus
+ [% END -%]
+
export HOST_CFLAGS="-g"
export HOST_CXXFLAGS="-g"
export HOST_LDFLAGS="-g"
=====================================
projects/geckoview/build
=====================================
@@ -38,7 +38,7 @@ echo "Starting ./mach build $(date)"
echo "Building development artifacts"
./mach package
- artifactsdir=[% dest_dir %]/artifacts
+ artifactsdir=$outdir/artifacts
mkdir -p $artifactsdir
# Copy the artifacts to the target directory
# Naming convention is the same as Mozilla uses for their artifacts
@@ -50,16 +50,9 @@ echo "Starting ./mach build $(date)"
echo "Build finished, copying the AAR to the to the destination directory $(date)"
[% IF !c("var/android_single_arch") -%]
- mkdir "$distdir/[% project %]"
+ mkdir -p "$outdir/[% project %]"
# We don't want the debug or "exoplayer" .aars, but the .aar that has `omni` in its name.
- find obj-* -type f -name geckoview*omni*.aar -exec cp {} $distdir/[% project %] \;
+ find obj-* -type f -name geckoview*omni*.aar -exec mv {} $outdir/[% project %] \;
[% ELSE -%]
[% INCLUDE 'build_ac_fenix' %]
[% END -%]
-
-echo "Starting to package artifacts $(date)"
-cd $distdir
-[% c('tar', {
- tar_src => [ project ],
- tar_args => '-caf ' _ dest_dir _ '/' _ c('filename'),
- }) %]
=====================================
projects/geckoview/build_ac_fenix
=====================================
@@ -27,7 +27,7 @@ echo autoPublish.android-components.dir=../android-components > local.properties
# Add our localized strings
supported_locales="[% tmpl(c('var/locales_mobile').join(' ')) %]"
for lang in $supported_locales; do
- cp "/var/tmp/dist/translation-fenix/$lang/torbrowser_strings.xml" "app/src/main/res/values-$lang/"
+ cp "$distdir/translation-fenix/$lang/torbrowser_strings.xml" "app/src/main/res/values-$lang/"
done
[% END -%]
@@ -41,8 +41,8 @@ echo "Building $variant Fenix APK"
gradle $GRADLE_FLAGS -PversionName="$version_name" "assemble$variant"
echo "Build finished, copying the APK(s) to the destination directory $(date)"
-mkdir $distdir/[% project %]
-cp $objdir/gradle/build/mobile/android/fenix/app/outputs/apk/fenix/$variant/*.apk $distdir/[% project %]
+mkdir -p $outdir/[% project %]
+mv $objdir/gradle/build/mobile/android/fenix/app/outputs/apk/fenix/$variant/*.apk $outdir/[% project %]
echo "Building non optimized $variant Fenix APK for testing"
gradle $GRADLE_FLAGS -PversionName="$version_name" -PdisableOptimization "assemble$variant"
@@ -52,9 +52,8 @@ gradle $GRADLE_FLAGS -PversionName="$version_name" -PtestBuildType="$variant" -P
echo "Test build finished, copying the APKs to the destination directory $(date)"
-mkdir $distdir/[% project %]/tests
-cp $objdir/gradle/build/mobile/android/fenix/app/outputs/apk/fenix/$variant/*.apk $distdir/[% project %]/tests
-cp $objdir/gradle/build/mobile/android/fenix/app/outputs/apk/androidTest/fenix/$variant/*.apk $distdir/[% project %]/tests
+mkdir -p $outdir/[% project %]/tests
+mv $objdir/gradle/build/mobile/android/fenix/app/outputs/apk/fenix/$variant/*.apk $outdir/[% project %]/tests
+mv $objdir/gradle/build/mobile/android/fenix/app/outputs/apk/androidTest/fenix/$variant/*.apk $outdir/[% project %]/tests
popd
-
=====================================
projects/geckoview/build_apk
=====================================
@@ -38,9 +38,3 @@ echo "ac_add_options --with-branding=$branding_dir" >> mozconfig-android-all
./mach build --verbose
[% INCLUDE 'build_ac_fenix' %]
-
-cd $distdir/
-[% c('tar', {
- tar_src => [ project ],
- tar_args => '-caf ' _ dest_dir _ '/' _ c('filename'),
- }) %]
=====================================
projects/geckoview/build_common
=====================================
@@ -5,7 +5,8 @@
}) %]
distdir=/var/tmp/dist
builddir=/var/tmp/build
-mkdir -p $builddir $distdir
+outdir="[% dest_dir _ '/' _ c('filename') -%]"
+mkdir -p $builddir $distdir $outdir
tar -C $distdir -xf [% c('input_files_by_name/node') %]
export PATH="/var/tmp/dist/node/bin:$PATH"
=====================================
projects/geckoview/config
=====================================
@@ -1,6 +1,6 @@
# vim: filetype=yaml sw=2
version: '[% c("abbrev") %]'
-filename: 'geckoview-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.[% c("compress_tar") %]'
+filename: 'geckoview-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %]'
git_hash: 'tor-browser-[% c("var/geckoview_version") %]-[% c("var/browser_branch") %]-build[% c("var/browser_build") %]'
tag_gpg_id: 1
git_url: https://gitlab.torproject.org/tpo/applications/tor-browser.git
@@ -59,7 +59,7 @@ targets:
steps:
build_apk:
- filename: 'geckoview-[% c("version") %]-apks-[% c("var/build_id") %].tar.[% c("compress_tar") %]'
+ filename: 'geckoview-[% c("version") %]-apks-[% c("var/build_id") %]'
version: '[% c("abbrev") %]'
build_apk: '[% INCLUDE build_apk %]'
input_files:
=====================================
tools/signing/gatekeeper-bundling.sh
=====================================
@@ -64,7 +64,7 @@ test -d "$macos_signed_dir" || mkdir "$macos_signed_dir"
tmpdir="$macos_stapled_dir/tmp"
rm -Rf "$tmpdir"
mkdir "$tmpdir"
-cp -rT "$script_dir/../../projects/browser/Bundle-Data/$ProjName.dmg" "$tmpdir/dmg"
+cp -rT "$script_dir/../../projects/common/dmg-root/$ProjName.dmg" "$tmpdir/dmg"
tar -C "$tmpdir" -xf "$libdmg_file"
tar -C "$tmpdir" -xf "$hfstools_file"
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/compare/…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/compare/…
You're receiving this email because of your account on gitlab.torproject.org.
[View Less]
1
0

[Git][tpo/applications/tor-browser-build][main] Bumped Firefox and GeckoView to 140.0a1-15.0-2.
by Pier Angelo Vendrame (@pierov) 18 Jun '25
by Pier Angelo Vendrame (@pierov) 18 Jun '25
18 Jun '25
Pier Angelo Vendrame pushed to branch main at The Tor Project / Applications / tor-browser-build
Commits:
82357805 by Pier Angelo Vendrame at 2025-06-18T17:17:43+02:00
Bumped Firefox and GeckoView to 140.0a1-15.0-2.
- - - - -
2 changed files:
- projects/firefox/config
- projects/geckoview/config
Changes:
=====================================
projects/firefox/config
=====================================
@@ -19,7 +19,7 @@ var:
firefox_platform_version: '140.0a1'
firefox_version: '[%…
[View More] c("var/firefox_platform_version") %]'
browser_series: '15.0'
- browser_rebase: 1
+ browser_rebase: 2
browser_branch: '[% c("var/browser_series") %]-[% c("var/browser_rebase") %]'
browser_build: 1
copyright_year: '[% exec("git show -s --format=%ci " _ c("git_hash") _ "^{commit}", { exec_noco => 1 }).remove("-.*") %]'
=====================================
projects/geckoview/config
=====================================
@@ -21,7 +21,7 @@ var:
firefox_platform_version: '140.0a1'
geckoview_version: '[% c("var/firefox_platform_version") %]'
browser_series: '15.0'
- browser_rebase: 1
+ browser_rebase: 2
browser_branch: '[% c("var/browser_series") %]-[% c("var/browser_rebase") %]'
browser_build: 1
gitlab_project: https://gitlab.torproject.org/tpo/applications/tor-browser
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/8…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/8…
You're receiving this email because of your account on gitlab.torproject.org.
[View Less]
1
0

[Git][tpo/applications/mullvad-browser] Pushed new tag mullvad-browser-140.0a1-15.0-2-build1
by Pier Angelo Vendrame (@pierov) 18 Jun '25
by Pier Angelo Vendrame (@pierov) 18 Jun '25
18 Jun '25
Pier Angelo Vendrame pushed new tag mullvad-browser-140.0a1-15.0-2-build1 at The Tor Project / Applications / Mullvad Browser
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/tree/mullv…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/mullvad-browser][mullvad-browser-140.0a1-15.0-2] 26 commits: Add CI for Mullvad Browser
by Pier Angelo Vendrame (@pierov) 18 Jun '25
by Pier Angelo Vendrame (@pierov) 18 Jun '25
18 Jun '25
Pier Angelo Vendrame pushed to branch mullvad-browser-140.0a1-15.0-2 at The Tor Project / Applications / Mullvad Browser
Commits:
2193d729 by Henry Wilkes at 2025-06-18T16:13:01+02:00
Add CI for Mullvad Browser
- - - - -
6025e08c by Pier Angelo Vendrame at 2025-06-18T16:13:02+02:00
MB 38: Mullvad Browser configuration
- - - - -
e7dbf9a9 by Pier Angelo Vendrame at 2025-06-18T16:13:02+02:00
MB 1: Mullvad Browser branding
See also:
mullvad-browser#5: Product name and directory customization
…
[View More]mullvad-browser#12: Create new branding directories and integrate Mullvad icons+branding
mullvad-browser#14: Remove Default Built-in bookmarks
mullvad-browser#35: Add custom PDF icons for Windows builds
mullvad-browser#48: Replace Mozilla copyright and legal trademarks in mullvadbrowser.exe metadata
mullvad-browser#51: Update trademark string
mullvad-browser#104: Update shipped dll metadata copyright/licensing info
mullvad-browser#107: Add alpha and nightly icons
- - - - -
395a6784 by Henry Wilkes at 2025-06-18T16:13:02+02:00
Mullvad Browser strings
This commit adds strings needed by the following Mullvad Browser
patches.
- - - - -
1b674067 by Pier Angelo Vendrame at 2025-06-18T16:13:03+02:00
MB 20: Allow packaged-addons in PBM.
We install a few addons from the distribution directory, but they are
not automatically enabled for PBM mode.
This commit modifies the code that installs them to also add the PBM
permission to the known ones.
- - - - -
b023fd16 by Pier Angelo Vendrame at 2025-06-18T16:13:03+02:00
MB 63: Customize some about pages for Mullvad Browser
Also:
mullvad-browser#57: Purge unneeded about: pages
- - - - -
715ae430 by Pier Angelo Vendrame at 2025-06-18T16:13:03+02:00
MB 37: Customization for the about dialog
- - - - -
98c4de76 by Henry Wilkes at 2025-06-18T16:13:04+02:00
MB 39: Add home page about:mullvad-browser
- - - - -
58e01cac by hackademix at 2025-06-18T16:13:04+02:00
MB 97: Remove UI cues to install new extensions.
- - - - -
2f3fa9c8 by hackademix at 2025-06-18T16:13:04+02:00
MB 47: uBlock Origin customization
- - - - -
5a864528 by Pier Angelo Vendrame at 2025-06-18T16:13:04+02:00
MB 21: Disable the password manager
This commit disables the about:login page and removes the "Login and
Password" section of about:preferences.
We do not do anything to the real password manager of Firefox, that is
in toolkit: it contains C++ parts that make it difficult to actually
prevent it from being built..
Finally, we modify the the function that opens about:login to report an
error in the console so that we can quickly get a backtrace to the code
that tries to use it.
- - - - -
f6c4191d by Pier Angelo Vendrame at 2025-06-18T16:13:05+02:00
MB 112: Updater customization for Mullvad Browser
MB 71: Set the updater base URL to Mullvad domain
- - - - -
43cba6fd by Nicolas Vigier at 2025-06-18T16:13:05+02:00
MB 79: Add Mullvad Browser MAR signing keys
MB 256: Add mullvad-browser nightly mar signing key
- - - - -
a089ca0b by Pier Angelo Vendrame at 2025-06-18T16:13:05+02:00
MB 34: Hide unsafe and unwanted preferences UI
about:preferences allow to override some of our defaults, that could
be fingeprintable or have some other unwanted consequences.
- - - - -
63163cd5 by Pier Angelo Vendrame at 2025-06-18T16:13:06+02:00
MB 160: Disable the cookie exceptions button
Besides disabling the "Delete on close checkbox", disable also the
"Manage Exceptions" button when always using PBM.
- - - - -
19e55837 by hackademix at 2025-06-18T16:13:06+02:00
MB 163: prevent uBlock Origin from being uninstalled/disabled
- - - - -
f6aa5bc0 by Richard Pospesel at 2025-06-18T16:13:06+02:00
MB 188: Customize Gitlab Issue and Merge templates
- - - - -
d5763243 by rui hildt at 2025-06-18T16:13:07+02:00
MB 213: Customize the search engines list
MB 328: Refactor the search engine patch.
Upstream switched to a completely different search engine configuration
between ESR 115 and ESR 128.
We moved our configuration to a couple of JSON files that do not follow
upstream's schemas, as they are overcomplicated for our needs.
Also, we keep the old search engine extensions for now, as upstream
also kept them, and planned of removing them with Bug 1885953.
- - - - -
3d3173b3 by hackademix at 2025-06-18T16:13:07+02:00
MB 214: Enable cross-tab identity leak protection in "quiet" mode
- - - - -
efc6f8d5 by Pier Angelo Vendrame at 2025-06-18T16:13:07+02:00
MB 80: Enable Mullvad Browser as a default browser
- - - - -
0519e8ea by Pier Angelo Vendrame at 2025-06-18T16:13:07+02:00
MB 320: Temporarily disable WebRTC and WDBA on Windows.
WebRTC should be re-enabled when tor-browser#42758 is resolved, and and
the default browser agent when in general we make this feature work
again.
- - - - -
c8048676 by Henry Wilkes at 2025-06-18T16:13:08+02:00
MB 329: Customize toolbar for mullvad-browser.
- - - - -
de93c79d by Henry Wilkes at 2025-06-18T16:13:08+02:00
MB 419: Mullvad Browser migration procedures.
This commit implements the the Mullvad Browser's version of _migrateUI.
- - - - -
bf87211b by Pier Angelo Vendrame at 2025-06-18T16:13:08+02:00
fixup! MB 1: Mullvad Browser branding
TB 43776: Mark branding files for l10n merge.
- - - - -
7c9cf913 by Pier Angelo Vendrame at 2025-06-18T16:13:08+02:00
fixup! MB 80: Enable Mullvad Browser as a default browser
Comment a definition since mingw now defines it as well.
- - - - -
4ca6317f by Pier Angelo Vendrame at 2025-06-18T16:13:09+02:00
fixup! MB 39: Add home page about:mullvad-browser
Drop the unnecessary font CSP directive.
Debug builds complain about this, and they crash with a failed
assertion.
- - - - -
271 changed files:
- .gitlab/ci/jobs/update-translations.yml
- .gitlab/issue_templates/000 Bug Report.md
- .gitlab/issue_templates/010 Proposal.md
- .gitlab/issue_templates/020 Web Compatibility.md
- .gitlab/issue_templates/030 Test.md
- .gitlab/issue_templates/040 Feature.md
- .gitlab/issue_templates/060 Rebase - Alpha.md
- .gitlab/issue_templates/061 Rebase - Stable.md
- .gitlab/issue_templates/063 Rebase - Rapid.md
- .gitlab/issue_templates/090 Emergency Security Issue.md
- + .gitlab/issue_templates/Rebase Browser - Alpha.md
- + .gitlab/issue_templates/Rebase Browser - Rapid.md
- + .gitlab/issue_templates/Rebase Browser - Stable.md
- .gitlab/merge_request_templates/Default.md
- + .gitlab/merge_request_templates/Rebase.md
- browser/app/Makefile.in
- browser/app/macbuild/Contents/Info.plist.in
- browser/app/module.ver
- browser/app/firefox.exe.manifest → browser/app/mullvadbrowser.exe.manifest
- + browser/app/profile/000-mullvad-browser.js
- browser/app/profile/001-base-profile.js
- browser/base/content/aboutDialog.xhtml
- browser/base/content/appmenu-viewcache.inc.xhtml
- browser/base/content/browser-menubar.inc
- browser/base/content/browser-places.js
- browser/base/content/browser.js
- browser/base/content/default-bookmarks.html
- browser/base/content/nsContextMenu.sys.mjs
- browser/base/content/overrides/app-license.html
- browser/base/content/pageinfo/pageInfo.xhtml
- browser/base/content/utilityOverlay.js
- browser/branding/branding-common.mozbuild
- + browser/branding/mb-alpha/VisualElements_150.png
- + browser/branding/mb-alpha/VisualElements_70.png
- + browser/branding/mb-alpha/configure.sh
- + browser/branding/mb-alpha/content/about-logo.png
- + browser/branding/mb-alpha/content/about-logo.svg
- + browser/branding/mb-alpha/content/about-logo(a)2x.png
- + browser/branding/mb-alpha/content/about-wordmark.svg
- + browser/branding/mb-alpha/content/about.png
- + browser/branding/mb-alpha/content/aboutDialog.css
- + browser/branding/mb-alpha/content/firefox-wordmark.svg
- + browser/branding/mb-alpha/content/icon128.png
- + browser/branding/mb-alpha/content/icon16.png
- + browser/branding/mb-alpha/content/icon256.png
- + browser/branding/mb-alpha/content/icon32.png
- + browser/branding/mb-alpha/content/icon48.png
- + browser/branding/mb-alpha/content/icon64.png
- + browser/branding/mb-alpha/content/jar.mn
- + browser/branding/mb-alpha/content/moz.build
- + browser/branding/mb-alpha/content/mullvad-branding.css
- + browser/branding/mb-alpha/default128.png
- + browser/branding/mb-alpha/default16.png
- + browser/branding/mb-alpha/default22.png
- + browser/branding/mb-alpha/default24.png
- + browser/branding/mb-alpha/default256.png
- + browser/branding/mb-alpha/default32.png
- + browser/branding/mb-alpha/default48.png
- + browser/branding/mb-alpha/default64.png
- + browser/branding/mb-alpha/document.icns
- + browser/branding/mb-alpha/document.ico
- + browser/branding/mb-alpha/document_pdf.ico
- + browser/branding/mb-alpha/firefox.icns
- + browser/branding/mb-alpha/firefox.ico
- + browser/branding/mb-alpha/firefox.svg
- + browser/branding/mb-alpha/locales/en-US/brand.ftl
- + browser/branding/mb-alpha/locales/en-US/brand.properties
- + browser/branding/mb-alpha/locales/jar.mn
- + browser/branding/mb-alpha/locales/moz.build
- + browser/branding/mb-alpha/locales/mullvad-about-wordmark-en.ftl
- + browser/branding/mb-alpha/moz.build
- + browser/branding/mb-alpha/mullvadbrowser.VisualElementsManifest.xml
- + browser/branding/mb-alpha/newtab.ico
- + browser/branding/mb-alpha/newwindow.ico
- + browser/branding/mb-alpha/pbmode.ico
- + browser/branding/mb-alpha/pref/firefox-branding.js
- + browser/branding/mb-nightly/VisualElements_150.png
- + browser/branding/mb-nightly/VisualElements_70.png
- + browser/branding/mb-nightly/configure.sh
- + browser/branding/mb-nightly/content/about-logo.png
- + browser/branding/mb-nightly/content/about-logo.svg
- + browser/branding/mb-nightly/content/about-logo(a)2x.png
- + browser/branding/mb-nightly/content/about-wordmark.svg
- + browser/branding/mb-nightly/content/about.png
- + browser/branding/mb-nightly/content/aboutDialog.css
- + browser/branding/mb-nightly/content/firefox-wordmark.svg
- + browser/branding/mb-nightly/content/icon128.png
- + browser/branding/mb-nightly/content/icon16.png
- + browser/branding/mb-nightly/content/icon256.png
- + browser/branding/mb-nightly/content/icon32.png
- + browser/branding/mb-nightly/content/icon48.png
- + browser/branding/mb-nightly/content/icon64.png
- + browser/branding/mb-nightly/content/jar.mn
- + browser/branding/mb-nightly/content/moz.build
- + browser/branding/mb-nightly/content/mullvad-branding.css
- + browser/branding/mb-nightly/default128.png
- + browser/branding/mb-nightly/default16.png
- + browser/branding/mb-nightly/default22.png
- + browser/branding/mb-nightly/default24.png
- + browser/branding/mb-nightly/default256.png
- + browser/branding/mb-nightly/default32.png
- + browser/branding/mb-nightly/default48.png
- + browser/branding/mb-nightly/default64.png
- + browser/branding/mb-nightly/document.icns
- + browser/branding/mb-nightly/document.ico
- + browser/branding/mb-nightly/document_pdf.ico
- + browser/branding/mb-nightly/firefox.icns
- + browser/branding/mb-nightly/firefox.ico
- + browser/branding/mb-nightly/firefox.svg
- + browser/branding/mb-nightly/locales/en-US/brand.ftl
- + browser/branding/mb-nightly/locales/en-US/brand.properties
- + browser/branding/mb-nightly/locales/jar.mn
- + browser/branding/mb-nightly/locales/moz.build
- + browser/branding/mb-nightly/locales/mullvad-about-wordmark-en.ftl
- + browser/branding/mb-nightly/moz.build
- + browser/branding/mb-nightly/mullvadbrowser.VisualElementsManifest.xml
- + browser/branding/mb-nightly/newtab.ico
- + browser/branding/mb-nightly/newwindow.ico
- + browser/branding/mb-nightly/pbmode.ico
- + browser/branding/mb-nightly/pref/firefox-branding.js
- + browser/branding/mb-release/VisualElements_150.png
- + browser/branding/mb-release/VisualElements_70.png
- + browser/branding/mb-release/configure.sh
- + browser/branding/mb-release/content/about-logo.png
- + browser/branding/mb-release/content/about-logo.svg
- + browser/branding/mb-release/content/about-logo(a)2x.png
- + browser/branding/mb-release/content/about-wordmark.svg
- + browser/branding/mb-release/content/about.png
- + browser/branding/mb-release/content/aboutDialog.css
- + browser/branding/mb-release/content/firefox-wordmark.svg
- + browser/branding/mb-release/content/icon128.png
- + browser/branding/mb-release/content/icon16.png
- + browser/branding/mb-release/content/icon256.png
- + browser/branding/mb-release/content/icon32.png
- + browser/branding/mb-release/content/icon48.png
- + browser/branding/mb-release/content/icon64.png
- + browser/branding/mb-release/content/jar.mn
- + browser/branding/mb-release/content/moz.build
- + browser/branding/mb-release/content/mullvad-branding.css
- + browser/branding/mb-release/default128.png
- + browser/branding/mb-release/default16.png
- + browser/branding/mb-release/default22.png
- + browser/branding/mb-release/default24.png
- + browser/branding/mb-release/default256.png
- + browser/branding/mb-release/default32.png
- + browser/branding/mb-release/default48.png
- + browser/branding/mb-release/default64.png
- + browser/branding/mb-release/document.icns
- + browser/branding/mb-release/document.ico
- + browser/branding/mb-release/document_pdf.ico
- + browser/branding/mb-release/firefox.icns
- + browser/branding/mb-release/firefox.ico
- + browser/branding/mb-release/firefox.svg
- + browser/branding/mb-release/locales/en-US/brand.ftl
- + browser/branding/mb-release/locales/en-US/brand.properties
- + browser/branding/mb-release/locales/jar.mn
- + browser/branding/mb-release/locales/moz.build
- + browser/branding/mb-release/locales/mullvad-about-wordmark-en.ftl
- + browser/branding/mb-release/moz.build
- + browser/branding/mb-release/mullvadbrowser.VisualElementsManifest.xml
- + browser/branding/mb-release/newtab.ico
- + browser/branding/mb-release/newwindow.ico
- + browser/branding/mb-release/pbmode.ico
- + browser/branding/mb-release/pref/firefox-branding.js
- browser/components/BrowserContentHandler.sys.mjs
- browser/components/BrowserGlue.sys.mjs
- browser/components/DesktopActorRegistry.sys.mjs
- browser/components/about/AboutRedirector.cpp
- browser/components/about/components.conf
- browser/components/customizableui/CustomizableUI.sys.mjs
- browser/components/moz.build
- + browser/components/mullvad-browser/AboutMullvadBrowserChild.sys.mjs
- + browser/components/mullvad-browser/AboutMullvadBrowserParent.sys.mjs
- + browser/components/mullvad-browser/content/2728-sparkles.svg
- + browser/components/mullvad-browser/content/aboutMullvadBrowser.css
- + browser/components/mullvad-browser/content/aboutMullvadBrowser.html
- + browser/components/mullvad-browser/content/aboutMullvadBrowser.js
- + browser/components/mullvad-browser/jar.mn
- + browser/components/mullvad-browser/moz.build
- browser/components/newtab/AboutNewTabRedirector.sys.mjs
- browser/components/preferences/home.inc.xhtml
- browser/components/preferences/main.js
- browser/components/preferences/preferences.xhtml
- browser/components/preferences/privacy.inc.xhtml
- browser/components/preferences/privacy.js
- browser/components/preferences/search.inc.xhtml
- + browser/components/search/extensions/brave/favicon.svg
- + browser/components/search/extensions/brave/manifest.json
- + browser/components/search/extensions/ddg-html/favicon.ico
- + browser/components/search/extensions/ddg-html/manifest.json
- browser/components/search/extensions/ddg/manifest.json
- + browser/components/search/extensions/metager/favicon.ico
- + browser/components/search/extensions/metager/manifest.json
- + browser/components/search/extensions/mojeek/favicon.ico
- + browser/components/search/extensions/mojeek/manifest.json
- + browser/components/search/extensions/mullvad-leta/favicon.svg
- + browser/components/search/extensions/mullvad-leta/manifest.json
- + browser/components/search/extensions/startpage/favicon.png
- + browser/components/search/extensions/startpage/manifest.json
- browser/components/shell/ShellService.sys.mjs
- browser/components/shell/WindowsDefaultBrowser.cpp
- browser/components/shell/nsWindowsShellService.cpp
- browser/config/mozconfigs/base-browser
- + browser/config/mozconfigs/mullvad-browser
- browser/installer/package-manifest.in
- browser/installer/windows/nsis/updater_append.ini
- browser/locales/l10n.toml
- browser/modules/HomePage.sys.mjs
- browser/moz.build
- browser/moz.configure
- config/create_rc.py
- devtools/client/aboutdebugging/src/actions/runtimes.js
- devtools/client/aboutdebugging/src/components/sidebar/Sidebar.js
- devtools/client/jar.mn
- devtools/client/themes/images/aboutdebugging-firefox-aurora.svg
- devtools/client/themes/images/aboutdebugging-firefox-beta.svg
- devtools/client/themes/images/aboutdebugging-firefox-logo.svg
- devtools/client/themes/images/aboutdebugging-firefox-nightly.svg
- devtools/client/themes/images/aboutdebugging-firefox-release.svg
- + devtools/client/themes/images/aboutdebugging-mullvadbrowser-logo.svg
- docshell/base/nsAboutRedirector.cpp
- docshell/build/components.conf
- moz.configure
- mozconfig-linux-aarch64
- mozconfig-linux-aarch64-dev
- mozconfig-linux-x86_64
- mozconfig-linux-x86_64-asan
- mozconfig-linux-x86_64-dev
- mozconfig-macos
- mozconfig-macos-dev
- mozconfig-windows-x86_64
- + other-licenses/nsis/Contrib/ApplicationID/Makefile
- other-licenses/nsis/Contrib/ApplicationID/Set.cpp
- + other-licenses/nsis/Contrib/CityHash/Makefile
- toolkit/components/extensions/child/ext-storage.js
- toolkit/components/extensions/parent/ext-storage.js
- toolkit/components/passwordmgr/LoginHelper.sys.mjs
- toolkit/components/search/AppProvidedSearchEngine.sys.mjs
- toolkit/components/search/SearchService.sys.mjs
- + toolkit/components/search/content/brave.svg
- + toolkit/components/search/content/duckduckgo.ico
- + toolkit/components/search/content/metager.ico
- + toolkit/components/search/content/mojeek.ico
- + toolkit/components/search/content/mullvad-leta.svg
- + toolkit/components/search/content/mullvadBrowserSearchEngineIcons.json
- + toolkit/components/search/content/mullvadBrowserSearchEngines.json
- + toolkit/components/search/content/startpage.png
- + toolkit/components/search/jar.mn
- toolkit/components/search/moz.build
- toolkit/components/securitylevel/SecurityLevel.sys.mjs
- + toolkit/content/aboutRightsMullvad.xhtml
- + toolkit/content/aboutTelemetryMullvad.xhtml
- toolkit/content/jar.mn
- toolkit/content/widgets/moz-support-link/moz-support-link.mjs
- + toolkit/locales/en-US/toolkit/global/mullvad-browser.ftl
- toolkit/mozapps/defaultagent/EventLog.h
- toolkit/mozapps/defaultagent/SetDefaultBrowser.cpp
- toolkit/mozapps/extensions/AddonManager.sys.mjs
- toolkit/mozapps/extensions/content/aboutaddons.css
- toolkit/mozapps/extensions/internal/XPIDatabase.sys.mjs
- toolkit/mozapps/extensions/internal/XPIProvider.sys.mjs
- toolkit/mozapps/update/updater/nightly_aurora_level3_primary.der
- toolkit/mozapps/update/updater/nightly_aurora_level3_secondary.der
- toolkit/mozapps/update/updater/release_primary.der
- toolkit/mozapps/update/updater/release_secondary.der
- + toolkit/themes/shared/icons/mullvadbrowser.png
- toolkit/themes/shared/minimal-toolkit.jar.inc.mn
- toolkit/xre/nsAppRunner.cpp
- tools/lint/fluent-lint/exclusions.yml
- widget/windows/WinTaskbar.cpp
- widget/windows/moz.build
The diff was not included because it is too large.
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/compare/22…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/compare/22…
You're receiving this email because of your account on gitlab.torproject.org.
[View Less]
1
0

[Git][tpo/applications/mullvad-browser] Pushed new tag base-browser-140.0a1-15.0-2-build1
by Pier Angelo Vendrame (@pierov) 18 Jun '25
by Pier Angelo Vendrame (@pierov) 18 Jun '25
18 Jun '25
Pier Angelo Vendrame pushed new tag base-browser-140.0a1-15.0-2-build1 at The Tor Project / Applications / Mullvad Browser
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/tree/base-…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/mullvad-browser] Pushed new branch mullvad-browser-140.0a1-15.0-2
by Pier Angelo Vendrame (@pierov) 18 Jun '25
by Pier Angelo Vendrame (@pierov) 18 Jun '25
18 Jun '25
Pier Angelo Vendrame pushed new branch mullvad-browser-140.0a1-15.0-2 at The Tor Project / Applications / Mullvad Browser
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/tree/mullv…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser][tor-browser-140.0a1-15.0-2] fixup! TB 40026 [android]: Implement Security Level settings on Android.
by Pier Angelo Vendrame (@pierov) 18 Jun '25
by Pier Angelo Vendrame (@pierov) 18 Jun '25
18 Jun '25
Pier Angelo Vendrame pushed to branch tor-browser-140.0a1-15.0-2 at The Tor Project / Applications / Tor Browser
Commits:
a4478674 by Pier Angelo Vendrame at 2025-06-18T15:22:34+02:00
fixup! TB 40026 [android]: Implement Security Level settings on Android.
TB 43856 (workaround): allow a deprecated call.
- - - - -
1 changed file:
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tor/TorSecurityLevelFragment.kt
Changes:
=====================================
mobile/android/fenix/…
[View More]app/src/main/java/org/mozilla/fenix/tor/TorSecurityLevelFragment.kt
=====================================
@@ -110,6 +110,7 @@ class TorSecurityLevelFragment : Fragment() {
}
binding.cancelButton.setOnClickListener {
+ @Suppress("DEPRECATION")
requireActivity().onBackPressed()
}
}
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/a447867…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/a447867…
You're receiving this email because of your account on gitlab.torproject.org.
[View Less]
1
0

[Git][tpo/applications/tor-browser][base-browser-140.0a1-15.0-2] fixup! BB 42305: Add script to combine translation files across versions.
by henry (@henry) 18 Jun '25
by henry (@henry) 18 Jun '25
18 Jun '25
henry pushed to branch base-browser-140.0a1-15.0-2 at The Tor Project / Applications / Tor Browser
Commits:
22dc4021 by henry at 2025-06-18T12:59:45+00:00
fixup! BB 42305: Add script to combine translation files across versions.
TB 43891: Update the translation CI for the 15.0 cycle.
Handles non-esr branch/tag names. E.g. 140.0a1 rather than 140.0esr.
Allows legacy branch (13.5) to be more than 1.0 versions behind (15.0).
Disables `--depth` and `--filter` arguments when running outside …
[View More]the
gitlab CI. This makes the script safe to run locally for testing without
having to make any adjustments.
(cherry picked from commit 5e4cfc1dcb130d0768d5e3baac759633c5d2babd)
Co-authored-by: Henry Wilkes <henry(a)torproject.org>
- - - - -
1 changed file:
- tools/base-browser/l10n/combine-translation-versions.py
Changes:
=====================================
tools/base-browser/l10n/combine-translation-versions.py
=====================================
@@ -7,6 +7,12 @@ import subprocess
from combine import combine_files
+# Whether we are running within the gitlab CI, rather than on a developer
+# machine. This toggles some optimisations that work well in the temporary
+# gitlab environment but would cause problems if run locally for testing
+# purposes.
+IN_GITLAB_CI_ENV = os.environ.get("GITLAB_CI", "") == "true"
+
arg_parser = argparse.ArgumentParser(
description="Combine a translation file across two different versions"
)
@@ -86,7 +92,7 @@ class BrowserBranch:
"""
version_match = re.match(
r"(?P<prefix>[a-z]+\-browser)\-"
- r"(?P<firefox>[0-9]+(?:\.[0-9]+){1,2})esr\-"
+ r"(?P<firefox>[0-9]+(?:\.[0-9]+){1,2})(?:esr|[ab][0-9]+)?\-"
r"(?P<browser>[0-9]+\.[05])\-"
r"(?P<number>[0-9]+)$",
branch_name,
@@ -170,11 +176,15 @@ class BrowserBranch:
"""
if self._file_paths is None:
if not self._is_head:
- # Minimal fetch of non-HEAD branch to get the file paths.
- # Individual file blobs will be downloaded as needed.
- git_run(
- ["fetch", "--depth=1", "--filter=blob:none", "origin", self.name]
- )
+ fetch_args = ()
+ if IN_GITLAB_CI_ENV:
+ # Minimal fetch of non-HEAD branch to get the file paths.
+ # Individual file blobs will be downloaded as needed.
+ # Only do this when running in the gitlab CI since it will
+ # alter the user's .git/config and will effect future
+ # plain fetches.
+ fetch_args = ("--depth=1", "--filter=blob:none")
+ git_run(["fetch", *fetch_args, "origin", self.name])
self._file_paths = git_lines(
["ls-tree", "-r", "--format=%(path)", self._ref]
)
@@ -213,16 +223,19 @@ def get_stable_branch(
# tor-browser-build.
tag_glob = f"{compare_version.prefix}-*-build1"
- # To speed up, only fetch the tags without blobs.
- git_run(
- ["fetch", "--depth=1", "--filter=object:type=tag", "origin", "tag", tag_glob]
- )
+ fetch_args = ()
+ if IN_GITLAB_CI_ENV:
+ # To speed up, only fetch the tags without blobs.
+ # Only do this when running in the gitlab CI since it will alter the
+ # user's .git/config and will effect future plain fetches.
+ fetch_args = ("--depth=1", "--filter=object:type=tag")
+ git_run(["fetch", *fetch_args, "origin", "tag", tag_glob])
stable_branches = []
legacy_branches = []
stable_annotation_regex = re.compile(r"\bstable\b")
legacy_annotation_regex = re.compile(r"\blegacy\b")
tag_pattern = re.compile(
- rf"^{re.escape(compare_version.prefix)}-[^-]+esr-[^-]+-[^-]+-build1$"
+ rf"^{re.escape(compare_version.prefix)}-[^-]+-[^-]+-[^-]+-build1$"
)
for build_tag, annotation in (
@@ -259,13 +272,7 @@ def get_stable_branch(
continue
stable_branches.append(branch)
elif is_legacy:
- # Legacy can be two release versions behind.
- # We also allow for being just one version behind.
- if not (
- compare_version.release_below(branch, 2)
- or compare_version.release_below(branch, 1)
- ):
- continue
+ # Legacy can be arbitrary release versions behind.
legacy_branches.append(branch)
if not stable_branches:
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/22dc402…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/22dc402…
You're receiving this email because of your account on gitlab.torproject.org.
[View Less]
1
0

[Git][tpo/applications/tor-browser][tor-browser-140.0a1-15.0-2] fixup! BB 42305: Add script to combine translation files across versions.
by henry (@henry) 18 Jun '25
by henry (@henry) 18 Jun '25
18 Jun '25
henry pushed to branch tor-browser-140.0a1-15.0-2 at The Tor Project / Applications / Tor Browser
Commits:
5e4cfc1d by Henry Wilkes at 2025-06-18T12:26:30+01:00
fixup! BB 42305: Add script to combine translation files across versions.
TB 43891: Update the translation CI for the 15.0 cycle.
Handles non-esr branch/tag names. E.g. 140.0a1 rather than 140.0esr.
Allows legacy branch (13.5) to be more than 1.0 versions behind (15.0).
Disables `--depth` and `--filter` arguments when running …
[View More]outside the
gitlab CI. This makes the script safe to run locally for testing without
having to make any adjustments.
- - - - -
1 changed file:
- tools/base-browser/l10n/combine-translation-versions.py
Changes:
=====================================
tools/base-browser/l10n/combine-translation-versions.py
=====================================
@@ -7,6 +7,12 @@ import subprocess
from combine import combine_files
+# Whether we are running within the gitlab CI, rather than on a developer
+# machine. This toggles some optimisations that work well in the temporary
+# gitlab environment but would cause problems if run locally for testing
+# purposes.
+IN_GITLAB_CI_ENV = os.environ.get("GITLAB_CI", "") == "true"
+
arg_parser = argparse.ArgumentParser(
description="Combine a translation file across two different versions"
)
@@ -86,7 +92,7 @@ class BrowserBranch:
"""
version_match = re.match(
r"(?P<prefix>[a-z]+\-browser)\-"
- r"(?P<firefox>[0-9]+(?:\.[0-9]+){1,2})esr\-"
+ r"(?P<firefox>[0-9]+(?:\.[0-9]+){1,2})(?:esr|[ab][0-9]+)?\-"
r"(?P<browser>[0-9]+\.[05])\-"
r"(?P<number>[0-9]+)$",
branch_name,
@@ -170,11 +176,15 @@ class BrowserBranch:
"""
if self._file_paths is None:
if not self._is_head:
- # Minimal fetch of non-HEAD branch to get the file paths.
- # Individual file blobs will be downloaded as needed.
- git_run(
- ["fetch", "--depth=1", "--filter=blob:none", "origin", self.name]
- )
+ fetch_args = ()
+ if IN_GITLAB_CI_ENV:
+ # Minimal fetch of non-HEAD branch to get the file paths.
+ # Individual file blobs will be downloaded as needed.
+ # Only do this when running in the gitlab CI since it will
+ # alter the user's .git/config and will effect future
+ # plain fetches.
+ fetch_args = ("--depth=1", "--filter=blob:none")
+ git_run(["fetch", *fetch_args, "origin", self.name])
self._file_paths = git_lines(
["ls-tree", "-r", "--format=%(path)", self._ref]
)
@@ -213,16 +223,19 @@ def get_stable_branch(
# tor-browser-build.
tag_glob = f"{compare_version.prefix}-*-build1"
- # To speed up, only fetch the tags without blobs.
- git_run(
- ["fetch", "--depth=1", "--filter=object:type=tag", "origin", "tag", tag_glob]
- )
+ fetch_args = ()
+ if IN_GITLAB_CI_ENV:
+ # To speed up, only fetch the tags without blobs.
+ # Only do this when running in the gitlab CI since it will alter the
+ # user's .git/config and will effect future plain fetches.
+ fetch_args = ("--depth=1", "--filter=object:type=tag")
+ git_run(["fetch", *fetch_args, "origin", "tag", tag_glob])
stable_branches = []
legacy_branches = []
stable_annotation_regex = re.compile(r"\bstable\b")
legacy_annotation_regex = re.compile(r"\blegacy\b")
tag_pattern = re.compile(
- rf"^{re.escape(compare_version.prefix)}-[^-]+esr-[^-]+-[^-]+-build1$"
+ rf"^{re.escape(compare_version.prefix)}-[^-]+-[^-]+-[^-]+-build1$"
)
for build_tag, annotation in (
@@ -259,13 +272,7 @@ def get_stable_branch(
continue
stable_branches.append(branch)
elif is_legacy:
- # Legacy can be two release versions behind.
- # We also allow for being just one version behind.
- if not (
- compare_version.release_below(branch, 2)
- or compare_version.release_below(branch, 1)
- ):
- continue
+ # Legacy can be arbitrary release versions behind.
legacy_branches.append(branch)
if not stable_branches:
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/5e4cfc1…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/5e4cfc1…
You're receiving this email because of your account on gitlab.torproject.org.
[View Less]
1
0

[Git][tpo/applications/tor-browser][base-browser-140.0a1-15.0-2] 10 commits: fixup! Base Browser strings
by Pier Angelo Vendrame (@pierov) 18 Jun '25
by Pier Angelo Vendrame (@pierov) 18 Jun '25
18 Jun '25
Pier Angelo Vendrame pushed to branch base-browser-140.0a1-15.0-2 at The Tor Project / Applications / Tor Browser
Commits:
1d1f2fad by Pier Angelo Vendrame at 2025-06-18T12:38:00+02:00
fixup! Base Browser strings
BB 43849: Remove a useless lint exclusion.
Probably it was a rebase error.
- - - - -
d604827f by hackademix at 2025-06-18T12:38:01+02:00
fixup! Firefox preference overrides.
BB 43811: Block 0.0.0.0
- - - - -
6208159c by Henry Wilkes at 2025-06-18T12:38:01+02:00
fixup! BB 40925: …
[View More]Implemented the Security Level component
TB 43783: Prompt user for a restart if their security level preferences
are not aligned at startup or mid-session.
Also handle failures to apply NoScript settings.
- - - - -
b998d42e by Henry Wilkes at 2025-06-18T12:38:01+02:00
fixup! BB 40069: Add helpers for message passing with extensions
TB 43783: Allow the browser to wait for the NoScript settings to be
applied.
- - - - -
079eec34 by Henry Wilkes at 2025-06-18T12:38:01+02:00
fixup! Base Browser strings
TB 43783: Add security level prompt strings.
- - - - -
29c7fdc7 by Henry Wilkes at 2025-06-18T12:38:01+02:00
fixup! Base Browser strings
TB 43782: Add strings for new security level UX flow.
- - - - -
d93fb763 by Henry Wilkes at 2025-06-18T12:38:02+02:00
fixup! BB 40925: Implemented the Security Level component
TB 43782: Update security level UI for new UX flow.
In addition, we drop the distinction between the security levels in the
UI when the user has a custom security level.
I.e. we always show shield as unfilled but with a yellow dot in the
toolbar, and we just call it "Custom" rather than "Standard Custom",
etc.
- - - - -
91a01176 by Pier Angelo Vendrame at 2025-06-18T12:38:02+02:00
fixup! BB 42758: Fix WebRTC build errors.
MB 440: Change abseil's thread mode.
Remove pthread again and use win32 threads also when building with
mingw.
- - - - -
9e799e57 by Morgan at 2025-06-18T12:38:13+02:00
fixup! BB 43615: Add Gitlab Issue and Merge Request templates
update target channels with esr140-15.0 and esr128-14.5
- - - - -
53d4cd16 by Morgan at 2025-06-18T12:38:13+02:00
fixup! BB 43615: Add Gitlab Issue and Merge Request templates
add fingerprinting issue template
- - - - -
27 changed files:
- + .gitlab/issue_templates/031 Fingerprinting.md
- .gitlab/issue_templates/Default.md
- .gitlab/merge_request_templates/Default.md
- browser/app/profile/001-base-profile.js
- browser/components/BrowserGlue.sys.mjs
- + browser/components/securitylevel/SecurityLevelUIUtils.sys.mjs
- browser/components/securitylevel/content/securityLevel.js
- browser/components/securitylevel/content/securityLevelButton.css
- + browser/components/securitylevel/content/securityLevelDialog.js
- + browser/components/securitylevel/content/securityLevelDialog.xhtml
- browser/components/securitylevel/content/securityLevelPanel.css
- browser/components/securitylevel/content/securityLevelPanel.inc.xhtml
- browser/components/securitylevel/content/securityLevelPreferences.css
- browser/components/securitylevel/content/securityLevelPreferences.inc.xhtml
- browser/components/securitylevel/jar.mn
- browser/components/securitylevel/moz.build
- + browser/modules/SecurityLevelRestartNotification.sys.mjs
- browser/modules/moz.build
- media/libaom/moz.build
- third_party/abseil-cpp/absl/base/base_gn/moz.build
- third_party/abseil-cpp/absl/base/internal/thread_identity.cc
- third_party/abseil-cpp/absl/base/internal/thread_identity.h
- third_party/libwebrtc/modules/desktop_capture/win/wgc_capture_session.cc
- toolkit/components/extensions/ExtensionParent.sys.mjs
- toolkit/components/securitylevel/SecurityLevel.sys.mjs
- toolkit/locales/en-US/toolkit/global/base-browser.ftl
- tools/lint/fluent-lint/exclusions.yml
Changes:
=====================================
.gitlab/issue_templates/031 Fingerprinting.md
=====================================
@@ -0,0 +1,149 @@
+# 👣 Fingerprinting
+<!--
+Use this template to track a browser fingerprinting vector. Such vectors
+allow for stateless cross-site tracking (i.e. across somehow collaborating
+but otherwise unrelated 1st party domains like foo.com and bar.com)
+
+For the purposes of developing a fix, this template is meant to define all of the things
+we want to think about and analyze before implementing a fix. It's totally fine to leave
+parts of this template empty on initial report! The the issue description can be updated
+and edited as we learn things.
+
+This template is also meant to serve as documentation/explanation about how we think
+about fingerprinting vectors and minimising their utility.
+-->
+
+## Problem Statement
+<!--
+Please give an overview of the problem you think we should address.
+ e.g. system fonts (`font: caption`) might expose desktop
+ environment/distribution/language/customization because Firefox uses OS
+ settings.
+-->
+
+## Documentation
+<!--
+Please provide a links to the relevant standards or documentation for the affected web
+platform features. Additionally, please provide links to relevant academic research,
+upstream Bugzilla issues, etc (if available).
+-->
+
+## Repro Steps
+<!--
+Please provide any proof of concept which can help us under how this feature
+can be used for fingerprinting and that we can use as a test for our patches.
+-->
+
+## Analysis
+
+### Metric Distribution
+<!--
+- How many different possible buckets of values exist without fingerprinting
+mitigations?
+- How are users distributed between these buckets?
+- Do any group of users stand-out by default?
+- Do users in each of these buckets likely have different risk profiles?
+-->
+
+### Metric Stability
+<!--
+- How does the metric change during and between browsing sessions without mitigations?
+ e.g. Window size may be mostly stable during a browsing session
+ but may change between browsing sessions
+ e.g. User-Agent string is stable during a browsing session, but may change
+ between major browser updates
+-->
+
+## Mitigation Strategy
+<!--
+Outline (at least) one of the possible mitigation strategies for this metric
+(normalisation, randomisation, or disabling)
+-->
+
+### Normalisation
+<!--
+Describe a strategy whereby all users report the same value for the metric, or the pros
+and cons if there are multiple potential normalisation strategies.
+ e.g. Standardising reported WebGL constants such as maximum framebuffer size
+- After normalisation, would this metric be equivalent another normalised metric?
+ e.g. fonts are usually equivalent to the OS, which is already exposed.
+- Sometimes it is impossible to use the same value for all users, but reducing the
+ number of user buckets is still a win.
+
+✅ This is the preferred mitigation strategy.
+-->
+
+### Randomisation
+<!--
+Describe a strategy whereby users return randomised metrics
+ e.g. when enumerating webcams, choose a number of devices from a `[1; 3]` uniform
+ distribution
+- How did you choose this distribution and its parameters?
+- What strategies should we use to hide the randomization?
+ e.g. randomize the value only once per session and per first-party
+- Why is it not possible to use a normalized value, instead? Normalization is often
+ better than randomization because it is often easier to conceal
+
+A randomised metric should ideally be:
+- Different per first party domain
+ e.g. different websites measure a different value for the metric
+- Stable per session per first party domain
+ e.g. a website repeatedly measuring the metric will get back the same value
+ during the same browsing session
+- Different between sessions, regardless of first party domain
+ e.g. a website measuring a metric between browsing sessions will get back a different
+ value
+
+⚠️ We should only resort to randomisation if providing normalised values completely
+and utterly breaks web compatibility, usability, or accessibility.
+-->
+
+### Disabling
+<!--
+Describe a strategy whereby the fingerprintable metric is just outright disabled
+ e.g. Disabling WebAuthN feature entirely
+- Why is it not possible to spoof a (normalized) value instead? Disabling an API might
+ break some sites.
+ e.g. Rejecting the permission prompt request promise would be preferable to removing
+ or disabling the relevant APIs
+- Is this a temporary change?
+ e.g. necessary on the ESR version of Firefox we use for Tor Browser, but fixed in a
+ later version of Firefox.
+-->
+
+## Other Considerations
+
+### Usability and Accessibility
+<!--
+- Would the proposed mitigation make websites unusable for non-technical/human reasons?
+ e.g. Always requesting language as en-US makes websites usable for non English-reading
+ users
+- Would it make the browser unusable for some users?
+ e.g. Forcing overlay scrollbars would make websites unusable for some users with motor
+ issues
+- Do we need to provide a user-accessible 'escape-hatch' to allow users to opt-out of the
+ proposed mitigation?
+ e.g. Providing an option in about:preferences
+-->
+
+### Web Compatibility
+<!--
+Would the proposed mitigation break websites for technical reasons?
+ e.g. Disabling WebAuthN preventing YubiKey authentication
+-->
+
+### Plausibility
+<!--
+Would the proposed mitigation make the browser stand out as a potential bot or scraper or
+some other non-standard browser configuration?
+ e.g. Reporting only 2 CPU-cores is unlikely for modern PCs in the year 2025
+-->
+
+<!-- Do not edit beneath this line <3 -->
+
+---
+
+/confidential
+/label ~"Apps::Product::BaseBrowser"
+/label ~"Project 131"
+/label ~"Fingerprinting"
=====================================
.gitlab/issue_templates/Default.md
=====================================
@@ -11,6 +11,7 @@ Please select the appropriate issue template from the **Description** drop-down.
*NOTE*: the following issue types are intended for internal use
- 💣 **Test** - develop a test or update testing infrastructure
+- 👣 **Fingerprinting** - open a fingerprinting issue
- ✨ **Feature** - implement new features
- ⬅️ **Backport** - cherry-pick change to other release channels
- ⤵️ **Rebase - Alpha** - rebase alpha to latest Firefox ESR version
=====================================
.gitlab/merge_request_templates/Default.md
=====================================
@@ -27,8 +27,8 @@
#### Target Channels
-- [ ] **Alpha**: esr128-14.5
-- [ ] **Stable**: esr128-14.0
+- [ ] **Alpha**: esr140-15.0
+- [ ] **Stable**: esr128-14.5
- [ ] **Legacy**: esr115-13.5
### Backporting
=====================================
browser/app/profile/001-base-profile.js
=====================================
@@ -536,6 +536,11 @@ pref("network.proxy.failover_direct", false, locked);
// alters content load order in a page. See tor-browser#24686
pref("network.http.tailing.enabled", true, locked);
+// Block 0.0.0.0
+// https://bugzilla.mozilla.org/show_bug.cgi?id=1889130
+// tor-browser#43811
+pref("network.socket.ip_addr_any.disabled", true);
+
// tor-browser#23044: Make sure we don't have any GIO supported protocols
// (defense in depth measure).
// As of Firefox 118 (Bug 1843763), upstream does not add any protocol by
=====================================
browser/components/BrowserGlue.sys.mjs
=====================================
@@ -63,6 +63,8 @@ ChromeUtils.defineESModuleGetters(lazy, {
ScreenshotsUtils: "resource:///modules/ScreenshotsUtils.sys.mjs",
SearchSERPTelemetry:
"moz-src:///browser/components/search/SearchSERPTelemetry.sys.mjs",
+ SecurityLevelRestartNotification:
+ "resource:///modules/SecurityLevelRestartNotification.sys.mjs",
SessionStartup: "resource:///modules/sessionstore/SessionStartup.sys.mjs",
SessionStore: "resource:///modules/sessionstore/SessionStore.sys.mjs",
ShortcutUtils: "resource://gre/modules/ShortcutUtils.sys.mjs",
@@ -994,6 +996,8 @@ BrowserGlue.prototype = {
lazy.WeaveService.init();
}
+ lazy.SecurityLevelRestartNotification.ready();
+
ClipboardPrivacy.startup();
lazy.BrowserUtils.callModulesFromCategory(
=====================================
browser/components/securitylevel/SecurityLevelUIUtils.sys.mjs
=====================================
@@ -0,0 +1,73 @@
+/**
+ * Common methods for the desktop security level components.
+ */
+export const SecurityLevelUIUtils = {
+ /**
+ * Create an element that gives a description of the security level. To be
+ * used in the settings.
+ *
+ * @param {string} level - The security level to describe.
+ * @param {Document} doc - The document where the element will be inserted.
+ *
+ * @returns {Element} - The newly created element.
+ */
+ createDescriptionElement(level, doc) {
+ const el = doc.createElement("div");
+ el.classList.add("security-level-description");
+
+ let l10nIdSummary;
+ let bullets;
+ switch (level) {
+ case "standard":
+ l10nIdSummary = "security-level-summary-standard";
+ break;
+ case "safer":
+ l10nIdSummary = "security-level-summary-safer";
+ bullets = [
+ "security-level-preferences-bullet-https-only-javascript",
+ "security-level-preferences-bullet-limit-font-and-symbols",
+ "security-level-preferences-bullet-limit-media",
+ ];
+ break;
+ case "safest":
+ l10nIdSummary = "security-level-summary-safest";
+ bullets = [
+ "security-level-preferences-bullet-disabled-javascript",
+ "security-level-preferences-bullet-limit-font-and-symbols-and-images",
+ "security-level-preferences-bullet-limit-media",
+ ];
+ break;
+ case "custom":
+ l10nIdSummary = "security-level-summary-custom";
+ break;
+ default:
+ throw Error(`Unhandled level: ${level}`);
+ }
+
+ const summaryEl = doc.createElement("div");
+ summaryEl.classList.add("security-level-summary");
+ doc.l10n.setAttributes(summaryEl, l10nIdSummary);
+
+ el.append(summaryEl);
+
+ if (!bullets) {
+ return el;
+ }
+
+ const listEl = doc.createElement("ul");
+ listEl.classList.add("security-level-description-extra");
+ // Add a mozilla styling class as well:
+ listEl.classList.add("privacy-extra-information");
+ for (const l10nId of bullets) {
+ const bulletEl = doc.createElement("li");
+ bulletEl.classList.add("security-level-description-bullet");
+
+ doc.l10n.setAttributes(bulletEl, l10nId);
+
+ listEl.append(bulletEl);
+ }
+
+ el.append(listEl);
+ return el;
+ },
+};
=====================================
browser/components/securitylevel/content/securityLevel.js
=====================================
@@ -1,9 +1,10 @@
"use strict";
-/* global AppConstants, Services, openPreferences, XPCOMUtils */
+/* global AppConstants, Services, openPreferences, XPCOMUtils, gSubDialog */
ChromeUtils.defineESModuleGetters(this, {
SecurityLevelPrefs: "resource://gre/modules/SecurityLevel.sys.mjs",
+ SecurityLevelUIUtils: "resource:///modules/SecurityLevelUIUtils.sys.mjs",
});
/*
@@ -35,12 +36,8 @@ var SecurityLevelButton = {
_anchorButton: null,
_configUIFromPrefs() {
- const level = SecurityLevelPrefs.securityLevel;
- if (!level) {
- return;
- }
- const custom = SecurityLevelPrefs.securityCustom;
- this._button.setAttribute("level", custom ? `${level}_custom` : level);
+ const level = SecurityLevelPrefs.securityLevelSummary;
+ this._button.setAttribute("level", level);
let l10nIdLevel;
switch (level) {
@@ -53,15 +50,12 @@ var SecurityLevelButton = {
case "safest":
l10nIdLevel = "security-level-toolbar-button-safest";
break;
+ case "custom":
+ l10nIdLevel = "security-level-toolbar-button-custom";
+ break;
default:
throw Error(`Unhandled level: ${level}`);
}
- if (custom) {
- // Don't distinguish between the different levels when in the custom
- // state. We just want to emphasise that it is custom rather than any
- // specific level.
- l10nIdLevel = "security-level-toolbar-button-custom";
- }
document.l10n.setAttributes(this._button, l10nIdLevel);
},
@@ -164,12 +158,7 @@ var SecurityLevelPanel = {
panel: document.getElementById("securityLevel-panel"),
background: document.getElementById("securityLevel-background"),
levelName: document.getElementById("securityLevel-level"),
- customName: document.getElementById("securityLevel-custom"),
summary: document.getElementById("securityLevel-summary"),
- restoreDefaultsButton: document.getElementById(
- "securityLevel-restoreDefaults"
- ),
- settingsButton: document.getElementById("securityLevel-settings"),
};
const learnMoreEl = document.getElementById("securityLevel-learnMore");
@@ -177,12 +166,11 @@ var SecurityLevelPanel = {
this.hide();
});
- this._elements.restoreDefaultsButton.addEventListener("command", () => {
- this.restoreDefaults();
- });
- this._elements.settingsButton.addEventListener("command", () => {
- this.openSecuritySettings();
- });
+ document
+ .getElementById("securityLevel-settings")
+ .addEventListener("command", () => {
+ this.openSecuritySettings();
+ });
this._elements.panel.addEventListener("popupshown", () => {
// Bring focus into the panel by focusing the default button.
@@ -199,19 +187,7 @@ var SecurityLevelPanel = {
}
// get security prefs
- const level = SecurityLevelPrefs.securityLevel;
- const custom = SecurityLevelPrefs.securityCustom;
-
- // only visible when user is using custom settings
- this._elements.customName.hidden = !custom;
- this._elements.restoreDefaultsButton.hidden = !custom;
- if (custom) {
- this._elements.settingsButton.removeAttribute("default");
- this._elements.restoreDefaultsButton.setAttribute("default", "true");
- } else {
- this._elements.settingsButton.setAttribute("default", "true");
- this._elements.restoreDefaultsButton.removeAttribute("default");
- }
+ const level = SecurityLevelPrefs.securityLevelSummary;
// Descriptions change based on security level
this._elements.background.setAttribute("level", level);
@@ -230,12 +206,13 @@ var SecurityLevelPanel = {
l10nIdLevel = "security-level-panel-level-safest";
l10nIdSummary = "security-level-summary-safest";
break;
+ case "custom":
+ l10nIdLevel = "security-level-panel-level-custom";
+ l10nIdSummary = "security-level-summary-custom";
+ break;
default:
throw Error(`Unhandled level: ${level}`);
}
- if (custom) {
- l10nIdSummary = "security-level-summary-custom";
- }
document.l10n.setAttributes(this._elements.levelName, l10nIdLevel);
document.l10n.setAttributes(this._elements.summary, l10nIdSummary);
@@ -269,13 +246,6 @@ var SecurityLevelPanel = {
this._elements.panel.hidePopup();
},
- restoreDefaults() {
- SecurityLevelPrefs.securityCustom = false;
- // Move focus to the settings button since restore defaults button will
- // become hidden.
- this._elements.settingsButton.focus();
- },
-
openSecuritySettings() {
openPreferences("privacy-securitylevel");
this.hide();
@@ -301,59 +271,64 @@ var SecurityLevelPanel = {
var SecurityLevelPreferences = {
_securityPrefsBranch: null,
+
/**
- * The notification box shown when the user has a custom security setting.
- *
- * @type {Element}
- */
- _customNotification: null,
- /**
- * The radiogroup for this preference.
- *
- * @type {Element}
- */
- _radiogroup: null,
- /**
- * A list of radio options and their containers.
+ * The element that shows the current security level.
*
- * @type {Array<object>}
+ * @type {?Element}
*/
- _radioOptions: null,
+ _currentEl: null,
_populateXUL() {
- this._customNotification = document.getElementById(
- "securityLevel-customNotification"
+ this._currentEl = document.getElementById("security-level-current");
+ const changeButton = document.getElementById("security-level-change");
+ const badgeEl = this._currentEl.querySelector(
+ ".security-level-current-badge"
);
- document
- .getElementById("securityLevel-restoreDefaults")
- .addEventListener("command", () => {
- SecurityLevelPrefs.securityCustom = false;
- });
-
- this._radiogroup = document.getElementById("securityLevel-radiogroup");
- this._radioOptions = Array.from(
- this._radiogroup.querySelectorAll(".securityLevel-radio-option"),
- container => {
- return { container, radio: container.querySelector("radio") };
- }
- );
+ for (const { level, nameId } of [
+ { level: "standard", nameId: "security-level-panel-level-standard" },
+ { level: "safer", nameId: "security-level-panel-level-safer" },
+ { level: "safest", nameId: "security-level-panel-level-safest" },
+ { level: "custom", nameId: "security-level-panel-level-custom" },
+ ]) {
+ // Classes that control visibility:
+ // security-level-current-standard
+ // security-level-current-safer
+ // security-level-current-safest
+ // security-level-current-custom
+ const visibilityClass = `security-level-current-${level}`;
+ const nameEl = document.createElement("div");
+ nameEl.classList.add("security-level-name", visibilityClass);
+ document.l10n.setAttributes(nameEl, nameId);
+
+ const descriptionEl = SecurityLevelUIUtils.createDescriptionElement(
+ level,
+ document
+ );
+ descriptionEl.classList.add(visibilityClass);
+
+ this._currentEl.insertBefore(nameEl, badgeEl);
+ this._currentEl.insertBefore(descriptionEl, changeButton);
+ }
- this._radiogroup.addEventListener("select", () => {
- SecurityLevelPrefs.securityLevel = this._radiogroup.value;
+ changeButton.addEventListener("click", () => {
+ this._openDialog();
});
},
+ _openDialog() {
+ gSubDialog.open(
+ "chrome://browser/content/securitylevel/securityLevelDialog.xhtml",
+ { features: "resizable=yes" }
+ );
+ },
+
_configUIFromPrefs() {
- this._radiogroup.value = SecurityLevelPrefs.securityLevel;
- const isCustom = SecurityLevelPrefs.securityCustom;
- this._radiogroup.disabled = isCustom;
- this._customNotification.hidden = !isCustom;
- // Have the container's selection CSS class match the selection state of the
- // radio elements.
- for (const { container, radio } of this._radioOptions) {
- container.classList.toggle("selected", radio.selected);
- }
+ // Set a data-current-level attribute for showing the current security
+ // level, and hiding the rest.
+ this._currentEl.dataset.currentLevel =
+ SecurityLevelPrefs.securityLevelSummary;
},
init() {
=====================================
browser/components/securitylevel/content/securityLevelButton.css
=====================================
@@ -7,12 +7,6 @@ toolbarbutton#security-level-button[level="safer"] {
toolbarbutton#security-level-button[level="safest"] {
list-style-image: url("chrome://browser/content/securitylevel/securityLevelIcon.svg#safest");
}
-toolbarbutton#security-level-button[level="standard_custom"] {
+toolbarbutton#security-level-button[level="custom"] {
list-style-image: url("chrome://browser/content/securitylevel/securityLevelIcon.svg#standard_custom");
}
-toolbarbutton#security-level-button[level="safer_custom"] {
- list-style-image: url("chrome://browser/content/securitylevel/securityLevelIcon.svg#safer_custom");
-}
-toolbarbutton#security-level-button[level="safest_custom"] {
- list-style-image: url("chrome://browser/content/securitylevel/securityLevelIcon.svg#safest_custom");
-}
=====================================
browser/components/securitylevel/content/securityLevelDialog.js
=====================================
@@ -0,0 +1,188 @@
+"use strict";
+
+const { SecurityLevelPrefs } = ChromeUtils.importESModule(
+ "resource://gre/modules/SecurityLevel.sys.mjs"
+);
+const { SecurityLevelUIUtils } = ChromeUtils.importESModule(
+ "resource:///modules/SecurityLevelUIUtils.sys.mjs"
+);
+
+const gSecurityLevelDialog = {
+ /**
+ * The security level when this dialog was opened.
+ *
+ * @type {string}
+ */
+ _prevLevel: SecurityLevelPrefs.securityLevelSummary,
+ /**
+ * The security level currently selected.
+ *
+ * @type {string}
+ */
+ _selectedLevel: "",
+ /**
+ * The radiogroup for this preference.
+ *
+ * @type {?Element}
+ */
+ _radiogroup: null,
+ /**
+ * A list of radio options and their containers.
+ *
+ * @type {?Array<{ container: Element, radio: Element }>}
+ */
+ _radioOptions: null,
+
+ /**
+ * Initialise the dialog.
+ */
+ async init() {
+ const dialog = document.getElementById("security-level-dialog");
+ dialog.addEventListener("dialogaccept", event => {
+ if (this._acceptButton.disabled) {
+ event.preventDefault();
+ return;
+ }
+ this._commitChange();
+ });
+
+ this._acceptButton = dialog.getButton("accept");
+
+ document.l10n.setAttributes(
+ this._acceptButton,
+ "security-level-dialog-save-restart"
+ );
+
+ this._radiogroup = document.getElementById("security-level-radiogroup");
+
+ this._radioOptions = Array.from(
+ this._radiogroup.querySelectorAll(".security-level-radio-container"),
+ container => {
+ return {
+ container,
+ radio: container.querySelector(".security-level-radio"),
+ };
+ }
+ );
+
+ for (const { container, radio } of this._radioOptions) {
+ const level = radio.value;
+ radio.id = `security-level-radio-${level}`;
+ const currentEl = container.querySelector(
+ ".security-level-current-badge"
+ );
+ currentEl.id = `security-level-current-badge-${level}`;
+ const descriptionEl = SecurityLevelUIUtils.createDescriptionElement(
+ level,
+ document
+ );
+ descriptionEl.classList.add("indent");
+ descriptionEl.id = `security-level-description-${level}`;
+
+ // Wait for the full translation of the element before adding it to the
+ // DOM. In particular, we want to make sure the elements have text before
+ // we measure the maxHeight below.
+ await document.l10n.translateFragment(descriptionEl);
+ document.l10n.pauseObserving();
+ container.append(descriptionEl);
+ document.l10n.resumeObserving();
+
+ if (level === this._prevLevel) {
+ currentEl.hidden = false;
+ // When the currentEl is visible, include it in the accessible name for
+ // the radio option.
+ // NOTE: The currentEl has an accessible name which includes punctuation
+ // to help separate it's content from the security level name.
+ // E.g. "Standard (Current level)".
+ radio.setAttribute("aria-labelledby", `${radio.id} ${currentEl.id}`);
+ } else {
+ currentEl.hidden = true;
+ }
+ // We point the accessible description to the wrapping
+ // .security-level-description element, rather than its children
+ // that define the actual text content. This means that when the
+ // privacy-extra-information is shown or hidden, its text content is
+ // included or excluded from the accessible description, respectively.
+ radio.setAttribute("aria-describedby", descriptionEl.id);
+ }
+
+ // We want to reserve the maximum height of the radiogroup so that the
+ // dialog has enough height when the user switches options. So we cycle
+ // through the options and measure the height when they are selected to set
+ // a minimum height that fits all of them.
+ // NOTE: At the time of implementation, at this point the dialog may not
+ // yet have the "subdialog" attribute, which means it is missing the
+ // common.css stylesheet from its shadow root, which effects the size of the
+ // .radio-check element and the font. Therefore, we have duplicated the
+ // import of common.css in SecurityLevelDialog.xhtml to ensure it is applied
+ // at this earlier stage.
+ let maxHeight = 0;
+ for (const { container } of this._radioOptions) {
+ container.classList.add("selected");
+ maxHeight = Math.max(
+ maxHeight,
+ this._radiogroup.getBoundingClientRect().height
+ );
+ container.classList.remove("selected");
+ }
+ this._radiogroup.style.minHeight = `${maxHeight}px`;
+
+ if (this._prevLevel !== "custom") {
+ this._selectedLevel = this._prevLevel;
+ this._radiogroup.value = this._prevLevel;
+ } else {
+ this._radiogroup.selectedItem = null;
+ }
+
+ this._radiogroup.addEventListener("select", () => {
+ this._selectedLevel = this._radiogroup.value;
+ this._updateSelected();
+ });
+
+ this._updateSelected();
+ },
+
+ /**
+ * Update the UI in response to a change in selection.
+ */
+ _updateSelected() {
+ this._acceptButton.disabled =
+ !this._selectedLevel || this._selectedLevel === this._prevLevel;
+ // Have the container's `selected` CSS class match the selection state of
+ // the radio elements.
+ for (const { container, radio } of this._radioOptions) {
+ container.classList.toggle("selected", radio.selected);
+ }
+ },
+
+ /**
+ * Commit the change in security level and restart the browser.
+ */
+ _commitChange() {
+ SecurityLevelPrefs.setSecurityLevelBeforeRestart(this._selectedLevel);
+ Services.startup.quit(
+ Services.startup.eAttemptQuit | Services.startup.eRestart
+ );
+ },
+};
+
+// Initial focus is not visible, even if opened with a keyboard. We avoid the
+// default handler and manage the focus ourselves, which will paint the focus
+// ring by default.
+// NOTE: A side effect is that the focus ring will show even if the user opened
+// with a mouse event.
+// TODO: Remove this once bugzilla bug 1708261 is resolved.
+document.subDialogSetDefaultFocus = () => {
+ document.getElementById("security-level-radiogroup").focus();
+};
+
+// Delay showing and sizing the subdialog until it is fully initialised.
+document.mozSubdialogReady = new Promise(resolve => {
+ window.addEventListener(
+ "DOMContentLoaded",
+ () => {
+ gSecurityLevelDialog.init().finally(resolve);
+ },
+ { once: true }
+ );
+});
=====================================
browser/components/securitylevel/content/securityLevelDialog.xhtml
=====================================
@@ -0,0 +1,86 @@
+<?xml version="1.0"?>
+
+<window
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:html="http://www.w3.org/1999/xhtml"
+ data-l10n-id="security-level-dialog-window"
+>
+ <dialog id="security-level-dialog" buttons="accept,cancel">
+ <linkset>
+ <html:link rel="stylesheet" href="chrome://global/skin/global.css" />
+ <!-- NOTE: We include common.css explicitly, rather than relying on
+ - the dialog's shadowroot importing it, which is late loaded in
+ - response to the dialog's "subdialog" attribute, which is set
+ - in response to DOMFrameContentLoaded.
+ - In particular, we need the .radio-check rule and font rules from
+ - common-shared.css to be in place when gSecurityLevelDialog.init is
+ - called, which will help ensure that the radio element has the correct
+ - size when we measure its bounding box. -->
+ <html:link
+ rel="stylesheet"
+ href="chrome://global/skin/in-content/common.css"
+ />
+ <html:link
+ rel="stylesheet"
+ href="chrome://browser/skin/preferences/preferences.css"
+ />
+ <html:link
+ rel="stylesheet"
+ href="chrome://browser/skin/preferences/privacy.css"
+ />
+ <html:link
+ rel="stylesheet"
+ href="chrome://browser/content/securitylevel/securityLevelPreferences.css"
+ />
+
+ <html:link rel="localization" href="branding/brand.ftl" />
+ <html:link rel="localization" href="toolkit/global/base-browser.ftl" />
+ </linkset>
+
+ <script src="chrome://browser/content/securitylevel/securityLevelDialog.js" />
+
+ <description data-l10n-id="security-level-dialog-restart-description" />
+
+ <radiogroup id="security-level-radiogroup" class="highlighting-group">
+ <html:div
+ class="security-level-radio-container security-level-grid privacy-detailedoption info-box-container"
+ >
+ <radio
+ class="security-level-radio security-level-name"
+ value="standard"
+ data-l10n-id="security-level-preferences-level-standard"
+ />
+ <html:div
+ class="security-level-current-badge"
+ data-l10n-id="security-level-preferences-current-badge"
+ ></html:div>
+ </html:div>
+ <html:div
+ class="security-level-radio-container security-level-grid privacy-detailedoption info-box-container"
+ >
+ <radio
+ class="security-level-radio security-level-name"
+ value="safer"
+ data-l10n-id="security-level-preferences-level-safer"
+ />
+ <html:div
+ class="security-level-current-badge"
+ data-l10n-id="security-level-preferences-current-badge"
+ ></html:div>
+ </html:div>
+ <html:div
+ class="security-level-radio-container security-level-grid privacy-detailedoption info-box-container"
+ >
+ <radio
+ class="security-level-radio security-level-name"
+ value="safest"
+ data-l10n-id="security-level-preferences-level-safest"
+ />
+ <html:div
+ class="security-level-current-badge"
+ data-l10n-id="security-level-preferences-current-badge"
+ ></html:div>
+ </html:div>
+ </radiogroup>
+ </dialog>
+</window>
=====================================
browser/components/securitylevel/content/securityLevelPanel.css
=====================================
@@ -23,7 +23,7 @@
background-position-x: right var(--background-inline-offset);
}
-#securityLevel-background[level="standard"] {
+#securityLevel-background:is([level="standard"], [level="custom"]) {
background-image: url("chrome://browser/content/securitylevel/securityLevelIcon.svg#standard");
}
@@ -49,14 +49,6 @@
font-weight: 600;
}
-#securityLevel-custom {
- border-radius: 4px;
- background-color: var(--warning-icon-bgcolor);
- color: black;
- padding: 0.4em 0.5em;
- margin-inline-start: 1em;
-}
-
#securityLevel-summary {
padding-inline-end: 5em;
max-width: 20em;
=====================================
browser/components/securitylevel/content/securityLevelPanel.inc.xhtml
=====================================
@@ -15,10 +15,6 @@
<vbox id="securityLevel-background" class="panel-subview-body">
<html:p id="securityLevel-subheading">
<html:span id="securityLevel-level"></html:span>
- <html:span
- id="securityLevel-custom"
- data-l10n-id="security-level-panel-custom-badge"
- ></html:span>
</html:p>
<html:p id="securityLevel-summary"></html:p>
<html:a
@@ -32,12 +28,8 @@
<button
id="securityLevel-settings"
class="footer-button"
+ default="true"
data-l10n-id="security-level-panel-open-settings-button"
/>
- <button
- id="securityLevel-restoreDefaults"
- class="footer-button"
- data-l10n-id="security-level-restore-defaults-button"
- />
</html:moz-button-group>
</panel>
=====================================
browser/components/securitylevel/content/securityLevelPreferences.css
=====================================
@@ -1,26 +1,166 @@
-#securityLevel-groupbox {
- --section-highlight-background-color: color-mix(in srgb, var(--in-content-accent-color) 20%, transparent);
+.security-level-grid {
+ display: grid;
+ grid-template:
+ "icon name badge button" min-content
+ "icon summary summary button" auto
+ "icon extra extra ." auto
+ / max-content max-content 1fr max-content;
}
-#securityLevel-customNotification {
- /* Spacing similar to #fpiIncompatibilityWarning. */
- margin-block: 16px;
+.security-level-icon {
+ grid-area: icon;
+ align-self: start;
+ width: 24px;
+ height: 24px;
+ -moz-context-properties: fill;
+ fill: var(--in-content-icon-color);
+ margin-block-start: var(--space-xsmall);
+ margin-inline-end: var(--space-large);
}
-.info-icon.securityLevel-custom-warning-icon {
- list-style-image: url("chrome://global/skin/icons/warning.svg");
+.security-level-current-badge {
+ grid-area: badge;
+ align-self: center;
+ justify-self: start;
+ white-space: nowrap;
+ background: var(--background-color-information);
+ color: inherit;
+ font-size: var(--font-size-small);
+ border-radius: var(--border-radius-circle);
+ margin-inline-start: var(--space-small);
+ padding-block: var(--space-xsmall);
+ padding-inline: var(--space-small);
}
-#securityLevel-customHeading {
+.security-level-current-badge span {
+ /* Still accessible to screen reader, but not visual.
+ * Keep inline, but with no layout width. */
+ display: inline-block;
+ width: 1px;
+ margin-inline-end: -1px;
+ clip-path: inset(50%);
+}
+
+@media (prefers-contrast) and (not (forced-colors)) {
+ .security-level-current-badge {
+ /* Match the checkbox/radio colors. */
+ background: var(--color-accent-primary);
+ color: var(--button-text-color-primary);
+ }
+}
+
+@media (forced-colors) {
+ .security-level-current-badge {
+ /* Match the checkbox/radio/selected colors. */
+ background: SelectedItem;
+ color: SelectedItemText;
+ }
+}
+
+.security-level-name {
+ grid-area: name;
font-weight: bold;
+ align-self: center;
+ white-space: nowrap;
+}
+
+.security-level-description {
+ display: grid;
+ grid-column: summary-start / extra-end;
+ grid-row: summary-start / extra-end;
+ grid-template-rows: subgrid;
+ grid-template-columns: subgrid;
+ margin-block-start: var(--space-small);
+}
+
+.security-level-summary {
+ grid-area: summary;
+}
+
+.security-level-description-extra {
+ grid-area: extra;
+ margin-block: var(--space-medium) 0;
+ margin-inline: var(--space-large) 0;
+ padding: 0;
+}
+
+.security-level-description-bullet:not(:last-child) {
+ margin-block-end: var(--space-medium);
+}
+
+/* Tweak current security level display. */
+
+#security-level-current {
+ margin-block-start: var(--space-large);
+ background: var(--in-content-box-background);
+ border: 1px solid var(--in-content-box-border-color);
+ border-radius: var(--border-radius-small);
+ padding: var(--space-medium);
+}
+
+#security-level-change {
+ grid-area: button;
+ align-self: center;
+ margin: 0;
+ margin-inline-start: var(--space-large);
+}
+
+/* Adjust which content is visible depending on the current security level. */
+
+#security-level-current:not([data-current-level="standard"]) .security-level-current-standard {
+ display: none;
+}
+
+#security-level-current:not([data-current-level="safer"]) .security-level-current-safer {
+ display: none;
+}
+
+#security-level-current:not([data-current-level="safest"]) .security-level-current-safest {
+ display: none;
+}
+
+#security-level-current:not([data-current-level="custom"]) .security-level-current-custom {
+ display: none;
+}
+
+#security-level-current[data-current-level="standard"] .security-level-icon {
+ content: url("chrome://browser/content/securitylevel/securityLevelIcon.svg#standard");
+}
+
+#security-level-current[data-current-level="safer"] .security-level-icon {
+ content: url("chrome://browser/content/securitylevel/securityLevelIcon.svg#safer");
+}
+
+#security-level-current[data-current-level="safest"] .security-level-icon {
+ content: url("chrome://browser/content/securitylevel/securityLevelIcon.svg#safest");
+}
+
+#security-level-current[data-current-level="custom"] .security-level-icon {
+ content: url("chrome://browser/content/securitylevel/securityLevelIcon.svg#standard_custom");
+}
+
+/* Tweak security level dialog. */
+
+#security-level-radiogroup {
+ margin-block: var(--space-large) var(--space-xlarge);
+}
+
+.security-level-radio-container {
+ padding-block: var(--space-large);
+}
+
+#security-level-radiogroup .security-level-radio {
+ margin: 0;
}
-#securityLevel-radiogroup[disabled] {
- opacity: 0.5;
+#security-level-radiogroup .radio-label-box {
+ /* .security-level-current-badge already has a margin. */
+ margin: 0;
}
-/* Overwrite the rule in common-shared.css so we don't get 0.25 opacity overall
- * on the radio text. */
-#securityLevel-radiogroup[disabled] radio[disabled] .radio-label-box {
- opacity: 1.0;
+#security-level-radiogroup .privacy-detailedoption.security-level-radio-container:not(.selected) .security-level-description-extra {
+ /* .privacy-detailedoption uses visibility: hidden, which does not work with
+ * our grid display (the margin is still reserved) so we use display: none
+ * instead. */
+ display: none;
}
=====================================
browser/components/securitylevel/content/securityLevelPreferences.inc.xhtml
=====================================
@@ -17,112 +17,19 @@
data-l10n-id="security-level-preferences-learn-more-link"
></html:a>
</description>
- <hbox
- id="securityLevel-customNotification"
- class="info-box-container"
- flex="1"
- >
- <hbox class="info-icon-container">
- <image class="info-icon securityLevel-custom-warning-icon"/>
- </hbox>
- <vbox flex="1">
- <label
- id="securityLevel-customHeading"
- data-l10n-id="security-level-preferences-custom-heading"
- />
- <description
- id="securityLevel-customDescription"
- data-l10n-id="security-level-summary-custom"
- flex="1"
- />
- </vbox>
- <hbox align="center">
- <button
- id="securityLevel-restoreDefaults"
- data-l10n-id="security-level-restore-defaults-button"
- />
- </hbox>
- </hbox>
- <radiogroup id="securityLevel-radiogroup">
- <vbox class="securityLevel-radio-option privacy-detailedoption info-box-container">
- <radio
- value="standard"
- data-l10n-id="security-level-preferences-level-standard"
- aria-describedby="securityLevelSummary-standard"
- />
- <vbox id="securityLevelSummary-standard" class="indent">
- <label data-l10n-id="security-level-summary-standard" />
- </vbox>
- </vbox>
- <vbox class="securityLevel-radio-option privacy-detailedoption info-box-container">
- <!-- NOTE: We point the accessible description to the wrapping vbox
- - rather than its first description element. This means that when the
- - privacy-extra-information is shown or hidden, its text content is
- - included or excluded from the accessible description, respectively.
- -->
- <radio
- value="safer"
- data-l10n-id="security-level-preferences-level-safer"
- aria-describedby="securityLevelSummary-safer"
- />
- <vbox id="securityLevelSummary-safer" class="indent">
- <label data-l10n-id="security-level-summary-safer" />
- <vbox class="privacy-extra-information">
- <vbox class="indent">
- <hbox class="extra-information-label">
- <label
- class="content-blocking-label"
- data-l10n-id="security-level-preferences-bullet-https-only-javascript"
- />
- </hbox>
- <hbox class="extra-information-label">
- <label
- class="content-blocking-label"
- data-l10n-id="security-level-preferences-bullet-limit-font-and-symbols"
- />
- </hbox>
- <hbox class="extra-information-label">
- <label
- class="content-blocking-label"
- data-l10n-id="security-level-preferences-bullet-limit-media"
- />
- </hbox>
- </vbox>
- </vbox>
- </vbox>
- </vbox>
- <vbox class="securityLevel-radio-option privacy-detailedoption info-box-container">
- <radio
- value="safest"
- data-l10n-id="security-level-preferences-level-safest"
- aria-describedby="securityLevelSummary-safest"
- />
- <vbox id="securityLevelSummary-safest" class="indent">
- <label data-l10n-id="security-level-summary-safest" />
- <vbox class="privacy-extra-information">
- <vbox class="indent">
- <hbox class="extra-information-label">
- <label
- class="content-blocking-label"
- data-l10n-id="security-level-preferences-bullet-disabled-javascript"
- />
- </hbox>
- <hbox class="extra-information-label">
- <label
- class="content-blocking-label"
- data-l10n-id="security-level-preferences-bullet-limit-font-and-symbols-and-images"
- />
- </hbox>
- <hbox class="extra-information-label">
- <label
- class="content-blocking-label"
- data-l10n-id="security-level-preferences-bullet-limit-media"
- />
- </hbox>
- </vbox>
- </vbox>
- </vbox>
- </vbox>
- </radiogroup>
+ <html:div id="security-level-current" class="security-level-grid">
+ <html:img
+ class="security-level-icon"
+ alt=""
+ />
+ <html:div
+ class="security-level-current-badge"
+ data-l10n-id="security-level-preferences-current-badge"
+ ></html:div>
+ <html:button
+ id="security-level-change"
+ data-l10n-id="security-level-preferences-change-button"
+ ></html:button>
+ </html:div>
</vbox>
</groupbox>
=====================================
browser/components/securitylevel/jar.mn
=====================================
@@ -4,3 +4,5 @@ browser.jar:
content/browser/securitylevel/securityLevelButton.css (content/securityLevelButton.css)
content/browser/securitylevel/securityLevelPreferences.css (content/securityLevelPreferences.css)
content/browser/securitylevel/securityLevelIcon.svg (content/securityLevelIcon.svg)
+ content/browser/securitylevel/securityLevelDialog.xhtml (content/securityLevelDialog.xhtml)
+ content/browser/securitylevel/securityLevelDialog.js (content/securityLevelDialog.js)
=====================================
browser/components/securitylevel/moz.build
=====================================
@@ -1 +1,5 @@
JAR_MANIFESTS += ["jar.mn"]
+
+EXTRA_JS_MODULES += [
+ "SecurityLevelUIUtils.sys.mjs",
+]
=====================================
browser/modules/SecurityLevelRestartNotification.sys.mjs
=====================================
@@ -0,0 +1,72 @@
+const lazy = {};
+
+ChromeUtils.defineESModuleGetters(lazy, {
+ BrowserWindowTracker: "resource:///modules/BrowserWindowTracker.sys.mjs",
+ SecurityLevelPrefs: "resource://gre/modules/SecurityLevel.sys.mjs",
+});
+
+ChromeUtils.defineLazyGetter(lazy, "NotificationStrings", function () {
+ return new Localization([
+ "branding/brand.ftl",
+ "toolkit/global/base-browser.ftl",
+ ]);
+});
+
+/**
+ * Interface for showing the security level restart notification on desktop.
+ */
+export const SecurityLevelRestartNotification = {
+ /**
+ * Whether we have already been initialised.
+ *
+ * @type {boolean}
+ */
+ _initialized: false,
+
+ /**
+ * Called when the UI is ready to show a notification.
+ */
+ ready() {
+ if (this._initialized) {
+ return;
+ }
+ this._initialized = true;
+ lazy.SecurityLevelPrefs.setRestartNotificationHandler(this);
+ },
+
+ /**
+ * Show the restart notification, and perform the restart if the user agrees.
+ */
+ async tryRestartBrowser() {
+ const [titleText, bodyText, primaryButtonText, secondaryButtonText] =
+ await lazy.NotificationStrings.formatValues([
+ { id: "security-level-restart-prompt-title" },
+ { id: "security-level-restart-prompt-body" },
+ { id: "security-level-restart-prompt-button-restart" },
+ { id: "security-level-restart-prompt-button-ignore" },
+ ]);
+ const buttonFlags =
+ Services.prompt.BUTTON_TITLE_IS_STRING * Services.prompt.BUTTON_POS_0 +
+ Services.prompt.BUTTON_TITLE_IS_STRING * Services.prompt.BUTTON_POS_1;
+
+ const propBag = await Services.prompt.asyncConfirmEx(
+ lazy.BrowserWindowTracker.getTopWindow()?.browsingContext ?? null,
+ Services.prompt.MODAL_TYPE_INTERNAL_WINDOW,
+ titleText,
+ bodyText,
+ buttonFlags,
+ primaryButtonText,
+ secondaryButtonText,
+ null,
+ null,
+ null,
+ {}
+ );
+
+ if (propBag.get("buttonNumClicked") === 0) {
+ Services.startup.quit(
+ Services.startup.eAttemptQuit | Services.startup.eRestart
+ );
+ }
+ },
+};
=====================================
browser/modules/moz.build
=====================================
@@ -136,6 +136,7 @@ EXTRA_JS_MODULES += [
"PopupBlockerObserver.sys.mjs",
"ProcessHangMonitor.sys.mjs",
"Sanitizer.sys.mjs",
+ "SecurityLevelRestartNotification.sys.mjs",
"SelectionChangedMenulist.sys.mjs",
"SharingUtils.sys.mjs",
"SiteDataManager.sys.mjs",
=====================================
media/libaom/moz.build
=====================================
@@ -143,6 +143,3 @@ LOCAL_INCLUDES += [
# TEST_DIRS += [
# 'test/fuzztest'
# ]
-
-if CONFIG["OS_TARGET"] == "WINNT" and CONFIG["CC_TYPE"] == "clang":
- OS_LIBS += ["pthread"]
=====================================
third_party/abseil-cpp/absl/base/base_gn/moz.build
=====================================
@@ -168,7 +168,4 @@ if CONFIG["OS_TARGET"] == "Linux" and CONFIG["TARGET_CPU"] == "x86_64":
DEFINES["_GNU_SOURCE"] = True
-if CONFIG["OS_TARGET"] == "WINNT" and CONFIG["CC_TYPE"] == "clang":
- OS_LIBS += ["pthread"]
-
Library("base_gn")
=====================================
third_party/abseil-cpp/absl/base/internal/thread_identity.cc
=====================================
@@ -14,7 +14,7 @@
#include "absl/base/internal/thread_identity.h"
-#if !defined(_WIN32) || defined(__MINGW32__)
+#if !defined(_WIN32)
#include <pthread.h>
#ifndef __wasi__
// WASI does not provide this header, either way we disable use
=====================================
third_party/abseil-cpp/absl/base/internal/thread_identity.h
=====================================
@@ -217,7 +217,7 @@ void ClearCurrentThreadIdentity();
#error ABSL_THREAD_IDENTITY_MODE cannot be directly set
#elif defined(ABSL_FORCE_THREAD_IDENTITY_MODE)
#define ABSL_THREAD_IDENTITY_MODE ABSL_FORCE_THREAD_IDENTITY_MODE
-#elif defined(_WIN32) && !defined(__MINGW32__)
+#elif defined(_WIN32)
#define ABSL_THREAD_IDENTITY_MODE ABSL_THREAD_IDENTITY_MODE_USE_CPP11
#elif defined(__APPLE__) && defined(ABSL_HAVE_THREAD_LOCAL)
#define ABSL_THREAD_IDENTITY_MODE ABSL_THREAD_IDENTITY_MODE_USE_CPP11
=====================================
third_party/libwebrtc/modules/desktop_capture/win/wgc_capture_session.cc
=====================================
@@ -370,7 +370,7 @@ HRESULT WgcCaptureSession::ProcessFrame() {
return hr;
}
- ComPtr<ABI::Windows::Graphics::DirectX::Direct3D11::IDirect3DDxgiInterfaceAccess>
+ ComPtr<Windows::Graphics::DirectX::Direct3D11::IDirect3DDxgiInterfaceAccess>
direct3DDxgiInterfaceAccess;
hr = d3d_surface->QueryInterface(IID_PPV_ARGS(&direct3DDxgiInterfaceAccess));
if (FAILED(hr)) {
=====================================
toolkit/components/extensions/ExtensionParent.sys.mjs
=====================================
@@ -2348,6 +2348,7 @@ async function torSendExtensionMessage(extensionId, message) {
const result = await ProxyMessenger.conduit.castRuntimeMessage("messenger", {
extensionId,
holder: new StructuredCloneHolder("torSendExtensionMessage", null, message),
+ query: true,
firstResponse: true,
sender: {
id: extensionId,
=====================================
toolkit/components/securitylevel/SecurityLevel.sys.mjs
=====================================
@@ -16,6 +16,7 @@ const BrowserTopics = Object.freeze({
// The Security Settings prefs in question.
const kSliderPref = "browser.security_level.security_slider";
const kCustomPref = "browser.security_level.security_custom";
+const kNoScriptInitedPref = "browser.security_level.noscript_inited";
// __getPrefValue(prefName)__
// Returns the current value of a preference, regardless of its type.
@@ -32,11 +33,11 @@ var getPrefValue = function (prefName) {
}
};
-// __bindPref(prefName, prefHandler, init)__
+// __bindPref(prefName, prefHandler)__
// Applies prefHandler whenever the value of the pref changes.
// If init is true, applies prefHandler to the current value.
-// Returns a zero-arg function that unbinds the pref.
-var bindPref = function (prefName, prefHandler, init = false) {
+// Returns the observer that was added.
+var bindPref = function (prefName, prefHandler) {
let update = () => {
prefHandler(getPrefValue(prefName));
},
@@ -48,21 +49,9 @@ var bindPref = function (prefName, prefHandler, init = false) {
},
};
Services.prefs.addObserver(prefName, observer);
- if (init) {
- update();
- }
- return () => {
- Services.prefs.removeObserver(prefName, observer);
- };
+ return observer;
};
-// __bindPrefAndInit(prefName, prefHandler)__
-// Applies prefHandler to the current value of pref specified by prefName.
-// Re-applies prefHandler whenever the value of the pref changes.
-// Returns a zero-arg function that unbinds the pref.
-var bindPrefAndInit = (prefName, prefHandler) =>
- bindPref(prefName, prefHandler, true);
-
async function waitForExtensionMessage(extensionId, checker = () => {}) {
const { torWaitForExtensionMessage } = lazy.ExtensionParent;
if (torWaitForExtensionMessage) {
@@ -74,7 +63,7 @@ async function waitForExtensionMessage(extensionId, checker = () => {}) {
async function sendExtensionMessage(extensionId, message) {
const { torSendExtensionMessage } = lazy.ExtensionParent;
if (torSendExtensionMessage) {
- return torSendExtensionMessage(extensionId, message);
+ return await torSendExtensionMessage(extensionId, message);
}
return undefined;
}
@@ -187,14 +176,8 @@ var initializeNoScriptControl = () => {
// `browser.runtime.onMessage.addListener(...)` in NoScript's bg/main.js.
// TODO: Is there a better way?
- let sendNoScriptSettings = settings =>
- sendExtensionMessage(noscriptID, settings);
-
- // __setNoScriptSafetyLevel(safetyLevel)__.
- // Set NoScript settings according to a particular safety level
- // (security slider level): 0 = Standard, 1 = Safer, 2 = Safest
- let setNoScriptSafetyLevel = safetyLevel =>
- sendNoScriptSettings(noscriptSettings(safetyLevel));
+ let sendNoScriptSettings = async settings =>
+ await sendExtensionMessage(noscriptID, settings);
// __securitySliderToSafetyLevel(sliderState)__.
// Converts the "browser.security_level.security_slider" pref value
@@ -204,36 +187,46 @@ var initializeNoScriptControl = () => {
// Wait for the first message from NoScript to arrive, and then
// bind the security_slider pref to the NoScript settings.
- let messageListener = a => {
+ let messageListener = async a => {
try {
logger.debug("Message received from NoScript:", a);
- let noscriptPersist = Services.prefs.getBoolPref(
- "browser.security_level.noscript_persist",
- false
- );
+ const persistPref = "browser.security_level.noscript_persist";
+ let noscriptPersist = Services.prefs.getBoolPref(persistPref, false);
let noscriptInited = Services.prefs.getBoolPref(
- "browser.security_level.noscript_inited",
+ kNoScriptInitedPref,
false
);
- // Set the noscript safety level once if we have never run noscript
- // before, or if we are not allowing noscript per-site settings to be
- // persisted between browser sessions. Otherwise make sure that the
- // security slider position, if changed, will rewrite the noscript
- // settings.
- bindPref(
- kSliderPref,
- sliderState =>
- setNoScriptSafetyLevel(securitySliderToSafetyLevel(sliderState)),
- !noscriptPersist || !noscriptInited
- );
- if (!noscriptInited) {
- Services.prefs.setBoolPref(
- "browser.security_level.noscript_inited",
- true
+ // Set the noscript safety level once at startup.
+ // If a user has set noscriptPersist, then we only send this if the
+ // security level was changed in a previous session.
+ // NOTE: We do not re-send this when the security_slider preference
+ // changes mid-session because this should always require a restart.
+ if (noscriptPersist && noscriptInited) {
+ logger.warn(
+ `Not initialising NoScript since the user has set ${persistPref}`
);
+ return;
}
+ // Read the security level, even if the user has the "custom"
+ // preference.
+ const securityIndex = Services.prefs.getIntPref(kSliderPref, 0);
+ const safetyLevel = securitySliderToSafetyLevel(securityIndex);
+ // May throw if NoScript fails to apply the settings:
+ const noscriptResult = await sendNoScriptSettings(
+ noscriptSettings(safetyLevel)
+ );
+ // Mark the NoScript extension as initialised so we do not reset it
+ // at the next startup for noscript_persist users.
+ Services.prefs.setBoolPref(kNoScriptInitedPref, true);
+ logger.info("NoScript successfully initialised.");
+ // In the future NoScript may tell us more about how it applied our
+ // settings, e.g. if user is overriding per-site permissions.
+ // Up to NoScript 12.6 noscriptResult is undefined.
+ logger.debug("NoScript response:", noscriptResult);
} catch (e) {
- logger.exception(e);
+ logger.error("Could not apply NoScript settings", e);
+ // Treat as a custom security level for the rest of the session.
+ Services.prefs.setBoolPref(kCustomPref, true);
}
};
waitForExtensionMessage(noscriptID, a => a.__meta.name === "started").then(
@@ -242,6 +235,8 @@ var initializeNoScriptControl = () => {
logger.info("Listening for messages from NoScript.");
} catch (e) {
logger.exception(e);
+ // Treat as a custom security level for the rest of the session.
+ Services.prefs.setBoolPref(kCustomPref, true);
}
};
@@ -271,16 +266,60 @@ const kSecuritySettings = {
// ### Prefs
+/**
+ * Amend the security level index to a standard value.
+ *
+ * @param {integer} index - The input index value.
+ * @returns {integer} - A standard index value.
+ */
+function fixupIndex(index) {
+ if (!Number.isInteger(index) || index < 1 || index > 4) {
+ // Unexpected value out of range, go to the "safest" level as a fallback.
+ return 1;
+ }
+ if (index === 3) {
+ // Migrate from old medium-low (3) to new medium (2).
+ return 2;
+ }
+ return index;
+}
+
+/**
+ * A list of preference observers that should be disabled whilst we write our
+ * preference values.
+ *
+ * @type {{ prefName: string, observer: object }[]}
+ */
+const prefObservers = [];
+
// __write_setting_to_prefs(settingIndex)__.
// Take a given setting index and write the appropriate pref values
// to the pref database.
var write_setting_to_prefs = function (settingIndex) {
- Object.keys(kSecuritySettings).forEach(prefName =>
- Services.prefs.setBoolPref(
- prefName,
- kSecuritySettings[prefName][settingIndex]
- )
- );
+ settingIndex = fixupIndex(settingIndex);
+ // Don't want to trigger our internal observers when setting ourselves.
+ for (const { prefName, observer } of prefObservers) {
+ Services.prefs.removeObserver(prefName, observer);
+ }
+ try {
+ // Make sure noscript is re-initialised at the next startup when the
+ // security level changes.
+ Services.prefs.setBoolPref(kNoScriptInitedPref, false);
+ Services.prefs.setIntPref(kSliderPref, settingIndex);
+ // NOTE: We do not clear kCustomPref. Instead, we rely on the preference
+ // being cleared on the next startup.
+ Object.keys(kSecuritySettings).forEach(prefName =>
+ Services.prefs.setBoolPref(
+ prefName,
+ kSecuritySettings[prefName][settingIndex]
+ )
+ );
+ } finally {
+ // Re-add the observers.
+ for (const { prefName, observer } of prefObservers) {
+ Services.prefs.addObserver(prefName, observer);
+ }
+ }
};
// __read_setting_from_prefs()__.
@@ -309,24 +348,6 @@ var read_setting_from_prefs = function (prefNames) {
return null;
};
-// __watch_security_prefs(onSettingChanged)__.
-// Whenever a pref bound to the security slider changes, onSettingChanged
-// is called with the new security setting value (1,2,3,4 or null).
-// Returns a zero-arg function that ends this binding.
-var watch_security_prefs = function (onSettingChanged) {
- let prefNames = Object.keys(kSecuritySettings);
- let unbindFuncs = [];
- for (let prefName of prefNames) {
- unbindFuncs.push(
- bindPrefAndInit(prefName, () =>
- onSettingChanged(read_setting_from_prefs())
- )
- );
- }
- // Call all the unbind functions.
- return () => unbindFuncs.forEach(unbind => unbind());
-};
-
// __initialized__.
// Have we called initialize() yet?
var initializedSecPrefs = false;
@@ -342,36 +363,82 @@ var initializeSecurityPrefs = function () {
}
logger.info("Initializing security-prefs.js");
initializedSecPrefs = true;
- // When security_custom is set to false, apply security_slider setting
- // to the security-sensitive prefs.
- bindPrefAndInit(kCustomPref, function (custom) {
- if (custom === false) {
- write_setting_to_prefs(Services.prefs.getIntPref(kSliderPref));
- }
- });
- // If security_slider is given a new value, then security_custom should
- // be set to false.
- bindPref(kSliderPref, function (prefIndex) {
+
+ const wasCustom = Services.prefs.getBoolPref(kCustomPref, false);
+ // For new profiles with no user preference, the security level should be "4"
+ // and it should not be custom.
+ let desiredIndex = Services.prefs.getIntPref(kSliderPref, 4);
+ desiredIndex = fixupIndex(desiredIndex);
+ // Make sure the user has a set preference user value.
+ Services.prefs.setIntPref(kSliderPref, desiredIndex);
+ Services.prefs.setBoolPref(kCustomPref, wasCustom);
+
+ // Make sure that the preference values at application startup match the
+ // expected values for the desired security level. See tor-browser#43783.
+
+ // NOTE: We assume that the controlled preference values that are read prior
+ // to profile-after-change do not change in value before this method is
+ // called. I.e. we expect the current preference values to match the
+ // preference values that were used during the application initialisation.
+ const effectiveIndex = read_setting_from_prefs();
+
+ if (wasCustom && effectiveIndex !== null) {
+ logger.info(`Custom startup values match index ${effectiveIndex}`);
+ // Do not consider custom any more.
+ // NOTE: This level needs to be set before it is read elsewhere. In
+ // particular, for the NoScript addon.
Services.prefs.setBoolPref(kCustomPref, false);
- write_setting_to_prefs(prefIndex);
+ Services.prefs.setIntPref(kSliderPref, effectiveIndex);
+ } else if (!wasCustom && effectiveIndex !== desiredIndex) {
+ // NOTE: We assume all our controlled preferences require a restart.
+ // In practice, only a subset of these preferences may actually require a
+ // restart, so we could switch their values. But we treat them all the same
+ // for simplicity, consistency and stability in case mozilla changes the
+ // restart requirements.
+ logger.info(`Startup values do not match for index ${desiredIndex}`);
+ SecurityLevelPrefs.requireRestart();
+ }
+
+ // Start listening for external changes to the controlled preferences.
+ prefObservers.push({
+ prefName: kCustomPref,
+ observer: bindPref(kCustomPref, custom => {
+ // Custom flag was removed mid-session. Requires a restart to apply the
+ // security level.
+ if (custom === false) {
+ logger.info("Custom flag was cleared externally");
+ SecurityLevelPrefs.requireRestart();
+ }
+ }),
});
- // If a security-sensitive pref changes, then decide if the set of pref values
- // constitutes a security_slider setting or a custom value.
- watch_security_prefs(settingIndex => {
- if (settingIndex === null) {
- Services.prefs.setBoolPref(kCustomPref, true);
- } else {
- Services.prefs.setIntPref(kSliderPref, settingIndex);
- Services.prefs.setBoolPref(kCustomPref, false);
- }
+ prefObservers.push({
+ prefName: kSliderPref,
+ observer: bindPref(kSliderPref, () => {
+ // Security level was changed mid-session. Requires a restart to apply.
+ logger.info("Security level was changed externally");
+ SecurityLevelPrefs.requireRestart();
+ }),
});
- // Migrate from old medium-low (3) to new medium (2).
- if (
- Services.prefs.getBoolPref(kCustomPref) === false &&
- Services.prefs.getIntPref(kSliderPref) === 3
- ) {
- Services.prefs.setIntPref(kSliderPref, 2);
- write_setting_to_prefs(2);
+
+ for (const prefName of Object.keys(kSecuritySettings)) {
+ prefObservers.push({
+ prefName,
+ observer: bindPref(prefName, () => {
+ logger.warn(
+ `The controlled preference ${prefName} was changed externally.` +
+ " Treating as a custom security level."
+ );
+ // Something outside of this module changed the preference value for a
+ // preference we control.
+ // Always treat as a custom security level for the rest of this session,
+ // even if the new preference values match a pre-set security level. We
+ // do this because some controlled preferences require a restart to be
+ // properly applied. See tor-browser#43783.
+ // In the case where it does match a pre-set security level, the custom
+ // flag will be cleared at the next startup.
+ Services.prefs.setBoolPref(kCustomPref, true);
+ }),
+ });
}
logger.info("security-prefs.js initialization complete");
@@ -425,8 +492,9 @@ export class SecurityLevel {
init() {
migratePreferences();
- initializeNoScriptControl();
+ // Fixup our preferences before we pass on the security level to NoScript.
initializeSecurityPrefs();
+ initializeNoScriptControl();
}
observe(aSubject, aTopic) {
@@ -436,10 +504,19 @@ export class SecurityLevel {
}
}
+/**
+ * @typedef {object} SecurityLevelRestartNotificationHandler
+ *
+ * An object that can serve the user a restart notification.
+ *
+ * @property {Function} tryRestartBrowser - The method that should be called to
+ * ask the user to restart the browser.
+ */
+
/*
Security Level Prefs
- Getters and Setters for relevant torbutton prefs
+ Getters and Setters for relevant security level prefs
*/
export const SecurityLevelPrefs = {
SecurityLevels: Object.freeze({
@@ -450,6 +527,14 @@ export const SecurityLevelPrefs = {
security_slider_pref: "browser.security_level.security_slider",
security_custom_pref: "browser.security_level.security_custom",
+ /**
+ * The current security level preference.
+ *
+ * This ignores any custom settings the user may have changed, and just
+ * gives the underlying security level.
+ *
+ * @type {?string}
+ */
get securityLevel() {
// Set the default return value to 0, which won't match anything in
// SecurityLevels.
@@ -459,18 +544,146 @@ export const SecurityLevelPrefs = {
)?.[0];
},
- set securityLevel(level) {
- const val = this.SecurityLevels[level];
- if (val !== undefined) {
- Services.prefs.setIntPref(this.security_slider_pref, val);
- }
+ /**
+ * Set the desired security level just before a restart.
+ *
+ * The caller must restart the browser after calling this method.
+ *
+ * @param {string} level - The name of the new security level to set.
+ */
+ setSecurityLevelBeforeRestart(level) {
+ write_setting_to_prefs(this.SecurityLevels[level]);
},
+ /**
+ * Whether the user has any custom setting values that do not match a pre-set
+ * security level.
+ *
+ * @type {boolean}
+ */
get securityCustom() {
return Services.prefs.getBoolPref(this.security_custom_pref);
},
- set securityCustom(val) {
- Services.prefs.setBoolPref(this.security_custom_pref, val);
+ /**
+ * A summary of the current security level.
+ *
+ * If the user has some custom settings, this returns "custom". Otherwise
+ * returns the name of the security level.
+ *
+ * @type {string}
+ */
+ get securityLevelSummary() {
+ if (this.securityCustom) {
+ return "custom";
+ }
+ return this.securityLevel ?? "custom";
+ },
+
+ /**
+ * Whether the browser should be restarted to apply the security level.
+ *
+ * @type {boolean}
+ */
+ _needRestart: false,
+
+ /**
+ * The external handler that can show a notification to the user, if any.
+ *
+ * @type {?SecurityLevelRestartNotificationHandler}
+ */
+ _restartNotificationHandler: null,
+
+ /**
+ * Set the external handler for showing notifications to the user.
+ *
+ * This should only be called once per session once the handler is ready to
+ * show a notification, which may occur immediately during this call.
+ *
+ * @param {SecurityLevelRestartNotificationHandler} handler - The new handler
+ * to use.
+ */
+ setRestartNotificationHandler(handler) {
+ logger.info("Restart notification handler is set");
+ this._restartNotificationHandler = handler;
+ if (this._needRestart) {
+ // Show now using the new handler.
+ this._tryShowRestartNotification();
+ }
+ },
+
+ /**
+ * A promise for any ongoing notification prompt task.
+ *
+ * @type {Promise}
+ */
+ _restartNotificationPromise: null,
+
+ /**
+ * Try show a notification to the user.
+ *
+ * If no notification handler has been attached yet, this will do nothing.
+ */
+ async _tryShowRestartNotification() {
+ if (!this._restartNotificationHandler) {
+ logger.info("Missing a restart notification handler");
+ // This may be added later in the session.
+ return;
+ }
+
+ const prevPromise = this._restartNotificationPromise;
+ let resolve;
+ ({ promise: this._restartNotificationPromise, resolve } =
+ Promise.withResolvers());
+ await prevPromise;
+
+ try {
+ await this._restartNotificationHandler?.tryRestartBrowser();
+ } finally {
+ // Allow the notification to be shown again.
+ resolve();
+ }
+ },
+
+ /**
+ * Mark the session as requiring a restart to apply a change in security
+ * level.
+ *
+ * The security level will immediately be switched to "custom", and the user
+ * may be shown a notification to restart the browser.
+ */
+ requireRestart() {
+ logger.warn("The browser needs to be restarted to set the security level");
+ // Treat as a custom security level for the rest of the session.
+ // At the next startup, the custom flag may be cleared if the settings are
+ // as expected.
+ Services.prefs.setBoolPref(kCustomPref, true);
+ this._needRestart = true;
+
+ // NOTE: We need to change the controlled security level preferences in
+ // response to the desired change in security level. We could either:
+ // 1. Only change the controlled preferences after the user confirms a
+ // restart. Or
+ // 2. Change the controlled preferences and then try and ask the user to
+ // restart.
+ //
+ // We choose the latter:
+ // 1. To allow users to manually restart.
+ // 2. If the user ignores or misses the notification, they will at least be
+ // in the correct state when the browser starts again. Although they will
+ // be in a custom/undefined state in the mean time.
+ // 3. Currently Android relies on triggering the change in security level
+ // by setting the browser.security_level.security_slider preference
+ // value. So it currently uses this path. So we need to set the values
+ // now, before it preforms a restart.
+ // TODO: Have android use the `setSecurityLevelBeforeRestart` method
+ // instead of setting the security_slider preference value directly, so that
+ // it knows exactly when it can restart the browser. tor-browser#43820
+ write_setting_to_prefs(Services.prefs.getIntPref(kSliderPref, 0));
+ // NOTE: Even though we have written the preferences, the session should
+ // still be marked as "custom" because:
+ // 1. Some preferences require a browser restart to be applied.
+ // 2. NoScript has not been updated with the new settings.
+ this._tryShowRestartNotification();
},
}; /* Security Level Prefs */
=====================================
toolkit/locales/en-US/toolkit/global/base-browser.ftl
=====================================
@@ -123,10 +123,6 @@ security-level-toolbar-button-custom =
# Uses sentence case in English (US).
security-level-panel-heading = Security level
-
-security-level-panel-level-standard = Standard
-security-level-panel-level-safer = Safer
-security-level-panel-level-safest = Safest
security-level-panel-learn-more-link = Learn more
# Button to open security level settings.
security-level-panel-open-settings-button = Settings…
@@ -136,6 +132,19 @@ security-level-panel-open-settings-button = Settings…
security-level-preferences-heading = Security Level
security-level-preferences-overview = Disable certain web features that can be used to attack your security and anonymity.
security-level-preferences-learn-more-link = Learn more
+# Text for a badge that labels the currently active security level.
+# The text in between '<span>' and '</span>' should contain some kind of bracket, like '(' and ')', or other punctuation used in your language to separate out text from its surrounding context. This will not be visible, but will be use for screen readers to make it clear that the text is not part of the same sentence. For example, in US English this would be read as "(Current level)", and the full line of text would be read as "Safest (Current level)".
+security-level-preferences-current-badge = <span>(</span>Current level<span>)</span>
+security-level-preferences-change-button = Change…
+
+## Security level settings dialog.
+
+security-level-dialog-window =
+ .title = Change security level
+
+# '-brand-short-name' is the localized browser name, like "Tor Browser".
+security-level-dialog-restart-description = You will need to restart { -brand-short-name } to apply any changes. This will close all windows and tabs.
+
security-level-preferences-level-standard =
.label = Standard
security-level-preferences-level-safer =
@@ -143,6 +152,16 @@ security-level-preferences-level-safer =
security-level-preferences-level-safest =
.label = Safest
+security-level-dialog-save-restart =
+ .label = Save and restart
+
+## Security level names shown in the security panel and settings.
+
+security-level-panel-level-standard = Standard
+security-level-panel-level-safer = Safer
+security-level-panel-level-safest = Safest
+security-level-panel-level-custom = Custom
+
## Security level summaries shown in security panel and settings.
security-level-summary-standard = All browser and website features are enabled.
@@ -161,13 +180,13 @@ security-level-preferences-bullet-limit-font-and-symbols-and-images = Some fonts
## Custom security level.
## Some custom preferences configuration has placed the user outside one of the standard three levels.
-# Shown in the security level panel as an orange badge next to the expected level.
-security-level-panel-custom-badge = Custom
-# Shown in the security level settings in a warning box.
-security-level-preferences-custom-heading = Custom security level configured
# Description of custom state and recommended action.
# Shown in the security level panel and settings.
security-level-summary-custom = Your custom browser preferences have resulted in unusual security settings. For security and privacy reasons, we recommend you choose one of the default security levels.
-# Button to undo custom changes to the security level and place the user in one of the standard security levels.
-# Shown in the security level panel and settings.
-security-level-restore-defaults-button = Restore defaults
+
+## Security level restart prompt.
+
+security-level-restart-prompt-title = Your security level settings require a restart
+security-level-restart-prompt-body = You must restart { -brand-short-name } for your security level settings to be applied. This will close all your windows and tabs.
+security-level-restart-prompt-button-restart = Restart
+security-level-restart-prompt-button-ignore = Ignore
=====================================
tools/lint/fluent-lint/exclusions.yml
=====================================
@@ -84,9 +84,6 @@ ID01:
- unknownProtocolFound-title
- unknownSocketType-title
- unsafeContentType-title
-
- # toolkit/locales/en-US/toolkit/global/base-browser.ftl
- - basebrowser-about-dialog-version
files:
# policies-descriptions.ftl
# These IDs are generated programmatically from policy names.
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/72504c…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/72504c…
You're receiving this email because of your account on gitlab.torproject.org.
[View Less]
1
0

[Git][tpo/applications/tor-browser] Pushed new tag base-browser-140.0a1-15.0-2-build1
by Pier Angelo Vendrame (@pierov) 18 Jun '25
by Pier Angelo Vendrame (@pierov) 18 Jun '25
18 Jun '25
Pier Angelo Vendrame pushed new tag base-browser-140.0a1-15.0-2-build1 at The Tor Project / Applications / Tor Browser
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/tree/base-brow…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser] Pushed new branch base-browser-140.0a1-15.0-2
by Pier Angelo Vendrame (@pierov) 18 Jun '25
by Pier Angelo Vendrame (@pierov) 18 Jun '25
18 Jun '25
Pier Angelo Vendrame pushed new branch base-browser-140.0a1-15.0-2 at The Tor Project / Applications / Tor Browser
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/tree/base-brow…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser] Pushed new tag tor-browser-140.0a1-15.0-2-build1
by Pier Angelo Vendrame (@pierov) 18 Jun '25
by Pier Angelo Vendrame (@pierov) 18 Jun '25
18 Jun '25
Pier Angelo Vendrame pushed new tag tor-browser-140.0a1-15.0-2-build1 at The Tor Project / Applications / Tor Browser
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/tree/tor-brows…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser][tor-browser-140.0a1-15.0-2] 246 commits: BB 43843: Do not bootstrap MacOS packaging tools if available
by Pier Angelo Vendrame (@pierov) 18 Jun '25
by Pier Angelo Vendrame (@pierov) 18 Jun '25
18 Jun '25
Pier Angelo Vendrame pushed to branch tor-browser-140.0a1-15.0-2 at The Tor Project / Applications / Tor Browser
Commits:
a48f9419 by Beatriz Rizental at 2025-06-18T11:55:49+02:00
BB 43843: Do not bootstrap MacOS packaging tools if available
Do not bootstrap MacOS packing tools if they are already available in
the environment. This can be uplifted.
- - - - -
2de4840c by Henry Wilkes at 2025-06-18T11:55:49+02:00
BB 41454: Move focus after calling openPreferences for a sub-category.
…
[View More]Temporary fix until mozilla bug 1799153 gets a patch upstream.
- - - - -
c184c0e1 by Henry Wilkes at 2025-06-18T11:55:49+02:00
BB 43072: Add aria label and description to moz-message-bar.
Ensures that moz-message-bar, including notifications, are announced on
Orca.
This addresses upstream bugzilla bug 1895857 and should likely be
replaced when it is fixed.
- - - - -
8f8be80b by Henry Wilkes at 2025-06-18T11:55:49+02:00
BB 42739: Use the brand name for profile error messages.
Some messages in profileSelection.properties use gAppData->name as
variable inputs. However, gAppData->name is still "Firefox" for our
base-browser builds, rather than the user-facing browser name. We swap
these instances with the displayed brand name instead.
- - - - -
e66bc89c by Henry Wilkes at 2025-06-18T11:55:50+02:00
BB 41483: Remove the firefox override for appstrings.properties
Remove this patch after upstream bugzilla bug 1790187
- - - - -
736bd133 by Marco Simonelli at 2025-06-18T11:55:50+02:00
BB 41459: WebRTC fails to build under mingw (Part 1)
- properly define NOMINMAX for just MSVC builds
- - - - -
93e87837 by Marco Simonelli at 2025-06-18T11:55:50+02:00
BB 41459: WebRTC fails to build under mingw (Part 2)
- fixes required to build third_party/libwebrtc
- - - - -
5f3215f1 by Marco Simonelli at 2025-06-18T11:55:50+02:00
BB 41459: WebRTC fails to build under mingw (Part 3)
- fixes required to build third_party/sipcc
- - - - -
e1af7e72 by Marco Simonelli at 2025-06-18T11:55:51+02:00
BB 41459: WebRTC fails to build under mingw (Part 4)
- fixes requried to build netwerk/sctp
- - - - -
4c7d9d1a by Marco Simonelli at 2025-06-18T11:55:51+02:00
BB 41459: WebRTC fails to build under mingw (Part 5)
- fixes required to build dom/media/webrtc
- - - - -
8a28e060 by Marco Simonelli at 2025-06-18T11:55:51+02:00
BB 41459: WebRTC fails to build under mingw (Part 6)
- fixes required to build dom/media/systemservices
- - - - -
8e30538d by june wilde at 2025-06-18T11:55:51+02:00
BB 42758: Fix WebRTC build errors.
- - - - -
ba22482f by Pier Angelo Vendrame at 2025-06-18T11:55:52+02:00
fixup! BB 42758: Fix WebRTC build errors.
MB 436: Link to pthread on mingw.
- - - - -
7e87641b by hackademix at 2025-06-18T11:55:52+02:00
BB 41854: Allow overriding download spam protection.
- - - - -
dbb84557 by hackademix at 2025-06-18T11:55:52+02:00
BB 42832: Download spam prevention exemption for browser extensions.
- - - - -
69a062f5 by Pier Angelo Vendrame at 2025-06-18T11:55:52+02:00
BB 42220: Allow for more file types to be forced-inline.
Firefox allows to open some files in the browser without any
confirmation, but this will result in a disk leak, because the file will
be downloaded to the temporary directory first (and not deleted, in some
cases).
A preference allows PDFs to be opened without being downloaded to disk.
So, we introduce a similar one to do the same for all the files that are
set to be opened automatically in the browser.
- - - - -
76412c1e by hackademix at 2025-06-18T11:55:53+02:00
BB 42835: Create an actor to filter file data transfers
- - - - -
2eac5a87 by Beatriz Rizental at 2025-06-18T11:55:53+02:00
BB 42728: Modify ./mach lint to skip unused linters
- - - - -
440d3ad4 by Gaba at 2025-06-18T11:55:53+02:00
Adding issue and merge request templates
- - - - -
ba8c5233 by Morgan at 2025-06-18T11:55:53+02:00
fixup! Adding issue and merge request templates
revert
- - - - -
5aead718 by Morgan at 2025-06-18T11:55:54+02:00
BB 43615: Add Gitlab Issue and Merge Request templates
- - - - -
dbf8f594 by Morgan at 2025-06-18T11:55:54+02:00
fixup! BB 43615: Add Gitlab Issue and Merge Request templates
add new and modify existing shared Tor/Mullvad browser templates
- - - - -
61a44c4b by Richard Pospesel at 2025-06-18T11:55:54+02:00
BB 42683: Create script to generate issue triage csv file from bugzilla query and git logs
- - - - -
e0eda70b by Henry Wilkes at 2025-06-18T11:55:54+02:00
BB 42305: Add script to combine translation files across versions.
- - - - -
f80ae9b3 by Beatriz Rizental at 2025-06-18T11:55:55+02:00
BB 43535: Enable tests
- - - - -
476fe65b by Beatriz Rizental at 2025-06-18T11:55:55+02:00
Add CI for Base Browser
- - - - -
4f21945d by Pier Angelo Vendrame at 2025-06-18T11:55:55+02:00
Base Browser's .mozconfigs.
Bug 17858: Cannot create incremental MARs for hardened builds.
Define HOST_CFLAGS, etc. to avoid compiling programs such as mbsdiff
(which is part of mar-tools and is not distributed to end-users) with
ASan.
Bug 21849: Don't allow SSL key logging.
Bug 25741 - TBA: Disable features at compile-time
Define MOZ_ANDROID_NETWORK_STATE and MOZ_ANDROID_LOCATION
Bug 27623 - Export MOZILLA_OFFICIAL during desktop builds
This fixes a problem where some preferences had the wrong default value.
Also see bug 27472 where we made a similar fix for Android.
Bug 29859: Disable HLS support for now
Bug 30463: Explicitly disable MOZ_TELEMETRY_REPORTING
Bug 32493: Disable MOZ_SERVICES_HEALTHREPORT
Bug 33734: Set MOZ_NORMANDY to False
Bug 33851: Omit Parental Controls.
Bug 40252: Add --enable-rust-simd to our tor-browser mozconfig files
Bug 41584: Move some configuration options to base-browser level
- - - - -
6fc7ae05 by Pier Angelo Vendrame at 2025-06-18T11:55:55+02:00
fixup! Base Browser's .mozconfigs.
BB 43772: Do not use official branding for BB/TB/MB.
We already pass --with-branding in our builds, no need to also pass
this option.
However, we should further audit what this option does, and try to
recall why we added it at a certain point.
- - - - -
e6c0e3cb by Pier Angelo Vendrame at 2025-06-18T11:55:55+02:00
Tweaks to the build system
Bug 40857: Modified the fat .aar creation file
This is a workaround to build fat .aars with the compiling enviornment
disabled.
Mozilla does not use a similar configuration, but either runs a Firefox
build and discards its output, or uses artifacts build.
We might switch to artifact builds too, and drop this patch, or write a
better one to upstream. But until then we need this patch.
See also https://bugzilla.mozilla.org/show_bug.cgi?id=1763770.
Bug 41458: Prevent `mach package-multi-locale` from actually creating a package
macOS builds need some files to be moved around with
./mach package-multi-locale to create multi-locale packages.
The required command isn't exposed through any other mach command.
So, we patch package-multi-locale both to prevent it from failing when
doing official builds and to detect any future changes on it.
- - - - -
3ba05a48 by Pier Angelo Vendrame at 2025-06-18T11:55:56+02:00
BB 29320: Replace the gnu target with gnullvm for Rust.
- - - - -
4c09bbfe by Pier Angelo Vendrame at 2025-06-18T11:55:56+02:00
BB 42616: Remove VideoCaptureTest.kt.
This is a workaround to fix the GeckoView build with WebRTC disabled.
We should replace this workaround with a proper solution, that
excludes this test when MOZ_WEBRTC is undefined/False.
- - - - -
6279d978 by Pier Angelo Vendrame at 2025-06-18T11:55:56+02:00
BB 41108: Remove privileged macOS installation from 102
- - - - -
ed5064ad by Dan Ballard at 2025-06-18T11:55:56+02:00
BB 41149: Re-enable DLL injection protection in all builds not just nightlies
- - - - -
673bbbff by Henry Wilkes at 2025-06-18T11:55:57+02:00
BB 43092: Disable wayland by default in Base Browser.
- - - - -
53348e3c by Matthew Finkel at 2025-06-18T11:55:57+02:00
BB 24796: Comment out excess permissions from GeckoView
The GeckoView AndroidManifest.xml is not preprocessed unlike Fennec's
manifest, so we can't use the ifdef preprocessor guards around the
permissions we do not want. Commenting the permissions is the
next-best-thing.
- - - - -
5da75082 by Matthew Finkel at 2025-06-18T11:55:57+02:00
BB 28125: Prevent non-Necko network connections
- - - - -
f55ae76e by Mike Perry at 2025-06-18T11:55:57+02:00
BB 12974: Disable NTLM and Negotiate HTTP Auth
The Mozilla bugs: https://bugzilla.mozilla.org/show_bug.cgi?id=1046421,
https://bugzilla.mozilla.org/show_bug.cgi?id=1261591, tor-browser#27602
- - - - -
80e11924 by cypherpunks1 at 2025-06-18T11:55:58+02:00
BB 40717: Hide Windows SSO in settings
- - - - -
d8ff9729 by Georg Koppen at 2025-06-18T11:55:58+02:00
BB 16285: Exclude ClearKey system for now
In the past the ClearKey system had not been compiled when specifying
--disable-eme. But that changed and it is even bundled nowadays (see:
Mozilla's bug 1300654). We don't want to ship it right now as the use
case for it is not really visible while the code had security
vulnerabilities in the past.
- - - - -
bd85aed3 by Kathy Brade at 2025-06-18T11:55:58+02:00
BB 21431: Clean-up system extensions shipped in Firefox
Only ship the pdfjs extension.
- - - - -
8d038a4c by Kathy Brade at 2025-06-18T11:55:58+02:00
BB 33852: Clean up about:logins (LockWise) to avoid mentioning sync, etc.
Hide elements on about:logins that mention sync, "Firefox LockWise", and
Mozilla's LockWise mobile apps.
Disable the "Create New Login" button when security.nocertdb is true.
- - - - -
9b697816 by Alex Catarineu at 2025-06-18T11:55:59+02:00
BB 41457: Remove Mozilla permissions
Bug 40025: Remove Mozilla add-on install permissions
- - - - -
b6a92d0a by Kathy Brade at 2025-06-18T11:55:59+02:00
BB 41662: Disable about:sync-logs
Even though we disable sync by default with
`identity.fxaccounts.enabled`, this about: page is still avilable.
We could throw an exception on the constructor of the related
component, but it would result only in an error in the console, without
a visible "this address does not look right" error page.
If we fix the issues with MOZ_SERVICES_SYNC, we can restore the
component.
- - - - -
92941f20 by Morgan at 2025-06-18T11:55:59+02:00
BB 42716: Disable unwanted about: pages
- - - - -
3e9e9d50 by Arthur Edelstein at 2025-06-18T11:55:59+02:00
BB 26353: Prevent speculative connect that violated FPI.
Connections were observed in the catch-all circuit when
the user entered an https or http URL in the URL bar, or
typed a search term.
- - - - -
8354dca9 by Alex Catarineu at 2025-06-18T11:56:00+02:00
BB 31740: Remove some unnecessary RemoteSettings instances
More concretely, SearchService.jsm 'hijack-blocklists' and
url-classifier-skip-urls.
Avoid creating instance for 'anti-tracking-url-decoration'.
If prefs are disabling their usage, avoid creating instances for
'cert-revocations' and 'intermediates'.
Do not ship JSON dumps for collections we do not expect to need. For
the ones in the 'main' bucket, this prevents them from being synced
unnecessarily (the code in remote-settings does so for collections
in the main bucket for which a dump or local data exists). For the
collections in the other buckets, we just save some size by not
shipping their dumps.
We also clear the collections database on the v2 -> v3 migration.
- - - - -
55965f1d by cypherpunks1 at 2025-06-18T11:56:00+02:00
BB 41092: Add a RemoteSettings JSON dump for query-stripping
- - - - -
c5f4ebac by cypherpunks1 at 2025-06-18T11:56:00+02:00
BB 42730: Patch RemoteSettings to use only local dumps as a data source
- - - - -
97ec070d by Pier Angelo Vendrame at 2025-06-18T11:56:00+02:00
BB 41635: Disable the Normandy component
Do not include Normandy at all whenever MOZ_NORMANDY is False.
- - - - -
9147ca44 by Georg Koppen at 2025-06-18T11:56:01+02:00
BB 30541: Disable WebGL readPixel() for web content
Related Bugzilla: https://bugzilla.mozilla.org/show_bug.cgi?id=1428034
- - - - -
9deb8031 by Alex Catarineu at 2025-06-18T11:56:01+02:00
BB 28369: Stop shipping pingsender executable
- - - - -
de0fa314 by Henry Wilkes at 2025-06-18T11:56:01+02:00
BB 42630: Disable LaterRun module.
- - - - -
4c548fa0 by Pier Angelo Vendrame at 2025-06-18T11:56:01+02:00
BB 41599: Always return an empty string as network ID
Firefox computes an internal network ID used to detect network changes
and act consequently (e.g., to improve WebSocket UX).
However, there are a few ways to get this internal network ID, so we
patch them out, to be sure any new code will not be able to use them and
possibly link users.
We also sent a patch to Mozilla to seed the internal network ID, to
prevent any accidental leak in the future.
Upstream: https://bugzilla.mozilla.org/show_bug.cgi?id=1817756
- - - - -
9d784397 by Pier Angelo Vendrame at 2025-06-18T11:56:02+02:00
BB 43386: Use Firefox in the UA in RFP-exempt request.
XHR requests initiated by extensions are exempt from RFP.
Therefore, they report the actual app name, instead of Firefox, and the
actual Firefox minor version.
This happens whenever the app name has been customized and does not
match a hardcoded "Firefox".
- - - - -
1c9432ad by Richard Pospesel at 2025-06-18T11:56:02+02:00
BB 41327: Disable UrlbarProviderInterventions
- - - - -
4da85733 by Richard Pospesel at 2025-06-18T11:56:02+02:00
BB 42037: Disable about:firefoxview page
- - - - -
c4291c2c by Mike Perry at 2025-06-18T11:56:02+02:00
Firefox preference overrides.
- - - - -
43e18cd8 by Pier Angelo Vendrame at 2025-06-18T11:56:03+02:00
BB 43140: Tighten up fonts on Linux.
We ship a fontconfig configuration to esnure all Linux users have the
same defaults and reduce the chances of fingerprinting.
We used to add this file in tor-browser-build, but some users might
skip it by using the browser executable without the wrapper script.
Therefore, we decided to activate the file with the FontConfig API
instead of the environment variables.
Bug 41043: Hardcode the UI font on Linux
The mechanism to choose the UI font does not play well with our
fontconfig configuration. As a result, the final criterion to choose
the font for the UI was its version.
Since we hardcode Arimo as a default sans-serif on preferences, we use
it also for the UI. FontConfig will fall back to some other font for
scripts Arimo does not cover as expected (we tested with Japanese).
Bug 43141: Hardcode system-ui to Arimo.
- - - - -
6a06b449 by Pier Angelo Vendrame at 2025-06-18T11:56:03+02:00
BB 41901: Hardcode normalized FontSubstitutes.
Windows has a system to set font aliases through the registry.
This allows some customization that could be used as a fingerprinting
vector.
Moreover, this mechanism is used by Windows itself, and different SKUs
might have different default FontSubstitutes.
- - - - -
08e48282 by Pier Angelo Vendrame at 2025-06-18T11:56:03+02:00
BB 43322: Customize the font visibility lists.
Customize the lists of fonts to assign base visibility to in
base browser and derivatives.
Also, rename the files with the upstream lists, to make sure we do not
use them by mistake.
- - - - -
d2e92828 by Alex Catarineu at 2025-06-18T11:56:03+02:00
BB 30605: Honor privacy.spoof_english in Android
This checks `privacy.spoof_english` whenever `setLocales` is
called from Fenix side and sets `intl.accept_languages`
accordingly.
Bug 40198: Expose privacy.spoof_english pref in GeckoView
- - - - -
b6b14084 by Pier Angelo Vendrame at 2025-06-18T11:56:04+02:00
BB 42562: Normalized the Accepted Languages on Android.
The OS language might be outside the list of actually supported
languages and it might leak the user's region.
Therefore, we force the locale reported in Accept-Language to match one
we support with translations, even when it means using a not exact
region tag.
- - - - -
0250c7ce by Alex Catarineu at 2025-06-18T11:56:04+02:00
BB 40171: Make WebRequest and GeckoWebExecutor First-Party aware
- - - - -
53fec166 by Alex Catarineu at 2025-06-18T11:56:04+02:00
BB 26345: Hide tracking protection UI
- - - - -
d6191ebe by Henry Wilkes at 2025-06-18T11:56:04+02:00
BB 43109: Hide Firefox Relay from settings.
This should remain disabled, see tor-browser#42814.
- - - - -
2ff24d89 by Henry Wilkes at 2025-06-18T11:56:05+02:00
BB 42777: Hide Website Privacy Preferences.
We hide the Website Privacy Preferences section, which controls the
"global privacy control" (GPC) and "do not track" (DNT) settings.
- - - - -
2bd038a4 by Morgan at 2025-06-18T11:56:05+02:00
BB 42070: Hide "Use smooth scrolling" from settings
- - - - -
f0b398fe by Arthur Edelstein at 2025-06-18T11:56:05+02:00
BB 18905: Hide unwanted items from help menu
Bug 25660: Remove the "New Private Window" option
- - - - -
0975c77a by Pier Angelo Vendrame at 2025-06-18T11:56:05+02:00
BB 41739: Remove "Website appearance" from about:preferences.
It is ignored because of RFP and it is confusing for users.
- - - - -
19c2f210 by Henry Wilkes at 2025-06-18T11:56:06+02:00
BB 43117: Hide "Always underline links" from settings.
- - - - -
726eed6b by Pier Angelo Vendrame at 2025-06-18T11:56:06+02:00
BB 42774: Always hide the third-pary certs UI.
- - - - -
52a36a47 by Henry Wilkes at 2025-06-18T11:56:06+02:00
BB 43118: Hide feature recommendation (CFR) settings.
- - - - -
392de89b by Pier Angelo Vendrame at 2025-06-18T11:56:06+02:00
BB 9173: Change the default Firefox profile directory to be relative.
This commit makes Firefox look for the default profile directory in a
directory relative to the binary path.
The directory can be specified through the --with-relative-data-dir.
This is relative to the same directory as the firefox main binary for
Linux and Windows.
On macOS, we remove Contents/MacOS from it.
Or, in other words, the directory is relative to the application
bundle.
This behavior can be overriden at runtime, by placing a file called
system-install adjacent to the firefox main binary (also on macOS).
- - - - -
94e6dd9e by Pier Angelo Vendrame at 2025-06-18T11:56:07+02:00
BB 42773: Replace ~ with the original home.
In Bug 93141, Mozilla started sending users to their home when they type
~ in the URL bar.
On Linux, we change $HOME for various reason, therefore you would be
redirected to the spoofed home directory when typing ~.
So, we check if the original home directory is known, and use that,
instead.
- - - - -
f0b9a616 by Alex Catarineu at 2025-06-18T11:56:07+02:00
BB 27604: Fix addon issues when moving the profile directory
Bugzilla: https://bugzilla.mozilla.org/show_bug.cgi?id=1429838
- - - - -
16e12a5f by Mike Perry at 2025-06-18T11:56:07+02:00
BB 13028: Prevent potential proxy bypass cases.
It looks like these cases should only be invoked in the NSS command line
tools, and not the browser, but I decided to patch them anyway because there
literally is a maze of network function pointers being passed around, and it's
very hard to tell if some random code might not pass in the proper proxied
versions of the networking code here by accident.
Bugzilla: https://bugzilla.mozilla.org/show_bug.cgi?id=1433509
- - - - -
a862639b by Pier Angelo Vendrame at 2025-06-18T11:56:07+02:00
BB 40309: Avoid using regional OS locales
Avoid regional OS locales if the pref
`intl.regional_prefs.use_os_locales` is false but RFP is enabled.
- - - - -
41a3c66b by Matthew Finkel at 2025-06-18T11:56:08+02:00
BB 40432: Prevent probing installed applications
Bugzilla: https://bugzilla.mozilla.org/show_bug.cgi?id=1711084
- - - - -
d1ba7148 by Henry Wilkes at 2025-06-18T11:56:08+02:00
BB 29745: Limit remote access to content accessible resources
- - - - -
8fe5adf2 by cypherpunks1 at 2025-06-18T11:56:08+02:00
BB 33955: When copying an image only copy the image contents to the clipboard
- - - - -
96473458 by cypherpunks1 at 2025-06-18T11:56:08+02:00
BB 41791: Omit the source URL when copying page contents to the clipboard
- - - - -
55c2a0f1 by Pier Angelo Vendrame at 2025-06-18T11:56:09+02:00
BB 43196: Remove the vendor name from media notifications on Linux.
Firefox shows "vendor remoteName" as a title of the "... is playing
media" notification on Linux.
However, for our browser the remote name is enough, and prepending the
vendor to it creates a string users usually never see.
- - - - -
bdf88a24 by Pier Angelo Vendrame at 2025-06-18T11:56:09+02:00
Base Browser strings
This commit adds all the strings needed by following Base Browser
patches.
- - - - -
0f29ede8 by Henry Wilkes at 2025-06-18T11:56:09+02:00
BB 42583: Modify moz-support-link for Base Browser.
- - - - -
e063d20b by Pier Angelo Vendrame at 2025-06-18T11:56:09+02:00
BB 41369: Improve Firefox language settings for multi-lingual packages
Change the language selector to be sorted by language code, rather than
name, and to display the language code to the user.
Bug 41372: Handle Japanese as a special case in preferences on macOS
Japanese is treated in a special way on macOS. However, seeing the
Japanese language tag could be confusing for users, and moreover the
language name is not localized correctly like other langs.
Bug 41378: Tell users that they can change their language at the first start
With multi-lingual builds, Tor Browser matches the user's system
language, but some users might want to change it.
So, we tell them that it is possible, but only once.
- - - - -
46e32d29 by p13dz at 2025-06-18T11:56:09+02:00
BB 40283: Workaround for the file upload bug
- - - - -
9e406c6a by hackademix at 2025-06-18T11:56:10+02:00
BB 42019: Empty browser's clipboard on browser shutdown
- - - - -
f7a979d6 by hackademix at 2025-06-18T11:56:10+02:00
BB 42084: Ensure English spoofing works even if preferences are set out of order.
- - - - -
108cf8b6 by Pier Angelo Vendrame at 2025-06-18T11:56:10+02:00
BB 41930: Remove the UI to customize accept_languages.
- - - - -
3fc7fead by hackademix at 2025-06-18T11:56:10+02:00
BB 32308: Use direct browser sizing for letterboxing.
Bug 30556: align letterboxing with 200x100 new win width stepping
- - - - -
bc8cb9b3 by hackademix at 2025-06-18T11:56:11+02:00
BB 41631: Prevent weird initial window dimensions caused by subpixel computations
- - - - -
7e3e69dd by Pier Angelo Vendrame at 2025-06-18T11:56:11+02:00
fixup! BB 41631: Prevent weird initial window dimensions caused by subpixel computations
BB 43672: Compensate window.resizeTo truncating by ceiling newwin sizes.
- - - - -
bbf358af by hackademix at 2025-06-18T11:56:11+02:00
BB 41918: Option to reuse last window size when letterboxing is enabled.
- - - - -
c9a87227 by hackademix at 2025-06-18T11:56:11+02:00
BB 41916: Letterboxing preferences UI
- - - - -
446976ad by Beatriz Rizental at 2025-06-18T11:56:12+02:00
fixup! BB 41916: Letterboxing preferences UI
- - - - -
8ef6ea37 by hackademix at 2025-06-18T11:56:12+02:00
BB 41695: Warn on window maximization without letterboxing in RFPHelper module
- - - - -
9609d5ed by hackademix at 2025-06-18T11:56:12+02:00
BB 42443: Shrink window to match letterboxing size when the emtpy area is clicked.
- - - - -
71bbe53d by hackademix at 2025-06-18T11:56:12+02:00
BB 41919: Letterboxing, add temporarily visible web content-size indicator on window resizing.
- - - - -
7c5a90c6 by Henry Wilkes at 2025-06-18T11:56:13+02:00
BB 42528: Don't leak system scrollbar size on windows.
- - - - -
7239f672 by Henry Wilkes at 2025-06-18T11:56:13+02:00
BB 31575: Disable Firefox Home (Activity Stream)
Treat about:blank as the default home page and new tab page.
Avoid loading AboutNewTab in BrowserGlue.sys.mjs in order
to avoid several network requests that we do not need.
Bug 41624: Disable about:pocket-* pages.
Bug 40144: Redirect about:privatebrowsing to the user's home
- - - - -
5b55a44a by Kathy Brade at 2025-06-18T11:56:13+02:00
BB 4234: Use the Firefox Update Process for Base Browser.
Windows: disable "runas" code path in updater (15201).
Windows: avoid writing to the registry (16236).
Also includes fixes for tickets 13047, 13301, 13356, 13594, 15406,
16014, 16909, 24476, and 25909.
Also fix bug 27221: purge the startup cache if the Base Browser
version changed (even if the Firefox version and build ID did
not change), e.g., after a minor Base Browser update.
Also fix 32616: Disable GetSecureOutputDirectoryPath() functionality.
Bug 26048: potentially confusing "restart to update" message
Within the update doorhanger, remove the misleading message that mentions
that windows will be restored after an update is applied, and replace the
"Restart and Restore" button label with an existing
"Restart to update Tor Browser" string.
Bug 28885: notify users that update is downloading
Add a "Downloading Base Browser update" item which appears in the
hamburger (app) menu while the update service is downloading a MAR
file. Before this change, the browser did not indicate to the user
that an update was in progress, which is especially confusing in
Tor Browser because downloads often take some time. If the user
clicks on the new menu item, the about dialog is opened to allow
the user to see download progress.
As part of this fix, the update service was changed to always show
update-related messages in the hamburger menu, even if the update
was started in the foreground via the about dialog or via the
"Check for Tor Browser Update" toolbar menu item. This change is
consistent with the Tor Browser goal of making sure users are
informed about the update process.
Removed #28885 parts of this patch which have been uplifted to Firefox.
- - - - -
adaa0b59 by Pier Angelo Vendrame at 2025-06-18T11:56:13+02:00
BB 42061: Create an alpha update channel.
- - - - -
f7ea205a by Nicolas Vigier at 2025-06-18T11:56:14+02:00
BB 41682: Add base-browser nightly mar signing key
- - - - -
f6d22d01 by Pier Angelo Vendrame at 2025-06-18T11:56:14+02:00
BB 41603: Customize the creation of MOZ_SOURCE_URL
MOZ_SOURCE_URL is created by combining MOZ_SOURCE_REPO and
MOZ_SOURCE_CHANGESET.
But the code takes for granted that it refers to a Hg instance, so it
combines them as `$MOZ_SOURCE_REPO/rev/$MOZ_SOURCE_CHANGESET`.
With this commit, we change this logic to combine them to create a URL
that is valid for GitLab.
$MOZ_SOURCE_CHANGESET needs to be a commit hash, not a branch or a tag.
If that is needed, we could use /-/tree/, instead of /-/commit/.
- - - - -
3306c0b8 by Pier Angelo Vendrame at 2025-06-18T11:56:14+02:00
BB 42438: Tweaks to the migration wizard.
Remove the items not compatible with our features (such as history) from
the migration wizard.
On Linux, allow to specify an alternative home directory, since we
usually change $HOME in our startup script.
- - - - -
2f37046b by Alex Catarineu at 2025-06-18T11:56:14+02:00
BB 40069: Add helpers for message passing with extensions
- - - - -
a772e355 by Matthew Finkel at 2025-06-18T11:56:15+02:00
BB 41598: Prevent NoScript from being removed/disabled.
Bug 40253: Explicitly allow NoScript in Private Browsing mode.
- - - - -
18a86022 by Henry Wilkes at 2025-06-18T11:56:15+02:00
BB 41581: Hide NoScript extension's toolbar button by default.
This hides it from both the toolbar and the unified extensions panel.
We also hide the unified-extension-button if the panel would be empty:
not including the NoScript button when it is hidden. As a result, this
will be hidden by default until a user installs another extension (or
shows the NoScript button and unpins it).
- - - - -
5d82f502 by hackademix at 2025-06-18T11:56:15+02:00
BB 41834: Hide "Can't Be Removed - learn more" menu line for uninstallable add-ons
- - - - -
a393b4df by Pier Angelo Vendrame at 2025-06-18T11:56:15+02:00
BB 40925: Implemented the Security Level component
This component adds a new Security Level toolbar button which visually
indicates the current global security level via icon (as defined by the
extensions.torbutton.security_slider pref), a drop-down hanger with a
short description of the current security level, and a new section in
the about:preferences#privacy page where users can change their current
security level. In addition, the hanger and the preferences page will
show a visual warning when the user has modified prefs associated with
the security level and provide a one-click 'Restore Defaults' button to
get the user back on recommended settings.
Bug 40125: Expose Security Level pref in GeckoView
- - - - -
a59313fa by Pier Angelo Vendrame at 2025-06-18T11:56:16+02:00
BB 40926: Implemented the New Identity feature
- - - - -
48903e81 by Pier Angelo Vendrame at 2025-06-18T11:56:16+02:00
fixup! BB 40926: Implemented the New Identity feature
Fixed oncommands
- - - - -
5ebf4557 by Henry Wilkes at 2025-06-18T11:56:16+02:00
BB 41736: Customize toolbar for base-browser.
- - - - -
72504cbf by Pier Angelo Vendrame at 2025-06-18T11:56:16+02:00
BB 42027: Base Browser migration procedures.
This commit implmenents the the Base Browser's version of _migrateUI.
- - - - -
d4879d9b by Henry Wilkes at 2025-06-18T11:56:17+02:00
TB 42308: Create README for tor-browser.
We drop the README.txt that comes from Mozilla Firefox and add README.md
for tor-browser.
- - - - -
17dec267 by Morgan at 2025-06-18T11:56:17+02:00
TB 43616: Customize Gitlab Issue and Merge Request templates
- - - - -
4b0e177d by Beatriz Rizental at 2025-06-18T11:56:17+02:00
Add CI for Tor Browser
- - - - -
808435f4 by Richard Pospesel at 2025-06-18T11:56:17+02:00
TB 41089: Add tor-browser build scripts + Makefile to tor-browser
- - - - -
f2104e1b by Pier Angelo Vendrame at 2025-06-18T11:56:18+02:00
fixup! TB 41089: Add tor-browser build scripts + Makefile to tor-browser
TB 43799: Updated the path where APKs are located.
- - - - -
3389b24b by Henry Wilkes at 2025-06-18T11:56:18+02:00
TB 41803: Add some developer tools for working on tor-browser.
- - - - -
d98d45fd by Alex Catarineu at 2025-06-18T11:56:18+02:00
Add TorStrings module for localization
- - - - -
3176ae60 by Henry Wilkes at 2025-06-18T11:56:18+02:00
Tor Browser strings
This commit adds all the strings needed for Tor Browser patches.
- - - - -
0a3911dc by Henry Wilkes at 2025-06-18T11:56:19+02:00
Tor Browser localization migration scripts.
- - - - -
47571042 by Mike Perry at 2025-06-18T11:56:19+02:00
TB 2176: Rebrand Firefox to TorBrowser
See also Bugs #5194, #7187, #8115, #8219.
This patch does some basic renaming of Firefox to TorBrowser. The rest of the
branding is done by images and icons.
Also fix bug 27905.
Bug 25702: Update Tor Browser icon to follow design guidelines
- Updated all of the branding in /browser/branding/official with new 'stable'
icon series.
- Updated /extensions/onboarding/content/img/tor-watermark.png with new icon and
add the source svg in the same directory
- Copied /browser/branding/official over /browser/branding/nightly and the new
/browser/branding/alpha directories. Replaced content with 'nightly' and
'alpha' icon series.
Updated VisualElements_70.png and VisualElements_150.png with updated icons in
each branding directory (fixes #22654)
- Updated firefox.VisualElementsManfiest.xml with updated colors in each
branding directory
- Added firefox.svg to each branding directory from which all the other icons
are derived (apart from document.icns and document.ico)
- Added default256.png and default512.png icons
- Updated aboutTBUpdate.css to point to branding-aware icon128.png and removed
original icon
- Use the Tor Browser icon within devtools/client/themes/images/.
Bug 30631: Blurry Tor Browser icon on macOS app switcher
It would seem the png2icns tool does not generate correct icns files and
so on macOS the larger icons were missing resulting in blurry icons in
the OS chrome. Regenerated the padded icons in a macOS VM using
iconutil.
Bug 28196: preparations for using torbutton tor-browser-brand.ftl
A small change to Fluent FileSource class is required so that we
can register a new source without its supported locales being
counted as available locales for the browser.
Bug 31803: Replaced about:debugging logo with flat version
Bug 21724: Make Firefox and Tor Browser distinct macOS apps
When macOS opens a document or selects a default browser, it sometimes
uses the CFBundleSignature. Changing from the Firefox MOZB signature to
a different signature TORB allows macOS to distinguish between Firefox
and Tor Browser.
Bug 32092: Fix Tor Browser Support link in preferences
For bug 40562, we moved onionPattern* from bug 27476 to here, as
about:tor needs these files but it is included earlier.
Bug 41278: Create Tor Browser styled pdf logo similar to the vanilla Firefox one
Bug 42088: New application icons (used in-app and on linux).
Bug 42087: New application icons (windows).
- - - - -
1aef8737 by Pier Angelo Vendrame at 2025-06-18T11:56:19+02:00
fixup! TB 2176: Rebrand Firefox to TorBrowser
TB 43776: Mark branding files for l10n merge.
- - - - -
412b6690 by Henry Wilkes at 2025-06-18T11:56:19+02:00
Customize moz-toggle for tor-browser.
- - - - -
e901eb90 by Henry Wilkes at 2025-06-18T11:56:20+02:00
TB 43087: Add onion-pattern to be used on Tor pages.
- - - - -
50d1435e by hackademix at 2025-06-18T11:56:20+02:00
TB 41917: Tor brand-specific styles.
- - - - -
8fc4e034 by Henry Wilkes at 2025-06-18T11:56:20+02:00
TB 41817: tor-browser semantic colors.
- - - - -
f39881df by Henry Wilkes at 2025-06-18T11:56:20+02:00
TB 42110: Add TorUIUtils module for common tor component methods.
- - - - -
cdb4656b by Henry Wilkes at 2025-06-18T11:56:21+02:00
Add purple tor version of the loading APNG.
- - - - -
c0fdbcc1 by Henry Wilkes at 2025-06-18T11:56:21+02:00
TB 42583: Modify moz-support-link for Tor Browser.
- - - - -
c643c890 by sanketh at 2025-06-18T11:56:21+02:00
TB 40209: Implement Basic Crypto Safety
Adds a CryptoSafety actor which detects when you've copied a crypto
address from a HTTP webpage and shows a warning.
Closes #40209.
Bug 40428: Fix string attribute names
- - - - -
9ffa1291 by Mike Perry at 2025-06-18T11:56:21+02:00
TB3: Tor Browser's official .mozconfigs.
Also:
Add an --enable-tor-browser-data-outside-app-dir configure option
Add --with-tor-browser-version configure option
Bug 31457: disable per-installation profiles
The dedicated profiles (per-installation) feature does not interact
well with our bundled profiles on Linux and Windows, and it also causes
multiple profiles to be created on macOS under TorBrowser-Data.
Bug 31935: Disable profile downgrade protection.
Since Tor Browser does not support more than one profile, disable
the prompt and associated code that offers to create one when a
version downgrade situation is detected.
Add --enable-tor-browser-update build option
Bug 40793: moved Tor configuration options from old-configure.in to moz.configure
Bug 41584: Move some configuration options to base-browser level
- - - - -
a01c4175 by Henry Wilkes at 2025-06-18T11:56:22+02:00
TB 41340: Enable TOR_BROWSER_NIGHTLY_BUILD features for dev and nightly builds
tor-browser#41285: Enable fluent warnings.
- - - - -
cdcd9d32 by Pier Angelo Vendrame at 2025-06-18T11:56:22+02:00
TB 40562: Added Tor Browser preferences to 000-tor-browser.js
Before reordering patches, we used to keep the Tor-related patches
(torbutton and tor-launcher) at the beginning.
After that issue, we decided to move them towards the end.
In addition to that, we have decided to move Tor Browser-only
preferences there, too, to make Base Browser-only fixups easier to
apply.
- - - - -
82c626e8 by Pier Angelo Vendrame at 2025-06-18T11:56:22+02:00
TB 13252: Customize profile management on macOS
On macOS we allow both portable mode and system installation.
However, in the latter case, we customize Firefox's directories to
match the hierarchy we use for the portable mode.
Also, display an informative error message if the TorBrowser-Data
directory cannot be created due to an "access denied" or a
"read only volume" error.
- - - - -
84b01c84 by Pier Angelo Vendrame at 2025-06-18T11:56:22+02:00
TB 40933: Add tor-launcher functionality
Bug 41926: Reimplement the control port
- - - - -
d314197b by Cecylia Bocovich at 2025-06-18T11:56:22+02:00
Lox integration
- - - - -
b771b1d7 by Beatriz Rizental at 2025-06-18T11:56:23+02:00
fixup! Lox integration
Comment lazy imports from .jsm, as they are not supported anymore and
cause an unhandled exception on startup.
- - - - -
377ebe64 by Richard Pospesel at 2025-06-18T11:56:23+02:00
TB 40597: Implement TorSettings module
- migrated in-page settings read/write implementation from about:preferences#tor
to the TorSettings module
- TorSettings initially loads settings from the tor daemon, and saves them to
firefox prefs
- TorSettings notifies observers when a setting has changed; currently only
QuickStart notification is implemented for parity with previous preference
notify logic in about:torconnect and about:preferences#tor
- about:preferences#tor, and about:torconnect now read and write settings
thorugh the TorSettings module
- all tor settings live in the torbrowser.settings.* preference branch
- removed unused pref modify permission for about:torconnect content page from
AsyncPrefs.jsm
Bug 40645: Migrate Moat APIs to Moat.jsm module
- - - - -
44a1c1af by Arthur Edelstein at 2025-06-18T11:56:23+02:00
TB 3455: Add DomainIsolator, for isolating circuit by domain.
Add an XPCOM component that registers a ProtocolProxyChannelFilter
which sets the username/password for each web request according to
url bar domain.
Bug 9442: Add New Circuit button
Bug 13766: Set a 10 minute circuit dirty timeout for the catch-all circ.
Bug 19206: Include a 128 bit random tag as part of the domain isolator nonce.
Bug 19206: Clear out the domain isolator state on `New Identity`.
Bug 21201.2: Isolate by firstPartyDomain from OriginAttributes
Bug 21745: Fix handling of catch-all circuit
Bug 41741: Refactor the domain isolator and new circuit
- - - - -
e176b50c by Pier Angelo Vendrame at 2025-06-18T11:56:23+02:00
fixup! TB 3455: Add DomainIsolator, for isolating circuit by domain.
Fixed oncommand
- - - - -
59549726 by Henry Wilkes at 2025-06-18T11:56:24+02:00
TB 41600: Add a tor circuit display panel.
- - - - -
74b39d2f by Pier Angelo Vendrame at 2025-06-18T11:56:24+02:00
TB 42247: Android helpers for the TorProvider
GeckoView is missing some API we use on desktop for the integration
with the tor daemon, such as subprocess.
Therefore, we need to implement them in Java and plumb the data
back and forth between JS and Java.
- - - - -
d0d643e0 by hackademix at 2025-06-18T11:56:24+02:00
TB 8324: Prevent DNS proxy bypasses caused by Drag&Drop
Bug 41613: Skip Drang & Drop filtering for DNS-safe URLs
- - - - -
fc0caf25 by Matthew Finkel at 2025-06-18T11:56:24+02:00
TB 25741: TBA: Disable GeckoNetworkManager
The browser should not need information related to the network
interface or network state, tor should take care of that.
- - - - -
6f5640d1 by Pier Angelo Vendrame at 2025-06-18T11:56:25+02:00
TB 40807: Added QRCode.js to toolkit/modules
- - - - -
08d1f436 by Richard Pospesel at 2025-06-18T11:56:25+02:00
TB 31286: Implementation of bridge, proxy, and firewall settings in about:preferences#connection
This patch adds a new about:preferences#connection page which allows
modifying bridge, proxy, and firewall settings from within Tor Browser.
All of the functionality present in tor-launcher's Network
Configuration panel is present:
- Setting built-in bridges
- Requesting bridges from BridgeDB via moat
- Using user-provided bridges
- Configuring SOCKS4, SOCKS5, and HTTP/HTTPS proxies
- Setting firewall ports
- Viewing and Copying Tor's logs
- The Networking Settings in General preferences has been removed
Bug 40774: Update about:preferences page to match new UI designs
- - - - -
b92f33e2 by Beatriz Rizental at 2025-06-18T11:56:25+02:00
fixup! TB 31286: Implementation of bridge, proxy, and firewall settings in about:preferences#connection
- - - - -
4a325abd by Richard Pospesel at 2025-06-18T11:56:25+02:00
TB 27476: Implement about:torconnect captive portal within Tor Browser
- implements new about:torconnect page as tor-launcher replacement
- adds new torconnect component to browser
- tor process management functionality remains implemented in tor-launcher through the TorProtocolService module
- adds warning/error box to about:preferences#tor when not connected to tor
Bug 40773: Update the about:torconnect frontend page to match additional UI flows.
Bug 41608: Add a toolbar status button and a urlbar "Connect" button.
- - - - -
faa5aca0 by Beatriz Rizental at 2025-06-18T11:56:26+02:00
fixup! TB 27476: Implement about:torconnect captive portal within Tor Browser
- - - - -
a1d003c7 by Pier Angelo Vendrame at 2025-06-18T11:56:26+02:00
Temporary changes to about:torconnect for Android.
We are planning of tempoorarily using about:torconnect on Android, until
the native UX is ready.
- - - - -
65a79671 by Henry Wilkes at 2025-06-18T11:56:26+02:00
TB 43405: Show a prompt whenever we fail to apply Tor settings.
- - - - -
c321c87b by Henry Wilkes at 2025-06-18T11:56:26+02:00
TB 7494: Create local home page for TBB.
Bug 41333: Update about:tor to new design. Including:
+ make the favicon match the branding icon.
+ make the location bar show a search icon.
- - - - -
8b194e2b by Beatriz Rizental at 2025-06-18T11:56:27+02:00
fixup! TB 7494: Create local home page for TBB.
- - - - -
41ca116a by Pier Angelo Vendrame at 2025-06-18T11:56:27+02:00
TB 41668: Tweaks to the Base Browser updater for Tor Browser
This commit was once part of "Bug 4234: Use the Firefox Update Process
for Tor Browser.".
However, some parts of it were not needed for Base Browser and some
derivative browsers.
Therefore, we extracted from that commit the parts for Tor Browser
legacy, and we add them back to the patch set with this commit.
- - - - -
647ebb44 by Kathy Brade at 2025-06-18T11:56:27+02:00
TB 12647: Support symlinks in the updater.
- - - - -
1031edfb by Georg Koppen at 2025-06-18T11:56:27+02:00
TB 32658: Create a new MAR signing key
It's time for our rotation again: Move the backup key in the front
position and add a new backup key.
Bug 33803: Move our primary nightly MAR signing key to tor-browser
Bug 33803: Add a secondary nightly MAR signing key
- - - - -
81e2b9f8 by Pier Angelo Vendrame at 2025-06-18T11:56:28+02:00
TB 42891: Set the bundled search engine for Tor Browser.
After upstream changes between Firefox 115 and 128, we had to
completely rework the way in which we define our search engines.
This commit replaces the old "Omnibox: Add DDG, Startpage, Disconnect,
Youtube, Twitter; remove Amazon, eBay, bing".
With that commit, we customized a list of addons IDs to ship as
built-in search engines, but then upsteam moved to using only
RemoteSettings.
The configuration has many more fields, and it would be quite long to
include it in the source code. Therefore, we use some local JSON files
and load the settings from them.
- - - - -
44ff9cee by Beatriz Rizental at 2025-06-18T11:56:28+02:00
fixup! TB 42891: Set the bundled search engine for Tor Browser.
- - - - -
97fd89a6 by Henry Wilkes at 2025-06-18T11:56:28+02:00
TB 41906: Hide DNS over HTTPS preferences.
- - - - -
a6715368 by Richard Pospesel at 2025-06-18T11:56:28+02:00
TB 23247: Communicating security expectations for .onion
Encrypting pages hosted on Onion Services with SSL/TLS is redundant
(in terms of hiding content) as all traffic within the Tor network is
already fully encrypted. Therefore, serving HTTP pages from an Onion
Service is more or less fine.
Prior to this patch, Tor Browser would mostly treat pages delivered
via Onion Services as well as pages delivered in the ordinary fashion
over the internet in the same way. This created some inconsistencies
in behaviour and misinformation presented to the user relating to the
security of pages delivered via Onion Services:
- HTTP Onion Service pages did not have any 'lock' icon indicating
the site was secure
- HTTP Onion Service pages would be marked as unencrypted in the Page
Info screen
- Mixed-mode content restrictions did not apply to HTTP Onion Service
pages embedding Non-Onion HTTP content
This patch fixes the above issues, and also adds several new 'Onion'
icons to the mix to indicate all of the various permutations of Onion
Services hosted HTTP or HTTPS pages with HTTP or HTTPS content.
Strings for Onion Service Page Info page are pulled from Torbutton's
localization strings.
- - - - -
1b523e71 by Kathy Brade at 2025-06-18T11:56:29+02:00
TB 30237: Add v3 onion services client authentication prompt
When Tor informs the browser that client authentication is needed,
temporarily load about:blank instead of about:neterror and prompt
for the user's key.
If a correctly formatted key is entered, use Tor's ONION_CLIENT_AUTH_ADD
control port command to add the key (via Torbutton's control port
module) and reload the page.
If the user cancels the prompt, display the standard about:neterror
"Unable to connect" page. This requires a small change to
browser/actors/NetErrorChild.jsm to account for the fact that the
docShell no longer has the failedChannel information. The failedChannel
is used to extract TLS-related error info, which is not applicable
in the case of a canceled .onion authentication prompt.
Add a leaveOpen option to PopupNotifications.show so we can display
error messages within the popup notification doorhanger without
closing the prompt.
Add support for onion services strings to the TorStrings module.
Add support for Tor extended SOCKS errors (Tor proposal 304) to the
socket transport and SOCKS layers. Improved display of all of these
errors will be implemented as part of bug 30025.
Also fixes bug 19757:
Add a "Remember this key" checkbox to the client auth prompt.
Add an "Onion Services Authentication" section within the
about:preferences "Privacy & Security section" to allow
viewing and removal of v3 onion client auth keys that have
been stored on disk.
Also fixes bug 19251: use enhanced error pages for onion service errors.
- - - - -
61c6bf82 by Alex Catarineu at 2025-06-18T11:56:29+02:00
TB 21952: Implement Onion-Location
Whenever a valid Onion-Location HTTP header (or corresponding HTML
<meta> http-equiv attribute) is found in a document load, we either
redirect to it (if the user opted-in via preference) or notify the
presence of an onionsite alternative with a badge in the urlbar.
- - - - -
78610f95 by Pier Angelo Vendrame at 2025-06-18T11:56:29+02:00
fixup! TB 21952: Implement Onion-Location
No more inline event handlers
- - - - -
40288ad6 by Pier Angelo Vendrame at 2025-06-18T11:56:29+02:00
TB 40458: Implement .tor.onion aliases
We have enabled HTTPS-Only mode, therefore we do not need
HTTPS-Everywhere anymore.
However, we want to keep supporting .tor.onion aliases (especially for
securedrop).
Therefore, in this patch we implemented the parsing of HTTPS-Everywhere
rulesets, and the redirect of .tor.onion domains.
Actually, Tor Browser believes they are actual domains. We change them
on the fly on the SOCKS proxy requests to resolve the domain, and on
the code that verifies HTTPS certificates.
- - - - -
5c3c1c9f by Beatriz Rizental at 2025-06-18T11:56:30+02:00
fixup! TB 40458: Implement .tor.onion aliases
- - - - -
7fa829f9 by Pier Angelo Vendrame at 2025-06-18T11:56:30+02:00
TB 11698: Incorporate Tor Browser Manual pages into Tor Browser
This patch associates the about:manual page to a translated page that
must be injected to browser/omni.ja after the build.
The content must be placed in chrome/browser/content/browser/manual/, so
that is then available at chrome://browser/content/manual/.
We preferred giving absolute freedom to the web team, rather than having
to change the patch in case of changes on the documentation.
- - - - -
695da245 by Pier Angelo Vendrame at 2025-06-18T11:56:30+02:00
fixup! TB 11698: Incorporate Tor Browser Manual pages into Tor Browser
Fix oncommands
- - - - -
c392fc56 by Pier Angelo Vendrame at 2025-06-18T11:56:30+02:00
TB 41435: Add a Tor Browser migration function
For now this function only deletes old language packs for which we are
already packaging the strings with the application.
- - - - -
9e4ca16b by Dan Ballard at 2025-06-18T11:56:31+02:00
TB 40701: Add security warning when downloading a file
Shown in the downloads panel, about:downloads and places.xhtml.
- - - - -
3f49047b by Henry Wilkes at 2025-06-18T11:56:31+02:00
TB 41736: Customize toolbar for tor-browser.
- - - - -
a4c1c0e4 by hackademix at 2025-06-18T11:56:31+02:00
TB 41728: Pin bridges.torproject.org domains to Let's Encrypt's root cert public key
- - - - -
65b020f8 by Richard Pospesel at 2025-06-18T11:56:31+02:00
TB 41822: Unconditionally disable default browser UX in about:preferences
- - - - -
fe64bad9 by Cecylia Bocovich at 2025-06-18T11:56:32+02:00
Temporary commit: manually place generated wasm files
These files are built reproducibly using tor-browser-build: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/merge_re…
We're manually adding them here while working on the interface, but
eventually these should be placed in the right location using
tor-browser-build.
- - - - -
efce31a1 by Pier Angelo Vendrame at 2025-06-18T11:56:32+02:00
[android] TBA strings
- - - - -
5b108dfb by Dan Ballard at 2025-06-18T11:56:32+02:00
TB 42660: Disable ProxySelector.openConnectionWithProxy and NOPify CrashReporter.sendCrashReport
- - - - -
f1feb55a by Dan Ballard at 2025-06-18T11:56:32+02:00
TB 43006: Disable RFP for Font Visibility on Android
- - - - -
cb072ba0 by Matthew Finkel at 2025-06-18T11:56:33+02:00
TB 40005: [android] Modify Default toolbar menu
Originally android-components#40005.
- - - - -
9ed68736 by Alex Catarineu at 2025-06-18T11:56:33+02:00
TB 34378: [android] Port external helper app prompting
Together with the corresponding fenix patch, this allows all `startActivity`
that may open external apps to be replaced by `TorUtils.startActivityPrompt`.
Originally, android-components#40007 and fenix#34378.
- - - - -
07baf958 by Alex Catarineu at 2025-06-18T11:56:33+02:00
TB 40002: [android] Ensure system download manager is not used
Originally, android-components#40002.
android-components#40075: Support scoped storage to enable downloads on API < 29
- in android-components!7, we blocked all usage of Scoped
Storage in an attempt to block usage of Android's
DownloadManager, which is known to cause proxy bypasses
- as of Android API 29, downloads will not work without Scoped Storage,
causing all downlaods to fail (see: fenix##40192)
- here, we enable usage of scoped storage for API >= 29, but block
calls to DownloadManager on API < 29
- - - - -
b281e843 by Alex Catarineu at 2025-06-18T11:56:33+02:00
TB 40009: [android] Change the default search engines
Originally, android-components#40009.
This matches the search engines from desktop, that is:
DDG as the default, then YouTube, Google, DDGOnion,
Startpage, Twitter, Wikipedia and Yahoo.
android-components#40062: Update DuckDuckGo onion search plugin
- - - - -
832d2b6c by hackademix at 2025-06-18T11:56:34+02:00
TB 42191: [android] Temporary StrictMode relaxation to clear the thumbnail cache.
- - - - -
dd7b0ee1 by hackademix at 2025-06-18T11:56:34+02:00
[android] Modify add-on support
Bug 41160: One-time ultimate switch Tor Browser Android to HTTPS-Only.
Bug 41159: Remove HTTPS-Everywhere extension from Tor Browser Android.
Bug 41094: Enable HTTPS-Only Mode by default in Tor Browser Android.
Turn shouldUseHttpsOnly's default to true.
Bug 40225: Bundled extensions don't get updated with Android Tor
Browser updates.
Bug 40030: Install NoScript addon on startup.
Also 40070: Consider storing the list of recommended addons
This implements our own AddonsProvider, which loads the list of
available addons from assets instead of fetching it from an
endpoint.
Also, we hide the uninstall button for builtin addons.
Bug 40058: Hide option for disallowing addon in private mode
- - - - -
531e63cc by Alex Catarineu at 2025-06-18T11:56:34+02:00
[android] Modify Addon support
android-components#40011: Hide option for disallowing addons in private mode
android-components#40016: Allow inheriting from AddonCollectionProvider
This will allow implementing our own AddonsProvider in fenix.
- - - - -
4ddec671 by Alex Catarineu at 2025-06-18T11:56:34+02:00
TB 40015: [android] Port padlock states for .onion services
Originally, android-components#40015.
- - - - -
ca3e791f by Matthew Finkel at 2025-06-18T11:56:35+02:00
[android] Modify Tracking Protection configuration
android-components#40020: Disable third-party cookies
android-components#40024: Disable tracking protection by default
- - - - -
a66bf43f by Matthew Finkel at 2025-06-18T11:56:35+02:00
TB 40023: [android] Stop PrivateNotificationService
Originally, android-components#40023.
- - - - -
d2bd68e3 by Alex Catarineu at 2025-06-18T11:56:35+02:00
TB 34439 [android]: Isolate Icon loader on Android.
Originally, android-components#34439.
- - - - -
ca44d375 by Matthew Finkel at 2025-06-18T11:56:35+02:00
[android] Disable features and functionality
Bug 33594: Disable data collection by default (Glean)
Bug 40019: Adjust is disabled on Release when data collection is disabled
Bug 34338: Disable the crash reporter
Bug 40014: Neuter Google Advertising ID
Bug 40018: Disable Push service
Bug 40034: Disable PWA onboading
Bug 40072: Disable Tracking Protection
Bug 40061: Do not show "Send to device" in sharing menu
Bug 40109: Reduce requested permissions
Exclude LOCATION and NETWORK_STATE
- - - - -
838adb04 by Beatriz Rizental at 2025-06-18T11:56:35+02:00
fixup! [android] Disable features and functionality
- - - - -
2455dbdc by Matthew Finkel at 2025-06-18T11:56:36+02:00
TB 40032 [android]: Set usesCleartextTraffic as false
Originally, fenix#40032.
- - - - -
f752d442 by Matthew Finkel at 2025-06-18T11:56:36+02:00
[android] Rename as Tor Browser
Bug 40020: Change applicationId
Bug 40020: Change app name
Bug 40020: Change deeplink scheme
Bug 40020: Change App icons
Bug 40073: Use correct branding on About page
Bug 40088: Use Tor Browser logo in migration screen
- - - - -
657b4b3c by Georg Koppen at 2025-06-18T11:56:36+02:00
[android] Modify build system
Bug 40083: Make locale ordering in BuildConfig deterministic
Bug 40042: Add option do overwrite timestamp in extension version
Bug 40059: Use MOZ_BUILD_DATE for versionCode
At the same time we adapt MOZ_BUILD_DATE to our needs where it is
actually used and not in tor-browser-build. This gives us more
flexibility. See: tor-browser-build#40084.
Bug 40067: Fix reproducibility issue in classes2.dex
We make sure our MOZ_BUILD_DATE gets used as a source for showing date
related information on the Fenix about page.
Bug 40071: Show only supported locales
Bug 40064: Use Gecko Beta for Nightly and Debug variants
Bug 40123: Allow building the instrumented tests apks for variants other than debug
This allows to specify the variant of the instrumented tests via
a `testBuildType` gradle argument. It also applies a workaround for
a R8 issue from https://issuetracker.google.com/issues/140851070.
Bug 40143: Use deterministic date in Test apk
The build config was using Date() when generating the Test apk's
versionName.
- - - - -
acdc9550 by Pier Angelo Vendrame at 2025-06-18T11:56:37+02:00
fixup! [android] Modify build system
TB 43799: Update the path where apks are.
- - - - -
fa58624c by Matthew Finkel at 2025-06-18T11:56:37+02:00
TB 40185: [android] Use NimbusDisabled
Originally, fenix#40185.
- - - - -
de3bbace by Pier Angelo Vendrame at 2025-06-18T11:56:37+02:00
fixup! TB 40185: [android] Use NimbusDisabled
Flip pref_key_show_top_sites to false.
- - - - -
a12afaff by Alex Catarineu at 2025-06-18T11:56:37+02:00
TB 40087 [android]: Implement a switch for spoof English.
Originally, fenix#40087 and android-components#40019.
- - - - -
50d6be16 by Matthew Finkel at 2025-06-18T11:56:37+02:00
TB 34403 [android]: Disable Normal mode by default.
Originally, fenix#34403.
- - - - -
8fb6f84a by Pier Angelo Vendrame at 2025-06-18T11:56:38+02:00
fixup! TB 34403 [android]: Disable Normal mode by default.
Import LocalContext, which has been removed upstream.
- - - - -
8d09ff0f by Matthew Finkel at 2025-06-18T11:56:38+02:00
TB 40016 [android]: Don't install WebCompat webext.
Originally, fenix#40016.
- - - - -
efb0e6a8 by Matthew Finkel at 2025-06-18T11:56:38+02:00
[android] Modify UI/UX
Bug 40015: Modify Home menu
Bug 40016: Hide unwanted Settings
Bug 40016: Modify Default toolbar menu
Bug 40016: Add Donate settings button
Bug 40016: Move Allow Screenshots under Advanced
Bug 40016: Don't install WebCompat webext
Bug 40016: Don't onboard Search Suggestions
Bug 40094: Do not use MasterPasswordTipProvider in HomeFragment
Bug 40095: Hide "Sign in to sync" in bookmarks
Bug 40031: Hide Mozilla-specific items on About page
Bug 40063: Do not sort search engines alphabetically
Bug 40141: Hide EME site permission
Bug 40166: Hide "Normal" tab (again) and Sync tab in TabTray
Bug 40167: Hide "Save to Collection" in menu
Bug 40172: Find the Quit button
Bug 40186: Hide Credit Cards in Settings
Bug 40198: Spoof English toggle now overlaps with locale list
- - - - -
87a886eb by Matthew Finkel at 2025-06-18T11:56:38+02:00
TB 40026 [android]: Implement Security Level settings on Android.
Originally, fenix#40026.
- - - - -
45f21949 by Dan Ballard at 2025-06-18T11:56:39+02:00
TB 41972: [android] Disable Mozilla onboarding
- - - - -
4b5e8d8f by Dan Ballard at 2025-06-18T11:56:39+02:00
TB 41878: [android] Add standalone Tor Bootstrap
- - - - -
9608b998 by Matthew Finkel at 2025-06-18T11:56:39+02:00
TB 40041 [android]: Implement Tor Network Settings
Originally, fenix#40041.
- - - - -
583fcd8f by clairehurst at 2025-06-18T11:56:39+02:00
[android] Implement Android-native Connection Assist UI
- - - - -
09bb6f05 by Pier Angelo Vendrame at 2025-06-18T11:56:40+02:00
fixup! [android] Implement Android-native Connection Assist UI
Fix 139 Android build errors.
BrowserToolbarView.view has been removed, so comment it for now.
- - - - -
75ec2ddb by clairehurst at 2025-06-18T11:56:40+02:00
TB 42655 [android]: Implement "New circuit for this site" on Android
- - - - -
c97c687a by clairehurst at 2025-06-18T11:56:40+02:00
TB 42089: [android] Remove ability to submit site support requests
- - - - -
263755ef by clairehurst at 2025-06-18T11:56:40+02:00
[android] Delete unused media
- - - - -
b780d0ee by Pier Angelo Vendrame at 2025-06-18T11:56:41+02:00
fixup! [android] Delete unused media
Replace another ic_firefox with a file we do not delete.
- - - - -
1b0c0b86 by Beatriz Rizental at 2025-06-18T11:56:41+02:00
TB 43243: [android] Implement Android launch test
Also remove exit call from terminate function.
It causes all espresso tests to crash on exit and otherwise doesn't do anything.
- - - - -
de0befc8 by Beatriz Rizental at 2025-06-18T11:56:41+02:00
TB 42669: [android] Use custom no-op app-services
Fetch the custom built no-op application services library
from tor-browser-build when building for Android.
- - - - -
cfbd1e14 by Beatriz Rizental at 2025-06-18T11:56:41+02:00
fixup! TB 42669: [android] Use custom no-op app-services
- - - - -
b1238175 by Pier Angelo Vendrame at 2025-06-18T11:56:42+02:00
fixup! Base Browser strings
BB 43849: Remove a useless lint exclusion.
Probably it was a rebase error.
- - - - -
276e713b by Dan Ballard at 2025-06-18T11:56:42+02:00
fixup! [android] Modify build system
Bug 43809: allow tba-fetch-deps to download from nightlies
- - - - -
6ddad0f9 by Dan Ballard at 2025-06-18T11:56:42+02:00
fixup! TB 42669: [android] Use custom no-op app-services
Bug 43809: allow tba-fetch-deps to download nightlies
- - - - -
7dd37f1d by hackademix at 2025-06-18T11:56:42+02:00
fixup! Firefox preference overrides.
BB 43811: Block 0.0.0.0
- - - - -
4119a744 by Henry Wilkes at 2025-06-18T11:56:43+02:00
fixup! TB 40933: Add tor-launcher functionality
TB 43636: Distinguish between bootstrap errors and TorProvider
initialisation errors.
- - - - -
09e8aa23 by Henry Wilkes at 2025-06-18T11:56:43+02:00
fixup! TB 40597: Implement TorSettings module
TB 43636: Move to the Start stage when a bootstrap fails due to a
TorProvider initialisation error.
- - - - -
dabe80f4 by Henry Wilkes at 2025-06-18T11:56:43+02:00
fixup! BB 40925: Implemented the Security Level component
TB 43783: Prompt user for a restart if their security level preferences
are not aligned at startup or mid-session.
Also handle failures to apply NoScript settings.
- - - - -
042bad1a by Henry Wilkes at 2025-06-18T11:56:43+02:00
fixup! BB 40069: Add helpers for message passing with extensions
TB 43783: Allow the browser to wait for the NoScript settings to be
applied.
- - - - -
5ad40f1d by Henry Wilkes at 2025-06-18T11:56:44+02:00
fixup! Base Browser strings
TB 43783: Add security level prompt strings.
- - - - -
1172316b by Henry Wilkes at 2025-06-18T11:56:44+02:00
fixup! TB 40026 [android]: Implement Security Level settings on Android.
TB 43783: Expose SecurityLevelPrefs.setSecurityLevelAndRestart to
android integration.
- - - - -
4344bb65 by Henry Wilkes at 2025-06-18T11:56:44+02:00
fixup! Base Browser strings
TB 43782: Add strings for new security level UX flow.
- - - - -
2a72f321 by Henry Wilkes at 2025-06-18T11:56:44+02:00
fixup! BB 40925: Implemented the Security Level component
TB 43782: Update security level UI for new UX flow.
In addition, we drop the distinction between the security levels in the
UI when the user has a custom security level.
I.e. we always show shield as unfilled but with a yellow dot in the
toolbar, and we just call it "Custom" rather than "Standard Custom",
etc.
- - - - -
8ce389e3 by clairehurst at 2025-06-18T11:56:45+02:00
fixup! TB 40026 [android]: Implement Security Level settings on Android.
TB 43786: Add new UX flow for changing security level (Android)
- - - - -
ee1ac1ed by clairehurst at 2025-06-18T11:56:45+02:00
fixup! [android] Implement Android-native Connection Assist UI
TB 43786: Add new UX flow for changing security level (Android)
- - - - -
83815d72 by clairehurst at 2025-06-18T11:56:45+02:00
fixup! [android] TBA strings
TB 43786: Add new UX flow for changing security level (Android)
- - - - -
b242e9cc by Pier Angelo Vendrame at 2025-06-18T11:56:45+02:00
fixup! BB 42758: Fix WebRTC build errors.
MB 440: Change abseil's thread mode.
Remove pthread again and use win32 threads also when building with
mingw.
- - - - -
933b20c3 by Pier Angelo Vendrame at 2025-06-18T11:56:46+02:00
fixup! TB 2176: Rebrand Firefox to TorBrowser
TB 43855: Set Android branding for l10n merging.
- - - - -
dc2a2487 by Beatriz Rizental at 2025-06-18T11:56:46+02:00
fixup! Tweaks to the build system
Make it possible to provide MOZ_PKG_MAC_DSSTORE, MOZ_PKG_MAC_BACKGROUND,
MOZ_PKG_MAC_ICON as environment variables. These files are not where the
build system expects it.
In our build system these files are in
tor-browser-build/projects/browser/Bundle-Data/BaseBrowser.dmg while the
build system expects it to be in browser/branding/tb-*.
For ./mach package to work properly when building for macos we need
these locations. Passing them as env vars is fine for building artifacts
in tbb.
- - - - -
866cd27e by Beatriz Rizental at 2025-06-18T11:56:46+02:00
fixup! Tweaks to the build system
Disable inclusion of browser/installer/windows into packaged development
artifacts. That file is not included by our builds -- at least not by
the ones done by tor-browser-build.
Attempting to zip the unexisting folder will crash `./mach package` when
building inside tor-browser-build.
- - - - -
03e945b9 by Henry Wilkes at 2025-06-18T11:56:46+02:00
fixup! TB 40933: Add tor-launcher functionality
TB 43577: Do not try and flush settings to torrc on android.
- - - - -
33e5a77e by Morgan at 2025-06-18T11:56:47+02:00
fixup! BB 43615: Add Gitlab Issue and Merge Request templates
add ~Emergency label and explicit optional Mullvad communication step
- - - - -
581bca00 by Morgan at 2025-06-18T11:56:47+02:00
fixup! BB 43615: Add Gitlab Issue and Merge Request templates
update target channels with esr140-15.0 and esr128-14.5
- - - - -
0dcd6f63 by Morgan at 2025-06-18T11:56:47+02:00
fixup! TB 40562: Added Tor Browser preferences to 000-tor-browser.js
use netlify for moat's domain fronting
- - - - -
ed543c60 by Henry Wilkes at 2025-06-18T11:56:47+02:00
fixup! TB 40597: Implement TorSettings module
TB 43853: Use setByteStringData instead of setData.
- - - - -
e3789b6e by Beatriz Rizental at 2025-06-18T11:56:47+02:00
fixup! TB 42669: [android] Use custom no-op app-services
- - - - -
6ccd4ab2 by Beatriz Rizental at 2025-06-18T11:56:48+02:00
Revert "TB 40185: [android] Use NimbusDisabled"
This reverts commit c98c78c527f11856aab9f7e16ff503f267e665e2.
- - - - -
a445d8d9 by Beatriz Rizental at 2025-06-18T11:56:48+02:00
[android] Override settings
- - - - -
f94f847e by Beatriz Rizental at 2025-06-18T11:56:48+02:00
fixup! [android] Override settings
Disable the tab-strip experiment for all channels. Having this
experiment enabled overrides the toolbar position to always be on the
top, which we don't want.
- - - - -
d1d3465e by Morgan at 2025-06-18T12:02:58+02:00
fixup! BB 43615: Add Gitlab Issue and Merge Request templates
add fingerprinting issue template
- - - - -
99bcb6c0 by Beatriz Rizental at 2025-06-18T12:02:59+02:00
Various Android workarounds
- - - - -
1825 changed files:
- .gitignore
- + .gitlab-ci.yml
- + .gitlab/ci/containers/base/Containerfile
- + .gitlab/ci/jobs/lint/helpers.py
- + .gitlab/ci/jobs/lint/lint.yml
- + .gitlab/ci/jobs/startup-test/startup-test-android.py
- + .gitlab/ci/jobs/startup-test/startup-test.py
- + .gitlab/ci/jobs/startup-test/startup-test.yml
- + .gitlab/ci/jobs/update-containers.yml
- + .gitlab/ci/jobs/update-translations.yml
- + .gitlab/ci/mixins.yml
- + .gitlab/issue_templates/000 Bug Report.md
- + .gitlab/issue_templates/010 Proposal.md
- + .gitlab/issue_templates/020 Web Compatibility.md
- + .gitlab/issue_templates/030 Test.md
- + .gitlab/issue_templates/031 Fingerprinting.md
- + .gitlab/issue_templates/040 Feature.md
- + .gitlab/issue_templates/050 Backport.md
- + .gitlab/issue_templates/060 Rebase - Alpha.md
- + .gitlab/issue_templates/061 Rebase - Stable.md
- + .gitlab/issue_templates/062 Rebase - Legacy.md
- + .gitlab/issue_templates/063 Rebase - Rapid.md
- + .gitlab/issue_templates/070 Uplift.md
- + .gitlab/issue_templates/080 Security Backports.md
- + .gitlab/issue_templates/090 Emergency Security Issue.md
- + .gitlab/issue_templates/100 Release QA - Desktop.md
- + .gitlab/issue_templates/101 Release QA - Android.md
- + .gitlab/issue_templates/110 Bugzilla Triage.md
- + .gitlab/issue_templates/120 Bugzilla Audit.md
- + .gitlab/issue_templates/Default.md
- + .gitlab/merge_request_templates/Default.md
- .prettierignore
- README.md
- + browser/actors/CryptoSafetyChild.sys.mjs
- + browser/actors/CryptoSafetyParent.sys.mjs
- browser/actors/moz.build
- browser/app/Makefile.in
- browser/app/macbuild/Contents/Info.plist.in
- browser/app/macbuild/Contents/MacOS-files.in
- browser/app/moz.build
- browser/app/permissions
- + browser/app/profile/000-tor-browser.js
- + browser/app/profile/001-base-profile.js
- browser/app/profile/firefox.js
- browser/base/content/aboutDialog-appUpdater.js
- browser/base/content/aboutDialog.js
- browser/base/content/aboutDialog.xhtml
- + browser/base/content/aboutDialogTor.css
- browser/base/content/appmenu-viewcache.inc.xhtml
- browser/base/content/browser-addons.js
- browser/base/content/browser-context.js
- browser/base/content/browser-init.js
- browser/base/content/browser-main.js
- browser/base/content/browser-menubar.inc
- browser/base/content/browser-menubar.js
- browser/base/content/browser-places.js
- browser/base/content/browser-safebrowsing.js
- browser/base/content/browser-sets.inc
- browser/base/content/browser-sets.js
- browser/base/content/browser-siteIdentity.js
- browser/base/content/browser.js
- browser/base/content/browser.js.globals
- browser/base/content/browser.xhtml
- browser/base/content/default-bookmarks.html
- + browser/base/content/languageNotification.js
- browser/base/content/main-popupset.inc.xhtml
- browser/base/content/navigator-toolbox.inc.xhtml
- browser/base/content/navigator-toolbox.js
- browser/base/content/pageinfo/pageInfo.xhtml
- browser/base/content/pageinfo/security.js
- browser/base/content/popup-notifications.inc.xhtml
- browser/base/content/utilityOverlay.js
- browser/base/jar.mn
- browser/base/moz.build
- browser/branding/branding-common.mozbuild
- + browser/branding/tb-alpha/VisualElements_150.png
- + browser/branding/tb-alpha/VisualElements_70.png
- + browser/branding/tb-alpha/configure.sh
- + browser/branding/tb-alpha/content/about-logo.png
- + browser/branding/tb-alpha/content/about-logo.svg
- + browser/branding/tb-alpha/content/about-logo(a)2x.png
- + browser/branding/tb-alpha/content/about-wordmark.svg
- + browser/branding/tb-alpha/content/about.png
- + browser/branding/tb-alpha/content/aboutDialog.css
- + browser/branding/tb-alpha/content/firefox-wordmark.svg
- + browser/branding/tb-alpha/content/jar.mn
- + browser/branding/tb-alpha/content/moz.build
- + browser/branding/tb-alpha/default128.png
- + browser/branding/tb-alpha/default16.png
- + browser/branding/tb-alpha/default22.png
- + browser/branding/tb-alpha/default24.png
- + browser/branding/tb-alpha/default256.png
- + browser/branding/tb-alpha/default32.png
- + browser/branding/tb-alpha/default48.png
- + browser/branding/tb-alpha/default64.png
- + browser/branding/tb-alpha/document.icns
- + browser/branding/tb-alpha/document.ico
- + browser/branding/tb-alpha/document_pdf.ico
- + browser/branding/tb-alpha/firefox.VisualElementsManifest.xml
- + browser/branding/tb-alpha/firefox.icns
- + browser/branding/tb-alpha/firefox.ico
- + browser/branding/tb-alpha/locales/en-US/brand.ftl
- + browser/branding/tb-alpha/locales/en-US/brand.properties
- + browser/branding/tb-alpha/locales/jar.mn
- + browser/branding/tb-alpha/locales/moz.build
- + browser/branding/tb-alpha/moz.build
- + browser/branding/tb-alpha/newtab.ico
- + browser/branding/tb-alpha/newwindow.ico
- + browser/branding/tb-alpha/pbmode.ico
- + browser/branding/tb-alpha/pref/firefox-branding.js
- + browser/branding/tb-nightly/VisualElements_150.png
- + browser/branding/tb-nightly/VisualElements_70.png
- + browser/branding/tb-nightly/configure.sh
- + browser/branding/tb-nightly/content/about-logo.png
- + browser/branding/tb-nightly/content/about-logo.svg
- + browser/branding/tb-nightly/content/about-logo(a)2x.png
- + browser/branding/tb-nightly/content/about-wordmark.svg
- + browser/branding/tb-nightly/content/about.png
- + browser/branding/tb-nightly/content/aboutDialog.css
- + browser/branding/tb-nightly/content/firefox-wordmark.svg
- + browser/branding/tb-nightly/content/jar.mn
- + browser/branding/tb-nightly/content/moz.build
- + browser/branding/tb-nightly/default128.png
- + browser/branding/tb-nightly/default16.png
- + browser/branding/tb-nightly/default22.png
- + browser/branding/tb-nightly/default24.png
- + browser/branding/tb-nightly/default256.png
- + browser/branding/tb-nightly/default32.png
- + browser/branding/tb-nightly/default48.png
- + browser/branding/tb-nightly/default64.png
- + browser/branding/tb-nightly/document.icns
- + browser/branding/tb-nightly/document.ico
- + browser/branding/tb-nightly/document_pdf.ico
- + browser/branding/tb-nightly/firefox.VisualElementsManifest.xml
- + browser/branding/tb-nightly/firefox.icns
- + browser/branding/tb-nightly/firefox.ico
- + browser/branding/tb-nightly/locales/en-US/brand.ftl
- + browser/branding/tb-nightly/locales/en-US/brand.properties
- + browser/branding/tb-nightly/locales/jar.mn
- + browser/branding/tb-nightly/locales/moz.build
- + browser/branding/tb-nightly/moz.build
- + browser/branding/tb-nightly/newtab.ico
- + browser/branding/tb-nightly/newwindow.ico
- + browser/branding/tb-nightly/pbmode.ico
- + browser/branding/tb-nightly/pref/firefox-branding.js
- + browser/branding/tb-release/VisualElements_150.png
- + browser/branding/tb-release/VisualElements_70.png
- + browser/branding/tb-release/configure.sh
- + browser/branding/tb-release/content/about-logo.png
- + browser/branding/tb-release/content/about-logo.svg
- + browser/branding/tb-release/content/about-logo(a)2x.png
- + browser/branding/tb-release/content/about-wordmark.svg
- + browser/branding/tb-release/content/about.png
- + browser/branding/tb-release/content/aboutDialog.css
- + browser/branding/tb-release/content/firefox-wordmark.svg
- + browser/branding/tb-release/content/jar.mn
- + browser/branding/tb-release/content/moz.build
- + browser/branding/tb-release/default128.png
- + browser/branding/tb-release/default16.png
- + browser/branding/tb-release/default22.png
- + browser/branding/tb-release/default24.png
- + browser/branding/tb-release/default256.png
- + browser/branding/tb-release/default32.png
- + browser/branding/tb-release/default48.png
- + browser/branding/tb-release/default64.png
- + browser/branding/tb-release/document.icns
- + browser/branding/tb-release/document.ico
- + browser/branding/tb-release/document_pdf.ico
- + browser/branding/tb-release/firefox.VisualElementsManifest.xml
- + browser/branding/tb-release/firefox.icns
- + browser/branding/tb-release/firefox.ico
- + browser/branding/tb-release/locales/en-US/brand.ftl
- + browser/branding/tb-release/locales/en-US/brand.properties
- + browser/branding/tb-release/locales/jar.mn
- + browser/branding/tb-release/locales/moz.build
- + browser/branding/tb-release/moz.build
- + browser/branding/tb-release/newtab.ico
- + browser/branding/tb-release/newwindow.ico
- + browser/branding/tb-release/pbmode.ico
- + browser/branding/tb-release/pref/firefox-branding.js
- browser/components/BrowserComponents.manifest
- browser/components/BrowserContentHandler.sys.mjs
- browser/components/BrowserGlue.sys.mjs
- browser/components/DesktopActorRegistry.sys.mjs
- browser/components/about/AboutRedirector.cpp
- browser/components/about/components.conf
- browser/components/aboutlogins/AboutLoginsParent.sys.mjs
- browser/components/aboutlogins/content/aboutLogins.css
- browser/components/aboutlogins/content/aboutLogins.mjs
- browser/components/aboutlogins/content/components/fxaccounts-button.css
- + browser/components/abouttor/AboutTorChild.sys.mjs
- + browser/components/abouttor/AboutTorMessage.sys.mjs
- + browser/components/abouttor/AboutTorParent.sys.mjs
- + browser/components/abouttor/HomepageOverride.sys.mjs
- + browser/components/abouttor/content/1f44b-waving-hand.svg
- + browser/components/abouttor/content/1f4e3-megaphone.svg
- + browser/components/abouttor/content/26a1-high-voltage.svg
- + browser/components/abouttor/content/2728-sparkles.svg
- + browser/components/abouttor/content/2764-red-heart.svg
- + browser/components/abouttor/content/aboutTor.css
- + browser/components/abouttor/content/aboutTor.html
- + browser/components/abouttor/content/aboutTor.js
- + browser/components/abouttor/content/dax-logo.svg
- + browser/components/abouttor/jar.mn
- + browser/components/abouttor/moz.build
- browser/components/customizableui/CustomizableUI.sys.mjs
- browser/components/customizableui/content/panelUI.inc.xhtml
- browser/components/customizableui/content/panelUI.js
- browser/components/downloads/DownloadSpamProtection.sys.mjs
- + browser/components/downloads/DownloadsTorWarning.sys.mjs
- browser/components/downloads/content/contentAreaDownloadsView.js
- browser/components/downloads/content/contentAreaDownloadsView.xhtml
- browser/components/downloads/content/downloads.css
- browser/components/downloads/content/downloads.js
- browser/components/downloads/content/downloadsPanel.inc.xhtml
- browser/components/downloads/moz.build
- browser/components/extensions/parent/ext-browserAction.js
- browser/components/extensions/schemas/chrome_settings_overrides.json
- browser/components/migration/ChromeMigrationUtils.sys.mjs
- browser/components/migration/content/migration-wizard.mjs
- browser/components/moz.build
- + browser/components/newidentity/content/newIdentityDialog.css
- + browser/components/newidentity/content/newIdentityDialog.js
- + browser/components/newidentity/content/newIdentityDialog.xhtml
- + browser/components/newidentity/content/newidentity.js
- + browser/components/newidentity/jar.mn
- + browser/components/newidentity/moz.build
- browser/components/newtab/AboutHomeStartupCache.sys.mjs
- browser/components/newtab/AboutNewTabRedirector.sys.mjs
- + browser/components/onionservices/OnionAliasStore.sys.mjs
- + browser/components/onionservices/OnionLocationChild.sys.mjs
- + browser/components/onionservices/OnionLocationParent.sys.mjs
- + browser/components/onionservices/TorRequestWatch.sys.mjs
- + browser/components/onionservices/content/authNotificationIcon.inc.xhtml
- + browser/components/onionservices/content/authPopup.inc.xhtml
- + browser/components/onionservices/content/authPreferences.css
- + browser/components/onionservices/content/authPreferences.inc.xhtml
- + browser/components/onionservices/content/authPreferences.js
- + browser/components/onionservices/content/authPrompt.js
- + browser/components/onionservices/content/onionlocation-urlbar.inc.xhtml
- + browser/components/onionservices/content/onionlocation.css
- + browser/components/onionservices/content/onionservices.css
- + browser/components/onionservices/content/savedKeysDialog.js
- + browser/components/onionservices/content/savedKeysDialog.xhtml
- + browser/components/onionservices/jar.mn
- + browser/components/onionservices/moz.build
- browser/components/places/PlacesUIUtils.sys.mjs
- browser/components/places/content/controller.js
- browser/components/places/content/places.css
- browser/components/places/content/places.js
- browser/components/places/content/places.xhtml
- browser/components/preferences/home.inc.xhtml
- browser/components/preferences/home.js
- browser/components/preferences/jar.mn
- + browser/components/preferences/letterboxing-middle-dark.svg
- + browser/components/preferences/letterboxing-middle-light.svg
- + browser/components/preferences/letterboxing-top-dark.svg
- + browser/components/preferences/letterboxing-top-light.svg
- + browser/components/preferences/letterboxing.css
- + browser/components/preferences/letterboxing.inc.xhtml
- + browser/components/preferences/letterboxing.js
- browser/components/preferences/main.inc.xhtml
- browser/components/preferences/main.js
- browser/components/preferences/preferences.js
- browser/components/preferences/preferences.xhtml
- browser/components/preferences/privacy.inc.xhtml
- browser/components/preferences/privacy.js
- + browser/components/rulesets/RulesetsChild.sys.mjs
- + browser/components/rulesets/RulesetsParent.sys.mjs
- + browser/components/rulesets/content/aboutRulesets.css
- + browser/components/rulesets/content/aboutRulesets.html
- + browser/components/rulesets/content/aboutRulesets.js
- + browser/components/rulesets/content/securedrop.svg
- + browser/components/rulesets/jar.mn
- + browser/components/rulesets/moz.build
- browser/components/search/SERPCategorization.sys.mjs
- browser/components/search/SearchSERPTelemetry.sys.mjs
- + browser/components/search/extensions/ddg-onion/favicon.ico
- + browser/components/search/extensions/ddg-onion/manifest.json
- browser/components/search/extensions/ddg/manifest.json
- + browser/components/search/extensions/startpage-onion/favicon.png
- + browser/components/search/extensions/startpage-onion/manifest.json
- + browser/components/search/extensions/startpage/favicon.png
- + browser/components/search/extensions/startpage/manifest.json
- + browser/components/securitylevel/SecurityLevelUIUtils.sys.mjs
- + browser/components/securitylevel/content/securityLevel.js
- + browser/components/securitylevel/content/securityLevelButton.css
- + browser/components/securitylevel/content/securityLevelButton.inc.xhtml
- + browser/components/securitylevel/content/securityLevelDialog.js
- + browser/components/securitylevel/content/securityLevelDialog.xhtml
- + browser/components/securitylevel/content/securityLevelIcon.svg
- + browser/components/securitylevel/content/securityLevelPanel.css
- + browser/components/securitylevel/content/securityLevelPanel.inc.xhtml
- + browser/components/securitylevel/content/securityLevelPreferences.css
- + browser/components/securitylevel/content/securityLevelPreferences.inc.xhtml
- + browser/components/securitylevel/jar.mn
- + browser/components/securitylevel/moz.build
- browser/components/tabbrowser/content/tabbrowser.js
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e6-1f1e8.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e6-1f1e9.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e6-1f1ea.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e6-1f1eb.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e6-1f1ec.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e6-1f1ee.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e6-1f1f1.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e6-1f1f2.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e6-1f1f4.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e6-1f1f6.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e6-1f1f7.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e6-1f1f8.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e6-1f1f9.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e6-1f1fa.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e6-1f1fc.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e6-1f1fd.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e6-1f1ff.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e7-1f1e6.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e7-1f1e7.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e7-1f1e9.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e7-1f1ea.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e7-1f1eb.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e7-1f1ec.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e7-1f1ed.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e7-1f1ee.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e7-1f1ef.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e7-1f1f1.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e7-1f1f2.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e7-1f1f3.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e7-1f1f4.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e7-1f1f6.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e7-1f1f7.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e7-1f1f8.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e7-1f1f9.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e7-1f1fb.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e7-1f1fc.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e7-1f1fe.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e7-1f1ff.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e8-1f1e6.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e8-1f1e8.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e8-1f1e9.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e8-1f1eb.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e8-1f1ec.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e8-1f1ed.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e8-1f1ee.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e8-1f1f0.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e8-1f1f1.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e8-1f1f2.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e8-1f1f3.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e8-1f1f4.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e8-1f1f5.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e8-1f1f7.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e8-1f1fa.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e8-1f1fb.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e8-1f1fc.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e8-1f1fd.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e8-1f1fe.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e8-1f1ff.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e9-1f1ea.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e9-1f1ec.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e9-1f1ef.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e9-1f1f0.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e9-1f1f2.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e9-1f1f4.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1e9-1f1ff.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ea-1f1e6.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ea-1f1e8.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ea-1f1ea.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ea-1f1ec.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ea-1f1ed.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ea-1f1f7.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ea-1f1f8.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ea-1f1f9.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ea-1f1fa.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1eb-1f1ee.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1eb-1f1ef.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1eb-1f1f0.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1eb-1f1f2.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1eb-1f1f4.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1eb-1f1f7.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ec-1f1e6.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ec-1f1e7.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ec-1f1e9.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ec-1f1ea.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ec-1f1eb.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ec-1f1ec.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ec-1f1ed.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ec-1f1ee.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ec-1f1f1.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ec-1f1f2.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ec-1f1f3.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ec-1f1f5.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ec-1f1f6.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ec-1f1f7.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ec-1f1f8.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ec-1f1f9.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ec-1f1fa.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ec-1f1fc.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ec-1f1fe.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ed-1f1f0.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ed-1f1f2.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ed-1f1f3.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ed-1f1f7.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ed-1f1f9.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ed-1f1fa.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ee-1f1e8.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ee-1f1e9.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ee-1f1ea.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ee-1f1f1.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ee-1f1f2.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ee-1f1f3.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ee-1f1f4.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ee-1f1f6.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ee-1f1f7.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ee-1f1f8.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ee-1f1f9.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ef-1f1ea.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ef-1f1f2.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ef-1f1f4.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ef-1f1f5.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f0-1f1ea.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f0-1f1ec.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f0-1f1ed.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f0-1f1ee.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f0-1f1f2.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f0-1f1f3.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f0-1f1f5.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f0-1f1f7.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f0-1f1fc.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f0-1f1fe.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f0-1f1ff.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f1-1f1e6.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f1-1f1e7.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f1-1f1e8.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f1-1f1ee.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f1-1f1f0.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f1-1f1f7.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f1-1f1f8.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f1-1f1f9.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f1-1f1fa.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f1-1f1fb.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f1-1f1fe.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f2-1f1e6.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f2-1f1e8.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f2-1f1e9.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f2-1f1ea.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f2-1f1eb.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f2-1f1ec.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f2-1f1ed.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f2-1f1f0.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f2-1f1f1.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f2-1f1f2.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f2-1f1f3.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f2-1f1f4.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f2-1f1f5.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f2-1f1f6.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f2-1f1f7.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f2-1f1f8.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f2-1f1f9.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f2-1f1fa.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f2-1f1fb.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f2-1f1fc.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f2-1f1fd.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f2-1f1fe.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f2-1f1ff.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f3-1f1e6.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f3-1f1e8.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f3-1f1ea.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f3-1f1eb.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f3-1f1ec.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f3-1f1ee.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f3-1f1f1.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f3-1f1f4.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f3-1f1f5.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f3-1f1f7.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f3-1f1fa.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f3-1f1ff.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f4-1f1f2.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f5-1f1e6.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f5-1f1ea.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f5-1f1eb.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f5-1f1ec.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f5-1f1ed.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f5-1f1f0.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f5-1f1f1.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f5-1f1f2.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f5-1f1f3.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f5-1f1f7.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f5-1f1f8.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f5-1f1f9.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f5-1f1fc.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f5-1f1fe.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f6-1f1e6.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f7-1f1ea.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f7-1f1f4.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f7-1f1f8.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f7-1f1fa.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f7-1f1fc.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f8-1f1e6.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f8-1f1e7.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f8-1f1e8.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f8-1f1e9.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f8-1f1ea.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f8-1f1ec.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f8-1f1ed.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f8-1f1ee.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f8-1f1ef.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f8-1f1f0.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f8-1f1f1.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f8-1f1f2.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f8-1f1f3.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f8-1f1f4.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f8-1f1f7.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f8-1f1f8.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f8-1f1f9.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f8-1f1fb.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f8-1f1fd.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f8-1f1fe.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f8-1f1ff.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f9-1f1e6.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f9-1f1e8.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f9-1f1e9.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f9-1f1eb.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f9-1f1ec.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f9-1f1ed.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f9-1f1ef.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f9-1f1f0.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f9-1f1f1.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f9-1f1f2.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f9-1f1f3.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f9-1f1f4.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f9-1f1f7.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f9-1f1f9.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f9-1f1fb.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f9-1f1fc.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1f9-1f1ff.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1fa-1f1e6.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1fa-1f1ec.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1fa-1f1f2.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1fa-1f1f3.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1fa-1f1f8.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1fa-1f1fe.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1fa-1f1ff.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1fb-1f1e6.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1fb-1f1e8.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1fb-1f1ea.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1fb-1f1ec.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1fb-1f1ee.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1fb-1f1f3.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1fb-1f1fa.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1fc-1f1eb.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1fc-1f1f8.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1fd-1f1f0.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1fe-1f1ea.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1fe-1f1f9.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ff-1f1e6.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ff-1f1f2.svg
- + browser/components/torcircuit/content/tor-circuit-flags/1f1ff-1f1fc.svg
- + browser/components/torcircuit/content/tor-circuit-flags/README.txt
- + browser/components/torcircuit/content/tor-circuit-icon-mask.svg
- + browser/components/torcircuit/content/tor-circuit-node-end.svg
- + browser/components/torcircuit/content/tor-circuit-node-middle.svg
- + browser/components/torcircuit/content/tor-circuit-node-relays.svg
- + browser/components/torcircuit/content/tor-circuit-node-start.svg
- + browser/components/torcircuit/content/tor-circuit-redirect.svg
- + browser/components/torcircuit/content/torCircuitPanel.css
- + browser/components/torcircuit/content/torCircuitPanel.inc.xhtml
- + browser/components/torcircuit/content/torCircuitPanel.js
- + browser/components/torcircuit/jar.mn
- + browser/components/torcircuit/moz.build
- + browser/components/torpreferences/content/bridge-bot.svg
- + browser/components/torpreferences/content/bridge-qr.svg
- + browser/components/torpreferences/content/bridge.svg
- + browser/components/torpreferences/content/bridgeQrDialog.js
- + browser/components/torpreferences/content/bridgeQrDialog.xhtml
- + browser/components/torpreferences/content/bridgemoji/BridgeEmoji.js
- + browser/components/torpreferences/content/bridgemoji/annotations.json
- + browser/components/torpreferences/content/bridgemoji/bridge-emojis.json
- + browser/components/torpreferences/content/bridgemoji/svgs/1f300.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f308.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f30a.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f30b.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f319.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f31f.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f321.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f32d.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f32e.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f332.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f333.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f334.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f335.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f336.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f337.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f339.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f33a.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f33b.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f33d.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f33f.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f341.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f344.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f345.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f346.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f347.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f348.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f349.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f34a.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f34b.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f34c.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f34d.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f34f.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f350.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f351.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f352.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f353.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f354.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f355.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f368.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f369.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f36a.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f36b.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f36c.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f36d.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f37f.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f380.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f381.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f382.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f383.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f388.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f389.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f38f.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f392.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f399.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f39f.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f3a0.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f3a1.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f3a2.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f3a8.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f3ac.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f3af.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f3b2.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f3b6.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f3b7.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f3b8.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f3ba.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f3bb.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f3be.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f3c0.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f3c6.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f3c8.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f3d3.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f3d4.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f3d5.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f3dd.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f3e1.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f3ee.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f3f7.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f3f8.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f3f9.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f40a.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f40c.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f40d.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f417.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f418.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f419.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f41a.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f41b.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f41d.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f41e.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f41f.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f420.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f422.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f425.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f426.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f428.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f42a.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f42c.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f42d.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f42e.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f42f.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f430.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f431.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f432.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f433.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f434.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f435.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f436.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f437.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f43a.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f43b.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f43f.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f441.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f451.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f455.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f457.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f45f.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f47d.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f484.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f488.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f48d.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f48e.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f490.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f4a1.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f4a7.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f4b3.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f4bf.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f4cc.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f4ce.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f4d5.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f4e1.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f4e2.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f4fb.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f50b.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f511.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f525.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f526.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f52c.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f52d.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f52e.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f54a.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f58c.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f58d.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f5ff.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f680.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f681.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f686.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f68b.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f68d.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f695.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f697.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f69a.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f69c.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f6a0.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f6a2.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f6a4.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f6f0.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f6f4.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f6f5.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f6f6.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f6f8.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f6f9.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f6fa.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f6fc.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f916.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f93f.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f941.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f94c.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f94f.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f950.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f951.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f955.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f956.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f95c.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f95d.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f95e.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f965.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f966.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f968.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f96c.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f96d.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f96f.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f980.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f981.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f984.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f986.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f987.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f988.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f989.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f98a.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f98b.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f98c.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f98e.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f98f.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f992.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f993.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f994.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f995.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f998.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f999.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f99a.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f99c.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f99d.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f99e.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f9a3.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f9a4.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f9a5.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f9a6.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f9a7.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f9a9.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f9ad.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f9c1.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f9c3.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f9c5.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f9c7.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f9c9.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f9d9.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f9da.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f9dc.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f9e0.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f9e2.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f9e6.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f9e9.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f9ea.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f9ec.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f9ed.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f9ee.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f9f2.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f9f5.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1f9f9.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1fa73.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1fa80.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1fa81.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1fa83.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1fa90.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1fa91.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1fa95.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1fa97.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1fab6.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1fad0.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1fad2.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/1fad6.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/23f0.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/2600.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/2602.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/2604.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/260e.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/2693.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/2696.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/26bd.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/26f2.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/26f5.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/2708.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/270f.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/2728.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/2744.svg
- + browser/components/torpreferences/content/bridgemoji/svgs/README.txt
- + browser/components/torpreferences/content/builtinBridgeDialog.js
- + browser/components/torpreferences/content/builtinBridgeDialog.xhtml
- + browser/components/torpreferences/content/connectionCategory.inc.xhtml
- + browser/components/torpreferences/content/connectionPane.js
- + browser/components/torpreferences/content/connectionPane.xhtml
- + browser/components/torpreferences/content/connectionSettingsDialog.js
- + browser/components/torpreferences/content/connectionSettingsDialog.xhtml
- + browser/components/torpreferences/content/lox-bridge-icon.svg
- + browser/components/torpreferences/content/lox-bridge-pass.svg
- + browser/components/torpreferences/content/lox-complete-ring.svg
- + browser/components/torpreferences/content/lox-invite-icon.svg
- + browser/components/torpreferences/content/lox-progress-ring.svg
- + browser/components/torpreferences/content/lox-success.svg
- + browser/components/torpreferences/content/loxInviteDialog.js
- + browser/components/torpreferences/content/loxInviteDialog.xhtml
- + browser/components/torpreferences/content/mail.svg
- + browser/components/torpreferences/content/network-broken.svg
- + browser/components/torpreferences/content/network.svg
- + browser/components/torpreferences/content/provideBridgeDialog.js
- + browser/components/torpreferences/content/provideBridgeDialog.xhtml
- + browser/components/torpreferences/content/requestBridgeDialog.js
- + browser/components/torpreferences/content/requestBridgeDialog.xhtml
- + browser/components/torpreferences/content/telegram-logo.svg
- + browser/components/torpreferences/content/torLogDialog.js
- + browser/components/torpreferences/content/torLogDialog.xhtml
- + browser/components/torpreferences/content/torPreferences.css
- + browser/components/torpreferences/jar.mn
- + browser/components/torpreferences/moz.build
- browser/components/urlbar/UrlbarProvidersManager.sys.mjs
- browser/components/urlbar/UrlbarUtils.sys.mjs
- browser/components/urlbar/moz.build
- + browser/config/mozconfigs/base-browser
- + browser/config/mozconfigs/base-browser-android
- + browser/config/mozconfigs/tor-browser
- + browser/config/mozconfigs/tor-browser-android
- browser/extensions/moz.build
- + browser/fonts/fonts.conf
- browser/fonts/moz.build
- browser/installer/Makefile.in
- browser/installer/package-manifest.in
- browser/installer/windows/nsis/shared.nsh
- − browser/locales/en-US/chrome/overrides/appstrings.properties
- browser/locales/jar.mn
- browser/locales/l10n.toml
- browser/modules/BrowserWindowTracker.sys.mjs
- browser/modules/HomePage.sys.mjs
- browser/modules/LaterRun.sys.mjs
- + browser/modules/SecurityLevelRestartNotification.sys.mjs
- + browser/modules/TorSettingsNotification.sys.mjs
- + browser/modules/TorUIUtils.sys.mjs
- browser/modules/URILoadingHelper.sys.mjs
- browser/modules/moz.build
- browser/moz.build
- browser/moz.configure
- browser/themes/shared/addons/unified-extensions.css
- browser/themes/shared/browser-shared.css
- browser/themes/shared/controlcenter/panel.css
- browser/themes/shared/downloads/contentAreaDownloadsView.css
- + browser/themes/shared/icons/new_circuit.svg
- + browser/themes/shared/icons/new_identity.svg
- browser/themes/shared/identity-block/identity-block.css
- browser/themes/shared/jar.inc.mn
- browser/themes/shared/notification-icons.css
- browser/themes/shared/preferences/preferences.css
- browser/themes/shared/tabbrowser/content-area.css
- browser/themes/shared/tabbrowser/tabs.css
- browser/themes/shared/toolbarbutton-icons.css
- + browser/themes/shared/tor-branding.css
- + browser/themes/shared/tor-urlbar-button.css
- build.gradle
- build/application.ini.in
- build/moz.build
- build/moz.configure/init.configure
- build/moz.configure/rust.configure
- build/moz.configure/update-programs.configure
- build/moz.configure/windows.configure
- build/variables.py
- caps/nsScriptSecurityManager.cpp
- config/createprecomplete.py
- devtools/client/aboutdebugging/src/actions/runtimes.js
- devtools/client/netmonitor/src/components/SecurityState.js
- devtools/client/themes/images/aboutdebugging-firefox-logo.svg
- docshell/base/URIFixup.sys.mjs
- docshell/base/nsAboutRedirector.cpp
- docshell/base/nsDocShell.cpp
- docshell/build/components.conf
- dom/base/ContentAreaDropListener.sys.mjs
- dom/base/Document.cpp
- dom/base/Document.h
- dom/base/nsContentUtils.cpp
- dom/base/nsContentUtils.h
- dom/base/nsCopySupport.cpp
- dom/base/nsGlobalWindowOuter.cpp
- dom/canvas/ClientWebGLContext.cpp
- dom/ipc/BrowserParent.cpp
- dom/ipc/BrowserParent.h
- dom/ipc/PBrowser.ipdl
- dom/ipc/WindowGlobalActor.cpp
- dom/ipc/WindowGlobalChild.cpp
- dom/media/systemservices/video_engine/desktop_device_info.cc
- dom/media/webrtc/libwebrtcglue/VideoConduit.cpp
- dom/media/webrtc/sdp/RsdparsaSdpAttributeList.cpp
- dom/media/webrtc/transport/nrinterfaceprioritizer.cpp
- dom/media/webrtc/transport/sigslot.h
- dom/media/webrtc/transport/test/ice_unittest.cpp
- dom/media/webrtc/transport/third_party/nICEr/src/net/local_addr.c
- dom/media/webrtc/transport/third_party/nICEr/src/net/local_addr.h
- dom/media/webrtc/transport/third_party/nICEr/src/stun/addrs-netlink.c
- dom/media/webrtc/transport/third_party/nICEr/src/stun/addrs-win32.c
- dom/media/webrtc/transport/third_party/nICEr/src/stun/addrs.c
- dom/media/webrtc/transport/third_party/nrappkit/src/log/r_log.c
- dom/media/webrtc/transport/third_party/nrappkit/src/registry/registry.c
- dom/security/nsContentSecurityUtils.cpp
- dom/security/nsMixedContentBlocker.cpp
- dom/webidl/Document.webidl
- dom/websocket/WebSocket.cpp
- eslint-file-globals.config.mjs
- eslint-ignores.config.mjs
- extensions/auth/nsHttpNegotiateAuth.cpp
- gfx/thebes/StandardFonts-linux.inc → gfx/thebes/StandardFonts-linux-upstream.inc
- + gfx/thebes/StandardFonts-macos-bb.inc
- gfx/thebes/StandardFonts-macos.inc → gfx/thebes/StandardFonts-macos-upstream.inc
- + gfx/thebes/StandardFonts-win10-bb.inc
- gfx/thebes/StandardFonts-win10.inc → gfx/thebes/StandardFonts-win10-upstream.inc
- gfx/thebes/gfxDWriteFontList.cpp
- gfx/thebes/gfxDWriteFontList.h
- gfx/thebes/gfxFcPlatformFontList.cpp
- gfx/thebes/gfxGDIFontList.cpp
- gfx/thebes/gfxMacPlatformFontList.mm
- gfx/thebes/gfxPlatformFontList.cpp
- intl/l10n/Localization.h
- intl/locale/LocaleService.cpp
- js/xpconnect/src/xpc.msg
- layout/base/nsLayoutUtils.cpp
- mobile/android/android-components/components/browser/engine-gecko/build.gradle
- mobile/android/android-components/components/browser/engine-gecko/src/main/java/mozilla/components/browser/engine/gecko/GeckoEngine.kt
- mobile/android/android-components/components/browser/engine-gecko/src/main/java/mozilla/components/browser/engine/gecko/GeckoEngineSession.kt
- mobile/android/android-components/components/browser/engine-gecko/src/main/java/mozilla/components/browser/engine/gecko/cookiebanners/GeckoCookieBannersStorage.kt
- mobile/android/android-components/components/browser/engine-gecko/src/main/java/mozilla/components/browser/engine/gecko/cookiebanners/ReportSiteDomainsRepository.kt
- mobile/android/android-components/components/browser/engine-gecko/src/main/java/mozilla/components/browser/engine/gecko/fetch/GeckoViewFetchClient.kt
- mobile/android/android-components/components/browser/engine-gecko/src/main/java/mozilla/components/browser/engine/gecko/webextension/GeckoWebExtension.kt
- mobile/android/android-components/components/browser/engine-gecko/src/test/java/mozilla/components/browser/engine/gecko/cookiebanners/GeckoCookieBannersStorageTest.kt
- mobile/android/android-components/components/browser/engine-gecko/src/test/java/mozilla/components/browser/engine/gecko/cookiebanners/ReportSiteDomainsRepositoryTest.kt
- mobile/android/android-components/components/browser/icons/src/main/java/mozilla/components/browser/icons/loader/HttpIconLoader.kt
- mobile/android/android-components/components/browser/menu/src/main/java/mozilla/components/browser/menu/WebExtensionBrowserMenuBuilder.kt
- mobile/android/android-components/components/browser/storage-sync/src/main/java/mozilla/components/browser/storage/sync/RemoteTabsStorage.kt
- mobile/android/android-components/components/browser/thumbnails/src/main/java/mozilla/components/browser/thumbnails/utils/ThumbnailDiskCache.kt
- mobile/android/android-components/components/browser/toolbar/src/main/java/mozilla/components/browser/toolbar/display/DisplayToolbar.kt
- mobile/android/android-components/components/browser/toolbar/src/main/java/mozilla/components/browser/toolbar/display/SiteInfoIconView.kt
- mobile/android/android-components/components/browser/toolbar/src/main/res/drawable/mozac_ic_site_info.xml
- mobile/android/android-components/components/browser/toolbar/src/main/res/values/attrs_browser_toolbar.xml
- mobile/android/android-components/components/concept/engine/src/main/java/mozilla/components/concept/engine/EngineSession.kt
- mobile/android/android-components/components/concept/engine/src/main/java/mozilla/components/concept/engine/Settings.kt
- mobile/android/android-components/components/concept/engine/src/main/java/mozilla/components/concept/engine/cookiehandling/CookieBannersStorage.kt
- mobile/android/android-components/components/concept/engine/src/main/java/mozilla/components/concept/engine/webextension/WebExtension.kt
- mobile/android/android-components/components/concept/engine/src/test/java/mozilla/components/concept/engine/SettingsTest.kt
- mobile/android/android-components/components/concept/fetch/src/main/java/mozilla/components/concept/fetch/Request.kt
- mobile/android/android-components/components/concept/sync/src/main/java/mozilla/components/concept/sync/AccountEvent.kt
- mobile/android/android-components/components/concept/toolbar/src/main/java/mozilla/components/concept/toolbar/Toolbar.kt
- mobile/android/android-components/components/feature/accounts/build.gradle
- mobile/android/android-components/components/feature/addons/src/main/java/mozilla/components/feature/addons/AddonManager.kt
- mobile/android/android-components/components/feature/addons/src/main/java/mozilla/components/feature/addons/amo/AMOAddonsProvider.kt
- mobile/android/android-components/components/feature/app-links/build.gradle
- mobile/android/android-components/components/feature/app-links/src/main/java/mozilla/components/feature/app/links/AppLinksFeature.kt
- mobile/android/android-components/components/feature/app-links/src/main/java/mozilla/components/feature/app/links/AppLinksUseCases.kt
- mobile/android/android-components/components/feature/awesomebar/src/main/java/mozilla/components/feature/awesomebar/provider/SessionAutocompleteProvider.kt
- mobile/android/android-components/components/feature/awesomebar/src/main/java/mozilla/components/feature/awesomebar/provider/SessionSuggestionProvider.kt
- mobile/android/android-components/components/feature/contextmenu/src/main/java/mozilla/components/feature/contextmenu/ContextMenuCandidate.kt
- mobile/android/android-components/components/feature/downloads/src/main/java/mozilla/components/feature/downloads/AbstractFetchDownloadService.kt
- mobile/android/android-components/components/feature/downloads/src/main/java/mozilla/components/feature/downloads/DownloadsFeature.kt
- mobile/android/android-components/components/feature/downloads/src/test/java/mozilla/components/feature/downloads/DownloadsFeatureTest.kt
- mobile/android/android-components/components/feature/fxsuggest/build.gradle
- mobile/android/android-components/components/feature/privatemode/src/main/java/mozilla/components/feature/privatemode/notification/PrivateNotificationFeature.kt
- mobile/android/android-components/components/feature/search/build.gradle
- mobile/android/android-components/components/feature/search/src/main/assets/search/list.json
- + mobile/android/android-components/components/feature/search/src/main/assets/searchplugins/ddg-onion.xml
- mobile/android/android-components/components/feature/search/src/main/assets/searchplugins/ddg.xml
- + mobile/android/android-components/components/feature/search/src/main/assets/searchplugins/startpage-onion.xml
- + mobile/android/android-components/components/feature/search/src/main/assets/searchplugins/startpage.xml
- mobile/android/android-components/components/feature/search/src/main/java/mozilla/components/feature/search/SearchUseCases.kt
- mobile/android/android-components/components/feature/search/src/main/java/mozilla/components/feature/search/ext/SearchEngine.kt
- mobile/android/android-components/components/feature/search/src/main/java/mozilla/components/feature/search/internal/SearchUrlBuilder.kt
- mobile/android/android-components/components/feature/search/src/main/java/mozilla/components/feature/search/storage/SearchEngineReader.kt
- mobile/android/android-components/components/feature/search/src/main/java/mozilla/components/feature/search/telemetry/SerpTelemetryRepository.kt
- mobile/android/android-components/components/feature/search/src/test/java/mozilla/components/feature/search/telemetry/BaseSearchTelemetryTest.kt
- mobile/android/android-components/components/feature/search/src/test/java/mozilla/components/feature/search/telemetry/SerpTelemetryRepositoryTest.kt
- mobile/android/android-components/components/feature/toolbar/src/main/java/mozilla/components/feature/toolbar/ToolbarPresenter.kt
- mobile/android/android-components/components/service/firefox-accounts/src/main/java/mozilla/components/service/fxa/FxaDeviceConstellation.kt
- mobile/android/android-components/components/service/firefox-accounts/src/main/java/mozilla/components/service/fxa/Types.kt
- mobile/android/android-components/components/service/firefox-accounts/src/main/java/mozilla/components/service/fxa/sync/WorkManagerSyncManager.kt
- mobile/android/android-components/components/service/nimbus/build.gradle
- mobile/android/android-components/components/service/sync-logins/src/main/java/mozilla/components/service/sync/logins/SyncableLoginsStorage.kt
- mobile/android/android-components/components/support/ktx/src/main/java/mozilla/components/support/ktx/android/content/Context.kt
- mobile/android/android-components/components/support/ktx/src/main/java/mozilla/components/support/ktx/kotlin/String.kt
- mobile/android/android-components/components/support/remotesettings/src/main/java/mozilla/components/support/remotesettings/RemoteSettingsClient.kt
- mobile/android/android-components/components/support/rustlog/src/main/java/mozilla/components/support/rustlog/RustLog.kt
- + mobile/android/android-components/components/support/utils/src/main/java/mozilla/components/support/utils/TorUtils.kt
- mobile/android/android-components/components/support/webextensions/src/main/java/mozilla/components/support/webextensions/WebExtensionSupport.kt
- + mobile/android/android-components/components/ui/icons/src/main/res/drawable/mozac_ic_onion.xml
- mobile/android/android-components/plugins/config/src/main/java/ConfigPlugin.kt
- mobile/android/android-components/plugins/dependencies/src/main/java/ApplicationServices.kt
- mobile/android/android-components/samples/browser/src/main/res/layout/activity_installed_add_on_details.xml
- + mobile/android/app/000-tor-browser-android.js
- mobile/android/app/geckoview-prefs.js
- mobile/android/app/moz.build
- + mobile/android/basebrowser.configure
- + mobile/android/branding/tb-alpha/configure.sh
- + mobile/android/branding/tb-alpha/content/favicon32.png
- + mobile/android/branding/tb-alpha/content/favicon64.png
- + mobile/android/branding/tb-alpha/content/jar.mn
- + mobile/android/branding/tb-alpha/content/moz.build
- + mobile/android/branding/tb-alpha/locales/en-US/brand.ftl
- + mobile/android/branding/tb-alpha/locales/en-US/brand.properties
- + mobile/android/branding/tb-alpha/locales/jar.mn
- + mobile/android/branding/tb-alpha/locales/moz.build
- + mobile/android/branding/tb-alpha/moz.build
- + mobile/android/branding/tb-nightly/configure.sh
- + mobile/android/branding/tb-nightly/content/favicon32.png
- + mobile/android/branding/tb-nightly/content/favicon64.png
- + mobile/android/branding/tb-nightly/content/jar.mn
- + mobile/android/branding/tb-nightly/content/moz.build
- + mobile/android/branding/tb-nightly/locales/en-US/brand.ftl
- + mobile/android/branding/tb-nightly/locales/en-US/brand.properties
- + mobile/android/branding/tb-nightly/locales/jar.mn
- + mobile/android/branding/tb-nightly/locales/moz.build
- + mobile/android/branding/tb-nightly/moz.build
- + mobile/android/branding/tb-release/configure.sh
- + mobile/android/branding/tb-release/content/favicon32.png
- + mobile/android/branding/tb-release/content/favicon64.png
- + mobile/android/branding/tb-release/content/jar.mn
- + mobile/android/branding/tb-release/content/moz.build
- + mobile/android/branding/tb-release/locales/en-US/brand.ftl
- + mobile/android/branding/tb-release/locales/en-US/brand.properties
- + mobile/android/branding/tb-release/locales/jar.mn
- + mobile/android/branding/tb-release/locales/moz.build
- + mobile/android/branding/tb-release/moz.build
- mobile/android/exoplayer2/src/main/java/org/mozilla/thirdparty/com/google/android/exoplayer2/upstream/DefaultHttpDataSource.java
- mobile/android/fenix/.buildconfig.yml
- mobile/android/fenix/app/build.gradle
- mobile/android/fenix/app/lint-baseline.xml
- mobile/android/fenix/app/nimbus.fml.yaml
- mobile/android/fenix/app/onboarding.fml.yaml
- mobile/android/fenix/app/proguard-rules.pro
- + mobile/android/fenix/app/src/androidTest/java/org/mozilla/fenix/AppStartupTest.kt
- mobile/android/fenix/app/src/androidTest/java/org/mozilla/fenix/onboarding/view/OnboardingMapperTest.kt
- mobile/android/fenix/app/src/androidTest/java/org/mozilla/fenix/ui/robots/BrowserRobot.kt
- mobile/android/fenix/app/src/androidTest/java/org/mozilla/fenix/ui/robots/SettingsSubMenuAboutRobot.kt
- + mobile/android/fenix/app/src/beta/ic_launcher-playstore.png
- + mobile/android/fenix/app/src/beta/res/drawable-hdpi/fenix_search_widget.png
- − mobile/android/fenix/app/src/beta/res/drawable-hdpi/fenix_search_widget.webp
- − mobile/android/fenix/app/src/beta/res/drawable/animated_splash_screen.xml
- + mobile/android/fenix/app/src/beta/res/drawable/ic_launcher_background.xml
- + mobile/android/fenix/app/src/beta/res/drawable/ic_launcher_monochrome_foreground.xml
- mobile/android/fenix/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml → mobile/android/fenix/app/src/beta/res/mipmap-anydpi-v26/ic_launcher.xml
- + mobile/android/fenix/app/src/beta/res/mipmap-anydpi-v26/ic_launcher_monochrome.xml
- + mobile/android/fenix/app/src/beta/res/mipmap-anydpi-v26/ic_launcher_monochrome_round.xml
- + mobile/android/fenix/app/src/beta/res/mipmap-anydpi-v26/ic_launcher_round.xml
- mobile/android/fenix/app/src/beta/res/mipmap-hdpi/ic_launcher.webp
- + mobile/android/fenix/app/src/beta/res/mipmap-hdpi/ic_launcher_foreground.webp
- + mobile/android/fenix/app/src/beta/res/mipmap-hdpi/ic_launcher_monochrome.webp
- + mobile/android/fenix/app/src/beta/res/mipmap-hdpi/ic_launcher_monochrome_round.webp
- mobile/android/fenix/app/src/beta/res/mipmap-hdpi/ic_launcher_round.webp
- mobile/android/fenix/app/src/beta/res/mipmap-mdpi/ic_launcher.webp
- + mobile/android/fenix/app/src/beta/res/mipmap-mdpi/ic_launcher_foreground.webp
- + mobile/android/fenix/app/src/beta/res/mipmap-mdpi/ic_launcher_monochrome.webp
- + mobile/android/fenix/app/src/beta/res/mipmap-mdpi/ic_launcher_monochrome_round.webp
- mobile/android/fenix/app/src/beta/res/mipmap-mdpi/ic_launcher_round.webp
- mobile/android/fenix/app/src/beta/res/mipmap-xhdpi/ic_launcher.webp
- + mobile/android/fenix/app/src/beta/res/mipmap-xhdpi/ic_launcher_foreground.webp
- + mobile/android/fenix/app/src/beta/res/mipmap-xhdpi/ic_launcher_monochrome.webp
- + mobile/android/fenix/app/src/beta/res/mipmap-xhdpi/ic_launcher_monochrome_round.webp
- mobile/android/fenix/app/src/beta/res/mipmap-xhdpi/ic_launcher_round.webp
- mobile/android/fenix/app/src/beta/res/mipmap-xxhdpi/ic_launcher.webp
- + mobile/android/fenix/app/src/beta/res/mipmap-xxhdpi/ic_launcher_foreground.webp
- + mobile/android/fenix/app/src/beta/res/mipmap-xxhdpi/ic_launcher_monochrome.webp
- + mobile/android/fenix/app/src/beta/res/mipmap-xxhdpi/ic_launcher_monochrome_round.webp
- mobile/android/fenix/app/src/beta/res/mipmap-xxhdpi/ic_launcher_round.webp
- mobile/android/fenix/app/src/beta/res/mipmap-xxxhdpi/ic_launcher.webp
- + mobile/android/fenix/app/src/beta/res/mipmap-xxxhdpi/ic_launcher_foreground.webp
- + mobile/android/fenix/app/src/beta/res/mipmap-xxxhdpi/ic_launcher_monochrome.webp
- + mobile/android/fenix/app/src/beta/res/mipmap-xxxhdpi/ic_launcher_monochrome_round.webp
- mobile/android/fenix/app/src/beta/res/mipmap-xxxhdpi/ic_launcher_round.webp
- + mobile/android/fenix/app/src/beta/res/values/ic_launcher_monochrome_background.xml
- mobile/android/fenix/app/src/beta/res/values/static_strings.xml
- mobile/android/fenix/app/src/beta/res/xml/shortcuts.xml
- − mobile/android/fenix/app/src/debug/ic_launcher-web.webp
- + mobile/android/fenix/app/src/debug/res/drawable-hdpi/fenix_search_widget.png
- − mobile/android/fenix/app/src/debug/res/drawable/animated_splash_screen.xml
- + mobile/android/fenix/app/src/debug/res/drawable/ic_launcher_background.xml
- + mobile/android/fenix/app/src/debug/res/drawable/ic_launcher_monochrome_foreground.xml
- mobile/android/fenix/app/src/debug/res/mipmap-anydpi-v26/ic_launcher.xml
- + mobile/android/fenix/app/src/debug/res/mipmap-anydpi-v26/ic_launcher_monochrome.xml
- + mobile/android/fenix/app/src/debug/res/mipmap-anydpi-v26/ic_launcher_monochrome_round.xml
- mobile/android/fenix/app/src/debug/res/mipmap-anydpi-v26/ic_launcher_round.xml
- mobile/android/fenix/app/src/debug/res/mipmap-hdpi/ic_launcher.webp
- mobile/android/fenix/app/src/debug/res/mipmap-hdpi/ic_launcher_foreground.webp
- + mobile/android/fenix/app/src/debug/res/mipmap-hdpi/ic_launcher_monochrome.webp
- + mobile/android/fenix/app/src/debug/res/mipmap-hdpi/ic_launcher_monochrome_round.webp
- mobile/android/fenix/app/src/debug/res/mipmap-hdpi/ic_launcher_round.webp
- mobile/android/fenix/app/src/debug/res/mipmap-mdpi/ic_launcher.webp
- mobile/android/fenix/app/src/debug/res/mipmap-mdpi/ic_launcher_foreground.webp
- + mobile/android/fenix/app/src/debug/res/mipmap-mdpi/ic_launcher_monochrome.webp
- + mobile/android/fenix/app/src/debug/res/mipmap-mdpi/ic_launcher_monochrome_round.webp
- mobile/android/fenix/app/src/debug/res/mipmap-mdpi/ic_launcher_round.webp
- mobile/android/fenix/app/src/debug/res/mipmap-xhdpi/ic_launcher.webp
- mobile/android/fenix/app/src/debug/res/mipmap-xhdpi/ic_launcher_foreground.webp
- + mobile/android/fenix/app/src/debug/res/mipmap-xhdpi/ic_launcher_monochrome.webp
- + mobile/android/fenix/app/src/debug/res/mipmap-xhdpi/ic_launcher_monochrome_round.webp
- mobile/android/fenix/app/src/debug/res/mipmap-xhdpi/ic_launcher_round.webp
- mobile/android/fenix/app/src/debug/res/mipmap-xxhdpi/ic_launcher.webp
- mobile/android/fenix/app/src/debug/res/mipmap-xxhdpi/ic_launcher_foreground.webp
- + mobile/android/fenix/app/src/debug/res/mipmap-xxhdpi/ic_launcher_monochrome.webp
- + mobile/android/fenix/app/src/debug/res/mipmap-xxhdpi/ic_launcher_monochrome_round.webp
- mobile/android/fenix/app/src/debug/res/mipmap-xxhdpi/ic_launcher_round.webp
- mobile/android/fenix/app/src/debug/res/mipmap-xxxhdpi/ic_launcher.webp
- mobile/android/fenix/app/src/debug/res/mipmap-xxxhdpi/ic_launcher_foreground.webp
- + mobile/android/fenix/app/src/debug/res/mipmap-xxxhdpi/ic_launcher_monochrome.webp
- + mobile/android/fenix/app/src/debug/res/mipmap-xxxhdpi/ic_launcher_monochrome_round.webp
- mobile/android/fenix/app/src/debug/res/mipmap-xxxhdpi/ic_launcher_round.webp
- mobile/android/fenix/app/src/debug/res/values/colors.xml
- + mobile/android/fenix/app/src/debug/res/values/ic_launcher_monochrome_background.xml
- mobile/android/fenix/app/src/debug/res/xml/shortcuts.xml
- mobile/android/fenix/app/src/main/AndroidManifest.xml
- + mobile/android/fenix/app/src/main/assets/common/torrc-defaults
- − mobile/android/fenix/app/src/main/assets/searchplugins/reddit.xml
- − mobile/android/fenix/app/src/main/assets/searchplugins/youtube.xml
- − mobile/android/fenix/app/src/main/ic_launcher-web.webp
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/BrowserDirection.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/FenixApplication.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/HomeActivity.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/IntentReceiverActivity.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/addons/InstalledAddonDetailsFragment.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/browser/OpenInAppOnboardingObserver.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/Analytics.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/Components.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/Core.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/NotificationManager.kt
- + mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/TorBrowserFeatures.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/UseCases.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/appstate/setup/checklist/ChecklistItem.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/menu/middleware/MenuNavigationMiddleware.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/metrics/AdjustMetricsService.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/metrics/GleanMetricsService.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/metrics/MetricController.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/metrics/MetricsUtils.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserMenuSignIn.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarCFRPresenter.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarMenuController.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/toolbar/DefaultToolbarMenu.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/toolbar/ToolbarMenu.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/compose/snackbar/Snackbar.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/customtabs/CustomTabToolbarMenu.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/customtabs/PoweredByNotification.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/downloads/dialog/DynamicDownloadDialog.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/experiments/view/ResearchSurfaceSurvey.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/ext/Activity.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/gecko/GeckoProvider.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/HomeMenu.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/HomeMenuView.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/intent/HomeDeepLinkIntentProcessor.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/recentsyncedtabs/view/RecentSyncedTab.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/PrivateBrowsingDescriptionViewHolder.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/topsites/PagerIndicator.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/topsites/TopSiteItemViewHolder.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/topsites/TopSites.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/ui/Homepage.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/library/bookmarks/BookmarkFragment.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/library/bookmarks/BookmarkItemMenu.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/microsurvey/ui/MicrosurveyCompleted.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/microsurvey/ui/MicrosurveyHeader.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/microsurvey/ui/MicrosurveyRequestPrompt.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/onboarding/view/MarketingDataOnboardingPage.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/onboarding/view/OnboardingPage.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/onboarding/view/OnboardingScreen.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/onboarding/view/TermsOfServiceOnboardingPage.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/onboarding/view/UpgradeOnboarding.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/search/SearchDialogFragment.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/search/awesomebar/AwesomeBarView.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/HttpsOnlyFragment.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/PhoneFeature.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/SupportUtils.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/TabsSettingsFragment.kt
- + mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/TorBridgeConfigFragment.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/about/AboutFragment.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/account/AccountUiView.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/advanced/DefaultLocaleSettingsController.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/advanced/LocaleSettingsFragment.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/logins/view/SavedLoginsListView.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/quicksettings/QuickSettingsSheetDialogFragment.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/quicksettings/protections/ProtectionsView.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/quicksettings/protections/cookiebanners/CookieBannerDetailsController.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/quicksettings/protections/cookiebanners/CookieBannerDetailsInteractor.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/quicksettings/protections/cookiebanners/CookieBannerHandlingDetailsView.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/quicksettings/protections/cookiebanners/CookieBannersStorageExt.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/search/SearchEngineFragment.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/sitepermissions/SitePermissionsManagePhoneFeatureFragment.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/sitepermissions/SiteSettingsFragment.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/share/ShareController.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/share/ShareFragment.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/shortcut/PwaOnboardingObserver.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tabstray/TabsTrayBanner.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tabstray/syncedtabs/SyncedTabsList.kt
- + mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tor/ConnectAssistUiState.kt
- + mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tor/QuickstartViewModel.kt
- + mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tor/TorBootstrapProgressViewModel.kt
- + mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tor/TorBridgeTransports.kt
- + mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tor/TorConnectionAssistFragment.kt
- + mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tor/TorConnectionAssistViewModel.kt
- + mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tor/TorController.kt
- + mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tor/TorControllerGV.kt
- + mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tor/TorLog.kt
- + mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tor/TorLogsComposeFragment.kt
- + mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tor/TorLogsViewModel.kt
- + mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tor/TorSecurityLevel.kt
- + mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tor/TorSecurityLevelFragment.kt
- + mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tor/UrlQuickLoadViewModel.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/trackingprotection/ProtectionsStore.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/utils/NotificationBase.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/utils/Settings.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/gecko/search/SearchWidgetProvider.kt
- + mobile/android/fenix/app/src/main/res/drawable-hdpi/fenix_search_widget.png
- − mobile/android/fenix/app/src/main/res/drawable-hdpi/fenix_search_widget.webp
- − mobile/android/fenix/app/src/main/res/drawable-hdpi/ic_logo_wordmark_normal.webp
- − mobile/android/fenix/app/src/main/res/drawable-hdpi/ic_logo_wordmark_private.webp
- − mobile/android/fenix/app/src/main/res/drawable-mdpi/ic_logo_wordmark_normal.webp
- − mobile/android/fenix/app/src/main/res/drawable-mdpi/ic_logo_wordmark_private.webp
- − mobile/android/fenix/app/src/main/res/drawable-night/onboarding_ctd_default_browser.xml
- mobile/android/fenix/app/src/main/res/drawable-v23/splash_screen.xml
- − mobile/android/fenix/app/src/main/res/drawable-xhdpi/ic_logo_wordmark_normal.webp
- − mobile/android/fenix/app/src/main/res/drawable-xhdpi/ic_logo_wordmark_private.webp
- − mobile/android/fenix/app/src/main/res/drawable-xxhdpi/ic_logo_wordmark_normal.webp
- − mobile/android/fenix/app/src/main/res/drawable-xxhdpi/ic_logo_wordmark_private.webp
- − mobile/android/fenix/app/src/main/res/drawable-xxxhdpi/ic_logo_wordmark_normal.webp
- − mobile/android/fenix/app/src/main/res/drawable-xxxhdpi/ic_logo_wordmark_private.webp
- − mobile/android/fenix/app/src/main/res/drawable/animated_splash_screen.xml
- + mobile/android/fenix/app/src/main/res/drawable/browser_location.xml
- + mobile/android/fenix/app/src/main/res/drawable/connect.xml
- + mobile/android/fenix/app/src/main/res/drawable/connect_broken.xml
- + mobile/android/fenix/app/src/main/res/drawable/globe_broken.xml
- − mobile/android/fenix/app/src/main/res/drawable/ic_account.xml
- − mobile/android/fenix/app/src/main/res/drawable/ic_account_warning.xml
- + mobile/android/fenix/app/src/main/res/drawable/ic_favorite.xml
- − mobile/android/fenix/app/src/main/res/drawable/ic_firefox.xml
- − mobile/android/fenix/app/src/main/res/drawable/ic_fx_accounts_avatar.xml
- − mobile/android/fenix/app/src/main/res/drawable/ic_notification_permission.xml
- − mobile/android/fenix/app/src/main/res/drawable/ic_onboarding_key_features.xml
- − mobile/android/fenix/app/src/main/res/drawable/ic_onboarding_key_features_icons_only.xml
- − mobile/android/fenix/app/src/main/res/drawable/ic_onboarding_search_widget.xml
- − mobile/android/fenix/app/src/main/res/drawable/ic_onboarding_sync.xml
- − mobile/android/fenix/app/src/main/res/drawable/ic_onboarding_welcome.xml
- + mobile/android/fenix/app/src/main/res/drawable/ic_onion_pattern.xml
- − mobile/android/fenix/app/src/main/res/drawable/ic_pocket.xml
- − mobile/android/fenix/app/src/main/res/drawable/ic_scan.xml
- + mobile/android/fenix/app/src/main/res/drawable/ic_screenshot.xml
- − mobile/android/fenix/app/src/main/res/drawable/ic_sign_in.xml
- − mobile/android/fenix/app/src/main/res/drawable/ic_signed_out.xml
- − mobile/android/fenix/app/src/main/res/drawable/ic_status_logo.xml
- − mobile/android/fenix/app/src/main/res/drawable/ic_sync_disconnected.xml
- − mobile/android/fenix/app/src/main/res/drawable/ic_synced_tabs.xml
- + mobile/android/fenix/app/src/main/res/drawable/ic_tor_config_bridge.xml
- + mobile/android/fenix/app/src/main/res/drawable/ic_tor_network_settings.xml
- − mobile/android/fenix/app/src/main/res/drawable/ic_wordmark_logo.webp
- − mobile/android/fenix/app/src/main/res/drawable/ic_wordmark_text_normal.webp
- − mobile/android/fenix/app/src/main/res/drawable/ic_wordmark_text_private.webp
- − mobile/android/fenix/app/src/main/res/drawable/microsurvey_success.xml
- + mobile/android/fenix/app/src/main/res/drawable/new_circuit.xml
- − mobile/android/fenix/app/src/main/res/drawable/onboarding_ctd_default_browser.xml
- − mobile/android/fenix/app/src/main/res/drawable/onboarding_ctd_notification.xml
- − mobile/android/fenix/app/src/main/res/drawable/onboarding_ctd_sync.xml
- mobile/android/fenix/app/src/main/res/drawable/progress_gradient.xml
- mobile/android/fenix/app/src/main/res/drawable/pager_dot.xml → mobile/android/fenix/app/src/main/res/drawable/rounded_corners.xml
- + mobile/android/fenix/app/src/main/res/drawable/tor_bootstrap_background_gradient.xml
- mobile/android/fenix/app/src/main/res/mipmap-anydpi-v26/ic_launcher_private.xml → mobile/android/fenix/app/src/main/res/drawable/tor_onboarding_donate_gradient.xml
- mobile/android/fenix/app/src/main/res/drawable-night/ic_logo_wordmark_normal.xml → mobile/android/fenix/app/src/main/res/drawable/tor_onboarding_donate_rounded_corners.xml
- mobile/android/fenix/app/src/main/res/layout/component_cookie_banner_details_panel.xml
- mobile/android/fenix/app/src/main/res/layout/fragment_about.xml
- mobile/android/fenix/app/src/main/res/layout/fragment_create_shortcut.xml
- mobile/android/fenix/app/src/main/res/layout/fragment_home.xml
- mobile/android/fenix/app/src/main/res/layout/fragment_locale_settings.xml
- + mobile/android/fenix/app/src/main/res/layout/fragment_tor_connection_assist.xml
- + mobile/android/fenix/app/src/main/res/layout/fragment_tor_security_level_preferences.xml
- mobile/android/fenix/app/src/main/res/layout/fragment_turn_on_sync.xml
- mobile/android/fenix/app/src/main/res/mipmap-anydpi-v26/ic_launcher_private_round.xml → mobile/android/fenix/app/src/main/res/layout/preference_quick_start.xml
- mobile/android/fenix/app/src/main/res/layout/quicksettings_permissions.xml
- mobile/android/fenix/app/src/main/res/layout/quicksettings_protections_panel.xml
- mobile/android/fenix/app/src/main/res/layout/search_widget_extra_small_v1.xml
- mobile/android/fenix/app/src/main/res/layout/search_widget_extra_small_v2.xml
- mobile/android/fenix/app/src/main/res/layout/search_widget_large.xml
- mobile/android/fenix/app/src/main/res/layout/search_widget_medium.xml
- mobile/android/fenix/app/src/main/res/layout/search_widget_small.xml
- mobile/android/fenix/app/src/main/res/layout/sign_in_preference.xml
- mobile/android/fenix/app/src/main/res/mipmap-anydpi-v26/ic_launcher_alternative.xml
- mobile/android/fenix/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round_alternative.xml
- − mobile/android/fenix/app/src/main/res/mipmap-hdpi/ic_launcher.webp
- − mobile/android/fenix/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
- − mobile/android/fenix/app/src/main/res/mipmap-mdpi/ic_launcher.webp
- − mobile/android/fenix/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
- − mobile/android/fenix/app/src/main/res/mipmap-xhdpi/ic_launcher.webp
- − mobile/android/fenix/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
- − mobile/android/fenix/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
- − mobile/android/fenix/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
- − mobile/android/fenix/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
- − mobile/android/fenix/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
- mobile/android/fenix/app/src/main/res/navigation/nav_graph.xml
- mobile/android/fenix/app/src/main/res/values-night-v27/styles.xml
- mobile/android/fenix/app/src/main/res/values-night/styles.xml
- mobile/android/fenix/app/src/main/res/values-v24/styles.xml
- mobile/android/fenix/app/src/main/res/values-v27/styles.xml
- mobile/android/fenix/app/src/main/res/values/attrs.xml
- mobile/android/fenix/app/src/main/res/values/colors.xml
- + mobile/android/fenix/app/src/main/res/values/ic_launcher_monochrome_background.xml
- mobile/android/fenix/app/src/main/res/values/preference_keys.xml
- mobile/android/fenix/app/src/main/res/values/static_strings.xml
- mobile/android/fenix/app/src/main/res/values/styles.xml
- + mobile/android/fenix/app/src/main/res/values/torbrowser_strings.xml
- mobile/android/fenix/app/src/main/res/xml/logins_preferences.xml
- mobile/android/fenix/app/src/main/res/xml/preferences.xml
- mobile/android/fenix/app/src/main/res/xml/private_browsing_preferences.xml
- mobile/android/fenix/app/src/main/res/xml/search_settings_preferences.xml
- mobile/android/fenix/app/src/main/res/xml/shortcuts.xml
- mobile/android/fenix/app/src/main/res/xml/site_permissions_details_exceptions_preferences.xml
- mobile/android/fenix/app/src/main/res/xml/site_permissions_preferences.xml
- mobile/android/fenix/app/src/main/res/xml/sync_problem.xml
- + mobile/android/fenix/app/src/main/res/xml/tor_bridge_config_preferences.xml
- + mobile/android/fenix/app/src/nightly/ic_launcher-playstore.png
- + mobile/android/fenix/app/src/nightly/res/drawable-hdpi/fenix_search_widget.png
- − mobile/android/fenix/app/src/nightly/res/drawable-hdpi/fenix_search_widget.webp
- − mobile/android/fenix/app/src/nightly/res/drawable-hdpi/ic_logo_wordmark_normal.webp
- − mobile/android/fenix/app/src/nightly/res/drawable-hdpi/ic_logo_wordmark_private.webp
- − mobile/android/fenix/app/src/nightly/res/drawable-mdpi/ic_logo_wordmark_normal.webp
- − mobile/android/fenix/app/src/nightly/res/drawable-mdpi/ic_logo_wordmark_private.webp
- − mobile/android/fenix/app/src/nightly/res/drawable-xhdpi/ic_logo_wordmark_normal.webp
- − mobile/android/fenix/app/src/nightly/res/drawable-xhdpi/ic_logo_wordmark_private.webp
- − mobile/android/fenix/app/src/nightly/res/drawable-xxhdpi/ic_logo_wordmark_normal.webp
- − mobile/android/fenix/app/src/nightly/res/drawable-xxhdpi/ic_logo_wordmark_private.webp
- − mobile/android/fenix/app/src/nightly/res/drawable-xxxhdpi/ic_logo_wordmark_normal.webp
- − mobile/android/fenix/app/src/nightly/res/drawable-xxxhdpi/ic_logo_wordmark_private.webp
- − mobile/android/fenix/app/src/nightly/res/drawable/animated_splash_screen.xml
- + mobile/android/fenix/app/src/nightly/res/drawable/ic_launcher_background.xml
- − mobile/android/fenix/app/src/nightly/res/drawable/ic_launcher_foreground.xml
- + mobile/android/fenix/app/src/nightly/res/drawable/ic_launcher_monochrome_foreground.xml
- − mobile/android/fenix/app/src/nightly/res/drawable/ic_wordmark_logo.webp
- − mobile/android/fenix/app/src/nightly/res/drawable/ic_wordmark_text_normal.webp
- − mobile/android/fenix/app/src/nightly/res/drawable/ic_wordmark_text_private.webp
- − mobile/android/fenix/app/src/nightly/res/ic_launcher-web.webp
- mobile/android/fenix/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml → mobile/android/fenix/app/src/nightly/res/mipmap-anydpi-v26/ic_launcher.xml
- + mobile/android/fenix/app/src/nightly/res/mipmap-anydpi-v26/ic_launcher_monochrome.xml
- + mobile/android/fenix/app/src/nightly/res/mipmap-anydpi-v26/ic_launcher_monochrome_round.xml
- + mobile/android/fenix/app/src/nightly/res/mipmap-anydpi-v26/ic_launcher_round.xml
- mobile/android/fenix/app/src/nightly/res/mipmap-hdpi/ic_launcher.webp
- + mobile/android/fenix/app/src/nightly/res/mipmap-hdpi/ic_launcher_foreground.webp
- + mobile/android/fenix/app/src/nightly/res/mipmap-hdpi/ic_launcher_monochrome.webp
- + mobile/android/fenix/app/src/nightly/res/mipmap-hdpi/ic_launcher_monochrome_round.webp
- mobile/android/fenix/app/src/nightly/res/mipmap-hdpi/ic_launcher_round.webp
- mobile/android/fenix/app/src/nightly/res/mipmap-mdpi/ic_launcher.webp
- + mobile/android/fenix/app/src/nightly/res/mipmap-mdpi/ic_launcher_foreground.webp
- + mobile/android/fenix/app/src/nightly/res/mipmap-mdpi/ic_launcher_monochrome.webp
- + mobile/android/fenix/app/src/nightly/res/mipmap-mdpi/ic_launcher_monochrome_round.webp
- mobile/android/fenix/app/src/nightly/res/mipmap-mdpi/ic_launcher_round.webp
- mobile/android/fenix/app/src/nightly/res/mipmap-xhdpi/ic_launcher.webp
- + mobile/android/fenix/app/src/nightly/res/mipmap-xhdpi/ic_launcher_foreground.webp
- + mobile/android/fenix/app/src/nightly/res/mipmap-xhdpi/ic_launcher_monochrome.webp
- + mobile/android/fenix/app/src/nightly/res/mipmap-xhdpi/ic_launcher_monochrome_round.webp
- mobile/android/fenix/app/src/nightly/res/mipmap-xhdpi/ic_launcher_round.webp
- mobile/android/fenix/app/src/nightly/res/mipmap-xxhdpi/ic_launcher.webp
- + mobile/android/fenix/app/src/nightly/res/mipmap-xxhdpi/ic_launcher_foreground.webp
- + mobile/android/fenix/app/src/nightly/res/mipmap-xxhdpi/ic_launcher_monochrome.webp
- + mobile/android/fenix/app/src/nightly/res/mipmap-xxhdpi/ic_launcher_monochrome_round.webp
- mobile/android/fenix/app/src/nightly/res/mipmap-xxhdpi/ic_launcher_round.webp
- mobile/android/fenix/app/src/nightly/res/mipmap-xxxhdpi/ic_launcher.webp
- + mobile/android/fenix/app/src/nightly/res/mipmap-xxxhdpi/ic_launcher_foreground.webp
- + mobile/android/fenix/app/src/nightly/res/mipmap-xxxhdpi/ic_launcher_monochrome.webp
- + mobile/android/fenix/app/src/nightly/res/mipmap-xxxhdpi/ic_launcher_monochrome_round.webp
- mobile/android/fenix/app/src/nightly/res/mipmap-xxxhdpi/ic_launcher_round.webp
- + mobile/android/fenix/app/src/nightly/res/values/ic_launcher_monochrome_background.xml
- mobile/android/fenix/app/src/nightly/res/values/static_strings.xml
- mobile/android/fenix/app/src/nightly/res/xml/shortcuts.xml
- + mobile/android/fenix/app/src/release/ic_launcher-playstore.png
- + mobile/android/fenix/app/src/release/res/drawable-hdpi/fenix_search_widget.png
- − mobile/android/fenix/app/src/release/res/drawable-hdpi/fenix_search_widget.webp
- − mobile/android/fenix/app/src/release/res/drawable-hdpi/ic_logo_wordmark_normal.webp
- − mobile/android/fenix/app/src/release/res/drawable-hdpi/ic_logo_wordmark_private.webp
- − mobile/android/fenix/app/src/release/res/drawable/animated_splash_screen.xml
- + mobile/android/fenix/app/src/release/res/drawable/ic_launcher_background.xml
- + mobile/android/fenix/app/src/release/res/drawable/ic_launcher_monochrome_foreground.xml
- + mobile/android/fenix/app/src/release/res/mipmap-anydpi-v26/ic_launcher.xml
- + mobile/android/fenix/app/src/release/res/mipmap-anydpi-v26/ic_launcher_monochrome.xml
- + mobile/android/fenix/app/src/release/res/mipmap-anydpi-v26/ic_launcher_monochrome_round.xml
- + mobile/android/fenix/app/src/release/res/mipmap-anydpi-v26/ic_launcher_round.xml
- mobile/android/fenix/app/src/release/res/mipmap-hdpi/ic_launcher.webp
- + mobile/android/fenix/app/src/release/res/mipmap-hdpi/ic_launcher_foreground.webp
- + mobile/android/fenix/app/src/release/res/mipmap-hdpi/ic_launcher_monochrome.webp
- + mobile/android/fenix/app/src/release/res/mipmap-hdpi/ic_launcher_monochrome_round.webp
- mobile/android/fenix/app/src/release/res/mipmap-hdpi/ic_launcher_round.webp
- mobile/android/fenix/app/src/release/res/mipmap-mdpi/ic_launcher.webp
- + mobile/android/fenix/app/src/release/res/mipmap-mdpi/ic_launcher_foreground.webp
- + mobile/android/fenix/app/src/release/res/mipmap-mdpi/ic_launcher_monochrome.webp
- + mobile/android/fenix/app/src/release/res/mipmap-mdpi/ic_launcher_monochrome_round.webp
- mobile/android/fenix/app/src/release/res/mipmap-mdpi/ic_launcher_round.webp
- mobile/android/fenix/app/src/release/res/mipmap-xhdpi/ic_launcher.webp
- + mobile/android/fenix/app/src/release/res/mipmap-xhdpi/ic_launcher_foreground.webp
- + mobile/android/fenix/app/src/release/res/mipmap-xhdpi/ic_launcher_monochrome.webp
- + mobile/android/fenix/app/src/release/res/mipmap-xhdpi/ic_launcher_monochrome_round.webp
- mobile/android/fenix/app/src/release/res/mipmap-xhdpi/ic_launcher_round.webp
- mobile/android/fenix/app/src/release/res/mipmap-xxhdpi/ic_launcher.webp
- + mobile/android/fenix/app/src/release/res/mipmap-xxhdpi/ic_launcher_foreground.webp
- + mobile/android/fenix/app/src/release/res/mipmap-xxhdpi/ic_launcher_monochrome.webp
- + mobile/android/fenix/app/src/release/res/mipmap-xxhdpi/ic_launcher_monochrome_round.webp
- mobile/android/fenix/app/src/release/res/mipmap-xxhdpi/ic_launcher_round.webp
- mobile/android/fenix/app/src/release/res/mipmap-xxxhdpi/ic_launcher.webp
- + mobile/android/fenix/app/src/release/res/mipmap-xxxhdpi/ic_launcher_foreground.webp
- + mobile/android/fenix/app/src/release/res/mipmap-xxxhdpi/ic_launcher_monochrome.webp
- + mobile/android/fenix/app/src/release/res/mipmap-xxxhdpi/ic_launcher_monochrome_round.webp
- mobile/android/fenix/app/src/release/res/mipmap-xxxhdpi/ic_launcher_round.webp
- + mobile/android/fenix/app/src/release/res/values/ic_launcher_monochrome_background.xml
- mobile/android/fenix/app/src/release/res/values/static_strings.xml
- mobile/android/fenix/app/src/release/res/xml/shortcuts.xml
- mobile/android/fenix/app/src/test/java/org/mozilla/fenix/components/menu/MenuNavigationMiddlewareTest.kt
- mobile/android/fenix/app/src/test/java/org/mozilla/fenix/components/metrics/MetricsUtilsTest.kt
- mobile/android/fenix/app/src/test/java/org/mozilla/fenix/ext/ContextTest.kt
- mobile/android/fenix/app/src/test/java/org/mozilla/fenix/home/HomeMenuViewTest.kt
- mobile/android/fenix/app/src/test/java/org/mozilla/fenix/onboarding/view/OnboardingMapperTest.kt
- mobile/android/fenix/app/src/test/java/org/mozilla/fenix/onboarding/view/OnboardingPageUiDataTest.kt
- mobile/android/fenix/app/src/test/java/org/mozilla/fenix/settings/SupportUtilsTest.kt
- mobile/android/fenix/app/src/test/java/org/mozilla/fenix/settings/quicksettings/ProtectionsViewTest.kt
- mobile/android/fenix/app/src/test/java/org/mozilla/fenix/settings/quicksettings/QuickSettingsSheetDialogFragmentTest.kt
- mobile/android/fenix/app/src/test/java/org/mozilla/fenix/settings/quicksettings/protections/cookiebanners/CookieBannerHandlingDetailsViewTest.kt
- mobile/android/fenix/app/src/test/java/org/mozilla/fenix/settings/quicksettings/protections/cookiebanners/DefaultCookieBannerDetailsControllerTest.kt
- mobile/android/fenix/app/src/test/java/org/mozilla/fenix/share/viewholders/AppViewHolderTest.kt
- mobile/android/fenix/app/src/test/java/org/mozilla/fenix/trackingprotection/ProtectionsStoreTest.kt
- mobile/android/fenix/app/src/test/java/org/mozilla/fenix/utils/SettingsTest.kt
- mobile/android/fenix/build.gradle
- + mobile/android/fenix/tools/tba-fetch-deps.sh
- + mobile/android/fenix/tools/tba-sign-devbuilds.sh
- mobile/android/geckoview/api.txt
- mobile/android/geckoview/build.gradle
- − mobile/android/geckoview/src/androidTest/java/org/mozilla/geckoview/test/VideoCaptureTest.kt
- mobile/android/geckoview/src/main/AndroidManifest.xml
- mobile/android/geckoview/src/main/java/org/mozilla/gecko/media/GeckoMediaDrmBridgeV21.java
- mobile/android/geckoview/src/main/java/org/mozilla/gecko/util/ProxySelector.java
- mobile/android/geckoview/src/main/java/org/mozilla/geckoview/CrashReporter.java
- mobile/android/geckoview/src/main/java/org/mozilla/geckoview/GeckoRuntime.java
- mobile/android/geckoview/src/main/java/org/mozilla/geckoview/GeckoRuntimeSettings.java
- mobile/android/geckoview/src/main/java/org/mozilla/geckoview/GeckoSession.java
- + mobile/android/geckoview/src/main/java/org/mozilla/geckoview/TorAndroidIntegration.java
- + mobile/android/geckoview/src/main/java/org/mozilla/geckoview/TorBootstrappingStatus.java
- + mobile/android/geckoview/src/main/java/org/mozilla/geckoview/TorConnectStage.java
- + mobile/android/geckoview/src/main/java/org/mozilla/geckoview/TorConnectStageName.java
- + mobile/android/geckoview/src/main/java/org/mozilla/geckoview/TorSettings.java
- mobile/android/geckoview/src/main/java/org/mozilla/geckoview/WebExtensionController.java
- mobile/android/geckoview/src/main/java/org/mozilla/geckoview/WebRequest.java
- + mobile/android/geckoview/src/main/java/org/mozilla/geckoview/androidlegacysettings/Prefs.java
- + mobile/android/geckoview/src/main/java/org/mozilla/geckoview/androidlegacysettings/TorLegacyAndroidSettings.java
- mobile/android/gradle/with_gecko_binaries.gradle
- mobile/android/installer/package-manifest.in
- mobile/android/locales/filter.py
- mobile/android/locales/jar.mn
- mobile/android/locales/l10n.toml
- mobile/android/moz.configure
- mobile/android/shared-settings.gradle
- mobile/locales/filter.py
- mobile/shared/chrome/geckoview/geckoview.js
- mobile/shared/components/geckoview/GeckoViewStartup.sys.mjs
- mobile/shared/modules/geckoview/GeckoViewContent.sys.mjs
- mobile/shared/modules/geckoview/GeckoViewProgress.sys.mjs
- mobile/shared/modules/geckoview/GeckoViewWebExtension.sys.mjs
- modules/libpref/Preferences.cpp
- modules/libpref/init/StaticPrefList.yaml
- modules/libpref/init/all.js
- moz.configure
- + mozconfig-android-aarch64
- + mozconfig-android-all
- + mozconfig-android-armv7
- + mozconfig-android-x86
- + mozconfig-android-x86_64
- + mozconfig-linux-aarch64
- + mozconfig-linux-aarch64-dev
- + mozconfig-linux-arm
- + mozconfig-linux-i686
- + mozconfig-linux-x86_64
- + mozconfig-linux-x86_64-asan
- + mozconfig-linux-x86_64-dev
- + mozconfig-macos
- + mozconfig-macos-dev
- + mozconfig-windows-i686
- + mozconfig-windows-x86_64
- netwerk/base/nsNetUtil.cpp
- netwerk/base/nsSocketTransport2.cpp
- netwerk/build/components.conf
- netwerk/build/nsNetCID.h
- + netwerk/dns/IOnionAliasService.idl
- + netwerk/dns/OnionAliasService.cpp
- + netwerk/dns/OnionAliasService.h
- netwerk/dns/effective_tld_names.dat
- netwerk/dns/moz.build
- netwerk/protocol/http/HttpBaseChannel.cpp
- netwerk/protocol/http/nsHttpHandler.cpp
- netwerk/protocol/http/nsHttpNTLMAuth.cpp
- netwerk/sctp/src/moz.build
- netwerk/sctp/src/netinet/sctp_cc_functions.c
- netwerk/sctp/src/netinet/sctp_indata.c
- netwerk/sctp/src/netinet/sctp_input.c
- netwerk/sctp/src/netinet/sctp_output.c
- netwerk/sctp/src/netinet/sctp_usrreq.c
- netwerk/sctp/src/netinet/sctputil.c
- netwerk/sctp/src/user_mbuf.c
- netwerk/sctp/src/user_socket.c
- netwerk/socket/nsSOCKSIOLayer.cpp
- netwerk/system/android/nsAndroidNetworkLinkService.cpp
- netwerk/system/linux/nsNetworkLinkService.cpp
- netwerk/system/mac/nsNetworkLinkService.mm
- netwerk/system/netlink/NetlinkService.cpp
- netwerk/system/win32/nsNotifyAddrListener.cpp
- netwerk/url-classifier/UrlClassifierFeatureBase.cpp
- netwerk/url-classifier/components.conf
- python/mach/mach/telemetry.py
- python/mozbuild/mozbuild/action/make_dmg.py
- python/mozbuild/mozbuild/artifacts.py
- python/mozbuild/mozbuild/mach_commands.py
- python/mozlint/mozlint/cli.py
- python/sites/mach.txt
- security/certverifier/CertVerifier.cpp
- security/manager/ssl/NSSSocketControl.cpp
- security/manager/ssl/RemoteSecuritySettings.sys.mjs
- security/manager/ssl/SSLServerCertVerification.cpp
- security/manager/ssl/SSLServerCertVerification.h
- security/manager/ssl/StaticHPKPins.h
- security/manager/ssl/nsSecureBrowserUI.cpp
- security/moz.build
- security/nss/lib/certhigh/ocsp.c
- security/nss/lib/libpkix/pkix_pl_nss/module/pkix_pl_socket.c
- security/nss/lib/mozpkix/include/pkix/Result.h
- security/nss/lib/mozpkix/include/pkix/pkixnss.h
- security/nss/lib/ssl/Makefile
- services/settings/Attachments.sys.mjs
- services/settings/IDBHelpers.sys.mjs
- services/settings/RemoteSettingsClient.sys.mjs
- services/settings/dumps/gen_last_modified.py
- services/settings/dumps/main/moz.build
- services/settings/remote-settings.sys.mjs
- services/settings/servicesSettings.manifest
- services/settings/static-dumps/main/moz.build
- + services/settings/static-dumps/main/query-stripping.json
- services/sync/components.conf
- testing/mozbase/mozinstall/mozinstall/mozinstall.py
- testing/mozbase/setup_development.py
- testing/mozharness/scripts/does_it_crash.py
- testing/specialpowers/api.js
- third_party/abseil-cpp/absl/base/internal/thread_identity.cc
- third_party/abseil-cpp/absl/base/internal/thread_identity.h
- third_party/libwebrtc/modules/audio_coding/codecs/isac/main/source/os_specific_inline.h
- third_party/libwebrtc/modules/desktop_capture/desktop_capture_types.h
- third_party/libwebrtc/modules/desktop_capture/win/desktop_capture_utils.cc
- third_party/libwebrtc/modules/desktop_capture/win/wgc_capture_session.cc
- third_party/libwebrtc/modules/desktop_capture/win/wgc_capturer_win.cc
- third_party/libwebrtc/modules/desktop_capture/win/wgc_capturer_win.h
- third_party/libwebrtc/modules/video_capture/windows/device_info_ds.h
- third_party/libwebrtc/rtc_base/platform_thread_types.cc
- third_party/libwebrtc/rtc_base/socket.h
- third_party/libwebrtc/rtc_base/system/file_wrapper.cc
- third_party/libwebrtc/rtc_base/win/create_direct3d_device.h
- third_party/sipcc/cpr_win_types.h
- third_party/sipcc/sdp_token.c
- toolkit/.eslintrc.mjs
- toolkit/actors/AboutHttpsOnlyErrorParent.sys.mjs
- + toolkit/actors/FilesFilterChild.sys.mjs
- + toolkit/actors/FilesFilterParent.sys.mjs
- toolkit/actors/NetErrorParent.sys.mjs
- toolkit/actors/moz.build
- toolkit/components/antitracking/antitracking.manifest
- toolkit/components/antitracking/components.conf
- toolkit/components/downloads/DownloadCore.sys.mjs
- toolkit/components/downloads/DownloadIntegration.sys.mjs
- toolkit/components/extensions/Extension.sys.mjs
- toolkit/components/extensions/ExtensionParent.sys.mjs
- toolkit/components/httpsonlyerror/content/errorpage.js
- + toolkit/components/lox/Lox.sys.mjs
- + toolkit/components/lox/content/lox_wasm_bg.wasm
- + toolkit/components/lox/jar.mn
- + toolkit/components/lox/lox_wasm.jsm
- + toolkit/components/lox/moz.build
- toolkit/components/moz.build
- toolkit/components/places/PlacesUtils.sys.mjs
- toolkit/components/remotebrowserutils/RemoteWebNavigation.sys.mjs
- toolkit/components/resistfingerprinting/RFPHelper.sys.mjs
- toolkit/components/resistfingerprinting/content/letterboxing.css
- toolkit/components/search/AppProvidedSearchEngine.sys.mjs
- toolkit/components/search/SearchEngine.sys.mjs
- toolkit/components/search/SearchService.sys.mjs
- + toolkit/components/search/content/duckduckgo.ico
- + toolkit/components/search/content/startpage.png
- + toolkit/components/search/content/torBrowserSearchEngineIcons.json
- + toolkit/components/search/content/torBrowserSearchEngines.json
- + toolkit/components/search/content/wikipedia.ico
- + toolkit/components/search/jar.mn
- toolkit/components/search/moz.build
- + toolkit/components/securitylevel/SecurityLevel.manifest
- + toolkit/components/securitylevel/SecurityLevel.sys.mjs
- + toolkit/components/securitylevel/components.conf
- + toolkit/components/securitylevel/moz.build
- toolkit/components/telemetry/app/TelemetrySend.sys.mjs
- toolkit/components/telemetry/moz.build
- + toolkit/components/tor-launcher/TorBootstrapRequest.sys.mjs
- + toolkit/components/tor-launcher/TorControlPort.sys.mjs
- + toolkit/components/tor-launcher/TorDomainIsolator.sys.mjs
- + toolkit/components/tor-launcher/TorLauncherUtil.sys.mjs
- + toolkit/components/tor-launcher/TorParsers.sys.mjs
- + toolkit/components/tor-launcher/TorProcess.sys.mjs
- + toolkit/components/tor-launcher/TorProcessAndroid.sys.mjs
- + toolkit/components/tor-launcher/TorProvider.sys.mjs
- + toolkit/components/tor-launcher/TorProviderBuilder.sys.mjs
- + toolkit/components/tor-launcher/TorStartupService.sys.mjs
- + toolkit/components/tor-launcher/components.conf
- + toolkit/components/tor-launcher/moz.build
- + toolkit/components/tor-launcher/tor-launcher.manifest
- + toolkit/components/torconnect/TorConnectChild.sys.mjs
- + toolkit/components/torconnect/TorConnectParent.sys.mjs
- + toolkit/components/torconnect/content/aboutTorConnect.css
- + toolkit/components/torconnect/content/aboutTorConnect.html
- + toolkit/components/torconnect/content/aboutTorConnect.js
- + toolkit/components/torconnect/content/arrow-right.svg
- + toolkit/components/torconnect/content/bridge.svg
- + toolkit/components/torconnect/content/connection-failure.svg
- + toolkit/components/torconnect/content/connection-location.svg
- + toolkit/components/torconnect/content/tor-connect-broken.svg
- + toolkit/components/torconnect/content/tor-connect.svg
- + toolkit/components/torconnect/content/tor-not-connected-to-connected-animated.svg
- + toolkit/components/torconnect/content/torConnectTitlebarStatus.css
- + toolkit/components/torconnect/content/torConnectTitlebarStatus.js
- + toolkit/components/torconnect/content/torConnectUrlbarButton.js
- + toolkit/components/torconnect/jar.mn
- + toolkit/components/torconnect/moz.build
- toolkit/components/urlformatter/URLFormatter.sys.mjs
- toolkit/components/windowwatcher/nsWindowWatcher.cpp
- toolkit/content/.eslintrc.mjs
- toolkit/content/aboutNetError.html
- toolkit/content/aboutNetError.mjs
- toolkit/content/aboutSupport.js
- toolkit/content/jar.mn
- toolkit/content/license.html
- + toolkit/content/moat_countries_dev_build.json
- + toolkit/content/pt_config.json
- toolkit/content/widgets/infobar.css
- toolkit/content/widgets/moz-message-bar/moz-message-bar.mjs
- toolkit/content/widgets/moz-support-link/moz-support-link.mjs
- toolkit/content/widgets/moz-toggle/moz-toggle.mjs
- toolkit/content/widgets/notificationbox.js
- + toolkit/locales-preview/base-browser-no-translate.ftl
- + toolkit/locales-preview/tor-browser-no-translate.ftl
- + toolkit/locales/en-US/toolkit/global/base-browser.ftl
- + toolkit/locales/en-US/toolkit/global/tor-browser.ftl
- toolkit/locales/jar.mn
- toolkit/modules/ActorManagerParent.sys.mjs
- toolkit/modules/AppConstants.sys.mjs
- + toolkit/modules/Bech32Decode.sys.mjs
- + toolkit/modules/BridgeDB.sys.mjs
- + toolkit/modules/DomainFrontedRequests.sys.mjs
- + toolkit/modules/DragDropFilter.sys.mjs
- + toolkit/modules/Moat.sys.mjs
- toolkit/modules/PopupNotifications.sys.mjs
- + toolkit/modules/QRCode.sys.mjs
- toolkit/modules/RemotePageAccessManager.sys.mjs
- + toolkit/modules/TorAndroidIntegration.sys.mjs
- + toolkit/modules/TorConnect.sys.mjs
- + toolkit/modules/TorSettings.sys.mjs
- + toolkit/modules/TorStrings.sys.mjs
- toolkit/modules/UpdateUtils.sys.mjs
- toolkit/modules/moz.build
- toolkit/moz.build
- toolkit/mozapps/extensions/AddonManager.sys.mjs
- toolkit/mozapps/extensions/components.conf
- toolkit/mozapps/extensions/content/aboutaddons.html
- toolkit/mozapps/extensions/content/aboutaddons.js
- toolkit/mozapps/extensions/internal/XPIDatabase.sys.mjs
- toolkit/mozapps/extensions/internal/XPIInstall.sys.mjs
- toolkit/mozapps/extensions/internal/XPIProvider.sys.mjs
- toolkit/mozapps/extensions/test/browser/head.js
- toolkit/mozapps/extensions/test/xpcshell/head_addons.js
- toolkit/mozapps/installer/packager.mk
- toolkit/mozapps/installer/upload-files.mk
- toolkit/mozapps/update/UpdateService.sys.mjs
- toolkit/mozapps/update/UpdateServiceStub.sys.mjs
- toolkit/mozapps/update/common/updatehelper.cpp
- toolkit/mozapps/update/updater/launchchild_osx.mm
- toolkit/mozapps/update/updater/moz.build
- toolkit/mozapps/update/updater/nightly_aurora_level3_primary.der
- toolkit/mozapps/update/updater/nightly_aurora_level3_secondary.der
- toolkit/mozapps/update/updater/release_primary.der
- toolkit/mozapps/update/updater/release_secondary.der
- toolkit/mozapps/update/updater/updater.cpp
- toolkit/themes/shared/aboutNetError.css
- toolkit/themes/shared/desktop-jar.inc.mn
- + toolkit/themes/shared/icons/onion-site.svg
- + toolkit/themes/shared/icons/onion-slash.svg
- + toolkit/themes/shared/icons/onion-warning.svg
- + toolkit/themes/shared/icons/tor-dark-loading.png
- + toolkit/themes/shared/icons/tor-dark-loading(a)2x.png
- + toolkit/themes/shared/icons/tor-light-loading.png
- + toolkit/themes/shared/icons/tor-light-loading(a)2x.png
- + toolkit/themes/shared/icons/torbrowser.png
- toolkit/themes/shared/minimal-toolkit.jar.inc.mn
- + toolkit/themes/shared/onion-pattern.css
- + toolkit/themes/shared/onion-pattern.svg
- + toolkit/themes/shared/tor-colors.css
- + toolkit/torbutton/chrome/locale/en-US/onionLocation.properties
- + toolkit/torbutton/chrome/locale/en-US/settings.properties
- + toolkit/torbutton/chrome/locale/en-US/torConnect.properties
- + toolkit/torbutton/chrome/locale/en-US/torlauncher.properties
- + toolkit/torbutton/jar.mn
- + toolkit/torbutton/moz.build
- toolkit/xre/LauncherRegistryInfo.cpp
- toolkit/xre/MacLaunchHelper.h
- toolkit/xre/MacLaunchHelper.mm
- toolkit/xre/MacRunFromDmgUtils.mm
- toolkit/xre/ProfileReset.cpp
- toolkit/xre/dllservices/mozglue/WindowsDllBlocklist.cpp
- toolkit/xre/nsAppRunner.cpp
- toolkit/xre/nsIXREDirProvider.idl
- toolkit/xre/nsUpdateDriver.cpp
- toolkit/xre/nsXREDirProvider.cpp
- toolkit/xre/nsXREDirProvider.h
- + tools/base-browser/git-rebase-fixup-preprocessor
- + tools/base-browser/l10n/combine-translation-versions.py
- + tools/base-browser/l10n/combine/__init__.py
- + tools/base-browser/l10n/combine/combine.py
- + tools/base-browser/l10n/combine/tests/README
- + tools/base-browser/l10n/combine/tests/__init__.py
- + tools/base-browser/l10n/combine/tests/test_android.py
- + tools/base-browser/l10n/combine/tests/test_dtd.py
- + tools/base-browser/l10n/combine/tests/test_fluent.py
- + tools/base-browser/l10n/combine/tests/test_properties.py
- + tools/base-browser/tb-dev
- + tools/geckoview/.gitignore
- + tools/geckoview/Makefile
- + tools/geckoview/android-env-linux-template.sh
- + tools/geckoview/android-env-macos-template.sh
- + tools/geckoview/build-fenix.sh
- + tools/geckoview/build-geckoview.sh
- + tools/geckoview/clobber.sh
- + tools/geckoview/config.sh
- + tools/geckoview/install-fenix.sh
- + tools/geckoview/jslint.sh
- tools/lint/fluent-lint/exclusions.yml
- + tools/torbrowser/Makefile
- + tools/torbrowser/browser-self-sign-macos.sh
- + tools/torbrowser/build.sh
- + tools/torbrowser/clobber.sh
- + tools/torbrowser/config.sh
- + tools/torbrowser/deploy.sh
- + tools/torbrowser/fetch.sh
- + tools/torbrowser/generate-bugzilla-triage-csv.sh
- + tools/torbrowser/generate_tor_loading_png.py
- + tools/torbrowser/ide.sh
- + tools/torbrowser/jslint.sh
- + tools/torbrowser/l10n/migrate.py
- + tools/torbrowser/l10n/migrations/__init__.py
- + tools/torbrowser/l10n/migrations/bug-41333-new-about-tor.py
- + tools/torbrowser/l10n/migrations/bug-41622-neterror.py
- + tools/torbrowser/l10n/migrations/bug-41820-moz-message-bar-download-warning.py
- + tools/torbrowser/l10n/migrations/bug-42202-crypto-safety.py
- + tools/torbrowser/l10n/migrations/bug-42203-about-dialog.py
- + tools/torbrowser/l10n/migrations/bug-42206-rulesets.py
- + tools/torbrowser/l10n/migrations/bug-42207-settings.py
- + tools/torbrowser/l10n/migrations/bug-42209-tor-circuit.py
- + tools/torbrowser/l10n/migrations/bug-42210-download-warning.py
- + tools/torbrowser/l10n/migrations/bug-42211-new-identity.py
- + tools/torbrowser/l10n/migrations/bug-42212-onion-services.py
- + tools/torbrowser/l10n/migrations/bug-42214-security-level.py
- + tools/torbrowser/l10n/migrations/bug-43531-bridge-dialog-buttons.py
- + tools/torbrowser/prepare-tests.sh
- + tools/torbrowser/update_emojis.py
- tools/update-packaging/common.sh
- tools/update-packaging/make_full_update.sh
- tools/update-packaging/make_incremental_update.sh
- uriloader/base/nsURILoader.cpp
- uriloader/exthandler/nsExternalHelperAppService.cpp
- widget/ScrollbarDrawingWin.cpp
- widget/ScrollbarDrawingWin11.cpp
- widget/android/WebExecutorSupport.cpp
- widget/gtk/MPRISServiceHandler.cpp
- widget/gtk/WidgetUtilsGtk.cpp
- widget/windows/WinTaskbar.cpp
- widget/windows/nsDataObj.cpp
- xpcom/base/ErrorList.py
- xpcom/ds/StaticAtoms.py
- xpcom/io/CocoaFileUtils.mm
- xpcom/io/nsAppFileLocationProvider.cpp
- xpfe/appshell/AppWindow.cpp
The diff was not included because it is too large.
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/f1e32f…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/f1e32f…
You're receiving this email because of your account on gitlab.torproject.org.
[View Less]
1
0

[Git][tpo/applications/tor-browser-build][main] 2 commits: Bug 41486: Track bundletool and osslicenses-plugin versions
by boklm (@boklm) 18 Jun '25
by boklm (@boklm) 18 Jun '25
18 Jun '25
boklm pushed to branch main at The Tor Project / Applications / tor-browser-build
Commits:
3faf8d3e by Nicolas Vigier at 2025-06-18T12:02:43+02:00
Bug 41486: Track bundletool and osslicenses-plugin versions
- - - - -
7d4088cb by Nicolas Vigier at 2025-06-18T12:02:43+02:00
Bug 41486: Drop target_sdk check in projects/geckoview/list_toolchain_updates_checks
- - - - -
1 changed file:
- projects/geckoview/list_toolchain_updates_checks
Changes:
=====================================
…
[View More]projects/geckoview/list_toolchain_updates_checks
=====================================
@@ -26,18 +26,6 @@ current='[% pc("android-toolchain", "version") %]'
check_update_needed build_tools "$needed" "$current"
-# target_sdk
-read -d '' p << 'EOF' || true
-if (m/target_sdk_version\\s*=\\s*"(.+)"/) {
- print $1;
- exit;
-}
-EOF
-needed=$(cat build/moz.configure/android-sdk.configure | perl -ne "$p")
-current='[% pc("android-toolchain", "var/android_api_level") %]'
-check_update_needed target_sdk "$needed" "$current"
-
-
# cmdline-tools
read -d '' p << 'EOF' || true
my $v, $s;
@@ -104,3 +92,27 @@ EOF
needed=$(cat gradle/wrapper/gradle-wrapper.properties | perl -ne "$p")
current='[% c("var/gradle_version") %]'
check_update_needed gradle "$needed" "$current"
+
+
+# bundletool
+read -d '' p << 'EOF' || true
+if (m{^BUNDLETOOL_VERSION\\s*=\\s*"(.+)"}) {
+ print $1;
+ exit;
+}
+EOF
+needed=$(cat python/mozboot/mozboot/android.py | perl -ne "$p")
+current='[% c("var/bundletool_version") %]'
+check_update_needed bundletool "$needed" "$current"
+
+
+# oss-licenses-plugin
+read -d '' p << 'EOF' || true
+if (m{^osslicenses-plugin\\s*=\\s*"(.+)"}) {
+ print $1;
+ exit;
+}
+EOF
+needed=$(cat gradle/libs.versions.toml | perl -ne "$p")
+current='[% pc("oss-licenses-plugin", "version") %]'
+check_update_needed oss-licenses-plugin "$needed" "$current"
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/compare/…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/compare/…
You're receiving this email because of your account on gitlab.torproject.org.
[View Less]
1
0

[Git][tpo/applications/tor-browser][base-browser-140.0a1-15.0-1] fixup! BB 43615: Add Gitlab Issue and Merge Request templates
by morgan (@morgan) 18 Jun '25
by morgan (@morgan) 18 Jun '25
18 Jun '25
morgan pushed to branch base-browser-140.0a1-15.0-1 at The Tor Project / Applications / Tor Browser
Commits:
24890f9d by Morgan at 2025-06-18T10:01:44+00:00
fixup! BB 43615: Add Gitlab Issue and Merge Request templates
add fingerprinting issue template
- - - - -
2 changed files:
- + .gitlab/issue_templates/031 Fingerprinting.md
- .gitlab/issue_templates/Default.md
Changes:
=====================================
.gitlab/issue_templates/031 Fingerprinting.md
==============================…
[View More]=======
@@ -0,0 +1,149 @@
+# 👣 Fingerprinting
+<!--
+Use this template to track a browser fingerprinting vector. Such vectors
+allow for stateless cross-site tracking (i.e. across somehow collaborating
+but otherwise unrelated 1st party domains like foo.com and bar.com)
+
+For the purposes of developing a fix, this template is meant to define all of the things
+we want to think about and analyze before implementing a fix. It's totally fine to leave
+parts of this template empty on initial report! The the issue description can be updated
+and edited as we learn things.
+
+This template is also meant to serve as documentation/explanation about how we think
+about fingerprinting vectors and minimising their utility.
+-->
+
+## Problem Statement
+<!--
+Please give an overview of the problem you think we should address.
+ e.g. system fonts (`font: caption`) might expose desktop
+ environment/distribution/language/customization because Firefox uses OS
+ settings.
+-->
+
+## Documentation
+<!--
+Please provide a links to the relevant standards or documentation for the affected web
+platform features. Additionally, please provide links to relevant academic research,
+upstream Bugzilla issues, etc (if available).
+-->
+
+## Repro Steps
+<!--
+Please provide any proof of concept which can help us under how this feature
+can be used for fingerprinting and that we can use as a test for our patches.
+-->
+
+## Analysis
+
+### Metric Distribution
+<!--
+- How many different possible buckets of values exist without fingerprinting
+mitigations?
+- How are users distributed between these buckets?
+- Do any group of users stand-out by default?
+- Do users in each of these buckets likely have different risk profiles?
+-->
+
+### Metric Stability
+<!--
+- How does the metric change during and between browsing sessions without mitigations?
+ e.g. Window size may be mostly stable during a browsing session
+ but may change between browsing sessions
+ e.g. User-Agent string is stable during a browsing session, but may change
+ between major browser updates
+-->
+
+## Mitigation Strategy
+<!--
+Outline (at least) one of the possible mitigation strategies for this metric
+(normalisation, randomisation, or disabling)
+-->
+
+### Normalisation
+<!--
+Describe a strategy whereby all users report the same value for the metric, or the pros
+and cons if there are multiple potential normalisation strategies.
+ e.g. Standardising reported WebGL constants such as maximum framebuffer size
+- After normalisation, would this metric be equivalent another normalised metric?
+ e.g. fonts are usually equivalent to the OS, which is already exposed.
+- Sometimes it is impossible to use the same value for all users, but reducing the
+ number of user buckets is still a win.
+
+✅ This is the preferred mitigation strategy.
+-->
+
+### Randomisation
+<!--
+Describe a strategy whereby users return randomised metrics
+ e.g. when enumerating webcams, choose a number of devices from a `[1; 3]` uniform
+ distribution
+- How did you choose this distribution and its parameters?
+- What strategies should we use to hide the randomization?
+ e.g. randomize the value only once per session and per first-party
+- Why is it not possible to use a normalized value, instead? Normalization is often
+ better than randomization because it is often easier to conceal
+
+A randomised metric should ideally be:
+- Different per first party domain
+ e.g. different websites measure a different value for the metric
+- Stable per session per first party domain
+ e.g. a website repeatedly measuring the metric will get back the same value
+ during the same browsing session
+- Different between sessions, regardless of first party domain
+ e.g. a website measuring a metric between browsing sessions will get back a different
+ value
+
+⚠️ We should only resort to randomisation if providing normalised values completely
+and utterly breaks web compatibility, usability, or accessibility.
+-->
+
+### Disabling
+<!--
+Describe a strategy whereby the fingerprintable metric is just outright disabled
+ e.g. Disabling WebAuthN feature entirely
+- Why is it not possible to spoof a (normalized) value instead? Disabling an API might
+ break some sites.
+ e.g. Rejecting the permission prompt request promise would be preferable to removing
+ or disabling the relevant APIs
+- Is this a temporary change?
+ e.g. necessary on the ESR version of Firefox we use for Tor Browser, but fixed in a
+ later version of Firefox.
+-->
+
+## Other Considerations
+
+### Usability and Accessibility
+<!--
+- Would the proposed mitigation make websites unusable for non-technical/human reasons?
+ e.g. Always requesting language as en-US makes websites usable for non English-reading
+ users
+- Would it make the browser unusable for some users?
+ e.g. Forcing overlay scrollbars would make websites unusable for some users with motor
+ issues
+- Do we need to provide a user-accessible 'escape-hatch' to allow users to opt-out of the
+ proposed mitigation?
+ e.g. Providing an option in about:preferences
+-->
+
+### Web Compatibility
+<!--
+Would the proposed mitigation break websites for technical reasons?
+ e.g. Disabling WebAuthN preventing YubiKey authentication
+-->
+
+### Plausibility
+<!--
+Would the proposed mitigation make the browser stand out as a potential bot or scraper or
+some other non-standard browser configuration?
+ e.g. Reporting only 2 CPU-cores is unlikely for modern PCs in the year 2025
+-->
+
+<!-- Do not edit beneath this line <3 -->
+
+---
+
+/confidential
+/label ~"Apps::Product::BaseBrowser"
+/label ~"Project 131"
+/label ~"Fingerprinting"
=====================================
.gitlab/issue_templates/Default.md
=====================================
@@ -11,6 +11,7 @@ Please select the appropriate issue template from the **Description** drop-down.
*NOTE*: the following issue types are intended for internal use
- 💣 **Test** - develop a test or update testing infrastructure
+- 👣 **Fingerprinting** - open a fingerprinting issue
- ✨ **Feature** - implement new features
- ⬅️ **Backport** - cherry-pick change to other release channels
- ⤵️ **Rebase - Alpha** - rebase alpha to latest Firefox ESR version
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/24890f9…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/24890f9…
You're receiving this email because of your account on gitlab.torproject.org.
[View Less]
1
0

[Git][tpo/applications/tor-browser][tor-browser-140.0a1-15.0-1] fixup! BB 43615: Add Gitlab Issue and Merge Request templates
by morgan (@morgan) 18 Jun '25
by morgan (@morgan) 18 Jun '25
18 Jun '25
morgan pushed to branch tor-browser-140.0a1-15.0-1 at The Tor Project / Applications / Tor Browser
Commits:
9e951916 by Morgan at 2025-06-18T10:00:26+00:00
fixup! BB 43615: Add Gitlab Issue and Merge Request templates
add fingerprinting issue template
- - - - -
2 changed files:
- + .gitlab/issue_templates/031 Fingerprinting.md
- .gitlab/issue_templates/Default.md
Changes:
=====================================
.gitlab/issue_templates/031 Fingerprinting.md
===============================…
[View More]======
@@ -0,0 +1,149 @@
+# 👣 Fingerprinting
+<!--
+Use this template to track a browser fingerprinting vector. Such vectors
+allow for stateless cross-site tracking (i.e. across somehow collaborating
+but otherwise unrelated 1st party domains like foo.com and bar.com)
+
+For the purposes of developing a fix, this template is meant to define all of the things
+we want to think about and analyze before implementing a fix. It's totally fine to leave
+parts of this template empty on initial report! The the issue description can be updated
+and edited as we learn things.
+
+This template is also meant to serve as documentation/explanation about how we think
+about fingerprinting vectors and minimising their utility.
+-->
+
+## Problem Statement
+<!--
+Please give an overview of the problem you think we should address.
+ e.g. system fonts (`font: caption`) might expose desktop
+ environment/distribution/language/customization because Firefox uses OS
+ settings.
+-->
+
+## Documentation
+<!--
+Please provide a links to the relevant standards or documentation for the affected web
+platform features. Additionally, please provide links to relevant academic research,
+upstream Bugzilla issues, etc (if available).
+-->
+
+## Repro Steps
+<!--
+Please provide any proof of concept which can help us under how this feature
+can be used for fingerprinting and that we can use as a test for our patches.
+-->
+
+## Analysis
+
+### Metric Distribution
+<!--
+- How many different possible buckets of values exist without fingerprinting
+mitigations?
+- How are users distributed between these buckets?
+- Do any group of users stand-out by default?
+- Do users in each of these buckets likely have different risk profiles?
+-->
+
+### Metric Stability
+<!--
+- How does the metric change during and between browsing sessions without mitigations?
+ e.g. Window size may be mostly stable during a browsing session
+ but may change between browsing sessions
+ e.g. User-Agent string is stable during a browsing session, but may change
+ between major browser updates
+-->
+
+## Mitigation Strategy
+<!--
+Outline (at least) one of the possible mitigation strategies for this metric
+(normalisation, randomisation, or disabling)
+-->
+
+### Normalisation
+<!--
+Describe a strategy whereby all users report the same value for the metric, or the pros
+and cons if there are multiple potential normalisation strategies.
+ e.g. Standardising reported WebGL constants such as maximum framebuffer size
+- After normalisation, would this metric be equivalent another normalised metric?
+ e.g. fonts are usually equivalent to the OS, which is already exposed.
+- Sometimes it is impossible to use the same value for all users, but reducing the
+ number of user buckets is still a win.
+
+✅ This is the preferred mitigation strategy.
+-->
+
+### Randomisation
+<!--
+Describe a strategy whereby users return randomised metrics
+ e.g. when enumerating webcams, choose a number of devices from a `[1; 3]` uniform
+ distribution
+- How did you choose this distribution and its parameters?
+- What strategies should we use to hide the randomization?
+ e.g. randomize the value only once per session and per first-party
+- Why is it not possible to use a normalized value, instead? Normalization is often
+ better than randomization because it is often easier to conceal
+
+A randomised metric should ideally be:
+- Different per first party domain
+ e.g. different websites measure a different value for the metric
+- Stable per session per first party domain
+ e.g. a website repeatedly measuring the metric will get back the same value
+ during the same browsing session
+- Different between sessions, regardless of first party domain
+ e.g. a website measuring a metric between browsing sessions will get back a different
+ value
+
+⚠️ We should only resort to randomisation if providing normalised values completely
+and utterly breaks web compatibility, usability, or accessibility.
+-->
+
+### Disabling
+<!--
+Describe a strategy whereby the fingerprintable metric is just outright disabled
+ e.g. Disabling WebAuthN feature entirely
+- Why is it not possible to spoof a (normalized) value instead? Disabling an API might
+ break some sites.
+ e.g. Rejecting the permission prompt request promise would be preferable to removing
+ or disabling the relevant APIs
+- Is this a temporary change?
+ e.g. necessary on the ESR version of Firefox we use for Tor Browser, but fixed in a
+ later version of Firefox.
+-->
+
+## Other Considerations
+
+### Usability and Accessibility
+<!--
+- Would the proposed mitigation make websites unusable for non-technical/human reasons?
+ e.g. Always requesting language as en-US makes websites usable for non English-reading
+ users
+- Would it make the browser unusable for some users?
+ e.g. Forcing overlay scrollbars would make websites unusable for some users with motor
+ issues
+- Do we need to provide a user-accessible 'escape-hatch' to allow users to opt-out of the
+ proposed mitigation?
+ e.g. Providing an option in about:preferences
+-->
+
+### Web Compatibility
+<!--
+Would the proposed mitigation break websites for technical reasons?
+ e.g. Disabling WebAuthN preventing YubiKey authentication
+-->
+
+### Plausibility
+<!--
+Would the proposed mitigation make the browser stand out as a potential bot or scraper or
+some other non-standard browser configuration?
+ e.g. Reporting only 2 CPU-cores is unlikely for modern PCs in the year 2025
+-->
+
+<!-- Do not edit beneath this line <3 -->
+
+---
+
+/confidential
+/label ~"Apps::Product::BaseBrowser"
+/label ~"Project 131"
+/label ~"Fingerprinting"
=====================================
.gitlab/issue_templates/Default.md
=====================================
@@ -11,6 +11,7 @@ Please select the appropriate issue template from the **Description** drop-down.
*NOTE*: the following issue types are intended for internal use
- 💣 **Test** - develop a test or update testing infrastructure
+- 👣 **Fingerprinting** - open a fingerprinting issue
- ✨ **Feature** - implement new features
- ⬅️ **Backport** - cherry-pick change to other release channels
- ⤵️ **Rebase - Alpha** - rebase alpha to latest Firefox ESR version
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/9e95191…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/9e95191…
You're receiving this email because of your account on gitlab.torproject.org.
[View Less]
1
0

[Git][tpo/applications/tor-browser] Pushed new branch tor-browser-140.0a1-15.0-2
by Pier Angelo Vendrame (@pierov) 18 Jun '25
by Pier Angelo Vendrame (@pierov) 18 Jun '25
18 Jun '25
Pier Angelo Vendrame pushed new branch tor-browser-140.0a1-15.0-2 at The Tor Project / Applications / Tor Browser
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/tree/tor-brows…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser-build][main] Bug 41494: Update GeckoView build scripts for ESR140.
by Pier Angelo Vendrame (@pierov) 18 Jun '25
by Pier Angelo Vendrame (@pierov) 18 Jun '25
18 Jun '25
Pier Angelo Vendrame pushed to branch main at The Tor Project / Applications / tor-browser-build
Commits:
0e4bfa9d by Pier Angelo Vendrame at 2025-06-18T11:12:42+02:00
Bug 41494: Update GeckoView build scripts for ESR140.
- - - - -
11 changed files:
- projects/geckoview/build
- projects/geckoview/build_ac_fenix
- projects/geckoview/build_common
- projects/geckoview/config
- projects/geckoview/gradle-dependencies-list.txt
- projects/oss-licenses-plugin/build
- projects/oss-licenses-plugin/…
[View More]build-customization.diff
- projects/oss-licenses-plugin/config
- projects/oss-licenses-plugin/gradle-dependencies-list.txt
- + projects/oss-licenses-plugin/sort-dependencies-pr-268.patch
- − projects/oss-licenses-plugin/sort-dependencies.diff
Changes:
=====================================
projects/geckoview/build
=====================================
@@ -43,7 +43,7 @@ echo "Starting ./mach build $(date)"
# Copy the artifacts to the target directory
# Naming convention is the same as Mozilla uses for their artifacts
cp -a obj-*/dist/*.zip $artifactsdir/target.xpt_artifacts.zip
- cp -a obj-*/gradle/build/mobile/android/geckoview_example/outputs/apk/withGeckoBinaries/*/geckoview_example-withGeckoBinaries-*.apk $artifactsdir/geckoview_example.apk
+ cp -a obj-*/gradle/build/mobile/android/geckoview_example/outputs/apk/*/geckoview_example-*.apk $artifactsdir/geckoview_example.apk
./mach python -m mozbuild.action.test_archive common $artifactsdir/target.common.tests.tar.gz
[% END %]
=====================================
projects/geckoview/build_ac_fenix
=====================================
@@ -4,6 +4,8 @@
./mach package-multi-locale --locales en-US $supported_locales
[% END -%]
+objdir=$(cd obj-* && pwd)
+
echo "Building Android Components $(date)"
pushd mobile/android/android-components
gradle $GRADLE_FLAGS assembleGecko -x lint
@@ -40,7 +42,7 @@ gradle $GRADLE_FLAGS -PversionName="$version_name" "assemble$variant"
echo "Build finished, copying the APK(s) to the destination directory $(date)"
mkdir $distdir/[% project %]
-cp app/build/outputs/apk/fenix/$variant/*.apk $distdir/[% project %]
+cp $objdir/gradle/build/mobile/android/fenix/app/outputs/apk/fenix/$variant/*.apk $distdir/[% project %]
echo "Building non optimized $variant Fenix APK for testing"
gradle $GRADLE_FLAGS -PversionName="$version_name" -PdisableOptimization "assemble$variant"
@@ -51,8 +53,8 @@ gradle $GRADLE_FLAGS -PversionName="$version_name" -PtestBuildType="$variant" -P
echo "Test build finished, copying the APKs to the destination directory $(date)"
mkdir $distdir/[% project %]/tests
-cp app/build/outputs/apk/fenix/$variant/*.apk $distdir/[% project %]/tests
-cp app/build/outputs/apk/androidTest/fenix/$variant/*.apk $distdir/[% project %]/tests
+cp $objdir/gradle/build/mobile/android/fenix/app/outputs/apk/fenix/$variant/*.apk $distdir/[% project %]/tests
+cp $objdir/gradle/build/mobile/android/fenix/app/outputs/apk/androidTest/fenix/$variant/*.apk $distdir/[% project %]/tests
popd
=====================================
projects/geckoview/build_common
=====================================
@@ -48,4 +48,10 @@ export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=system
# Create .mozbuild to avoid interactive prompt in configure
mkdir "$HOME/.mozbuild"
+# mach looks for bundletool and avd only in ~/.mozbuild. Maybe an upstream bug?
+mv $rootdir/[% c("input_files_by_name/bundletool") %] $HOME/.mozbuild/bundletool.jar
+mkdir $HOME/.mozbuild/android-device
+touch $HOME/.mozbuild/android-device/avd
+chmod +x $HOME/.mozbuild/android-device/avd
+
[% INCLUDE 'browser-localization' %]
=====================================
projects/geckoview/config
=====================================
@@ -37,9 +37,12 @@ var:
- openjdk-17-jdk-headless
# this should be updated when the list of gradle dependencies is changed
# see doc/how-to-create-gradle-dependencies-list.txt
- gradle_dependencies_version: 16
- gradle_version: 8.8
+ gradle_dependencies_version: 17
+ gradle_version: 8.13
glean_parser: 14.0.1
+ # python/mozboot/mozboot/android.py
+ bundletool_version: 1.18.1
+ bundletool_hash: 675786493983787ffa11550bdb7c0715679a44e1643f3ff980a529e9c822595c
variant: beta
has_l10n: '[% !c("var/testbuild") && !c("var/locales").empty %]'
l10n-changesets: '[% exec("git --no-pager show " _ c("git_hash") _ ":browser/locales/l10n-changesets.json", { exec_noco => 1 }) %]'
@@ -121,9 +124,12 @@ steps:
- project: oss-licenses-plugin
name: oss-licenses-plugin
pkg_type: build
+ - URL: 'https://github.com/google/bundletool/releases/download/[% c("var/bundletool_version") %]/bundletool-all-[% c("var/bundletool_version") %].jar'
+ name: bundletool
+ sha256sum: '[% c("var/bundletool_hash") %]'
list_toolchain_updates:
- git_hash: tor-browser-128.0b1-14.0-1
+ git_hash: tor-browser-140.0a1-15.0-1
tag_gpg_id: 0
input_files: []
container:
@@ -173,3 +179,6 @@ input_files:
pkg_type: tor-browser
enable: '[% c("var/android_single_arch") && c("var/has_l10n") %]'
- filename: rename-branding-strings.py
+ - URL: 'https://github.com/google/bundletool/releases/download/[% c("var/bundletool_version") %]/bundletool-all-[% c("var/bundletool_version") %].jar'
+ name: bundletool
+ sha256sum: '[% c("var/bundletool_hash") %]'
=====================================
projects/geckoview/gradle-dependencies-list.txt
=====================================
The diff for this file was not included because it is too large.
=====================================
projects/oss-licenses-plugin/build
=====================================
@@ -12,9 +12,10 @@ export PATH=/var/tmp/dist/gradle/bin:$PATH
gradle_repo=/var/tmp/dist/gradle-dependencies
mv $rootdir/[% c('input_files_by_name/gradle-dependencies') %] $gradle_repo
cp -rl $gradle_repo/m2/* $gradle_repo || true
+cp -rl $gradle_repo/dl/android/maven2/* $gradle_repo || true
cd $builddir
-patch -p2 < $rootdir/sort-dependencies.diff
+patch -p2 < $rootdir/sort-dependencies-pr-268.patch
patch -p2 < $rootdir/build-customization.diff
gradle --no-daemon --offline -Dmaven.repo.local=$gradle_repo assemble publish
cd build/repo
=====================================
projects/oss-licenses-plugin/build-customization.diff
=====================================
@@ -1,17 +1,17 @@
diff --git a/oss-licenses-plugin/build.gradle b/oss-licenses-plugin/build.gradle
-index 2a7dd74..f9368e1 100644
+index 863625c..65ad088 100644
--- a/oss-licenses-plugin/build.gradle
+++ b/oss-licenses-plugin/build.gradle
-@@ -15,34 +15,25 @@ dependencies {
+@@ -20,34 +20,25 @@ dependencies {
group = 'com.google.android.gms'
- version = '0.10.4'
+ version = '0.10.6'
-apply plugin: 'maven'
+apply plugin: 'maven-publish'
repositories {
google()
- jcenter()
+ mavenCentral()
+ mavenLocal()
}
=====================================
projects/oss-licenses-plugin/config
=====================================
@@ -1,12 +1,12 @@
-version: 0.10.4
+version: 0.10.6
filename: '[% project %]-[% c("version") %]-[% c("var/build_id") %].tar.[% c("compress_tar") %]'
git_url: https://github.com/google/play-services-plugins.git
-git_hash: c9ed0e48abe2c55dd67f2c2224988d1d690cecc9 # oss-licenses-plugin-v0.10.4
+git_hash: 45ec9c690672f0ff6f86e6221ef64e204b10a228 # oss-licenses-plugin-v0.10.6
var:
# This should be updated when the list of gradle dependencies is changed.
- gradle_dependencies_version: 1
- gradle_version: 8.8
+ gradle_dependencies_version: 2
+ gradle_version: 8.13
container:
use_container: 1
@@ -18,5 +18,5 @@ input_files:
- filename: 'gradle-dependencies-[% c("var/gradle_dependencies_version") %]'
name: gradle-dependencies
exec: '[% INCLUDE "fetch-gradle-dependencies" %]'
+ - filename: sort-dependencies-pr-268.patch
- filename: build-customization.diff
- - filename: sort-dependencies.diff
=====================================
projects/oss-licenses-plugin/gradle-dependencies-list.txt
=====================================
@@ -1,207 +1,37 @@
# On how to update dependencies see doc/how-to-create-gradle-dependencies-list.txt
# Don't forget to update var/gradle_dependencies_version when modifying this file
sha256sum | url
-408d8ed48da2b7b2c8f7216906c1b76a1ecdb9c165cdb52c9eeb32af0cc67f0f | https://maven.google.com/androidx/databinding/databinding-common/3.5.1/data…
-008e3641392787bd3f6e5fe3a56457379cbba8be62ae5a91ba982b7e534a2b37 | https://maven.google.com/androidx/databinding/databinding-common/3.5.1/data…
-b6235dd4ff7457f517e30479fe050a2ae27a2b3ef8ae33d44d9a3d2197911779 | https://maven.google.com/androidx/databinding/databinding-compiler-common/3…
-4a3bfe5d22a4df2490f6180ef1e22a2ea189f42676532d6d7d6ece9b57a2c506 | https://maven.google.com/androidx/databinding/databinding-compiler-common/3…
-4b698a77c578215a7f746e93422757a8e4d6ee9c8a29fdd9f994712f723604ed | https://maven.google.com/com/android/databinding/baseLibrary/3.5.1/baseLibr…
-6659dd657846c519b12ad701815f2009f8d9991c798ca3a5a628e163987aecab | https://maven.google.com/com/android/databinding/baseLibrary/3.5.1/baseLibr…
-9e9618ed7f1d24df2a4365e1719d630d8ac9c2dd31bea3343157a4ae5efa7fb9 | https://maven.google.com/com/android/tools/analytics-library/crash/26.5.1/c…
-215d75a04ddcfa897e12f3c4d204f24e94214385f1f11ddcea4ddcd56ddb5243 | https://maven.google.com/com/android/tools/analytics-library/crash/26.5.1/c…
-8dde1130725461fe827f2a343d353f2b51e8870661fc860d7d5ebddb097ead4e | https://maven.google.com/com/android/tools/analytics-library/protos/26.5.1/…
-7b042861662b26a41e8f71a093cffc78dd8eb746e5ab98a645e1dcf49612bd0a | https://maven.google.com/com/android/tools/analytics-library/protos/26.5.1/…
-ccc2f3b00ec17b11401610ba68553544fc8fc517120e84439ac6eb86b875e18d | https://maven.google.com/com/android/tools/analytics-library/shared/26.5.1/…
-727842ddf56dbf158091a4f113005ec0e2d04ae2c066d7ede9b65ce6a9131aa8 | https://maven.google.com/com/android/tools/analytics-library/shared/26.5.1/…
-3a76984c0fe2e847ca7a8b35b4780ef0447a9d1666946cb8e60466318e0ab5ae | https://maven.google.com/com/android/tools/analytics-library/tracker/26.5.1…
-6327d446e6c59adacad78265fc61ac09ddcb751fe4e62b3697dc9d6534c0c451 | https://maven.google.com/com/android/tools/analytics-library/tracker/26.5.1…
-2c43c82f8c59d8f7a61e3239e1a2dc9f69dc342ec09af9b7c9f69b25337c0b6e | https://maven.google.com/com/android/tools/annotations/26.5.1/annotations-2…
-3caa859d7b198f9f429f50874921f5e05f105112400eed666d5e56a0e8417e09 | https://maven.google.com/com/android/tools/annotations/26.5.1/annotations-2…
-fac0435e08898f89eeeb9ca236bea707155ff816c12205ced285ad53604133ca | https://maven.google.com/com/android/tools/build/aapt2-proto/0.4.0/aapt2-pr…
-a24bdd4e8e374fdcd8cef8d77ea723f147ccd0f25dc6de4fbe290039be904339 | https://maven.google.com/com/android/tools/build/aapt2-proto/0.4.0/aapt2-pr…
-1fd33e7f009a2a0da766cfeec4211a09f548034b015c289a66d75dd8a9302f4a | https://maven.google.com/com/android/tools/build/apksig/3.5.1/apksig-3.5.1.…
-4c9f03d9fbc5accffafd56b0ae677d41ea0a395980a2cc052a7bcefccb2483a9 | https://maven.google.com/com/android/tools/build/apksig/3.5.1/apksig-3.5.1.…
-9f330167cbe973b7db407692f74f4f6453b7ffa5f2048934b06280c2ceee60fa | https://maven.google.com/com/android/tools/build/apkzlib/3.5.1/apkzlib-3.5.…
-f299c423220ae47404b9013e54caec84ea64f45f69885e4dc0e2e66b7095e33e | https://maven.google.com/com/android/tools/build/apkzlib/3.5.1/apkzlib-3.5.…
-39ea3c82b76b6e0c9f9fa88d93e0edc1dd4a0f1dfae0ef6fbf2d451da47e5450 | https://maven.google.com/com/android/tools/build/builder-model/3.5.1/builde…
-466e5005cf0a7c7bad8991b14c70b04457b77d28195ec04ec2baf6495e88f4a2 | https://maven.google.com/com/android/tools/build/builder-model/3.5.1/builde…
-a1b59305584cbcaa078fdc9cfb80871012755b822dd32e8da19add6f7bbcb762 | https://maven.google.com/com/android/tools/build/builder-test-api/3.5.1/bui…
-704e2ad557e5659b98bb8955fbab20977cddb09c06e72825cf2516635424b8cb | https://maven.google.com/com/android/tools/build/builder-test-api/3.5.1/bui…
-e3a8d382434c5f60990730c4719fc814e85a898a33a1e96c1df8d627d3c6eea6 | https://maven.google.com/com/android/tools/build/builder/3.5.1/builder-3.5.…
-aa0092dd227856f6a9c42df1f6ae14ba8a5bde16ea77d760e48c25e575d31668 | https://maven.google.com/com/android/tools/build/builder/3.5.1/builder-3.5.…
-50c44557ca75b068e364ac35a648b81eeba7639ab5eb04036e390c727ad2fa3d | https://maven.google.com/com/android/tools/build/bundletool/0.9.0/bundletoo…
-124e124227803689b71da7440f0dbdff71cbb4c661a18e0f4e2e0d3a80d367c2 | https://maven.google.com/com/android/tools/build/bundletool/0.9.0/bundletoo…
-be9b41859bace11998f66b04ed944f87e413f3ad6da3c4665587699da125addc | https://maven.google.com/com/android/tools/build/gradle-api/3.5.1/gradle-ap…
-e977170f2bf4fdf335d924f8bf94eea54c54422f74f8915fc8d592dc9a226eb8 | https://maven.google.com/com/android/tools/build/gradle-api/3.5.1/gradle-ap…
-fe188188002bbb2e51c7db6da1ed03fc82af8f3be1a33991d38381837bc6708a | https://maven.google.com/com/android/tools/build/gradle/3.5.1/gradle-3.5.1.…
-b4a5b3db612b70ad8ba1b22bc469444d946bcd60e399f97ee6e498d195239c84 | https://maven.google.com/com/android/tools/build/gradle/3.5.1/gradle-3.5.1.…
-c9f8b016144cfb31c5aee92d47f34de23289167cac5e8ef68365b2dd05766f11 | https://maven.google.com/com/android/tools/build/jetifier/jetifier-core/1.0…
-db025ad1bbc6896edf0f67cda1222ba9b7ec9a0187df7f4fd0a318475c758e4e | https://maven.google.com/com/android/tools/build/jetifier/jetifier-core/1.0…
-1dd481e7606ccb30868908d9ae80f27d1c5ba882f792532bd91ed731c54f4efb | https://maven.google.com/com/android/tools/build/jetifier/jetifier-processo…
-4973a6c6d7f89297a1cfea56c623cea72b3db3b4a49992afa00dd77ac052b89f | https://maven.google.com/com/android/tools/build/jetifier/jetifier-processo…
-dcad9ecb967251f4d750f55a4204a2b400e8fbfe5cb930a1d0d5dbe10ae8bdfc | https://maven.google.com/com/android/tools/build/manifest-merger/26.5.1/man…
-0dfcac2f9fa87c1742945875ef1e6f9fbade2149426502323c40eb01c05a7e36 | https://maven.google.com/com/android/tools/build/manifest-merger/26.5.1/man…
-4de4a3d05e1c534c2db9e4588bf34082bb2bd232d8abb9727c430290ce225740 | https://maven.google.com/com/android/tools/build/transform-api/2.0.0-deprec…
-7c62f3856e8abca1d79257925f26c12668693f5d95904056bbac88605cfd8575 | https://maven.google.com/com/android/tools/build/transform-api/2.0.0-deprec…
-eccfa54486ed54c4e3123cc42195d023bd0dd21bcd2f0e4868e8c6fc70f8ef6b | https://maven.google.com/com/android/tools/common/26.5.1/common-26.5.1.jar
-4492eb509dc784ca5e1600a2b0505ad1468bed4d116220fca67f34b49ac18ffb | https://maven.google.com/com/android/tools/common/26.5.1/common-26.5.1.pom
-b081aef2a4ed3f4d47cae4cdb128469735f25a114e026d37123bf9ffdec742a8 | https://maven.google.com/com/android/tools/ddms/ddmlib/26.5.1/ddmlib-26.5.1…
-a6e4693d05779c25cbfbbf4e67f96150c4de3d398ae3ed6a38f786971eb89634 | https://maven.google.com/com/android/tools/ddms/ddmlib/26.5.1/ddmlib-26.5.1…
-46f93ad498b4756e7d867d2fe38c38890a80e7407a4ae459e4a8c8d5c5aeacfe | https://maven.google.com/com/android/tools/dvlib/26.5.1/dvlib-26.5.1.jar
-1d5f88a4eb1c76901bc7b19af2311418a3f259d0f68756b058df850b1e8f913f | https://maven.google.com/com/android/tools/dvlib/26.5.1/dvlib-26.5.1.pom
-88732f11396c427273e515d23042e35633f4fe4295528a99b866aa2adf0efd9c | https://maven.google.com/com/android/tools/layoutlib/layoutlib-api/26.5.1/l…
-63832aa426428edb1a9ad7b1fc06c8ecf8f38b98041c13bfe433ac46688e5ed8 | https://maven.google.com/com/android/tools/layoutlib/layoutlib-api/26.5.1/l…
-82453fd98a8394cc84ed995c04d2cd744abd1d6589403427ba7eef53115406f3 | https://maven.google.com/com/android/tools/lint/lint-gradle-api/26.5.1/lint…
-2ddefa31501b320b366a0d18ba169118be7073d04c9337dd77bdc4ebd4ced959 | https://maven.google.com/com/android/tools/lint/lint-gradle-api/26.5.1/lint…
-2b3ee791aa4c3e8ce60498c161a27ca7228816fc630eed4d9f25f2f36a106dce | https://maven.google.com/com/android/tools/repository/26.5.1/repository-26.…
-8312471ec5165d599404e2225157c5639bdd9ad5c6980f79b1c1c4b517ff93b3 | https://maven.google.com/com/android/tools/repository/26.5.1/repository-26.…
-365f749676c3574676fd465177c8a492f340816db2b520d6ed114d3b6e77bea7 | https://maven.google.com/com/android/tools/sdk-common/26.5.1/sdk-common-26.…
-33b0649ae6e3dd95340123c462f6ef32992ee858e6e132f45bb7dec332627d59 | https://maven.google.com/com/android/tools/sdk-common/26.5.1/sdk-common-26.…
-007da104afb27c8c682a1628023fe9ec438249c8d15ef0fd6624c5bb8e23b696 | https://maven.google.com/com/android/tools/sdklib/26.5.1/sdklib-26.5.1.jar
-3f5ee952ea6a07767688a464c545354fbbce296419973397e65280142914b2a4 | https://maven.google.com/com/android/tools/sdklib/26.5.1/sdklib-26.5.1.pom
-feab9191311c3d7aeef2b66d6064afc80d3d1d52d980fb07ae43c78c987ba93a | https://plugins.gradle.org/m2/com/google/code/findbugs/jsr305/1.3.9/jsr305-…
-766ad2a0783f2687962c8ad74ceecc38a28b9f72a2d085ee438b7813e928d0c7 | https://plugins.gradle.org/m2/com/google/code/findbugs/jsr305/3.0.2/jsr305-…
-19889dbdf1b254b2601a5ee645b8147a974644882297684c798afe5d63d78dfe | https://plugins.gradle.org/m2/com/google/code/findbugs/jsr305/3.0.2/jsr305-…
-8f1fec72b91a71ea39ec39f5f778c4d1124b6b097c6d55b3a50b554a52237b27 | https://plugins.gradle.org/m2/com/google/code/gson/gson-parent/2.8.5/gson-p…
-233a0149fc365c9f6edbd683cfe266b19bdc773be98eabdaf6b3c924b48e7d81 | https://plugins.gradle.org/m2/com/google/code/gson/gson/2.8.5/gson-2.8.5.jar
-b8308557a7fccc92d9fe7c8cd0599258b361285d2ecde7689eda98843255a092 | https://plugins.gradle.org/m2/com/google/code/gson/gson/2.8.5/gson-2.8.5.pom
-6ebd22ca1b9d8ec06d41de8d64e0596981d9607b42035f9ed374f9de271a481a | https://plugins.gradle.org/m2/com/google/errorprone/error_prone_annotations…
-5e0258ea1ba4e51a133742680bc22448f7ab214be4073e8619f645ef1be42dd5 | https://plugins.gradle.org/m2/com/google/errorprone/error_prone_annotations…
-c460902ddf5ece68832c6b271ce52a0928b05cf3a6ac81a8f548c73cbd541138 | https://plugins.gradle.org/m2/com/google/errorprone/error_prone_parent/2.2.…
-cd6db17a11a31ede794ccbd1df0e4d9750f640234731f21cff885a9997277e81 | https://plugins.gradle.org/m2/com/google/google/1/google-1.pom
-a171ee4c734dd2da837e4b16be9df4661afab72a41adaf31eb84dfdaf936ca26 | https://plugins.gradle.org/m2/com/google/guava/failureaccess/1.0.1/failurea…
-e96042ce78fecba0da2be964522947c87b40a291b5fd3cd672a434924103c4b9 | https://plugins.gradle.org/m2/com/google/guava/failureaccess/1.0.1/failurea…
-f8698ab46ca996ce889c1afc8ca4f25eb8ac6b034dc898d4583742360016cc04 | https://plugins.gradle.org/m2/com/google/guava/guava-parent/26.0-android/gu…
-317e88291262e0cf2805e956c18850f1d4565c85c2e1112f5d9d08ab1732e696 | https://plugins.gradle.org/m2/com/google/guava/guava-parent/27.0.1-jre/guav…
-e1c814fd04492a27c38e0317eabeaa1b3e950ec8010239e400fe90ad6c9107b4 | https://plugins.gradle.org/m2/com/google/guava/guava/27.0.1-jre/guava-27.0.…
-6a8dd041f23a6bb14a86e440fccb993537b62271357a0dac0a3cb0ff39158f36 | https://plugins.gradle.org/m2/com/google/guava/guava/27.0.1-jre/guava-27.0.…
-b372a037d4230aa57fbeffdef30fd6123f9c0c2db85d0aced00c91b974f33f99 | https://plugins.gradle.org/m2/com/google/guava/listenablefuture/9999.0-empt…
-18d4b1db26153d4e55079ce1f76bb1fe05cdb862ef9954a88cbcc4ff38b8679b | https://plugins.gradle.org/m2/com/google/guava/listenablefuture/9999.0-empt…
-2994a7eb78f2710bd3d3bfb639b2c94e219cedac0d4d084d516e78c16dddecf6 | https://plugins.gradle.org/m2/com/google/j2objc/j2objc-annotations/1.1/j2ob…
-f0c98c571e93a7cb4dd18df0fa308f0963e7a0620ac2d4244e61e709d03ad6be | https://plugins.gradle.org/m2/com/google/j2objc/j2objc-annotations/1.1/j2ob…
-c71555751e57e0ef912870e8ac9625ae782502a6a5b9c19ccf83b2a97d8b26bd | https://plugins.gradle.org/m2/com/google/jimfs/jimfs-parent/1.1/jimfs-paren…
-c4828e28d7c0a930af9387510b3bada7daa5c04d7c25a75c7b8b081f1c257ddd | https://plugins.gradle.org/m2/com/google/jimfs/jimfs/1.1/jimfs-1.1.jar
-efa86e5cd922f17b472fdfcae57234d8d4ac3e148b6250737dfce454af7a7a44 | https://plugins.gradle.org/m2/com/google/jimfs/jimfs/1.1/jimfs-1.1.pom
-4189e0be5ab15cf2330f70b24fbdc75ca37514f188388fce8580ce16a9a68052 | https://plugins.gradle.org/m2/com/google/protobuf/protobuf-java-util/3.4.0/…
-89c43073e7eaa0eaba72a4a36ae1b6bfdfe5d81bb9d0e156aee05e4a72de3cb8 | https://plugins.gradle.org/m2/com/google/protobuf/protobuf-java-util/3.4.0/…
-dce7e66b32456a1b1198da0caff3a8acb71548658391e798c79369241e6490a4 | https://plugins.gradle.org/m2/com/google/protobuf/protobuf-java/3.4.0/proto…
-83f17ba86c5fa1a15a3a3c8030d4ce42ef21c1d39b65db6cc004a8eeb2c59406 | https://plugins.gradle.org/m2/com/google/protobuf/protobuf-java/3.4.0/proto…
-24909c552842c0eb7a4c769d631a43cbef5a9a10c1640f2bdbd1ea149c573a47 | https://plugins.gradle.org/m2/com/google/protobuf/protobuf-parent/3.4.0/pro…
-2d9484f4c649f708f47f9a479465fc729770ee65617dca3011836602264f6439 | https://plugins.gradle.org/m2/com/googlecode/json-simple/json-simple/1.1/js…
-47a89be0fa0fedd476db5fd2c83487654d2a119c391f83a142be876667cf7dab | https://plugins.gradle.org/m2/com/googlecode/json-simple/json-simple/1.1/js…
-757bfe906193b8b651e79dc26cd67d6b55d0770a2cdfb0381591504f779d4a76 | https://plugins.gradle.org/m2/com/googlecode/juniversalchardet/juniversalch…
-7846399b35c7cd642a9b3a000c3e2d62d04eb37a4547b6933cc8b18bcc2f086b | https://plugins.gradle.org/m2/com/googlecode/juniversalchardet/juniversalch…
-8e108c92027bb428196f10fa11cffbe589f7648a6af2016d652279385fdfd789 | https://plugins.gradle.org/m2/com/squareup/javapoet/1.8.0/javapoet-1.8.0.jar
-b3760f40f19e735b2cd418f7656335d926d1d9413e10982a1c9695b64edbb647 | https://plugins.gradle.org/m2/com/squareup/javapoet/1.8.0/javapoet-1.8.0.pom
+33c839e4236eabde3896c154d120d651e72064f393e456297c92041d00cc058e | https://dl.google.com/dl/android/maven2/com/android/tools/build/apksig/7.1.…
+67a8f20626121a8e4f48fc63a392c0459173a9992eb35cc9c9c3ec82b882862c | https://dl.google.com/dl/android/maven2/com/android/tools/build/apksig/7.1.…
+8529eca8d75767050751f7674338548f591a234333179d9b5ad66c6feaf00d42 | https://dl.google.com/dl/android/maven2/com/android/tools/build/apksig/7.1.…
+0e46a02577de7cbad380679e565f73d537205e0c38c2894bfe122ad1ee79e516 | https://dl.google.com/dl/android/maven2/com/android/tools/build/apkzlib/7.1…
+c2d09468c92bd306272ed6f2c7b5ac2507ede7222e4b677a5ba887e06e89c5bb | https://dl.google.com/dl/android/maven2/com/android/tools/build/apkzlib/7.1…
+fa9f433e60e4f330e763f4f1920f8bda5d1f835d17ac1bd9b92d2a139a4a8269 | https://dl.google.com/dl/android/maven2/com/android/tools/build/apkzlib/7.1…
+5e14677ed7c265731a4cb4ec99e1f352daaafb596f21f88e367220b3554b1a25 | https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-mod…
+76ade53f054bb250e93cbd29d82e1c9736ea64663d8faebef0f7deb3f1a08c3c | https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-mod…
+4f430764d6dd337aeb94b5b6a307398831c0eaf276a3f639ecdb583819483d08 | https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-mod…
+6d43939f77996074552a72422924bc3644da6035a936d2c7d1326abe7ae1443e | https://dl.google.com/dl/android/maven2/com/android/tools/build/builder/7.1…
+c90102982348647fc58993b00ed675a1f92b50dc9c38563fd594b8cff3c67254 | https://dl.google.com/dl/android/maven2/com/android/tools/build/builder/7.1…
+29a092c1ee48d09f36870f7b95688d05eff6784baac752e9b91ea1acfb1c358e | https://dl.google.com/dl/android/maven2/com/android/tools/build/builder/7.1…
+9c5ed0e13a6e8b426341cd32dcab2dd5b54c52e701a135b4227ccfe8ef3266bf | https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-api/…
+d710594e89c561be3e7aba56b8e5a5690ebbdf82ad6d07019c2e271f39669ea8 | https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-api/…
+4545a1e6e1992613ee49df0d1395be89d625333adcf2db206af652586fbde26c | https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-api/…
+621329051b4261fd390b33607523e123962ad3ad6b91929f37b23187caaa9309 | https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/7.1.…
+05ee8a6fc8b68e140133c4d9547e4790661737359c0d27b142b6fbc44bbe2a02 | https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/7.1.…
+91db6b029dc8b00570c77418f7a28839517bc9cb5a14ab562885b4bcf61efbd5 | https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/7.1.…
+cb36c736ed2ac922e6655ef5c56c34068e63b7d9bd749920b67592859c1e4d81 | https://dl.google.com/dl/android/maven2/com/android/tools/build/manifest-me…
+5b3b27f624a969fd35d3aa7aef91499862a445c13aece4233b1a103a42bc8be3 | https://dl.google.com/dl/android/maven2/com/android/tools/build/manifest-me…
+877dddbbb9e3f045bd835e21c59795cdad1332600354b773a886d25f2544d9c9 | https://dl.google.com/dl/android/maven2/com/android/tools/build/manifest-me…
+f35a8af6babede30bd48bf98d02d2499725f0902d56aeabe778da256b76d0768 | https://dl.google.com/dl/android/maven2/com/android/zipflinger/7.1.0/zipfli…
+88f6f0603aa947fa206e40ea03ea7e019a58eddb3a5a8f19cdab9849b4ad26e0 | https://dl.google.com/dl/android/maven2/com/android/zipflinger/7.1.0/zipfli…
+2c1c70bc240ab779ab4c07d19390c623d05e759c80653fbcdef2eeac299f00ab | https://dl.google.com/dl/android/maven2/com/android/zipflinger/7.1.0/zipfli…
+96623d7afc374800cfdc4eb1e49efdb1b17d762fbe9c7de0e46980de14473170 | https://plugins.gradle.org/m2/com/google/protobuf/protobuf-bom/3.19.1/proto…
+24f7d0d91797ed230a6d3da93cd80590a4c3aa9a27249f6025b5c6da078edde7 | https://plugins.gradle.org/m2/com/google/protobuf/protobuf-java/3.19.1/prot…
+5de4666f7f6b003d982f48f18c8e22facef6707365a74e20df7cbad98c931dd7 | https://plugins.gradle.org/m2/com/google/protobuf/protobuf-java/3.19.1/prot…
+83d413b2a79d6357d2ca78fd623143424e8f6ecc72cfa83bf2ae2ae258a93a44 | https://plugins.gradle.org/m2/com/google/protobuf/protobuf-parent/3.19.1/pr…
fcfb09fb0ea0aa97d3cfe7ea792398081348e468f126b3603cb3803f240197f0 | https://plugins.gradle.org/m2/com/squareup/javawriter/2.5.0/javawriter-2.5.…
e1abd7f1116cf5e0c59947693e2189208ec94296b2a3394c959e3511d399a7b0 | https://plugins.gradle.org/m2/com/squareup/javawriter/2.5.0/javawriter-2.5.…
-1d8518e3ac7532a104e4f7be77def37c982e530723c6bdb3d67708cce2b0c2c4 | https://plugins.gradle.org/m2/com/sun/activation/all/1.2.0/all-1.2.0.pom
-993302b16cd7056f21e779cc577d175a810bb4900ef73cd8fbf2b50f928ba9ce | https://plugins.gradle.org/m2/com/sun/activation/javax.activation/1.2.0/jav…
-f879b6e945854c6900b0dbee1c8384d7ab3de7e157fd7ac84937405c416d2a5e | https://plugins.gradle.org/m2/com/sun/activation/javax.activation/1.2.0/jav…
-c33e67a0807095f02a0e2da139412dd7c4f9cc1a4c054b3e434f96831ba950f4 | https://plugins.gradle.org/m2/com/sun/istack/istack-commons-runtime/2.21/is…
-ebe7137b5fbfd050545f9a7f3f339ae55beb0b53755071b4fd62aa024c626d1c | https://plugins.gradle.org/m2/com/sun/istack/istack-commons-runtime/2.21/is…
-c3071277f89b162982606b4e65c92077212efb6cbf1bdc365c51bd0b57ac818c | https://plugins.gradle.org/m2/com/sun/istack/istack-commons/2.21/istack-com…
-b25e0693de21cb92b039a2e4608f396590fb8773108f10d6dc9f1465f03b5be9 | https://plugins.gradle.org/m2/com/sun/xml/bind/jaxb-bom-ext/2.2.11/jaxb-bom…
-b5301b711c01547e571b615f9a0832ee525d34a4ce3372f53907a87cf20b0480 | https://plugins.gradle.org/m2/com/sun/xml/bind/mvn/jaxb-parent/2.2.11/jaxb-…
-21918cb8e4eda67f24251e909a5d81672201d93604c4ffbf33522ad836a58e90 | https://plugins.gradle.org/m2/com/sun/xml/bind/mvn/jaxb-runtime-parent/2.2.…
-9a398c699a5d3f3b56f1056c68890ede25d94a12d98eabc2a473733e6ab2362c | https://plugins.gradle.org/m2/com/sun/xml/bind/mvn/jaxb-txw-parent/2.2.11/j…
-27a77db909f3c2833c0b1a37c55af1db06045118ad2eed96ce567b6632bce038 | https://plugins.gradle.org/m2/com/sun/xml/fastinfoset/FastInfoset/1.2.13/Fa…
-b7505e0ecf7d495b4daa3e6569f71611d1a789dc531cbd92a2025922ff2655d3 | https://plugins.gradle.org/m2/com/sun/xml/fastinfoset/FastInfoset/1.2.13/Fa…
-fd0857899f1067e0287c2ffd91e38f967a26bd405b83a34650c2742cee9fc261 | https://plugins.gradle.org/m2/com/sun/xml/fastinfoset/fastinfoset-project/1…
-4241dfa94e711d435f29a4604a3e2de5c4aa3c165e23bd066be6fc1fc4309569 | https://plugins.gradle.org/m2/commons-codec/commons-codec/1.10/commons-code…
-bdb8db7012d112a6e3ea8fdb7c510b300d99eff0819d27dddba9c43397ea4cfb | https://plugins.gradle.org/m2/commons-codec/commons-codec/1.10/commons-code…
-cc6a41dc3eaacc9e440a6bd0d2890b20d36b4ee408fe2d67122f328bb6e01581 | https://plugins.gradle.org/m2/commons-io/commons-io/2.4/commons-io-2.4.jar
-b2b5dd46cf998fa626eb6f8a1c114f6167c8d392694164e62533e5898e9b31f2 | https://plugins.gradle.org/m2/commons-io/commons-io/2.4/commons-io-2.4.pom
-daddea1ea0be0f56978ab3006b8ac92834afeefbd9b7e4e6316fca57df0fa636 | https://plugins.gradle.org/m2/commons-logging/commons-logging/1.2/commons-l…
-c91ab5aa570d86f6fd07cc158ec6bc2c50080402972ee9179fe24100739fbb20 | https://plugins.gradle.org/m2/commons-logging/commons-logging/1.2/commons-l…
-74fa208043740642f7e6eb09faba15965218ad2f50ce3020efb100136e4b591c | https://plugins.gradle.org/m2/it/unimi/dsi/fastutil/7.2.0/fastutil-7.2.0.jar
-953b116521a73575eee990e3f2c36a892fb088bb2d9a3027c82193cb7a013ef7 | https://plugins.gradle.org/m2/it/unimi/dsi/fastutil/7.2.0/fastutil-7.2.0.pom
-91c77044a50c481636c32d916fd89c9118a72195390452c81065080f957de7ff | https://plugins.gradle.org/m2/javax/inject/javax.inject/1/javax.inject-1.jar
-943e12b100627804638fa285805a0ab788a680266531e650921ebfe4621a8bfa | https://plugins.gradle.org/m2/javax/inject/javax.inject/1/javax.inject-1.pom
-b5e60cd8b7b5ff01ce4a74c5dd008f4fbd14ced3495d0b47b85cfedc182211f2 | https://plugins.gradle.org/m2/javax/xml/bind/jaxb-api/2.2.12-b140109.1041/j…
-2092a7d8d9bc5698c59b094bdea46622915c48c83ae66d5b5ad549c7bf16155b | https://plugins.gradle.org/m2/javax/xml/bind/jaxb-api/2.2.12-b140109.1041/j…
-281440811268e65d9e266b3cc898297e214e04f09740d0386ceeb4a8923d63bf | https://plugins.gradle.org/m2/net/java/jvnet-parent/1/jvnet-parent-1.pom
-30f5789efa39ddbf96095aada3fc1260c4561faf2f714686717cb2dc5049475a | https://plugins.gradle.org/m2/net/java/jvnet-parent/3/jvnet-parent-3.pom
-471395735549495297c8ff939b9a32e08b91302020ff773586d27e497abb8fbb | https://plugins.gradle.org/m2/net/java/jvnet-parent/4/jvnet-parent-4.pom
-26c5856e954b5f864db76f13b86919b59c6eecf9fd930b96baa8884626baf2f5 | https://plugins.gradle.org/m2/net/sf/jopt-simple/jopt-simple/4.9/jopt-simpl…
-7af7e2d8b24b4798f04c2b7da24c9fbd1b7557b4e017c2054481565916079092 | https://plugins.gradle.org/m2/net/sf/jopt-simple/jopt-simple/4.9/jopt-simpl…
-f264dd9f79a1fde10ce5ecc53221eff24be4c9331c830b7d52f2f08a7b633de2 | https://plugins.gradle.org/m2/net/sf/kxml/kxml2/2.3.0/kxml2-2.3.0.jar
-31ce606f4e9518936299bb0d27c978fa61e185fd1de7c9874fe959a53e34a685 | https://plugins.gradle.org/m2/net/sf/kxml/kxml2/2.3.0/kxml2-2.3.0.pom
-75bc89695fa66e75374ecda439b802406f0ab1d826dd386eed0a23b1f0a9d264 | https://plugins.gradle.org/m2/net/sf/proguard/proguard-base/6.0.3/proguard-…
-2a823d79f2675582a988d539466d1b175e939782efbe0f6e61f06cb165ed4907 | https://plugins.gradle.org/m2/net/sf/proguard/proguard-base/6.0.3/proguard-…
-cc12b1168e521491dd0e687cfebec11a4af874b22af70e10cf2a05b47ca00c8f | https://plugins.gradle.org/m2/net/sf/proguard/proguard-gradle/6.0.3/proguar…
-5a5c7317d68ce80d1d40c9d8bd4e38814d42d1b16c265146e333634833a35a57 | https://plugins.gradle.org/m2/net/sf/proguard/proguard-gradle/6.0.3/proguar…
-d87266bfd2312c3b036c4ac709310afa35c448ceb18027c3b87a33d03c6de0a0 | https://plugins.gradle.org/m2/net/sf/proguard/proguard-parent/6.0.3/proguar…
-401877d5e70ad599e9b6cff18434ea0332f637b51f8ec68352646c836f9bb2a4 | https://plugins.gradle.org/m2/org/antlr/antlr4-master/4.5.3/antlr4-master-4…
-a32de739cfdf515774e696f91aa9697d2e7731e5cb5045ca8a4b657f8b1b4fb4 | https://plugins.gradle.org/m2/org/antlr/antlr4/4.5.3/antlr4-4.5.3.jar
-8a4e4b32eedaa72976a757e12cf1dfe742725db0b7311bf176dd937ba4236384 | https://plugins.gradle.org/m2/org/antlr/antlr4/4.5.3/antlr4-4.5.3.pom
-ff513db0361fd41237bef4784968bc15aae478d4ec0a9496f811072ccaf3841d | https://plugins.gradle.org/m2/org/apache/apache/13/apache-13.pom
-36c2f2f979ac67b450c0cb480e4e9baf6b40f3a681f22ba9692287d1139ad494 | https://plugins.gradle.org/m2/org/apache/apache/15/apache-15.pom
-9f85ff2fd7d6cb3097aa47fb419ee7f0ebe869109f98aba9f4eca3f49e74a40e | https://plugins.gradle.org/m2/org/apache/apache/16/apache-16.pom
-7831307285fd475bbc36b20ae38e7882f11c3153b1d5930f852d44eda8f33c17 | https://plugins.gradle.org/m2/org/apache/apache/18/apache-18.pom
-4946e60a547c8eda69f3bc23c5b6f0dadcf8469ea49b1d1da7de34aecfcf18dd | https://plugins.gradle.org/m2/org/apache/apache/9/apache-9.pom
-2c1542faf343185b7cab9c3d55c8ae5471d6d095d3887a4adefdbdf2984dc0b6 | https://plugins.gradle.org/m2/org/apache/commons/commons-compress/1.12/comm…
-b787d574c851505e76212968b9ae1641ea79804aef7f5a2cee2a01cd4055213a | https://plugins.gradle.org/m2/org/apache/commons/commons-compress/1.12/comm…
-467ae650442e876867379094e7518dfdd67d22c5352ebd39808c84259e9790ba | https://plugins.gradle.org/m2/org/apache/commons/commons-parent/25/commons-…
-3a2e69d06d641d1f3b293126dc9e2e4ea6563bf8c36c87e0ab6fa4292d04b79c | https://plugins.gradle.org/m2/org/apache/commons/commons-parent/34/commons-…
-7098a1ab8336ecd4c9dc21cbbcac869f82c66f64b8ac4f7988d41b4fcb44e49a | https://plugins.gradle.org/m2/org/apache/commons/commons-parent/35/commons-…
-87cd27e1a02a5c3eb6d85059ce98696bb1b44c2b8b650f0567c86df60fa61da7 | https://plugins.gradle.org/m2/org/apache/commons/commons-parent/39/commons-…
-c03f813195e7a80e3608d0ddd8da80b21696a4c92a6a2298865bf149071551c7 | https://plugins.gradle.org/m2/org/apache/httpcomponents/httpclient/4.5.6/ht…
-7efc1241e73e7fbb268bfd33242d11ebd3ca07061d7d85f2962dc32a0f0b8855 | https://plugins.gradle.org/m2/org/apache/httpcomponents/httpclient/4.5.6/ht…
-b042b41f2391edb00d35f7f4e509aed2123648c1d246ce58d0f7b905c9fe1f73 | https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcomponents-clie…
-61e9427d4be326c307a7f16ba828d1cb3b14713c9b04fc8ba992a58f376c3136 | https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcomponents-core…
-caaf967d94afb21753f36082c6086206bd1f48825ff596932cceba72b65d39fa | https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcomponents-pare…
-78ba1096561957db1b55200a159b648876430342d15d461277e62360da19f6fd | https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcore/4.4.10/htt…
-c5c12066df2b3b88a89a2c8602b81ea9a61627e976e5129eea1899ebbaea392b | https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcore/4.4.10/htt…
-0b2b1102c18d3c7e05a77214b9b7501a6f6056174ae5604e0e256776eda7553e | https://plugins.gradle.org/m2/org/apache/httpcomponents/httpmime/4.5.6/http…
-dfbfd6ffe2a784ca9817c46365aa7f8a578320b805bde39d6f55a0b09d8aa8ca | https://plugins.gradle.org/m2/org/apache/httpcomponents/httpmime/4.5.6/http…
-7043dee4e9e7175e93e0b36f45b1ec1ecb893c5f755667e8b916eb8dd201c6ca | https://plugins.gradle.org/m2/org/bouncycastle/bcpkix-jdk15on/1.56/bcpkix-j…
-321668fc474a73140eb9cc73c779f1ebb9f60948aade3beddee082ecefcf0259 | https://plugins.gradle.org/m2/org/bouncycastle/bcpkix-jdk15on/1.56/bcpkix-j…
-963e1ee14f808ffb99897d848ddcdb28fa91ddda867eb18d303e82728f878349 | https://plugins.gradle.org/m2/org/bouncycastle/bcprov-jdk15on/1.56/bcprov-j…
-8fdc3336e7b01873193ba9c48b87de7d788dc0954d1eb45c322492627a4b5c6e | https://plugins.gradle.org/m2/org/bouncycastle/bcprov-jdk15on/1.56/bcprov-j…
-64b02691c8b9d4e7700f8ee2e742dce7ea2c6e81e662b7522c9ee3bf568c040a | https://plugins.gradle.org/m2/org/checkerframework/checker-qual/2.5.2/check…
-dc4cd438a36462d013c2338c8e206d102a322a00f33729e8955ee219859c9ede | https://plugins.gradle.org/m2/org/checkerframework/checker-qual/2.5.2/check…
-92654f493ecfec52082e76354f0ebf87648dc3d5cec2e3c3cdb947c016747a53 | https://plugins.gradle.org/m2/org/codehaus/mojo/animal-sniffer-annotations/…
-e956ab5d2eb48fabae12300d0cd2d3294d4a2a41abc2068c23cb4d60ad76cbe5 | https://plugins.gradle.org/m2/org/codehaus/mojo/animal-sniffer-annotations/…
-18a03df16e2a184c582db7b125633c15fb7714027a84c1b532d72933dc08b81f | https://plugins.gradle.org/m2/org/codehaus/mojo/animal-sniffer-parent/1.17/…
-fc648dcdc404f8bf66e0583914ecf980176618201227bea114fae85043cb755e | https://plugins.gradle.org/m2/org/codehaus/mojo/mojo-parent/40/mojo-parent-…
-a52e6850f070dc9f7a2a51d0b25dfaafd49b0b9bf8196db6c0b3c5b7c94d8d38 | https://plugins.gradle.org/m2/org/glassfish/jaxb/jaxb-bom/2.2.11/jaxb-bom-2…
-37bcaee8ebb04362c8352a5bf6221b86967ecdab5164c696b10b9a2bb587b2aa | https://plugins.gradle.org/m2/org/glassfish/jaxb/jaxb-core/2.2.11/jaxb-core…
-ec31409f203bcabf99534f59231ec0576d875d4d4b7349b09566a7a8c8179b24 | https://plugins.gradle.org/m2/org/glassfish/jaxb/jaxb-core/2.2.11/jaxb-core…
-a874f2351cfba8e2946be3002d10c18a6da8f21b52ba2acf52f2b85d5520ed70 | https://plugins.gradle.org/m2/org/glassfish/jaxb/jaxb-runtime/2.2.11/jaxb-r…
-e5327b31b595ab8143e97836d5ccdf85feb91e7ff5666f7b26913632facca4aa | https://plugins.gradle.org/m2/org/glassfish/jaxb/jaxb-runtime/2.2.11/jaxb-r…
-272a3ccad45a4511351920cd2a8633c53cab8d5220c7a92954da5526bb5eafea | https://plugins.gradle.org/m2/org/glassfish/jaxb/txw2/2.2.11/txw2-2.2.11.jar
-8514cb724b4fca59a5cf272b632e539bd0a0f3cacf1844082d0a173a86406bd8 | https://plugins.gradle.org/m2/org/glassfish/jaxb/txw2/2.2.11/txw2-2.2.11.pom
-1345f11ba606d15603d6740551a8c21947c0215640770ec67271fe78bea97cf5 | https://plugins.gradle.org/m2/org/jdom/jdom2/2.0.6/jdom2-2.0.6.jar
-47b23a79fe336b741b82434c6e049d68165256e405e75c10921fd72fa8a65d8d | https://plugins.gradle.org/m2/org/jdom/jdom2/2.0.6/jdom2-2.0.6.pom
-ace2a10dc8e2d5fd34925ecac03e4988b2c0f851650c94b8cef49ba1bd111478 | https://plugins.gradle.org/m2/org/jetbrains/annotations/13.0/annotations-13…
-965aeb2bedff369819bdde1bf7a0b3b89b8247dd69c88b86375d76163bb8c397 | https://plugins.gradle.org/m2/org/jetbrains/annotations/13.0/annotations-13…
-64583199ea5a54aefd1bd1595288925f784226ee562d1dd279011c6075b3d7a4 | https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.3.50/ko…
-8745181e5a3e0bafefd46309c6b810df7253f379feb985131eaf8d4d9c302635 | https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.3.50/ko…
-8ce678e88e4ba018b66dacecf952471e4d7dfee156a8a819760a5a5ff29d323c | https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-common/1.3…
-b6396fe802d7bc76a381485e266cb975f3b2f2d3dd9bf7213aab6ca27a561fc1 | https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-common/1.3…
-9a026639e76212f8d57b86d55b075394c2e009f1979110751d34c05c5f75d57b | https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.5…
-a3aef46388ee96e975110db51df3ab794c87d892bdbc6d5a49bf926e4779438b | https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.5…
-1b351fb6e09c14b55525c74c1f4cf48942eae43c348b7bc764a5e6e423d4da0c | https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.5…
-8674b002f66a2948981c4f6cb5987ec62ff3d54b6a2799a6d2cd23afb83f2ad3 | https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.5…
-e6f05746ee0366d0b52825a090fac474dcf44082c9083bbb205bd16976488d6c | https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib/1.3.50/kot…
-704fd78960ae046428f69bcd5b951c122e4c180c9400238a866e12cb18494a61 | https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib/1.3.50/kot…
-1917871c8deb468307a584680c87a44572f5a8b0b98c6d397fc0f5f86596dbe7 | https://plugins.gradle.org/m2/org/jetbrains/trove4j/trove4j/20160824/trove4…
-c94b0b73790c70c709bcd445a01247908888211e38cc59e946ff6fe900785ae9 | https://plugins.gradle.org/m2/org/jetbrains/trove4j/trove4j/20160824/trove4…
-a31ff7d77163c0deb09e7fee59ad35ae44c2cee2cc8552a116ccd1583d813fb4 | https://plugins.gradle.org/m2/org/jvnet/staxex/stax-ex/1.7.7/stax-ex-1.7.7.…
-27cb450b6c367a00bd8362519907f84defac7b12086c64d4d6e97e33ab873ead | https://plugins.gradle.org/m2/org/jvnet/staxex/stax-ex/1.7.7/stax-ex-1.7.7.…
-2f1a6387219c3a6cc4856481f221b03bd9f2408a326d416af09af5d6f608c1f4 | https://plugins.gradle.org/m2/org/ow2/asm/asm-analysis/6.0/asm-analysis-6.0…
-d3aaf42e40e3e24aabda53b5de4de5e17cb78e06549bf37312dca6c77e251054 | https://plugins.gradle.org/m2/org/ow2/asm/asm-analysis/6.0/asm-analysis-6.0…
-f1bce5c648a96a017bdcd01fe5d59af9845297fd7b79b81c015a6fbbd9719abf | https://plugins.gradle.org/m2/org/ow2/asm/asm-commons/6.0/asm-commons-6.0.j…
-90f4f29473afb957229016eb5741954976cc1b67bc049b3981c0d1e653ad5cdd | https://plugins.gradle.org/m2/org/ow2/asm/asm-commons/6.0/asm-commons-6.0.p…
-791d064bb9ecc9a46d43bc9efecd74c91464dfc451f321b802d2261e2ccd7d14 | https://plugins.gradle.org/m2/org/ow2/asm/asm-parent/6.0/asm-parent-6.0.pom
-887998fb69727c8759e4d253f856822801e33f9fd4caa566b3ac58ee92106215 | https://plugins.gradle.org/m2/org/ow2/asm/asm-tree/6.0/asm-tree-6.0.jar
-36887e0d7fdb185a92378a38ea45e596a97f10f385c5d050eb6252454ee701b4 | https://plugins.gradle.org/m2/org/ow2/asm/asm-tree/6.0/asm-tree-6.0.pom
-356afebdb0f870175262e5188f8709a3b17aa2a5a6a4b0340b04d4b449bca5f6 | https://plugins.gradle.org/m2/org/ow2/asm/asm-util/6.0/asm-util-6.0.jar
-3cdfc61f988d167b97503419da82a5808b20f4205aeb46c394e6e7ffd3211f12 | https://plugins.gradle.org/m2/org/ow2/asm/asm-util/6.0/asm-util-6.0.pom
-dd8971c74a4e697899a8e95caae4ea8760ea6c486dc6b97b1795e75760420461 | https://plugins.gradle.org/m2/org/ow2/asm/asm/6.0/asm-6.0.jar
-c2bc497e197112e699085426bbb45b1ab0be8002da68267a3b1f450a0312c32e | https://plugins.gradle.org/m2/org/ow2/asm/asm/6.0/asm-6.0.pom
-51215c67d2c068d8b7d2f6f80f51372a098075deccc448d4bdd7b987ba8328fb | https://plugins.gradle.org/m2/org/ow2/ow2/1.3/ow2-1.3.pom
+cda4de455fab48ff0bcb7c48b4639447d4de859a7afc30a094a986f0936beba2 | https://plugins.gradle.org/m2/org/ow2/asm/asm/9.1/asm-9.1.jar
+c683a90dd68f2b1788cbdfc4647ea9405ef5925b371c199f8fd39d44d3cede8d | https://plugins.gradle.org/m2/org/ow2/asm/asm/9.1/asm-9.1.pom
+0f8a1b116e760b8fe6389c51b84e4b07a70fc11082d4f936e453b583dd50b43b | https://plugins.gradle.org/m2/org/ow2/ow2/1.5/ow2-1.5.pom
b51f8867c92b6a722499557fc3a1fdea77bdf9ef574722fe90ce436a29559454 | https://plugins.gradle.org/m2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom
-fb40265f982548212ff82e362e59732b2187ec6f0d80182885c14ef1f982827a | https://plugins.gradle.org/m2/org/sonatype/oss/oss-parent/9/oss-parent-9.pom
-
=====================================
projects/oss-licenses-plugin/sort-dependencies-pr-268.patch
=====================================
@@ -0,0 +1,144 @@
+From 1e7b29bc4db8cbcfc468e3df4a649113efa3b876 Mon Sep 17 00:00:00 2001
+From: Da Risk <da_risk(a)geekorum.com>
+Date: Wed, 17 May 2023 16:42:10 -0400
+Subject: [PATCH 1/2] oss-license-plugin: sort ArtifactInfo into list
+
+This should ensure that the output of third_party_licenses and third_party_licenses_metadata is sorted.
+Sorting the output will make it reproducible regardless of the input ordering.
+---
+ .../oss/licenses/plugin/DependencyTask.groovy | 5 +++--
+ .../gms/oss/licenses/plugin/LicensesTask.groovy | 4 ++--
+ .../oss/licenses/plugin/DependencyTaskTest.java | 17 ++++++++++++-----
+ 3 files changed, 17 insertions(+), 9 deletions(-)
+
+diff --git a/oss-licenses-plugin/src/main/groovy/com/google/android/gms/oss/licenses/plugin/DependencyTask.groovy b/oss-licenses-plugin/src/main/groovy/com/google/android/gms/oss/licenses/plugin/DependencyTask.groovy
+index c7848735..5dbfbb30 100644
+--- a/oss-licenses-plugin/src/main/groovy/com/google/android/gms/oss/licenses/plugin/DependencyTask.groovy
++++ b/oss-licenses-plugin/src/main/groovy/com/google/android/gms/oss/licenses/plugin/DependencyTask.groovy
+@@ -76,7 +76,7 @@ abstract class DependencyTask extends DefaultTask {
+ } as AppDependencies
+ }
+
+- private static Set<ArtifactInfo> convertDependenciesToArtifactInfo(
++ private static List<ArtifactInfo> convertDependenciesToArtifactInfo(
+ AppDependencies appDependencies
+ ) {
+ return appDependencies.libraryList.stream()
+@@ -88,7 +88,8 @@ abstract class DependencyTask extends DefaultTask {
+ library.mavenLibrary.version
+ )
+ }
+- .collect(Collectors.toUnmodifiableSet())
++ .sorted(Comparator.comparing { it.toString() })
++ .collect(Collectors.toUnmodifiableList())
+ }
+
+ private static void initOutput(File outputDir) {
+diff --git a/oss-licenses-plugin/src/main/groovy/com/google/android/gms/oss/licenses/plugin/LicensesTask.groovy b/oss-licenses-plugin/src/main/groovy/com/google/android/gms/oss/licenses/plugin/LicensesTask.groovy
+index 851846b5..43db6652 100644
+--- a/oss-licenses-plugin/src/main/groovy/com/google/android/gms/oss/licenses/plugin/LicensesTask.groovy
++++ b/oss-licenses-plugin/src/main/groovy/com/google/android/gms/oss/licenses/plugin/LicensesTask.groovy
+@@ -107,14 +107,14 @@ abstract class LicensesTask extends DefaultTask {
+ writeMetadata()
+ }
+
+- private static Set<ArtifactInfo> loadDependenciesJson(File jsonFile) {
++ private static List<ArtifactInfo> loadDependenciesJson(File jsonFile) {
+ def allDependencies = new JsonSlurper().parse(jsonFile)
+ def artifactInfoSet = new HashSet<ArtifactInfo>()
+ for (entry in allDependencies) {
+ ArtifactInfo artifactInfo = artifactInfoFromEntry(entry)
+ artifactInfoSet.add(artifactInfo)
+ }
+- artifactInfoSet.asImmutable()
++ artifactInfoSet.toList().asImmutable()
+ }
+
+ private void addDebugLicense() {
+diff --git a/oss-licenses-plugin/src/test/java/com/google/android/gms/oss/licenses/plugin/DependencyTaskTest.java b/oss-licenses-plugin/src/test/java/com/google/android/gms/oss/licenses/plugin/DependencyTaskTest.java
+index e35a5490..50760521 100644
+--- a/oss-licenses-plugin/src/test/java/com/google/android/gms/oss/licenses/plugin/DependencyTaskTest.java
++++ b/oss-licenses-plugin/src/test/java/com/google/android/gms/oss/licenses/plugin/DependencyTaskTest.java
+@@ -29,6 +29,9 @@
+ import java.io.OutputStream;
+ import java.lang.reflect.Type;
+ import java.util.Collection;
++import java.util.Comparator;
++import java.util.List;
++import java.util.stream.Collectors;
+ import org.gradle.api.Project;
+ import org.gradle.testfixtures.ProjectBuilder;
+ import org.junit.Before;
+@@ -84,8 +87,8 @@ public void testAction_valuesConvertedToJson() throws Exception {
+ File outputJson = new File(outputDir, "test.json");
+ dependencyTask.getDependenciesJson().set(outputJson);
+ ImmutableSet<ArtifactInfo> expectedArtifacts = ImmutableSet.of(
+- new ArtifactInfo("org.group.id", "artifactId", "1.0.0"),
+- new ArtifactInfo("org.group.other", "other-artifact", "3.2.1")
++ new ArtifactInfo("org.group.other", "other-artifact", "3.2.1"),
++ new ArtifactInfo("org.group.id", "artifactId", "1.0.0")
+ );
+ AppDependencies appDependencies = createAppDependencies(expectedArtifacts);
+ File protoFile = writeAppDependencies(appDependencies, temporaryFolder.newFile());
+@@ -102,8 +105,8 @@ public void testAction_withNonMavenDeps_nonMavenDepsIgnored() throws Exception {
+ File outputJson = new File(outputDir, "test.json");
+ dependencyTask.getDependenciesJson().set(outputJson);
+ ImmutableSet<ArtifactInfo> expectedArtifacts = ImmutableSet.of(
+- new ArtifactInfo("org.group.id", "artifactId", "1.0.0"),
+- new ArtifactInfo("org.group.other", "other-artifact", "3.2.1")
++ new ArtifactInfo("org.group.other", "other-artifact", "3.2.1"),
++ new ArtifactInfo("org.group.id", "artifactId", "1.0.0")
+ );
+ AppDependencies appDependencies = createAppDependencies(expectedArtifacts).toBuilder()
+ .addLibrary(Library.getDefaultInstance()) // There aren't any other library types supported.
+@@ -131,11 +134,15 @@ public void testAction_depFileAbsent_writesAbsentDep() throws Exception {
+ private void verifyExpectedDependencies(ImmutableSet<ArtifactInfo> expectedArtifacts,
+ File outputJson) throws Exception {
+ Gson gson = new Gson();
++ List<ArtifactInfo> expectedArtifactsSorted = expectedArtifacts
++ .stream()
++ .sorted(Comparator.comparing(ArtifactInfo::toString))
++ .collect(Collectors.toUnmodifiableList());
+ try (FileReader reader = new FileReader(outputJson)) {
+ Type collectionOfArtifactInfo = new TypeToken<Collection<ArtifactInfo>>() {
+ }.getType();
+ Collection<ArtifactInfo> jsonArtifacts = gson.fromJson(reader, collectionOfArtifactInfo);
+- assertThat(jsonArtifacts).containsExactlyElementsIn(expectedArtifacts);
++ assertThat(jsonArtifacts).containsExactlyElementsIn(expectedArtifactsSorted).inOrder();
+ }
+ }
+
+
+From 0ae426b1fe52ef70770d10050402413a22bd8dba Mon Sep 17 00:00:00 2001
+From: Da Risk <da_risk(a)geekorum.com>
+Date: Fri, 19 May 2023 21:22:26 -0400
+Subject: [PATCH 2/2] oss-license-plugin: Sort dependencies loaded for
+ LicensesTask
+
+---
+ .../android/gms/oss/licenses/plugin/LicensesTask.groovy | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/oss-licenses-plugin/src/main/groovy/com/google/android/gms/oss/licenses/plugin/LicensesTask.groovy b/oss-licenses-plugin/src/main/groovy/com/google/android/gms/oss/licenses/plugin/LicensesTask.groovy
+index 43db6652..7dac8aae 100644
+--- a/oss-licenses-plugin/src/main/groovy/com/google/android/gms/oss/licenses/plugin/LicensesTask.groovy
++++ b/oss-licenses-plugin/src/main/groovy/com/google/android/gms/oss/licenses/plugin/LicensesTask.groovy
+@@ -25,6 +25,7 @@ import org.gradle.api.tasks.OutputFile
+ import org.gradle.api.tasks.TaskAction
+ import org.slf4j.LoggerFactory
+
++import java.util.stream.Collectors
+ import java.util.zip.ZipEntry
+ import java.util.zip.ZipFile
+
+@@ -114,7 +115,9 @@ abstract class LicensesTask extends DefaultTask {
+ ArtifactInfo artifactInfo = artifactInfoFromEntry(entry)
+ artifactInfoSet.add(artifactInfo)
+ }
+- artifactInfoSet.toList().asImmutable()
++ artifactInfoSet.stream()
++ .sorted(Comparator.comparing { it.toString() })
++ .collect(Collectors.toUnmodifiableList())
+ }
+
+ private void addDebugLicense() {
=====================================
projects/oss-licenses-plugin/sort-dependencies.diff deleted
=====================================
@@ -1,40 +0,0 @@
-diff --git a/oss-licenses-plugin/src/main/groovy/com/google/android/gms/oss/licenses/plugin/ArtifactInfo.groovy b/oss-licenses-plugin/src/main/groovy/com/google/android/gms/oss/licenses/plugin/ArtifactInfo.groovy
-index d6d854d..622072d 100644
---- a/oss-licenses-plugin/src/main/groovy/com/google/android/gms/oss/licenses/plugin/ArtifactInfo.groovy
-+++ b/oss-licenses-plugin/src/main/groovy/com/google/android/gms/oss/licenses/plugin/ArtifactInfo.groovy
-@@ -16,7 +16,7 @@
-
- package com.google.android.gms.oss.licenses.plugin
-
--class ArtifactInfo {
-+class ArtifactInfo implements Comparable<ArtifactInfo> {
- private String group
- private String name
- private String fileLocation
-@@ -47,4 +47,13 @@ class ArtifactInfo {
- String getVersion() {
- return version
- }
-+
-+ String toString() {
-+ return "$group:$name:$version"
-+ }
-+
-+ @Override
-+ int compareTo(ArtifactInfo other) {
-+ return toString().compareTo(other.toString())
-+ }
- }
-diff --git a/oss-licenses-plugin/src/main/groovy/com/google/android/gms/oss/licenses/plugin/DependencyTask.groovy b/oss-licenses-plugin/src/main/groovy/com/google/android/gms/oss/licenses/plugin/DependencyTask.groovy
-index 75f6527..26a9bf7 100644
---- a/oss-licenses-plugin/src/main/groovy/com/google/android/gms/oss/licenses/plugin/DependencyTask.groovy
-+++ b/oss-licenses-plugin/src/main/groovy/com/google/android/gms/oss/licenses/plugin/DependencyTask.groovy
-@@ -47,7 +47,7 @@ import org.slf4j.LoggerFactory
- */
- class DependencyTask extends DefaultTask {
- protected Set<String> artifactSet = []
-- protected Set<ArtifactInfo> artifactInfos = []
-+ protected TreeSet<ArtifactInfo> artifactInfos = []
- protected static final String LOCAL_LIBRARY_VERSION = "unspecified"
- private static final String TEST_PREFIX = "test"
- private static final String ANDROID_TEST_PREFIX = "androidTest"
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/0…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/0…
You're receiving this email because of your account on gitlab.torproject.org.
[View Less]
1
0

[Git][tpo/applications/tor-browser-build][main] 3 commits: Bug 41494: Update GeckoView build scripts for ESR140.
by Pier Angelo Vendrame (@pierov) 18 Jun '25
by Pier Angelo Vendrame (@pierov) 18 Jun '25
18 Jun '25
Pier Angelo Vendrame pushed to branch main at The Tor Project / Applications / tor-browser-build
Commits:
124d0464 by Pier Angelo Vendrame at 2025-06-17T15:07:49+02:00
Bug 41494: Update GeckoView build scripts for ESR140.
- - - - -
86c4fa8a by Pier Angelo Vendrame at 2025-06-17T15:08:21+02:00
fixup! Bug 41494: Update GeckoView build scripts for ESR140.
Remove Mozilla's A-S binaries from Gradle dependencies.
- - - - -
59b05b0c by Pier Angelo Vendrame at 2025-06-17T15:08:56+02:00
NOT FOR …
[View More]MERGE: Use a custom git hash for GeckoView.
- - - - -
11 changed files:
- projects/geckoview/build
- projects/geckoview/build_ac_fenix
- projects/geckoview/build_common
- projects/geckoview/config
- projects/geckoview/gradle-dependencies-list.txt
- projects/oss-licenses-plugin/build
- projects/oss-licenses-plugin/build-customization.diff
- projects/oss-licenses-plugin/config
- projects/oss-licenses-plugin/gradle-dependencies-list.txt
- + projects/oss-licenses-plugin/sort-dependencies-pr-268.patch
- − projects/oss-licenses-plugin/sort-dependencies.diff
Changes:
=====================================
projects/geckoview/build
=====================================
@@ -43,7 +43,7 @@ echo "Starting ./mach build $(date)"
# Copy the artifacts to the target directory
# Naming convention is the same as Mozilla uses for their artifacts
cp -a obj-*/dist/*.zip $artifactsdir/target.xpt_artifacts.zip
- cp -a obj-*/gradle/build/mobile/android/geckoview_example/outputs/apk/withGeckoBinaries/*/geckoview_example-withGeckoBinaries-*.apk $artifactsdir/geckoview_example.apk
+ cp -a obj-*/gradle/build/mobile/android/geckoview_example/outputs/apk/*/geckoview_example-*.apk $artifactsdir/geckoview_example.apk
./mach python -m mozbuild.action.test_archive common $artifactsdir/target.common.tests.tar.gz
[% END %]
=====================================
projects/geckoview/build_ac_fenix
=====================================
@@ -4,6 +4,8 @@
./mach package-multi-locale --locales en-US $supported_locales
[% END -%]
+objdir=$(cd obj-* && pwd)
+
echo "Building Android Components $(date)"
pushd mobile/android/android-components
gradle $GRADLE_FLAGS assembleGecko -x lint
@@ -40,7 +42,7 @@ gradle $GRADLE_FLAGS -PversionName="$version_name" "assemble$variant"
echo "Build finished, copying the APK(s) to the destination directory $(date)"
mkdir $distdir/[% project %]
-cp app/build/outputs/apk/fenix/$variant/*.apk $distdir/[% project %]
+cp $objdir/gradle/build/mobile/android/fenix/app/outputs/apk/fenix/$variant/*.apk $distdir/[% project %]
echo "Building non optimized $variant Fenix APK for testing"
gradle $GRADLE_FLAGS -PversionName="$version_name" -PdisableOptimization "assemble$variant"
@@ -51,8 +53,8 @@ gradle $GRADLE_FLAGS -PversionName="$version_name" -PtestBuildType="$variant" -P
echo "Test build finished, copying the APKs to the destination directory $(date)"
mkdir $distdir/[% project %]/tests
-cp app/build/outputs/apk/fenix/$variant/*.apk $distdir/[% project %]/tests
-cp app/build/outputs/apk/androidTest/fenix/$variant/*.apk $distdir/[% project %]/tests
+cp $objdir/gradle/build/mobile/android/fenix/app/outputs/apk/fenix/$variant/*.apk $distdir/[% project %]/tests
+cp $objdir/gradle/build/mobile/android/fenix/app/outputs/apk/androidTest/fenix/$variant/*.apk $distdir/[% project %]/tests
popd
=====================================
projects/geckoview/build_common
=====================================
@@ -48,4 +48,10 @@ export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=system
# Create .mozbuild to avoid interactive prompt in configure
mkdir "$HOME/.mozbuild"
+# mach looks for bundletool and avd only in ~/.mozbuild. Maybe an upstream bug?
+mv $rootdir/[% c("input_files_by_name/bundletool") %] $HOME/.mozbuild/bundletool.jar
+mkdir $HOME/.mozbuild/android-device
+touch $HOME/.mozbuild/android-device/avd
+chmod +x $HOME/.mozbuild/android-device/avd
+
[% INCLUDE 'browser-localization' %]
=====================================
projects/geckoview/config
=====================================
@@ -1,9 +1,11 @@
# vim: filetype=yaml sw=2
version: '[% c("abbrev") %]'
filename: 'geckoview-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.[% c("compress_tar") %]'
-git_hash: 'tor-browser-[% c("var/geckoview_version") %]-[% c("var/browser_branch") %]-build[% c("var/browser_build") %]'
-tag_gpg_id: 1
-git_url: https://gitlab.torproject.org/tpo/applications/tor-browser.git
+# git_hash: 'tor-browser-[% c("var/geckoview_version") %]-[% c("var/browser_branch") %]-build[% c("var/browser_build") %]'
+# tag_gpg_id: 1
+# git_url: https://gitlab.torproject.org/tpo/applications/tor-browser.git
+git_url: https://gitlab.torproject.org/pierov/tor-browser.git
+git_hash: 72fe94d01ff1
gpg_keyring:
- boklm.gpg
- brizental.gpg
@@ -37,9 +39,12 @@ var:
- openjdk-17-jdk-headless
# this should be updated when the list of gradle dependencies is changed
# see doc/how-to-create-gradle-dependencies-list.txt
- gradle_dependencies_version: 16
- gradle_version: 8.8
+ gradle_dependencies_version: 17
+ gradle_version: 8.13
glean_parser: 14.0.1
+ # python/mozboot/mozboot/android.py
+ bundletool_version: 1.18.1
+ bundletool_hash: 675786493983787ffa11550bdb7c0715679a44e1643f3ff980a529e9c822595c
variant: beta
has_l10n: '[% !c("var/testbuild") && !c("var/locales").empty %]'
l10n-changesets: '[% exec("git --no-pager show " _ c("git_hash") _ ":browser/locales/l10n-changesets.json", { exec_noco => 1 }) %]'
@@ -49,7 +54,7 @@ targets:
var:
variant: release
nightly:
- git_hash: 'tor-browser-[% c("var/geckoview_version") %]-[% c("var/browser_branch") %]'
+ # git_hash: 'tor-browser-[% c("var/geckoview_version") %]-[% c("var/browser_branch") %]'
tag_gpg_id: 0
var:
variant: nightly
@@ -121,9 +126,12 @@ steps:
- project: oss-licenses-plugin
name: oss-licenses-plugin
pkg_type: build
+ - URL: 'https://github.com/google/bundletool/releases/download/[% c("var/bundletool_version") %]/bundletool-all-[% c("var/bundletool_version") %].jar'
+ name: bundletool
+ sha256sum: '[% c("var/bundletool_hash") %]'
list_toolchain_updates:
- git_hash: tor-browser-128.0b1-14.0-1
+ git_hash: tor-browser-140.0a1-15.0-1
tag_gpg_id: 0
input_files: []
container:
@@ -173,3 +181,6 @@ input_files:
pkg_type: tor-browser
enable: '[% c("var/android_single_arch") && c("var/has_l10n") %]'
- filename: rename-branding-strings.py
+ - URL: 'https://github.com/google/bundletool/releases/download/[% c("var/bundletool_version") %]/bundletool-all-[% c("var/bundletool_version") %].jar'
+ name: bundletool
+ sha256sum: '[% c("var/bundletool_hash") %]'
=====================================
projects/geckoview/gradle-dependencies-list.txt
=====================================
The diff for this file was not included because it is too large.
=====================================
projects/oss-licenses-plugin/build
=====================================
@@ -12,9 +12,10 @@ export PATH=/var/tmp/dist/gradle/bin:$PATH
gradle_repo=/var/tmp/dist/gradle-dependencies
mv $rootdir/[% c('input_files_by_name/gradle-dependencies') %] $gradle_repo
cp -rl $gradle_repo/m2/* $gradle_repo || true
+cp -rl $gradle_repo/dl/android/maven2/* $gradle_repo || true
cd $builddir
-patch -p2 < $rootdir/sort-dependencies.diff
+patch -p2 < $rootdir/sort-dependencies-pr-268.patch
patch -p2 < $rootdir/build-customization.diff
gradle --no-daemon --offline -Dmaven.repo.local=$gradle_repo assemble publish
cd build/repo
=====================================
projects/oss-licenses-plugin/build-customization.diff
=====================================
@@ -1,17 +1,17 @@
diff --git a/oss-licenses-plugin/build.gradle b/oss-licenses-plugin/build.gradle
-index 2a7dd74..f9368e1 100644
+index 863625c..65ad088 100644
--- a/oss-licenses-plugin/build.gradle
+++ b/oss-licenses-plugin/build.gradle
-@@ -15,34 +15,25 @@ dependencies {
+@@ -20,34 +20,25 @@ dependencies {
group = 'com.google.android.gms'
- version = '0.10.4'
+ version = '0.10.6'
-apply plugin: 'maven'
+apply plugin: 'maven-publish'
repositories {
google()
- jcenter()
+ mavenCentral()
+ mavenLocal()
}
=====================================
projects/oss-licenses-plugin/config
=====================================
@@ -1,12 +1,12 @@
-version: 0.10.4
+version: 0.10.6
filename: '[% project %]-[% c("version") %]-[% c("var/build_id") %].tar.[% c("compress_tar") %]'
git_url: https://github.com/google/play-services-plugins.git
-git_hash: c9ed0e48abe2c55dd67f2c2224988d1d690cecc9 # oss-licenses-plugin-v0.10.4
+git_hash: 45ec9c690672f0ff6f86e6221ef64e204b10a228 # oss-licenses-plugin-v0.10.6
var:
# This should be updated when the list of gradle dependencies is changed.
- gradle_dependencies_version: 1
- gradle_version: 8.8
+ gradle_dependencies_version: 2
+ gradle_version: 8.13
container:
use_container: 1
@@ -18,5 +18,5 @@ input_files:
- filename: 'gradle-dependencies-[% c("var/gradle_dependencies_version") %]'
name: gradle-dependencies
exec: '[% INCLUDE "fetch-gradle-dependencies" %]'
+ - filename: sort-dependencies-pr-268.patch
- filename: build-customization.diff
- - filename: sort-dependencies.diff
=====================================
projects/oss-licenses-plugin/gradle-dependencies-list.txt
=====================================
@@ -1,207 +1,37 @@
# On how to update dependencies see doc/how-to-create-gradle-dependencies-list.txt
# Don't forget to update var/gradle_dependencies_version when modifying this file
sha256sum | url
-408d8ed48da2b7b2c8f7216906c1b76a1ecdb9c165cdb52c9eeb32af0cc67f0f | https://maven.google.com/androidx/databinding/databinding-common/3.5.1/data…
-008e3641392787bd3f6e5fe3a56457379cbba8be62ae5a91ba982b7e534a2b37 | https://maven.google.com/androidx/databinding/databinding-common/3.5.1/data…
-b6235dd4ff7457f517e30479fe050a2ae27a2b3ef8ae33d44d9a3d2197911779 | https://maven.google.com/androidx/databinding/databinding-compiler-common/3…
-4a3bfe5d22a4df2490f6180ef1e22a2ea189f42676532d6d7d6ece9b57a2c506 | https://maven.google.com/androidx/databinding/databinding-compiler-common/3…
-4b698a77c578215a7f746e93422757a8e4d6ee9c8a29fdd9f994712f723604ed | https://maven.google.com/com/android/databinding/baseLibrary/3.5.1/baseLibr…
-6659dd657846c519b12ad701815f2009f8d9991c798ca3a5a628e163987aecab | https://maven.google.com/com/android/databinding/baseLibrary/3.5.1/baseLibr…
-9e9618ed7f1d24df2a4365e1719d630d8ac9c2dd31bea3343157a4ae5efa7fb9 | https://maven.google.com/com/android/tools/analytics-library/crash/26.5.1/c…
-215d75a04ddcfa897e12f3c4d204f24e94214385f1f11ddcea4ddcd56ddb5243 | https://maven.google.com/com/android/tools/analytics-library/crash/26.5.1/c…
-8dde1130725461fe827f2a343d353f2b51e8870661fc860d7d5ebddb097ead4e | https://maven.google.com/com/android/tools/analytics-library/protos/26.5.1/…
-7b042861662b26a41e8f71a093cffc78dd8eb746e5ab98a645e1dcf49612bd0a | https://maven.google.com/com/android/tools/analytics-library/protos/26.5.1/…
-ccc2f3b00ec17b11401610ba68553544fc8fc517120e84439ac6eb86b875e18d | https://maven.google.com/com/android/tools/analytics-library/shared/26.5.1/…
-727842ddf56dbf158091a4f113005ec0e2d04ae2c066d7ede9b65ce6a9131aa8 | https://maven.google.com/com/android/tools/analytics-library/shared/26.5.1/…
-3a76984c0fe2e847ca7a8b35b4780ef0447a9d1666946cb8e60466318e0ab5ae | https://maven.google.com/com/android/tools/analytics-library/tracker/26.5.1…
-6327d446e6c59adacad78265fc61ac09ddcb751fe4e62b3697dc9d6534c0c451 | https://maven.google.com/com/android/tools/analytics-library/tracker/26.5.1…
-2c43c82f8c59d8f7a61e3239e1a2dc9f69dc342ec09af9b7c9f69b25337c0b6e | https://maven.google.com/com/android/tools/annotations/26.5.1/annotations-2…
-3caa859d7b198f9f429f50874921f5e05f105112400eed666d5e56a0e8417e09 | https://maven.google.com/com/android/tools/annotations/26.5.1/annotations-2…
-fac0435e08898f89eeeb9ca236bea707155ff816c12205ced285ad53604133ca | https://maven.google.com/com/android/tools/build/aapt2-proto/0.4.0/aapt2-pr…
-a24bdd4e8e374fdcd8cef8d77ea723f147ccd0f25dc6de4fbe290039be904339 | https://maven.google.com/com/android/tools/build/aapt2-proto/0.4.0/aapt2-pr…
-1fd33e7f009a2a0da766cfeec4211a09f548034b015c289a66d75dd8a9302f4a | https://maven.google.com/com/android/tools/build/apksig/3.5.1/apksig-3.5.1.…
-4c9f03d9fbc5accffafd56b0ae677d41ea0a395980a2cc052a7bcefccb2483a9 | https://maven.google.com/com/android/tools/build/apksig/3.5.1/apksig-3.5.1.…
-9f330167cbe973b7db407692f74f4f6453b7ffa5f2048934b06280c2ceee60fa | https://maven.google.com/com/android/tools/build/apkzlib/3.5.1/apkzlib-3.5.…
-f299c423220ae47404b9013e54caec84ea64f45f69885e4dc0e2e66b7095e33e | https://maven.google.com/com/android/tools/build/apkzlib/3.5.1/apkzlib-3.5.…
-39ea3c82b76b6e0c9f9fa88d93e0edc1dd4a0f1dfae0ef6fbf2d451da47e5450 | https://maven.google.com/com/android/tools/build/builder-model/3.5.1/builde…
-466e5005cf0a7c7bad8991b14c70b04457b77d28195ec04ec2baf6495e88f4a2 | https://maven.google.com/com/android/tools/build/builder-model/3.5.1/builde…
-a1b59305584cbcaa078fdc9cfb80871012755b822dd32e8da19add6f7bbcb762 | https://maven.google.com/com/android/tools/build/builder-test-api/3.5.1/bui…
-704e2ad557e5659b98bb8955fbab20977cddb09c06e72825cf2516635424b8cb | https://maven.google.com/com/android/tools/build/builder-test-api/3.5.1/bui…
-e3a8d382434c5f60990730c4719fc814e85a898a33a1e96c1df8d627d3c6eea6 | https://maven.google.com/com/android/tools/build/builder/3.5.1/builder-3.5.…
-aa0092dd227856f6a9c42df1f6ae14ba8a5bde16ea77d760e48c25e575d31668 | https://maven.google.com/com/android/tools/build/builder/3.5.1/builder-3.5.…
-50c44557ca75b068e364ac35a648b81eeba7639ab5eb04036e390c727ad2fa3d | https://maven.google.com/com/android/tools/build/bundletool/0.9.0/bundletoo…
-124e124227803689b71da7440f0dbdff71cbb4c661a18e0f4e2e0d3a80d367c2 | https://maven.google.com/com/android/tools/build/bundletool/0.9.0/bundletoo…
-be9b41859bace11998f66b04ed944f87e413f3ad6da3c4665587699da125addc | https://maven.google.com/com/android/tools/build/gradle-api/3.5.1/gradle-ap…
-e977170f2bf4fdf335d924f8bf94eea54c54422f74f8915fc8d592dc9a226eb8 | https://maven.google.com/com/android/tools/build/gradle-api/3.5.1/gradle-ap…
-fe188188002bbb2e51c7db6da1ed03fc82af8f3be1a33991d38381837bc6708a | https://maven.google.com/com/android/tools/build/gradle/3.5.1/gradle-3.5.1.…
-b4a5b3db612b70ad8ba1b22bc469444d946bcd60e399f97ee6e498d195239c84 | https://maven.google.com/com/android/tools/build/gradle/3.5.1/gradle-3.5.1.…
-c9f8b016144cfb31c5aee92d47f34de23289167cac5e8ef68365b2dd05766f11 | https://maven.google.com/com/android/tools/build/jetifier/jetifier-core/1.0…
-db025ad1bbc6896edf0f67cda1222ba9b7ec9a0187df7f4fd0a318475c758e4e | https://maven.google.com/com/android/tools/build/jetifier/jetifier-core/1.0…
-1dd481e7606ccb30868908d9ae80f27d1c5ba882f792532bd91ed731c54f4efb | https://maven.google.com/com/android/tools/build/jetifier/jetifier-processo…
-4973a6c6d7f89297a1cfea56c623cea72b3db3b4a49992afa00dd77ac052b89f | https://maven.google.com/com/android/tools/build/jetifier/jetifier-processo…
-dcad9ecb967251f4d750f55a4204a2b400e8fbfe5cb930a1d0d5dbe10ae8bdfc | https://maven.google.com/com/android/tools/build/manifest-merger/26.5.1/man…
-0dfcac2f9fa87c1742945875ef1e6f9fbade2149426502323c40eb01c05a7e36 | https://maven.google.com/com/android/tools/build/manifest-merger/26.5.1/man…
-4de4a3d05e1c534c2db9e4588bf34082bb2bd232d8abb9727c430290ce225740 | https://maven.google.com/com/android/tools/build/transform-api/2.0.0-deprec…
-7c62f3856e8abca1d79257925f26c12668693f5d95904056bbac88605cfd8575 | https://maven.google.com/com/android/tools/build/transform-api/2.0.0-deprec…
-eccfa54486ed54c4e3123cc42195d023bd0dd21bcd2f0e4868e8c6fc70f8ef6b | https://maven.google.com/com/android/tools/common/26.5.1/common-26.5.1.jar
-4492eb509dc784ca5e1600a2b0505ad1468bed4d116220fca67f34b49ac18ffb | https://maven.google.com/com/android/tools/common/26.5.1/common-26.5.1.pom
-b081aef2a4ed3f4d47cae4cdb128469735f25a114e026d37123bf9ffdec742a8 | https://maven.google.com/com/android/tools/ddms/ddmlib/26.5.1/ddmlib-26.5.1…
-a6e4693d05779c25cbfbbf4e67f96150c4de3d398ae3ed6a38f786971eb89634 | https://maven.google.com/com/android/tools/ddms/ddmlib/26.5.1/ddmlib-26.5.1…
-46f93ad498b4756e7d867d2fe38c38890a80e7407a4ae459e4a8c8d5c5aeacfe | https://maven.google.com/com/android/tools/dvlib/26.5.1/dvlib-26.5.1.jar
-1d5f88a4eb1c76901bc7b19af2311418a3f259d0f68756b058df850b1e8f913f | https://maven.google.com/com/android/tools/dvlib/26.5.1/dvlib-26.5.1.pom
-88732f11396c427273e515d23042e35633f4fe4295528a99b866aa2adf0efd9c | https://maven.google.com/com/android/tools/layoutlib/layoutlib-api/26.5.1/l…
-63832aa426428edb1a9ad7b1fc06c8ecf8f38b98041c13bfe433ac46688e5ed8 | https://maven.google.com/com/android/tools/layoutlib/layoutlib-api/26.5.1/l…
-82453fd98a8394cc84ed995c04d2cd744abd1d6589403427ba7eef53115406f3 | https://maven.google.com/com/android/tools/lint/lint-gradle-api/26.5.1/lint…
-2ddefa31501b320b366a0d18ba169118be7073d04c9337dd77bdc4ebd4ced959 | https://maven.google.com/com/android/tools/lint/lint-gradle-api/26.5.1/lint…
-2b3ee791aa4c3e8ce60498c161a27ca7228816fc630eed4d9f25f2f36a106dce | https://maven.google.com/com/android/tools/repository/26.5.1/repository-26.…
-8312471ec5165d599404e2225157c5639bdd9ad5c6980f79b1c1c4b517ff93b3 | https://maven.google.com/com/android/tools/repository/26.5.1/repository-26.…
-365f749676c3574676fd465177c8a492f340816db2b520d6ed114d3b6e77bea7 | https://maven.google.com/com/android/tools/sdk-common/26.5.1/sdk-common-26.…
-33b0649ae6e3dd95340123c462f6ef32992ee858e6e132f45bb7dec332627d59 | https://maven.google.com/com/android/tools/sdk-common/26.5.1/sdk-common-26.…
-007da104afb27c8c682a1628023fe9ec438249c8d15ef0fd6624c5bb8e23b696 | https://maven.google.com/com/android/tools/sdklib/26.5.1/sdklib-26.5.1.jar
-3f5ee952ea6a07767688a464c545354fbbce296419973397e65280142914b2a4 | https://maven.google.com/com/android/tools/sdklib/26.5.1/sdklib-26.5.1.pom
-feab9191311c3d7aeef2b66d6064afc80d3d1d52d980fb07ae43c78c987ba93a | https://plugins.gradle.org/m2/com/google/code/findbugs/jsr305/1.3.9/jsr305-…
-766ad2a0783f2687962c8ad74ceecc38a28b9f72a2d085ee438b7813e928d0c7 | https://plugins.gradle.org/m2/com/google/code/findbugs/jsr305/3.0.2/jsr305-…
-19889dbdf1b254b2601a5ee645b8147a974644882297684c798afe5d63d78dfe | https://plugins.gradle.org/m2/com/google/code/findbugs/jsr305/3.0.2/jsr305-…
-8f1fec72b91a71ea39ec39f5f778c4d1124b6b097c6d55b3a50b554a52237b27 | https://plugins.gradle.org/m2/com/google/code/gson/gson-parent/2.8.5/gson-p…
-233a0149fc365c9f6edbd683cfe266b19bdc773be98eabdaf6b3c924b48e7d81 | https://plugins.gradle.org/m2/com/google/code/gson/gson/2.8.5/gson-2.8.5.jar
-b8308557a7fccc92d9fe7c8cd0599258b361285d2ecde7689eda98843255a092 | https://plugins.gradle.org/m2/com/google/code/gson/gson/2.8.5/gson-2.8.5.pom
-6ebd22ca1b9d8ec06d41de8d64e0596981d9607b42035f9ed374f9de271a481a | https://plugins.gradle.org/m2/com/google/errorprone/error_prone_annotations…
-5e0258ea1ba4e51a133742680bc22448f7ab214be4073e8619f645ef1be42dd5 | https://plugins.gradle.org/m2/com/google/errorprone/error_prone_annotations…
-c460902ddf5ece68832c6b271ce52a0928b05cf3a6ac81a8f548c73cbd541138 | https://plugins.gradle.org/m2/com/google/errorprone/error_prone_parent/2.2.…
-cd6db17a11a31ede794ccbd1df0e4d9750f640234731f21cff885a9997277e81 | https://plugins.gradle.org/m2/com/google/google/1/google-1.pom
-a171ee4c734dd2da837e4b16be9df4661afab72a41adaf31eb84dfdaf936ca26 | https://plugins.gradle.org/m2/com/google/guava/failureaccess/1.0.1/failurea…
-e96042ce78fecba0da2be964522947c87b40a291b5fd3cd672a434924103c4b9 | https://plugins.gradle.org/m2/com/google/guava/failureaccess/1.0.1/failurea…
-f8698ab46ca996ce889c1afc8ca4f25eb8ac6b034dc898d4583742360016cc04 | https://plugins.gradle.org/m2/com/google/guava/guava-parent/26.0-android/gu…
-317e88291262e0cf2805e956c18850f1d4565c85c2e1112f5d9d08ab1732e696 | https://plugins.gradle.org/m2/com/google/guava/guava-parent/27.0.1-jre/guav…
-e1c814fd04492a27c38e0317eabeaa1b3e950ec8010239e400fe90ad6c9107b4 | https://plugins.gradle.org/m2/com/google/guava/guava/27.0.1-jre/guava-27.0.…
-6a8dd041f23a6bb14a86e440fccb993537b62271357a0dac0a3cb0ff39158f36 | https://plugins.gradle.org/m2/com/google/guava/guava/27.0.1-jre/guava-27.0.…
-b372a037d4230aa57fbeffdef30fd6123f9c0c2db85d0aced00c91b974f33f99 | https://plugins.gradle.org/m2/com/google/guava/listenablefuture/9999.0-empt…
-18d4b1db26153d4e55079ce1f76bb1fe05cdb862ef9954a88cbcc4ff38b8679b | https://plugins.gradle.org/m2/com/google/guava/listenablefuture/9999.0-empt…
-2994a7eb78f2710bd3d3bfb639b2c94e219cedac0d4d084d516e78c16dddecf6 | https://plugins.gradle.org/m2/com/google/j2objc/j2objc-annotations/1.1/j2ob…
-f0c98c571e93a7cb4dd18df0fa308f0963e7a0620ac2d4244e61e709d03ad6be | https://plugins.gradle.org/m2/com/google/j2objc/j2objc-annotations/1.1/j2ob…
-c71555751e57e0ef912870e8ac9625ae782502a6a5b9c19ccf83b2a97d8b26bd | https://plugins.gradle.org/m2/com/google/jimfs/jimfs-parent/1.1/jimfs-paren…
-c4828e28d7c0a930af9387510b3bada7daa5c04d7c25a75c7b8b081f1c257ddd | https://plugins.gradle.org/m2/com/google/jimfs/jimfs/1.1/jimfs-1.1.jar
-efa86e5cd922f17b472fdfcae57234d8d4ac3e148b6250737dfce454af7a7a44 | https://plugins.gradle.org/m2/com/google/jimfs/jimfs/1.1/jimfs-1.1.pom
-4189e0be5ab15cf2330f70b24fbdc75ca37514f188388fce8580ce16a9a68052 | https://plugins.gradle.org/m2/com/google/protobuf/protobuf-java-util/3.4.0/…
-89c43073e7eaa0eaba72a4a36ae1b6bfdfe5d81bb9d0e156aee05e4a72de3cb8 | https://plugins.gradle.org/m2/com/google/protobuf/protobuf-java-util/3.4.0/…
-dce7e66b32456a1b1198da0caff3a8acb71548658391e798c79369241e6490a4 | https://plugins.gradle.org/m2/com/google/protobuf/protobuf-java/3.4.0/proto…
-83f17ba86c5fa1a15a3a3c8030d4ce42ef21c1d39b65db6cc004a8eeb2c59406 | https://plugins.gradle.org/m2/com/google/protobuf/protobuf-java/3.4.0/proto…
-24909c552842c0eb7a4c769d631a43cbef5a9a10c1640f2bdbd1ea149c573a47 | https://plugins.gradle.org/m2/com/google/protobuf/protobuf-parent/3.4.0/pro…
-2d9484f4c649f708f47f9a479465fc729770ee65617dca3011836602264f6439 | https://plugins.gradle.org/m2/com/googlecode/json-simple/json-simple/1.1/js…
-47a89be0fa0fedd476db5fd2c83487654d2a119c391f83a142be876667cf7dab | https://plugins.gradle.org/m2/com/googlecode/json-simple/json-simple/1.1/js…
-757bfe906193b8b651e79dc26cd67d6b55d0770a2cdfb0381591504f779d4a76 | https://plugins.gradle.org/m2/com/googlecode/juniversalchardet/juniversalch…
-7846399b35c7cd642a9b3a000c3e2d62d04eb37a4547b6933cc8b18bcc2f086b | https://plugins.gradle.org/m2/com/googlecode/juniversalchardet/juniversalch…
-8e108c92027bb428196f10fa11cffbe589f7648a6af2016d652279385fdfd789 | https://plugins.gradle.org/m2/com/squareup/javapoet/1.8.0/javapoet-1.8.0.jar
-b3760f40f19e735b2cd418f7656335d926d1d9413e10982a1c9695b64edbb647 | https://plugins.gradle.org/m2/com/squareup/javapoet/1.8.0/javapoet-1.8.0.pom
+33c839e4236eabde3896c154d120d651e72064f393e456297c92041d00cc058e | https://dl.google.com/dl/android/maven2/com/android/tools/build/apksig/7.1.…
+67a8f20626121a8e4f48fc63a392c0459173a9992eb35cc9c9c3ec82b882862c | https://dl.google.com/dl/android/maven2/com/android/tools/build/apksig/7.1.…
+8529eca8d75767050751f7674338548f591a234333179d9b5ad66c6feaf00d42 | https://dl.google.com/dl/android/maven2/com/android/tools/build/apksig/7.1.…
+0e46a02577de7cbad380679e565f73d537205e0c38c2894bfe122ad1ee79e516 | https://dl.google.com/dl/android/maven2/com/android/tools/build/apkzlib/7.1…
+c2d09468c92bd306272ed6f2c7b5ac2507ede7222e4b677a5ba887e06e89c5bb | https://dl.google.com/dl/android/maven2/com/android/tools/build/apkzlib/7.1…
+fa9f433e60e4f330e763f4f1920f8bda5d1f835d17ac1bd9b92d2a139a4a8269 | https://dl.google.com/dl/android/maven2/com/android/tools/build/apkzlib/7.1…
+5e14677ed7c265731a4cb4ec99e1f352daaafb596f21f88e367220b3554b1a25 | https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-mod…
+76ade53f054bb250e93cbd29d82e1c9736ea64663d8faebef0f7deb3f1a08c3c | https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-mod…
+4f430764d6dd337aeb94b5b6a307398831c0eaf276a3f639ecdb583819483d08 | https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-mod…
+6d43939f77996074552a72422924bc3644da6035a936d2c7d1326abe7ae1443e | https://dl.google.com/dl/android/maven2/com/android/tools/build/builder/7.1…
+c90102982348647fc58993b00ed675a1f92b50dc9c38563fd594b8cff3c67254 | https://dl.google.com/dl/android/maven2/com/android/tools/build/builder/7.1…
+29a092c1ee48d09f36870f7b95688d05eff6784baac752e9b91ea1acfb1c358e | https://dl.google.com/dl/android/maven2/com/android/tools/build/builder/7.1…
+9c5ed0e13a6e8b426341cd32dcab2dd5b54c52e701a135b4227ccfe8ef3266bf | https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-api/…
+d710594e89c561be3e7aba56b8e5a5690ebbdf82ad6d07019c2e271f39669ea8 | https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-api/…
+4545a1e6e1992613ee49df0d1395be89d625333adcf2db206af652586fbde26c | https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-api/…
+621329051b4261fd390b33607523e123962ad3ad6b91929f37b23187caaa9309 | https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/7.1.…
+05ee8a6fc8b68e140133c4d9547e4790661737359c0d27b142b6fbc44bbe2a02 | https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/7.1.…
+91db6b029dc8b00570c77418f7a28839517bc9cb5a14ab562885b4bcf61efbd5 | https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/7.1.…
+cb36c736ed2ac922e6655ef5c56c34068e63b7d9bd749920b67592859c1e4d81 | https://dl.google.com/dl/android/maven2/com/android/tools/build/manifest-me…
+5b3b27f624a969fd35d3aa7aef91499862a445c13aece4233b1a103a42bc8be3 | https://dl.google.com/dl/android/maven2/com/android/tools/build/manifest-me…
+877dddbbb9e3f045bd835e21c59795cdad1332600354b773a886d25f2544d9c9 | https://dl.google.com/dl/android/maven2/com/android/tools/build/manifest-me…
+f35a8af6babede30bd48bf98d02d2499725f0902d56aeabe778da256b76d0768 | https://dl.google.com/dl/android/maven2/com/android/zipflinger/7.1.0/zipfli…
+88f6f0603aa947fa206e40ea03ea7e019a58eddb3a5a8f19cdab9849b4ad26e0 | https://dl.google.com/dl/android/maven2/com/android/zipflinger/7.1.0/zipfli…
+2c1c70bc240ab779ab4c07d19390c623d05e759c80653fbcdef2eeac299f00ab | https://dl.google.com/dl/android/maven2/com/android/zipflinger/7.1.0/zipfli…
+96623d7afc374800cfdc4eb1e49efdb1b17d762fbe9c7de0e46980de14473170 | https://plugins.gradle.org/m2/com/google/protobuf/protobuf-bom/3.19.1/proto…
+24f7d0d91797ed230a6d3da93cd80590a4c3aa9a27249f6025b5c6da078edde7 | https://plugins.gradle.org/m2/com/google/protobuf/protobuf-java/3.19.1/prot…
+5de4666f7f6b003d982f48f18c8e22facef6707365a74e20df7cbad98c931dd7 | https://plugins.gradle.org/m2/com/google/protobuf/protobuf-java/3.19.1/prot…
+83d413b2a79d6357d2ca78fd623143424e8f6ecc72cfa83bf2ae2ae258a93a44 | https://plugins.gradle.org/m2/com/google/protobuf/protobuf-parent/3.19.1/pr…
fcfb09fb0ea0aa97d3cfe7ea792398081348e468f126b3603cb3803f240197f0 | https://plugins.gradle.org/m2/com/squareup/javawriter/2.5.0/javawriter-2.5.…
e1abd7f1116cf5e0c59947693e2189208ec94296b2a3394c959e3511d399a7b0 | https://plugins.gradle.org/m2/com/squareup/javawriter/2.5.0/javawriter-2.5.…
-1d8518e3ac7532a104e4f7be77def37c982e530723c6bdb3d67708cce2b0c2c4 | https://plugins.gradle.org/m2/com/sun/activation/all/1.2.0/all-1.2.0.pom
-993302b16cd7056f21e779cc577d175a810bb4900ef73cd8fbf2b50f928ba9ce | https://plugins.gradle.org/m2/com/sun/activation/javax.activation/1.2.0/jav…
-f879b6e945854c6900b0dbee1c8384d7ab3de7e157fd7ac84937405c416d2a5e | https://plugins.gradle.org/m2/com/sun/activation/javax.activation/1.2.0/jav…
-c33e67a0807095f02a0e2da139412dd7c4f9cc1a4c054b3e434f96831ba950f4 | https://plugins.gradle.org/m2/com/sun/istack/istack-commons-runtime/2.21/is…
-ebe7137b5fbfd050545f9a7f3f339ae55beb0b53755071b4fd62aa024c626d1c | https://plugins.gradle.org/m2/com/sun/istack/istack-commons-runtime/2.21/is…
-c3071277f89b162982606b4e65c92077212efb6cbf1bdc365c51bd0b57ac818c | https://plugins.gradle.org/m2/com/sun/istack/istack-commons/2.21/istack-com…
-b25e0693de21cb92b039a2e4608f396590fb8773108f10d6dc9f1465f03b5be9 | https://plugins.gradle.org/m2/com/sun/xml/bind/jaxb-bom-ext/2.2.11/jaxb-bom…
-b5301b711c01547e571b615f9a0832ee525d34a4ce3372f53907a87cf20b0480 | https://plugins.gradle.org/m2/com/sun/xml/bind/mvn/jaxb-parent/2.2.11/jaxb-…
-21918cb8e4eda67f24251e909a5d81672201d93604c4ffbf33522ad836a58e90 | https://plugins.gradle.org/m2/com/sun/xml/bind/mvn/jaxb-runtime-parent/2.2.…
-9a398c699a5d3f3b56f1056c68890ede25d94a12d98eabc2a473733e6ab2362c | https://plugins.gradle.org/m2/com/sun/xml/bind/mvn/jaxb-txw-parent/2.2.11/j…
-27a77db909f3c2833c0b1a37c55af1db06045118ad2eed96ce567b6632bce038 | https://plugins.gradle.org/m2/com/sun/xml/fastinfoset/FastInfoset/1.2.13/Fa…
-b7505e0ecf7d495b4daa3e6569f71611d1a789dc531cbd92a2025922ff2655d3 | https://plugins.gradle.org/m2/com/sun/xml/fastinfoset/FastInfoset/1.2.13/Fa…
-fd0857899f1067e0287c2ffd91e38f967a26bd405b83a34650c2742cee9fc261 | https://plugins.gradle.org/m2/com/sun/xml/fastinfoset/fastinfoset-project/1…
-4241dfa94e711d435f29a4604a3e2de5c4aa3c165e23bd066be6fc1fc4309569 | https://plugins.gradle.org/m2/commons-codec/commons-codec/1.10/commons-code…
-bdb8db7012d112a6e3ea8fdb7c510b300d99eff0819d27dddba9c43397ea4cfb | https://plugins.gradle.org/m2/commons-codec/commons-codec/1.10/commons-code…
-cc6a41dc3eaacc9e440a6bd0d2890b20d36b4ee408fe2d67122f328bb6e01581 | https://plugins.gradle.org/m2/commons-io/commons-io/2.4/commons-io-2.4.jar
-b2b5dd46cf998fa626eb6f8a1c114f6167c8d392694164e62533e5898e9b31f2 | https://plugins.gradle.org/m2/commons-io/commons-io/2.4/commons-io-2.4.pom
-daddea1ea0be0f56978ab3006b8ac92834afeefbd9b7e4e6316fca57df0fa636 | https://plugins.gradle.org/m2/commons-logging/commons-logging/1.2/commons-l…
-c91ab5aa570d86f6fd07cc158ec6bc2c50080402972ee9179fe24100739fbb20 | https://plugins.gradle.org/m2/commons-logging/commons-logging/1.2/commons-l…
-74fa208043740642f7e6eb09faba15965218ad2f50ce3020efb100136e4b591c | https://plugins.gradle.org/m2/it/unimi/dsi/fastutil/7.2.0/fastutil-7.2.0.jar
-953b116521a73575eee990e3f2c36a892fb088bb2d9a3027c82193cb7a013ef7 | https://plugins.gradle.org/m2/it/unimi/dsi/fastutil/7.2.0/fastutil-7.2.0.pom
-91c77044a50c481636c32d916fd89c9118a72195390452c81065080f957de7ff | https://plugins.gradle.org/m2/javax/inject/javax.inject/1/javax.inject-1.jar
-943e12b100627804638fa285805a0ab788a680266531e650921ebfe4621a8bfa | https://plugins.gradle.org/m2/javax/inject/javax.inject/1/javax.inject-1.pom
-b5e60cd8b7b5ff01ce4a74c5dd008f4fbd14ced3495d0b47b85cfedc182211f2 | https://plugins.gradle.org/m2/javax/xml/bind/jaxb-api/2.2.12-b140109.1041/j…
-2092a7d8d9bc5698c59b094bdea46622915c48c83ae66d5b5ad549c7bf16155b | https://plugins.gradle.org/m2/javax/xml/bind/jaxb-api/2.2.12-b140109.1041/j…
-281440811268e65d9e266b3cc898297e214e04f09740d0386ceeb4a8923d63bf | https://plugins.gradle.org/m2/net/java/jvnet-parent/1/jvnet-parent-1.pom
-30f5789efa39ddbf96095aada3fc1260c4561faf2f714686717cb2dc5049475a | https://plugins.gradle.org/m2/net/java/jvnet-parent/3/jvnet-parent-3.pom
-471395735549495297c8ff939b9a32e08b91302020ff773586d27e497abb8fbb | https://plugins.gradle.org/m2/net/java/jvnet-parent/4/jvnet-parent-4.pom
-26c5856e954b5f864db76f13b86919b59c6eecf9fd930b96baa8884626baf2f5 | https://plugins.gradle.org/m2/net/sf/jopt-simple/jopt-simple/4.9/jopt-simpl…
-7af7e2d8b24b4798f04c2b7da24c9fbd1b7557b4e017c2054481565916079092 | https://plugins.gradle.org/m2/net/sf/jopt-simple/jopt-simple/4.9/jopt-simpl…
-f264dd9f79a1fde10ce5ecc53221eff24be4c9331c830b7d52f2f08a7b633de2 | https://plugins.gradle.org/m2/net/sf/kxml/kxml2/2.3.0/kxml2-2.3.0.jar
-31ce606f4e9518936299bb0d27c978fa61e185fd1de7c9874fe959a53e34a685 | https://plugins.gradle.org/m2/net/sf/kxml/kxml2/2.3.0/kxml2-2.3.0.pom
-75bc89695fa66e75374ecda439b802406f0ab1d826dd386eed0a23b1f0a9d264 | https://plugins.gradle.org/m2/net/sf/proguard/proguard-base/6.0.3/proguard-…
-2a823d79f2675582a988d539466d1b175e939782efbe0f6e61f06cb165ed4907 | https://plugins.gradle.org/m2/net/sf/proguard/proguard-base/6.0.3/proguard-…
-cc12b1168e521491dd0e687cfebec11a4af874b22af70e10cf2a05b47ca00c8f | https://plugins.gradle.org/m2/net/sf/proguard/proguard-gradle/6.0.3/proguar…
-5a5c7317d68ce80d1d40c9d8bd4e38814d42d1b16c265146e333634833a35a57 | https://plugins.gradle.org/m2/net/sf/proguard/proguard-gradle/6.0.3/proguar…
-d87266bfd2312c3b036c4ac709310afa35c448ceb18027c3b87a33d03c6de0a0 | https://plugins.gradle.org/m2/net/sf/proguard/proguard-parent/6.0.3/proguar…
-401877d5e70ad599e9b6cff18434ea0332f637b51f8ec68352646c836f9bb2a4 | https://plugins.gradle.org/m2/org/antlr/antlr4-master/4.5.3/antlr4-master-4…
-a32de739cfdf515774e696f91aa9697d2e7731e5cb5045ca8a4b657f8b1b4fb4 | https://plugins.gradle.org/m2/org/antlr/antlr4/4.5.3/antlr4-4.5.3.jar
-8a4e4b32eedaa72976a757e12cf1dfe742725db0b7311bf176dd937ba4236384 | https://plugins.gradle.org/m2/org/antlr/antlr4/4.5.3/antlr4-4.5.3.pom
-ff513db0361fd41237bef4784968bc15aae478d4ec0a9496f811072ccaf3841d | https://plugins.gradle.org/m2/org/apache/apache/13/apache-13.pom
-36c2f2f979ac67b450c0cb480e4e9baf6b40f3a681f22ba9692287d1139ad494 | https://plugins.gradle.org/m2/org/apache/apache/15/apache-15.pom
-9f85ff2fd7d6cb3097aa47fb419ee7f0ebe869109f98aba9f4eca3f49e74a40e | https://plugins.gradle.org/m2/org/apache/apache/16/apache-16.pom
-7831307285fd475bbc36b20ae38e7882f11c3153b1d5930f852d44eda8f33c17 | https://plugins.gradle.org/m2/org/apache/apache/18/apache-18.pom
-4946e60a547c8eda69f3bc23c5b6f0dadcf8469ea49b1d1da7de34aecfcf18dd | https://plugins.gradle.org/m2/org/apache/apache/9/apache-9.pom
-2c1542faf343185b7cab9c3d55c8ae5471d6d095d3887a4adefdbdf2984dc0b6 | https://plugins.gradle.org/m2/org/apache/commons/commons-compress/1.12/comm…
-b787d574c851505e76212968b9ae1641ea79804aef7f5a2cee2a01cd4055213a | https://plugins.gradle.org/m2/org/apache/commons/commons-compress/1.12/comm…
-467ae650442e876867379094e7518dfdd67d22c5352ebd39808c84259e9790ba | https://plugins.gradle.org/m2/org/apache/commons/commons-parent/25/commons-…
-3a2e69d06d641d1f3b293126dc9e2e4ea6563bf8c36c87e0ab6fa4292d04b79c | https://plugins.gradle.org/m2/org/apache/commons/commons-parent/34/commons-…
-7098a1ab8336ecd4c9dc21cbbcac869f82c66f64b8ac4f7988d41b4fcb44e49a | https://plugins.gradle.org/m2/org/apache/commons/commons-parent/35/commons-…
-87cd27e1a02a5c3eb6d85059ce98696bb1b44c2b8b650f0567c86df60fa61da7 | https://plugins.gradle.org/m2/org/apache/commons/commons-parent/39/commons-…
-c03f813195e7a80e3608d0ddd8da80b21696a4c92a6a2298865bf149071551c7 | https://plugins.gradle.org/m2/org/apache/httpcomponents/httpclient/4.5.6/ht…
-7efc1241e73e7fbb268bfd33242d11ebd3ca07061d7d85f2962dc32a0f0b8855 | https://plugins.gradle.org/m2/org/apache/httpcomponents/httpclient/4.5.6/ht…
-b042b41f2391edb00d35f7f4e509aed2123648c1d246ce58d0f7b905c9fe1f73 | https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcomponents-clie…
-61e9427d4be326c307a7f16ba828d1cb3b14713c9b04fc8ba992a58f376c3136 | https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcomponents-core…
-caaf967d94afb21753f36082c6086206bd1f48825ff596932cceba72b65d39fa | https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcomponents-pare…
-78ba1096561957db1b55200a159b648876430342d15d461277e62360da19f6fd | https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcore/4.4.10/htt…
-c5c12066df2b3b88a89a2c8602b81ea9a61627e976e5129eea1899ebbaea392b | https://plugins.gradle.org/m2/org/apache/httpcomponents/httpcore/4.4.10/htt…
-0b2b1102c18d3c7e05a77214b9b7501a6f6056174ae5604e0e256776eda7553e | https://plugins.gradle.org/m2/org/apache/httpcomponents/httpmime/4.5.6/http…
-dfbfd6ffe2a784ca9817c46365aa7f8a578320b805bde39d6f55a0b09d8aa8ca | https://plugins.gradle.org/m2/org/apache/httpcomponents/httpmime/4.5.6/http…
-7043dee4e9e7175e93e0b36f45b1ec1ecb893c5f755667e8b916eb8dd201c6ca | https://plugins.gradle.org/m2/org/bouncycastle/bcpkix-jdk15on/1.56/bcpkix-j…
-321668fc474a73140eb9cc73c779f1ebb9f60948aade3beddee082ecefcf0259 | https://plugins.gradle.org/m2/org/bouncycastle/bcpkix-jdk15on/1.56/bcpkix-j…
-963e1ee14f808ffb99897d848ddcdb28fa91ddda867eb18d303e82728f878349 | https://plugins.gradle.org/m2/org/bouncycastle/bcprov-jdk15on/1.56/bcprov-j…
-8fdc3336e7b01873193ba9c48b87de7d788dc0954d1eb45c322492627a4b5c6e | https://plugins.gradle.org/m2/org/bouncycastle/bcprov-jdk15on/1.56/bcprov-j…
-64b02691c8b9d4e7700f8ee2e742dce7ea2c6e81e662b7522c9ee3bf568c040a | https://plugins.gradle.org/m2/org/checkerframework/checker-qual/2.5.2/check…
-dc4cd438a36462d013c2338c8e206d102a322a00f33729e8955ee219859c9ede | https://plugins.gradle.org/m2/org/checkerframework/checker-qual/2.5.2/check…
-92654f493ecfec52082e76354f0ebf87648dc3d5cec2e3c3cdb947c016747a53 | https://plugins.gradle.org/m2/org/codehaus/mojo/animal-sniffer-annotations/…
-e956ab5d2eb48fabae12300d0cd2d3294d4a2a41abc2068c23cb4d60ad76cbe5 | https://plugins.gradle.org/m2/org/codehaus/mojo/animal-sniffer-annotations/…
-18a03df16e2a184c582db7b125633c15fb7714027a84c1b532d72933dc08b81f | https://plugins.gradle.org/m2/org/codehaus/mojo/animal-sniffer-parent/1.17/…
-fc648dcdc404f8bf66e0583914ecf980176618201227bea114fae85043cb755e | https://plugins.gradle.org/m2/org/codehaus/mojo/mojo-parent/40/mojo-parent-…
-a52e6850f070dc9f7a2a51d0b25dfaafd49b0b9bf8196db6c0b3c5b7c94d8d38 | https://plugins.gradle.org/m2/org/glassfish/jaxb/jaxb-bom/2.2.11/jaxb-bom-2…
-37bcaee8ebb04362c8352a5bf6221b86967ecdab5164c696b10b9a2bb587b2aa | https://plugins.gradle.org/m2/org/glassfish/jaxb/jaxb-core/2.2.11/jaxb-core…
-ec31409f203bcabf99534f59231ec0576d875d4d4b7349b09566a7a8c8179b24 | https://plugins.gradle.org/m2/org/glassfish/jaxb/jaxb-core/2.2.11/jaxb-core…
-a874f2351cfba8e2946be3002d10c18a6da8f21b52ba2acf52f2b85d5520ed70 | https://plugins.gradle.org/m2/org/glassfish/jaxb/jaxb-runtime/2.2.11/jaxb-r…
-e5327b31b595ab8143e97836d5ccdf85feb91e7ff5666f7b26913632facca4aa | https://plugins.gradle.org/m2/org/glassfish/jaxb/jaxb-runtime/2.2.11/jaxb-r…
-272a3ccad45a4511351920cd2a8633c53cab8d5220c7a92954da5526bb5eafea | https://plugins.gradle.org/m2/org/glassfish/jaxb/txw2/2.2.11/txw2-2.2.11.jar
-8514cb724b4fca59a5cf272b632e539bd0a0f3cacf1844082d0a173a86406bd8 | https://plugins.gradle.org/m2/org/glassfish/jaxb/txw2/2.2.11/txw2-2.2.11.pom
-1345f11ba606d15603d6740551a8c21947c0215640770ec67271fe78bea97cf5 | https://plugins.gradle.org/m2/org/jdom/jdom2/2.0.6/jdom2-2.0.6.jar
-47b23a79fe336b741b82434c6e049d68165256e405e75c10921fd72fa8a65d8d | https://plugins.gradle.org/m2/org/jdom/jdom2/2.0.6/jdom2-2.0.6.pom
-ace2a10dc8e2d5fd34925ecac03e4988b2c0f851650c94b8cef49ba1bd111478 | https://plugins.gradle.org/m2/org/jetbrains/annotations/13.0/annotations-13…
-965aeb2bedff369819bdde1bf7a0b3b89b8247dd69c88b86375d76163bb8c397 | https://plugins.gradle.org/m2/org/jetbrains/annotations/13.0/annotations-13…
-64583199ea5a54aefd1bd1595288925f784226ee562d1dd279011c6075b3d7a4 | https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.3.50/ko…
-8745181e5a3e0bafefd46309c6b810df7253f379feb985131eaf8d4d9c302635 | https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-reflect/1.3.50/ko…
-8ce678e88e4ba018b66dacecf952471e4d7dfee156a8a819760a5a5ff29d323c | https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-common/1.3…
-b6396fe802d7bc76a381485e266cb975f3b2f2d3dd9bf7213aab6ca27a561fc1 | https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-common/1.3…
-9a026639e76212f8d57b86d55b075394c2e009f1979110751d34c05c5f75d57b | https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.5…
-a3aef46388ee96e975110db51df3ab794c87d892bdbc6d5a49bf926e4779438b | https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.5…
-1b351fb6e09c14b55525c74c1f4cf48942eae43c348b7bc764a5e6e423d4da0c | https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.5…
-8674b002f66a2948981c4f6cb5987ec62ff3d54b6a2799a6d2cd23afb83f2ad3 | https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.5…
-e6f05746ee0366d0b52825a090fac474dcf44082c9083bbb205bd16976488d6c | https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib/1.3.50/kot…
-704fd78960ae046428f69bcd5b951c122e4c180c9400238a866e12cb18494a61 | https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-stdlib/1.3.50/kot…
-1917871c8deb468307a584680c87a44572f5a8b0b98c6d397fc0f5f86596dbe7 | https://plugins.gradle.org/m2/org/jetbrains/trove4j/trove4j/20160824/trove4…
-c94b0b73790c70c709bcd445a01247908888211e38cc59e946ff6fe900785ae9 | https://plugins.gradle.org/m2/org/jetbrains/trove4j/trove4j/20160824/trove4…
-a31ff7d77163c0deb09e7fee59ad35ae44c2cee2cc8552a116ccd1583d813fb4 | https://plugins.gradle.org/m2/org/jvnet/staxex/stax-ex/1.7.7/stax-ex-1.7.7.…
-27cb450b6c367a00bd8362519907f84defac7b12086c64d4d6e97e33ab873ead | https://plugins.gradle.org/m2/org/jvnet/staxex/stax-ex/1.7.7/stax-ex-1.7.7.…
-2f1a6387219c3a6cc4856481f221b03bd9f2408a326d416af09af5d6f608c1f4 | https://plugins.gradle.org/m2/org/ow2/asm/asm-analysis/6.0/asm-analysis-6.0…
-d3aaf42e40e3e24aabda53b5de4de5e17cb78e06549bf37312dca6c77e251054 | https://plugins.gradle.org/m2/org/ow2/asm/asm-analysis/6.0/asm-analysis-6.0…
-f1bce5c648a96a017bdcd01fe5d59af9845297fd7b79b81c015a6fbbd9719abf | https://plugins.gradle.org/m2/org/ow2/asm/asm-commons/6.0/asm-commons-6.0.j…
-90f4f29473afb957229016eb5741954976cc1b67bc049b3981c0d1e653ad5cdd | https://plugins.gradle.org/m2/org/ow2/asm/asm-commons/6.0/asm-commons-6.0.p…
-791d064bb9ecc9a46d43bc9efecd74c91464dfc451f321b802d2261e2ccd7d14 | https://plugins.gradle.org/m2/org/ow2/asm/asm-parent/6.0/asm-parent-6.0.pom
-887998fb69727c8759e4d253f856822801e33f9fd4caa566b3ac58ee92106215 | https://plugins.gradle.org/m2/org/ow2/asm/asm-tree/6.0/asm-tree-6.0.jar
-36887e0d7fdb185a92378a38ea45e596a97f10f385c5d050eb6252454ee701b4 | https://plugins.gradle.org/m2/org/ow2/asm/asm-tree/6.0/asm-tree-6.0.pom
-356afebdb0f870175262e5188f8709a3b17aa2a5a6a4b0340b04d4b449bca5f6 | https://plugins.gradle.org/m2/org/ow2/asm/asm-util/6.0/asm-util-6.0.jar
-3cdfc61f988d167b97503419da82a5808b20f4205aeb46c394e6e7ffd3211f12 | https://plugins.gradle.org/m2/org/ow2/asm/asm-util/6.0/asm-util-6.0.pom
-dd8971c74a4e697899a8e95caae4ea8760ea6c486dc6b97b1795e75760420461 | https://plugins.gradle.org/m2/org/ow2/asm/asm/6.0/asm-6.0.jar
-c2bc497e197112e699085426bbb45b1ab0be8002da68267a3b1f450a0312c32e | https://plugins.gradle.org/m2/org/ow2/asm/asm/6.0/asm-6.0.pom
-51215c67d2c068d8b7d2f6f80f51372a098075deccc448d4bdd7b987ba8328fb | https://plugins.gradle.org/m2/org/ow2/ow2/1.3/ow2-1.3.pom
+cda4de455fab48ff0bcb7c48b4639447d4de859a7afc30a094a986f0936beba2 | https://plugins.gradle.org/m2/org/ow2/asm/asm/9.1/asm-9.1.jar
+c683a90dd68f2b1788cbdfc4647ea9405ef5925b371c199f8fd39d44d3cede8d | https://plugins.gradle.org/m2/org/ow2/asm/asm/9.1/asm-9.1.pom
+0f8a1b116e760b8fe6389c51b84e4b07a70fc11082d4f936e453b583dd50b43b | https://plugins.gradle.org/m2/org/ow2/ow2/1.5/ow2-1.5.pom
b51f8867c92b6a722499557fc3a1fdea77bdf9ef574722fe90ce436a29559454 | https://plugins.gradle.org/m2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom
-fb40265f982548212ff82e362e59732b2187ec6f0d80182885c14ef1f982827a | https://plugins.gradle.org/m2/org/sonatype/oss/oss-parent/9/oss-parent-9.pom
-
=====================================
projects/oss-licenses-plugin/sort-dependencies-pr-268.patch
=====================================
@@ -0,0 +1,144 @@
+From 1e7b29bc4db8cbcfc468e3df4a649113efa3b876 Mon Sep 17 00:00:00 2001
+From: Da Risk <da_risk(a)geekorum.com>
+Date: Wed, 17 May 2023 16:42:10 -0400
+Subject: [PATCH 1/2] oss-license-plugin: sort ArtifactInfo into list
+
+This should ensure that the output of third_party_licenses and third_party_licenses_metadata is sorted.
+Sorting the output will make it reproducible regardless of the input ordering.
+---
+ .../oss/licenses/plugin/DependencyTask.groovy | 5 +++--
+ .../gms/oss/licenses/plugin/LicensesTask.groovy | 4 ++--
+ .../oss/licenses/plugin/DependencyTaskTest.java | 17 ++++++++++++-----
+ 3 files changed, 17 insertions(+), 9 deletions(-)
+
+diff --git a/oss-licenses-plugin/src/main/groovy/com/google/android/gms/oss/licenses/plugin/DependencyTask.groovy b/oss-licenses-plugin/src/main/groovy/com/google/android/gms/oss/licenses/plugin/DependencyTask.groovy
+index c7848735..5dbfbb30 100644
+--- a/oss-licenses-plugin/src/main/groovy/com/google/android/gms/oss/licenses/plugin/DependencyTask.groovy
++++ b/oss-licenses-plugin/src/main/groovy/com/google/android/gms/oss/licenses/plugin/DependencyTask.groovy
+@@ -76,7 +76,7 @@ abstract class DependencyTask extends DefaultTask {
+ } as AppDependencies
+ }
+
+- private static Set<ArtifactInfo> convertDependenciesToArtifactInfo(
++ private static List<ArtifactInfo> convertDependenciesToArtifactInfo(
+ AppDependencies appDependencies
+ ) {
+ return appDependencies.libraryList.stream()
+@@ -88,7 +88,8 @@ abstract class DependencyTask extends DefaultTask {
+ library.mavenLibrary.version
+ )
+ }
+- .collect(Collectors.toUnmodifiableSet())
++ .sorted(Comparator.comparing { it.toString() })
++ .collect(Collectors.toUnmodifiableList())
+ }
+
+ private static void initOutput(File outputDir) {
+diff --git a/oss-licenses-plugin/src/main/groovy/com/google/android/gms/oss/licenses/plugin/LicensesTask.groovy b/oss-licenses-plugin/src/main/groovy/com/google/android/gms/oss/licenses/plugin/LicensesTask.groovy
+index 851846b5..43db6652 100644
+--- a/oss-licenses-plugin/src/main/groovy/com/google/android/gms/oss/licenses/plugin/LicensesTask.groovy
++++ b/oss-licenses-plugin/src/main/groovy/com/google/android/gms/oss/licenses/plugin/LicensesTask.groovy
+@@ -107,14 +107,14 @@ abstract class LicensesTask extends DefaultTask {
+ writeMetadata()
+ }
+
+- private static Set<ArtifactInfo> loadDependenciesJson(File jsonFile) {
++ private static List<ArtifactInfo> loadDependenciesJson(File jsonFile) {
+ def allDependencies = new JsonSlurper().parse(jsonFile)
+ def artifactInfoSet = new HashSet<ArtifactInfo>()
+ for (entry in allDependencies) {
+ ArtifactInfo artifactInfo = artifactInfoFromEntry(entry)
+ artifactInfoSet.add(artifactInfo)
+ }
+- artifactInfoSet.asImmutable()
++ artifactInfoSet.toList().asImmutable()
+ }
+
+ private void addDebugLicense() {
+diff --git a/oss-licenses-plugin/src/test/java/com/google/android/gms/oss/licenses/plugin/DependencyTaskTest.java b/oss-licenses-plugin/src/test/java/com/google/android/gms/oss/licenses/plugin/DependencyTaskTest.java
+index e35a5490..50760521 100644
+--- a/oss-licenses-plugin/src/test/java/com/google/android/gms/oss/licenses/plugin/DependencyTaskTest.java
++++ b/oss-licenses-plugin/src/test/java/com/google/android/gms/oss/licenses/plugin/DependencyTaskTest.java
+@@ -29,6 +29,9 @@
+ import java.io.OutputStream;
+ import java.lang.reflect.Type;
+ import java.util.Collection;
++import java.util.Comparator;
++import java.util.List;
++import java.util.stream.Collectors;
+ import org.gradle.api.Project;
+ import org.gradle.testfixtures.ProjectBuilder;
+ import org.junit.Before;
+@@ -84,8 +87,8 @@ public void testAction_valuesConvertedToJson() throws Exception {
+ File outputJson = new File(outputDir, "test.json");
+ dependencyTask.getDependenciesJson().set(outputJson);
+ ImmutableSet<ArtifactInfo> expectedArtifacts = ImmutableSet.of(
+- new ArtifactInfo("org.group.id", "artifactId", "1.0.0"),
+- new ArtifactInfo("org.group.other", "other-artifact", "3.2.1")
++ new ArtifactInfo("org.group.other", "other-artifact", "3.2.1"),
++ new ArtifactInfo("org.group.id", "artifactId", "1.0.0")
+ );
+ AppDependencies appDependencies = createAppDependencies(expectedArtifacts);
+ File protoFile = writeAppDependencies(appDependencies, temporaryFolder.newFile());
+@@ -102,8 +105,8 @@ public void testAction_withNonMavenDeps_nonMavenDepsIgnored() throws Exception {
+ File outputJson = new File(outputDir, "test.json");
+ dependencyTask.getDependenciesJson().set(outputJson);
+ ImmutableSet<ArtifactInfo> expectedArtifacts = ImmutableSet.of(
+- new ArtifactInfo("org.group.id", "artifactId", "1.0.0"),
+- new ArtifactInfo("org.group.other", "other-artifact", "3.2.1")
++ new ArtifactInfo("org.group.other", "other-artifact", "3.2.1"),
++ new ArtifactInfo("org.group.id", "artifactId", "1.0.0")
+ );
+ AppDependencies appDependencies = createAppDependencies(expectedArtifacts).toBuilder()
+ .addLibrary(Library.getDefaultInstance()) // There aren't any other library types supported.
+@@ -131,11 +134,15 @@ public void testAction_depFileAbsent_writesAbsentDep() throws Exception {
+ private void verifyExpectedDependencies(ImmutableSet<ArtifactInfo> expectedArtifacts,
+ File outputJson) throws Exception {
+ Gson gson = new Gson();
++ List<ArtifactInfo> expectedArtifactsSorted = expectedArtifacts
++ .stream()
++ .sorted(Comparator.comparing(ArtifactInfo::toString))
++ .collect(Collectors.toUnmodifiableList());
+ try (FileReader reader = new FileReader(outputJson)) {
+ Type collectionOfArtifactInfo = new TypeToken<Collection<ArtifactInfo>>() {
+ }.getType();
+ Collection<ArtifactInfo> jsonArtifacts = gson.fromJson(reader, collectionOfArtifactInfo);
+- assertThat(jsonArtifacts).containsExactlyElementsIn(expectedArtifacts);
++ assertThat(jsonArtifacts).containsExactlyElementsIn(expectedArtifactsSorted).inOrder();
+ }
+ }
+
+
+From 0ae426b1fe52ef70770d10050402413a22bd8dba Mon Sep 17 00:00:00 2001
+From: Da Risk <da_risk(a)geekorum.com>
+Date: Fri, 19 May 2023 21:22:26 -0400
+Subject: [PATCH 2/2] oss-license-plugin: Sort dependencies loaded for
+ LicensesTask
+
+---
+ .../android/gms/oss/licenses/plugin/LicensesTask.groovy | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/oss-licenses-plugin/src/main/groovy/com/google/android/gms/oss/licenses/plugin/LicensesTask.groovy b/oss-licenses-plugin/src/main/groovy/com/google/android/gms/oss/licenses/plugin/LicensesTask.groovy
+index 43db6652..7dac8aae 100644
+--- a/oss-licenses-plugin/src/main/groovy/com/google/android/gms/oss/licenses/plugin/LicensesTask.groovy
++++ b/oss-licenses-plugin/src/main/groovy/com/google/android/gms/oss/licenses/plugin/LicensesTask.groovy
+@@ -25,6 +25,7 @@ import org.gradle.api.tasks.OutputFile
+ import org.gradle.api.tasks.TaskAction
+ import org.slf4j.LoggerFactory
+
++import java.util.stream.Collectors
+ import java.util.zip.ZipEntry
+ import java.util.zip.ZipFile
+
+@@ -114,7 +115,9 @@ abstract class LicensesTask extends DefaultTask {
+ ArtifactInfo artifactInfo = artifactInfoFromEntry(entry)
+ artifactInfoSet.add(artifactInfo)
+ }
+- artifactInfoSet.toList().asImmutable()
++ artifactInfoSet.stream()
++ .sorted(Comparator.comparing { it.toString() })
++ .collect(Collectors.toUnmodifiableList())
+ }
+
+ private void addDebugLicense() {
=====================================
projects/oss-licenses-plugin/sort-dependencies.diff deleted
=====================================
@@ -1,40 +0,0 @@
-diff --git a/oss-licenses-plugin/src/main/groovy/com/google/android/gms/oss/licenses/plugin/ArtifactInfo.groovy b/oss-licenses-plugin/src/main/groovy/com/google/android/gms/oss/licenses/plugin/ArtifactInfo.groovy
-index d6d854d..622072d 100644
---- a/oss-licenses-plugin/src/main/groovy/com/google/android/gms/oss/licenses/plugin/ArtifactInfo.groovy
-+++ b/oss-licenses-plugin/src/main/groovy/com/google/android/gms/oss/licenses/plugin/ArtifactInfo.groovy
-@@ -16,7 +16,7 @@
-
- package com.google.android.gms.oss.licenses.plugin
-
--class ArtifactInfo {
-+class ArtifactInfo implements Comparable<ArtifactInfo> {
- private String group
- private String name
- private String fileLocation
-@@ -47,4 +47,13 @@ class ArtifactInfo {
- String getVersion() {
- return version
- }
-+
-+ String toString() {
-+ return "$group:$name:$version"
-+ }
-+
-+ @Override
-+ int compareTo(ArtifactInfo other) {
-+ return toString().compareTo(other.toString())
-+ }
- }
-diff --git a/oss-licenses-plugin/src/main/groovy/com/google/android/gms/oss/licenses/plugin/DependencyTask.groovy b/oss-licenses-plugin/src/main/groovy/com/google/android/gms/oss/licenses/plugin/DependencyTask.groovy
-index 75f6527..26a9bf7 100644
---- a/oss-licenses-plugin/src/main/groovy/com/google/android/gms/oss/licenses/plugin/DependencyTask.groovy
-+++ b/oss-licenses-plugin/src/main/groovy/com/google/android/gms/oss/licenses/plugin/DependencyTask.groovy
-@@ -47,7 +47,7 @@ import org.slf4j.LoggerFactory
- */
- class DependencyTask extends DefaultTask {
- protected Set<String> artifactSet = []
-- protected Set<ArtifactInfo> artifactInfos = []
-+ protected TreeSet<ArtifactInfo> artifactInfos = []
- protected static final String LOCAL_LIBRARY_VERSION = "unspecified"
- private static final String TEST_PREFIX = "test"
- private static final String ANDROID_TEST_PREFIX = "androidTest"
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/compare/…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/compare/…
You're receiving this email because of your account on gitlab.torproject.org.
[View Less]
1
0

[Git][tpo/applications/tor-browser][tor-browser-140.0a1-15.0-1] 4 commits: fixup! TB 42669: [android] Use custom no-op app-services
by Dan Ballard (@dan) 17 Jun '25
by Dan Ballard (@dan) 17 Jun '25
17 Jun '25
Dan Ballard pushed to branch tor-browser-140.0a1-15.0-1 at The Tor Project / Applications / Tor Browser
Commits:
4d19dc54 by Beatriz Rizental at 2025-06-17T14:39:17-07:00
fixup! TB 42669: [android] Use custom no-op app-services
- - - - -
7d929101 by Beatriz Rizental at 2025-06-17T14:39:17-07:00
Revert "TB 40185: [android] Use NimbusDisabled"
This reverts commit c98c78c527f11856aab9f7e16ff503f267e665e2.
- - - - -
0235f26b by Beatriz Rizental at 2025-06-17T14:39:17-07:00
[android] Override …
[View More]settings
- - - - -
d5bc2018 by Beatriz Rizental at 2025-06-17T14:39:17-07:00
fixup! [android] Override settings
Disable the tab-strip experiment for all channels. Having this
experiment enabled overrides the toolbar position to always be on the
top, which we don't want.
- - - - -
19 changed files:
- mobile/android/android-components/components/browser/storage-sync/src/main/java/mozilla/components/browser/storage/sync/RemoteTabsStorage.kt
- mobile/android/android-components/components/concept/sync/src/main/java/mozilla/components/concept/sync/AccountEvent.kt
- mobile/android/android-components/components/service/firefox-accounts/src/main/java/mozilla/components/service/fxa/FxaDeviceConstellation.kt
- mobile/android/android-components/components/service/nimbus/src/main/java/mozilla/components/service/nimbus/messaging/NimbusMessagingController.kt
- mobile/android/android-components/components/service/nimbus/src/main/java/mozilla/components/service/nimbus/messaging/NimbusMessagingStorage.kt
- mobile/android/android-components/plugins/dependencies/src/main/java/ApplicationServices.kt
- mobile/android/fenix/app/nimbus.fml.yaml
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/FenixApplication.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/HomeActivity.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/BackgroundServices.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/NimbusComponents.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/onboarding/FenixOnboarding.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/onboarding/ReEngagementNotificationWorker.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/advanced/DefaultLocaleSettingsController.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/share/SaveToPDFMiddleware.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/utils/Settings.kt
Changes:
=====================================
mobile/android/android-components/components/browser/storage-sync/src/main/java/mozilla/components/browser/storage/sync/RemoteTabsStorage.kt
=====================================
@@ -161,6 +161,7 @@ class RemoteTabsCommandQueue(
.groupBy {
when (it.command) {
is RemoteCommand.CloseTab -> PendingCommandGroup.Key.CloseTab(it.deviceId)
+ is RemoteCommand.__NOOP -> PendingCommandGroup.Key.Noop(it.deviceId)
// Add `is ... ->` branches for future pending commands here...
}.asAnyKey
}
@@ -184,6 +185,13 @@ class RemoteTabsCommandQueue(
pendingCommands = pendingCommands,
)
}
+ is PendingCommandGroup.Key.Noop -> {
+ PendingCommandGroup(
+ deviceId = key.deviceId,
+ command = DeviceCommandOutgoing.Noop(),
+ pendingCommands = pendingCommands,
+ )
+ }
// Add `is ... ->` branches for future pending command grouping keys here...
}.asAnyGroup
}
@@ -279,6 +287,7 @@ class RemoteTabsCommandQueue(
sealed interface Key {
data class CloseTab(val deviceId: String) : Key
+ data class Noop(val deviceId: String) : Key
// Add data classes for future pending command grouping keys here...
/** Returns this grouping key as a type-erased [Key]. */
=====================================
mobile/android/android-components/components/concept/sync/src/main/java/mozilla/components/concept/sync/AccountEvent.kt
=====================================
@@ -55,6 +55,9 @@ sealed class DeviceCommandIncoming {
* Outgoing device commands (ie, targeted at other devices.)
*/
sealed class DeviceCommandOutgoing {
+ /** A command to do nothing */
+ class Noop() : DeviceCommandOutgoing()
+
/** A command to open a tab on another device */
class SendTab(val title: String, val url: String) : DeviceCommandOutgoing()
=====================================
mobile/android/android-components/components/service/firefox-accounts/src/main/java/mozilla/components/service/fxa/FxaDeviceConstellation.kt
=====================================
@@ -195,8 +195,10 @@ class FxaDeviceConstellation(
is RustCloseTabsResult.Ok -> Result.success(true)
is RustCloseTabsResult.TabsNotClosed ->
Result.failure(SendCommandException.TabsNotClosed(closeTabsResult.urls))
+ is RustCloseTabsResult.__NOOP -> Result.success(false)
}
}
+ is DeviceCommandOutgoing.Noop -> Result.success(false)
}
val errors: List<Throwable> = SyncTelemetry.processFxaTelemetry(account.gatherTelemetry())
for (error in errors) {
=====================================
mobile/android/android-components/components/service/nimbus/src/main/java/mozilla/components/service/nimbus/messaging/NimbusMessagingController.kt
=====================================
@@ -96,32 +96,32 @@ open class NimbusMessagingController(
* creates a URI string for the message action.
*/
@VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
- open fun processMessageActionToUri(message: Message): Uri {
+ fun processMessageActionToUri(message: Message): Uri {
val (uuid, action) = messagingStorage.generateUuidAndFormatMessage(message)
sendClickedMessageTelemetry(message.id, uuid)
return convertActionIntoDeepLinkSchemeUri(action)
}
- open fun sendDismissedMessageTelemetry(messageId: String) {
+ private fun sendDismissedMessageTelemetry(messageId: String) {
GleanMessaging.messageDismissed.record(GleanMessaging.MessageDismissedExtra(messageId))
}
- open fun sendShownMessageTelemetry(messageId: String) {
+ private fun sendShownMessageTelemetry(messageId: String) {
GleanMessaging.messageShown.record(GleanMessaging.MessageShownExtra(messageId))
}
- open fun sendExpiredMessageTelemetry(messageId: String) {
+ private fun sendExpiredMessageTelemetry(messageId: String) {
GleanMessaging.messageExpired.record(GleanMessaging.MessageExpiredExtra(messageId))
}
- open fun sendClickedMessageTelemetry(messageId: String, uuid: String?) {
+ private fun sendClickedMessageTelemetry(messageId: String, uuid: String?) {
GleanMessaging.messageClicked.record(
GleanMessaging.MessageClickedExtra(messageKey = messageId, actionUuid = uuid),
)
}
- open fun sendMicrosurveyCompletedTelemetry(messageId: String, answer: String) {
+ private fun sendMicrosurveyCompletedTelemetry(messageId: String, answer: String) {
Microsurvey.submitButtonTapped.record(
Microsurvey.SubmitButtonTappedExtra(
surveyId = messageId,
@@ -130,7 +130,7 @@ open class NimbusMessagingController(
)
}
- open fun convertActionIntoDeepLinkSchemeUri(action: String): Uri =
+ private fun convertActionIntoDeepLinkSchemeUri(action: String): Uri =
if (action.startsWith("://")) {
"$deepLinkScheme$action".toUri()
} else {
=====================================
mobile/android/android-components/components/service/nimbus/src/main/java/mozilla/components/service/nimbus/messaging/NimbusMessagingStorage.kt
=====================================
@@ -33,7 +33,7 @@ const val MESSAGING_FEATURE_ID = "messaging"
/**
* Provides messages from [messagingFeature] and combine with the metadata store on [metadataStorage].
*/
-open class NimbusMessagingStorage(
+class NimbusMessagingStorage(
private val context: Context,
private val metadataStorage: MessageMetadataStorage,
private val onMalformedMessage: (String) -> Unit = {
=====================================
mobile/android/android-components/plugins/dependencies/src/main/java/ApplicationServices.kt
=====================================
@@ -3,8 +3,8 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// These lines are generated by android-components/automation/application-services-nightly-bump.py
-val VERSION = "140.20250523140405"
-val CHANNEL = ApplicationServicesChannel.NIGHTLY
+val VERSION = "140.0-TORBROWSER"
+val CHANNEL = ApplicationServicesChannel.RELEASE
object ApplicationServicesConfig {
val version = VERSION
=====================================
mobile/android/fenix/app/nimbus.fml.yaml
=====================================
@@ -642,13 +642,13 @@ features:
defaults:
- channel: developer
value:
- enabled: true
+ enabled: false
- channel: nightly
value:
- enabled: true
+ enabled: false
- channel: beta
value:
- enabled: true
+ enabled: false
trending-searches:
description: Enables trending searches.
=====================================
mobile/android/fenix/app/src/main/java/org/mozilla/fenix/FenixApplication.kt
=====================================
@@ -212,7 +212,7 @@ open class FenixApplication : LocaleAwareApplication(), Provider {
//
// We can initialize Nimbus before Glean because Glean will queue messages
// before it's initialized.
- // initializeNimbus()
+ initializeNimbus()
ProfilerMarkerFactProcessor.create { components.core.engine.profiler }.register()
=====================================
mobile/android/fenix/app/src/main/java/org/mozilla/fenix/HomeActivity.kt
=====================================
@@ -124,6 +124,7 @@ import org.mozilla.fenix.ext.getNavDirections
import org.mozilla.fenix.ext.hasTopDestination
import org.mozilla.fenix.ext.nav
import org.mozilla.fenix.ext.openSetDefaultBrowserOption
+import org.mozilla.fenix.ext.recordEventInNimbus
import org.mozilla.fenix.ext.setNavigationIcon
import org.mozilla.fenix.ext.settings
import org.mozilla.fenix.extension.WebExtensionPromptFeature
@@ -458,7 +459,7 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity, TorAn
if (!shouldShowOnboarding) {
lifecycleScope.launch(IO) {
- // showFullscreenMessageIfNeeded(applicationContext)
+ showFullscreenMessageIfNeeded(applicationContext)
}
// Unless the activity is recreated, navigate to home first (without rendering it)
@@ -498,7 +499,7 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity, TorAn
),
)
// This will record an event in Nimbus' internal event store. Used for behavioral targeting
- // recordEventInNimbus("app_opened")
+ recordEventInNimbus("app_opened")
if (safeIntent.action.equals(ACTION_OPEN_PRIVATE_TAB) && source == APP_ICON) {
AppIcon.newPrivateTabTapped.record(NoExtras())
@@ -1549,12 +1550,10 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity, TorAn
keyDismissButtonText = null,
)
- /*
researchSurfaceDialogFragment.onAccept = {
processIntent(messaging.getIntentForMessage(nextMessage))
components.appStore.dispatch(AppAction.MessagingAction.MessageClicked(nextMessage))
}
- */
researchSurfaceDialogFragment.onDismiss = {
components.appStore.dispatch(AppAction.MessagingAction.MessageDismissed(nextMessage))
@@ -1567,10 +1566,10 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity, TorAn
)
}
-// // Update message as displayed.
-// val currentBootUniqueIdentifier = BootUtils.getBootIdentifier(context)
-//
-// messaging.onMessageDisplayed(nextMessage, currentBootUniqueIdentifier)
+ // Update message as displayed.
+ val currentBootUniqueIdentifier = BootUtils.getBootIdentifier(context)
+
+ messaging.onMessageDisplayed(nextMessage, currentBootUniqueIdentifier)
}
private fun showCrashReporter() {
=====================================
mobile/android/fenix/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt
=====================================
@@ -598,7 +598,7 @@ class BrowserFragment : BaseBrowserFragment(), UserInteractionHandler {
override fun navToQuickSettingsSheet(tab: SessionState, sitePermissions: SitePermissions?) {
val useCase = requireComponents.useCases.trackingProtectionUseCases
- // FxNimbus.features.cookieBanners.recordExposure()
+ FxNimbus.features.cookieBanners.recordExposure()
useCase.containsException(tab.id) { hasTrackingProtectionException ->
lifecycleScope.launch {
val cookieBannersStorage = requireComponents.core.cookieBannersStorage
=====================================
mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/BackgroundServices.kt
=====================================
@@ -49,6 +49,7 @@ import org.mozilla.fenix.GleanMetrics.SyncAuth
import org.mozilla.fenix.R
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.maxActiveTime
+import org.mozilla.fenix.ext.recordEventInNimbus
import org.mozilla.fenix.ext.settings
import org.mozilla.fenix.perf.StrictModeManager
import org.mozilla.fenix.perf.lazyMonitored
@@ -266,7 +267,7 @@ internal class TelemetryAccountObserver(
// User signed-in into an existing FxA account.
AuthType.Signin -> {
SyncAuth.signIn.record(NoExtras())
- // context.recordEventInNimbus("sync_auth.sign_in")
+ context.recordEventInNimbus("sync_auth.sign_in")
}
// User created a new FxA account.
=====================================
mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/NimbusComponents.kt
=====================================
@@ -5,28 +5,17 @@
package org.mozilla.fenix.components
import android.content.Context
-import android.content.Intent
-import android.net.Uri
import mozilla.components.service.nimbus.NimbusApi
-import mozilla.components.service.nimbus.NimbusDisabled
import mozilla.components.service.nimbus.messaging.FxNimbusMessaging
-import mozilla.components.service.nimbus.messaging.Message
-import mozilla.components.service.nimbus.messaging.Message.Metadata
-import mozilla.components.service.nimbus.messaging.MessageData
-import mozilla.components.service.nimbus.messaging.MessageMetadataStorage
-import mozilla.components.service.nimbus.messaging.MessageSurfaceId
import mozilla.components.service.nimbus.messaging.NimbusMessagingController
import mozilla.components.service.nimbus.messaging.NimbusMessagingControllerInterface
import mozilla.components.service.nimbus.messaging.NimbusMessagingStorage
import mozilla.components.service.nimbus.messaging.OnDiskMessageMetadataStorage
-import mozilla.components.service.nimbus.messaging.StyleData
import org.mozilla.experiments.nimbus.NimbusEventStore
import org.mozilla.experiments.nimbus.NimbusMessagingHelperInterface
-import org.mozilla.experiments.nimbus.NullNimbus
import org.mozilla.fenix.BuildConfig
import org.mozilla.fenix.experiments.createNimbus
import org.mozilla.fenix.messaging.CustomAttributeProvider
-import org.mozilla.fenix.nimbus.FxNimbus
import org.mozilla.fenix.perf.lazyMonitored
/**
@@ -39,14 +28,7 @@ class NimbusComponents(private val context: Context) {
* should be mediated through a FML generated class, e.g. [FxNimbus].
*/
val sdk: NimbusApi by lazyMonitored {
- if (BuildConfig.DATA_COLLECTION_DISABLED) {
- NimbusDisabled(context)
- } else {
- createNimbus(context, BuildConfig.NIMBUS_ENDPOINT).also { api ->
- FxNimbus.api = api
- }
- }
-
+ createNimbus(context, BuildConfig.NIMBUS_ENDPOINT)
}
/**
@@ -62,8 +44,7 @@ class NimbusComponents(private val context: Context) {
* the JEXL helper available from [createJexlHelper].
*/
val events: NimbusEventStore by lazyMonitored {
- NullNimbus(context)
- //sdk.events
+ sdk.events
}
/**
@@ -97,7 +78,7 @@ class NimbusComponents(private val context: Context) {
* from the Nimbus Messaging component.
*/
val messaging: NimbusMessagingControllerInterface by lazyMonitored {
- NullNimbusMessagingController(
+ NimbusMessagingController(
messagingStorage = messagingStorage,
deepLinkScheme = BuildConfig.DEEP_LINK_SCHEME,
)
@@ -111,132 +92,10 @@ class NimbusComponents(private val context: Context) {
private val messagingStorage by lazyMonitored {
NimbusMessagingStorage(
context = context,
- metadataStorage = NullMessageMetadataStorage(), //OnDiskMessageMetadataStorage(context),
+ metadataStorage = OnDiskMessageMetadataStorage(context),
nimbus = sdk,
messagingFeature = FxNimbusMessaging.features.messaging,
attributeProvider = CustomAttributeProvider,
)
}
}
-// Noop impl of MessageMetadataStorage to replace OnDiskMessageMetadataStorage
-class NullMessageMetadataStorage(): MessageMetadataStorage {
- override suspend fun getMetadata(): Map<String, Message.Metadata> {
- var metadataMap: MutableMap<String, Message.Metadata> = hashMapOf()
- return metadataMap
- }
-
- override suspend fun addMetadata(metadata: Message.Metadata): Message.Metadata {
- return metadata
- }
-
- override suspend fun updateMetadata(metadata: Message.Metadata) {
- // noop
- }
-}
-
-class NullNimbusMessagingController(
- messagingStorage: NimbusMessagingStorage,
- deepLinkScheme: String,
-) : NimbusMessagingController(messagingStorage, deepLinkScheme) {
-
- private val nullMessage: Message = Message(
- id = "",
- data = MessageData(),
- action = "",
- style = StyleData(),
- triggerIfAll = listOf(),
- excludeIfAny = listOf(),
- metadata = Metadata(""),
- )
-
- override suspend fun onMessageDisplayed(displayedMessage: Message, bootIdentifier: String?): Message {
- return nullMessage
- }
-
- /**
- * Called when a message has been dismissed by the user.
- *
- * Records a messageDismissed event, and records that the message
- * has been dismissed.
- */
- override suspend fun onMessageDismissed(message: Message) {
- return
- }
-
- /**
- * Called when a microsurvey attached to a message has been completed by the user.
- *
- * @param message The message containing the microsurvey that was completed.
- * @param answer The user's response to the microsurvey question.
- */
- override suspend fun onMicrosurveyCompleted(message: Message, answer: String) {
- return
- }
-
- /**
- * Called once the user has clicked on a message.
- *
- * This records that the message has been clicked on, but does not record a
- * glean event. That should be done via [processMessageActionToUri].
- */
- override suspend fun onMessageClicked(message: Message) {
- return
- }
-
- /**
- * Create and return the relevant [Intent] for the given [Message].
- *
- * @param message the [Message] to create the [Intent] for.
- * @return an [Intent] using the processed [Message].
- */
- override fun getIntentForMessage(message: Message) = Intent()
-
- /**
- * Will attempt to get the [Message] for the given [id].
- *
- * @param id the [Message.id] of the [Message] to try to match.
- * @return the [Message] with a matching [id], or null if no [Message] has a matching [id].
- */
- override suspend fun getMessage(id: String): Message? {
- return nullMessage
- }
-
- /**
- * The [message] action needs to be examined for string substitutions
- * and any `uuid` needs to be recorded in the Glean event.
- *
- * We call this `process` as it has a side effect of logging a Glean event while it
- * creates a URI string for the message action.
- */
- override fun processMessageActionToUri(message: Message): Uri {
- return Uri.EMPTY
- }
-
- override fun sendDismissedMessageTelemetry(messageId: String) {
- return
- }
-
- override fun sendShownMessageTelemetry(messageId: String) {
- return
- }
-
- override fun sendExpiredMessageTelemetry(messageId: String) {
- return
- }
-
- override fun sendClickedMessageTelemetry(messageId: String, uuid: String?) {
- return
- }
-
- override fun sendMicrosurveyCompletedTelemetry(messageId: String, answer: String) {
- return
- }
-
- override fun convertActionIntoDeepLinkSchemeUri(action: String): Uri = Uri.EMPTY
-
- override suspend fun getMessages(): List<Message> = listOf()
-
- override suspend fun getNextMessage(surfaceId: MessageSurfaceId) = nullMessage
-
- override fun getNextMessage(surfaceId: MessageSurfaceId, messages: List<Message>) = nullMessage
-}
=====================================
mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt
=====================================
@@ -581,7 +581,7 @@ class HomeFragment : Fragment(), UserInteractionHandler {
disableAppBarDragging()
- // FxNimbus.features.homescreen.recordExposure()
+ FxNimbus.features.homescreen.recordExposure()
// DO NOT MOVE ANYTHING BELOW THIS addMarker CALL!
requireComponents.core.engine.profiler?.addMarker(
=====================================
mobile/android/fenix/app/src/main/java/org/mozilla/fenix/onboarding/FenixOnboarding.kt
=====================================
@@ -33,7 +33,7 @@ class FenixOnboarding(context: Context) : PreferencesHolder {
// - We would like to evaluate the configuration only once (and thus it's kept in memory
// and not re-evaluated)
val config by lazy {
- // FxNimbus.features.onboarding.recordExposure()
+ FxNimbus.features.onboarding.recordExposure()
FxNimbus.features.onboarding.value()
}
=====================================
mobile/android/fenix/app/src/main/java/org/mozilla/fenix/onboarding/ReEngagementNotificationWorker.kt
=====================================
@@ -45,7 +45,7 @@ class ReEngagementNotificationWorker(
// Recording the exposure event here to capture all users who met all criteria to receive
// the re-engagement notification
- // FxNimbus.features.reEngagementNotification.recordExposure()
+ FxNimbus.features.reEngagementNotification.recordExposure()
if (!settings.reEngagementNotificationEnabled) {
return Result.success()
=====================================
mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt
=====================================
@@ -216,14 +216,11 @@ class SettingsFragment : PreferenceFragmentCompat(), UserInteractionHandler {
override fun onResume() {
super.onResume()
- // IN TOR BROWSER: We don't talk about Nimbus!
- // ~Use nimbus to set the title, and a trivial addition~
- // val nimbusValidation = FxNimbus.features.nimbusValidation.value()
+ // Use nimbus to set the title, and a trivial addition
+ val nimbusValidation = FxNimbus.features.nimbusValidation.value()
- // val title = nimbusValidation.settingsTitle
- // val suffix = nimbusValidation.settingsPunctuation
- val title = getString(R.string.settings_title)
- val suffix = ""
+ val title = nimbusValidation.settingsTitle
+ val suffix = nimbusValidation.settingsPunctuation
showToolbar("$title$suffix")
@@ -819,7 +816,7 @@ class SettingsFragment : PreferenceFragmentCompat(), UserInteractionHandler {
@VisibleForTesting
internal fun setupCookieBannerPreference() {
- // FxNimbus.features.cookieBanners.recordExposure()
+ FxNimbus.features.cookieBanners.recordExposure()
if (context?.settings()?.shouldShowCookieBannerUI == false) return
with(requirePreference<SwitchPreference>(R.string.pref_key_cookie_banner_private_mode)) {
isVisible = context.settings().shouldShowCookieBannerUI
=====================================
mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/advanced/DefaultLocaleSettingsController.kt
=====================================
@@ -40,7 +40,7 @@ class DefaultLocaleSettingsController(
LocaleManager.updateBaseConfiguration(activity, locale)
// Invalidate cached values to use the new locale
- // FxNimbus.features.nimbusValidation.withCachedValue(null)
+ FxNimbus.features.nimbusValidation.withCachedValue(null)
activity.recreate()
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
activity.overrideActivityTransition(Activity.OVERRIDE_TRANSITION_OPEN, 0, 0)
@@ -60,7 +60,7 @@ class DefaultLocaleSettingsController(
LocaleManager.updateBaseConfiguration(activity, localeSettingsStore.state.localeList[0])
// Invalidate cached values to use the default locale
- // FxNimbus.features.nimbusValidation.withCachedValue(null)
+ FxNimbus.features.nimbusValidation.withCachedValue(null)
activity.recreate()
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
activity.overrideActivityTransition(Activity.OVERRIDE_TRANSITION_OPEN, 0, 0)
=====================================
mobile/android/fenix/app/src/main/java/org/mozilla/fenix/share/SaveToPDFMiddleware.kt
=====================================
@@ -22,6 +22,7 @@ import org.mozilla.fenix.R
import org.mozilla.fenix.browser.StandardSnackbarError
import org.mozilla.fenix.components.appstate.AppAction
import org.mozilla.fenix.ext.components
+import org.mozilla.fenix.ext.recordEventInNimbus
import org.mozilla.geckoview.GeckoSession
import org.mozilla.geckoview.GeckoSession.GeckoPrintException.ERROR_NO_ACTIVITY_CONTEXT
import org.mozilla.geckoview.GeckoSession.GeckoPrintException.ERROR_NO_ACTIVITY_CONTEXT_DELEGATE
@@ -152,7 +153,7 @@ class SaveToPDFMiddleware(
source = telemetrySource(isPdf),
),
)
- // context.recordEventInNimbus("print_tapped")
+ context.recordEventInNimbus("print_tapped")
} else {
Events.saveToPdfTapped.record(
Events.SaveToPdfTappedExtra(
=====================================
mobile/android/fenix/app/src/main/java/org/mozilla/fenix/utils/Settings.kt
=====================================
@@ -320,7 +320,7 @@ class Settings(private val appContext: Context) : PreferencesHolder {
var showWallpaperOnboarding by lazyFeatureFlagPreference(
key = appContext.getPreferenceKey(R.string.pref_key_wallpapers_onboarding),
featureFlag = true,
- default = { true /* mr2022Sections[Mr2022Section.WALLPAPERS_SELECTION_TOOL] == true */ },
+ default = { true },
)
var openLinksInAPrivateTab by booleanPreference(
@@ -820,25 +820,25 @@ class Settings(private val appContext: Context) : PreferencesHolder {
get() = false // cookieBannersSection[CookieBannersSection.FEATURE_UI] == 1
val shouldEnableCookieBannerDetectOnly: Boolean
- get() = false // cookieBannersSection[CookieBannersSection.FEATURE_SETTING_DETECT_ONLY] == 1
+ get() = false
val shouldEnableCookieBannerGlobalRules: Boolean
- get() = false // cookieBannersSection[CookieBannersSection.FEATURE_SETTING_GLOBAL_RULES] == 1
+ get() = false
val shouldEnableCookieBannerGlobalRulesSubFrame: Boolean
- get() = false // cookieBannersSection[CookieBannersSection.FEATURE_SETTING_GLOBAL_RULES_SUB_FRAMES] == 1
+ get() = false
val shouldEnableQueryParameterStripping: Boolean
- get() = true // queryParameterStrippingSection[QUERY_PARAMETER_STRIPPING] == "1"
+ get() = true
val shouldEnableQueryParameterStrippingPrivateBrowsing: Boolean
- get() = true // queryParameterStrippingSection[QUERY_PARAMETER_STRIPPING_PMB] == "1"
+ get() = true
val queryParameterStrippingAllowList: String
- get() = "" // queryParameterStrippingSection[QUERY_PARAMETER_STRIPPING_ALLOW_LIST].orEmpty()
+ get() = ""
val queryParameterStrippingStripList: String
- get() = "" // queryParameterStrippingSection[QUERY_PARAMETER_STRIPPING_STRIP_LIST].orEmpty()
+ get() = ""
/**
* Declared as a function for performance purposes. This could be declared as a variable using
@@ -896,8 +896,7 @@ class Settings(private val appContext: Context) : PreferencesHolder {
* Indicates if the re-engagement notification feature is enabled
*/
val reEngagementNotificationType: Int
- get() = 0 // Neither Type A or B
- // FxNimbus.features.reEngagementNotification.value().type
+ get() = 0
val shouldUseAutoBatteryTheme by booleanPreference(
appContext.getPreferenceKey(R.string.pref_key_auto_battery_theme),
@@ -1709,24 +1708,22 @@ class Settings(private val appContext: Context) : PreferencesHolder {
return currentlyEnabledLanguages.contains(userLangTag)
}
-// private val mr2022Sections: Map<Mr2022Section, Boolean>
-// get() =
-// FxNimbus.features.mr2022.value().sectionsEnabled
+ private val mr2022Sections: Map<Mr2022Section, Boolean>
+ get() =
+ FxNimbus.features.mr2022.value().sectionsEnabled
-// private val cookieBannersSection: Map<CookieBannersSection, Int>
-// get() =
-// FxNimbus.features.cookieBanners.value().sectionsEnabled
+ private val cookieBannersSection: Map<CookieBannersSection, Int>
+ get() =
+ FxNimbus.features.cookieBanners.value().sectionsEnabled
-// private val queryParameterStrippingSection: Map<QueryParameterStrippingSection, String>
-// get() =
-// FxNimbus.features.queryParameterStripping.value().sectionsEnabled
+ private val queryParameterStrippingSection: Map<QueryParameterStrippingSection, String>
+ get() =
+ FxNimbus.features.queryParameterStripping.value().sectionsEnabled
-// private val homescreenSections: Map<HomeScreenSection, Boolean>
-// get() =
-// FxNimbus.features.homescreen.value().sectionsEnabled
+ private val homescreenSections: Map<HomeScreenSection, Boolean>
+ get() =
+ FxNimbus.features.homescreen.value().sectionsEnabled
- // IN TOR BROWSER: we want to avoid ever calling Nimbus, so we hard-code defaults
- // for everything that would have accessed this property.
var historyMetadataUIFeature by lazyFeatureFlagPreference(
appContext.getPreferenceKey(R.string.pref_key_history_metadata_feature),
default = { true },
@@ -1739,7 +1736,7 @@ class Settings(private val appContext: Context) : PreferencesHolder {
var showSyncCFR by lazyFeatureFlagPreference(
appContext.getPreferenceKey(R.string.pref_key_should_show_sync_cfr),
featureFlag = true,
- default = { false /* mr2022Sections[Mr2022Section.SYNC_CFR] == true */ },
+ default = { false },
)
/**
@@ -1748,7 +1745,7 @@ class Settings(private val appContext: Context) : PreferencesHolder {
var showHomeOnboardingDialog by lazyFeatureFlagPreference(
appContext.getPreferenceKey(R.string.pref_key_should_show_home_onboarding_dialog),
featureFlag = true,
- default = { true /* mr2022Sections[Mr2022Section.HOME_ONBOARDING_DIALOG_EXISTING_USERS] == true */ },
+ default = { true },
)
/**
@@ -1917,7 +1914,6 @@ class Settings(private val appContext: Context) : PreferencesHolder {
isLauncherIntent: Boolean,
): Boolean {
return if (featureEnabled && !hasUserBeenOnboarded && isLauncherIntent) {
- // FxNimbus.features.junoOnboarding.recordExposure()
false
} else {
false
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/37eb9b…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/37eb9b…
You're receiving this email because of your account on gitlab.torproject.org.
[View Less]
1
0

[Git][tpo/applications/tor-browser] Pushed new branch tor-browser-128.12.0esr-14.5-1
by ma1 (@ma1) 17 Jun '25
by ma1 (@ma1) 17 Jun '25
17 Jun '25
ma1 pushed new branch tor-browser-128.12.0esr-14.5-1 at The Tor Project / Applications / Tor Browser
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/tree/tor-brows…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser] Pushed new tag FIREFOX_128_12_0esr_BUILD1
by ma1 (@ma1) 17 Jun '25
by ma1 (@ma1) 17 Jun '25
17 Jun '25
ma1 pushed new tag FIREFOX_128_12_0esr_BUILD1 at The Tor Project / Applications / Tor Browser
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/tree/FIREFOX_1…
You're receiving this email because of your account on gitlab.torproject.org.
1
0