diff --git a/.github/ISSUE_TEMPLATE/---performance-issue.md b/.github/ISSUE_TEMPLATE/---performance-issue.md
index 5412b9998343..11f342660f9b 100644
--- a/.github/ISSUE_TEMPLATE/---performance-issue.md
+++ b/.github/ISSUE_TEMPLATE/---performance-issue.md
@@ -2,7 +2,7 @@
name: "⌛ Performance issue"
about: Create a performance issue if the app is slow or it uses too much memory, disk space, battery, or network data
title: ""
-labels: "eng:performance"
+labels: "performance"
assignees: ''
---
diff --git a/.github/workflows/build-contributor-pr.yml b/.github/workflows/build-contributor-pr.yml
index b780b9d8489e..42da01b41e16 100644
--- a/.github/workflows/build-contributor-pr.yml
+++ b/.github/workflows/build-contributor-pr.yml
@@ -107,7 +107,7 @@ jobs:
run-ui:
runs-on: macos-11
- if: ${{ false }} # disable for now'
+ if: ${{ false }}
timeout-minutes: 60
strategy:
@@ -118,12 +118,12 @@ jobs:
- name: Checkout
uses: actions/checkout@v2
- name: Run subset of UI Tests
- uses: reactivecircus/android-emulator-runner@v2
+ uses: reactivecircus/android-emulator-runner@v2.21.0
with:
api-level: ${{ matrix.api-level }}
target: ${{ matrix.target }}
arch: x86_64
- profile: pixel_3a
+ profile: pixel_2
script:
"JAVA_HOME=$JAVA_HOME_11_X64 && ./gradlew connectedDebugAndroidTest -Pandroid.testInstrumentationRunnerArguments.class=\
org.mozilla.fenix.ui.NavigationToolbarTest#visitURLTest"
diff --git a/.mergify.yml b/.mergify.yml
index befe49c2fcea..73ed4d7c5f86 100644
--- a/.mergify.yml
+++ b/.mergify.yml
@@ -1,3 +1,7 @@
+queue_rules:
+ - name: default
+ conditions:
+ - status-success=pr-complete
pull_request_rules:
- name: Resolve conflict
conditions:
@@ -14,9 +18,10 @@ pull_request_rules:
review:
type: APPROVE
message: MickeyMoz 💪
- merge:
+ queue:
method: rebase
- strict: smart
+ name: default
+ rebase_fallback: none
- name: L10N - Auto Merge
conditions:
- author=mozilla-l10n-automation-bot
@@ -26,9 +31,10 @@ pull_request_rules:
review:
type: APPROVE
message: LGTM 😎
- merge:
+ queue:
method: rebase
- strict: smart
+ name: default
+ rebase_fallback: none
- name: Release automation (Old)
conditions:
- base~=releases[_/].*
@@ -52,9 +58,10 @@ pull_request_rules:
review:
type: APPROVE
message: 🚢
- merge:
+ queue:
method: rebase
- strict: smart
+ name: default
+ rebase_fallback: none
delete_head_branch:
force: false
- name: Release automation (New)
@@ -81,9 +88,10 @@ pull_request_rules:
review:
type: APPROVE
message: 🚢
- merge:
+ queue:
method: rebase
- strict: smart
+ name: default
+ rebase_fallback: none
delete_head_branch:
force: false
- name: Needs landing - Rebase
@@ -95,9 +103,10 @@ pull_request_rules:
- label!=pr:work-in-progress
- label!=pr:do-not-land
actions:
- merge:
+ queue:
method: rebase
- strict: smart
+ name: default
+ rebase_fallback: none
- name: Needs landing - Squash
conditions:
- check-success=pr-complete
@@ -107,6 +116,7 @@ pull_request_rules:
- label!=pr:work-in-progress
- label!=pr:do-not-land
actions:
- merge:
+ queue:
method: squash
- strict: smart
+ name: default
+ rebase_fallback: none
diff --git a/.taskcluster.yml b/.taskcluster.yml
index 9b647d4e7678..4e94608bbc88 100644
--- a/.taskcluster.yml
+++ b/.taskcluster.yml
@@ -8,7 +8,7 @@ tasks:
- $let:
taskgraph:
branch: taskgraph
- revision: 9daff451cfbe82c5c70237a7b3dbcf4fd3238299
+ revision: d85f4e4213706ec7737c7257f681977fdf20eb60
trustDomain: mobile
in:
$let:
@@ -104,7 +104,6 @@ tasks:
tasks_for in ["action", "cron"]
|| (tasks_for == "github-pull-request" && pullRequestAction in ["opened", "reopened", "synchronize"])
|| (tasks_for == "github-push" && head_branch[:10] != "refs/tags/") && (head_branch != "staging.tmp") && (head_branch != "trying.tmp") && (head_branch[:8] != "mergify/")
- || (tasks_for == "github-release" && releaseAction == "published" && (ownerEmail != "mozilla-release-automation-bot@users.noreply.github.com") && (ownerEmail != "mozilla-release-automation-bot-staging@users.noreply.github.com"))
then:
$let:
level:
@@ -249,9 +248,9 @@ tasks:
command:
- /usr/local/bin/run-task
- - '--mobile-checkout=/builds/worker/checkouts/src'
+ - '--mobile-checkout=/builds/worker/checkouts/vcs'
- '--taskgraph-checkout=/builds/worker/checkouts/taskgraph'
- - '--task-cwd=/builds/worker/checkouts/src'
+ - '--task-cwd=/builds/worker/checkouts/vcs'
- '--'
- bash
- -cx
@@ -293,7 +292,7 @@ tasks:
expires: {$fromNow: '1 year'}
'public/docker-contexts':
type: 'directory'
- path: '/builds/worker/checkouts/src/docker-contexts'
+ path: '/builds/worker/checkouts/vcs/docker-contexts'
# This needs to be at least the deadline of the
# decision task + the docker-image task deadlines.
# It is set to a week to allow for some time for
diff --git a/app/benchmark.gradle b/app/benchmark.gradle
index 9238a821eba1..98dd906b77cb 100644
--- a/app/benchmark.gradle
+++ b/app/benchmark.gradle
@@ -53,14 +53,29 @@ ext.maybeConfigForJetpackBenchmark = { android ->
// WARNING: the benchmark framework warns you if you're running the test in a configuration
// that will compromise the accuracy of the results. Unfortunately, I couldn't get everything
// working so I had to suppress some things.
- //
- // - ACTIVITY-MISSING: we're supposed to use the test instrumentation runner,
- // "androidx.benchmark.junit4.AndroidBenchmarkRunner". However, when I do so, I get an error
- // that we're unable to launch the activity. My understanding is that this runner will use an
- // "IsolationActivity" to reduce the impact of other work on the device from affecting the benchmark
- // and to opt into a lower-max CPU frequency on unrooted devices that support it
- // - UNLOCKED: ./gradlew lockClocks, which locks the CPU frequency, fails on my device. See
- // https://issuetracker.google.com/issues/176836267 for potential workarounds.
- testInstrumentationRunnerArgument 'androidx.benchmark.suppressErrors', 'ACTIVITY-MISSING,UNLOCKED'
+ testInstrumentationRunnerArguments = [
+
+ // - ACTIVITY-MISSING: we're supposed to use the test instrumentation runner,
+ // "androidx.benchmark.junit4.AndroidBenchmarkRunner". However, when I do so, I get an error
+ // that we're unable to launch the activity. My understanding is that this runner will use an
+ // "IsolationActivity" to reduce the impact of other work on the device from affecting the benchmark
+ // and to opt into a lower-max CPU frequency on unrooted devices that support it
+ // - UNLOCKED: ./gradlew lockClocks, which locks the CPU frequency, fails on my device. See
+ // https://issuetracker.google.com/issues/176836267 for potential workarounds.
+ 'androidx.benchmark.suppressErrors' : 'ACTIVITY-MISSING,UNLOCKED',
+
+ // The tests don't always output a JSON file with the data. To make sure it does, we have to
+ // set androidx.benchmark.output.enable to true.
+ 'androidx.benchmark.output.enable' : 'true',
+
+ // We set the the output directory simply for simplicity since the benchmark_runner.py script
+ // can't know the name of the phone in the /build/outputs/ directory. The system defaults to
+ // {phone_name} which can be troublesome finding in some case.
+ //
+ // NOTE: Jetpack Benchmark outputs to Logcat too. However, the output in the logcat is
+ // the min of the several repeats, for more statistics. Therefore, to get more stats,
+ // we refer to the JSON file.
+ additionalTestOutputDir : '/storage/emulated/0/benchmark'
+ ]
}
}
diff --git a/app/build.gradle b/app/build.gradle
index 3973f7d5f61f..a0ca83a1b47c 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,3 +1,5 @@
+import org.mozilla.fenix.gradle.tasks.ApkSizeTask
+
plugins {
id "com.jetbrains.python.envs" version "0.0.26"
id "com.google.protobuf" version "0.8.17"
@@ -42,6 +44,7 @@ android {
testInstrumentationRunnerArguments clearPackageData: 'true'
resValue "bool", "IS_DEBUG", "false"
buildConfigField "boolean", "USE_RELEASE_VERSIONING", "false"
+ buildConfigField "String", "GIT_HASH", "\"\"" // see override in release builds for why it's blank.
// This should be the "public" base URL of AMO.
buildConfigField "String", "AMO_BASE_URL", "\"https://addons.mozilla.org\""
buildConfigField "String", "AMO_COLLECTION_NAME", "\"7dfae8669acc4312a65e8ba5553036\""
@@ -83,6 +86,10 @@ android {
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
matchingFallbacks = ['release'] // Use on the "release" build type in dependencies (AARs)
+ // Changing the build config can cause files that depend on BuildConfig.java to recompile
+ // so we only set the git hash in release builds to avoid possible recompilation in debug builds.
+ buildConfigField "String", "GIT_HASH", "\"${Config.getGitHash()}\""
+
if (gradle.hasProperty("localProperties.autosignReleaseWithDebugKey")) {
signingConfig signingConfigs.debug
}
@@ -271,6 +278,7 @@ android {
composeOptions {
kotlinCompilerExtensionVersion = Versions.androidx_compose
}
+
}
// -------------------------------------------------------------------------------------------------
@@ -447,6 +455,12 @@ configurations {
jnaForTest
}
+tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
+ kotlinOptions {
+ freeCompilerArgs += "-Xopt-in=kotlinx.coroutines.ExperimentalCoroutinesApi"
+ }
+}
+
dependencies {
jnaForTest Deps.jna
testImplementation files(configurations.jnaForTest.copyRecursive().files)
@@ -631,8 +645,14 @@ dependencies {
}
protobuf {
+ // Mac M1 workaround until we can bump the version. Dependent on A-S.
+ // See https://github.com/mozilla-mobile/fenix/issues/22321
protoc {
- artifact = Deps.protobuf_compiler
+ if (osdetector.os == "osx") {
+ artifact = "${Deps.protobuf_compiler}:osx-x86_64"
+ } else {
+ artifact = Deps.protobuf_compiler
+ }
}
// Generates the java Protobuf-lite code for the Protobufs in this project. See
@@ -824,3 +844,11 @@ ext.updateExtensionVersion = { task, extDir ->
expand(values)
}
}
+
+android.applicationVariants.all { variant ->
+ tasks.register("apkSize${variant.name.capitalize()}", ApkSizeTask) {
+ variantName = variant.name
+ apks = variant.outputs.collect { output -> output.outputFile.name }
+ dependsOn "package${variant.name.capitalize()}"
+ }
+}
diff --git a/app/lint-baseline.xml b/app/lint-baseline.xml
index b87926496357..6873fa848ede 100644
--- a/app/lint-baseline.xml
+++ b/app/lint-baseline.xml
@@ -70,7 +70,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
@@ -98,68 +98,123 @@
+ message="Attribute `lineHeight` is only used in API level 28 and higher (current min is 21)"
+ errorLine1=" android:lineHeight="24sp""
+ errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~">
+ file="src/main/res/layout/fragment_onboarding_home_dialog.xml"
+ line="39"
+ column="13"/>
+ message="Attribute `lineHeight` is only used in API level 28 and higher (current min is 21)"
+ errorLine1=" android:lineHeight="24sp""
+ errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~">
+ file="src/main/res/layout/fragment_onboarding_home_dialog.xml"
+ line="53"
+ column="13"/>
+ message="Attribute `lineHeight` is only used in API level 28 and higher (current min is 21)"
+ errorLine1=" android:lineHeight="20sp""
+ errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~">
+ file="src/main/res/layout/fragment_onboarding_home_dialog.xml"
+ line="80"
+ column="13"/>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ errorLine1=" android:foreground="?android:attr/selectableItemBackground""
+ errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+ file="src/main/res/layout/inactive_header_item.xml"
+ line="27"
+ column="9"/>
+ errorLine1=" android:foreground="?android:attr/selectableItemBackground""
+ errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+ file="src/main/res/layout/inactive_header_item.xml"
+ line="63"
+ column="13"/>
+ errorLine1=" android:foreground="?android:attr/selectableItemBackground""
+ errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+ file="src/main/res/layout/inactive_tab_list_item.xml"
+ line="20"
+ column="9"/>
@@ -444,7 +499,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
@@ -455,7 +510,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
@@ -466,7 +521,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
@@ -477,7 +532,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
@@ -488,7 +543,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
@@ -499,21 +554,10 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
-
-
-
-
@@ -708,7 +752,7 @@
errorLine2=" ~~~~">
@@ -719,7 +763,7 @@
errorLine2=" ~~~~">
@@ -730,7 +774,7 @@
errorLine2=" ~~~~">
@@ -741,7 +785,7 @@
errorLine2=" ~~~~">
@@ -752,7 +796,7 @@
errorLine2=" ~~~~">
@@ -789,17 +833,6 @@
column="5"/>
-
-
-
-
@@ -840,7 +873,7 @@
errorLine2=" ~~~~~~~~~~~~~">
@@ -851,7 +884,7 @@
errorLine2=" ~~~~~~~~~~~~~">
@@ -862,7 +895,7 @@
errorLine2=" ~~~~~~~~~~~~~">
@@ -873,7 +906,7 @@
errorLine2=" ~~~~~~~~~~~~~">
@@ -884,7 +917,7 @@
errorLine2=" ~~~~~~~~~~~~~">
@@ -895,10 +928,21 @@
errorLine2=" ~~~~~~~~~~~">
+
+
+
+
@@ -917,7 +961,7 @@
errorLine2=" ^">
@@ -928,7 +972,7 @@
errorLine2=" ^">
@@ -1031,17 +1075,6 @@
column="13"/>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -1592,17 +1460,6 @@
column="13"/>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
@@ -2780,17 +2417,6 @@
column="13"/>
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -6197,7 +5240,7 @@
errorLine2=" ~~~~~~~~">
@@ -6208,7 +5251,7 @@
errorLine2=" ~">
@@ -6333,28 +5376,6 @@
column="10"/>
-
-
-
-
-
-
-
-
@@ -6395,7 +5416,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
@@ -6575,6 +5596,17 @@
column="2"/>
+
+
+
+
-
-
-
-
+ message="Possible overdraw: Root element paints background `@color/photonLightGrey30` with a theme that also paints a background (inferred theme is `@style/NormalTheme`)"
+ errorLine1=" android:background="@color/photonLightGrey30">"
+ errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
@@ -6872,39 +5893,6 @@
column="19"/>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -6934,7 +5911,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
@@ -6945,7 +5922,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
@@ -6956,3787 +5933,57 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+ message="The resource `R.dimen.mozac_browser_menu_corner_radius` appears to be unused"
+ errorLine1=" <dimen name="mozac_browser_menu_corner_radius">8dp</dimen>"
+ errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+ message="The resource `R.dimen.mozac_browser_menu2_corner_radius` appears to be unused"
+ errorLine1=" <dimen name="mozac_browser_menu2_corner_radius">8dp</dimen>"
+ errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+ file="src/main/res/values/dimens.xml"
+ line="13"
+ column="12"/>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ message="The following images appear both as density independent `.xml` files and as bitmap files: /Users/oracle/Projects/fenix/app/src/main/res/drawable-hdpi/ic_logo_wordmark_normal.png, /Users/oracle/Projects/fenix/app/src/main/res/drawable-night/ic_logo_wordmark_normal.xml">
+
+
+
+
@@ -10829,25 +6083,14 @@
column="9"/>
-
-
-
-
@@ -10858,7 +6101,7 @@
errorLine2=" ^">
@@ -10869,10 +6112,32 @@
errorLine2=" ^">
+
+
+
+
+
+
+
+
-
-
-
-
@@ -10913,7 +6167,7 @@
errorLine2=" ~~~~~~~~~">
@@ -10928,6 +6182,17 @@
column="6"/>
+
+
+
+
1
+ * 3-5 tabs -> 2
+ * 6-10 tabs -> 3
+ * 11+ tabs -> 4
+ Where the reported number will be 1, 2, 3, or 4, accordingly.
+ As an example, say a user has three groups of sizes 3, 6, and 15. The
+ app will report 2, 3, and 4 when this metric is tracked.
+ range_min: 1
+ range_max: 4
+ bucket_count: 5
+ histogram_type: linear
+ unit: tab_group_size_code
+ bugs:
+ - https://github.com/mozilla-mobile/fenix/issues/22410
+ data_reviews:
+ - https://github.com/mozilla-mobile/fenix/pull/22479
+ data_sensitivity:
+ - interaction
+ notification_emails:
+ - android-probes@mozilla.com
+ expires: "2022-12-01"
diff --git a/app/src/androidTest/assets/pages/download.html b/app/src/androidTest/assets/pages/download.html
index 440a3b0c073b..e8928cfe301c 100644
--- a/app/src/androidTest/assets/pages/download.html
+++ b/app/src/androidTest/assets/pages/download.html
@@ -1,6 +1,6 @@
- Page content: Globe.svg
+ Page content: tAJwqaWjJsXS8AhzSninBMCfIZbHBGgcc001lx5DIdDwIcfEgQ6vE5Gb5VgAled17DFZ2A7ZDOHA0NpQPHXXFHPSD4wzCkRWiaOorNI574zLtv4Hjiz6O6T7onmUTGgUQ2YQoiQFyrCrPv8ZB9Kvmt.svg