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"/> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + message=""browser_menu_report_issue" is translated here but not found in default locale" + errorLine1=" <string name="browser_menu_report_issue">Tuairiscigh fadhb leis an suíomh</string>" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + message=""tab_tray_grid_view_banner_message" is translated here but not found in default locale" + errorLine1=" <string name="tab_tray_grid_view_banner_message">Cambiar a disposición das lapelas abertas. Vaia á configuración e seleccione a grade na vista de lapelas.</string>" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + message=""browser_menu_new_tab" is translated here but not found in default locale" + errorLine1=" <string name="browser_menu_new_tab">નવું ટૅબ</string>" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1592,17 +1460,6 @@ column="13"/> - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - - - - - - - - - - - - - - - @@ -2780,17 +2417,6 @@ column="13"/> - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id="ExtraTranslation" + message=""preference_enhanced_tracking_protection_standard" is translated here but not found in default locale" + errorLine1=" <string name="preference_enhanced_tracking_protection_standard">Gaadanteejo (basiyaaɗo)</string>" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -3572,17 +3341,6 @@ column="13"/> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + message=""synced_tabs_connect_to_sync_account" is translated here but not found in default locale" + errorLine1=" <string name="synced_tabs_connect_to_sync_account">Conetti un conto Firefox.</string>" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + message=""inactive_tabs_survey_not_interested_option" is translated here but not found in default locale" + errorLine1=" <string name="inactive_tabs_survey_not_interested_option" tools:ignore="UnusedResources">غير مهتم بالميزة</string>" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + message=""inactive_tabs_survey_not_interested_option" is translated here but not found in default locale" + errorLine1=" <string name="inactive_tabs_survey_not_interested_option" tools:ignore="UnusedResources">N’on ket dedennet er c’heweriuster</string>" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> + message=""inactive_tabs_survey_not_interested_option" is translated here but not found in default locale" + errorLine1=" <string name="inactive_tabs_survey_not_interested_option" tools:ignore="UnusedResources">Tidak tertarik dengan fiturnya</string>" + errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> @@ -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