tbb-commits
Threads by month
- ----- 2026 -----
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- 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
- 20449 discussions
[tor-browser-build/maint-10.0-android] Bug 40208: Mitigate uniffi non-deterministic code generation
by sysrqb@torproject.org 22 Jan '21
by sysrqb@torproject.org 22 Jan '21
22 Jan '21
commit 665cc8453c924e8df533d2477a42e4d9c328d9b1
Author: Matthew Finkel <sysrqb(a)torproject.org>
Date: Thu Jan 21 00:08:36 2021 +0000
Bug 40208: Mitigate uniffi non-deterministic code generation
---
projects/uniffi-rs/btreeset.patch | 31 +++++++++++++++++++++++++++++++
projects/uniffi-rs/build | 8 ++++++++
projects/uniffi-rs/config | 1 +
3 files changed, 40 insertions(+)
diff --git a/projects/uniffi-rs/btreeset.patch b/projects/uniffi-rs/btreeset.patch
new file mode 100644
index 0000000..cb81a00
--- /dev/null
+++ b/projects/uniffi-rs/btreeset.patch
@@ -0,0 +1,31 @@
+diff --git a/uniffi_bindgen/src/interface/types.rs b/uniffi_bindgen/src/interface/types.rs
+index 6448d58..b7efd22 100644
+--- a/uniffi_bindgen/src/interface/types.rs
++++ b/uniffi_bindgen/src/interface/types.rs
+@@ -26,7 +26,7 @@
+ use anyhow::bail;
+ use anyhow::Result;
+ use std::convert::TryFrom;
+-use std::{collections::hash_map::Entry, collections::HashMap, collections::HashSet};
++use std::{collections::hash_map::Entry, collections::HashMap, collections::BTreeSet};
+
+ use super::Attributes;
+
+@@ -71,7 +71,7 @@ pub enum FFIType {
+ /// Represents all the different high-level types that can be used in a component interface.
+ /// At this level we identify user-defined types by name, without knowing any details
+ /// of their internal structure apart from what type of thing they are (record, enum, etc).
+-#[derive(Debug, Clone, Eq, PartialEq, Hash)]
++#[derive(Debug, Clone, Eq, PartialEq, Hash, PartialOrd, Ord)]
+ pub enum Type {
+ // Primitive types.
+ UInt8,
+@@ -195,7 +195,7 @@ pub(crate) struct TypeUniverse {
+ // Named type definitions (including aliases).
+ type_definitions: HashMap<String, Type>,
+ // All the types in the universe, by canonical type name.
+- all_known_types: HashSet<Type>,
++ all_known_types: BTreeSet<Type>,
+ }
+
+ impl TypeUniverse {
diff --git a/projects/uniffi-rs/build b/projects/uniffi-rs/build
index 60ba1b1..1663071 100644
--- a/projects/uniffi-rs/build
+++ b/projects/uniffi-rs/build
@@ -22,6 +22,14 @@ replace-with = "vendored-sources"
directory = "/var/tmp/build/uniffi-rs/vendor"
EOF
+# We change the data type of the `all_known_types` Set from HashSet to BTreeSet.
+# Uniffi iterates over the elements of this set, and iteration over a HashSet occurs
+# in an arbitrary order, while iteration over a BTreeSet orders in a defined (and
+# deterministic) order. This patch solves a build reproducibility issue, see
+# tor-browser-build#40208.
+#
+# Upstream bug: https://github.com/mozilla/uniffi-rs/issues/374
+patch -p1 < $rootdir/btreeset.patch
# We usually use --frozen but there is no Cargo.lock file available. Thus resort
# to --offline.
cargo build --release --offline --target x86_64-unknown-linux-gnu
diff --git a/projects/uniffi-rs/config b/projects/uniffi-rs/config
index 5dda990..7d89cc2 100644
--- a/projects/uniffi-rs/config
+++ b/projects/uniffi-rs/config
@@ -15,3 +15,4 @@ input_files:
# `cargo vendor vendor` in the `uniffi-rs` directory has vendored the sources.
- URL: https://people.torproject.org/~gk/mirrors/sources/uniffi-rs-vendor-[% c('version') %].tar.bz2
sha256sum: 71d912237208c35a762b3c812afe0a758823792dd745c1253314bcccc1694b7f
+ - filename: btreeset.patch
1
0
[tor-browser-build/maint-10.0-android] Bug 40191: Update fenix to 85.0.0-beta.1
by sysrqb@torproject.org 22 Jan '21
by sysrqb@torproject.org 22 Jan '21
22 Jan '21
commit 2b022f310af64e3a466c7c52add1812456bde78a
Author: Georg Koppen <gk(a)torproject.org>
Date: Mon Dec 21 21:08:43 2020 +0000
Bug 40191: Update fenix to 85.0.0-beta.1
---
projects/fenix/config | 6 +-
projects/fenix/gradle-dependencies-list.txt | 508 +++++++++++++++-------------
2 files changed, 272 insertions(+), 242 deletions(-)
diff --git a/projects/fenix/config b/projects/fenix/config
index 7fa5dda..0a353f6 100644
--- a/projects/fenix/config
+++ b/projects/fenix/config
@@ -8,13 +8,13 @@ gpg_keyring: torbutton.gpg
variant: Release
var:
- fenix_version: 84.1.4
+ fenix_version: 85.0.0b1
torbrowser_branch: 10.0
copyright_year: '[% exec("git show -s --format=%ci").remove("-.*") %]'
container:
use_container: 1
# This should be updated when the list of gradle dependencies is changed.
- gradle_dependencies_version: 15
+ gradle_dependencies_version: 16
# Switch to make it easier to grab all dependencies during a dry-run.
# Note: Use the commit that integrates Tor.
fetch_gradle_dependencies: 0
@@ -50,7 +50,7 @@ input_files:
enable: '[% !c("var/fetch_gradle_dependencies") %]'
exec: '[% INCLUDE "fetch-gradle-dependencies" %]'
- URL: https://people.torproject.org/~gk/mirrors/sources/glean-parser-[% c('var/glean_parser') %].tar.bz2
- sha256sum: bdbb421fdcc9b66aebe8f41b33e254cab722355c59c0f43f10a8322d7d6da6a4
+ sha256sum: 19dbdd4958022a1a638e0217489ab722fe7d4f588f1978a4ae162f93e75694c2
enable: '[% !c("var/fetch_gradle_dependencies") %]'
- filename: mavenLocal.patch
enable: '[% !c("var/fetch_gradle_dependencies") %]'
diff --git a/projects/fenix/gradle-dependencies-list.txt b/projects/fenix/gradle-dependencies-list.txt
index 5a13d6d..35f5d96 100644
--- a/projects/fenix/gradle-dependencies-list.txt
+++ b/projects/fenix/gradle-dependencies-list.txt
@@ -111,8 +111,8 @@ e71c328ceef5c4a7d76f2d86df1b65d65fe2acf868b1a4efd84a3f34336186d8 | https://dl.go
a000041f5a1f79283c5175e1bb60cf3683780f401c6a9d34fbe9751253fa6ff9 | https://dl.google.com/dl/android/maven2/androidx/localbroadcastmanager/loca…
b23b527b2bac870c4a7451e6982d7132e413e88d7f27dbeb1fc7640a720cd9ee | https://dl.google.com/dl/android/maven2/androidx/media/media/1.0.0/media-1.…
9cdfe5f7849069ad84dc4fb0407b3677fb8c22d3d66fd2b8fdb8dec8c5dc7411 | https://dl.google.com/dl/android/maven2/androidx/media/media/1.0.0/media-1.…
-dfbb35baa71fb3c5ba3bf7f37d06cc7e9be6830c276e24301a525922a6e143d0 | https://dl.google.com/dl/android/maven2/androidx/media/media/1.1.0/media-1.…
-f620e7c7852a628dbf815859f94ba6fc104bedf36ee859473edb1753094db4de | https://dl.google.com/dl/android/maven2/androidx/media/media/1.1.0/media-1.…
+fd906e30485b7d46ac888a7d601ada6d3a34451c940825d6a410f997796f7184 | https://dl.google.com/dl/android/maven2/androidx/media/media/1.2.0/media-1.…
+2eaad560d5aa8fc18316547d9c069607ab59f71fb234db14438bc80428d2aea2 | https://dl.google.com/dl/android/maven2/androidx/media/media/1.2.0/media-1.…
6f0e2165dbe0da5b20e2aac94f9e19780d8dea3d66858864fdfb0fb1217816ff | https://dl.google.com/dl/android/maven2/androidx/navigation/navigation-comm…
bc98e597bc5cac70dcf18727b3835e9d4d9aeabe23927e01a18beedaf5e7dddb | https://dl.google.com/dl/android/maven2/androidx/navigation/navigation-comm…
86a6752b3bbd88f5bcd1f1a67a7bf2921e54fd667a03b2bf1f0b7d5a915ff118 | https://dl.google.com/dl/android/maven2/androidx/navigation/navigation-comm…
@@ -135,10 +135,14 @@ b6c3acaf69d99aca153dee46dc136f3d0ec199de33ea594b8ebfe2c308011f7d | https://dl.go
f22a34f2371dc34d0f702f9e67488fac901e7e41860ba10bf32c6c6ac6b9593a | https://dl.google.com/dl/android/maven2/androidx/paging/paging-common-ktx/2…
7d432934364f0ab52924f5f14394768a219a980a25d6f896a62d501bfa95dec8 | https://dl.google.com/dl/android/maven2/androidx/paging/paging-common/2.1.0…
9c046739a9531a610696fbbf40a5074c3be7c8f9336957f47bc8d87af626030f | https://dl.google.com/dl/android/maven2/androidx/paging/paging-common/2.1.0…
+891dd24bad908d5d866d7d3545114ab2d26994847cd0200ac68477287c0710b5 | https://dl.google.com/dl/android/maven2/androidx/paging/paging-common/2.1.2…
+80a90cda2d5fc15ab151639e980a820071531a177551cc6482b58163494eb02a | https://dl.google.com/dl/android/maven2/androidx/paging/paging-common/2.1.2…
25a498b6472ac1d008e6475b3ffa241c7c7259e9b0aada8b2560fe9c0e48d11a | https://dl.google.com/dl/android/maven2/androidx/paging/paging-runtime-ktx/…
51045ae2d2fc5f11be38a4f2f7338f736c95c7ac8f8843844374c9cf350f8706 | https://dl.google.com/dl/android/maven2/androidx/paging/paging-runtime-ktx/…
84d2cb35bc6bca7f64ee7de458e9ce00868132d764bb0fdfa8480efd9bc89225 | https://dl.google.com/dl/android/maven2/androidx/paging/paging-runtime/2.1.…
e784a20cfdc57f3718eee92c7a2fb26d0fa357f698afe08743f775c9b5cd254e | https://dl.google.com/dl/android/maven2/androidx/paging/paging-runtime/2.1.…
+4e81d8ab584a184e2781c6f0d50b6f00acd11741f759270e7c976ef3307d78a7 | https://dl.google.com/dl/android/maven2/androidx/paging/paging-runtime/2.1.…
+bce14e26f30639013ade5bed40604bf5161535af098ed7f61972cd62235658be | https://dl.google.com/dl/android/maven2/androidx/paging/paging-runtime/2.1.…
c3a321133e616b46cf5ad07191aeebf4affdb73abee455851d39f7b4db7acb36 | https://dl.google.com/dl/android/maven2/androidx/palette/palette-ktx/1.0.0/…
079e22b8013c2746d7eb5815ffcf4223dce9fd0df3dc4bcad24644845b56e44e | https://dl.google.com/dl/android/maven2/androidx/palette/palette-ktx/1.0.0/…
6054ee0184ba0ffd66dc825e060e8c9bf2f6c2ea54336cf3bef15c575037a743 | https://dl.google.com/dl/android/maven2/androidx/palette/palette/1.0.0/pale…
@@ -151,30 +155,30 @@ b447d1d44c6d982846e3a299bb8072cd6ebefbe8d47d067736cb14f9dbf44701 | https://dl.go
62482c0594841bee24bb996abb6cb7b320a6a3b77dca9f0a0ba4fe3be5530aa7 | https://dl.google.com/dl/android/maven2/androidx/print/print/1.0.0/print-1.…
1cadc61c970c46ac91b21968bd16bb8d2cc10fa18c80b9725d5e1425c436dd3f | https://dl.google.com/dl/android/maven2/androidx/recyclerview/recyclerview/…
c046a7b5f4a561086d315a12bdd4d83e394c4160275bb9e3a2acff6653433957 | https://dl.google.com/dl/android/maven2/androidx/recyclerview/recyclerview/…
-388d33ff503d8c3d010a5dd7ecfe0e44bb19afcc28fd1e6336755d00ef7ad3c6 | https://dl.google.com/dl/android/maven2/androidx/room/room-common/2.1.0/roo…
-831d4e3c7e5481e73f37c1cb2e08f24e27306976d3c83916f89b00b28857998b | https://dl.google.com/dl/android/maven2/androidx/room/room-common/2.1.0/roo…
2b130dd4a1d3d91b6701ed33096d389f01c4fc1197a7acd6b91724ddc5acfc06 | https://dl.google.com/dl/android/maven2/androidx/room/room-common/2.2.5/roo…
fbb37fcf02b35ba7a909fffb52ce4ccb36874f03c1f927f6338b68ef9f1d6b7a | https://dl.google.com/dl/android/maven2/androidx/room/room-common/2.2.5/roo…
acf5246e0ff90e057d24421ca2dea2bb578a44c882d58af0125e28343ee8c5c9 | https://dl.google.com/dl/android/maven2/androidx/room/room-ktx/2.2.5/room-k…
6aac7776d8743233665d59379ebefb48aca389ca6425a84bf67507e3326ebe6f | https://dl.google.com/dl/android/maven2/androidx/room/room-ktx/2.2.5/room-k…
-175efd0a722810272098282819ebd52d6d0fa0aa5f9bfb25ac54268e1daa041e | https://dl.google.com/dl/android/maven2/androidx/room/room-runtime/2.1.0/ro…
-ce8566bc008cc900268c07a4acb8840e4b54cdc404f73081a0986906f205fd7c | https://dl.google.com/dl/android/maven2/androidx/room/room-runtime/2.1.0/ro…
24a5549b796e43e337513d2908adac67f45350d9a90bca7e2e6120692140bb14 | https://dl.google.com/dl/android/maven2/androidx/room/room-runtime/2.2.5/ro…
5d7e35be6728b331c82eed418fee9133d2481ba2c5a12500c182b27545bc4bbb | https://dl.google.com/dl/android/maven2/androidx/room/room-runtime/2.2.5/ro…
2510a5619c37579c9ce1a04574faaf323cd0ffe2fc4e20fa8f8f01e5bb402e83 | https://dl.google.com/dl/android/maven2/androidx/savedstate/savedstate/1.0.…
844d7d22fcea798c78bf5559229daf88ec9cad8136f5eea0a29aa76b3f8fde7c | https://dl.google.com/dl/android/maven2/androidx/savedstate/savedstate/1.0.…
76bffb7cefbf780794d8817002dad1562f3e27c0a9f746d62401c8edb30aeede | https://dl.google.com/dl/android/maven2/androidx/slidingpanelayout/slidingp…
40e90f96838c2a8156ab51b181400767049f387cec8c695e412d3d9205b0745b | https://dl.google.com/dl/android/maven2/androidx/slidingpanelayout/slidingp…
-870e3bce33ad21ef034332b083b2925105becfd73d262e3a1270901229e45076 | https://dl.google.com/dl/android/maven2/androidx/sqlite/sqlite-framework/2.…
-c4dedda03bd663e0ff34c8eaaf608ae86be05929a2f7cf2ce1e17160201bca3e | https://dl.google.com/dl/android/maven2/androidx/sqlite/sqlite-framework/2.…
-cdfceb8f6ec64aac217dc5a499a5edb6d610f9d6a575fba7bea06b2bfaf3ea7f | https://dl.google.com/dl/android/maven2/androidx/sqlite/sqlite/2.0.1/sqlite…
-bc69fd52e7eb5563a766319b7a84efda32f15473c4cec0e12b99502d91489cb1 | https://dl.google.com/dl/android/maven2/androidx/sqlite/sqlite/2.0.1/sqlite…
+8673737fdb2efbad91aeaeed1927ebb29212d36a867d93b9639c8069019f8a1e | https://dl.google.com/dl/android/maven2/androidx/sqlite/sqlite-framework/2.…
+ecd1fa9421e442cec59b4e642a51f8398e8d16bb5fcc92ac6fbb085ecc73685c | https://dl.google.com/dl/android/maven2/androidx/sqlite/sqlite-framework/2.…
+8341ff092d6060d62a07227f29237155fff36fb16f96c95fbd9a884e375db912 | https://dl.google.com/dl/android/maven2/androidx/sqlite/sqlite/2.1.0/sqlite…
+a9fe19b196fb25df41719ea6f1bc53f380eaed4bd5e651ec6fd75bcbeeb2a9ee | https://dl.google.com/dl/android/maven2/androidx/sqlite/sqlite/2.1.0/sqlite…
9761b3a809c9b093fd06a3c4bbc645756dec0e95b5c9da419bc9f2a3f3026e8d | https://dl.google.com/dl/android/maven2/androidx/swiperefreshlayout/swipere…
8fe4b5db332af33cde899ba571ee866ad977be38114d3ab600edaca454ea8299 | https://dl.google.com/dl/android/maven2/androidx/swiperefreshlayout/swipere…
-eed46eca8d497f9d3211695620521263a0daf9afe9e50a2ca3eeef37cf176a8b | https://dl.google.com/dl/android/maven2/androidx/test/core-ktx/1.2.0/core-k…
-1e8c4671266316b971e3fb1d189f0bc7a704e86f8ea3601ea8d850f240d4933d | https://dl.google.com/dl/android/maven2/androidx/test/core-ktx/1.2.0/core-k…
+2ce7906cd1dea05aec81975db22d54382359c05a21b2527ad848bc60f6b27293 | https://dl.google.com/dl/android/maven2/androidx/swiperefreshlayout/swipere…
+0b8c55ce6910155a283ba98a6d094be6e0ef5e70a7371cd9fe9f71bf8ffd24ad | https://dl.google.com/dl/android/maven2/androidx/swiperefreshlayout/swipere…
+7e8b302d986d2229bc82f3f2578332557fe1f6b12ed530ec5638959769a9c4b7 | https://dl.google.com/dl/android/maven2/androidx/test/core-ktx/1.3.0/core-k…
+28b0637c42b19c949821f663816dcbd7da4d3d8ca6d2dc7af2edc971029752b6 | https://dl.google.com/dl/android/maven2/androidx/test/core-ktx/1.3.0/core-k…
bd4527192b80d31a8f35ef304a195d3496bb6c88a7e3bcdcfcf8160a816293c2 | https://dl.google.com/dl/android/maven2/androidx/test/core/1.3.0-alpha05/co…
ffab448c1e7bfd236cde8b0b94d5d2b58ad1f492d31b2fb3b93cebcd3600c5ab | https://dl.google.com/dl/android/maven2/androidx/test/core/1.3.0-alpha05/co…
+86549cae8c5b848f817e2c716e174c7dab61caf0b4df9848680eeb753089a337 | https://dl.google.com/dl/android/maven2/androidx/test/core/1.3.0/core-1.3.0…
+c28069b3f40f56bf53589ab98e8ff2e730edb279c375b717e3a86c2e458c6de0 | https://dl.google.com/dl/android/maven2/androidx/test/core/1.3.0/core-1.3.0…
64cadb738ceb6a8456b89d1e98e9daf6b0d31ad239360866b56d288a85c5a7e4 | https://dl.google.com/dl/android/maven2/androidx/test/espresso/espresso-con…
69614707b077756b1a14a3c13d9cff4e57d6e63731fa28ff1b5334fbb1d6826e | https://dl.google.com/dl/android/maven2/androidx/test/espresso/espresso-con…
efdc54dec4524e87da1e2fc931efc37a1b7e544b866d368ba2f111059c065999 | https://dl.google.com/dl/android/maven2/androidx/test/espresso/espresso-cor…
@@ -183,10 +187,17 @@ efdc54dec4524e87da1e2fc931efc37a1b7e544b866d368ba2f111059c065999 | https://dl.go
b5d42e7194e482fa699e64ec3f1fb20550f7cb4c955fbec9d758102fadab8e06 | https://dl.google.com/dl/android/maven2/androidx/test/espresso/espresso-idl…
fc29b4fbbf93d18fef7977f3ee00559a189f972e014416fba66c9eb036b16b9c | https://dl.google.com/dl/android/maven2/androidx/test/espresso/espresso-int…
17840c7e4449df8ca7d877abaf9cde9f04dae78476cf408af2664657da2bcac4 | https://dl.google.com/dl/android/maven2/androidx/test/espresso/espresso-int…
+83ad64a568ae01a9eabbb964f9873a195220087ee7073a2f6159c7e170159c9d | https://dl.google.com/dl/android/maven2/androidx/test/ext/junit-ktx/1.1.2/j…
+ba31954d106aea05a4d1710278ec60a052ec7e801db057e3ee63be189ad80c32 | https://dl.google.com/dl/android/maven2/androidx/test/ext/junit-ktx/1.1.2/j…
8a2276900891d8ceac299958e800721d66ab5984fdda7bcee49acf1bb29aee79 | https://dl.google.com/dl/android/maven2/androidx/test/ext/junit/1.1.2-alpha…
ba7f894b7e8657f74a640dd8508e1652fea1953293623ea61cfb74e8e42bd376 | https://dl.google.com/dl/android/maven2/androidx/test/ext/junit/1.1.2-alpha…
+6c6ab120c640bf16fcaae69cb83c144d0ed6b6298562be0ac35e37ed969c0409 | https://dl.google.com/dl/android/maven2/androidx/test/ext/junit/1.1.2/junit…
+f74df056c17139f8956f8fa49b67617d3b85118b0a31b785adad06c21014cc38 | https://dl.google.com/dl/android/maven2/androidx/test/ext/junit/1.1.2/junit…
+0ea74b28a750735b12905476bf38e7373e924db7f2b88ecd9332d4a6285cafe6 | https://dl.google.com/dl/android/maven2/androidx/test/monitor/1.2.0/monitor…
2da0cb1694fc3d45fbb0f590240f2423263bbdf8a36692ddc3a9c72e90678e86 | https://dl.google.com/dl/android/maven2/androidx/test/monitor/1.3.0-alpha05…
e6efe6055b483c18b6273eb668eff3a40379890891021ca4a51af1a0782ab773 | https://dl.google.com/dl/android/maven2/androidx/test/monitor/1.3.0-alpha05…
+f73a31306a783e63150c60c49e140dc38da39a1b7947690f4b73387b5ebad77e | https://dl.google.com/dl/android/maven2/androidx/test/monitor/1.3.0/monitor…
+02f51704232b39ad94e8a6efdc1cd1a1424eba3c4f16fc211eb76282be829824 | https://dl.google.com/dl/android/maven2/androidx/test/monitor/1.3.0/monitor…
f27f2cfda201d74e60bece0e25f9c7d51bc82e75cbd92dcd7d780e54435b40ac | https://dl.google.com/dl/android/maven2/androidx/test/orchestrator/1.3.0-al…
2ae44bb75b79cc736948c64ccd75a953ae38cdaf42466e31801a0efa577db0af | https://dl.google.com/dl/android/maven2/androidx/test/orchestrator/1.3.0-al…
3e8a1cba066540e164cd69e1b4f9122365f6450cb5729ebfd2df8d940a759183 | https://dl.google.com/dl/android/maven2/androidx/test/rules/1.3.0-alpha05/r…
@@ -209,12 +220,12 @@ c729c7be0cc06323bda829d460666e79dbd43b799a21089a44bd3b293dc253b5 | https://dl.go
1f72f836339d03c6eb013f65075e76ca87075a577578eb4f95f74a3a5d253128 | https://dl.google.com/dl/android/maven2/androidx/viewpager/viewpager/1.0.0/…
e95c0031d4cc247cd48196c6287e58d2cee54d9c79b85afea7c90920330275af | https://dl.google.com/dl/android/maven2/androidx/viewpager2/viewpager2/1.0.…
4063bca7fe94fe65c98f4168f97ae10e02da0248598ad3ac21c432c7f608a17a | https://dl.google.com/dl/android/maven2/androidx/viewpager2/viewpager2/1.0.…
-e93836f35d35e47ba501add90fa6559964fa7a70975bf4ffc4a04836189611e9 | https://dl.google.com/dl/android/maven2/androidx/work/work-runtime-ktx/2.2.…
-7cbb32f2fe880d407d4c53268bcd554c11dc9316a1d6cd556a08fe45a4631f22 | https://dl.google.com/dl/android/maven2/androidx/work/work-runtime-ktx/2.2.…
-de617480ce64e4e9055e2d0295c87ee20929b06c4f2a5efdaded27dcca8520e4 | https://dl.google.com/dl/android/maven2/androidx/work/work-runtime/2.2.0/wo…
-960a24728eaedfc4ff7a2f366b9360e02a1d88f9eb0a9c7142ed94ed462797b0 | https://dl.google.com/dl/android/maven2/androidx/work/work-runtime/2.2.0/wo…
-6103c033ba6f0b1eeb034f8c72349cfa17a597fbff13f72093f096b8680253c3 | https://dl.google.com/dl/android/maven2/androidx/work/work-testing/2.2.0/wo…
-cfbbf1f7939c1667c30962e432affcc4054ffa421908a47f512dd99c4d738a07 | https://dl.google.com/dl/android/maven2/androidx/work/work-testing/2.2.0/wo…
+290d2e9c1a22388b3f0c3dbc204a6176f8c49174126de884820befa83899f129 | https://dl.google.com/dl/android/maven2/androidx/work/work-runtime-ktx/2.4.…
+3eb66e171b40c9cd2a9b9d9cd61a62d90e4a515491619a8d0a95e98866624b97 | https://dl.google.com/dl/android/maven2/androidx/work/work-runtime-ktx/2.4.…
+7801441cb973fb007ef311d3db35c3b3c9d011cef890357e7ca33890833354e5 | https://dl.google.com/dl/android/maven2/androidx/work/work-runtime/2.4.0/wo…
+0ed72c9c5a7be5b0004f226a42fa519093d49985c3eaa1a15b1563f94e9eddda | https://dl.google.com/dl/android/maven2/androidx/work/work-runtime/2.4.0/wo…
+dc1d9f743c59ee08c605aa924fc20819b6a0b734338e0a95af1943c3cd806e23 | https://dl.google.com/dl/android/maven2/androidx/work/work-testing/2.4.0/wo…
+0aa7bb81b26d756a63d83890202851736728c247da6ffe790c82dbbd3b373bdd | https://dl.google.com/dl/android/maven2/androidx/work/work-testing/2.4.0/wo…
d2ff1905ff7e7cbed7ecce20408a76b69a52d52fdf655b696ba49007c61a0e11 | https://dl.google.com/dl/android/maven2/com/android/databinding/baseLibrary…
ec6fe50839c05802cc262ec5611e160d17dff69c5a634bb322b27341f9176e9d | https://dl.google.com/dl/android/maven2/com/android/databinding/baseLibrary…
6f80ef912434a84425977a90b41ab26259f7d0c953edaf90039e7d01d44383ab | https://dl.google.com/dl/android/maven2/com/android/installreferrer/install…
@@ -295,38 +306,50 @@ fdcf3a5e39c14f8880f69400e8c5700b6d1f9fb8c00e0e6afd44b02468a8b21d | https://dl.go
d18ffde8429d1ec8c4d18e6ac1159cf1dc9eaa070987564a096c53097bb4c6c5 | https://dl.google.com/dl/android/maven2/com/android/tools/sdklib/27.0.1/sdk…
d08a8f5a678b2e7e22ad25200880cb209cf96c1f1bd91b703a3139632a63c2c7 | https://dl.google.com/dl/android/maven2/com/android/zipflinger/4.0.1/zipfli…
160a290f3ebbf2ebe64589cebd70a566ef985a629957e575697ac7285b5fcd38 | https://dl.google.com/dl/android/maven2/com/android/zipflinger/4.0.1/zipfli…
+576514f8b75d8ae32897f1b9b031f88b00465bf6e0996e227d09af688195f71e | https://dl.google.com/dl/android/maven2/com/google/android/datatransport/tr…
+ba50c554f459220920168d591ddb221eeeb78ea2f44ff0a659f05514fbfc034f | https://dl.google.com/dl/android/maven2/com/google/android/datatransport/tr…
+33abba2b7749479ae397176ae482b1807010b2bb331d61264bbdcc799eb398cd | https://dl.google.com/dl/android/maven2/com/google/android/datatransport/tr…
+b932519ddf57b6cc3d6775bd016b4b236bfc30bc832b1c888f7e90d4cc9059b0 | https://dl.google.com/dl/android/maven2/com/google/android/datatransport/tr…
+e72912014b67151b689a7e820d3f1edf12fe2af5fbc308ab196ac392436ab771 | https://dl.google.com/dl/android/maven2/com/google/android/datatransport/tr…
+a911c8a33f02942c10a5e730613a533c209d6ae8ddb0e7cd8e65fceb1162de56 | https://dl.google.com/dl/android/maven2/com/google/android/datatransport/tr…
1bfb68b9d898a682734faeaffaa86e3e63a1c70659438adfe7b38e63dec10ce2 | https://dl.google.com/dl/android/maven2/com/google/android/gms/oss-licenses…
02314144f98d892df6ebca9ae1a81bec24f416b3e9eefe8729de71acd5d119bd | https://dl.google.com/dl/android/maven2/com/google/android/gms/oss-licenses…
-aca10c780c3219bc50f3db06734f4ab88badd3113c564c0a3156ff8ff674655b | https://dl.google.com/dl/android/maven2/com/google/android/gms/play-service…
-1e663a4317c4d1b65fde180d29745fe9bb1c130fc06253ce2727cbe2e5e60532 | https://dl.google.com/dl/android/maven2/com/google/android/gms/play-service…
dd0980edf729e0d346e2b58e70801dc237c1aed0c7ab274fa3f1c8c8efc64cc7 | https://dl.google.com/dl/android/maven2/com/google/android/gms/play-service…
c30489d38be5d41e19272f6aa47d6c43de85034500bcb1864b79381c9634d924 | https://dl.google.com/dl/android/maven2/com/google/android/gms/play-service…
-e08bfd1e87c4e50ef76161d7ac76b873aeb975367eeb3afa4abe62ea1887c7c6 | https://dl.google.com/dl/android/maven2/com/google/android/gms/play-service…
-a3801d0841b3bf779ef74370e18399c3a2401c405a046a528cd7e60ae8073542 | https://dl.google.com/dl/android/maven2/com/google/android/gms/play-service…
d324a1785bbc48bfe3639fc847cfd3cf43d49e967b5caf2794240a854557a39c | https://dl.google.com/dl/android/maven2/com/google/android/gms/play-service…
ffe9295d9eb2ec2d784bb4c3634f6a10175224d2111332fa2735320b52a24b66 | https://dl.google.com/dl/android/maven2/com/google/android/gms/play-service…
+3a5000df3d6b91f9b8b681b29331b4680d30c140f693b1c5d2969755b6fc4cf9 | https://dl.google.com/dl/android/maven2/com/google/android/gms/play-service…
+42cbea3182b8419a56d1dfe6c74073ad7eb604ca635fd6a82cab8895c21ad91e | https://dl.google.com/dl/android/maven2/com/google/android/gms/play-service…
85ca0babd7fa3aa3454203105a32836615ac44c59c59e2452bb548c873c4ca44 | https://dl.google.com/dl/android/maven2/com/google/android/gms/play-service…
feb4ebb1ddb76dc18ee9e6028205ac226a70d40247fcccaca092303c68f8b59d | https://dl.google.com/dl/android/maven2/com/google/android/gms/play-service…
-5b2d8281adbfd6e74d2295c94bab9ea80fc9a84dfbb397995673f5af4d4c6368 | https://dl.google.com/dl/android/maven2/com/google/android/gms/play-service…
-8339810328273ab48d3f67f42ac1203cddcbe64e110f0346df7e04233ef46b85 | https://dl.google.com/dl/android/maven2/com/google/android/gms/play-service…
-b31c18d8d1cc8d9814f295ee7435471333f370ba5bd904ca14f8f2bec4f35c35 | https://dl.google.com/dl/android/maven2/com/google/android/gms/play-service…
-a0edf820538f0d1caec314fb4da96beb7e20bc9baa6d8a2966b8e2e43a631e4a | https://dl.google.com/dl/android/maven2/com/google/android/gms/play-service…
+e8ae5b40512b71e2258bfacd8cd3da398733aa4cde3b32d056093f832b83a6fe | https://dl.google.com/dl/android/maven2/com/google/android/gms/play-service…
+16f62288613923857f616976985fdfdc212bacc898b2b947715ebffd8fdea19b | https://dl.google.com/dl/android/maven2/com/google/android/gms/play-service…
2e6d1738b73647f3fe7a038b9780b97717b3746eae258009197e36e7bf3112a5 | https://dl.google.com/dl/android/maven2/com/google/android/gms/play-service…
fdd93302c2eb94bbe6007caa28d072246d2875cda5cb774bb6299416b94d74a6 | https://dl.google.com/dl/android/maven2/com/google/android/gms/play-service…
d3d0cc776f2341da8e572586c7d390a5b356ce39a0deb2768071dc40b364ac80 | https://dl.google.com/dl/android/maven2/com/google/android/material/materia…
bf2f93e57b80a170cefa92afa100c2bfdc8322e5a9a456f9ca4b03f216addbf5 | https://dl.google.com/dl/android/maven2/com/google/android/material/materia…
440cbfe5b5e68a989d3f18cf1318b110353620ddbed07621775e3518fd0c000a | https://dl.google.com/dl/android/maven2/com/google/android/play/core/1.8.0/…
a7bd43d5472e3dc09cfaf472a4b85ec74c9122db69b0a8d92c2c03e87f1b1e50 | https://dl.google.com/dl/android/maven2/com/google/android/play/core/1.8.0/…
-3db6bfd4c6f758551e5f9acdeada2050577277e6da1aefb2412de23829759bcf | https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-common…
-3c8ba6f7796567ccbf7a19799c5ea55ebac2980cbe36fc1bfffd37bd9efffb68 | https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-common…
-2a86322b9346fd4836219206d249e85803311655e96036a8e4b714ce7e79693b | https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-iid-in…
-8167641bed97523c94a389b9f166252a7bef65427c13c4c4cdea850e9a4af84b | https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-iid-in…
-bb42774e309d5eac1aa493d19711032bee4f677a409639b6a5cfa93089af93eb | https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-iid/17…
-cbdbeb32721b7e277a5ee60d793b4e0636a2507f7f4832d8ed874855dd7af1d6 | https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-iid/17…
-bc318110486ed738e1cc84d4b280e156b35a9a3964d678ee64930d846150d0c3 | https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-measur…
-a65cc2d69035888e5b7b9db2fa27115d0382bf7bb0404c3ece726d1ac62cc703 | https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-measur…
-e42288e7950d7d3b033d3395a5ac9365d230da3e439a2794ec13e2ef0fbaf078 | https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-messag…
-511b2c1888d010910e538b5d62c81469269d7a665b88a837b99083913fd9e37d | https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-messag…
+7bd7971470ff943e3c3abb1d7809ef5cb4b81f1996be0867714372b3efa7405a | https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-common…
+d11dd4923436f29d301d0d8fc0e03a3497bce181e572c54a74cb84b925b3a085 | https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-common…
+8ef43b412de4ec3e36a87c66d8a0a14a3de0a2e8566946da6a0e799b7fdd8ec9 | https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-compon…
+5c5d0a5f811e4eb7512ea7aba70241ebeb27b9e195fbdea9b2c4b914272c326e | https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-compon…
+10c9f65c4f897ea33d028e46226daaabdfee43ac712559e5570d21b6b58a067e | https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-datatr…
+04bd79c377c7b03fe3d4a5f26b90b0cfb0654c2d3b5c8dcfa6e90fcb1cb8d5d4 | https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-datatr…
+d1769fcec2a424ee7f92b9996c4b5c1dff0dfa27ceed28981b857b144fb5ec49 | https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-encode…
+dcaf1909552a73b2f7081768d687331e09200b7afeddd5be7712291cf1359425 | https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-encode…
+b6f4ad581eb489370be3bf38a4bdabfc6ea3d4e716234c625a0f42516c53523c | https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-iid-in…
+d01b366337829913fb0efc8c17388ad9673e3531fddf48d2f76d63e21bc5e788 | https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-iid-in…
+819b840fd622395f0521c173b53aaf5a5cdba12c19dfe3fc908d1acece55ea50 | https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-iid/20…
+dab11661f23baf1bf673d06afbd2f14631f57e523301fd946384d9c1ad865306 | https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-iid/20…
+d498fe20e7d2c65fc8f7124f1c1791d2828bebdf6bf06ab4cdee13e7fe9ccaa2 | https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-instal…
+623c9a2cc9d554afae478e0c82f644df9dc55efb2fb2491fd22761094f73287e | https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-instal…
+a2f757ff660640fb1426626f88b2509c2d0fedbcf516ad84c689e16f2acfa38e | https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-instal…
+efe2431a01a188d3037d02a08e60900ec7406de626e4bd5b4995f28d409c0ebd | https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-instal…
+17e8b9b60ac0a79fcbed754d03d4b966cc5bb8837e79c2308bf2970f1d05700c | https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-measur…
+24bd1b4a8f81aea76ae30054df6343b5c0abc27024a5f6fb9c6ee7d4ffb86533 | https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-measur…
+d7a2ff3a2fdbd0801f832df3de81dab06d9db7e4a57dfa6d768e7c6e5fa22280 | https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-messag…
+79b705ecf5140d3a2601b44ef058b4588878432eb6fb2f9d65da0551cb0a8e20 | https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-messag…
f5759b7fcdfc83a525a036deedcbd32e5b536b625ebc282426f16ca137eb5902 | https://jcenter.bintray.com/backport-util-concurrent/backport-util-concurre…
770471090ca40a17b9e436ee2ec00819be42042da6f4085ece1d37916dc08ff9 | https://jcenter.bintray.com/backport-util-concurrent/backport-util-concurre…
2bf4e59f3acd106fea6145a9a88fe8956509f8b9c0fdd11eb96fee757269e3f3 | https://jcenter.bintray.com/classworlds/classworlds/1.1-alpha-2/classworlds…
@@ -350,11 +373,15 @@ d46777ad3ea8bca73491b2e02fc85b3664486abf5314cc4dc6740908bd855330 | https://jcent
c98f1b0978cfd24712c27388e040c50ce0692252b3aa9448603d9efa05ebe8a8 | https://jcenter.bintray.com/com/google/auto/auto-parent/3/auto-parent-3.pom
31a44f00ba213f7a1245809d6ba7bffed40c8dd7d571f32016caf8732a926961 | https://jcenter.bintray.com/com/google/auto/auto-parent/5/auto-parent-5.pom
05f740c6648165db00cf618dd56c200c4725e358e6d54f5853e0bec15734ea0a | https://jcenter.bintray.com/com/google/auto/auto-parent/6/auto-parent-6.pom
+a46426fccb5d32705ad9cbbc996f786bd048cc8cbdd21db046500169f15a4356 | https://jcenter.bintray.com/com/google/auto/auto-parent/7/auto-parent-7.pom
e422d49c312fd2031222e7306e8108c1b4118eb9c049f1b51eca280bed87e924 | https://jcenter.bintray.com/com/google/auto/service/auto-service/1.0-rc4/au…
51752efb14151ec2d39c8581dadce8ef8b7c58b90f5eaca3f596998acb1ea87c | https://jcenter.bintray.com/com/google/auto/service/auto-service/1.0-rc4/au…
b48b04ddba40e8ac33bf036f06fc43995fc5084bd94bdaace807ce27d3bea3fb | https://jcenter.bintray.com/com/google/auto/value/auto-value-annotations/1.…
1c76cd462fc96e7aa96dc70ce82f0d54063d6df16db35c9c7d9cc0d1a99d3fff | https://jcenter.bintray.com/com/google/auto/value/auto-value-annotations/1.…
+3677f725f5b1b6cd6a4cc8aa8cf8f5fd2b76d170205cbdc3e9bfd9b58f934b3b | https://jcenter.bintray.com/com/google/auto/value/auto-value-annotations/1.…
+6fc498858e0cd1387595af38957820cb341d1e687ccf753e1cbd982f46ef4fc3 | https://jcenter.bintray.com/com/google/auto/value/auto-value-annotations/1.…
27b640c82179f5cff62009c0b72033d9bc60f60e9902a66802274b7fe37fc81c | https://jcenter.bintray.com/com/google/auto/value/auto-value-parent/1.6.2/a…
+b9d2d3aa6919d5f07e18c7cea942be9aef3b650a8f1e68f33c854a25c09c2049 | https://jcenter.bintray.com/com/google/auto/value/auto-value-parent/1.6.5/a…
feab9191311c3d7aeef2b66d6064afc80d3d1d52d980fb07ae43c78c987ba93a | https://jcenter.bintray.com/com/google/code/findbugs/jsr305/1.3.9/jsr305-1.…
1e7f53fa5b8b5c807e986ba335665da03f18d660802d8bf061823089d1bee468 | https://jcenter.bintray.com/com/google/code/findbugs/jsr305/2.0.1/jsr305-2.…
02c12c3c2ae12dd475219ff691c82a4d9ea21f44bc594a181295bf6d43dcfbb0 | https://jcenter.bintray.com/com/google/code/findbugs/jsr305/2.0.1/jsr305-2.…
@@ -365,6 +392,8 @@ feab9191311c3d7aeef2b66d6064afc80d3d1d52d980fb07ae43c78c987ba93a | https://jcent
b8308557a7fccc92d9fe7c8cd0599258b361285d2ecde7689eda98843255a092 | https://jcenter.bintray.com/com/google/code/gson/gson/2.8.5/gson-2.8.5.pom
3aa576b5671d0e26d83d7fdb7186810b5672f00bf8e72184260bcc7c2d7dc07a | https://jcenter.bintray.com/com/google/crypto/tink/tink/1.3.0-rc2/tink-1.3.…
5b9a11c11183d011de9a9a5490962d78a4d4bfe7579b0c5be4afb18a222e3f41 | https://jcenter.bintray.com/com/google/crypto/tink/tink/1.3.0-rc2/tink-1.3.…
+550a6e46a6dfcdf1d764887b6090cea94f783327e50e5c73754f18facfc70b64 | https://jcenter.bintray.com/com/google/dagger/dagger/2.24/dagger-2.24.jar
+477bdf6579ecc9cc8f99a565203f6244914f289d87e7efbdf96243fa58f9df4c | https://jcenter.bintray.com/com/google/dagger/dagger/2.24/dagger-2.24.pom
6ebd22ca1b9d8ec06d41de8d64e0596981d9607b42035f9ed374f9de271a481a | https://jcenter.bintray.com/com/google/errorprone/error_prone_annotations/2…
5e0258ea1ba4e51a133742680bc22448f7ab214be4073e8619f645ef1be42dd5 | https://jcenter.bintray.com/com/google/errorprone/error_prone_annotations/2…
3edce6b711ba368efe16b9b7aacb0214fbd648414cb9b965953a2e7ed89a819a | https://jcenter.bintray.com/com/google/errorprone/error_prone_annotations/2…
@@ -534,7 +563,6 @@ ec3a75bebddbf19ff56a281cf5d1ad146169dcaa0e69d7b14f4aaba2e7775f34 | https://jcent
3369726ca2b0e3736c741ff3c22e06f707a1007ff20ccc5b5ba5d0d9a01ead30 | https://jcenter.bintray.com/net/freehaven/tor/control/jtorctl/0.2/jtorctl-0…
24d81621f82ac29fcdd9a74116031f5907a2343158e616f4573bbfa2434ae0d5 | https://jcenter.bintray.com/net/java/dev/jna/jna-platform/5.5.0/jna-platfor…
10569e3622e974d3e66255ba85923c125d84fa257ef2543d8ac1c658d9ebcd10 | https://jcenter.bintray.com/net/java/dev/jna/jna-platform/5.5.0/jna-platfor…
-aafe6935d6bedb89a6aa32563d441fbe305da1de193d6f71a45a0212acf9b756 | https://jcenter.bintray.com/net/java/dev/jna/jna/5.2.0/jna-5.2.0.pom
2b9f3497218b32c399d1ecbea0b00d4f4553edcf669919ed1e1a87daa77acf87 | https://jcenter.bintray.com/net/java/dev/jna/jna/5.6.0/jna-5.6.0.aar
5557e235a8aa2f9766d5dc609d67948f2a8832c2d796cea9ef1d6cbe0b3b7eaf | https://jcenter.bintray.com/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar
5fe81b0255978f24616d37b10608b79498a5f3073e1d9b2038d8736a831f2608 | https://jcenter.bintray.com/net/java/dev/jna/jna/5.6.0/jna-5.6.0.pom
@@ -845,208 +873,210 @@ d3f7f09989d5b0ce5c4791818ef937ee7663f1e359c2ef2d312f938aad0763da | https://jcent
8f10ffd8df0d3e9819c8cc8402709c6b248bc53a954ef6e45470d9ae3a5735fb | https://jcenter.bintray.com/xmlpull/xmlpull/1.1.3.1/xmlpull-1.1.3.1.pom
0341395a481bb887803957145a6a37879853dd625e9244c2ea2509d9bb7531b9 | https://jcenter.bintray.com/xpp3/xpp3/1.1.4c/xpp3-1.1.4c.jar
4e54622f5dc0f8b6c51e28650268f001e3b55d076c8e3a9d9731c050820c0a3d | https://jcenter.bintray.com/xpp3/xpp3/1.1.4c/xpp3-1.1.4c.pom
-d5295ea2c6455c4a60acff8be5f0deb76c88c4a76d0299c032f56fb0746a882c | https://maven.mozilla.org/maven2/org/mozilla/appservices/full-megazord/67.0…
-8eff792fa2d20f825d814a0bf82282c8d3f5ac9f6064b4774586428e844ce9bf | https://maven.mozilla.org/maven2/org/mozilla/appservices/full-megazord/67.0…
-28e68c69470327c222dcb15e5a438687a311893f8ca3547bad0e8c4d3ad2dd4d | https://maven.mozilla.org/maven2/org/mozilla/appservices/fxaclient/67.0.0/f…
-1b40ccb140dd16dcc87b4dde3e6d9933a3f81b563d280a400dc8c9b0db503595 | https://maven.mozilla.org/maven2/org/mozilla/appservices/fxaclient/67.0.0/f…
-c4f6cd56691aefecab314943e34044b75fcd1cfa836391a8a9ab11e08b6cca31 | https://maven.mozilla.org/maven2/org/mozilla/appservices/httpconfig/67.0.0/…
-d71959426b165033d0493edb6a966fccaae9354058a0178b3543afc924b9113b | https://maven.mozilla.org/maven2/org/mozilla/appservices/httpconfig/67.0.0/…
-a104ca1f58251396566e50488fbea2536e49ebf7aa6a3fc411d9d4a5f0a59253 | https://maven.mozilla.org/maven2/org/mozilla/appservices/logins/67.0.0/logi…
-42eac65ea1459e06d17c88eacd3370f955535666a73d2462af28237481809149 | https://maven.mozilla.org/maven2/org/mozilla/appservices/logins/67.0.0/logi…
-fa8d2f9ab6a387a164e0c0b78fd72012db661b3d43848f778fb9288f17de0e52 | https://maven.mozilla.org/maven2/org/mozilla/appservices/native-support/67.…
-a25de800b72bd79fc86091de4f02bc7112ee8001d4fadab1d2e5eec04216f329 | https://maven.mozilla.org/maven2/org/mozilla/appservices/native-support/67.…
-1a8e9af6c928f1244a748c478d82dd4850e3a22e3374aa59ace46dc394a3e5e8 | https://maven.mozilla.org/maven2/org/mozilla/appservices/places/67.0.0/plac…
-f025a2b516d8abfb3e1a5fe12a8aba3920de6125d3a4f35f87fb823923264325 | https://maven.mozilla.org/maven2/org/mozilla/appservices/places/67.0.0/plac…
-f452730e5ef848c766f50c947da9de88d710ab1404928ba14d2d0a009b4f9446 | https://maven.mozilla.org/maven2/org/mozilla/appservices/push/67.0.0/push-6…
-83bea59bc8ae69a81203ca26be9ef3ba152d71c46b3b8d12e10517d66ff894bb | https://maven.mozilla.org/maven2/org/mozilla/appservices/push/67.0.0/push-6…
-7cd7c6e40712102fc0125b1e727b936d56fcdc566869856c48f8ddf82372d04b | https://maven.mozilla.org/maven2/org/mozilla/appservices/rustlog/67.0.0/rus…
-8baa9f46d2006487df58eea1d7ac1d9a067ac945185dadb4cc4014674f97afe1 | https://maven.mozilla.org/maven2/org/mozilla/appservices/rustlog/67.0.0/rus…
-57c4acea81f73043ab62dd4dc341a524d38682d6bc2e69bb48822f9e0ac7f48b | https://maven.mozilla.org/maven2/org/mozilla/appservices/sync15/67.0.0/sync…
-424ff6b5d73e73c00d043e52d9a8c61fc4697414de695475daedaeb954eff58f | https://maven.mozilla.org/maven2/org/mozilla/appservices/sync15/67.0.0/sync…
-3dbd2e317902f43e2b769d88ccfa746efc00de13e3e7d34de472f299bfe45fe4 | https://maven.mozilla.org/maven2/org/mozilla/appservices/syncmanager/67.0.0…
-5e111cc168f358063e9eb0b818bb5713dcb611626785b48a56530f3859028936 | https://maven.mozilla.org/maven2/org/mozilla/appservices/syncmanager/67.0.0…
-1711bd6a0be32d1912b3d3580cd4eed193fbb9a8a56485c758191d13b46b04dd | https://maven.mozilla.org/maven2/org/mozilla/appservices/tabs/67.0.0/tabs-6…
-6dc1fac81215b05b347e343181cd691a0c27cb34465ed2ea818785901616408f | https://maven.mozilla.org/maven2/org/mozilla/appservices/tabs/67.0.0/tabs-6…
-25c59641360e86e905e40a9090019271e2302f60f03ca352d061ec44540dab26 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-awesomebar/…
-e94c14d791c388d737cd64b67db413c863c36fd53b69cef8a0234b0233200444 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-awesomebar/…
-96ba207d21b7f3ea35ed0d73e5a9ddc75235b7f047977fd862b653352b1f2561 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-domains/67.…
-e709a59fe2dab43d3f43c143ddaf89444b297ae4477c8c6f15ae38e04718add0 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-domains/67.…
-ea17857284b52298c4501f2d10dac9ae8b6a1a320cb48c928d71409b67158cfa | https://maven.mozilla.org/maven2/org/mozilla/components/browser-engine-geck…
-f7f1fd862b8ab86a745bad51b221748c138ddd16d08dd527c8f0692ef294d092 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-engine-geck…
-46257bac63637478d10442438ef9f21203ee1f288ec5840e9e5c29f1223c0958 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-engine-geck…
-131c59ba2a3c63e5d6f6466a21c1af1c76fa2f50751a31837f70e57d453ac47b | https://maven.mozilla.org/maven2/org/mozilla/components/browser-engine-geck…
-9ca40858447f144afa05f3596a277f04361bfe4e624fdfad1025d39e92507de4 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-errorpages/…
-5dc54b3e40614ccdcd0d048d416a0f2a1c50fb72e832682f187c40491f6dfaa1 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-errorpages/…
-939370f5b4d219a7467595e261f02b2732ee7e0d7423d8093a3cee73cbed7b17 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-icons/67.0.…
-ce8d3de36d90189e211a4429c48384e52af5c21fda8245d378b2571be16bd035 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-icons/67.0.…
-f06cbbe8006cf33ce2f28ea0c2e3478958912c01a9c68352c23dc6569b1012b3 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-menu/67.0.1…
-2065582d3da5fd04c3037da9fac50cea00920a294dbb4917e98f87eff2a0c253 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-menu/67.0.1…
-2383a3dc9be6be17e8472f6677341690c5ed069abfb804afba1b133a8dfc8ed5 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-menu2/67.0.…
-b2c3dfee961caad02d4a3e4d7d9b81cfeef38b5446d8ddf66240654dfec284c6 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-menu2/67.0.…
-a6d2548dff81a90dc4cd7d52fe2c392f9f7c4c650cc5f80b1210d2f67585a3b1 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-search/67.0…
-c5a42cc24950b51b29abba3d4a4ba5408a29b2da997ff621377dbba0b9819e06 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-search/67.0…
-23bc024422ae879abf87c8962aa29ee58b2d670b83ae34237c5e27fe1ee468a4 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-session/67.…
-ca95e44e841339577d4c386920e7806ed008b9570c2aa2da2b166dcb96f43d7c | https://maven.mozilla.org/maven2/org/mozilla/components/browser-session/67.…
-849fe2e526cd59e913d3611e43c3a1dc82bdc53e79280a739e4cb4015845e778 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-state/67.0.…
-83e1a8dd76db558c61f6a4a97a4cb28d7e547013b329f066d4e291cbef210bcf | https://maven.mozilla.org/maven2/org/mozilla/components/browser-state/67.0.…
-3c7b13d321b57f65e3975d83b272e49dabad0960f75296248f4341a103f4558e | https://maven.mozilla.org/maven2/org/mozilla/components/browser-storage-syn…
-43918e436eb050abf7394944755ac5ebd19890d584ea40dfe638e9a3bb4a04c8 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-storage-syn…
-674a6c6d869d9c40f7204480adc30e9856be4064499f9695ecf7e7229cff8b0b | https://maven.mozilla.org/maven2/org/mozilla/components/browser-tabstray/67…
-1c41d0a26ee756d0baa36ecb570615d139269d2573be854c0ad2204ca9d69fda | https://maven.mozilla.org/maven2/org/mozilla/components/browser-tabstray/67…
-204e3d12c42f9445d41c6b8614f7edda70f5539e57189e320433980f287ca003 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-thumbnails/…
-b237cf94d4d88f692ccf97112bc3f9e572c6dcf024b8c5654d726b46eb204341 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-thumbnails/…
-dfdcbe8ef7c4098893bcf93f80a0d104ac9a16ff81cd7420688d227a7a8e1eb5 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-toolbar/67.…
-423ef4a6c2f5bf403eab809768ea1f3ceec595dd0d6c06bd40e3c6ba51037b7d | https://maven.mozilla.org/maven2/org/mozilla/components/browser-toolbar/67.…
-c09772c9db564df7cd0d6dbadd4daf8cb5181a807ad638cecd34062fd55c1bc6 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-awesomebar/…
-c736f6501148b91edcdc3f208b27d80378a800b4ba38266b971304055848414b | https://maven.mozilla.org/maven2/org/mozilla/components/concept-awesomebar/…
-8c12739ff779a53051562f84107180e116a835740ae088a975094093acedcab3 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-base/67.0.1…
-523542efd1f933e53d6d64b22a7ce51f728763ed503b8aadce57e908c9d4b51d | https://maven.mozilla.org/maven2/org/mozilla/components/concept-base/67.0.1…
-507dc2a1ca48bff8ec3228a5ed5df548dd5b7ce3d1ef6fa31905d53d89b7bad3 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-engine/67.0…
-690c704ca6c5ed8946c29001ab21e0b6fe23c1ed5ca37cc011868f3c69d20ec7 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-engine/67.0…
-2db4664ef5b5fc4c368da11b0621497fce19c3c85f183e7c2a66529d0ec21d03 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-fetch/67.0.…
-185cc2d35213534f0be0346d7472e4920b2bb9bb20c454ced7e342c3e29b48da | https://maven.mozilla.org/maven2/org/mozilla/components/concept-fetch/67.0.…
-e9b778eb8417871e1ba8ac7ed81299a640b0100f646ee60171d3d57c32d6ddb2 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-menu/67.0.1…
-f497712ce436a29e4af22d34db32c1aa6c374d508324b8c7354d4785109e83dd | https://maven.mozilla.org/maven2/org/mozilla/components/concept-menu/67.0.1…
-834ade77fd0fa0f314317ea9b78fe154143a98ef3b106cd7f363d9bf24b9929b | https://maven.mozilla.org/maven2/org/mozilla/components/concept-push/67.0.1…
-d9774d852496e52ae6b0e3ac600e17f6044b04eb96e05607725b324436666e15 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-push/67.0.1…
-cf426a1ee8adf7b0f2ebc718465a3e472286dd5db738b0ca26eed426a4024941 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-storage/67.…
-30208f212d66c8f704754aa44e6f6926c29b15f1c473348f0efe5600dc91be5e | https://maven.mozilla.org/maven2/org/mozilla/components/concept-storage/67.…
-24f61489d53a29ee053e78b599adc346278b7983b54f2f0179fd64404a7ab845 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-sync/67.0.1…
-1c40a970fb6a6ab86695613b71a1fc77b924629608a333e4534b1345edc2f6a0 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-sync/67.0.1…
-1ef9759642b7ce7554e742a53b2806f55be71963322434d3a6d1e963eacf9319 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-tabstray/67…
-2735c826a392b1c720e2dc537871ced393e00c58b8dbf3053a639fd5ccfdda6f | https://maven.mozilla.org/maven2/org/mozilla/components/concept-tabstray/67…
-2ee2349b44bd1db87ce3625b681d5f0df911824204dd232dec1d04c8449a877f | https://maven.mozilla.org/maven2/org/mozilla/components/concept-toolbar/67.…
-54f76be9a7246955a1f5250dad1ce97979cb1119a6aff8185ae817c7fafc0acf | https://maven.mozilla.org/maven2/org/mozilla/components/concept-toolbar/67.…
-a9c766d100584596cb873d2b2ba26489b7ff8a50fd138fe8957c482f93026b4e | https://maven.mozilla.org/maven2/org/mozilla/components/feature-accounts-pu…
-f7743f7ef21b1f98895313daf85a3b9cbad92ef0713e049feda4fd429a9c6a7a | https://maven.mozilla.org/maven2/org/mozilla/components/feature-accounts-pu…
-69b03caba7cec40f740ca3251654ab44470456bb4bd36458c2264567780ba283 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-accounts/67…
-3580f6dc2342993e70d4f65599c5a9d777b200df6a7999a2f5f625510e79b3ef | https://maven.mozilla.org/maven2/org/mozilla/components/feature-accounts/67…
-aea7c498ae92c375ffebe6e1ce6a706cc32eb5c9f24705b3c8f4bcd503478262 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-addons/67.0…
-2496c1c6e46d05b2a96a76a43364a28640c0e40e1bd1e0f86c6777ba78528355 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-addons/67.0…
-63cb16f5891abf1b5ed30ce0b860de7f8b8606694517f2743aa572d50e2fcb2f | https://maven.mozilla.org/maven2/org/mozilla/components/feature-app-links/6…
-4df5094e6f6b741c82416c1a9f8741fe17c59e3e3fd370d96f2fd7175f55c60d | https://maven.mozilla.org/maven2/org/mozilla/components/feature-app-links/6…
-bfc287a7e7607b1bee40a974f514fdbdcc52ebf3248f78edb1daab1a63e695ea | https://maven.mozilla.org/maven2/org/mozilla/components/feature-awesomebar/…
-ddf3aa5000ec149992bf0d5a921f3414830a94eb09882aae6d01b5d76e0056a4 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-awesomebar/…
-1dcf95e9ca2f7e389bc93c9a1c29147655b033dcfe39cd4a718d5401d2543874 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-contextmenu…
-7528e895222692a24d28333de64a97280252316561bcf90b6a28fa183703b27f | https://maven.mozilla.org/maven2/org/mozilla/components/feature-contextmenu…
-def90a5739ba30e16f9d4600b8887bcaed14163382969933c785b5cf64f61bff | https://maven.mozilla.org/maven2/org/mozilla/components/feature-customtabs/…
-6224b7192b61f1f4a5e60270f55c65c7af0cfc880de53762ca1bd6de727edbad | https://maven.mozilla.org/maven2/org/mozilla/components/feature-customtabs/…
-3f3eea48ae0d8908039eb1fea6fc17c4ca89276b8b120a7a8e7335befe036aee | https://maven.mozilla.org/maven2/org/mozilla/components/feature-downloads/6…
-2fe3fcc05735dab0a6b28cc9ddabc628518e6be0b7e6aba2aa2025b652c48a07 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-downloads/6…
-67fe1ad12f61682f021d483a38588100c4d7c48f7af712025fe42e00cf9eb9e0 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-findinpage/…
-0f29587c5cbcdae8322cfe345295d57ddda0e14603d948d1f1d958074e372f05 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-findinpage/…
-09adc360f1fbe93c969ddb53ce8020cdffaebf2ae718c49c7410f9cf491aed70 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-intent/67.0…
-5dc5b8e621b1c11cbde38fcb9011423e98e8b3402084a9c62de6e04cf73abe16 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-intent/67.0…
-f079f3d751d3b0d66ee3916a9ac504b97cc6c54e0ea986ec0155cafb5d822ecf | https://maven.mozilla.org/maven2/org/mozilla/components/feature-logins/67.0…
-238215c41b0f8692bf4fd575dfe287d7a923bea2dde21ffe655878adee3c0aa2 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-logins/67.0…
-9d489c8293994dd890cde36c91c1717f27aa952ab4cadeedd6564e63fd2edb52 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-media/67.0.…
-a1daed79e091a8014b5f7c669ac9930549734968391a4a24f05ba3cab13505ae | https://maven.mozilla.org/maven2/org/mozilla/components/feature-media/67.0.…
-e2085a8454714aecba181bae66aea8a337b5ed2d1f0af61d8d9908ac1ef40719 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-privatemode…
-36e9714411600747de6fe2431e5bc047643afa990a26f5b9c49c9ed6cf334755 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-privatemode…
-3a89973a27026315b8bb1a3330302482946d84646b3183a0d7b7fceaa588b06a | https://maven.mozilla.org/maven2/org/mozilla/components/feature-prompts/67.…
-9880e16f6ecac93178ac6f3c2716b5a7f28767fb11d5ed7596992edc6c0af910 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-prompts/67.…
-b9995057f720ca059565f867cb338ed9e3f93daa1ffd5e2fc703fb061587a672 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-push/67.0.1…
-c420ead7216f89eff0528eec0dab4f1dbfc6d91b850b26e819bca6dd360216c0 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-push/67.0.1…
-bd12f7415a925c7f60a064bc98a5184270d7cb63c67da99c8cc5123d5735655f | https://maven.mozilla.org/maven2/org/mozilla/components/feature-pwa/67.0.17…
-b6528963a3173234ba71923b51a9431b1ca89c28002ccb39522801ce8990a71f | https://maven.mozilla.org/maven2/org/mozilla/components/feature-pwa/67.0.17…
-b697e48bf80ea7fc59c464f91c43cf7440ff0b911854c05b6766bf4dac7a166e | https://maven.mozilla.org/maven2/org/mozilla/components/feature-qr/67.0.17/…
-ee23d105cdd6cc0f28a7a939af69258d21570c4ce2eb1d7d3f504474991a86b1 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-qr/67.0.17/…
-ef3cf57138cf7ef2c9b0b8244239af5cd1d3a50c42cd1fe5c2cc53f55579e64a | https://maven.mozilla.org/maven2/org/mozilla/components/feature-readerview/…
-283c2907b3def1c0396b40bb293e9d338a426995bd318c38c6266673e3cf1f1f | https://maven.mozilla.org/maven2/org/mozilla/components/feature-readerview/…
-902657370d70dcc9553ed466116763814e1f1f62a8232554331717c6b0cfa586 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-recentlyclo…
-8f9bdae6481e90853dd0596d3e68b33b17d3943eeff2c61daedd7b02845716d2 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-recentlyclo…
-589932d534b810fbd1561e2a57faf36b171bfc18c3a7afd118050dae97e15304 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-search/67.0…
-8119c60a01689a4a97a2dc1a498347f76a0aa50408263d0ff1fa82ed1302e8bd | https://maven.mozilla.org/maven2/org/mozilla/components/feature-search/67.0…
-7bc161e61e09f2c7f781f585cef0209e6169d05440008265566a139237e5abc2 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-session/67.…
-0548ad12a486d49c1a99acef6ac735ee9af54f58d2cf244d92a4d9e4357a5489 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-session/67.…
-692871cf1d65602814a0372024d1b8e6f1d22e9a86b72e4e0cc13573db42328c | https://maven.mozilla.org/maven2/org/mozilla/components/feature-share/67.0.…
-050b2ea93985615c69e2e3677a2e880c0ce9b1cfc5a5d5e8f1cd70746e69cd90 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-share/67.0.…
-9ab0b6e5cf355e848c414c5a54005b3de71574ab3e3f4a0e914bfecd420dc1f5 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-sitepermiss…
-19bdcb6c29d479c5a8f24a0e3d9c72c842afb9ca727cb38250b5cac5898d079e | https://maven.mozilla.org/maven2/org/mozilla/components/feature-sitepermiss…
-b73ef22574f01ef481dceade81712cab2e56d3cbc09d0246821e5e41e475da66 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-syncedtabs/…
-f9a889b548d4b71cb14538230a63640c579f0508530737856339b59bc9f245d6 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-syncedtabs/…
-f246ee2e74950e626a19fb95f9643b5d43083bcb203a459e6c8880b63531a7f0 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-tab-collect…
-ebf6ea140098731c807c37880d5a2a7a7bbc2a4ae9585788dc4c31a28f47ce29 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-tab-collect…
-ffc4768830f59f1ac414710987126a653d004643b9a14a8b3ae1de4189741933 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-tabs/67.0.1…
-eaa29d54c063b0e6729c8bd4f84208676c672917076a3e8568599978d75dfd01 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-tabs/67.0.1…
-f84df79bea8cc25aee7aeee6ebe244d8b14bb2163b4b6b6c2a1c661afe19e732 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-toolbar/67.…
-478f0b8e382b7587e92ce7419a580b814725baed95f13dd01354f5d195e28320 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-toolbar/67.…
-c28e796682dc457a6109d8bd273dfb1ce68366ba46a72cb887ca456e3fc0fa1d | https://maven.mozilla.org/maven2/org/mozilla/components/feature-top-sites/6…
-efa23ffeded1e5255ac67344bb9230043aed89f7830cb57d3cf17f95b5a3446e | https://maven.mozilla.org/maven2/org/mozilla/components/feature-top-sites/6…
-18fe05d36d86e945e92eda764d4415c083947c016b3031a97f89e66e2bbb9f7a | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webcompat-r…
-5eb02438f6bdfc1c1d682615184672bf106c10d6499ccd3b00e1fc18651fa93e | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webcompat-r…
-1f8ecaa48ef1843e636989d84f3769147ed3b19dabaa4efe3e1b32489fcf0652 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webcompat/6…
-54d1004c579dbf2806922803d0dfc0f0920840b57cfa368a48d3a2346c0053e4 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webcompat/6…
-ea4903938465450c3097137058870e85fadeb2eb734caabd8491802537e56828 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webnotifica…
-035b947485417fc6a390928f8ee3ea4c159b53f3e23bddd40579d41c8036e37d | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webnotifica…
-526f6958c38ba72373462999f4ef63891e48fad70c938451f19fc209886310e1 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-crash/67.0.17/l…
-f175bfa0ad499a6e8c072d3629d83d2cbe4c287849ec41f884829b613d254ef4 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-crash/67.0.17/l…
-e835eb35d3e68f41fc4a79b523a6af00771597141bd78927d935c72903a664e7 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-dataprotect/67.…
-8e0ca99f67fb977fd4b8e716ec6c6083a8c57963561a2236258409f150af8077 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-dataprotect/67.…
-3e5772e79713ef9e6438cdbcfef0eaa601ec76fff6d3316d96828f3339354f77 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-fetch-httpurlco…
-916fc77fa27ba4ebae512e54b5c5bef74cebe3e48f26a433f547558dda225a59 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-fetch-httpurlco…
-53c615db89715f6a42f43bcdcb43c7b7d8148bde508218db0999e3e9494b696f | https://maven.mozilla.org/maven2/org/mozilla/components/lib-publicsuffixlis…
-ac2272f82e8d1c6d29605b68723b8219786d0119a705eb7410556fcc491aaa53 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-publicsuffixlis…
-8bfc995efddaf301105beb06d50da9c5c69330a4a220948a1a0ad231ce50bf6c | https://maven.mozilla.org/maven2/org/mozilla/components/lib-push-firebase/6…
-743c6ebb565d5a711f01dbca39f46c14e2484ad416fef1ecb48e7db150a21ee6 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-push-firebase/6…
-e7c770375bcc89845f72310e80c50d3ae4cf2be0e18975a503ed7d95d695f926 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-state/67.0.17/l…
-56481754ca06e51f7cd16b9e559d3be358fa43cbe3cf5c2cc929350f7f01fbe9 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-state/67.0.17/l…
-68a674ded1b29ffbb61b8616c31a981dab92202b6a97a56d2c751a4eaef352bb | https://maven.mozilla.org/maven2/org/mozilla/components/service-digitalasse…
-cb67aab5da362110539cc38d833329d28108bbd22c7c1824e9748cf712e1b3bf | https://maven.mozilla.org/maven2/org/mozilla/components/service-digitalasse…
-e22536ae6bdd9d02b84b8283cdd2aabb1404a4730bfdf96a7752b775074fb974 | https://maven.mozilla.org/maven2/org/mozilla/components/service-experiments…
-bd6b6163795c47b4e919c36b7ae6c5086d0d78a28fa7602ebc0d1b5825536912 | https://maven.mozilla.org/maven2/org/mozilla/components/service-experiments…
-c7900847afc7ce7c8bf54ef3835959383a4025bc727a0781c038ee6c4b7ef17d | https://maven.mozilla.org/maven2/org/mozilla/components/service-firefox-acc…
-561f0cbd754663a83fe05d28172622bcb00bcf8b51ad43eac174ca7951433689 | https://maven.mozilla.org/maven2/org/mozilla/components/service-firefox-acc…
-377092988061736b0a6e8ddfd243fb9766598724abe0153767310ad2b0be86f5 | https://maven.mozilla.org/maven2/org/mozilla/components/service-glean/67.0.…
-fb92289de18579d19547ee1ac59cfcbcd576c53512205d4541586af9b1809468 | https://maven.mozilla.org/maven2/org/mozilla/components/service-glean/67.0.…
-238beb90f71bed557dce69f607c33848b127eaad357a82f3fb0f44fed202f3e2 | https://maven.mozilla.org/maven2/org/mozilla/components/service-location/67…
-07a836f07dfd12e171292d06c5e542f605236602d1d665b02d33a10802aaa973 | https://maven.mozilla.org/maven2/org/mozilla/components/service-location/67…
-9fc2bb91cc32089f66358a4c2f323528d8bc6830901f813a1fdc85d800601b2c | https://maven.mozilla.org/maven2/org/mozilla/components/service-sync-logins…
-f1ade509d43141573903969ffe9c54c2fce309aa0a87e777bdd4a35b2f4828f9 | https://maven.mozilla.org/maven2/org/mozilla/components/service-sync-logins…
-43faacafe7374066d9d8b66d6a87a6c6d007f3acd8bb2a5fb6bf8ce62e266059 | https://maven.mozilla.org/maven2/org/mozilla/components/support-base/67.0.1…
-37b009bad8fbb964c946bc8aaf56ce9aad72c8493f0544e5f84ed9c1af2cb33a | https://maven.mozilla.org/maven2/org/mozilla/components/support-base/67.0.1…
-7272f578bb978856a612c4fbf1c503d3dc04a63ae45ac026b4c4f5492a70ef53 | https://maven.mozilla.org/maven2/org/mozilla/components/support-images/67.0…
-7fa51d7789f9e31ebc6777d8ca7008dbd6f59b3da9dc5cd8f2a9cc91b93573aa | https://maven.mozilla.org/maven2/org/mozilla/components/support-images/67.0…
-763c945ac479edc0b041efb6c1f8682123390bd8fb683be8241346e7ea330435 | https://maven.mozilla.org/maven2/org/mozilla/components/support-ktx/67.0.17…
-5656be6993967d4059b57b7eb8fe85d5f6aebd011e12c6ea55f8c5454ec97f71 | https://maven.mozilla.org/maven2/org/mozilla/components/support-ktx/67.0.17…
-560878e125f97cbbbac124c227b0a3db56f253d3b9c3f071af07a12f4def7189 | https://maven.mozilla.org/maven2/org/mozilla/components/support-locale/67.0…
-570481a2f7b8a04abe10aeb7f4d32fa8c15e4b1dc2fe2f542cde625360be4518 | https://maven.mozilla.org/maven2/org/mozilla/components/support-locale/67.0…
-54ee42f4494b7c1f3ce24b1253468a348640ab2c717b7083dc94ccf6270d330c | https://maven.mozilla.org/maven2/org/mozilla/components/support-migration/6…
-e3e4ffc4af1687c25d34926b995f8ab48bfcef1cdc1ffdd38d2ec2d181c23185 | https://maven.mozilla.org/maven2/org/mozilla/components/support-migration/6…
-8639a7b017f074538e46405e947de42614f512bf154c0e10bb823033a399fec3 | https://maven.mozilla.org/maven2/org/mozilla/components/support-rusthttp/67…
-3d639fee73b09e693c7882e7ca61cc591ac69dea620f2133adb06fe1216269c9 | https://maven.mozilla.org/maven2/org/mozilla/components/support-rusthttp/67…
-46804b487bf00a7e96fc7cfe0f256caca8844efd4ba442e09202f2ec3f0a1002 | https://maven.mozilla.org/maven2/org/mozilla/components/support-rustlog/67.…
-a78de4b7d6663a4e71dad55666b7154eabc05a730e881864c26f0796037c4b92 | https://maven.mozilla.org/maven2/org/mozilla/components/support-rustlog/67.…
-73e17b5e48a21d9882ec81e4885dc7681bd942c192f2ccb58856890fa94479e3 | https://maven.mozilla.org/maven2/org/mozilla/components/support-sync-teleme…
-ebea1bb4478bd940152e47016bb50cfc0db8a2f170a21d1c2788b0136907f638 | https://maven.mozilla.org/maven2/org/mozilla/components/support-sync-teleme…
-2221c6d5aefac39176dbc8622f043a3fc3da8d80e25c6d232b1ff949ee8588b4 | https://maven.mozilla.org/maven2/org/mozilla/components/support-test/67.0.1…
-b3d37fcb0913f5b30839a06d7cc506405afde8b403e8d65c3e7ca18bf0cc3288 | https://maven.mozilla.org/maven2/org/mozilla/components/support-test/67.0.1…
-93fd44998bfeeab9d7137cb34a50d510876ec8362e988b8a4ddf4e1629a69e71 | https://maven.mozilla.org/maven2/org/mozilla/components/support-utils/67.0.…
-65d64b592f2f3dc8c889899e81c7360ba2671a42f13fec102ea79839b63c2f09 | https://maven.mozilla.org/maven2/org/mozilla/components/support-utils/67.0.…
-5aa43d65d89f547a28d090aa5e625a5ee96a3db6a6f1599680d4de306018d3d0 | https://maven.mozilla.org/maven2/org/mozilla/components/support-webextensio…
-ad06ef83e187cd9052b0f60300687bb7eb39e1ca834f4290dd018842424b3e63 | https://maven.mozilla.org/maven2/org/mozilla/components/support-webextensio…
-d93ee2b2d7650eb8e1dc0b3c79c3935bdb7edd020239d98b66500ae0a3c15aed | https://maven.mozilla.org/maven2/org/mozilla/components/tooling-glean-gradl…
-d5a68e724a79d29ad580bd3157010e70aee715f110f82de60ddcb9fa976d215c | https://maven.mozilla.org/maven2/org/mozilla/components/tooling-glean-gradl…
-f7c3df3d22d806b190a58c7239114d2fca2740dd7db4cf788be74fbf8c5d5135 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-autocomplete/67.…
-e34face0e46968636a0f00e3aaf7fb4886300732c294144ab7bc6c91edc77485 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-autocomplete/67.…
-7ec7264a35b13382f84d701fab89daace99c6c8157c6fdc6d15da2361fb4f16b | https://maven.mozilla.org/maven2/org/mozilla/components/ui-colors/67.0.17/u…
-4340cb39c0be5d8bb164013c6caee40b284ecad67fd9d8bb5dd5013db7681335 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-colors/67.0.17/u…
-e6905869f068713e39add5e743c7af6ace41ad8041a6ae328dec0fc0f888b039 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-icons/67.0.17/ui…
-9535fdb4b5775ba3fc3478b40a786190648e0fbdc3cf96b36239749937633190 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-icons/67.0.17/ui…
-cac7392d6bd136b460f365d392fec55c65ac38de79f2d19c5a79f5926627bf8e | https://maven.mozilla.org/maven2/org/mozilla/components/ui-tabcounter/67.0.…
-98ada1cab3a7806b94a08433953f7feb028e1fcc5dd7c36fd65abfcb72a12c9f | https://maven.mozilla.org/maven2/org/mozilla/components/ui-tabcounter/67.0.…
-ea6635ff2bdbe7943dff10d1f32024ee28ab228fec232e5a9db1846d296fb82d | https://maven.mozilla.org/maven2/org/mozilla/components/ui-widgets/67.0.17/…
-04274e2efcd1a2b9a17b7d412662bf37ab79923ad0f71deea7ed77d20d73eaf1 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-widgets/67.0.17/…
-344af38736e6f5ed28b1c24301f553a9060c3e09a4f2c40989bd59572ce601f9 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview-beta/84.0.…
-17a1138b7366e606664909f85462a9496619d2e3c4cdf732238e3ca104678b6f | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview-beta/84.0.…
-fcdfe4029a5f82ac8a86c6452e3f5b57994bb1025ebb8143c12a436a7f07d359 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview/84.0.20210…
-fd621684f18690a812c81438e100d5d5b9d67fb912f243d9e7625ffd691ee672 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview/84.0.20210…
-e3b779d5f79c8012d62d3e43bfc2d577ca65439bcf7181c8ec333d0f3fc76890 | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-forUnitTests/3…
-6e0b82e4ed2fec26de9c9e68d6fa237d716177d9f9e7f6b1213699d7f55e73e6 | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-forUnitTests/3…
-5eb5d86577ecf64ba66df368c07dde772d1e82da63f25d73e63118d261ca7a7c | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-gradle-plugin/…
-d1a407ad60d86df547ca4521ed5355e609bbe09f22ef658c89cade0780468994 | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-gradle-plugin/…
-a1925b30aed9675e339205797eebd0598885cc987fc61890e81f4a2c12dcf6b6 | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean/33.0.4/glean-3…
-477ee8ea2f4bbcf2860553987f3e5fddaac7cfd6bcae7c1bef7a7b29cdc5d9d8 | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean/33.0.4/glean-3…
+c851df79b81bff60b33f42b8f3ad3497f94963eecffdd360d588e06b2f5e1902 | https://maven.mozilla.org/maven2/org/mozilla/appservices/full-megazord/67.2…
+24dea3626ba33a81790713097ecdbb0e40acec1f778f3247d687c2def6e7562a | https://maven.mozilla.org/maven2/org/mozilla/appservices/full-megazord/67.2…
+3de5412e997e57b938c5d820f2b612aa54f9d4e451ded2cd9daa46830b1140a7 | https://maven.mozilla.org/maven2/org/mozilla/appservices/fxaclient/67.2.0/f…
+1cba0a74d265432f36ee2643b843f2a1aa1f160f7f95b1d0a674b5f84b61bdda | https://maven.mozilla.org/maven2/org/mozilla/appservices/fxaclient/67.2.0/f…
+c7506f720eb8f9170ccb0f8ab3bc60a19b4d14585a910e6cb8c70b28b5c45b51 | https://maven.mozilla.org/maven2/org/mozilla/appservices/httpconfig/67.2.0/…
+a11bbacf60c9adb449e9aff67af0f0e7725079f496735c762bc627bac1ba6bd5 | https://maven.mozilla.org/maven2/org/mozilla/appservices/httpconfig/67.2.0/…
+7ea4e2f86eb19f108a75ad7a6eab3f04aaabc17fe97721e7af6eaf6016e9ac5e | https://maven.mozilla.org/maven2/org/mozilla/appservices/logins/67.2.0/logi…
+abc9a481d9a8d0cff2aa2bd64ba3659e7e2a79a4fbdbeda0cdf5f2c3f4f3b20f | https://maven.mozilla.org/maven2/org/mozilla/appservices/logins/67.2.0/logi…
+fa8d2f9ab6a387a164e0c0b78fd72012db661b3d43848f778fb9288f17de0e52 | https://maven.mozilla.org/maven2/org/mozilla/appservices/native-support/67.…
+a9986d9325879d5daa274b0cf140917207134975ca30363c49c7f53008bb0e8d | https://maven.mozilla.org/maven2/org/mozilla/appservices/native-support/67.…
+f1280ce4007d3d6f114c35d747c50ef4b8e972ac20812dc1ad5646c58c874446 | https://maven.mozilla.org/maven2/org/mozilla/appservices/nimbus/67.2.0/nimb…
+c1bb50d0b6c922aafcb8beb4a0115e4f148f18f15237694fcbc9215806b784ee | https://maven.mozilla.org/maven2/org/mozilla/appservices/nimbus/67.2.0/nimb…
+84b1f7298bac034edafc3daef1a8b1fc89543a8ebe5b762c5c3c18abe8a01f7d | https://maven.mozilla.org/maven2/org/mozilla/appservices/places/67.2.0/plac…
+20b128955bc1dc0a648cb179337d181c5b8f2c01d17a4eaf778a542007a5ddd3 | https://maven.mozilla.org/maven2/org/mozilla/appservices/places/67.2.0/plac…
+e0876d0f2a8672b608d3d702bc42c8b833a1a146e359c18e0fed2b61d00d3975 | https://maven.mozilla.org/maven2/org/mozilla/appservices/push/67.2.0/push-6…
+6b6fda096740b2b0293adef4254aec90b43c8061bfa57c95afa6c44998fb4d2e | https://maven.mozilla.org/maven2/org/mozilla/appservices/push/67.2.0/push-6…
+8a91c6b51965a76397500c8e3660ec85a4dafe591322c966ce382759baed23d8 | https://maven.mozilla.org/maven2/org/mozilla/appservices/rustlog/67.2.0/rus…
+2df4bf435be1494030b7e095d3006a88f42ba278d834a46720d2746bac20fb05 | https://maven.mozilla.org/maven2/org/mozilla/appservices/rustlog/67.2.0/rus…
+57c4acea81f73043ab62dd4dc341a524d38682d6bc2e69bb48822f9e0ac7f48b | https://maven.mozilla.org/maven2/org/mozilla/appservices/sync15/67.2.0/sync…
+2884728eefb23a3e9c91c2d4fd4c91fd95d6b155be7b317ecf70203e68a14428 | https://maven.mozilla.org/maven2/org/mozilla/appservices/sync15/67.2.0/sync…
+fd98ace3131929977df6caa61b419956cd704fe7fb46dc20e1d348e710755690 | https://maven.mozilla.org/maven2/org/mozilla/appservices/syncmanager/67.2.0…
+0b41c8ffaa03c0f84bc4ffebcd765c6373162191fa14e480fd1de19e1d9ed2b2 | https://maven.mozilla.org/maven2/org/mozilla/appservices/syncmanager/67.2.0…
+9ff49670a110fd56586229d42673902049a92650257fad81146a25daa5a4e58f | https://maven.mozilla.org/maven2/org/mozilla/appservices/tabs/67.2.0/tabs-6…
+8729ddf632ec417808e0e0b49868cb46bc968fb44c97f5e0b7397ccd4728c8e3 | https://maven.mozilla.org/maven2/org/mozilla/appservices/tabs/67.2.0/tabs-6…
+eb10e41437ff99e9f9bc482456da68b7c662f4289a31521e36058bc3110e9f22 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-awesomebar/…
+98f9708a11f1749e9fd607f0dda6599b7956df536490c37d7b38f54f877dda4d | https://maven.mozilla.org/maven2/org/mozilla/components/browser-awesomebar/…
+96ba207d21b7f3ea35ed0d73e5a9ddc75235b7f047977fd862b653352b1f2561 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-domains/70.…
+05012acf0559c323ff4a7b3e76ac5ab889c312f82fac9338ebbd5db4320eac14 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-domains/70.…
+34610d714cc8dab8d5c71ae366b01f0c07a8e36e3b3434e998e075d5c44894be | https://maven.mozilla.org/maven2/org/mozilla/components/browser-engine-geck…
+b2ece51e32d8dfecfee525a98452c7403169b5216a7e073f6f365b28f2149379 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-engine-geck…
+b14a5255f90d56aad0a6dec8c8e639f90419ffe10babe75ff4ac79f8dae20919 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-engine-geck…
+6f003402bc7d3ab3b06ba1227813609440e32411803ec6dd5481be9eba512a72 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-engine-geck…
+f623787a65dabc05dbcc7da70fb6785199603fea2d17c927207cd6f4247a1868 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-errorpages/…
+14a916cb6a409ef628cf4e5c87d01496c1f536bda5294a6d7b3bc4cf412020a8 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-errorpages/…
+32e2efc670cc240c949b8403ddde5263c118ddd5e12649d5bb1ae2ed71232b8c | https://maven.mozilla.org/maven2/org/mozilla/components/browser-icons/70.0.…
+66b62c2af1e6abb740fa3283773c723af5835f8ea20ad3170ab63f771452788d | https://maven.mozilla.org/maven2/org/mozilla/components/browser-icons/70.0.…
+172f0ac554ef72727bdec8c542da7872013c7168a175e1b10f4116b925c8b78e | https://maven.mozilla.org/maven2/org/mozilla/components/browser-menu/70.0.0…
+692e16e28d730aea4fe9818eef36c308d8bc661fa2960e152dd5292d5d683e48 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-menu/70.0.0…
+34f9fe3cfd61b9e5817d37214f46211abb57484f95a6da27c479c17070e8ff55 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-menu2/70.0.…
+187b27b778529ae4728ae151756bd2a1a25406348173ccd166c3233c8ee35283 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-menu2/70.0.…
+e08d94684d14dd3798e59f265703cfcb6de6da3dcd6d9f81292da9f6c33f5243 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-search/70.0…
+bbc5e0c3f094cd476fde76d115ada9723b93b713b6b9230e9899eac339a5888e | https://maven.mozilla.org/maven2/org/mozilla/components/browser-search/70.0…
+b21673f5a221058a61c4d021f40d95e7438741c79a4a9e1ce31a52933ed7a835 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-session/70.…
+f6e3e7ceee9c4f059abf2bde6f33970d137652ad469503424de01cd213d9ae24 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-session/70.…
+47cc792a992acd8ee025ca71212a4c2bbdad415fbf4451d87efbad6b3602211c | https://maven.mozilla.org/maven2/org/mozilla/components/browser-state/70.0.…
+49bebd70e63ef6cbb7e6b46fa174567a1776e5beeb70096baff0225d89ea02e8 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-state/70.0.…
+8e40abe139c33c6a076e4a816b2d3d8013b6d88548b9a32a2f01cc7b86d6e236 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-storage-syn…
+225a4106236e2c3d66d1d1b5615b16cce5a1009cb28d00271399cb737dd714f3 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-storage-syn…
+a1177224245621239841c962f2357664b8fbeef260fe72c820108363b04a184d | https://maven.mozilla.org/maven2/org/mozilla/components/browser-tabstray/70…
+9c3abd12f6022a3757ddbb37a191a07a7f65bdb081e1842adf15de4eba1e6c7e | https://maven.mozilla.org/maven2/org/mozilla/components/browser-tabstray/70…
+ec32f69d6a2cda56392a125ef387273e7857c6c49aa7831f67151c22a045bbad | https://maven.mozilla.org/maven2/org/mozilla/components/browser-thumbnails/…
+722d9886a935b9f75c492e767b1118f1448009ff4ff17399d54269fd2557e810 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-thumbnails/…
+ef19a31c3d22e44bed0e626b4d792250a9c4d7691faf3fda1d9104be85f5fe44 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-toolbar/70.…
+d451eb25453bf0172d173c91b0a8ca23240c90757bddde4f09a59bbefc19a26b | https://maven.mozilla.org/maven2/org/mozilla/components/browser-toolbar/70.…
+9881d2f4d6781a56c54c4e2147d3b85bb3c12d717ee436f2b7ae0f9098b4c315 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-awesomebar/…
+3fb158ad824b814a5483e379de494194c999bcfb73bedde5be2190d6300222ee | https://maven.mozilla.org/maven2/org/mozilla/components/concept-awesomebar/…
+f79856dc09b0453fc0a741b7edd90fc87d229953db53eee7bcaa60601e547595 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-base/70.0.0…
+ce07701607b6c9e29c0f7b268f3f4f7c19d78883a7d1b8e3432e70ec184caf31 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-base/70.0.0…
+092eb815939df2144215fc6307d6d92e88e36b933cef8d859efd250971b3a3fe | https://maven.mozilla.org/maven2/org/mozilla/components/concept-engine/70.0…
+cde75df23f34c6c776135d9762028b2a662280f9bd88b4fb8ee638d9869dbe01 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-engine/70.0…
+9e347d0aa834f54c1c22908ec0b7ac41cbd0735879fd0a304aa3f11485c27607 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-fetch/70.0.…
+561d4cf4bc284cf577b341af6dd4d134d7f8e0a56de366834b658299802a4879 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-fetch/70.0.…
+bba506554ab268585d61cff368090d0588ec9a5c9f352166a406794202591584 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-menu/70.0.0…
+4acd340add6eca7f2d63db3d325f99cb8457966d7371a27e097cac0492412ee2 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-menu/70.0.0…
+7c2c2ec4950c09e097ef71cc441d37f4c538ffef5e7d05fd4bdde136748545b3 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-push/70.0.0…
+0ef92b6feffebb892c7f2b1a075a0a09c50ec806946cd4267418f53644314434 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-push/70.0.0…
+cf426a1ee8adf7b0f2ebc718465a3e472286dd5db738b0ca26eed426a4024941 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-storage/70.…
+04c1dd11d4a7258f6e3c99e7805f554df96cdf2b3c4b709f6c18155143b514e6 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-storage/70.…
+33ff3f8d3c6a62879a6029ba88694cfee4121e317046c467bf6a6e24eda3d87c | https://maven.mozilla.org/maven2/org/mozilla/components/concept-sync/70.0.0…
+5f7a2037f5709dcf82220d066bb18b1ec9bc54c3a9dc26de46f92ec8477036e0 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-sync/70.0.0…
+d8ab166f91c99d5abfad741531223b50098e0f881e435aac1981f944d787c75b | https://maven.mozilla.org/maven2/org/mozilla/components/concept-tabstray/70…
+49788737e8b097361791dd0318d234e273fdef496ac9b6826fda154fcb7ea572 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-tabstray/70…
+47bfc83389681525981943ddb45f5d9a5ae059240a0d46f857de3a08a1ef405c | https://maven.mozilla.org/maven2/org/mozilla/components/concept-toolbar/70.…
+72dc0cb105aff4cc20170d92658bb33ae7497625468934ddaced7739b5d3f0ad | https://maven.mozilla.org/maven2/org/mozilla/components/concept-toolbar/70.…
+2c6ed0a189624ff4b740def6314ff9814078e0d71030600380fa35e970324db9 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-accounts-pu…
+1e7a10522a2d331609c83edb339b7ffdc64e12a64b959a9bd4368fa255a5953a | https://maven.mozilla.org/maven2/org/mozilla/components/feature-accounts-pu…
+95e9931a0d217e69e0d7ba9b05dbdebfd5bfbe1a9e827fa5a5435913f25b013a | https://maven.mozilla.org/maven2/org/mozilla/components/feature-accounts/70…
+874597c5c64c45b5b483bc014f8d753f51016ad372ac031c408ba493f1ad1e1f | https://maven.mozilla.org/maven2/org/mozilla/components/feature-accounts/70…
+de07da00795c5736b51bb4f51322532c2b1cdb4904d50954b1d63ce459d884d4 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-addons/70.0…
+75f492ba7697f4c9e0b77f8131ec496529d308cdddea4114c15404bdcb413850 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-addons/70.0…
+4444056c3c02e6af3b5b49218732ace935110c0c0a9f3c9314f4c72261206061 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-app-links/7…
+8d817fb27e7515f362a5bcce727322b32b3fa73b8e1b07c0e046287cba2cd6b7 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-app-links/7…
+d600ada270230c5f5447334be483aa55d7b3cc1b4c956d4d2a3fc9837f1c2899 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-awesomebar/…
+a02230264da028ee6552268ee13c9913af1555f653cb6375d549679eccaed4e7 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-awesomebar/…
+768d6aae518c92edf969dd169cb0c9c9c49779b165ebd56a38307b1424189362 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-contextmenu…
+b5b1a9ef937b37ac661072bc92a5af18ed4f761fc903f85ef05d1ecac7d4861a | https://maven.mozilla.org/maven2/org/mozilla/components/feature-contextmenu…
+d473451da8196ce05f1df3111dd7bc3f6d143691549bf6f809ee35f224c43a8f | https://maven.mozilla.org/maven2/org/mozilla/components/feature-customtabs/…
+31b4a080ffdaf589ea0f37092b5583876b1de0726704079345bb23ff91ad03dd | https://maven.mozilla.org/maven2/org/mozilla/components/feature-customtabs/…
+724a55efb229d844aae59db58b55370022851e0b614110a4935a3e0eb09fdd53 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-downloads/7…
+0b421c84583182b97b48f1081cc8cf4667bb47b9023c5a80149edbdc33d8c8ae | https://maven.mozilla.org/maven2/org/mozilla/components/feature-downloads/7…
+b5dcf37f8e9461485c3c7277784fa8ed49e728afefa1725fa64e8052c772ff2a | https://maven.mozilla.org/maven2/org/mozilla/components/feature-findinpage/…
+54c6b3e2beb7dc24ce1be91b2829e322cd669f6bf7f856da900096dc79525bb5 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-findinpage/…
+b8e7a98b1173bd7f191659f148036d0ca3e56764cfbd2b9bdf55c67916560f76 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-intent/70.0…
+9f64be890784bb467c0a0b41c4f5bb7cf41b00bd6a376254708c1f0848790f60 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-intent/70.0…
+f72b520f9fd36f627d4a0572c62407bebf7c8cbca888429ef89f9c4f317d7a5e | https://maven.mozilla.org/maven2/org/mozilla/components/feature-logins/70.0…
+2cbb621657b69e107c05cda18c2d14f196ab490e34fe3448ecaaf29fd0e99f31 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-logins/70.0…
+5c9656c4ebb350d051226efe1ffaecc309bf0c8395d0f2cbc8ea4720c09a1c47 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-media/70.0.…
+156afabef938e457b340468d58870983f7eb16dc8d256e12cfe5f89e71e781af | https://maven.mozilla.org/maven2/org/mozilla/components/feature-media/70.0.…
+db9e59be933617302ee4c9dd6eb5bb9a234a89dadab9c7fd90045963629d58eb | https://maven.mozilla.org/maven2/org/mozilla/components/feature-privatemode…
+4a3922493a368390563e4ef58af8efd4da668f4c834050f3ecf0c0aff12e28d1 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-privatemode…
+4d6eac696d5d399dfbbf9b297877a31ce6c800d7945e1343aeaf20561edc24da | https://maven.mozilla.org/maven2/org/mozilla/components/feature-prompts/70.…
+95dd998ea43acbe8a8df2241b7b53434c0d6006e4b1c2eae0d88a037de00c7f4 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-prompts/70.…
+877cd2c04d55a25fd607d1ffe4a5ccc9c5f8049f02fc64ee149412e8cd0ab130 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-push/70.0.0…
+e21d857d17ff83cdbbe1a62495ddb5ba4061ac3d494473f27b93dda82023883d | https://maven.mozilla.org/maven2/org/mozilla/components/feature-push/70.0.0…
+33b503b8a2cdb6fdeb695a837a10a35b6f9c12e1f8be72ff73d178dedaf1ea4e | https://maven.mozilla.org/maven2/org/mozilla/components/feature-pwa/70.0.0/…
+6cafea88d5a8c4f23b3ff9e43aad07f0fd2cb5fa546bd76d252e501c05a54ec8 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-pwa/70.0.0/…
+a25a79bc11473dec3e235e53a675862595a9ae47fc62bf2832dffc8b79749986 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-qr/70.0.0/f…
+183209e9b4ad05228638c04897385b209a88e84bd073ddc967529ac6bead0d71 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-qr/70.0.0/f…
+6cca3efef7c58d2504c1fc4bfc17976b9331ff7b0486fb8d2a226d37225554d5 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-readerview/…
+b23fd37e8b06c8dcb442cf2be5cf22429ffcbd2fec7fbc17ed6c2724230aae89 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-readerview/…
+0cc797dcf14dd2deb7c1578375f59b1ddf91a007a2d7a8d1edb46cc0a4148548 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-recentlyclo…
+9617096d5128748cc117b0d5bbd3ee0a4d5a0e8113aa4a664acbe986be376ff7 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-recentlyclo…
+2746d9ce02f8866e130c0fb08c55a19a4dbc82fc1e2b5941b7e7ee56f6891eb3 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-search/70.0…
+b239644306a0e1488840ef8c6648eeca9e3e685e8657bc106ac827ad7f34249d | https://maven.mozilla.org/maven2/org/mozilla/components/feature-search/70.0…
+d1e280ae87d73e4c3117a6efaf2fb936651c9876936d82a31d8a980a3a77f7e6 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-session/70.…
+c18393b4b42ee976cb2ca879931733c208aa38982e32d95be413184d3126f2f8 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-session/70.…
+fd26d96692208b08bde84d7136aeeae9d085819dec92ac672a976c5c7ddb5e5f | https://maven.mozilla.org/maven2/org/mozilla/components/feature-share/70.0.…
+bcdf59b36c15d4cdb4d923903068dec6ffcd28df79a8380d457ad0b7724aaae2 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-share/70.0.…
+522f3a7010b06d93f6ae9b446a487c237e60b19fa82f769943467f865d6df6cc | https://maven.mozilla.org/maven2/org/mozilla/components/feature-sitepermiss…
+5bb7eb70af9e3f75e2c9641405098cab4be13038b2bfae816c49a96e91f863d2 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-sitepermiss…
+1298f7da86ae9632d6155c680375e2b9282f2afdac9607644a13556e75adb3a8 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-syncedtabs/…
+322f0d92d65f4e9a7a49cd27b25754165f94a82237e2ed99e4c50e2c8c742342 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-syncedtabs/…
+468732a45ea3b7ccaf0d85650bf5cca036e3eac59964bcc913c8227d5f580697 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-tab-collect…
+f3ee76e2dcb553e2be857feafe4aa73bf95b4ebd5cb97bfc74dcadf9f838900c | https://maven.mozilla.org/maven2/org/mozilla/components/feature-tab-collect…
+a15ae366297ba01bcce987364ca54b5f792315c71a6b0b4a2adfe48dc4fd6581 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-tabs/70.0.0…
+01904d7c92d412e3670f4d749cebbdddd64705551f13751af4beeb41e8f86821 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-tabs/70.0.0…
+08384f77fc05b5de5f0ef98f4135177eff8a9ad93359c2ea3b8ea7aedc03c71f | https://maven.mozilla.org/maven2/org/mozilla/components/feature-toolbar/70.…
+2a58c5cbccf95ca99c1eccf981e394b227688a8d717370501c7868d595d3d2c8 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-toolbar/70.…
+bf86363ecc6e9e086c85c51a83d32e98ac63e03f70ffa1de6de949702d77de15 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-top-sites/7…
+e5dd80de9e05380bfbb6abfc4ccae384c839afe4073a5655c44763c74b8fe973 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-top-sites/7…
+09e67091620ab5dc8ce822d4730644fc6ed73f16155860755af69b4170a221c4 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webcompat-r…
+4568af0e7a50c2848b14d0ed0276e21ed3fece298e20844de0011efe371fb64b | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webcompat-r…
+13caae87a75f12312d6035e7ee41af8aeb82e659189bf3cf8c9f838baf45bd58 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webcompat/7…
+cf58fd923b18e4f7e7142cc8b5c2c7ed8953d2c455fa702c9a89468544fcd941 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webcompat/7…
+dacaac94c09c15073201e36473f13f489f5154f2cb33fd3c11da33154496d2ed | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webnotifica…
+e3b98fcc4e0c899c10d49330b2dec7fc5584b0e83bc7d6af57f9785234c9c377 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webnotifica…
+69a01302c41356e0fbb2f92af46f4d8445d1b027ed8da979529181b8957fa596 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-crash/70.0.0/li…
+fb9038c7e5356700b014e954c14edc8a5713ba9c9ad0e80ed34e92ffe032ba5c | https://maven.mozilla.org/maven2/org/mozilla/components/lib-crash/70.0.0/li…
+cb20c3ce0527f2df1376959e12d4f0283b38b9d3619b9cbbeb0d86e1b9bbd240 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-dataprotect/70.…
+b4567058bfca0ba82703ce6dd5dbca5b816e96b15d2aa697d41f1215f0793884 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-dataprotect/70.…
+8e3dbbb157901a5af8c80326cefd87e8c2e01de232117c8203a666d342dd3348 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-publicsuffixlis…
+08a5ec324ee08b991c291b1d1273f7007d7dbd203724c81425eedb668bc55e7d | https://maven.mozilla.org/maven2/org/mozilla/components/lib-publicsuffixlis…
+a2b8dff3b67fe89e5c7c2601fb73a9d19247fcf5bb0dca80a8ca13ebf4457111 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-push-firebase/7…
+422e588fa00998afe0baa2341e264f1b8aed71f11444dfda9fbdb848d6dfa7d4 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-push-firebase/7…
+eafc7345d5de199fb217fb95d6ed60695a17b0f4f0dbba7fe86bf98e386c65ea | https://maven.mozilla.org/maven2/org/mozilla/components/lib-state/70.0.0/li…
+8f5c32e60bd7447d348a2a2947f75fdd5d14536a0c9f5a16ab0eb5050340104d | https://maven.mozilla.org/maven2/org/mozilla/components/lib-state/70.0.0/li…
+64e27638105d46e6c64d5632ae68bab22416d77d5169b68c48499b93855951bf | https://maven.mozilla.org/maven2/org/mozilla/components/service-digitalasse…
+12dfc986bbf89913472211331271d8254f17b659481e477fa129a4f50798312e | https://maven.mozilla.org/maven2/org/mozilla/components/service-digitalasse…
+87fb2783e865e13e7a0b2834c55209c75a8f45ccdd5eb977b27c8cacb1102779 | https://maven.mozilla.org/maven2/org/mozilla/components/service-firefox-acc…
+19a7c065ea32b2da2c74cc6874f446617e92e670a4cc40a58e8e857f865da2ed | https://maven.mozilla.org/maven2/org/mozilla/components/service-firefox-acc…
+e5cc50047401eb5dbc962f9267f6abaf4a36af9b0af9786069165faa9d9109b7 | https://maven.mozilla.org/maven2/org/mozilla/components/service-glean/70.0.…
+083e36a96f777ccfd53df01100a6fb025152f218e642895d22756acb70419fca | https://maven.mozilla.org/maven2/org/mozilla/components/service-glean/70.0.…
+8bf7f3f5fa1cf1f46c0292e937200861e3c707335b4baf38eac35fd157452c14 | https://maven.mozilla.org/maven2/org/mozilla/components/service-location/70…
+04e824e8e738628ffc4c6bb359621e3741c1e4afe0bf16f569c3568196a5c6ee | https://maven.mozilla.org/maven2/org/mozilla/components/service-location/70…
+4877217ae325ecdc5e6df574f2242e383a2c927ebfaf9064a98334fb4c2212ab | https://maven.mozilla.org/maven2/org/mozilla/components/service-nimbus/70.0…
+c8fb1e4bc0d30572dcad6a384c37e0ebc2f8d9d988be823d9000713c10228d86 | https://maven.mozilla.org/maven2/org/mozilla/components/service-nimbus/70.0…
+3ad9028792a8903f426471a7bc38fc92b3333c5b8c43819d5a34bbf7d5fde477 | https://maven.mozilla.org/maven2/org/mozilla/components/service-sync-logins…
+1611b0cbd7806be9ddf054a5764a6bbd96da6f9cdd52022db85ba0c755263e4f | https://maven.mozilla.org/maven2/org/mozilla/components/service-sync-logins…
+98c504148ccbb9712300694f0541bde4a8e3c29ae7f9c75e1adc774a477a0a93 | https://maven.mozilla.org/maven2/org/mozilla/components/support-base/70.0.0…
+b2f0ea28543f63683fd907dc55e020fd3e96d9452f6459b9439eb9bfb743eca5 | https://maven.mozilla.org/maven2/org/mozilla/components/support-base/70.0.0…
+64160d6f2310044493cf42b19bd661b385c6aeac983a28566b7933717d1dd7ce | https://maven.mozilla.org/maven2/org/mozilla/components/support-images/70.0…
+01759ce48f7d1b4732535014c4e96ca7bbaf7aa467833e217806e947983b5941 | https://maven.mozilla.org/maven2/org/mozilla/components/support-images/70.0…
+913a93638ba0f26fb2af2a08c2bf3cd6e8d3359b7e7d896823833f43770cfd3e | https://maven.mozilla.org/maven2/org/mozilla/components/support-ktx/70.0.0/…
+ccdb71376dc484aba966ef87c4db0f74e106dff3667894b713e7ab57168c14a3 | https://maven.mozilla.org/maven2/org/mozilla/components/support-ktx/70.0.0/…
+dece9307fd3323394fd4246ff3a4aa4b09795e0f8e7466de495aaefd9b75cb60 | https://maven.mozilla.org/maven2/org/mozilla/components/support-locale/70.0…
+4edc3ee8e306483b63722ea3a59e0f7971580ab8782f0181aa7ea5d9542c065a | https://maven.mozilla.org/maven2/org/mozilla/components/support-locale/70.0…
+71ae75858321dfddaf5c14ed02cc45bb78777ab7d5e9a75e98d1164a5b8978db | https://maven.mozilla.org/maven2/org/mozilla/components/support-migration/7…
+d23677c16459edd2ca49aa805b58fc98be33d7aa8d827bb99239bca85f1c5ab6 | https://maven.mozilla.org/maven2/org/mozilla/components/support-migration/7…
+8639a7b017f074538e46405e947de42614f512bf154c0e10bb823033a399fec3 | https://maven.mozilla.org/maven2/org/mozilla/components/support-rusthttp/70…
+4611cea10ce74e68f4e7bbabe8e2a293b8cd0f9fde3342747444b27658d5bbac | https://maven.mozilla.org/maven2/org/mozilla/components/support-rusthttp/70…
+3398018e243a40a5aa1930ea2913319725e401e5c7800006da655b328a7b4e73 | https://maven.mozilla.org/maven2/org/mozilla/components/support-rustlog/70.…
+e441697cf03a6674617b8a4763e51a45f75e91a52fa74e37fa835516cbcb1a75 | https://maven.mozilla.org/maven2/org/mozilla/components/support-rustlog/70.…
+2dd3d15ef7bcb96cacf3b841cb5ca0640553a258db895169072e81c950eb1da0 | https://maven.mozilla.org/maven2/org/mozilla/components/support-sync-teleme…
+22b833eba0b664e8a523772d58c34cbf92004afbf6cc9206580384473ade490a | https://maven.mozilla.org/maven2/org/mozilla/components/support-sync-teleme…
+1275baef6d4d3d0a13c8e2f5a145e82ed22f234b93cd23ba20c3749a901e97ca | https://maven.mozilla.org/maven2/org/mozilla/components/support-test-libsta…
+5d01266aa1bba16ef4092ba64e7663572f80c111a12463333f7a813cadc90f60 | https://maven.mozilla.org/maven2/org/mozilla/components/support-test-libsta…
+ab202a392ce30bf1e0197f6c4b1aa5f163c56b1850daefb4f2de84a2007912ae | https://maven.mozilla.org/maven2/org/mozilla/components/support-test/70.0.0…
+b0a95949c79bdd97a19a3e930a607ec541abb06fd361a10a5ac78a431117e39c | https://maven.mozilla.org/maven2/org/mozilla/components/support-test/70.0.0…
+927d0c02791b1a93ac702c081f22de47141f21a5e8428923ad0b2bc526b745ec | https://maven.mozilla.org/maven2/org/mozilla/components/support-utils/70.0.…
+ffbbe421bb81404d2700f62681d003b161080a4cdac660b0494ad89d9b959064 | https://maven.mozilla.org/maven2/org/mozilla/components/support-utils/70.0.…
+4ba4df984e557fba95217bbc8fa9a321f7b9b592df75ca4524d29fccb2cec44a | https://maven.mozilla.org/maven2/org/mozilla/components/support-webextensio…
+a3fbd273c6309691460e9887b06618c9573cac3d8f0d7fa173a28acb43777f49 | https://maven.mozilla.org/maven2/org/mozilla/components/support-webextensio…
+d88f4f899e4534ea55c06ed3699aa86d570a73ca312cd328bc5f5d6a951649c3 | https://maven.mozilla.org/maven2/org/mozilla/components/tooling-glean-gradl…
+dbbc0b624a35416cd6e35f1998ced39f821880c710753f16dfd0b70ee9212a5a | https://maven.mozilla.org/maven2/org/mozilla/components/tooling-glean-gradl…
+5e24752108cf29270e74f42ed7479531ad77b8c014093d70bb102159f228174f | https://maven.mozilla.org/maven2/org/mozilla/components/ui-autocomplete/70.…
+084dd0a222fee103596e00a01a974195d7ea54474c84624701edd6f0dd99ac96 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-autocomplete/70.…
+7ec7264a35b13382f84d701fab89daace99c6c8157c6fdc6d15da2361fb4f16b | https://maven.mozilla.org/maven2/org/mozilla/components/ui-colors/70.0.0/ui…
+50cb8a512a6ebb5974b194a148be19b329689063c503487cbe01b6074bf56fe6 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-colors/70.0.0/ui…
+71307c399eb59749c6c25d2a0eb93c61513bc79b6c2c5a3e4dfb70e5077185a2 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-icons/70.0.0/ui-…
+26e516b057dfd88e0e55fd4ae1702eaf271d383086e78be38d97ef9f225d1a8f | https://maven.mozilla.org/maven2/org/mozilla/components/ui-icons/70.0.0/ui-…
+c15cd963cdc54dd257be6f3bf72e797a7d8f93ab6c4d92590dfdd59a468a6078 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-tabcounter/70.0.…
+82027e4094929ec4bb9e5ee61b5e536333025c00975dded304952770d89e0f68 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-tabcounter/70.0.…
+28efed984b2ee3a66ffcf4a60d648ed048fb4f73ba533c73b6567f03d91cd46f | https://maven.mozilla.org/maven2/org/mozilla/components/ui-widgets/70.0.0/u…
+35947da6512fd35bd9c4c6ff7569a78bb6f3bf871c1a3e4e330d0774f9bc5405 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-widgets/70.0.0/u…
+fe2ad1edc54b6934e4ea81bbd8a238c6707c510dfe0efe96e832d0da5c16debd | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview-beta/85.0.…
+6a2aa21ceb6083f8b36990b4fec0eef4c610a70e6b6a5b5e2c45b3fab4c8b037 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview-beta/85.0.…
+c0846392b7f8a8762122f9a9bc1221e311226e84e015cfaa2f057b0437a9ac97 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview/84.0.20201…
+8fae8d4945c9e5e5ca6d32d5e0f9d0b4a4c8cd02ede6c361b7c2cdc960e008c0 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview/84.0.20201…
+97a9d151ad636acc68eeda046866f0ac24e6f7bf2a81a6b938a3386cc73be529 | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-forUnitTests/3…
+817736c79269dc217946522fdb8f6ed57547bdd8fbf187687b53ffbe5d813bc3 | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-forUnitTests/3…
+ccd3a75eb0e0f8ce5882d9d3a3154e3d3c40ce9c44f6c506ad4e28df84bab751 | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-gradle-plugin/…
+a09eccf8b4fbb071e1acf3ea3ce1d30017250ee9c35424a0f98659526ff19597 | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-gradle-plugin/…
+a1db8db94979392030d8a5eb1c5d7eccc8383adbf031575d746c68a92e9b0d20 | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean/33.1.2/glean-3…
+d6394ad35c63daca22246363ff826749deb62d514a1843eea27d8f39dfb778e6 | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean/33.1.2/glean-3…
470564ff0a452da1c96be4ca3a9cdeceaa2912537ee2a8def486f3b383d43f15 | https://plugins.gradle.org/m2/com/jetbrains/python/envs/com.jetbrains.pytho…
6438812f927b505a4c4ef2703b45433a1b99e45334526bfed25e71e1a79abb14 | https://plugins.gradle.org/m2/gradle/plugin/com/jetbrains/python/gradle-pyt…
317aa4c467a37d5fcab6657c326a4069ea8e8c6dda951ec2091ffb95c596a2a3 | https://plugins.gradle.org/m2/gradle/plugin/com/jetbrains/python/gradle-pyt…
1
0
[tor-browser-build/maint-10.0-android] Tor Browser 10.0.9 release preparations
by sysrqb@torproject.org 22 Jan '21
by sysrqb@torproject.org 22 Jan '21
22 Jan '21
commit aa3b8193cfb1dac133bb645e9ed9146a369172c5
Author: Matthew Finkel <sysrqb(a)torproject.org>
Date: Fri Jan 22 15:57:32 2021 +0000
Tor Browser 10.0.9 release preparations
Version bumps and Changelog update
---
projects/android-components/config | 4 +-
.../gradle-dependencies-list.txt | 8 +-
projects/fenix/config | 4 +-
projects/fenix/gradle-dependencies-list.txt | 350 +++++++++++----------
projects/geckoview/config | 2 +-
projects/go/config | 4 +-
.../tor-browser/Bundle-Data/Docs/ChangeLog.txt | 13 +
projects/tor-browser/allowed_addons.json | 180 +++++------
projects/tor-browser/config | 4 +-
rbm.conf | 4 +-
10 files changed, 295 insertions(+), 278 deletions(-)
diff --git a/projects/android-components/config b/projects/android-components/config
index 6a689c9..dd21f87 100644
--- a/projects/android-components/config
+++ b/projects/android-components/config
@@ -8,12 +8,12 @@ gpg_keyring: torbutton.gpg
variant: '[% IF c("var/release") %]Release[% ELSE %]Beta[% END %]'
var:
- android_components_version: 70.0.11
+ android_components_version: 70.0.16
torbrowser_branch: 10.0
container:
use_container: 1
# This should be updated when the list of gradle dependencies is changed.
- gradle_dependencies_version: 15
+ gradle_dependencies_version: 16
# Switch to make it easier to grab all dependencies during a dry-run.
# Note: Use the commit before support for new GeckoView interfaces gets added.
fetch_gradle_dependencies: 0
diff --git a/projects/android-components/gradle-dependencies-list.txt b/projects/android-components/gradle-dependencies-list.txt
index a050124..3840e3c 100644
--- a/projects/android-components/gradle-dependencies-list.txt
+++ b/projects/android-components/gradle-dependencies-list.txt
@@ -436,12 +436,12 @@ ea6cb3d94121d03fefd5329072c7b01d891b8bb25c2c303b28dfd6728eeaa72f | https://maven
ca3c96c281e314f07170bbfa766693ef0d2e4d865433a9622254088ee7e68363 | https://maven.mozilla.org/maven2/org/mozilla/components/support-ktx/63.0.0/…
93fd44998bfeeab9d7137cb34a50d510876ec8362e988b8a4ddf4e1629a69e71 | https://maven.mozilla.org/maven2/org/mozilla/components/support-utils/63.0.…
b3836516ae7c9f1ca38ce636e24e3d10b2b421d94e344f14033daa5f20df3168 | https://maven.mozilla.org/maven2/org/mozilla/components/support-utils/63.0.…
-e2b9b284bad82ab05baf09bcf628b5ce9848efef5c78eca573b13f02d7339ddf | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview-beta/85.0.…
-89d6809df4e7dff26cb068199d0afd6112e388605dcb1fa12bd2e36dde947954 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview-beta/85.0.…
+00d82f17fa8f96206281b150429d2d2efb361b7e16df06f9f93ba3d73c6077a0 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview-beta/85.0.…
+12043feefa0e0af50d0459835121a2647f63bd8a6766ebda170821dcac99d0e6 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview-beta/85.0.…
0bfaeb53dcf5df0a6b816a1950d8b1bd615317a472103b27b61a6a411d853055 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview-nightly/86…
fd7c6e0136dfbe5357da4bdc749a55d8bb36abd5a9ffeb1fe4497784f373c242 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview-nightly/86…
-fcdfe4029a5f82ac8a86c6452e3f5b57994bb1025ebb8143c12a436a7f07d359 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview/84.0.20210…
-fd621684f18690a812c81438e100d5d5b9d67fb912f243d9e7625ffd691ee672 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview/84.0.20210…
+7ac371cfa60025020c391b59890db48c9db52fb67c1b2fd1eda70a2d20b72cb6 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview/85.0.20210…
+e514f95723d5f97c1e92e425923d13add24fdb85c2f761b20ae42d23e0457c0d | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview/85.0.20210…
97a9d151ad636acc68eeda046866f0ac24e6f7bf2a81a6b938a3386cc73be529 | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-forUnitTests/3…
817736c79269dc217946522fdb8f6ed57547bdd8fbf187687b53ffbe5d813bc3 | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-forUnitTests/3…
ccd3a75eb0e0f8ce5882d9d3a3154e3d3c40ce9c44f6c506ad4e28df84bab751 | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-gradle-plugin/…
diff --git a/projects/fenix/config b/projects/fenix/config
index 57446f8..c80806c 100644
--- a/projects/fenix/config
+++ b/projects/fenix/config
@@ -8,13 +8,13 @@ gpg_keyring: torbutton.gpg
variant: Release
var:
- fenix_version: 85.0.0b7
+ fenix_version: 85.1.0
torbrowser_branch: 10.0
copyright_year: '[% exec("git show -s --format=%ci").remove("-.*") %]'
container:
use_container: 1
# This should be updated when the list of gradle dependencies is changed.
- gradle_dependencies_version: 17
+ gradle_dependencies_version: 18
# Switch to make it easier to grab all dependencies during a dry-run.
# Note: Use the commit that integrates Tor.
fetch_gradle_dependencies: 0
diff --git a/projects/fenix/gradle-dependencies-list.txt b/projects/fenix/gradle-dependencies-list.txt
index abd0b87..a6e60fe 100644
--- a/projects/fenix/gradle-dependencies-list.txt
+++ b/projects/fenix/gradle-dependencies-list.txt
@@ -490,6 +490,8 @@ dbc2bb04ecb002b9f4046263ccad996f4a3d3c59a0cc98837e300a6700571f7c | https://jcent
4f8992dde784509e80917cabbc8406a7137e5f2ba2c1ae5b7250fc182a45bd88 | https://jcenter.bintray.com/com/squareup/okhttp3/okhttp/4.9.0/okhttp-4.9.0.…
e58c97406a6bb1138893750299ac63c6aa04b38b6b49eae1bfcad1a63ef9ba1b | https://jcenter.bintray.com/com/squareup/okio/okio/2.2.2/okio-2.2.2.jar
fd621988f7f6957025735dc6dd090b00a20f3a3bb8d77ca79036077f629b140b | https://jcenter.bintray.com/com/squareup/okio/okio/2.2.2/okio-2.2.2.pom
+4496b06e73982fcdd8a5393f46e5df2ce2fa4465df5895454cac68a32f09bbc8 | https://jcenter.bintray.com/com/squareup/okio/okio/2.8.0/okio-2.8.0.jar
+26214068fd4c7f437ac8fe8576802a9a9dc151c457582807ad9af2af2e8c9481 | https://jcenter.bintray.com/com/squareup/okio/okio/2.8.0/okio-2.8.0.pom
1d8518e3ac7532a104e4f7be77def37c982e530723c6bdb3d67708cce2b0c2c4 | https://jcenter.bintray.com/com/sun/activation/all/1.2.0/all-1.2.0.pom
993302b16cd7056f21e779cc577d175a810bb4900ef73cd8fbf2b50f928ba9ce | https://jcenter.bintray.com/com/sun/activation/javax.activation/1.2.0/javax…
f879b6e945854c6900b0dbee1c8384d7ab3de7e157fd7ac84937405c416d2a5e | https://jcenter.bintray.com/com/sun/activation/javax.activation/1.2.0/javax…
@@ -897,180 +899,180 @@ fd98ace3131929977df6caa61b419956cd704fe7fb46dc20e1d348e710755690 | https://maven
0b41c8ffaa03c0f84bc4ffebcd765c6373162191fa14e480fd1de19e1d9ed2b2 | https://maven.mozilla.org/maven2/org/mozilla/appservices/syncmanager/67.2.0…
9ff49670a110fd56586229d42673902049a92650257fad81146a25daa5a4e58f | https://maven.mozilla.org/maven2/org/mozilla/appservices/tabs/67.2.0/tabs-6…
8729ddf632ec417808e0e0b49868cb46bc968fb44c97f5e0b7397ccd4728c8e3 | https://maven.mozilla.org/maven2/org/mozilla/appservices/tabs/67.2.0/tabs-6…
-3569436c9ba384c03364568536a305725964fe637838e53f5ed6a99a6da3bd3f | https://maven.mozilla.org/maven2/org/mozilla/components/browser-awesomebar/…
-4b661bc21cab2c14aba2238a2853f0522d01380db12951be005e1e420d5a3bc8 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-awesomebar/…
-96ba207d21b7f3ea35ed0d73e5a9ddc75235b7f047977fd862b653352b1f2561 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-domains/70.…
-28157886da4ccf99ce06ccb80b209ed54975779bb58f61dc88b5e0f0f673362b | https://maven.mozilla.org/maven2/org/mozilla/components/browser-domains/70.…
-d6c4566d67144b0af2adcae6d304ba2748696a15777080c89a311394b5bf4fb4 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-engine-geck…
-9e05b4cb59ed7cc4988101525a58e632530ce09f94d06733a610ddcd048b8782 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-engine-geck…
-4fd08103a9a1562870c4dca57f30cb6840e5bd40e8788d923176fc7a38df8942 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-engine-geck…
-f000e2069c929d27c691212ad06acb7a1939ae1d3f87d4feb87394db6613d4a3 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-engine-geck…
-29a1e2f74beaa25677b5b77f03ffecb53ac16ec8f1abfddb8a5f9d5b862e0155 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-errorpages/…
-886df72a1d533081d14d384137950c178edf43b63e4a7de9b6ac787fd7a64983 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-errorpages/…
-2647f1f13af46e7abe02bfcd2de2b1855e043d9748b41bc2332829dfce4994af | https://maven.mozilla.org/maven2/org/mozilla/components/browser-icons/70.0.…
-0dbe48d0357a740a411feeeafa6de885ba4c6b08aadbcb813126d6423c44227b | https://maven.mozilla.org/maven2/org/mozilla/components/browser-icons/70.0.…
-f056dc57918e74739eea08664994efa68c36ee5aaf122fc83a7ca4db9ca8701b | https://maven.mozilla.org/maven2/org/mozilla/components/browser-menu/70.0.1…
-86e73120c80d00b8f033949d87a8c19a1ef85bc0b2d681242557a038ca253ec1 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-menu/70.0.1…
-a5c63f0f55f4ebe510d46dffef3e495567bd4ee71b5344200302c0905c55636d | https://maven.mozilla.org/maven2/org/mozilla/components/browser-menu2/70.0.…
-d8e6429ab8fdfd44060bcd0e59b0ecfa5f349071c1417f4189c46288891d1f2f | https://maven.mozilla.org/maven2/org/mozilla/components/browser-menu2/70.0.…
-e08d94684d14dd3798e59f265703cfcb6de6da3dcd6d9f81292da9f6c33f5243 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-search/70.0…
-b43ec9b8aacdb1064b7dce7b4b44b604f1c1bcdf13d872cf019573248023bfce | https://maven.mozilla.org/maven2/org/mozilla/components/browser-search/70.0…
-b21673f5a221058a61c4d021f40d95e7438741c79a4a9e1ce31a52933ed7a835 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-session/70.…
-90e08761d2f7d729625f7e674e44a8f0bea334994c4980312c0e50679e5dfbf6 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-session/70.…
-47cc792a992acd8ee025ca71212a4c2bbdad415fbf4451d87efbad6b3602211c | https://maven.mozilla.org/maven2/org/mozilla/components/browser-state/70.0.…
-f67046ffac96dade9b511a8846d48afee691bfe4d00f6c4509bd29c1b33c52e8 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-state/70.0.…
-8e40abe139c33c6a076e4a816b2d3d8013b6d88548b9a32a2f01cc7b86d6e236 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-storage-syn…
-5f0fbe22f843932a35ce9ec5403c23ce8ef8d36537dce773d781901393377fef | https://maven.mozilla.org/maven2/org/mozilla/components/browser-storage-syn…
-a1177224245621239841c962f2357664b8fbeef260fe72c820108363b04a184d | https://maven.mozilla.org/maven2/org/mozilla/components/browser-tabstray/70…
-4133e7508831fd446da2b45e324e3f333e1e344ccb9eb0553831eef8b383a804 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-tabstray/70…
-ec32f69d6a2cda56392a125ef387273e7857c6c49aa7831f67151c22a045bbad | https://maven.mozilla.org/maven2/org/mozilla/components/browser-thumbnails/…
-a3c343b963c3f32248aa1bba6dee4d724d8a05e212841580d0ebf1306d0c4ff3 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-thumbnails/…
-ec4d9a8073ca7e8150a6538e7990be186e39cbacd88e3bf641e915efd175f18d | https://maven.mozilla.org/maven2/org/mozilla/components/browser-toolbar/70.…
-6bd22f5d94a9594d22748439bf7313b162919c0a50b08bb6de29af5e79b607e9 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-toolbar/70.…
-9881d2f4d6781a56c54c4e2147d3b85bb3c12d717ee436f2b7ae0f9098b4c315 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-awesomebar/…
-bddd450a573ad88e262cc7e1ee43a11dc2901a2efd710c497c63f132132f0958 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-awesomebar/…
-e3c085f9de8f49ba0a0c0bebc0b6548eca11fb73acc2ff2a32ae746be5be94b3 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-base/70.0.1…
-8b9ca7dad914b9d5437b878845b2263a43ccf6a5138ac59c6e06286f9c813d50 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-base/70.0.1…
-092eb815939df2144215fc6307d6d92e88e36b933cef8d859efd250971b3a3fe | https://maven.mozilla.org/maven2/org/mozilla/components/concept-engine/70.0…
-6dfcde57834fb2aa55a02d951fa9e009ee927da0095b9338b44aa5b751168c3c | https://maven.mozilla.org/maven2/org/mozilla/components/concept-engine/70.0…
-bc7f4d903c04b6bdbb1f38ece70cc20abbf569bcc09c94a4b627ec7962d11592 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-fetch/70.0.…
-5f737a198d282b5e29c8d852999c0f29f5657ed7ededada980956e8f12e74e3c | https://maven.mozilla.org/maven2/org/mozilla/components/concept-fetch/70.0.…
-bba506554ab268585d61cff368090d0588ec9a5c9f352166a406794202591584 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-menu/70.0.1…
-5ad0c8684c42ce4d0122e0c18f368754ab5d22d93cf4ee9ede4b4e9ddcd06187 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-menu/70.0.1…
-7c2c2ec4950c09e097ef71cc441d37f4c538ffef5e7d05fd4bdde136748545b3 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-push/70.0.1…
-14147e8d70c99c23dd3a47bb67d6a2a94565258ac9050c7db7329f30a1b62f74 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-push/70.0.1…
-cf426a1ee8adf7b0f2ebc718465a3e472286dd5db738b0ca26eed426a4024941 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-storage/70.…
-26b3dab372b4e3c47d8b31476308dde6b8a2732dd12140139f70619ab5aaeb34 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-storage/70.…
-33ff3f8d3c6a62879a6029ba88694cfee4121e317046c467bf6a6e24eda3d87c | https://maven.mozilla.org/maven2/org/mozilla/components/concept-sync/70.0.1…
-7334320edc10ef1be78332ace0e44671ae1104e861051e0b27af7bd71193f1b3 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-sync/70.0.1…
-d8ab166f91c99d5abfad741531223b50098e0f881e435aac1981f944d787c75b | https://maven.mozilla.org/maven2/org/mozilla/components/concept-tabstray/70…
-beb73a5765645a014ce36da11c854a33ad675b591fe339b25b37efbd6005c766 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-tabstray/70…
-47bfc83389681525981943ddb45f5d9a5ae059240a0d46f857de3a08a1ef405c | https://maven.mozilla.org/maven2/org/mozilla/components/concept-toolbar/70.…
-f93a1d96e62228ceaf9625f7f76e5bf1433d3c3b0e505b51fe09bcaa2b4c049a | https://maven.mozilla.org/maven2/org/mozilla/components/concept-toolbar/70.…
-62a1aa1bcc076c9833cce320cdb8ca47e94d43ca9a1d42771f165f1c211f49f0 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-accounts-pu…
-647ee28f68bd0387ad462778a12446e7866674dd4220d4c43bd340db3dd5af5c | https://maven.mozilla.org/maven2/org/mozilla/components/feature-accounts-pu…
-764d90b9c4eb228b4fb2ea9ba192855d5defbe45b4437a7a50d0af706e631bc6 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-accounts/70…
-bc0e5e112fdcb79bebf66fd267ba2df3bdc7c14e1abe90d082b98be059078031 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-accounts/70…
-6a8bc671bc89a0ecc10601efb9dab1a0eef5c39aa9500e51010f84dcf4146436 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-addons/70.0…
-51c8e3a74d4f3f452dd096665fa5b72998db165fc10db2fd17a3c2b82d4c9f20 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-addons/70.0…
-66c0832cddc17be215807229e71703db6c55031d001063348ec8bf3e17d42612 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-app-links/7…
-2cfdf898aee12e6be76687de6de460831296649a9210ed5d0c427925b716fdd3 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-app-links/7…
-9f3442c8b2499bdb0e0d726f3dfaa10ce3379d299cfdec1aeeb9a4366e0c8abc | https://maven.mozilla.org/maven2/org/mozilla/components/feature-awesomebar/…
-27101039f2d985cf60f1845865fdfcf26e3f2f9327359702092f28949157cec4 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-awesomebar/…
-389c2adb2b0b6e105f21fc5de36dce5c5da5f865a15321eed2e32b482ffc34e8 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-contextmenu…
-63381408a026e69e4421e528655ce63d579b7588cade2ba681e597898ad1eddf | https://maven.mozilla.org/maven2/org/mozilla/components/feature-contextmenu…
-d8c5c6cbf67309b40b83d1e5544dcb0952bfba8e6d9075fd48b5756324bb8e6e | https://maven.mozilla.org/maven2/org/mozilla/components/feature-customtabs/…
-c5d2dad83c3673f81f983b19b00ec0260e631e31afe63d3e96bad0cf6744f9b9 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-customtabs/…
-562740b33d732b2ec19ec4b1f36649836d1566e7d5eb633abdfad188b1e7bf00 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-downloads/7…
-954c7b911c7bdfb48aca5efbf40de24ceae650cd1ae333d6486500c1d703f9db | https://maven.mozilla.org/maven2/org/mozilla/components/feature-downloads/7…
-f9654a3500900d4ff45d89debe9f49947cceb1e4942a96604b18e9d1639fe6fe | https://maven.mozilla.org/maven2/org/mozilla/components/feature-findinpage/…
-eb5b85a3aa395682a9c91450311af99bb42881ceceede11da6d7cec1c13ce88a | https://maven.mozilla.org/maven2/org/mozilla/components/feature-findinpage/…
-b8e7a98b1173bd7f191659f148036d0ca3e56764cfbd2b9bdf55c67916560f76 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-intent/70.0…
-fbda11856a6ba58ba7c64879c6f5e2f2e58c2b69132c278ee1f3a4b58f054be7 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-intent/70.0…
-f72b520f9fd36f627d4a0572c62407bebf7c8cbca888429ef89f9c4f317d7a5e | https://maven.mozilla.org/maven2/org/mozilla/components/feature-logins/70.0…
-9b3f3c768df83845ad51d7647f123e89ffb46949a615c540b5a4a5c7863556a2 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-logins/70.0…
-b271f5970147d569c83d67e895299fb3a5abff89f67476619d5374cd2a2932fa | https://maven.mozilla.org/maven2/org/mozilla/components/feature-media/70.0.…
-13a457334c994900ffdf179762b72a8b36d5f09793f2d719aae7162ff5b55860 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-media/70.0.…
-db9e59be933617302ee4c9dd6eb5bb9a234a89dadab9c7fd90045963629d58eb | https://maven.mozilla.org/maven2/org/mozilla/components/feature-privatemode…
-ef7fcea24f7120a14142d2f0ff8ba274541bbf378972d0e9b3b6090e7d2f3034 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-privatemode…
-1281509ac42b49825fa033af7a4f15bedaf4f2bcaa2261e089ef7b13f9445659 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-prompts/70.…
-0ad67e5594e67f2f8ea8e1e8305f4f16f9aeace1d5dc02db11462bae75986f52 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-prompts/70.…
-877cd2c04d55a25fd607d1ffe4a5ccc9c5f8049f02fc64ee149412e8cd0ab130 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-push/70.0.1…
-f4cf81fd413290909fa293247f76f78e41a99bb8cf57e62c9cc4673309861dd8 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-push/70.0.1…
-ed2f94970ede3d0f4c102b56d7c450cce205cfdedeecaf57c22316096da9fcce | https://maven.mozilla.org/maven2/org/mozilla/components/feature-pwa/70.0.11…
-5d1cb851c2e9088abb513585bfc298ca94894e7e811f36510e4d2fb20654432e | https://maven.mozilla.org/maven2/org/mozilla/components/feature-pwa/70.0.11…
-4f9728a5e81969dfb248197608cb2e10b81e994a9485dc3c92c3207fd5b0557c | https://maven.mozilla.org/maven2/org/mozilla/components/feature-qr/70.0.11/…
-254679dff9f56eeaddc7cfd788d6d018bd92d8b4887911fa39a4ef6ea881b57a | https://maven.mozilla.org/maven2/org/mozilla/components/feature-qr/70.0.11/…
-c28a9784eda688a1dacac9b8d1ebf839653d57e39d38d9638ad7ba5d235ca007 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-readerview/…
-a144bc55feb99beca5412d6dcab195eb758dac44665cfaf614fd571dae8d84f0 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-readerview/…
-0cc797dcf14dd2deb7c1578375f59b1ddf91a007a2d7a8d1edb46cc0a4148548 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-recentlyclo…
-be3b4ce823b16513c42042ee5223bf2af5f40c605f4f63da50a15e677c7f25b5 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-recentlyclo…
-2746d9ce02f8866e130c0fb08c55a19a4dbc82fc1e2b5941b7e7ee56f6891eb3 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-search/70.0…
-176e964e5436f26335e0a5887eb552559f71e687e94dc5d16dd2b7a079d2b6af | https://maven.mozilla.org/maven2/org/mozilla/components/feature-search/70.0…
-d1e280ae87d73e4c3117a6efaf2fb936651c9876936d82a31d8a980a3a77f7e6 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-session/70.…
-d899da8f0f94071a3e91aa6f172e8c045561ad8b175d09841f16fe867b590063 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-session/70.…
-fd26d96692208b08bde84d7136aeeae9d085819dec92ac672a976c5c7ddb5e5f | https://maven.mozilla.org/maven2/org/mozilla/components/feature-share/70.0.…
-4360f9a05d178668806eb3b6da01c8907d490ec1916d8293eaff4330f3ca1199 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-share/70.0.…
-0352aaf392859af323250f3c41f8e08151e8c44594cf5dbac7d736cb6e387424 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-sitepermiss…
-5e5cdc38562a1257dbacfcc63c54f08e0a6e0671f6d4eff86e7bb614bdcb042b | https://maven.mozilla.org/maven2/org/mozilla/components/feature-sitepermiss…
-1298f7da86ae9632d6155c680375e2b9282f2afdac9607644a13556e75adb3a8 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-syncedtabs/…
-c73b7c3ec4e3b354ccdc4901e6c0d4b166f7930a4bd7ad3024df90f1de9a4c6d | https://maven.mozilla.org/maven2/org/mozilla/components/feature-syncedtabs/…
-468732a45ea3b7ccaf0d85650bf5cca036e3eac59964bcc913c8227d5f580697 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-tab-collect…
-15c8edd3c072742a51739876dec27ef4ba7daaad654af8f00b3f2ce936086933 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-tab-collect…
-a15ae366297ba01bcce987364ca54b5f792315c71a6b0b4a2adfe48dc4fd6581 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-tabs/70.0.1…
-c8cce2154fcd67132835c5bc9c9129ff2ee580067dabd0200e00fbdd0f8c7090 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-tabs/70.0.1…
-08384f77fc05b5de5f0ef98f4135177eff8a9ad93359c2ea3b8ea7aedc03c71f | https://maven.mozilla.org/maven2/org/mozilla/components/feature-toolbar/70.…
-26510257dbbeea5fdd51a1fcf8e632c6eedabf3d44d2f2274aab419ecc80eaff | https://maven.mozilla.org/maven2/org/mozilla/components/feature-toolbar/70.…
-bf86363ecc6e9e086c85c51a83d32e98ac63e03f70ffa1de6de949702d77de15 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-top-sites/7…
-1402b9c62c302e05e72f7cd028d3af081051d603910975f6232e5285c0ac35e7 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-top-sites/7…
-09e67091620ab5dc8ce822d4730644fc6ed73f16155860755af69b4170a221c4 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webcompat-r…
-40f717bc038c40594d4971f7a10c3338c46a5c542aea9bcaf043a107b1bbd26e | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webcompat-r…
-13caae87a75f12312d6035e7ee41af8aeb82e659189bf3cf8c9f838baf45bd58 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webcompat/7…
-86d7b402289444bee92e961d10f681fce72abffe896957a39771626f3b8f1f87 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webcompat/7…
-53eef8fbdebd12ece726938585531a5001354c047608454f5470594fb4626d5c | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webnotifica…
-7718fc956b29a57d401ff3b1f1644c03f396155393e3319e8ba3de7bb84133d8 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webnotifica…
-ccea023400df3973faba0158f71de3bfb166c1fa6877cc65b5e0929c82422362 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-crash/70.0.11/l…
-ec96639d395c5c98775e782329afe57ea7924ec4a5d4eb4fb0da8fd69045ed6d | https://maven.mozilla.org/maven2/org/mozilla/components/lib-crash/70.0.11/l…
-cb20c3ce0527f2df1376959e12d4f0283b38b9d3619b9cbbeb0d86e1b9bbd240 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-dataprotect/70.…
-7037dc6038054b38e8ae1d7729c97becde6761f71d906d44354f4ae196326586 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-dataprotect/70.…
-8e3dbbb157901a5af8c80326cefd87e8c2e01de232117c8203a666d342dd3348 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-publicsuffixlis…
-0f38f50007d314e3a690ed39dd7b5c748279987c6110f14220aeee65a0eaf316 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-publicsuffixlis…
-a2b8dff3b67fe89e5c7c2601fb73a9d19247fcf5bb0dca80a8ca13ebf4457111 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-push-firebase/7…
-01dc4ff4f65cb721c5b40a79475923f72dfa613d6c2abbe8fa7075f8915c996f | https://maven.mozilla.org/maven2/org/mozilla/components/lib-push-firebase/7…
-eafc7345d5de199fb217fb95d6ed60695a17b0f4f0dbba7fe86bf98e386c65ea | https://maven.mozilla.org/maven2/org/mozilla/components/lib-state/70.0.11/l…
-a12a25370965d4cd032c55b46bfd1e758da37e51ae5ceeeab0e4ae673801fa83 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-state/70.0.11/l…
-64e27638105d46e6c64d5632ae68bab22416d77d5169b68c48499b93855951bf | https://maven.mozilla.org/maven2/org/mozilla/components/service-digitalasse…
-1c4b6068089a07091813cd73f0182cad8d684ba007e23589551e4d28bcba0fa4 | https://maven.mozilla.org/maven2/org/mozilla/components/service-digitalasse…
-87fb2783e865e13e7a0b2834c55209c75a8f45ccdd5eb977b27c8cacb1102779 | https://maven.mozilla.org/maven2/org/mozilla/components/service-firefox-acc…
-df2bcd668f99477c79b496bb1637443ae4bad85eb6792854c2a028e412e69417 | https://maven.mozilla.org/maven2/org/mozilla/components/service-firefox-acc…
-e5cc50047401eb5dbc962f9267f6abaf4a36af9b0af9786069165faa9d9109b7 | https://maven.mozilla.org/maven2/org/mozilla/components/service-glean/70.0.…
-ff1dc25b7d1598631ea48bc4f7e815a994c58817890d57afb3dd5c21781c7816 | https://maven.mozilla.org/maven2/org/mozilla/components/service-glean/70.0.…
-dd20ac0d1d2ece5364993e22b6d7dc6ca030aa7cec34afa397cbad6456e92dbb | https://maven.mozilla.org/maven2/org/mozilla/components/service-location/70…
-46a8cc59463ff433a8d696e976a8732a085b72df02139033ff2fae7a1f5f3a8b | https://maven.mozilla.org/maven2/org/mozilla/components/service-location/70…
-4877217ae325ecdc5e6df574f2242e383a2c927ebfaf9064a98334fb4c2212ab | https://maven.mozilla.org/maven2/org/mozilla/components/service-nimbus/70.0…
-53e595c31a939f0df7fd159db503d50c99c984cbf5f62a22c9eeaa949e6e8eae | https://maven.mozilla.org/maven2/org/mozilla/components/service-nimbus/70.0…
-3ad9028792a8903f426471a7bc38fc92b3333c5b8c43819d5a34bbf7d5fde477 | https://maven.mozilla.org/maven2/org/mozilla/components/service-sync-logins…
-100ec9d59020589603d0a11e116f146c7a936627e646a7b4b38a2f4a567070ac | https://maven.mozilla.org/maven2/org/mozilla/components/service-sync-logins…
-a9bdbee27097b2d7d0d333e55294ef6070e99e7a3eb128036b4df2219730610b | https://maven.mozilla.org/maven2/org/mozilla/components/support-base/70.0.1…
-121f5fc08fcd75690864b8135fa0b8cbf201c0a5b4adae78137602293d28cb05 | https://maven.mozilla.org/maven2/org/mozilla/components/support-base/70.0.1…
-64160d6f2310044493cf42b19bd661b385c6aeac983a28566b7933717d1dd7ce | https://maven.mozilla.org/maven2/org/mozilla/components/support-images/70.0…
-12614430a41c07547a610a1b48b2f3223b9f031d1d9afec37e0f55b92cf57b79 | https://maven.mozilla.org/maven2/org/mozilla/components/support-images/70.0…
-dd51f1cfb12da227c9aaec2732ef87cf84e814c0484387e008af11e0ee5e2b5b | https://maven.mozilla.org/maven2/org/mozilla/components/support-ktx/70.0.11…
-e86b8123359a41a644365ae60e35617dfba08478c9c7afb03423149f2cb75aad | https://maven.mozilla.org/maven2/org/mozilla/components/support-ktx/70.0.11…
-dece9307fd3323394fd4246ff3a4aa4b09795e0f8e7466de495aaefd9b75cb60 | https://maven.mozilla.org/maven2/org/mozilla/components/support-locale/70.0…
-4bf56e8e8d2ef11f08708568357fe1854b7b825e41ffc28f2780c2343a909cf4 | https://maven.mozilla.org/maven2/org/mozilla/components/support-locale/70.0…
-28b175b07a54478ac4f64f19fd14312b28617b10d117cf0610136ed2169fb5c7 | https://maven.mozilla.org/maven2/org/mozilla/components/support-migration/7…
-c6b27b957146be9a4090c7e8166ccab0349be8ac0f4433f0623abee5bef6ba60 | https://maven.mozilla.org/maven2/org/mozilla/components/support-migration/7…
-8639a7b017f074538e46405e947de42614f512bf154c0e10bb823033a399fec3 | https://maven.mozilla.org/maven2/org/mozilla/components/support-rusthttp/70…
-2eb65fe80b4b92541b5deb9ab6753f61aa6916d7c7fd0149946cf2456ed9e14d | https://maven.mozilla.org/maven2/org/mozilla/components/support-rusthttp/70…
-3398018e243a40a5aa1930ea2913319725e401e5c7800006da655b328a7b4e73 | https://maven.mozilla.org/maven2/org/mozilla/components/support-rustlog/70.…
-ac407d6ac86d36b0b5899b1875b63cc730c2ae078e5e40f2019af22f988d2dd9 | https://maven.mozilla.org/maven2/org/mozilla/components/support-rustlog/70.…
-2dd3d15ef7bcb96cacf3b841cb5ca0640553a258db895169072e81c950eb1da0 | https://maven.mozilla.org/maven2/org/mozilla/components/support-sync-teleme…
-4787c6b55e1c5a6db8a23ced228d9ff1153e746992a8661600e6ee97f9dceb6f | https://maven.mozilla.org/maven2/org/mozilla/components/support-sync-teleme…
-1275baef6d4d3d0a13c8e2f5a145e82ed22f234b93cd23ba20c3749a901e97ca | https://maven.mozilla.org/maven2/org/mozilla/components/support-test-libsta…
-07dcc8b02624e22cd9b324dcf27638d4afd2d1ef0b1a75f7ccf5db03ddf7557d | https://maven.mozilla.org/maven2/org/mozilla/components/support-test-libsta…
-ab202a392ce30bf1e0197f6c4b1aa5f163c56b1850daefb4f2de84a2007912ae | https://maven.mozilla.org/maven2/org/mozilla/components/support-test/70.0.1…
-644481fbae5fa4dfa391c9a0f2e9d76132526d1fab2ec885e8dec68a68fb4012 | https://maven.mozilla.org/maven2/org/mozilla/components/support-test/70.0.1…
-927d0c02791b1a93ac702c081f22de47141f21a5e8428923ad0b2bc526b745ec | https://maven.mozilla.org/maven2/org/mozilla/components/support-utils/70.0.…
-1fc2a0730e3b34d93d54fa08cff6aa8b647603d6d6ce7f9d007b1fadde4acd81 | https://maven.mozilla.org/maven2/org/mozilla/components/support-utils/70.0.…
-4ba4df984e557fba95217bbc8fa9a321f7b9b592df75ca4524d29fccb2cec44a | https://maven.mozilla.org/maven2/org/mozilla/components/support-webextensio…
-c33d409408cd788a05c8ba486d982f7f2e398f908906983660ba442912d2aa61 | https://maven.mozilla.org/maven2/org/mozilla/components/support-webextensio…
-ed93ca619eb86f3df39e6c60ed5f39ada4d6154297479ee8a6afdaa57f2f84d7 | https://maven.mozilla.org/maven2/org/mozilla/components/tooling-glean-gradl…
-0fac8613bff5ad0cd153d13f73fed9f07aac8b59131488ae5bf78e3d7417aea3 | https://maven.mozilla.org/maven2/org/mozilla/components/tooling-glean-gradl…
-5e24752108cf29270e74f42ed7479531ad77b8c014093d70bb102159f228174f | https://maven.mozilla.org/maven2/org/mozilla/components/ui-autocomplete/70.…
-cf5490b45f1101959253b3bd463ec5bc87a8b703d3b342b8b888de026cf136a7 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-autocomplete/70.…
-7ec7264a35b13382f84d701fab89daace99c6c8157c6fdc6d15da2361fb4f16b | https://maven.mozilla.org/maven2/org/mozilla/components/ui-colors/70.0.11/u…
-7d42e42f6a5887cac643e7758443c4f3ce8ee648732ddaa5ffc70391a54627de | https://maven.mozilla.org/maven2/org/mozilla/components/ui-colors/70.0.11/u…
-71307c399eb59749c6c25d2a0eb93c61513bc79b6c2c5a3e4dfb70e5077185a2 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-icons/70.0.11/ui…
-5d5197ff4ef2bc6c2c7463bf2ff832b0cbe8315bba733989204ff6db386d1b84 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-icons/70.0.11/ui…
-e80f4b16e4182eb9c3407dbce40ff4129ed181f9067ffb24bad3efbf6cdd7df9 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-tabcounter/70.0.…
-20981903dcf821ad2874387cd0623643b80c1e7f6fc16fd5d806e43b79cdabe8 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-tabcounter/70.0.…
-28efed984b2ee3a66ffcf4a60d648ed048fb4f73ba533c73b6567f03d91cd46f | https://maven.mozilla.org/maven2/org/mozilla/components/ui-widgets/70.0.11/…
-2985c5de93ad496a1b426399962bd5a3c86ff2d595d3540f5d2cc2d347da4681 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-widgets/70.0.11/…
-e2b9b284bad82ab05baf09bcf628b5ce9848efef5c78eca573b13f02d7339ddf | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview-beta/85.0.…
-89d6809df4e7dff26cb068199d0afd6112e388605dcb1fa12bd2e36dde947954 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview-beta/85.0.…
-fcdfe4029a5f82ac8a86c6452e3f5b57994bb1025ebb8143c12a436a7f07d359 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview/84.0.20210…
-fd621684f18690a812c81438e100d5d5b9d67fb912f243d9e7625ffd691ee672 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview/84.0.20210…
+3569436c9ba384c03364568536a305725964fe637838e53f5ed6a99a6da3bd3f | https://maven.mozilla.org/maven2/org/mozilla/components/browser-awesomebar/…
+088e86d66a14fb097a16d28e7787e547c9822a725daaa998fc26bf4b993236eb | https://maven.mozilla.org/maven2/org/mozilla/components/browser-awesomebar/…
+96ba207d21b7f3ea35ed0d73e5a9ddc75235b7f047977fd862b653352b1f2561 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-domains/70.…
+e61d3dc57f8a12d4cb718221b7665e3077c282ec998758d0ebdd107d8dfebad1 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-domains/70.…
+d6c4566d67144b0af2adcae6d304ba2748696a15777080c89a311394b5bf4fb4 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-engine-geck…
+4bd537c5bbc5d5731e14c960d1bdddb1d05e5d6bd1424dec17b35be177d78776 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-engine-geck…
+c050fd2a751a7a015b1e0eabca4ce5c6b088fce5ce4842e873e36bd86d274613 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-engine-geck…
+fe97c38776cc0475cdca13e85439fde4e20e46f27d7a05532cd268b86e1062b9 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-engine-geck…
+7cc0e42e1a40530559f76151f5ed71a44c0c703cb8dc06e2cefa59d15929655f | https://maven.mozilla.org/maven2/org/mozilla/components/browser-errorpages/…
+3b86203af9844889904ad91b2c607459369959692b573d140ea0662018b2bc46 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-errorpages/…
+e63610f0d67335707138cb3ab06f58a1c810a019beafc0fa82b5baa1a22d8abc | https://maven.mozilla.org/maven2/org/mozilla/components/browser-icons/70.0.…
+04c1fc7d6e154f5baab7aa726fb685527faee4df15251c3d4d8c0902842cbf84 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-icons/70.0.…
+f056dc57918e74739eea08664994efa68c36ee5aaf122fc83a7ca4db9ca8701b | https://maven.mozilla.org/maven2/org/mozilla/components/browser-menu/70.0.1…
+1a8d4faa0061f306176b1e7ea3ac2e5ece5b4f141ab11bf17d0011af0792da47 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-menu/70.0.1…
+a5c63f0f55f4ebe510d46dffef3e495567bd4ee71b5344200302c0905c55636d | https://maven.mozilla.org/maven2/org/mozilla/components/browser-menu2/70.0.…
+0a0f5f62fc4bc4abe2ddb5bb6aae45cdfbac1289d000b63881cd86cd0ff9dcf4 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-menu2/70.0.…
+e08d94684d14dd3798e59f265703cfcb6de6da3dcd6d9f81292da9f6c33f5243 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-search/70.0…
+7fe1843d31fcf099fe1d0bc89205ccbad355cab51956450414c0ce7560c092a8 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-search/70.0…
+b21673f5a221058a61c4d021f40d95e7438741c79a4a9e1ce31a52933ed7a835 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-session/70.…
+2d21d4fe3bd658e2566486e7f45f0e6a56621a6cae9a83a4061873d1c377f148 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-session/70.…
+47cc792a992acd8ee025ca71212a4c2bbdad415fbf4451d87efbad6b3602211c | https://maven.mozilla.org/maven2/org/mozilla/components/browser-state/70.0.…
+ac2b5b612aa29d36b0f545805be27eece49069758f0a0e9c0f4107fefab14b28 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-state/70.0.…
+8e40abe139c33c6a076e4a816b2d3d8013b6d88548b9a32a2f01cc7b86d6e236 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-storage-syn…
+b50aa486b7b5afb66c00eb3568c7c19cbce42af4fcda8e2d4967b21724f08691 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-storage-syn…
+a1177224245621239841c962f2357664b8fbeef260fe72c820108363b04a184d | https://maven.mozilla.org/maven2/org/mozilla/components/browser-tabstray/70…
+07013b17374e02e4f7db73e2740f0abb26ed9c515679165b77658cbd98253a8b | https://maven.mozilla.org/maven2/org/mozilla/components/browser-tabstray/70…
+ec32f69d6a2cda56392a125ef387273e7857c6c49aa7831f67151c22a045bbad | https://maven.mozilla.org/maven2/org/mozilla/components/browser-thumbnails/…
+7007ae0c86c70b3e7b4d11a92652f588ead7ce7f74dfd9eef3fb538a56219e37 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-thumbnails/…
+0a3cd3866625fd2c8eec3241eb0208b587092888f79d56c0a575fdb69e1ea201 | https://maven.mozilla.org/maven2/org/mozilla/components/browser-toolbar/70.…
+270ed2d42ae92a81771b54daf59f59b547acda8f2d04c8a0f8a7e4f0cedfdb6d | https://maven.mozilla.org/maven2/org/mozilla/components/browser-toolbar/70.…
+9881d2f4d6781a56c54c4e2147d3b85bb3c12d717ee436f2b7ae0f9098b4c315 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-awesomebar/…
+be0c7512f80c734f575fd7d54cfded868a359151721c0ebb03c9e7ca76f6a6fa | https://maven.mozilla.org/maven2/org/mozilla/components/concept-awesomebar/…
+e328732f1798f9c2760df201b7aeb104683e1b68a93e9ca91f02ea36d8c0c4ee | https://maven.mozilla.org/maven2/org/mozilla/components/concept-base/70.0.1…
+b31d1304b4aa53a2b7611a61454109ef7a62828b2bf7bfb4146996408f2db2eb | https://maven.mozilla.org/maven2/org/mozilla/components/concept-base/70.0.1…
+092eb815939df2144215fc6307d6d92e88e36b933cef8d859efd250971b3a3fe | https://maven.mozilla.org/maven2/org/mozilla/components/concept-engine/70.0…
+a733076301354e827e4dfcc5129aa1eae0562c5010a50dd8effdccb6fe2e16ee | https://maven.mozilla.org/maven2/org/mozilla/components/concept-engine/70.0…
+e8cdca7ccc7bf0e49700e353d706083169f704ee045606249c5198e0307dd3a0 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-fetch/70.0.…
+b060b145fdedfe4ebc18905599bdd8cf6e1321f08eb3d9e0b2dca047ad44b744 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-fetch/70.0.…
+bba506554ab268585d61cff368090d0588ec9a5c9f352166a406794202591584 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-menu/70.0.1…
+61fae2f26f4b765121e77de94a30c150eab832f39a31b49c0a524309958e4cd4 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-menu/70.0.1…
+7c2c2ec4950c09e097ef71cc441d37f4c538ffef5e7d05fd4bdde136748545b3 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-push/70.0.1…
+cddd5b29e19868da6bf017c0d664e15cd7a14bb43060ea641cd5330546a9e12c | https://maven.mozilla.org/maven2/org/mozilla/components/concept-push/70.0.1…
+cf426a1ee8adf7b0f2ebc718465a3e472286dd5db738b0ca26eed426a4024941 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-storage/70.…
+6925ba1a3122834a620027772576d480ad1feb95aaf1110d597c2878e211ad55 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-storage/70.…
+33ff3f8d3c6a62879a6029ba88694cfee4121e317046c467bf6a6e24eda3d87c | https://maven.mozilla.org/maven2/org/mozilla/components/concept-sync/70.0.1…
+9e562b3bff5af9c22a4b5b0066cc7b4f0b3faa9bdb6bec6b04da40c352df69da | https://maven.mozilla.org/maven2/org/mozilla/components/concept-sync/70.0.1…
+d8ab166f91c99d5abfad741531223b50098e0f881e435aac1981f944d787c75b | https://maven.mozilla.org/maven2/org/mozilla/components/concept-tabstray/70…
+6febab38fbb1c42219960abe32c9a4e64612949edad7b314f0f23289c09edd24 | https://maven.mozilla.org/maven2/org/mozilla/components/concept-tabstray/70…
+47bfc83389681525981943ddb45f5d9a5ae059240a0d46f857de3a08a1ef405c | https://maven.mozilla.org/maven2/org/mozilla/components/concept-toolbar/70.…
+a0d91785ac5e4b682f04900cd0e8060787066fbe21862422e0e4bd710307939a | https://maven.mozilla.org/maven2/org/mozilla/components/concept-toolbar/70.…
+62a1aa1bcc076c9833cce320cdb8ca47e94d43ca9a1d42771f165f1c211f49f0 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-accounts-pu…
+7ffe523b6a23ce777ca89477007d08406635df99b9e4d960a93f8f7ee5b711b5 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-accounts-pu…
+4f995831210e3c2e2148c19020e4c8b62a87dce997e1066b94303d181b284a60 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-accounts/70…
+d03fab2af6fb3297b001f643e4944c9c90cd1766413e862f1c79c2eded808cc4 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-accounts/70…
+f3389e09f43a4f3c0d954951d3a0655648f4e8dd8656034a9d0bb830815e4adb | https://maven.mozilla.org/maven2/org/mozilla/components/feature-addons/70.0…
+343fe41a48948da15f6d6af06acd18855c09f55f4b95b28a1bda42b6163776e2 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-addons/70.0…
+66c0832cddc17be215807229e71703db6c55031d001063348ec8bf3e17d42612 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-app-links/7…
+3f4c7d238b5763ad16c2b0b74dfd09cd8be25e9d1518c04b96d0227ac8240060 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-app-links/7…
+9f3442c8b2499bdb0e0d726f3dfaa10ce3379d299cfdec1aeeb9a4366e0c8abc | https://maven.mozilla.org/maven2/org/mozilla/components/feature-awesomebar/…
+8889c8802471fb36c991952f4f43ba1fd0901b4acd5711e21a040064c406a7da | https://maven.mozilla.org/maven2/org/mozilla/components/feature-awesomebar/…
+389c2adb2b0b6e105f21fc5de36dce5c5da5f865a15321eed2e32b482ffc34e8 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-contextmenu…
+e11ad4ebd11e4f8c066bd1ffb90d7c6ea3ec462d90e6b3a2f62f88b9460ab559 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-contextmenu…
+d8c5c6cbf67309b40b83d1e5544dcb0952bfba8e6d9075fd48b5756324bb8e6e | https://maven.mozilla.org/maven2/org/mozilla/components/feature-customtabs/…
+561edcee1493c52127db6f98513235d441b7f9e518a8e4d0ab8cc049e6628072 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-customtabs/…
+562740b33d732b2ec19ec4b1f36649836d1566e7d5eb633abdfad188b1e7bf00 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-downloads/7…
+88b0ef1712cb38e205e16f481ddd1a6ef26df7cc687c3f693e2d6bd765b41017 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-downloads/7…
+12b0efb8a872e85cb5e25e6884385856d16cfc4d93f51a7214319234d6c3da79 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-findinpage/…
+1a978aba5bdb4f5f273234143a5a75f42c8c08c0e990a7950f450ae307994bd2 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-findinpage/…
+b8e7a98b1173bd7f191659f148036d0ca3e56764cfbd2b9bdf55c67916560f76 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-intent/70.0…
+11b5cc5263ffc07e1fe20423fa7a03d9264e8e59285bf7ec5bbe98d71610c30b | https://maven.mozilla.org/maven2/org/mozilla/components/feature-intent/70.0…
+f72b520f9fd36f627d4a0572c62407bebf7c8cbca888429ef89f9c4f317d7a5e | https://maven.mozilla.org/maven2/org/mozilla/components/feature-logins/70.0…
+2cc35cba15ad63fe8c31079d4c0e29ebdff4e2aef71a61daa596b28dcc098ab1 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-logins/70.0…
+b271f5970147d569c83d67e895299fb3a5abff89f67476619d5374cd2a2932fa | https://maven.mozilla.org/maven2/org/mozilla/components/feature-media/70.0.…
+35c6514def1b2e724b9ba4c7020c725d16163379466c6c22fc0636e517207f43 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-media/70.0.…
+db9e59be933617302ee4c9dd6eb5bb9a234a89dadab9c7fd90045963629d58eb | https://maven.mozilla.org/maven2/org/mozilla/components/feature-privatemode…
+bc09e4bbf948aee6145b8a069bda9418cde4b825ecaa5974c8358bf516044e4d | https://maven.mozilla.org/maven2/org/mozilla/components/feature-privatemode…
+2d2ab360c3306c26e62e3b097995c15e54743571d1affd4e3a5120dd22105969 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-prompts/70.…
+7d417136127f214e03edfa73f0c5d1d43c2342b2fdfb5aaf67d37217587a326d | https://maven.mozilla.org/maven2/org/mozilla/components/feature-prompts/70.…
+877cd2c04d55a25fd607d1ffe4a5ccc9c5f8049f02fc64ee149412e8cd0ab130 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-push/70.0.1…
+dd8883b8557c7fee976ebb1dac6827a4fcc89a953fc94d293eb51314b2f3fe00 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-push/70.0.1…
+039591d6a482c2c8ac20c1750d6e7ae9b80de8bd11623ecbcd5d6a2598898c13 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-pwa/70.0.16…
+8d6df81f2fcea104e35d56cc563d6d4239a5272a83c9891f1bac7352d066b4ad | https://maven.mozilla.org/maven2/org/mozilla/components/feature-pwa/70.0.16…
+4f9728a5e81969dfb248197608cb2e10b81e994a9485dc3c92c3207fd5b0557c | https://maven.mozilla.org/maven2/org/mozilla/components/feature-qr/70.0.16/…
+81cc6598f156480fbbf80f6e3498bf75c98c5f66355ee8073297baf2749d53e9 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-qr/70.0.16/…
+bcb947a4f1ede632643c6c718790a8f124a0fa7eb00004a9a501f404661f08d3 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-readerview/…
+c42945c3405cf94de42129d72fb5c6e4391e62a9d4f75dd5b110610a1f5d06fa | https://maven.mozilla.org/maven2/org/mozilla/components/feature-readerview/…
+0cc797dcf14dd2deb7c1578375f59b1ddf91a007a2d7a8d1edb46cc0a4148548 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-recentlyclo…
+5ff62424324e12767c80ac5d8e2b7ce5f5dd74f173ab38badb2cbaf837047110 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-recentlyclo…
+2746d9ce02f8866e130c0fb08c55a19a4dbc82fc1e2b5941b7e7ee56f6891eb3 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-search/70.0…
+c33f1bf585012556a7e7c2f7178bf777fc4cd47fc64aeee5326e7f8c7a48b029 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-search/70.0…
+d1e280ae87d73e4c3117a6efaf2fb936651c9876936d82a31d8a980a3a77f7e6 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-session/70.…
+ece04efc0b19e0a1a4f68d1dd686afe2262a8e9f9808a3eca88a4503986d071c | https://maven.mozilla.org/maven2/org/mozilla/components/feature-session/70.…
+fd26d96692208b08bde84d7136aeeae9d085819dec92ac672a976c5c7ddb5e5f | https://maven.mozilla.org/maven2/org/mozilla/components/feature-share/70.0.…
+4c7961072238bfc47c482000b7db920c59f78ee87072f2da13e22b3dde94770b | https://maven.mozilla.org/maven2/org/mozilla/components/feature-share/70.0.…
+1d8f7b2a0cb4903418bec6a11e5cb721a4a5b7637582a553b6663054895e7f56 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-sitepermiss…
+9c373a267b850624d60430a239d72b0443cdd5d5ff3ab3e78aabf9cda1b21277 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-sitepermiss…
+1298f7da86ae9632d6155c680375e2b9282f2afdac9607644a13556e75adb3a8 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-syncedtabs/…
+918a361cf7ad4c66021868264498fe567ff47c1d5ab4bf9893d3346515f5b8c2 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-syncedtabs/…
+468732a45ea3b7ccaf0d85650bf5cca036e3eac59964bcc913c8227d5f580697 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-tab-collect…
+966ec3775e9a56ba07ed1761e2d0f503981c7f5b032baedde21293ec36d352d1 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-tab-collect…
+a15ae366297ba01bcce987364ca54b5f792315c71a6b0b4a2adfe48dc4fd6581 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-tabs/70.0.1…
+5a8e8a31e08bdeb94b8160173df4f60b08ffe7ea35d3bbd30d43452b93278faf | https://maven.mozilla.org/maven2/org/mozilla/components/feature-tabs/70.0.1…
+08384f77fc05b5de5f0ef98f4135177eff8a9ad93359c2ea3b8ea7aedc03c71f | https://maven.mozilla.org/maven2/org/mozilla/components/feature-toolbar/70.…
+b0b50731dbfe823a42bca9f2657c2590449c0812fb9a5b94f3d834ce8f570034 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-toolbar/70.…
+bf86363ecc6e9e086c85c51a83d32e98ac63e03f70ffa1de6de949702d77de15 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-top-sites/7…
+c36442ff629a2a563d63d72274eea1f68f015f615400bac99090f183aad34fe4 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-top-sites/7…
+09e67091620ab5dc8ce822d4730644fc6ed73f16155860755af69b4170a221c4 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webcompat-r…
+5be85beb064f6fa68348d8ce7c5d33028938a07c2946d2cf99937ea5021d2e6c | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webcompat-r…
+13caae87a75f12312d6035e7ee41af8aeb82e659189bf3cf8c9f838baf45bd58 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webcompat/7…
+29f1a159c47f6ecbdcdbc358837462077eee1a194a9d9882bcef7081fd1cb04e | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webcompat/7…
+53eef8fbdebd12ece726938585531a5001354c047608454f5470594fb4626d5c | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webnotifica…
+84acf775c1232c7e346d0a87a70a8f91ae23cad010f0ae4edfcbb1cca17819d4 | https://maven.mozilla.org/maven2/org/mozilla/components/feature-webnotifica…
+0b04e69c3c3a06d3d4b6ae206d9b532391187ca31b1830395a996da8e9a910e9 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-crash/70.0.16/l…
+628d624e28a3fe0d182d7eb21e7ea4cb9a7b608374084c9cbf2e71567412158f | https://maven.mozilla.org/maven2/org/mozilla/components/lib-crash/70.0.16/l…
+cb20c3ce0527f2df1376959e12d4f0283b38b9d3619b9cbbeb0d86e1b9bbd240 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-dataprotect/70.…
+da580d47a25b101ab5532670c88deab7b025b69c96abbd212205031e4d88882e | https://maven.mozilla.org/maven2/org/mozilla/components/lib-dataprotect/70.…
+8e3dbbb157901a5af8c80326cefd87e8c2e01de232117c8203a666d342dd3348 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-publicsuffixlis…
+368b9027a307609e93b89a487ec809251e25c976fc582a5df6d69f0a05e3187c | https://maven.mozilla.org/maven2/org/mozilla/components/lib-publicsuffixlis…
+a2b8dff3b67fe89e5c7c2601fb73a9d19247fcf5bb0dca80a8ca13ebf4457111 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-push-firebase/7…
+0151bb19b3f6f930b55a0042363458b0722a15c2ad24c35dbf758c83f147fd73 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-push-firebase/7…
+eafc7345d5de199fb217fb95d6ed60695a17b0f4f0dbba7fe86bf98e386c65ea | https://maven.mozilla.org/maven2/org/mozilla/components/lib-state/70.0.16/l…
+a32320b7b83c3d9ed0617c10cba12e39ce51329c48c9691e97b347f7fbd5de97 | https://maven.mozilla.org/maven2/org/mozilla/components/lib-state/70.0.16/l…
+64e27638105d46e6c64d5632ae68bab22416d77d5169b68c48499b93855951bf | https://maven.mozilla.org/maven2/org/mozilla/components/service-digitalasse…
+cd8b70921c7514a86fa50c5719251107c38aa8e28308b126b0c32f359592079f | https://maven.mozilla.org/maven2/org/mozilla/components/service-digitalasse…
+87fb2783e865e13e7a0b2834c55209c75a8f45ccdd5eb977b27c8cacb1102779 | https://maven.mozilla.org/maven2/org/mozilla/components/service-firefox-acc…
+afcc2e958ea3196523c4c2020bba596e045c1542f4c348f6b525f2d3550c0a84 | https://maven.mozilla.org/maven2/org/mozilla/components/service-firefox-acc…
+e5cc50047401eb5dbc962f9267f6abaf4a36af9b0af9786069165faa9d9109b7 | https://maven.mozilla.org/maven2/org/mozilla/components/service-glean/70.0.…
+66320e07f46ca28bc9c401dfd1660fac347ce5ac0be499563bd28efcbbcc0913 | https://maven.mozilla.org/maven2/org/mozilla/components/service-glean/70.0.…
+5232643a5ae0ed55188029f7437eafde920a964c8a6fdc43b3e9db613ade166c | https://maven.mozilla.org/maven2/org/mozilla/components/service-location/70…
+b9c5f05eef84619b9ccb658eb4d233ed9e1dd095b7a688c95c5e192a372cced0 | https://maven.mozilla.org/maven2/org/mozilla/components/service-location/70…
+4fdc8ab553fd08e00e8b3b201546862d4fcaf4f4fe421a73c8aafeebabf502ca | https://maven.mozilla.org/maven2/org/mozilla/components/service-nimbus/70.0…
+8c4e8fa6762c4f60a06a4d59c87706f2e15a2be9ce6e9531c616774884917c31 | https://maven.mozilla.org/maven2/org/mozilla/components/service-nimbus/70.0…
+3ad9028792a8903f426471a7bc38fc92b3333c5b8c43819d5a34bbf7d5fde477 | https://maven.mozilla.org/maven2/org/mozilla/components/service-sync-logins…
+06a85f263e4da8ef241d63767e0b462b0ac074a60bf5353edd0a5d3c16a6093f | https://maven.mozilla.org/maven2/org/mozilla/components/service-sync-logins…
+76bc59b79f469e77ac70d70a691fbb4ede0b8a91f0091987a5253cebac13dc1d | https://maven.mozilla.org/maven2/org/mozilla/components/support-base/70.0.1…
+006196c568add97e52f19d07ba70d12bfd50707c5874c161813dccc96eeda818 | https://maven.mozilla.org/maven2/org/mozilla/components/support-base/70.0.1…
+64160d6f2310044493cf42b19bd661b385c6aeac983a28566b7933717d1dd7ce | https://maven.mozilla.org/maven2/org/mozilla/components/support-images/70.0…
+47a9377875b3cbd2c03cc03b663793e1dfce58c32338a3b68a0341a6c79d6ed6 | https://maven.mozilla.org/maven2/org/mozilla/components/support-images/70.0…
+dd51f1cfb12da227c9aaec2732ef87cf84e814c0484387e008af11e0ee5e2b5b | https://maven.mozilla.org/maven2/org/mozilla/components/support-ktx/70.0.16…
+fb4458a526e7c4eeeb054c359633a8670386f86a1f1da9fe6446bab8020a0a1e | https://maven.mozilla.org/maven2/org/mozilla/components/support-ktx/70.0.16…
+dece9307fd3323394fd4246ff3a4aa4b09795e0f8e7466de495aaefd9b75cb60 | https://maven.mozilla.org/maven2/org/mozilla/components/support-locale/70.0…
+81216d4aea29cfe1306e823a6eb1deb5ba6144864b775def19c448ef870f44c5 | https://maven.mozilla.org/maven2/org/mozilla/components/support-locale/70.0…
+09eedb0d092ccf5ee0b213150fa835a860f7b00650c8ad3fbc7b428bb4668214 | https://maven.mozilla.org/maven2/org/mozilla/components/support-migration/7…
+8514102067454c607d38d0ead39c20138dbddcc988c9056544bb8a6db5133081 | https://maven.mozilla.org/maven2/org/mozilla/components/support-migration/7…
+8639a7b017f074538e46405e947de42614f512bf154c0e10bb823033a399fec3 | https://maven.mozilla.org/maven2/org/mozilla/components/support-rusthttp/70…
+7bfd499adaf154f642875820e6d61e17ad7295acdba68d4fce140315d3de0ca7 | https://maven.mozilla.org/maven2/org/mozilla/components/support-rusthttp/70…
+3398018e243a40a5aa1930ea2913319725e401e5c7800006da655b328a7b4e73 | https://maven.mozilla.org/maven2/org/mozilla/components/support-rustlog/70.…
+4ca3b44777fdfc1eb27c564e695861e1a6eed0595ebac6f741692f6d1f45fcb1 | https://maven.mozilla.org/maven2/org/mozilla/components/support-rustlog/70.…
+2dd3d15ef7bcb96cacf3b841cb5ca0640553a258db895169072e81c950eb1da0 | https://maven.mozilla.org/maven2/org/mozilla/components/support-sync-teleme…
+0c8125e240fc360b24c2e8cb32dbd29f7360ff78357ea7190f4cb1170e3cb15e | https://maven.mozilla.org/maven2/org/mozilla/components/support-sync-teleme…
+1275baef6d4d3d0a13c8e2f5a145e82ed22f234b93cd23ba20c3749a901e97ca | https://maven.mozilla.org/maven2/org/mozilla/components/support-test-libsta…
+bf9736b8e094fd818e198ccb5193c042752a978204bc97e2e1a98ef81312ca80 | https://maven.mozilla.org/maven2/org/mozilla/components/support-test-libsta…
+ab202a392ce30bf1e0197f6c4b1aa5f163c56b1850daefb4f2de84a2007912ae | https://maven.mozilla.org/maven2/org/mozilla/components/support-test/70.0.1…
+1037c97fc8f606caaba27d1b23968d796f05f511349a8f546e237c5b273cc442 | https://maven.mozilla.org/maven2/org/mozilla/components/support-test/70.0.1…
+927d0c02791b1a93ac702c081f22de47141f21a5e8428923ad0b2bc526b745ec | https://maven.mozilla.org/maven2/org/mozilla/components/support-utils/70.0.…
+4853aab1c91fa9f33d088c274ea55d818f284e0f0db08dec617c0936614b614d | https://maven.mozilla.org/maven2/org/mozilla/components/support-utils/70.0.…
+4ba4df984e557fba95217bbc8fa9a321f7b9b592df75ca4524d29fccb2cec44a | https://maven.mozilla.org/maven2/org/mozilla/components/support-webextensio…
+4b642dfa7ff3f53b3b8c30d3a35c61a1a696a783e50e0f087a7a4ec9852b732d | https://maven.mozilla.org/maven2/org/mozilla/components/support-webextensio…
+bd5fb70078e6d096d7c78813fe26a5947c86e1a89f62213df334f1325bf92c23 | https://maven.mozilla.org/maven2/org/mozilla/components/tooling-glean-gradl…
+bfdbfbabafdd02b5f400a6596290fb89911ac0e40d7fbeac4551ac936c288534 | https://maven.mozilla.org/maven2/org/mozilla/components/tooling-glean-gradl…
+5e24752108cf29270e74f42ed7479531ad77b8c014093d70bb102159f228174f | https://maven.mozilla.org/maven2/org/mozilla/components/ui-autocomplete/70.…
+a0ab9e47681e07014b8a1254b2a689ea38a9da03cf36e071e3a2f4bf51eb9a6b | https://maven.mozilla.org/maven2/org/mozilla/components/ui-autocomplete/70.…
+7ec7264a35b13382f84d701fab89daace99c6c8157c6fdc6d15da2361fb4f16b | https://maven.mozilla.org/maven2/org/mozilla/components/ui-colors/70.0.16/u…
+94e50f5fcda291a2bf3a53c7abd39016581b782cfaac627ea3c55e279d11ff6c | https://maven.mozilla.org/maven2/org/mozilla/components/ui-colors/70.0.16/u…
+71307c399eb59749c6c25d2a0eb93c61513bc79b6c2c5a3e4dfb70e5077185a2 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-icons/70.0.16/ui…
+efa1a430d2a2878a5a7a8b41f29a8a5e741763f9c8b6b0cc721ea395a4695632 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-icons/70.0.16/ui…
+da8b5acdb1c0a7d213d9269b6f76a515f1ba2907b255b5a30dc2065718d7f113 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-tabcounter/70.0.…
+989c25ffa36201e37ed4e8eb3bee71fd6170df07a4b75aa98549f4349d09c68a | https://maven.mozilla.org/maven2/org/mozilla/components/ui-tabcounter/70.0.…
+28efed984b2ee3a66ffcf4a60d648ed048fb4f73ba533c73b6567f03d91cd46f | https://maven.mozilla.org/maven2/org/mozilla/components/ui-widgets/70.0.16/…
+41b2e3855cabed37b56c1e81fe1d8767f9e370ab56a731c373fbcb61a4cb3377 | https://maven.mozilla.org/maven2/org/mozilla/components/ui-widgets/70.0.16/…
+00d82f17fa8f96206281b150429d2d2efb361b7e16df06f9f93ba3d73c6077a0 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview-beta/85.0.…
+12043feefa0e0af50d0459835121a2647f63bd8a6766ebda170821dcac99d0e6 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview-beta/85.0.…
+7ac371cfa60025020c391b59890db48c9db52fb67c1b2fd1eda70a2d20b72cb6 | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview/85.0.20210…
+e514f95723d5f97c1e92e425923d13add24fdb85c2f761b20ae42d23e0457c0d | https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview/85.0.20210…
97a9d151ad636acc68eeda046866f0ac24e6f7bf2a81a6b938a3386cc73be529 | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-forUnitTests/3…
817736c79269dc217946522fdb8f6ed57547bdd8fbf187687b53ffbe5d813bc3 | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-forUnitTests/3…
ccd3a75eb0e0f8ce5882d9d3a3154e3d3c40ce9c44f6c506ad4e28df84bab751 | https://maven.mozilla.org/maven2/org/mozilla/telemetry/glean-gradle-plugin/…
diff --git a/projects/geckoview/config b/projects/geckoview/config
index 3a47a88..5ebe6c4 100644
--- a/projects/geckoview/config
+++ b/projects/geckoview/config
@@ -8,7 +8,7 @@ git_submodule: 1
gpg_keyring: torbutton.gpg
var:
- geckoview_version: 85.0b9
+ geckoview_version: 85.0
torbrowser_branch: 10.0
copyright_year: '[% exec("git show -s --format=%ci").remove("-.*") %]'
deps:
diff --git a/projects/go/config b/projects/go/config
index 1651b90..f22c283 100644
--- a/projects/go/config
+++ b/projects/go/config
@@ -1,5 +1,5 @@
# vim: filetype=yaml sw=2
-version: 1.14.13
+version: 1.14.14
filename: '[% project %]-[% c("version") %]-[% c("var/build_id") %].tar.gz'
var:
@@ -118,7 +118,7 @@ input_files:
enable: '[% ! c("var/linux") %]'
- URL: 'https://golang.org/dl/go[% c("version") %].src.tar.gz'
name: go
- sha256sum: ba1d244c6b5c0ed04aa0d7856d06aceb89ed31b895de6ff783efb1cc8ab6b177
+ sha256sum: 6204bf32f58fae0853f47f1bd0c51d9e0ac11f1ffb406bed07a0a8b016c8a76f
- URL: 'https://golang.org/dl/go[% c("var/go14_version") %].src.tar.gz'
name: go14
sha256sum: 9947fc705b0b841b5938c48b22dc33e9647ec0752bae66e50278df4f23f64959
diff --git a/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt b/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
index 26b4bce..d9cdc08 100644
--- a/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
+++ b/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
@@ -1,3 +1,16 @@
+Tor Browser 10.0.9 -- January 26 2021
+ * Android
+ * Update Fenix to 85.1.0
+ * Update NoScript to 11.1.9
+ * Bug 40137: Remove EOY 2020 Campaign [fenix]
+ * Bug 40165: Update zstd to 1.4.8 [tor-browser-build]
+ * Build System
+ * Android
+ * Bug 40190: Update toolchain for Fenix 85 [tor-browser-build]
+ * Bug 40191: Update Fenix and dependencies to 85.0.0-beta1 [tor-browser-build]
+ * Bug 40193: Build all mobile Rust targets in a single step [tor-browser-build]
+ * Bug 40208: Mitigate uniffi non-deterministic code generation [tor-browser-build]
+
Tor Browser 10.0.8 -- January 12 2021
* Android
* Update Fenix to 84.1.4
diff --git a/projects/tor-browser/allowed_addons.json b/projects/tor-browser/allowed_addons.json
index d071263..e9e5d9d 100644
--- a/projects/tor-browser/allowed_addons.json
+++ b/projects/tor-browser/allowed_addons.json
@@ -17,7 +17,7 @@
"picture_url": "https://addons.cdn.mozilla.net/user-media/userpics/13/13299/13299734.png?mo…"
}
],
- "average_daily_users": 516924,
+ "average_daily_users": 566381,
"categories": {
"android": [
"experimental",
@@ -31,7 +31,7 @@
"contributions_url": "https://opencollective.com/darkreader?utm_content=product-page-contribute&u…",
"created": "2017-09-19T07:03:00Z",
"current_version": {
- "id": 5140581,
+ "id": 5168569,
"compatibility": {
"firefox": {
"min": "54.0",
@@ -42,19 +42,19 @@
"max": "*"
}
},
- "edit_url": "https://addons.mozilla.org/en-US/developers/addon/darkreader/versions/51405…",
+ "edit_url": "https://addons.mozilla.org/en-US/developers/addon/darkreader/versions/51685…",
"files": [
{
- "id": 3684946,
- "created": "2020-11-26T18:46:09Z",
- "hash": "sha256:5f2a2449524f5ab05c2e8568d2678c6b25795e87ce77ebc9448e13e8184e3c5f",
+ "id": 3712931,
+ "created": "2021-01-21T17:44:16Z",
+ "hash": "sha256:3388ad0c1e91e9fcb5103df1286bb5df0caf192aaf2a85a34acb046ca96b78a1",
"is_restart_required": false,
"is_webextension": true,
"is_mozilla_signed_extension": false,
"platform": "all",
- "size": 511783,
+ "size": 518564,
"status": "public",
- "url": "https://addons.mozilla.org/android/downloads/file/3684946/dark_reader-4.9.2…",
+ "url": "https://addons.mozilla.org/android/downloads/file/3712931/dark_reader-4.9.2…",
"permissions": [
"storage",
"tabs",
@@ -97,10 +97,10 @@
"url": "http://www.opensource.org/licenses/mit-license.php"
},
"release_notes": {
- "en-US": "- Dynamic mode bug fixes.\n- Users' fixes for websites."
+ "en-US": "- Dynamic mode improvements.\n- Thunderbird support.\n- Users' fixes for websites.\n- Users' translation improvements."
},
"reviewed": null,
- "version": "4.9.26"
+ "version": "4.9.27"
},
"default_locale": "en-US",
"description": {
@@ -123,15 +123,15 @@
"pt-BR": "Esta extensão ajuda seus olhos a relaxarem ao criar e aplicar o modo escuro aos sites que você visita. O Dark Reader inverte as cores brilhantes, tornando-as de alto contraste e deixando-as fáceis de serem lidas à noite.\n\nVocê pode ajustar o brilho, o contraste, os tons de sépia, o modo escuro, as configurações de fonte e a lista negra.\n\nO Dark Reader não exibe anúncios e não compartilha os dados de seus usuários. O código-fonte é totalmente aberto (open-source) <a href=\"https://outgoing.prod.mozaws.net/v1/2a8020ee7fe5fea69148ed86ae4a26da4fc907d…" rel=\"nofollow\">https://github.com/darkreader/darkreader</a>\n\nAntes de instalar esta extensão, desative extensões semelhantes. Divirta-se!",
"pt-PT": "Esta extensão de cuidados com os olhos ativa o modo noturno criando temas escuros para sites. O Dark Reader inverte as cores brilhantes, tornando-as de alto contraste e fáceis de ler à noite.\n\nVocê pode ajustar o brilho, o contraste, o filtro sépia, o modo escuro, as configurações de fonte e a lista de ignorados.\n\nO Dark Reader não exibe anúncios e não envia dados do usuário em nenhum lugar. à totalmente open-source <a href=\"https://outgoing.prod.mozaws.net/v1/2a8020ee7fe5fea69148ed86ae4a26da4fc907d…" rel=\"nofollow\">https://github.com/darkreader/darkreader</a>\n\nAntes de instalar desativar extensões semelhantes. Visualização agradável!",
"ro": "AceastÄ extensie, care se îngrijeÈte de ochii tÄi, permite activarea modului de noapte creând pe loc o temÄ Ã®ntunecatÄ pentru siteuri. Dark Reader inverseazÄ culorile luminoase mÄrindu-le contrastul Èi fÄcându-le uÈor de citit noptea.\n\nPoÈi ajusta luminozitatea, contrastul, filtrul sepia, modul întunecat, setÄrile fontului si lista siteurilor de ignorat.\n\nDark Reader nu afiÈeazÄ reclame Èi nu trimite datele utilizatorului nicÄieri. Este în întregime open-source <a href=\"https://outgoing.prod.mozaws.net/v1/2a8020ee7fe5fea69148ed86ae4a26da4fc907d…" rel=\"nofollow\">https://github.com/darkreader/darkreader</a>\n\nÃnainte de instalare dezactiveazÄ extensile similare. Vizionare plÄcutÄ!",
- "ru": "ÐÑП ÑаÑÑОÑеМОе пеÑÐµÐ²ÐŸÐŽÐžÑ Ð±ÑаÑÐ·ÐµÑ Ð² МПÑМПй ÑежОЌ. ÐаÑк Ð ÐžÐŽÐµÑ Ð·Ð°ÐŒÐµÐœÑÐµÑ ÑвеÑлÑй ÑПМ ÑÑЌМÑÐŒ, ÑÑП ÑÐœÐžÐ¶Ð°ÐµÑ ÑÑÑалПÑÑÑ Ð³Ð»Ð°Ð· пÑО ЎПлгПй ÑабПÑе за кПЌпÑÑÑеÑПЌ лОбП пÑО пÑПÑЌПÑÑе веб-ÑÑÑÐ°ÐœÐžÑ ÐœÐŸÑÑÑ.\n\nÐЌееÑÑÑ Ð²ÐŸÐ·ÐŒÐŸÐ¶ÐœÐŸÑÑÑ ÐœÐ°ÑÑÑаОваÑÑ ÑÑкПÑÑÑ, кПМÑÑаÑÑМПÑÑÑ, ÑÑОÑÑ, ÑежОЌ ОМвеÑÑОО, ÑежОЌ ÐœÐ°Ð»ÐŸÐ¶ÐµÐœÐžÑ Ð¶ÑлÑПгП ÑОлÑÑÑа (ÑепОÑ).\n\nDark Reader Ме вÑÑÑÐ°ÐžÐ²Ð°ÐµÑ ÑÐµÐºÐ»Ð°ÐŒÑ Ðž Ме ÑПбОÑÐ°ÐµÑ Ð¿ÐŸÐ»ÑзПваÑелÑÑкОе ЎаММÑе. ÐеÑÑ ÐžÑÑ
ПЎМÑй кПЎ ПÑкÑÑÑ <a href=\"https://outgoing.prod.mozaws.net/v1/2a8020ee7fe5fea69148ed86ae4a26da4fc907d…" rel=\"nofollow\">https://github.com/darkreader/darkreader</a>\n\nÐеÑеЎ ÑÑÑа
МПвкПй ПÑклÑÑОÑе пПЎПбМÑе ÑаÑÑОÑеМОÑ. ÐÑОÑÑМПгП пÑПÑЌПÑÑа!",
+ "ru": "ÐÑП ÑаÑÑОÑеМОе пеÑÐµÐ²ÐŸÐŽÐžÑ Ð±ÑаÑÐ·ÐµÑ Ð² МПÑМПй ÑежОЌ. ÐаÑк Ð ÐžÐŽÐµÑ Ð·Ð°ÐŒÐµÐœÑÐµÑ ÑвеÑлÑй ÑПМ ÑÑЌМÑÐŒ, ÑÑП ÑÐœÐžÐ¶Ð°ÐµÑ ÑÑÑалПÑÑÑ Ð³Ð»Ð°Ð· пÑО ЎПлгПй ÑабПÑе за кПЌпÑÑÑеÑПЌ лОбП пÑО пÑПÑЌПÑÑе веб-ÑÑÑÐ°ÐœÐžÑ ÐœÐŸÑÑÑ.\n\nÐЌееÑÑÑ Ð²ÐŸÐ·ÐŒÐŸÐ¶ÐœÐŸÑÑÑ ÐœÐ°ÑÑÑаОваÑÑ ÑÑкПÑÑÑ, кПМÑÑаÑÑМПÑÑÑ, ÑÑОÑÑ, ÑежОЌ ОМвеÑÑОО, ÑежОЌ ÐœÐ°Ð»ÐŸÐ¶ÐµÐœÐžÑ Ð¶ÑлÑПгП ÑОлÑÑÑа (ÑепОÑ).\n\nÐаÑк Ð ÐžÐŽÐµÑ ÐœÐµ вÑÑÑÐ°ÐžÐ²Ð°ÐµÑ ÑÐµÐºÐ»Ð°ÐŒÑ Ðž Ме ÑПбОÑÐ°ÐµÑ Ð¿ÐŸÐ»ÑзПваÑелÑÑкОе ЎаММÑе. ÐеÑÑ ÐžÑÑ
ПЎМÑй кПЎ ПÑкÑÑÑ <a href=\"https://outgoing.prod.mozaws.net/v1/2a8020ee7fe5fea69148ed86ae4a26da4fc907d…" rel=\"nofollow\">https://github.com/darkreader/darkreader</a>\n\nÐеÑеЎ
ÑÑÑаМПвкПй ПÑклÑÑОÑе пПЎПбМÑе ÑаÑÑОÑеМОÑ. ÐÑОÑÑМПгП пÑПÑЌПÑÑа!",
"sk": "Toto rozÅ¡Ãrenie je Å¡etrné k oÄiam, vytvára noÄnÜ reÅŸim pre stránky za pochodu. Dark Reader invertuje jasné farby a robà ich kontrastnejÅ¡Ãmi, ÄÃm sa zlepÅ¡uje ich ÄitateÄŸnosÅ¥ v noci.\n\nUpravovaÅ¥ mÃŽÅŸete jas, kontrast, sépiovÜ filter, tmavÜ reÅŸim, nastavenia pÃsma a zoznam ignorovanÜch stránok.\n\nDark Reader je bez reklám a nikam neodosiela ÅŸiadne dáta uÅŸÃvateÄŸov. Má plne otvorenÜ zdrojovÜ kód <a href=\"https://outgoing.prod.mozaws.net/v1/2a8020ee7fe5fea69148ed86ae4a26da4fc907d…" rel=\"nofollow\">https://github.com/darkreader/darkreader</a>\n\nPred inÅ¡taláciou zakáşte podobné rozÅ¡Ãrenia. UÅŸite si sledovanie!",
- "sv-SE": "Detta ögonbeskyddande tillÀgg aktiverar nattlÀge och skapar mörka teman för webbplatser. Dark Reader ersÀtter ljusa fÀrger med mörka fÀrger som har hög kontrast och gör lÀsning pÃ¥ kvÀllen enkel.\n\nDu kan justera ljusstyrka, kontrast, sepia filter, mörkt lÀge, teckensnitt och ignoreringslista.\n\nDark Reader visar inte reklam och skickar inte ut anvÀndares data. Den har helt öppen kÀllkod <a href=\"https://outgoing.prod.mozaws.net/v1/2a8020ee7fe5fea69148ed86ae4a26da4fc907d…" rel=\"nofollow\">https://github.com/darkreader/darkreader</a>\n\nAvaktivera liknande tillÀgg innan du installerar. Njut av upplevelsen!",
+ "sv-SE": "Detta ögonskonande tillÀgg aktiverar ett nattlÀge som skapar mörka teman pÃ¥ webbplatser. Dark Reader inverterar ljusa fÀrger för att skapa hög kontrast och göra det enkelt att lÀsa pÃ¥ natten.\n\nDu kan justera ljusstyrkan, kontrasten, sepiafiltret, mörkt lÀge, typsnitt och ignoreringslistan.\n\nDark Reader visar inte reklam och skickar inte anvÀndardata nÃ¥gonstans. Den har helt öppen kÀllkod <a href=\"https://outgoing.prod.mozaws.net/v1/2a8020ee7fe5fea69148ed86ae4a26da4fc907d…" rel=\"nofollow\">https://github.com/darkreader/darkreader</a>\n\nInaktivera liknande tillÀgg innan du installerar. Trevlig lÀsning!",
"th": "àžàžµà¹à¹àžà¹àžàžªà¹àž§àžà¹àžªàž£àžŽàž¡àžàžµà¹àžàžàž¢àžàž¹à¹àž¥àžªàž²àž¢àžàž²àžàžàžàžàžžàžàžà¹àž§àž¢àžàž²àž£à¹àžàžŽàžà¹àž«àž¡àžàžàž¥àž²àžàžàž·àž à¹àž¥àž°àžªàž£à¹àž²àžàžàžµàž¡àž¡àž·àžà¹àž«à¹àžàž±àžàžàžžàžà¹à¹àž§à¹àž Dark Reader àžàž°àžªàž¥àž±àžàžªàžµàžªàž§à¹àž²àžà¹à¹àž«à¹à¹àžà¹àžàžªàžµàžàž³àž«àž£àž·àžàžªàžµàž¡àž·àž à¹àž¥àž°àžàž³à¹àž«à¹àžà¹àž²àž¢àžà¹àžàžàž²àž£àžà¹àž²àžàžàžàžàžàž¥àž²àžàžàž·àž\n\nàžàžžàžàžªàž²àž¡àž²àž£àžàžàž£àž±àžà¹àžà¹àžàžàž§àž²àž¡àžªàž§à¹àž²àž, àžàžàžàžàž£àž²àžªàžà¹, àžªàžµàžàžµà¹àžàžµàž¢, à¹àž«àž¡àžàž¡àž·àž, àžàž±à¹àžàžà¹àž²àžàžàžàžà¹ à¹àž¥àž°àžàž³àž£àž²àž¢àžàž²àž£àž¢àžà¹àž§à¹àžà¹àžà¹\n\nDark Reader à¹àž¡à¹à¹àžªàžàžà¹àžàž©àžàž² à¹àž¥àž°à¹àž¡à¹àžªà¹àžàžà¹àžàž¡àž¹àž¥àžàžàžàžàž¹à¹à¹àžà¹à¹àžà¹àžàžàž²àž àžàž±àž§àžªà¹àž§àžà¹àžªàž£àžŽàž¡à¹àžà¹àžà¹àžà¹àžàžàžàžàž£à¹àžªà¹àžàž¢àžªàž¡àžàž¹à
ž£àžà¹àžàž¹à¹àžà¹àžàžµà¹ <a href=\"https://outgoing.prod.mozaws.net/v1/2a8020ee7fe5fea69148ed86ae4a26da4fc907d…" rel=\"nofollow\">https://github.com/darkreader/darkreader</a>\n\nàžà¹àžàžàžàžµà¹àžàž°àžàžŽàžàžàž±à¹àž àžàžŽàžàžªà¹àž§àžà¹àžªàž£àžŽàž¡àžàžµà¹àžàž³àž«àžà¹àž²àžàžµà¹à¹àž«àž¡àž·àžàžà¹àžàž±àžàžà¹àžàžàžàž° àžàžà¹àž«à¹àžªàžàžžàžàžàž±àžàžàžµàž¡àžªàžµàž¡àž·àžàžàž°!",
"tr": "Bu göz bakım eklentisi web siteleri için anında koyu temalar oluÅturarak gece modunu etkinleÅtirir. Dark Reader parlak renkleri ters çevirerek yÃŒksek kontrast oluÅturur ve geceleri okumayı kolaylaÅtırır.\n\nParlaklıÄı, kontrastı, sepya filtresini, koyu modu, yazı tipi ayarlarını ve yoksayma listesini ayarlayabilirsiniz.\n\nDark Reader, reklam göstermez ve kullanıcının verilerini hiçbir yere göndermez. Tamamen açık kaynak kodludur. <a href=\"https://outgoing.prod.mozaws.net/v1/2a8020ee7fe5fea69148ed86ae4a26da4fc907d…" rel=\"nofollow\">https://github.com/darkreader/darkreader</a>\n\nYÃŒklemeden önce benzer uzantıları devre dıÅı bırakın. Gezintinin tadını çıkarın!",
"uk": "Ње ÑПзÑОÑÐµÐœÐœÑ ÐŽÐ»Ñ ÐŽÐŸÐ³Ð»ÑÐŽÑ Ð·Ð° ПÑОЌа ЎПзвПлÑÑ ÑÑвПÑÑваÑО ÑÐµÐŒÐœÑ Ð²ÐžÐ³Ð»ÑЎО ÐŽÐ»Ñ ÐŒÐµÑежевОÑ
ÑайÑÑв. Dark Reader ÑМвеÑÑÑÑ ÑÑкÑÐ°Ð²Ñ Ð±Ð°ÑвО, ÑПблÑÑО ÑÑ
кПМÑÑаÑÑМОЌО Ñ ÑакОЌО ÑП легкП ÑОÑаÑÑÑÑÑ Ð²ÐœÐŸÑÑ.\n\nÐО ЌПжеÑе МалаÑÑÑваÑО ÑÑкÑавÑÑÑÑ, кПМÑÑаÑÑ, ÑепÑÑ, ÑеЌМОй вОглÑÐŽ, МалаÑÑÑÐ²Ð°ÐœÐœÑ Ð²ÐžÐ³Ð»ÑÐŽÑ ÑекÑÑÑ Ñа ÑпОÑПк МеÑ
ÑÑваММÑ.\n\nDark Reader Ме ÐŒÑÑÑОÑÑ ÑÐµÐºÐ»Ð°ÐŒÑ Ñ ÐœÐµ МаЎÑÐžÐ»Ð°Ñ ÐŽÐ°ÐœÑ ÐºÐŸÑОÑÑÑваÑа МÑкÑЎО. Ње ÑПзÑОÑÐµÐœÐœÑ Ð· вÑЎкÑОÑОЌ кПЎПЌ <a href=\"https://outgoing.prod.mozaws.net/v1/2a8020ee7fe5fea69148ed86ae4a26da4fc907d…" rel=\"nofollow\">https://github.com/darkreader/darkreader</a>\n\nÐеÑеЎ вÑÑаМПвлеМ
МÑÐŒ вÑÐŽÑЌкМÑÑÑ Ð¿ÐŸÐŽÑÐ±ÐœÑ ÑПзÑОÑеММÑ. ÐаÑПлПЎжÑйÑеÑÑ Ð¿ÐµÑеглÑЎПЌ!",
"vi": "Tiá»n Ãch chÄm sóc mắt nà y cho phép chế Äá» ban Äêm tạo chá»§ Äá» tá»i cho các trang web Äang hoạt Äá»ng. Dark Reader Äảo ngược mà u sắc tươi sáng là m cho chúng có Äá» tương phản cao và dá»
Äá»c và o ban Äêm.\n\nBạn có thá» Äiá»u chá»nh Äá» sáng, Äá» tương phản, bá» lá»c mà u nâu Äá», chế Äá» tá»i, cà i Äặt phÃŽng chữ và danh sách bá» qua.\n\nDark Reader khÃŽng hiá»n thá» quảng cáo và khÃŽng gá»i dữ liá»u cá»§a ngưá»i dùng á» bất cứ Äâu. Nó hoà n toà n là mã nguá»n má» <a href=\"https://outgoing.prod.mozaws.net/v1/2a8020ee7fe5fea69148ed86ae4a26da4fc907d…" rel=\"nofollow\">https://github.com/darkreader/darkreader</a>\n\nTrưá»c khi bạn cà i Äặt vÃŽ hiá»u hóa các phần má» rá»ng tương tá»±. ThÃch xem!",
"zh-CN": "è¿æ¯äžäžªæ€çŒæ©å±çšåºïŒéè¿å®æ¶çæé»æäž»é¢ïŒäžºæ¯äžäžªçœç«å¯çšå€éŽæš¡åŒã Dark Reader å蜬æäº®çé¢è²ïŒäœ¿çœé¡µå
容å
·æé«å¯¹æ¯åºŠå¹¶æäºåšå€éŽé
读ã\n\næšå¯ä»¥è°æŽäº®åºŠã对æ¯åºŠïŒåºçšæ£è€è²æ»€éãé»ææš¡åŒïŒè®Ÿçœ®åäœå応ç¥ççœç«å衚ã\n\nDark Reader æ 广åïŒä¹äžäŒåä»»äœå°æ¹åéçšæ·çæ°æ®ãå®å®å
šåŒæº <a href=\"https://outgoing.prod.mozaws.net/v1/2a8020ee7fe5fea69148ed86ae4a26da4fc907d…" rel=\"nofollow\">https://github.com/darkreader/darkreader</a>\n\nå®è£
å请çŠçšç±»äŒŒçæ©å±ã岿µªæå¿«ïŒ",
- "zh-TW": "鿝äžåè·çŒæŽå±çšåºïŒéé寊æçæé»è²äž»é¡ïŒçºæ¯äžåç¶²ç«åçšå€éæš¡åŒã Dark Readeråèœæäº®çé¡è²ïŒäœ¿å
¶ç¶²é å
§å®¹å
·æé«å°æ¯åºŠäžŠäžææŒåšå€éé±è®ã\n\næšå¯ä»¥èª¿æŽäº®åºŠïŒå°æ¯åºŠïŒæçšæ£è€è²æ¿Ÿé¡ïŒé»ææš¡åŒïŒèšçœ®åé«å応ç¥çç¶²ç«å衚ã\n\nDark Reader æ²æå»£åïŒä¹äžæåšä»»äœå°æ¹çŒéçšæ¶çæžæãå®å®å
šéæºæŒ <a href=\"https://outgoing.prod.mozaws.net/v1/2a8020ee7fe5fea69148ed86ae4a26da4fc907d…" rel=\"nofollow\">https://github.com/darkreader/darkreader</a>\n\nå®è£ååæ¢äœ¿çšé¡äŒŒçæŽå±ïŒä»¥é¿å
è¡çªãç芜æå¿«ïŒ"
+ "zh-TW": "鿝äžåè·çŒæŽå
å¥ä»¶ïŒééå³æç¢æ·±æ·±è²äž»é¡ïŒçºæ¯äžåç¶²ç«åçšå€éæš¡åŒã Dark Reader åèœæäº®çé¡è²ïŒäœ¿å
¶ç¶²é å
§å®¹å
·æé«å°æ¯åºŠäžŠäžææŒåšå€éé±è®ã\n\næšå¯ä»¥èª¿æŽäº®åºŠïŒå°æ¯åºŠïŒå¥çšæ£è€è²æ¿Ÿé¡ïŒæ·±è²æš¡åŒïŒèšå®åé«å応ç¥çç¶²ç«å衚ã\n\nDark Reader æ²æå»£åïŒä¹äžæåšä»»äœå°æ¹çŒéçšæ¶çè³æãå®å®å
šéæºæŒ <a href=\"https://outgoing.prod.mozaws.net/v1/2a8020ee7fe5fea69148ed86ae4a26da4fc907d…" rel=\"nofollow\">https://github.com/darkreader/darkreader</a>\n\nå®è£åè«å
åæ¢äœ¿çšé¡äŒŒçæŽå
å¥ä»¶ïŒä»¥é¿å
è¡çªãç芜æå¿«ïŒ"
},
"developer_comments": null,
"edit_url": "https://addons.mozilla.org/en-US/developers/addon/darkreader/edit",
@@ -164,7 +164,7 @@
},
"is_disabled": false,
"is_experimental": false,
- "last_updated": "2020-11-27T12:36:26Z",
+ "last_updated": "2021-01-22T09:16:27Z",
"name": {
"ar": "Dark Reader",
"bn": "Dark Reader",
@@ -237,10 +237,10 @@
"category": "recommended"
},
"ratings": {
- "average": 4.5623,
- "bayesian_average": 4.56060764577945,
- "count": 3219,
- "text_count": 1066
+ "average": 4.5614,
+ "bayesian_average": 4.5597207572687815,
+ "count": 3258,
+ "text_count": 1077
},
"ratings_url": "https://addons.mozilla.org/en-US/android/addon/darkreader/reviews/",
"requires_payment": false,
@@ -269,7 +269,7 @@
"ro": "Dark themeTemÄ Ã®ntunecatÄ pentru orice site. Ai grijÄ de ochii tÄi, foloseÈte Dark Reader pentru cititul noaptea Èi de zi cu zi. for every website. Care your eyes, use Dark Reader for night and daily browsing.",
"ru": "ТÑÐŒÐœÐ°Ñ ÑеЌа ÐŽÐ»Ñ ÐºÐ°Ð¶ÐŽÐŸÐ³ÐŸ ÑайÑа. ÐеÑегОÑе зÑеМОе, ОÑпПлÑзÑйÑе ÐаÑк Ð ÐžÐŽÐµÑ ÐŽÐ»Ñ ÐœÐŸÑМПгП ОлО ежеЎМевМПгП пÑПÑЌПÑÑа веб-ÑÑÑаМОÑ.",
"sk": "TmavÜ reÅŸim pre kaÅŸdú stránku. Å etrite svoje oÄi a pouÅŸÃvajte tmavÜ motÃv po celÜ deÅ.",
- "sv-SE": "Mörkt lÀge för varje webbplats. Ta hand om dina ögon, anvÀnd ett mörkt tema för nattlig och daglig surfning.",
+ "sv-SE": "Mörkt lÀge på alla webbplatser. Ta hand om dina ögon och anvÀnd ett mörkt tema för att surfa på natten och dagen.",
"th": "à¹àžàž¥àžµà¹àž¢àžà¹àžà¹àžà¹àž«àž¡àžàž¡àž·àžà¹àž«à¹àžàž±àžàžàžžàžà¹à¹àž§à¹àžà¹àžàž·à¹àžàžàžàžà¹àžàžàžªàž²àž¢àžàž²àžàžàžàžàžžàž à¹àžà¹àžàžµàž¡àžªàžµàž¡àž·àžàžªàž³àž«àž£àž±àžàžàžàžàžàž¥àž²àžàžàž·àžà¹àž¥àž°àžàž²àž£àžà¹àžàžà¹àž§à¹àžà¹àžàžàžµàž§àžŽàžàžàž£àž°àžàž³àž§àž±àž",
"tr": "Her web sitesi için koyu mod. Gözlerinize iyi bakın, gece ve gÌnlÌk gezinti için koyu renk tema kullanın.",
"uk": "ТеЌМОй вОглÑÐŽ ÐŽÐ»Ñ ÐºÐŸÐ¶ÐœÐŸÐ³ÐŸ ЌеÑежевПгП ÑайÑÑ. ÐÑклÑйÑеÑÑ Ð¿ÑП ÑÐ²ÐŸÑ ÐŸÑÑ, вОкПÑОÑÑПвÑйÑе ÑеЌМОй вОЎ ÐŽÐ»Ñ ÐœÑÑМПгП Ñа ÑПЎеММПгП пеÑеглÑÐŽÑ.",
@@ -291,6 +291,7 @@
"nl": "darkreaderapp(a)gmail.com",
"pl": "darkreaderapp(a)gmail.com",
"pt-BR": "darkreaderapp(a)gmail.com",
+ "ru": "darkreaderapp(a)gmail.com",
"sk": "darkreaderapp(a)gmail.com",
"sv-SE": "darkreaderapp(a)gmail.com",
"th": "darkreaderapp(a)gmail.com",
@@ -314,6 +315,7 @@
"nl": "https://github.com/darkreader/darkreader",
"pl": "https://github.com/darkreader/darkreader",
"pt-BR": "https://github.com/darkreader/darkreader",
+ "ru": "https://github.com/darkreader/darkreader",
"sk": "https://github.com/darkreader/darkreader",
"sv-SE": "https://github.com/darkreader/darkreader",
"th": "https://github.com/darkreader/darkreader",
@@ -334,7 +336,7 @@
],
"type": "extension",
"url": "https://addons.mozilla.org/en-US/android/addon/darkreader/",
- "weekly_downloads": 27573
+ "weekly_downloads": 25282
},
"notes": null
},
@@ -350,7 +352,7 @@
"picture_url": "https://addons.cdn.mozilla.net/user-media/userpics/5/5474/5474073.png?modif…"
}
],
- "average_daily_users": 683207,
+ "average_daily_users": 739840,
"categories": {
"firefox": [
"privacy-security"
@@ -480,10 +482,10 @@
"category": "recommended"
},
"ratings": {
- "average": 4.6158,
- "bayesian_average": 4.613253496961336,
- "count": 2168,
- "text_count": 553
+ "average": 4.6133,
+ "bayesian_average": 4.610763496975475,
+ "count": 2185,
+ "text_count": 554
},
"ratings_url": "https://addons.mozilla.org/en-US/android/addon/https-everywhere/reviews/",
"requires_payment": false,
@@ -516,7 +518,7 @@
],
"type": "extension",
"url": "https://www.eff.org/https-everywhere",
- "weekly_downloads": 15188
+ "weekly_downloads": 17897
},
"notes": null
},
@@ -532,7 +534,7 @@
"picture_url": "https://addons.cdn.mozilla.net/user-media/userpics/6/6937/6937656.png?modif…"
}
],
- "average_daily_users": 187325,
+ "average_daily_users": 202121,
"categories": {
"android": [
"security-privacy"
@@ -745,10 +747,10 @@
"category": "recommended"
},
"ratings": {
- "average": 4.7995,
- "bayesian_average": 4.794683432683569,
- "count": 1197,
- "text_count": 305
+ "average": 4.8002,
+ "bayesian_average": 4.7954104566041265,
+ "count": 1211,
+ "text_count": 306
},
"ratings_url": "https://addons.mozilla.org/en-US/android/addon/decentraleyes/reviews/",
"requires_payment": false,
@@ -843,7 +845,7 @@
],
"type": "extension",
"url": "https://addons.mozilla.org/en-US/android/addon/decentraleyes/",
- "weekly_downloads": 5275
+ "weekly_downloads": 6066
},
"notes": null
},
@@ -859,7 +861,7 @@
"picture_url": "https://addons.cdn.mozilla.net/user-media/userpics/5/5474/5474073.png?modif…"
}
],
- "average_daily_users": 882283,
+ "average_daily_users": 976267,
"categories": {
"android": [
"security-privacy"
@@ -1403,10 +1405,10 @@
"category": "recommended"
},
"ratings": {
- "average": 4.7863,
- "bayesian_average": 4.782984873298175,
- "count": 1736,
- "text_count": 411
+ "average": 4.7834,
+ "bayesian_average": 4.780097856300104,
+ "count": 1750,
+ "text_count": 413
},
"ratings_url": "https://addons.mozilla.org/en-US/android/addon/privacy-badger17/reviews/",
"requires_payment": false,
@@ -1425,7 +1427,7 @@
"tags": [],
"type": "extension",
"url": "https://addons.mozilla.org/en-US/android/addon/privacy-badger17/",
- "weekly_downloads": 32792
+ "weekly_downloads": 38261
},
"notes": null
},
@@ -1441,7 +1443,7 @@
"picture_url": null
}
],
- "average_daily_users": 4503091,
+ "average_daily_users": 4971335,
"categories": {
"android": [
"security-privacy"
@@ -1625,7 +1627,7 @@
},
"is_disabled": false,
"is_experimental": false,
- "last_updated": "2021-01-06T17:15:36Z",
+ "last_updated": "2021-01-22T14:50:11Z",
"name": {
"ar": "uBlock Origin",
"bg": "uBlock Origin",
@@ -1770,10 +1772,10 @@
"category": "recommended"
},
"ratings": {
- "average": 4.7329,
- "bayesian_average": 4.732467013014317,
- "count": 13133,
- "text_count": 4392
+ "average": 4.7336,
+ "bayesian_average": 4.733167443332824,
+ "count": 13208,
+ "text_count": 4402
},
"ratings_url": "https://addons.mozilla.org/en-US/android/addon/ublock-origin/reviews/",
"requires_payment": false,
@@ -1827,7 +1829,7 @@
"tags": [],
"type": "extension",
"url": "https://addons.mozilla.org/en-US/android/addon/ublock-origin/",
- "weekly_downloads": 109312
+ "weekly_downloads": 118274
},
"notes": null
},
@@ -1843,7 +1845,7 @@
"picture_url": null
}
],
- "average_daily_users": 51889,
+ "average_daily_users": 55478,
"categories": {
"android": [
"photos-media"
@@ -1956,10 +1958,10 @@
"category": "recommended"
},
"ratings": {
- "average": 4.5077,
- "bayesian_average": 4.5022028097909566,
- "count": 975,
- "text_count": 370
+ "average": 4.5087,
+ "bayesian_average": 4.503205611529312,
+ "count": 979,
+ "text_count": 369
},
"ratings_url": "https://addons.mozilla.org/en-US/android/addon/video-background-play-fix/re…",
"requires_payment": false,
@@ -1984,7 +1986,7 @@
],
"type": "extension",
"url": "https://addons.mozilla.org/en-US/android/addon/video-background-play-fix/",
- "weekly_downloads": 31
+ "weekly_downloads": 59
},
"notes": null
},
@@ -2000,7 +2002,7 @@
"picture_url": null
}
],
- "average_daily_users": 90271,
+ "average_daily_users": 95688,
"categories": {
"android": [
"experimental",
@@ -2139,10 +2141,10 @@
"category": "recommended"
},
"ratings": {
- "average": 4.4897,
- "bayesian_average": 4.47151234660571,
+ "average": 4.4829,
+ "bayesian_average": 4.46463504208983,
"count": 292,
- "text_count": 83
+ "text_count": 82
},
"ratings_url": "https://addons.mozilla.org/en-US/android/addon/privacy-possum/reviews/",
"requires_payment": false,
@@ -2167,7 +2169,7 @@
],
"type": "extension",
"url": "https://addons.mozilla.org/en-US/android/addon/privacy-possum/",
- "weekly_downloads": 1449
+ "weekly_downloads": 1591
},
"notes": null
},
@@ -2183,7 +2185,7 @@
"picture_url": "https://addons.cdn.mozilla.net/user-media/userpics/12/12929/12929064.png?mo…"
}
],
- "average_daily_users": 148086,
+ "average_daily_users": 161350,
"categories": {
"android": [
"photos-media",
@@ -2405,10 +2407,10 @@
"category": "recommended"
},
"ratings": {
- "average": 4.6612,
- "bayesian_average": 4.654121841617529,
- "count": 788,
- "text_count": 166
+ "average": 4.6609,
+ "bayesian_average": 4.653940298348592,
+ "count": 805,
+ "text_count": 168
},
"ratings_url": "https://addons.mozilla.org/en-US/android/addon/search_by_image/reviews/",
"requires_payment": false,
@@ -2443,7 +2445,7 @@
],
"type": "extension",
"url": "https://addons.mozilla.org/en-US/android/addon/search_by_image/",
- "weekly_downloads": 8522
+ "weekly_downloads": 8564
},
"notes": null
},
@@ -2466,7 +2468,7 @@
"picture_url": null
}
],
- "average_daily_users": 30558,
+ "average_daily_users": 32912,
"categories": {
"android": [
"other"
@@ -2748,10 +2750,10 @@
"category": "recommended"
},
"ratings": {
- "average": 4.4532,
- "bayesian_average": 4.447571627762425,
- "count": 940,
- "text_count": 253
+ "average": 4.4419,
+ "bayesian_average": 4.436303974414219,
+ "count": 946,
+ "text_count": 254
},
"ratings_url": "https://addons.mozilla.org/en-US/android/addon/google-search-fixer/reviews/",
"requires_payment": false,
@@ -2770,7 +2772,7 @@
"tags": [],
"type": "extension",
"url": "https://addons.mozilla.org/en-US/android/addon/google-search-fixer/",
- "weekly_downloads": 52
+ "weekly_downloads": 53
},
"notes": null
},
@@ -2786,7 +2788,7 @@
"picture_url": "https://addons.cdn.mozilla.net/user-media/userpics/0/0/143.png?modified=150…"
}
],
- "average_daily_users": 382136,
+ "average_daily_users": 410215,
"categories": {
"android": [
"performance",
@@ -2800,7 +2802,7 @@
"contributions_url": "https://www.paypal.me/NoScript?utm_content=product-page-contribute&utm_medi…",
"created": "2005-05-13T10:51:32Z",
"current_version": {
- "id": 5153585,
+ "id": 5166141,
"compatibility": {
"firefox": {
"min": "59.0",
@@ -2811,19 +2813,19 @@
"max": "*"
}
},
- "edit_url": "https://addons.mozilla.org/en-US/developers/addon/noscript/versions/5153585",
+ "edit_url": "https://addons.mozilla.org/en-US/developers/addon/noscript/versions/5166141",
"files": [
{
- "id": 3697950,
- "created": "2020-12-21T15:13:19Z",
- "hash": "sha256:9d65fc25020aa1f02d9a80112227cd4c1e4588db6d87372d87a8f15132084c43",
+ "id": 3710503,
+ "created": "2021-01-17T22:30:16Z",
+ "hash": "sha256:5f68a63637e286433089aeb3b6a0aa930317dd988184876b5d6dcff2ca07bb34",
"is_restart_required": false,
"is_webextension": true,
"is_mozilla_signed_extension": false,
"platform": "all",
- "size": 603151,
+ "size": 600156,
"status": "public",
- "url": "https://addons.mozilla.org/android/downloads/file/3697950/noscript_security…",
+ "url": "https://addons.mozilla.org/android/downloads/file/3710503/noscript_security…",
"permissions": [
"contextMenus",
"storage",
@@ -2870,10 +2872,10 @@
"url": "http://www.gnu.org/licenses/gpl-2.0.html"
},
"release_notes": {
- "en-US": "v 11.1.7\n============================================================\nx Optimize serviceWorker tracking for heavy tabs usage\n (thanks vadimm and barbaz for investigation)\nx Force placeholder visibility on Youtube embeddings\nx Fixed popup opening being slowed down if options UI is\n opened (thanks Sirus for report)\nx Explicit failure for wrong settings importation formats\nx Updated TLDs"
+ "en-US": "v 11.1.9\n============================================================\nx Return null when webgl is not allowed (thanks Matthew \n Finkel for patch)\nx [XSS] Fixed memoization bug resulting in performance \n degradation on some payloads\nx [XSS] Include call stack in debugging log output\nx [XSS] Skip naps when InjectionChecker runs in its own \n worker\nx Shortcut for easier XSS filter testing\nx More lenient filter to add a new entry to per-site \n permissions\nx [L10n] Updated de\nx Replace script-embedded bitmap with css-embedded SVG as \n the placeholder logo\nx Updated TLDs\nx Remove source map reference causing console noise\nx Fix per-site permissions UI glitches when base domain is \n added to existing subdomain (thanks barbaz for reporting)"
},
"reviewed": null,
- "version": "11.1.7"
+ "version": "11.1.9"
},
"default_locale": "en-US",
"description": {
@@ -2923,7 +2925,7 @@
},
"is_disabled": false,
"is_experimental": false,
- "last_updated": "2021-01-07T00:05:46Z",
+ "last_updated": "2021-01-19T08:35:13Z",
"name": {
"de": "NoScript",
"el": "NoScript",
@@ -3011,9 +3013,9 @@
"category": "recommended"
},
"ratings": {
- "average": 4.5419,
- "bayesian_average": 4.5403190050005655,
- "count": 3427,
+ "average": 4.5416,
+ "bayesian_average": 4.540012526012674,
+ "count": 3429,
"text_count": 2367
},
"ratings_url": "https://addons.mozilla.org/en-US/android/addon/noscript/reviews/",
@@ -3070,7 +3072,7 @@
],
"type": "extension",
"url": "https://addons.mozilla.org/en-US/android/addon/noscript/",
- "weekly_downloads": 10573
+ "weekly_downloads": 11292
},
"notes": null
},
@@ -3086,7 +3088,7 @@
"picture_url": null
}
],
- "average_daily_users": 121441,
+ "average_daily_users": 127688,
"categories": {
"android": [
"performance",
@@ -3225,10 +3227,10 @@
"category": "recommended"
},
"ratings": {
- "average": 4.1032,
- "bayesian_average": 4.099000071517208,
- "count": 1143,
- "text_count": 551
+ "average": 4.1071,
+ "bayesian_average": 4.102893844607107,
+ "count": 1148,
+ "text_count": 550
},
"ratings_url": "https://addons.mozilla.org/en-US/android/addon/youtube-high-definition/revi…",
"requires_payment": false,
@@ -3266,7 +3268,7 @@
],
"type": "extension",
"url": "https://addons.mozilla.org/en-US/android/addon/youtube-high-definition/",
- "weekly_downloads": 1805
+ "weekly_downloads": 1836
},
"notes": null
}
diff --git a/projects/tor-browser/config b/projects/tor-browser/config
index 300cbc8..4111d63 100644
--- a/projects/tor-browser/config
+++ b/projects/tor-browser/config
@@ -78,9 +78,9 @@ input_files:
enable: '[% c("var/snowflake") && ! c("var/android") %]'
- filename: Bundle-Data
enable: '[% ! c("var/android") %]'
- - URL: https://addons.cdn.mozilla.net/user-media/addons/722/noscript_security_suit…
+ - URL: https://addons.cdn.mozilla.net/user-media/addons/722/noscript_security_suit…
name: noscript
- sha256sum: 9d65fc25020aa1f02d9a80112227cd4c1e4588db6d87372d87a8f15132084c43
+ sha256sum: 5f68a63637e286433089aeb3b6a0aa930317dd988184876b5d6dcff2ca07bb34
- filename: 'RelativeLink/start-tor-browser.desktop'
enable: '[% c("var/linux") %]'
- filename: 'RelativeLink/execdesktop'
diff --git a/rbm.conf b/rbm.conf
index e2d9007..9048bf3 100644
--- a/rbm.conf
+++ b/rbm.conf
@@ -24,8 +24,8 @@ buildconf:
git_signtag_opt: '-s'
var:
- torbrowser_version: '10.0.8'
- torbrowser_build: 'build1'
+ torbrowser_version: '10.0.9'
+ torbrowser_build: 'build2'
torbrowser_incremental_from:
- 10.5a1
project_name: tor-browser
1
0
[Git][tpo/applications/fenix] Pushed new tag tor-browser-85.1.0-10.0-1-build1
by Matthew Finkel 22 Jan '21
by Matthew Finkel 22 Jan '21
22 Jan '21
Matthew Finkel pushed new tag tor-browser-85.1.0-10.0-1-build1 at The Tor Project / Applications / fenix
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/fenix/-/tree/tor-browser-85.…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/fenix] Pushed new tag tor-browser-85.1.0-10.5-1-build1
by Matthew Finkel 22 Jan '21
by Matthew Finkel 22 Jan '21
22 Jan '21
Matthew Finkel pushed new tag tor-browser-85.1.0-10.5-1-build1 at The Tor Project / Applications / fenix
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/fenix/-/tree/tor-browser-85.…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
22 Jan '21
commit 92ca184f548538812e416d8d739ce5fddfe738b5
Author: Georg Koppen <gk(a)torproject.org>
Date: Fri Jan 22 20:34:52 2021 +0000
Fix typo in Changelog
---
projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt b/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
index 384b2e1..4df24ca 100644
--- a/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
+++ b/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
@@ -1,7 +1,7 @@
Tor Browser 10.0.9 -- January 26 2021
* Windows + OS X + Linux
* Update Firefox to 78.7.0esr
- * Update NoScript to 11.1.8
+ * Update NoScript to 11.1.9
* Bug 40249: Remove EOY 2020 Campaign [tor-browser]
* Build System
* Windows + OS X + Linux
1
0
[Git][tpo/applications/fenix][tor-browser-85.1.0-10.0-1] 8 commits: Bug 40002: Add GitLab CI
by Matthew Finkel 22 Jan '21
by Matthew Finkel 22 Jan '21
22 Jan '21
Matthew Finkel pushed to branch tor-browser-85.1.0-10.0-1 at The Tor Project / Applications / fenix
Commits:
b3635836 by Matthew Finkel at 2021-01-22T14:10:24+00:00
Bug 40002: Add GitLab CI
Pin CI builds to runners with 32GB of RAM to avoid OOM conditions.
- - - - -
3f23cd9f by Matthew Finkel at 2021-01-22T14:10:24+00:00
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
- - - - -
55bc513f by Matthew Finkel at 2021-01-22T14:10:24+00:00
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
- - - - -
3a630202 by Georg Koppen at 2021-01-22T17:13:39+00:00
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.
- - - - -
cd8ba1bf by Matthew Finkel at 2021-01-22T17:13:47+00:00
Add Tor integration and UI
Bug 40001: Start Tor as part of the Fenix initialization
Bug 40028: Implement Tor Service controller
Bug 40028: Integrate Tor Controller into HomeFragment
Bug 40028: Implement Tor connect and logger screens
Bug 40028: Implement Tor Onboarding
Bug 40028: Implement new home screen
Bug 40028: Define bootstrapping events and Quick Start
Bug 40041: Implement Tor Network Settings
Bug 40041: Integrate Tor Network Settings
- - - - -
aed70b11 by Alex Catarineu at 2021-01-22T17:13:47+00:00
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 40032: Set usesCleartextTraffic as false
Bug 40063: Do not sort search engines alphabetically
Bug 34378: Port external helper app prompting
With the corresponding android-components patch, this allows all `startActivity`
that may open external apps to be replaced by `TorUtils.startActivityPrompt`.
Bug 34403: Disable Normal mode by default
Bug 40087: Implement a switch for english locale spoofing
- - - - -
045a0328 by Alex Catarineu at 2021-01-22T17:13:47+00:00
Modify Add-on support
Bug 40030: Install HTTPS Everywhere and NoScript addons on startup
HTTPS Everywhere is installed as a builtin extension and NoScript as
a regular AMO addon. To avoid unnecessary I/O we only install NoScript
the first time, and rely on the browser addon updating mechanism for
keeping up with new versions. This is the same behaviour that was
implemented in the Fennec-based Tor Browser, where it was installed
as a "distribution addon", which also only occurred once.
Bug 40062: HTTPS Everywhere is not shown as installed
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. In this list, we replace https-everywhere by
our https-everywhere-eff, so that the EFF one is shown as installed
in the addons list and the AMO one is not displayed.
Also, we hide the uninstall button for builtin addons.
Bug 40058: Hide option for disallowing addon in private mode
- - - - -
d2349239 by Matthew Finkel at 2021-01-22T17:14:00+00:00
Add Security Level UI
Bug 40026: Implement Security Level settings
Bug 40026: Integrate Security Level settings
- - - - -
30 changed files:
- + .gitlab-ci.yml
- app/build.gradle
- app/proguard-rules.pro
- app/src/androidTest/java/org/mozilla/fenix/ui/robots/SettingsSubMenuAboutRobot.kt
- − app/src/beta/res/drawable/ic_launcher_foreground.xml
- app/src/beta/res/mipmap-hdpi/ic_launcher.png
- app/src/beta/res/mipmap-mdpi/ic_launcher.png
- app/src/beta/res/mipmap-xhdpi/ic_launcher.png
- app/src/beta/res/mipmap-xxhdpi/ic_launcher.png
- app/src/beta/res/mipmap-xxxhdpi/ic_launcher.png
- app/src/beta/res/values/static_strings.xml
- app/src/beta/res/xml/shortcuts.xml
- − app/src/debug/res/drawable/ic_launcher_foreground.xml
- app/src/debug/res/xml/shortcuts.xml
- app/src/main/AndroidManifest.xml
- + app/src/main/assets/allowed_addons.json
- app/src/main/java/org/mozilla/fenix/FeatureFlags.kt
- app/src/main/java/org/mozilla/fenix/FenixApplication.kt
- app/src/main/java/org/mozilla/fenix/HomeActivity.kt
- app/src/main/java/org/mozilla/fenix/addons/InstalledAddonDetailsFragment.kt
- app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt
- app/src/main/java/org/mozilla/fenix/components/Analytics.kt
- app/src/main/java/org/mozilla/fenix/components/Components.kt
- app/src/main/java/org/mozilla/fenix/components/Core.kt
- + app/src/main/java/org/mozilla/fenix/components/TorAddonCollectionProvider.kt
- + app/src/main/java/org/mozilla/fenix/components/TorBrowserFeatures.kt
- app/src/main/java/org/mozilla/fenix/components/metrics/AdjustMetricsService.kt
- app/src/main/java/org/mozilla/fenix/components/metrics/MetricsUtils.kt
- app/src/main/java/org/mozilla/fenix/components/toolbar/DefaultToolbarMenu.kt
- app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt
The diff was not included because it is too large.
View it on GitLab: https://gitlab.torproject.org/tpo/applications/fenix/-/compare/24995d51a12d…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/fenix/-/compare/24995d51a12d…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/fenix][tor-browser-85.1.0-10.5-1] 8 commits: Bug 40002: Add GitLab CI
by Matthew Finkel 22 Jan '21
by Matthew Finkel 22 Jan '21
22 Jan '21
Matthew Finkel pushed to branch tor-browser-85.1.0-10.5-1 at The Tor Project / Applications / fenix
Commits:
b3635836 by Matthew Finkel at 2021-01-22T14:10:24+00:00
Bug 40002: Add GitLab CI
Pin CI builds to runners with 32GB of RAM to avoid OOM conditions.
- - - - -
3f23cd9f by Matthew Finkel at 2021-01-22T14:10:24+00:00
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
- - - - -
55bc513f by Matthew Finkel at 2021-01-22T14:10:24+00:00
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
- - - - -
3a630202 by Georg Koppen at 2021-01-22T17:13:39+00:00
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.
- - - - -
cd8ba1bf by Matthew Finkel at 2021-01-22T17:13:47+00:00
Add Tor integration and UI
Bug 40001: Start Tor as part of the Fenix initialization
Bug 40028: Implement Tor Service controller
Bug 40028: Integrate Tor Controller into HomeFragment
Bug 40028: Implement Tor connect and logger screens
Bug 40028: Implement Tor Onboarding
Bug 40028: Implement new home screen
Bug 40028: Define bootstrapping events and Quick Start
Bug 40041: Implement Tor Network Settings
Bug 40041: Integrate Tor Network Settings
- - - - -
aed70b11 by Alex Catarineu at 2021-01-22T17:13:47+00:00
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 40032: Set usesCleartextTraffic as false
Bug 40063: Do not sort search engines alphabetically
Bug 34378: Port external helper app prompting
With the corresponding android-components patch, this allows all `startActivity`
that may open external apps to be replaced by `TorUtils.startActivityPrompt`.
Bug 34403: Disable Normal mode by default
Bug 40087: Implement a switch for english locale spoofing
- - - - -
045a0328 by Alex Catarineu at 2021-01-22T17:13:47+00:00
Modify Add-on support
Bug 40030: Install HTTPS Everywhere and NoScript addons on startup
HTTPS Everywhere is installed as a builtin extension and NoScript as
a regular AMO addon. To avoid unnecessary I/O we only install NoScript
the first time, and rely on the browser addon updating mechanism for
keeping up with new versions. This is the same behaviour that was
implemented in the Fennec-based Tor Browser, where it was installed
as a "distribution addon", which also only occurred once.
Bug 40062: HTTPS Everywhere is not shown as installed
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. In this list, we replace https-everywhere by
our https-everywhere-eff, so that the EFF one is shown as installed
in the addons list and the AMO one is not displayed.
Also, we hide the uninstall button for builtin addons.
Bug 40058: Hide option for disallowing addon in private mode
- - - - -
d2349239 by Matthew Finkel at 2021-01-22T17:14:00+00:00
Add Security Level UI
Bug 40026: Implement Security Level settings
Bug 40026: Integrate Security Level settings
- - - - -
30 changed files:
- + .gitlab-ci.yml
- app/build.gradle
- app/proguard-rules.pro
- app/src/androidTest/java/org/mozilla/fenix/ui/robots/SettingsSubMenuAboutRobot.kt
- − app/src/beta/res/drawable/ic_launcher_foreground.xml
- app/src/beta/res/mipmap-hdpi/ic_launcher.png
- app/src/beta/res/mipmap-mdpi/ic_launcher.png
- app/src/beta/res/mipmap-xhdpi/ic_launcher.png
- app/src/beta/res/mipmap-xxhdpi/ic_launcher.png
- app/src/beta/res/mipmap-xxxhdpi/ic_launcher.png
- app/src/beta/res/values/static_strings.xml
- app/src/beta/res/xml/shortcuts.xml
- − app/src/debug/res/drawable/ic_launcher_foreground.xml
- app/src/debug/res/xml/shortcuts.xml
- app/src/main/AndroidManifest.xml
- + app/src/main/assets/allowed_addons.json
- app/src/main/java/org/mozilla/fenix/FeatureFlags.kt
- app/src/main/java/org/mozilla/fenix/FenixApplication.kt
- app/src/main/java/org/mozilla/fenix/HomeActivity.kt
- app/src/main/java/org/mozilla/fenix/addons/InstalledAddonDetailsFragment.kt
- app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt
- app/src/main/java/org/mozilla/fenix/components/Analytics.kt
- app/src/main/java/org/mozilla/fenix/components/Components.kt
- app/src/main/java/org/mozilla/fenix/components/Core.kt
- + app/src/main/java/org/mozilla/fenix/components/TorAddonCollectionProvider.kt
- + app/src/main/java/org/mozilla/fenix/components/TorBrowserFeatures.kt
- app/src/main/java/org/mozilla/fenix/components/metrics/AdjustMetricsService.kt
- app/src/main/java/org/mozilla/fenix/components/metrics/MetricsUtils.kt
- app/src/main/java/org/mozilla/fenix/components/toolbar/DefaultToolbarMenu.kt
- app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt
The diff was not included because it is too large.
View it on GitLab: https://gitlab.torproject.org/tpo/applications/fenix/-/compare/24995d51a12d…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/fenix/-/compare/24995d51a12d…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[tor-browser/tor-browser-85.0-10.0-1] Bug 16285: Exclude ClearKey system for now
by sysrqb@torproject.org 22 Jan '21
by sysrqb@torproject.org 22 Jan '21
22 Jan '21
commit 5eacec00a223c83a7815a2c6f5a30372f1af267b
Author: Georg Koppen <gk(a)torproject.org>
Date: Mon May 22 12:44:40 2017 +0000
Bug 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.
---
browser/installer/package-manifest.in | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in
index 6a2f19cb040a..74589084d4fa 100644
--- a/browser/installer/package-manifest.in
+++ b/browser/installer/package-manifest.in
@@ -469,8 +469,8 @@ bin/libfreebl_64int_3.so
#endif
; media
-@RESPATH@/gmp-clearkey/0.1/@DLL_PREFIX@clearkey@DLL_SUFFIX@
-@RESPATH@/gmp-clearkey/0.1/manifest.json
+;@RESPATH@/gmp-clearkey/0.1/@DLL_PREFIX@clearkey@DLL_SUFFIX@
+;@RESPATH@/gmp-clearkey/0.1/manifest.json
#ifdef MOZ_DMD
; DMD
1
0
[tor-browser/tor-browser-85.0-10.0-1] Bug 21431: Clean-up system extensions shipped in Firefox
by sysrqb@torproject.org 22 Jan '21
by sysrqb@torproject.org 22 Jan '21
22 Jan '21
commit b5086c4ab79372127b0008ac0f1126f30009af7e
Author: Kathy Brade <brade(a)pearlcrescent.com>
Date: Tue May 23 17:05:29 2017 -0400
Bug 21431: Clean-up system extensions shipped in Firefox
Only ship the pdfjs extension.
---
browser/components/BrowserGlue.jsm | 6 ++++++
browser/extensions/moz.build | 2 +-
browser/installer/package-manifest.in | 1 -
browser/locales/Makefile.in | 8 --------
browser/locales/jar.mn | 7 -------
5 files changed, 7 insertions(+), 17 deletions(-)
diff --git a/browser/components/BrowserGlue.jsm b/browser/components/BrowserGlue.jsm
index f64250511cb1..7dd8f0595cf9 100644
--- a/browser/components/BrowserGlue.jsm
+++ b/browser/components/BrowserGlue.jsm
@@ -2146,6 +2146,9 @@ BrowserGlue.prototype = {
const ID = "screenshots(a)mozilla.org";
const _checkScreenshotsPref = async () => {
let addon = await AddonManager.getAddonByID(ID);
+ if (!addon) {
+ return;
+ }
let disabled = Services.prefs.getBoolPref(PREF, false);
if (disabled) {
await addon.disable({ allowSystemAddons: true });
@@ -2162,6 +2165,9 @@ BrowserGlue.prototype = {
const ID = "webcompat-reporter(a)mozilla.org";
Services.prefs.addObserver(PREF, async () => {
let addon = await AddonManager.getAddonByID(ID);
+ if (!addon) {
+ return;
+ }
let enabled = Services.prefs.getBoolPref(PREF, false);
if (enabled && !addon.isActive) {
await addon.enable({ allowSystemAddons: true });
diff --git a/browser/extensions/moz.build b/browser/extensions/moz.build
index df98fa94f629..8b16ddc4a84a 100644
--- a/browser/extensions/moz.build
+++ b/browser/extensions/moz.build
@@ -4,7 +4,7 @@
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-DIRS += ["doh-rollout", "formautofill", "screenshots", "webcompat", "report-site-issue"]
+DIRS += []
if not CONFIG["TOR_BROWSER_DISABLE_TOR_LAUNCHER"]:
DIRS += ["tor-launcher"]
diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in
index 74589084d4fa..937afa28fd71 100644
--- a/browser/installer/package-manifest.in
+++ b/browser/installer/package-manifest.in
@@ -272,7 +272,6 @@
@RESPATH@/browser/chrome/icons/default/default64.png
@RESPATH@/browser/chrome/icons/default/default128.png
#endif
-@RESPATH@/browser/features/*
; [DevTools Startup Files]
@RESPATH@/browser/chrome/devtools-startup@JAREXT@
diff --git a/browser/locales/Makefile.in b/browser/locales/Makefile.in
index 496379c4306f..0946188813da 100644
--- a/browser/locales/Makefile.in
+++ b/browser/locales/Makefile.in
@@ -58,10 +58,6 @@ l10n-%:
@$(MAKE) -C ../../toolkit/locales l10n-$* XPI_ROOT_APPID='$(XPI_ROOT_APPID)'
@$(MAKE) -C ../../services/sync/locales AB_CD=$* XPI_NAME=locale-$*
@$(MAKE) -C ../../extensions/spellcheck/locales AB_CD=$* XPI_NAME=locale-$*
-ifneq (,$(wildcard ../extensions/formautofill/locales))
- @$(MAKE) -C ../extensions/formautofill/locales AB_CD=$* XPI_NAME=locale-$*
-endif
- @$(MAKE) -C ../extensions/report-site-issue/locales AB_CD=$* XPI_NAME=locale-$*
@$(MAKE) -C ../../devtools/client/locales AB_CD=$* XPI_NAME=locale-$* XPI_ROOT_APPID='$(XPI_ROOT_APPID)'
@$(MAKE) -C ../../devtools/startup/locales AB_CD=$* XPI_NAME=locale-$* XPI_ROOT_APPID='$(XPI_ROOT_APPID)'
@$(MAKE) l10n AB_CD=$* XPI_NAME=locale-$* PREF_DIR=$(PREF_DIR)
@@ -75,14 +71,10 @@ chrome-%:
@$(MAKE) -C ../../toolkit/locales chrome-$*
@$(MAKE) -C ../../services/sync/locales chrome AB_CD=$*
@$(MAKE) -C ../../extensions/spellcheck/locales chrome AB_CD=$*
-ifneq (,$(wildcard ../extensions/formautofill/locales))
- @$(MAKE) -C ../extensions/formautofill/locales chrome AB_CD=$*
-endif
@$(MAKE) -C ../../devtools/client/locales chrome AB_CD=$*
@$(MAKE) -C ../../devtools/startup/locales chrome AB_CD=$*
@$(MAKE) chrome AB_CD=$*
@$(MAKE) -C $(DEPTH)/$(MOZ_BRANDING_DIRECTORY)/locales chrome AB_CD=$*
- @$(MAKE) -C ../extensions/report-site-issue/locales chrome AB_CD=$*
package-win32-installer: $(SUBMAKEFILES)
$(MAKE) -C ../installer/windows CONFIG_DIR=l10ngen ZIP_IN='$(ZIP_OUT)' installer
diff --git a/browser/locales/jar.mn b/browser/locales/jar.mn
index 454dcf5fdf2f..7866d448d176 100644
--- a/browser/locales/jar.mn
+++ b/browser/locales/jar.mn
@@ -54,10 +54,3 @@
locale/browser/newInstall.dtd (%chrome/browser/newInstall.dtd)
locale/browser/brandings.dtd (%chrome/browser/brandings.dtd)
locale/browser/fxmonitor.properties (%chrome/browser/fxmonitor.properties)
-
-#ifdef XPI_NAME
-# Bug 1240628, restructure how l10n repacks work with feature addons
-# This is hacky, but ensures the chrome.manifest chain is complete
-[.] chrome.jar:
-% manifest features/chrome.manifest
-#endif
1
0
[tor-browser/tor-browser-85.0-10.0-1] Bug 21830: Copying large text from web console leaks to /tmp
by sysrqb@torproject.org 22 Jan '21
by sysrqb@torproject.org 22 Jan '21
22 Jan '21
commit a3befe73417b7aea9839f6299b07b16a8d30be1d
Author: Georg Koppen <gk(a)torproject.org>
Date: Fri Aug 4 05:55:49 2017 +0000
Bug 21830: Copying large text from web console leaks to /tmp
Patch written by Neill Miller
---
widget/nsTransferable.cpp | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/widget/nsTransferable.cpp b/widget/nsTransferable.cpp
index c82549a4d1d1..f8ecfbff0983 100644
--- a/widget/nsTransferable.cpp
+++ b/widget/nsTransferable.cpp
@@ -33,6 +33,7 @@ Notes to self:
#include "nsILoadContext.h"
#include "nsXULAppAPI.h"
#include "mozilla/UniquePtr.h"
+#include "mozilla/Preferences.h"
using namespace mozilla;
@@ -195,6 +196,11 @@ nsTransferable::Init(nsILoadContext* aContext) {
if (aContext) {
mPrivateData = aContext->UsePrivateBrowsing();
+ } else {
+ // without aContext here to provide PrivateBrowsing information,
+ // we defer to the active configured setting
+ mPrivateData =
+ mozilla::Preferences::GetBool("browser.privatebrowsing.autostart");
}
#ifdef DEBUG
mInitialized = true;
1
0
[tor-browser/tor-browser-85.0-10.0-1] Bug 23247: Communicating security expectations for .onion
by sysrqb@torproject.org 22 Jan '21
by sysrqb@torproject.org 22 Jan '21
22 Jan '21
commit fc717cc61af2f4351d25d74003acc7b0e62f93b4
Author: Richard Pospesel <richard(a)torproject.org>
Date: Fri Jun 8 13:38:40 2018 -0700
Bug 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.
---
browser/base/content/browser-siteIdentity.js | 39 ++++++++-----
browser/base/content/pageinfo/security.js | 64 ++++++++++++++++++----
.../shared/identity-block/identity-block.inc.css | 19 +++++++
.../themes/shared/identity-block/onion-slash.svg | 5 ++
.../themes/shared/identity-block/onion-warning.svg | 6 ++
browser/themes/shared/identity-block/onion.svg | 3 +
browser/themes/shared/jar.inc.mn | 3 +
dom/base/nsContentUtils.cpp | 19 +++++++
dom/base/nsContentUtils.h | 5 ++
dom/base/nsGlobalWindowOuter.cpp | 3 +-
dom/ipc/WindowGlobalActor.cpp | 5 +-
dom/ipc/WindowGlobalChild.cpp | 6 +-
dom/presentation/PresentationRequest.cpp | 3 +-
dom/security/nsMixedContentBlocker.cpp | 16 +++++-
.../modules/geckoview/GeckoViewProgress.jsm | 4 ++
security/manager/ssl/nsSecureBrowserUI.cpp | 12 ++++
16 files changed, 180 insertions(+), 32 deletions(-)
diff --git a/browser/base/content/browser-siteIdentity.js b/browser/base/content/browser-siteIdentity.js
index 9cf2ff85cbbd..58bcbfd3c69a 100644
--- a/browser/base/content/browser-siteIdentity.js
+++ b/browser/base/content/browser-siteIdentity.js
@@ -144,6 +144,10 @@ var gIdentityHandler = {
);
},
+ get _uriIsOnionHost() {
+ return this._uriHasHost ? this._uri.host.toLowerCase().endsWith(".onion") : false;
+ },
+
get _isAboutNetErrorPage() {
return (
gBrowser.selectedBrowser.documentURI &&
@@ -839,9 +843,9 @@ var gIdentityHandler = {
get pointerlockFsWarningClassName() {
// Note that the fullscreen warning does not handle _isSecureInternalUI.
if (this._uriHasHost && this._isSecureConnection) {
- return "verifiedDomain";
+ return this._uriIsOnionHost ? "onionVerifiedDomain" : "verifiedDomain";
}
- return "unknownIdentity";
+ return this._uriIsOnionHost ? "onionUnknownIdentity" : "unknownIdentity";
},
/**
@@ -849,6 +853,10 @@ var gIdentityHandler = {
* built-in (returns false) or imported (returns true).
*/
_hasCustomRoot() {
+ if (!this._secInfo) {
+ return false;
+ }
+
let issuerCert = null;
issuerCert = this._secInfo.succeededCertChain[
this._secInfo.succeededCertChain.length - 1
@@ -891,11 +899,13 @@ var gIdentityHandler = {
"identity.extension.label",
[extensionName]
);
- } else if (this._uriHasHost && this._isSecureConnection) {
+ } else if (this._uriHasHost && this._isSecureConnection && this._secInfo) {
// This is a secure connection.
- this._identityBox.className = "verifiedDomain";
+ // _isSecureConnection implicitly includes onion services, which may not have an SSL certificate
+ const uriIsOnionHost = this._uriIsOnionHost;
+ this._identityBox.className = uriIsOnionHost ? "onionVerifiedDomain" : "verifiedDomain";
if (this._isMixedActiveContentBlocked) {
- this._identityBox.classList.add("mixedActiveBlocked");
+ this._identityBox.classList.add(uriIsOnionHost ? "onionMixedActiveBlocked" : "mixedActiveBlocked");
}
if (!this._isCertUserOverridden) {
// It's a normal cert, verifier is the CA Org.
@@ -906,17 +916,17 @@ var gIdentityHandler = {
}
} else if (this._isBrokenConnection) {
// This is a secure connection, but something is wrong.
- this._identityBox.className = "unknownIdentity";
+ const uriIsOnionHost = this._uriIsOnionHost;
+ this._identityBox.className = uriIsOnionHost ? "onionUnknownIdentity" : "unknownIdentity";
if (this._isMixedActiveContentLoaded) {
- this._identityBox.classList.add("mixedActiveContent");
+ this._identityBox.classList.add(uriIsOnionHost ? "onionMixedActiveContent" : "mixedActiveContent");
} else if (this._isMixedActiveContentBlocked) {
- this._identityBox.classList.add(
- "mixedDisplayContentLoadedActiveBlocked"
- );
+ this._identityBox.classList.add(uriIsOnionHost ? "onionMixedDisplayContentLoadedActiveBlocked" : "mixedDisplayContentLoadedActiveBlocked");
} else if (this._isMixedPassiveContentLoaded) {
- this._identityBox.classList.add("mixedDisplayContent");
+ this._identityBox.classList.add(uriIsOnionHost ? "onionMixedDisplayContent" : "mixedDisplayContent");
} else {
+ // TODO: ignore weak https cipher for onionsites?
this._identityBox.classList.add("weakCipher");
}
} else if (this._isAboutCertErrorPage) {
@@ -929,8 +939,8 @@ var gIdentityHandler = {
// Network errors and blocked pages get a more neutral icon
this._identityBox.className = "unknownIdentity";
} else if (this._isPotentiallyTrustworthy) {
- // This is a local resource (and shouldn't be marked insecure).
- this._identityBox.className = "localResource";
+ // This is a local resource or an onion site (and shouldn't be marked insecure).
+ this._identityBox.className = this._uriIsOnionHost ? "onionUnknownIdentity" : "localResource";
} else {
// This is an insecure connection.
let warnOnInsecure =
@@ -954,7 +964,8 @@ var gIdentityHandler = {
}
if (this._isCertUserOverridden) {
- this._identityBox.classList.add("certUserOverridden");
+ const uriIsOnionHost = this._uriIsOnionHost;
+ this._identityBox.classList.add(uriIsOnionHost ? "onionCertUserOverridden" : "certUserOverridden");
// Cert is trusted because of a security exception, verifier is a special string.
tooltip = gNavigatorBundle.getString(
"identity.identified.verified_by_you"
diff --git a/browser/base/content/pageinfo/security.js b/browser/base/content/pageinfo/security.js
index 6a2d09ec8442..192e9f763700 100644
--- a/browser/base/content/pageinfo/security.js
+++ b/browser/base/content/pageinfo/security.js
@@ -22,6 +22,13 @@ ChromeUtils.defineModuleGetter(
"PluralForm",
"resource://gre/modules/PluralForm.jsm"
);
+XPCOMUtils.defineLazyGetter(
+ this,
+ "gTorButtonBundle",
+ function() {
+ return Services.strings.createBundle("chrome://torbutton/locale/torbutton.properties");
+ }
+);
var security = {
async init(uri, windowInfo) {
@@ -60,6 +67,11 @@ var security = {
(Ci.nsIWebProgressListener.STATE_LOADED_MIXED_ACTIVE_CONTENT |
Ci.nsIWebProgressListener.STATE_LOADED_MIXED_DISPLAY_CONTENT);
var isEV = ui.state & Ci.nsIWebProgressListener.STATE_IDENTITY_EV_TOPLEVEL;
+ var isOnion = false;
+ const hostName = this.windowInfo.hostName;
+ if (hostName && hostName.endsWith(".onion")) {
+ isOnion = true;
+ }
let retval = {
cAName: "",
@@ -69,6 +81,7 @@ var security = {
isBroken,
isMixed,
isEV,
+ isOnion,
cert: null,
certificateTransparency: null,
};
@@ -107,6 +120,7 @@ var security = {
isBroken,
isMixed,
isEV,
+ isOnion,
cert,
certChain: certChainArray,
certificateTransparency: undefined,
@@ -349,22 +363,50 @@ async function securityOnLoad(uri, windowInfo) {
}
msg2 = pkiBundle.getString("pageInfo_Privacy_None2");
} else if (info.encryptionStrength > 0) {
- hdr = pkiBundle.getFormattedString(
- "pageInfo_EncryptionWithBitsAndProtocol",
- [info.encryptionAlgorithm, info.encryptionStrength + "", info.version]
- );
+ if (!info.isOnion) {
+ hdr = pkiBundle.getFormattedString(
+ "pageInfo_EncryptionWithBitsAndProtocol",
+ [info.encryptionAlgorithm, info.encryptionStrength + "", info.version]
+ );
+ } else {
+ try {
+ hdr = gTorButtonBundle.formatStringFromName(
+ "pageInfo_OnionEncryptionWithBitsAndProtocol",
+ [info.encryptionAlgorithm, info.encryptionStrength + "", info.version]
+ );
+ } catch(err) {
+ hdr = "Connection Encrypted (Onion Service, "
+ + info.encryptionAlgorithm
+ + ", "
+ + info.encryptionStrength
+ + " bit keys, "
+ + info.version
+ + ")";
+ }
+ }
msg1 = pkiBundle.getString("pageInfo_Privacy_Encrypted1");
msg2 = pkiBundle.getString("pageInfo_Privacy_Encrypted2");
} else {
- hdr = pkiBundle.getString("pageInfo_NoEncryption");
- if (windowInfo.hostName != null) {
- msg1 = pkiBundle.getFormattedString("pageInfo_Privacy_None1", [
- windowInfo.hostName,
- ]);
+ if (!info.isOnion) {
+ hdr = pkiBundle.getString("pageInfo_NoEncryption");
+ if (windowInfo.hostName != null) {
+ msg1 = pkiBundle.getFormattedString("pageInfo_Privacy_None1", [
+ windowInfo.hostName,
+ ]);
+ } else {
+ msg1 = pkiBundle.getString("pageInfo_Privacy_None4");
+ }
+ msg2 = pkiBundle.getString("pageInfo_Privacy_None2");
} else {
- msg1 = pkiBundle.getString("pageInfo_Privacy_None4");
+ try {
+ hdr = gTorButtonBundle.GetStringFromName("pageInfo_OnionEncryption");
+ } catch (err) {
+ hdr = "Connection Encrypted (Onion Service)";
+ }
+
+ msg1 = pkiBundle.getString("pageInfo_Privacy_Encrypted1");
+ msg2 = pkiBundle.getString("pageInfo_Privacy_Encrypted2");
}
- msg2 = pkiBundle.getString("pageInfo_Privacy_None2");
}
setText("security-technical-shortform", hdr);
setText("security-technical-longform1", msg1);
diff --git a/browser/themes/shared/identity-block/identity-block.inc.css b/browser/themes/shared/identity-block/identity-block.inc.css
index 59d0f1c775a6..2eec10e21077 100644
--- a/browser/themes/shared/identity-block/identity-block.inc.css
+++ b/browser/themes/shared/identity-block/identity-block.inc.css
@@ -187,6 +187,25 @@ toolbar[brighttext] #identity-box[pageproxystate="valid"].chromeUI > #identity-i
list-style-image: url(chrome://global/skin/icons/connection-mixed-active-loaded.svg);
}
+#identity-box[pageproxystate="valid"].onionUnknownIdentity > #identity-icon,
+#identity-box[pageproxystate="valid"].onionVerifiedDomain > #identity-icon,
+#identity-box[pageproxystate="valid"].onionMixedActiveBlocked > #identity-icon {
+ list-style-image: url(chrome://browser/skin/onion.svg);
+ visibility: visible;
+}
+
+#identity-box[pageproxystate="valid"].onionMixedDisplayContent > #identity-icon,
+#identity-box[pageproxystate="valid"].onionMixedDisplayContentLoadedActiveBlocked > #identity-icon,
+#identity-box[pageproxystate="valid"].onionCertUserOverridden > #identity-icon {
+ list-style-image: url(chrome://browser/skin/onion-warning.svg);
+ visibility: visible;
+}
+
+#identity-box[pageproxystate="valid"].onionMixedActiveContent > #identity-icon {
+ list-style-image: url(chrome://browser/skin/onion-slash.svg);
+ visibility: visible;
+}
+
#permissions-granted-icon {
list-style-image: url(chrome://browser/skin/permissions.svg);
}
diff --git a/browser/themes/shared/identity-block/onion-slash.svg b/browser/themes/shared/identity-block/onion-slash.svg
new file mode 100644
index 000000000000..e7c98b769482
--- /dev/null
+++ b/browser/themes/shared/identity-block/onion-slash.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
+ <path d="M3.409559 13.112147C3.409559 13.112147 8.200807 8.103115 8.200807 8.103115C8.200807 8.103115 8.200807 6.516403 8.200807 6.516403C8.620819 6.516403 9.009719 6.703075 9.274171 6.998639C9.274171 6.998639 10.160863 6.080835 10.160863 6.080835C9.663071 5.567487 8.978607 5.256367 8.200807 5.256367C8.200807 5.256367 8.200807 4.400787 8.200807 4.400787C9.196391 4.400787 10.098639 4.805243 10.736435 5.458595C10.736435 5.458595 11.623127 4.540791 11.623127 4.540791C10.751991 3.669655 9.538623 3.125195 8.200807 3.125195C8.200807 3.125195 8.200807 2.269615 8.200807 2.269615C9.756407 2.269615 11.172003 2.907411 12.214255 3.918551C12.214255 3.918551 13.100947 3.000747 13.100947 3.000747C11.825355 1.756267 10.098639 0.994023 8.185251 0.994023C4.311807 0.994023 1.185051 4.120779 1.185051 7.994223C1.185051 10.016503 2.040631 11.836555 3.409559 13.112147C3.409559 13.112147 3.409559 13.112147 3.409559 13.112147" fill-opacity="context-fill-opacity" fill="context-fill" />
+ <path d="M14.205423 4.416343C14.205423 4.416343 13.287619 5.380815 13.287619 5.380815C13.692075 6.158615 13.909859 7.045307 13.909859 7.994223C13.909859 11.152091 11.358675 13.718831 8.200807 13.718831C8.200807 13.718831 8.200807 12.863251 8.200807 12.863251C10.891995 12.863251 13.069835 10.669855 13.069835 7.978667C13.069835 7.278647 12.929831 6.625295 12.665379 6.018611C12.665379 6.018611 11.685351 7.045307 11.685351 7.045307C11.763131 7.340871 11.809799 7.651991 11.809799 7.963111C11.809799 9.954279 10.207531 11.556547 8.216363 11.572103C8.216363 11.572103 8.216363 10.716523 8.216363 10.716523C9.725295 10.700967 10.954219 9.472043 10.954219 7.963111C10.954219 7.916443 10.954219 7.854219 10.954219 7.807551C10.954219 7.807551 4.887379 14.169955 4.887379 14.169955C5.867407 14.698859 6.987439 14.994423 8.185251 14.994423C12.058695 14.994423 15.185451 11.867667 15.185451 7.994223C15.185451 6.687519 14.827663 5.474151 14.205423 4.416343C14.205423 4.416343 14.205423 4.416343 14.205423
4.416343" fill-opacity="context-fill-opacity" fill="context-fill" />
+ <path d="M1.791735 15.461103C1.402835 15.461103 1.045047 15.212207 0.889487 14.838863C0.733927 14.465519 0.827267 14.014395 1.107271 13.734387C1.107271 13.734387 13.458735 0.822907 13.458735 0.822907C13.847635 0.434007 14.454319 0.449563 14.827663 0.838467C15.201007 1.227367 15.216563 1.865163 14.843223 2.269619C14.843223 2.269619 2.491759 15.181099 2.491759 15.181099C2.289531 15.352215 2.040635 15.461107 1.791739 15.461107C1.791739 15.461107 1.791735 15.461103 1.791735 15.461103" fill="#ff0039" />
+</svg>
diff --git a/browser/themes/shared/identity-block/onion-warning.svg b/browser/themes/shared/identity-block/onion-warning.svg
new file mode 100644
index 000000000000..d42a7dab7246
--- /dev/null
+++ b/browser/themes/shared/identity-block/onion-warning.svg
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
+ <path d="M15.8630401732 14.127C15.8630401732 14.127 12.6649598146 7.716 12.6649598146 7.716C12.4469357756 7.279935 12.0003277145 7.0043454 11.5116853046 7.0043454C11.0230428947 7.0043454 10.5764348336 7.279935 10.3584107946 7.716C10.3584107946 7.716 7.1573218938 14.127 7.1573218938 14.127C6.95646770542 14.527294 6.97733695982 15.002669 7.21250176686 15.38393C7.4476665739 15.765191 7.86372750208 15.998191 8.3126020986 16.0C8.3126020986 16.0 14.7077599684 16.0 14.7077599684 16.0C15.1566344646 15.9982 15.572695794 15.765191 15.8078605007 15.38393C16.0430252075 15.002669 16.0638944619 14.527294 15.8630371647 14.127C15.8630371647 14.127 15.8630401732 14.127 15.8630401732 14.127" fill="#ffbf00" />
+ <path d="M11.5106824572 8.0C11.6210488221 7.99691 11.7223975832 8.060469 11.7674113916 8.161C11.7674113916 8.161 14.9644889028 14.573 14.9644889028 14.573C15.0126456349 14.66534 15.0076715118 14.776305 14.9514518866 14.864C14.9011992034 14.95041 14.8079143382 15.002854 14.7077599684 15.001048C14.7077599684 15.001048 8.3126020986 15.001048 8.3126020986 15.001048C8.2124480296 15.002854 8.1191607576 14.950409 8.0689101804 14.864C8.0124814615 14.77637 8.0075053327 14.665298 8.0558731642 14.573C8.0558731642 14.573 11.2529506754 8.161 11.2529506754 8.161C11.2981038796 8.0601247 11.3999560701 7.9964997 11.5106824572 8.0M11.5106824572 6.9999751C11.0194557096 6.9969427 10.5701148893 7.2754275 10.3554022524 7.716C10.3554022524 7.716 7.1573218938 14.127 7.1573218938 14.127C6.95646770542 14.527294 6.97733695982 15.002669 7.21250176686 15.38393C7.4476665739 15.765191 7.86372750208 15.998191 8.3126020986 16.0C8.3126020986 16.0 14.7077599684 16.0 14.7077599684 16.0C15.1566344646 15.9982 15.57269
5794 15.765191 15.8078605007 15.38393C16.0430252075 15.002669 16.0638944619 14.527294 15.8630371647 14.127C15.8630371647 14.127 12.6649598146 7.716 12.6649598146 7.716C12.4504036219 7.2757546 12.0015481798 6.9973287 11.5106824572 6.9999751C11.5106824572 6.9999751 11.5106824572 6.9999751 11.5106824572 6.9999751" opacity="0.35" fill="#d76e00" />
+ <path d="M11.5327451 12.0C11.8096733867 12.0 12.0341688 11.776142 12.0341688 11.5C12.0341688 11.5 12.0341688 9.5 12.0341688 9.5C12.0341688 9.2238576 11.8096733867 9.0 11.5327451 9.0C11.2558168133 9.0 11.0313214 9.2238576 11.0313214 9.5C11.0313214 9.5 11.0313214 11.5 11.0313214 11.5C11.0313214 11.776142 11.2558168133 12.0 11.5327451 12.0C11.5327451 12.0 11.5327451 12.0 11.5327451 12.0M11.5327451 12.809C11.1500294496 12.809 10.8397775466 13.118371 10.8397775466 13.5C10.8397775466 13.881629 11.1500294496 14.191 11.5327451 14.191C11.9154607504 14.191 12.2257126534 13.881629 12.2257126534 13.5C12.2257126534 13.118371 11.9154607504 12.809 11.5327451 12.809C11.5327451 12.809 11.5327451 12.809 11.5327451 12.809" fill="#ffffff" />
+ <path d="M7.08030321348 6.552C7.90163523408 6.56 8.5645173655 7.225 8.5645173655 8.046C8.5645173655 8.866 7.90163523408 9.532 7.08030321348 9.54C7.08030321348 9.54 7.08030321348 6.552 7.08030321348 6.552M6.30610502068 13.756C6.30610502068 13.756 9.4991711423 7.353 9.4991711423 7.353C9.5453021227 7.259 9.6144985933 7.184 9.6716608951 7.098C9.2845617987 6.039 8.2756973143 5.277 7.08030321348 5.271C7.08030321348 5.271 7.08030321348 4.417 7.08030321348 4.417C8.5043465215 4.423 9.7238089599 5.251 10.3164917733 6.443C10.6795225321 6.21 11.1067355245 6.074 11.5519997701 6.074C11.5519997701 6.074 11.5620282441 6.074 11.5620282441 6.074C11.5620282441 6.074 11.5640339389 6.074 11.5640339389 6.074C11.5660396337 6.074 11.5690481759 6.075 11.5710538707 6.075C10.8108955415 4.35 9.0900094031 3.141 7.08030321348 3.135C7.08030321348 3.135 7.08030321348 2.281 7.08030321348 2.281C9.6716608951 2.288 11.8618796167 3.993 12.5889439817 6.34C13.0231769059 6.561 13.3922247491 6.9 13.6088397875 7.344C13.60
88397875 7.344 14.1162805719 8.361 14.1162805719 8.361C14.1202919615 8.256 14.1313232829 8.152 14.1313232829 8.046C14.1313232829 4.155 10.9683425833 1.0 7.06626334988 1.0C3.16318126908 1.0 0.00020056948 4.155 0.00020056948 8.046C0.00020056948 11.603 2.64571201068 14.536 6.08046435568 15.015C6.03633907008 14.595 6.10252699848 14.16 6.30610502068 13.756C6.30610502068 13.756 6.30610502068 13.756 6.30610502068 13.756" fill-opacity="context-fill-opacity" fill="context-fill" />
+</svg>
diff --git a/browser/themes/shared/identity-block/onion.svg b/browser/themes/shared/identity-block/onion.svg
new file mode 100644
index 000000000000..b123a9786acc
--- /dev/null
+++ b/browser/themes/shared/identity-block/onion.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
+ <path d="M8.01435945 13.726867125C8.01435945 13.726867125 8.01435945 12.87830525 8.01435945 12.87830525C10.70227825 12.87051775 12.87869375 10.689666 12.87869375 7.9998060125C12.87869375 5.310140275 10.70227825 3.1292621 8.01435945 3.121500325C8.01435945 3.121500325 8.01435945 2.272938975 8.01435945 2.272938975C11.170899375 2.280892725 13.727061375 4.8415202875 13.727061375 7.9998060125C13.727061375 11.158285375 11.170899375 13.719105 8.01435945 13.726867125C8.01435945 13.726867125 8.01435945 13.726867125 8.01435945 13.726867125M8.01435945 10.756805625C9.5304373 10.74884925 10.75758175 9.5180185125 10.75758175 7.9998060125C10.75758175 6.4817875 9.5304373 5.2509564125 8.01435945 5.2430005625C8.01435945 5.2430005625 8.01435945 4.3946332875 8.01435945 4.3946332875C9.999251625 4.4023945375 11.60614275 6.013167425 11.60614275 7.9998060125C11.60614275 9.986639375 9.999251625 11.597411125 8.01435945 11.605172375C8.01435945 11.605172375 8.01435945 10.756805625 8.01435945 10.756805625M8.01
435945 6.5157454625C8.8276046625 6.5235067125 9.484837025 7.184620575 9.484837025 7.9998060125C9.484837025 8.815185875 8.8276046625 9.4762985125 8.01435945 9.4840608125C8.01435945 9.4840608125 8.01435945 6.5157454625 8.01435945 6.5157454625M1.0 7.9998060125C1.0 11.8659705 4.1338360375 15.0 8.0000000875 15.0C11.8659705 15.0 15.0 11.8659705 15.0 7.9998060125C15.0 4.1338360375 11.8659705 1.0 8.0000000875 1.0C4.1338360375 1.0 1.0 4.1338360375 1.0 7.9998060125C1.0 7.9998060125 1.0 7.9998060125 1.0 7.9998060125" fill-rule="even-odd" fill-opacity="context-fill-opacity" fill="context-fill" />
+</svg>
diff --git a/browser/themes/shared/jar.inc.mn b/browser/themes/shared/jar.inc.mn
index c476ba3cffae..5163986e5df2 100644
--- a/browser/themes/shared/jar.inc.mn
+++ b/browser/themes/shared/jar.inc.mn
@@ -56,6 +56,9 @@
skin/classic/browser/fxaSignout.css (../shared/fxaSignout.css)
skin/classic/browser/permissions.svg (../shared/identity-block/permissions.svg)
skin/classic/browser/connection-secure.svg (../shared/identity-block/connection-secure.svg)
+ skin/classic/browser/onion.svg (../shared/identity-block/onion.svg)
+ skin/classic/browser/onion-slash.svg (../shared/identity-block/onion-slash.svg)
+ skin/classic/browser/onion-warning.svg (../shared/identity-block/onion-warning.svg)
skin/classic/browser/info.svg (../shared/info.svg)
skin/classic/browser/newInstall.css (../shared/newInstall.css)
skin/classic/browser/newInstallPage.css (../shared/newInstallPage.css)
diff --git a/dom/base/nsContentUtils.cpp b/dom/base/nsContentUtils.cpp
index d679bc7babf1..b2b7d2f6599f 100644
--- a/dom/base/nsContentUtils.cpp
+++ b/dom/base/nsContentUtils.cpp
@@ -9266,6 +9266,25 @@ bool nsContentUtils::ComputeIsSecureContext(nsIChannel* aChannel) {
return principal->GetIsOriginPotentiallyTrustworthy();
}
+/* static */ bool nsContentUtils::DocumentHasOnionURI(Document* aDocument) {
+ if (!aDocument) {
+ return false;
+ }
+
+ nsIURI* uri = aDocument->GetDocumentURI();
+ if (!uri) {
+ return false;
+ }
+
+ nsAutoCString host;
+ if (NS_SUCCEEDED(uri->GetHost(host))) {
+ bool hasOnionURI = StringEndsWith(host, ".onion"_ns);
+ return hasOnionURI;
+ }
+
+ return false;
+}
+
/* static */
void nsContentUtils::TryToUpgradeElement(Element* aElement) {
NodeInfo* nodeInfo = aElement->NodeInfo();
diff --git a/dom/base/nsContentUtils.h b/dom/base/nsContentUtils.h
index 9e58474b55ff..b913d56816c0 100644
--- a/dom/base/nsContentUtils.h
+++ b/dom/base/nsContentUtils.h
@@ -3006,6 +3006,11 @@ class nsContentUtils {
*/
static bool HttpsStateIsModern(Document* aDocument);
+ /**
+ * Returns true of the document's URI is a .onion
+ */
+ static bool DocumentHasOnionURI(Document* aDocument);
+
/**
* Returns true if the channel is for top-level window and is over secure
* context.
diff --git a/dom/base/nsGlobalWindowOuter.cpp b/dom/base/nsGlobalWindowOuter.cpp
index 92bb1f68e501..047ea31a1404 100644
--- a/dom/base/nsGlobalWindowOuter.cpp
+++ b/dom/base/nsGlobalWindowOuter.cpp
@@ -1879,7 +1879,8 @@ bool nsGlobalWindowOuter::ComputeIsSecureContext(Document* aDocument,
return false;
}
- if (nsContentUtils::HttpsStateIsModern(aDocument)) {
+ if (nsContentUtils::HttpsStateIsModern(aDocument) ||
+ nsContentUtils::DocumentHasOnionURI(aDocument)) {
return true;
}
diff --git a/dom/ipc/WindowGlobalActor.cpp b/dom/ipc/WindowGlobalActor.cpp
index 38cf7587520e..61337e04c472 100644
--- a/dom/ipc/WindowGlobalActor.cpp
+++ b/dom/ipc/WindowGlobalActor.cpp
@@ -20,6 +20,7 @@
#include "mozilla/net/CookieJarSettings.h"
#include "mozilla/dom/WindowGlobalChild.h"
#include "mozilla/dom/WindowGlobalParent.h"
+#include "mozilla/dom/nsMixedContentBlocker.h"
#include "nsGlobalWindowInner.h"
#include "nsNetUtil.h"
@@ -120,7 +121,9 @@ WindowGlobalInit WindowGlobalActor::WindowInitializer(
// Init Mixed Content Fields
nsCOMPtr<nsIURI> innerDocURI = NS_GetInnermostURI(doc->GetDocumentURI());
if (innerDocURI) {
- fields.mIsSecure = innerDocURI->SchemeIs("https");
+ fields.mIsSecure =
+ innerDocURI->SchemeIs("https") ||
+ nsMixedContentBlocker::IsPotentiallyTrustworthyOnion(innerDocURI);
}
nsCOMPtr<nsIChannel> mixedChannel;
aWindow->GetDocShell()->GetMixedContentChannel(getter_AddRefs(mixedChannel));
diff --git a/dom/ipc/WindowGlobalChild.cpp b/dom/ipc/WindowGlobalChild.cpp
index c927fb40604d..a4f17dc36b4f 100644
--- a/dom/ipc/WindowGlobalChild.cpp
+++ b/dom/ipc/WindowGlobalChild.cpp
@@ -41,6 +41,8 @@
#include "nsIHttpChannelInternal.h"
#include "nsIURIMutator.h"
+#include "mozilla/dom/nsMixedContentBlocker.h"
+
using namespace mozilla::ipc;
using namespace mozilla::dom::ipc;
@@ -238,7 +240,9 @@ void WindowGlobalChild::OnNewDocument(Document* aDocument) {
nsCOMPtr<nsIURI> innerDocURI =
NS_GetInnermostURI(aDocument->GetDocumentURI());
if (innerDocURI) {
- txn.SetIsSecure(innerDocURI->SchemeIs("https"));
+ txn.SetIsSecure(
+ innerDocURI->SchemeIs("https") ||
+ nsMixedContentBlocker::IsPotentiallyTrustworthyOnion(innerDocURI));
}
nsCOMPtr<nsIChannel> mixedChannel;
mWindowGlobal->GetDocShell()->GetMixedContentChannel(
diff --git a/dom/presentation/PresentationRequest.cpp b/dom/presentation/PresentationRequest.cpp
index 6a7595a3bda9..9247bb07f1ef 100644
--- a/dom/presentation/PresentationRequest.cpp
+++ b/dom/presentation/PresentationRequest.cpp
@@ -469,7 +469,8 @@ bool PresentationRequest::IsProhibitMixedSecurityContexts(Document* aDocument) {
nsCOMPtr<Document> doc = aDocument;
while (doc && !nsContentUtils::IsChromeDoc(doc)) {
- if (nsContentUtils::HttpsStateIsModern(doc)) {
+ if (nsContentUtils::HttpsStateIsModern(doc) ||
+ nsContentUtils::DocumentHasOnionURI(doc)) {
return true;
}
diff --git a/dom/security/nsMixedContentBlocker.cpp b/dom/security/nsMixedContentBlocker.cpp
index f9dc1235dffd..e58e6ca68528 100644
--- a/dom/security/nsMixedContentBlocker.cpp
+++ b/dom/security/nsMixedContentBlocker.cpp
@@ -644,8 +644,8 @@ nsresult nsMixedContentBlocker::ShouldLoad(bool aHadInsecureImageRedirect,
return NS_OK;
}
- // Check the parent scheme. If it is not an HTTPS page then mixed content
- // restrictions do not apply.
+ // Check the parent scheme. If it is not an HTTPS or .onion page then mixed
+ // content restrictions do not apply.
nsCOMPtr<nsIURI> innerRequestingLocation =
NS_GetInnermostURI(requestingLocation);
if (!innerRequestingLocation) {
@@ -660,6 +660,17 @@ nsresult nsMixedContentBlocker::ShouldLoad(bool aHadInsecureImageRedirect,
bool parentIsHttps = innerRequestingLocation->SchemeIs("https");
if (!parentIsHttps) {
+ bool parentIsOnion = IsPotentiallyTrustworthyOnion(innerRequestingLocation);
+ if (!parentIsOnion) {
+ *aDecision = ACCEPT;
+ return NS_OK;
+ }
+ }
+
+ bool isHttpScheme = innerContentLocation->SchemeIs("http");
+ // .onion URLs are encrypted and authenticated. Don't treat them as mixed
+ // content if potentially trustworthy (i.e. whitelisted).
+ if (isHttpScheme && IsPotentiallyTrustworthyOnion(innerContentLocation)) {
*aDecision = ACCEPT;
MOZ_LOG(sMCBLog, LogLevel::Verbose,
(" -> decision: Request will be allowed because the requesting "
@@ -686,7 +697,6 @@ nsresult nsMixedContentBlocker::ShouldLoad(bool aHadInsecureImageRedirect,
return NS_OK;
}
- bool isHttpScheme = innerContentLocation->SchemeIs("http");
if (isHttpScheme && IsPotentiallyTrustworthyOrigin(innerContentLocation)) {
*aDecision = ACCEPT;
return NS_OK;
diff --git a/mobile/android/modules/geckoview/GeckoViewProgress.jsm b/mobile/android/modules/geckoview/GeckoViewProgress.jsm
index 23652971ca69..c9ac11577021 100644
--- a/mobile/android/modules/geckoview/GeckoViewProgress.jsm
+++ b/mobile/android/modules/geckoview/GeckoViewProgress.jsm
@@ -145,6 +145,10 @@ var IdentityHandler = {
result.host = uri.host;
}
+ if (!aBrowser.securityUI.secInfo) {
+ return result;
+ }
+
const cert = aBrowser.securityUI.secInfo.serverCert;
result.certificate = aBrowser.securityUI.secInfo.serverCert.getBase64DERString();
diff --git a/security/manager/ssl/nsSecureBrowserUI.cpp b/security/manager/ssl/nsSecureBrowserUI.cpp
index b4de1a331ffc..f1ce39582854 100644
--- a/security/manager/ssl/nsSecureBrowserUI.cpp
+++ b/security/manager/ssl/nsSecureBrowserUI.cpp
@@ -9,6 +9,7 @@
#include "mozilla/Logging.h"
#include "mozilla/Unused.h"
#include "mozilla/dom/Document.h"
+#include "mozilla/dom/nsMixedContentBlocker.h"
#include "nsContentUtils.h"
#include "nsIChannel.h"
#include "nsDocShell.h"
@@ -85,6 +86,17 @@ void nsSecureBrowserUI::RecomputeSecurityFlags() {
}
}
}
+
+ // any protocol routed over tor is secure
+ if (!(mState & nsIWebProgressListener::STATE_IS_SECURE)) {
+ nsCOMPtr<nsIURI> innerDocURI = NS_GetInnermostURI(win->GetDocumentURI());
+ if (innerDocURI &&
+ nsMixedContentBlocker::IsPotentiallyTrustworthyOnion(innerDocURI)) {
+ MOZ_LOG(gSecureBrowserUILog, LogLevel::Debug, (" is onion"));
+ mState = (mState & ~nsIWebProgressListener::STATE_IS_INSECURE) |
+ nsIWebProgressListener::STATE_IS_SECURE;
+ }
+ }
}
// Add upgraded-state flags when request has been
1
0
[tor-browser/tor-browser-85.0-10.0-1] Bug 23104: Add a default line height compensation
by sysrqb@torproject.org 22 Jan '21
by sysrqb@torproject.org 22 Jan '21
22 Jan '21
commit 960d2f8993de656459777900adc6621783cdc278
Author: Igor Oliveira <igor.oliveira(a)posteo.net>
Date: Sun Dec 10 18:16:59 2017 -0200
Bug 23104: Add a default line height compensation
Many fonts have issues with their vertical metrics. they
are used to influence the height of ascenders and depth
of descenders. Gecko uses it to calculate the line height
(font height + ascender + descender), however because of
that idiosyncratic behavior across multiple operating
systems, it can be used to identify the user's OS.
The solution proposed in the patch uses a default factor
to be multiplied with the font size, simulating the concept
of ascender and descender. This way all operating
systems will have the same line height only and only if the
frame is outside the chrome.
---
layout/generic/ReflowInput.cpp | 19 ++++++++---
layout/generic/test/mochitest.ini | 1 +
layout/generic/test/test_tor_bug23104.html | 51 ++++++++++++++++++++++++++++++
3 files changed, 66 insertions(+), 5 deletions(-)
diff --git a/layout/generic/ReflowInput.cpp b/layout/generic/ReflowInput.cpp
index 54fa963f42aa..87e75b600a7d 100644
--- a/layout/generic/ReflowInput.cpp
+++ b/layout/generic/ReflowInput.cpp
@@ -31,6 +31,7 @@
#include "mozilla/SVGUtils.h"
#include "mozilla/dom/HTMLInputElement.h"
#include "nsGridContainerFrame.h"
+#include "nsContentUtils.h"
using namespace mozilla;
using namespace mozilla::css;
@@ -2734,7 +2735,8 @@ void ReflowInput::CalculateBlockSideMargins(LayoutFrameType aFrameType) {
// For risk management, we use preference to control the behavior, and
// eNoExternalLeading is the old behavior.
-static nscoord GetNormalLineHeight(nsFontMetrics* aFontMetrics) {
+static nscoord GetNormalLineHeight(nsIContent* aContent,
+ nsFontMetrics* aFontMetrics) {
MOZ_ASSERT(nullptr != aFontMetrics, "no font metrics");
nscoord normalLineHeight;
@@ -2742,6 +2744,12 @@ static nscoord GetNormalLineHeight(nsFontMetrics* aFontMetrics) {
nscoord externalLeading = aFontMetrics->ExternalLeading();
nscoord internalLeading = aFontMetrics->InternalLeading();
nscoord emHeight = aFontMetrics->EmHeight();
+
+ if (nsContentUtils::ShouldResistFingerprinting() &&
+ !aContent->IsInChromeDocument()) {
+ return NSToCoordRound(emHeight * NORMAL_LINE_HEIGHT_FACTOR);
+ }
+
switch (GetNormalLineHeightCalcControl()) {
case eIncludeExternalLeading:
normalLineHeight = emHeight + internalLeading + externalLeading;
@@ -2759,7 +2767,8 @@ static nscoord GetNormalLineHeight(nsFontMetrics* aFontMetrics) {
return normalLineHeight;
}
-static inline nscoord ComputeLineHeight(ComputedStyle* aComputedStyle,
+static inline nscoord ComputeLineHeight(nsIContent* aContent,
+ ComputedStyle* aComputedStyle,
nsPresContext* aPresContext,
nscoord aBlockBSize,
float aFontSizeInflation) {
@@ -2788,7 +2797,7 @@ static inline nscoord ComputeLineHeight(ComputedStyle* aComputedStyle,
RefPtr<nsFontMetrics> fm = nsLayoutUtils::GetFontMetricsForComputedStyle(
aComputedStyle, aPresContext, aFontSizeInflation);
- return GetNormalLineHeight(fm);
+ return GetNormalLineHeight(aContent, fm);
}
nscoord ReflowInput::CalcLineHeight() const {
@@ -2810,7 +2819,7 @@ nscoord ReflowInput::CalcLineHeight(nsIContent* aContent,
float aFontSizeInflation) {
MOZ_ASSERT(aComputedStyle, "Must have a ComputedStyle");
- nscoord lineHeight = ComputeLineHeight(aComputedStyle, aPresContext,
+ nscoord lineHeight = ComputeLineHeight(aContent, aComputedStyle, aPresContext,
aBlockBSize, aFontSizeInflation);
NS_ASSERTION(lineHeight >= 0, "ComputeLineHeight screwed up");
@@ -2823,7 +2832,7 @@ nscoord ReflowInput::CalcLineHeight(nsIContent* aContent,
if (!lh.IsNormal()) {
RefPtr<nsFontMetrics> fm = nsLayoutUtils::GetFontMetricsForComputedStyle(
aComputedStyle, aPresContext, aFontSizeInflation);
- nscoord normal = GetNormalLineHeight(fm);
+ nscoord normal = GetNormalLineHeight(aContent, fm);
if (lineHeight < normal) {
lineHeight = normal;
}
diff --git a/layout/generic/test/mochitest.ini b/layout/generic/test/mochitest.ini
index 2d61b5dae990..93d7d9ae1fb9 100644
--- a/layout/generic/test/mochitest.ini
+++ b/layout/generic/test/mochitest.ini
@@ -150,3 +150,4 @@ skip-if = debug == true || tsan # the test is slow. tsan: bug 1612707
support-files =
file_reframe_for_lazy_load_image.html
[test_bug1655135.html]
+[test_tor_bug23104.html]
diff --git a/layout/generic/test/test_tor_bug23104.html b/layout/generic/test/test_tor_bug23104.html
new file mode 100644
index 000000000000..ae73a3446037
--- /dev/null
+++ b/layout/generic/test/test_tor_bug23104.html
@@ -0,0 +1,51 @@
+<!DOCTYPE HTML>
+<meta charset="UTF-8">
+<html>
+<head>
+ <title>Test for Tor Bug #23104: CSS line-height reveals the platform Tor browser is running</title>
+ <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+ <script type="application/javascript" src="/tests/SimpleTest/SpawnTask.js"></script>
+ <style type="text/css">
+ span {
+ background-color: #000;
+ color: #fff;
+ font-size: 16.5px;
+ }
+ </style>
+</head>
+<body>
+<span id="test1">Test1</span>
+<span id="test2">كلمة</span>
+<span id="test3">ação</span>
+<script type="application/javascript;version=1.7">
+
+let setPref = function* (key, value) {
+ return new Promise(function(resolve, reject) {
+ SpecialPowers.pushPrefEnv({"set": [[key, value]]}, resolve);
+ });
+}
+
+function getStyle(el, styleprop) {
+ el = document.getElementById(el);
+ return document.defaultView.getComputedStyle(el, null).getPropertyValue(styleprop);
+}
+
+function validateElement(elementName, isFingerprintResistent) {
+ var fontSize = getStyle(elementName, 'font-size');
+ var lineHeight = getStyle(elementName, 'line-height');
+ var validationCb = isFingerprintResistent ? is : isnot;
+ validationCb(parseFloat(lineHeight), parseFloat(fontSize) * 1.2, 'Line Height validation');
+}
+
+add_task(function* () {
+ for (let resistFingerprintingValue of [true, false]) {
+ yield setPref("privacy.resistFingerprinting", resistFingerprintingValue);
+ for (let elementId of ['test1', 'test2', 'test3']) {
+ validateElement(elementId, resistFingerprintingValue);
+ }
+ }
+});
+
+</script>
+</body>
+</html>
1
0
[tor-browser/tor-browser-85.0-10.0-1] Bug 26345: Hide tracking protection UI
by sysrqb@torproject.org 22 Jan '21
by sysrqb@torproject.org 22 Jan '21
22 Jan '21
commit 453590aa53660d01268a544aec06f89ea894120e
Author: Alex Catarineu <acat(a)torproject.org>
Date: Tue Sep 10 16:29:31 2019 +0200
Bug 26345: Hide tracking protection UI
---
browser/base/content/browser-siteIdentity.js | 4 ++--
browser/base/content/browser.xhtml | 4 ++--
browser/components/about/AboutRedirector.cpp | 4 ----
browser/components/about/components.conf | 1 -
browser/components/moz.build | 1 -
browser/themes/shared/preferences/privacy.css | 4 ++++
6 files changed, 8 insertions(+), 10 deletions(-)
diff --git a/browser/base/content/browser-siteIdentity.js b/browser/base/content/browser-siteIdentity.js
index 58bcbfd3c69a..ea6a6a0f7833 100644
--- a/browser/base/content/browser-siteIdentity.js
+++ b/browser/base/content/browser-siteIdentity.js
@@ -1063,10 +1063,10 @@ var gIdentityHandler = {
this._refreshPermissionIcons();
- // Hide the shield icon if it is a chrome page.
+ // Bug 26345: Hide tracking protection UI.
gProtectionsHandler._trackingProtectionIconContainer.classList.toggle(
"chromeUI",
- this._isSecureInternalUI
+ true
);
},
diff --git a/browser/base/content/browser.xhtml b/browser/base/content/browser.xhtml
index 2e533ba8d852..5a69c08ce5e5 100644
--- a/browser/base/content/browser.xhtml
+++ b/browser/base/content/browser.xhtml
@@ -774,7 +774,7 @@
oncommand="gSync.toggleAccountPanel('PanelUI-fxa', this, event)"/>
</toolbaritem>
<toolbarseparator class="sync-ui-item"/>
- <toolbaritem>
+ <toolbaritem hidden="true">
<toolbarbutton id="appMenu-protection-report-button"
class="subviewbutton subviewbutton-iconic"
oncommand="gProtectionsHandler.openProtections(); gProtectionsHandler.recordClick('open_full_report', null, 'app_menu');">
@@ -785,7 +785,7 @@
</label>
</toolbarbutton>
</toolbaritem>
- <toolbarseparator id="appMenu-tp-separator"/>
+ <toolbarseparator hidden="true" id="appMenu-tp-separator"/>
<toolbarbutton id="appMenu-new-window-button"
class="subviewbutton subviewbutton-iconic"
label="&newNavigatorCmd.label;"
diff --git a/browser/components/about/AboutRedirector.cpp b/browser/components/about/AboutRedirector.cpp
index 169b2862a92a..cdb84d4ed9cd 100644
--- a/browser/components/about/AboutRedirector.cpp
+++ b/browser/components/about/AboutRedirector.cpp
@@ -114,10 +114,6 @@ static const RedirEntry kRedirMap[] = {
nsIAboutModule::URI_MUST_LOAD_IN_CHILD |
nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT |
nsIAboutModule::ALLOW_SCRIPT | nsIAboutModule::HIDE_FROM_ABOUTABOUT},
- {"protections", "chrome://browser/content/protections.html",
- nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT |
- nsIAboutModule::URI_MUST_LOAD_IN_CHILD | nsIAboutModule::ALLOW_SCRIPT |
- nsIAboutModule::URI_CAN_LOAD_IN_PRIVILEGEDABOUT_PROCESS},
{"ion", "chrome://browser/content/ion.html",
nsIAboutModule::ALLOW_SCRIPT | nsIAboutModule::HIDE_FROM_ABOUTABOUT},
#ifdef TOR_BROWSER_UPDATE
diff --git a/browser/components/about/components.conf b/browser/components/about/components.conf
index 56731d70c386..290fce3feed9 100644
--- a/browser/components/about/components.conf
+++ b/browser/components/about/components.conf
@@ -20,7 +20,6 @@ pages = [
'policies',
'preferences',
'privatebrowsing',
- 'protections',
'profiling',
'reader',
'restartrequired',
diff --git a/browser/components/moz.build b/browser/components/moz.build
index 5a4144ffa43d..8107ddca2dd2 100644
--- a/browser/components/moz.build
+++ b/browser/components/moz.build
@@ -47,7 +47,6 @@ DIRS += [
"preferences",
"privatebrowsing",
"prompts",
- "protections",
"protocolhandler",
"resistfingerprinting",
"search",
diff --git a/browser/themes/shared/preferences/privacy.css b/browser/themes/shared/preferences/privacy.css
index f66aa8d46721..3843bda85887 100644
--- a/browser/themes/shared/preferences/privacy.css
+++ b/browser/themes/shared/preferences/privacy.css
@@ -114,6 +114,10 @@
/* Content Blocking */
+#trackingGroup {
+ display: none;
+}
+
/* Override styling that sets descriptions as grey */
#trackingGroup description.indent,
#trackingGroup .indent > description {
1
0
[tor-browser/tor-browser-85.0-10.0-1] Bug 30541: Disable WebGL readPixel() for web content
by sysrqb@torproject.org 22 Jan '21
by sysrqb@torproject.org 22 Jan '21
22 Jan '21
commit 9c7e04980a4dcc322e56517fed4e98964999e0a8
Author: Georg Koppen <gk(a)torproject.org>
Date: Wed May 29 12:29:19 2019 +0000
Bug 30541: Disable WebGL readPixel() for web content
---
dom/canvas/ClientWebGLContext.cpp | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/dom/canvas/ClientWebGLContext.cpp b/dom/canvas/ClientWebGLContext.cpp
index e399b5e66de0..4becf41b4e62 100644
--- a/dom/canvas/ClientWebGLContext.cpp
+++ b/dom/canvas/ClientWebGLContext.cpp
@@ -4636,6 +4636,14 @@ bool ClientWebGLContext::ReadPixels_SharedPrecheck(
return false;
}
+ // Security check passed, but don't let content readPixel calls through for
+ // now, if Resist Fingerprinting Mode is enabled.
+ if (nsContentUtils::ResistFingerprinting(aCallerType)) {
+ JsWarning("readPixels: Not allowed in Resist Fingerprinting Mode");
+ out_error.Throw(NS_ERROR_DOM_NOT_SUPPORTED_ERR);
+ return false;
+ }
+
return true;
}
1
0
[tor-browser/tor-browser-85.0-10.0-1] Bug 25658: Replace security slider with security level UI
by sysrqb@torproject.org 22 Jan '21
by sysrqb@torproject.org 22 Jan '21
22 Jan '21
commit 7481808eb04821f6e80aee4f09b9d65f668ee5f5
Author: Richard Pospesel <richard(a)torproject.org>
Date: Mon Mar 4 16:09:51 2019 -0800
Bug 25658: Replace security slider with security level UI
This patch adds a new 'securitylevel' component to Tor Browser intended
to replace the torbutton 'Security Slider'.
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.
Strings used by this patch are pulled from the torbutton extension, but
en-US defaults are provided if there is an error loading from the
extension. With this patch applied, the usual work-flow of "./mach build
&& ./mach run" work as expected, even if the torbutton extension is
disabled.
---
browser/base/content/browser.js | 10 +
browser/base/content/browser.xhtml | 5 +
browser/components/moz.build | 1 +
browser/components/preferences/preferences.xhtml | 1 +
browser/components/preferences/privacy.inc.xhtml | 2 +
browser/components/preferences/privacy.js | 19 +
.../securitylevel/content/securityLevel.js | 501 +++++++++++++++++++++
.../securitylevel/content/securityLevelButton.css | 9 +
.../content/securityLevelButton.inc.xhtml | 7 +
.../securitylevel/content/securityLevelButton.svg | 21 +
.../securitylevel/content/securityLevelPanel.css | 82 ++++
.../content/securityLevelPanel.inc.xhtml | 38 ++
.../content/securityLevelPreferences.css | 26 ++
.../content/securityLevelPreferences.inc.xhtml | 62 +++
browser/components/securitylevel/jar.mn | 6 +
browser/components/securitylevel/moz.build | 1 +
16 files changed, 791 insertions(+)
diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js
index 2811ef45c873..f88756abddf2 100644
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -217,6 +217,11 @@ XPCOMUtils.defineLazyScriptGetter(
["DownloadsButton", "DownloadsIndicatorView"],
"chrome://browser/content/downloads/indicator.js"
);
+XPCOMUtils.defineLazyScriptGetter(
+ this,
+ ["SecurityLevelButton"],
+ "chrome://browser/content/securitylevel/securityLevel.js"
+);
XPCOMUtils.defineLazyScriptGetter(
this,
"gEditItemOverlay",
@@ -1803,6 +1808,9 @@ var gBrowserInit = {
// doesn't flicker as the window is being shown.
DownloadsButton.init();
+ // Init the SecuritySettingsButton
+ SecurityLevelButton.init();
+
// Certain kinds of automigration rely on this notification to complete
// their tasks BEFORE the browser window is shown. SessionStore uses it to
// restore tabs into windows AFTER important parts like gMultiProcessBrowser
@@ -2488,6 +2496,8 @@ var gBrowserInit = {
DownloadsButton.uninit();
+ SecurityLevelButton.uninit();
+
gAccessibilityServiceIndicator.uninit();
if (gToolbarKeyNavEnabled) {
diff --git a/browser/base/content/browser.xhtml b/browser/base/content/browser.xhtml
index 9ad0e96a02e4..2e533ba8d852 100644
--- a/browser/base/content/browser.xhtml
+++ b/browser/base/content/browser.xhtml
@@ -20,6 +20,8 @@
<?xml-stylesheet href="chrome://browser/content/browser.css" type="text/css"?>
<?xml-stylesheet href="chrome://browser/content/tabbrowser.css" type="text/css"?>
<?xml-stylesheet href="chrome://browser/content/downloads/downloads.css" type="text/css"?>
+<?xml-stylesheet href="chrome://browser/content/securitylevel/securityLevelPanel.css"?>
+<?xml-stylesheet href="chrome://browser/content/securitylevel/securityLevelButton.css"?>
<?xml-stylesheet href="chrome://browser/content/places/places.css" type="text/css"?>
<?xml-stylesheet href="chrome://browser/content/usercontext/usercontext.css" type="text/css"?>
<?xml-stylesheet href="chrome://browser/skin/" type="text/css"?>
@@ -644,6 +646,7 @@
#include ../../components/controlcenter/content/protectionsPanel.inc.xhtml
#include ../../components/downloads/content/downloadsPanel.inc.xhtml
#include ../../../devtools/startup/enableDevToolsPopup.inc.xhtml
+#include ../../components/securitylevel/content/securityLevelPanel.inc.xhtml
#include browser-allTabsMenu.inc.xhtml
<hbox id="downloads-animation-container">
@@ -1984,6 +1987,8 @@
</stack>
</toolbarbutton>
+#include ../../components/securitylevel/content/securityLevelButton.inc.xhtml
+
<toolbarbutton id="library-button" class="toolbarbutton-1 chromeclass-toolbar-additional subviewbutton-nav"
removable="true"
onmousedown="PanelUI.showSubView('appMenu-libraryView', this, event);"
diff --git a/browser/components/moz.build b/browser/components/moz.build
index 7f82f14985fe..5a4144ffa43d 100644
--- a/browser/components/moz.build
+++ b/browser/components/moz.build
@@ -51,6 +51,7 @@ DIRS += [
"protocolhandler",
"resistfingerprinting",
"search",
+ "securitylevel",
"sessionstore",
"shell",
"ssb",
diff --git a/browser/components/preferences/preferences.xhtml b/browser/components/preferences/preferences.xhtml
index 4b0c351c9185..7464274ac4d7 100644
--- a/browser/components/preferences/preferences.xhtml
+++ b/browser/components/preferences/preferences.xhtml
@@ -12,6 +12,7 @@
<?xml-stylesheet href="chrome://browser/skin/preferences/search.css"?>
<?xml-stylesheet href="chrome://browser/skin/preferences/containers.css"?>
<?xml-stylesheet href="chrome://browser/skin/preferences/privacy.css"?>
+<?xml-stylesheet href="chrome://browser/content/securitylevel/securityLevelPreferences.css"?>
<!DOCTYPE html>
diff --git a/browser/components/preferences/privacy.inc.xhtml b/browser/components/preferences/privacy.inc.xhtml
index f0345939101b..229ff658c572 100644
--- a/browser/components/preferences/privacy.inc.xhtml
+++ b/browser/components/preferences/privacy.inc.xhtml
@@ -924,6 +924,8 @@
<html:h1 data-l10n-id="security-header"/>
</hbox>
+#include ../securitylevel/content/securityLevelPreferences.inc.xhtml
+
<!-- addons, forgery (phishing) UI Security -->
<groupbox id="browsingProtectionGroup" data-category="panePrivacy" hidden="true">
<label><html:h2 data-l10n-id="security-browsing-protection"/></label>
diff --git a/browser/components/preferences/privacy.js b/browser/components/preferences/privacy.js
index 70c00ca9badf..be8f46476d9d 100644
--- a/browser/components/preferences/privacy.js
+++ b/browser/components/preferences/privacy.js
@@ -80,6 +80,12 @@ XPCOMUtils.defineLazyGetter(this, "AlertsServiceDND", function() {
}
});
+XPCOMUtils.defineLazyScriptGetter(
+ this,
+ ["SecurityLevelPreferences"],
+ "chrome://browser/content/securitylevel/securityLevel.js"
+);
+
XPCOMUtils.defineLazyServiceGetter(
this,
"listManager",
@@ -305,6 +311,18 @@ function setUpContentBlockingWarnings() {
var gPrivacyPane = {
_pane: null,
+ /**
+ * Show the Security Level UI
+ */
+ _initSecurityLevel() {
+ SecurityLevelPreferences.init();
+ let unload = () => {
+ window.removeEventListener("unload", unload);
+ SecurityLevelPreferences.uninit();
+ };
+ window.addEventListener("unload", unload);
+ },
+
/**
* Whether the prompt to restart Firefox should appear when changing the autostart pref.
*/
@@ -516,6 +534,7 @@ var gPrivacyPane = {
this.trackingProtectionReadPrefs();
this.networkCookieBehaviorReadPrefs();
this._initTrackingProtectionExtensionControl();
+ this._initSecurityLevel();
Services.telemetry.setEventRecordingEnabled("pwmgr", true);
diff --git a/browser/components/securitylevel/content/securityLevel.js b/browser/components/securitylevel/content/securityLevel.js
new file mode 100644
index 000000000000..b47d0cfb545e
--- /dev/null
+++ b/browser/components/securitylevel/content/securityLevel.js
@@ -0,0 +1,501 @@
+"use strict";
+
+ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
+ChromeUtils.import("resource://gre/modules/Services.jsm");
+
+XPCOMUtils.defineLazyModuleGetters(this, {
+ CustomizableUI: "resource:///modules/CustomizableUI.jsm",
+ PanelMultiView: "resource:///modules/PanelMultiView.jsm",
+});
+
+ChromeUtils.defineModuleGetter(
+ this,
+ "TorStrings",
+ "resource:///modules/TorStrings.jsm"
+);
+
+/*
+ Security Level Prefs
+
+ Getters and Setters for relevant torbutton prefs
+*/
+const SecurityLevelPrefs = {
+ security_slider_pref : "extensions.torbutton.security_slider",
+ security_custom_pref : "extensions.torbutton.security_custom",
+
+ get securitySlider() {
+ try {
+ return Services.prefs.getIntPref(this.security_slider_pref);
+ } catch(e) {
+ // init pref to 4 (standard)
+ const val = 4;
+ Services.prefs.setIntPref(this.security_slider_pref, val);
+ return val;
+ }
+ },
+
+ set securitySlider(val) {
+ Services.prefs.setIntPref(this.security_slider_pref, val);
+ },
+
+ get securityCustom() {
+ try {
+ return Services.prefs.getBoolPref(this.security_custom_pref);
+ } catch(e) {
+ // init custom to false
+ const val = false;
+ Services.prefs.setBoolPref(this.security_custom_pref, val);
+ return val;
+ }
+ },
+
+ set securityCustom(val) {
+ Services.prefs.setBoolPref(this.security_custom_pref, val);
+ },
+}; /* Security Level Prefs */
+
+/*
+ Security Level Button Code
+
+ Controls init and update of the security level toolbar button
+*/
+
+const SecurityLevelButton = {
+ _securityPrefsBranch : null,
+
+ _populateXUL : function(securityLevelButton) {
+ if (securityLevelButton != null) {
+ securityLevelButton.setAttribute("tooltiptext", TorStrings.securityLevel.securityLevel);
+ securityLevelButton.setAttribute("label", TorStrings.securityLevel.securityLevel);
+ }
+ },
+
+ _configUIFromPrefs : function(securityLevelButton) {
+ if (securityLevelButton != null) {
+ let securitySlider = SecurityLevelPrefs.securitySlider;
+ let classList = securityLevelButton.classList;
+ classList.remove("standard", "safer", "safest");
+ switch(securitySlider) {
+ case 4:
+ classList.add("standard");
+ securityLevelButton.setAttribute("tooltiptext", TorStrings.securityLevel.standard.tooltip);
+ break;
+ case 2:
+ classList.add("safer");
+ securityLevelButton.setAttribute("tooltiptext", TorStrings.securityLevel.safer.tooltip);
+ break;
+ case 1:
+ classList.add("safest");
+ securityLevelButton.setAttribute("tooltiptext", TorStrings.securityLevel.safest.tooltip);
+ break;
+ }
+ }
+ },
+
+ get button() {
+ let button = document.getElementById("security-level-button");
+ if (!button) {
+ return null;
+ }
+ return button;
+ },
+
+ get anchor() {
+ let anchor = this.button.icon;
+ if (!anchor) {
+ return null;
+ }
+
+ anchor.setAttribute("consumeanchor", SecurityLevelButton.button.id);
+ return anchor;
+ },
+
+ init : function() {
+ // set the initial class based off of the current pref
+ let button = this.button;
+ this._populateXUL(button);
+ this._configUIFromPrefs(button);
+
+ this._securityPrefsBranch = Services.prefs.getBranch("extensions.torbutton.");
+ this._securityPrefsBranch.addObserver("", this, false);
+
+ CustomizableUI.addListener(this);
+
+ SecurityLevelPanel.init();
+ },
+
+ uninit : function() {
+ CustomizableUI.removeListener(this);
+
+ this._securityPrefsBranch.removeObserver("", this);
+ this._securityPrefsBranch = null;
+
+ SecurityLevelPanel.uninit();
+ },
+
+ observe : function(subject, topic, data) {
+ switch(topic) {
+ case "nsPref:changed":
+ if (data == "security_slider") {
+ this._configUIFromPrefs(this.button);
+ }
+ break;
+ }
+ },
+
+ // callback for entering the 'Customize Firefox' screen to set icon
+ onCustomizeStart : function(window) {
+ let navigatorToolbox = document.getElementById("navigator-toolbox");
+ let button = navigatorToolbox.palette.querySelector("#security-level-button");
+ this._populateXUL(button);
+ this._configUIFromPrefs(button);
+ },
+
+ // callback when CustomizableUI modifies DOM
+ onWidgetAfterDOMChange : function(aNode, aNextNode, aContainer, aWasRemoval) {
+ if (aNode.id == "security-level-button" && !aWasRemoval) {
+ this._populateXUL(aNode);
+ this._configUIFromPrefs(aNode);
+ }
+ },
+
+ // for when the toolbar button needs to be activated and displays the Security Level panel
+ //
+ // In the toolbarbutton xul you'll notice we register this callback for both onkeypress and
+ // onmousedown. We do this to match the behavior of other panel spawning buttons such as Downloads,
+ // Library, and the Hamburger menus. Using oncommand alone would result in only getting fired
+ // after onclick, which is mousedown followed by mouseup.
+ onCommand : function(aEvent) {
+ // snippet stolen from /browser/components/downloads/indicator.js DownloadsIndicatorView.onCommand(evt)
+ if (
+ (aEvent.type == "mousedown" && aEvent.button != 0) ||
+ (aEvent.type == "keypress" && aEvent.key != " " && aEvent.key != "Enter")
+ ) {
+ return;
+ }
+
+ // we need to set this attribute for the button to be shaded correctly to look like it is pressed
+ // while the security level panel is open
+ this.button.setAttribute("open", "true");
+ SecurityLevelPanel.show();
+ },
+}; /* Security Level Button */
+
+/*
+ Security Level Panel Code
+
+ Controls init and update of the panel in the security level hanger
+*/
+
+const SecurityLevelPanel = {
+ _securityPrefsBranch : null,
+ _panel : null,
+ _anchor : null,
+ _populated : false,
+
+ _populateXUL : function() {
+ // get the panel elements we need to populate
+ let panelview = document.getElementById("securityLevel-panelview");
+ let labelHeader = panelview.querySelector("#securityLevel-header");
+ let labelCustomWarning = panelview.querySelector("#securityLevel-customWarning")
+ let labelLearnMore = panelview.querySelector("#securityLevel-learnMore");
+ let buttonRestoreDefaults = panelview.querySelector("#securityLevel-restoreDefaults");
+ let buttonAdvancedSecuritySettings = panelview.querySelector("#securityLevel-advancedSecuritySettings");
+
+ labelHeader.setAttribute("value", TorStrings.securityLevel.securityLevel);
+ labelCustomWarning.setAttribute("value", TorStrings.securityLevel.customWarning);
+ labelLearnMore.setAttribute("value", TorStrings.securityLevel.learnMore);
+ labelLearnMore.setAttribute("href", TorStrings.securityLevel.learnMoreURL);
+ buttonRestoreDefaults.setAttribute("label", TorStrings.securityLevel.restoreDefaults);
+ buttonAdvancedSecuritySettings.setAttribute("label", TorStrings.securityLevel.advancedSecuritySettings);
+
+ // rest of the XUL is set based on security prefs
+ this._configUIFromPrefs();
+
+ this._populated = true;
+ },
+
+ _configUIFromPrefs : function() {
+ // get security prefs
+ let securitySlider = SecurityLevelPrefs.securitySlider;
+ let securityCustom = SecurityLevelPrefs.securityCustom;
+
+ // get the panel elements we need to populate
+ let panelview = document.getElementById("securityLevel-panelview");
+ let labelLevel = panelview.querySelector("#securityLevel-level");
+ let labelCustomWarning = panelview.querySelector("#securityLevel-customWarning")
+ let summary = panelview.querySelector("#securityLevel-summary");
+ let buttonRestoreDefaults = panelview.querySelector("#securityLevel-restoreDefaults");
+ let buttonAdvancedSecuritySettings = panelview.querySelector("#securityLevel-advancedSecuritySettings");
+
+ // only visible when user is using custom settings
+ labelCustomWarning.hidden = !securityCustom;
+ buttonRestoreDefaults.hidden = !securityCustom;
+
+ // Descriptions change based on security level
+ switch(securitySlider) {
+ // standard
+ case 4:
+ labelLevel.setAttribute("value", TorStrings.securityLevel.standard.level);
+ summary.textContent = TorStrings.securityLevel.standard.summary;
+ break;
+ // safer
+ case 2:
+ labelLevel.setAttribute("value", TorStrings.securityLevel.safer.level);
+ summary.textContent = TorStrings.securityLevel.safer.summary;
+ break;
+ // safest
+ case 1:
+ labelLevel.setAttribute("value", TorStrings.securityLevel.safest.level);
+ summary.textContent = TorStrings.securityLevel.safest.summary;
+ break;
+ }
+
+ // override the summary text with custom warning
+ if (securityCustom) {
+ summary.textContent = TorStrings.securityLevel.custom.summary;
+ }
+ },
+
+ init : function() {
+ this._securityPrefsBranch = Services.prefs.getBranch("extensions.torbutton.");
+ this._securityPrefsBranch.addObserver("", this, false);
+ },
+
+ uninit : function() {
+ this._securityPrefsBranch.removeObserver("", this);
+ this._securityPrefsBranch = null;
+ },
+
+ show : function() {
+ // we have to defer this until after the browser has finished init'ing before
+ // we can populate the panel
+ if (!this._populated) {
+ this._populateXUL();
+ }
+
+ let panel = document.getElementById("securityLevel-panel");
+ panel.hidden = false;
+ PanelMultiView.openPopup(panel, SecurityLevelButton.anchor, "bottomcenter topright",
+ 0, 0, false, null).catch(Cu.reportError);
+ },
+
+ hide : function() {
+ let panel = document.getElementById("securityLevel-panel");
+ PanelMultiView.hidePopup(panel);
+ },
+
+ restoreDefaults : function() {
+ SecurityLevelPrefs.securityCustom = false;
+ // hide and reshow so that layout re-renders properly
+ this.hide();
+ this.show(this._anchor);
+ },
+
+ openAdvancedSecuritySettings : function() {
+ openPreferences("privacy-securitylevel");
+ this.hide();
+ },
+
+ // callback when prefs change
+ observe : function(subject, topic, data) {
+ switch(topic) {
+ case "nsPref:changed":
+ if (data == "security_slider" || data == "security_custom") {
+ this._configUIFromPrefs();
+ }
+ break;
+ }
+ },
+
+ // callback when the panel is displayed
+ onPopupShown : function(event) {
+ SecurityLevelButton.button.setAttribute("open", "true");
+ },
+
+ // callback when the panel is hidden
+ onPopupHidden : function(event) {
+ SecurityLevelButton.button.removeAttribute("open");
+ }
+}; /* Security Level Panel */
+
+/*
+ Security Level Preferences Code
+
+ Code to handle init and update of security level section in about:preferences#privacy
+*/
+
+const SecurityLevelPreferences =
+{
+ _securityPrefsBranch : null,
+
+ _populateXUL : function() {
+ let groupbox = document.getElementById("securityLevel-groupbox");
+
+ let labelHeader = groupbox.querySelector("#securityLevel-header");
+ labelHeader.textContent = TorStrings.securityLevel.securityLevel;
+
+ let spanOverview = groupbox.querySelector("#securityLevel-overview");
+ spanOverview.textContent = TorStrings.securityLevel.overview;
+
+ let labelLearnMore = groupbox.querySelector("#securityLevel-learnMore");
+ labelLearnMore.setAttribute("value", TorStrings.securityLevel.learnMore);
+ labelLearnMore.setAttribute("href", TorStrings.securityLevel.learnMoreURL);
+
+ let radiogroup = document.getElementById("securityLevel-radiogroup");
+ radiogroup.addEventListener("command", SecurityLevelPreferences.selectSecurityLevel);
+
+ let populateRadioElements = function(vboxQuery, stringStruct) {
+ let vbox = groupbox.querySelector(vboxQuery);
+
+ let radio = vbox.querySelector("radio");
+ radio.setAttribute("label", stringStruct.level);
+
+ let customWarning = vbox.querySelector("#securityLevel-customWarning");
+ customWarning.setAttribute("value", TorStrings.securityLevel.customWarning);
+
+ let labelSummary = vbox.querySelector("#securityLevel-summary");
+ labelSummary.textContent = stringStruct.summary;
+
+ let labelRestoreDefaults = vbox.querySelector("#securityLevel-restoreDefaults");
+ labelRestoreDefaults.setAttribute("value", TorStrings.securityLevel.restoreDefaults);
+ labelRestoreDefaults.addEventListener("click", SecurityLevelPreferences.restoreDefaults);
+
+ let description1 = vbox.querySelector("#securityLevel-description1");
+ if (description1) {
+ description1.textContent = stringStruct.description1;
+ }
+ let description2 = vbox.querySelector("#securityLevel-description2");
+ if (description2) {
+ description2.textContent = stringStruct.description2;
+ }
+ let description3 = vbox.querySelector("#securityLevel-description3");
+ if (description3) {
+ description3.textContent = stringStruct.description3;
+ }
+ };
+
+ populateRadioElements("#securityLevel-vbox-standard", TorStrings.securityLevel.standard);
+ populateRadioElements("#securityLevel-vbox-safer", TorStrings.securityLevel.safer);
+ populateRadioElements("#securityLevel-vbox-safest", TorStrings.securityLevel.safest);
+ },
+
+ _configUIFromPrefs : function() {
+ // read our prefs
+ let securitySlider = SecurityLevelPrefs.securitySlider;
+ let securityCustom = SecurityLevelPrefs.securityCustom;
+
+ // get our elements
+ let groupbox = document.getElementById("securityLevel-groupbox");
+
+ let radiogroup = groupbox.querySelector("#securityLevel-radiogroup");
+ let labelStandardCustom = groupbox.querySelector("#securityLevel-vbox-standard label#securityLevel-customWarning");
+ let labelSaferCustom = groupbox.querySelector("#securityLevel-vbox-safer label#securityLevel-customWarning");
+ let labelSafestCustom = groupbox.querySelector("#securityLevel-vbox-safest label#securityLevel-customWarning");
+ let labelStandardRestoreDefaults = groupbox.querySelector("#securityLevel-vbox-standard label#securityLevel-restoreDefaults");
+ let labelSaferRestoreDefaults = groupbox.querySelector("#securityLevel-vbox-safer label#securityLevel-restoreDefaults");
+ let labelSafestRestoreDefaults = groupbox.querySelector("#securityLevel-vbox-safest label#securityLevel-restoreDefaults");
+
+ // hide custom label by default until we know which level we're at
+ labelStandardCustom.hidden = true;
+ labelSaferCustom.hidden = true;
+ labelSafestCustom.hidden = true;
+
+ labelStandardRestoreDefaults.hidden = true;
+ labelSaferRestoreDefaults.hidden = true;
+ labelSafestRestoreDefaults.hidden = true;
+
+ switch(securitySlider) {
+ // standard
+ case 4:
+ radiogroup.value = "standard";
+ labelStandardCustom.hidden = !securityCustom;
+ labelStandardRestoreDefaults.hidden = !securityCustom;
+ break;
+ // safer
+ case 2:
+ radiogroup.value = "safer";
+ labelSaferCustom.hidden = !securityCustom;
+ labelSaferRestoreDefaults.hidden = !securityCustom;
+ break;
+ // safest
+ case 1:
+ radiogroup.value = "safest";
+ labelSafestCustom.hidden = !securityCustom;
+ labelSafestRestoreDefaults.hidden = !securityCustom;
+ break;
+ }
+ },
+
+ init : function() {
+ // populate XUL with localized strings
+ this._populateXUL();
+
+ // read prefs and populate UI
+ this._configUIFromPrefs();
+
+ // register for pref chagnes
+ this._securityPrefsBranch = Services.prefs.getBranch("extensions.torbutton.");
+ this._securityPrefsBranch.addObserver("", this, false);
+ },
+
+ uninit : function() {
+ // unregister for pref change events
+ this._securityPrefsBranch.removeObserver("", this);
+ this._securityPrefsBranch = null;
+ },
+
+ // callback for when prefs change
+ observe : function(subject, topic, data) {
+ switch(topic) {
+ case "nsPref:changed":
+ if (data == "security_slider" ||
+ data == "security_custom") {
+ this._configUIFromPrefs();
+ }
+ break;
+ }
+ },
+
+ selectSecurityLevel : function() {
+ // radio group elements
+ let radiogroup = document.getElementById("securityLevel-radiogroup");
+
+ // update pref based on selected radio option
+ switch (radiogroup.value) {
+ case "standard":
+ SecurityLevelPrefs.securitySlider = 4;
+ break;
+ case "safer":
+ SecurityLevelPrefs.securitySlider = 2;
+ break;
+ case "safest":
+ SecurityLevelPrefs.securitySlider = 1;
+ break;
+ }
+
+ SecurityLevelPreferences.restoreDefaults();
+ },
+
+ restoreDefaults : function() {
+ SecurityLevelPrefs.securityCustom = false;
+ },
+}; /* Security Level Prefereces */
+
+Object.defineProperty(this, "SecurityLevelButton", {
+ value: SecurityLevelButton,
+ enumerable: true,
+ writable: false
+});
+
+Object.defineProperty(this, "SecurityLevelPanel", {
+ value: SecurityLevelPanel,
+ enumerable: true,
+ writable: false
+});
+
+Object.defineProperty(this, "SecurityLevelPreferences", {
+ value: SecurityLevelPreferences,
+ enumerable: true,
+ writable: false
+});
diff --git a/browser/components/securitylevel/content/securityLevelButton.css b/browser/components/securitylevel/content/securityLevelButton.css
new file mode 100644
index 000000000000..81f2365bae28
--- /dev/null
+++ b/browser/components/securitylevel/content/securityLevelButton.css
@@ -0,0 +1,9 @@
+toolbarbutton#security-level-button.standard {
+ list-style-image: url("chrome://browser/content/securitylevel/securityLevelButton.svg#standard");
+}
+toolbarbutton#security-level-button.safer {
+ list-style-image: url("chrome://browser/content/securitylevel/securityLevelButton.svg#safer");
+}
+toolbarbutton#security-level-button.safest {
+ list-style-image: url("chrome://browser/content/securitylevel/securityLevelButton.svg#safest");
+}
diff --git a/browser/components/securitylevel/content/securityLevelButton.inc.xhtml b/browser/components/securitylevel/content/securityLevelButton.inc.xhtml
new file mode 100644
index 000000000000..96ee1ec0ca49
--- /dev/null
+++ b/browser/components/securitylevel/content/securityLevelButton.inc.xhtml
@@ -0,0 +1,7 @@
+<toolbarbutton id="security-level-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
+ badged="true"
+ removable="true"
+ onmousedown="SecurityLevelButton.onCommand(event);"
+ onkeypress="SecurityLevelButton.onCommand(event);"
+ closemenu="none"
+ cui-areatype="toolbar"/>
diff --git a/browser/components/securitylevel/content/securityLevelButton.svg b/browser/components/securitylevel/content/securityLevelButton.svg
new file mode 100644
index 000000000000..8535cdcc531e
--- /dev/null
+++ b/browser/components/securitylevel/content/securityLevelButton.svg
@@ -0,0 +1,21 @@
+<svg width="14px" height="16px" viewBox="0 0 14 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <style>
+ use:not(:target) {
+ display: none;
+ }
+ </style>
+ <defs>
+ <g id="standard_icon" stroke="none" stroke-width="1">
+ <path d="M7.0 2.16583509C7.0 2.16583509 2.0 4.24375717 2.0 4.24375717C2.0 4.24375717 2.0 7.27272727 2.0 7.27272727C2.0 10.2413541 4.13435329 13.0576771 7.0 13.9315843C9.8656467 13.0576771 12.0 10.2413541 12.0 7.27272727C12.0 7.27272727 12.0 4.24375717 12.0 4.24375717C12.0 4.24375717 7.0 2.16583509 7.0 2.16583509C7.0 2.16583509 7.0 2.16583509 7.0 2.16583509M7.0 0.0C7.0 0.0 14.0 2.90909091 14.0 2.90909091C14.0 2.90909091 14.0 7.27272727 14.0 7.27272727C14.0 11.3090909 11.0133333 15.0836364 7.0 16.0C2.98666667 15.0836364 0.0 11.3090909 0.0 7.27272727C0.0 7.27272727 0.0 2.90909091 0.0 2.90909091C0.0 2.90909091 7.0 0.0 7.0 0.0C7.0 0.0 7.0 0.0 7.0 0.0" />
+ </g>
+ <g id="safer_icon" stroke="none" stroke-width="1">
+ <path fill-rule="nonzero" d="M7.0 2.1658351C7.0 13.931584 7.0 2.1658351 7.0 13.931584C9.8656467 13.057677 12.0 10.241354 12.0 7.2727273C12.0 7.2727273 12.0 4.2437572 12.0 4.2437572C12.0 4.2437572 7.0 2.1658351 7.0 2.1658351C7.0 2.1658351 7.0 2.1658351 7.0 2.1658351M7.0 0.0C7.0 0.0 14.0 2.9090909 14.0 2.9090909C14.0 2.9090909 14.0 7.2727273 14.0 7.2727273C14.0 11.309091 11.013333 15.083636 7.0 16.0C2.9866667 15.083636 0.0 11.309091 0.0 7.2727273C0.0 7.2727273 0.0 2.9090909 0.0 2.9090909C0.0 2.9090909 7.0 0.0 7.0 0.0"/>
+ </g>
+ <g id="safest_icon" stroke="none" stroke-width="1">
+ <path d="M7.0 0.0C7.0 0.0 14.0 2.90909091 14.0 2.90909091C14.0 2.90909091 14.0 7.27272727 14.0 7.27272727C14.0 11.3090909 11.0133333 15.0836364 7.0 16.0C2.98666667 15.0836364 0.0 11.3090909 0.0 7.27272727C0.0 7.27272727 0.0 2.90909091 0.0 2.90909091C0.0 2.90909091 7.0 0.0 7.0 0.0C7.0 0.0 7.0 0.0 7.0 0.0" />
+ </g>
+ </defs>
+ <use id="standard" fill="context-fill" fill-opacity="context-fill-opacity" href="#standard_icon" />
+ <use id="safer" fill="context-fill" fill-opacity="context-fill-opacity" href="#safer_icon" />
+ <use id="safest" fill="context-fill" fill-opacity="context-fill-opacity" href="#safest_icon" />
+</svg>
diff --git a/browser/components/securitylevel/content/securityLevelPanel.css b/browser/components/securitylevel/content/securityLevelPanel.css
new file mode 100644
index 000000000000..70022e2bd4b2
--- /dev/null
+++ b/browser/components/securitylevel/content/securityLevelPanel.css
@@ -0,0 +1,82 @@
+/* Security Level CSS */
+
+panel#securityLevel-panel > .panel-arrowcontainer > .panel-arrowcontent {
+ padding: 0;
+}
+
+panelview#securityLevel-panelview {
+ width: 20em;
+}
+
+panelview#securityLevel-panelview>vbox.panel-subview-body {
+ padding: 1em;
+}
+
+label#securityLevel-header {
+ text-transform: uppercase;
+ color: var(--panel-disabled-color);
+ font-size: 0.85em;
+ margin: 0 0 0.4em 0;
+ padding: 0;
+}
+
+hbox#securityLevel-levelHbox {
+ margin-bottom: 1em;
+}
+
+label#securityLevel-level {
+ font-size: 1.5em;
+ margin: 0 0.5em 0 0;
+ padding: 0;
+}
+
+label#securityLevel-customWarning {
+ border-radius: 2px;
+ background-color: #ffe845;
+ text-transform: uppercase;
+ font-weight: bolder;
+ font-size: 0.8em;
+ height: 1em;
+ line-height: 1em;
+ vertical-align: middle;
+ margin: auto;
+ padding: 0.4em;
+}
+
+panelview#securityLevel-panelview description {
+ margin: 0 -0.5em 0.5em 0;
+ padding: 0 !important;
+}
+
+label#securityLevel-learnMore {
+ margin: 0 0 1.0em 0;
+ padding: 0;
+}
+
+panelview#securityLevel-panelview button {
+ -moz-appearance: none;
+ background-color: var(--arrowpanel-dimmed);
+}
+
+panelview#securityLevel-panelview button:hover {
+ background-color: var(--arrowpanel-dimmed-further);
+}
+
+panelview#securityLevel-panelview button:active {
+ background-color: var(--arrowpanel-dimmed-even-further);
+}
+
+button#securityLevel-restoreDefaults {
+ margin: 0 0 1.0em 0;
+ padding: 0.45em;
+ color: inherit !important;
+}
+
+button#securityLevel-advancedSecuritySettings {
+ margin: 0 -1.0em -1.0em -1.0em;
+ border-radius: 0;
+ border-top: 1px solid var(--panel-separator-color);
+ padding: 0;
+ height: 3.0em;
+ color: inherit !important;
+}
diff --git a/browser/components/securitylevel/content/securityLevelPanel.inc.xhtml b/browser/components/securitylevel/content/securityLevelPanel.inc.xhtml
new file mode 100644
index 000000000000..4abbb12dd856
--- /dev/null
+++ b/browser/components/securitylevel/content/securityLevelPanel.inc.xhtml
@@ -0,0 +1,38 @@
+<panel id="securityLevel-panel"
+ role="group"
+ type="arrow"
+ orient="vertical"
+ level="top"
+ hidden="true"
+ class="panel-no-padding"
+ onpopupshown="SecurityLevelPanel.onPopupShown(event);"
+ onpopuphidden="SecurityLevelPanel.onPopupHidden(event);"
+ >
+ <panelmultiview mainViewId="securityLevel-panelview">
+ <panelview id="securityLevel-panelview" descriptionheightworkaround="true">
+ <vbox class="panel-subview-body">
+ <label id="securityLevel-header"/>
+ <hbox id="securityLevel-levelHbox">
+ <label id="securityLevel-level"/>
+ <vbox>
+ <spacer flex="1"/>
+ <label id="securityLevel-customWarning"/>
+ <spacer flex="1"/>
+ </vbox>
+ </hbox>
+ <description id="securityLevel-summary"/>
+ <label
+ id="securityLevel-learnMore"
+ class="learnMore text-link"
+ onclick="SecurityLevelPanel.hide();"
+ is="text-link"/>
+ <button
+ id="securityLevel-restoreDefaults"
+ oncommand="SecurityLevelPanel.restoreDefaults();"/>
+ <button
+ id="securityLevel-advancedSecuritySettings"
+ oncommand="SecurityLevelPanel.openAdvancedSecuritySettings();"/>
+ </vbox>
+ </panelview>
+ </panelmultiview>
+</panel>
diff --git a/browser/components/securitylevel/content/securityLevelPreferences.css b/browser/components/securitylevel/content/securityLevelPreferences.css
new file mode 100644
index 000000000000..0d1040d177d8
--- /dev/null
+++ b/browser/components/securitylevel/content/securityLevelPreferences.css
@@ -0,0 +1,26 @@
+label#securityLevel-customWarning {
+ border-radius: 2px;
+ background-color: #ffe845;
+ text-transform: uppercase;
+ font-weight: bolder;
+ font-size: 0.7em;
+ height: 1em;
+ line-height: 1em;
+ padding: 0.35em;
+}
+
+radiogroup#securityLevel-radiogroup radio {
+ font-weight: bold;
+}
+
+vbox#securityLevel-vbox-standard,
+vbox#securityLevel-vbox-safer,
+vbox#securityLevel-vbox-safest {
+ margin-top: 0.4em;
+}
+
+vbox#securityLevel-vbox-standard description.indent,
+vbox#securityLevel-vbox-safer description.indent,
+vbox#securityLevel-vbox-safest description.indent {
+ margin-inline-start: 0 !important;
+}
diff --git a/browser/components/securitylevel/content/securityLevelPreferences.inc.xhtml b/browser/components/securitylevel/content/securityLevelPreferences.inc.xhtml
new file mode 100644
index 000000000000..a108d44a7b51
--- /dev/null
+++ b/browser/components/securitylevel/content/securityLevelPreferences.inc.xhtml
@@ -0,0 +1,62 @@
+<groupbox id="securityLevel-groupbox" data-category="panePrivacy" hidden="true">
+ <label><html:h2 id="securityLevel-header"/></label>
+ <vbox data-subcategory="securitylevel" flex="1">
+ <description flex="1">
+ <html:span id="securityLevel-overview" class="tail-with-learn-more"/>
+ <label id="securityLevel-learnMore" class="learnMore text-link" is="text-link"/>
+ </description>
+ <radiogroup id="securityLevel-radiogroup">
+ <vbox id="securityLevel-vbox-standard">
+ <hbox>
+ <radio value="standard"/>
+ <vbox>
+ <spacer flex="1"/>
+ <label id="securityLevel-customWarning"/>
+ <spacer flex="1"/>
+ </vbox>
+ </hbox>
+ <description flex="1">
+ <html:span id="securityLevel-summary" class="tail-with-learn-more"/>
+ <label id="securityLevel-restoreDefaults"
+ class="learnMore text-link"/>
+ </description>
+ </vbox>
+ <vbox id="securityLevel-vbox-safer">
+ <hbox>
+ <radio value="safer"/>
+ <vbox>
+ <spacer flex="1"/>
+ <label id="securityLevel-customWarning"/>
+ <spacer flex="1"/>
+ </vbox>
+ </hbox>
+ <description flex="1">
+ <html:span id="securityLevel-summary" class="tail-with-learn-more"/>
+ <label id="securityLevel-restoreDefaults"
+ class="learnMore text-link"/>
+ </description>
+ <description id="securityLevel-description1" class="indent tip-caption"/>
+ <description id="securityLevel-description2" class="indent tip-caption"/>
+ <description id="securityLevel-description3" class="indent tip-caption"/>
+ </vbox>
+ <vbox id="securityLevel-vbox-safest">
+ <hbox>
+ <radio value="safest"/>
+ <vbox>
+ <spacer flex="1"/>
+ <label id="securityLevel-customWarning"/>
+ <spacer flex="1"/>
+ </vbox>
+ </hbox>
+ <description flex="1">
+ <html:span id="securityLevel-summary" class="tail-with-learn-more"/>
+ <label id="securityLevel-restoreDefaults"
+ class="learnMore text-link"/>
+ </description>
+ <description id="securityLevel-description1" class="indent tip-caption"/>
+ <description id="securityLevel-description2" class="indent tip-caption"/>
+ <description id="securityLevel-description3" class="indent tip-caption"/>
+ </vbox>
+ </radiogroup>
+ </vbox>
+</groupbox>
diff --git a/browser/components/securitylevel/jar.mn b/browser/components/securitylevel/jar.mn
new file mode 100644
index 000000000000..9ac408083fbc
--- /dev/null
+++ b/browser/components/securitylevel/jar.mn
@@ -0,0 +1,6 @@
+browser.jar:
+ content/browser/securitylevel/securityLevel.js (content/securityLevel.js)
+ content/browser/securitylevel/securityLevelPanel.css (content/securityLevelPanel.css)
+ content/browser/securitylevel/securityLevelButton.css (content/securityLevelButton.css)
+ content/browser/securitylevel/securityLevelPreferences.css (content/securityLevelPreferences.css)
+ content/browser/securitylevel/securityLevelButton.svg (content/securityLevelButton.svg)
diff --git a/browser/components/securitylevel/moz.build b/browser/components/securitylevel/moz.build
new file mode 100644
index 000000000000..2661ad7cb9f3
--- /dev/null
+++ b/browser/components/securitylevel/moz.build
@@ -0,0 +1 @@
+JAR_MANIFESTS += ["jar.mn"]
1
0
[tor-browser/tor-browser-85.0-10.0-1] Bug 26353: Prevent speculative connect that violated FPI.
by sysrqb@torproject.org 22 Jan '21
by sysrqb@torproject.org 22 Jan '21
22 Jan '21
commit eb71fc54de8181a986223be46b225d2c4c980f5e
Author: Arthur Edelstein <arthuredelstein(a)gmail.com>
Date: Sat Jul 14 08:50:55 2018 -0700
Bug 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.
---
toolkit/components/remotebrowserutils/RemoteWebNavigation.jsm | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/toolkit/components/remotebrowserutils/RemoteWebNavigation.jsm b/toolkit/components/remotebrowserutils/RemoteWebNavigation.jsm
index 568e70688dc4..e1adbc72bdad 100644
--- a/toolkit/components/remotebrowserutils/RemoteWebNavigation.jsm
+++ b/toolkit/components/remotebrowserutils/RemoteWebNavigation.jsm
@@ -93,6 +93,9 @@ class RemoteWebNavigation {
}
uri = Services.uriFixup.getFixupURIInfo(aURI, fixupFlags).preferredURI;
+/*******************************************************************************
+ TOR BROWSER: Disable the following speculative connect until
+ we can make it properly obey first-party isolation.
// We know the url is going to be loaded, let's start requesting network
// connection before the content process asks.
@@ -116,6 +119,7 @@ class RemoteWebNavigation {
}
Services.io.speculativeConnect(uri, principal, null);
}
+*******************************************************************************/
} catch (ex) {
// Can't setup speculative connection for this uri string for some
// reason (such as failing to parse the URI), just ignore it.
1
0
[tor-browser/tor-browser-85.0-10.0-1] Bug 28369: Stop shipping pingsender executable
by sysrqb@torproject.org 22 Jan '21
by sysrqb@torproject.org 22 Jan '21
22 Jan '21
commit 834aca63011ebb51cbfbdbf3f3a2bcce85e40ef2
Author: Alex Catarineu <acat(a)torproject.org>
Date: Wed Apr 10 17:52:51 2019 +0200
Bug 28369: Stop shipping pingsender executable
---
browser/app/macbuild/Contents/MacOS-files.in | 1 -
browser/installer/package-manifest.in | 4 ----
browser/installer/windows/nsis/shared.nsh | 1 -
python/mozbuild/mozbuild/artifacts.py | 2 --
toolkit/components/telemetry/app/TelemetrySend.jsm | 19 +------------------
toolkit/components/telemetry/moz.build | 4 ----
6 files changed, 1 insertion(+), 30 deletions(-)
diff --git a/browser/app/macbuild/Contents/MacOS-files.in b/browser/app/macbuild/Contents/MacOS-files.in
index 3c6a1db5d6ea..bebc656a0a05 100644
--- a/browser/app/macbuild/Contents/MacOS-files.in
+++ b/browser/app/macbuild/Contents/MacOS-files.in
@@ -16,7 +16,6 @@
#if defined(MOZ_CRASHREPORTER)
/minidump-analyzer
#endif
-/pingsender
/pk12util
/ssltunnel
/xpcshell
diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in
index 937afa28fd71..6c314a352c3b 100644
--- a/browser/installer/package-manifest.in
+++ b/browser/installer/package-manifest.in
@@ -448,10 +448,6 @@ bin/libfreebl_64int_3.so
@BINPATH@/minidump-analyzer@BIN_SUFFIX@
#endif
-; [ Ping Sender ]
-;
-@BINPATH@/pingsender@BIN_SUFFIX@
-
; Shutdown Terminator
@RESPATH@/components/terminator.manifest
diff --git a/browser/installer/windows/nsis/shared.nsh b/browser/installer/windows/nsis/shared.nsh
index 0673986848a7..6bb11e5e930e 100755
--- a/browser/installer/windows/nsis/shared.nsh
+++ b/browser/installer/windows/nsis/shared.nsh
@@ -1510,7 +1510,6 @@ ${RemoveDefaultBrowserAgentShortcut}
Push "crashreporter.exe"
Push "default-browser-agent.exe"
Push "minidump-analyzer.exe"
- Push "pingsender.exe"
Push "updater.exe"
Push "updateagent.exe"
Push "${FileMainEXE}"
diff --git a/python/mozbuild/mozbuild/artifacts.py b/python/mozbuild/mozbuild/artifacts.py
index 4368512302bf..a932287cdfa0 100644
--- a/python/mozbuild/mozbuild/artifacts.py
+++ b/python/mozbuild/mozbuild/artifacts.py
@@ -495,7 +495,6 @@ class LinuxArtifactJob(ArtifactJob):
"{product}/{product}",
"{product}/{product}-bin",
"{product}/minidump-analyzer",
- "{product}/pingsender",
"{product}/plugin-container",
"{product}/updater",
"{product}/**/*.so",
@@ -550,7 +549,6 @@ class MacArtifactJob(ArtifactJob):
"{product}-bin",
"*.dylib",
"minidump-analyzer",
- "pingsender",
"plugin-container.app/Contents/MacOS/plugin-container",
"updater.app/Contents/MacOS/org.mozilla.updater",
# 'xpcshell',
diff --git a/toolkit/components/telemetry/app/TelemetrySend.jsm b/toolkit/components/telemetry/app/TelemetrySend.jsm
index caf11f440681..ce27382be7e0 100644
--- a/toolkit/components/telemetry/app/TelemetrySend.jsm
+++ b/toolkit/components/telemetry/app/TelemetrySend.jsm
@@ -1578,23 +1578,6 @@ var TelemetrySendImpl = {
},
runPingSender(pings, observer) {
- if (AppConstants.platform === "android") {
- throw Components.Exception("", Cr.NS_ERROR_NOT_IMPLEMENTED);
- }
-
- const exeName =
- AppConstants.platform === "win" ? "pingsender.exe" : "pingsender";
-
- let exe = Services.dirsvc.get("GreBinD", Ci.nsIFile);
- exe.append(exeName);
-
- let params = pings.flatMap(ping => [ping.url, ping.path]);
- let process = Cc["@mozilla.org/process/util;1"].createInstance(
- Ci.nsIProcess
- );
- process.init(exe);
- process.startHidden = true;
- process.noShell = true;
- process.runAsync(params, params.length, observer);
+ throw Components.Exception("", Cr.NS_ERROR_NOT_IMPLEMENTED);
},
};
diff --git a/toolkit/components/telemetry/moz.build b/toolkit/components/telemetry/moz.build
index 4701fb0561e4..238b12a09ffa 100644
--- a/toolkit/components/telemetry/moz.build
+++ b/toolkit/components/telemetry/moz.build
@@ -8,10 +8,6 @@ include("/ipc/chromium/chromium-config.mozbuild")
FINAL_LIBRARY = "xul"
-DIRS = [
- "pingsender",
-]
-
DEFINES["MOZ_APP_VERSION"] = '"%s"' % CONFIG["MOZ_APP_VERSION"]
LOCAL_INCLUDES += [
1
0
[tor-browser/tor-browser-85.0-10.0-1] Bug 27511: Add new identity button to toolbar
by sysrqb@torproject.org 22 Jan '21
by sysrqb@torproject.org 22 Jan '21
22 Jan '21
commit d967f7a0d56b676ef250394454626dda345e6524
Author: Alex Catarineu <acat(a)torproject.org>
Date: Fri Oct 4 19:08:33 2019 +0200
Bug 27511: Add new identity button to toolbar
Also added 'New circuit for this site' button to CustomizableUI, but
not visible by default.
---
browser/base/content/browser.xhtml | 10 ++++++++++
.../components/customizableui/CustomizableUI.jsm | 21 +++++++++++++++++++++
browser/themes/shared/icons/new_circuit.svg | 8 ++++++++
browser/themes/shared/icons/new_identity.svg | 9 +++++++++
browser/themes/shared/jar.inc.mn | 3 +++
browser/themes/shared/menupanel.inc.css | 8 ++++++++
browser/themes/shared/toolbarbutton-icons.inc.css | 8 ++++++++
7 files changed, 67 insertions(+)
diff --git a/browser/base/content/browser.xhtml b/browser/base/content/browser.xhtml
index 5a69c08ce5e5..2782095c5cea 100644
--- a/browser/base/content/browser.xhtml
+++ b/browser/base/content/browser.xhtml
@@ -2170,6 +2170,16 @@
ondragenter="newWindowButtonObserver.onDragOver(event)"
ondragexit="newWindowButtonObserver.onDragExit(event)"/>
+ <toolbarbutton id="new-identity-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
+ label="&torbutton.context_menu.new_identity;"
+ oncommand="torbutton_new_identity();"
+ tooltiptext="&torbutton.context_menu.new_identity;"/>
+
+ <toolbarbutton id="new-circuit-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
+ label="&torbutton.context_menu.new_circuit;"
+ oncommand="torbutton_new_circuit();"
+ tooltiptext="&torbutton.context_menu.new_circuit;"/>
+
<toolbarbutton id="fullscreen-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
observes="View:FullScreen"
type="checkbox"
diff --git a/browser/components/customizableui/CustomizableUI.jsm b/browser/components/customizableui/CustomizableUI.jsm
index 5de9550f1c0c..33984d146d23 100644
--- a/browser/components/customizableui/CustomizableUI.jsm
+++ b/browser/components/customizableui/CustomizableUI.jsm
@@ -75,6 +75,8 @@ const kSubviewEvents = ["ViewShowing", "ViewHiding"];
*/
var kVersion = 16;
+var kTorVersion = 1;
+
/**
* Buttons removed from built-ins by version they were removed. kVersion must be
* bumped any time a new id is added to this. Use the button id as key, and
@@ -575,6 +577,20 @@ var CustomizableUIInternal = {
navbarPlacements.push("fxa-toolbar-menu-button");
}
}
+
+ let currentTorVersion = gSavedState.currentTorVersion;
+ if (currentTorVersion < 1 && gSavedState.placements) {
+ let navbarPlacements = gSavedState.placements[CustomizableUI.AREA_NAVBAR];
+ if (navbarPlacements) {
+ let secLevelIndex = navbarPlacements.indexOf("security-level-button");
+ if (secLevelIndex === -1) {
+ let urlbarIndex = navbarPlacements.indexOf("urlbar-container");
+ secLevelIndex = urlbarIndex + 1;
+ navbarPlacements.splice(secLevelIndex, 0, "security-level-button");
+ }
+ navbarPlacements.splice(secLevelIndex + 1, 0, "new-identity-button");
+ }
+ }
},
/**
@@ -2363,6 +2379,10 @@ var CustomizableUIInternal = {
gSavedState.currentVersion = 0;
}
+ if (!("currentTorVersion" in gSavedState)) {
+ gSavedState.currentTorVersion = 0;
+ }
+
gSeenWidgets = new Set(gSavedState.seen || []);
gDirtyAreaCache = new Set(gSavedState.dirtyAreaCache || []);
gNewElementCount = gSavedState.newElementCount || 0;
@@ -2441,6 +2461,7 @@ var CustomizableUIInternal = {
seen: gSeenWidgets,
dirtyAreaCache: gDirtyAreaCache,
currentVersion: kVersion,
+ currentTorVersion: kTorVersion,
newElementCount: gNewElementCount,
};
diff --git a/browser/themes/shared/icons/new_circuit.svg b/browser/themes/shared/icons/new_circuit.svg
new file mode 100644
index 000000000000..e0a93cc83502
--- /dev/null
+++ b/browser/themes/shared/icons/new_circuit.svg
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <title>Icon / New Circuit(a)1.5x</title>
+ <g id="Icon-/-New-Circuit" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+ <path d="M13.4411138,10.1446317 L9.5375349,10.1446317 C8.99786512,10.1446317 8.56164018,10.5818326 8.56164018,11.1205264 C8.56164018,11.6592203 8.99786512,12.0964212 9.5375349,12.0964212 L11.4571198,12.0964212 C10.7554515,13.0479185 9.73466563,13.692009 8.60067597,13.9359827 C8.41818366,13.9720908 8.23276366,14.0033194 8.04734366,14.0218614 C7.97219977,14.0277168 7.89803177,14.0306445 7.82288788,14.0335722 C6.07506044,14.137017 4.290149,13.4499871 3.38647049,11.857327 C2.52280367,10.3349312 2.77263271,8.15966189 3.93687511,6.87343267 C5.12453898,5.56183017 7.44814431,5.04363008 8.21226987,3.38558497 C9.01738301,4.92847451 9.60682342,5.02801577 10.853041,6.15029468 C11.2892659,6.54455615 11.9704404,7.55558307 12.1861132,8.10501179 C12.3051723,8.40949094 12.5013272,9.17947187 12.5013272,9.17947187 L14.2862386,9.17947187 C14.2091429,7.59754654 13.439162,5.96877827 12.2261248,4.93628166 C11.279507,4.13116853 10.5065984,3.84718317 9.77662911,2.8088312 C9.63219669,2.60194152 9.599
99216,2.4565332 9.56290816,2.21646311 C9.53851079,2.00762164 9.54143848,1.78511764 9.62048595,1.53919218 C9.65952174,1.41720534 9.59804037,1.28545955 9.47702943,1.23764071 L6.40296106,0.0167964277 C6.32391359,-0.0134563083 6.23413128,-0.00272146652 6.16679454,0.0480250584 L5.95502539,0.206120002 C5.85743592,0.280288 5.82815908,0.416913259 5.89159223,0.523285783 C6.70060895,1.92564648 6.36978064,2.82542141 5.8984235,3.20211676 C5.4914754,3.4900057 4.99084141,3.72226864 4.63366394,3.95453159 C3.82367132,4.47956294 3.03222071,5.02508808 2.40374451,5.76774396 C0.434388969,8.09427695 0.519291809,12.0046871 2.77165682,14.1077402 C3.65288975,14.9284676 4.70295247,15.4749686 5.81742423,15.7570022 C5.81742423,15.7570022 6.13556591,15.833122 6.21754107,15.8497122 C7.36616915,16.0829511 8.53529102,16.0146384 9.62243774,15.6672199 C9.67416016,15.6525815 9.77174963,15.620377 9.76784605,15.6154975 C10.7730176,15.2700308 11.7049971,14.7010841 12.4652191,13.90573 L12.4652191,15.0241053 C12.4652191,
15.5627992 12.901444,16 13.4411138,16 C13.9798077,16 14.4170085,15.5627992 14.4170085,15.0241053 L14.4170085,11.1205264 C14.4170085,10.5818326 13.9798077,10.1446317 13.4411138,10.1446317" id="Fill-3" fill="context-fill" fill-opacity="context-fill-opacity"></path>
+ <path d="M5.107,7.462 C4.405,8.078 4,8.946 4,9.839 C4,10.712 4.422,11.57 5.13,12.132 C5.724,12.607 6.627,12.898 7.642,12.949 L7.642,5.8 C7.39,6.029 7.103,6.227 6.791,6.387 C5.993,6.812 5.489,7.133 5.107,7.462" id="Fill-1" fill="context-fill" fill-opacity="context-fill-opacity"></path>
+ </g>
+</svg>
diff --git a/browser/themes/shared/icons/new_identity.svg b/browser/themes/shared/icons/new_identity.svg
new file mode 100644
index 000000000000..91d5b35f7e80
--- /dev/null
+++ b/browser/themes/shared/icons/new_identity.svg
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <title>New Identity Icon</title>
+ <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+ <g id="New-Identity-Icon" fill="#000000" fill-rule="nonzero">
+ <path d="M4.65687153,14.5532899 L5.79494313,12.0855326 C5.8689125,11.9251399 5.6620883,11.7793527 5.53742729,11.9040137 L3.77194352,13.6694975 L2.32342782,12.2228406 L4.089841,10.4564274 C4.21450201,10.3317664 4.06871482,10.1249422 3.90832206,10.1989116 L1.43773764,11.338287 L0.206601383,10.1087306 C0.0509544211,9.9532834 -0.0167994233,9.75447206 0.00351451705,9.53432844 C0.0238284574,9.31418483 0.154794797,9.13897939 0.330406365,9.0302193 L4.61213917,6.53066101 C4.98542292,6.31331572 5.42541251,6.16259067 5.8659261,6.07796117 C6.63682488,5.92985954 7.40999434,6.06817199 8.09666802,6.42610336 L12.618483,1.910278 C13.0562019,1.47313888 13.7399062,1.45652879 14.1403159,1.87828207 C14.5407256,2.30003536 14.523905,2.96081599 14.0861861,3.39795511 L9.56437119,7.91378047 C9.92258101,8.57753432 10.0391721,9.37155544 9.91292178,10.1416209 C9.85023328,10.5817332 9.67706706,10.9989392 9.45960494,11.3937636 L6.95651989,15.6478297 C6.84761416,15.82321 6.6720026,15.9319701 6.47398108
,15.9964916 C6.25354962,16.0167745 6.0544801,15.9491049 5.89883314,15.7936577 L4.65687153,14.5532899 L4.65687153,14.5532899 Z M6.35600863,9.57888316 C6.35684236,9.57982492 6.35770616,9.58074275 6.35860024,9.58163642 L7.56801202,10.7899206 C7.78820303,11.010009 8.15567242,10.9533982 8.29166823,10.678253 C8.42766403,10.4031079 8.55818512,10.1511975 8.61427424,9.83946755 C8.73630873,9.14856819 8.51477165,8.45005355 8.01189873,7.92920397 C8.01085853,7.92816425 8.00979562,7.92715687 8.00871022,7.92618158 C8.00773493,7.92509618 8.00672754,7.92403327 8.00568783,7.92299307 C7.48483824,7.42012014 6.7863236,7.19858307 6.09542425,7.32061756 C5.78369428,7.37670668 5.53178393,7.50722777 5.25663877,7.64322357 C4.98149362,7.77921937 4.92488284,8.14668876 5.14497116,8.36687978 L6.35325537,9.57629155 C6.35414904,9.57718564 6.35506687,9.57804944 6.35600863,9.57888316 L6.35600863,9.57888316 Z M3.56503003,4.86094581 C3.44279837,4.85716019 3.33693302,4.76594656 3.31450832,4.6450962 C3.29259157,4.5009814
3 3.24425431,4.36089837 3.1719467,4.23194774 C3.04272848,4.15978087 2.90235166,4.11153221 2.75793184,4.08964745 C2.63678145,4.06729735 2.5453314,3.9616241 2.54155161,3.83961366 C2.53777182,3.71760322 2.62276629,3.61489221 2.74265726,3.59658884 C2.88757581,3.57942626 3.02687427,3.53584537 3.15371096,3.46798665 C3.21938702,3.3436261 3.26061987,3.20700605 3.27529255,3.0651408 C3.29205048,2.94466859 3.39451537,2.85825378 3.5172925,2.86104768 C3.6386065,2.86399065 3.74452528,2.95324633 3.76872081,3.07292141 C3.79288781,3.21715288 3.84342323,3.35694342 3.91777207,3.4852254 C4.04615548,3.55876237 4.18583906,3.60883869 4.32991405,3.63297757 C4.45015386,3.6576218 4.53936117,3.76418021 4.54139495,3.88559216 C4.54342874,4.00700411 4.45770065,4.10814717 4.33816215,4.12536877 C4.1960481,4.14067978 4.05931708,4.18249381 3.9349938,4.24866259 C3.86697751,4.37522253 3.82328954,4.51422019 3.80607564,4.65882867 C3.78847982,4.77811508 3.68677836,4.86339193 3.56503003,4.86094581 Z M14.4103464,14.3126948
C14.2513672,14.307719 14.1137716,14.188804 14.0849193,14.0314492 C14.045996,13.7585014 13.9510862,13.4938971 13.8061961,13.2543814 C13.5663773,13.109665 13.301434,13.0148623 13.0281329,12.9759728 C12.8707684,12.946921 12.75198,12.8095493 12.7470672,12.6509372 C12.7421545,12.492325 12.8525523,12.3587997 13.0082799,12.3350024 C13.2816632,12.3044807 13.5433622,12.2185794 13.7775725,12.0824861 C13.9099238,11.8524988 13.992337,11.5955854 14.0197279,11.3275956 C14.0417134,11.1717293 14.1740126,11.0598594 14.3327736,11.0628895 C14.4905572,11.0667732 14.6282205,11.1831391 14.6593783,11.3389665 C14.703143,11.6110771 14.8017156,11.8740418 14.9490566,12.1117486 C15.1872615,12.2578242 15.450159,12.3559923 15.7221615,12.4004323 C15.8783433,12.4324665 15.9942186,12.5709889 15.9968634,12.7288231 C15.9995083,12.8866572 15.8881575,13.0181443 15.7328877,13.0405352 C15.4641157,13.0669716 15.2064728,13.14931 14.9763475,13.2823129 C14.8406047,13.5164173 14.7548186,13.7777086 14.724105,14.0506041 C14.70
09285,14.2056508 14.5685348,14.3162427 14.4103464,14.3126948 Z M8.37194288,2.75251202 C8.23729358,2.7482977 8.12075529,2.6475812 8.09631849,2.5143077 C8.06335201,2.28313133 7.98296703,2.05902158 7.86025062,1.85616098 C7.65713325,1.73359169 7.43273641,1.65329741 7.2012608,1.62035947 C7.06797908,1.59575373 6.9673698,1.47940513 6.96320889,1.34506671 C6.95904797,1.21072829 7.05255074,1.09763741 7.18444606,1.07748204 C7.41599123,1.0516313 7.6376403,0.978876138 7.83600755,0.863610339 C7.94810399,0.668819911 8.01790485,0.45122403 8.04110388,0.224246882 C8.05972477,0.0922341146 8.17177714,-0.00251545243 8.30624168,5.089704e-05 C8.43987839,0.00334026838 8.55647391,0.101897787 8.58286336,0.233877601 C8.61993042,0.464344927 8.70341768,0.687066016 8.82820981,0.888394549 C9.02996027,1.012115 9.25262444,1.09525963 9.4830002,1.13289867 C9.6152802,1.16003037 9.71342219,1.27735361 9.71566226,1.41103311 C9.71790232,1.5447126 9.62359245,1.65607713 9.49208487,1.67504141 C9.26444525,1.69743199 9.0462315
3,1.76716948 8.85132417,1.87981789 C8.73635526,2.07809534 8.66369764,2.2993991 8.63768445,2.53053117 C8.61805481,2.66184983 8.50592239,2.75551697 8.37194288,2.75251202 Z" id="Shape" fill="context-fill" fill-opacity="context-fill-opacity"></path>
+ </g>
+ </g>
+</svg>
\ No newline at end of file
diff --git a/browser/themes/shared/jar.inc.mn b/browser/themes/shared/jar.inc.mn
index 5163986e5df2..e772ec872491 100644
--- a/browser/themes/shared/jar.inc.mn
+++ b/browser/themes/shared/jar.inc.mn
@@ -299,3 +299,6 @@
skin/classic/browser/privatebrowsing/private-browsing.svg (../shared/privatebrowsing/private-browsing.svg)
skin/classic/browser/install-ssb.svg (../shared/install-ssb.svg)
skin/classic/browser/critical.svg (../shared/icons/critical.svg)
+
+ skin/classic/browser/new_circuit.svg (../shared/icons/new_circuit.svg)
+ skin/classic/browser/new_identity.svg (../shared/icons/new_identity.svg)
diff --git a/browser/themes/shared/menupanel.inc.css b/browser/themes/shared/menupanel.inc.css
index c919f32a1454..eae453ec5004 100644
--- a/browser/themes/shared/menupanel.inc.css
+++ b/browser/themes/shared/menupanel.inc.css
@@ -183,3 +183,11 @@ toolbarpaletteitem[place="palette"] > #bookmarks-menu-button,
-moz-context-properties: fill, fill-opacity;
fill-opacity: 0;
}
+
+#appMenuNewIdentity {
+ list-style-image: url("chrome://browser/skin/new_identity.svg");
+}
+
+#appMenuNewCircuit {
+ list-style-image: url("chrome://browser/skin/new_circuit.svg");
+}
diff --git a/browser/themes/shared/toolbarbutton-icons.inc.css b/browser/themes/shared/toolbarbutton-icons.inc.css
index c01189f645f6..ee9bdd9d4669 100644
--- a/browser/themes/shared/toolbarbutton-icons.inc.css
+++ b/browser/themes/shared/toolbarbutton-icons.inc.css
@@ -233,6 +233,14 @@ toolbar[brighttext] {
list-style-image: url("chrome://browser/skin/new-tab.svg");
}
+#new-identity-button {
+ list-style-image: url("chrome://browser/skin/new_identity.svg");
+}
+
+#new-circuit-button {
+ list-style-image: url("chrome://browser/skin/new_circuit.svg");
+}
+
#privatebrowsing-button {
list-style-image: url("chrome://browser/skin/privateBrowsing.svg");
}
1
0
[tor-browser/tor-browser-85.0-10.0-1] Bug 32092: Fix Tor Browser Support link in preferences
by sysrqb@torproject.org 22 Jan '21
by sysrqb@torproject.org 22 Jan '21
22 Jan '21
commit cc9f05a9986eb4bc86074b5da0366a4f7943ff1d
Author: Alex Catarineu <acat(a)torproject.org>
Date: Tue Oct 15 22:54:10 2019 +0200
Bug 32092: Fix Tor Browser Support link in preferences
---
browser/components/preferences/preferences.js | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/browser/components/preferences/preferences.js b/browser/components/preferences/preferences.js
index a89fddd0306d..ce338584142e 100644
--- a/browser/components/preferences/preferences.js
+++ b/browser/components/preferences/preferences.js
@@ -166,10 +166,7 @@ function init_all() {
gotoPref().then(() => {
let helpButton = document.getElementById("helpButton");
- let helpUrl =
- Services.urlFormatter.formatURLPref("app.support.baseURL") +
- "preferences";
- helpButton.setAttribute("href", helpUrl);
+ helpButton.setAttribute("href", "https://support.torproject.org/tbb");
document.getElementById("addonsButton").addEventListener("click", e => {
if (e.button >= 2) {
1
0
[tor-browser/tor-browser-85.0-10.0-1] Bug 31607: App menu items stop working on macOS
by sysrqb@torproject.org 22 Jan '21
by sysrqb@torproject.org 22 Jan '21
22 Jan '21
commit 2a712680d787d6745c2dca2368b7c152f868c732
Author: Kathy Brade <brade(a)pearlcrescent.com>
Date: Thu Oct 3 10:53:43 2019 -0400
Bug 31607: App menu items stop working on macOS
Avoid re-creating the hidden window, since this causes the nsMenuBarX
object that is associated with the app menu to be freed (which in
turn causes all of the app menu items to stop working).
More detail: There should only be one hidden window.
XREMain::XRE_mainRun() contains an explicit call to create the
hidden window and that is the normal path by which it is created.
However, when Tor Launcher's wizard/progress window is opened during
startup, a hidden window is created earlier as a side effect of
calls to nsAppShellService::GetHiddenWindow(). Then, when
XREMain::XRE_mainRun() creates its hidden window, the original one
is freed which also causes the app menu's nsMenuBarX object which
is associated with that window to be destroyed. When that happens,
the menuGroupOwner property within each Cocoa menu items's MenuItemInfo
object is cleared. This breaks the link that is necessary for
NativeMenuItemTarget's menuItemHit method to dispatch a menu item
event.
---
xpfe/appshell/nsAppShellService.cpp | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/xpfe/appshell/nsAppShellService.cpp b/xpfe/appshell/nsAppShellService.cpp
index c7c3da49d86e..1cb1c6f5a7f9 100644
--- a/xpfe/appshell/nsAppShellService.cpp
+++ b/xpfe/appshell/nsAppShellService.cpp
@@ -93,6 +93,10 @@ void nsAppShellService::EnsureHiddenWindow() {
NS_IMETHODIMP
nsAppShellService::CreateHiddenWindow() {
+ if (mHiddenWindow) {
+ return NS_OK;
+ }
+
if (!XRE_IsParentProcess()) {
return NS_ERROR_NOT_IMPLEMENTED;
}
1
0
[tor-browser/tor-browser-85.0-10.0-1] Bug 31575: Replace Firefox Home (newtab) with about:tor
by sysrqb@torproject.org 22 Jan '21
by sysrqb@torproject.org 22 Jan '21
22 Jan '21
commit 9ce5de7aad571f21dd5c7f9799eaec08190cc2f7
Author: Alex Catarineu <acat(a)torproject.org>
Date: Mon Sep 9 13:04:34 2019 +0200
Bug 31575: Replace Firefox Home (newtab) with about:tor
Avoid loading AboutNewTab in BrowserGlue.jsm in order
to avoid several network requests that we do not need. Besides,
about:newtab will now point to about:blank or about:tor (depending
on browser.newtabpage.enabled) and about:home will point to
about:tor.
---
browser/components/BrowserGlue.jsm | 33 ++----------------------
browser/components/newtab/AboutNewTabService.jsm | 15 +----------
browser/components/preferences/home.inc.xhtml | 4 +--
browser/components/preferences/preferences.xhtml | 5 +++-
browser/modules/HomePage.jsm | 2 +-
5 files changed, 10 insertions(+), 49 deletions(-)
diff --git a/browser/components/BrowserGlue.jsm b/browser/components/BrowserGlue.jsm
index 7dd8f0595cf9..613187e2b167 100644
--- a/browser/components/BrowserGlue.jsm
+++ b/browser/components/BrowserGlue.jsm
@@ -18,7 +18,6 @@ const { AppConstants } = ChromeUtils.import(
);
XPCOMUtils.defineLazyModuleGetters(this, {
- AboutNewTab: "resource:///modules/AboutNewTab.jsm",
ActorManagerParent: "resource://gre/modules/ActorManagerParent.jsm",
AddonManager: "resource://gre/modules/AddonManager.jsm",
AppMenuNotifications: "resource://gre/modules/AppMenuNotifications.jsm",
@@ -220,28 +219,6 @@ let JSWINDOWACTORS = {
matches: ["about:newinstall"],
},
- AboutNewTab: {
- parent: {
- moduleURI: "resource:///actors/AboutNewTabParent.jsm",
- },
- child: {
- moduleURI: "resource:///actors/AboutNewTabChild.jsm",
- events: {
- DOMContentLoaded: {},
- pageshow: {},
- visibilitychange: {},
- },
- },
- // The wildcard on about:newtab is for the ?endpoint query parameter
- // that is used for snippets debugging. The wildcard for about:home
- // is similar, and also allows for falling back to loading the
- // about:home document dynamically if an attempt is made to load
- // about:home?jscache from the AboutHomeStartupCache as a top-level
- // load.
- matches: ["about:home*", "about:welcome", "about:newtab*"],
- remoteTypes: ["privilegedabout"],
- },
-
AboutPlugins: {
parent: {
moduleURI: "resource:///actors/AboutPluginsParent.jsm",
@@ -1774,8 +1751,6 @@ BrowserGlue.prototype = {
// the first browser window has finished initializing
_onFirstWindowLoaded: function BG__onFirstWindowLoaded(aWindow) {
- AboutNewTab.init();
-
TabCrashHandler.init();
ProcessHangMonitor.init();
@@ -5211,12 +5186,8 @@ var AboutHomeStartupCache = {
return { pageInputStream: null, scriptInputStream: null };
}
- let state = AboutNewTab.activityStream.store.getState();
- return new Promise(resolve => {
- this._cacheDeferred = resolve;
- this.log.trace("Parent is requesting cache streams.");
- this._procManager.sendAsyncMessage(this.CACHE_REQUEST_MESSAGE, { state });
- });
+ this.log.error("Activity Stream is disabled in Tor Browser.");
+ return { pageInputStream: null, scriptInputStream: null };
},
/**
diff --git a/browser/components/newtab/AboutNewTabService.jsm b/browser/components/newtab/AboutNewTabService.jsm
index 65e4d38b8d42..9d6fcbe063a0 100644
--- a/browser/components/newtab/AboutNewTabService.jsm
+++ b/browser/components/newtab/AboutNewTabService.jsm
@@ -430,20 +430,7 @@ class BaseAboutNewTabService {
* the newtab page has no effect on the result of this function.
*/
get defaultURL() {
- // Generate the desired activity stream resource depending on state, e.g.,
- // "resource://activity-stream/prerendered/activity-stream.html"
- // "resource://activity-stream/prerendered/activity-stream-debug.html"
- // "resource://activity-stream/prerendered/activity-stream-noscripts.html"
- return [
- "resource://activity-stream/prerendered/",
- "activity-stream",
- // Debug version loads dev scripts but noscripts separately loads scripts
- this.activityStreamDebug && !this.privilegedAboutProcessEnabled
- ? "-debug"
- : "",
- this.privilegedAboutProcessEnabled ? "-noscripts" : "",
- ".html",
- ].join("");
+ return "about:tor";
}
get welcomeURL() {
diff --git a/browser/components/preferences/home.inc.xhtml b/browser/components/preferences/home.inc.xhtml
index c348e1cf754b..c37dc5e731f6 100644
--- a/browser/components/preferences/home.inc.xhtml
+++ b/browser/components/preferences/home.inc.xhtml
@@ -33,7 +33,7 @@
class="check-home-page-controlled"
data-preference-related="browser.startup.homepage">
<menupopup>
- <menuitem value="0" data-l10n-id="home-mode-choice-default" />
+ <menuitem value="0" label="&aboutTor.title;" />
<menuitem value="2" data-l10n-id="home-mode-choice-custom" />
<menuitem value="1" data-l10n-id="home-mode-choice-blank" />
</menupopup>
@@ -85,7 +85,7 @@
Preferences so we need to handle setting the pref manually.-->
<menulist id="newTabMode" flex="1" data-preference-related="browser.newtabpage.enabled">
<menupopup>
- <menuitem value="0" data-l10n-id="home-mode-choice-default" />
+ <menuitem value="0" label="&aboutTor.title;" />
<menuitem value="1" data-l10n-id="home-mode-choice-blank" />
</menupopup>
</menulist>
diff --git a/browser/components/preferences/preferences.xhtml b/browser/components/preferences/preferences.xhtml
index 7464274ac4d7..5f218b7f3e4b 100644
--- a/browser/components/preferences/preferences.xhtml
+++ b/browser/components/preferences/preferences.xhtml
@@ -14,7 +14,10 @@
<?xml-stylesheet href="chrome://browser/skin/preferences/privacy.css"?>
<?xml-stylesheet href="chrome://browser/content/securitylevel/securityLevelPreferences.css"?>
-<!DOCTYPE html>
+<!DOCTYPE html [
+<!ENTITY % aboutTorDTD SYSTEM "chrome://torbutton/locale/aboutTor.dtd">
+ %aboutTorDTD;
+]>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:html="http://www.w3.org/1999/xhtml"
diff --git a/browser/modules/HomePage.jsm b/browser/modules/HomePage.jsm
index c903787fde48..bf67b1c5d173 100644
--- a/browser/modules/HomePage.jsm
+++ b/browser/modules/HomePage.jsm
@@ -20,7 +20,7 @@ XPCOMUtils.defineLazyModuleGetters(this, {
});
const kPrefName = "browser.startup.homepage";
-const kDefaultHomePage = "about:home";
+const kDefaultHomePage = "about:tor";
const kExtensionControllerPref =
"browser.startup.homepage_override.extensionControlled";
const kHomePageIgnoreListId = "homepage-urls";
1
0
[tor-browser/tor-browser-85.0-10.0-1] Bug 31740: Remove some unnecessary RemoteSettings instances
by sysrqb@torproject.org 22 Jan '21
by sysrqb@torproject.org 22 Jan '21
22 Jan '21
commit ba0f0d2547dedd70b13c0d05dd152aef7f70a461
Author: Alex Catarineu <acat(a)torproject.org>
Date: Wed Oct 16 23:01:12 2019 +0200
Bug 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.
---
browser/app/profile/000-tor-browser.js | 3 +++
browser/components/search/SearchSERPTelemetry.jsm | 6 ------
.../url-classifier/UrlClassifierFeatureBase.cpp | 2 +-
netwerk/url-classifier/components.conf | 6 ------
security/manager/ssl/RemoteSecuritySettings.jsm | 23 ++++++++++++++++++++++
services/settings/IDBHelpers.jsm | 4 ++++
services/settings/dumps/blocklists/moz.build | 1 -
services/settings/dumps/main/moz.build | 7 -------
services/settings/dumps/security-state/moz.build | 1 -
.../components/antitracking/antitracking.manifest | 2 +-
toolkit/components/antitracking/components.conf | 7 -------
toolkit/components/search/SearchService.jsm | 2 --
12 files changed, 32 insertions(+), 32 deletions(-)
diff --git a/browser/app/profile/000-tor-browser.js b/browser/app/profile/000-tor-browser.js
index 241fb152b013..d7c7d366b24d 100644
--- a/browser/app/profile/000-tor-browser.js
+++ b/browser/app/profile/000-tor-browser.js
@@ -149,6 +149,9 @@ pref("extensions.fxmonitor.enabled", false);
pref("signon.management.page.mobileAndroidURL", "");
pref("signon.management.page.mobileAppleURL", "");
+// Disable remote "password recipes"
+pref("signon.recipes.remoteRecipesEnabled", false);
+
// Disable ServiceWorkers and push notifications by default
pref("dom.serviceWorkers.enabled", false);
pref("dom.push.enabled", false);
diff --git a/browser/components/search/SearchSERPTelemetry.jsm b/browser/components/search/SearchSERPTelemetry.jsm
index 5308f2fd7721..627413ebe918 100644
--- a/browser/components/search/SearchSERPTelemetry.jsm
+++ b/browser/components/search/SearchSERPTelemetry.jsm
@@ -89,13 +89,7 @@ class TelemetryHandler {
return;
}
- this._telemetrySettings = RemoteSettings(TELEMETRY_SETTINGS_KEY);
let rawProviderInfo = [];
- try {
- rawProviderInfo = await this._telemetrySettings.get();
- } catch (ex) {
- logConsole.error("Could not get settings:", ex);
- }
// Send the provider info to the child handler.
this._contentHandler.init(rawProviderInfo);
diff --git a/netwerk/url-classifier/UrlClassifierFeatureBase.cpp b/netwerk/url-classifier/UrlClassifierFeatureBase.cpp
index 07da1fd07374..48bcc7d10af9 100644
--- a/netwerk/url-classifier/UrlClassifierFeatureBase.cpp
+++ b/netwerk/url-classifier/UrlClassifierFeatureBase.cpp
@@ -78,7 +78,7 @@ void UrlClassifierFeatureBase::InitializePreferences() {
nsCOMPtr<nsIUrlClassifierExceptionListService> exceptionListService =
do_GetService("@mozilla.org/url-classifier/exception-list-service;1");
- if (NS_WARN_IF(!exceptionListService)) {
+ if (!exceptionListService) {
return;
}
diff --git a/netwerk/url-classifier/components.conf b/netwerk/url-classifier/components.conf
index 03a02f0ebeab..b2e667247317 100644
--- a/netwerk/url-classifier/components.conf
+++ b/netwerk/url-classifier/components.conf
@@ -13,10 +13,4 @@ Classes = [
'constructor': 'mozilla::net::ChannelClassifierService::GetSingleton',
'headers': ['mozilla/net/ChannelClassifierService.h'],
},
- {
- 'cid': '{b9f4fd03-9d87-4bfd-9958-85a821750ddc}',
- 'contract_ids': ['@mozilla.org/url-classifier/exception-list-service;1'],
- 'jsm': 'resource://gre/modules/UrlClassifierExceptionListService.jsm',
- 'constructor': 'UrlClassifierExceptionListService',
- },
]
diff --git a/security/manager/ssl/RemoteSecuritySettings.jsm b/security/manager/ssl/RemoteSecuritySettings.jsm
index 40a1d8238cdf..47e7054816a3 100644
--- a/security/manager/ssl/RemoteSecuritySettings.jsm
+++ b/security/manager/ssl/RemoteSecuritySettings.jsm
@@ -366,6 +366,16 @@ var RemoteSecuritySettings = {
class IntermediatePreloads {
constructor() {
+ this.maybeInit();
+ }
+
+ maybeInit() {
+ if (
+ this.client ||
+ !Services.prefs.getBoolPref(INTERMEDIATES_ENABLED_PREF, true)
+ ) {
+ return;
+ }
this.client = RemoteSettings(
Services.prefs.getCharPref(INTERMEDIATES_COLLECTION_PREF),
{
@@ -395,6 +405,7 @@ class IntermediatePreloads {
);
return;
}
+ this.maybeInit();
// Download attachments that are awaiting download, up to a max.
const maxDownloadsPerRun = Services.prefs.getIntPref(
@@ -705,6 +716,16 @@ function compareFilters(filterA, filterB) {
class CRLiteFilters {
constructor() {
+ this.maybeInit();
+ }
+
+ maybeInit() {
+ if (
+ this.client ||
+ !Services.prefs.getBoolPref(CRLITE_FILTERS_ENABLED_PREF, true)
+ ) {
+ return;
+ }
this.client = RemoteSettings(
Services.prefs.getCharPref(CRLITE_FILTERS_COLLECTION_PREF),
{
@@ -732,6 +753,8 @@ class CRLiteFilters {
return;
}
+ this.maybeInit();
+
let hasPriorFilter = await hasPriorData(
Ci.nsICertStorage.DATA_TYPE_CRLITE_FILTER_FULL
);
diff --git a/services/settings/IDBHelpers.jsm b/services/settings/IDBHelpers.jsm
index 5dc59c3687ef..010a5ea82987 100644
--- a/services/settings/IDBHelpers.jsm
+++ b/services/settings/IDBHelpers.jsm
@@ -188,6 +188,10 @@ async function openIDB(allowUpgrades = true) {
});
}
if (event.oldVersion < 3) {
+ // Clear existing stores for a fresh start
+ transaction.objectStore("records").clear();
+ transaction.objectStore("timestamps").clear();
+ transaction.objectStore("collections").clear();
// Attachment store
db.createObjectStore("attachments", {
keyPath: ["cid", "attachmentId"],
diff --git a/services/settings/dumps/blocklists/moz.build b/services/settings/dumps/blocklists/moz.build
index cdeb7e180c38..4ca18acd4ff6 100644
--- a/services/settings/dumps/blocklists/moz.build
+++ b/services/settings/dumps/blocklists/moz.build
@@ -10,7 +10,6 @@ with Files("**"):
# The addons blocklist is also in mobile/android/installer/package-manifest.in
FINAL_TARGET_FILES.defaults.settings.blocklists += [
"addons-bloomfilters.json",
- "addons.json",
"gfx.json",
"plugins.json",
]
diff --git a/services/settings/dumps/main/moz.build b/services/settings/dumps/main/moz.build
index d67162de87ac..c91b2b6f6264 100644
--- a/services/settings/dumps/main/moz.build
+++ b/services/settings/dumps/main/moz.build
@@ -3,17 +3,10 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
FINAL_TARGET_FILES.defaults.settings.main += [
- "anti-tracking-url-decoration.json",
"example.json",
"hijack-blocklists.json",
"language-dictionaries.json",
- "password-recipes.json",
- "search-config.json",
"search-default-override-allowlist.json",
- "search-telemetry.json",
- "sites-classification.json",
- "top-sites.json",
- "url-classifier-skip-urls.json",
]
if CONFIG["MOZ_BUILD_APP"] == "browser":
diff --git a/services/settings/dumps/security-state/moz.build b/services/settings/dumps/security-state/moz.build
index 9133cd4e3ed6..0d250ecddbe8 100644
--- a/services/settings/dumps/security-state/moz.build
+++ b/services/settings/dumps/security-state/moz.build
@@ -3,7 +3,6 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
FINAL_TARGET_FILES.defaults.settings["security-state"] += [
- "intermediates.json",
"onecrl.json",
]
diff --git a/toolkit/components/antitracking/antitracking.manifest b/toolkit/components/antitracking/antitracking.manifest
index 5eb37f9a3f99..872e6af07575 100644
--- a/toolkit/components/antitracking/antitracking.manifest
+++ b/toolkit/components/antitracking/antitracking.manifest
@@ -1 +1 @@
-category profile-after-change URLDecorationAnnotationsService @mozilla.org/tracking-url-decoration-service;1 process=main
+# category profile-after-change URLDecorationAnnotationsService @mozilla.org/tracking-url-decoration-service;1 process=main
diff --git a/toolkit/components/antitracking/components.conf b/toolkit/components/antitracking/components.conf
index c5e21b06156b..53db083e394c 100644
--- a/toolkit/components/antitracking/components.conf
+++ b/toolkit/components/antitracking/components.conf
@@ -11,13 +11,6 @@ Classes = [
'jsm': 'resource://gre/modules/TrackingDBService.jsm',
'constructor': 'TrackingDBService',
},
- {
- 'cid': '{5874af6d-5719-4e1b-b155-ef4eae7fcb32}',
- 'contract_ids': ['@mozilla.org/tracking-url-decoration-service;1'],
- 'jsm': 'resource://gre/modules/URLDecorationAnnotationsService.jsm',
- 'constructor': 'URLDecorationAnnotationsService',
- 'processes': ProcessSelector.MAIN_PROCESS_ONLY,
- },
{
'cid': '{90d1fd17-2018-4e16-b73c-a04a26fa6dd4}',
'contract_ids': ['@mozilla.org/purge-tracker-service;1'],
diff --git a/toolkit/components/search/SearchService.jsm b/toolkit/components/search/SearchService.jsm
index 6d6f0b671f29..ce2c3a7439cf 100644
--- a/toolkit/components/search/SearchService.jsm
+++ b/toolkit/components/search/SearchService.jsm
@@ -251,8 +251,6 @@ SearchService.prototype = {
// See if we have a settings file so we don't have to parse a bunch of XML.
let settings = await this._settings.get();
- this._setupRemoteSettings().catch(Cu.reportError);
-
await this._loadEngines(settings);
// If we've got this far, but the application is now shutting down,
1
0
[tor-browser/tor-browser-85.0-10.0-1] Bug 32220: Improve the letterboxing experience
by sysrqb@torproject.org 22 Jan '21
by sysrqb@torproject.org 22 Jan '21
22 Jan '21
commit cd096f9496b55d9a10920d12f660a2d337a91c82
Author: Richard Pospesel <richard(a)torproject.org>
Date: Mon Oct 28 17:42:17 2019 -0700
Bug 32220: Improve the letterboxing experience
CSS and JS changes to alter the UX surrounding letterboxing. The
browser element containing page content is now anchored to the bottom
of the toolbar, and the remaining letterbox margin is the same color
as the firefox chrome. The letterbox margin and border are tied to
the currently selected theme.
Also adds a 'needsLetterbox' property to tabbrowser.xml to fix a race
condition present when using the 'isEmpty' property. Using 'isEmpty'
as a proxy for 'needsLetterbox' resulted in over-zealous/unnecessary
letterboxing of about:blank tabs.
---
browser/base/content/browser.css | 8 ++
browser/base/content/tabbrowser-tab.js | 9 +++
browser/themes/shared/tabs.inc.css | 6 ++
.../components/resistfingerprinting/RFPHelper.jsm | 94 +++++++++++++++++++---
4 files changed, 105 insertions(+), 12 deletions(-)
diff --git a/browser/base/content/browser.css b/browser/base/content/browser.css
index 446c09e08642..384a45b293a1 100644
--- a/browser/base/content/browser.css
+++ b/browser/base/content/browser.css
@@ -85,6 +85,14 @@ body {
display: none;
}
+
+.browserStack > browser.letterboxing {
+ border-color: var(--chrome-content-separator-color);
+ border-style: solid;
+ border-width : 1px;
+ border-top: none;
+}
+
%ifdef MENUBAR_CAN_AUTOHIDE
#toolbar-menubar[autohide="true"] {
overflow: hidden;
diff --git a/browser/base/content/tabbrowser-tab.js b/browser/base/content/tabbrowser-tab.js
index 2bc18e4d7320..10e678bb1950 100644
--- a/browser/base/content/tabbrowser-tab.js
+++ b/browser/base/content/tabbrowser-tab.js
@@ -225,6 +225,15 @@
return true;
}
+ get needsLetterbox() {
+ let browser = this.linkedBrowser;
+ if (isBlankPageURL(browser.currentURI.spec)) {
+ return false;
+ }
+
+ return true;
+ }
+
get lastAccessed() {
return this._lastAccessed == Infinity ? Date.now() : this._lastAccessed;
}
diff --git a/browser/themes/shared/tabs.inc.css b/browser/themes/shared/tabs.inc.css
index a0293328d49f..44956d5cf64a 100644
--- a/browser/themes/shared/tabs.inc.css
+++ b/browser/themes/shared/tabs.inc.css
@@ -33,6 +33,12 @@
background-color: #f9f9fa;
}
+/* extend down the toolbar's colors when letterboxing is enabled*/
+#tabbrowser-tabpanels.letterboxing {
+ background-color: var(--toolbar-bgcolor);
+ background-image: var(--toolbar-bgimage);
+}
+
:root[privatebrowsingmode=temporary] #tabbrowser-tabpanels {
/* Value for --in-content-page-background in aboutPrivateBrowsing.css */
background-color: #25003e;
diff --git a/toolkit/components/resistfingerprinting/RFPHelper.jsm b/toolkit/components/resistfingerprinting/RFPHelper.jsm
index 166ad21e9013..9520d8720631 100644
--- a/toolkit/components/resistfingerprinting/RFPHelper.jsm
+++ b/toolkit/components/resistfingerprinting/RFPHelper.jsm
@@ -40,6 +40,7 @@ class _RFPHelper {
// ============================================================================
constructor() {
this._initialized = false;
+ this._borderDimensions = null;
}
init() {
@@ -361,6 +362,24 @@ class _RFPHelper {
});
}
+ getBorderDimensions(aBrowser) {
+ if (this._borderDimensions) {
+ return this._borderDimensions;
+ }
+
+ const win = aBrowser.ownerGlobal;
+ const browserStyle = win.getComputedStyle(aBrowser);
+
+ this._borderDimensions = {
+ top : parseInt(browserStyle.borderTopWidth),
+ right: parseInt(browserStyle.borderRightWidth),
+ bottom : parseInt(browserStyle.borderBottomWidth),
+ left : parseInt(browserStyle.borderLeftWidth),
+ };
+
+ return this._borderDimensions;
+ }
+
_addOrClearContentMargin(aBrowser) {
let tab = aBrowser.getTabBrowser().getTabForBrowser(aBrowser);
@@ -369,9 +388,13 @@ class _RFPHelper {
return;
}
+ // we add the letterboxing class even if the content does not need letterboxing
+ // in which case margins are set such that the borders are hidden
+ aBrowser.classList.add("letterboxing");
+
// We should apply no margin around an empty tab or a tab with system
// principal.
- if (tab.isEmpty || aBrowser.contentPrincipal.isSystemPrincipal) {
+ if (!tab.needsLetterbox || aBrowser.contentPrincipal.isSystemPrincipal) {
this._clearContentViewMargin(aBrowser);
} else {
this._roundContentView(aBrowser);
@@ -539,10 +562,29 @@ class _RFPHelper {
// Calculating the margins around the browser element in order to round the
// content viewport. We will use a 200x100 stepping if the dimension set
// is not given.
- let margins = calcMargins(containerWidth, containerHeight);
+
+ const borderDimensions = this.getBorderDimensions(aBrowser);
+ const marginDims = calcMargins(containerWidth, containerHeight - borderDimensions.top);
+
+ let margins = {
+ top : 0,
+ right : 0,
+ bottom : 0,
+ left : 0,
+ };
+
+ // snap browser element to top
+ margins.top = 0;
+ // and leave 'double' margin at the bottom
+ margins.bottom = 2 * marginDims.height - borderDimensions.bottom;
+ // identical margins left and right
+ margins.right = marginDims.width - borderDimensions.right;
+ margins.left = marginDims.width - borderDimensions.left;
+
+ const marginStyleString = `${margins.top}px ${margins.right}px ${margins.bottom}px ${margins.left}px`;
// If the size of the content is already quantized, we do nothing.
- if (aBrowser.style.margin == `${margins.height}px ${margins.width}px`) {
+ if (aBrowser.style.margin === marginStyleString) {
log("_roundContentView[" + logId + "] is_rounded == true");
if (this._isLetterboxingTesting) {
log(
@@ -563,19 +605,35 @@ class _RFPHelper {
"_roundContentView[" +
logId +
"] setting margins to " +
- margins.width +
- " x " +
- margins.height
+ marginStyleString
);
- // One cannot (easily) control the color of a margin unfortunately.
- // An initial attempt to use a border instead of a margin resulted
- // in offset event dispatching; so for now we use a colorless margin.
- aBrowser.style.margin = `${margins.height}px ${margins.width}px`;
+
+ // The margin background color is determined by the background color of the
+ // window's tabpanels#tabbrowser-tabpanels element
+ aBrowser.style.margin = marginStyleString;
});
}
_clearContentViewMargin(aBrowser) {
+ const borderDimensions = this.getBorderDimensions(aBrowser);
+ // set the margins such that the browser elements border is visible up top, but
+ // are rendered off-screen on the remaining sides
+ let margins = {
+ top : 0,
+ right : -borderDimensions.right,
+ bottom : -borderDimensions.bottom,
+ left : -borderDimensions.left,
+ };
+ const marginStyleString = `${margins.top}px ${margins.right}px ${margins.bottom}px ${margins.left}px`;
+
+ aBrowser.ownerGlobal.requestAnimationFrame(() => {
+ aBrowser.style.margin = marginStyleString;
+ });
+ }
+
+ _removeLetterboxing(aBrowser) {
aBrowser.ownerGlobal.requestAnimationFrame(() => {
+ aBrowser.classList.remove("letterboxing");
aBrowser.style.margin = "";
});
}
@@ -593,6 +651,11 @@ class _RFPHelper {
aWindow.gBrowser.addTabsProgressListener(this);
aWindow.addEventListener("TabOpen", this);
+ const tabPanel = aWindow.document.getElementById("tabbrowser-tabpanels");
+ if (tabPanel) {
+ tabPanel.classList.add("letterboxing");
+ }
+
// Rounding the content viewport.
this._updateMarginsForTabsInWindow(aWindow);
}
@@ -616,10 +679,17 @@ class _RFPHelper {
tabBrowser.removeTabsProgressListener(this);
aWindow.removeEventListener("TabOpen", this);
- // Clear all margins and tooltip for all browsers.
+ // revert tabpanel's background colors to default
+ const tabPanel = aWindow.document.getElementById("tabbrowser-tabpanels");
+ if (tabPanel) {
+ tabPanel.classList.remove("letterboxing");
+ }
+
+ // and revert each browser element to default,
+ // restore default margins and remove letterboxing class
for (let tab of tabBrowser.tabs) {
let browser = tab.linkedBrowser;
- this._clearContentViewMargin(browser);
+ this._removeLetterboxing(browser);
}
}
1
0
[tor-browser/tor-browser-85.0-10.0-1] Bug 30237: Add v3 onion services client authentication prompt
by sysrqb@torproject.org 22 Jan '21
by sysrqb@torproject.org 22 Jan '21
22 Jan '21
commit 71ba90c41a5729376468993283bfc37b75f2ec4d
Author: Kathy Brade <brade(a)pearlcrescent.com>
Date: Tue Nov 12 16:11:05 2019 -0500
Bug 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.
---
browser/actors/NetErrorChild.jsm | 7 +
browser/base/content/aboutNetError.js | 10 +-
browser/base/content/aboutNetError.xhtml | 1 +
browser/base/content/browser.js | 10 +
browser/base/content/browser.xhtml | 3 +
browser/base/content/tab-content.js | 5 +
browser/components/moz.build | 1 +
.../content/authNotificationIcon.inc.xhtml | 6 +
.../onionservices/content/authPopup.inc.xhtml | 16 ++
.../onionservices/content/authPreferences.css | 20 ++
.../content/authPreferences.inc.xhtml | 19 ++
.../onionservices/content/authPreferences.js | 66 +++++
.../components/onionservices/content/authPrompt.js | 316 +++++++++++++++++++++
.../components/onionservices/content/authUtil.jsm | 47 +++
.../onionservices/content/netError/browser.svg | 3 +
.../onionservices/content/netError/network.svg | 3 +
.../content/netError/onionNetError.css | 65 +++++
.../content/netError/onionNetError.js | 244 ++++++++++++++++
.../onionservices/content/netError/onionsite.svg | 7 +
.../onionservices/content/onionservices.css | 69 +++++
.../onionservices/content/savedKeysDialog.js | 259 +++++++++++++++++
.../onionservices/content/savedKeysDialog.xhtml | 42 +++
browser/components/onionservices/jar.mn | 9 +
browser/components/onionservices/moz.build | 1 +
browser/components/preferences/preferences.xhtml | 1 +
browser/components/preferences/privacy.inc.xhtml | 2 +
browser/components/preferences/privacy.js | 7 +
browser/themes/shared/notification-icons.inc.css | 3 +
docshell/base/nsDocShell.cpp | 81 +++++-
dom/ipc/BrowserParent.cpp | 21 ++
dom/ipc/BrowserParent.h | 3 +
dom/ipc/PBrowser.ipdl | 9 +
js/xpconnect/src/xpc.msg | 10 +
netwerk/base/nsSocketTransport2.cpp | 6 +
netwerk/socket/nsSOCKSIOLayer.cpp | 49 ++++
toolkit/modules/PopupNotifications.jsm | 6 +
toolkit/modules/RemotePageAccessManager.jsm | 1 +
.../lib/environments/frame-script.js | 1 +
xpcom/base/ErrorList.py | 22 ++
39 files changed, 1449 insertions(+), 2 deletions(-)
diff --git a/browser/actors/NetErrorChild.jsm b/browser/actors/NetErrorChild.jsm
index 82978412fe24..164fb7c95cd1 100644
--- a/browser/actors/NetErrorChild.jsm
+++ b/browser/actors/NetErrorChild.jsm
@@ -13,6 +13,8 @@ const { RemotePageChild } = ChromeUtils.import(
"resource://gre/actors/RemotePageChild.jsm"
);
+const { TorStrings } = ChromeUtils.import("resource:///modules/TorStrings.jsm");
+
XPCOMUtils.defineLazyServiceGetter(
this,
"gSerializationHelper",
@@ -33,6 +35,7 @@ class NetErrorChild extends RemotePageChild {
"RPMAddToHistogram",
"RPMRecordTelemetryEvent",
"RPMGetHttpResponseHeader",
+ "RPMGetTorStrings",
];
this.exportFunctions(exportableFunctions);
}
@@ -115,4 +118,8 @@ class NetErrorChild extends RemotePageChild {
return "";
}
+
+ RPMGetTorStrings() {
+ return Cu.cloneInto(TorStrings.onionServices, this.contentWindow);
+ }
}
diff --git a/browser/base/content/aboutNetError.js b/browser/base/content/aboutNetError.js
index 75d040e95e5d..b2e986fbbc88 100644
--- a/browser/base/content/aboutNetError.js
+++ b/browser/base/content/aboutNetError.js
@@ -3,6 +3,7 @@
* You can obtain one at http://mozilla.org/MPL/2.0/. */
/* eslint-env mozilla/frame-script */
+/* import-globals-from ../../components/onionservices/content/netError/onionNetError.js */
const formatter = new Intl.DateTimeFormat("default");
@@ -282,7 +283,10 @@ function initPage() {
errDesc = document.getElementById("ed_generic");
}
- setErrorPageStrings(err);
+ const isOnionError = err.startsWith("onionServices.");
+ if (!isOnionError) {
+ setErrorPageStrings(err);
+ }
var sd = document.getElementById("errorShortDescText");
if (sd) {
@@ -435,6 +439,10 @@ function initPage() {
span.textContent = HOST_NAME;
}
}
+
+ if (isOnionError) {
+ OnionServicesAboutNetError.initPage(document);
+ }
}
function setupErrorUI() {
diff --git a/browser/base/content/aboutNetError.xhtml b/browser/base/content/aboutNetError.xhtml
index bffb6bea4e29..bf9a54f1c8eb 100644
--- a/browser/base/content/aboutNetError.xhtml
+++ b/browser/base/content/aboutNetError.xhtml
@@ -215,6 +215,7 @@
</div>
</div>
</body>
+ <script src="chrome://browser/content/onionservices/netError/onionNetError.js"/>
<script src="chrome://browser/content/aboutNetErrorCodes.js"/>
<script src="chrome://browser/content/aboutNetError.js"/>
</html>
diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js
index f88756abddf2..6c844a56810d 100644
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -222,6 +222,11 @@ XPCOMUtils.defineLazyScriptGetter(
["SecurityLevelButton"],
"chrome://browser/content/securitylevel/securityLevel.js"
);
+XPCOMUtils.defineLazyScriptGetter(
+ this,
+ ["OnionAuthPrompt"],
+ "chrome://browser/content/onionservices/authPrompt.js"
+);
XPCOMUtils.defineLazyScriptGetter(
this,
"gEditItemOverlay",
@@ -1811,6 +1816,9 @@ var gBrowserInit = {
// Init the SecuritySettingsButton
SecurityLevelButton.init();
+ // Init the OnionAuthPrompt
+ OnionAuthPrompt.init();
+
// Certain kinds of automigration rely on this notification to complete
// their tasks BEFORE the browser window is shown. SessionStore uses it to
// restore tabs into windows AFTER important parts like gMultiProcessBrowser
@@ -2498,6 +2506,8 @@ var gBrowserInit = {
SecurityLevelButton.uninit();
+ OnionAuthPrompt.uninit();
+
gAccessibilityServiceIndicator.uninit();
if (gToolbarKeyNavEnabled) {
diff --git a/browser/base/content/browser.xhtml b/browser/base/content/browser.xhtml
index 2782095c5cea..433b5defbdb2 100644
--- a/browser/base/content/browser.xhtml
+++ b/browser/base/content/browser.xhtml
@@ -33,6 +33,7 @@
<?xml-stylesheet href="chrome://browser/skin/places/editBookmark.css" type="text/css"?>
<?xml-stylesheet href="chrome://torbutton/skin/tor-circuit-display.css" type="text/css"?>
<?xml-stylesheet href="chrome://torbutton/skin/torbutton.css" type="text/css"?>
+<?xml-stylesheet href="chrome://browser/content/onionservices/onionservices.css" type="text/css"?>
# All DTD information is stored in a separate file so that it can be shared by
# hiddenWindowMac.xhtml.
@@ -647,6 +648,7 @@
#include ../../components/downloads/content/downloadsPanel.inc.xhtml
#include ../../../devtools/startup/enableDevToolsPopup.inc.xhtml
#include ../../components/securitylevel/content/securityLevelPanel.inc.xhtml
+#include ../../components/onionservices/content/authPopup.inc.xhtml
#include browser-allTabsMenu.inc.xhtml
<hbox id="downloads-animation-container">
@@ -1835,6 +1837,7 @@
data-l10n-id="urlbar-indexed-db-notification-anchor"/>
<image id="password-notification-icon" class="notification-anchor-icon login-icon" role="button"
data-l10n-id="urlbar-password-notification-anchor"/>
+#include ../../components/onionservices/content/authNotificationIcon.inc.xhtml
<stack id="plugins-notification-icon" class="notification-anchor-icon" role="button" align="center" data-l10n-id="urlbar-plugins-notification-anchor">
<image class="plugin-icon" />
<image id="plugin-icon-badge" />
diff --git a/browser/base/content/tab-content.js b/browser/base/content/tab-content.js
index e45449d08090..5f1307cebcb7 100644
--- a/browser/base/content/tab-content.js
+++ b/browser/base/content/tab-content.js
@@ -14,6 +14,9 @@ ChromeUtils.defineModuleGetter(
"BrowserUtils",
"resource://gre/modules/BrowserUtils.jsm"
);
+var { OnionAuthUtil } = ChromeUtils.import(
+ "chrome://browser/content/onionservices/authUtil.jsm"
+);
// BrowserChildGlobal
var global = this;
@@ -54,5 +57,7 @@ if (Services.appinfo.processType == Services.appinfo.PROCESS_TYPE_CONTENT) {
Services.obs.notifyObservers(this, "tab-content-frameloader-created");
+OnionAuthUtil.addCancelMessageListener(this, docShell);
+
// This is a temporary hack to prevent regressions (bug 1471327).
void content;
diff --git a/browser/components/moz.build b/browser/components/moz.build
index c2ef3b17dd3e..2e59a2d80ccb 100644
--- a/browser/components/moz.build
+++ b/browser/components/moz.build
@@ -40,6 +40,7 @@ DIRS += [
"fxmonitor",
"migration",
"newtab",
+ "onionservices",
"originattributes",
"ion",
"places",
diff --git a/browser/components/onionservices/content/authNotificationIcon.inc.xhtml b/browser/components/onionservices/content/authNotificationIcon.inc.xhtml
new file mode 100644
index 000000000000..91274d612739
--- /dev/null
+++ b/browser/components/onionservices/content/authNotificationIcon.inc.xhtml
@@ -0,0 +1,6 @@
+# Copyright (c) 2020, The Tor Project, Inc.
+
+<image id="tor-clientauth-notification-icon"
+ class="notification-anchor-icon tor-clientauth-icon"
+ role="button"
+ tooltiptext="&torbutton.onionServices.authPrompt.tooltip;"/>
diff --git a/browser/components/onionservices/content/authPopup.inc.xhtml b/browser/components/onionservices/content/authPopup.inc.xhtml
new file mode 100644
index 000000000000..bd0ec3aa0b00
--- /dev/null
+++ b/browser/components/onionservices/content/authPopup.inc.xhtml
@@ -0,0 +1,16 @@
+# Copyright (c) 2020, The Tor Project, Inc.
+
+<popupnotification id="tor-clientauth-notification" hidden="true">
+ <popupnotificationcontent orient="vertical">
+ <description id="tor-clientauth-notification-desc"/>
+ <label id="tor-clientauth-notification-learnmore"
+ class="text-link popup-notification-learnmore-link"
+ is="text-link"/>
+ <html:div>
+ <html:input id="tor-clientauth-notification-key" type="password"/>
+ <html:div id="tor-clientauth-warning"/>
+ <checkbox id="tor-clientauth-persistkey-checkbox"
+ label="&torbutton.onionServices.authPrompt.persistCheckboxLabel;"/>
+ </html:div>
+ </popupnotificationcontent>
+</popupnotification>
diff --git a/browser/components/onionservices/content/authPreferences.css b/browser/components/onionservices/content/authPreferences.css
new file mode 100644
index 000000000000..b3fb79b26ddc
--- /dev/null
+++ b/browser/components/onionservices/content/authPreferences.css
@@ -0,0 +1,20 @@
+/* Copyright (c) 2020, The Tor Project, Inc. */
+
+#torOnionServiceKeys-overview-container {
+ margin-right: 30px;
+}
+
+#onionservices-savedkeys-tree treechildren::-moz-tree-cell-text {
+ font-size: 80%;
+}
+
+#onionservices-savedkeys-errorContainer {
+ margin-top: 4px;
+ min-height: 3em;
+}
+
+#onionservices-savedkeys-errorIcon {
+ margin-right: 4px;
+ list-style-image: url("chrome://browser/skin/warning.svg");
+ visibility: hidden;
+}
diff --git a/browser/components/onionservices/content/authPreferences.inc.xhtml b/browser/components/onionservices/content/authPreferences.inc.xhtml
new file mode 100644
index 000000000000..f69c9dde66a2
--- /dev/null
+++ b/browser/components/onionservices/content/authPreferences.inc.xhtml
@@ -0,0 +1,19 @@
+# Copyright (c) 2020, The Tor Project, Inc.
+
+<groupbox id="torOnionServiceKeys" orient="vertical"
+ data-category="panePrivacy" hidden="true">
+ <label><html:h2 id="torOnionServiceKeys-header"/></label>
+ <hbox>
+ <description id="torOnionServiceKeys-overview-container" flex="1">
+ <html:span id="torOnionServiceKeys-overview"
+ class="tail-with-learn-more"/>
+ <label id="torOnionServiceKeys-learnMore" class="learnMore text-link"
+ is="text-link"/>
+ </description>
+ <vbox align="end">
+ <button id="torOnionServiceKeys-savedKeys"
+ is="highlightable-button"
+ class="accessory-button"/>
+ </vbox>
+ </hbox>
+</groupbox>
diff --git a/browser/components/onionservices/content/authPreferences.js b/browser/components/onionservices/content/authPreferences.js
new file mode 100644
index 000000000000..52f8272020cc
--- /dev/null
+++ b/browser/components/onionservices/content/authPreferences.js
@@ -0,0 +1,66 @@
+// Copyright (c) 2020, The Tor Project, Inc.
+
+"use strict";
+
+ChromeUtils.defineModuleGetter(
+ this,
+ "TorStrings",
+ "resource:///modules/TorStrings.jsm"
+);
+
+/*
+ Onion Services Client Authentication Preferences Code
+
+ Code to handle init and update of onion services authentication section
+ in about:preferences#privacy
+*/
+
+const OnionServicesAuthPreferences = {
+ selector: {
+ groupBox: "#torOnionServiceKeys",
+ header: "#torOnionServiceKeys-header",
+ overview: "#torOnionServiceKeys-overview",
+ learnMore: "#torOnionServiceKeys-learnMore",
+ savedKeysButton: "#torOnionServiceKeys-savedKeys",
+ },
+
+ init() {
+ // populate XUL with localized strings
+ this._populateXUL();
+ },
+
+ _populateXUL() {
+ const groupbox = document.querySelector(this.selector.groupBox);
+
+ let elem = groupbox.querySelector(this.selector.header);
+ elem.textContent = TorStrings.onionServices.authPreferences.header;
+
+ elem = groupbox.querySelector(this.selector.overview);
+ elem.textContent = TorStrings.onionServices.authPreferences.overview;
+
+ elem = groupbox.querySelector(this.selector.learnMore);
+ elem.setAttribute("value", TorStrings.onionServices.learnMore);
+ elem.setAttribute("href", TorStrings.onionServices.learnMoreURL);
+
+ elem = groupbox.querySelector(this.selector.savedKeysButton);
+ elem.setAttribute(
+ "label",
+ TorStrings.onionServices.authPreferences.savedKeys
+ );
+ elem.addEventListener("command", () =>
+ OnionServicesAuthPreferences.onViewSavedKeys()
+ );
+ },
+
+ onViewSavedKeys() {
+ gSubDialog.open(
+ "chrome://browser/content/onionservices/savedKeysDialog.xhtml"
+ );
+ },
+}; // OnionServicesAuthPreferences
+
+Object.defineProperty(this, "OnionServicesAuthPreferences", {
+ value: OnionServicesAuthPreferences,
+ enumerable: true,
+ writable: false,
+});
diff --git a/browser/components/onionservices/content/authPrompt.js b/browser/components/onionservices/content/authPrompt.js
new file mode 100644
index 000000000000..d4a59ac46487
--- /dev/null
+++ b/browser/components/onionservices/content/authPrompt.js
@@ -0,0 +1,316 @@
+// Copyright (c) 2020, The Tor Project, Inc.
+
+"use strict";
+
+XPCOMUtils.defineLazyModuleGetters(this, {
+ OnionAuthUtil: "chrome://browser/content/onionservices/authUtil.jsm",
+ CommonUtils: "resource://services-common/utils.js",
+ TorStrings: "resource:///modules/TorStrings.jsm",
+});
+
+const OnionAuthPrompt = (function() {
+ // OnionServicesAuthPrompt objects run within the main/chrome process.
+ // aReason is the topic passed within the observer notification that is
+ // causing this auth prompt to be displayed.
+ function OnionServicesAuthPrompt(aBrowser, aFailedURI, aReason, aOnionName) {
+ this._browser = aBrowser;
+ this._failedURI = aFailedURI;
+ this._reasonForPrompt = aReason;
+ this._onionName = aOnionName;
+ }
+
+ OnionServicesAuthPrompt.prototype = {
+ show(aWarningMessage) {
+ let mainAction = {
+ label: TorStrings.onionServices.authPrompt.done,
+ accessKey: TorStrings.onionServices.authPrompt.doneAccessKey,
+ leaveOpen: true, // Callback is responsible for closing the notification.
+ callback: this._onDone.bind(this),
+ };
+
+ let dialogBundle = Services.strings.createBundle(
+ "chrome://global/locale/dialog.properties");
+
+ let cancelAccessKey = dialogBundle.GetStringFromName("accesskey-cancel");
+ if (!cancelAccessKey)
+ cancelAccessKey = "c"; // required by PopupNotifications.show()
+
+ let cancelAction = {
+ label: dialogBundle.GetStringFromName("button-cancel"),
+ accessKey: cancelAccessKey,
+ callback: this._onCancel.bind(this),
+ };
+
+ let _this = this;
+ let options = {
+ autofocus: true,
+ hideClose: true,
+ persistent: true,
+ removeOnDismissal: false,
+ eventCallback(aTopic) {
+ if (aTopic === "showing") {
+ _this._onPromptShowing(aWarningMessage);
+ } else if (aTopic === "shown") {
+ _this._onPromptShown();
+ } else if (aTopic === "removed") {
+ _this._onPromptRemoved();
+ }
+ }
+ };
+
+ this._prompt = PopupNotifications.show(this._browser,
+ OnionAuthUtil.domid.notification, "",
+ OnionAuthUtil.domid.anchor,
+ mainAction, [cancelAction], options);
+ },
+
+ _onPromptShowing(aWarningMessage) {
+ let xulDoc = this._browser.ownerDocument;
+ let descElem = xulDoc.getElementById(OnionAuthUtil.domid.description);
+ if (descElem) {
+ // Handle replacement of the onion name within the localized
+ // string ourselves so we can show the onion name as bold text.
+ // We do this by splitting the localized string and creating
+ // several HTML <span> elements.
+ while (descElem.firstChild)
+ descElem.removeChild(descElem.firstChild);
+
+ let fmtString = TorStrings.onionServices.authPrompt.description;
+ let prefix = "";
+ let suffix = "";
+ const kToReplace = "%S";
+ let idx = fmtString.indexOf(kToReplace);
+ if (idx < 0) {
+ prefix = fmtString;
+ } else {
+ prefix = fmtString.substring(0, idx);
+ suffix = fmtString.substring(idx + kToReplace.length);
+ }
+
+ const kHTMLNS = "http://www.w3.org/1999/xhtml";
+ let span = xulDoc.createElementNS(kHTMLNS, "span");
+ span.textContent = prefix;
+ descElem.appendChild(span);
+ span = xulDoc.createElementNS(kHTMLNS, "span");
+ span.id = OnionAuthUtil.domid.onionNameSpan;
+ span.textContent = this._onionName;
+ descElem.appendChild(span);
+ span = xulDoc.createElementNS(kHTMLNS, "span");
+ span.textContent = suffix;
+ descElem.appendChild(span);
+ }
+
+ // Set "Learn More" label and href.
+ let learnMoreElem = xulDoc.getElementById(OnionAuthUtil.domid.learnMore);
+ if (learnMoreElem) {
+ learnMoreElem.setAttribute("value", TorStrings.onionServices.learnMore);
+ learnMoreElem.setAttribute("href", TorStrings.onionServices.learnMoreURL);
+ }
+
+ this._showWarning(aWarningMessage);
+ let checkboxElem = this._getCheckboxElement();
+ if (checkboxElem) {
+ checkboxElem.checked = false;
+ }
+ },
+
+ _onPromptShown() {
+ let keyElem = this._getKeyElement();
+ if (keyElem) {
+ keyElem.setAttribute("placeholder",
+ TorStrings.onionServices.authPrompt.keyPlaceholder);
+ this._boundOnKeyFieldKeyPress = this._onKeyFieldKeyPress.bind(this);
+ this._boundOnKeyFieldInput = this._onKeyFieldInput.bind(this);
+ keyElem.addEventListener("keypress", this._boundOnKeyFieldKeyPress);
+ keyElem.addEventListener("input", this._boundOnKeyFieldInput);
+ keyElem.focus();
+ }
+ },
+
+ _onPromptRemoved() {
+ if (this._boundOnKeyFieldKeyPress) {
+ let keyElem = this._getKeyElement();
+ if (keyElem) {
+ keyElem.value = "";
+ keyElem.removeEventListener("keypress",
+ this._boundOnKeyFieldKeyPress);
+ this._boundOnKeyFieldKeyPress = undefined;
+ keyElem.removeEventListener("input", this._boundOnKeyFieldInput);
+ this._boundOnKeyFieldInput = undefined;
+ }
+ }
+ },
+
+ _onKeyFieldKeyPress(aEvent) {
+ if (aEvent.keyCode == aEvent.DOM_VK_RETURN) {
+ this._onDone();
+ } else if (aEvent.keyCode == aEvent.DOM_VK_ESCAPE) {
+ this._prompt.remove();
+ this._onCancel();
+ }
+ },
+
+ _onKeyFieldInput(aEvent) {
+ this._showWarning(undefined); // Remove the warning.
+ },
+
+ _onDone() {
+ let keyElem = this._getKeyElement();
+ if (!keyElem)
+ return;
+
+ let base64key = this._keyToBase64(keyElem.value);
+ if (!base64key) {
+ this._showWarning(TorStrings.onionServices.authPrompt.invalidKey);
+ return;
+ }
+
+ this._prompt.remove();
+
+ // Use Torbutton's controller module to add the private key to Tor.
+ let controllerFailureMsg =
+ TorStrings.onionServices.authPrompt.failedToSetKey;
+ try {
+ let { controller } =
+ Cu.import("resource://torbutton/modules/tor-control-port.js", {});
+ let torController = controller(aError => {
+ this.show(controllerFailureMsg);
+ });
+ let onionAddr = this._onionName.toLowerCase().replace(/\.onion$/, "");
+ let checkboxElem = this._getCheckboxElement();
+ let isPermanent = (checkboxElem && checkboxElem.checked);
+ torController.onionAuthAdd(onionAddr, base64key, isPermanent)
+ .then(aResponse => {
+ // Success! Reload the page.
+ this._browser.sendMessageToActor(
+ "Browser:Reload",
+ {},
+ "BrowserTab"
+ );
+ })
+ .catch(aError => {
+ if (aError.torMessage)
+ this.show(aError.torMessage);
+ else
+ this.show(controllerFailureMsg);
+ });
+ } catch (e) {
+ this.show(controllerFailureMsg);
+ }
+ },
+
+ _onCancel() {
+ // Arrange for an error page to be displayed.
+ this._browser.messageManager.sendAsyncMessage(
+ OnionAuthUtil.message.authPromptCanceled,
+ {failedURI: this._failedURI.spec,
+ reasonForPrompt: this._reasonForPrompt});
+ },
+
+ _getKeyElement() {
+ let xulDoc = this._browser.ownerDocument;
+ return xulDoc.getElementById(OnionAuthUtil.domid.keyElement);
+ },
+
+ _getCheckboxElement() {
+ let xulDoc = this._browser.ownerDocument;
+ return xulDoc.getElementById(OnionAuthUtil.domid.checkboxElement);
+ },
+
+ _showWarning(aWarningMessage) {
+ let xulDoc = this._browser.ownerDocument;
+ let warningElem =
+ xulDoc.getElementById(OnionAuthUtil.domid.warningElement);
+ let keyElem = this._getKeyElement();
+ if (warningElem) {
+ if (aWarningMessage) {
+ warningElem.textContent = aWarningMessage;
+ warningElem.removeAttribute("hidden");
+ if (keyElem)
+ keyElem.className = "invalid";
+ } else {
+ warningElem.setAttribute("hidden", "true");
+ if (keyElem)
+ keyElem.className = "";
+ }
+ }
+ },
+
+ // Returns undefined if the key is the wrong length or format.
+ _keyToBase64(aKeyString) {
+ if (!aKeyString)
+ return undefined;
+
+ let base64key;
+ if (aKeyString.length == 52) {
+ // The key is probably base32-encoded. Attempt to decode.
+ // Although base32 specifies uppercase letters, we accept lowercase
+ // as well because users may type in lowercase or copy a key out of
+ // a tor onion-auth file (which uses lowercase).
+ let rawKey;
+ try {
+ rawKey = CommonUtils.decodeBase32(aKeyString.toUpperCase());
+ } catch (e) {}
+
+ if (rawKey) try {
+ base64key = btoa(rawKey);
+ } catch (e) {}
+ } else if ((aKeyString.length == 44) &&
+ /^[a-zA-Z0-9+/]*=*$/.test(aKeyString)) {
+ // The key appears to be a correctly formatted base64 value. If not,
+ // tor will return an error when we try to add the key via the
+ // control port.
+ base64key = aKeyString;
+ }
+
+ return base64key;
+ },
+ };
+
+ let retval = {
+ init() {
+ Services.obs.addObserver(this, OnionAuthUtil.topic.clientAuthMissing);
+ Services.obs.addObserver(this, OnionAuthUtil.topic.clientAuthIncorrect);
+ },
+
+ uninit() {
+ Services.obs.removeObserver(this, OnionAuthUtil.topic.clientAuthMissing);
+ Services.obs.removeObserver(this, OnionAuthUtil.topic.clientAuthIncorrect);
+ },
+
+ // aSubject is the DOM Window or browser where the prompt should be shown.
+ // aData contains the .onion name.
+ observe(aSubject, aTopic, aData) {
+ if ((aTopic != OnionAuthUtil.topic.clientAuthMissing) &&
+ (aTopic != OnionAuthUtil.topic.clientAuthIncorrect)) {
+ return;
+ }
+
+ let browser;
+ if (aSubject instanceof Ci.nsIDOMWindow) {
+ let contentWindow = aSubject.QueryInterface(Ci.nsIDOMWindow);
+ browser = contentWindow.docShell.chromeEventHandler;
+ } else {
+ browser = aSubject.QueryInterface(Ci.nsIBrowser);
+ }
+
+ if (!gBrowser.browsers.some(aBrowser => aBrowser == browser)) {
+ return; // This window does not contain the subject browser; ignore.
+ }
+
+ let failedURI = browser.currentURI;
+ let authPrompt = new OnionServicesAuthPrompt(browser, failedURI,
+ aTopic, aData);
+ authPrompt.show(undefined);
+ }
+ };
+
+ return retval;
+})(); /* OnionAuthPrompt */
+
+
+Object.defineProperty(this, "OnionAuthPrompt", {
+ value: OnionAuthPrompt,
+ enumerable: true,
+ writable: false
+});
diff --git a/browser/components/onionservices/content/authUtil.jsm b/browser/components/onionservices/content/authUtil.jsm
new file mode 100644
index 000000000000..c9d83774da1f
--- /dev/null
+++ b/browser/components/onionservices/content/authUtil.jsm
@@ -0,0 +1,47 @@
+// Copyright (c) 2020, The Tor Project, Inc.
+
+"use strict";
+
+var EXPORTED_SYMBOLS = [
+ "OnionAuthUtil",
+];
+
+var { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
+
+const OnionAuthUtil = {
+ topic: {
+ clientAuthMissing: "tor-onion-services-clientauth-missing",
+ clientAuthIncorrect: "tor-onion-services-clientauth-incorrect",
+ },
+ message: {
+ authPromptCanceled: "Tor:OnionServicesAuthPromptCanceled",
+ },
+ domid: {
+ anchor: "tor-clientauth-notification-icon",
+ notification: "tor-clientauth",
+ description: "tor-clientauth-notification-desc",
+ learnMore: "tor-clientauth-notification-learnmore",
+ onionNameSpan: "tor-clientauth-notification-onionname",
+ keyElement: "tor-clientauth-notification-key",
+ warningElement: "tor-clientauth-warning",
+ checkboxElement: "tor-clientauth-persistkey-checkbox",
+ },
+
+ addCancelMessageListener(aTabContent, aDocShell) {
+ aTabContent.addMessageListener(this.message.authPromptCanceled,
+ (aMessage) => {
+ // Upon cancellation of the client authentication prompt, display
+ // the appropriate error page. When calling the docShell
+ // displayLoadError() function, we pass undefined for the failed
+ // channel so that displayLoadError() can determine that it should
+ // not display the client authentication prompt a second time.
+ let failedURI = Services.io.newURI(aMessage.data.failedURI);
+ let reasonForPrompt = aMessage.data.reasonForPrompt;
+ let errorCode =
+ (reasonForPrompt === this.topic.clientAuthMissing) ?
+ Cr.NS_ERROR_TOR_ONION_SVC_MISSING_CLIENT_AUTH :
+ Cr.NS_ERROR_TOR_ONION_SVC_BAD_CLIENT_AUTH;
+ aDocShell.displayLoadError(errorCode, failedURI, undefined, undefined);
+ });
+ },
+};
diff --git a/browser/components/onionservices/content/netError/browser.svg b/browser/components/onionservices/content/netError/browser.svg
new file mode 100644
index 000000000000..b4c433b37bbb
--- /dev/null
+++ b/browser/components/onionservices/content/netError/browser.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="72" height="65" viewBox="0 0 72 65">
+ <path fill="context-fill" fill-opacity="context-fill-opacity" d="M0.0 0.0C0.0 0.0 0.0 65.0 0.0 65.0C0.0 65.0 72.0 65.0 72.0 65.0C72.0 65.0 72.0 0.0 72.0 0.0C72.0 0.0 52.9019692 0.0 52.9019692 0.0C52.9019692 0.0 0.0 0.0 0.0 0.0C0.0 0.0 0.0 0.0 0.0 0.0M65.0 58.0C65.0 58.0 6.0 58.0 6.0 58.0C6.0 58.0 6.0 25.0 6.0 25.0C6.0 25.0 65.0 25.0 65.0 25.0C65.0 25.0 65.0 58.0 65.0 58.0C65.0 58.0 65.0 58.0 65.0 58.0M6.0 10.0C6.0 10.0 10.0 10.0 10.0 10.0C10.0 10.0 10.0 14.0 10.0 14.0C10.0 14.0 6.0 14.0 6.0 14.0C6.0 14.0 6.0 10.0 6.0 10.0C6.0 10.0 6.0 10.0 6.0 10.0M14.0 10.0C14.0 10.0 18.0 10.0 18.0 10.0C18.0 10.0 18.0 14.0 18.0 14.0C18.0 14.0 14.0 14.0 14.0 14.0C14.0 14.0 14.0 10.0 14.0 10.0C14.0 10.0 14.0 10.0 14.0 10.0M22.0 10.0C22.0 10.0 26.0 10.0 26.0 10.0C26.0 10.0 26.0 14.0 26.0 14.0C26.0 14.0 22.0 14.0 22.0 14.0C22.0 14.0 22.0 10.0 22.0 10.0C22.0 10.0 22.0 10.0 22.0 10.0" />
+</svg>
diff --git a/browser/components/onionservices/content/netError/network.svg b/browser/components/onionservices/content/netError/network.svg
new file mode 100644
index 000000000000..808c53dedd09
--- /dev/null
+++ b/browser/components/onionservices/content/netError/network.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="72" height="54" viewBox="0 0 72 54">
+ <path fill="context-fill" fill-opacity="context-fill-opacity" d="M14.0487805 54.0C6.28990244 54.0 0.0 47.3306322 0.0 39.1034585C0.0 32.0105634 4.68716488 26.0867675 10.9481707 24.585103C10.6902 23.574652 10.5365854 22.5107596 10.5365854 21.4138156C10.5365854 14.7292347 15.6471278 9.3103384 21.9512195 9.3103384C24.8076351 9.3103384 27.4126741 10.4393194 29.4146341 12.2780088C32.1344254 5.0777841 38.77452 0.0 46.5365854 0.0C56.7201249 0.0 64.9756098 8.7536733 64.9756098 19.5517479C64.9756098 20.7691677 64.8471688 21.9453428 64.6463415 23.1013144C69.0576849 26.0679606 72.0 31.2693674 72.0 37.2413909C72.0 46.5256603 64.9510244 54.0 56.195122 54.0C56.195122 54.0 14.0487805 54.0 14.0487805 54.0C14.0487805 54.0 14.0487805 54.0 14.0487805 54.0" />
+</svg>
diff --git a/browser/components/onionservices/content/netError/onionNetError.css b/browser/components/onionservices/content/netError/onionNetError.css
new file mode 100644
index 000000000000..58117ab93223
--- /dev/null
+++ b/browser/components/onionservices/content/netError/onionNetError.css
@@ -0,0 +1,65 @@
+/* Copyright (c) 2020, The Tor Project, Inc. */
+
+:root {
+ --grey-70: #38383d;
+}
+
+#onionErrorDiagramContainer {
+ margin: 60px auto;
+ width: 460px; /* 3 columns @ 140px plus 2 column gaps @ 20px */
+ display: grid;
+ grid-row-gap: 15px;
+ grid-column-gap: 20px;
+ grid-template-columns: 1fr 1fr 1fr;
+}
+
+#onionErrorDiagramContainer > div {
+ margin: auto;
+ position: relative; /* needed to allow overlay of the ok or error icon */
+}
+
+.onionErrorImage {
+ width: 72px;
+ height: 72px;
+ background-position: center;
+ background-repeat: no-repeat;
+ -moz-context-properties: fill;
+ fill: var(--grey-70);
+}
+
+#onionErrorBrowserImage {
+ background-image: url("browser.svg");
+}
+
+#onionErrorNetworkImage {
+ background-image: url("network.svg");
+}
+
+#onionErrorOnionSiteImage {
+ background-image: url("onionsite.svg");
+}
+
+/* rules to support overlay of the ok or error icon */
+.onionErrorImage[status]::after {
+ content: " ";
+ position: absolute;
+ left: -18px;
+ top: 18px;
+ width: 36px;
+ height: 36px;
+ -moz-context-properties: fill;
+ fill: var(--in-content-page-background);
+ background-color: var(--grey-70);
+ background-repeat: no-repeat;
+ background-position: center;
+ border: 3px solid var(--in-content-page-background);
+ border-radius: 50%;
+}
+
+.onionErrorImage[status="ok"]::after {
+ background-image: url("chrome://global/skin/icons/check.svg");
+}
+
+.onionErrorImage[status="error"]::after {
+ background-image: url("chrome://browser/skin/stop.svg");
+}
diff --git a/browser/components/onionservices/content/netError/onionNetError.js b/browser/components/onionservices/content/netError/onionNetError.js
new file mode 100644
index 000000000000..8fabb3f38eb7
--- /dev/null
+++ b/browser/components/onionservices/content/netError/onionNetError.js
@@ -0,0 +1,244 @@
+// Copyright (c) 2020, The Tor Project, Inc.
+
+"use strict";
+
+/* eslint-env mozilla/frame-script */
+
+var OnionServicesAboutNetError = {
+ _selector: {
+ header: ".title-text",
+ longDesc: "#errorLongDesc",
+ learnMoreContainer: "#learnMoreContainer",
+ learnMoreLink: "#learnMoreLink",
+ contentContainer: "#errorLongContent",
+ tryAgainButtonContainer: "#netErrorButtonContainer",
+ },
+ _status: {
+ ok: "ok",
+ error: "error",
+ },
+
+ _diagramInfoMap: undefined,
+
+ // Public functions (called from outside this file).
+ //
+ // This initPage() function may need to be updated if the structure of
+ // browser/base/content/aboutNetError.xhtml changes. Specifically, it
+ // references the following elements:
+ // query string parameter e
+ // class title-text
+ // id errorLongDesc
+ // id learnMoreContainer
+ // id learnMoreLink
+ // id errorLongContent
+ initPage(aDoc) {
+ const searchParams = new URLSearchParams(aDoc.documentURI.split("?")[1]);
+ const err = searchParams.get("e");
+
+ const errPrefix = "onionServices.";
+ const errName = err.substring(errPrefix.length);
+
+ this._strings = RPMGetTorStrings();
+
+ const stringsObj = this._strings[errName];
+ if (!stringsObj) {
+ return;
+ }
+
+ this._insertStylesheet(aDoc);
+
+ const pageTitle = stringsObj.pageTitle;
+ const header = stringsObj.header;
+ const longDescription = stringsObj.longDescription; // optional
+ const learnMoreURL = stringsObj.learnMoreURL;
+
+ if (pageTitle) {
+ aDoc.title = pageTitle;
+ }
+
+ if (header) {
+ const headerElem = aDoc.querySelector(this._selector.header);
+ if (headerElem) {
+ headerElem.textContent = header;
+ }
+ }
+
+ const ld = aDoc.querySelector(this._selector.longDesc);
+ if (ld) {
+ if (longDescription) {
+ const hexErr = this._hexErrorFromName(errName);
+ ld.textContent = longDescription.replace("%S", hexErr);
+ } else {
+ // This onion service error does not have a long description. Since
+ // it is set to a generic error string by the code in
+ // browser/base/content/aboutNetError.js, hide it here.
+ ld.style.display = "none";
+ }
+ }
+
+ if (learnMoreURL) {
+ const lmContainer = aDoc.querySelector(this._selector.learnMoreContainer);
+ if (lmContainer) {
+ lmContainer.style.display = "block";
+ }
+ const lmLink = lmContainer.querySelector(this._selector.learnMoreLink);
+ if (lmLink) {
+ lmLink.setAttribute("href", learnMoreURL);
+ }
+ }
+
+ // Remove the "Try Again" button if the user made a typo in the .onion
+ // address since it is not useful in that case.
+ if (errName === "badAddress") {
+ const tryAgainButton = aDoc.querySelector(
+ this._selector.tryAgainButtonContainer
+ );
+ if (tryAgainButton) {
+ tryAgainButton.style.display = "none";
+ }
+ }
+
+ this._insertDiagram(aDoc, errName);
+ }, // initPage()
+
+ _insertStylesheet(aDoc) {
+ const url =
+ "chrome://browser/content/onionservices/netError/onionNetError.css";
+ let linkElem = aDoc.createElement("link");
+ linkElem.rel = "stylesheet";
+ linkElem.href = url;
+ linkElem.type = "text/css";
+ aDoc.head.appendChild(linkElem);
+ },
+
+ _insertDiagram(aDoc, aErrorName) {
+ // The onion error diagram consists of a grid of div elements.
+ // The first row contains three images (Browser, Network, Onionsite) and
+ // the second row contains labels for the images that are in the first row.
+ // The _diagramInfoMap describes for each type of onion service error
+ // whether a small ok or error status icon is overlaid on top of the main
+ // Browser/Network/Onionsite images.
+ if (!this._diagramInfoMap) {
+ this._diagramInfoMap = new Map();
+ this._diagramInfoMap.set("descNotFound", {
+ browser: this._status.ok,
+ network: this._status.ok,
+ onionSite: this._status.error,
+ });
+ this._diagramInfoMap.set("descInvalid", {
+ browser: this._status.ok,
+ network: this._status.error,
+ });
+ this._diagramInfoMap.set("introFailed", {
+ browser: this._status.ok,
+ network: this._status.error,
+ });
+ this._diagramInfoMap.set("rendezvousFailed", {
+ browser: this._status.ok,
+ network: this._status.error,
+ });
+ this._diagramInfoMap.set("clientAuthMissing", {
+ browser: this._status.error,
+ });
+ this._diagramInfoMap.set("clientAuthIncorrect", {
+ browser: this._status.error,
+ });
+ this._diagramInfoMap.set("badAddress", {
+ browser: this._status.error,
+ });
+ this._diagramInfoMap.set("introTimedOut", {
+ browser: this._status.ok,
+ network: this._status.error,
+ });
+ }
+
+ const diagramInfo = this._diagramInfoMap.get(aErrorName);
+
+ const container = this._createDiv(aDoc, "onionErrorDiagramContainer");
+ const imageClass = "onionErrorImage";
+
+ const browserImage = this._createDiv(
+ aDoc,
+ "onionErrorBrowserImage",
+ imageClass,
+ container
+ );
+ if (diagramInfo && diagramInfo.browser) {
+ browserImage.setAttribute("status", diagramInfo.browser);
+ }
+
+ const networkImage = this._createDiv(
+ aDoc,
+ "onionErrorNetworkImage",
+ imageClass,
+ container
+ );
+ if (diagramInfo && diagramInfo.network) {
+ networkImage.setAttribute("status", diagramInfo.network);
+ }
+
+ const onionSiteImage = this._createDiv(
+ aDoc,
+ "onionErrorOnionSiteImage",
+ imageClass,
+ container
+ );
+ if (diagramInfo && diagramInfo.onionSite) {
+ onionSiteImage.setAttribute("status", diagramInfo.onionSite);
+ }
+
+ let labelDiv = this._createDiv(aDoc, undefined, undefined, container);
+ labelDiv.textContent = this._strings.errorPage.browser;
+ labelDiv = this._createDiv(aDoc, undefined, undefined, container);
+ labelDiv.textContent = this._strings.errorPage.network;
+ labelDiv = this._createDiv(aDoc, undefined, undefined, container);
+ labelDiv.textContent = this._strings.errorPage.onionSite;
+
+ const contentContainer = aDoc.querySelector(
+ this._selector.contentContainer
+ );
+ if (contentContainer) {
+ contentContainer.insertBefore(container, contentContainer.firstChild);
+ }
+ }, // _insertDiagram()
+
+ _createDiv(aDoc, aID, aClass, aParentElem) {
+ const div = aDoc.createElement("div");
+ if (aID) {
+ div.id = aID;
+ }
+ if (aClass) {
+ div.setAttribute("class", aClass);
+ }
+ if (aParentElem) {
+ aParentElem.appendChild(div);
+ }
+
+ return div;
+ },
+
+ _hexErrorFromName(aErrorName) {
+ // We do not have access to the original Tor SOCKS error code here, so
+ // perform a reverse mapping from the error name.
+ switch (aErrorName) {
+ case "descNotFound":
+ return "0xF0";
+ case "descInvalid":
+ return "0xF1";
+ case "introFailed":
+ return "0xF2";
+ case "rendezvousFailed":
+ return "0xF3";
+ case "clientAuthMissing":
+ return "0xF4";
+ case "clientAuthIncorrect":
+ return "0xF5";
+ case "badAddress":
+ return "0xF6";
+ case "introTimedOut":
+ return "0xF7";
+ }
+
+ return "";
+ },
+};
diff --git a/browser/components/onionservices/content/netError/onionsite.svg b/browser/components/onionservices/content/netError/onionsite.svg
new file mode 100644
index 000000000000..1f2777e6acc7
--- /dev/null
+++ b/browser/components/onionservices/content/netError/onionsite.svg
@@ -0,0 +1,7 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="70" height="63" viewBox="0 0 70 63">
+ <g fill="context-fill" fill-opacity="context-fill-opacity">
+ <path d="M64.0 2.0C64.0 2.0 4.0 2.0 4.0 2.0C2.8954305 2.0 2.0 2.81148389 2.0 3.8125C2.0 3.8125 2.0 58.1875 2.0 58.1875C2.0 59.1885161 2.8954305 60.0 4.0 60.0C4.0 60.0 36.0 60.0 36.0 60.0C36.0 60.0 36.0 56.375 36.0 56.375C36.0 56.375 6.0 56.375 6.0 56.375C6.0 56.375 6.0 41.875 6.0 41.875C6.0 41.875 38.0 41.875 38.0 41.875C38.0 41.875 38.0 38.25 38.0 38.25C38.0 38.25 6.0 38.25 6.0 38.25C6.0 38.25 6.0 23.75 6.0 23.75C6.0 23.75 62.0 23.75 62.0 23.75C62.0 23.75 62.0 36.4375 62.0 36.4375C62.0 36.4375 66.0 36.4375 66.0 36.4375C66.0 36.4375 66.0 3.8125 66.0 3.8125C66.0 2.81148389 65.1045695 2.0 64.0 2.0C64.0 2.0 64.0 2.0 64.0 2.0M62.0 20.125C62.0 20.125 6.0 20.125 6.0 20.125C6.0 20.125 6.0 5.625 6.0 5.625C6.0 5.625 62.0 5.625 62.0 5.625C62.0 5.625 62.0 20.125 62.0 20.125C62.0 20.125 62.0 20.125 62.0 20.125" />
+ <path d="M24.0 47.0C24.0 47.0 24.0 51.0 24.0 51.0C24.0 51.0 20.0 51.0 20.0 51.0C20.0 51.0 20.0 47.0 20.0 47.0C20.0 47.0 24.0 47.0 24.0 47.0C24.0 47.0 24.0 47.0 24.0 47.0M16.0 47.0C16.0 47.0 16.0 51.0 16.0 51.0C16.0 51.0 12.0 51.0 12.0 51.0C12.0 51.0 12.0 47.0 12.0 47.0C12.0 47.0 16.0 47.0 16.0 47.0C16.0 47.0 16.0 47.0 16.0 47.0M56.0 29.0C56.0 29.0 56.0 33.0 56.0 33.0C56.0 33.0 52.0 33.0 52.0 33.0C52.0 33.0 52.0 29.0 52.0 29.0C52.0 29.0 56.0 29.0 56.0 29.0C56.0 29.0 56.0 29.0 56.0 29.0M48.0 29.0C48.0 29.0 48.0 33.0 48.0 33.0C48.0 33.0 12.0 33.0 12.0 33.0C12.0 33.0 12.0 29.0 12.0 29.0C12.0 29.0 48.0 29.0 48.0 29.0C48.0 29.0 48.0 29.0 48.0 29.0M22.0 11.0C22.0 11.0 22.0 15.0 22.0 15.0C22.0 15.0 10.0 15.0 10.0 15.0C10.0 15.0 10.0 11.0 10.0 11.0C10.0 11.0 22.0 11.0 22.0 11.0C22.0 11.0 22.0 11.0 22.0 11.0M70.0 0.0C70.0 0.0 70.0 36.5 70.0 36.5C70.0 36.5 65.0 36.5 65.0 36.5C65.0 36.5 65.0 4.5 65.0 4.5C65.0 4.5 5.0 4.5 5.0 4.5C5.0 4.5 5.0 58.5 5.0 58.5C5.0 58.5 36.0 58.5 36.0 58.5C36.0 58
.5 36.0 63.0 36.0 63.0C36.0 63.0 0.0 63.0 0.0 63.0C0.0 63.0 0.0 0.0 0.0 0.0C0.0 0.0 70.0 0.0 70.0 0.0C70.0 0.0 70.0 0.0 70.0 0.0M32.0 47.0C32.0 47.0 32.0 51.0 32.0 51.0C32.0 51.0 28.0 51.0 28.0 51.0C28.0 51.0 28.0 47.0 28.0 47.0C28.0 47.0 32.0 47.0 32.0 47.0C32.0 47.0 32.0 47.0 32.0 47.0M54.0 11.0C54.0 11.0 54.0 15.0 54.0 15.0C54.0 15.0 50.0 15.0 50.0 15.0C50.0 15.0 50.0 11.0 50.0 11.0C50.0 11.0 54.0 11.0 54.0 11.0C54.0 11.0 54.0 11.0 54.0 11.0M46.0 11.0C46.0 11.0 46.0 15.0 46.0 15.0C46.0 15.0 42.0 15.0 42.0 15.0C42.0 15.0 42.0 11.0 42.0 11.0C42.0 11.0 46.0 11.0 46.0 11.0C46.0 11.0 46.0 11.0 46.0 11.0M38.0 11.0C38.0 11.0 38.0 15.0 38.0 15.0C38.0 15.0 34.0 15.0 34.0 15.0C34.0 15.0 34.0 11.0 34.0 11.0C34.0 11.0 38.0 11.0 38.0 11.0C38.0 11.0 38.0 11.0 38.0 11.0M30.0 11.0C30.0 11.0 30.0 15.0 30.0 15.0C30.0 15.0 26.0 15.0 26.0 15.0C26.0 15.0 26.0 11.0 26.0 11.0C26.0 11.0 30.0 11.0 30.0 11.0C30.0 11.0 30.0 11.0 30.0 11.0" />
+ <path d="M61.0 46.0C61.0 46.0 59.0 46.0 59.0 46.0C59.0 46.0 59.0 40.0 59.0 40.0C59.0 38.8954305 58.1045695 38.0 57.0 38.0C57.0 38.0 49.0 38.0 49.0 38.0C47.8954305 38.0 47.0 38.8954305 47.0 40.0C47.0 40.0 47.0 46.0 47.0 46.0C47.0 46.0 45.0 46.0 45.0 46.0C43.8954305 46.0 43.0 46.8954305 43.0 48.0C43.0 48.0 43.0 60.0 43.0 60.0C43.0 61.1045695 43.8954305 62.0 45.0 62.0C45.0 62.0 61.0 62.0 61.0 62.0C62.1045695 62.0 63.0 61.1045695 63.0 60.0C63.0 60.0 63.0 48.0 63.0 48.0C63.0 46.8954305 62.1045695 46.0 61.0 46.0C61.0 46.0 61.0 46.0 61.0 46.0M51.0 42.0C51.0 42.0 55.0 42.0 55.0 42.0C55.0 42.0 55.0 46.0 55.0 46.0C55.0 46.0 51.0 46.0 51.0 46.0C51.0 46.0 51.0 42.0 51.0 42.0C51.0 42.0 51.0 42.0 51.0 42.0M59.0 58.0C59.0 58.0 47.0 58.0 47.0 58.0C47.0 58.0 47.0 50.0 47.0 50.0C47.0 50.0 59.0 50.0 59.0 50.0C59.0 50.0 59.0 58.0 59.0 58.0C59.0 58.0 59.0 58.0 59.0 58.0" />
+ </g>
+</svg>
diff --git a/browser/components/onionservices/content/onionservices.css b/browser/components/onionservices/content/onionservices.css
new file mode 100644
index 000000000000..e2621ec8266d
--- /dev/null
+++ b/browser/components/onionservices/content/onionservices.css
@@ -0,0 +1,69 @@
+/* Copyright (c) 2020, The Tor Project, Inc. */
+
+@namespace html url("http://www.w3.org/1999/xhtml");
+
+html|*#tor-clientauth-notification-onionname {
+ font-weight: bold;
+}
+
+html|*#tor-clientauth-notification-key {
+ box-sizing: border-box;
+ width: 100%;
+ margin-top: 15px;
+ padding: 6px;
+}
+
+/* Start of rules adapted from
+ * browser/components/newtab/css/activity-stream-mac.css (linux and windows
+ * use the same rules).
+ */
+html|*#tor-clientauth-notification-key.invalid {
+ border: 1px solid #D70022;
+ box-shadow: 0 0 0 1px #D70022, 0 0 0 4px rgba(215, 0, 34, 0.3);
+}
+
+html|*#tor-clientauth-warning {
+ display: inline-block;
+ animation: fade-up-tt 450ms;
+ background: #D70022;
+ border-radius: 2px;
+ color: #FFF;
+ inset-inline-start: 3px;
+ padding: 5px 12px;
+ position: relative;
+ top: 6px;
+ z-index: 1;
+}
+
+html|*#tor-clientauth-warning[hidden] {
+ display: none;
+}
+
+html|*#tor-clientauth-warning::before {
+ background: #D70022;
+ bottom: -8px;
+ content: '.';
+ height: 16px;
+ inset-inline-start: 12px;
+ position: absolute;
+ text-indent: -999px;
+ top: -7px;
+ transform: rotate(45deg);
+ white-space: nowrap;
+ width: 16px;
+ z-index: -1;
+}
+
+@keyframes fade-up-tt {
+ 0% {
+ opacity: 0;
+ transform: translateY(15px);
+ }
+ 100% {
+ opacity: 1;
+ transform: translateY(0);
+ }
+}
+/* End of rules adapted from
+ * browser/components/newtab/css/activity-stream-mac.css
+ */
diff --git a/browser/components/onionservices/content/savedKeysDialog.js b/browser/components/onionservices/content/savedKeysDialog.js
new file mode 100644
index 000000000000..b1376bbabe85
--- /dev/null
+++ b/browser/components/onionservices/content/savedKeysDialog.js
@@ -0,0 +1,259 @@
+// Copyright (c) 2020, The Tor Project, Inc.
+
+"use strict";
+
+ChromeUtils.defineModuleGetter(
+ this,
+ "TorStrings",
+ "resource:///modules/TorStrings.jsm"
+);
+
+ChromeUtils.defineModuleGetter(
+ this,
+ "controller",
+ "resource://torbutton/modules/tor-control-port.js"
+);
+
+var gOnionServicesSavedKeysDialog = {
+ selector: {
+ dialog: "#onionservices-savedkeys-dialog",
+ intro: "#onionservices-savedkeys-intro",
+ tree: "#onionservices-savedkeys-tree",
+ onionSiteCol: "#onionservices-savedkeys-siteCol",
+ onionKeyCol: "#onionservices-savedkeys-keyCol",
+ errorIcon: "#onionservices-savedkeys-errorIcon",
+ errorMessage: "#onionservices-savedkeys-errorMessage",
+ removeButton: "#onionservices-savedkeys-remove",
+ removeAllButton: "#onionservices-savedkeys-removeall",
+ },
+
+ _tree: undefined,
+ _isBusy: false, // true when loading data, deleting a key, etc.
+
+ // Public functions (called from outside this file).
+ async deleteSelectedKeys() {
+ this._setBusyState(true);
+
+ const indexesToDelete = [];
+ const count = this._tree.view.selection.getRangeCount();
+ for (let i = 0; i < count; ++i) {
+ const minObj = {};
+ const maxObj = {};
+ this._tree.view.selection.getRangeAt(i, minObj, maxObj);
+ for (let idx = minObj.value; idx <= maxObj.value; ++idx) {
+ indexesToDelete.push(idx);
+ }
+ }
+
+ if (indexesToDelete.length > 0) {
+ const controllerFailureMsg =
+ TorStrings.onionServices.authPreferences.failedToRemoveKey;
+ try {
+ const torController = controller(aError => {
+ this._showError(controllerFailureMsg);
+ });
+
+ // Remove in reverse index order to avoid issues caused by index changes.
+ for (let i = indexesToDelete.length - 1; i >= 0; --i) {
+ await this._deleteOneKey(torController, indexesToDelete[i]);
+ }
+ } catch (e) {
+ if (e.torMessage) {
+ this._showError(e.torMessage);
+ } else {
+ this._showError(controllerFailureMsg);
+ }
+ }
+ }
+
+ this._setBusyState(false);
+ },
+
+ async deleteAllKeys() {
+ this._tree.view.selection.selectAll();
+ await this.deleteSelectedKeys();
+ },
+
+ updateButtonsState() {
+ const haveSelection = this._tree.view.selection.getRangeCount() > 0;
+ const dialog = document.querySelector(this.selector.dialog);
+ const removeSelectedBtn = dialog.querySelector(this.selector.removeButton);
+ removeSelectedBtn.disabled = this._isBusy || !haveSelection;
+ const removeAllBtn = dialog.querySelector(this.selector.removeAllButton);
+ removeAllBtn.disabled = this._isBusy || this.rowCount === 0;
+ },
+
+ // Private functions.
+ _onLoad() {
+ document.mozSubdialogReady = this._init();
+ },
+
+ async _init() {
+ await this._populateXUL();
+
+ window.addEventListener("keypress", this._onWindowKeyPress.bind(this));
+
+ // We don't use await here because we want _loadSavedKeys() to run
+ // in the background and not block loading of this dialog.
+ this._loadSavedKeys();
+ },
+
+ async _populateXUL() {
+ const dialog = document.querySelector(this.selector.dialog);
+ const authPrefStrings = TorStrings.onionServices.authPreferences;
+ dialog.setAttribute("title", authPrefStrings.dialogTitle);
+
+ let elem = dialog.querySelector(this.selector.intro);
+ elem.textContent = authPrefStrings.dialogIntro;
+
+ elem = dialog.querySelector(this.selector.onionSiteCol);
+ elem.setAttribute("label", authPrefStrings.onionSite);
+
+ elem = dialog.querySelector(this.selector.onionKeyCol);
+ elem.setAttribute("label", authPrefStrings.onionKey);
+
+ elem = dialog.querySelector(this.selector.removeButton);
+ elem.setAttribute("label", authPrefStrings.remove);
+
+ elem = dialog.querySelector(this.selector.removeAllButton);
+ elem.setAttribute("label", authPrefStrings.removeAll);
+
+ this._tree = dialog.querySelector(this.selector.tree);
+ },
+
+ async _loadSavedKeys() {
+ const controllerFailureMsg =
+ TorStrings.onionServices.authPreferences.failedToGetKeys;
+ this._setBusyState(true);
+
+ try {
+ this._tree.view = this;
+
+ const torController = controller(aError => {
+ this._showError(controllerFailureMsg);
+ });
+
+ const keyInfoList = await torController.onionAuthViewKeys();
+ if (keyInfoList) {
+ // Filter out temporary keys.
+ this._keyInfoList = keyInfoList.filter(aKeyInfo => {
+ if (!aKeyInfo.Flags) {
+ return false;
+ }
+
+ const flags = aKeyInfo.Flags.split(",");
+ return flags.includes("Permanent");
+ });
+
+ // Sort by the .onion address.
+ this._keyInfoList.sort((aObj1, aObj2) => {
+ const hsAddr1 = aObj1.hsAddress.toLowerCase();
+ const hsAddr2 = aObj2.hsAddress.toLowerCase();
+ if (hsAddr1 < hsAddr2) {
+ return -1;
+ }
+ return hsAddr1 > hsAddr2 ? 1 : 0;
+ });
+ }
+
+ // Render the tree content.
+ this._tree.rowCountChanged(0, this.rowCount);
+ } catch (e) {
+ if (e.torMessage) {
+ this._showError(e.torMessage);
+ } else {
+ this._showError(controllerFailureMsg);
+ }
+ }
+
+ this._setBusyState(false);
+ },
+
+ // This method may throw; callers should catch errors.
+ async _deleteOneKey(aTorController, aIndex) {
+ const keyInfoObj = this._keyInfoList[aIndex];
+ await aTorController.onionAuthRemove(keyInfoObj.hsAddress);
+ this._tree.view.selection.clearRange(aIndex, aIndex);
+ this._keyInfoList.splice(aIndex, 1);
+ this._tree.rowCountChanged(aIndex + 1, -1);
+ },
+
+ _setBusyState(aIsBusy) {
+ this._isBusy = aIsBusy;
+ this.updateButtonsState();
+ },
+
+ _onWindowKeyPress(event) {
+ if (event.keyCode === KeyEvent.DOM_VK_ESCAPE) {
+ window.close();
+ } else if (event.keyCode === KeyEvent.DOM_VK_DELETE) {
+ this.deleteSelectedKeys();
+ }
+ },
+
+ _showError(aMessage) {
+ const dialog = document.querySelector(this.selector.dialog);
+ const errorIcon = dialog.querySelector(this.selector.errorIcon);
+ errorIcon.style.visibility = aMessage ? "visible" : "hidden";
+ const errorDesc = dialog.querySelector(this.selector.errorMessage);
+ errorDesc.textContent = aMessage ? aMessage : "";
+ },
+
+ // XUL tree widget view implementation.
+ get rowCount() {
+ return this._keyInfoList ? this._keyInfoList.length : 0;
+ },
+
+ getCellText(aRow, aCol) {
+ let val = "";
+ if (this._keyInfoList && aRow < this._keyInfoList.length) {
+ const keyInfo = this._keyInfoList[aRow];
+ if (aCol.id.endsWith("-siteCol")) {
+ val = keyInfo.hsAddress;
+ } else if (aCol.id.endsWith("-keyCol")) {
+ val = keyInfo.typeAndKey;
+ // Omit keyType because it is always "x25519".
+ const idx = val.indexOf(":");
+ if (idx > 0) {
+ val = val.substring(idx + 1);
+ }
+ }
+ }
+
+ return val;
+ },
+
+ isSeparator(index) {
+ return false;
+ },
+
+ isSorted() {
+ return false;
+ },
+
+ isContainer(index) {
+ return false;
+ },
+
+ setTree(tree) {},
+
+ getImageSrc(row, column) {},
+
+ getCellValue(row, column) {},
+
+ cycleHeader(column) {},
+
+ getRowProperties(row) {
+ return "";
+ },
+
+ getColumnProperties(column) {
+ return "";
+ },
+
+ getCellProperties(row, column) {
+ return "";
+ },
+};
+
+window.addEventListener("load", () => gOnionServicesSavedKeysDialog._onLoad());
diff --git a/browser/components/onionservices/content/savedKeysDialog.xhtml b/browser/components/onionservices/content/savedKeysDialog.xhtml
new file mode 100644
index 000000000000..3db9bb05ea82
--- /dev/null
+++ b/browser/components/onionservices/content/savedKeysDialog.xhtml
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<!-- Copyright (c) 2020, The Tor Project, Inc. -->
+
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href="chrome://browser/skin/preferences/preferences.css" type="text/css"?>
+<?xml-stylesheet href="chrome://browser/content/onionservices/authPreferences.css" type="text/css"?>
+
+<window id="onionservices-savedkeys-dialog"
+ windowtype="OnionServices:SavedKeys"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ style="width: 45em;">
+
+ <script src="chrome://browser/content/onionservices/savedKeysDialog.js"/>
+
+ <vbox id="onionservices-savedkeys" class="contentPane" flex="1">
+ <label id="onionservices-savedkeys-intro"
+ control="onionservices-savedkeys-tree"/>
+ <separator class="thin"/>
+ <tree id="onionservices-savedkeys-tree" flex="1" hidecolumnpicker="true"
+ width="750"
+ style="height: 20em;"
+ onselect="gOnionServicesSavedKeysDialog.updateButtonsState();">
+ <treecols>
+ <treecol id="onionservices-savedkeys-siteCol" flex="1" persist="width"/>
+ <splitter class="tree-splitter"/>
+ <treecol id="onionservices-savedkeys-keyCol" flex="1" persist="width"/>
+ </treecols>
+ <treechildren/>
+ </tree>
+ <hbox id="onionservices-savedkeys-errorContainer" align="baseline" flex="1">
+ <image id="onionservices-savedkeys-errorIcon"/>
+ <description id="onionservices-savedkeys-errorMessage" flex="1"/>
+ </hbox>
+ <separator class="thin"/>
+ <hbox id="onionservices-savedkeys-buttons">
+ <button id="onionservices-savedkeys-remove" disabled="true"
+ oncommand="gOnionServicesSavedKeysDialog.deleteSelectedKeys();"/>
+ <button id="onionservices-savedkeys-removeall"
+ oncommand="gOnionServicesSavedKeysDialog.deleteAllKeys();"/>
+ </hbox>
+ </vbox>
+</window>
diff --git a/browser/components/onionservices/jar.mn b/browser/components/onionservices/jar.mn
new file mode 100644
index 000000000000..9d6ce88d1841
--- /dev/null
+++ b/browser/components/onionservices/jar.mn
@@ -0,0 +1,9 @@
+browser.jar:
+ content/browser/onionservices/authPreferences.css (content/authPreferences.css)
+ content/browser/onionservices/authPreferences.js (content/authPreferences.js)
+ content/browser/onionservices/authPrompt.js (content/authPrompt.js)
+ content/browser/onionservices/authUtil.jsm (content/authUtil.jsm)
+ content/browser/onionservices/netError/ (content/netError/*)
+ content/browser/onionservices/onionservices.css (content/onionservices.css)
+ content/browser/onionservices/savedKeysDialog.js (content/savedKeysDialog.js)
+ content/browser/onionservices/savedKeysDialog.xhtml (content/savedKeysDialog.xhtml)
diff --git a/browser/components/onionservices/moz.build b/browser/components/onionservices/moz.build
new file mode 100644
index 000000000000..2661ad7cb9f3
--- /dev/null
+++ b/browser/components/onionservices/moz.build
@@ -0,0 +1 @@
+JAR_MANIFESTS += ["jar.mn"]
diff --git a/browser/components/preferences/preferences.xhtml b/browser/components/preferences/preferences.xhtml
index 6c1c12044d26..3216ea5be02c 100644
--- a/browser/components/preferences/preferences.xhtml
+++ b/browser/components/preferences/preferences.xhtml
@@ -12,6 +12,7 @@
<?xml-stylesheet href="chrome://browser/skin/preferences/search.css"?>
<?xml-stylesheet href="chrome://browser/skin/preferences/containers.css"?>
<?xml-stylesheet href="chrome://browser/skin/preferences/privacy.css"?>
+<?xml-stylesheet href="chrome://browser/content/onionservices/authPreferences.css"?>
<?xml-stylesheet href="chrome://browser/content/securitylevel/securityLevelPreferences.css"?>
<?xml-stylesheet href="chrome://browser/content/torpreferences/torPreferences.css"?>
diff --git a/browser/components/preferences/privacy.inc.xhtml b/browser/components/preferences/privacy.inc.xhtml
index 229ff658c572..497d53604264 100644
--- a/browser/components/preferences/privacy.inc.xhtml
+++ b/browser/components/preferences/privacy.inc.xhtml
@@ -511,6 +511,8 @@
<label id="fips-desc" hidden="true" data-l10n-id="forms-master-pw-fips-desc"></label>
</groupbox>
+#include ../onionservices/content/authPreferences.inc.xhtml
+
<!-- The form autofill section is inserted in to this box
after the form autofill extension has initialized. -->
<groupbox id="formAutofillGroupBox"
diff --git a/browser/components/preferences/privacy.js b/browser/components/preferences/privacy.js
index e2c8370e51c6..eebb1c2f7100 100644
--- a/browser/components/preferences/privacy.js
+++ b/browser/components/preferences/privacy.js
@@ -80,6 +80,12 @@ XPCOMUtils.defineLazyGetter(this, "AlertsServiceDND", function() {
}
});
+XPCOMUtils.defineLazyScriptGetter(
+ this,
+ ["OnionServicesAuthPreferences"],
+ "chrome://browser/content/onionservices/authPreferences.js"
+);
+
// TODO: module import via ChromeUtils.defineModuleGetter
XPCOMUtils.defineLazyScriptGetter(
this,
@@ -535,6 +541,7 @@ var gPrivacyPane = {
this.trackingProtectionReadPrefs();
this.networkCookieBehaviorReadPrefs();
this._initTrackingProtectionExtensionControl();
+ OnionServicesAuthPreferences.init();
this._initSecurityLevel();
Services.telemetry.setEventRecordingEnabled("pwmgr", true);
diff --git a/browser/themes/shared/notification-icons.inc.css b/browser/themes/shared/notification-icons.inc.css
index a0a7a6431004..f6f38cddc2fb 100644
--- a/browser/themes/shared/notification-icons.inc.css
+++ b/browser/themes/shared/notification-icons.inc.css
@@ -128,6 +128,9 @@
list-style-image: url(chrome://browser/skin/notification-icons/indexedDB.svg);
}
+/* Reuse Firefox's login (key) icon for the Tor onion services auth. prompt */
+.popup-notification-icon[popupid="tor-clientauth"],
+.tor-clientauth-icon,
.popup-notification-icon[popupid="password"],
.login-icon {
list-style-image: url(chrome://browser/skin/login.svg);
diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp
index 63c9835c90e9..e41c20cdba85 100644
--- a/docshell/base/nsDocShell.cpp
+++ b/docshell/base/nsDocShell.cpp
@@ -3650,6 +3650,7 @@ nsDocShell::DisplayLoadError(nsresult aError, nsIURI* aURI,
}
} else {
// Errors requiring simple formatting
+ bool isOnionAuthError = false;
switch (aError) {
case NS_ERROR_MALFORMED_URI:
// URI is malformed
@@ -3732,10 +3733,44 @@ nsDocShell::DisplayLoadError(nsresult aError, nsIURI* aURI,
// HTTP/2 or HTTP/3 stack detected a protocol error
error = "networkProtocolError";
break;
-
+ case NS_ERROR_TOR_ONION_SVC_NOT_FOUND:
+ error = "onionServices.descNotFound";
+ break;
+ case NS_ERROR_TOR_ONION_SVC_IS_INVALID:
+ error = "onionServices.descInvalid";
+ break;
+ case NS_ERROR_TOR_ONION_SVC_INTRO_FAILED:
+ error = "onionServices.introFailed";
+ break;
+ case NS_ERROR_TOR_ONION_SVC_REND_FAILED:
+ error = "onionServices.rendezvousFailed";
+ break;
+ case NS_ERROR_TOR_ONION_SVC_MISSING_CLIENT_AUTH:
+ error = "onionServices.clientAuthMissing";
+ isOnionAuthError = true;
+ break;
+ case NS_ERROR_TOR_ONION_SVC_BAD_CLIENT_AUTH:
+ error = "onionServices.clientAuthIncorrect";
+ isOnionAuthError = true;
+ break;
+ case NS_ERROR_TOR_ONION_SVC_BAD_ADDRESS:
+ error = "onionServices.badAddress";
+ break;
+ case NS_ERROR_TOR_ONION_SVC_INTRO_TIMEDOUT:
+ error = "onionServices.introTimedOut";
+ break;
default:
break;
}
+
+ // The presence of aFailedChannel indicates that we arrived here due to a
+ // failed connection attempt. Note that we will arrive here a second time
+ // if the user cancels the Tor client auth prompt, but in that case we
+ // will not have a failed channel and therefore we will not prompt again.
+ if (isOnionAuthError && aFailedChannel) {
+ // Display about:blank while the Tor client auth prompt is open.
+ errorPage.AssignLiteral("blank");
+ }
}
// If the HTTPS-Only Mode upgraded this request and the upgrade might have
@@ -3818,6 +3853,20 @@ nsDocShell::DisplayLoadError(nsresult aError, nsIURI* aURI,
nsAutoString str;
rv =
stringBundle->FormatStringFromName(errorDescriptionID, formatStrs, str);
+ if (NS_FAILED(rv)) {
+ // As a fallback, check torbutton.properties for the error string.
+ const char bundleURL[] = "chrome://torbutton/locale/torbutton.properties";
+ nsCOMPtr<nsIStringBundleService> stringBundleService =
+ mozilla::services::GetStringBundleService();
+ if (stringBundleService) {
+ nsCOMPtr<nsIStringBundle> tbStringBundle;
+ if (NS_SUCCEEDED(stringBundleService->CreateBundle(
+ bundleURL, getter_AddRefs(tbStringBundle)))) {
+ rv = tbStringBundle->FormatStringFromName(errorDescriptionID,
+ formatStrs, str);
+ }
+ }
+ }
NS_ENSURE_SUCCESS(rv, rv);
messageStr.Assign(str);
}
@@ -6266,6 +6315,7 @@ nsresult nsDocShell::FilterStatusForErrorPage(
aStatus == NS_ERROR_FILE_ACCESS_DENIED ||
aStatus == NS_ERROR_CORRUPTED_CONTENT ||
aStatus == NS_ERROR_INVALID_CONTENT_ENCODING ||
+ NS_ERROR_GET_MODULE(aStatus) == NS_ERROR_MODULE_TOR ||
NS_ERROR_GET_MODULE(aStatus) == NS_ERROR_MODULE_SECURITY) {
// Errors to be shown for any frame
return aStatus;
@@ -8029,6 +8079,35 @@ nsresult nsDocShell::CreateContentViewer(const nsACString& aContentType,
FireOnLocationChange(this, aRequest, mCurrentURI, locationFlags);
}
+ // Arrange to show a Tor onion service client authentication prompt if
+ // appropriate.
+ if ((mLoadType == LOAD_ERROR_PAGE) && failedChannel) {
+ nsresult status = NS_OK;
+ if (NS_SUCCEEDED(failedChannel->GetStatus(&status)) &&
+ ((status == NS_ERROR_TOR_ONION_SVC_MISSING_CLIENT_AUTH) ||
+ (status == NS_ERROR_TOR_ONION_SVC_BAD_CLIENT_AUTH))) {
+ nsAutoCString onionHost;
+ failedURI->GetHost(onionHost);
+ const char* topic = (status == NS_ERROR_TOR_ONION_SVC_MISSING_CLIENT_AUTH)
+ ? "tor-onion-services-clientauth-missing"
+ : "tor-onion-services-clientauth-incorrect";
+ if (XRE_IsContentProcess()) {
+ nsCOMPtr<nsIBrowserChild> browserChild = GetBrowserChild();
+ if (browserChild) {
+ static_cast<BrowserChild*>(browserChild.get())
+ ->SendShowOnionServicesAuthPrompt(onionHost, nsCString(topic));
+ }
+ } else {
+ nsCOMPtr<nsPIDOMWindowOuter> browserWin = GetWindow();
+ nsCOMPtr<nsIObserverService> obsSvc = services::GetObserverService();
+ if (browserWin && obsSvc) {
+ obsSvc->NotifyObservers(browserWin, topic,
+ NS_ConvertUTF8toUTF16(onionHost).get());
+ }
+ }
+ }
+ }
+
return NS_OK;
}
diff --git a/dom/ipc/BrowserParent.cpp b/dom/ipc/BrowserParent.cpp
index b48d0083c80c..2077a5e0943d 100644
--- a/dom/ipc/BrowserParent.cpp
+++ b/dom/ipc/BrowserParent.cpp
@@ -3956,6 +3956,27 @@ mozilla::ipc::IPCResult BrowserParent::RecvShowCanvasPermissionPrompt(
return IPC_OK();
}
+mozilla::ipc::IPCResult BrowserParent::RecvShowOnionServicesAuthPrompt(
+ const nsCString& aOnionName, const nsCString& aTopic) {
+ nsCOMPtr<nsIBrowser> browser =
+ mFrameElement ? mFrameElement->AsBrowser() : nullptr;
+ if (!browser) {
+ // If the tab is being closed, the browser may not be available.
+ // In this case we can ignore the request.
+ return IPC_OK();
+ }
+ nsCOMPtr<nsIObserverService> os = services::GetObserverService();
+ if (!os) {
+ return IPC_FAIL_NO_REASON(this);
+ }
+ nsresult rv = os->NotifyObservers(browser, aTopic.get(),
+ NS_ConvertUTF8toUTF16(aOnionName).get());
+ if (NS_FAILED(rv)) {
+ return IPC_FAIL_NO_REASON(this);
+ }
+ return IPC_OK();
+}
+
mozilla::ipc::IPCResult BrowserParent::RecvVisitURI(nsIURI* aURI,
nsIURI* aLastVisitedURI,
const uint32_t& aFlags) {
diff --git a/dom/ipc/BrowserParent.h b/dom/ipc/BrowserParent.h
index 4bd0e335879e..3db76e332742 100644
--- a/dom/ipc/BrowserParent.h
+++ b/dom/ipc/BrowserParent.h
@@ -758,6 +758,9 @@ class BrowserParent final : public PBrowserParent,
mozilla::ipc::IPCResult RecvShowCanvasPermissionPrompt(
const nsCString& aOrigin, const bool& aHideDoorHanger);
+ mozilla::ipc::IPCResult RecvShowOnionServicesAuthPrompt(
+ const nsCString& aOnionName, const nsCString& aTopic);
+
mozilla::ipc::IPCResult RecvSetSystemFont(const nsCString& aFontName);
mozilla::ipc::IPCResult RecvGetSystemFont(nsCString* aFontName);
diff --git a/dom/ipc/PBrowser.ipdl b/dom/ipc/PBrowser.ipdl
index 665af83802a2..798e1e7e477f 100644
--- a/dom/ipc/PBrowser.ipdl
+++ b/dom/ipc/PBrowser.ipdl
@@ -626,6 +626,15 @@ parent:
async RequestPointerCapture(uint32_t aPointerId) returns (bool aSuccess);
async ReleasePointerCapture(uint32_t aPointerId);
+ /**
+ * This function is used to notify the parent that it should display a
+ * onion services client authentication prompt.
+ *
+ * @param aOnionHost The hostname of the .onion that needs authentication.
+ * @param aTopic The reason for the prompt.
+ */
+ async ShowOnionServicesAuthPrompt(nsCString aOnionHost, nsCString aTopic);
+
child:
async NativeSynthesisResponse(uint64_t aObserverId, nsCString aResponse);
async FlushTabState(uint32_t aFlushId, bool aIsFinal);
diff --git a/js/xpconnect/src/xpc.msg b/js/xpconnect/src/xpc.msg
index dbcff2114eac..5d3669c9253c 100644
--- a/js/xpconnect/src/xpc.msg
+++ b/js/xpconnect/src/xpc.msg
@@ -254,5 +254,15 @@ XPC_MSG_DEF(NS_ERROR_FINGERPRINTING_URI , "The URI is fingerprinti
XPC_MSG_DEF(NS_ERROR_CRYPTOMINING_URI , "The URI is cryptomining")
XPC_MSG_DEF(NS_ERROR_SOCIALTRACKING_URI , "The URI is social tracking")
+/* Codes related to Tor */
+XPC_MSG_DEF(NS_ERROR_TOR_ONION_SVC_NOT_FOUND , "Tor onion service descriptor cannot be found")
+XPC_MSG_DEF(NS_ERROR_TOR_ONION_SVC_IS_INVALID , "Tor onion service descriptor is invalid")
+XPC_MSG_DEF(NS_ERROR_TOR_ONION_SVC_INTRO_FAILED , "Tor onion service introduction failed")
+XPC_MSG_DEF(NS_ERROR_TOR_ONION_SVC_REND_FAILED , "Tor onion service rendezvous failed")
+XPC_MSG_DEF(NS_ERROR_TOR_ONION_SVC_MISSING_CLIENT_AUTH, "Tor onion service missing client authorization")
+XPC_MSG_DEF(NS_ERROR_TOR_ONION_SVC_BAD_CLIENT_AUTH , "Tor onion service wrong client authorization")
+XPC_MSG_DEF(NS_ERROR_TOR_ONION_SVC_BAD_ADDRESS , "Tor onion service bad address")
+XPC_MSG_DEF(NS_ERROR_TOR_ONION_SVC_INTRO_TIMEDOUT , "Tor onion service introduction timed out")
+
/* Profile manager error codes */
XPC_MSG_DEF(NS_ERROR_DATABASE_CHANGED , "Flushing the profiles to disk would have overwritten changes made elsewhere.")
diff --git a/netwerk/base/nsSocketTransport2.cpp b/netwerk/base/nsSocketTransport2.cpp
index c9a29cb5125c..824610fe04c4 100644
--- a/netwerk/base/nsSocketTransport2.cpp
+++ b/netwerk/base/nsSocketTransport2.cpp
@@ -217,6 +217,12 @@ nsresult ErrorAccordingToNSPR(PRErrorCode errorCode) {
default:
if (psm::IsNSSErrorCode(errorCode)) {
rv = psm::GetXPCOMFromNSSError(errorCode);
+ } else {
+ // If we received a Tor extended error code via SOCKS, pass it through.
+ nsresult res = nsresult(errorCode);
+ if (NS_ERROR_GET_MODULE(res) == NS_ERROR_MODULE_TOR) {
+ rv = res;
+ }
}
break;
diff --git a/netwerk/socket/nsSOCKSIOLayer.cpp b/netwerk/socket/nsSOCKSIOLayer.cpp
index 0a16d6c7236f..c2bf0e951dda 100644
--- a/netwerk/socket/nsSOCKSIOLayer.cpp
+++ b/netwerk/socket/nsSOCKSIOLayer.cpp
@@ -1007,6 +1007,55 @@ PRStatus nsSOCKSSocketInfo::ReadV5ConnectResponseTop() {
"08, Address type not supported."));
c = PR_BAD_ADDRESS_ERROR;
break;
+ case 0xF0: // Tor SOCKS5_HS_NOT_FOUND
+ LOGERROR(
+ ("socks5: connect failed: F0,"
+ " Tor onion service descriptor can not be found."));
+ c = static_cast<uint32_t>(NS_ERROR_TOR_ONION_SVC_NOT_FOUND);
+ break;
+ case 0xF1: // Tor SOCKS5_HS_IS_INVALID
+ LOGERROR(
+ ("socks5: connect failed: F1,"
+ " Tor onion service descriptor is invalid."));
+ c = static_cast<uint32_t>(NS_ERROR_TOR_ONION_SVC_IS_INVALID);
+ break;
+ case 0xF2: // Tor SOCKS5_HS_INTRO_FAILED
+ LOGERROR(
+ ("socks5: connect failed: F2,"
+ " Tor onion service introduction failed."));
+ c = static_cast<uint32_t>(NS_ERROR_TOR_ONION_SVC_INTRO_FAILED);
+ break;
+ case 0xF3: // Tor SOCKS5_HS_REND_FAILED
+ LOGERROR(
+ ("socks5: connect failed: F3,"
+ " Tor onion service rendezvous failed."));
+ c = static_cast<uint32_t>(NS_ERROR_TOR_ONION_SVC_REND_FAILED);
+ break;
+ case 0xF4: // Tor SOCKS5_HS_MISSING_CLIENT_AUTH
+ LOGERROR(
+ ("socks5: connect failed: F4,"
+ " Tor onion service missing client authorization."));
+ c = static_cast<uint32_t>(NS_ERROR_TOR_ONION_SVC_MISSING_CLIENT_AUTH);
+ break;
+ case 0xF5: // Tor SOCKS5_HS_BAD_CLIENT_AUTH
+ LOGERROR(
+ ("socks5: connect failed: F5,"
+ " Tor onion service wrong client authorization."));
+ c = static_cast<uint32_t>(NS_ERROR_TOR_ONION_SVC_BAD_CLIENT_AUTH);
+ break;
+ case 0xF6: // Tor SOCKS5_HS_BAD_ADDRESS
+ LOGERROR(
+ ("socks5: connect failed: F6,"
+ " Tor onion service bad address."));
+ c = static_cast<uint32_t>(NS_ERROR_TOR_ONION_SVC_BAD_ADDRESS);
+ break;
+ case 0xF7: // Tor SOCKS5_HS_INTRO_TIMEDOUT
+ LOGERROR(
+ ("socks5: connect failed: F7,"
+ " Tor onion service introduction timed out."));
+ c = static_cast<uint32_t>(NS_ERROR_TOR_ONION_SVC_INTRO_TIMEDOUT);
+ break;
+
default:
LOGERROR(("socks5: connect failed."));
break;
diff --git a/toolkit/modules/PopupNotifications.jsm b/toolkit/modules/PopupNotifications.jsm
index 2fc54a589969..68f687698cfa 100644
--- a/toolkit/modules/PopupNotifications.jsm
+++ b/toolkit/modules/PopupNotifications.jsm
@@ -406,6 +406,8 @@ PopupNotifications.prototype = {
* will be dismissed instead of removed after running the callback.
* - [optional] disabled (boolean): If this is true, the button
* will be disabled.
+ * - [optional] leaveOpen (boolean): If this is true, the notification
+ * will not be removed after running the callback.
* - [optional] disableHighlight (boolean): If this is true, the button
* will not apply the default highlight style.
* If null, the notification will have a default "OK" action button
@@ -1890,6 +1892,10 @@ PopupNotifications.prototype = {
this._dismiss();
return;
}
+
+ if (action.leaveOpen) {
+ return;
+ }
}
this._remove(notification);
diff --git a/toolkit/modules/RemotePageAccessManager.jsm b/toolkit/modules/RemotePageAccessManager.jsm
index 1d607b814b94..4d49fca6960d 100644
--- a/toolkit/modules/RemotePageAccessManager.jsm
+++ b/toolkit/modules/RemotePageAccessManager.jsm
@@ -106,6 +106,7 @@ let RemotePageAccessManager = {
RPMAddToHistogram: ["*"],
RPMGetInnerMostURI: ["*"],
RPMGetHttpResponseHeader: ["*"],
+ RPMGetTorStrings: ["*"],
},
"about:newinstall": {
RPMGetUpdateChannel: ["*"],
diff --git a/tools/lint/eslint/eslint-plugin-mozilla/lib/environments/frame-script.js b/tools/lint/eslint/eslint-plugin-mozilla/lib/environments/frame-script.js
index 5f3cb199af4a..b55d1731573c 100644
--- a/tools/lint/eslint/eslint-plugin-mozilla/lib/environments/frame-script.js
+++ b/tools/lint/eslint/eslint-plugin-mozilla/lib/environments/frame-script.js
@@ -39,5 +39,6 @@ module.exports = {
RPMAddToHistogram: false,
RPMRemoveMessageListener: false,
RPMGetHttpResponseHeader: false,
+ RPMGetTorStrings: false,
},
};
diff --git a/xpcom/base/ErrorList.py b/xpcom/base/ErrorList.py
index f7d1c3a44f5f..39e15d6bb35b 100755
--- a/xpcom/base/ErrorList.py
+++ b/xpcom/base/ErrorList.py
@@ -86,6 +86,7 @@ modules["URL_CLASSIFIER"] = Mod(42)
# ErrorResult gets its own module to reduce the chance of someone accidentally
# defining an error code matching one of the ErrorResult ones.
modules["ERRORRESULT"] = Mod(43)
+modules["TOR"] = Mod(44)
# NS_ERROR_MODULE_GENERAL should be used by modules that do not
# care if return code values overlap. Callers of methods that
@@ -1243,6 +1244,27 @@ with modules["ERRORRESULT"]:
errors["NS_ERROR_INTERNAL_ERRORRESULT_RANGEERROR"] = FAILURE(5)
+# =======================================================================
+# 44: Tor-specific error codes.
+# =======================================================================
+with modules["TOR"]:
+ # Tor onion service descriptor can not be found.
+ errors["NS_ERROR_TOR_ONION_SVC_NOT_FOUND"] = FAILURE(1)
+ # Tor onion service descriptor is invalid.
+ errors["NS_ERROR_TOR_ONION_SVC_IS_INVALID"] = FAILURE(2)
+ # Tor onion service introduction failed.
+ errors["NS_ERROR_TOR_ONION_SVC_INTRO_FAILED"] = FAILURE(3)
+ # Tor onion service rendezvous failed.
+ errors["NS_ERROR_TOR_ONION_SVC_REND_FAILED"] = FAILURE(4)
+ # Tor onion service missing client authorization.
+ errors["NS_ERROR_TOR_ONION_SVC_MISSING_CLIENT_AUTH"] = FAILURE(5)
+ # Tor onion service wrong client authorization.
+ errors["NS_ERROR_TOR_ONION_SVC_BAD_CLIENT_AUTH"] = FAILURE(6)
+ # Tor onion service bad address.
+ errors["NS_ERROR_TOR_ONION_SVC_BAD_ADDRESS"] = FAILURE(7)
+ # Tor onion service introduction timed out.
+ errors["NS_ERROR_TOR_ONION_SVC_INTRO_TIMEDOUT"] = FAILURE(8)
+
# =======================================================================
# 51: NS_ERROR_MODULE_GENERAL
# =======================================================================
1
0