From 0635067d874939c6c5f46a8d746c549f4d086979 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Jan 2025 09:17:41 -0600 Subject: [PATCH 01/36] chore(deps): Bump jinja2 from 3.1.4 to 3.1.5 in /experimenter (#11987) Bumps [jinja2](https://github.com/pallets/jinja) from 3.1.4 to 3.1.5.
Release notes

Sourced from jinja2's releases.

3.1.5

This is the Jinja 3.1.5 security fix release, which fixes security issues and bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.

PyPI: https://pypi.org/project/Jinja2/3.1.5/ Changes: https://jinja.palletsprojects.com/changes/#version-3-1-5 Milestone: https://github.com/pallets/jinja/milestone/16?closed=1

Changelog

Sourced from jinja2's changelog.

Version 3.1.5

Released 2024-12-21

Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=jinja2&package-manager=pip&previous-version=3.1.4&new-version=3.1.5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/mozilla/experimenter/network/alerts).
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- experimenter/poetry.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/experimenter/poetry.lock b/experimenter/poetry.lock index 8036018682..c04c4ae3fa 100644 --- a/experimenter/poetry.lock +++ b/experimenter/poetry.lock @@ -1401,13 +1401,13 @@ testing = ["Django (<3.1)", "attrs", "colorama", "docopt", "pytest (<7.0.0)"] [[package]] name = "jinja2" -version = "3.1.4" +version = "3.1.5" description = "A very fast and expressive template engine." optional = false python-versions = ">=3.7" files = [ - {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, - {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, + {file = "jinja2-3.1.5-py3-none-any.whl", hash = "sha256:aba0f4dc9ed8013c424088f68a5c226f7d6097ed89b246d7749c2ec4175c6adb"}, + {file = "jinja2-3.1.5.tar.gz", hash = "sha256:8fefff8dc3034e27bb80d67c671eb8a9bc424c0ef4c0826edbff304cceff43bb"}, ] [package.dependencies] From 3eca2bda239ff1b2deeed9a06af2840bd1576caf Mon Sep 17 00:00:00 2001 From: dataops-ci-bot <59976087+dataops-ci-bot@users.noreply.github.com> Date: Mon, 6 Jan 2025 11:03:41 -0800 Subject: [PATCH 02/36] chore(nimbus): Update External Configs (#11980) SUMMARY: SUCCESS: fenix at master (26ad7aaffe02c4f9ab84c0faf5bc2f4dc4583806) version None fenix at master (26ad7aaffe02c4f9ab84c0faf5bc2f4dc4583806) version 136.0.0 fenix at beta (93fdd4234be5673a174351922a8be796cefcad65) version 135.0.0 fenix at release (d8f30fc43d8a411937b53bb95eb9555356e9bcb8) version 134.0.0 firefox_ios at main (62258e345b377b98e67de79cd1cec6d3f918a3e2) version None firefox_ios at release/v134 (846f290dfd0627f1873a524da439ebd7a1a4a932) version 134.1.0 firefox_ios at release/v135 (a407f3705c6a6134ac84ff3d9e99d6fa4d5fd0fb) version 135.0.0 firefox_ios at main (62258e345b377b98e67de79cd1cec6d3f918a3e2) version 136.0.0 focus_android at main (fe8a71cd70ad5674abe1824fe11dc78372b736c2) version None focus_ios at main (62258e345b377b98e67de79cd1cec6d3f918a3e2) version None focus_ios at release/v134 (846f290dfd0627f1873a524da439ebd7a1a4a932) version 134.1.0 focus_ios at release/v135 (a407f3705c6a6134ac84ff3d9e99d6fa4d5fd0fb) version 135.0.0 focus_ios at main (62258e345b377b98e67de79cd1cec6d3f918a3e2) version 136.0.0 monitor_cirrus at main (5edcb113aaefe7df6d822a8155e3397340c60e78) version None mozillavpn_backend_cirrus at main (86963e1fe3fbe3aaee3aa3776efad50a85c516e2) version None firefox_accounts_cirrus at main (ff37d0d1d941cf722e3df4f6a001134189798e14) version None firefox_desktop at central (dd9f5a143dd227e6a6271b78458950bfd6736161) version None firefox_desktop at central (dd9f5a143dd227e6a6271b78458950bfd6736161) version 136.0.0 firefox_desktop at beta (a1e5d1f58aca7129af9148ced4bd6e8781b3aeb4) version 135.0.0 firefox_desktop at release (8c35adfaf5ea8b07c3e221d0c9d557a1375f5852) version 134.0.0 firefox_desktop at esr115 (dc8b700b41911c2bde2cff62bde16d3c0ceadc2a) version 115.20.0 firefox_desktop at esr128 (a7c935b8a7c0c39bd2161d0927e9f2f2eb4c9d47) version 128.7.0 CACHED: firefox_ios at release/v131 (7444df581b62d357df12ddc3c90d821d940efbb8) version 131.5.0 (cached) firefox_ios at release/v132 (cb318d0061ec6354167ecc1968020d5d75f1bffc) version 132.2.0 (cached) firefox_ios at release/v133 (7c651ce29e94c6389af7a69ec6b5c44251976e92) version 133.5.0 (cached) focus_android at releases_v121 (979fbe8d7fe04a9b09fe657bb787fda6f4d5ab42) version 121.1.1 (cached) focus_android at releases_v122 (1fcbfc41dba53965481a0e4d4725833bf3669dce) version 122.1.1 (cached) focus_android at releases_v123 (5a38e0cb4499f659a5fff308fa1deee653c0318b) version 123.1.1 (cached) focus_android at releases_v124 (0ad8d97fb3ab2ec6b9bb3905ee742900a4b9325d) version 124.2.1 (cached) focus_android at releases_v125 (2b43ab8069abac2bfee4b609e734c0207876a2ac) version 125.3.1 (cached) focus_android at focus-v125.3.0 (9f2990415376f169eb0053fceb329b70b4421bcb) version 125.3.0 (cached) focus_android at focus-v125.2.0 (d1c6eeb4167fc8ffed02cdfd3138fa696381d548) version 125.2.0 (cached) focus_android at main (fe8a71cd70ad5674abe1824fe11dc78372b736c2) version 125.0.0 (cached) focus_android at focus-v124.2.0 (7a0e399c7bc4faae43ce70ddc201c7899498d1b5) version 124.2.0 (cached) focus_android at focus-v124.1.0 (516df33ca96e950af1bf791893cd16d7add61c5d) version 124.1.0 (cached) focus_android at focus-v124.0 (5afe87a5bbb92f7ecf990a2fbc8095503a47c272) version 124.0.0 (cached) focus_android at focus-v123.1.0 (cb7c807e0fb5bc08131415e2e5ecef9da658d410) version 123.1.0 (cached) focus_android at focus-v123.0 (f5f378e2c05c9d69a5088c112c14fdea507d1c65) version 123.0.0 (cached) focus_android at focus-v122.1.0 (0d665405685c43c9266a3de65f16eabb832bb908) version 122.1.0 (cached) focus_android at focus-v122.0.1 (c67c9e840c00ec348a6a27adedad28feb54aa4a2) version 122.0.1 (cached) focus_android at focus-v122.0 (b49c4f23804d23cc727b8f70c061dccd64d720bc) version 122.0.0 (cached) focus_android at focus-v121.1.0 (62d5117f7996cc8862fdbdc0cb4a1dd5cdebedd6) version 121.1.0 (cached) focus_android at focus-v121.0.1 (fd4d2513324712e91577d8be18797e64089d3cf1) version 121.0.1 (cached) focus_android at focus-v121.0 (1955f8455fa2cac1b2080af9360996c06df5b4dd) version 121.0.0 (cached) focus_ios at release/v131 (7444df581b62d357df12ddc3c90d821d940efbb8) version 131.5.0 (cached) focus_ios at release/v132 (cb318d0061ec6354167ecc1968020d5d75f1bffc) version 132.2.0 (cached) focus_ios at release/v133 (7c651ce29e94c6389af7a69ec6b5c44251976e92) version 133.5.0 (cached) focus_ios at focus/klar-v134.0 (be550d94c2c7bc8b8902cdf7fe542a64e73a381a) version 134.0.0 (cached) focus_ios at focus/klar-v133.0 (a3372669a06fa684d3c5945c317d6787e3125303) version 133.0.0 (cached) focus_ios at focus/klar-v132.0 (d9ed6134db59ff456d343e2bb211aefd040319ac) version 132.0.0 (cached) focus_ios at focus/klar-v131.1 (b7dca2271b14988837524a30eb154d91eb5e4912) version 131.1.0 (cached) focus_ios at focus/klar-v131.0 (34d92c8df1b1522a1da88c23879b439d763ec133) version 131.0.0 (cached) Circle CI Task: https://circleci.com/gh/mozilla/experimenter/272014 --- .../features/manifests/fenix/.ref-cache.yaml | 6 +- .../manifests/fenix/v136.0.0/beta.fml.yaml | 1039 ++++ .../fenix/v136.0.0/developer.fml.yaml | 1065 +++++ .../fenix/v136.0.0/experimenter.yaml | 445 ++ .../manifests/fenix/v136.0.0/nightly.fml.yaml | 1039 ++++ .../manifests/fenix/v136.0.0/release.fml.yaml | 1039 ++++ .../manifests/firefox-desktop/.ref-cache.yaml | 10 +- .../firefox-desktop/experimenter.yaml | 28 +- .../v115.20.0/experimenter.yaml | 1564 ++++++ ...kgroundTaskMessagingExperiment.schema.json | 312 ++ .../schemas/MessagingExperiment.schema.json | 1640 +++++++ .../schemas/LegacyHeartbeat.schema.json | 73 + .../v128.7.0/experimenter.yaml | 3223 +++++++++++++ ...kgroundTaskMessagingExperiment.schema.json | 344 ++ .../schemas/MessagingExperiment.schema.json | 1447 ++++++ .../schemas/PrefFlipsFeature.schema.json | 48 + .../schemas/LegacyHeartbeat.schema.json | 73 + .../v135.0.0/experimenter.yaml | 28 +- .../v136.0.0/experimenter.yaml | 4216 +++++++++++++++++ ...kgroundTaskMessagingExperiment.schema.json | 344 ++ .../schemas/MessagingExperiment.schema.json | 1627 +++++++ .../NimbusTelemetryFeature.schema.json | 35 + .../schemas/PrefFlipsFeature.schema.json | 48 + .../schemas/LegacyHeartbeat.schema.json | 73 + .../manifests/focus-ios/.ref-cache.yaml | 5 +- .../focus-ios/v134.1.0/beta.fml.yaml | 21 + .../focus-ios/v134.1.0/developer.fml.yaml | 21 + .../focus-ios/v134.1.0/experimenter.yaml | 17 + .../focus-ios/v134.1.0/release.fml.yaml | 21 + .../focus-ios/v136.0.0/beta.fml.yaml | 21 + .../focus-ios/v136.0.0/developer.fml.yaml | 21 + .../focus-ios/v136.0.0/experimenter.yaml | 17 + .../focus-ios/v136.0.0/release.fml.yaml | 21 + .../features/manifests/ios/.ref-cache.yaml | 5 +- .../manifests/ios/v134.1.0/beta.fml.yaml | 1034 ++++ .../manifests/ios/v134.1.0/developer.fml.yaml | 1044 ++++ .../manifests/ios/v134.1.0/experimenter.yaml | 332 ++ .../manifests/ios/v134.1.0/release.fml.yaml | 1016 ++++ .../manifests/ios/v136.0.0/beta.fml.yaml | 1052 ++++ .../manifests/ios/v136.0.0/developer.fml.yaml | 1062 +++++ .../manifests/ios/v136.0.0/experimenter.yaml | 351 ++ .../manifests/ios/v136.0.0/release.fml.yaml | 1034 ++++ 42 files changed, 26841 insertions(+), 20 deletions(-) create mode 100644 experimenter/experimenter/features/manifests/fenix/v136.0.0/beta.fml.yaml create mode 100644 experimenter/experimenter/features/manifests/fenix/v136.0.0/developer.fml.yaml create mode 100644 experimenter/experimenter/features/manifests/fenix/v136.0.0/experimenter.yaml create mode 100644 experimenter/experimenter/features/manifests/fenix/v136.0.0/nightly.fml.yaml create mode 100644 experimenter/experimenter/features/manifests/fenix/v136.0.0/release.fml.yaml create mode 100644 experimenter/experimenter/features/manifests/firefox-desktop/v115.20.0/experimenter.yaml create mode 100644 experimenter/experimenter/features/manifests/firefox-desktop/v115.20.0/schemas/browser/components/newtab/content-src/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json create mode 100644 experimenter/experimenter/features/manifests/firefox-desktop/v115.20.0/schemas/browser/components/newtab/content-src/asrouter/schemas/MessagingExperiment.schema.json create mode 100644 experimenter/experimenter/features/manifests/firefox-desktop/v115.20.0/schemas/toolkit/components/normandy/schemas/LegacyHeartbeat.schema.json create mode 100644 experimenter/experimenter/features/manifests/firefox-desktop/v128.7.0/experimenter.yaml create mode 100644 experimenter/experimenter/features/manifests/firefox-desktop/v128.7.0/schemas/browser/components/asrouter/content-src/schemas/BackgroundTaskMessagingExperiment.schema.json create mode 100644 experimenter/experimenter/features/manifests/firefox-desktop/v128.7.0/schemas/browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json create mode 100644 experimenter/experimenter/features/manifests/firefox-desktop/v128.7.0/schemas/toolkit/components/nimbus/schemas/PrefFlipsFeature.schema.json create mode 100644 experimenter/experimenter/features/manifests/firefox-desktop/v128.7.0/schemas/toolkit/components/normandy/schemas/LegacyHeartbeat.schema.json create mode 100644 experimenter/experimenter/features/manifests/firefox-desktop/v136.0.0/experimenter.yaml create mode 100644 experimenter/experimenter/features/manifests/firefox-desktop/v136.0.0/schemas/browser/components/asrouter/content-src/schemas/BackgroundTaskMessagingExperiment.schema.json create mode 100644 experimenter/experimenter/features/manifests/firefox-desktop/v136.0.0/schemas/browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json create mode 100644 experimenter/experimenter/features/manifests/firefox-desktop/v136.0.0/schemas/toolkit/components/nimbus/schemas/NimbusTelemetryFeature.schema.json create mode 100644 experimenter/experimenter/features/manifests/firefox-desktop/v136.0.0/schemas/toolkit/components/nimbus/schemas/PrefFlipsFeature.schema.json create mode 100644 experimenter/experimenter/features/manifests/firefox-desktop/v136.0.0/schemas/toolkit/components/normandy/schemas/LegacyHeartbeat.schema.json create mode 100644 experimenter/experimenter/features/manifests/focus-ios/v134.1.0/beta.fml.yaml create mode 100644 experimenter/experimenter/features/manifests/focus-ios/v134.1.0/developer.fml.yaml create mode 100644 experimenter/experimenter/features/manifests/focus-ios/v134.1.0/experimenter.yaml create mode 100644 experimenter/experimenter/features/manifests/focus-ios/v134.1.0/release.fml.yaml create mode 100644 experimenter/experimenter/features/manifests/focus-ios/v136.0.0/beta.fml.yaml create mode 100644 experimenter/experimenter/features/manifests/focus-ios/v136.0.0/developer.fml.yaml create mode 100644 experimenter/experimenter/features/manifests/focus-ios/v136.0.0/experimenter.yaml create mode 100644 experimenter/experimenter/features/manifests/focus-ios/v136.0.0/release.fml.yaml create mode 100644 experimenter/experimenter/features/manifests/ios/v134.1.0/beta.fml.yaml create mode 100644 experimenter/experimenter/features/manifests/ios/v134.1.0/developer.fml.yaml create mode 100644 experimenter/experimenter/features/manifests/ios/v134.1.0/experimenter.yaml create mode 100644 experimenter/experimenter/features/manifests/ios/v134.1.0/release.fml.yaml create mode 100644 experimenter/experimenter/features/manifests/ios/v136.0.0/beta.fml.yaml create mode 100644 experimenter/experimenter/features/manifests/ios/v136.0.0/developer.fml.yaml create mode 100644 experimenter/experimenter/features/manifests/ios/v136.0.0/experimenter.yaml create mode 100644 experimenter/experimenter/features/manifests/ios/v136.0.0/release.fml.yaml diff --git a/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml b/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml index 2e0f1995ba..ad7b341127 100644 --- a/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml @@ -1,3 +1,3 @@ -beta: f48d3ef3455e3f36156d8448f7f998c289483364 -master: f9517009d8a4946dbdd3acd72a31dc34fca79586 -release: 2af729f544f4d8b5371df3baceae96d37afeb286 +beta: 93fdd4234be5673a174351922a8be796cefcad65 +master: 26ad7aaffe02c4f9ab84c0faf5bc2f4dc4583806 +release: d8f30fc43d8a411937b53bb95eb9555356e9bcb8 diff --git a/experimenter/experimenter/features/manifests/fenix/v136.0.0/beta.fml.yaml b/experimenter/experimenter/features/manifests/fenix/v136.0.0/beta.fml.yaml new file mode 100644 index 0000000000..acf2ad4341 --- /dev/null +++ b/experimenter/experimenter/features/manifests/fenix/v136.0.0/beta.fml.yaml @@ -0,0 +1,1039 @@ +--- +version: 1.0.0 +about: + description: Nimbus Feature Manifest for Fenix (Firefox Android) +channels: + - beta +features: + alternative-app-launcher-icon: + description: A feature that changes the app launcher icon background color. + variables: + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + reset-to-default: + description: "If true use the default icon, if false use the alternative icon. This is required to 'reset' the icon for enrolled users once the initial experiment is complete.\n" + type: Boolean + default: false + awesomebar-suggestion-provider: + description: Configuration for the Firefox Suggest awesomebar suggestion provider. + variables: + available-suggestion-types: + description: "A map of suggestion types to booleans that indicate whether or not the provider should return suggestions of those types.\n" + type: "Map" + default: + amp: true + ampMobile: false + wikipedia: true + bookmarks: + description: Feature for Bookmarks + variables: + new-compose-ui: + description: "if true, enable new compose based UI" + type: Boolean + default: false + cookie-banners: + description: Features for cookie banner handling. + variables: + sections-enabled: + description: This property provides a lookup table of whether or not the given section should be enabled. + type: "Map" + default: + feature-ui: 1 + feature-setting-value: 0 + feature-setting-value-pbm: 1 + feature-setting-detect-only: 0 + feature-setting-global-rules: 1 + feature-setting-global-rules-sub-frames: 1 + fingerprinting-protection: + description: Control Fingerprinting Protection + variables: + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + enabled-normal: + description: "Enables / disables fingerprinting protection in normal browsing mode.\n" + type: Boolean + default: false + enabled-private: + description: "Enables / disables fingerprinting protection in private browsing mode.\n" + type: Boolean + default: true + fdlibm-math: + description: "Uses a different math backend for Math.sin/cos/tan in JavaScript that exposes less entropy\n" + type: Boolean + default: false + overrides: + description: "The protection overrides to add or remove fingerprinting protection targets. Please check RFPTargets.inc for all supported targets.\n" + type: String + default: "" + fission: + description: The feature that controls whether fission is enabled or not in Gecko. + variables: + enabled: + description: "Whether or not to enable fission. Fission is enabled when set to true. Fission is disabled when set to false.\n" + type: Boolean + default: false + fx-suggest: + description: A feature that provides Firefox Suggest search suggestions. + variables: + boost-amp-wiki: + description: "The feature boost wiki and AMP suggestions to the top of its group.\n" + type: Boolean + default: false + enabled: + description: "Whether the feature is enabled. When Firefox Suggest is enabled, Firefox will download and store new search suggestions in the background, and show additional Search settings to control which suggestions appear in the awesomebar. When Firefox Suggest is disabled, Firefox will not download new suggestions, and hide the additional Search settings.\n" + type: Boolean + default: false + glean: + description: A feature that provides server-side configurations for Glean metrics (aka Server Knobs). + variables: + delay-ping-lifetime-io: + description: Glean will delay io for ping lifetime metrics + type: Boolean + default: true + enable-event-timestamps: + description: Enables precise event timestamps for Glean events + type: Boolean + default: true + metrics-enabled: + description: "A map of metric base-identifiers to booleans representing the state of the 'enabled' flag for that metric." + type: "Map" + default: {} + ping-lifetime-max-time: + description: After what time to auto-flush + type: Int + default: 2000 + ping-lifetime-threshold: + description: Write count threshold when to auto-flush + type: Int + default: 1000 + allow-coenrollment: true + growth-data: + description: A feature measuring campaign growth data + variables: + enabled: + description: "If true, the feature is active" + type: Boolean + default: false + homescreen: + description: The homescreen that the user goes to when they press home or new tab. + variables: + sections-enabled: + description: "This property provides a lookup table of whether or not the given section should be enabled. If the section is enabled, it should be toggleable in the settings screen, and on by default." + type: "Map" + default: + top-sites: true + jump-back-in: true + bookmarks: true + recent-explorations: true + pocket: true + pocket-sponsored-stories: true + javascript: + description: Enables Javascript Engine (Spidermonkey) features + variables: + parallelMarkingEnabled: + description: "Enables or disables javascript.options.mem.gc_parallel_marking preference.\n" + type: Boolean + default: false + juno-onboarding: + description: A feature that shows the onboarding flow. + variables: + cards: + description: Collection of user facing onboarding cards. + type: "Map" + default: + default-browser: + body: juno_onboarding_default_browser_description_nimbus_3 + card-type: default-browser + disqualifiers: + - NEVER + enabled: true + extra-data: ~ + image-res: ic_onboarding_welcome + ordering: 10 + prerequisites: + - ALWAYS + primary-button-label: juno_onboarding_default_browser_positive_button + secondary-button-label: juno_onboarding_default_browser_negative_button + title: juno_onboarding_default_browser_title_nimbus_2 + add-search-widget: + body: juno_onboarding_add_search_widget_description + card-type: add-search-widget + disqualifiers: + - NEVER + enabled: true + extra-data: ~ + image-res: ic_onboarding_search_widget + ordering: 15 + prerequisites: + - ALWAYS + primary-button-label: juno_onboarding_add_search_widget_positive_button + secondary-button-label: juno_onboarding_add_search_widget_negative_button + title: juno_onboarding_add_search_widget_title + sync-sign-in: + body: juno_onboarding_sign_in_description_3 + card-type: sync-sign-in + disqualifiers: + - NEVER + enabled: true + extra-data: ~ + image-res: ic_onboarding_sync + ordering: 20 + prerequisites: + - ALWAYS + primary-button-label: juno_onboarding_sign_in_positive_button + secondary-button-label: juno_onboarding_sign_in_negative_button + title: juno_onboarding_sign_in_title_2 + notification-permission: + body: juno_onboarding_enable_notifications_description_nimbus_2 + card-type: notification-permission + disqualifiers: + - NEVER + enabled: true + extra-data: ~ + image-res: ic_notification_permission + ordering: 30 + prerequisites: + - ALWAYS + primary-button-label: juno_onboarding_enable_notifications_positive_button + secondary-button-label: juno_onboarding_enable_notifications_negative_button + title: juno_onboarding_enable_notifications_title_nimbus_2 + string-alias: OnboardingCardKey + conditions: + description: "A collection of out the box conditional expressions to be used in determining whether a card should show or not. Each entry maps to a valid JEXL expression.\n" + type: "Map" + default: + ALWAYS: "true" + NEVER: "false" + string-alias: ConditionName + menu-redesign: + description: Control the new menu redesign. + variables: + enabled: + description: "If true, the new menu redesign is available." + type: Boolean + default: false + report-site-issue: + description: "If true, report site issue menu item and preview is available." + type: Boolean + default: true + messaging: + description: "The in-app messaging system.\n" + variables: + $$experiment: + description: "The only acceptable value for `MessageData#experiment`. This should not be set by experiment." + type: ExperimentSlug + default: "{experiment}" + string-alias: ExperimentSlug + $$surfaces: + description: "A list available surfaces for this app.\n\nThis should not be written to by experiments, and should be hidden to users.\n" + type: List + default: + - homescreen + - notification + - survey + - microsurvey + string-alias: SurfaceName + actions: + description: A growable map of action URLs. + type: "Map" + default: + OPEN_URL: "://open" + ENABLE_PRIVATE_BROWSING: "://enable_private_browsing" + INSTALL_SEARCH_WIDGET: "://install_search_widget" + MAKE_DEFAULT_BROWSER: "://make_default_browser" + VIEW_BOOKMARKS: "://urls_bookmarks" + VIEW_COLLECTIONS: "://home_collections" + VIEW_HISTORY: "://urls_history" + VIEW_HOMESCREEN: "://home" + OPEN_SETTINGS_ACCESSIBILITY: "://settings_accessibility" + OPEN_SETTINGS_ADDON_MANAGER: "://settings_addon_manager" + OPEN_SETTINGS_DELETE_BROWSING_DATA: "://settings_delete_browsing_data" + OPEN_SETTINGS_LOGINS: "://settings_logins" + OPEN_SETTINGS_NOTIFICATIONS: "://settings_notifications" + OPEN_SETTINGS_PRIVACY: "://settings_privacy" + OPEN_SETTINGS_SEARCH_ENGINE: "://settings_search_engine" + OPEN_SETTINGS_TRACKING_PROTECTION: "://settings_tracking_protection" + OPEN_SETTINGS_WALLPAPERS: "://settings_wallpapers" + OPEN_SETTINGS: "://settings" + OPEN_SHARE_SHEET: "://share_sheet" + TURN_ON_SYNC: "://turn_on_sync" + string-alias: ActionName + message-under-experiment: + description: "Deprecated in favor of `MessageData#experiment`. This will be removed in future releases." + type: Option + default: ~ + messages: + description: A growable collection of messages + type: "Map" + default: + default-browser: + title: default_browser_experiment_card_title + text: default_browser_experiment_card_text + surface: homescreen + action: MAKE_DEFAULT_BROWSER + trigger-if-all: + - USER_ESTABLISHED_INSTALL + - ANDROID_API_BELOW_29 + exclude-if-any: + - I_AM_DEFAULT_BROWSER + style: PERSISTENT + button-label: preferences_set_as_default_browser + default-browser-notification: + title: nimbus_notification_default_browser_title + text: nimbus_notification_default_browser_text + surface: notification + style: NOTIFICATION + trigger-if-all: + - DAY_3_AFTER_INSTALL + exclude-if-any: + - I_AM_DEFAULT_BROWSER + action: MAKE_DEFAULT_BROWSER + string-alias: MessageKey + notification-config: + description: Configuration of the notification worker for all notification messages. + type: NotificationConfig + default: + refresh-interval: 240 + on-control: + description: What should be displayed when a control message is selected. + type: ControlMessageBehavior + default: show-next-message + styles: + description: "A map of styles to configure message appearance.\n" + type: "Map" + default: + DEFAULT: + priority: 50 + max-display-count: 5 + SURVEY: + priority: 55 + max-display-count: 1 + PERSISTENT: + priority: 50 + max-display-count: 20 + WARNING: + priority: 60 + max-display-count: 10 + URGENT: + priority: 100 + max-display-count: 10 + NOTIFICATION: + priority: 50 + max-display-count: 1 + MICROSURVEY: + priority: 50 + max-display-count: 5 + string-alias: StyleName + triggers: + description: "A collection of out the box trigger expressions. Each entry maps to a valid JEXL expression.\n" + type: "Map" + default: + USER_ESTABLISHED_INSTALL: number_of_app_launches >=4 + ANDROID_API_BELOW_29: android_version < 29 + USER_RECENTLY_INSTALLED: days_since_install < 7 + USER_RECENTLY_UPDATED: days_since_update < 7 && days_since_install != days_since_update + USER_TIER_ONE_COUNTRY: "('US' in locale || 'GB' in locale || 'CA' in locale || 'DE' in locale || 'FR' in locale)" + USER_EN_SPEAKER: "'en' in locale" + USER_ES_SPEAKER: "'es' in locale" + USER_DE_SPEAKER: "'de' in locale" + USER_FR_SPEAKER: "'fr' in locale" + DEVICE_ANDROID: "os == 'Android'" + DEVICE_IOS: "os == 'iOS'" + ALWAYS: "true" + NEVER: "false" + DAY_1_AFTER_INSTALL: days_since_install == 1 + DAY_2_AFTER_INSTALL: days_since_install == 2 + DAY_3_AFTER_INSTALL: days_since_install == 3 + DAY_4_AFTER_INSTALL: days_since_install == 4 + DAY_5_AFTER_INSTALL: days_since_install == 5 + MORE_THAN_24H_SINCE_INSTALLED_OR_UPDATED: days_since_update >= 1 + I_AM_DEFAULT_BROWSER: is_default_browser + I_AM_NOT_DEFAULT_BROWSER: is_default_browser == false + FUNNEL_PAID: "adjust_campaign != ''" + FUNNEL_ORGANIC: "adjust_campaign == ''" + INACTIVE_1_DAY: "'app_launched'|eventLastSeen('Hours') >= 24" + INACTIVE_2_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 2" + INACTIVE_3_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 3" + INACTIVE_4_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 4" + INACTIVE_5_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 5" + RECENTLY_PRINTED: "'print_tapped'|eventLastSeen('Hours') <= 24" + SECOND_HOMEPAGE_VIEW: "'home_screen_displayed'|eventSum('Years', 4, 0) >= 2" + PERFORMED_A_SEARCH_AGAIN_RECENTLY: "'performed_search'|eventSum('Years', 4, 0) >= 2 && 'performed_search'|eventLastSeen('Minutes') < 1" + FXA_CURRENTLY_SIGNED_IN: is_fxa_signed_in == true + FXA_MORE_THAN_1_DEVICE: fxa_connected_devices > 1 + FXA_SIGNED_IN: "'sync_auth.sign_in'|eventLastSeen('Years', 0) <= 4" + FXA_NOT_SIGNED_IN: "'sync_auth.sign_in'|eventLastSeen('Years', 0) > 4" + USER_INFREQUENT: "'app_launched'|eventCountNonZero('Days', 28) >= 1 && 'app_launched'|eventCountNonZero('Days', 28) < 7" + USER_CASUAL: "'app_launched'|eventCountNonZero('Days', 28) >= 7 && 'app_launched'|eventCountNonZero('Days', 28) < 14" + USER_REGULAR: "'app_launched'|eventCountNonZero('Days', 28) >= 14 && 'app_launched'|eventCountNonZero('Days', 28) < 21" + USER_CORE_ACTIVE: "'app_launched'|eventCountNonZero('Days', 28) >= 21" + LAUNCHED_ONCE_THIS_WEEK: "'app_launched'|eventSum('Days', 7) == 1" + string-alias: TriggerName + allow-coenrollment: true + microsurveys: + description: Feature for microsurveys. + variables: + enabled: + description: "When the feature is enabled then microsurveys can be used.\n" + type: Boolean + default: true + mr2022: + description: Features for MR 2022. + variables: + sections-enabled: + description: This property provides a lookup table of whether or not the given section should be enabled. + type: "Map" + default: + home-onboarding-dialog-existing-users: true + sync-cfr: true + wallpapers-selection-tool: true + jump-back-in-cfr: true + tcp-cfr: true + tcp-feature: true + navigation-toolbar: + description: Feature for navigation toolbar. + variables: + enabled: + description: "When the feature is enabled then the user will see the new navigation toolbar.\n" + type: Boolean + default: false + networking: + description: Enables networking features + variables: + fetchPriorityEnabled: + description: "Enables or disables network.fetchpriority.enabled preference.\n" + type: Boolean + default: true + nimbus-is-ready: + description: "A feature that provides the number of Nimbus is_ready events to send when Nimbus finishes launching.\n" + variables: + event-count: + description: The number of events that should be sent. + type: Int + default: 1 + nimbus-system: + description: "Configuration of the Nimbus System in Android.\n" + variables: + refresh-interval-foreground: + description: "The minimum interval in minutes between fetching experiment\nrecipes in the foreground.\n" + type: Int + default: 60 + nimbus-validation: + description: A feature that does not correspond to an application feature suitable for showing that Nimbus is working. This should never be used in production. + variables: + settings-icon: + description: The drawable displayed in the app menu for Settings + type: String + default: mozac_ic_settings + settings-punctuation: + description: The emoji displayed in the Settings screen title. + type: String + default: "" + settings-title: + description: The title of displayed in the Settings screen and app menu. + type: Text + default: browser_menu_settings + onboarding: + description: "A feature that configures the new user onboarding page. Note that onboarding is a **first run** feature, and should only be modified by first run experiments." + variables: + order: + description: Determines the order of the onboarding page panels + type: List + default: + - themes + - toolbar-placement + - sync + - tcp + - privacy-notice + one-click-search: + description: Enable/disable the one click search feature. + variables: + enabled: + description: "If true, the one click search will be enabled." + type: Boolean + default: false + pdfjs: + description: PDF.js features + variables: + download-button: + description: Download button + type: Boolean + default: true + open-in-app-button: + description: Open in app button + type: Boolean + default: true + print: + description: A feature for printing from the share or browser menu. + variables: + browser-print-enabled: + description: "If true, a print button from the browser menu is available." + type: Boolean + default: true + share-print-enabled: + description: "If true, a print button from the share menu is available." + type: Boolean + default: true + private-browsing: + description: Private Browsing Mode + variables: + felt-privacy-enabled: + description: "if true, enable felt privacy related UI" + type: Boolean + default: false + query-parameter-stripping: + description: Features for query parameter stripping. + variables: + sections-enabled: + description: This property provides a lookup table of whether or not the given section should be enabled. + type: "Map" + default: + query-parameter-stripping: "0" + query-parameter-stripping-pmb: "0" + query-parameter-stripping-allow-list: "" + query-parameter-stripping-strip-list: "" + re-engagement-notification: + description: A feature that shows the re-engagement notification if the user is inactive. + variables: + enabled: + description: "If true, the re-engagement notification is shown to the inactive user." + type: Boolean + default: false + type: + description: The type of re-engagement notification that is shown to the inactive user. + type: Int + default: 0 + remote-tab-management: + description: "Features that let users manage tabs on other devices that are connected to the same Mozilla account.\n" + variables: + close-tabs-enabled: + description: "Whether the feature to close synced tabs is enabled. When enabled, this device will allow other devices to close tabs that are open on this device, and show a \"close\" button for tabs that are currently open on other supported devices in the synced tabs tray.\n" + type: Boolean + default: true + search-extra-params: + description: A feature that provides additional args for search. + variables: + channel-id: + description: The channel Id param name with arg. + type: "Map" + default: {} + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + feature-enabler: + description: "The feature enabler param name with arg, NOTE this map could be empty." + type: "Map" + default: {} + search-engine: + description: The search engine name. + type: String + default: "" + search-term-groups: + description: A feature allowing the grouping of URLs around the search term that it came from. + variables: + enabled: + description: "If true, the feature shows up on the homescreen and on the new tab screen." + type: Boolean + default: false + set-as-default-prompt: + description: "Displays native default browser prompt to existing users.\n" + variables: + app-cold-starts-between-prompts: + description: "Minimum number of app cold starts before the next prompt should be displayed to the user.\n" + type: Int + default: 4 + days-between-prompts: + description: "Minimum number of days between displays of Set as default prompt.\n" + type: Int + default: 14 + enabled: + description: "When the feature is enabled then the Set as default prompt can be triggered for existing users.\n" + type: Boolean + default: true + max-number-of-times-to-display: + description: "Maximum number of time the prompt should be displayed.\n" + type: Int + default: 3 + ship: + description: The feature that controls Session History in Parent (SHIP) in Gecko. + variables: + disabled: + description: "Whether or not to disable SHIP. SHIP is enabled when set to false. SHIP is disabled when set to true.\n" + type: Boolean + default: true + shopping-experience: + description: A feature that shows product review quality information. + variables: + enabled: + description: "if true, the shopping experience feature is shown to the user." + type: Boolean + default: false + product-recommendations: + description: "if true, recommended products feature is enabled to be shown to the user based on their preference." + type: Boolean + default: false + product-recommendations-exposure: + description: "if true, we want to record recommended products inventory for opted-in users, even if product recommendations are disabled." + type: Boolean + default: false + splash-screen: + description: "A feature that extends splash screen duration, allowing additional data fetching time for the app's initial run." + variables: + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + maximum_duration_ms: + description: The maximum amount of time in milliseconds the splashscreen will be visible while waiting for initialization calls to complete. + type: Int + default: 0 + off-train-onboarding: + description: "If true, the fetched data will be applied and used during the session." + type: Boolean + default: false + suggest-shipped-domains: + description: Feature that suggests domains from the shipped domain list. + variables: + enabled: + description: "Suggest domains from the shipped domain list.\n" + type: Boolean + default: true + third-party-cookie-blocking: + description: Control third-party cookie blocking. + variables: + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + enabled-normal: + description: "Enables / disables third-party cookie blocking in normal browsing mode.\n" + type: Boolean + default: false + enabled-private: + description: "Enables / disables third-party cookie blocking in private browsing mode.\n" + type: Boolean + default: true + translations: + description: The feature that allows on-device translations of web content. + variables: + downloads-enabled: + description: "Show the global language model download options entry point for translations. ('Download languages' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + global-lang-settings-enabled: + description: "Show the global language options entry point for automatically translating. ('Automatic Translation' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + global-settings-enabled: + description: "Show the global settings entry point within the translations feature. ('Translation Settings' on the page settings view.) 'page-settings-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + global-site-settings-enabled: + description: "Show the global never translate this site options entry point for site management. ('Never translate these sites' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + main-flow-browser-menu-enabled: + description: "Show the browser menu entry point into the translations feature. ('Translate Page' on browser menu.)\n" + type: Boolean + default: true + main-flow-toolbar-enabled: + description: "Show the primary toolbar entry point into the translations feature. (Translations icon on URL toolbar.)\n" + type: Boolean + default: true + page-settings-enabled: + description: "Show the page settings entry point within the translations feature. (Gear icon on the translations main flow page.) 'main-flow-toolbar-enabled' or 'main-flow-browser-menu-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + user-characteristics: + description: A feature for control user characteristic data collection + variables: + currentVersion: + description: The current collection version of the user characteristics. + type: Int + default: 0 +enums: + ControlMessageBehavior: + description: An enum to influence what should be displayed when a control message is selected. + variants: + show-next-message: + description: The next eligible message should be shown. + show-none: + description: The surface should show no message. + CookieBannersSection: + description: The identifiers for the sections of the MR 2022. + variants: + feature-setting-detect-only: + description: "An integer either 0 or 1 indicating if cookie banner detect only mode should be enabled or disabled. 0 for setting to be disabled, and 1 for enabling the setting." + feature-setting-global-rules: + description: "An integer either 0 or 1 indicating if cookie banner global rules should be enabled or disabled. 0 for setting to be disabled, and 1 for enabling the setting." + feature-setting-global-rules-sub-frames: + description: "An integer either 0 or 1 indicating if cookie banner global rules sub-frames should be enabled or disabled. 0 for setting to be disabled, and 1 for enabling the setting." + feature-setting-value: + description: "An integer either 0 or 1 indicating if cookie banner setting should be enabled or disabled, 0 for setting the value to disabled, 1 for enabling the setting with the value reject_all." + feature-setting-value-pbm: + description: "An integer either 0 or 1 indicating if cookie banner setting should be enabled or disabled, 0 for setting the value to disabled, 1 for enabling the setting with the value reject_all." + feature-ui: + description: "An integer either 0 or 1 indicating if the UI for cookie banner handling should be visible, 0 to hide the UI and 1 to show the UI. The actual UI is composed by cookie banner section in the settings page, the toolbar section and the re-engagement dialog." + HomeScreenSection: + description: The identifiers for the sections of the homescreen. + variants: + bookmarks: + description: The sites the user has bookmarked. + jump-back-in: + description: The tabs the user was looking immediately before being interrupted. + pocket: + description: The pocket section. This should only be available in the US. + pocket-sponsored-stories: + description: Subsection of the Pocket homescreen section which shows sponsored stories. + recent-explorations: + description: The tab groups + top-sites: + description: The frecency and pinned sites. + MR2022Section: + description: The identifiers for the sections of the MR 2022. + variants: + home-onboarding-dialog-existing-users: + description: Home onboarding dialog for upgraded users. + jump-back-in-cfr: + description: Jump back-in onboarding message. + sync-cfr: + description: CFR for the first time you see a synced tab on the home screen. + tcp-cfr: + description: CFR for the first time you use the browse with Total Cookie Protection on the browser screen. + tcp-feature: + description: Controls the Total Cookie Protection feature. + wallpapers-selection-tool: + description: Wallpapers selection dialog tool for the home screen. + OnboardingCardType: + description: An enum to describe a type of card. + variants: + add-ons: + description: Allows user to install add-ons from onboarding. + add-search-widget: + description: Allows user to add search widget to homescreen. + default-browser: + description: Allows user to set Firefox as the default browser. + notification-permission: + description: Allows user to enable notification permission. + sync-sign-in: + description: Allows user to sync with a Firefox account. + terms-of-service: + description: Page to display the terms of services. + theme-selection: + description: Allows user to choose between dark and light themes. + toolbar-placement: + description: Allows user to choose the toolbar position. + OnboardingPanel: + description: The types of onboarding panels in the onboarding page + variants: + privacy-notice: + description: The onboarding panel where users can tap to view our privacy notice. + sync: + description: The onboarding panel where users can sign in to sync + tcp: + description: The onboarding panel where users can choose their total cookie protection settings + themes: + description: The themes onboarding panel where users pick themes + toolbar-placement: + description: The onboarding panel where users choose their toolbar placement (bottom or top) + QueryParameterStrippingSection: + description: The identifiers for the options for the Query Parameter Stripping feature. + variants: + query-parameter-stripping: + description: "An integer either 0 or 1 indicating if query parameter stripping should be enabled or disabled in normal mode. 0 for setting to be disabled, and 1 for enabling the setting." + query-parameter-stripping-allow-list: + description: An string separated by commas indicating the sites where should from query stripping should be exempted. + query-parameter-stripping-pmb: + description: "An integer either 0 or 1 indicating if query parameter stripping should be enabled or disabled in private mode. 0 for setting to be disabled, and 1 for enabling the setting." + query-parameter-stripping-strip-list: + description: An string separated by commas indicating the list of query params to be stripped from URIs. This list will be merged with records coming from RemoteSettings. + SuggestionType: + description: The type of a Firefox Suggest search suggestion. + variants: + amp: + description: A Firefox Suggestion from adMarketplace. + ampMobile: + description: A firefox Suggestion from adMarketplace specifically for mobile. + wikipedia: + description: A Firefox Suggestion for a Wikipedia page. + ThemeType: + description: An enum to describe a theme selection option. + variants: + theme-dark: + description: Sets the theme to dark mode. + theme-light: + description: Sets the theme to light mode. + theme-system: + description: "Adapts the theme to match the device's system setting." + ToolbarType: + description: An enum to describe a toolbar placement option. + variants: + toolbar-bottom: + description: Sets the toolbar placement on the bottom. + toolbar-top: + description: Sets the toolbar placement on the top. +objects: + AddOnData: + description: An object to describe an add-on to be installed from the onboarding card. + fields: + average-rating: + description: The average rating of the add-on. + type: String + default: "0.0" + description: + description: A small description of the add-on to be displayed to the user. + type: Text + default: "" + icon-res: + description: The resource id of the icon of the add-on to be displayed. + type: Image + default: ic_onboarding_welcome + id: + description: The identifier for this add-on. + type: Text + default: "" + install-url: + description: The url from where the add-on can be installed. + type: Text + default: "" + name: + description: The name of the add-on to be displayed to the user. + type: Text + default: "" + review-count: + description: The amount of reviews the add-on has. + type: String + default: "0.0" + CustomizationThemeData: + description: Defines an option for theme selection. + fields: + image-res: + description: The resource id of the image to be displayed. + type: Image + default: ic_pick_a_theme_system_auto + label: + description: "Display text for the theme option (e.g., \"Light Theme\")." + type: Text + default: "" + theme-type: + description: The type of the theming option. + type: ThemeType + default: theme-system + CustomizationToolbarData: + description: An object to describe the placement of the toolbar. + fields: + image-res: + description: The resource id of toolbar placement image. + type: Image + default: ic_onboarding_customize_toolbar + label: + description: "Display text for the toolbar placement option (e.g. \"Top placement\")." + type: Text + default: "" + toolbar-type: + description: The type of toolbar placement. + type: ToolbarType + default: toolbar-top + ExtraCardData: + description: "Holds data for cards that require additional data, e.g. add-ons, toolbar placement cards." + fields: + add-ons-data: + description: "An optional list of add-ons which will be shown in add-on onboarding card.\n" + type: List + default: [] + customization-theme-data: + description: An optional list of theme choices for the theme selection card. + type: List + default: [] + customization-toolbar-data: + description: "An optional list of toolbar placements for the toolbar placement card.\n" + type: List + default: [] + term-of-service-data: + description: "An optional terms of service data for the onboarding card.\n" + type: Option + default: ~ + MessageData: + description: "An object to describe a message. It uses human readable strings to describe the triggers, action and style of the message as well as the text of the message and call to action.\n" + fields: + action: + description: "A URL of a page or a deeplink. This may have substitution variables in.\n" + type: ActionName + default: OPEN_URL + action-params: + description: "A string map containing query parameters that will be appended to the action URL. This is useful for opening URLs in tabs, or specifying that the tab should be private. The values may have substitutions, e.g. \"url\": \"https://example.com/id={uuid}\", \"private\": \"true\".\nThe params and their values are all determined downstream of the messaging component, by the embedding app's deeplink processing machinery.\n" + type: "Map" + default: {} + button-label: + description: "The text on the button. If no text is present, the whole message is clickable.\n" + type: Option + default: ~ + exclude-if-any: + description: "A list of strings corresponding to targeting expressions. The message will not be shown if any of the expressions are `true`.\n" + type: List + default: [] + experiment: + description: The slug of the experiment that this message came from. + type: Option + default: ~ + is-control: + description: "Indicates if this message is the control message, if true shouldn't be displayed" + type: Boolean + default: false + microsurvey-config: + description: Optional configuration data for a microsurvey. + type: Option + default: ~ + style: + description: "The style as described in a `StyleData` from the styles table.\n" + type: StyleName + default: DEFAULT + surface: + description: The surface identifier for this message. + type: SurfaceName + default: homescreen + text: + description: The message text displayed to the user + type: Text + default: "" + title: + description: The title text displayed to the user + type: Option + default: ~ + trigger-if-all: + description: "A list of strings corresponding to targeting expressions. The message will be shown if all expressions are `true`.\n" + type: List + default: [] + MicrosurveyAnswer: + description: Attributes relating to microsurvey content. + fields: + ordering: + description: "Used to sequence the answers top to bottom. E.g. 0 will be the first/top item, 1 will be next and so on. Always set either ALL the provided answers ordering or NONE. If ALL answers are default, the the ordering used will be the same as provided by the experiment.\n" + type: Int + default: 0 + text: + description: The text for the answer. + type: Text + default: "" + MicrosurveyConfig: + description: Attributes relating to microsurvey content. + fields: + answers: + description: "The list of answers to present to the user e.g. \"Satisfied, Dissatisfied...\"." + type: List + default: [] + icon: + description: The icon shown in the survey. + type: Option + default: ~ + utm-content: + description: "Optional \"utm_content\" parameter for the privacy notice URL to specify the feature being surveyed." + type: Option + default: ~ + NotificationConfig: + description: Attributes controlling the global configuration of notification messages. + fields: + refresh-interval: + description: "How often, in minutes, the notification message worker will wake up and check for new messages.\n" + type: Int + default: 240 + OnboardingCardData: + description: An object to describe a user facing onboarding card. + fields: + body: + description: The message text displayed to the user. May contain linkable text. + type: Text + default: "" + card-type: + description: The type of the card. + type: OnboardingCardType + default: default-browser + disqualifiers: + description: "A list of strings corresponding to targeting expressions. The card will not be shown if any expression is `true`.\n" + type: List + default: + - NEVER + enabled: + description: "If true, this card is shown to the user." + type: Boolean + default: true + extra-data: + description: Optional extra data for cards that require additional data. + type: Option + default: ~ + image-res: + description: The resource id of the image to be displayed. + type: Image + default: ic_onboarding_welcome + ordering: + description: Used to sequence the cards. + type: Int + default: 0 + prerequisites: + description: "A list of strings corresponding to targeting expressions. The card will be shown if all expressions are `true` and if no expressions in the `disqualifiers` table are true, or if the `disqualifiers` table is empty.\n" + type: List + default: + - ALWAYS + primary-button-label: + description: The text to display on the primary button. + type: Text + default: "" + secondary-button-label: + description: The text to display on the secondary button. + type: Text + default: "" + title: + description: The title text displayed to the user. + type: Text + default: "" + StyleData: + description: "A group of properties (predominantly visual) to describe the style of the message.\n" + fields: + max-display-count: + description: "How many sessions will this message be shown to the user before it is expired.\n" + type: Int + default: 5 + priority: + description: "The importance of this message. 0 is not very important, 100 is very important.\n" + type: Int + default: 50 + TermsOfServiceData: + description: An object to describe the terms of service onboarding card. + fields: + lineOneLinkText: + description: The text for the link of line one. + type: Text + default: "" + lineOneLinkURL: + description: The url for the link of line one. + type: Text + default: "" + lineOneText: + description: The text for line one. + type: Text + default: "" + lineThreeLinkText: + description: The text for the link of line three. + type: Text + default: "" + lineThreeText: + description: The text for line three. + type: Text + default: "" + lineTwoLinkText: + description: The text for the link of line two. + type: Text + default: "" + lineTwoLinkURL: + description: The url for the link of line two. + type: Text + default: "" + lineTwoText: + description: The text for line two. + type: Text + default: "" diff --git a/experimenter/experimenter/features/manifests/fenix/v136.0.0/developer.fml.yaml b/experimenter/experimenter/features/manifests/fenix/v136.0.0/developer.fml.yaml new file mode 100644 index 0000000000..c3606ed74c --- /dev/null +++ b/experimenter/experimenter/features/manifests/fenix/v136.0.0/developer.fml.yaml @@ -0,0 +1,1065 @@ +--- +version: 1.0.0 +about: + description: Nimbus Feature Manifest for Fenix (Firefox Android) +channels: + - developer +features: + alternative-app-launcher-icon: + description: A feature that changes the app launcher icon background color. + variables: + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + reset-to-default: + description: "If true use the default icon, if false use the alternative icon. This is required to 'reset' the icon for enrolled users once the initial experiment is complete.\n" + type: Boolean + default: false + awesomebar-suggestion-provider: + description: Configuration for the Firefox Suggest awesomebar suggestion provider. + variables: + available-suggestion-types: + description: "A map of suggestion types to booleans that indicate whether or not the provider should return suggestions of those types.\n" + type: "Map" + default: + amp: true + ampMobile: false + wikipedia: true + bookmarks: + description: Feature for Bookmarks + variables: + new-compose-ui: + description: "if true, enable new compose based UI" + type: Boolean + default: false + cookie-banners: + description: Features for cookie banner handling. + variables: + sections-enabled: + description: This property provides a lookup table of whether or not the given section should be enabled. + type: "Map" + default: + feature-ui: 1 + feature-setting-value: 0 + feature-setting-value-pbm: 1 + feature-setting-detect-only: 0 + feature-setting-global-rules: 1 + feature-setting-global-rules-sub-frames: 1 + fingerprinting-protection: + description: Control Fingerprinting Protection + variables: + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + enabled-normal: + description: "Enables / disables fingerprinting protection in normal browsing mode.\n" + type: Boolean + default: false + enabled-private: + description: "Enables / disables fingerprinting protection in private browsing mode.\n" + type: Boolean + default: true + fdlibm-math: + description: "Uses a different math backend for Math.sin/cos/tan in JavaScript that exposes less entropy\n" + type: Boolean + default: false + overrides: + description: "The protection overrides to add or remove fingerprinting protection targets. Please check RFPTargets.inc for all supported targets.\n" + type: String + default: "" + fission: + description: The feature that controls whether fission is enabled or not in Gecko. + variables: + enabled: + description: "Whether or not to enable fission. Fission is enabled when set to true. Fission is disabled when set to false.\n" + type: Boolean + default: false + fx-suggest: + description: A feature that provides Firefox Suggest search suggestions. + variables: + boost-amp-wiki: + description: "The feature boost wiki and AMP suggestions to the top of its group.\n" + type: Boolean + default: true + enabled: + description: "Whether the feature is enabled. When Firefox Suggest is enabled, Firefox will download and store new search suggestions in the background, and show additional Search settings to control which suggestions appear in the awesomebar. When Firefox Suggest is disabled, Firefox will not download new suggestions, and hide the additional Search settings.\n" + type: Boolean + default: true + glean: + description: A feature that provides server-side configurations for Glean metrics (aka Server Knobs). + variables: + delay-ping-lifetime-io: + description: Glean will delay io for ping lifetime metrics + type: Boolean + default: true + enable-event-timestamps: + description: Enables precise event timestamps for Glean events + type: Boolean + default: true + metrics-enabled: + description: "A map of metric base-identifiers to booleans representing the state of the 'enabled' flag for that metric." + type: "Map" + default: {} + ping-lifetime-max-time: + description: After what time to auto-flush + type: Int + default: 2000 + ping-lifetime-threshold: + description: Write count threshold when to auto-flush + type: Int + default: 1000 + allow-coenrollment: true + growth-data: + description: A feature measuring campaign growth data + variables: + enabled: + description: "If true, the feature is active" + type: Boolean + default: false + homescreen: + description: The homescreen that the user goes to when they press home or new tab. + variables: + sections-enabled: + description: "This property provides a lookup table of whether or not the given section should be enabled. If the section is enabled, it should be toggleable in the settings screen, and on by default." + type: "Map" + default: + top-sites: true + jump-back-in: true + bookmarks: true + recent-explorations: true + pocket: true + pocket-sponsored-stories: true + javascript: + description: Enables Javascript Engine (Spidermonkey) features + variables: + parallelMarkingEnabled: + description: "Enables or disables javascript.options.mem.gc_parallel_marking preference.\n" + type: Boolean + default: false + juno-onboarding: + description: A feature that shows the onboarding flow. + variables: + cards: + description: Collection of user facing onboarding cards. + type: "Map" + default: + default-browser: + body: juno_onboarding_default_browser_description_nimbus_3 + card-type: default-browser + disqualifiers: + - NEVER + enabled: true + extra-data: ~ + image-res: ic_onboarding_welcome + ordering: 10 + prerequisites: + - ALWAYS + primary-button-label: juno_onboarding_default_browser_positive_button + secondary-button-label: juno_onboarding_default_browser_negative_button + title: juno_onboarding_default_browser_title_nimbus_2 + add-search-widget: + body: juno_onboarding_add_search_widget_description + card-type: add-search-widget + disqualifiers: + - NEVER + enabled: true + extra-data: ~ + image-res: ic_onboarding_search_widget + ordering: 15 + prerequisites: + - ALWAYS + primary-button-label: juno_onboarding_add_search_widget_positive_button + secondary-button-label: juno_onboarding_add_search_widget_negative_button + title: juno_onboarding_add_search_widget_title + sync-sign-in: + body: juno_onboarding_sign_in_description_3 + card-type: sync-sign-in + disqualifiers: + - NEVER + enabled: true + extra-data: ~ + image-res: ic_onboarding_sync + ordering: 20 + prerequisites: + - ALWAYS + primary-button-label: juno_onboarding_sign_in_positive_button + secondary-button-label: juno_onboarding_sign_in_negative_button + title: juno_onboarding_sign_in_title_2 + notification-permission: + body: juno_onboarding_enable_notifications_description_nimbus_2 + card-type: notification-permission + disqualifiers: + - NEVER + enabled: true + extra-data: ~ + image-res: ic_notification_permission + ordering: 30 + prerequisites: + - ALWAYS + primary-button-label: juno_onboarding_enable_notifications_positive_button + secondary-button-label: juno_onboarding_enable_notifications_negative_button + title: juno_onboarding_enable_notifications_title_nimbus_2 + string-alias: OnboardingCardKey + conditions: + description: "A collection of out the box conditional expressions to be used in determining whether a card should show or not. Each entry maps to a valid JEXL expression.\n" + type: "Map" + default: + ALWAYS: "true" + NEVER: "false" + string-alias: ConditionName + menu-redesign: + description: Control the new menu redesign. + variables: + enabled: + description: "If true, the new menu redesign is available." + type: Boolean + default: false + report-site-issue: + description: "If true, report site issue menu item and preview is available." + type: Boolean + default: true + messaging: + description: "The in-app messaging system.\n" + variables: + $$experiment: + description: "The only acceptable value for `MessageData#experiment`. This should not be set by experiment." + type: ExperimentSlug + default: "{experiment}" + string-alias: ExperimentSlug + $$surfaces: + description: "A list available surfaces for this app.\n\nThis should not be written to by experiments, and should be hidden to users.\n" + type: List + default: + - homescreen + - notification + - survey + - microsurvey + string-alias: SurfaceName + actions: + description: A growable map of action URLs. + type: "Map" + default: + OPEN_URL: "://open" + ENABLE_PRIVATE_BROWSING: "://enable_private_browsing" + INSTALL_SEARCH_WIDGET: "://install_search_widget" + MAKE_DEFAULT_BROWSER: "://make_default_browser" + VIEW_BOOKMARKS: "://urls_bookmarks" + VIEW_COLLECTIONS: "://home_collections" + VIEW_HISTORY: "://urls_history" + VIEW_HOMESCREEN: "://home" + OPEN_SETTINGS_ACCESSIBILITY: "://settings_accessibility" + OPEN_SETTINGS_ADDON_MANAGER: "://settings_addon_manager" + OPEN_SETTINGS_DELETE_BROWSING_DATA: "://settings_delete_browsing_data" + OPEN_SETTINGS_LOGINS: "://settings_logins" + OPEN_SETTINGS_NOTIFICATIONS: "://settings_notifications" + OPEN_SETTINGS_PRIVACY: "://settings_privacy" + OPEN_SETTINGS_SEARCH_ENGINE: "://settings_search_engine" + OPEN_SETTINGS_TRACKING_PROTECTION: "://settings_tracking_protection" + OPEN_SETTINGS_WALLPAPERS: "://settings_wallpapers" + OPEN_SETTINGS: "://settings" + OPEN_SHARE_SHEET: "://share_sheet" + TURN_ON_SYNC: "://turn_on_sync" + string-alias: ActionName + message-under-experiment: + description: "Deprecated in favor of `MessageData#experiment`. This will be removed in future releases." + type: Option + default: ~ + messages: + description: A growable collection of messages + type: "Map" + default: + default-browser: + title: default_browser_experiment_card_title + text: default_browser_experiment_card_text + surface: homescreen + action: MAKE_DEFAULT_BROWSER + trigger-if-all: + - USER_ESTABLISHED_INSTALL + - ANDROID_API_BELOW_29 + exclude-if-any: + - I_AM_DEFAULT_BROWSER + style: PERSISTENT + button-label: preferences_set_as_default_browser + default-browser-notification: + title: nimbus_notification_default_browser_title + text: nimbus_notification_default_browser_text + surface: notification + style: NOTIFICATION + trigger-if-all: + - DAY_3_AFTER_INSTALL + exclude-if-any: + - I_AM_DEFAULT_BROWSER + action: MAKE_DEFAULT_BROWSER + microsurvey-printing-example: + title: microsurvey_prompt_printing_title + text: microsurvey_survey_printing_title + surface: microsurvey + trigger-if-all: + - RECENTLY_PRINTED + style: MICROSURVEY + microsurvey-config: + utm-content: homepage + icon: ic_print + answers: + - text: likert_scale_option_1 + ordering: 0 + - text: likert_scale_option_2 + ordering: 1 + - text: likert_scale_option_3 + ordering: 2 + - text: likert_scale_option_4 + ordering: 3 + - text: likert_scale_option_5 + ordering: 4 + - text: likert_scale_option_6 + ordering: 5 + string-alias: MessageKey + notification-config: + description: Configuration of the notification worker for all notification messages. + type: NotificationConfig + default: + refresh-interval: 120 + on-control: + description: What should be displayed when a control message is selected. + type: ControlMessageBehavior + default: show-next-message + styles: + description: "A map of styles to configure message appearance.\n" + type: "Map" + default: + DEFAULT: + priority: 50 + max-display-count: 100 + SURVEY: + priority: 55 + max-display-count: 1 + PERSISTENT: + priority: 50 + max-display-count: 20 + WARNING: + priority: 60 + max-display-count: 10 + URGENT: + priority: 100 + max-display-count: 10 + NOTIFICATION: + priority: 50 + max-display-count: 1 + MICROSURVEY: + priority: 50 + max-display-count: 5 + EXPIRES_QUICKLY: + priority: 100 + max-display-count: 1 + string-alias: StyleName + triggers: + description: "A collection of out the box trigger expressions. Each entry maps to a valid JEXL expression.\n" + type: "Map" + default: + USER_ESTABLISHED_INSTALL: number_of_app_launches >=4 + ANDROID_API_BELOW_29: android_version < 29 + USER_RECENTLY_INSTALLED: days_since_install < 7 + USER_RECENTLY_UPDATED: days_since_update < 7 && days_since_install != days_since_update + USER_TIER_ONE_COUNTRY: "('US' in locale || 'GB' in locale || 'CA' in locale || 'DE' in locale || 'FR' in locale)" + USER_EN_SPEAKER: "'en' in locale" + USER_ES_SPEAKER: "'es' in locale" + USER_DE_SPEAKER: "'de' in locale" + USER_FR_SPEAKER: "'fr' in locale" + DEVICE_ANDROID: "os == 'Android'" + DEVICE_IOS: "os == 'iOS'" + ALWAYS: "true" + NEVER: "false" + DAY_1_AFTER_INSTALL: days_since_install == 1 + DAY_2_AFTER_INSTALL: days_since_install == 2 + DAY_3_AFTER_INSTALL: days_since_install == 3 + DAY_4_AFTER_INSTALL: days_since_install == 4 + DAY_5_AFTER_INSTALL: days_since_install == 5 + MORE_THAN_24H_SINCE_INSTALLED_OR_UPDATED: days_since_update >= 1 + I_AM_DEFAULT_BROWSER: is_default_browser + I_AM_NOT_DEFAULT_BROWSER: is_default_browser == false + FUNNEL_PAID: "adjust_campaign != ''" + FUNNEL_ORGANIC: "adjust_campaign == ''" + INACTIVE_1_DAY: "'app_launched'|eventLastSeen('Hours') >= 24" + INACTIVE_2_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 2" + INACTIVE_3_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 3" + INACTIVE_4_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 4" + INACTIVE_5_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 5" + RECENTLY_PRINTED: "'print_tapped'|eventLastSeen('Hours') <= 24" + SECOND_HOMEPAGE_VIEW: "'home_screen_displayed'|eventSum('Years', 4, 0) >= 2" + PERFORMED_A_SEARCH_AGAIN_RECENTLY: "'performed_search'|eventSum('Years', 4, 0) >= 2 && 'performed_search'|eventLastSeen('Minutes') < 1" + FXA_CURRENTLY_SIGNED_IN: is_fxa_signed_in == true + FXA_MORE_THAN_1_DEVICE: fxa_connected_devices > 1 + FXA_SIGNED_IN: "'sync_auth.sign_in'|eventLastSeen('Years', 0) <= 4" + FXA_NOT_SIGNED_IN: "'sync_auth.sign_in'|eventLastSeen('Years', 0) > 4" + USER_INFREQUENT: "'app_launched'|eventCountNonZero('Days', 28) >= 1 && 'app_launched'|eventCountNonZero('Days', 28) < 7" + USER_CASUAL: "'app_launched'|eventCountNonZero('Days', 28) >= 7 && 'app_launched'|eventCountNonZero('Days', 28) < 14" + USER_REGULAR: "'app_launched'|eventCountNonZero('Days', 28) >= 14 && 'app_launched'|eventCountNonZero('Days', 28) < 21" + USER_CORE_ACTIVE: "'app_launched'|eventCountNonZero('Days', 28) >= 21" + LAUNCHED_ONCE_THIS_WEEK: "'app_launched'|eventSum('Days', 7) == 1" + string-alias: TriggerName + allow-coenrollment: true + microsurveys: + description: Feature for microsurveys. + variables: + enabled: + description: "When the feature is enabled then microsurveys can be used.\n" + type: Boolean + default: true + mr2022: + description: Features for MR 2022. + variables: + sections-enabled: + description: This property provides a lookup table of whether or not the given section should be enabled. + type: "Map" + default: + home-onboarding-dialog-existing-users: true + sync-cfr: true + wallpapers-selection-tool: true + jump-back-in-cfr: true + tcp-cfr: true + tcp-feature: true + navigation-toolbar: + description: Feature for navigation toolbar. + variables: + enabled: + description: "When the feature is enabled then the user will see the new navigation toolbar.\n" + type: Boolean + default: true + networking: + description: Enables networking features + variables: + fetchPriorityEnabled: + description: "Enables or disables network.fetchpriority.enabled preference.\n" + type: Boolean + default: true + nimbus-is-ready: + description: "A feature that provides the number of Nimbus is_ready events to send when Nimbus finishes launching.\n" + variables: + event-count: + description: The number of events that should be sent. + type: Int + default: 1 + nimbus-system: + description: "Configuration of the Nimbus System in Android.\n" + variables: + refresh-interval-foreground: + description: "The minimum interval in minutes between fetching experiment\nrecipes in the foreground.\n" + type: Int + default: 60 + nimbus-validation: + description: A feature that does not correspond to an application feature suitable for showing that Nimbus is working. This should never be used in production. + variables: + settings-icon: + description: The drawable displayed in the app menu for Settings + type: String + default: mozac_ic_settings + settings-punctuation: + description: The emoji displayed in the Settings screen title. + type: String + default: "" + settings-title: + description: The title of displayed in the Settings screen and app menu. + type: Text + default: browser_menu_settings + onboarding: + description: "A feature that configures the new user onboarding page. Note that onboarding is a **first run** feature, and should only be modified by first run experiments." + variables: + order: + description: Determines the order of the onboarding page panels + type: List + default: + - themes + - toolbar-placement + - sync + - tcp + - privacy-notice + one-click-search: + description: Enable/disable the one click search feature. + variables: + enabled: + description: "If true, the one click search will be enabled." + type: Boolean + default: false + pdfjs: + description: PDF.js features + variables: + download-button: + description: Download button + type: Boolean + default: true + open-in-app-button: + description: Open in app button + type: Boolean + default: true + print: + description: A feature for printing from the share or browser menu. + variables: + browser-print-enabled: + description: "If true, a print button from the browser menu is available." + type: Boolean + default: true + share-print-enabled: + description: "If true, a print button from the share menu is available." + type: Boolean + default: true + private-browsing: + description: Private Browsing Mode + variables: + felt-privacy-enabled: + description: "if true, enable felt privacy related UI" + type: Boolean + default: false + query-parameter-stripping: + description: Features for query parameter stripping. + variables: + sections-enabled: + description: This property provides a lookup table of whether or not the given section should be enabled. + type: "Map" + default: + query-parameter-stripping: "0" + query-parameter-stripping-pmb: "0" + query-parameter-stripping-allow-list: "" + query-parameter-stripping-strip-list: "" + re-engagement-notification: + description: A feature that shows the re-engagement notification if the user is inactive. + variables: + enabled: + description: "If true, the re-engagement notification is shown to the inactive user." + type: Boolean + default: false + type: + description: The type of re-engagement notification that is shown to the inactive user. + type: Int + default: 0 + remote-tab-management: + description: "Features that let users manage tabs on other devices that are connected to the same Mozilla account.\n" + variables: + close-tabs-enabled: + description: "Whether the feature to close synced tabs is enabled. When enabled, this device will allow other devices to close tabs that are open on this device, and show a \"close\" button for tabs that are currently open on other supported devices in the synced tabs tray.\n" + type: Boolean + default: true + search-extra-params: + description: A feature that provides additional args for search. + variables: + channel-id: + description: The channel Id param name with arg. + type: "Map" + default: {} + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + feature-enabler: + description: "The feature enabler param name with arg, NOTE this map could be empty." + type: "Map" + default: {} + search-engine: + description: The search engine name. + type: String + default: "" + search-term-groups: + description: A feature allowing the grouping of URLs around the search term that it came from. + variables: + enabled: + description: "If true, the feature shows up on the homescreen and on the new tab screen." + type: Boolean + default: true + set-as-default-prompt: + description: "Displays native default browser prompt to existing users.\n" + variables: + app-cold-starts-between-prompts: + description: "Minimum number of app cold starts before the next prompt should be displayed to the user.\n" + type: Int + default: 4 + days-between-prompts: + description: "Minimum number of days between displays of Set as default prompt.\n" + type: Int + default: 14 + enabled: + description: "When the feature is enabled then the Set as default prompt can be triggered for existing users.\n" + type: Boolean + default: true + max-number-of-times-to-display: + description: "Maximum number of time the prompt should be displayed.\n" + type: Int + default: 3 + ship: + description: The feature that controls Session History in Parent (SHIP) in Gecko. + variables: + disabled: + description: "Whether or not to disable SHIP. SHIP is enabled when set to false. SHIP is disabled when set to true.\n" + type: Boolean + default: true + shopping-experience: + description: A feature that shows product review quality information. + variables: + enabled: + description: "if true, the shopping experience feature is shown to the user." + type: Boolean + default: true + product-recommendations: + description: "if true, recommended products feature is enabled to be shown to the user based on their preference." + type: Boolean + default: true + product-recommendations-exposure: + description: "if true, we want to record recommended products inventory for opted-in users, even if product recommendations are disabled." + type: Boolean + default: true + splash-screen: + description: "A feature that extends splash screen duration, allowing additional data fetching time for the app's initial run." + variables: + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + maximum_duration_ms: + description: The maximum amount of time in milliseconds the splashscreen will be visible while waiting for initialization calls to complete. + type: Int + default: 0 + off-train-onboarding: + description: "If true, the fetched data will be applied and used during the session." + type: Boolean + default: false + suggest-shipped-domains: + description: Feature that suggests domains from the shipped domain list. + variables: + enabled: + description: "Suggest domains from the shipped domain list.\n" + type: Boolean + default: false + third-party-cookie-blocking: + description: Control third-party cookie blocking. + variables: + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + enabled-normal: + description: "Enables / disables third-party cookie blocking in normal browsing mode.\n" + type: Boolean + default: false + enabled-private: + description: "Enables / disables third-party cookie blocking in private browsing mode.\n" + type: Boolean + default: true + translations: + description: The feature that allows on-device translations of web content. + variables: + downloads-enabled: + description: "Show the global language model download options entry point for translations. ('Download languages' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + global-lang-settings-enabled: + description: "Show the global language options entry point for automatically translating. ('Automatic Translation' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + global-settings-enabled: + description: "Show the global settings entry point within the translations feature. ('Translation Settings' on the page settings view.) 'page-settings-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + global-site-settings-enabled: + description: "Show the global never translate this site options entry point for site management. ('Never translate these sites' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + main-flow-browser-menu-enabled: + description: "Show the browser menu entry point into the translations feature. ('Translate Page' on browser menu.)\n" + type: Boolean + default: true + main-flow-toolbar-enabled: + description: "Show the primary toolbar entry point into the translations feature. (Translations icon on URL toolbar.)\n" + type: Boolean + default: true + page-settings-enabled: + description: "Show the page settings entry point within the translations feature. (Gear icon on the translations main flow page.) 'main-flow-toolbar-enabled' or 'main-flow-browser-menu-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + user-characteristics: + description: A feature for control user characteristic data collection + variables: + currentVersion: + description: The current collection version of the user characteristics. + type: Int + default: 0 +enums: + ControlMessageBehavior: + description: An enum to influence what should be displayed when a control message is selected. + variants: + show-next-message: + description: The next eligible message should be shown. + show-none: + description: The surface should show no message. + CookieBannersSection: + description: The identifiers for the sections of the MR 2022. + variants: + feature-setting-detect-only: + description: "An integer either 0 or 1 indicating if cookie banner detect only mode should be enabled or disabled. 0 for setting to be disabled, and 1 for enabling the setting." + feature-setting-global-rules: + description: "An integer either 0 or 1 indicating if cookie banner global rules should be enabled or disabled. 0 for setting to be disabled, and 1 for enabling the setting." + feature-setting-global-rules-sub-frames: + description: "An integer either 0 or 1 indicating if cookie banner global rules sub-frames should be enabled or disabled. 0 for setting to be disabled, and 1 for enabling the setting." + feature-setting-value: + description: "An integer either 0 or 1 indicating if cookie banner setting should be enabled or disabled, 0 for setting the value to disabled, 1 for enabling the setting with the value reject_all." + feature-setting-value-pbm: + description: "An integer either 0 or 1 indicating if cookie banner setting should be enabled or disabled, 0 for setting the value to disabled, 1 for enabling the setting with the value reject_all." + feature-ui: + description: "An integer either 0 or 1 indicating if the UI for cookie banner handling should be visible, 0 to hide the UI and 1 to show the UI. The actual UI is composed by cookie banner section in the settings page, the toolbar section and the re-engagement dialog." + HomeScreenSection: + description: The identifiers for the sections of the homescreen. + variants: + bookmarks: + description: The sites the user has bookmarked. + jump-back-in: + description: The tabs the user was looking immediately before being interrupted. + pocket: + description: The pocket section. This should only be available in the US. + pocket-sponsored-stories: + description: Subsection of the Pocket homescreen section which shows sponsored stories. + recent-explorations: + description: The tab groups + top-sites: + description: The frecency and pinned sites. + MR2022Section: + description: The identifiers for the sections of the MR 2022. + variants: + home-onboarding-dialog-existing-users: + description: Home onboarding dialog for upgraded users. + jump-back-in-cfr: + description: Jump back-in onboarding message. + sync-cfr: + description: CFR for the first time you see a synced tab on the home screen. + tcp-cfr: + description: CFR for the first time you use the browse with Total Cookie Protection on the browser screen. + tcp-feature: + description: Controls the Total Cookie Protection feature. + wallpapers-selection-tool: + description: Wallpapers selection dialog tool for the home screen. + OnboardingCardType: + description: An enum to describe a type of card. + variants: + add-ons: + description: Allows user to install add-ons from onboarding. + add-search-widget: + description: Allows user to add search widget to homescreen. + default-browser: + description: Allows user to set Firefox as the default browser. + notification-permission: + description: Allows user to enable notification permission. + sync-sign-in: + description: Allows user to sync with a Firefox account. + terms-of-service: + description: Page to display the terms of services. + theme-selection: + description: Allows user to choose between dark and light themes. + toolbar-placement: + description: Allows user to choose the toolbar position. + OnboardingPanel: + description: The types of onboarding panels in the onboarding page + variants: + privacy-notice: + description: The onboarding panel where users can tap to view our privacy notice. + sync: + description: The onboarding panel where users can sign in to sync + tcp: + description: The onboarding panel where users can choose their total cookie protection settings + themes: + description: The themes onboarding panel where users pick themes + toolbar-placement: + description: The onboarding panel where users choose their toolbar placement (bottom or top) + QueryParameterStrippingSection: + description: The identifiers for the options for the Query Parameter Stripping feature. + variants: + query-parameter-stripping: + description: "An integer either 0 or 1 indicating if query parameter stripping should be enabled or disabled in normal mode. 0 for setting to be disabled, and 1 for enabling the setting." + query-parameter-stripping-allow-list: + description: An string separated by commas indicating the sites where should from query stripping should be exempted. + query-parameter-stripping-pmb: + description: "An integer either 0 or 1 indicating if query parameter stripping should be enabled or disabled in private mode. 0 for setting to be disabled, and 1 for enabling the setting." + query-parameter-stripping-strip-list: + description: An string separated by commas indicating the list of query params to be stripped from URIs. This list will be merged with records coming from RemoteSettings. + SuggestionType: + description: The type of a Firefox Suggest search suggestion. + variants: + amp: + description: A Firefox Suggestion from adMarketplace. + ampMobile: + description: A firefox Suggestion from adMarketplace specifically for mobile. + wikipedia: + description: A Firefox Suggestion for a Wikipedia page. + ThemeType: + description: An enum to describe a theme selection option. + variants: + theme-dark: + description: Sets the theme to dark mode. + theme-light: + description: Sets the theme to light mode. + theme-system: + description: "Adapts the theme to match the device's system setting." + ToolbarType: + description: An enum to describe a toolbar placement option. + variants: + toolbar-bottom: + description: Sets the toolbar placement on the bottom. + toolbar-top: + description: Sets the toolbar placement on the top. +objects: + AddOnData: + description: An object to describe an add-on to be installed from the onboarding card. + fields: + average-rating: + description: The average rating of the add-on. + type: String + default: "0.0" + description: + description: A small description of the add-on to be displayed to the user. + type: Text + default: "" + icon-res: + description: The resource id of the icon of the add-on to be displayed. + type: Image + default: ic_onboarding_welcome + id: + description: The identifier for this add-on. + type: Text + default: "" + install-url: + description: The url from where the add-on can be installed. + type: Text + default: "" + name: + description: The name of the add-on to be displayed to the user. + type: Text + default: "" + review-count: + description: The amount of reviews the add-on has. + type: String + default: "0.0" + CustomizationThemeData: + description: Defines an option for theme selection. + fields: + image-res: + description: The resource id of the image to be displayed. + type: Image + default: ic_pick_a_theme_system_auto + label: + description: "Display text for the theme option (e.g., \"Light Theme\")." + type: Text + default: "" + theme-type: + description: The type of the theming option. + type: ThemeType + default: theme-system + CustomizationToolbarData: + description: An object to describe the placement of the toolbar. + fields: + image-res: + description: The resource id of toolbar placement image. + type: Image + default: ic_onboarding_customize_toolbar + label: + description: "Display text for the toolbar placement option (e.g. \"Top placement\")." + type: Text + default: "" + toolbar-type: + description: The type of toolbar placement. + type: ToolbarType + default: toolbar-top + ExtraCardData: + description: "Holds data for cards that require additional data, e.g. add-ons, toolbar placement cards." + fields: + add-ons-data: + description: "An optional list of add-ons which will be shown in add-on onboarding card.\n" + type: List + default: [] + customization-theme-data: + description: An optional list of theme choices for the theme selection card. + type: List + default: [] + customization-toolbar-data: + description: "An optional list of toolbar placements for the toolbar placement card.\n" + type: List + default: [] + term-of-service-data: + description: "An optional terms of service data for the onboarding card.\n" + type: Option + default: ~ + MessageData: + description: "An object to describe a message. It uses human readable strings to describe the triggers, action and style of the message as well as the text of the message and call to action.\n" + fields: + action: + description: "A URL of a page or a deeplink. This may have substitution variables in.\n" + type: ActionName + default: OPEN_URL + action-params: + description: "A string map containing query parameters that will be appended to the action URL. This is useful for opening URLs in tabs, or specifying that the tab should be private. The values may have substitutions, e.g. \"url\": \"https://example.com/id={uuid}\", \"private\": \"true\".\nThe params and their values are all determined downstream of the messaging component, by the embedding app's deeplink processing machinery.\n" + type: "Map" + default: {} + button-label: + description: "The text on the button. If no text is present, the whole message is clickable.\n" + type: Option + default: ~ + exclude-if-any: + description: "A list of strings corresponding to targeting expressions. The message will not be shown if any of the expressions are `true`.\n" + type: List + default: [] + experiment: + description: The slug of the experiment that this message came from. + type: Option + default: ~ + is-control: + description: "Indicates if this message is the control message, if true shouldn't be displayed" + type: Boolean + default: false + microsurvey-config: + description: Optional configuration data for a microsurvey. + type: Option + default: ~ + style: + description: "The style as described in a `StyleData` from the styles table.\n" + type: StyleName + default: DEFAULT + surface: + description: The surface identifier for this message. + type: SurfaceName + default: homescreen + text: + description: The message text displayed to the user + type: Text + default: "" + title: + description: The title text displayed to the user + type: Option + default: ~ + trigger-if-all: + description: "A list of strings corresponding to targeting expressions. The message will be shown if all expressions are `true`.\n" + type: List + default: [] + MicrosurveyAnswer: + description: Attributes relating to microsurvey content. + fields: + ordering: + description: "Used to sequence the answers top to bottom. E.g. 0 will be the first/top item, 1 will be next and so on. Always set either ALL the provided answers ordering or NONE. If ALL answers are default, the the ordering used will be the same as provided by the experiment.\n" + type: Int + default: 0 + text: + description: The text for the answer. + type: Text + default: "" + MicrosurveyConfig: + description: Attributes relating to microsurvey content. + fields: + answers: + description: "The list of answers to present to the user e.g. \"Satisfied, Dissatisfied...\"." + type: List + default: [] + icon: + description: The icon shown in the survey. + type: Option + default: ~ + utm-content: + description: "Optional \"utm_content\" parameter for the privacy notice URL to specify the feature being surveyed." + type: Option + default: ~ + NotificationConfig: + description: Attributes controlling the global configuration of notification messages. + fields: + refresh-interval: + description: "How often, in minutes, the notification message worker will wake up and check for new messages.\n" + type: Int + default: 240 + OnboardingCardData: + description: An object to describe a user facing onboarding card. + fields: + body: + description: The message text displayed to the user. May contain linkable text. + type: Text + default: "" + card-type: + description: The type of the card. + type: OnboardingCardType + default: default-browser + disqualifiers: + description: "A list of strings corresponding to targeting expressions. The card will not be shown if any expression is `true`.\n" + type: List + default: + - NEVER + enabled: + description: "If true, this card is shown to the user." + type: Boolean + default: true + extra-data: + description: Optional extra data for cards that require additional data. + type: Option + default: ~ + image-res: + description: The resource id of the image to be displayed. + type: Image + default: ic_onboarding_welcome + ordering: + description: Used to sequence the cards. + type: Int + default: 0 + prerequisites: + description: "A list of strings corresponding to targeting expressions. The card will be shown if all expressions are `true` and if no expressions in the `disqualifiers` table are true, or if the `disqualifiers` table is empty.\n" + type: List + default: + - ALWAYS + primary-button-label: + description: The text to display on the primary button. + type: Text + default: "" + secondary-button-label: + description: The text to display on the secondary button. + type: Text + default: "" + title: + description: The title text displayed to the user. + type: Text + default: "" + StyleData: + description: "A group of properties (predominantly visual) to describe the style of the message.\n" + fields: + max-display-count: + description: "How many sessions will this message be shown to the user before it is expired.\n" + type: Int + default: 5 + priority: + description: "The importance of this message. 0 is not very important, 100 is very important.\n" + type: Int + default: 50 + TermsOfServiceData: + description: An object to describe the terms of service onboarding card. + fields: + lineOneLinkText: + description: The text for the link of line one. + type: Text + default: "" + lineOneLinkURL: + description: The url for the link of line one. + type: Text + default: "" + lineOneText: + description: The text for line one. + type: Text + default: "" + lineThreeLinkText: + description: The text for the link of line three. + type: Text + default: "" + lineThreeText: + description: The text for line three. + type: Text + default: "" + lineTwoLinkText: + description: The text for the link of line two. + type: Text + default: "" + lineTwoLinkURL: + description: The url for the link of line two. + type: Text + default: "" + lineTwoText: + description: The text for line two. + type: Text + default: "" diff --git a/experimenter/experimenter/features/manifests/fenix/v136.0.0/experimenter.yaml b/experimenter/experimenter/features/manifests/fenix/v136.0.0/experimenter.yaml new file mode 100644 index 0000000000..1dc5541d02 --- /dev/null +++ b/experimenter/experimenter/features/manifests/fenix/v136.0.0/experimenter.yaml @@ -0,0 +1,445 @@ +--- +alternative-app-launcher-icon: + description: A feature that changes the app launcher icon background color. + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "If true, the feature is active." + reset-to-default: + type: boolean + description: "If true use the default icon, if false use the alternative icon. This is required to 'reset' the icon for enrolled users once the initial experiment is complete.\n" +awesomebar-suggestion-provider: + description: Configuration for the Firefox Suggest awesomebar suggestion provider. + hasExposure: true + exposureDescription: "" + variables: + available-suggestion-types: + type: json + description: "A map of suggestion types to booleans that indicate whether or not the provider should return suggestions of those types.\n" +bookmarks: + description: Feature for Bookmarks + hasExposure: true + exposureDescription: "" + variables: + new-compose-ui: + type: boolean + description: "if true, enable new compose based UI" +cookie-banners: + description: Features for cookie banner handling. + hasExposure: true + exposureDescription: "" + variables: + sections-enabled: + type: json + description: This property provides a lookup table of whether or not the given section should be enabled. +fingerprinting-protection: + description: Control Fingerprinting Protection + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "If true, the feature is active." + enabled-normal: + type: boolean + description: "Enables / disables fingerprinting protection in normal browsing mode.\n" + enabled-private: + type: boolean + description: "Enables / disables fingerprinting protection in private browsing mode.\n" + fdlibm-math: + type: boolean + description: "Uses a different math backend for Math.sin/cos/tan in JavaScript that exposes less entropy\n" + overrides: + type: string + description: "The protection overrides to add or remove fingerprinting protection targets. Please check RFPTargets.inc for all supported targets.\n" +fission: + description: The feature that controls whether fission is enabled or not in Gecko. + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "Whether or not to enable fission. Fission is enabled when set to true. Fission is disabled when set to false.\n" +fx-suggest: + description: A feature that provides Firefox Suggest search suggestions. + hasExposure: true + exposureDescription: "" + variables: + boost-amp-wiki: + type: boolean + description: "The feature boost wiki and AMP suggestions to the top of its group.\n" + enabled: + type: boolean + description: "Whether the feature is enabled. When Firefox Suggest is enabled, Firefox will download and store new search suggestions in the background, and show additional Search settings to control which suggestions appear in the awesomebar. When Firefox Suggest is disabled, Firefox will not download new suggestions, and hide the additional Search settings.\n" +glean: + description: A feature that provides server-side configurations for Glean metrics (aka Server Knobs). + hasExposure: true + exposureDescription: "" + variables: + delay-ping-lifetime-io: + type: boolean + description: Glean will delay io for ping lifetime metrics + enable-event-timestamps: + type: boolean + description: Enables precise event timestamps for Glean events + metrics-enabled: + type: json + description: "A map of metric base-identifiers to booleans representing the state of the 'enabled' flag for that metric." + ping-lifetime-max-time: + type: int + description: After what time to auto-flush + ping-lifetime-threshold: + type: int + description: Write count threshold when to auto-flush +growth-data: + description: A feature measuring campaign growth data + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "If true, the feature is active" +homescreen: + description: The homescreen that the user goes to when they press home or new tab. + hasExposure: true + exposureDescription: "" + variables: + sections-enabled: + type: json + description: "This property provides a lookup table of whether or not the given section should be enabled. If the section is enabled, it should be toggleable in the settings screen, and on by default." +javascript: + description: Enables Javascript Engine (Spidermonkey) features + hasExposure: true + exposureDescription: "" + variables: + parallelMarkingEnabled: + type: boolean + description: "Enables or disables javascript.options.mem.gc_parallel_marking preference.\n" +juno-onboarding: + description: A feature that shows the onboarding flow. + hasExposure: true + exposureDescription: "" + variables: + cards: + type: json + description: Collection of user facing onboarding cards. + conditions: + type: json + description: "A collection of out the box conditional expressions to be used in determining whether a card should show or not. Each entry maps to a valid JEXL expression.\n" +menu-redesign: + description: Control the new menu redesign. + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "If true, the new menu redesign is available." + report-site-issue: + type: boolean + description: "If true, report site issue menu item and preview is available." +messaging: + description: "The in-app messaging system.\n" + hasExposure: true + exposureDescription: "" + variables: + $$experiment: + type: string + description: "The only acceptable value for `MessageData#experiment`. This should not be set by experiment." + $$surfaces: + type: json + description: "A list available surfaces for this app.\n\nThis should not be written to by experiments, and should be hidden to users.\n" + actions: + type: json + description: A growable map of action URLs. + message-under-experiment: + type: string + description: "Deprecated in favor of `MessageData#experiment`. This will be removed in future releases." + messages: + type: json + description: A growable collection of messages + notification-config: + type: json + description: Configuration of the notification worker for all notification messages. + on-control: + type: string + description: What should be displayed when a control message is selected. + enum: + - show-next-message + - show-none + styles: + type: json + description: "A map of styles to configure message appearance.\n" + triggers: + type: json + description: "A collection of out the box trigger expressions. Each entry maps to a valid JEXL expression.\n" +microsurveys: + description: Feature for microsurveys. + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "When the feature is enabled then microsurveys can be used.\n" +mr2022: + description: Features for MR 2022. + hasExposure: true + exposureDescription: "" + variables: + sections-enabled: + type: json + description: This property provides a lookup table of whether or not the given section should be enabled. +navigation-toolbar: + description: Feature for navigation toolbar. + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "When the feature is enabled then the user will see the new navigation toolbar.\n" +networking: + description: Enables networking features + hasExposure: true + exposureDescription: "" + variables: + fetchPriorityEnabled: + type: boolean + description: "Enables or disables network.fetchpriority.enabled preference.\n" +nimbus-is-ready: + description: "A feature that provides the number of Nimbus is_ready events to send when Nimbus finishes launching.\n" + hasExposure: true + exposureDescription: "" + variables: + event-count: + type: int + description: The number of events that should be sent. +nimbus-system: + description: "Configuration of the Nimbus System in Android.\n" + hasExposure: true + exposureDescription: "" + variables: + refresh-interval-foreground: + type: int + description: "The minimum interval in minutes between fetching experiment\nrecipes in the foreground.\n" +nimbus-validation: + description: A feature that does not correspond to an application feature suitable for showing that Nimbus is working. This should never be used in production. + hasExposure: true + exposureDescription: "" + variables: + settings-icon: + type: string + description: The drawable displayed in the app menu for Settings + settings-punctuation: + type: string + description: The emoji displayed in the Settings screen title. + settings-title: + type: string + description: The title of displayed in the Settings screen and app menu. +onboarding: + description: "A feature that configures the new user onboarding page. Note that onboarding is a **first run** feature, and should only be modified by first run experiments." + hasExposure: true + exposureDescription: "" + variables: + order: + type: json + description: Determines the order of the onboarding page panels +one-click-search: + description: Enable/disable the one click search feature. + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "If true, the one click search will be enabled." +pdfjs: + description: PDF.js features + hasExposure: true + exposureDescription: "" + variables: + download-button: + type: boolean + description: Download button + open-in-app-button: + type: boolean + description: Open in app button +print: + description: A feature for printing from the share or browser menu. + hasExposure: true + exposureDescription: "" + variables: + browser-print-enabled: + type: boolean + description: "If true, a print button from the browser menu is available." + share-print-enabled: + type: boolean + description: "If true, a print button from the share menu is available." +private-browsing: + description: Private Browsing Mode + hasExposure: true + exposureDescription: "" + variables: + felt-privacy-enabled: + type: boolean + description: "if true, enable felt privacy related UI" +query-parameter-stripping: + description: Features for query parameter stripping. + hasExposure: true + exposureDescription: "" + variables: + sections-enabled: + type: json + description: This property provides a lookup table of whether or not the given section should be enabled. +re-engagement-notification: + description: A feature that shows the re-engagement notification if the user is inactive. + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "If true, the re-engagement notification is shown to the inactive user." + type: + type: int + description: The type of re-engagement notification that is shown to the inactive user. +remote-tab-management: + description: "Features that let users manage tabs on other devices that are connected to the same Mozilla account.\n" + hasExposure: true + exposureDescription: "" + variables: + close-tabs-enabled: + type: boolean + description: "Whether the feature to close synced tabs is enabled. When enabled, this device will allow other devices to close tabs that are open on this device, and show a \"close\" button for tabs that are currently open on other supported devices in the synced tabs tray.\n" +search-extra-params: + description: A feature that provides additional args for search. + hasExposure: true + exposureDescription: "" + variables: + channel-id: + type: json + description: The channel Id param name with arg. + enabled: + type: boolean + description: "If true, the feature is active." + feature-enabler: + type: json + description: "The feature enabler param name with arg, NOTE this map could be empty." + search-engine: + type: string + description: The search engine name. +search-term-groups: + description: A feature allowing the grouping of URLs around the search term that it came from. + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "If true, the feature shows up on the homescreen and on the new tab screen." +set-as-default-prompt: + description: "Displays native default browser prompt to existing users.\n" + hasExposure: true + exposureDescription: "" + variables: + app-cold-starts-between-prompts: + type: int + description: "Minimum number of app cold starts before the next prompt should be displayed to the user.\n" + days-between-prompts: + type: int + description: "Minimum number of days between displays of Set as default prompt.\n" + enabled: + type: boolean + description: "When the feature is enabled then the Set as default prompt can be triggered for existing users.\n" + max-number-of-times-to-display: + type: int + description: "Maximum number of time the prompt should be displayed.\n" +ship: + description: The feature that controls Session History in Parent (SHIP) in Gecko. + hasExposure: true + exposureDescription: "" + variables: + disabled: + type: boolean + description: "Whether or not to disable SHIP. SHIP is enabled when set to false. SHIP is disabled when set to true.\n" +shopping-experience: + description: A feature that shows product review quality information. + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "if true, the shopping experience feature is shown to the user." + product-recommendations: + type: boolean + description: "if true, recommended products feature is enabled to be shown to the user based on their preference." + product-recommendations-exposure: + type: boolean + description: "if true, we want to record recommended products inventory for opted-in users, even if product recommendations are disabled." +splash-screen: + description: "A feature that extends splash screen duration, allowing additional data fetching time for the app's initial run." + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "If true, the feature is active." + maximum_duration_ms: + type: int + description: The maximum amount of time in milliseconds the splashscreen will be visible while waiting for initialization calls to complete. + off-train-onboarding: + type: boolean + description: "If true, the fetched data will be applied and used during the session." +suggest-shipped-domains: + description: Feature that suggests domains from the shipped domain list. + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "Suggest domains from the shipped domain list.\n" +third-party-cookie-blocking: + description: Control third-party cookie blocking. + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "If true, the feature is active." + enabled-normal: + type: boolean + description: "Enables / disables third-party cookie blocking in normal browsing mode.\n" + enabled-private: + type: boolean + description: "Enables / disables third-party cookie blocking in private browsing mode.\n" +translations: + description: The feature that allows on-device translations of web content. + hasExposure: true + exposureDescription: "" + variables: + downloads-enabled: + type: boolean + description: "Show the global language model download options entry point for translations. ('Download languages' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n" + global-lang-settings-enabled: + type: boolean + description: "Show the global language options entry point for automatically translating. ('Automatic Translation' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n" + global-settings-enabled: + type: boolean + description: "Show the global settings entry point within the translations feature. ('Translation Settings' on the page settings view.) 'page-settings-enabled' must also be enabled for users to access this feature.\n" + global-site-settings-enabled: + type: boolean + description: "Show the global never translate this site options entry point for site management. ('Never translate these sites' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n" + main-flow-browser-menu-enabled: + type: boolean + description: "Show the browser menu entry point into the translations feature. ('Translate Page' on browser menu.)\n" + main-flow-toolbar-enabled: + type: boolean + description: "Show the primary toolbar entry point into the translations feature. (Translations icon on URL toolbar.)\n" + page-settings-enabled: + type: boolean + description: "Show the page settings entry point within the translations feature. (Gear icon on the translations main flow page.) 'main-flow-toolbar-enabled' or 'main-flow-browser-menu-enabled' must also be enabled for users to access this feature.\n" +user-characteristics: + description: A feature for control user characteristic data collection + hasExposure: true + exposureDescription: "" + variables: + currentVersion: + type: int + description: The current collection version of the user characteristics. diff --git a/experimenter/experimenter/features/manifests/fenix/v136.0.0/nightly.fml.yaml b/experimenter/experimenter/features/manifests/fenix/v136.0.0/nightly.fml.yaml new file mode 100644 index 0000000000..198ff574e5 --- /dev/null +++ b/experimenter/experimenter/features/manifests/fenix/v136.0.0/nightly.fml.yaml @@ -0,0 +1,1039 @@ +--- +version: 1.0.0 +about: + description: Nimbus Feature Manifest for Fenix (Firefox Android) +channels: + - nightly +features: + alternative-app-launcher-icon: + description: A feature that changes the app launcher icon background color. + variables: + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + reset-to-default: + description: "If true use the default icon, if false use the alternative icon. This is required to 'reset' the icon for enrolled users once the initial experiment is complete.\n" + type: Boolean + default: false + awesomebar-suggestion-provider: + description: Configuration for the Firefox Suggest awesomebar suggestion provider. + variables: + available-suggestion-types: + description: "A map of suggestion types to booleans that indicate whether or not the provider should return suggestions of those types.\n" + type: "Map" + default: + amp: true + ampMobile: false + wikipedia: true + bookmarks: + description: Feature for Bookmarks + variables: + new-compose-ui: + description: "if true, enable new compose based UI" + type: Boolean + default: false + cookie-banners: + description: Features for cookie banner handling. + variables: + sections-enabled: + description: This property provides a lookup table of whether or not the given section should be enabled. + type: "Map" + default: + feature-ui: 1 + feature-setting-value: 0 + feature-setting-value-pbm: 1 + feature-setting-detect-only: 0 + feature-setting-global-rules: 1 + feature-setting-global-rules-sub-frames: 1 + fingerprinting-protection: + description: Control Fingerprinting Protection + variables: + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + enabled-normal: + description: "Enables / disables fingerprinting protection in normal browsing mode.\n" + type: Boolean + default: false + enabled-private: + description: "Enables / disables fingerprinting protection in private browsing mode.\n" + type: Boolean + default: true + fdlibm-math: + description: "Uses a different math backend for Math.sin/cos/tan in JavaScript that exposes less entropy\n" + type: Boolean + default: false + overrides: + description: "The protection overrides to add or remove fingerprinting protection targets. Please check RFPTargets.inc for all supported targets.\n" + type: String + default: "" + fission: + description: The feature that controls whether fission is enabled or not in Gecko. + variables: + enabled: + description: "Whether or not to enable fission. Fission is enabled when set to true. Fission is disabled when set to false.\n" + type: Boolean + default: false + fx-suggest: + description: A feature that provides Firefox Suggest search suggestions. + variables: + boost-amp-wiki: + description: "The feature boost wiki and AMP suggestions to the top of its group.\n" + type: Boolean + default: false + enabled: + description: "Whether the feature is enabled. When Firefox Suggest is enabled, Firefox will download and store new search suggestions in the background, and show additional Search settings to control which suggestions appear in the awesomebar. When Firefox Suggest is disabled, Firefox will not download new suggestions, and hide the additional Search settings.\n" + type: Boolean + default: true + glean: + description: A feature that provides server-side configurations for Glean metrics (aka Server Knobs). + variables: + delay-ping-lifetime-io: + description: Glean will delay io for ping lifetime metrics + type: Boolean + default: true + enable-event-timestamps: + description: Enables precise event timestamps for Glean events + type: Boolean + default: true + metrics-enabled: + description: "A map of metric base-identifiers to booleans representing the state of the 'enabled' flag for that metric." + type: "Map" + default: {} + ping-lifetime-max-time: + description: After what time to auto-flush + type: Int + default: 2000 + ping-lifetime-threshold: + description: Write count threshold when to auto-flush + type: Int + default: 1000 + allow-coenrollment: true + growth-data: + description: A feature measuring campaign growth data + variables: + enabled: + description: "If true, the feature is active" + type: Boolean + default: false + homescreen: + description: The homescreen that the user goes to when they press home or new tab. + variables: + sections-enabled: + description: "This property provides a lookup table of whether or not the given section should be enabled. If the section is enabled, it should be toggleable in the settings screen, and on by default." + type: "Map" + default: + top-sites: true + jump-back-in: true + bookmarks: true + recent-explorations: true + pocket: true + pocket-sponsored-stories: true + javascript: + description: Enables Javascript Engine (Spidermonkey) features + variables: + parallelMarkingEnabled: + description: "Enables or disables javascript.options.mem.gc_parallel_marking preference.\n" + type: Boolean + default: false + juno-onboarding: + description: A feature that shows the onboarding flow. + variables: + cards: + description: Collection of user facing onboarding cards. + type: "Map" + default: + default-browser: + body: juno_onboarding_default_browser_description_nimbus_3 + card-type: default-browser + disqualifiers: + - NEVER + enabled: true + extra-data: ~ + image-res: ic_onboarding_welcome + ordering: 10 + prerequisites: + - ALWAYS + primary-button-label: juno_onboarding_default_browser_positive_button + secondary-button-label: juno_onboarding_default_browser_negative_button + title: juno_onboarding_default_browser_title_nimbus_2 + add-search-widget: + body: juno_onboarding_add_search_widget_description + card-type: add-search-widget + disqualifiers: + - NEVER + enabled: true + extra-data: ~ + image-res: ic_onboarding_search_widget + ordering: 15 + prerequisites: + - ALWAYS + primary-button-label: juno_onboarding_add_search_widget_positive_button + secondary-button-label: juno_onboarding_add_search_widget_negative_button + title: juno_onboarding_add_search_widget_title + sync-sign-in: + body: juno_onboarding_sign_in_description_3 + card-type: sync-sign-in + disqualifiers: + - NEVER + enabled: true + extra-data: ~ + image-res: ic_onboarding_sync + ordering: 20 + prerequisites: + - ALWAYS + primary-button-label: juno_onboarding_sign_in_positive_button + secondary-button-label: juno_onboarding_sign_in_negative_button + title: juno_onboarding_sign_in_title_2 + notification-permission: + body: juno_onboarding_enable_notifications_description_nimbus_2 + card-type: notification-permission + disqualifiers: + - NEVER + enabled: true + extra-data: ~ + image-res: ic_notification_permission + ordering: 30 + prerequisites: + - ALWAYS + primary-button-label: juno_onboarding_enable_notifications_positive_button + secondary-button-label: juno_onboarding_enable_notifications_negative_button + title: juno_onboarding_enable_notifications_title_nimbus_2 + string-alias: OnboardingCardKey + conditions: + description: "A collection of out the box conditional expressions to be used in determining whether a card should show or not. Each entry maps to a valid JEXL expression.\n" + type: "Map" + default: + ALWAYS: "true" + NEVER: "false" + string-alias: ConditionName + menu-redesign: + description: Control the new menu redesign. + variables: + enabled: + description: "If true, the new menu redesign is available." + type: Boolean + default: false + report-site-issue: + description: "If true, report site issue menu item and preview is available." + type: Boolean + default: true + messaging: + description: "The in-app messaging system.\n" + variables: + $$experiment: + description: "The only acceptable value for `MessageData#experiment`. This should not be set by experiment." + type: ExperimentSlug + default: "{experiment}" + string-alias: ExperimentSlug + $$surfaces: + description: "A list available surfaces for this app.\n\nThis should not be written to by experiments, and should be hidden to users.\n" + type: List + default: + - homescreen + - notification + - survey + - microsurvey + string-alias: SurfaceName + actions: + description: A growable map of action URLs. + type: "Map" + default: + OPEN_URL: "://open" + ENABLE_PRIVATE_BROWSING: "://enable_private_browsing" + INSTALL_SEARCH_WIDGET: "://install_search_widget" + MAKE_DEFAULT_BROWSER: "://make_default_browser" + VIEW_BOOKMARKS: "://urls_bookmarks" + VIEW_COLLECTIONS: "://home_collections" + VIEW_HISTORY: "://urls_history" + VIEW_HOMESCREEN: "://home" + OPEN_SETTINGS_ACCESSIBILITY: "://settings_accessibility" + OPEN_SETTINGS_ADDON_MANAGER: "://settings_addon_manager" + OPEN_SETTINGS_DELETE_BROWSING_DATA: "://settings_delete_browsing_data" + OPEN_SETTINGS_LOGINS: "://settings_logins" + OPEN_SETTINGS_NOTIFICATIONS: "://settings_notifications" + OPEN_SETTINGS_PRIVACY: "://settings_privacy" + OPEN_SETTINGS_SEARCH_ENGINE: "://settings_search_engine" + OPEN_SETTINGS_TRACKING_PROTECTION: "://settings_tracking_protection" + OPEN_SETTINGS_WALLPAPERS: "://settings_wallpapers" + OPEN_SETTINGS: "://settings" + OPEN_SHARE_SHEET: "://share_sheet" + TURN_ON_SYNC: "://turn_on_sync" + string-alias: ActionName + message-under-experiment: + description: "Deprecated in favor of `MessageData#experiment`. This will be removed in future releases." + type: Option + default: ~ + messages: + description: A growable collection of messages + type: "Map" + default: + default-browser: + title: default_browser_experiment_card_title + text: default_browser_experiment_card_text + surface: homescreen + action: MAKE_DEFAULT_BROWSER + trigger-if-all: + - USER_ESTABLISHED_INSTALL + - ANDROID_API_BELOW_29 + exclude-if-any: + - I_AM_DEFAULT_BROWSER + style: PERSISTENT + button-label: preferences_set_as_default_browser + default-browser-notification: + title: nimbus_notification_default_browser_title + text: nimbus_notification_default_browser_text + surface: notification + style: NOTIFICATION + trigger-if-all: + - DAY_3_AFTER_INSTALL + exclude-if-any: + - I_AM_DEFAULT_BROWSER + action: MAKE_DEFAULT_BROWSER + string-alias: MessageKey + notification-config: + description: Configuration of the notification worker for all notification messages. + type: NotificationConfig + default: + refresh-interval: 240 + on-control: + description: What should be displayed when a control message is selected. + type: ControlMessageBehavior + default: show-next-message + styles: + description: "A map of styles to configure message appearance.\n" + type: "Map" + default: + DEFAULT: + priority: 50 + max-display-count: 5 + SURVEY: + priority: 55 + max-display-count: 1 + PERSISTENT: + priority: 50 + max-display-count: 20 + WARNING: + priority: 60 + max-display-count: 10 + URGENT: + priority: 100 + max-display-count: 10 + NOTIFICATION: + priority: 50 + max-display-count: 1 + MICROSURVEY: + priority: 50 + max-display-count: 5 + string-alias: StyleName + triggers: + description: "A collection of out the box trigger expressions. Each entry maps to a valid JEXL expression.\n" + type: "Map" + default: + USER_ESTABLISHED_INSTALL: number_of_app_launches >=4 + ANDROID_API_BELOW_29: android_version < 29 + USER_RECENTLY_INSTALLED: days_since_install < 7 + USER_RECENTLY_UPDATED: days_since_update < 7 && days_since_install != days_since_update + USER_TIER_ONE_COUNTRY: "('US' in locale || 'GB' in locale || 'CA' in locale || 'DE' in locale || 'FR' in locale)" + USER_EN_SPEAKER: "'en' in locale" + USER_ES_SPEAKER: "'es' in locale" + USER_DE_SPEAKER: "'de' in locale" + USER_FR_SPEAKER: "'fr' in locale" + DEVICE_ANDROID: "os == 'Android'" + DEVICE_IOS: "os == 'iOS'" + ALWAYS: "true" + NEVER: "false" + DAY_1_AFTER_INSTALL: days_since_install == 1 + DAY_2_AFTER_INSTALL: days_since_install == 2 + DAY_3_AFTER_INSTALL: days_since_install == 3 + DAY_4_AFTER_INSTALL: days_since_install == 4 + DAY_5_AFTER_INSTALL: days_since_install == 5 + MORE_THAN_24H_SINCE_INSTALLED_OR_UPDATED: days_since_update >= 1 + I_AM_DEFAULT_BROWSER: is_default_browser + I_AM_NOT_DEFAULT_BROWSER: is_default_browser == false + FUNNEL_PAID: "adjust_campaign != ''" + FUNNEL_ORGANIC: "adjust_campaign == ''" + INACTIVE_1_DAY: "'app_launched'|eventLastSeen('Hours') >= 24" + INACTIVE_2_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 2" + INACTIVE_3_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 3" + INACTIVE_4_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 4" + INACTIVE_5_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 5" + RECENTLY_PRINTED: "'print_tapped'|eventLastSeen('Hours') <= 24" + SECOND_HOMEPAGE_VIEW: "'home_screen_displayed'|eventSum('Years', 4, 0) >= 2" + PERFORMED_A_SEARCH_AGAIN_RECENTLY: "'performed_search'|eventSum('Years', 4, 0) >= 2 && 'performed_search'|eventLastSeen('Minutes') < 1" + FXA_CURRENTLY_SIGNED_IN: is_fxa_signed_in == true + FXA_MORE_THAN_1_DEVICE: fxa_connected_devices > 1 + FXA_SIGNED_IN: "'sync_auth.sign_in'|eventLastSeen('Years', 0) <= 4" + FXA_NOT_SIGNED_IN: "'sync_auth.sign_in'|eventLastSeen('Years', 0) > 4" + USER_INFREQUENT: "'app_launched'|eventCountNonZero('Days', 28) >= 1 && 'app_launched'|eventCountNonZero('Days', 28) < 7" + USER_CASUAL: "'app_launched'|eventCountNonZero('Days', 28) >= 7 && 'app_launched'|eventCountNonZero('Days', 28) < 14" + USER_REGULAR: "'app_launched'|eventCountNonZero('Days', 28) >= 14 && 'app_launched'|eventCountNonZero('Days', 28) < 21" + USER_CORE_ACTIVE: "'app_launched'|eventCountNonZero('Days', 28) >= 21" + LAUNCHED_ONCE_THIS_WEEK: "'app_launched'|eventSum('Days', 7) == 1" + string-alias: TriggerName + allow-coenrollment: true + microsurveys: + description: Feature for microsurveys. + variables: + enabled: + description: "When the feature is enabled then microsurveys can be used.\n" + type: Boolean + default: true + mr2022: + description: Features for MR 2022. + variables: + sections-enabled: + description: This property provides a lookup table of whether or not the given section should be enabled. + type: "Map" + default: + home-onboarding-dialog-existing-users: true + sync-cfr: true + wallpapers-selection-tool: true + jump-back-in-cfr: true + tcp-cfr: true + tcp-feature: true + navigation-toolbar: + description: Feature for navigation toolbar. + variables: + enabled: + description: "When the feature is enabled then the user will see the new navigation toolbar.\n" + type: Boolean + default: true + networking: + description: Enables networking features + variables: + fetchPriorityEnabled: + description: "Enables or disables network.fetchpriority.enabled preference.\n" + type: Boolean + default: true + nimbus-is-ready: + description: "A feature that provides the number of Nimbus is_ready events to send when Nimbus finishes launching.\n" + variables: + event-count: + description: The number of events that should be sent. + type: Int + default: 1 + nimbus-system: + description: "Configuration of the Nimbus System in Android.\n" + variables: + refresh-interval-foreground: + description: "The minimum interval in minutes between fetching experiment\nrecipes in the foreground.\n" + type: Int + default: 60 + nimbus-validation: + description: A feature that does not correspond to an application feature suitable for showing that Nimbus is working. This should never be used in production. + variables: + settings-icon: + description: The drawable displayed in the app menu for Settings + type: String + default: mozac_ic_settings + settings-punctuation: + description: The emoji displayed in the Settings screen title. + type: String + default: "" + settings-title: + description: The title of displayed in the Settings screen and app menu. + type: Text + default: browser_menu_settings + onboarding: + description: "A feature that configures the new user onboarding page. Note that onboarding is a **first run** feature, and should only be modified by first run experiments." + variables: + order: + description: Determines the order of the onboarding page panels + type: List + default: + - themes + - toolbar-placement + - sync + - tcp + - privacy-notice + one-click-search: + description: Enable/disable the one click search feature. + variables: + enabled: + description: "If true, the one click search will be enabled." + type: Boolean + default: false + pdfjs: + description: PDF.js features + variables: + download-button: + description: Download button + type: Boolean + default: true + open-in-app-button: + description: Open in app button + type: Boolean + default: true + print: + description: A feature for printing from the share or browser menu. + variables: + browser-print-enabled: + description: "If true, a print button from the browser menu is available." + type: Boolean + default: true + share-print-enabled: + description: "If true, a print button from the share menu is available." + type: Boolean + default: true + private-browsing: + description: Private Browsing Mode + variables: + felt-privacy-enabled: + description: "if true, enable felt privacy related UI" + type: Boolean + default: false + query-parameter-stripping: + description: Features for query parameter stripping. + variables: + sections-enabled: + description: This property provides a lookup table of whether or not the given section should be enabled. + type: "Map" + default: + query-parameter-stripping: "0" + query-parameter-stripping-pmb: "0" + query-parameter-stripping-allow-list: "" + query-parameter-stripping-strip-list: "" + re-engagement-notification: + description: A feature that shows the re-engagement notification if the user is inactive. + variables: + enabled: + description: "If true, the re-engagement notification is shown to the inactive user." + type: Boolean + default: false + type: + description: The type of re-engagement notification that is shown to the inactive user. + type: Int + default: 0 + remote-tab-management: + description: "Features that let users manage tabs on other devices that are connected to the same Mozilla account.\n" + variables: + close-tabs-enabled: + description: "Whether the feature to close synced tabs is enabled. When enabled, this device will allow other devices to close tabs that are open on this device, and show a \"close\" button for tabs that are currently open on other supported devices in the synced tabs tray.\n" + type: Boolean + default: true + search-extra-params: + description: A feature that provides additional args for search. + variables: + channel-id: + description: The channel Id param name with arg. + type: "Map" + default: {} + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + feature-enabler: + description: "The feature enabler param name with arg, NOTE this map could be empty." + type: "Map" + default: {} + search-engine: + description: The search engine name. + type: String + default: "" + search-term-groups: + description: A feature allowing the grouping of URLs around the search term that it came from. + variables: + enabled: + description: "If true, the feature shows up on the homescreen and on the new tab screen." + type: Boolean + default: true + set-as-default-prompt: + description: "Displays native default browser prompt to existing users.\n" + variables: + app-cold-starts-between-prompts: + description: "Minimum number of app cold starts before the next prompt should be displayed to the user.\n" + type: Int + default: 4 + days-between-prompts: + description: "Minimum number of days between displays of Set as default prompt.\n" + type: Int + default: 14 + enabled: + description: "When the feature is enabled then the Set as default prompt can be triggered for existing users.\n" + type: Boolean + default: true + max-number-of-times-to-display: + description: "Maximum number of time the prompt should be displayed.\n" + type: Int + default: 3 + ship: + description: The feature that controls Session History in Parent (SHIP) in Gecko. + variables: + disabled: + description: "Whether or not to disable SHIP. SHIP is enabled when set to false. SHIP is disabled when set to true.\n" + type: Boolean + default: true + shopping-experience: + description: A feature that shows product review quality information. + variables: + enabled: + description: "if true, the shopping experience feature is shown to the user." + type: Boolean + default: false + product-recommendations: + description: "if true, recommended products feature is enabled to be shown to the user based on their preference." + type: Boolean + default: false + product-recommendations-exposure: + description: "if true, we want to record recommended products inventory for opted-in users, even if product recommendations are disabled." + type: Boolean + default: false + splash-screen: + description: "A feature that extends splash screen duration, allowing additional data fetching time for the app's initial run." + variables: + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + maximum_duration_ms: + description: The maximum amount of time in milliseconds the splashscreen will be visible while waiting for initialization calls to complete. + type: Int + default: 0 + off-train-onboarding: + description: "If true, the fetched data will be applied and used during the session." + type: Boolean + default: false + suggest-shipped-domains: + description: Feature that suggests domains from the shipped domain list. + variables: + enabled: + description: "Suggest domains from the shipped domain list.\n" + type: Boolean + default: false + third-party-cookie-blocking: + description: Control third-party cookie blocking. + variables: + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + enabled-normal: + description: "Enables / disables third-party cookie blocking in normal browsing mode.\n" + type: Boolean + default: false + enabled-private: + description: "Enables / disables third-party cookie blocking in private browsing mode.\n" + type: Boolean + default: true + translations: + description: The feature that allows on-device translations of web content. + variables: + downloads-enabled: + description: "Show the global language model download options entry point for translations. ('Download languages' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + global-lang-settings-enabled: + description: "Show the global language options entry point for automatically translating. ('Automatic Translation' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + global-settings-enabled: + description: "Show the global settings entry point within the translations feature. ('Translation Settings' on the page settings view.) 'page-settings-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + global-site-settings-enabled: + description: "Show the global never translate this site options entry point for site management. ('Never translate these sites' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + main-flow-browser-menu-enabled: + description: "Show the browser menu entry point into the translations feature. ('Translate Page' on browser menu.)\n" + type: Boolean + default: true + main-flow-toolbar-enabled: + description: "Show the primary toolbar entry point into the translations feature. (Translations icon on URL toolbar.)\n" + type: Boolean + default: true + page-settings-enabled: + description: "Show the page settings entry point within the translations feature. (Gear icon on the translations main flow page.) 'main-flow-toolbar-enabled' or 'main-flow-browser-menu-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + user-characteristics: + description: A feature for control user characteristic data collection + variables: + currentVersion: + description: The current collection version of the user characteristics. + type: Int + default: 0 +enums: + ControlMessageBehavior: + description: An enum to influence what should be displayed when a control message is selected. + variants: + show-next-message: + description: The next eligible message should be shown. + show-none: + description: The surface should show no message. + CookieBannersSection: + description: The identifiers for the sections of the MR 2022. + variants: + feature-setting-detect-only: + description: "An integer either 0 or 1 indicating if cookie banner detect only mode should be enabled or disabled. 0 for setting to be disabled, and 1 for enabling the setting." + feature-setting-global-rules: + description: "An integer either 0 or 1 indicating if cookie banner global rules should be enabled or disabled. 0 for setting to be disabled, and 1 for enabling the setting." + feature-setting-global-rules-sub-frames: + description: "An integer either 0 or 1 indicating if cookie banner global rules sub-frames should be enabled or disabled. 0 for setting to be disabled, and 1 for enabling the setting." + feature-setting-value: + description: "An integer either 0 or 1 indicating if cookie banner setting should be enabled or disabled, 0 for setting the value to disabled, 1 for enabling the setting with the value reject_all." + feature-setting-value-pbm: + description: "An integer either 0 or 1 indicating if cookie banner setting should be enabled or disabled, 0 for setting the value to disabled, 1 for enabling the setting with the value reject_all." + feature-ui: + description: "An integer either 0 or 1 indicating if the UI for cookie banner handling should be visible, 0 to hide the UI and 1 to show the UI. The actual UI is composed by cookie banner section in the settings page, the toolbar section and the re-engagement dialog." + HomeScreenSection: + description: The identifiers for the sections of the homescreen. + variants: + bookmarks: + description: The sites the user has bookmarked. + jump-back-in: + description: The tabs the user was looking immediately before being interrupted. + pocket: + description: The pocket section. This should only be available in the US. + pocket-sponsored-stories: + description: Subsection of the Pocket homescreen section which shows sponsored stories. + recent-explorations: + description: The tab groups + top-sites: + description: The frecency and pinned sites. + MR2022Section: + description: The identifiers for the sections of the MR 2022. + variants: + home-onboarding-dialog-existing-users: + description: Home onboarding dialog for upgraded users. + jump-back-in-cfr: + description: Jump back-in onboarding message. + sync-cfr: + description: CFR for the first time you see a synced tab on the home screen. + tcp-cfr: + description: CFR for the first time you use the browse with Total Cookie Protection on the browser screen. + tcp-feature: + description: Controls the Total Cookie Protection feature. + wallpapers-selection-tool: + description: Wallpapers selection dialog tool for the home screen. + OnboardingCardType: + description: An enum to describe a type of card. + variants: + add-ons: + description: Allows user to install add-ons from onboarding. + add-search-widget: + description: Allows user to add search widget to homescreen. + default-browser: + description: Allows user to set Firefox as the default browser. + notification-permission: + description: Allows user to enable notification permission. + sync-sign-in: + description: Allows user to sync with a Firefox account. + terms-of-service: + description: Page to display the terms of services. + theme-selection: + description: Allows user to choose between dark and light themes. + toolbar-placement: + description: Allows user to choose the toolbar position. + OnboardingPanel: + description: The types of onboarding panels in the onboarding page + variants: + privacy-notice: + description: The onboarding panel where users can tap to view our privacy notice. + sync: + description: The onboarding panel where users can sign in to sync + tcp: + description: The onboarding panel where users can choose their total cookie protection settings + themes: + description: The themes onboarding panel where users pick themes + toolbar-placement: + description: The onboarding panel where users choose their toolbar placement (bottom or top) + QueryParameterStrippingSection: + description: The identifiers for the options for the Query Parameter Stripping feature. + variants: + query-parameter-stripping: + description: "An integer either 0 or 1 indicating if query parameter stripping should be enabled or disabled in normal mode. 0 for setting to be disabled, and 1 for enabling the setting." + query-parameter-stripping-allow-list: + description: An string separated by commas indicating the sites where should from query stripping should be exempted. + query-parameter-stripping-pmb: + description: "An integer either 0 or 1 indicating if query parameter stripping should be enabled or disabled in private mode. 0 for setting to be disabled, and 1 for enabling the setting." + query-parameter-stripping-strip-list: + description: An string separated by commas indicating the list of query params to be stripped from URIs. This list will be merged with records coming from RemoteSettings. + SuggestionType: + description: The type of a Firefox Suggest search suggestion. + variants: + amp: + description: A Firefox Suggestion from adMarketplace. + ampMobile: + description: A firefox Suggestion from adMarketplace specifically for mobile. + wikipedia: + description: A Firefox Suggestion for a Wikipedia page. + ThemeType: + description: An enum to describe a theme selection option. + variants: + theme-dark: + description: Sets the theme to dark mode. + theme-light: + description: Sets the theme to light mode. + theme-system: + description: "Adapts the theme to match the device's system setting." + ToolbarType: + description: An enum to describe a toolbar placement option. + variants: + toolbar-bottom: + description: Sets the toolbar placement on the bottom. + toolbar-top: + description: Sets the toolbar placement on the top. +objects: + AddOnData: + description: An object to describe an add-on to be installed from the onboarding card. + fields: + average-rating: + description: The average rating of the add-on. + type: String + default: "0.0" + description: + description: A small description of the add-on to be displayed to the user. + type: Text + default: "" + icon-res: + description: The resource id of the icon of the add-on to be displayed. + type: Image + default: ic_onboarding_welcome + id: + description: The identifier for this add-on. + type: Text + default: "" + install-url: + description: The url from where the add-on can be installed. + type: Text + default: "" + name: + description: The name of the add-on to be displayed to the user. + type: Text + default: "" + review-count: + description: The amount of reviews the add-on has. + type: String + default: "0.0" + CustomizationThemeData: + description: Defines an option for theme selection. + fields: + image-res: + description: The resource id of the image to be displayed. + type: Image + default: ic_pick_a_theme_system_auto + label: + description: "Display text for the theme option (e.g., \"Light Theme\")." + type: Text + default: "" + theme-type: + description: The type of the theming option. + type: ThemeType + default: theme-system + CustomizationToolbarData: + description: An object to describe the placement of the toolbar. + fields: + image-res: + description: The resource id of toolbar placement image. + type: Image + default: ic_onboarding_customize_toolbar + label: + description: "Display text for the toolbar placement option (e.g. \"Top placement\")." + type: Text + default: "" + toolbar-type: + description: The type of toolbar placement. + type: ToolbarType + default: toolbar-top + ExtraCardData: + description: "Holds data for cards that require additional data, e.g. add-ons, toolbar placement cards." + fields: + add-ons-data: + description: "An optional list of add-ons which will be shown in add-on onboarding card.\n" + type: List + default: [] + customization-theme-data: + description: An optional list of theme choices for the theme selection card. + type: List + default: [] + customization-toolbar-data: + description: "An optional list of toolbar placements for the toolbar placement card.\n" + type: List + default: [] + term-of-service-data: + description: "An optional terms of service data for the onboarding card.\n" + type: Option + default: ~ + MessageData: + description: "An object to describe a message. It uses human readable strings to describe the triggers, action and style of the message as well as the text of the message and call to action.\n" + fields: + action: + description: "A URL of a page or a deeplink. This may have substitution variables in.\n" + type: ActionName + default: OPEN_URL + action-params: + description: "A string map containing query parameters that will be appended to the action URL. This is useful for opening URLs in tabs, or specifying that the tab should be private. The values may have substitutions, e.g. \"url\": \"https://example.com/id={uuid}\", \"private\": \"true\".\nThe params and their values are all determined downstream of the messaging component, by the embedding app's deeplink processing machinery.\n" + type: "Map" + default: {} + button-label: + description: "The text on the button. If no text is present, the whole message is clickable.\n" + type: Option + default: ~ + exclude-if-any: + description: "A list of strings corresponding to targeting expressions. The message will not be shown if any of the expressions are `true`.\n" + type: List + default: [] + experiment: + description: The slug of the experiment that this message came from. + type: Option + default: ~ + is-control: + description: "Indicates if this message is the control message, if true shouldn't be displayed" + type: Boolean + default: false + microsurvey-config: + description: Optional configuration data for a microsurvey. + type: Option + default: ~ + style: + description: "The style as described in a `StyleData` from the styles table.\n" + type: StyleName + default: DEFAULT + surface: + description: The surface identifier for this message. + type: SurfaceName + default: homescreen + text: + description: The message text displayed to the user + type: Text + default: "" + title: + description: The title text displayed to the user + type: Option + default: ~ + trigger-if-all: + description: "A list of strings corresponding to targeting expressions. The message will be shown if all expressions are `true`.\n" + type: List + default: [] + MicrosurveyAnswer: + description: Attributes relating to microsurvey content. + fields: + ordering: + description: "Used to sequence the answers top to bottom. E.g. 0 will be the first/top item, 1 will be next and so on. Always set either ALL the provided answers ordering or NONE. If ALL answers are default, the the ordering used will be the same as provided by the experiment.\n" + type: Int + default: 0 + text: + description: The text for the answer. + type: Text + default: "" + MicrosurveyConfig: + description: Attributes relating to microsurvey content. + fields: + answers: + description: "The list of answers to present to the user e.g. \"Satisfied, Dissatisfied...\"." + type: List + default: [] + icon: + description: The icon shown in the survey. + type: Option + default: ~ + utm-content: + description: "Optional \"utm_content\" parameter for the privacy notice URL to specify the feature being surveyed." + type: Option + default: ~ + NotificationConfig: + description: Attributes controlling the global configuration of notification messages. + fields: + refresh-interval: + description: "How often, in minutes, the notification message worker will wake up and check for new messages.\n" + type: Int + default: 240 + OnboardingCardData: + description: An object to describe a user facing onboarding card. + fields: + body: + description: The message text displayed to the user. May contain linkable text. + type: Text + default: "" + card-type: + description: The type of the card. + type: OnboardingCardType + default: default-browser + disqualifiers: + description: "A list of strings corresponding to targeting expressions. The card will not be shown if any expression is `true`.\n" + type: List + default: + - NEVER + enabled: + description: "If true, this card is shown to the user." + type: Boolean + default: true + extra-data: + description: Optional extra data for cards that require additional data. + type: Option + default: ~ + image-res: + description: The resource id of the image to be displayed. + type: Image + default: ic_onboarding_welcome + ordering: + description: Used to sequence the cards. + type: Int + default: 0 + prerequisites: + description: "A list of strings corresponding to targeting expressions. The card will be shown if all expressions are `true` and if no expressions in the `disqualifiers` table are true, or if the `disqualifiers` table is empty.\n" + type: List + default: + - ALWAYS + primary-button-label: + description: The text to display on the primary button. + type: Text + default: "" + secondary-button-label: + description: The text to display on the secondary button. + type: Text + default: "" + title: + description: The title text displayed to the user. + type: Text + default: "" + StyleData: + description: "A group of properties (predominantly visual) to describe the style of the message.\n" + fields: + max-display-count: + description: "How many sessions will this message be shown to the user before it is expired.\n" + type: Int + default: 5 + priority: + description: "The importance of this message. 0 is not very important, 100 is very important.\n" + type: Int + default: 50 + TermsOfServiceData: + description: An object to describe the terms of service onboarding card. + fields: + lineOneLinkText: + description: The text for the link of line one. + type: Text + default: "" + lineOneLinkURL: + description: The url for the link of line one. + type: Text + default: "" + lineOneText: + description: The text for line one. + type: Text + default: "" + lineThreeLinkText: + description: The text for the link of line three. + type: Text + default: "" + lineThreeText: + description: The text for line three. + type: Text + default: "" + lineTwoLinkText: + description: The text for the link of line two. + type: Text + default: "" + lineTwoLinkURL: + description: The url for the link of line two. + type: Text + default: "" + lineTwoText: + description: The text for line two. + type: Text + default: "" diff --git a/experimenter/experimenter/features/manifests/fenix/v136.0.0/release.fml.yaml b/experimenter/experimenter/features/manifests/fenix/v136.0.0/release.fml.yaml new file mode 100644 index 0000000000..01739864d1 --- /dev/null +++ b/experimenter/experimenter/features/manifests/fenix/v136.0.0/release.fml.yaml @@ -0,0 +1,1039 @@ +--- +version: 1.0.0 +about: + description: Nimbus Feature Manifest for Fenix (Firefox Android) +channels: + - release +features: + alternative-app-launcher-icon: + description: A feature that changes the app launcher icon background color. + variables: + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + reset-to-default: + description: "If true use the default icon, if false use the alternative icon. This is required to 'reset' the icon for enrolled users once the initial experiment is complete.\n" + type: Boolean + default: false + awesomebar-suggestion-provider: + description: Configuration for the Firefox Suggest awesomebar suggestion provider. + variables: + available-suggestion-types: + description: "A map of suggestion types to booleans that indicate whether or not the provider should return suggestions of those types.\n" + type: "Map" + default: + amp: true + ampMobile: false + wikipedia: true + bookmarks: + description: Feature for Bookmarks + variables: + new-compose-ui: + description: "if true, enable new compose based UI" + type: Boolean + default: false + cookie-banners: + description: Features for cookie banner handling. + variables: + sections-enabled: + description: This property provides a lookup table of whether or not the given section should be enabled. + type: "Map" + default: + feature-ui: 0 + feature-setting-value: 0 + feature-setting-value-pbm: 0 + feature-setting-detect-only: 0 + feature-setting-global-rules: 1 + feature-setting-global-rules-sub-frames: 1 + fingerprinting-protection: + description: Control Fingerprinting Protection + variables: + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + enabled-normal: + description: "Enables / disables fingerprinting protection in normal browsing mode.\n" + type: Boolean + default: false + enabled-private: + description: "Enables / disables fingerprinting protection in private browsing mode.\n" + type: Boolean + default: true + fdlibm-math: + description: "Uses a different math backend for Math.sin/cos/tan in JavaScript that exposes less entropy\n" + type: Boolean + default: false + overrides: + description: "The protection overrides to add or remove fingerprinting protection targets. Please check RFPTargets.inc for all supported targets.\n" + type: String + default: "" + fission: + description: The feature that controls whether fission is enabled or not in Gecko. + variables: + enabled: + description: "Whether or not to enable fission. Fission is enabled when set to true. Fission is disabled when set to false.\n" + type: Boolean + default: false + fx-suggest: + description: A feature that provides Firefox Suggest search suggestions. + variables: + boost-amp-wiki: + description: "The feature boost wiki and AMP suggestions to the top of its group.\n" + type: Boolean + default: false + enabled: + description: "Whether the feature is enabled. When Firefox Suggest is enabled, Firefox will download and store new search suggestions in the background, and show additional Search settings to control which suggestions appear in the awesomebar. When Firefox Suggest is disabled, Firefox will not download new suggestions, and hide the additional Search settings.\n" + type: Boolean + default: false + glean: + description: A feature that provides server-side configurations for Glean metrics (aka Server Knobs). + variables: + delay-ping-lifetime-io: + description: Glean will delay io for ping lifetime metrics + type: Boolean + default: true + enable-event-timestamps: + description: Enables precise event timestamps for Glean events + type: Boolean + default: true + metrics-enabled: + description: "A map of metric base-identifiers to booleans representing the state of the 'enabled' flag for that metric." + type: "Map" + default: {} + ping-lifetime-max-time: + description: After what time to auto-flush + type: Int + default: 2000 + ping-lifetime-threshold: + description: Write count threshold when to auto-flush + type: Int + default: 1000 + allow-coenrollment: true + growth-data: + description: A feature measuring campaign growth data + variables: + enabled: + description: "If true, the feature is active" + type: Boolean + default: true + homescreen: + description: The homescreen that the user goes to when they press home or new tab. + variables: + sections-enabled: + description: "This property provides a lookup table of whether or not the given section should be enabled. If the section is enabled, it should be toggleable in the settings screen, and on by default." + type: "Map" + default: + top-sites: true + jump-back-in: true + bookmarks: true + recent-explorations: true + pocket: true + pocket-sponsored-stories: true + javascript: + description: Enables Javascript Engine (Spidermonkey) features + variables: + parallelMarkingEnabled: + description: "Enables or disables javascript.options.mem.gc_parallel_marking preference.\n" + type: Boolean + default: false + juno-onboarding: + description: A feature that shows the onboarding flow. + variables: + cards: + description: Collection of user facing onboarding cards. + type: "Map" + default: + default-browser: + body: juno_onboarding_default_browser_description_nimbus_3 + card-type: default-browser + disqualifiers: + - NEVER + enabled: true + extra-data: ~ + image-res: ic_onboarding_welcome + ordering: 10 + prerequisites: + - ALWAYS + primary-button-label: juno_onboarding_default_browser_positive_button + secondary-button-label: juno_onboarding_default_browser_negative_button + title: juno_onboarding_default_browser_title_nimbus_2 + add-search-widget: + body: juno_onboarding_add_search_widget_description + card-type: add-search-widget + disqualifiers: + - NEVER + enabled: true + extra-data: ~ + image-res: ic_onboarding_search_widget + ordering: 15 + prerequisites: + - ALWAYS + primary-button-label: juno_onboarding_add_search_widget_positive_button + secondary-button-label: juno_onboarding_add_search_widget_negative_button + title: juno_onboarding_add_search_widget_title + sync-sign-in: + body: juno_onboarding_sign_in_description_3 + card-type: sync-sign-in + disqualifiers: + - NEVER + enabled: true + extra-data: ~ + image-res: ic_onboarding_sync + ordering: 20 + prerequisites: + - ALWAYS + primary-button-label: juno_onboarding_sign_in_positive_button + secondary-button-label: juno_onboarding_sign_in_negative_button + title: juno_onboarding_sign_in_title_2 + notification-permission: + body: juno_onboarding_enable_notifications_description_nimbus_2 + card-type: notification-permission + disqualifiers: + - NEVER + enabled: true + extra-data: ~ + image-res: ic_notification_permission + ordering: 30 + prerequisites: + - ALWAYS + primary-button-label: juno_onboarding_enable_notifications_positive_button + secondary-button-label: juno_onboarding_enable_notifications_negative_button + title: juno_onboarding_enable_notifications_title_nimbus_2 + string-alias: OnboardingCardKey + conditions: + description: "A collection of out the box conditional expressions to be used in determining whether a card should show or not. Each entry maps to a valid JEXL expression.\n" + type: "Map" + default: + ALWAYS: "true" + NEVER: "false" + string-alias: ConditionName + menu-redesign: + description: Control the new menu redesign. + variables: + enabled: + description: "If true, the new menu redesign is available." + type: Boolean + default: false + report-site-issue: + description: "If true, report site issue menu item and preview is available." + type: Boolean + default: false + messaging: + description: "The in-app messaging system.\n" + variables: + $$experiment: + description: "The only acceptable value for `MessageData#experiment`. This should not be set by experiment." + type: ExperimentSlug + default: "{experiment}" + string-alias: ExperimentSlug + $$surfaces: + description: "A list available surfaces for this app.\n\nThis should not be written to by experiments, and should be hidden to users.\n" + type: List + default: + - homescreen + - notification + - survey + - microsurvey + string-alias: SurfaceName + actions: + description: A growable map of action URLs. + type: "Map" + default: + OPEN_URL: "://open" + ENABLE_PRIVATE_BROWSING: "://enable_private_browsing" + INSTALL_SEARCH_WIDGET: "://install_search_widget" + MAKE_DEFAULT_BROWSER: "://make_default_browser" + VIEW_BOOKMARKS: "://urls_bookmarks" + VIEW_COLLECTIONS: "://home_collections" + VIEW_HISTORY: "://urls_history" + VIEW_HOMESCREEN: "://home" + OPEN_SETTINGS_ACCESSIBILITY: "://settings_accessibility" + OPEN_SETTINGS_ADDON_MANAGER: "://settings_addon_manager" + OPEN_SETTINGS_DELETE_BROWSING_DATA: "://settings_delete_browsing_data" + OPEN_SETTINGS_LOGINS: "://settings_logins" + OPEN_SETTINGS_NOTIFICATIONS: "://settings_notifications" + OPEN_SETTINGS_PRIVACY: "://settings_privacy" + OPEN_SETTINGS_SEARCH_ENGINE: "://settings_search_engine" + OPEN_SETTINGS_TRACKING_PROTECTION: "://settings_tracking_protection" + OPEN_SETTINGS_WALLPAPERS: "://settings_wallpapers" + OPEN_SETTINGS: "://settings" + OPEN_SHARE_SHEET: "://share_sheet" + TURN_ON_SYNC: "://turn_on_sync" + string-alias: ActionName + message-under-experiment: + description: "Deprecated in favor of `MessageData#experiment`. This will be removed in future releases." + type: Option + default: ~ + messages: + description: A growable collection of messages + type: "Map" + default: + default-browser: + title: default_browser_experiment_card_title + text: default_browser_experiment_card_text + surface: homescreen + action: MAKE_DEFAULT_BROWSER + trigger-if-all: + - USER_ESTABLISHED_INSTALL + - ANDROID_API_BELOW_29 + exclude-if-any: + - I_AM_DEFAULT_BROWSER + style: PERSISTENT + button-label: preferences_set_as_default_browser + default-browser-notification: + title: nimbus_notification_default_browser_title + text: nimbus_notification_default_browser_text + surface: notification + style: NOTIFICATION + trigger-if-all: + - DAY_3_AFTER_INSTALL + exclude-if-any: + - I_AM_DEFAULT_BROWSER + action: MAKE_DEFAULT_BROWSER + string-alias: MessageKey + notification-config: + description: Configuration of the notification worker for all notification messages. + type: NotificationConfig + default: + refresh-interval: 240 + on-control: + description: What should be displayed when a control message is selected. + type: ControlMessageBehavior + default: show-next-message + styles: + description: "A map of styles to configure message appearance.\n" + type: "Map" + default: + DEFAULT: + priority: 50 + max-display-count: 5 + SURVEY: + priority: 55 + max-display-count: 1 + PERSISTENT: + priority: 50 + max-display-count: 20 + WARNING: + priority: 60 + max-display-count: 10 + URGENT: + priority: 100 + max-display-count: 10 + NOTIFICATION: + priority: 50 + max-display-count: 1 + MICROSURVEY: + priority: 50 + max-display-count: 5 + string-alias: StyleName + triggers: + description: "A collection of out the box trigger expressions. Each entry maps to a valid JEXL expression.\n" + type: "Map" + default: + USER_ESTABLISHED_INSTALL: number_of_app_launches >=4 + ANDROID_API_BELOW_29: android_version < 29 + USER_RECENTLY_INSTALLED: days_since_install < 7 + USER_RECENTLY_UPDATED: days_since_update < 7 && days_since_install != days_since_update + USER_TIER_ONE_COUNTRY: "('US' in locale || 'GB' in locale || 'CA' in locale || 'DE' in locale || 'FR' in locale)" + USER_EN_SPEAKER: "'en' in locale" + USER_ES_SPEAKER: "'es' in locale" + USER_DE_SPEAKER: "'de' in locale" + USER_FR_SPEAKER: "'fr' in locale" + DEVICE_ANDROID: "os == 'Android'" + DEVICE_IOS: "os == 'iOS'" + ALWAYS: "true" + NEVER: "false" + DAY_1_AFTER_INSTALL: days_since_install == 1 + DAY_2_AFTER_INSTALL: days_since_install == 2 + DAY_3_AFTER_INSTALL: days_since_install == 3 + DAY_4_AFTER_INSTALL: days_since_install == 4 + DAY_5_AFTER_INSTALL: days_since_install == 5 + MORE_THAN_24H_SINCE_INSTALLED_OR_UPDATED: days_since_update >= 1 + I_AM_DEFAULT_BROWSER: is_default_browser + I_AM_NOT_DEFAULT_BROWSER: is_default_browser == false + FUNNEL_PAID: "adjust_campaign != ''" + FUNNEL_ORGANIC: "adjust_campaign == ''" + INACTIVE_1_DAY: "'app_launched'|eventLastSeen('Hours') >= 24" + INACTIVE_2_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 2" + INACTIVE_3_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 3" + INACTIVE_4_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 4" + INACTIVE_5_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 5" + RECENTLY_PRINTED: "'print_tapped'|eventLastSeen('Hours') <= 24" + SECOND_HOMEPAGE_VIEW: "'home_screen_displayed'|eventSum('Years', 4, 0) >= 2" + PERFORMED_A_SEARCH_AGAIN_RECENTLY: "'performed_search'|eventSum('Years', 4, 0) >= 2 && 'performed_search'|eventLastSeen('Minutes') < 1" + FXA_CURRENTLY_SIGNED_IN: is_fxa_signed_in == true + FXA_MORE_THAN_1_DEVICE: fxa_connected_devices > 1 + FXA_SIGNED_IN: "'sync_auth.sign_in'|eventLastSeen('Years', 0) <= 4" + FXA_NOT_SIGNED_IN: "'sync_auth.sign_in'|eventLastSeen('Years', 0) > 4" + USER_INFREQUENT: "'app_launched'|eventCountNonZero('Days', 28) >= 1 && 'app_launched'|eventCountNonZero('Days', 28) < 7" + USER_CASUAL: "'app_launched'|eventCountNonZero('Days', 28) >= 7 && 'app_launched'|eventCountNonZero('Days', 28) < 14" + USER_REGULAR: "'app_launched'|eventCountNonZero('Days', 28) >= 14 && 'app_launched'|eventCountNonZero('Days', 28) < 21" + USER_CORE_ACTIVE: "'app_launched'|eventCountNonZero('Days', 28) >= 21" + LAUNCHED_ONCE_THIS_WEEK: "'app_launched'|eventSum('Days', 7) == 1" + string-alias: TriggerName + allow-coenrollment: true + microsurveys: + description: Feature for microsurveys. + variables: + enabled: + description: "When the feature is enabled then microsurveys can be used.\n" + type: Boolean + default: true + mr2022: + description: Features for MR 2022. + variables: + sections-enabled: + description: This property provides a lookup table of whether or not the given section should be enabled. + type: "Map" + default: + home-onboarding-dialog-existing-users: true + sync-cfr: true + wallpapers-selection-tool: true + jump-back-in-cfr: true + tcp-cfr: true + tcp-feature: true + navigation-toolbar: + description: Feature for navigation toolbar. + variables: + enabled: + description: "When the feature is enabled then the user will see the new navigation toolbar.\n" + type: Boolean + default: false + networking: + description: Enables networking features + variables: + fetchPriorityEnabled: + description: "Enables or disables network.fetchpriority.enabled preference.\n" + type: Boolean + default: true + nimbus-is-ready: + description: "A feature that provides the number of Nimbus is_ready events to send when Nimbus finishes launching.\n" + variables: + event-count: + description: The number of events that should be sent. + type: Int + default: 1 + nimbus-system: + description: "Configuration of the Nimbus System in Android.\n" + variables: + refresh-interval-foreground: + description: "The minimum interval in minutes between fetching experiment\nrecipes in the foreground.\n" + type: Int + default: 60 + nimbus-validation: + description: A feature that does not correspond to an application feature suitable for showing that Nimbus is working. This should never be used in production. + variables: + settings-icon: + description: The drawable displayed in the app menu for Settings + type: String + default: mozac_ic_settings + settings-punctuation: + description: The emoji displayed in the Settings screen title. + type: String + default: "" + settings-title: + description: The title of displayed in the Settings screen and app menu. + type: Text + default: browser_menu_settings + onboarding: + description: "A feature that configures the new user onboarding page. Note that onboarding is a **first run** feature, and should only be modified by first run experiments." + variables: + order: + description: Determines the order of the onboarding page panels + type: List + default: + - themes + - toolbar-placement + - sync + - tcp + - privacy-notice + one-click-search: + description: Enable/disable the one click search feature. + variables: + enabled: + description: "If true, the one click search will be enabled." + type: Boolean + default: false + pdfjs: + description: PDF.js features + variables: + download-button: + description: Download button + type: Boolean + default: true + open-in-app-button: + description: Open in app button + type: Boolean + default: true + print: + description: A feature for printing from the share or browser menu. + variables: + browser-print-enabled: + description: "If true, a print button from the browser menu is available." + type: Boolean + default: true + share-print-enabled: + description: "If true, a print button from the share menu is available." + type: Boolean + default: true + private-browsing: + description: Private Browsing Mode + variables: + felt-privacy-enabled: + description: "if true, enable felt privacy related UI" + type: Boolean + default: false + query-parameter-stripping: + description: Features for query parameter stripping. + variables: + sections-enabled: + description: This property provides a lookup table of whether or not the given section should be enabled. + type: "Map" + default: + query-parameter-stripping: "0" + query-parameter-stripping-pmb: "0" + query-parameter-stripping-allow-list: "" + query-parameter-stripping-strip-list: "" + re-engagement-notification: + description: A feature that shows the re-engagement notification if the user is inactive. + variables: + enabled: + description: "If true, the re-engagement notification is shown to the inactive user." + type: Boolean + default: false + type: + description: The type of re-engagement notification that is shown to the inactive user. + type: Int + default: 0 + remote-tab-management: + description: "Features that let users manage tabs on other devices that are connected to the same Mozilla account.\n" + variables: + close-tabs-enabled: + description: "Whether the feature to close synced tabs is enabled. When enabled, this device will allow other devices to close tabs that are open on this device, and show a \"close\" button for tabs that are currently open on other supported devices in the synced tabs tray.\n" + type: Boolean + default: true + search-extra-params: + description: A feature that provides additional args for search. + variables: + channel-id: + description: The channel Id param name with arg. + type: "Map" + default: {} + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + feature-enabler: + description: "The feature enabler param name with arg, NOTE this map could be empty." + type: "Map" + default: {} + search-engine: + description: The search engine name. + type: String + default: "" + search-term-groups: + description: A feature allowing the grouping of URLs around the search term that it came from. + variables: + enabled: + description: "If true, the feature shows up on the homescreen and on the new tab screen." + type: Boolean + default: false + set-as-default-prompt: + description: "Displays native default browser prompt to existing users.\n" + variables: + app-cold-starts-between-prompts: + description: "Minimum number of app cold starts before the next prompt should be displayed to the user.\n" + type: Int + default: 4 + days-between-prompts: + description: "Minimum number of days between displays of Set as default prompt.\n" + type: Int + default: 14 + enabled: + description: "When the feature is enabled then the Set as default prompt can be triggered for existing users.\n" + type: Boolean + default: true + max-number-of-times-to-display: + description: "Maximum number of time the prompt should be displayed.\n" + type: Int + default: 3 + ship: + description: The feature that controls Session History in Parent (SHIP) in Gecko. + variables: + disabled: + description: "Whether or not to disable SHIP. SHIP is enabled when set to false. SHIP is disabled when set to true.\n" + type: Boolean + default: true + shopping-experience: + description: A feature that shows product review quality information. + variables: + enabled: + description: "if true, the shopping experience feature is shown to the user." + type: Boolean + default: false + product-recommendations: + description: "if true, recommended products feature is enabled to be shown to the user based on their preference." + type: Boolean + default: false + product-recommendations-exposure: + description: "if true, we want to record recommended products inventory for opted-in users, even if product recommendations are disabled." + type: Boolean + default: false + splash-screen: + description: "A feature that extends splash screen duration, allowing additional data fetching time for the app's initial run." + variables: + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + maximum_duration_ms: + description: The maximum amount of time in milliseconds the splashscreen will be visible while waiting for initialization calls to complete. + type: Int + default: 0 + off-train-onboarding: + description: "If true, the fetched data will be applied and used during the session." + type: Boolean + default: false + suggest-shipped-domains: + description: Feature that suggests domains from the shipped domain list. + variables: + enabled: + description: "Suggest domains from the shipped domain list.\n" + type: Boolean + default: true + third-party-cookie-blocking: + description: Control third-party cookie blocking. + variables: + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + enabled-normal: + description: "Enables / disables third-party cookie blocking in normal browsing mode.\n" + type: Boolean + default: false + enabled-private: + description: "Enables / disables third-party cookie blocking in private browsing mode.\n" + type: Boolean + default: true + translations: + description: The feature that allows on-device translations of web content. + variables: + downloads-enabled: + description: "Show the global language model download options entry point for translations. ('Download languages' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + global-lang-settings-enabled: + description: "Show the global language options entry point for automatically translating. ('Automatic Translation' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + global-settings-enabled: + description: "Show the global settings entry point within the translations feature. ('Translation Settings' on the page settings view.) 'page-settings-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + global-site-settings-enabled: + description: "Show the global never translate this site options entry point for site management. ('Never translate these sites' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + main-flow-browser-menu-enabled: + description: "Show the browser menu entry point into the translations feature. ('Translate Page' on browser menu.)\n" + type: Boolean + default: true + main-flow-toolbar-enabled: + description: "Show the primary toolbar entry point into the translations feature. (Translations icon on URL toolbar.)\n" + type: Boolean + default: true + page-settings-enabled: + description: "Show the page settings entry point within the translations feature. (Gear icon on the translations main flow page.) 'main-flow-toolbar-enabled' or 'main-flow-browser-menu-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + user-characteristics: + description: A feature for control user characteristic data collection + variables: + currentVersion: + description: The current collection version of the user characteristics. + type: Int + default: 0 +enums: + ControlMessageBehavior: + description: An enum to influence what should be displayed when a control message is selected. + variants: + show-next-message: + description: The next eligible message should be shown. + show-none: + description: The surface should show no message. + CookieBannersSection: + description: The identifiers for the sections of the MR 2022. + variants: + feature-setting-detect-only: + description: "An integer either 0 or 1 indicating if cookie banner detect only mode should be enabled or disabled. 0 for setting to be disabled, and 1 for enabling the setting." + feature-setting-global-rules: + description: "An integer either 0 or 1 indicating if cookie banner global rules should be enabled or disabled. 0 for setting to be disabled, and 1 for enabling the setting." + feature-setting-global-rules-sub-frames: + description: "An integer either 0 or 1 indicating if cookie banner global rules sub-frames should be enabled or disabled. 0 for setting to be disabled, and 1 for enabling the setting." + feature-setting-value: + description: "An integer either 0 or 1 indicating if cookie banner setting should be enabled or disabled, 0 for setting the value to disabled, 1 for enabling the setting with the value reject_all." + feature-setting-value-pbm: + description: "An integer either 0 or 1 indicating if cookie banner setting should be enabled or disabled, 0 for setting the value to disabled, 1 for enabling the setting with the value reject_all." + feature-ui: + description: "An integer either 0 or 1 indicating if the UI for cookie banner handling should be visible, 0 to hide the UI and 1 to show the UI. The actual UI is composed by cookie banner section in the settings page, the toolbar section and the re-engagement dialog." + HomeScreenSection: + description: The identifiers for the sections of the homescreen. + variants: + bookmarks: + description: The sites the user has bookmarked. + jump-back-in: + description: The tabs the user was looking immediately before being interrupted. + pocket: + description: The pocket section. This should only be available in the US. + pocket-sponsored-stories: + description: Subsection of the Pocket homescreen section which shows sponsored stories. + recent-explorations: + description: The tab groups + top-sites: + description: The frecency and pinned sites. + MR2022Section: + description: The identifiers for the sections of the MR 2022. + variants: + home-onboarding-dialog-existing-users: + description: Home onboarding dialog for upgraded users. + jump-back-in-cfr: + description: Jump back-in onboarding message. + sync-cfr: + description: CFR for the first time you see a synced tab on the home screen. + tcp-cfr: + description: CFR for the first time you use the browse with Total Cookie Protection on the browser screen. + tcp-feature: + description: Controls the Total Cookie Protection feature. + wallpapers-selection-tool: + description: Wallpapers selection dialog tool for the home screen. + OnboardingCardType: + description: An enum to describe a type of card. + variants: + add-ons: + description: Allows user to install add-ons from onboarding. + add-search-widget: + description: Allows user to add search widget to homescreen. + default-browser: + description: Allows user to set Firefox as the default browser. + notification-permission: + description: Allows user to enable notification permission. + sync-sign-in: + description: Allows user to sync with a Firefox account. + terms-of-service: + description: Page to display the terms of services. + theme-selection: + description: Allows user to choose between dark and light themes. + toolbar-placement: + description: Allows user to choose the toolbar position. + OnboardingPanel: + description: The types of onboarding panels in the onboarding page + variants: + privacy-notice: + description: The onboarding panel where users can tap to view our privacy notice. + sync: + description: The onboarding panel where users can sign in to sync + tcp: + description: The onboarding panel where users can choose their total cookie protection settings + themes: + description: The themes onboarding panel where users pick themes + toolbar-placement: + description: The onboarding panel where users choose their toolbar placement (bottom or top) + QueryParameterStrippingSection: + description: The identifiers for the options for the Query Parameter Stripping feature. + variants: + query-parameter-stripping: + description: "An integer either 0 or 1 indicating if query parameter stripping should be enabled or disabled in normal mode. 0 for setting to be disabled, and 1 for enabling the setting." + query-parameter-stripping-allow-list: + description: An string separated by commas indicating the sites where should from query stripping should be exempted. + query-parameter-stripping-pmb: + description: "An integer either 0 or 1 indicating if query parameter stripping should be enabled or disabled in private mode. 0 for setting to be disabled, and 1 for enabling the setting." + query-parameter-stripping-strip-list: + description: An string separated by commas indicating the list of query params to be stripped from URIs. This list will be merged with records coming from RemoteSettings. + SuggestionType: + description: The type of a Firefox Suggest search suggestion. + variants: + amp: + description: A Firefox Suggestion from adMarketplace. + ampMobile: + description: A firefox Suggestion from adMarketplace specifically for mobile. + wikipedia: + description: A Firefox Suggestion for a Wikipedia page. + ThemeType: + description: An enum to describe a theme selection option. + variants: + theme-dark: + description: Sets the theme to dark mode. + theme-light: + description: Sets the theme to light mode. + theme-system: + description: "Adapts the theme to match the device's system setting." + ToolbarType: + description: An enum to describe a toolbar placement option. + variants: + toolbar-bottom: + description: Sets the toolbar placement on the bottom. + toolbar-top: + description: Sets the toolbar placement on the top. +objects: + AddOnData: + description: An object to describe an add-on to be installed from the onboarding card. + fields: + average-rating: + description: The average rating of the add-on. + type: String + default: "0.0" + description: + description: A small description of the add-on to be displayed to the user. + type: Text + default: "" + icon-res: + description: The resource id of the icon of the add-on to be displayed. + type: Image + default: ic_onboarding_welcome + id: + description: The identifier for this add-on. + type: Text + default: "" + install-url: + description: The url from where the add-on can be installed. + type: Text + default: "" + name: + description: The name of the add-on to be displayed to the user. + type: Text + default: "" + review-count: + description: The amount of reviews the add-on has. + type: String + default: "0.0" + CustomizationThemeData: + description: Defines an option for theme selection. + fields: + image-res: + description: The resource id of the image to be displayed. + type: Image + default: ic_pick_a_theme_system_auto + label: + description: "Display text for the theme option (e.g., \"Light Theme\")." + type: Text + default: "" + theme-type: + description: The type of the theming option. + type: ThemeType + default: theme-system + CustomizationToolbarData: + description: An object to describe the placement of the toolbar. + fields: + image-res: + description: The resource id of toolbar placement image. + type: Image + default: ic_onboarding_customize_toolbar + label: + description: "Display text for the toolbar placement option (e.g. \"Top placement\")." + type: Text + default: "" + toolbar-type: + description: The type of toolbar placement. + type: ToolbarType + default: toolbar-top + ExtraCardData: + description: "Holds data for cards that require additional data, e.g. add-ons, toolbar placement cards." + fields: + add-ons-data: + description: "An optional list of add-ons which will be shown in add-on onboarding card.\n" + type: List + default: [] + customization-theme-data: + description: An optional list of theme choices for the theme selection card. + type: List + default: [] + customization-toolbar-data: + description: "An optional list of toolbar placements for the toolbar placement card.\n" + type: List + default: [] + term-of-service-data: + description: "An optional terms of service data for the onboarding card.\n" + type: Option + default: ~ + MessageData: + description: "An object to describe a message. It uses human readable strings to describe the triggers, action and style of the message as well as the text of the message and call to action.\n" + fields: + action: + description: "A URL of a page or a deeplink. This may have substitution variables in.\n" + type: ActionName + default: OPEN_URL + action-params: + description: "A string map containing query parameters that will be appended to the action URL. This is useful for opening URLs in tabs, or specifying that the tab should be private. The values may have substitutions, e.g. \"url\": \"https://example.com/id={uuid}\", \"private\": \"true\".\nThe params and their values are all determined downstream of the messaging component, by the embedding app's deeplink processing machinery.\n" + type: "Map" + default: {} + button-label: + description: "The text on the button. If no text is present, the whole message is clickable.\n" + type: Option + default: ~ + exclude-if-any: + description: "A list of strings corresponding to targeting expressions. The message will not be shown if any of the expressions are `true`.\n" + type: List + default: [] + experiment: + description: The slug of the experiment that this message came from. + type: Option + default: ~ + is-control: + description: "Indicates if this message is the control message, if true shouldn't be displayed" + type: Boolean + default: false + microsurvey-config: + description: Optional configuration data for a microsurvey. + type: Option + default: ~ + style: + description: "The style as described in a `StyleData` from the styles table.\n" + type: StyleName + default: DEFAULT + surface: + description: The surface identifier for this message. + type: SurfaceName + default: homescreen + text: + description: The message text displayed to the user + type: Text + default: "" + title: + description: The title text displayed to the user + type: Option + default: ~ + trigger-if-all: + description: "A list of strings corresponding to targeting expressions. The message will be shown if all expressions are `true`.\n" + type: List + default: [] + MicrosurveyAnswer: + description: Attributes relating to microsurvey content. + fields: + ordering: + description: "Used to sequence the answers top to bottom. E.g. 0 will be the first/top item, 1 will be next and so on. Always set either ALL the provided answers ordering or NONE. If ALL answers are default, the the ordering used will be the same as provided by the experiment.\n" + type: Int + default: 0 + text: + description: The text for the answer. + type: Text + default: "" + MicrosurveyConfig: + description: Attributes relating to microsurvey content. + fields: + answers: + description: "The list of answers to present to the user e.g. \"Satisfied, Dissatisfied...\"." + type: List + default: [] + icon: + description: The icon shown in the survey. + type: Option + default: ~ + utm-content: + description: "Optional \"utm_content\" parameter for the privacy notice URL to specify the feature being surveyed." + type: Option + default: ~ + NotificationConfig: + description: Attributes controlling the global configuration of notification messages. + fields: + refresh-interval: + description: "How often, in minutes, the notification message worker will wake up and check for new messages.\n" + type: Int + default: 240 + OnboardingCardData: + description: An object to describe a user facing onboarding card. + fields: + body: + description: The message text displayed to the user. May contain linkable text. + type: Text + default: "" + card-type: + description: The type of the card. + type: OnboardingCardType + default: default-browser + disqualifiers: + description: "A list of strings corresponding to targeting expressions. The card will not be shown if any expression is `true`.\n" + type: List + default: + - NEVER + enabled: + description: "If true, this card is shown to the user." + type: Boolean + default: true + extra-data: + description: Optional extra data for cards that require additional data. + type: Option + default: ~ + image-res: + description: The resource id of the image to be displayed. + type: Image + default: ic_onboarding_welcome + ordering: + description: Used to sequence the cards. + type: Int + default: 0 + prerequisites: + description: "A list of strings corresponding to targeting expressions. The card will be shown if all expressions are `true` and if no expressions in the `disqualifiers` table are true, or if the `disqualifiers` table is empty.\n" + type: List + default: + - ALWAYS + primary-button-label: + description: The text to display on the primary button. + type: Text + default: "" + secondary-button-label: + description: The text to display on the secondary button. + type: Text + default: "" + title: + description: The title text displayed to the user. + type: Text + default: "" + StyleData: + description: "A group of properties (predominantly visual) to describe the style of the message.\n" + fields: + max-display-count: + description: "How many sessions will this message be shown to the user before it is expired.\n" + type: Int + default: 5 + priority: + description: "The importance of this message. 0 is not very important, 100 is very important.\n" + type: Int + default: 50 + TermsOfServiceData: + description: An object to describe the terms of service onboarding card. + fields: + lineOneLinkText: + description: The text for the link of line one. + type: Text + default: "" + lineOneLinkURL: + description: The url for the link of line one. + type: Text + default: "" + lineOneText: + description: The text for line one. + type: Text + default: "" + lineThreeLinkText: + description: The text for the link of line three. + type: Text + default: "" + lineThreeText: + description: The text for line three. + type: Text + default: "" + lineTwoLinkText: + description: The text for the link of line two. + type: Text + default: "" + lineTwoLinkURL: + description: The url for the link of line two. + type: Text + default: "" + lineTwoText: + description: The text for line two. + type: Text + default: "" diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml b/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml index ac476847a6..864251d40a 100644 --- a/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml @@ -1,5 +1,5 @@ -beta: 9b0354c7e9133ef3d46c4b8fe517bbf0a6a9c6fe -central: 92dd3425067a91fb007ba63e3facfb2a26b690dd -esr115: 020e9925f81bb0221add107b6b7ea8d3e32f269f -esr128: e911f33083f63cb17f86fd300c39f4900f1fe478 -release: 213845d047e0fb1c076d969e8163fa702ca9154e +beta: a1e5d1f58aca7129af9148ced4bd6e8781b3aeb4 +central: dd9f5a143dd227e6a6271b78458950bfd6736161 +esr115: dc8b700b41911c2bde2cff62bde16d3c0ceadc2a +esr128: a7c935b8a7c0c39bd2161d0927e9f2f2eb4c9d47 +release: 8c35adfaf5ea8b07c3e221d0c9d557a1375f5852 diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/experimenter.yaml b/experimenter/experimenter/features/manifests/firefox-desktop/experimenter.yaml index 2e3bac1b69..b1199d4b58 100644 --- a/experimenter/experimenter/features/manifests/firefox-desktop/experimenter.yaml +++ b/experimenter/experimenter/features/manifests/firefox-desktop/experimenter.yaml @@ -542,11 +542,14 @@ urlbar: will be able to click the "Show less frequently" command for weather suggestions. If undefined or zero, the user will be able to click the command without any limit. - weatherSimpleUI: - type: boolean + weatherUiTreatment: + type: int + fallbackPref: browser.urlbar.weather.uiTreatment description: >- - If true, show the weather suggestion by simple UI edition as follows. - * Remove the forcast text from the summary text. + The UI treatment to use for weather suggestions. Possible values: + 0: (default) Simplest UI with current temperature and location + 1: Simpler UI, adds current conditions, high/low, and URL + 2: Full UI, adds forecast yelpMinKeywordLength: type: int description: >- @@ -2839,6 +2842,16 @@ fxaButtonVisibility: setPref: branch: user pref: identity.fxaccounts.toolbar.pxiToolbarEnabled.vpnEnabled + avatarIconVariant: + description: >- + Controls the icon that appears in the toolbar button when in the + signed-out state. + + One of the following values: + - control + - human-circle + - fox-circle + type: string syncSetupFlow: description: Prefs to control the updated Mozilla account panel flow for users without sync enabled. @@ -3011,6 +3024,13 @@ fingerprintingProtection: pref: javascript.options.use_fdlibm_for_sin_cos_tan description: >- Uses a different math backend for Math.sin/cos/tan in JavaScript that exposes less entropy + canvas_random_use_siphash: + type: boolean + setPref: + branch: default + pref: privacy.resistFingerprinting.randomization.canvas.use_siphash + description: >- + Uses the SipHash function for canvas randomization. userCharacteristics: description: Control user characteristic data collection diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/v115.20.0/experimenter.yaml b/experimenter/experimenter/features/manifests/firefox-desktop/v115.20.0/experimenter.yaml new file mode 100644 index 0000000000..2cae50d2fa --- /dev/null +++ b/experimenter/experimenter/features/manifests/firefox-desktop/v115.20.0/experimenter.yaml @@ -0,0 +1,1564 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +# Features must be added here to be accessible through the NimbusFeature API. + +"no-feature-firefox-desktop": + description: A dummy feature for experiments that target no feature. + owner: barret@mozilla.com + applications: + - firefox-desktop + - firefox-desktop-background-task + hasExposure: false + variables: {} + +testFeature: + description: Test only feature + owner: barret@mozilla.com + applications: + - firefox-desktop + - firefox-desktop-background-task + hasExposure: false + isEarlyStartup: true + variables: + enabled: + type: boolean + description: Whether or not this feature is enabled + testInt: + type: int + fallbackPref: nimbus.testing.testInt + description: Int pref used by platform API tests + testSetString: + type: string + setPref: nimbus.testing.testSetString + description: A string pref set by Nimbus tests + +nimbus-qa-1: + description: A feature for testing pref-setting on the default branch. + owner: barret@mozilla.com + hasExposure: false + variables: + value: + type: string + setPref: nimbus.qa.pref-1 + description: The value to set for the pref. + +nimbus-qa-2: + description: A feature for testing pref-setting on the user branch. + owner: barret@mozilla.com + isEarlyStartup: true + hasExposure: false + variables: + value: + type: string + setPref: nimbus.qa.pref-2 + description: The value to set for the pref. + +# `search` is for search engine experimentation features which do not require +# isEarlyStartup to be set. +search: + description: Search engine experimentation support and testing features. + owner: search-and-suggest-program@mozilla.com + hasExposure: false + variables: + extraParams: + type: json + description: >- + This allows extra parameters to be set for search engines requests including, + where calls to the suggestions API, the search engine configuration defines + those parameters. + + The use of this field should be coordinated with the Search team. + + The field value is an array of objects with key/value fields. For example: + + [ + {"key": "google_channel_row", "value": "foo"} + ] + + This is matched to a section in the search configuration: + + "extraParams": [ + { + "name": "channel", + "pref": "google_channel_row", + "condition": "pref" + } + ], + + In this case, the resulting URL for the appropriate search engine would have + `&channel=foo` added to the URL when doing searches. + + If the key is not referenced in the search configuration, then no parameter + will be added. Only the search team can update the configuration. + cbhStudyUs: + type: string + setPref: browser.search.param.google_channel_us + description: >- + NOTE: Please use `extraParams` rather than this field. + A string pref set by Nimbus tests for US search cohort + cbhStudyRow: + type: string + setPref: browser.search.param.google_channel_row + description: >- + NOTE: Please use `extraParams` rather than this field. + A string pref set by Nimbus tests for Rest of World (ROW) search cohort + richSuggestionsFeatureGate: + type: boolean + setPref: browser.urlbar.richSuggestions.featureGate + description: >- + Feature gate that controls whether Rich Suggestions are enabled. + serpEventTelemetryEnabled: + type: boolean + setPref: browser.search.serpEventTelemetry.enabled + description: Whether the Glean SERP event telemetry is enabled. + +# `searchConfiguration` is for search experiment features for items that require +# isEarlyStartup to be true. These items may require a reload of the search +# engine configuration, and an additional reload may happen during the startup +# process. +searchConfiguration: + description: Search experimentation support for the engine configuration + owner: search-and-suggest-program@mozilla.com + isEarlyStartup: true + hasExposure: false + variables: + experiment: + type: string + fallbackPref: browser.search.experiment + description: >- + Used to activate only matching configurations that contain the value in + `experiment` + seperatePrivateDefaultUIEnabled: + type: boolean + description: Whether the UI for the separate private default feature is enabled. + seperatePrivateDefaultUrlbarResultEnabled: + type: boolean + description: Whether the urlbar result for the separate private default is shown. + +urlbar: + description: The Address Bar + owner: search-and-suggest-program@mozilla.com + hasExposure: true + exposureDescription: >- + The timing of the exposure event depends on the experiment, but generally + the event is recorded once per app session when the user first encounters + the UI of the experiment in which they're enrolled. + variables: + addonsFeatureGate: + type: boolean + fallbackPref: browser.urlbar.addons.featureGate + description: >- + Feature gate that controls whether all aspects of the addons suggestion + feature are exposed to the user. + addonsShowLessFrequentlyCap: + type: int + description: >- + If defined and non-zero, this is the maximum number of times the user + will be able to click the "Show less frequently" command for addon + suggestions. If undefined or zero, the user will be able to click the + command without any limit. + addonsUITreatment: + type: string + enum: + - a + - b + description: >- + Define the UI type for addon suggestions. + In case of "a", display rating stars and review volume on the bottom of + the suggestion. In case of "b", display a label explaining that the + addon suggestion is a recommendation. + autoFillAdaptiveHistoryEnabled: + type: boolean + fallbackPref: browser.urlbar.autoFill.adaptiveHistory.enabled + description: Whether enabling adaptive history autofill. + autoFillAdaptiveHistoryMinCharsThreshold: + type: int + fallbackPref: browser.urlbar.autoFill.adaptiveHistory.minCharsThreshold + description: Minimum char length of the user's search string to trigger adaptive history autofill. + autoFillAdaptiveHistoryUseCountThreshold: + type: string + description: This value assumes float expression like "0.47". Threshold for use count of input history that we handle as adaptive history autofill. If the use count is this value or more, it will be a candidate. + bestMatchBlockingEnabled: + type: boolean + fallbackPref: browser.urlbar.bestMatch.blockingEnabled + description: Whether best match Suggest suggestions can be blocked. + bestMatchEnabled: + type: boolean + fallbackPref: browser.urlbar.bestMatch.enabled + description: Gate for the best match feature. If false, the best match preferences UI and best match suggestions will not be shown. If true, the preferences UI will be shown, and the user can turn best match suggestions on or off. + experimentType: + type: string + description: The type of the experiment (or rollout). If "best-match", then the Nimbus exposure event will be recorded when the user first triggers a best match (or would have triggered a best match, for users in the control group). If "modal", the event will be recorded when the user first triggers to show the onbording dialog. If empty, the event will be recorded when the user first triggers any type of Suggest suggestion. + enum: + - best-match + - modal + - "" + isBestMatchExperiment: + type: boolean + description: >- + Whether the experiment (or rollout) is related to best match. If true, then the Nimbus exposure event will be recorded when the user first triggers a best match (or would have triggered a best match, for users in the control group). Deprecated, please use `experimentType: "best-match"` instead. + merinoClientVariants: + type: string + fallbackPref: browser.urlbar.merino.clientVariants + description: >- + Comma separated list of client variants to report to the Merino server. + May impact server behavior. + merinoEnabled: + type: boolean + fallbackPref: browser.urlbar.merino.enabled + description: Whether Merino is enabled as a quick suggest source + merinoEndpointURL: + type: string + fallbackPref: browser.urlbar.merino.endpointURL + description: The Merino endpoint URL, not including parameters. + merinoProviders: + type: string + fallbackPref: browser.urlbar.merino.providers + description: >- + Comma-separated list of providers to request from the Merino server. + Merino will return suggestions only for these providers. + merinoTimeoutMs: + type: int + fallbackPref: browser.urlbar.merino.timeoutMs + description: Timeout for Merino fetches (ms) + exposureResults: + type: string + setPref: browser.urlbar.exposureResults + description: >- + Comma-separated list of result type combinations, that are used to determine if an exposure event should be fired. + showExposureResults: + type: boolean + setPref: browser.urlbar.showExposureResults + description: >- + Boolean used to determine if the results defined in `exposureResults` should be shown in search results. Should be false for Control branch of an experiment. + quickSuggestAllowPositionInSuggestions: + type: boolean + fallbackPref: browser.urlbar.quicksuggest.allowPositionInSuggestions + description: Whether quick suggest results can be shown in position specified in the suggestions. + quickSuggestBlockingEnabled: + type: boolean + fallbackPref: browser.urlbar.quicksuggest.blockingEnabled + description: Whether the usual non-best-match Suggest suggestions can be blocked. + quickSuggestDataCollectionEnabled: + type: boolean + description: Whether data collection should be enabled by default. If this variable is specified, it will override the value implied by the scenario. It will never override the user's local preference to disable (or enable) data collection, if the user has already toggled that preference. + quickSuggestEnabled: + type: boolean + fallbackPref: browser.urlbar.quicksuggest.enabled + description: Gate for the Firefox Suggest feature as a whole. If false, the Firefox Suggest preferences UI and Suggest suggestions will not be shown. If true, the preferences UI will be shown, and the user can turn suggestions on or off. + quickSuggestImpressionCapsSponsoredEnabled: + type: boolean + fallbackPref: browser.urlbar.quicksuggest.impressionCaps.sponsoredEnabled + description: Whether sponsored suggestions are subject to impression frequency caps. If false, sponsored suggestions can be shown an unlimited number of times over any given period. If true, sponsored suggestion impressions will be subject to the caps in the remote settings configuration. + quickSuggestImpressionCapsNonSponsoredEnabled: + type: boolean + fallbackPref: browser.urlbar.quicksuggest.impressionCaps.nonSponsoredEnabled + description: Whether non-sponsored suggestions are subject to impression frequency caps. If false, non-sponsored suggestions can be shown an unlimited number of times over any given period. If true, non-sponsored suggestion impressions will be subject to the caps in the remote settings configuration. + quickSuggestNonSponsoredEnabled: + type: boolean + description: Whether non-sponsored suggestions should be enabled by default. If this variable is specified, it will override the value implied by the scenario. It will never override the user's local preference to disable (or enable) non-sponsored suggestions, if the user has already toggled that preference. + quickSuggestNonSponsoredIndex: + type: int + fallbackPref: browser.urlbar.quicksuggest.nonSponsoredIndex + description: >- + The index of non-sponsored QuickSuggest results within the general + group. A negative index is relative to the end of the group + quickSuggestOnboardingDialogVariation: + type: string + description: >- + Specify the messages/UI variation for QuickSuggest onboarding dialog. This value is case insensitive. + quickSuggestRemoteSettingsDataType: + type: string + description: The `type` of the suggestions data in remote settings. If not specified, "data" is used. + quickSuggestRemoteSettingsEnabled: + type: boolean + fallbackPref: browser.urlbar.quicksuggest.remoteSettings.enabled + description: Whether Remote Settings is enabled as a quick suggest source + quickSuggestScenario: + # IMPORTANT: This should not have a fallbackPref. See UrlbarPrefs.jsm. + type: string + description: The Firefox Suggest scenario in which the user is enrolled + enum: + - history + - offline + - online + quickSuggestShouldShowOnboardingDialog: + type: boolean + fallbackPref: browser.urlbar.quicksuggest.shouldShowOnboardingDialog + description: Whether or not to show the QuickSuggest onboarding dialog + quickSuggestShowOnboardingDialogAfterNRestarts: + type: int + fallbackPref: browser.urlbar.quicksuggest.showOnboardingDialogAfterNRestarts + description: Show QuickSuggest onboarding dialog after N browser restarts + quickSuggestSponsoredEnabled: + type: boolean + description: Whether sponsored suggestions should be enabled by default. If this variable is specified, it will override the value implied by the scenario. It will never override the user's local preference to disable (or enable) sponsored suggestions, if the user has already toggled that preference. + quickSuggestSponsoredIndex: + type: int + fallbackPref: browser.urlbar.quicksuggest.sponsoredIndex + description: >- + The index of sponsored QuickSuggest results within the general group. A + negative index is relative to the end of the group + recordNavigationalSuggestionTelemetry: + type: boolean + description: Whether to record navigational suggestion telemetry. Defaults to false. + showSearchTermsFeatureGate: + type: boolean + fallbackPref: browser.urlbar.showSearchTerms.featureGate + description: Gate for the show search terms feature. If false, the preference#search will not show the search terms feature checkbox, and search terms will never persist in the urlbar. If true, the preference checkbox will be shown on preferences#search, and the user can choose to persist search terms on or off in the urlbar. + weatherFeatureGate: + type: boolean + fallbackPref: browser.urlbar.weather.featureGate + description: >- + Feature gate that controls whether all aspects of the weather suggestion + feature are exposed to the user. See also `weatherKeywords` and + `weatherKeywordsMinimumLength`. In summary: To enable the weather + suggestion, set `weatherFeatureGate` to true, `weatherKeywords` to an + array of full keyword strings, and `weatherKeywordsMinimumLength` to a + non-zero integer. To disable the weather suggestion, leave out all + weather-related variables. + weatherKeywords: + type: json + description: >- + An array of full keyword strings that will trigger the weather + suggestion when the user types them in the address bar. If absent or + null, Firefox will fall back to the weather keywords defined in remote + settings. If neither Nimbus nor remote settings defines any keywords, + the weather suggestion will be disabled. See also + `weatherKeywordsMinimumLength`. + weatherKeywordsMinimumLength: + type: int + description: >- + If defined and non-zero, the weather suggestion will be triggered by + typing any prefix of a full weather keyword when the prefix is at least + `weatherKeywordsMinimumLength` characters long. If this variable is + absent or zero, Firefox will fall back to the minimum length defined in + remote settings. If neither Nimbus nor remote settings defines a minimum + length, only full keywords will trigger the suggestion. See also + `weatherKeywords`. + weatherKeywordsMinimumLengthCap: + type: int + description: >- + If defined and non-zero, the user will not be able to increment the + minimum keyword length beyond this value. e.g., if this value is 6, the + current minimum length is 5, and the user clicks "Show less frequently", + then the minimum length will be incremented to 6, the "Show less + frequently" command will be hidden, and the user can continue to trigger + the weather suggestion by typing 6 characters, but they will not be able + to increment the minimum length any further. If this variable is absent + or zero, Firefox will fall back to the cap defined in remote settings. + If neither Nimbus nor remote settings defines a cap, no cap will be + used, and the user will be able to increment the minimum length without + any limit. + +frecency: + description: "The address bar ranking algorithm" + owner: search-and-suggest-program@mozilla.com + hasExposure: false + isEarlyStartup: true + variables: + originsAlternativeEnable: + description: >- + Use an alternative ranking algorithm for autofilling origins, that is + mainly domains of Web pages. When the user types the beginning of an + origin, we autofill the whole origin. Whether autofill happens depends + on the ranking algorithm. Bookmarks are always autofilled anyway. + type: boolean + setPref: "places.frecency.origins.alternative.featureGate" + originsDaysCutOff: + description: >- + The alternative ranking algorithm only considers pages visited in the + last N days, where N is controlled by this variable. + type: int + setPref: "places.frecency.origins.alternative.daysCutOff" + +aboutwelcome: + description: "The about:welcome page" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + Exposure is sent once per browsing session when the about:welcome URL is + first accessed. + isEarlyStartup: true + variables: + enabled: + type: boolean + fallbackPref: browser.aboutwelcome.enabled + description: >- + Should users see about:welcome? If this is false, users will see a + regular new tab instead. + id: + type: string + description: >- + Descriptive ID for the about:welcome content + screens: + type: json + fallbackPref: browser.aboutwelcome.screens + description: Content to show in the onboarding flow + languageMismatchEnabled: + type: boolean + fallbackPref: intl.multilingual.aboutWelcome.languageMismatchEnabled + description: >- + Suggest to change the language on about:welcome when there is a mismatch with + the OS. + transitions: + type: boolean + description: Enable transition effect between screens + showModal: + type: boolean + fallbackPref: browser.aboutwelcome.showModal + description: >- + Should users see window modal onboarding + backdrop: + type: string + fallbackPref: browser.aboutwelcome.backdrop + description: >- + Specify the color to be used to update the background color + +moreFromMozilla: + description: "New page on about:preferences to suggest more Mozilla products" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + Exposure is sent once per browsing session when the about:preferences URL is + first accessed. + variables: + enabled: + type: boolean + fallbackPref: browser.preferences.moreFromMozilla + description: Should users see the new more from Mozilla section. + template: + type: string + fallbackPref: browser.preferences.moreFromMozilla.template + description: UI template used to display Mozilla products. Possible values simple, advanced. Default is simple. + +abouthomecache: + description: "The startup about:home cache." + owner: omc@mozilla.com + hasExposure: false + isEarlyStartup: true + variables: + enabled: + type: boolean + fallbackPref: browser.startup.homepage.abouthome_cache.enabled + description: Is the feature enabled? + +newtab: + description: "The about:newtab page" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + Exposure is sent once per browsing session when the first newtab page loads + (either about:newtab or about:home). + isEarlyStartup: true + variables: + newTheme: + type: boolean + description: Enable the new theme + customizationMenuEnabled: + type: boolean + fallbackPref: browser.newtabpage.activity-stream.customizationMenu.enabled + description: Enable the customization panel inside of the newtab + prefsButtonIcon: + type: string + description: Icon url to use for the preferences button + topSitesContileEnabled: + type: boolean + fallbackPref: browser.topsites.contile.enabled + description: Enable the Contile integration for Sponsored Top Sites + topSitesUseAdditionalTilesFromContile: + type: boolean + description: Allow Contile to use additonal sponsored top sites + +pocketNewtab: + description: The Pocket section in newtab + owner: sdowne@getpocket.com + hasExposure: false + isEarlyStartup: true + variables: + spocPositions: + type: string + fallbackPref: browser.newtabpage.activity-stream.discoverystream.spoc-positions + description: CSV string of spoc position indexes on newtab Pocket grid + spocTopsitesPositions: + type: string + fallbackPref: browser.newtabpage.activity-stream.discoverystream.spoc-topsites-positions + description: CSV string of spoc position indexes on newtab topsites section + spocAdTypes: + type: string + fallbackPref: browser.newtabpage.activity-stream.discoverystream.spocAdTypes + description: CSV string of data to set the spoc content. + spocZoneIds: + type: string + fallbackPref: browser.newtabpage.activity-stream.discoverystream.spocZoneIds + description: CSV string of data to set the spoc content. + spocTopsitesAdTypes: + type: string + fallbackPref: browser.newtabpage.activity-stream.discoverystream.spocTopsitesAdTypes + description: CSV string of data to set the spoc content. + spocTopsitesZoneIds: + type: string + fallbackPref: browser.newtabpage.activity-stream.discoverystream.spocTopsitesZoneIds + description: CSV string of data to set the spoc content. + spocSiteId: + type: string + fallbackPref: browser.newtabpage.activity-stream.discoverystream.spocSiteId + description: String ID to set the spoc content. + widgetPositions: + type: string + fallbackPref: browser.newtabpage.activity-stream.discoverystream.widget-positions + description: CSV string of widget position indexes on newtab grid + hybridLayout: + type: boolean + fallbackPref: browser.newtabpage.activity-stream.discoverystream.hybridLayout.enabled + description: Enable compact cards on newtab grid only for specific breakpoints + hideCardBackground: + type: boolean + fallbackPref: browser.newtabpage.activity-stream.discoverystream.hideCardBackground.enabled + description: Removes Pocket card background and borders. + fourCardLayout: + type: boolean + fallbackPref: browser.newtabpage.activity-stream.discoverystream.fourCardLayout.enabled + description: Enable four Pocket cards per row. + newFooterSection: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.newFooterSection.enabled + description: Enable an updated Pocket section topics footer + saveToPocketCard: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.saveToPocketCard.enabled + description: >- + A save to Pocket button inside the card, shown on the card thumbnail, on + hover. + saveToPocketCardRegions: + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.saveToPocketCardRegions + description: >- + CSV string of regions that support the save to Pocket button inside the card. + hideDescriptions: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.hideDescriptions.enabled + description: >- + Hide or display descriptions for Pocket stories on newtab. + hideDescriptionsRegions: + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.hideDescriptionsRegions + description: >- + CSV string of regions that hide descriptions for Pocket stories on newtab. + compactGrid: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.compactGrid.enabled + description: >- + Reduce the number of pixels between the Pocket cards on newtab. + compactImages: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.compactImages.enabled + description: >- + Reduce the height on Pocket card images on newtab. + imageGradient: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.imageGradient.enabled + description: >- + Add a gradient to the bottom of Pocket card images on newtab to blend the + image in with the card. + titleLines: + type: int + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.titleLines + description: >- + Changes the maximum number of lines a title can be for Pocket cards on newtab. + descLines: + type: int + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.descLines + description: >- + Changes the maximum number of lines a description can be for Pocket cards on newtab. + onboardingExperience: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.onboardingExperience.enabled + description: >- + Enables an onboarding experience for Pocket section on newtab. + essentialReadsHeader: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.essentialReadsHeader.enabled + description: >- + Updates the Pocket section header and title to say "Today’s Essential Reads", + moves the "Recommended by Pocket" header to the right side. + editorsPicksHeader: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.editorsPicksHeader.enabled + description: >- + Updates the Pocket section header and title to say "Editor’s Picks", if used with + essentialReadsHeader, creates a second section 2 rows down for editorsPicksHeader. + recentSavesEnabled: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.recentSaves.enabled + description: >- + Updates the Pocket section with a new header and 1 row of recently saved Pocket stories. + readTime: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.readTime.enabled + description: >- + Displays an estimated read time for Pocket cards on newtab. + newSponsoredLabel: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.newSponsoredLabel.enabled + description: >- + Updates the sponsored label position to below the image for Pocket cards on newtab. + sendToPocket: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.sendToPocket.enabled + description: >- + Decides what to do when a logged out user click "Save to Pocket" from a Pocket card. + recsPersonalized: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.recs.personalized + description: >- + Enables Pocket stories personalization. + spocsPersonalized: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.spocs.personalized + description: >- + Enables Pocket sponsored content personalization. + spocsCacheTimeout: + type: int + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.spocs.cacheTimeout + description: >- + Set sponsored content cache timeout in minutes. + discoveryStreamConfig: + description: A JSON blob of discovery stream configuration. + type: string + setPref: "browser.newtabpage.activity-stream.discoverystream.config" + spocsEndpoint: + description: The URL for the spocs endpoint. + type: string + setPref: "browser.newtabpage.activity-stream.discoverystream.spocs-endpoint" + regionStoriesConfig: + description: A comma-separated list of region to get stories for. + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.region-stories-config + regionBffConfig: + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.region-bff-config + description: A comma-separated list of regions to get stories from the recommendations BFF. Also requires region-stories-config. + regionStoriesBlock: + description: A comma-separated list of regions that do not get stories, regardless of locale-list-config. + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.region-stories-block + localeListConfig: + description: A comma-separated list of locales that get stories, regardless of region-stories-config. + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.locale-list-config + regionSpocsConfig: + description: A comma-separated list of regions that get spocs by default. + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.region-spocs-config + topSitesMaxSponsored: + # Defined under `pocketNewtab` as it needs to be used along with other variables + type: int + description: The maximum number of sponsored Top Sites to be displayed + topSitesContileMaxSponsored: + # Defined under `pocketNewtab` as it needs to be used along with other variables + type: int + description: The maximum number of sponsored Top Sites used from Contile + topSitesContileSovEnabled: + # Defined under `pocketNewtab` as it needs to be used along with other variables + description: Enable the Share-of-Voice feature for Sponsored Topsites. + type: boolean + fallbackPref: >- + browser.topsites.contile.sov.enabled + +saveToPocket: + description: The save to Pocket feature + owner: sdowne@getpocket.com + hasExposure: false + isEarlyStartup: true + variables: + emailButton: + type: boolean + fallbackPref: extensions.pocket.refresh.emailButton.enabled + description: Just for the new Pocket panels, enables the email signup button. + hideRecentSaves: + type: boolean + fallbackPref: extensions.pocket.refresh.hideRecentSaves.enabled + description: Hides the recently saved section in the home panel. + bffRecentSaves: + type: boolean + fallbackPref: "extensions.pocket.bffRecentSaves" + description: Use the new BFF Proxy Service instead of the legacy Pocket Service for Recent Saves + bffApi: + type: string + fallbackPref: "extensions.pocket.bffApi" + description: BFF Proxy Service domain + oAuthConsumerKeyBff: + type: string + fallbackPref: "extensions.pocket.oAuthConsumerKeyBff" + description: BFF Proxy Service OAuth Consumer Key + +password-autocomplete: + description: A special autocomplete UI for password fields. + owner: sgalich@mozilla.com + hasExposure: false + variables: + directMigrateSingleProfile: + type: boolean + description: Enable direct migration? + +shellService: + description: "Interface with OS, e.g., pinning and set default" + owner: desktop-integrations@mozilla.com + hasExposure: false + isEarlyStartup: true + variables: + disablePin: + type: boolean + description: Disable pin to taskbar feature + setDefaultBrowserUserChoice: + type: boolean + fallbackPref: browser.shell.setDefaultBrowserUserChoice + description: Should it set as default browser + setDefaultPDFHandler: + type: boolean + fallbackPref: browser.shell.setDefaultPDFHandler + description: Should setting it as the default browser set it as the default PDF handler. + setDefaultPDFHandlerOnlyReplaceBrowsers: + type: boolean + fallbackPref: browser.shell.setDefaultPDFHandler.onlyReplaceBrowsers + description: >- + Should setting it as the default PDF handler only replace existing PDF + handlers that are browsers, and not other PDF handlers such as Acrobat + Reader or Nitro PDF. + +upgradeDialog: + description: The dialog shown for major upgrades + owner: omc@mozilla.com + hasExposure: false + isEarlyStartup: true + variables: + enabled: + type: boolean + fallbackPref: browser.startup.upgradeDialog.enabled + description: Is the feature enabled? + +readerMode: + description: Firefox Reader Mode + owner: sdowne@getpocket.com + hasExposure: false + isEarlyStartup: true + variables: + pocketCTAVersion: + type: string + fallbackPref: reader.pocket.ctaVersion + description: >- + What version of Pocket CTA to show in Reader Mode (Empty string is no + CTA) +cfr: + description: "A Firefox Messaging System message for the cfr message channel" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + isEarlyStartup: false + schema: + uri: "resource://activity-stream/schemas/MessagingExperiment.schema.json" + path: "browser/components/newtab/content-src/asrouter/schemas/MessagingExperiment.schema.json" + variables: {} + +"moments-page": + description: "A Firefox Messaging System message for the moments-page message channel" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + isEarlyStartup: false + schema: + uri: "resource://activity-stream/schemas/MessagingExperiment.schema.json" + path: "browser/components/newtab/content-src/asrouter/schemas/MessagingExperiment.schema.json" + variables: {} + +infobar: + description: "A Firefox Messaging system message for the infobar message channel" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + isEarlyStartup: false + schema: + uri: "resource://activity-stream/schemas/MessagingExperiment.schema.json" + path: "browser/components/newtab/content-src/asrouter/schemas/MessagingExperiment.schema.json" + variables: {} + +spotlight: + description: "A Firefox Messaging System message for the spotlight message channel" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + isEarlyStartup: false + schema: + uri: "resource://activity-stream/schemas/MessagingExperiment.schema.json" + path: "browser/components/newtab/content-src/asrouter/schemas/MessagingExperiment.schema.json" + variables: {} + +# More info about the fx-message-* feature id prototype is available at: +# https://docs.google.com/document/d/1KdtaNycZL5j240nXofbibm9yKh7qVvu1-uZFLdmYM7Y/ +# +# Before each Nightly leaves the station for Beta, we're currently +# experimenting with ensuring that we have enough fx-messages-* messages to +# accomodate all the rollout possibilities for Release that we're aware of, +# plus one for a buffer just-in-case. +# +# When adding an fxms-message-* feature id, be sure to also add it to the +# MESSAGING_EXPERIMENTS_DEFAULT_FEATURES list in ASRouter. + +# currently in use by 107+ exp/rollout pair of Import Bookmarks Infrequent +# Existing Users with 5 bookmarks: +# https://experimenter.services.mozilla.com/nimbus/import-infrequent-rollout-make-yourself-at-home/summary +fxms-message-1: + description: "A Firefox Messaging System message" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + isEarlyStartup: false + schema: + uri: "resource://activity-stream/schemas/MessagingExperiment.schema.json" + path: "browser/components/newtab/content-src/asrouter/schemas/MessagingExperiment.schema.json" + variables: {} + +# next planned use: 110+ exp/rollout pair of Fox Doodle: Pin experiment winner +# (Existing Users) +# More info about the fx-message-* feature id prototype is available at: +# https://docs.google.com/document/d/1KdtaNycZL5j240nXofbibm9yKh7qVvu1-uZFLdmYM7Y/ +fxms-message-2: + description: "Firefox Messaging System message 2" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + isEarlyStartup: false + schema: + uri: "resource://activity-stream/schemas/MessagingExperiment.schema.json" + path: "browser/components/newtab/content-src/asrouter/schemas/MessagingExperiment.schema.json" + variables: {} + +# next planned use: 110+ exp/rollout pair of Fox Doodle: Set Default (Existing +# Users) +# More info about the fx-message-* feature id prototype is available at: +# https://docs.google.com/document/d/1KdtaNycZL5j240nXofbibm9yKh7qVvu1-uZFLdmYM7Y/ +fxms-message-3: + description: "Firefox Messaging System message 3" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + isEarlyStartup: false + schema: + uri: "resource://activity-stream/schemas/MessagingExperiment.schema.json" + path: "browser/components/newtab/content-src/asrouter/schemas/MessagingExperiment.schema.json" + variables: {} + +# next potential planned use: 111+ exp/rollout pair for PDF annotations callout +# (https://mozilla-hub.atlassian.net/browse/FXE-83) experiment. +# +# More info about the fx-message-* feature id prototype is available at: +# https://docs.google.com/document/d/1KdtaNycZL5j240nXofbibm9yKh7qVvu1-uZFLdmYM7Y/ +fxms-message-4: + description: "Firefox Messaging System message 4" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + isEarlyStartup: false + schema: + uri: "resource://activity-stream/schemas/MessagingExperiment.schema.json" + path: "browser/components/newtab/content-src/asrouter/schemas/MessagingExperiment.schema.json" + variables: {} + +# next potential planned use: 112+ holdback/rollout pair for default PDF handler +# (https://mozilla-hub.atlassian.net/browse/FXE-91) experiment. +# +# More info about the fx-message-* feature id prototype is available at: +# https://docs.google.com/document/d/1KdtaNycZL5j240nXofbibm9yKh7qVvu1-uZFLdmYM7Y/ +fxms-message-5: + description: "Firefox Messaging System message 5" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + isEarlyStartup: false + schema: + uri: "resource://activity-stream/schemas/MessagingExperiment.schema.json" + path: "browser/components/newtab/content-src/asrouter/schemas/MessagingExperiment.schema.json" + variables: {} + +# next potential planned use: 114+ possible holdback/rollout pair (Device Migration): +# https://mozilla-hub.atlassian.net/browse/FXE-271 +# +# More info about the fx-message-* feature id prototype is available at: +# https://docs.google.com/document/d/1KdtaNycZL5j240nXofbibm9yKh7qVvu1-uZFLdmYM7Y/ +fxms-message-6: + description: "Firefox Messaging System message 6" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + isEarlyStartup: false + schema: + uri: "resource://activity-stream/schemas/MessagingExperiment.schema.json" + path: "browser/components/newtab/content-src/asrouter/schemas/MessagingExperiment.schema.json" + variables: {} + +# next planned use: buffer, for the unexpected +# +# More info about the fx-message-* feature id prototype is available at: +# https://docs.google.com/document/d/1KdtaNycZL5j240nXofbibm9yKh7qVvu1-uZFLdmYM7Y/ +fxms-message-7: + description: "Firefox Messaging System message 7" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + isEarlyStartup: false + schema: + uri: "resource://activity-stream/schemas/MessagingExperiment.schema.json" + path: "browser/components/newtab/content-src/asrouter/schemas/MessagingExperiment.schema.json" + variables: {} + + +# next planned use: buffer, for the unexpected +# +# More info about the fx-message-* feature id prototype is available at: +# https://docs.google.com/document/d/1KdtaNycZL5j240nXofbibm9yKh7qVvu1-uZFLdmYM7Y/ +fxms-message-8: + description: "Firefox Messaging System message 8" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + isEarlyStartup: false + schema: + uri: "resource://activity-stream/schemas/MessagingExperiment.schema.json" + path: "browser/components/newtab/content-src/asrouter/schemas/MessagingExperiment.schema.json" + variables: {} + +# next planned use: buffer, for the unexpected +# +# More info about the fx-message-* feature id prototype is available at: +# https://docs.google.com/document/d/1KdtaNycZL5j240nXofbibm9yKh7qVvu1-uZFLdmYM7Y/ +fxms-message-9: + description: "Firefox Messaging System message 9" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + isEarlyStartup: false + schema: + uri: "resource://activity-stream/schemas/MessagingExperiment.schema.json" + path: "browser/components/newtab/content-src/asrouter/schemas/MessagingExperiment.schema.json" + variables: {} + +# next planned use: buffer, for the unexpected +# +# More info about the fx-message-* feature id prototype is available at: +# https://docs.google.com/document/d/1KdtaNycZL5j240nXofbibm9yKh7qVvu1-uZFLdmYM7Y/ +fxms-message-10: + description: "Firefox Messaging System message 10" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + isEarlyStartup: false + schema: + uri: "resource://activity-stream/schemas/MessagingExperiment.schema.json" + path: "browser/components/newtab/content-src/asrouter/schemas/MessagingExperiment.schema.json" + variables: {} + +# next planned use: buffer, for the unexpected +# +# More info about the fx-message-* feature id prototype is available at: +# https://docs.google.com/document/d/1KdtaNycZL5j240nXofbibm9yKh7qVvu1-uZFLdmYM7Y/ +fxms-message-11: + description: "Firefox Messaging System message 11" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + isEarlyStartup: false + schema: + uri: "resource://activity-stream/schemas/MessagingExperiment.schema.json" + path: "browser/components/newtab/content-src/asrouter/schemas/MessagingExperiment.schema.json" + variables: {} + +pbNewtab: + description: "A Firefox Messaging System message for the pbNewtab message channel" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched. + isEarlyStartup: false + schema: + uri: "resource://activity-stream/schemas/MessagingExperiment.schema.json" + path: "browser/components/newtab/content-src/asrouter/schemas/MessagingExperiment.schema.json" + variables: {} + +backgroundTaskMessage: + description: "A Firefox Messaging System message for the background task message channel" + owner: nalexander@mozilla.com + applications: + - firefox-desktop-background-task + hasExposure: true + exposureDescription: >- + Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched. + isEarlyStartup: false + schema: + uri: "resource://activity-stream/schemas/BackgroundTaskMessagingExperiment.schema.json" + path: "browser/components/newtab/content-src/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json" + variables: {} + +pictureinpicture: + description: Message for first time Picture-in-Picture users + owner: nbaumgardner@mozilla.com + hasExposure: true + exposureDescription: Exposure is sent when a user hovers over a video and Picture-in-Picture has not been used before + variables: + title: + type: string + description: The title to be used for the PiP toggle + message: + type: string + description: The message to be used in the PiP toggle + showIconOnly: + type: boolean + description: Whether to show the first time PiP toggle or show the PiP icon only + oldToggle: + type: boolean + description: Whether to show the control style (true) or variant style (false) for the first time PiP toggle + displayDuration: + type: int + description: Duration of PiP first time toggle display in days before switching to PiP icon toggle + +glean: + description: "The Glean data collection SDK within Firefox Desktop" + owner: glean-team@mozilla.com + hasExposure: false + variables: + finalInactive: + type: "boolean" + description: "Enables FOG early shutdown pings when true" + newtabPingEnabled: + type: "boolean" + fallbackPref: "browser.newtabpage.ping.enabled" + description: "Whether to submit the 'newtab' ping" + gleanMetricConfiguration: + type: json + description: >- + "A map of metric base-identifiers to booleans representing the state of the 'disabled' flag for that metric" + +majorRelease2022: + description: Major Release 2022 + owner: firefoxview@mozilla.com + hasExposure: false + isEarlyStartup: true + variables: + feltPrivacyPBMDarkTheme: + type: boolean + fallbackPref: "browser.theme.dark-private-windows" + description: "Use dark theme variant for PBM windows. This is only supported if the theme sets darkTheme data." + feltPrivacyPBMNewIndicator: + type: boolean + fallbackPref: "browser.privatebrowsing.enable-new-indicator" + description: "Enables the new private browsing indicator." + feltPrivacyPBMNewLogo: + type: boolean + fallbackPref: "browser.privatebrowsing.enable-new-logo" + description: "Enables the new about:privatebrowsing logo." + feltPrivacyShowPreferencesSection: + type: boolean + fallbackPref: "browser.privacySegmentation.preferences.show" + description: "Controls visibility of the privacy segmentation preferences section." + feltPrivacyWindowSeparation: + type: boolean + fallbackPref: "browser.privateWindowSeparation.enabled" + description: "Whether or not private browsing windows use a separate icon in the Windows taskbar" + colorwayCloset: + type: boolean + fallbackPref: "browser.theme.colorway-closet" + description: "Whether or not to show the colorway closet modal" + firefoxView: + type: boolean + fallbackPref: "browser.tabs.firefox-view" + description: "Whether or not to show the firefox view tab" + onboarding: + type: boolean + fallbackPref: "browser.majorrelease.onboarding" + description: "Whether or not to use the MR2022 onboarding settings." + +featureCallout: + description: "Prefs that control users' progress through Feature Callout tours" + owner: omc@mozilla.com + hasExposure: false + isEarlyStartup: false + variables: + pdfJsTourProgress: + description: A JSON String representing the intitial state of the pref that holds the progress of the PDF.js feature tour. + type: string + setPref: "browser.pdfjs.feature-tour" +browserLowMemoryPrefs: + description: Prefs which control the browser's behaviour under low memory. + owner: haftandilian@mozilla.com + hasExposure: false + variables: + lowMemoryResponseMask: + description: Control the response on macOS when under memory pressure. + type: int + setPref: "browser.lowMemoryResponseMask" + lowMemoryResponseOnWarn: + description: Controls which macOS memory-pressure levels trigger the browser low memory response. + type: boolean + setPref: "browser.lowMemoryResponseOnWarn" + tabsUnloadOnLowMemory: + description: Whether to unload tabs when available memory is running low. + type: boolean + setPref: "browser.tabs.unloadOnLowMemory" + +scriptLoaderPrefs: + description: Prefs that control the script loader. + owner: npierron@mozilla.com + hasExposure: false + variables: + delazificationStrategy: + description: >- + Selects which parsing/delazification strategy should be used while + parsing scripts off-main-thread. See DelazificationOption in + CompileOptions.h for values. + type: int + setPref: "dom.script_loader.delazification.strategy" + +echPrefs: + description: Prefs that control Encrypted Client Hello. + owner: djackson@mozilla.com + hasExposure: false + variables: + tlsEnabled: + description: Whether to enable ECH for connections using TLS + type: boolean + setPref: "network.dns.echconfig.enabled" + h3Enabled: + description: Whether to enable ECH for connections using H3/QUIC + type: boolean + setPref: "network.dns.http3_echconfig.enabled" + forceWaitHttpsRR: + description: Whether to force waiting for HTTPS DNS records, which ECH requires. + type: boolean + setPref: "network.dns.force_waiting_https_rr" + insecureFallback: + description: Whether to fallback to non-ECH connections if all ECH RRs fail. + type: boolean + setPref: "network.dns.echconfig.fallback_to_origin_when_all_failed" + tlsGreaseProb: + description: Probability of GREASEing a TLS connection with ECH (0-100). + type: int + setPref: "security.tls.ech.grease_probability" + h3GreaseEnabled: + description: Whether to apply GREASE settings to H3/QUIC connections. + type: boolean + setPref: "security.tls.ech.grease_http3" + disableGreaseOnFallback: + description: Whether to disable GREASE when retrying a connection. + type: boolean + setPref: "security.tls.ech.disable_grease_on_fallback" + greasePaddingSize: + description: Assumed echConfig padding length for GREASE extensions (1-255). + type: int + setPref: "security.tls.ech.grease_size" + +dohPrefs: + description: Prefs that control DNS over HTTPS. + owner: vgosu@mozilla.com + hasExposure: false + variables: + trrMode: + description: Has a value of 2 for TRR first, 3 for TRR only, 0 for off. + type: int + setPref: "network.trr.mode" + trrUri: + description: The URL of the DNS over HTTPS endpoint + type: string + setPref: "network.trr.uri" + dohMode: + description: Same as trrMode, but set by the DoHController module. + type: int + setPref: "doh-rollout.mode" + dohUri: + description: Same as trrUri, but set by the DoHController module. + type: string + setPref: "doh-rollout.uri" + enableFallbackWarningPage: + description: Whether DoH fallback warning page will be displayed when DoH doesn't work in TRR first mode. + type: boolean + setPref: "network.trr.display_fallback_warning" + showFallbackCheckbox: + description: Whether the checkbox to enable the fallback warning page is displayed in the settings UI. + type: boolean + setPref: "network.trr_ui.show_fallback_warning_option" + +dooh: + description: "DNS over Oblivious HTTP" + owner: vgosu@mozilla.com + hasExposure: false + variables: + ohttpEnabled: + description: Whether to use Oblivious HTTP for the resolution + type: boolean + setPref: "network.trr.use_ohttp" + ohttpRelayUri: + description: The URL of the Oblivious HTTP relay + type: string + setPref: "network.trr.ohttp.relay_uri" + ohttpConfigUri: + description: The URL used to fetch the configuration of the Oblivious HTTP gateway + type: string + setPref: "network.trr.ohttp.config_uri" + ohttpUri: + description: The URL of the Oblivious DNS over HTTPS target resource + type: string + setPref: "network.trr.ohttp.uri" + +networking: + description: "Firefox Networking (Necko)" + owner: vgosu@mozilla.com + hasExposure: false + variables: + ehPreloadEnabled: + description: Whether Early Hints preload is enabled + type: boolean + setPref: "network.early-hints.enabled" + ehPreconnectEnabled: + description: Whether Early Hints preconnect is enabled + type: boolean + setPref: "network.early-hints.preconnect.enabled" + +pingsender: + description: "In-product usage of the pingsender telemetry reporter." + owner: nalexander@mozilla.com + hasExposure: false + variables: + backgroundTaskEnabled: + type: "boolean" + fallbackPref: "toolkit.telemetry.shutdownPingSender.backgroundtask.enabled" + description: "Whether to use the `pingsender` background task to send shutdown telemetry" + +dapTelemetry: + description: DAP Telemetry + owner: simon@mozilla.com + hasExposure: false + isEarlyStartup: true # Data is sent on startup with a trigger in BrowserGlue.sys.mjs + variables: + enabled: + type: boolean + fallbackPref: toolkit.telemetry.dap_enabled + description: Whether to automatically send DAP measurements. + task1Enabled: + type: boolean + fallbackPref: toolkit.telemetry.dap_task1_enabled + description: Whether to send fake measurements for verification task 1. + +etpLevel2PBMPref: + description: The pref that controls the ETP level 2 list in the private browsing mode + owner: tihuang@mozilla.com + hasExposure: false + variables: + enabled: + description: Whether to enable ETP level 2 list in the private browsing mode. + type: boolean + setPref: "privacy.annotate_channels.strict_list.pbmode.enabled" + +fxaButtonVisibility: + description: Prefs to control the visibility of the Firefox Accounts toolbar button when not signed in. + owner: mconley@mozilla.com + hasExposure: false + isEarlyStartup: true + variables: + boolean: + description: True if the Firefox Accounts toolbar button should be visible when not signed in. + type: boolean + setPref: identity.fxaccounts.toolbar.defaultVisible + +legacyHeartbeat: + description: Normandy Heartbeat exposed to Nimbus + owner: barret@mozilla.com + hasExposure: false + schema: + uri: "resource://normandy/schemas/LegacyHeartbeat.schema.json" + path: "toolkit/components/normandy/schemas/LegacyHeartbeat.schema.json" + variables: + survey: + type: json + description: The Heartbeat survey parameters. + +queryStripping: + description: Query parameter stripping anti-tracking feature. + owner: pbz@mozilla.com + hasExposure: false + variables: + enabledNormalBrowsing: + type: boolean + setPref: privacy.query_stripping.enabled + description: Enables / disables URL query string stripping in normal browsing mode. + enabledPrivateBrowsing: + type: boolean + setPref: privacy.query_stripping.enabled.pbmode + description: Enables / disables URL query string stripping in private browsing mode. + allowList: + type: string + setPref: privacy.query_stripping.allow_list + description: >- + List of sites exempt from query stripping. This list will be merged with + records coming from RemoteSettings. + stripList: + type: string + setPref: privacy.query_stripping.strip_list + description: >- + List of query params to be stripped from URIs. This list will be merged + with records coming from RemoteSettings. + +fontvisibility: + description: Control Font Visibility in PBM + owner: tom@mozilla.com + hasExposure: false + variables: + enabledETP: + type: int + setPref: layout.css.font-visibility.trackingprotection + description: Set the Font Visibility level when Enhanced Tracking Protection is enabled + enabledStandard: + type: int + setPref: layout.css.font-visibility.standard + description: Set the Font Visibility level for normal browsing + enabledPBM: + type: int + setPref: layout.css.font-visibility.private + description: Set the Font Visibility level for private browsing (will override ETP) + +fingerprintingProtection: + description: Control Fingerprinting Protection + owner: tihuang@mozilla.com + hasExposure: false + variables: + enabledNormal: + type: boolean + setPref: privacy.fingerprintingProtection + description: Enables / disables fingerprinting protection in normal browsing mode. + enabledPrivate: + type: boolean + setPref: privacy.fingerprintingProtection.pbmode + description: Enables / disables fingerprinting protection in private browsing mode. + overrides: + type: string + setPref: privacy.fingerprintingProtection.overrides + description: >- + The protection overrides to add or remove fingerprinting protection + targets. Please check RFPTargets.inc for all supported targets. + +migrationWizard: + description: Prefs to control the Migration Wizard UI. + owner: mconley@mozilla.com + hasExposure: false + isEarlyStartup: true + variables: + useNewWizard: + description: True if the new migration wizard should be used. + type: boolean + setPref: browser.migrate.content-modal.enabled + showImportAll: + description: True if the "Variant 2" of the Migration Wizard browser / profile selection UI should be used. This is only meaningful in the new Migration Wizard. + type: boolean + setPref: browser.migrate.content-modal.import-all.enabled + showPreferencesEntrypoint: + description: True if an entrypoint to the migration wizard should be visible in about:preferences. + type: boolean + setPref: browser.migrate.preferences-entrypoint.enabled + aboutWelcomeBehavior: + description: >- + When migration is kicked off from about:welcome, there are + a few different behaviors that we want to test, controlled + by a preference that is instrumented for Nimbus. The pref + has the following possible states: + + "autoclose": + The user will be directed to the migration wizard in + about:preferences, but once the wizard is dismissed, + the tab will close. + + "embedded": + The migration wizard is embedded in about:welcome. + + "standalone": + The migration wizard will open in a new top-level content + window. + + "legacy": + The legacy wizard will be opened from about:welcome, even if + the new wizard is enabled by default. + + "default" / other + The user will be directed to the migration wizard in + about:preferences. The tab will not close once the + user closes the wizard. + type: string + setPref: browser.migrate.content-modal.about-welcome-behavior + +mixedContentUpgrading: + description: Prefs to control whether we upgrade mixed passive content (images, audio, video) from http to https + owner: fbraun@mozilla.com + hasExposure: false + variables: + boolean: + description: True if the mixed content upgrading pref is enabled + type: boolean + setPref: security.mixed_content.upgrade_display_content + +jsParallelParsing: + description: Pref to toggle JS parallel parsing. + owner: dpalmeiro@mozilla.com, nbp@mozilla.com + isEarlyStartup: true + hasExposure: false + variables: + enabled: + description: True to enable parallel parsing. + type: boolean + setPref: "javascript.options.parallel_parsing" + +gcParallelMarking: + description: Pref to toggle parallel marking in the GC. + owner: dpalmeiro@mozilla.com, jonco@mozilla.com + isEarlyStartup: true + hasExposure: false + variables: + enabled: + description: True to enable parallel marking. + type: boolean + setPref: "javascript.options.mem.gc_parallel_marking" + +jitThresholds: + description: Prefs that control jit tier thresholds. + owner: dpalmeiro@mozilla.com, jdemooij@mozilla.com + isEarlyStartup: true + hasExposure: false + variables: + blinterp_threshold: + description: Set the threshold to enable blinterp compilation. + type: int + setPref: "javascript.options.blinterp.threshold" + baseline_threshold: + description: Set the threshold to enable baseline compilation. + type: int + setPref: "javascript.options.baselinejit.threshold" + ion_threshold: + description: Set the threshold to enable ion compilation. + type: int + setPref: "javascript.options.ion.threshold" + ion_bailout_threshold: + description: Set the ion frequent bailout threshold. + type: int + setPref: "javascript.options.ion.frequent_bailout_threshold" + ion_offthread_compilation: + description: True to enable offthread ion compilations. + type: boolean + setPref: "javascript.options.ion.offthread_compilation" + inlining_max_length: + description: Set the max bytecode length considered for inlining. + type: int + setPref: "javascript.options.inlining_bytecode_max_length" + +jitHintsCache: + description: Pref to toggle the JIT hints cache. + owner: dpalmeiro@mozilla.com + isEarlyStartup: true + hasExposure: false + variables: + enabled: + description: True to enable the hints cache. + type: boolean + setPref: "javascript.options.jithints" + +raceCacheWithNetwork: + description: Prefs to toggle the race cache with network. + owner: dpalmeiro@mozilla.com, acreskey@mozilla.com + hasExposure: false + variables: + enabled: + description: True to enable the rcwn feature. + type: boolean + setPref: "network.http.rcwn.enabled" + +httpSpeculativeParallelLimit: + description: Prefs to control the http speculative parallel limit. + owner: dpalmeiro@mozilla.com, acreskey@mozilla.com + hasExposure: false + variables: + speculative_parallel_limit: + description: Maximum number of parallel speculative connections. + type: int + setPref: "network.http.speculative-parallel-limit" + +deviceMigration: + description: Prefs to control aspects of the new device migration experiment + owner: hjones@mozilla.com + hasExposure: false + isEarlyStartup: true + variables: + helpMenuHidden: + description: True if new help menu item should be hidden + type: boolean + fallbackPref: browser.device-migration.help-menu.hidden + +opaqueResponseBlocking: + description: Prefs to enable Opaque Response Blocking + owner: farre@mozilla.com + isEarlyStartup: true + hasExposure: true + exposureDescription: Exposure is sent when a response is blocked + variables: + enabled: + description: Whether ORB is enabled + type: boolean + setPref: "browser.opaqueResponseBlocking" + javascriptValidator: + description: Whether JavaScript validation for ORB is enabled + type: boolean + setPref: "browser.opaqueResponseBlocking.javascriptValidator" + filterFetchResponse: + description: Whether filtering of internal responses in the parent ORB is enabled + type: int + setPref: "browser.opaqueResponseBlocking.filterFetchResponse" + mediaExceptionsStrategy: + description: >- + If we partially or wholly allow audio and video MIME types in conflict with spec. + type: int + setPref: "browser.opaqueResponseBlocking.mediaExceptionsStrategy" \ No newline at end of file diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/v115.20.0/schemas/browser/components/newtab/content-src/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json b/experimenter/experimenter/features/manifests/firefox-desktop/v115.20.0/schemas/browser/components/newtab/content-src/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json new file mode 100644 index 0000000000..109a9d6cd1 --- /dev/null +++ b/experimenter/experimenter/features/manifests/firefox-desktop/v115.20.0/schemas/browser/components/newtab/content-src/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json @@ -0,0 +1,312 @@ +{ + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "resource://activity-stream/schemas/BackgroundTaskMessagingExperiment.schema.json", + "title": "Messaging Experiment", + "description": "A Firefox Messaging System message.", + "if": { + "type": "object", + "properties": { + "template": { + "const": "multi" + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "resource://activity-stream/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/MultiMessage" + }, + "else": { + "$ref": "resource://activity-stream/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/TemplatedMessage" + }, + "$defs": { + "ToastNotification": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///ToastNotification.schema.json", + "title": "ToastNotification", + "description": "A template for toast notifications displayed by the Alert service.", + "allOf": [ + { + "$ref": "resource://activity-stream/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "content": { + "type": "object", + "properties": { + "title": { + "$ref": "resource://activity-stream/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/localizableText", + "description": "Id of localized string or message override of toast notification title" + }, + "body": { + "$ref": "resource://activity-stream/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/localizableText", + "description": "Id of localized string or message override of toast notification body" + }, + "icon_url": { + "description": "The URL of the image used as an icon of the toast notification.", + "type": "string", + "format": "moz-url-format" + }, + "image_url": { + "description": "The URL of an image to be displayed as part of the notification.", + "type": "string", + "format": "moz-url-format" + }, + "launch_url": { + "description": "The URL to launch when the notification or an action button is clicked.", + "type": "string", + "format": "moz-url-format" + }, + "requireInteraction": { + "type": "boolean", + "description": "Whether the toast notification should remain active until the user clicks or dismisses it, rather than closing automatically." + }, + "tag": { + "type": "string", + "description": "An identifying tag for the toast notification." + }, + "data": { + "type": "object", + "description": "Arbitrary data associated with the toast notification." + }, + "actions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "$ref": "resource://activity-stream/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/localizableText", + "description": "The action text to be shown to the user." + }, + "action": { + "type": "string", + "description": "Opaque identifer that identifies action." + }, + "iconURL": { + "type": "string", + "format": "uri", + "description": "URL of an icon to display with the action." + }, + "windowsSystemActivationType": { + "type": "boolean", + "description": "Whether to have Windows process the given `action`." + } + }, + "required": [ + "action", + "title" + ], + "additionalProperties": true + } + } + }, + "additionalProperties": true, + "required": [ + "title", + "body" + ] + }, + "template": { + "type": "string", + "const": "toast_notification" + } + }, + "required": [ + "content", + "targeting", + "template", + "trigger" + ], + "additionalProperties": true + }, + "Message": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The message identifier" + }, + "groups": { + "description": "Array of preferences used to control `enabled` status of the group. If any is `false` the group is disabled.", + "type": "array", + "items": { + "type": "string", + "description": "Preference name" + } + }, + "template": { + "type": "string", + "description": "Which messaging template this message is using.", + "enum": [ + "toast_notification" + ] + }, + "frequency": { + "type": "object", + "description": "An object containing frequency cap information for a message.", + "properties": { + "lifetime": { + "type": "integer", + "description": "The maximum lifetime impressions for a message.", + "minimum": 1, + "maximum": 100 + }, + "custom": { + "type": "array", + "description": "An array of custom frequency cap definitions.", + "items": { + "description": "A frequency cap definition containing time and max impression information", + "type": "object", + "properties": { + "period": { + "type": "integer", + "description": "Period of time in milliseconds (e.g. 86400000 for one day)" + }, + "cap": { + "type": "integer", + "description": "The maximum impressions for the message within the defined period.", + "minimum": 1, + "maximum": 100 + } + }, + "required": [ + "period", + "cap" + ] + } + } + } + }, + "priority": { + "description": "The priority of the message. If there are two competing messages to show, the one with the highest priority will be shown", + "type": "integer" + }, + "order": { + "description": "The order in which messages should be shown. Messages will be shown in increasing order.", + "type": "integer" + }, + "targeting": { + "description": "A JEXL expression representing targeting information", + "type": "string" + }, + "trigger": { + "description": "An action to trigger potentially showing the message", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "A string identifying the trigger action" + }, + "params": { + "type": "array", + "description": "An optional array of string parameters for the trigger action", + "items": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] + } + } + }, + "required": [ + "id" + ] + }, + "provider": { + "description": "An identifier for the provider of this message, such as \"cfr\" or \"preview\".", + "type": "string" + } + }, + "additionalProperties": true, + "dependentRequired": { + "content": [ + "id", + "template" + ], + "template": [ + "id", + "content" + ] + } + }, + "localizedText": { + "type": "object", + "properties": { + "string_id": { + "description": "Id of localized string to be rendered.", + "type": "string" + } + }, + "required": [ + "string_id" + ] + }, + "localizableText": { + "description": "Either a raw string or an object containing the string_id of the localized text", + "oneOf": [ + { + "type": "string", + "description": "The string to be rendered." + }, + { + "$ref": "resource://activity-stream/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/localizedText" + } + ] + }, + "TemplatedMessage": { + "description": "An FxMS message of one of a variety of types.", + "type": "object", + "allOf": [ + { + "$ref": "resource://activity-stream/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/Message" + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "toast_notification" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "resource://activity-stream/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/ToastNotification" + } + } + ] + }, + "MultiMessage": { + "description": "An object containing an array of messages.", + "type": "object", + "properties": { + "template": { + "type": "string", + "const": "multi" + }, + "messages": { + "type": "array", + "description": "An array of messages.", + "items": { + "$ref": "resource://activity-stream/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/TemplatedMessage" + } + } + }, + "required": [ + "template", + "messages" + ] + } + } +} diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/v115.20.0/schemas/browser/components/newtab/content-src/asrouter/schemas/MessagingExperiment.schema.json b/experimenter/experimenter/features/manifests/firefox-desktop/v115.20.0/schemas/browser/components/newtab/content-src/asrouter/schemas/MessagingExperiment.schema.json new file mode 100644 index 0000000000..abd36cf6cf --- /dev/null +++ b/experimenter/experimenter/features/manifests/firefox-desktop/v115.20.0/schemas/browser/components/newtab/content-src/asrouter/schemas/MessagingExperiment.schema.json @@ -0,0 +1,1640 @@ +{ + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "resource://activity-stream/schemas/MessagingExperiment.schema.json", + "title": "Messaging Experiment", + "description": "A Firefox Messaging System message.", + "if": { + "type": "object", + "properties": { + "template": { + "const": "multi" + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "resource://activity-stream/schemas/MessagingExperiment.schema.json#/$defs/MultiMessage" + }, + "else": { + "$ref": "resource://activity-stream/schemas/MessagingExperiment.schema.json#/$defs/TemplatedMessage" + }, + "$defs": { + "CFRUrlbarChiclet": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///CFRUrlbarChiclet.schema.json", + "title": "CFRUrlbarChiclet", + "description": "A template with a chiclet button with text.", + "allOf": [ + { + "$ref": "resource://activity-stream/schemas/MessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "content": { + "type": "object", + "properties": { + "category": { + "type": "string", + "description": "Attribute used for different groups of messages from the same provider" + }, + "layout": { + "type": "string", + "description": "Describes how content should be displayed.", + "enum": [ + "chiclet_open_url" + ] + }, + "bucket_id": { + "type": "string", + "description": "A bucket identifier for the addon. This is used in order to anonymize telemetry for history-sensitive targeting." + }, + "notification_text": { + "$ref": "resource://activity-stream/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "The text in the small blue chicklet that appears in the URL bar. This can be a reference to a localized string in Firefox or just a plain string." + }, + "active_color": { + "type": "string", + "description": "Background color of the button" + }, + "action": { + "type": "object", + "properties": { + "url": { + "description": "The page to open when the button is clicked.", + "type": "string", + "format": "moz-url-format" + }, + "where": { + "description": "Should it open in a new tab or the current tab", + "type": "string", + "enum": [ + "current", + "tabshifted" + ] + } + }, + "additionalProperties": true, + "required": [ + "url", + "where" + ] + } + }, + "additionalProperties": true, + "required": [ + "layout", + "category", + "bucket_id", + "notification_text", + "action" + ] + }, + "template": { + "type": "string", + "const": "cfr_urlbar_chiclet" + } + }, + "required": [ + "targeting", + "trigger" + ] + }, + "ExtensionDoorhanger": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///ExtensionDoorhanger.schema.json", + "title": "ExtensionDoorhanger", + "description": "A template with a heading, addon icon, title and description. No markup allowed.", + "allOf": [ + { + "$ref": "resource://activity-stream/schemas/MessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "content": { + "type": "object", + "properties": { + "category": { + "type": "string", + "description": "Attribute used for different groups of messages from the same provider" + }, + "layout": { + "type": "string", + "description": "Attribute used for different groups of messages from the same provider", + "enum": [ + "short_message", + "icon_and_message", + "addon_recommendation" + ] + }, + "anchor_id": { + "type": "string", + "description": "A DOM element ID that the pop-over will be anchored." + }, + "alt_anchor_id": { + "type": "string", + "description": "An alternate DOM element ID that the pop-over will be anchored." + }, + "bucket_id": { + "type": "string", + "description": "A bucket identifier for the addon. This is used in order to anonymize telemetry for history-sensitive targeting." + }, + "skip_address_bar_notifier": { + "type": "boolean", + "description": "Skip the 'Recommend' notifier and show directly." + }, + "persistent_doorhanger": { + "type": "boolean", + "description": "Prevent the doorhanger from being dismissed if user interacts with the page or switches between applications." + }, + "show_in_private_browsing": { + "type": "boolean", + "description": "Whether to allow the message to be shown in private browsing mode. Defaults to false." + }, + "notification_text": { + "$ref": "resource://activity-stream/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "The text in the small blue chicklet that appears in the URL bar. This can be a reference to a localized string in Firefox or just a plain string." + }, + "info_icon": { + "type": "object", + "description": "The small icon displayed in the top right corner of the pop-over. Should be 19x19px, svg or png. Defaults to a small question mark.", + "properties": { + "label": { + "oneOf": [ + { + "type": "object", + "properties": { + "attributes": { + "type": "object", + "properties": { + "tooltiptext": { + "$ref": "resource://activity-stream/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "Text for button tooltip used to provide information about the doorhanger." + } + }, + "required": [ + "tooltiptext" + ] + } + }, + "required": [ + "attributes" + ] + }, + { + "$ref": "resource://activity-stream/schemas/MessagingExperiment.schema.json#/$defs/localizedText" + } + ] + }, + "sumo_path": { + "type": "string", + "description": "Last part of the path in the URL to the support page with the information about the doorhanger.", + "examples": [ + "extensionpromotions", + "extensionrecommendations" + ] + } + } + }, + "learn_more": { + "type": "string", + "description": "Last part of the path in the SUMO URL to the support page with the information about the doorhanger.", + "examples": [ + "extensionpromotions", + "extensionrecommendations" + ] + }, + "heading_text": { + "$ref": "resource://activity-stream/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "The larger heading text displayed in the pop-over. This can be a reference to a localized string in Firefox or just a plain string." + }, + "icon": { + "$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/linkUrl", + "description": "The icon displayed in the pop-over. Should be 32x32px or 64x64px and png/svg." + }, + "icon_dark_theme": { + "type": "string", + "description": "Pop-over icon, dark theme variant. Should be 32x32px or 64x64px and png/svg." + }, + "icon_class": { + "type": "string", + "description": "CSS class of the pop-over icon." + }, + "addon": { + "description": "Addon information including AMO URL.", + "type": "object", + "properties": { + "id": { + "$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/plainText", + "description": "Unique addon ID" + }, + "title": { + "$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/plainText", + "description": "Addon name" + }, + "author": { + "$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/plainText", + "description": "Addon author" + }, + "icon": { + "$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/linkUrl", + "description": "The icon displayed in the pop-over. Should be 64x64px and png/svg." + }, + "rating": { + "type": "string", + "description": "Star rating" + }, + "users": { + "type": "string", + "description": "Installed users" + }, + "amo_url": { + "$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/linkUrl", + "description": "Link that offers more information related to the addon." + } + }, + "required": [ + "title", + "author", + "icon", + "amo_url" + ] + }, + "text": { + "$ref": "resource://activity-stream/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "The body text displayed in the pop-over. This can be a reference to a localized string in Firefox or just a plain string." + }, + "descriptionDetails": { + "description": "Additional information and steps on how to use", + "type": "object", + "properties": { + "steps": { + "description": "Array of string_ids", + "type": "array", + "items": { + "$ref": "resource://activity-stream/schemas/MessagingExperiment.schema.json#/$defs/localizedText", + "description": "Id of string to localized addon description" + } + } + }, + "required": [ + "steps" + ] + }, + "buttons": { + "description": "The label and functionality for the buttons in the pop-over.", + "type": "object", + "properties": { + "primary": { + "type": "object", + "properties": { + "label": { + "type": "object", + "oneOf": [ + { + "properties": { + "value": { + "$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/plainText", + "description": "Button label override used when a localized version is not available." + }, + "attributes": { + "type": "object", + "properties": { + "accesskey": { + "type": "string", + "description": "A single character to be used as a shortcut key for the secondary button. This should be one of the characters that appears in the button label." + } + }, + "required": [ + "accesskey" + ], + "description": "Button attributes." + } + }, + "required": [ + "value", + "attributes" + ] + }, + { + "$ref": "resource://activity-stream/schemas/MessagingExperiment.schema.json#/$defs/localizedText" + } + ], + "description": "Id of localized string or message override." + }, + "action": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Action dispatched by the button." + }, + "data": { + "properties": { + "url": { + "type": "string", + "$comment": "This is dynamically generated from the addon.id. See CFRPageActions.jsm", + "description": "URL used in combination with the primary action dispatched." + } + } + } + } + } + } + }, + "secondary": { + "type": "array", + "items": { + "type": "object", + "properties": { + "label": { + "type": "object", + "oneOf": [ + { + "properties": { + "value": { + "allOf": [ + { + "$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/plainText" + }, + { + "description": "Button label override used when a localized version is not available." + } + ] + }, + "attributes": { + "type": "object", + "properties": { + "accesskey": { + "type": "string", + "description": "A single character to be used as a shortcut key for the secondary button. This should be one of the characters that appears in the button label." + } + }, + "required": [ + "accesskey" + ], + "description": "Button attributes." + } + }, + "required": [ + "value", + "attributes" + ] + }, + { + "properties": { + "string_id": { + "allOf": [ + { + "$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/plainText" + }, + { + "description": "Id of localized string for button" + } + ] + } + }, + "required": [ + "string_id" + ] + } + ], + "description": "Id of localized string or message override." + }, + "action": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Action dispatched by the button." + }, + "data": { + "properties": { + "url": { + "allOf": [ + { + "$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/linkUrl" + }, + { + "description": "URL used in combination with the primary action dispatched." + } + ] + } + } + } + } + } + } + } + } + } + } + }, + "additionalProperties": true, + "required": [ + "layout", + "bucket_id", + "heading_text", + "text", + "buttons" + ], + "if": { + "properties": { + "skip_address_bar_notifier": { + "anyOf": [ + { + "const": "false" + }, + { + "const": null + } + ] + } + } + }, + "then": { + "required": [ + "category", + "notification_text" + ] + } + }, + "template": { + "type": "string", + "enum": [ + "cfr_doorhanger", + "milestone_message" + ] + } + }, + "additionalProperties": true, + "required": [ + "targeting", + "trigger" + ], + "$defs": { + "plainText": { + "description": "Plain text (no HTML allowed)", + "type": "string" + }, + "linkUrl": { + "description": "Target for links or buttons", + "type": "string", + "format": "uri" + } + } + }, + "InfoBar": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///InfoBar.schema.json", + "title": "InfoBar", + "description": "A template with an image, test and buttons.", + "allOf": [ + { + "$ref": "resource://activity-stream/schemas/MessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "content": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Should the message be global (persisted across tabs) or local (disappear when switching to a different tab).", + "enum": [ + "global", + "tab" + ] + }, + "text": { + "$ref": "resource://activity-stream/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "The text show in the notification box." + }, + "priority": { + "description": "Infobar priority level https://searchfox.org/mozilla-central/rev/3aef835f6cb12e607154d56d68726767172571e4/toolkit/content/widgets/notificationbox.js#387", + "type": "number", + "minumum": 0, + "exclusiveMaximum": 10 + }, + "buttons": { + "type": "array", + "items": { + "type": "object", + "properties": { + "label": { + "$ref": "resource://activity-stream/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "The text label of the button." + }, + "primary": { + "type": "boolean", + "description": "Is this the primary button?" + }, + "accessKey": { + "type": "string", + "description": "Keyboard shortcut letter." + }, + "action": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Action dispatched by the button." + }, + "data": { + "type": "object" + } + }, + "required": [ + "type" + ], + "additionalProperties": true + }, + "supportPage": { + "type": "string", + "description": "A page title on SUMO to link to" + } + }, + "required": [ + "label", + "action" + ], + "additionalProperties": true + } + } + }, + "additionalProperties": true, + "required": [ + "text", + "buttons" + ] + }, + "template": { + "type": "string", + "const": "infobar" + } + }, + "additionalProperties": true, + "required": [ + "targeting", + "trigger" + ], + "$defs": { + "plainText": { + "description": "Plain text (no HTML allowed)", + "type": "string" + }, + "linkUrl": { + "description": "Target for links or buttons", + "type": "string", + "format": "uri" + } + } + }, + "NewtabPromoMessage": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///NewtabPromoMessage.schema.json", + "title": "PBNewtabPromoMessage", + "description": "Message shown on the private browsing newtab page.", + "allOf": [ + { + "$ref": "resource://activity-stream/schemas/MessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "content": { + "type": "object", + "properties": { + "hideDefault": { + "type": "boolean", + "description": "Should we hide the default promo after the experiment promo is dismissed." + }, + "infoEnabled": { + "type": "boolean", + "description": "Should we show the info section." + }, + "infoIcon": { + "type": "string", + "description": "Icon shown in the left side of the info section. Default is the private browsing icon." + }, + "infoTitle": { + "type": "string", + "description": "Is the title in the info section enabled." + }, + "infoTitleEnabled": { + "type": "boolean", + "description": "Is the title in the info section enabled." + }, + "infoBody": { + "type": "string", + "description": "Text content in the info section." + }, + "infoLinkText": { + "type": "string", + "description": "Text for the link in the info section." + }, + "infoLinkUrl": { + "type": "string", + "description": "URL for the info section link.", + "format": "moz-url-format" + }, + "promoEnabled": { + "type": "boolean", + "description": "Should we show the promo section." + }, + "promoType": { + "type": "string", + "description": "Promo type used to determine if promo should show to a given user", + "enum": [ + "FOCUS", + "VPN", + "PIN", + "COOKIE_BANNERS", + "OTHER" + ] + }, + "promoSectionStyle": { + "type": "string", + "description": "Sets the position of the promo section. Possible values are: top, below-search, bottom. Default bottom.", + "enum": [ + "top", + "below-search", + "bottom" + ] + }, + "promoTitle": { + "type": "string", + "description": "The text content of the promo section." + }, + "promoTitleEnabled": { + "type": "boolean", + "description": "Should we show text content in the promo section." + }, + "promoLinkText": { + "type": "string", + "description": "The text of the link in the promo box." + }, + "promoHeader": { + "type": "string", + "description": "The title of the promo section." + }, + "promoButton": { + "type": "object", + "properties": { + "action": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Action dispatched by the button." + }, + "data": { + "type": "object" + } + }, + "required": [ + "type" + ], + "additionalProperties": true + } + }, + "required": [ + "action" + ] + }, + "promoLinkType": { + "type": "string", + "description": "Type of promo link type. Possible values: link, button. Default is link.", + "enum": [ + "link", + "button" + ] + }, + "promoImageLarge": { + "type": "string", + "description": "URL for image used on the left side of the promo box, larger, showcases some feature. Default off.", + "format": "uri" + }, + "promoImageSmall": { + "type": "string", + "description": "URL for image used on the right side of the promo box, smaller, usually a logo. Default off.", + "format": "uri" + } + }, + "additionalProperties": true, + "allOf": [ + { + "if": { + "properties": { + "promoEnabled": { + "const": true + } + }, + "required": [ + "promoEnabled" + ] + }, + "then": { + "required": [ + "promoButton" + ] + } + }, + { + "if": { + "properties": { + "infoEnabled": { + "const": true + } + }, + "required": [ + "infoEnabled" + ] + }, + "then": { + "required": [ + "infoLinkText" + ], + "if": { + "properties": { + "infoTitleEnabled": { + "const": true + } + }, + "required": [ + "infoTitleEnabled" + ] + }, + "then": { + "required": [ + "infoTitle" + ] + } + } + } + ] + }, + "template": { + "type": "string", + "const": "pb_newtab" + } + }, + "additionalProperties": true, + "required": [ + "targeting" + ] + }, + "ProtectionsPanelMessage": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///ProtectionsPanelMessage.schema.json", + "title": "ProtectionsPanelMessage", + "description": "A message shown in the protections panel.", + "allOf": [ + { + "$ref": "resource://activity-stream/schemas/MessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "content": { + "type": "object", + "properties": { + "title": { + "description": "The message title.", + "$ref": "resource://activity-stream/schemas/MessagingExperiment.schema.json#/$defs/localizableText" + }, + "body": { + "description": "The body of the message.", + "$ref": "resource://activity-stream/schemas/MessagingExperiment.schema.json#/$defs/localizableText" + }, + "link_text": { + "description": "The text of the call to action link.", + "$ref": "resource://activity-stream/schemas/MessagingExperiment.schema.json#/$defs/localizableText" + }, + "cta_type": { + "description": "The type of URL open action.", + "type": "string", + "enum": [ + "OPEN_URL", + "OPEN_PROTECTION_REPORT", + "OPEN_ABOUT_PAGE" + ] + }, + "cta_url": { + "description": "The URL to open when the call to action is clicked", + "type": "string", + "format": "moz-url-format" + }, + "cta_where": { + "description": "How to open the cta.", + "type": "string", + "enum": [ + "current", + "tabshifted", + "tab", + "save", + "window" + ] + } + }, + "dependantSchemas": { + "link_text": [ + "cta_type", + "cta_url" + ], + "cta_type": [ + "link_text" + ], + "cta_url": [ + "link_text" + ], + "cta_where": [ + "link_text" + ] + }, + "additionalProperties": false, + "required": [ + "title", + "body" + ] + }, + "template": { + "type": "string", + "const": "protections_panel" + }, + "trigger": { + "description": "An action to trigger potentially showing the message. The action ID `protectionsPanelOpen` is required.", + "const": { + "id": "protectionsPanelOpen" + } + } + }, + "required": [ + "content", + "template", + "trigger" + ], + "additionalProperties": true + }, + "Spotlight": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///Spotlight.schema.json", + "title": "Spotlight", + "description": "A template with an image, title, content and two buttons.", + "allOf": [ + { + "$ref": "resource://activity-stream/schemas/MessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "content": { + "type": "object", + "properties": { + "template": { + "type": "string", + "description": "Specify the layout template for the Spotlight", + "const": "multistage" + }, + "backdrop": { + "type": "string", + "description": "Background css behind modal content" + }, + "logo": { + "type": "object", + "properties": { + "imageURL": { + "type": "string", + "description": "URL for image to use with the content" + }, + "imageId": { + "type": "string", + "description": "The ID for a remotely hosted image" + }, + "size": { + "type": "string", + "description": "The logo size." + } + }, + "additionalProperties": true + }, + "screens": { + "type": "array", + "description": "Collection of individual screen content" + }, + "transitions": { + "type": "boolean", + "description": "Show transitions within and between screens" + }, + "disableHistoryUpdates": { + "type": "boolean", + "description": "Don't alter the browser session's history stack - used with messaging surfaces like Feature Callouts" + }, + "startScreen": { + "type": "integer", + "description": "Index of first screen to show from message, defaulting to 0" + } + }, + "additionalProperties": true + }, + "template": { + "type": "string", + "description": "Specify whether the surface is shown as a Spotlight modal or an in-surface Feature Callout dialog", + "enum": [ + "spotlight", + "feature_callout" + ] + } + }, + "additionalProperties": true, + "required": [ + "targeting" + ] + }, + "ToastNotification": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///ToastNotification.schema.json", + "title": "ToastNotification", + "description": "A template for toast notifications displayed by the Alert service.", + "allOf": [ + { + "$ref": "resource://activity-stream/schemas/MessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "content": { + "type": "object", + "properties": { + "title": { + "$ref": "resource://activity-stream/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "Id of localized string or message override of toast notification title" + }, + "body": { + "$ref": "resource://activity-stream/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "Id of localized string or message override of toast notification body" + }, + "icon_url": { + "description": "The URL of the image used as an icon of the toast notification.", + "type": "string", + "format": "moz-url-format" + }, + "image_url": { + "description": "The URL of an image to be displayed as part of the notification.", + "type": "string", + "format": "moz-url-format" + }, + "launch_url": { + "description": "The URL to launch when the notification or an action button is clicked.", + "type": "string", + "format": "moz-url-format" + }, + "requireInteraction": { + "type": "boolean", + "description": "Whether the toast notification should remain active until the user clicks or dismisses it, rather than closing automatically." + }, + "tag": { + "type": "string", + "description": "An identifying tag for the toast notification." + }, + "data": { + "type": "object", + "description": "Arbitrary data associated with the toast notification." + }, + "actions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "$ref": "resource://activity-stream/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "The action text to be shown to the user." + }, + "action": { + "type": "string", + "description": "Opaque identifer that identifies action." + }, + "iconURL": { + "type": "string", + "format": "uri", + "description": "URL of an icon to display with the action." + }, + "windowsSystemActivationType": { + "type": "boolean", + "description": "Whether to have Windows process the given `action`." + } + }, + "required": [ + "action", + "title" + ], + "additionalProperties": true + } + } + }, + "additionalProperties": true, + "required": [ + "title", + "body" + ] + }, + "template": { + "type": "string", + "const": "toast_notification" + } + }, + "required": [ + "content", + "targeting", + "template", + "trigger" + ], + "additionalProperties": true + }, + "ToolbarBadgeMessage": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///ToolbarBadgeMessage.schema.json", + "title": "ToolbarBadgeMessage", + "description": "A template that specifies to which element in the browser toolbar to add a notification.", + "allOf": [ + { + "$ref": "resource://activity-stream/schemas/MessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "content": { + "type": "object", + "properties": { + "target": { + "type": "string" + }, + "action": { + "type": "object", + "properties": { + "id": { + "type": "string" + } + }, + "additionalProperties": true, + "required": [ + "id" + ], + "description": "Optional action to take in addition to showing the notification" + }, + "delay": { + "type": "number", + "description": "Optional delay in ms after which to show the notification" + }, + "badgeDescription": { + "$ref": "resource://activity-stream/schemas/MessagingExperiment.schema.json#/$defs/localizedText", + "description": "This is used in combination with the badged button to offer a text based alternative to the visual badging. Example 'New Feature: What's New'" + } + }, + "additionalProperties": true, + "required": [ + "target" + ] + }, + "template": { + "type": "string", + "const": "toolbar_badge" + } + }, + "additionalProperties": true, + "required": [ + "targeting" + ] + }, + "UpdateAction": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///UpdateAction.schema.json", + "title": "UpdateActionMessage", + "description": "A template for messages that execute predetermined actions.", + "allOf": [ + { + "$ref": "resource://activity-stream/schemas/MessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "content": { + "type": "object", + "properties": { + "action": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "data": { + "type": "object", + "description": "Additional data provided as argument when executing the action", + "properties": { + "url": { + "type": "string", + "description": "URL data to be used as argument to the action" + }, + "expireDelta": { + "type": "number", + "description": "Expiration timestamp to be used as argument to the action" + } + } + } + }, + "additionalProperties": true, + "description": "Optional action to take in addition to showing the notification", + "required": [ + "id", + "data" + ] + } + }, + "additionalProperties": true, + "required": [ + "action" + ] + }, + "template": { + "type": "string", + "const": "update_action" + } + }, + "required": [ + "targeting" + ] + }, + "WhatsNewMessage": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///WhatsNewMessage.schema.json", + "title": "WhatsNewMessage", + "description": "A template for the messages that appear in the What's New panel.", + "allOf": [ + { + "$ref": "resource://activity-stream/schemas/MessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "content": { + "type": "object", + "properties": { + "layout": { + "description": "Different message layouts", + "enum": [ + "tracking-protections" + ] + }, + "bucket_id": { + "type": "string", + "description": "A bucket identifier for the addon. This is used in order to anonymize telemetry for history-sensitive targeting." + }, + "published_date": { + "type": "integer", + "description": "The date/time (number of milliseconds elapsed since January 1, 1970 00:00:00 UTC) the message was published." + }, + "title": { + "$ref": "resource://activity-stream/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "Id of localized string or message override of What's New message title" + }, + "subtitle": { + "$ref": "resource://activity-stream/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "Id of localized string or message override of What's New message subtitle" + }, + "body": { + "$ref": "resource://activity-stream/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "Id of localized string or message override of What's New message body" + }, + "link_text": { + "$ref": "resource://activity-stream/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "(optional) Id of localized string or message override of What's New message link text" + }, + "cta_url": { + "description": "Target URL for the What's New message.", + "type": "string", + "format": "moz-url-format" + }, + "cta_type": { + "description": "Type of url open action", + "enum": [ + "OPEN_URL", + "OPEN_ABOUT_PAGE", + "OPEN_PROTECTION_REPORT" + ] + }, + "cta_where": { + "description": "How to open the cta: new window, tab, focused, unfocused.", + "enum": [ + "current", + "tabshifted", + "tab", + "save", + "window" + ] + }, + "icon_url": { + "description": "(optional) URL for the What's New message icon.", + "type": "string", + "format": "uri" + }, + "icon_alt": { + "$ref": "resource://activity-stream/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "Alt text for image." + } + }, + "additionalProperties": true, + "required": [ + "published_date", + "title", + "body", + "cta_url", + "bucket_id" + ] + }, + "template": { + "type": "string", + "const": "whatsnew_panel_message" + } + }, + "required": [ + "order" + ], + "additionalProperties": true + }, + "Message": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The message identifier" + }, + "groups": { + "description": "Array of preferences used to control `enabled` status of the group. If any is `false` the group is disabled.", + "type": "array", + "items": { + "type": "string", + "description": "Preference name" + } + }, + "template": { + "type": "string", + "description": "Which messaging template this message is using.", + "enum": [ + "cfr_urlbar_chiclet", + "cfr_doorhanger", + "milestone_message", + "infobar", + "pb_newtab", + "protections_panel", + "spotlight", + "feature_callout", + "toast_notification", + "toolbar_badge", + "update_action", + "whatsnew_panel_message" + ] + }, + "frequency": { + "type": "object", + "description": "An object containing frequency cap information for a message.", + "properties": { + "lifetime": { + "type": "integer", + "description": "The maximum lifetime impressions for a message.", + "minimum": 1, + "maximum": 100 + }, + "custom": { + "type": "array", + "description": "An array of custom frequency cap definitions.", + "items": { + "description": "A frequency cap definition containing time and max impression information", + "type": "object", + "properties": { + "period": { + "type": "integer", + "description": "Period of time in milliseconds (e.g. 86400000 for one day)" + }, + "cap": { + "type": "integer", + "description": "The maximum impressions for the message within the defined period.", + "minimum": 1, + "maximum": 100 + } + }, + "required": [ + "period", + "cap" + ] + } + } + } + }, + "priority": { + "description": "The priority of the message. If there are two competing messages to show, the one with the highest priority will be shown", + "type": "integer" + }, + "order": { + "description": "The order in which messages should be shown. Messages will be shown in increasing order.", + "type": "integer" + }, + "targeting": { + "description": "A JEXL expression representing targeting information", + "type": "string" + }, + "trigger": { + "description": "An action to trigger potentially showing the message", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "A string identifying the trigger action" + }, + "params": { + "type": "array", + "description": "An optional array of string parameters for the trigger action", + "items": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] + } + } + }, + "required": [ + "id" + ] + }, + "provider": { + "description": "An identifier for the provider of this message, such as \"cfr\" or \"preview\".", + "type": "string" + } + }, + "additionalProperties": true, + "dependentRequired": { + "content": [ + "id", + "template" + ], + "template": [ + "id", + "content" + ] + } + }, + "localizedText": { + "type": "object", + "properties": { + "string_id": { + "description": "Id of localized string to be rendered.", + "type": "string" + } + }, + "required": [ + "string_id" + ] + }, + "localizableText": { + "description": "Either a raw string or an object containing the string_id of the localized text", + "oneOf": [ + { + "type": "string", + "description": "The string to be rendered." + }, + { + "$ref": "resource://activity-stream/schemas/MessagingExperiment.schema.json#/$defs/localizedText" + } + ] + }, + "TemplatedMessage": { + "description": "An FxMS message of one of a variety of types.", + "type": "object", + "allOf": [ + { + "$ref": "resource://activity-stream/schemas/MessagingExperiment.schema.json#/$defs/Message" + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "cfr_urlbar_chiclet" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "resource://activity-stream/schemas/MessagingExperiment.schema.json#/$defs/CFRUrlbarChiclet" + } + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "cfr_doorhanger", + "milestone_message" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "resource://activity-stream/schemas/MessagingExperiment.schema.json#/$defs/ExtensionDoorhanger" + } + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "infobar" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "resource://activity-stream/schemas/MessagingExperiment.schema.json#/$defs/InfoBar" + } + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "pb_newtab" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "resource://activity-stream/schemas/MessagingExperiment.schema.json#/$defs/NewtabPromoMessage" + } + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "protections_panel" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "resource://activity-stream/schemas/MessagingExperiment.schema.json#/$defs/ProtectionsPanelMessage" + } + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "spotlight", + "feature_callout" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "resource://activity-stream/schemas/MessagingExperiment.schema.json#/$defs/Spotlight" + } + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "toast_notification" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "resource://activity-stream/schemas/MessagingExperiment.schema.json#/$defs/ToastNotification" + } + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "toolbar_badge" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "resource://activity-stream/schemas/MessagingExperiment.schema.json#/$defs/ToolbarBadgeMessage" + } + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "update_action" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "resource://activity-stream/schemas/MessagingExperiment.schema.json#/$defs/UpdateAction" + } + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "whatsnew_panel_message" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "resource://activity-stream/schemas/MessagingExperiment.schema.json#/$defs/WhatsNewMessage" + } + } + ] + }, + "MultiMessage": { + "description": "An object containing an array of messages.", + "type": "object", + "properties": { + "template": { + "type": "string", + "const": "multi" + }, + "messages": { + "type": "array", + "description": "An array of messages.", + "items": { + "$ref": "resource://activity-stream/schemas/MessagingExperiment.schema.json#/$defs/TemplatedMessage" + } + } + }, + "required": [ + "template", + "messages" + ] + } + } +} diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/v115.20.0/schemas/toolkit/components/normandy/schemas/LegacyHeartbeat.schema.json b/experimenter/experimenter/features/manifests/firefox-desktop/v115.20.0/schemas/toolkit/components/normandy/schemas/LegacyHeartbeat.schema.json new file mode 100644 index 0000000000..6915fc9b71 --- /dev/null +++ b/experimenter/experimenter/features/manifests/firefox-desktop/v115.20.0/schemas/toolkit/components/normandy/schemas/LegacyHeartbeat.schema.json @@ -0,0 +1,73 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Legacy (Normandy) Heartbeat, via Nimbus", + "description": "The schema for the Legacy Heartbeat Nimbus feature.", + "type": "object", + "properties": { + "survey": { + "$comment": "Hearbeat arguments are nested under survey to prevent simultaneous rollouts and experiments from overriding eachothers optional variables", + "type": "object", + "properties": { + "repeatOption": { + "type": "string", + "enum": ["once", "xdays", "nag"], + "description": "Determines how often a prompt is shown executes.", + "default": "once" + }, + "repeatEvery": { + "description": "For repeatOption=xdays, how often (in days) the prompt is displayed.", + "default": null, + "type": ["number", "null"] + }, + "includeTelemetryUUID": { + "type": "boolean", + "description": "Include unique user ID in post-answer-url and Telemetry", + "default": false + }, + "surveyId": { + "description": "Slug uniquely identifying this survey in telemetry", + "type": "string" + }, + "message": { + "description": "Message to show to the user", + "type": "string" + }, + "engagementButtonLabel": { + "description": "Text for the engagement button. If specified, this button will be shown instead of rating stars.", + "default": null, + "type": ["string", "null"] + }, + "thanksMessage": { + "description": "Thanks message to show to the user after they've rated Firefox", + "type": "string" + }, + "postAnswerUrl": { + "description": "URL to redirect the user to after rating Firefox or clicking the engagement button", + "default": null, + "type": ["string", "null"] + }, + "learnMoreMessage": { + "description": "Message to show to the user to learn more", + "default": null, + "type": ["string", "null"] + }, + "learnMoreUrl": { + "description": "URL to show to the user when they click Learn More", + "default": null, + "type": ["string", "null"] + } + }, + "required": [ + "surveyId", + "message", + "thanksMessage", + "postAnswerUrl", + "learnMoreMessage", + "learnMoreUrl" + ], + "additionalProperties": false + } + }, + "required": ["survey"], + "additionalProperties": false +} diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/v128.7.0/experimenter.yaml b/experimenter/experimenter/features/manifests/firefox-desktop/v128.7.0/experimenter.yaml new file mode 100644 index 0000000000..2b9035082b --- /dev/null +++ b/experimenter/experimenter/features/manifests/firefox-desktop/v128.7.0/experimenter.yaml @@ -0,0 +1,3223 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +# yaml-language-server: $schema=schemas/ExperimentFeatureManifest.schema.json + +# Features must be added here to be accessible through the NimbusFeature API. + +"no-feature-firefox-desktop": + description: A dummy feature for experiments that target no feature. + owner: barret@mozilla.com + applications: + - firefox-desktop + - firefox-desktop-background-task + hasExposure: false + variables: {} + +testFeature: + description: Test only feature + owner: barret@mozilla.com + applications: + - firefox-desktop + - firefox-desktop-background-task + hasExposure: false + isEarlyStartup: true + variables: + enabled: + type: boolean + description: Whether or not this feature is enabled + testInt: + type: int + fallbackPref: nimbus.testing.testInt + description: Int pref used by platform API tests + testSetString: + type: string + setPref: + branch: user + pref: nimbus.testing.testSetString + description: A string pref set by Nimbus tests + +nimbus-qa-1: + description: A feature for testing pref-setting on the default branch. + owner: barret@mozilla.com + hasExposure: false + variables: + value: + type: string + setPref: + branch: default + pref: nimbus.qa.pref-1 + description: The value to set for the pref. + +nimbus-qa-2: + description: A feature for testing pref-setting on the user branch. + owner: barret@mozilla.com + hasExposure: false + variables: + value: + type: string + setPref: + branch: user + pref: nimbus.qa.pref-2 + description: The value to set for the pref. + +# Note: this feature is not for general use. If you want to run an experiment +# that sets prefs, you *must* register your feature in this manifest and specify +# the prefs you will control. +prefFlips: + description: Flip arbitrary prefs. Controlled by release management. + owner: barret@mozilla.com + hasExposure: false + variables: + prefs: + type: json + description: "The prefs to set." + schema: + uri: resource://nimbus/schemas/PrefFlipsFeature.schema.json + path: toolkit/components/nimbus/schemas/PrefFlipsFeature.schema.json + + +# `search` is for search engine experimentation features which do not require +# isEarlyStartup to be set. +search: + description: Search engine experimentation support and testing features. + owner: search-and-suggest-program@mozilla.com + hasExposure: false + variables: + extraParams: + type: json + description: >- + This allows extra parameters to be set for search engines requests including, + where calls to the suggestions API, the search engine configuration defines + those parameters. + + The use of this field should be coordinated with the Search team. + + The field value is an array of objects with key/value fields. For example: + + [ + {"key": "google_channel_row", "value": "foo"} + ] + + This is matched to a section in the search configuration: + + "extraParams": [ + { + "name": "channel", + "pref": "google_channel_row", + "condition": "pref" + } + ], + + In this case, the resulting URL for the appropriate search engine would have + `&channel=foo` added to the URL when doing searches. + + If the key is not referenced in the search configuration, then no parameter + will be added. Only the search team can update the configuration. + richSuggestionsFeatureGate: + type: boolean + setPref: + branch: default + pref: browser.urlbar.richSuggestions.featureGate + description: >- + Feature gate that controls whether Rich Suggestions are enabled. + serpEventTelemetryCategorizationEnabled: + type: boolean + setPref: + branch: default + pref: browser.search.serpEventTelemetryCategorization.enabled + description: Whether the Glean SERP event telemetry for SERP categorization is enabled. + trendingEnabled: + type: boolean + setPref: + branch: default + pref: browser.urlbar.trending.featureGate + description: Feature gate that controls whether trending suggestions are enabled. + trendingRequireSearchMode: + type: boolean + setPref: + branch: default + pref: browser.urlbar.trending.requireSearchMode + description: Controls whether trending suggestions are only shown in search mode or not. + trendingMaxResultsNoSearchMode: + type: int + setPref: + branch: default + pref: browser.urlbar.trending.maxResultsNoSearchMode + description: The maximum number of trending results mode outside search mode. + newSearchConfigEnabled: + type: boolean + setPref: + branch: user + pref: browser.search.newSearchConfig.enabled + description: >- + Whether search-config-v2 is enabled for the user. This will only take + effect when the user restarts. + +# `searchConfiguration` is for search experiment features for items that require +# isEarlyStartup to be true. These items may require a reload of the search +# engine configuration, and an additional reload may happen during the startup +# process. +searchConfiguration: + description: Search experimentation support for the engine configuration + owner: search-and-suggest-program@mozilla.com + isEarlyStartup: true + hasExposure: false + variables: + experiment: + type: string + fallbackPref: browser.search.experiment + description: >- + Used to activate only matching configurations that contain the value in + `experiment` + seperatePrivateDefaultUIEnabled: + type: boolean + description: Whether the UI for the separate private default feature is enabled. + seperatePrivateDefaultUrlbarResultEnabled: + type: boolean + description: Whether the urlbar result for the separate private default is shown. + +urlbar: + description: The Address Bar + owner: search-and-suggest-program@mozilla.com + hasExposure: true + exposureDescription: >- + The timing of the exposure event depends on the experiment, but generally + the event is recorded once per app session when the user first encounters + the UI of the experiment in which they're enrolled. + variables: + addonsFeatureGate: + type: boolean + fallbackPref: browser.urlbar.addons.featureGate + description: >- + Feature gate that controls whether all aspects of the addons suggestion + feature are exposed to the user. + addonsShowLessFrequentlyCap: + type: int + description: >- + If defined and non-zero, this is the maximum number of times the user + will be able to click the "Show less frequently" command for addon + suggestions. If undefined or zero, the user will be able to click the + command without any limit. + autoFillAdaptiveHistoryEnabled: + type: boolean + fallbackPref: browser.urlbar.autoFill.adaptiveHistory.enabled + description: Whether enabling adaptive history autofill. + autoFillAdaptiveHistoryMinCharsThreshold: + type: int + fallbackPref: browser.urlbar.autoFill.adaptiveHistory.minCharsThreshold + description: Minimum char length of the user's search string to trigger adaptive history autofill. + autoFillAdaptiveHistoryUseCountThreshold: + type: string + description: This value assumes float expression like "0.47". Threshold for use count of input history that we handle as adaptive history autofill. If the use count is this value or more, it will be a candidate. + experimentType: + type: string + description: The type of the experiment (or rollout). If "best-match", then the Nimbus exposure event will be recorded when the user first triggers a best match (or would have triggered a best match, for users in the control group). If empty, the event will be recorded when the user first triggers any type of Suggest suggestion. + enum: + - best-match + - "" + mdnFeatureGate: + type: boolean + setPref: + branch: default + pref: browser.urlbar.mdn.featureGate + description: >- + Feature gate that controls whether all aspects of the mdn suggestion + feature are exposed to the user. + merinoClientVariants: + type: string + fallbackPref: browser.urlbar.merino.clientVariants + description: >- + Comma separated list of client variants to report to the Merino server. + May impact server behavior. + merinoEndpointURL: + type: string + fallbackPref: browser.urlbar.merino.endpointURL + description: >- + The Merino endpoint URL, not including parameters. An empty string will + cause Firefox not to fetch from Merino. + merinoProviders: + type: string + fallbackPref: browser.urlbar.merino.providers + description: >- + Comma-separated list of providers to request from the Merino server. + Merino will return suggestions only for these providers. + merinoTimeoutMs: + type: int + fallbackPref: browser.urlbar.merino.timeoutMs + description: Timeout for Merino fetches (ms) + exposureResults: + type: string + setPref: + branch: default + pref: browser.urlbar.exposureResults + description: >- + Comma-separated list of result type combinations, that are used to determine if an exposure event should be fired. + showExposureResults: + type: boolean + setPref: + branch: default + pref: browser.urlbar.showExposureResults + description: >- + Boolean used to determine if the results defined in `exposureResults` should be shown in search results. Should be false for Control branch of an experiment. + pocketFeatureGate: + type: boolean + fallbackPref: browser.urlbar.pocket.featureGate + description: >- + Feature gate that controls whether all aspects of the Pocket suggestions + feature are exposed to the user. + pocketShowLessFrequentlyCap: + type: int + description: >- + If defined and non-zero, this is the maximum number of times the user + will be able to click the "Show less frequently" command for Pocket + suggestions. If undefined or zero, the user will be able to click the + command without any limit. + potentialExposureKeywords: + type: json + fallbackPref: browser.urlbar.potentialExposureKeywords + description: >- + An array of keyword strings that will trigger the + `urlbar-potential-exposure` ping when the user types one during a urlbar + session. + quickSuggestAllowPositionInSuggestions: + type: boolean + fallbackPref: browser.urlbar.quicksuggest.allowPositionInSuggestions + description: Whether quick suggest results can be shown in position specified in the suggestions. + quickSuggestContextualOptInEnabled: + type: boolean + setPref: + branch: default + pref: browser.urlbar.quicksuggest.contextualOptIn + description: Whether the Firefox Suggest contextual opt-in result is enabled. If true, this implicitly disables shouldShowOnboardingDialog. + quickSuggestContextualOptInSayHello: + type: boolean + setPref: + branch: default + pref: browser.urlbar.quicksuggest.contextualOptIn.sayHello + description: Controls which variant of the copy is used for the Firefox Suggest contextual opt-in result. + quickSuggestContextualOptInTopPosition: + type: boolean + setPref: + branch: default + pref: browser.urlbar.quicksuggest.contextualOptIn.topPosition + description: Controls whether the Firefox Suggest contextual opt-in result appears at the top of results or at the bottom, after one-off buttons. + quickSuggestDataCollectionEnabled: + type: boolean + description: Whether data collection should be enabled by default. If this variable is specified, it will override the value implied by the scenario. It will never override the user's local preference to disable (or enable) data collection, if the user has already toggled that preference. + quickSuggestEnabled: + type: boolean + fallbackPref: browser.urlbar.quicksuggest.enabled + description: Gate for the Firefox Suggest feature as a whole. If false, the Firefox Suggest preferences UI and Suggest suggestions will not be shown. If true, the preferences UI will be shown, and the user can turn suggestions on or off. + quickSuggestImpressionCapsSponsoredEnabled: + type: boolean + fallbackPref: browser.urlbar.quicksuggest.impressionCaps.sponsoredEnabled + description: Whether sponsored suggestions are subject to impression frequency caps. If false, sponsored suggestions can be shown an unlimited number of times over any given period. If true, sponsored suggestion impressions will be subject to the caps in the remote settings configuration. + quickSuggestImpressionCapsNonSponsoredEnabled: + type: boolean + fallbackPref: browser.urlbar.quicksuggest.impressionCaps.nonSponsoredEnabled + description: Whether non-sponsored suggestions are subject to impression frequency caps. If false, non-sponsored suggestions can be shown an unlimited number of times over any given period. If true, non-sponsored suggestion impressions will be subject to the caps in the remote settings configuration. + quickSuggestNonSponsoredEnabled: + type: boolean + description: Whether non-sponsored suggestions should be enabled by default. If this variable is specified, it will override the value implied by the scenario. It will never override the user's local preference to disable (or enable) non-sponsored suggestions, if the user has already toggled that preference. + quickSuggestNonSponsoredIndex: + type: int + fallbackPref: browser.urlbar.quicksuggest.nonSponsoredIndex + description: >- + The index of non-sponsored QuickSuggest results within the general + group. A negative index is relative to the end of the group + quickSuggestOnboardingDialogVariation: + type: string + description: >- + Specify the messages/UI variation for QuickSuggest onboarding dialog. This value is case insensitive. + quickSuggestRemoteSettingsDataType: + type: string + description: The `type` of the suggestions data in remote settings. If not specified, "data" is used. + quickSuggestRustEnabled: + type: boolean + fallbackPref: browser.urlbar.quicksuggest.rustEnabled + description: >- + Whether Firefox Suggest will use the new Rust backend instead of the + original JS backend. + quickSuggestScenario: + # IMPORTANT: This should not have a fallbackPref. See UrlbarPrefs.sys.mjs. + type: string + description: The Firefox Suggest scenario in which the user is enrolled + enum: + - history + - offline + - online + quickSuggestScoreMap: + type: json + description: >- + A JSON object that maps telemetry result types to suggestion scores. If + a telemetry result type is present in this map, the client will use the + corresponding score as the score for all suggestions of the type, + overriding all other sources of scores for the type. In other words, + the scores in this map will override scores that are set in remote + settings and Merino as well as scores that are hardcoded in the client. + Example entries: `"amo": 0.5`, `"adm_sponsored": 0.9` + quickSuggestShouldShowOnboardingDialog: + type: boolean + fallbackPref: browser.urlbar.quicksuggest.shouldShowOnboardingDialog + description: Whether or not to show the QuickSuggest onboarding dialog + quickSuggestShowOnboardingDialogAfterNRestarts: + type: int + fallbackPref: browser.urlbar.quicksuggest.showOnboardingDialogAfterNRestarts + description: Show QuickSuggest onboarding dialog after N browser restarts + quickSuggestSponsoredEnabled: + type: boolean + description: Whether sponsored suggestions should be enabled by default. If this variable is specified, it will override the value implied by the scenario. It will never override the user's local preference to disable (or enable) sponsored suggestions, if the user has already toggled that preference. + quickSuggestSponsoredIndex: + type: int + fallbackPref: browser.urlbar.quicksuggest.sponsoredIndex + description: >- + The index of sponsored QuickSuggest results within the general group. A + negative index is relative to the end of the group + quickSuggestSponsoredPriority: + type: boolean + fallbackPref: browser.urlbar.quicksuggest.sponsoredPriority + description: >- + Whether or not showing sponsored suggestion as priority. + If this variable is true, the following things are processed. + * "Sponsored" label is shown as the group label. + * Change the suggested index to 1. + * Handle as top pick. + recentSearchesFeatureGate: + type: boolean + setPref: + branch: default + pref: browser.urlbar.recentsearches.featureGate + description: Gate for the recent searches feature. + recentSearchesMaxResults: + type: int + setPref: + branch: default + pref: browser.urlbar.recentsearches.maxResults + description: The maximum number of recent searches to show. + recordNavigationalSuggestionTelemetry: + type: boolean + description: Whether to record navigational suggestion telemetry. Defaults to false. + showSearchTermsFeatureGate: + type: boolean + fallbackPref: browser.urlbar.showSearchTerms.featureGate + description: Gate for the show search terms feature. If false, the preference#search will not show the search terms feature checkbox, and search terms will never persist in the urlbar. If true, the preference checkbox will be shown on preferences#search, and the user can choose to persist search terms on or off in the urlbar. + weatherFeatureGate: + type: boolean + fallbackPref: browser.urlbar.weather.featureGate + description: >- + Feature gate that controls whether all aspects of the weather suggestion + feature are exposed to the user. See also `weatherKeywords` and + `weatherKeywordsMinimumLength`. In summary: To enable the weather + suggestion, set `weatherFeatureGate` to true, `weatherKeywords` to an + array of full keyword strings, and `weatherKeywordsMinimumLength` to a + non-zero integer. To disable the weather suggestion, leave out all + weather-related variables. + weatherKeywords: + type: json + description: >- + An array of full keyword strings that will trigger the weather + suggestion when the user types them in the address bar. If absent or + null, Firefox will fall back to the weather keywords defined in remote + settings. If neither Nimbus nor remote settings defines any keywords, + the weather suggestion will be disabled. See also + `weatherKeywordsMinimumLength`. + weatherKeywordsMinimumLength: + type: int + description: >- + If defined and non-zero, the weather suggestion will be triggered by + typing any prefix of a full weather keyword when the prefix is at least + `weatherKeywordsMinimumLength` characters long. If this variable is + absent or zero, Firefox will fall back to the minimum length defined in + remote settings. If neither Nimbus nor remote settings defines a minimum + length, only full keywords will trigger the suggestion. See also + `weatherKeywords`. + weatherKeywordsMinimumLengthCap: + type: int + description: >- + If defined and non-zero, the user will not be able to increment the + minimum keyword length beyond this value. e.g., if this value is 6, the + current minimum length is 5, and the user clicks "Show less frequently", + then the minimum length will be incremented to 6, the "Show less + frequently" command will be hidden, and the user can continue to trigger + the weather suggestion by typing 6 characters, but they will not be able + to increment the minimum length any further. If this variable is absent + or zero, Firefox will fall back to the cap defined in remote settings. + If neither Nimbus nor remote settings defines a cap, no cap will be + used, and the user will be able to increment the minimum length without + any limit. + weatherSimpleUI: + type: boolean + description: >- + If true, show the weather suggestion by simple UI edition as follows. + * Remove the forcast text from the summary text. + yelpMinKeywordLength: + type: int + description: >- + The minimum prefix length of a Yelp keyword the user must type to + trigger the suggestion. + yelpFeatureGate: + type: boolean + fallbackPref: browser.urlbar.yelp.featureGate + description: >- + Feature gate that controls whether all aspects of the Yelp suggestion + feature are exposed to the user. + yelpShowLessFrequentlyCap: + type: int + fallbackPref: browser.urlbar.yelp.showLessFrequentlyCap + description: >- + If defined and non-zero, this is the maximum number of times the user + will be able to click the "Show less frequently" command for Yelp + suggestions. If undefined or zero, the user will be able to click the + command without any limit. + yelpSuggestNonPriorityIndex: + type: int + fallbackPref: browser.urlbar.yelp.suggestedIndex + description: >- + The group-relative suggestedIndex of Yelp suggestions within the Firefox + Suggest section. Ignored when `yelpSuggestPriority` is true. + yelpSuggestPriority: + type: boolean + fallbackPref: browser.urlbar.yelp.priority + description: >- + Whether or not showing yelp suggestion as priority. + If this variable is true, the following things are processed. + * Change the suggested index to 1. + * Handle as top pick. + originsAlternativeEnable: + description: >- + Use an alternative ranking algorithm for autofilling origins, that is + mainly domains of Web pages. When the user types the beginning of an + origin, we autofill the whole origin. Whether autofill happens depends + on the ranking algorithm. Bookmarks are always autofilled anyway. + type: boolean + setPref: + branch: user + pref: "places.frecency.origins.alternative.featureGate" + originsDaysCutOff: + description: >- + The alternative ranking algorithm only considers pages visited in the + last N days, where N is controlled by this variable. + type: int + setPref: + branch: user + pref: "places.frecency.origins.alternative.daysCutOff" + pagesAlternativeEnable: + description: >- + Use an alternative ranking algorithm for sorting history and bookmarks + among the urlbar results. + type: boolean + setPref: + branch: user + pref: "places.frecency.pages.alternative.featureGate" + pagesNumSampledVisits: + description: >- + The number of recent visits to sample when calculating the ranking of + a page. Examining all the visits would be expensive, so we only sample + recent visits. + type: int + setPref: + branch: user + pref: "places.frecency.pages.alternative.numSampledVisits" + pagesHalfLifeDays: + description: >- + The number of days after which the ranking halves. This implements the + "recency" part of the algorithm. + type: int + setPref: + branch: user + pref: "places.frecency.pages.alternative.halfLifeDays" + pagesHighWeight: + description: >- + The weight to use for the high importance bucket. + type: int + setPref: + branch: user + pref: "places.frecency.pages.alternative.highWeight" + pagesMediumWeight: + description: >- + The weight to use for the medium importance bucket. + type: int + setPref: + branch: user + pref: "places.frecency.pages.alternative.mediumWeight" + pagesLowWeight: + description: >- + The weight to use for the low importance bucket. + type: int + setPref: + branch: user + pref: "places.frecency.pages.alternative.lowWeight" + +aboutwelcome: + description: "The about:welcome page" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + Exposure is sent once per browsing session when the about:welcome URL is + first accessed. + isEarlyStartup: true + variables: + enabled: + type: boolean + fallbackPref: browser.aboutwelcome.enabled + description: >- + Should users see about:welcome? If this is false, users will see a + regular new tab instead. + id: + type: string + description: >- + Descriptive ID for the about:welcome content + screens: + type: json + fallbackPref: browser.aboutwelcome.screens + description: Content to show in the onboarding flow + languageMismatchEnabled: + type: boolean + fallbackPref: intl.multilingual.aboutWelcome.languageMismatchEnabled + description: >- + Suggest to change the language on about:welcome when there is a mismatch with + the OS. + transitions: + type: boolean + description: Enable transition effect between screens + showModal: + type: boolean + fallbackPref: browser.aboutwelcome.showModal + description: >- + Should users see window modal onboarding + backdrop: + type: string + fallbackPref: browser.aboutwelcome.backdrop + description: >- + Specify the color to be used to update the background color + toolbarButtonEnabled: + type: boolean + setPref: + branch: user + pref: browser.aboutwelcome.toolbarButtonEnabled + description: >- + Should the return to about:welcome toolbar button be shown + +moreFromMozilla: + description: "New page on about:preferences to suggest more Mozilla products" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + Exposure is sent once per browsing session when the about:preferences URL is + first accessed. + variables: + enabled: + type: boolean + fallbackPref: browser.preferences.moreFromMozilla + description: Should users see the new more from Mozilla section. + template: + type: string + fallbackPref: browser.preferences.moreFromMozilla.template + description: UI template used to display Mozilla products. Possible values simple, advanced. Default is simple. + +windowsLaunchOnLogin: + description: "New checkbox in about:preferences startup section to start Firefox on Windows login" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + Exposure is sent once per browsing session when the about:preferences URL is + first accessed. + variables: + enabled: + type: boolean + setPref: + branch: default + pref: browser.startup.windowsLaunchOnLogin.enabled + description: Should users see the Windows launch on login checkbox. + +firefoxBridge: + description: "Controls for Firefox Bridge extension and extension registration" + owner: install-update@mozilla.com + hasExposure: false + variables: + enabled: + type: boolean + setPref: + branch: default + pref: browser.firefoxbridge.enabled + description: >- + Should Firefox Bridge be registered within firefoxBridgeNativeMessaging + startup idle task for use with native messaging proxy. + +windowsJumpList: + description: "Controls for the Windows Jump List integration." + owner: mconley@mozilla.com + hasExposure: false + variables: + legacyBackend: + type: boolean + setPref: + branch: user + pref: browser.taskbar.lists.legacyBackend + description: True if users should use the legacy Windows Jump List backend. + +abouthomecache: + description: "The startup about:home cache." + owner: omc@mozilla.com, mconley@mozilla.com + hasExposure: false + variables: + enabled: + type: boolean + description: Is the feature enabled? + setPref: + branch: user + pref: browser.startup.homepage.abouthome_cache.enabled + +newtab: + description: "The about:newtab page" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + Exposure is sent once per browsing session when the first newtab page loads + (either about:newtab or about:home). + isEarlyStartup: true + variables: + newTheme: + type: boolean + description: Enable the new theme + customizationMenuEnabled: + type: boolean + fallbackPref: browser.newtabpage.activity-stream.customizationMenu.enabled + description: Enable the customization panel inside of the newtab + prefsButtonIcon: + type: string + description: Icon url to use for the preferences button + topSitesContileEnabled: + type: boolean + fallbackPref: browser.topsites.contile.enabled + description: Enable the Contile integration for Sponsored Top Sites + topSitesUseAdditionalTilesFromContile: + type: boolean + description: Allow Contile to use additonal sponsored top sites + +pocketNewtab: + description: The Pocket section in newtab + owner: sdowne@getpocket.com + hasExposure: false + isEarlyStartup: true + variables: + spocPositions: + type: string + fallbackPref: browser.newtabpage.activity-stream.discoverystream.spoc-positions + description: CSV string of spoc position indexes on newtab Pocket grid + spocTopsitesPositions: + type: string + fallbackPref: browser.newtabpage.activity-stream.discoverystream.spoc-topsites-positions + description: CSV string of spoc position indexes on newtab topsites section + contileTopsitesPositions: + type: string + fallbackPref: browser.newtabpage.activity-stream.discoverystream.contile-topsites-positions + description: CSV string of contile position indexes on newtab topsites section + spocAdTypes: + type: string + fallbackPref: browser.newtabpage.activity-stream.discoverystream.spocAdTypes + description: CSV string of data to set the spoc content. + spocZoneIds: + type: string + fallbackPref: browser.newtabpage.activity-stream.discoverystream.spocZoneIds + description: CSV string of data to set the spoc content. + spocTopsitesAdTypes: + type: string + fallbackPref: browser.newtabpage.activity-stream.discoverystream.spocTopsitesAdTypes + description: CSV string of data to set the spoc content. + spocTopsitesZoneIds: + type: string + fallbackPref: browser.newtabpage.activity-stream.discoverystream.spocTopsitesZoneIds + description: CSV string of data to set the spoc content. + spocTopsitesPlacementEnabled: + type: boolean + fallbackPref: browser.newtabpage.activity-stream.discoverystream.spocTopsitesPlacement.enabled + description: Tuns on and off the sponsored topsites placement. + spocSiteId: + type: string + fallbackPref: browser.newtabpage.activity-stream.discoverystream.spocSiteId + description: String ID to set the spoc content. + widgetPositions: + type: string + fallbackPref: browser.newtabpage.activity-stream.discoverystream.widget-positions + description: CSV string of widget position indexes on newtab grid + hybridLayout: + type: boolean + fallbackPref: browser.newtabpage.activity-stream.discoverystream.hybridLayout.enabled + description: Enable compact cards on newtab grid only for specific breakpoints + hideCardBackground: + type: boolean + fallbackPref: browser.newtabpage.activity-stream.discoverystream.hideCardBackground.enabled + description: Removes Pocket card background and borders. + fourCardLayout: + type: boolean + fallbackPref: browser.newtabpage.activity-stream.discoverystream.fourCardLayout.enabled + description: Enable four Pocket cards per row. + newFooterSection: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.newFooterSection.enabled + description: Enable an updated Pocket section topics footer + saveToPocketCard: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.saveToPocketCard.enabled + description: >- + A save to Pocket button inside the card, shown on the card thumbnail, on + hover. + saveToPocketCardRegions: + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.saveToPocketCardRegions + description: >- + CSV string of regions that support the save to Pocket button inside the card. + hideDescriptions: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.hideDescriptions.enabled + description: >- + Hide or display descriptions for Pocket stories on newtab. + hideDescriptionsRegions: + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.hideDescriptionsRegions + description: >- + CSV string of regions that hide descriptions for Pocket stories on newtab. + compactGrid: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.compactGrid.enabled + description: >- + Reduce the number of pixels between the Pocket cards on newtab. + compactImages: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.compactImages.enabled + description: >- + Reduce the height on Pocket card images on newtab. + imageGradient: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.imageGradient.enabled + description: >- + Add a gradient to the bottom of Pocket card images on newtab to blend the + image in with the card. + titleLines: + type: int + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.titleLines + description: >- + Changes the maximum number of lines a title can be for Pocket cards on newtab. + descLines: + type: int + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.descLines + description: >- + Changes the maximum number of lines a description can be for Pocket cards on newtab. + onboardingExperience: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.onboardingExperience.enabled + description: >- + Enables an onboarding experience for Pocket section on newtab. + essentialReadsHeader: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.essentialReadsHeader.enabled + description: >- + Updates the Pocket section header and title to say "Today’s Essential Reads", + moves the "Recommended by Pocket" header to the right side. + editorsPicksHeader: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.editorsPicksHeader.enabled + description: >- + Updates the Pocket section header and title to say "Editor’s Picks", if used with + essentialReadsHeader, creates a second section 2 rows down for editorsPicksHeader. + recentSavesEnabled: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.recentSaves.enabled + description: >- + Updates the Pocket section with a new header and 1 row of recently saved Pocket stories. + readTime: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.readTime.enabled + description: >- + Displays an estimated read time for Pocket cards on newtab. + newSponsoredLabel: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.newSponsoredLabel.enabled + description: >- + Updates the sponsored label position to below the image for Pocket cards on newtab. + sendToPocket: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.sendToPocket.enabled + description: >- + Decides what to do when a logged out user click "Save to Pocket" from a Pocket card. + wallpapers: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.newtabWallpapers.enabled + description: >- + Turns on and off wallpaper support. + wallpapersV2: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.newtabWallpapers.v2.enabled + description: >- + Turns on and off updated wallpaper experience. + wallpapersHighlightEnabled: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.newtabWallpapers.highlightEnabled + description: >- + Turns on and off wallpaper feature highlight. + wallpaperHighlightHeaderText: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.newtabWallpapers.highlightHeaderText + description: >- + Changes the wallpaper feature highlight header + wallpaperHighlightContentText: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.newtabWallpapers.highlightContentText + description: >- + Changes the wallpaper feature highlight content + wallpaperHighlightCtaText: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.newtabWallpapers.highlightCtaText + description: >- + Changes the wallpaper feature highlight cta + weatherLocationSearch: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.weather.locationSearchEnabled + description: >- + Turns on and off location search for newtab weather widget + recsPersonalized: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.recs.personalized + description: >- + Enables Pocket stories personalization. + spocsPersonalized: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.spocs.personalized + description: >- + Enables Pocket sponsored content personalization. + spocsCacheTimeout: + type: int + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.spocs.cacheTimeout + description: >- + Set sponsored content cache timeout in minutes. + discoveryStreamConfig: + description: A JSON blob of discovery stream configuration. + type: string + setPref: + branch: user + pref: "browser.newtabpage.activity-stream.discoverystream.config" + spocsEndpoint: + description: The URL for the spocs endpoint. + type: string + setPref: + branch: user + pref: "browser.newtabpage.activity-stream.discoverystream.spocs-endpoint" + spocsEndpointAllowlist: + description: Comma separated list of allowed endpoints for fetching spocs + type: string + setPref: + branch: user + pref: "browser.newtabpage.activity-stream.discoverystream.endpoints" + spocsClearEndpoint: + description: URL for deleting any server data when a user opts out of sponsored content + type: string + setPref: + branch: user + pref: "browser.newtabpage.activity-stream.discoverystream.endpointSpocsClear" + ctaButtonSponsors: + description: A CSV list of sponsors that should use a button CTA. + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.ctaButtonSponsors + ctaButtonVariant: + description: Specifies which variant to use for any sponsors in ctaButtonSponsors + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.ctaButtonVariant + spocMessageVariant: + description: Adds some message dialogs explainging sponsored content to the user + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.spocMessageVariant + regionStoriesConfig: + description: A comma-separated list of region to get stories for. + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.region-stories-config + regionBffConfig: + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.region-bff-config + description: A comma-separated list of regions to get stories from the recommendations BFF. Also requires region-stories-config. + regionStoriesBlock: + description: A comma-separated list of regions that do not get stories, regardless of locale-list-config. + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.region-stories-block + localeListConfig: + description: A comma-separated list of locales that get stories, regardless of region-stories-config. + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.locale-list-config + regionSpocsConfig: + description: A comma-separated list of regions that get spocs by default. + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.region-spocs-config + regionWeatherConfig: + description: A comma-separated list of regions that get weather by default. + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.region-weather-config + topSitesMaxSponsored: + # Defined under `pocketNewtab` as it needs to be used along with other variables + type: int + description: The maximum number of sponsored Top Sites to be displayed + topSitesContileMaxSponsored: + # Defined under `pocketNewtab` as it needs to be used along with other variables + type: int + description: The maximum number of sponsored Top Sites used from Contile + topSitesContileSovEnabled: + # Defined under `pocketNewtab` as it needs to be used along with other variables + description: Enable the Share-of-Voice feature for Sponsored Topsites. + type: boolean + fallbackPref: >- + browser.topsites.contile.sov.enabled + pocketFeedParameters: + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.pocket-feed-parameters + description: >- + Add parameters to Pocket feed URL. + +saveToPocket: + description: The save to Pocket feature + owner: sdowne@getpocket.com + hasExposure: false + variables: + emailButton: + type: boolean + setPref: + branch: user + pref: extensions.pocket.refresh.emailButton.enabled + description: Just for the new Pocket panels, enables the email signup button. + hideRecentSaves: + type: boolean + setPref: + branch: user + pref: extensions.pocket.refresh.hideRecentSaves.enabled + description: Hides the recently saved section in the home panel. + bffRecentSaves: + type: boolean + setPref: + branch: user + pref: extensions.pocket.bffRecentSaves + description: Use the new BFF Proxy Service instead of the legacy Pocket Service for Recent Saves + bffApi: + type: string + setPref: + branch: user + pref: extensions.pocket.bffApi + description: BFF Proxy Service domain + oAuthConsumerKeyBff: + type: string + setPref: + branch: user + pref: extensions.pocket.oAuthConsumerKeyBff + description: BFF Proxy Service OAuth Consumer Key + +password-autocomplete: + description: A special autocomplete UI for password fields. + owner: sgalich@mozilla.com + hasExposure: false + variables: + directMigrateSingleProfile: + type: boolean + description: Enable direct migration? + +cm-csv-import: + description: Importing logins from CSV files + owner: issozi@mozilla.com + hasExposure: false + variables: + csvImport: + type: boolean + description: Can show CSV Import in about:logins or Migration Wizard + setPref: + branch: default + pref: "signon.management.page.fileImport.enabled" + +# This feature flag mirrors the one used for ios +# https://github.com/mozilla-mobile/firefox-ios/blob/main/nimbus-features/addressAutofillFeature.yaml +address-autofill-feature: + description: Enabling address autofill feature + owner: issozi@mozilla.com + hasExposure: false + variables: + status: + type: boolean + setPref: + branch: default + pref: extensions.formautofill.addresses.experiments.enabled + description: If true, we will allow user to use address autofill + +shellService: + description: "Interface with OS, e.g., pinning and set default" + owner: desktop-integrations@mozilla.com + hasExposure: false + variables: + disablePin: + type: boolean + description: Disable pin to taskbar feature + setDefaultBrowserUserChoice: + type: boolean + setPref: + branch: user + pref: browser.shell.setDefaultBrowserUserChoice + description: Should it set as default browser + setDefaultBrowserUserChoiceRegRename: + type: boolean + setPref: + branch: user + pref: browser.shell.setDefaultBrowserUserChoice.regRename + description: When setting default via UserChoice, rename the underlying registry key to prevent kennel driver registry locking. + setDefaultPDFHandler: + type: boolean + fallbackPref: browser.shell.setDefaultPDFHandler + description: Should setting it as the default browser set it as the default PDF handler. + setDefaultPDFHandlerOnlyReplaceBrowsers: + type: boolean + fallbackPref: browser.shell.setDefaultPDFHandler.onlyReplaceBrowsers + description: >- + Should setting it as the default PDF handler only replace existing PDF + handlers that are browsers, and not other PDF handlers such as Acrobat + Reader or Nitro PDF. + setDefaultGuidanceNotifications: + type: boolean + fallbackPref: browser.shell.setDefaultGuidanceNotifications + description: Whether or not the user should see the guidance notifications when setting Firefox as their default browser. +upgradeDialog: + description: The dialog shown for major upgrades + owner: omc@mozilla.com + hasExposure: false + isEarlyStartup: true + variables: + enabled: + type: boolean + fallbackPref: browser.startup.upgradeDialog.enabled + description: Is the feature enabled? + +cfr: + description: "A Firefox Messaging System message for the cfr message channel" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +"moments-page": + description: "A Firefox Messaging System message for the moments-page message channel" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +infobar: + description: "A Firefox Messaging system message for the infobar message channel" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +spotlight: + description: "A Firefox Messaging System message for the spotlight message channel" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +# Before 117, this feature only included one variable, pdfJsTourProgress. So, +# the minimum version for messaging experiments using this feature ID is 117. +featureCallout: + description: "A Firefox Messaging System message for the Feature Callout message channel" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +fullPageTranslation: + description: This feature opens a popup panel to offer to translate a page. + owner: gtatum@mozilla.com + hasExposure: false + variables: + boolean: + description: Set to true to enable the translations feature + type: boolean + setPref: + branch: user + pref: browser.translations.enable + +fullPageTranslationAutomaticPopup: + description: Controls whether the popup automatically shows for translations. + owner: gtatum@mozilla.com + hasExposure: false + variables: + boolean: + description: Set to true to automatically popup, and false to only show the button. + type: boolean + setPref: + branch: user + pref: browser.translations.automaticallyPopup + +selectTranslation: + description: This feature enables the option to translate selected text from the context menu. + owner: enordin@mozilla.com + hasExposure: false + variables: + enabled: + description: Set to true to enable the select-translations feature + type: boolean + setPref: + branch: user + pref: browser.translations.select.enable + +pdfjs: + description: The Firefox pdf reader. + owner: pdfjs-team@mozilla.com + hasExposure: true + exposureDescription: >- + Exposure is sent each time a pdf is displayed. + variables: + addHighlight: + description: Set to true to highlight some text or something else in an existing pdf. + type: boolean + setPref: + branch: default + pref: pdfjs.enableHighlightEditor + +addAnImageInPDF: + description: Add an image in an existing pdf. + owner: cdenizet@mozilla.com + hasExposure: false + variables: + boolean: + description: Set to true to enable the add-an-image feature + type: boolean + setPref: + branch: default + pref: pdfjs.enableStampEditor + +# fxms-message-* placeholder feature ids +# +# https://docs.google.com/spreadsheets/d/119YbeKStLL0Fg2QkK-yN93mrtD1rlneGZGTl_jAwtyw/edit#gid=1903378504 +# has info on using these placeholder feature ids, as well as (very short) instructions on +# checking to see if we need more (which we do once per Nightly) and how to add them. +# +# Instructions for adding a new fxms-message-* placeholder feature id +# 1) clone an existing one here +# 2) update the YAML feature id to the next unused number +# 3) update the YAML description +# 4) add the new feature id to MESSAGING_EXPERIMENTS_DEFAULT_FEATURES list in MessagingExperimentConstants.sys.mjs +# 5) add the new feature id and the version it landed to the spreadsheet tab linked to above + +fxms-message-1: + description: "A Firefox Messaging System message" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +fxms-message-2: + description: "Firefox Messaging System message 2" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +fxms-message-3: + description: "Firefox Messaging System message 3" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +fxms-message-4: + description: "Firefox Messaging System message 4" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +fxms-message-5: + description: "Firefox Messaging System message 5" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +fxms-message-6: + description: "Firefox Messaging System message 6" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +fxms-message-7: + description: "Firefox Messaging System message 7" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +fxms-message-8: + description: "Firefox Messaging System message 8" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +fxms-message-9: + description: "Firefox Messaging System message 9" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +fxms-message-10: + description: "Firefox Messaging System message 10" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +fxms-message-11: + description: "Firefox Messaging System message 11" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +whatsNewPage: + description: "A Firefox Messaging System message for the What's new page channel" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + variables: + overrideUrl: + description: URL of the What's new page + type: string + setPref: + branch: user + pref: startup.homepage_override_url_nimbus + maxVersion: + description: Maximum Firefox update version + type: string + setPref: + branch: user + pref: startup.homepage_override_nimbus_maxVersion + minVersion: + description: Minimum Firefox update version + type: string + setPref: + branch: user + pref: startup.homepage_override_nimbus_minVersion + +pbNewtab: + description: "A Firefox Messaging System message for the pbNewtab message channel" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched. + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +backgroundTaskMessage: + description: "A Firefox Messaging System message for the background task message channel" + owner: nalexander@mozilla.com + applications: + - firefox-desktop-background-task + hasExposure: true + exposureDescription: >- + Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched. + schema: + uri: "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/BackgroundTaskMessagingExperiment.schema.json" + variables: {} + +backgroundUpdateAutomaticRestart: + description: "Whether to automatically restart when the background update task could make more progress." + owner: nalexander@mozilla.com + applications: + - firefox-desktop-background-task + hasExposure: false + variables: + enabled: + type: boolean + fallbackPref: app.update.background.automaticRestartEnabled + description: >- + When true, make the background update task restart when the final update state is `READY_FOR_RESTART`. + Generally, this will finish applying a staged update, completing the update earlier than it + otherwise would have been completed. + +pictureinpicture: + description: Message for first time Picture-in-Picture users + owner: nbaumgardner@mozilla.com + hasExposure: true + exposureDescription: Exposure is sent when a user hovers over a video and Picture-in-Picture has not been used before + variables: + title: + type: string + description: The title to be used for the PiP toggle + message: + type: string + description: The message to be used in the PiP toggle + showIconOnly: + type: boolean + description: Whether to show the first time PiP toggle or show the PiP icon only + oldToggle: + type: boolean + description: Whether to show the control style (true) or variant style (false) for the first time PiP toggle + displayDuration: + type: int + description: Duration of PiP first time toggle display in days before switching to PiP icon toggle + +glean: + description: "The Glean data-control-plane feature within Firefox Desktop for controlling metric configuration" + owner: glean-team@mozilla.com + hasExposure: false + variables: + newtabPingEnabled: + type: "boolean" + fallbackPref: "browser.newtabpage.ping.enabled" + description: "Whether to submit the 'newtab' ping" + gleanMetricConfiguration: + type: json + description: | + A map of metric base-identifiers to booleans representing the state of the 'enabled' flag for that metric. + This variable is intended for interacting with the Glean data-control-plane via the Server Knobs functionality + to remotely configure metrics to be enabled or disabled. + +gleanInternalSdk: + description: "The Glean internal SDK feature intended only for internal Glean Team use" + owner: glean-team@mozilla.com + hasExposure: false + variables: + finalInactive: + type: "boolean" + description: "Enables FOG early shutdown pings when true" + setPref: + branch: user + pref: telemetry.glean.internal.finalInactive + gleanMetricConfiguration: + type: json + description: | + A map of metric base-identifiers to booleans representing the state of the 'enabled' flag for that metric. + This is not for public use! For data-control-plane use, please refer to the Glean documentation and use the + `gleanMetricConfiguration` found in the `glean` feature for this. + gleanMaxPingsPerMinute: + type: int + description: >- + Maximum number of pings that can be sent in a 60 second interval + setPref: + branch: user + pref: telemetry.glean.internal.maxPingsPerMinute + +browserLowMemoryPrefs: + description: Prefs which control the browser's behaviour under low memory. + owner: haftandilian@mozilla.com + hasExposure: false + variables: + lowMemoryResponseMask: + description: Control the response on macOS when under memory pressure. + type: int + setPref: + branch: default + pref: "browser.lowMemoryResponseMask" + lowMemoryResponseOnWarn: + description: Controls which macOS memory-pressure levels trigger the browser low memory response. + type: boolean + setPref: + branch: default + pref: "browser.lowMemoryResponseOnWarn" + tabsUnloadOnLowMemory: + description: Whether to unload tabs when available memory is running low. + type: boolean + setPref: + branch: default + pref: "browser.tabs.unloadOnLowMemory" + +scriptLoaderPrefs: + description: Prefs that control the script loader. + owner: npierron@mozilla.com + hasExposure: false + variables: + delazificationStrategy: + description: >- + Selects which parsing/delazification strategy should be used while + parsing scripts off-main-thread. See DelazificationOption in + CompileOptions.h for values. + type: int + setPref: + branch: default + pref: "dom.script_loader.delazification.strategy" + +echPrefs: + description: Prefs that control Encrypted Client Hello. + owner: djackson@mozilla.com + hasExposure: false + variables: + tlsEnabled: + description: Whether to enable ECH for connections using TLS + type: boolean + setPref: + branch: default + pref: "network.dns.echconfig.enabled" + h3Enabled: + description: Whether to enable ECH for connections using H3/QUIC + type: boolean + setPref: + branch: default + pref: "network.dns.http3_echconfig.enabled" + forceWaitHttpsRR: + description: Whether to force waiting for HTTPS DNS records, which ECH requires. + type: boolean + setPref: + branch: default + pref: "network.dns.force_waiting_https_rr" + insecureFallback: + description: Whether to fallback to non-ECH connections if all ECH RRs fail. + type: boolean + setPref: + branch: default + pref: "network.dns.echconfig.fallback_to_origin_when_all_failed" + tlsGreaseProb: + description: Probability of GREASEing a TLS connection with ECH (0-100). + type: int + setPref: + branch: default + pref: "security.tls.ech.grease_probability" + h3GreaseEnabled: + description: Whether to apply GREASE settings to H3/QUIC connections. + type: boolean + setPref: + branch: default + pref: "security.tls.ech.grease_http3" + disableGreaseOnFallback: + description: Whether to disable GREASE when retrying a connection. + type: boolean + setPref: + branch: default + pref: "security.tls.ech.disable_grease_on_fallback" + greasePaddingSize: + description: Assumed echConfig padding length for GREASE extensions (1-255). + type: int + setPref: + branch: default + pref: "security.tls.ech.grease_size" + +dohPrefs: + description: Prefs that control DNS over HTTPS. + owner: vgosu@mozilla.com + hasExposure: false + variables: + trrMode: + description: Has a value of 2 for TRR first, 3 for TRR only, 0 for off. + type: int + setPref: + branch: default + pref: "network.trr.mode" + trrUri: + description: The URL of the DNS over HTTPS endpoint + type: string + setPref: + branch: default + pref: "network.trr.uri" + dohMode: + description: Same as trrMode, but set by the DoHController module. + type: int + setPref: + branch: default + pref: "doh-rollout.mode" + dohUri: + description: Same as trrUri, but set by the DoHController module. + type: string + setPref: + branch: default + pref: "doh-rollout.uri" + enableFallbackWarningPage: + description: Whether DoH fallback warning page will be displayed when DoH doesn't work in TRR first mode. + type: boolean + setPref: + branch: default + pref: "network.trr.display_fallback_warning" + showFallbackCheckbox: + description: Whether the checkbox to enable the fallback warning page is displayed in the settings UI. + type: boolean + setPref: + branch: default + pref: "network.trr_ui.show_fallback_warning_option" + nativeHTTPSRecords: + description: Whether we can perform native DNS HTTPS lookups + type: boolean + setPref: + branch: default + pref: "network.dns.native_https_query" + +dooh: + description: "DNS over Oblivious HTTP" + owner: vgosu@mozilla.com + hasExposure: false + variables: + ohttpEnabled: + description: Whether to use Oblivious HTTP for the resolution + type: boolean + setPref: + branch: default + pref: "network.trr.use_ohttp" + ohttpRelayUri: + description: The URL of the Oblivious HTTP relay + type: string + setPref: + branch: default + pref: "network.trr.ohttp.relay_uri" + ohttpConfigUri: + description: The URL used to fetch the configuration of the Oblivious HTTP gateway + type: string + setPref: + branch: default + pref: "network.trr.ohttp.config_uri" + ohttpUri: + description: The URL of the Oblivious DNS over HTTPS target resource + type: string + setPref: + branch: default + pref: "network.trr.ohttp.uri" + +networking: + description: "Firefox Networking (Necko)" + owner: vgosu@mozilla.com + hasExposure: false + variables: + ehPreloadEnabled: + description: Whether Early Hints preload is enabled + type: boolean + setPref: + branch: default + pref: "network.early-hints.enabled" + ehPreconnectEnabled: + description: Whether Early Hints preconnect is enabled + type: boolean + setPref: + branch: default + pref: "network.early-hints.preconnect.enabled" + dnsMaxPriorityThreads: + description: The maximum number of high priority DNS threads that can be created. + type: int + setPref: + branch: default + pref: "network.dns.max_high_priority_threads" + dnsMaxAnyPriorityThreads: + description: The maximum number of DNS threads that can be created to handle any priority DNS requests. + type: int + setPref: + branch: default + pref: "network.dns.max_any_priority_threads" + preconnect: + description: Whether the rel=preconnect feature is enabled + type: boolean + setPref: + branch: default + pref: "network.preconnect" + networkPredictor: + description: Whether the Necko predictor is enabled + type: boolean + setPref: + branch: default + pref: "network.predictor.enabled" + http3CCalgorithm: + description: The congestion control algorithm with which to configure neqo. 0 for NewReno, 1 for Cubic + type: int + setPref: + branch: default + pref: "network.http.http3.cc_algorithm" + sendOnDataFinished: + description: Whether we can send OnDataFinished in the content process + type: boolean + setPref: + branch: default + pref: "network.send_OnDataFinished" + sendOnDataFinshedFromInputStreamPump: + description: Whether we can send OnDataFinished to the content process from InputStreamPump + type: boolean + setPref: + branch: default + pref: "network.send_OnDataFinished.nsInputStreamPump" + sendOnDataFinishedToHtml5parser: + description: Whether we can send OnDataFinished to the html5parser in content process + type: boolean + setPref: + branch: default + pref: "network.send_OnDataFinished.html5parser" + sendOnDataFinishedToCssLoader: + description: Whether we can send OnDataFinished to the cssLoader in content process + type: boolean + setPref: + branch: default + pref: "network.send_OnDataFinished.cssLoader" + enableOffMainThreadStreamDecompression: + description: Whether to enable decompression of network streams off-main-thread + type: boolean + setPref: + branch: default + pref: "network.decompression_off_mainthread" + offMainThreadStreamDecompressionThreshold: + description: Minimum content length for off-main-thread decompression + type: int + setPref: + branch: default + pref: "network.decompression_off_mainthread_min_size" + httpMaxConnections: + description: The maximum number of http connections. + type: int + setPref: + branch: default + pref: "network.http.max-connections" + httpMaxPersistentConnectionsPerServer: + description: The maximum number of persistent connections to a server + type: int + setPref: + branch: default + pref: "network.http.max-persistent-connections-per-server" + speculativeConnectionLimit: + description: The maximum number of half-open sockets allowed for speculative connections + type: int + setPref: + branch: default + pref: "network.http.speculative-parallel-limit" + +networkPrioritization: + description: "Network request prioritization" + owner: vgosu@mozilla.com + hasExposure: false + variables: + priorityHeader: + description: Whether to set the Priority header on each request. + type: boolean + setPref: + branch: default + pref: "network.http.priority_header.enabled" + fetchPriority: + description: Whether fetch priority is enabled + type: boolean + setPref: + branch: default + pref: "network.fetchpriority.enabled" + h3FetchPriority: + description: Whether to send HTTP3 priority frames + type: boolean + setPref: + branch: default + pref: "network.http.http3.priority" + sendNoRFC7540Setting: + description: Whether to send the SETTINGS_NO_RFC7540_PRIORITIES for the HTTP2 session. + type: boolean + setPref: + branch: default + pref: "network.http.http2.send_NO_RFC7540_PRI" + h2deps: + description: Whether RFC7540 priorities / stream dependencies are enabled + type: boolean + setPref: + branch: default + pref: "network.http.http2.enabled.deps" + h3BackgroundTabDeprioritization: + description: Lowers the priority when the tab is in the background. Potential privacy concerns. + type: boolean + setPref: + branch: default + pref: "network.http.http3.send_background_tabs_deprioritization" + documentPriorityIncremental: + description: Sets the incremental flag on the Priority header for document requests + type: boolean + setPref: + branch: default + pref: "dom.document_priority.incremental" + imagePriorityIncremental: + description: Sets the incremental flag on the Priority header for image requests + type: boolean + setPref: + branch: default + pref: "image.priority.incremental" + imageAdjustLayoutPriority: + description: Whether the network request priority should be adjusted according the layout and view frame position of each particular image. + type: boolean + setPref: + branch: default + pref: "image.layout_network_priority" + adjustLinkPreloadScriptLow: + description: Priority adjustment low for link-preload-script + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.link-preload-script.low" + adjustLinkPreloadScriptHigh: + description: Priority adjustment high for link-preload-script + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.link-preload-script.high" + adjustLinkPreloadScriptAuto: + description: Priority adjustment auto for link-preload-script + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.link-preload-script.auto" + adjustModuleScriptLow: + description: Priority adjustment low for module-script + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.module-script.low" + adjustModuleScriptHigh: + description: Priority adjustment high for module-script + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.module-script.high" + adjustModuleScriptAuto: + description: Priority adjustment auto for module-script + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.module-script.auto" + adjustAsyncOrDeferScriptLow: + description: Priority adjustment low for async-or-defer-script + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.async-or-defer-script.low" + adjustAsyncOrDeferScriptHigh: + description: Priority adjustment high for async-or-defer-script + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.async-or-defer-script.high" + adjustAsyncOrDeferScriptAuto: + description: Priority adjustment auto for async-or-defer-script + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.async-or-defer-script.auto" + adjustScriptInHeadLow: + description: Priority adjustment low for script-in-head + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.script-in-head.low" + adjustScriptInHeadHigh: + description: Priority adjustment high for script-in-head + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.script-in-head.high" + adjustScriptInHeadAuto: + description: Priority adjustment auto for script-in-head + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.script-in-head.auto" + adjustOtherScriptLow: + description: Priority adjustment low for other-script + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.other-script.low" + adjustOtherScriptHigh: + description: Priority adjustment high for other-script + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.other-script.high" + adjustOtherScriptAuto: + description: Priority adjustment auto for other-script + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.other-script.auto" + adjustLinkPreloadFontLow: + description: Priority adjustment low for link-preload-font + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.link-preload-font.low" + adjustLinkPreloadFontHigh: + description: Priority adjustment high for link-preload-font + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.link-preload-font.high" + adjustLinkPreloadFontAuto: + description: Priority adjustment auto for link-preload-font + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.link-preload-font.auto" + adjustLinkPreloadFetchLow: + description: Priority adjustment low for link-preload-fetch + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.link-preload-fetch.low" + adjustLinkPreloadFetchHigh: + description: Priority adjustment high for link-preload-fetch + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.link-preload-fetch.high" + adjustLinkPreloadFetchAuto: + description: Priority adjustment auto for link-preload-fetch + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.link-preload-fetch.auto" + adjustDeferredStyleLow: + description: Priority adjustment low for deferred-style + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.deferred-style.low" + adjustDeferredStyleHigh: + description: Priority adjustment high for deferred-style + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.deferred-style.high" + adjustDeferredStyleAuto: + description: Priority adjustment auto for deferred-style + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.deferred-style.auto" + adjustLinkPreloadStyleLow: + description: Priority adjustment low for link-preload-style + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.link-preload-style.low" + adjustLinkPreloadStyleHigh: + description: Priority adjustment high for link-preload-style + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.link-preload-style.high" + adjustLinkPreloadStyleAuto: + description: Priority adjustment auto for link-preload-style + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.link-preload-style.auto" + adjustNonDeferredStyleLow: + description: Priority adjustment low for non-deferred-style + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.non-deferred-style.low" + adjustNonDeferredStyleHigh: + description: Priority adjustment high for non-deferred-style + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.non-deferred-style.high" + adjustNonDeferredStyleAuto: + description: Priority adjustment auto for non-deferred-style + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.non-deferred-style.auto" + adjustGlobalFetchApiLow: + description: Priority adjustment low for global-fetch-api + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.global-fetch-api.low" + adjustGlobalFetchApiHigh: + description: Priority adjustment high for global-fetch-api + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.global-fetch-api.high" + adjustGlobalFetchApiAuto: + description: Priority adjustment auto for global-fetch-api + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.global-fetch-api.auto" + adjustImagesLow: + description: Priority adjustment low for images + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.images.low" + adjustImagesHigh: + description: Priority adjustment high for images + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.images.high" + adjustImagesAuto: + description: Priority adjustment auto for images + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.images.auto" + +networkingAuth: + description: "Firefox Networking (Necko) Authentication" + owner: vgosu@mozilla.com + hasExposure: false + variables: + redirectForAuthRetriesEnabled: + description: Whether to enable redirects for auth retries + type: boolean + setPref: + branch: default + pref: "network.auth.use_redirect_for_retries" + +pingsender: + description: "In-product usage of the pingsender telemetry reporter." + owner: nalexander@mozilla.com + hasExposure: false + variables: + backgroundTaskEnabled: + type: "boolean" + fallbackPref: "toolkit.telemetry.shutdownPingSender.backgroundtask.enabled" + description: "Whether to use the `pingsender` background task to send shutdown telemetry" + +dapTelemetry: + description: DAP Telemetry + owner: simon@mozilla.com + hasExposure: false + variables: + enabled: + type: boolean + description: Whether to automatically send DAP measurements. + task1Enabled: + type: boolean + description: Whether to send fake measurements for task 1. + task1TaskId: + type: string + description: The task ID to use for task 1 measurements. + visitCountingEnabled: + type: boolean + description: Whether to count visits to the provided list of URLs. + visitCountingExperimentList: + type: json + description: A list of experiments with URLs for which we want to count visits. + +etpLevel2PBMPref: + description: The pref that controls the ETP level 2 list in the private browsing mode + owner: tihuang@mozilla.com + hasExposure: false + variables: + enabled: + description: Whether to enable ETP level 2 list in the private browsing mode. + type: boolean + setPref: + branch: default + pref: "privacy.annotate_channels.strict_list.pbmode.enabled" + +fxaButtonVisibility: + description: Prefs to control the visibility of the Firefox Accounts toolbar button when not signed in. + owner: mconley@mozilla.com + hasExposure: false + variables: + boolean: + description: True if the Firefox Accounts toolbar button should be visible when not signed in. + type: boolean + setPref: + branch: user + pref: identity.fxaccounts.toolbar.defaultVisible + pxiToolbarEnabled: + description: >- + True if we're enabling the PXI dropdown menu for the FxA toolbar button instead of + taking the user straight to login + type: boolean + setPref: + branch: user + pref: identity.fxaccounts.toolbar.pxiToolbarEnabled + monitorEnabled: + description: >- + Toggle the Monitor CTA + type: boolean + setPref: + branch: user + pref: identity.fxaccounts.toolbar.pxiToolbarEnabled.monitorEnabled + relayEnabled: + description: >- + Toggle the Relay CTA + type: boolean + setPref: + branch: user + pref: identity.fxaccounts.toolbar.pxiToolbarEnabled.relayEnabled + vpnEnabled: + description: >- + Toggle the VPN CTA + type: boolean + setPref: + branch: user + pref: identity.fxaccounts.toolbar.pxiToolbarEnabled.vpnEnabled + +legacyHeartbeat: + description: Normandy Heartbeat exposed to Nimbus + owner: barret@mozilla.com + hasExposure: false + schema: + uri: "resource://normandy/schemas/LegacyHeartbeat.schema.json" + path: "toolkit/components/normandy/schemas/LegacyHeartbeat.schema.json" + variables: + survey: + type: json + description: The Heartbeat survey parameters. + +queryStripping: + description: Query parameter stripping anti-tracking feature. + owner: pbz@mozilla.com + hasExposure: false + variables: + enabledNormalBrowsing: + type: boolean + setPref: + branch: default + pref: privacy.query_stripping.enabled + description: Enables / disables URL query string stripping in normal browsing mode. + enabledPrivateBrowsing: + type: boolean + setPref: + branch: default + pref: privacy.query_stripping.enabled.pbmode + description: Enables / disables URL query string stripping in private browsing mode. + allowList: + type: string + setPref: + branch: default + pref: privacy.query_stripping.allow_list + description: >- + List of sites exempt from query stripping. This list will be merged with + records coming from RemoteSettings. + stripList: + type: string + setPref: + branch: default + pref: privacy.query_stripping.strip_list + description: >- + List of query params to be stripped from URIs. This list will be merged + with records coming from RemoteSettings. + +fontvisibility: + description: Control Font Visibility in PBM + owner: tom@mozilla.com + hasExposure: false + variables: + enabledETP: + type: int + setPref: + branch: default + pref: layout.css.font-visibility.trackingprotection + description: Set the Font Visibility level when Enhanced Tracking Protection is enabled + enabledStandard: + type: int + setPref: + branch: default + pref: layout.css.font-visibility.standard + description: Set the Font Visibility level for normal browsing + enabledPBM: + type: int + setPref: + branch: default + pref: layout.css.font-visibility.private + description: Set the Font Visibility level for private browsing (will override ETP) + +fingerprintingProtection: + description: Control Fingerprinting Protection + owner: tihuang@mozilla.com + hasExposure: false + variables: + enabledNormal: + type: boolean + setPref: + branch: default + pref: privacy.fingerprintingProtection + description: Enables / disables fingerprinting protection in normal browsing mode. + enabledPrivate: + type: boolean + setPref: + branch: default + pref: privacy.fingerprintingProtection.pbmode + description: Enables / disables fingerprinting protection in private browsing mode. + overrides: + type: string + setPref: + branch: default + pref: privacy.fingerprintingProtection.overrides + description: >- + The protection overrides to add or remove fingerprinting protection + targets. Please check RFPTargets.inc for all supported targets. + fdlibm_math: + type: boolean + setPref: + branch: default + pref: javascript.options.use_fdlibm_for_sin_cos_tan + description: >- + Uses a different math backend for Math.sin/cos/tan in JavaScript that exposes less entropy + +migrationWizard: + description: Prefs to control the Migration Wizard UI. + owner: mconley@mozilla.com + hasExposure: false + variables: + showImportAll: + description: True if the "Variant 2" of the Migration Wizard browser / profile selection UI should be used. This is only meaningful in the new Migration Wizard. + type: boolean + setPref: + branch: user + pref: browser.migrate.content-modal.import-all.enabled + showPreferencesEntrypoint: + description: True if an entrypoint to the migration wizard should be visible in about:preferences. + type: boolean + setPref: + branch: user + pref: browser.migrate.preferences-entrypoint.enabled + aboutWelcomeBehavior: + description: >- + When migration is kicked off from about:welcome, there are + a few different behaviors that we want to test, controlled + by a preference that is instrumented for Nimbus. The pref + has the following possible states: + + "autoclose": + The user will be directed to the migration wizard in + about:preferences, but once the wizard is dismissed, + the tab will close. + + "embedded": + The migration wizard is embedded in about:welcome. + + "standalone": + The migration wizard will open in a new top-level content + window. + + "default" / other + The user will be directed to the migration wizard in + about:preferences. The tab will not close once the + user closes the wizard. + type: string + setPref: + branch: user + pref: browser.migrate.content-modal.about-welcome-behavior + migrateExtensions: + description: True if importing extensions is enabled. + type: boolean + setPref: + branch: user + pref: browser.migrate.chrome.extensions.enabled + chromeCanRequestPermissions: + description: >- + True if Chrome-based browsers can request read permissions on + platforms where the browser is restricted from reading the contents + of a Chrome-based browser's user data directory. In practice, this + is only relevant to the Linux platform when the browser is installed + as a Snap package. + type: boolean + setPref: + branch: user + pref: browser.migrate.chrome.get_permissions.enabled + +mixedContentUpgrading: + description: Prefs to control whether we upgrade mixed passive content (images, audio, video) from http to https + owner: fbraun@mozilla.com + hasExposure: false + variables: + enabled: + description: True if the mixed content upgrading pref is enabled + type: boolean + setPref: + branch: default + pref: security.mixed_content.upgrade_display_content + image: + description: True if the mixed content upgrading is enabled for images + type: boolean + setPref: + branch: default + pref: security.mixed_content.upgrade_display_content.image + audio: + description: True if the mixed content upgrading is enabled for audio + type: boolean + setPref: + branch: default + pref: security.mixed_content.upgrade_display_content.audio + video: + description: True if the mixed content upgrading is enabled for videos + type: boolean + setPref: + branch: default + pref: security.mixed_content.upgrade_display_content.video + +gc: + description: Prefs that control gc heuristics. + owner: dpalmeiro@mozilla.com + hasExposure: false + variables: + max_nursery_size: + description: Set the maximum size of the GC nursery, in kb. + type: int + setPref: + branch: user + pref: "javascript.options.mem.nursery.max_kb" + min_nursery_size: + description: Set the minimum size of the GC nursery, in kb. + type: int + setPref: + branch: user + pref: "javascript.options.mem.nursery.min_kb" + gc_allocation_threshold_mb: + description: Lower limit for collecting a zone, in MB. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_allocation_threshold_mb" + gc_balanced_heap_limits: + description: Whether balanced heap limits are enabled. + type: boolean + setPref: + branch: user + pref: "javascript.options.mem.gc_balanced_heap_limits" + gc_compacting: + description: Whether compacting GC is enabled. + type: boolean + setPref: + branch: user + pref: "javascript.options.mem.gc_compacting" + gc_heap_growth_factor: + description: Heap growth parameter for balanced heap limit calculation. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_heap_growth_factor" + gc_helper_thread_ratio: + description: Number of threads to use for parallel GC work. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_helper_thread_ratio" + gc_high_frequency_large_heap_growth: + description: Heap growth factor for large heaps in the high-frequency GC state. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_high_frequency_large_heap_growth" + gc_high_frequency_small_heap_growth: + description: Heap growth factor for small heaps in the high-frequency GC state. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_high_frequency_small_heap_growth" + gc_high_frequency_time_limit_ms: + description: GCs less than this far apart in milliseconds will be + considered high-frequency GCs. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_high_frequency_time_limit_ms" + gc_incremental: + description: Whether incremental GC is enabled. If not, GC will always run to completion. + type: boolean + setPref: + branch: user + pref: "javascript.options.mem.gc_incremental" + incremental_weakmap: + description: Enable incremental weakmap marking. + type: boolean + setPref: + branch: user + pref: "javascript.options.mem.incremental_weakmap" + gc_incremental_slice_ms: + description: Max milliseconds to spend in a non-idle incremental GC slice. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_incremental_slice_ms" + gc_large_heap_incremental_limit: + description: Limit of how far over the incremental trigger threshold we allow the + heap to grow before finishing a collection non-incrementally, for large heaps. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_large_heap_incremental_limit" + gc_large_heap_size_min_mb: + description: Lower limit for classifying a heap as large, in MB. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_large_heap_size_min_mb" + gc_low_frequency_heap_growth: + description: Heap growth factor for low frequency GCs. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_low_frequency_heap_growth" + gc_malloc_threshold_base_mb: + description: Set the malloc threshold base value in MB. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_malloc_threshold_base_mb" + gc_max_empty_chunk_count: + description: Do not keep more than this many unused chunks in the free chunk pool. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_max_empty_chunk_count" + gc_max_helper_threads: + description: The maximum number of background threads to use for parallel GC work. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_max_helper_threads" + gc_min_empty_chunk_count: + description: We try to keep at least this many unused chunks in the free chunk + pool at all times, even after a shrinking GC. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_min_empty_chunk_count" + gc_parallel_marking: + description: Enable parallel marking. + type: boolean + setPref: + branch: user + pref: "javascript.options.mem.gc_parallel_marking" + gc_parallel_marking_threshold_mb: + description: The heap size above which to use parallel marking. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_parallel_marking_threshold_mb" + gc_max_parallel_marking_threads: + description: The maximum number of threads to use for parallel marking, if enabled. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_max_parallel_marking_threads" + gc_per_zone: + description: Whether per-zone GC is enabled. If not, all zones are collected every time. + type: boolean + setPref: + branch: user + pref: "javascript.options.mem.gc_per_zone" + gc_small_heap_incremental_limit: + description: Limit of how far over the incremental trigger threshold we allow the heap + to grow before finishing a collection non-incrementally, for small heaps. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_small_heap_incremental_limit" + gc_small_heap_size_max_mb: + description: Upper limit for classifying a heap as small, in MB. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_small_heap_size_max_mb" + gc_urgent_threshold_mb: + description: Set the urgent threshold, in MB. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_urgent_threshold_mb" + nursery_eager_collection_threshold_kb: + description: Set the eager collection threshold, in kb, for the nursery. + type: int + setPref: + branch: user + pref: "javascript.options.mem.nursery_eager_collection_threshold_kb" + nursery_eager_collection_threshold_percent: + description: Set the eager collection percent threshold for the nursery. + type: int + setPref: + branch: user + pref: "javascript.options.mem.nursery_eager_collection_threshold_percent" + nursery_eager_collection_timeout_ms: + description: Set the eager collection timeout, in ms, for the nursery. + type: int + setPref: + branch: user + pref: "javascript.options.mem.nursery_eager_collection_timeout_ms" + +jsParallelParsing: + description: Pref to toggle JS parallel parsing. + owner: dpalmeiro@mozilla.com, nbp@mozilla.com + hasExposure: false + variables: + enabled: + description: True to enable parallel parsing. + type: boolean + setPref: + branch: user + pref: "javascript.options.parallel_parsing" + +jitThresholds: + description: Prefs that control jit tier thresholds. + owner: dpalmeiro@mozilla.com, jdemooij@mozilla.com + hasExposure: false + variables: + blinterp_threshold: + description: Set the threshold to enable blinterp compilation. + type: int + setPref: + branch: user + pref: "javascript.options.blinterp.threshold" + baseline_threshold: + description: Set the threshold to enable baseline compilation. + type: int + setPref: + branch: user + pref: "javascript.options.baselinejit.threshold" + ion_threshold: + description: Set the threshold to enable ion compilation. + type: int + setPref: + branch: user + pref: "javascript.options.ion.threshold" + ion_bailout_threshold: + description: Set the ion frequent bailout threshold. + type: int + setPref: + branch: user + pref: "javascript.options.ion.frequent_bailout_threshold" + ion_offthread_compilation: + description: True to enable offthread ion compilations. + type: boolean + setPref: + branch: user + pref: "javascript.options.ion.offthread_compilation" + inlining_max_length: + description: Set the max bytecode length considered for inlining. + type: int + setPref: + branch: user + pref: "javascript.options.inlining_bytecode_max_length" + +jitHintsCache: + description: Pref to toggle the JIT hints cache. + owner: dpalmeiro@mozilla.com + hasExposure: false + variables: + enabled: + description: True to enable the hints cache. + type: boolean + setPref: + branch: user + pref: "javascript.options.jithints" + +raceCacheWithNetwork: + description: Prefs to toggle the race cache with network. + owner: dpalmeiro@mozilla.com, acreskey@mozilla.com + hasExposure: false + variables: + enabled: + description: True to enable the rcwn feature. + type: boolean + setPref: + branch: default + pref: "network.http.rcwn.enabled" + +shopping2023: + description: Prefs to control the 2023 shopping experiment. + owner: jhirsch@mozilla.com + hasExposure: true + exposureDescription: >- + The timing of the exposure event depends on the experiment, but generally + the event is recorded when the user first encounters onboarding UI for + the shopping feature. + variables: + enabled: + description: True if the experience is enabled (experimental treatment group) + type: boolean + fallbackPref: browser.shopping.experience2023.enabled + control: + description: True if the experiment is enabled but experience is disabled (experimental control group) + type: boolean + fallbackPref: browser.shopping.experience2023.control + adsEnabled: + description: True if showing recommended products is enabled + type: boolean + setPref: + branch: default + pref: browser.shopping.experience2023.ads.enabled + adsExposure: + description: True if we want to record ad inventory for opted-in users, even if ads are disabled + type: boolean + setPref: + branch: default + pref: browser.shopping.experience2023.ads.exposure + surveyEnabled: + description: True if showing survey is enabled + type: boolean + fallbackPref: browser.shopping.experience2023.survey.enabled + autoOpenEnabled: + description: True if auto-open behavior for the sidebar is enabled + type: boolean + setPref: + branch: default + pref: browser.shopping.experience2023.autoOpen.enabled + +shoppingOHTTP: + description: Prefs to control the OHTTP URLs used for shopping. + owner: gijs@mozilla.com + hasExposure: false + variables: + ohttpRelayURL: + description: What OHTTP relay URL to use + type: string + setPref: + branch: default + pref: toolkit.shopping.ohttpRelayURL + ohttpConfigURL: + description: URL for the OHTTP config to use + type: string + setPref: + branch: default + pref: toolkit.shopping.ohttpConfigURL + +opaqueResponseBlocking: + description: Prefs to enable Opaque Response Blocking + owner: farre@mozilla.com + hasExposure: true + exposureDescription: Exposure is sent when a response is blocked + variables: + enabled: + description: Whether ORB is enabled + type: boolean + setPref: + branch: user + pref: "browser.opaqueResponseBlocking" + javascriptValidator: + description: Whether JavaScript validation for ORB is enabled + type: boolean + setPref: + branch: user + pref: "browser.opaqueResponseBlocking.javascriptValidator" + filterFetchResponse: + description: Whether filtering of internal responses in the parent ORB is enabled + type: int + setPref: + branch: user + pref: "browser.opaqueResponseBlocking.filterFetchResponse" + mediaExceptionsStrategy: + description: >- + If we partially or wholly allow audio and video MIME types in conflict with spec. + type: int + setPref: + branch: user + pref: "browser.opaqueResponseBlocking.mediaExceptionsStrategy" + +updatePrompt: + description: Prefs to control content and behavior of update notifications + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + Exposure is sent at most once per browsing session when an update + notification prompt is displayed. + variables: + showReleaseNotesLink: + type: boolean + description: >- + If true, the "Learn More" link will be shown in the update prompt. If + false or omitted, the link will only be shown for supported locales. + releaseNotesURL: + type: string + fallbackPref: app.releaseNotesURL.prompt + description: >- + Template for the URL opened when the user clicks the "Learn More" link + in the update prompt. If an empty string, the link will not be shown. + +powerSaver: + description: Prefs to control power saving behaviors + owner: florian@mozilla.com + hasExposure: false + variables: + reduceFrameRates: + type: int + setPref: + branch: user + pref: "gfx.display.max-frame-rate" + description: >- + Limit the number of frames displayed per second. + If omitted, the refresh rate of the screen will be used. + mediaAutoPlay: + type: int + setPref: + branch: user + pref: "media.autoplay.default" + description: >- + Control if media is allowed to auto-play, with and without sound. + backgroundTimerMinTime: + type: int + setPref: + branch: user + pref: "dom.min_background_timeout_value" + description: >- + Limit how frequently timers are allowed to run in background tabs. + backgroundTimerRegenerationRate: + type: int + setPref: + branch: user + pref: "dom.timeout.background_budget_regeneration_rate" + description: >- + Limit how quickly the background tab timer budget regenerates. + +backgroundUpdate: + description: Prefs to control aspects of the background update process. + owner: install-update@mozilla.com + hasExposure: true + exposureDescription: >- + The exposure event is sent when scheduling the background task and both the + feature is enabled and the service registry key (Mozilla Maintenance + Service) is *not* available for this installation. That is the first time + the feature can impact Firefox behaviour and the user experience. + variables: + enableUpdatesForUnelevatedInstallations: + description: >- + Allow the background update process to download and apply updates when + the Mozilla Maintenance Service is unavailable but the installation + directory can be written. + type: boolean + setPref: + branch: user + pref: app.update.background.allowUpdatesForUnelevatedInstallations + +bookmarks: + description: Prefs to control aspects of the bookmarks system. + owner: omc@mozilla.com + hasExposure: false + variables: + enableBookmarksToolbar: + type: string + setPref: + branch: user + pref: browser.toolbars.bookmarks.visibility + description: If the bookmarks toolbar should never, always, or only show on newtab. + +cookieBannerHandling: + description: Automatically handle cookie banners on the user's behalf. + owner: pbz@mozilla.com + hasExposure: false + variables: + modeNormalBrowsing: + type: int + setPref: + branch: default + pref: cookiebanners.service.mode + description: >- + Controls the cookie banner handling mode in normal browsing. + Values: 0 - disabled, 1 - reject all, 2 - reject all with accept all fallback. + modePrivateBrowsing: + type: int + setPref: + branch: default + pref: cookiebanners.service.mode.privateBrowsing + description: >- + Controls the cookie banner handling mode in private browsing. + Values: 0 - disabled, 1 - reject all, 2 - reject all with accept all fallback. + enableGlobalRules: + type: boolean + setPref: + branch: default + pref: cookiebanners.service.enableGlobalRules + description: >- + Enables use of global CookieBannerRules, which apply to all sites. + This enables handling of CMPs across sites without the use of site-specific rules. + enableGlobalRulesSubFrames: + type: boolean + setPref: + branch: default + pref: cookiebanners.service.enableGlobalRules.subFrames + description: >- + Whether global rules are allowed to run in sub-frames. Running query + selectors in every sub-frame may negatively impact performance, but is + required for some CMPs. + enableDetectOnly: + type: boolean + setPref: + branch: default + pref: cookiebanners.service.detectOnly + description: >- + When set to true, cookie banners are detected and detection events are + dispatched, but they will not be handled. + This pref applies to both normal and private browsing windows. + enableFirefoxDesktopUI: + type: boolean + setPref: + branch: default + pref: cookiebanners.ui.desktop.enabled + description: Enables the cookie banner desktop UI. + enablePromo: + type: boolean + setPref: + branch: default + pref: browser.promo.cookiebanners.enabled + description: Enables the cookie banner promo in about:privatebrowsing. + enableDesktopFeatureCallout: + type: boolean + setPref: + branch: default + pref: cookiebanners.ui.desktop.showCallout + description: Enables the cookie banner feature callout on desktop. + +backgroundThreads: + description: Prefs to control MacOS thread priorities for power savings. + owner: kwright@mozilla.com + hasExposure: false + variables: + use_low_power: + description: >- + Use the MacOS QoS libraries to deprioritize select threads. + type: boolean + setPref: + branch: user + pref: threads.use_low_power.enabled + lower_mainthread_priority_in_background: + description: >- + When a browsing context is put in the background and isn't actively playing + media, deprioritize its main thread. + type: boolean + setPref: + branch: user + pref: threads.lower_mainthread_priority_in_background.enabled + +reportBrokenSite: + description: The Report Broken Site feature + owner: twisniewski@mozilla.com + hasExposure: false + variables: + enabled: + type: boolean + setPref: + branch: user + pref: ui.new-webcompat-reporter.enabled + description: >- + Whether Report Broken Site is enabled + sendMoreInfo: + type: boolean + setPref: + branch: user + pref: ui.new-webcompat-reporter.send-more-info-link + description: >- + Whether Report Broken Site shows the send more info link directing + users to webcompat.com (defaults to true for prerelease channels) + reasonDropdown: + type: int + setPref: + branch: user + pref: ui.new-webcompat-reporter.reason-dropdown + description: >- + 0 = do not show the "reason" dropdown + 1 = show an optional "reason" dropdown + 2 = show a required "reason" dropdown + +feltPrivacy: + description: Prefs for Felt Privacy v1 experiments + owner: cmeador@mozilla.com + hasExposure: true + exposureDescription: Exposure when user opens a private browsing window. + variables: + feltPrivacy: + type: boolean + setPref: + branch: default + pref: browser.privatebrowsing.felt-privacy-v1 + description: >- + When true, new styles and copy enabled on about:privatebrowsing. When true, + a toggle for showing or hiding quick suggestions appears in about:preferences. + resetPBMAction: + type: boolean + setPref: + branch: default + pref: browser.privatebrowsing.resetPBM.enabled + description: >- + Enables the reset PBM feature button and confirmation panel. + +phc: + description: Prefs to control the Probabalistic Heap Checker (PHC) + owner: pbone@mozilla.com + hasExposure: false + variables: + phcEnabled: + description: Whether to enable PHC + type: boolean + setPref: + branch: user + pref: memory.phc.enabled + phcMinRamMB: + description: The minimum amount of RAM required to enable PHC + type: int + setPref: + branch: user + pref: memory.phc.min_ram_mb + phcAvgDelayFirst: + description: The delay before the first PHC allocation + type: int + setPref: + branch: user + pref: memory.phc.avg_delay.first + phcAvgDelayNormal: + description: The delay between PHC allocations + type: int + setPref: + branch: user + pref: memory.phc.avg_delay.normal + phcAvgDelayPageReuse: + description: The delay before reusing a PHC page + type: int + setPref: + branch: user + pref: memory.phc.avg_delay.page_reuse + +mailto: + description: Prefs to control aspects of the mailto handler + owner: install-update@mozilla.com + hasExposure: true + exposureDescription: >- + The exposure event is sent when a webmail site calls the + registerProtocolHandler function and when users use mailto links in Firefox. + variables: + dualPrompt: + type: boolean + description: >- + Can be used to toggle the entire feature on and off. + fallbackPref: browser.mailto.dualPrompt + dualPrompt.onLocationChange: + type: boolean + description: >- + Display a reminder prompt for known webmailers if the prompt was not + dismissed before the next visit of that webmailer. + fallbackPref: browser.mailto.dualPrompt.onLocationChange + dualPrompt.dismissXClickMinutes: + type: int + description: >- + This pref controls after how many minutes the mailto prompt can be shown + again, which has been dismissed by clicking the 'X' button before. + fallbackPref: browser.mailto.dualPrompt.dismissXClickMinutes + dualPrompt.dismissNotNowMinutes: + type: int + description: >- + This pref controls after how many minutes the mailto prompt can be shown + again, which has been dismissed by clicking a 'not now' button on it. + fallbackPref: browser.mailto.dualPrompt.dismissNotNowMinutes + +nimbusIsReady: + description: A feature that provides the number of Nimbus is_ready events to send + when Nimbus is ready. + owner: chumphreys@mozilla.com + hasExposure: false + applications: + - firefox-desktop + variables: + eventCount: + description: The number of events that should be sent. + type: int + +nimbusTelemetry: + description: A feature that enables or disables Nimbus telemetry. + owner: chumphreys@mozilla.com + hasExposure: false + applications: + - firefox-desktop + variables: + gleanMetricConfiguration: + description: A Glean metric configuration JSON blob. + type: json + +httpsFirst: + description: >- + Prefs for HTTPS-First, which upgrades all top-level page loads to HTTPS and + provides a automatic fallback to HTTP if the site isn't available via HTTPS. + owner: mjurgens@mozilla.com, seceng-telemetry@mozilla.com + hasExposure: false + variables: + enabled: + description: Enable HTTPS-First + type: boolean + setPref: + branch: default + pref: dom.security.https_first + enabledPbm: + description: Enable HTTPS-First in private browsing only + type: boolean + setPref: + branch: default + pref: dom.security.https_first_pbm + enabledSchemeless: + description: >- + Enables schemeless HTTPS-First, which will only apply HTTPS-First to address + bar inputs without a scheme. This essentially makes HTTPS the default + scheme in the address bar, while providing a fallback to HTTP. + type: boolean + setPref: + branch: default + pref: dom.security.https_first_schemeless + backgroundTimerMs: + description: >- + After a request gets upgraded to HTTPS, specifies the time after which a + second HTTP request is fired to check if the site is available via + HTTPS, but timing out via HTTPS. This also applies to HTTPS-Only, not + just HTTPS-First. + type: int + setPref: + branch: default + pref: dom.security.https_only_fire_http_request_background_timer_ms + +contentRelevancy: + description: >- + A feature for interest-based content relevance ranking and personalization + for Firefox. + owner: disco-team@mozilla.com + hasExposure: false + variables: + enabled: + description: Enable this feature + type: boolean + fallbackPref: toolkit.contentRelevancy.enabled + maxInputUrls: + description: The maximum number of input URLs for interest classification + type: int + minInputUrls: + description: The minimal number of input URLs for interest classification + type: int + timerInterval: + description: >- + The interval (in seconds) of the background update timer for the content + relevancy manager + type: int + setPref: + branch: user + pref: toolkit.contentRelevancy.timerInterval + ingestEnabled: + description: Enable the ingestion through the Rust component + type: boolean + fallbackPref: toolkit.contentRelevancy.ingestEnabled + +tabPreview: + description: Prefs to control Tab Previews + owner: dwalker@mozilla.com + hasExposure: false + variables: + tabPreviewsEnabled: + type: boolean + setPref: + branch: default + pref: browser.tabs.hoverPreview.enabled + description: >- + When true, users will see the new card preview when hovering a tab, instead of the standard tooltip + +backupService: + description: Prefs to control the profile backup service + owner: mconley@mozilla.com + hasExposure: false + variables: + enabled: + type: boolean + setPref: + branch: default + pref: browser.backup.enabled + description: >- + When true, the profile backup service will be initialized soon after + startup. + prefsUIEnabled: + type: boolean + setPref: + branch: default + pref: browser.backup.preferences.ui.enabled + description: >- + When true, the section in about:preferences to control the backup + feature is visible. + sqlitePagesPerStep: + description: >- + The number of database pages to backup per step when backing up an + SQLite database. + type: int + setPref: + branch: user + pref: browser.backup.sqlite.pages_per_step + sqliteStepDelayMs: + description: >- + The delay between SQLite database backup steps in milliseconds. + type: int + setPref: + branch: user + pref: browser.backup.sqlite.step_delay_ms + +pqcrypto: + description: Prefs that control the use of post-quantum cryptography. + owner: jschanck@mozilla.com + hasExposure: false + variables: + tlsEnableXyber: + type: boolean + setPref: + branch: default + pref: security.tls.enable_kyber + description: >- + Whether to enable Xyber768 for TLS. + h3EnableXyber: + type: boolean + setPref: + branch: default + pref: network.http.http3.enable_kyber + description: >- + Whether to enable Xyber768 for H3/QUIC. + +dtlsWebRTC: + description: Pref that controls the use of DTLS. + owner: nkulatova@mozilla.com + hasExposure: false + variables: + tlsVersionDTLS: + type: int + setPref: + branch: default + pref: media.peerconnection.dtls.version.max + description: >- + The maximum version of DTLS protocol used in WebRTC (770 = DTLS 1.0, 771 = DTLS 1.2, 772 = DTLS 1.3). + +certCompression: + description: Prefs that control the use of certificate compression decoders. + owner: anna.weine@mozilla.com + hasExposure: false + variables: + tlsEnableZlib: + type: boolean + setPref: + branch: default + pref: security.tls.enable_certificate_compression_zlib + description: >- + Whether to enable Zlib for TLS certificate compression. + tlsEnableBrotli: + type: boolean + setPref: + branch: default + pref: security.tls.enable_certificate_compression_brotli + description: >- + Whether to enable Brotli for TLS certificate compression. +bounceTrackingProtection: + description: Controls the Bounce Tracking Protection feature. + owner: pbz@mozilla.com + hasExposure: false + variables: + enabled: + type: boolean + setPref: + branch: default + pref: privacy.bounceTrackingProtection.enabled + description: Main flag to enable / disable the feature. + enableDryRunMode: + type: boolean + setPref: + branch: default + pref: privacy.bounceTrackingProtection.enableDryRunMode + description: >- + Enables a mode where if bounce tracking protection is enabled it + classifies but does not purge trackers. This mode is helpful for testing + the feature without risking data loss. Telemetry is still collected + normally. diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/v128.7.0/schemas/browser/components/asrouter/content-src/schemas/BackgroundTaskMessagingExperiment.schema.json b/experimenter/experimenter/features/manifests/firefox-desktop/v128.7.0/schemas/browser/components/asrouter/content-src/schemas/BackgroundTaskMessagingExperiment.schema.json new file mode 100644 index 0000000000..5fe86f9617 --- /dev/null +++ b/experimenter/experimenter/features/manifests/firefox-desktop/v128.7.0/schemas/browser/components/asrouter/content-src/schemas/BackgroundTaskMessagingExperiment.schema.json @@ -0,0 +1,344 @@ +{ + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json", + "title": "Messaging Experiment", + "description": "A Firefox Messaging System message.", + "if": { + "type": "object", + "properties": { + "template": { + "const": "multi" + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/MultiMessage" + }, + "else": { + "$ref": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/TemplatedMessage" + }, + "$defs": { + "ToastNotification": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///ToastNotification.schema.json", + "title": "ToastNotification", + "description": "A template for toast notifications displayed by the Alert service.", + "allOf": [ + { + "$ref": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "content": { + "type": "object", + "properties": { + "title": { + "$ref": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/localizableText", + "description": "Id of localized string or message override of toast notification title" + }, + "body": { + "$ref": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/localizableText", + "description": "Id of localized string or message override of toast notification body" + }, + "icon_url": { + "description": "The URL of the image used as an icon of the toast notification.", + "type": "string", + "format": "moz-url-format" + }, + "image_url": { + "description": "The URL of an image to be displayed as part of the notification.", + "type": "string", + "format": "moz-url-format" + }, + "launch_url": { + "description": "The URL to launch when the notification or an action button is clicked.", + "type": "string", + "format": "moz-url-format" + }, + "launch_action": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "The launch action to be performed when Firefox is launched." + }, + "data": { + "type": "object" + } + }, + "required": [ + "type" + ], + "additionalProperties": true + }, + "requireInteraction": { + "type": "boolean", + "description": "Whether the toast notification should remain active until the user clicks or dismisses it, rather than closing automatically." + }, + "tag": { + "type": "string", + "description": "An identifying tag for the toast notification." + }, + "data": { + "type": "object", + "description": "Arbitrary data associated with the toast notification." + }, + "actions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "$ref": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/localizableText", + "description": "The action text to be shown to the user." + }, + "action": { + "type": "string", + "description": "Opaque identifer that identifies action." + }, + "iconURL": { + "type": "string", + "format": "uri", + "description": "URL of an icon to display with the action." + }, + "windowsSystemActivationType": { + "type": "boolean", + "description": "Whether to have Windows process the given `action`." + }, + "launch_action": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "The launch action to be performed when Firefox is launched." + }, + "data": { + "type": "object" + } + }, + "required": [ + "type" + ], + "additionalProperties": true + } + }, + "required": [ + "action", + "title" + ], + "additionalProperties": true + } + } + }, + "additionalProperties": true, + "required": [ + "title", + "body" + ] + }, + "template": { + "type": "string", + "const": "toast_notification" + } + }, + "required": [ + "content", + "targeting", + "template", + "trigger" + ], + "additionalProperties": true + }, + "Message": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The message identifier" + }, + "groups": { + "description": "Array of preferences used to control `enabled` status of the group. If any is `false` the group is disabled.", + "type": "array", + "items": { + "type": "string", + "description": "Preference name" + } + }, + "template": { + "type": "string", + "description": "Which messaging template this message is using.", + "enum": [ + "toast_notification" + ] + }, + "frequency": { + "type": "object", + "description": "An object containing frequency cap information for a message.", + "properties": { + "lifetime": { + "type": "integer", + "description": "The maximum lifetime impressions for a message.", + "minimum": 1, + "maximum": 100 + }, + "custom": { + "type": "array", + "description": "An array of custom frequency cap definitions.", + "items": { + "description": "A frequency cap definition containing time and max impression information", + "type": "object", + "properties": { + "period": { + "type": "integer", + "description": "Period of time in milliseconds (e.g. 86400000 for one day)" + }, + "cap": { + "type": "integer", + "description": "The maximum impressions for the message within the defined period.", + "minimum": 1, + "maximum": 100 + } + }, + "required": [ + "period", + "cap" + ] + } + } + } + }, + "priority": { + "description": "The priority of the message. If there are two competing messages to show, the one with the highest priority will be shown", + "type": "integer" + }, + "order": { + "description": "The order in which messages should be shown. Messages will be shown in increasing order.", + "type": "integer" + }, + "targeting": { + "description": "A JEXL expression representing targeting information", + "type": "string" + }, + "trigger": { + "description": "An action to trigger potentially showing the message", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "A string identifying the trigger action" + }, + "params": { + "type": "array", + "description": "An optional array of string parameters for the trigger action", + "items": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] + } + } + }, + "required": [ + "id" + ] + }, + "provider": { + "description": "An identifier for the provider of this message, such as \"cfr\" or \"preview\".", + "type": "string" + } + }, + "additionalProperties": true, + "dependentRequired": { + "content": [ + "id", + "template" + ], + "template": [ + "id", + "content" + ] + } + }, + "localizedText": { + "type": "object", + "properties": { + "string_id": { + "description": "Id of localized string to be rendered.", + "type": "string" + } + }, + "required": [ + "string_id" + ] + }, + "localizableText": { + "description": "Either a raw string or an object containing the string_id of the localized text", + "oneOf": [ + { + "type": "string", + "description": "The string to be rendered." + }, + { + "$ref": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/localizedText" + } + ] + }, + "TemplatedMessage": { + "description": "An FxMS message of one of a variety of types.", + "type": "object", + "allOf": [ + { + "$ref": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/Message" + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "toast_notification" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/ToastNotification" + } + } + ] + }, + "MultiMessage": { + "description": "An object containing an array of messages.", + "type": "object", + "properties": { + "template": { + "type": "string", + "const": "multi" + }, + "messages": { + "type": "array", + "description": "An array of messages.", + "items": { + "$ref": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/TemplatedMessage" + } + } + }, + "required": [ + "template", + "messages" + ] + } + } +} diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/v128.7.0/schemas/browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json b/experimenter/experimenter/features/manifests/firefox-desktop/v128.7.0/schemas/browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json new file mode 100644 index 0000000000..dd4ce4776d --- /dev/null +++ b/experimenter/experimenter/features/manifests/firefox-desktop/v128.7.0/schemas/browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json @@ -0,0 +1,1447 @@ +{ + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json", + "title": "Messaging Experiment", + "description": "A Firefox Messaging System message.", + "if": { + "type": "object", + "properties": { + "template": { + "const": "multi" + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/MultiMessage" + }, + "else": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/TemplatedMessage" + }, + "$defs": { + "CFRUrlbarChiclet": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///CFRUrlbarChiclet.schema.json", + "title": "CFRUrlbarChiclet", + "description": "A template with a chiclet button with text.", + "allOf": [ + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "content": { + "type": "object", + "properties": { + "category": { + "type": "string", + "description": "Attribute used for different groups of messages from the same provider" + }, + "layout": { + "type": "string", + "description": "Describes how content should be displayed.", + "enum": [ + "chiclet_open_url" + ] + }, + "bucket_id": { + "type": "string", + "description": "A bucket identifier for the addon. This is used in order to anonymize telemetry for history-sensitive targeting." + }, + "notification_text": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "The text in the small blue chicklet that appears in the URL bar. This can be a reference to a localized string in Firefox or just a plain string." + }, + "active_color": { + "type": "string", + "description": "Background color of the button" + }, + "action": { + "type": "object", + "properties": { + "url": { + "description": "The page to open when the button is clicked.", + "type": "string", + "format": "moz-url-format" + }, + "where": { + "description": "Should it open in a new tab or the current tab", + "type": "string", + "enum": [ + "current", + "tabshifted" + ] + } + }, + "additionalProperties": true, + "required": [ + "url", + "where" + ] + } + }, + "additionalProperties": true, + "required": [ + "layout", + "category", + "bucket_id", + "notification_text", + "action" + ] + }, + "template": { + "type": "string", + "const": "cfr_urlbar_chiclet" + } + }, + "required": [ + "targeting", + "trigger" + ] + }, + "ExtensionDoorhanger": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///ExtensionDoorhanger.schema.json", + "title": "ExtensionDoorhanger", + "description": "A template with a heading, addon icon, title and description. No markup allowed.", + "allOf": [ + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "content": { + "type": "object", + "properties": { + "category": { + "type": "string", + "description": "Attribute used for different groups of messages from the same provider" + }, + "layout": { + "type": "string", + "description": "Attribute used for different groups of messages from the same provider", + "enum": [ + "short_message", + "icon_and_message", + "addon_recommendation" + ] + }, + "anchor_id": { + "type": "string", + "description": "A DOM element ID that the pop-over will be anchored." + }, + "alt_anchor_id": { + "type": "string", + "description": "An alternate DOM element ID that the pop-over will be anchored." + }, + "bucket_id": { + "type": "string", + "description": "A bucket identifier for the addon. This is used in order to anonymize telemetry for history-sensitive targeting." + }, + "skip_address_bar_notifier": { + "type": "boolean", + "description": "Skip the 'Recommend' notifier and show directly." + }, + "persistent_doorhanger": { + "type": "boolean", + "description": "Prevent the doorhanger from being dismissed if user interacts with the page or switches between applications." + }, + "show_in_private_browsing": { + "type": "boolean", + "description": "Whether to allow the message to be shown in private browsing mode. Defaults to false." + }, + "notification_text": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "The text in the small blue chicklet that appears in the URL bar. This can be a reference to a localized string in Firefox or just a plain string." + }, + "info_icon": { + "type": "object", + "description": "The small icon displayed in the top right corner of the pop-over. Should be 19x19px, svg or png. Defaults to a small question mark.", + "properties": { + "label": { + "oneOf": [ + { + "type": "object", + "properties": { + "attributes": { + "type": "object", + "properties": { + "tooltiptext": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "Text for button tooltip used to provide information about the doorhanger." + } + }, + "required": [ + "tooltiptext" + ] + } + }, + "required": [ + "attributes" + ] + }, + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizedText" + } + ] + }, + "sumo_path": { + "type": "string", + "description": "Last part of the path in the URL to the support page with the information about the doorhanger.", + "examples": [ + "extensionpromotions", + "extensionrecommendations" + ] + } + } + }, + "learn_more": { + "type": "string", + "description": "Last part of the path in the SUMO URL to the support page with the information about the doorhanger.", + "examples": [ + "extensionpromotions", + "extensionrecommendations" + ] + }, + "heading_text": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "The larger heading text displayed in the pop-over. This can be a reference to a localized string in Firefox or just a plain string." + }, + "icon": { + "$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/linkUrl", + "description": "The icon displayed in the pop-over. Should be 32x32px or 64x64px and png/svg." + }, + "icon_dark_theme": { + "type": "string", + "description": "Pop-over icon, dark theme variant. Should be 32x32px or 64x64px and png/svg." + }, + "icon_class": { + "type": "string", + "description": "CSS class of the pop-over icon." + }, + "addon": { + "description": "Addon information including AMO URL.", + "type": "object", + "properties": { + "id": { + "$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/plainText", + "description": "Unique addon ID" + }, + "title": { + "$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/plainText", + "description": "Addon name" + }, + "author": { + "$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/plainText", + "description": "Addon author" + }, + "icon": { + "$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/linkUrl", + "description": "The icon displayed in the pop-over. Should be 64x64px and png/svg." + }, + "rating": { + "type": "string", + "description": "Star rating" + }, + "users": { + "type": "string", + "description": "Installed users" + }, + "amo_url": { + "$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/linkUrl", + "description": "Link that offers more information related to the addon." + } + }, + "required": [ + "title", + "author", + "icon", + "amo_url" + ] + }, + "text": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "The body text displayed in the pop-over. This can be a reference to a localized string in Firefox or just a plain string." + }, + "descriptionDetails": { + "description": "Additional information and steps on how to use", + "type": "object", + "properties": { + "steps": { + "description": "Array of string_ids", + "type": "array", + "items": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizedText", + "description": "Id of string to localized addon description" + } + } + }, + "required": [ + "steps" + ] + }, + "buttons": { + "description": "The label and functionality for the buttons in the pop-over.", + "type": "object", + "properties": { + "primary": { + "type": "object", + "properties": { + "label": { + "type": "object", + "oneOf": [ + { + "properties": { + "value": { + "$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/plainText", + "description": "Button label override used when a localized version is not available." + }, + "attributes": { + "type": "object", + "properties": { + "accesskey": { + "type": "string", + "description": "A single character to be used as a shortcut key for the secondary button. This should be one of the characters that appears in the button label." + } + }, + "required": [ + "accesskey" + ], + "description": "Button attributes." + } + }, + "required": [ + "value", + "attributes" + ] + }, + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizedText" + } + ], + "description": "Id of localized string or message override." + }, + "action": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Action dispatched by the button." + }, + "data": { + "properties": { + "url": { + "type": "string", + "$comment": "This is dynamically generated from the addon.id. See CFRPageActions.sys.mjs", + "description": "URL used in combination with the primary action dispatched." + } + } + } + } + } + } + }, + "secondary": { + "type": "array", + "items": { + "type": "object", + "properties": { + "label": { + "type": "object", + "oneOf": [ + { + "properties": { + "value": { + "allOf": [ + { + "$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/plainText" + }, + { + "description": "Button label override used when a localized version is not available." + } + ] + }, + "attributes": { + "type": "object", + "properties": { + "accesskey": { + "type": "string", + "description": "A single character to be used as a shortcut key for the secondary button. This should be one of the characters that appears in the button label." + } + }, + "required": [ + "accesskey" + ], + "description": "Button attributes." + } + }, + "required": [ + "value", + "attributes" + ] + }, + { + "properties": { + "string_id": { + "allOf": [ + { + "$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/plainText" + }, + { + "description": "Id of localized string for button" + } + ] + } + }, + "required": [ + "string_id" + ] + } + ], + "description": "Id of localized string or message override." + }, + "action": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Action dispatched by the button." + }, + "data": { + "properties": { + "url": { + "allOf": [ + { + "$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/linkUrl" + }, + { + "description": "URL used in combination with the primary action dispatched." + } + ] + } + } + } + } + } + } + } + } + } + } + }, + "additionalProperties": true, + "required": [ + "layout", + "bucket_id", + "heading_text", + "text", + "buttons" + ], + "if": { + "properties": { + "skip_address_bar_notifier": { + "anyOf": [ + { + "const": "false" + }, + { + "const": null + } + ] + } + } + }, + "then": { + "required": [ + "category", + "notification_text" + ] + } + }, + "template": { + "type": "string", + "enum": [ + "cfr_doorhanger", + "milestone_message" + ] + } + }, + "additionalProperties": true, + "required": [ + "targeting", + "trigger" + ], + "$defs": { + "plainText": { + "description": "Plain text (no HTML allowed)", + "type": "string" + }, + "linkUrl": { + "description": "Target for links or buttons", + "type": "string", + "format": "uri" + } + } + }, + "InfoBar": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///InfoBar.schema.json", + "title": "InfoBar", + "description": "A template with an image, test and buttons.", + "allOf": [ + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "content": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Should the message be global (persisted across tabs) or local (disappear when switching to a different tab).", + "enum": [ + "global", + "tab" + ] + }, + "text": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "The text show in the notification box." + }, + "priority": { + "description": "Infobar priority level https://searchfox.org/mozilla-central/rev/3aef835f6cb12e607154d56d68726767172571e4/toolkit/content/widgets/notificationbox.js#387", + "type": "number", + "minumum": 0, + "exclusiveMaximum": 10 + }, + "buttons": { + "type": "array", + "items": { + "type": "object", + "properties": { + "label": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "The text label of the button." + }, + "primary": { + "type": "boolean", + "description": "Is this the primary button?" + }, + "accessKey": { + "type": "string", + "description": "Keyboard shortcut letter." + }, + "action": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Action dispatched by the button." + }, + "data": { + "type": "object" + } + }, + "required": [ + "type" + ], + "additionalProperties": true + }, + "supportPage": { + "type": "string", + "description": "A page title on SUMO to link to" + } + }, + "required": [ + "label", + "action" + ], + "additionalProperties": true + } + } + }, + "additionalProperties": true, + "required": [ + "text", + "buttons" + ] + }, + "template": { + "type": "string", + "const": "infobar" + } + }, + "additionalProperties": true, + "required": [ + "targeting", + "trigger" + ], + "$defs": { + "plainText": { + "description": "Plain text (no HTML allowed)", + "type": "string" + }, + "linkUrl": { + "description": "Target for links or buttons", + "type": "string", + "format": "uri" + } + } + }, + "NewtabPromoMessage": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///NewtabPromoMessage.schema.json", + "title": "PBNewtabPromoMessage", + "description": "Message shown on the private browsing newtab page.", + "allOf": [ + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "content": { + "type": "object", + "properties": { + "hideDefault": { + "type": "boolean", + "description": "Should we hide the default promo after the experiment promo is dismissed." + }, + "infoEnabled": { + "type": "boolean", + "description": "Should we show the info section." + }, + "infoIcon": { + "type": "string", + "description": "Icon shown in the left side of the info section. Default is the private browsing icon." + }, + "infoTitle": { + "type": "string", + "description": "Is the title in the info section enabled." + }, + "infoTitleEnabled": { + "type": "boolean", + "description": "Is the title in the info section enabled." + }, + "infoBody": { + "type": "string", + "description": "Text content in the info section." + }, + "infoLinkText": { + "type": "string", + "description": "Text for the link in the info section." + }, + "infoLinkUrl": { + "type": "string", + "description": "URL for the info section link.", + "format": "moz-url-format" + }, + "promoEnabled": { + "type": "boolean", + "description": "Should we show the promo section." + }, + "promoType": { + "type": "string", + "description": "Promo type used to determine if promo should show to a given user", + "enum": [ + "FOCUS", + "VPN", + "PIN", + "COOKIE_BANNERS", + "OTHER" + ] + }, + "promoSectionStyle": { + "type": "string", + "description": "Sets the position of the promo section. Possible values are: top, below-search, bottom. Default bottom.", + "enum": [ + "top", + "below-search", + "bottom" + ] + }, + "promoTitle": { + "type": "string", + "description": "The text content of the promo section." + }, + "promoTitleEnabled": { + "type": "boolean", + "description": "Should we show text content in the promo section." + }, + "promoLinkText": { + "type": "string", + "description": "The text of the link in the promo box." + }, + "promoHeader": { + "type": "string", + "description": "The title of the promo section." + }, + "promoButton": { + "type": "object", + "properties": { + "action": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Action dispatched by the button." + }, + "data": { + "type": "object" + } + }, + "required": [ + "type" + ], + "additionalProperties": true + } + }, + "required": [ + "action" + ] + }, + "promoLinkType": { + "type": "string", + "description": "Type of promo link type. Possible values: link, button. Default is link.", + "enum": [ + "link", + "button" + ] + }, + "promoImageLarge": { + "type": "string", + "description": "URL for image used on the left side of the promo box, larger, showcases some feature. Default off.", + "format": "uri" + }, + "promoImageSmall": { + "type": "string", + "description": "URL for image used on the right side of the promo box, smaller, usually a logo. Default off.", + "format": "uri" + } + }, + "additionalProperties": true, + "allOf": [ + { + "if": { + "properties": { + "promoEnabled": { + "const": true + } + }, + "required": [ + "promoEnabled" + ] + }, + "then": { + "required": [ + "promoButton" + ] + } + }, + { + "if": { + "properties": { + "infoEnabled": { + "const": true + } + }, + "required": [ + "infoEnabled" + ] + }, + "then": { + "required": [ + "infoLinkText" + ], + "if": { + "properties": { + "infoTitleEnabled": { + "const": true + } + }, + "required": [ + "infoTitleEnabled" + ] + }, + "then": { + "required": [ + "infoTitle" + ] + } + } + } + ] + }, + "template": { + "type": "string", + "const": "pb_newtab" + } + }, + "additionalProperties": true, + "required": [ + "targeting" + ] + }, + "Spotlight": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///Spotlight.schema.json", + "title": "Spotlight", + "description": "A template with an image, title, content and two buttons.", + "allOf": [ + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "content": { + "type": "object", + "properties": { + "template": { + "type": "string", + "description": "Specify the layout template for the Spotlight", + "const": "multistage" + }, + "backdrop": { + "type": "string", + "description": "Background css behind modal content" + }, + "logo": { + "type": "object", + "properties": { + "imageURL": { + "type": "string", + "description": "URL for image to use with the content" + }, + "imageId": { + "type": "string", + "description": "The ID for a remotely hosted image" + }, + "size": { + "type": "string", + "description": "The logo size." + } + }, + "additionalProperties": true + }, + "screens": { + "type": "array", + "description": "Collection of individual screen content" + }, + "transitions": { + "type": "boolean", + "description": "Show transitions within and between screens" + }, + "disableHistoryUpdates": { + "type": "boolean", + "description": "Don't alter the browser session's history stack - used with messaging surfaces like Feature Callouts" + }, + "startScreen": { + "type": "integer", + "description": "Index of first screen to show from message, defaulting to 0" + }, + "no-rdm": { + "type": "boolean", + "description": "If true, prevents the spotlight from entering responsive design mode at widths less than 800px" + } + }, + "additionalProperties": true + }, + "template": { + "type": "string", + "description": "Specify whether the surface is shown as a Spotlight modal or an in-surface Feature Callout dialog", + "enum": [ + "spotlight", + "feature_callout" + ] + } + }, + "additionalProperties": true, + "required": [ + "targeting" + ] + }, + "ToastNotification": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///ToastNotification.schema.json", + "title": "ToastNotification", + "description": "A template for toast notifications displayed by the Alert service.", + "allOf": [ + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "content": { + "type": "object", + "properties": { + "title": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "Id of localized string or message override of toast notification title" + }, + "body": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "Id of localized string or message override of toast notification body" + }, + "icon_url": { + "description": "The URL of the image used as an icon of the toast notification.", + "type": "string", + "format": "moz-url-format" + }, + "image_url": { + "description": "The URL of an image to be displayed as part of the notification.", + "type": "string", + "format": "moz-url-format" + }, + "launch_url": { + "description": "The URL to launch when the notification or an action button is clicked.", + "type": "string", + "format": "moz-url-format" + }, + "launch_action": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "The launch action to be performed when Firefox is launched." + }, + "data": { + "type": "object" + } + }, + "required": [ + "type" + ], + "additionalProperties": true + }, + "requireInteraction": { + "type": "boolean", + "description": "Whether the toast notification should remain active until the user clicks or dismisses it, rather than closing automatically." + }, + "tag": { + "type": "string", + "description": "An identifying tag for the toast notification." + }, + "data": { + "type": "object", + "description": "Arbitrary data associated with the toast notification." + }, + "actions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "The action text to be shown to the user." + }, + "action": { + "type": "string", + "description": "Opaque identifer that identifies action." + }, + "iconURL": { + "type": "string", + "format": "uri", + "description": "URL of an icon to display with the action." + }, + "windowsSystemActivationType": { + "type": "boolean", + "description": "Whether to have Windows process the given `action`." + }, + "launch_action": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "The launch action to be performed when Firefox is launched." + }, + "data": { + "type": "object" + } + }, + "required": [ + "type" + ], + "additionalProperties": true + } + }, + "required": [ + "action", + "title" + ], + "additionalProperties": true + } + } + }, + "additionalProperties": true, + "required": [ + "title", + "body" + ] + }, + "template": { + "type": "string", + "const": "toast_notification" + } + }, + "required": [ + "content", + "targeting", + "template", + "trigger" + ], + "additionalProperties": true + }, + "ToolbarBadgeMessage": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///ToolbarBadgeMessage.schema.json", + "title": "ToolbarBadgeMessage", + "description": "A template that specifies to which element in the browser toolbar to add a notification.", + "allOf": [ + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "content": { + "type": "object", + "properties": { + "target": { + "type": "string" + }, + "action": { + "type": "object", + "properties": { + "id": { + "type": "string" + } + }, + "additionalProperties": true, + "required": [ + "id" + ], + "description": "Optional action to take in addition to showing the notification" + }, + "delay": { + "type": "number", + "description": "Optional delay in ms after which to show the notification" + }, + "badgeDescription": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizedText", + "description": "This is used in combination with the badged button to offer a text based alternative to the visual badging. Example 'New Feature: What's New'" + } + }, + "additionalProperties": true, + "required": [ + "target" + ] + }, + "template": { + "type": "string", + "const": "toolbar_badge" + } + }, + "additionalProperties": true, + "required": [ + "targeting" + ] + }, + "UpdateAction": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///UpdateAction.schema.json", + "title": "UpdateActionMessage", + "description": "A template for messages that execute predetermined actions.", + "allOf": [ + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "content": { + "type": "object", + "properties": { + "action": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "data": { + "type": "object", + "description": "Additional data provided as argument when executing the action", + "properties": { + "url": { + "type": "string", + "description": "URL data to be used as argument to the action" + }, + "expireDelta": { + "type": "number", + "description": "Expiration timestamp to be used as argument to the action" + } + } + } + }, + "additionalProperties": true, + "description": "Optional action to take in addition to showing the notification", + "required": [ + "id", + "data" + ] + } + }, + "additionalProperties": true, + "required": [ + "action" + ] + }, + "template": { + "type": "string", + "const": "update_action" + } + }, + "required": [ + "targeting" + ] + }, + "Message": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The message identifier" + }, + "groups": { + "description": "Array of preferences used to control `enabled` status of the group. If any is `false` the group is disabled.", + "type": "array", + "items": { + "type": "string", + "description": "Preference name" + } + }, + "template": { + "type": "string", + "description": "Which messaging template this message is using.", + "enum": [ + "cfr_urlbar_chiclet", + "cfr_doorhanger", + "milestone_message", + "infobar", + "pb_newtab", + "spotlight", + "feature_callout", + "toast_notification", + "toolbar_badge", + "update_action" + ] + }, + "frequency": { + "type": "object", + "description": "An object containing frequency cap information for a message.", + "properties": { + "lifetime": { + "type": "integer", + "description": "The maximum lifetime impressions for a message.", + "minimum": 1, + "maximum": 100 + }, + "custom": { + "type": "array", + "description": "An array of custom frequency cap definitions.", + "items": { + "description": "A frequency cap definition containing time and max impression information", + "type": "object", + "properties": { + "period": { + "type": "integer", + "description": "Period of time in milliseconds (e.g. 86400000 for one day)" + }, + "cap": { + "type": "integer", + "description": "The maximum impressions for the message within the defined period.", + "minimum": 1, + "maximum": 100 + } + }, + "required": [ + "period", + "cap" + ] + } + } + } + }, + "priority": { + "description": "The priority of the message. If there are two competing messages to show, the one with the highest priority will be shown", + "type": "integer" + }, + "order": { + "description": "The order in which messages should be shown. Messages will be shown in increasing order.", + "type": "integer" + }, + "targeting": { + "description": "A JEXL expression representing targeting information", + "type": "string" + }, + "trigger": { + "description": "An action to trigger potentially showing the message", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "A string identifying the trigger action" + }, + "params": { + "type": "array", + "description": "An optional array of string parameters for the trigger action", + "items": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] + } + } + }, + "required": [ + "id" + ] + }, + "provider": { + "description": "An identifier for the provider of this message, such as \"cfr\" or \"preview\".", + "type": "string" + } + }, + "additionalProperties": true, + "dependentRequired": { + "content": [ + "id", + "template" + ], + "template": [ + "id", + "content" + ] + } + }, + "localizedText": { + "type": "object", + "properties": { + "string_id": { + "description": "Id of localized string to be rendered.", + "type": "string" + } + }, + "required": [ + "string_id" + ] + }, + "localizableText": { + "description": "Either a raw string or an object containing the string_id of the localized text", + "oneOf": [ + { + "type": "string", + "description": "The string to be rendered." + }, + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizedText" + } + ] + }, + "TemplatedMessage": { + "description": "An FxMS message of one of a variety of types.", + "type": "object", + "allOf": [ + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message" + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "cfr_urlbar_chiclet" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/CFRUrlbarChiclet" + } + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "cfr_doorhanger", + "milestone_message" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/ExtensionDoorhanger" + } + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "infobar" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/InfoBar" + } + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "pb_newtab" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/NewtabPromoMessage" + } + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "spotlight", + "feature_callout" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Spotlight" + } + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "toast_notification" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/ToastNotification" + } + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "toolbar_badge" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/ToolbarBadgeMessage" + } + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "update_action" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/UpdateAction" + } + } + ] + }, + "MultiMessage": { + "description": "An object containing an array of messages.", + "type": "object", + "properties": { + "template": { + "type": "string", + "const": "multi" + }, + "messages": { + "type": "array", + "description": "An array of messages.", + "items": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/TemplatedMessage" + } + } + }, + "required": [ + "template", + "messages" + ] + } + } +} diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/v128.7.0/schemas/toolkit/components/nimbus/schemas/PrefFlipsFeature.schema.json b/experimenter/experimenter/features/manifests/firefox-desktop/v128.7.0/schemas/toolkit/components/nimbus/schemas/PrefFlipsFeature.schema.json new file mode 100644 index 0000000000..9fa5acc7c9 --- /dev/null +++ b/experimenter/experimenter/features/manifests/firefox-desktop/v128.7.0/schemas/toolkit/components/nimbus/schemas/PrefFlipsFeature.schema.json @@ -0,0 +1,48 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "prefs": { + "description": "The prefs to set", + "type": "object", + "patternProperties": { + ".*": { + "type": "object", + "properties": { + "branch": { + "description": "The branch the pref should be set on.", + "type": "string", + "enum": ["user", "default"] + }, + "value": { + "description": "The value of the pref. Set to null to clear prefs.", + "type": ["string", "integer", "boolean", "null"] + } + }, + "required": ["branch", "value"], + "allOf": [ + { + "description": "Prevent clearing the default branch", + "if": { + "properties": { + "branch": { + "const": "default" + } + } + }, + "then": { + "properties": { + "value": { + "type": ["string", "integer", "boolean"] + } + } + } + } + ] + } + } + } + }, + "required": ["prefs"], + "additionalProperties": false +} diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/v128.7.0/schemas/toolkit/components/normandy/schemas/LegacyHeartbeat.schema.json b/experimenter/experimenter/features/manifests/firefox-desktop/v128.7.0/schemas/toolkit/components/normandy/schemas/LegacyHeartbeat.schema.json new file mode 100644 index 0000000000..6915fc9b71 --- /dev/null +++ b/experimenter/experimenter/features/manifests/firefox-desktop/v128.7.0/schemas/toolkit/components/normandy/schemas/LegacyHeartbeat.schema.json @@ -0,0 +1,73 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Legacy (Normandy) Heartbeat, via Nimbus", + "description": "The schema for the Legacy Heartbeat Nimbus feature.", + "type": "object", + "properties": { + "survey": { + "$comment": "Hearbeat arguments are nested under survey to prevent simultaneous rollouts and experiments from overriding eachothers optional variables", + "type": "object", + "properties": { + "repeatOption": { + "type": "string", + "enum": ["once", "xdays", "nag"], + "description": "Determines how often a prompt is shown executes.", + "default": "once" + }, + "repeatEvery": { + "description": "For repeatOption=xdays, how often (in days) the prompt is displayed.", + "default": null, + "type": ["number", "null"] + }, + "includeTelemetryUUID": { + "type": "boolean", + "description": "Include unique user ID in post-answer-url and Telemetry", + "default": false + }, + "surveyId": { + "description": "Slug uniquely identifying this survey in telemetry", + "type": "string" + }, + "message": { + "description": "Message to show to the user", + "type": "string" + }, + "engagementButtonLabel": { + "description": "Text for the engagement button. If specified, this button will be shown instead of rating stars.", + "default": null, + "type": ["string", "null"] + }, + "thanksMessage": { + "description": "Thanks message to show to the user after they've rated Firefox", + "type": "string" + }, + "postAnswerUrl": { + "description": "URL to redirect the user to after rating Firefox or clicking the engagement button", + "default": null, + "type": ["string", "null"] + }, + "learnMoreMessage": { + "description": "Message to show to the user to learn more", + "default": null, + "type": ["string", "null"] + }, + "learnMoreUrl": { + "description": "URL to show to the user when they click Learn More", + "default": null, + "type": ["string", "null"] + } + }, + "required": [ + "surveyId", + "message", + "thanksMessage", + "postAnswerUrl", + "learnMoreMessage", + "learnMoreUrl" + ], + "additionalProperties": false + } + }, + "required": ["survey"], + "additionalProperties": false +} diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/v135.0.0/experimenter.yaml b/experimenter/experimenter/features/manifests/firefox-desktop/v135.0.0/experimenter.yaml index 2e3bac1b69..b1199d4b58 100644 --- a/experimenter/experimenter/features/manifests/firefox-desktop/v135.0.0/experimenter.yaml +++ b/experimenter/experimenter/features/manifests/firefox-desktop/v135.0.0/experimenter.yaml @@ -542,11 +542,14 @@ urlbar: will be able to click the "Show less frequently" command for weather suggestions. If undefined or zero, the user will be able to click the command without any limit. - weatherSimpleUI: - type: boolean + weatherUiTreatment: + type: int + fallbackPref: browser.urlbar.weather.uiTreatment description: >- - If true, show the weather suggestion by simple UI edition as follows. - * Remove the forcast text from the summary text. + The UI treatment to use for weather suggestions. Possible values: + 0: (default) Simplest UI with current temperature and location + 1: Simpler UI, adds current conditions, high/low, and URL + 2: Full UI, adds forecast yelpMinKeywordLength: type: int description: >- @@ -2839,6 +2842,16 @@ fxaButtonVisibility: setPref: branch: user pref: identity.fxaccounts.toolbar.pxiToolbarEnabled.vpnEnabled + avatarIconVariant: + description: >- + Controls the icon that appears in the toolbar button when in the + signed-out state. + + One of the following values: + - control + - human-circle + - fox-circle + type: string syncSetupFlow: description: Prefs to control the updated Mozilla account panel flow for users without sync enabled. @@ -3011,6 +3024,13 @@ fingerprintingProtection: pref: javascript.options.use_fdlibm_for_sin_cos_tan description: >- Uses a different math backend for Math.sin/cos/tan in JavaScript that exposes less entropy + canvas_random_use_siphash: + type: boolean + setPref: + branch: default + pref: privacy.resistFingerprinting.randomization.canvas.use_siphash + description: >- + Uses the SipHash function for canvas randomization. userCharacteristics: description: Control user characteristic data collection diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/v136.0.0/experimenter.yaml b/experimenter/experimenter/features/manifests/firefox-desktop/v136.0.0/experimenter.yaml new file mode 100644 index 0000000000..b1199d4b58 --- /dev/null +++ b/experimenter/experimenter/features/manifests/firefox-desktop/v136.0.0/experimenter.yaml @@ -0,0 +1,4216 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +# yaml-language-server: $schema=schemas/ExperimentFeatureManifest.schema.json + +# Features must be added here to be accessible through the NimbusFeature API. + +"no-feature-firefox-desktop": + description: A dummy feature for experiments that target no feature. + owner: beth@mozilla.com + applications: + - firefox-desktop + - firefox-desktop-background-task + hasExposure: false + variables: {} + +testFeature: + description: Test only feature + owner: beth@mozilla.com + applications: + - firefox-desktop + - firefox-desktop-background-task + hasExposure: false + isEarlyStartup: true + variables: + enabled: + type: boolean + description: Whether or not this feature is enabled + testInt: + type: int + fallbackPref: nimbus.testing.testInt + description: Int pref used by platform API tests + testSetString: + type: string + setPref: + branch: user + pref: nimbus.testing.testSetString + description: A string pref set by Nimbus tests + +nimbus-qa-1: + description: A feature for testing pref-setting on the default branch. + owner: beth@mozilla.com + hasExposure: false + variables: + value: + type: string + setPref: + branch: default + pref: nimbus.qa.pref-1 + description: The value to set for the pref. + +nimbus-qa-2: + description: A feature for testing pref-setting on the user branch. + owner: beth@mozilla.com + hasExposure: false + variables: + value: + type: string + setPref: + branch: user + pref: nimbus.qa.pref-2 + description: The value to set for the pref. + +# Note: this feature is not for general use. If you want to run an experiment +# that sets prefs, you *must* register your feature in this manifest and specify +# the prefs you will control. +prefFlips: + description: Flip arbitrary prefs. Controlled by release management. + owner: beth@mozilla.com + hasExposure: false + variables: + prefs: + type: json + description: "The prefs to set." + schema: + uri: resource://nimbus/schemas/PrefFlipsFeature.schema.json + path: toolkit/components/nimbus/schemas/PrefFlipsFeature.schema.json + + +# `search` is for search engine experimentation features which do not require +# isEarlyStartup to be set. +search: + description: Search engine experimentation support and testing features. + owner: search-and-suggest-program@mozilla.com + hasExposure: false + variables: + extraParams: + type: json + description: >- + This allows extra parameters to be set for search engines requests including, + where calls to the suggestions API, the search engine configuration defines + those parameters. + + The use of this field should be coordinated with the Search team. + + The field value is an array of objects with key/value fields. For example: + + [ + {"key": "google_channel_row", "value": "foo"} + ] + + This is matched to a section in the search configuration: + + "extraParams": [ + { + "name": "channel", + "pref": "google_channel_row", + "condition": "pref" + } + ], + + In this case, the resulting URL for the appropriate search engine would have + `&channel=foo` added to the URL when doing searches. + + If the key is not referenced in the search configuration, then no parameter + will be added. Only the search team can update the configuration. + logEnabled: + type: boolean + setPref: + branch: default + pref: browser.search.log + description: >- + Whether or not enable search log in their console. + richSuggestionsFeatureGate: + type: boolean + setPref: + branch: default + pref: browser.urlbar.richSuggestions.featureGate + description: >- + Feature gate that controls whether Rich Suggestions are enabled. + scotchBonnetEnableOverride: + type: boolean + setPref: + branch: default + pref: browser.urlbar.scotchBonnet.enableOverride + description: >- + Whether or not enabling scotch bonnet feature. + If this variable is true, the following features are available as default. + * Unified search button + * Secondary action buttons + * Search term persistence + * Intuitive search keywords + * HTTP swap + serpEventTelemetryCategorizationEnabled: + type: boolean + setPref: + branch: default + pref: browser.search.serpEventTelemetryCategorization.enabled + description: Whether the Glean SERP event telemetry for SERP categorization is enabled. + trendingEnabled: + type: boolean + setPref: + branch: default + pref: browser.urlbar.trending.featureGate + description: Feature gate that controls whether trending suggestions are enabled. + trendingRequireSearchMode: + type: boolean + setPref: + branch: default + pref: browser.urlbar.trending.requireSearchMode + description: Controls whether trending suggestions are only shown in search mode or not. + trendingMaxResultsNoSearchMode: + type: int + setPref: + branch: default + pref: browser.urlbar.trending.maxResultsNoSearchMode + description: The maximum number of trending results mode outside search mode. + newSearchConfigEnabled: + type: boolean + setPref: + branch: user + pref: browser.search.newSearchConfig.enabled + description: >- + Whether search-config-v2 is enabled for the user. This will only take + effect when the user restarts. + Obsolete. This is kept until all multi-feature roll-outs using it are + ended to prevent un-enrollment. + targetExperiment: + type: string + description: >- + The slug of the experiment someone is requesting enrollment and branch + information for. (Note that the featureId needs to be set to "search".) + +# `searchConfiguration` is for search experiment features for items that require +# isEarlyStartup to be true. These items may require a reload of the search +# engine configuration, and an additional reload may happen during the startup +# process. +searchConfiguration: + description: Search experimentation support for the engine configuration + owner: search-and-suggest-program@mozilla.com + isEarlyStartup: true + hasExposure: false + variables: + experiment: + type: string + fallbackPref: browser.search.experiment + description: >- + Used to activate only matching configurations that contain the value in + `experiment` + seperatePrivateDefaultUIEnabled: + type: boolean + description: Whether the UI for the separate private default feature is enabled. + seperatePrivateDefaultUrlbarResultEnabled: + type: boolean + description: Whether the urlbar result for the separate private default is shown. + +urlbar: + description: The Address Bar + owner: search-and-suggest-program@mozilla.com + hasExposure: true + exposureDescription: >- + The timing of the exposure event depends on the experiment, but generally + the event is recorded once per app session when the user first encounters + the UI of the experiment in which they're enrolled. + variables: + addonsFeatureGate: + type: boolean + fallbackPref: browser.urlbar.addons.featureGate + description: >- + Feature gate that controls whether all aspects of the addons suggestion + feature are exposed to the user. + addonsShowLessFrequentlyCap: + type: int + description: >- + If defined and non-zero, this is the maximum number of times the user + will be able to click the "Show less frequently" command for addon + suggestions. If undefined or zero, the user will be able to click the + command without any limit. + autoFillAdaptiveHistoryEnabled: + type: boolean + fallbackPref: browser.urlbar.autoFill.adaptiveHistory.enabled + description: Whether enabling adaptive history autofill. + autoFillAdaptiveHistoryMinCharsThreshold: + type: int + fallbackPref: browser.urlbar.autoFill.adaptiveHistory.minCharsThreshold + description: Minimum char length of the user's search string to trigger adaptive history autofill. + autoFillAdaptiveHistoryUseCountThreshold: + type: string + description: This value assumes float expression like "0.47". Threshold for use count of input history that we handle as adaptive history autofill. If the use count is this value or more, it will be a candidate. + fakespotFeatureGate: + type: boolean + fallbackPref: browser.urlbar.fakespot.featureGate + description: >- + Feature gate that controls whether all aspects of the Fakespot suggestion + feature are exposed to the user. + fakespotMinKeywordLength: + type: int + description: >- + The minimum prefix length of a Fakespot keyword the user must type to + trigger the suggestion. + fakespotShowLessFrequentlyCap: + type: int + fallbackPref: browser.urlbar.fakespot.showLessFrequentlyCap + description: >- + If defined and non-zero, this is the maximum number of times the user + will be able to click the "Show less frequently" command for Fakespot + suggestions. If undefined or zero, the user will be able to click the + command without any limit. + fakespotSuggestedIndex: + type: int + fallbackPref: browser.urlbar.fakespot.suggestedIndex + description: >- + The index of Fakespot results within the Firefox Suggest section. A + negative index is relative to the end of the section. + keywordExposureResults: + type: string + setPref: + pref: browser.urlbar.keywordExposureResults + branch: user + description: >- + Comma-separated list of result types that should trigger + keyword-exposure telemetry. Keyword exposures can be recorded along with + result exposures. To enable keyword exposures for a result type, you + must add it both to this variable and to `exposureResults`. The only + exception is the "rust_exposure" result type, which can be added to this + variable even if it's not in `exposureResults` since it's enabled by + setting the `quickSuggestExposureSuggestionTypes` variable. Keyword + exposures are recorded in the `urlbar-keyword-exposure` ping. See that + ping's description for more. + mdnFeatureGate: + type: boolean + setPref: + branch: default + pref: browser.urlbar.mdn.featureGate + description: >- + Feature gate that controls whether all aspects of the mdn suggestion + feature are exposed to the user. + merinoClientVariants: + type: string + fallbackPref: browser.urlbar.merino.clientVariants + description: >- + Comma separated list of client variants to report to the Merino server. + May impact server behavior. + merinoEndpointURL: + type: string + fallbackPref: browser.urlbar.merino.endpointURL + description: >- + The Merino endpoint URL, not including parameters. An empty string will + cause Firefox not to fetch from Merino. + merinoProviders: + type: string + fallbackPref: browser.urlbar.merino.providers + description: >- + Comma-separated list of providers to request from the Merino server. + Merino will return suggestions only for these providers. + merinoTimeoutMs: + type: int + fallbackPref: browser.urlbar.merino.timeoutMs + description: Timeout for Merino fetches (ms) + exposureResults: + type: string + setPref: + pref: browser.urlbar.exposureResults + branch: user + description: >- + Comma-separated list of result types that should trigger exposure + telemetry, which is recorded in the `exposure` event. By default + exposure results are visible like usual, but they can be hidden by + setting the `showExposureResults` variable to false. To also record + keyword exposures for a result type, include it in the + `keywordExposureResults` variable as well. + showExposureResults: + type: boolean + setPref: + pref: browser.urlbar.showExposureResults + branch: user + description: >- + Boolean used to determine if the results defined in `exposureResults` should be shown in search results. Should be false for Control branch of an experiment. + pocketFeatureGate: + type: boolean + fallbackPref: browser.urlbar.pocket.featureGate + description: >- + Feature gate that controls whether all aspects of the Pocket suggestions + feature are exposed to the user. + pocketShowLessFrequentlyCap: + type: int + description: >- + If defined and non-zero, this is the maximum number of times the user + will be able to click the "Show less frequently" command for Pocket + suggestions. If undefined or zero, the user will be able to click the + command without any limit. + pocketSuggestIndex: + type: int + description: >- + The group-relative suggestedIndex of Pocket suggestions within the Firefox + Suggest section. + quickSuggestAllowPositionInSuggestions: + type: boolean + fallbackPref: browser.urlbar.quicksuggest.allowPositionInSuggestions + description: Whether quick suggest results can be shown in position specified in the suggestions. + quickSuggestAmpTopPickCharThreshold: + type: int + fallbackPref: browser.urlbar.quicksuggest.ampTopPickCharThreshold + description: >- + Character-count threshold (inclusive) for showing AMP suggestions as top + picks. If an AMP suggestion is triggered by a keyword at least this many + characters long, it will be shown as a top pick. When this variable is + set, full keywords will also show AMP suggestions as top picks even if + they have fewer characters than this threshold. + quickSuggestContextualOptInEnabled: + type: boolean + setPref: + branch: default + pref: browser.urlbar.quicksuggest.contextualOptIn + description: Whether the Firefox Suggest contextual opt-in result is enabled. If true, this implicitly disables shouldShowOnboardingDialog. + quickSuggestContextualOptInSayHello: + type: boolean + setPref: + branch: default + pref: browser.urlbar.quicksuggest.contextualOptIn.sayHello + description: Controls which variant of the copy is used for the Firefox Suggest contextual opt-in result. + quickSuggestContextualOptInTopPosition: + type: boolean + setPref: + branch: default + pref: browser.urlbar.quicksuggest.contextualOptIn.topPosition + description: Controls whether the Firefox Suggest contextual opt-in result appears at the top of results or at the bottom, after one-off buttons. + quickSuggestDataCollectionEnabled: + type: boolean + description: Whether data collection should be enabled by default. If this variable is specified, it will override the value implied by the scenario. It will never override the user's local preference to disable (or enable) data collection, if the user has already toggled that preference. + quickSuggestEnabled: + type: boolean + fallbackPref: browser.urlbar.quicksuggest.enabled + description: Gate for the Firefox Suggest feature as a whole. If false, the Firefox Suggest preferences UI and Suggest suggestions will not be shown. If true, the preferences UI will be shown, and the user can turn suggestions on or off. + quickSuggestExposureSuggestionTypes: + type: string + setPref: + pref: browser.urlbar.quicksuggest.exposureSuggestionTypes + branch: user + description: >- + Comma-separated list of Suggest exposure suggestion types to enable. + Exposure suggestions are used to test potential exposures. They trigger + exposure telemetry based on a set of keywords you provide but they are + never visible. Set this variable to the `suggestion_type` defined in the + remote settings record(s) that contains your keywords. If you want to + test multiple suggestion types, separate them with commas, but also + consider using one experiment branch per type, especially if you are + also enabling keyword exposures. Exposure suggestions are recorded in + telemetry with the "rust_exposure" result type. It's not necessary to + include "rust_exposure" in `exposureResults`. Unless you are testing + other results in the same experiment branch, it's also not necessary to + set `showExposureResults: false`. To also record keyword exposures, + include "rust_exposure" in `keywordExposureResults`. + quickSuggestHideSettingsUI: + type: boolean + fallbackPref: browser.urlbar.quicksuggest.hideSettingsUI + description: >- + This variable is intended to be used in potential exposure experiments + in regions and locales where Suggest normally isn't enabled. Potential + exposure suggestions are implemented in Suggest, and this variable lets + us enable core Suggest functionality but keep it hidden. Set both + `quickSuggestEnabled` and `quickSuggestHideSettingsUI` to true, along + with `quickSuggestExposureSuggestionTypes`. This variable does NOT hide + visible suggestions and other UI that can be independently enabled with + other Nimbus variables. But since all visible suggestions are disabled + by default for users not in the Suggest population, as long as you don't + set any Nimbus variables to enable other suggestions and UI, Suggest + will remain hidden. + quickSuggestImpressionCapsSponsoredEnabled: + type: boolean + fallbackPref: browser.urlbar.quicksuggest.impressionCaps.sponsoredEnabled + description: Whether sponsored suggestions are subject to impression frequency caps. If false, sponsored suggestions can be shown an unlimited number of times over any given period. If true, sponsored suggestion impressions will be subject to the caps in the remote settings configuration. + quickSuggestImpressionCapsNonSponsoredEnabled: + type: boolean + fallbackPref: browser.urlbar.quicksuggest.impressionCaps.nonSponsoredEnabled + description: Whether non-sponsored suggestions are subject to impression frequency caps. If false, non-sponsored suggestions can be shown an unlimited number of times over any given period. If true, non-sponsored suggestion impressions will be subject to the caps in the remote settings configuration. + quickSuggestMlEnabled: + type: boolean + fallbackPref: browser.urlbar.quicksuggest.mlEnabled + description: >- + Whether Suggest will use the ML backend in addition to Rust. + quickSuggestNonSponsoredEnabled: + type: boolean + description: Whether non-sponsored suggestions should be enabled by default. If this variable is specified, it will override the value implied by the scenario. It will never override the user's local preference to disable (or enable) non-sponsored suggestions, if the user has already toggled that preference. + quickSuggestNonSponsoredIndex: + type: int + fallbackPref: browser.urlbar.quicksuggest.nonSponsoredIndex + description: >- + The index of non-sponsored QuickSuggest results within the general + group. A negative index is relative to the end of the group + quickSuggestOnboardingDialogVariation: + type: string + description: >- + Specify the messages/UI variation for QuickSuggest onboarding dialog. This value is case insensitive. + quickSuggestRankingMode: + type: string + fallbackPref: browser.urlbar.quicksuggest.rankingMode + description: >- + Specify the ranking mode for QuickSuggest. + - "default": ranking by static scores specified by individual providers. + - "interest": ranking by relevance scores provided by `ContentRelevancyManager`. + - "random": ranking by randomly selecting a winner out of candidates. + Note that this ranking mode can still be overridden by `quickSuggestScoreMap`. + If the ranking mode is unspecified or set to any unknown values, it will default + to the static score based ranking. + enum: + - default + - interest + - random + quickSuggestScenario: + # IMPORTANT: This should not have a fallbackPref. See UrlbarPrefs.sys.mjs. + type: string + description: The Firefox Suggest scenario in which the user is enrolled + enum: + - history + - offline + - online + quickSuggestScoreMap: + type: json + description: >- + A JSON object that maps telemetry result types to suggestion scores. If + a telemetry result type is present in this map, the client will use the + corresponding score as the score for all suggestions of the type, + overriding all other sources of scores for the type. In other words, + the scores in this map will override scores that are set in remote + settings and Merino as well as scores that are hardcoded in the client. + Example entries: `"amo": 0.5`, `"adm_sponsored": 0.9` + quickSuggestShouldShowOnboardingDialog: + type: boolean + fallbackPref: browser.urlbar.quicksuggest.shouldShowOnboardingDialog + description: Whether or not to show the QuickSuggest onboarding dialog + quickSuggestShowOnboardingDialogAfterNRestarts: + type: int + fallbackPref: browser.urlbar.quicksuggest.showOnboardingDialogAfterNRestarts + description: Show QuickSuggest onboarding dialog after N browser restarts + quickSuggestSponsoredEnabled: + type: boolean + description: Whether sponsored suggestions should be enabled by default. If this variable is specified, it will override the value implied by the scenario. It will never override the user's local preference to disable (or enable) sponsored suggestions, if the user has already toggled that preference. + quickSuggestSponsoredIndex: + type: int + fallbackPref: browser.urlbar.quicksuggest.sponsoredIndex + description: >- + The index of sponsored Firefox Suggest results within the Firefox Suggest + section when "Show search suggestions ahead of browsing history in + address bar results" is checked. When not checked, the index is hardcoded + as -1. Negative indexes are relative to the end of the section. + quickSuggestSponsoredPriority: + type: boolean + fallbackPref: browser.urlbar.quicksuggest.sponsoredPriority + description: >- + Whether or not showing sponsored suggestion as priority. + If this variable is true, the following things are processed. + * "Sponsored" label is shown as the group label. + * Change the suggested index to 1. + * Handle as top pick. + recentSearchesFeatureGate: + type: boolean + setPref: + branch: default + pref: browser.urlbar.recentsearches.featureGate + description: Gate for the recent searches feature. + recentSearchesMaxResults: + type: int + setPref: + branch: default + pref: browser.urlbar.recentsearches.maxResults + description: The maximum number of recent searches to show. + showSearchTermsFeatureGate: + type: boolean + fallbackPref: browser.urlbar.showSearchTerms.featureGate + description: Gate for the show search terms feature. If false, the preference#search will not show the search terms feature checkbox, and search terms will never persist in the urlbar. If true, the preference checkbox will be shown on preferences#search, and the user can choose to persist search terms on or off in the urlbar. + weatherFeatureGate: + type: boolean + fallbackPref: browser.urlbar.weather.featureGate + description: >- + Feature gate that controls whether all aspects of the weather suggestion + feature are exposed to the user. + weatherKeywordsMinimumLength: + type: int + description: >- + If defined and non-zero, the weather suggestion will be triggered by + typing any prefix of a full weather keyword when the prefix is at least + `weatherKeywordsMinimumLength` characters long. If this variable is + absent or zero, Firefox will fall back to the minimum length defined in + remote settings. If neither Nimbus nor remote settings defines a minimum + length, only full keywords will trigger the suggestion. + weatherShowLessFrequentlyCap: + type: int + description: >- + If defined and non-zero, this is the maximum number of times the user + will be able to click the "Show less frequently" command for weather + suggestions. If undefined or zero, the user will be able to click the + command without any limit. + weatherUiTreatment: + type: int + fallbackPref: browser.urlbar.weather.uiTreatment + description: >- + The UI treatment to use for weather suggestions. Possible values: + 0: (default) Simplest UI with current temperature and location + 1: Simpler UI, adds current conditions, high/low, and URL + 2: Full UI, adds forecast + yelpMinKeywordLength: + type: int + description: >- + The minimum prefix length of a Yelp keyword the user must type to + trigger the suggestion. + yelpMlEnabled: + type: boolean + fallbackPref: browser.urlbar.yelp.mlEnabled + description: >- + Whether Yelp suggestions will be served from the Suggest ML backend + instead of Rust. + yelpFeatureGate: + type: boolean + fallbackPref: browser.urlbar.yelp.featureGate + description: >- + Feature gate that controls whether all aspects of the Yelp suggestion + feature are exposed to the user. + yelpShowLessFrequentlyCap: + type: int + fallbackPref: browser.urlbar.yelp.showLessFrequentlyCap + description: >- + If defined and non-zero, this is the maximum number of times the user + will be able to click the "Show less frequently" command for Yelp + suggestions. If undefined or zero, the user will be able to click the + command without any limit. + yelpSuggestNonPriorityIndex: + type: int + description: >- + The group-relative suggestedIndex of Yelp suggestions within the Firefox + Suggest section. Ignored when `yelpSuggestPriority` is true. + yelpSuggestPriority: + type: boolean + fallbackPref: browser.urlbar.yelp.priority + description: >- + Whether or not showing yelp suggestion as priority. + If this variable is true, the following things are processed. + * Change the suggested index to 1. + * Handle as top pick. + originsAlternativeEnable: + description: >- + Use an alternative ranking algorithm for autofilling origins, that is + mainly domains of Web pages. When the user types the beginning of an + origin, we autofill the whole origin. Whether autofill happens depends + on the ranking algorithm. Bookmarks are always autofilled anyway. + type: boolean + setPref: + branch: user + pref: "places.frecency.origins.alternative.featureGate" + originsDaysCutOff: + description: >- + The alternative ranking algorithm only considers pages visited in the + last N days, where N is controlled by this variable. + type: int + setPref: + branch: user + pref: "places.frecency.origins.alternative.daysCutOff" + pagesAlternativeEnable: + description: >- + Use an alternative ranking algorithm for sorting history and bookmarks + among the urlbar results. + type: boolean + setPref: + branch: user + pref: "places.frecency.pages.alternative.featureGate" + pagesNumSampledVisits: + description: >- + The number of recent visits to sample when calculating the ranking of + a page. Examining all the visits would be expensive, so we only sample + recent visits. + type: int + setPref: + branch: user + pref: "places.frecency.pages.alternative.numSampledVisits" + pagesHalfLifeDays: + description: >- + The number of days after which the ranking halves. This implements the + "recency" part of the algorithm. + type: int + setPref: + branch: user + pref: "places.frecency.pages.alternative.halfLifeDays" + pagesHighWeight: + description: >- + The weight to use for the high importance bucket. + type: int + setPref: + branch: user + pref: "places.frecency.pages.alternative.highWeight" + pagesMediumWeight: + description: >- + The weight to use for the medium importance bucket. + type: int + setPref: + branch: user + pref: "places.frecency.pages.alternative.mediumWeight" + pagesLowWeight: + description: >- + The weight to use for the low importance bucket. + type: int + setPref: + branch: user + pref: "places.frecency.pages.alternative.lowWeight" + +aboutwelcome: + description: "The about:welcome page" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + Exposure is sent once per browsing session when the about:welcome URL is + first accessed. + isEarlyStartup: true + variables: + enabled: + type: boolean + fallbackPref: browser.aboutwelcome.enabled + description: >- + Should users see about:welcome? If this is false, users will see a + regular new tab instead. + id: + type: string + description: >- + Descriptive ID for the about:welcome content + screens: + type: json + fallbackPref: browser.aboutwelcome.screens + description: Content to show in the onboarding flow + modalScreens: + type: json + fallbackPref: browser.aboutwelcome.modalScreens + description: Content to show in the onboarding modal, if different from that in the onboarding flow + languageMismatchEnabled: + type: boolean + fallbackPref: intl.multilingual.aboutWelcome.languageMismatchEnabled + description: >- + Suggest to change the language on about:welcome when there is a mismatch with + the OS. + transitions: + type: boolean + description: Enable transition effect between screens + showModal: + type: boolean + fallbackPref: browser.aboutwelcome.showModal + description: >- + Should users see window modal onboarding + requireAction: + type: boolean + fallbackPref: browser.aboutwelcome.requireAction + description: >- + When showModal is enabled, should action be required to proceed (show as a window modal with dismiss using the ESC key disabled) + backdrop: + type: string + fallbackPref: browser.aboutwelcome.backdrop + description: >- + Specify the color to be used to update the background color + toolbarButtonEnabled: + type: boolean + setPref: + branch: user + pref: browser.aboutwelcome.toolbarButtonEnabled + description: >- + Should the return to about:welcome toolbar button be shown + +moreFromMozilla: + description: "New page on about:preferences to suggest more Mozilla products" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + Exposure is sent once per browsing session when the about:preferences URL is + first accessed. + variables: + enabled: + type: boolean + fallbackPref: browser.preferences.moreFromMozilla + description: Should users see the new more from Mozilla section. + template: + type: string + fallbackPref: browser.preferences.moreFromMozilla.template + description: UI template used to display Mozilla products. Possible values simple, advanced. Default is simple. + +windowsLaunchOnLogin: + description: "New checkbox in about:preferences startup section to start Firefox on Windows login" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + Exposure is sent once per browsing session when the about:preferences URL is + first accessed. + variables: + enabled: + type: boolean + setPref: + branch: default + pref: browser.startup.windowsLaunchOnLogin.enabled + description: Should users see the Windows launch on login checkbox. + +firefoxBridge: + description: "Controls for Firefox Bridge extension and extension registration" + owner: install-update@mozilla.com + hasExposure: false + variables: + enabled: + type: boolean + setPref: + branch: default + pref: browser.firefoxbridge.enabled + description: >- + Should Firefox Bridge be registered within firefoxBridgeNativeMessaging + startup idle task for use with native messaging proxy. + +abouthomecache: + description: "The startup about:home cache." + owner: omc@mozilla.com, mconley@mozilla.com + hasExposure: false + variables: + enabled: + type: boolean + description: Is the feature enabled? + setPref: + branch: user + pref: browser.startup.homepage.abouthome_cache.enabled + +newtab: + description: "The about:newtab page" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + Exposure is sent once per browsing session when the first newtab page loads + (either about:newtab or about:home). + isEarlyStartup: true + variables: + newTheme: + type: boolean + description: Enable the new theme + customizationMenuEnabled: + type: boolean + fallbackPref: browser.newtabpage.activity-stream.customizationMenu.enabled + description: Enable the customization panel inside of the newtab + prefsButtonIcon: + type: string + description: Icon url to use for the preferences button + topSitesContileEnabled: + type: boolean + fallbackPref: browser.topsites.contile.enabled + description: Enable the Contile integration for Sponsored Top Sites + topSitesUseAdditionalTilesFromContile: + type: boolean + description: Allow Contile to use additonal sponsored top sites + +newtabUnifiedAds: + description: Mozilla Ad Routing Service (MARS) unified ads service + owner: mcrawford@mozilla.com, sdowne@mozilla.com + hasExposure: false + variables: + unifiedAdsEndpoint: + description: The URL for the MARS API endpoint. + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.unifiedAds.endpoint + unifiedAdsSpocsEnabled: + type: boolean + description: >- + Enable MARS endpoint to serve ads for recommended stories + setPref: + branch: user + pref: browser.newtabpage.activity-stream.unifiedAds.spocs.enabled + unifiedAdsTilesEnabled: + type: boolean + description: >- + Enable MARS endpoint to serve content for top sites tiles + setPref: + branch: user + pref: browser.newtabpage.activity-stream.unifiedAds.tiles.enabled + +newtabSpocsCache: + description: The about:newtab sponsored content cache. + owner: sdowne@mozilla.com + hasExposure: false + variables: + spocsCacheTimeout: + type: int + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.spocs.cacheTimeout + description: >- + Set sponsored content cache timeout in minutes. + spocsStartupCache: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.spocs.startupCache.enabled + description: >- + Controls if spocs should be included in startup cache. + +newtabAdSizingExperiment: + description: >- + Change the default ad size and UI for certain ad formats. + owner: achurchwell@mozilla.com, sdowne@mozilla.com + hasExposure: false + variables: + variantA: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.newtabAdSize.variant-a + description: >- + Variant A ad size and UI. + variantB: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.newtabAdSize.variant-b + description: >- + Variant B ad size and UI. + leaderboard: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.newtabAdSize.leaderboard + description: >- + Leaderboard ad size and UI. + leaderboard_position: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.newtabAdSize.leaderboard.position + description: >- + Leaderboard row position. + billboard: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.newtabAdSize.billboard + description: >- + Billboard ad size and UI. + billboard_position: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.newtabAdSize.billboard.position + description: >- + Billboard row position. + +newtabLayoutExperiment: + description: >- + Change the default layout of new tab by adjusting sizes and spacing of elements. + owner: achurchwell@mozilla.com, sdowne@mozilla.com + hasExposure: false + variables: + variantA: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.newtabLayouts.variant-a + description: >- + Variant A in layouts experiment. + variantB: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.newtabLayouts.variant-b + description: >- + Variant B in layouts experiment. + +newtabSponsoredContent: + description: >- + Change and control the sponsored content on newtab. + owner: sdowne@mozilla.com + hasExposure: false + variables: + spocPositions: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.spoc-positions + description: CSV string of spoc position indexes on newtab Pocket grid + spocPlacements: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.placements.spocs + description: CSV string of spoc placement ids on newtab Pocket grid. A placement id tells our ad server where the ads are intended to be displayed. + spocCounts: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.placements.spocs.counts + description: CSV string of spoc placement counts on newtab Pocket grid. The count tells the ad server how many ads to return for this position and placement. + tilesPlacements: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.placements.tiles + description: CSV string of tiles placement ids on newtab tiles section. A placement id tells our ad server where the ads are intended to be displayed. + tilesCounts: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.placements.tiles.counts + description: CSV string of tiles placement counts on newtab tiles section. The count tells the ad server how many ads to return for this position and placement. + +newtabTopicSelection: + description: the about:newtab topic selection experience. + owner: nbarrett@mozilla.com + hasExposure: false + variables: + availableTopics: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.topicSelection.topics + description: >- + List of available topics to select for topic selection + suggestedTopics: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.topicSelection.suggestedTopics + description: >- + List of pre-selected topics to display on first run of topic selection modal + topicSelectionOnboarding: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.topicSelection.onboarding.enabled + description: >- + Turns on and off topic selection onbaording + regionTopicsConfig: + description: A comma-separated list of regions that get topics selection by default. + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.topicSelection.region-topics-config + localeTopicsConfig: + description: A comma-separated list of locales that get topics selection by default. + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.topicSelection.locale-topics-config + regionTopicLabelConfig: + description: A comma-separated list of regions that get topic labels by default. + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.topicLabels.region-topic-label-config + localeTopicLabelConfig: + description: A comma-separated list of locales that get topic Labels by default. + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.topicLabels.locale-topic-label-config + +newtabContextualContent: + description: about:newtab contextual content feed + owner: nbarrett@mozilla.com + hasExposure: false + variables: + contextualContentEnabled: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.contextualContent.enabled + description: >- + Override the contextual content enabled value set via region/locale + localeContextualContentConfig: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.contextualContent.locale-content-config + description: >- + A comma-separated list of locales that get contextual content by default. + regionContextualContentConfig: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.contextualContent.region-content-config + description: >- + A comma-separated list of regions that get contextual content by default. + contextualContentFeeds: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.contextualContent.feeds + description: >- + CSV list of possible feeds for the contextual content feed + contextualContentSelectedFeed: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.contextualContent.selectedFeed + description: >- + currently selected feed to display in the Contextual Content component + +newTabSectionsExperiment: + description: about:newtab section UI update + owner: nbarrett@mozilla.com, mcrawford@mozilla.com + hasExposure: false + variables: + sectionsEnabled: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.sections.enabled + description: >- + Enable the Section UI for recommended stories on newtab + cardRefreshThumbsUpDownEnabled: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.sections.cards.thumbsUpDown.enabled + description: >- + Enable the thumbs up/down buttons in the revised pocket story + card UI in recommended stories on newtab + cardRefreshEnabled: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.sections.cards.enabled + description: >- + Enable the revised pocket story card UI in recommended stories on newtab + localeSectionstConfig: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.sections.locale-content-config + description: >- + A comma-separated list of locales that get contextual content by default. + regionSectionsConfig: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.sections.region-content-config + description: >- + A comma-separated list of regions that get contextual content by default. + sectionsPersonalization: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.sections.personalization.enabled + description: >- + Enable personalized sections layout. Allow users to follow/unfollow topic sections. + +pocketNewtab: + description: The Pocket section in newtab + owner: sdowne@mozilla.com + hasExposure: false + isEarlyStartup: true + variables: + spocTopsitesPositions: + type: string + fallbackPref: browser.newtabpage.activity-stream.discoverystream.spoc-topsites-positions + description: CSV string of spoc position indexes on newtab topsites section + contileTopsitesPositions: + type: string + fallbackPref: browser.newtabpage.activity-stream.discoverystream.contile-topsites-positions + description: CSV string of contile position indexes on newtab topsites section + spocAdTypes: + type: string + fallbackPref: browser.newtabpage.activity-stream.discoverystream.spocAdTypes + description: CSV string of data to set the spoc content. + spocZoneIds: + type: string + fallbackPref: browser.newtabpage.activity-stream.discoverystream.spocZoneIds + description: CSV string of data to set the spoc content. + spocTopsitesAdTypes: + type: string + fallbackPref: browser.newtabpage.activity-stream.discoverystream.spocTopsitesAdTypes + description: CSV string of data to set the spoc content. + spocTopsitesZoneIds: + type: string + fallbackPref: browser.newtabpage.activity-stream.discoverystream.spocTopsitesZoneIds + description: CSV string of data to set the spoc content. + spocTopsitesPlacementEnabled: + type: boolean + fallbackPref: browser.newtabpage.activity-stream.discoverystream.spocTopsitesPlacement.enabled + description: Tuns on and off the sponsored topsites placement. + spocSiteId: + type: string + fallbackPref: browser.newtabpage.activity-stream.discoverystream.spocSiteId + description: String ID to set the spoc content. + widgetPositions: + type: string + fallbackPref: browser.newtabpage.activity-stream.discoverystream.widget-positions + description: CSV string of widget position indexes on newtab grid + hybridLayout: + type: boolean + fallbackPref: browser.newtabpage.activity-stream.discoverystream.hybridLayout.enabled + description: Enable compact cards on newtab grid only for specific breakpoints + hideCardBackground: + type: boolean + fallbackPref: browser.newtabpage.activity-stream.discoverystream.hideCardBackground.enabled + description: Removes Pocket card background and borders. + fourCardLayout: + type: boolean + fallbackPref: browser.newtabpage.activity-stream.discoverystream.fourCardLayout.enabled + description: Enable four Pocket cards per row. + newFooterSection: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.newFooterSection.enabled + description: Enable an updated Pocket section topics footer + saveToPocketCard: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.saveToPocketCard.enabled + description: >- + A save to Pocket button inside the card, shown on the card thumbnail, on + hover. + saveToPocketCardRegions: + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.saveToPocketCardRegions + description: >- + CSV string of regions that support the save to Pocket button inside the card. + hideDescriptions: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.hideDescriptions.enabled + description: >- + Hide or display descriptions for Pocket stories on newtab. + hideDescriptionsRegions: + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.hideDescriptionsRegions + description: >- + CSV string of regions that hide descriptions for Pocket stories on newtab. + compactGrid: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.compactGrid.enabled + description: >- + Reduce the number of pixels between the Pocket cards on newtab. + compactImages: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.compactImages.enabled + description: >- + Reduce the height on Pocket card images on newtab. + imageGradient: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.imageGradient.enabled + description: >- + Add a gradient to the bottom of Pocket card images on newtab to blend the + image in with the card. + titleLines: + type: int + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.titleLines + description: >- + Changes the maximum number of lines a title can be for Pocket cards on newtab. + descLines: + type: int + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.descLines + description: >- + Changes the maximum number of lines a description can be for Pocket cards on newtab. + onboardingExperience: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.onboardingExperience.enabled + description: >- + Enables an onboarding experience for Pocket section on newtab. + essentialReadsHeader: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.essentialReadsHeader.enabled + description: >- + Updates the Pocket section header and title to say "Today’s Essential Reads", + moves the "Recommended by Pocket" header to the right side. + editorsPicksHeader: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.editorsPicksHeader.enabled + description: >- + Updates the Pocket section header and title to say "Editor’s Picks", if used with + essentialReadsHeader, creates a second section 2 rows down for editorsPicksHeader. + recentSavesEnabled: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.recentSaves.enabled + description: >- + Updates the Pocket section with a new header and 1 row of recently saved Pocket stories. + readTime: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.readTime.enabled + description: >- + Displays an estimated read time for Pocket cards on newtab. + newSponsoredLabel: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.newSponsoredLabel.enabled + description: >- + Updates the sponsored label position to below the image for Pocket cards on newtab. + sendToPocket: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.sendToPocket.enabled + description: >- + Decides what to do when a logged out user click "Save to Pocket" from a Pocket card. + wallpapers: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.newtabWallpapers.enabled + description: >- + Turns on and off wallpaper support. + wallpapersV2: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.newtabWallpapers.v2.enabled + description: >- + Turns on and off updated wallpaper experience. + wallpapersHighlightEnabled: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.newtabWallpapers.highlightEnabled + description: >- + Turns on and off wallpaper feature highlight. + wallpaperHighlightHeaderText: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.newtabWallpapers.highlightHeaderText + description: >- + Changes the wallpaper feature highlight header + wallpaperHighlightContentText: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.newtabWallpapers.highlightContentText + description: >- + Changes the wallpaper feature highlight content + wallpaperHighlightCtaText: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.newtabWallpapers.highlightCtaText + description: >- + Changes the wallpaper feature highlight cta + weatherLocationSearch: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.weather.locationSearchEnabled + description: >- + Turns on and off location search for newtab weather widget + recsPersonalized: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.recs.personalized + description: >- + Enables Pocket stories personalization. + spocsPersonalized: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.spocs.personalized + description: >- + Enables Pocket sponsored content personalization. + discoveryStreamConfig: + description: A JSON blob of discovery stream configuration. + type: string + setPref: + branch: user + pref: "browser.newtabpage.activity-stream.discoverystream.config" + spocsEndpoint: + description: The URL for the spocs endpoint. + type: string + setPref: + branch: user + pref: "browser.newtabpage.activity-stream.discoverystream.spocs-endpoint" + spocsEndpointAllowlist: + description: Comma separated list of allowed endpoints for fetching spocs + type: string + setPref: + branch: user + pref: "browser.newtabpage.activity-stream.discoverystream.endpoints" + spocsClearEndpoint: + description: URL for deleting any server data when a user opts out of sponsored content + type: string + setPref: + branch: user + pref: "browser.newtabpage.activity-stream.discoverystream.endpointSpocsClear" + ctaButtonSponsors: + description: A CSV list of sponsors that should use a button CTA. + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.ctaButtonSponsors + ctaButtonVariant: + description: Specifies which variant to use for any sponsors in ctaButtonSponsors + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.ctaButtonVariant + spocMessageVariant: + description: Adds some message dialogs explainging sponsored content to the user + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.spocMessageVariant + regionStoriesConfig: + description: A comma-separated list of region to get stories for. + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.region-stories-config + regionBffConfig: + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.region-bff-config + description: A comma-separated list of regions to get stories from the recommendations BFF. Also requires region-stories-config. + merinoProviderEnabled: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.merino-provider.enabled + description: Sets the recommendations provider service to Merino. + merinoProviderEndpoint: + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.merino-provider.endpoint + description: Merino endpoint to use for recommendations. + regionStoriesBlock: + description: A comma-separated list of regions that do not get stories, regardless of locale-list-config. + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.region-stories-block + localeListConfig: + description: A comma-separated list of locales that get stories, regardless of region-stories-config. + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.locale-list-config + regionSpocsConfig: + description: A comma-separated list of regions that get spocs by default. + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.region-spocs-config + regionWeatherConfig: + description: A comma-separated list of regions that get weather by default. + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.region-weather-config + localeWeatherConfig: + description: A comma-separated list of locales that weather widget supports. + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.locale-weather-config + topSitesMaxSponsored: + # Defined under `pocketNewtab` as it needs to be used along with other variables + type: int + description: The maximum number of sponsored Top Sites to be displayed + topSitesContileMaxSponsored: + # Defined under `pocketNewtab` as it needs to be used along with other variables + type: int + description: The maximum number of sponsored Top Sites used from Contile + topSitesContileSovEnabled: + # Defined under `pocketNewtab` as it needs to be used along with other variables + description: Enable the Share-of-Voice feature for Sponsored Topsites. + type: boolean + fallbackPref: >- + browser.topsites.contile.sov.enabled + pocketFeedParameters: + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.pocket-feed-parameters + description: >- + Add parameters to Pocket feed URL. + merinoFeedExperiment: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.merino-feed-experiment + description: >- + Should we pass the experiment branch and slug to the Merino feed request. + thumbsUpDown: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.thumbsUpDown.enabled + description: Display thumbs up and down buttons on recommended stories + regionThumbsUpDownConfig: + description: A comma-separated list of regions that get thumbs up and down buttons by default. + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.thumbsUpDown.region-thumbs-config + description: Display thumbs up and down buttons on recommended stories + localeThumbsUpDownConfig: + description: A comma-separated list of locales that get thumbs up and down buttons by default. + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.thumbsUpDown.locale-thumbs-config + thumbsUpDownCompactLayout: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.thumbsUpDown.searchTopsitesCompact + description: >- + Change the layout of the sections to be more compact to account for the added card height with the thumbs up/down enabled. + +saveToPocket: + description: The save to Pocket feature + owner: sdowne@mozilla.com + hasExposure: false + variables: + emailButton: + type: boolean + setPref: + branch: user + pref: extensions.pocket.refresh.emailButton.enabled + description: Just for the new Pocket panels, enables the email signup button. + hideRecentSaves: + type: boolean + setPref: + branch: user + pref: extensions.pocket.refresh.hideRecentSaves.enabled + description: Hides the recently saved section in the home panel. + bffRecentSaves: + type: boolean + setPref: + branch: user + pref: extensions.pocket.bffRecentSaves + description: Use the new BFF Proxy Service instead of the legacy Pocket Service for Recent Saves + bffApi: + type: string + setPref: + branch: user + pref: extensions.pocket.bffApi + description: BFF Proxy Service domain + oAuthConsumerKeyBff: + type: string + setPref: + branch: user + pref: extensions.pocket.oAuthConsumerKeyBff + description: BFF Proxy Service OAuth Consumer Key + +password-autocomplete: + description: A special autocomplete UI for password fields. + owner: sgalich@mozilla.com + hasExposure: false + variables: + directMigrateSingleProfile: + type: boolean + description: Enable direct migration? + +# Experiment for different Relay UI treatments. Variations at: +# https://www.figma.com/design/gnyElr1Wtce3RdQT54y8kS/Relay-%26-Firefox-Integration?node-id=316-2024&node-type=canvas&t=A3iAuevSTtwXeFxb-0 +email-autocomplete-relay: + description: Relay UI for email fields. + exposureDescription: Exposure is sent each time a user sees the Relay autocomplete dropdown item + hasExposure: true + owner: lcrouch@mozilla.com + variables: + firstOfferVersion: + type: string + description: Which Relay UI treatment to show + fallbackPref: signon.firefoxRelay.firstOfferVersionFallback + +# This feature flag mirrors the one used for ios +# https://github.com/mozilla-mobile/firefox-ios/blob/main/nimbus-features/addressAutofillFeature.yaml +address-autofill-feature: + description: Enabling address autofill feature + owner: issozi@mozilla.com + hasExposure: false + variables: + status: + type: boolean + setPref: + branch: default + pref: extensions.formautofill.addresses.experiments.enabled + description: If true, we will allow user to use address autofill + +creditcards-autofill-enabled: + description: Credit card autofill is enabled in all regions + owner: issozi@mozilla.com + hasExposure: false + variables: + creditcardsSupported: + description: Enable credit card autofill in all regions + type: string + setPref: + branch: default + pref: extensions.formautofill.creditCards.supported + +shellService: + description: "Interface with OS, e.g., pinning and set default" + owner: desktop-integrations@mozilla.com + hasExposure: false + variables: + disablePin: + type: boolean + description: Disable pin to taskbar feature + disableStartMenuPin: + type: boolean + setPref: + branch: user + pref: browser.shell.disableStartMenuPin + description: Disable pin to start menu feature + setDefaultBrowserUserChoice: + type: boolean + setPref: + branch: user + pref: browser.shell.setDefaultBrowserUserChoice + description: Should it set as default browser + setDefaultBrowserUserChoiceRegRename: + type: boolean + setPref: + branch: user + pref: browser.shell.setDefaultBrowserUserChoice.regRename + description: When setting default via UserChoice, rename the underlying registry key to prevent kennel driver registry locking. + setDefaultPDFHandler: + type: boolean + fallbackPref: browser.shell.setDefaultPDFHandler + description: Should setting it as the default browser set it as the default PDF handler. + setDefaultPDFHandlerOnlyReplaceBrowsers: + type: boolean + fallbackPref: browser.shell.setDefaultPDFHandler.onlyReplaceBrowsers + description: >- + Should setting it as the default PDF handler only replace existing PDF + handlers that are browsers, and not other PDF handlers such as Acrobat + Reader or Nitro PDF. + setDefaultGuidanceNotifications: + type: boolean + fallbackPref: browser.shell.setDefaultGuidanceNotifications + description: Whether or not the user should see the guidance notifications when setting Firefox as their default browser. +upgradeDialog: + description: The dialog shown for major upgrades + owner: omc@mozilla.com + hasExposure: false + isEarlyStartup: true + variables: + enabled: + type: boolean + fallbackPref: browser.startup.upgradeDialog.enabled + description: Is the feature enabled? + +cfr: + description: "A Firefox Messaging System message for the cfr message channel" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +"moments-page": + description: "A Firefox Messaging System message for the moments-page message channel" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +infobar: + description: "A Firefox Messaging system message for the infobar message channel" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +spotlight: + description: "A Firefox Messaging System message for the spotlight message channel" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +# Before 117, this feature only included one variable, pdfJsTourProgress. So, +# the minimum version for messaging experiments using this feature ID is 117. +featureCallout: + description: "A Firefox Messaging System message for the Feature Callout message channel" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +fullPageTranslation: + description: This feature opens a popup panel to offer to translate a page. + owner: gtatum@mozilla.com + hasExposure: false + variables: + boolean: + description: Set to true to enable the translations feature + type: boolean + setPref: + branch: user + pref: browser.translations.enable + +fullPageTranslationAutomaticPopup: + description: Controls whether the popup automatically shows for translations. + owner: gtatum@mozilla.com + hasExposure: false + variables: + boolean: + description: Set to true to automatically popup, and false to only show the button. + type: boolean + setPref: + branch: user + pref: browser.translations.automaticallyPopup + +selectTranslation: + description: This feature enables the option to translate selected text from the context menu. + owner: enordin@mozilla.com + hasExposure: false + variables: + enabled: + description: Set to true to enable the select-translations feature + type: boolean + setPref: + branch: user + pref: browser.translations.select.enable + +pdfjs: + description: The Firefox pdf reader. + owner: pdfjs-team@mozilla.com + hasExposure: true + exposureDescription: >- + Exposure is sent each time a pdf is displayed. + variables: + enableAltText: + description: Set to true to enable alt text generation. + type: boolean + setPref: + branch: default + pref: pdfjs.enableAltText + enableUpdatedAddImage: + description: Set to true to enable updated add image with alt text flow. + type: boolean + setPref: + branch: default + pref: pdfjs.enableUpdatedAddImage + browserMlEnable: + description: Set to true to enable local inference engine + type: boolean + setPref: + branch: default + pref: browser.ml.enable + +# fxms-message-* placeholder feature ids +# +# https://docs.google.com/spreadsheets/d/119YbeKStLL0Fg2QkK-yN93mrtD1rlneGZGTl_jAwtyw/edit#gid=1903378504 +# has info on using these placeholder feature ids, as well as (very short) instructions on +# checking to see if we need more (which we do once per Nightly) and how to add them. +# +# Instructions for adding a new fxms-message-* placeholder feature id +# 1) clone an existing one here +# 2) update the YAML feature id to the next unused number +# 3) update the YAML description +# 4) add the new feature id to MESSAGING_EXPERIMENTS_DEFAULT_FEATURES list in MessagingExperimentConstants.sys.mjs +# 5) add the new feature id and the version it landed to the spreadsheet tab linked to above + +fxms-message-1: + description: "A Firefox Messaging System message" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +fxms-message-2: + description: "Firefox Messaging System message 2" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +fxms-message-3: + description: "Firefox Messaging System message 3" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +fxms-message-4: + description: "Firefox Messaging System message 4" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +fxms-message-5: + description: "Firefox Messaging System message 5" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +fxms-message-6: + description: "Firefox Messaging System message 6" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +fxms-message-7: + description: "Firefox Messaging System message 7" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +fxms-message-8: + description: "Firefox Messaging System message 8" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +fxms-message-9: + description: "Firefox Messaging System message 9" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +fxms-message-10: + description: "Firefox Messaging System message 10" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +fxms-message-11: + description: "Firefox Messaging System message 11" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +fxms-message-12: + description: "Firefox Messaging System message 12" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +fxms-message-13: + description: "Firefox Messaging System message 13" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +fxms-message-14: + description: "Firefox Messaging System message 14" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +fxms-message-15: + description: "Firefox Messaging System message 15" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +whatsNewPage: + description: "A Firefox Messaging System message for the What's new page channel" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + variables: + overrideUrl: + description: URL of the What's new page + type: string + setPref: + branch: user + pref: startup.homepage_override_url_nimbus + maxVersion: + description: Maximum Firefox update version + type: string + setPref: + branch: user + pref: startup.homepage_override_nimbus_maxVersion + minVersion: + description: Minimum Firefox update version + type: string + setPref: + branch: user + pref: startup.homepage_override_nimbus_minVersion + disableWNP: + description: >- + Block all What's New Pages. Used to compare no-WNP control branches to + WNP treatment branches. + type: boolean + setPref: + branch: user + pref: startup.homepage_override_nimbus_disable_wnp + +pbNewtab: + description: "A Firefox Messaging System message for the pbNewtab message channel" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched. + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +backgroundTaskMessage: + description: "A Firefox Messaging System message for the background task message channel" + owner: nalexander@mozilla.com + applications: + - firefox-desktop-background-task + hasExposure: true + exposureDescription: >- + Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched. + schema: + uri: "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/BackgroundTaskMessagingExperiment.schema.json" + variables: {} + +backgroundUpdateAutomaticRestart: + description: "Whether to automatically restart when the background update task could make more progress." + owner: nalexander@mozilla.com + applications: + - firefox-desktop-background-task + hasExposure: false + variables: + enabled: + type: boolean + fallbackPref: app.update.background.automaticRestartEnabled + description: >- + When true, make the background update task restart when the final update state is `READY_FOR_RESTART`. + Generally, this will finish applying a staged update, completing the update earlier than it + otherwise would have been completed. + +pictureinpicture: + description: Message for first time Picture-in-Picture users + owner: nbaumgardner@mozilla.com + hasExposure: true + exposureDescription: Exposure is sent when a user hovers over a video and Picture-in-Picture has not been used before + variables: + title: + type: string + description: The title to be used for the PiP toggle + message: + type: string + description: The message to be used in the PiP toggle + showIconOnly: + type: boolean + description: Whether to show the first time PiP toggle or show the PiP icon only + oldToggle: + type: boolean + description: Whether to show the control style (true) or variant style (false) for the first time PiP toggle + displayDuration: + type: int + description: Duration of PiP first time toggle display in days before switching to PiP icon toggle + +glean: + description: "The Glean data-control-plane feature within Firefox Desktop for controlling metric configuration" + owner: glean-team@mozilla.com + hasExposure: false + variables: + newtabPingEnabled: + type: "boolean" + fallbackPref: "browser.newtabpage.ping.enabled" + description: "Whether to submit the 'newtab' ping" + gleanMetricConfiguration: + type: json + description: | + A map of metric base-identifiers to booleans representing the state of the 'enabled' flag for that metric. + This variable is intended for interacting with the Glean data-control-plane via the Server Knobs functionality + to remotely configure metrics to be enabled or disabled. + +gleanInternalSdk: + description: "The Glean internal SDK feature intended only for internal Glean Team use" + owner: glean-team@mozilla.com + hasExposure: false + variables: + finalInactive: + type: "boolean" + description: "Enables FOG early shutdown pings when true" + setPref: + branch: user + pref: telemetry.glean.internal.finalInactive + gleanMetricConfiguration: + type: json + description: | + A map of metric base-identifiers to booleans representing the state of the 'enabled' flag for that metric. + This is not for public use! For data-control-plane use, please refer to the Glean documentation and use the + `gleanMetricConfiguration` found in the `glean` feature for this. + gleanMaxPingsPerMinute: + type: int + description: >- + Maximum number of pings that can be sent in a 60 second interval + setPref: + branch: user + pref: telemetry.glean.internal.maxPingsPerMinute + +browserLowMemoryPrefs: + description: Prefs which control the browser's behaviour under low memory. + owner: haftandilian@mozilla.com + hasExposure: false + variables: + lowMemoryResponseMask: + description: Control the response on macOS when under memory pressure. + type: int + setPref: + branch: default + pref: "browser.lowMemoryResponseMask" + lowMemoryResponseOnWarn: + description: Controls which macOS memory-pressure levels trigger the browser low memory response. + type: boolean + setPref: + branch: default + pref: "browser.lowMemoryResponseOnWarn" + tabsUnloadOnLowMemory: + description: Whether to unload tabs when available memory is running low. + type: boolean + setPref: + branch: default + pref: "browser.tabs.unloadOnLowMemory" + +scriptLoaderPrefs: + description: Prefs that control the script loader. + owner: npierron@mozilla.com + hasExposure: false + variables: + delazificationStrategy: + description: >- + Selects which parsing/delazification strategy should be used while + parsing scripts off-main-thread. See DelazificationOption in + CompileOptions.h for values. + type: int + setPref: + branch: default + pref: "dom.script_loader.delazification.strategy" + +echPrefs: + description: Prefs that control Encrypted Client Hello. + owner: djackson@mozilla.com + hasExposure: false + variables: + tlsEnabled: + description: Whether to enable ECH for connections using TLS + type: boolean + setPref: + branch: default + pref: "network.dns.echconfig.enabled" + h3Enabled: + description: Whether to enable ECH for connections using H3/QUIC + type: boolean + setPref: + branch: default + pref: "network.dns.http3_echconfig.enabled" + forceWaitHttpsRR: + description: Whether to force waiting for HTTPS DNS records, which ECH requires. + type: boolean + setPref: + branch: default + pref: "network.dns.force_waiting_https_rr" + insecureFallback: + description: Whether to fallback to non-ECH connections if all ECH RRs fail. + type: boolean + setPref: + branch: default + pref: "network.dns.echconfig.fallback_to_origin_when_all_failed" + tlsGreaseProb: + description: Probability of GREASEing a TLS connection with ECH (0-100). + type: int + setPref: + branch: default + pref: "security.tls.ech.grease_probability" + h3GreaseEnabled: + description: Whether to apply GREASE settings to H3/QUIC connections. + type: boolean + setPref: + branch: default + pref: "security.tls.ech.grease_http3" + disableGreaseOnFallback: + description: Whether to disable GREASE when retrying a connection. + type: boolean + setPref: + branch: default + pref: "security.tls.ech.disable_grease_on_fallback" + greasePaddingSize: + description: Assumed echConfig padding length for GREASE extensions (1-255). + type: int + setPref: + branch: default + pref: "security.tls.ech.grease_size" + +dohPrefs: + description: Prefs that control DNS over HTTPS. + owner: vgosu@mozilla.com + hasExposure: false + variables: + trrMode: + description: Has a value of 2 for TRR first, 3 for TRR only, 0 for off. + type: int + setPref: + branch: default + pref: "network.trr.mode" + trrUri: + description: The URL of the DNS over HTTPS endpoint + type: string + setPref: + branch: default + pref: "network.trr.uri" + dohMode: + description: Same as trrMode, but set by the DoHController module. + type: int + setPref: + branch: default + pref: "doh-rollout.mode" + dohUri: + description: Same as trrUri, but set by the DoHController module. + type: string + setPref: + branch: default + pref: "doh-rollout.uri" + enableFallbackWarningPage: + description: Whether DoH fallback warning page will be displayed when DoH doesn't work in TRR first mode. + type: boolean + setPref: + branch: default + pref: "network.trr.display_fallback_warning" + showFallbackCheckbox: + description: Whether the checkbox to enable the fallback warning page is displayed in the settings UI. + type: boolean + setPref: + branch: default + pref: "network.trr_ui.show_fallback_warning_option" + nativeHTTPSRecords: + description: Whether we can perform native DNS HTTPS lookups + type: boolean + setPref: + branch: default + pref: "network.dns.native_https_query" + +dooh: + description: "DNS over Oblivious HTTP" + owner: vgosu@mozilla.com + hasExposure: false + variables: + ohttpEnabled: + description: Whether to use Oblivious HTTP for the resolution + type: boolean + setPref: + branch: default + pref: "network.trr.use_ohttp" + ohttpRelayUri: + description: The URL of the Oblivious HTTP relay + type: string + setPref: + branch: default + pref: "network.trr.ohttp.relay_uri" + ohttpConfigUri: + description: The URL used to fetch the configuration of the Oblivious HTTP gateway + type: string + setPref: + branch: default + pref: "network.trr.ohttp.config_uri" + ohttpUri: + description: The URL of the Oblivious DNS over HTTPS target resource + type: string + setPref: + branch: default + pref: "network.trr.ohttp.uri" + +networking: + description: "Firefox Networking (Necko)" + owner: vgosu@mozilla.com + hasExposure: false + variables: + ehPreloadEnabled: + description: Whether Early Hints preload is enabled + type: boolean + setPref: + branch: default + pref: "network.early-hints.enabled" + ehPreconnectEnabled: + description: Whether Early Hints preconnect is enabled + type: boolean + setPref: + branch: default + pref: "network.early-hints.preconnect.enabled" + dnsMaxPriorityThreads: + description: The maximum number of high priority DNS threads that can be created. + type: int + setPref: + branch: default + pref: "network.dns.max_high_priority_threads" + dnsMaxAnyPriorityThreads: + description: The maximum number of DNS threads that can be created to handle any priority DNS requests. + type: int + setPref: + branch: default + pref: "network.dns.max_any_priority_threads" + preconnect: + description: Whether the rel=preconnect feature is enabled + type: boolean + setPref: + branch: default + pref: "network.preconnect" + networkPredictor: + description: Whether the Necko predictor is enabled + type: boolean + setPref: + branch: default + pref: "network.predictor.enabled" + http3CCalgorithm: + description: The congestion control algorithm with which to configure neqo. 0 for NewReno, 1 for Cubic + type: int + setPref: + branch: default + pref: "network.http.http3.cc_algorithm" + sendOnDataFinished: + description: Whether we can send OnDataFinished in the content process + type: boolean + setPref: + branch: default + pref: "network.send_OnDataFinished" + sendOnDataFinshedFromInputStreamPump: + description: Whether we can send OnDataFinished to the content process from InputStreamPump + type: boolean + setPref: + branch: default + pref: "network.send_OnDataFinished.nsInputStreamPump" + sendOnDataFinishedToHtml5parser: + description: Whether we can send OnDataFinished to the html5parser in content process + type: boolean + setPref: + branch: default + pref: "network.send_OnDataFinished.html5parser" + sendOnDataFinishedToCssLoader: + description: Whether we can send OnDataFinished to the cssLoader in content process + type: boolean + setPref: + branch: default + pref: "network.send_OnDataFinished.cssLoader" + enableOffMainThreadStreamDecompression: + description: Whether to enable decompression of network streams off-main-thread + type: boolean + setPref: + branch: default + pref: "network.decompression_off_mainthread2" + offMainThreadStreamDecompressionThreshold: + description: Minimum content length for off-main-thread decompression + type: int + setPref: + branch: default + pref: "network.decompression_off_mainthread_min_size" + httpMaxConnections: + description: The maximum number of http connections. + type: int + setPref: + branch: default + pref: "network.http.max-connections" + httpMaxPersistentConnectionsPerServer: + description: The maximum number of persistent connections to a server + type: int + setPref: + branch: default + pref: "network.http.max-persistent-connections-per-server" + speculativeConnectionLimit: + description: The maximum number of half-open sockets allowed for speculative connections + type: int + setPref: + branch: default + pref: "network.http.speculative-parallel-limit" + chipsEnabled: + description: Whether CHIPS is enabled or not + type: boolean + setPref: + branch: default + pref: "network.cookie.CHIPS.enabled" + chipsMigrationTarget: + description: What CHIPS migration count target the browser should reach. + type: int + setPref: + branch: default + pref: "network.cookie.CHIPS.migrateDatabaseTarget" + chipsPartitionLimitEnabled: + description: Whether we enforce CHIPS partition limit + type: boolean + setPref: + branch: default + pref: "network.cookie.chips.partitionLimitEnabled" + chipsPartitionLimitDryRun: + description: Whether we actually perform purging/rejection, used to report telemetry without webcompat issues + type: boolean + setPref: + branch: default + pref: "network.cookie.chips.partitionLimitDryRun" + chipsPartitionLimitByteCapacity: + description: The actual value of the CHIPS partition limit in bytes + type: boolean + setPref: + branch: default + pref: "network.cookie.chips.partitionLimitByteCapacity" + dnsGracePeriod: + description: The grace period allows the DNS cache to use expired entries, while kicking off a revalidation in the background. + type: int + setPref: + branch: default + pref: "network.dnsCacheExpirationGracePeriod" + maxDnsCacheEntries: + description: This is the number of dns cache entries allowed + type: int + setPref: + branch: default + pref: "network.dnsCacheEntries" + +disableHttp3: + description: "Whether HTTP/3 is disabled" + owner: kershaw@mozilla.com + hasExposure: false + variables: + withThirdPartyRoots: + description: If third party roots are detected, disable HTTP/3 + type: boolean + setPref: + branch: default + pref: "network.http.http3.disable_when_third_party_roots_found" + + +networkPrioritization: + description: "Network request prioritization" + owner: vgosu@mozilla.com + hasExposure: false + variables: + priorityHeader: + description: Whether to set the Priority header on each request. + type: boolean + setPref: + branch: default + pref: "network.http.priority_header.enabled" + fetchPriority: + description: Whether fetch priority is enabled + type: boolean + setPref: + branch: default + pref: "network.fetchpriority.enabled" + h3FetchPriority: + description: Whether to send HTTP3 priority frames + type: boolean + setPref: + branch: default + pref: "network.http.http3.priority" + sendNoRFC7540Setting: + description: Whether to send the SETTINGS_NO_RFC7540_PRIORITIES for the HTTP2 session. + type: boolean + setPref: + branch: default + pref: "network.http.http2.send_NO_RFC7540_PRI" + h2deps: + description: Whether RFC7540 priorities / stream dependencies are enabled + type: boolean + setPref: + branch: default + pref: "network.http.http2.enabled.deps" + h3BackgroundTabDeprioritization: + description: Lowers the priority when the tab is in the background. Potential privacy concerns. + type: boolean + setPref: + branch: default + pref: "network.http.http3.send_background_tabs_deprioritization" + documentPriorityIncremental: + description: Sets the incremental flag on the Priority header for document requests + type: boolean + setPref: + branch: default + pref: "dom.document_priority.incremental" + imagePriorityIncremental: + description: Sets the incremental flag on the Priority header for image requests + type: boolean + setPref: + branch: default + pref: "image.priority.incremental" + imageAdjustLayoutPriority: + description: Whether the network request priority should be adjusted according the layout and view frame position of each particular image. + type: boolean + setPref: + branch: default + pref: "image.layout_network_priority" + adjustLinkPreloadScriptLow: + description: Priority adjustment low for link-preload-script + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.link-preload-script.low" + adjustLinkPreloadScriptHigh: + description: Priority adjustment high for link-preload-script + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.link-preload-script.high" + adjustLinkPreloadScriptAuto: + description: Priority adjustment auto for link-preload-script + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.link-preload-script.auto" + adjustModuleScriptLow: + description: Priority adjustment low for module-script + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.module-script.low" + adjustModuleScriptHigh: + description: Priority adjustment high for module-script + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.module-script.high" + adjustModuleScriptAuto: + description: Priority adjustment auto for module-script + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.module-script.auto" + adjustAsyncOrDeferScriptLow: + description: Priority adjustment low for async-or-defer-script + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.async-or-defer-script.low" + adjustAsyncOrDeferScriptHigh: + description: Priority adjustment high for async-or-defer-script + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.async-or-defer-script.high" + adjustAsyncOrDeferScriptAuto: + description: Priority adjustment auto for async-or-defer-script + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.async-or-defer-script.auto" + adjustScriptInHeadLow: + description: Priority adjustment low for script-in-head + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.script-in-head.low" + adjustScriptInHeadHigh: + description: Priority adjustment high for script-in-head + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.script-in-head.high" + adjustScriptInHeadAuto: + description: Priority adjustment auto for script-in-head + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.script-in-head.auto" + adjustOtherScriptLow: + description: Priority adjustment low for other-script + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.other-script.low" + adjustOtherScriptHigh: + description: Priority adjustment high for other-script + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.other-script.high" + adjustOtherScriptAuto: + description: Priority adjustment auto for other-script + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.other-script.auto" + adjustLinkPreloadFontLow: + description: Priority adjustment low for link-preload-font + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.link-preload-font.low" + adjustLinkPreloadFontHigh: + description: Priority adjustment high for link-preload-font + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.link-preload-font.high" + adjustLinkPreloadFontAuto: + description: Priority adjustment auto for link-preload-font + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.link-preload-font.auto" + adjustLinkPreloadFetchLow: + description: Priority adjustment low for link-preload-fetch + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.link-preload-fetch.low" + adjustLinkPreloadFetchHigh: + description: Priority adjustment high for link-preload-fetch + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.link-preload-fetch.high" + adjustLinkPreloadFetchAuto: + description: Priority adjustment auto for link-preload-fetch + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.link-preload-fetch.auto" + adjustDeferredStyleLow: + description: Priority adjustment low for deferred-style + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.deferred-style.low" + adjustDeferredStyleHigh: + description: Priority adjustment high for deferred-style + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.deferred-style.high" + adjustDeferredStyleAuto: + description: Priority adjustment auto for deferred-style + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.deferred-style.auto" + adjustLinkPreloadStyleLow: + description: Priority adjustment low for link-preload-style + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.link-preload-style.low" + adjustLinkPreloadStyleHigh: + description: Priority adjustment high for link-preload-style + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.link-preload-style.high" + adjustLinkPreloadStyleAuto: + description: Priority adjustment auto for link-preload-style + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.link-preload-style.auto" + adjustNonDeferredStyleLow: + description: Priority adjustment low for non-deferred-style + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.non-deferred-style.low" + adjustNonDeferredStyleHigh: + description: Priority adjustment high for non-deferred-style + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.non-deferred-style.high" + adjustNonDeferredStyleAuto: + description: Priority adjustment auto for non-deferred-style + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.non-deferred-style.auto" + adjustGlobalFetchApiLow: + description: Priority adjustment low for global-fetch-api + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.global-fetch-api.low" + adjustGlobalFetchApiHigh: + description: Priority adjustment high for global-fetch-api + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.global-fetch-api.high" + adjustGlobalFetchApiAuto: + description: Priority adjustment auto for global-fetch-api + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.global-fetch-api.auto" + adjustImagesLow: + description: Priority adjustment low for images + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.images.low" + adjustImagesHigh: + description: Priority adjustment high for images + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.images.high" + adjustImagesAuto: + description: Priority adjustment auto for images + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.images.auto" + lowerTrackersPriority: + description: Whether to lower priority of resources on the tracking protection list + type: boolean + setPref: + branch: default + pref: "privacy.trackingprotection.lower_network_priority" + enableHttpTailing: + description: Whether certain requests, mainly trackers, are put to the "tail", behind other requests + type: boolean + setPref: + branch: default + pref: "network.http.tailing.enabled" + httpTailingUrgency: + description: Priority urgency of tailed request + type: int + setPref: + branch: default + pref: "network.http.tailing.urgency" + httpTailingDelayQuantum: + description: When the page load has not yet reached DOMContentLoaded point, tail requestes are delayed by (non-tailed requests count + 1) * delay-quantum milliseconds. + type: int + setPref: + branch: default + pref: "network.http.tailing.delay-quantum" + httpTailingDelayQuantumAfterDCL: + description: After the page load reached DOMContentLoaded point, tail requestes are delayed by (non-tailed requests count + 1) * delay-quantum-after-domcontentloaded milliseconds. + type: int + setPref: + branch: default + pref: "network.http.tailing.delay-quantum-after-domcontentloaded" + httpTailingMaxDelay: + description: Upper limit for the calculated delay, prevents long standing and comet-like requests + type: int + setPref: + branch: default + pref: "network.http.tailing.delay-max" + httpTailingTotalMaxDelay: + description: Total limit we delay tailed requests since page load start + type: int + setPref: + branch: default + pref: "network.http.tailing.total-max" + +networkingAuth: + description: "Firefox Networking (Necko) Authentication" + owner: vgosu@mozilla.com + hasExposure: false + variables: + redirectForAuthRetriesEnabled: + description: Whether to enable redirects for auth retries + type: boolean + setPref: + branch: default + pref: "network.auth.use_redirect_for_retries" + +networkingDenyIpAddrAny: + description: "Firefox Networking (Necko) Deny IP Address Any" + owner: vgosu@mozilla.com + hasExposure: false + variables: + denyIpAddrAny: + description: Whether to deny empty (0.0.0.0) IP addresses + type: boolean + setPref: + branch: default + pref: "network.socket.ip_addr_any.disabled" + +pingsender: + description: "In-product usage of the pingsender telemetry reporter." + owner: nalexander@mozilla.com + hasExposure: false + variables: + backgroundTaskEnabled: + type: "boolean" + fallbackPref: "toolkit.telemetry.shutdownPingSender.backgroundtask.enabled" + description: "Whether to use the `pingsender` background task to send shutdown telemetry" + +dapTelemetry: + description: DAP Telemetry + owner: simon@mozilla.com + hasExposure: false + variables: + enabled: + type: boolean + description: Whether to automatically send DAP measurements. + task1Enabled: + type: boolean + description: Whether to send fake measurements for task 1. + task1TaskId: + type: string + description: The task ID to use for task 1 measurements. + visitCountingEnabled: + type: boolean + description: Whether to count visits to the provided list of URLs. + visitCountingExperimentList: + type: json + description: A list of experiments with URLs for which we want to count visits. + +dapAggregators: + description: Aggregator server configuration to use for submitting DAP reports. + owner: tcampbell@mozilla.com + hasExposure: false + variables: + leader_url: + description: The URL of the DAP Leader server where reports are submitted. + type: string + setPref: + branch: default + pref: "toolkit.telemetry.dap.leader.url" + leader_hpke: + description: The base64-encode HPKE key to encrypt leader shares with. + type: string + setPref: + branch: default + pref: "toolkit.telemetry.dap.leader.hpke" + helper_url: + description: The URL of the DAP Helper server. + type: string + setPref: + branch: default + pref: "toolkit.telemetry.dap.helper.url" + helper_hpke: + description: The base64-encode HPKE key to encrypt helper shares with. + type: string + setPref: + branch: default + pref: "toolkit.telemetry.dap.helper.hpke" + +etpLevel2PBMPref: + description: The pref that controls the ETP level 2 list in the private browsing mode + owner: tihuang@mozilla.com + hasExposure: false + variables: + enabled: + description: Whether to enable ETP level 2 list in the private browsing mode. + type: boolean + setPref: + branch: default + pref: "privacy.annotate_channels.strict_list.pbmode.enabled" + +etpStrictFeatures: + description: Prefs to control the strict ETP features + owner: tihuang@mozilla.com + hasExposure: false + variables: + features: + description: The list of strict ETP features to enable in ETP strict mode. + type: string + setPref: + branch: default + pref: "browser.contentblocking.features.strict" + +thirdPartyCookieBlocking: + description: Prefs to control third-party cookie blocking + owner: tihuang@mozilla.com + hasExposure: false + variables: + enabled: + description: Whether to enable third-party cookie blocking + type: boolean + setPref: + branch: default + pref: "network.cookie.cookieBehavior.optInPartitioning" + enabledPBM: + description: Whether to enable third-party cookie blocking in private browsing mode + type: boolean + setPref: + branch: default + pref: "network.cookie.cookieBehavior.optInPartitioning.pbmode" + +thirdPartyTrackerCookieBlocking: + description: Prefs to control third-party tracker cookie blocking + owner: tihuang@mozilla.com + hasExposure: false + variables: + enabled: + description: Whether to enable third-party tracker cookie blocking. + type: boolean + setPref: + branch: default + pref: "network.cookie.cookieBehavior.trackerCookieBlocking" + +fxaButtonVisibility: + description: Prefs to control the visibility of the Firefox Accounts toolbar button when not signed in. + owner: mconley@mozilla.com + hasExposure: false + variables: + boolean: + description: True if the Firefox Accounts toolbar button should be visible when not signed in. + type: boolean + setPref: + branch: user + pref: identity.fxaccounts.toolbar.defaultVisible + pxiToolbarEnabled: + description: >- + True if we're enabling the PXI dropdown menu for the FxA toolbar button instead of + taking the user straight to login + type: boolean + setPref: + branch: user + pref: identity.fxaccounts.toolbar.pxiToolbarEnabled + monitorEnabled: + description: >- + Toggle the Monitor CTA + type: boolean + setPref: + branch: user + pref: identity.fxaccounts.toolbar.pxiToolbarEnabled.monitorEnabled + relayEnabled: + description: >- + Toggle the Relay CTA + type: boolean + setPref: + branch: user + pref: identity.fxaccounts.toolbar.pxiToolbarEnabled.relayEnabled + vpnEnabled: + description: >- + Toggle the VPN CTA + type: boolean + setPref: + branch: user + pref: identity.fxaccounts.toolbar.pxiToolbarEnabled.vpnEnabled + avatarIconVariant: + description: >- + Controls the icon that appears in the toolbar button when in the + signed-out state. + + One of the following values: + - control + - human-circle + - fox-circle + type: string + +syncSetupFlow: + description: Prefs to control the updated Mozilla account panel flow for users without sync enabled. + owner: skhamis@mozilla.com + hasExposure: true + exposureDescription: >- + Exposure is recorded when the user is enrolled in an experiment using this + feature and we show an indicator when we detect their sync is disconnected. + variables: + enabled: + description: True if we should show the user the updated sync set-up UI + type: boolean + setPref: + branch: user + pref: identity.fxaccounts.toolbar.syncSetup.enabled + + +fxaClientAssociation: + description: Prefs to control the client association ping. + owner: mconley@mozilla.com + hasExposure: false + variables: + pingEnabled: + description: >- + True if the client association ping should be sent. + type: boolean + setPref: + branch: user + pref: identity.fxaccounts.telemetry.clientAssociationPing.enabled + +fxaAppMenuItem: + description: >- + Prefs to control the appearance and copy of the FxA sign-in button in the + AppMenu when signed out. + owner: mconley@mozilla.com + hasExposure: true + exposureDescription: >- + Exposure is recorded when the user is enrolled in an experiment using this + feature and the AppMenu on Firefox Desktop is opened. + variables: + ctaCopyVariant: + description: >- + One of the following values: + - control + - sync-devices + - backup-data + - backup-sync + - mobile + type: string + +fxaAvatarMenuItem: + description: >- + Prefs to control the appearance and copy of the FxA sign-in button in the + FxA avatar menu when signed out. + owner: mconley@mozilla.com + hasExposure: true + exposureDescription: >- + Exposure is recorded when the user is enrolled in an experiment using this + feature and the FxA avatar menu on Firefox Desktop is opened. + variables: + ctaCopyVariant: + description: >- + One of the following values: + - control + - sync-devices + - backup-data + - backup-sync + - mobile + type: string + +legacyHeartbeat: + description: Normandy Heartbeat exposed to Nimbus + owner: beth@mozilla.com + hasExposure: false + schema: + uri: "resource://normandy/schemas/LegacyHeartbeat.schema.json" + path: "toolkit/components/normandy/schemas/LegacyHeartbeat.schema.json" + variables: + survey: + type: json + description: The Heartbeat survey parameters. + +queryStripping: + description: Query parameter stripping anti-tracking feature. + owner: emz@mozilla.com + hasExposure: false + variables: + enabledNormalBrowsing: + type: boolean + setPref: + branch: default + pref: privacy.query_stripping.enabled + description: Enables / disables URL query string stripping in normal browsing mode. + enabledPrivateBrowsing: + type: boolean + setPref: + branch: default + pref: privacy.query_stripping.enabled.pbmode + description: Enables / disables URL query string stripping in private browsing mode. + allowList: + type: string + setPref: + branch: default + pref: privacy.query_stripping.allow_list + description: >- + List of sites exempt from query stripping. This list will be merged with + records coming from RemoteSettings. + stripList: + type: string + setPref: + branch: default + pref: privacy.query_stripping.strip_list + description: >- + List of query params to be stripped from URIs. This list will be merged + with records coming from RemoteSettings. + +fontvisibility: + description: Control Font Visibility in PBM + owner: tom@mozilla.com + hasExposure: false + variables: + enabledETP: + type: int + setPref: + branch: default + pref: layout.css.font-visibility.trackingprotection + description: Set the Font Visibility level when Enhanced Tracking Protection is enabled + enabledStandard: + type: int + setPref: + branch: default + pref: layout.css.font-visibility.standard + description: Set the Font Visibility level for normal browsing + enabledPBM: + type: int + setPref: + branch: default + pref: layout.css.font-visibility.private + description: Set the Font Visibility level for private browsing (will override ETP) + +fingerprintingProtection: + description: Control Fingerprinting Protection + owner: tihuang@mozilla.com + hasExposure: false + variables: + enabledNormal: + type: boolean + setPref: + branch: default + pref: privacy.fingerprintingProtection + description: Enables / disables fingerprinting protection in normal browsing mode. + enabledPrivate: + type: boolean + setPref: + branch: default + pref: privacy.fingerprintingProtection.pbmode + description: Enables / disables fingerprinting protection in private browsing mode. + overrides: + type: string + setPref: + branch: default + pref: privacy.fingerprintingProtection.overrides + description: >- + The protection overrides to add or remove fingerprinting protection + targets. Please check RFPTargets.inc for all supported targets. + fdlibm_math: + type: boolean + setPref: + branch: default + pref: javascript.options.use_fdlibm_for_sin_cos_tan + description: >- + Uses a different math backend for Math.sin/cos/tan in JavaScript that exposes less entropy + canvas_random_use_siphash: + type: boolean + setPref: + branch: default + pref: privacy.resistFingerprinting.randomization.canvas.use_siphash + description: >- + Uses the SipHash function for canvas randomization. + +userCharacteristics: + description: Control user characteristic data collection + owner: tihuang@mozilla.com + hasExposure: false + variables: + currentVersion: + type: int + setPref: + branch: user + pref: toolkit.telemetry.user_characteristics_ping.current_version + description: The current collection version of the user characteristics. + +migrationWizard: + description: Prefs to control the Migration Wizard UI. + owner: mconley@mozilla.com + hasExposure: false + variables: + showImportAll: + description: True if the "Variant 2" of the Migration Wizard browser / profile selection UI should be used. This is only meaningful in the new Migration Wizard. + type: boolean + setPref: + branch: user + pref: browser.migrate.content-modal.import-all.enabled + showPreferencesEntrypoint: + description: True if an entrypoint to the migration wizard should be visible in about:preferences. + type: boolean + setPref: + branch: user + pref: browser.migrate.preferences-entrypoint.enabled + aboutWelcomeBehavior: + description: >- + When migration is kicked off from about:welcome, there are + a few different behaviors that we want to test, controlled + by a preference that is instrumented for Nimbus. The pref + has the following possible states: + + "autoclose": + The user will be directed to the migration wizard in + about:preferences, but once the wizard is dismissed, + the tab will close. + + "embedded": + The migration wizard is embedded in about:welcome. + + "standalone": + The migration wizard will open in a new top-level content + window. + + "default" / other + The user will be directed to the migration wizard in + about:preferences. The tab will not close once the + user closes the wizard. + type: string + setPref: + branch: user + pref: browser.migrate.content-modal.about-welcome-behavior + migrateExtensions: + description: True if importing extensions is enabled. + type: boolean + setPref: + branch: user + pref: browser.migrate.chrome.extensions.enabled + chromeCanRequestPermissions: + description: >- + True if Chrome-based browsers can request read permissions on + platforms where the browser is restricted from reading the contents + of a Chrome-based browser's user data directory. In practice, this + is only relevant to the Linux platform when the browser is installed + as a Snap package. + type: boolean + setPref: + branch: user + pref: browser.migrate.chrome.get_permissions.enabled + +mixedContentUpgrading: + description: Prefs to control whether we upgrade mixed passive content (images, audio, video) from http to https + owner: fbraun@mozilla.com + hasExposure: false + variables: + enabled: + description: True if the mixed content upgrading pref is enabled + type: boolean + setPref: + branch: default + pref: security.mixed_content.upgrade_display_content + image: + description: True if the mixed content upgrading is enabled for images + type: boolean + setPref: + branch: default + pref: security.mixed_content.upgrade_display_content.image + audio: + description: True if the mixed content upgrading is enabled for audio + type: boolean + setPref: + branch: default + pref: security.mixed_content.upgrade_display_content.audio + video: + description: True if the mixed content upgrading is enabled for videos + type: boolean + setPref: + branch: default + pref: security.mixed_content.upgrade_display_content.video + +gc: + description: Prefs that control gc heuristics. + owner: dpalmeiro@mozilla.com + hasExposure: false + variables: + max_nursery_size: + description: Set the maximum size of the GC nursery, in kb. + type: int + setPref: + branch: user + pref: "javascript.options.mem.nursery.max_kb" + min_nursery_size: + description: Set the minimum size of the GC nursery, in kb. + type: int + setPref: + branch: user + pref: "javascript.options.mem.nursery.min_kb" + gc_allocation_threshold_mb: + description: Lower limit for collecting a zone, in MB. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_allocation_threshold_mb" + gc_balanced_heap_limits: + description: Whether balanced heap limits are enabled. + type: boolean + setPref: + branch: user + pref: "javascript.options.mem.gc_balanced_heap_limits" + gc_compacting: + description: Whether compacting GC is enabled. + type: boolean + setPref: + branch: user + pref: "javascript.options.mem.gc_compacting" + gc_generational: + description: Whether generational GC is enabled. + type: boolean + setPref: + branch: user + pref: "javascript.options.mem.gc_generational" + gc_heap_growth_factor: + description: Heap growth parameter for balanced heap limit calculation. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_heap_growth_factor" + gc_helper_thread_ratio: + description: Number of threads to use for parallel GC work. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_helper_thread_ratio" + gc_high_frequency_large_heap_growth: + description: Heap growth factor for large heaps in the high-frequency GC state. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_high_frequency_large_heap_growth" + gc_high_frequency_small_heap_growth: + description: Heap growth factor for small heaps in the high-frequency GC state. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_high_frequency_small_heap_growth" + gc_high_frequency_time_limit_ms: + description: GCs less than this far apart in milliseconds will be + considered high-frequency GCs. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_high_frequency_time_limit_ms" + gc_incremental: + description: Whether incremental GC is enabled. If not, GC will always run to completion. + type: boolean + setPref: + branch: user + pref: "javascript.options.mem.gc_incremental" + incremental_weakmap: + description: Enable incremental weakmap marking. + type: boolean + setPref: + branch: user + pref: "javascript.options.mem.incremental_weakmap" + gc_incremental_slice_ms: + description: Max milliseconds to spend in an incremental GC slice. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_incremental_slice_ms" + gc_large_heap_incremental_limit: + description: Limit of how far over the incremental trigger threshold we allow the + heap to grow before finishing a collection non-incrementally, for large heaps. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_large_heap_incremental_limit" + gc_large_heap_size_min_mb: + description: Lower limit for classifying a heap as large, in MB. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_large_heap_size_min_mb" + gc_low_frequency_heap_growth: + description: Heap growth factor for low frequency GCs. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_low_frequency_heap_growth" + gc_malloc_threshold_base_mb: + description: Set the malloc threshold base value in MB. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_malloc_threshold_base_mb" + gc_max_empty_chunk_count: + description: Do not keep more than this many unused chunks in the free chunk pool. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_max_empty_chunk_count" + gc_max_helper_threads: + description: The maximum number of background threads to use for parallel GC work. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_max_helper_threads" + gc_min_empty_chunk_count: + description: We try to keep at least this many unused chunks in the free chunk + pool at all times, even after a shrinking GC. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_min_empty_chunk_count" + gc_parallel_marking: + description: Enable parallel marking. + type: boolean + setPref: + branch: user + pref: "javascript.options.mem.gc_parallel_marking" + gc_parallel_marking_threshold_mb: + description: The heap size above which to use parallel marking. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_parallel_marking_threshold_mb" + gc_max_parallel_marking_threads: + description: The maximum number of threads to use for parallel marking, if enabled. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_max_parallel_marking_threads" + gc_per_zone: + description: Whether per-zone GC is enabled. If not, all zones are collected every time. + type: boolean + setPref: + branch: user + pref: "javascript.options.mem.gc_per_zone" + gc_small_heap_incremental_limit: + description: Limit of how far over the incremental trigger threshold we allow the heap + to grow before finishing a collection non-incrementally, for small heaps. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_small_heap_incremental_limit" + gc_small_heap_size_max_mb: + description: Upper limit for classifying a heap as small, in MB. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_small_heap_size_max_mb" + gc_urgent_threshold_mb: + description: Set the urgent threshold, in MB. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_urgent_threshold_mb" + nursery_eager_collection_threshold_kb: + description: Set the eager collection threshold, in kb, for the nursery. + type: int + setPref: + branch: user + pref: "javascript.options.mem.nursery_eager_collection_threshold_kb" + nursery_eager_collection_threshold_percent: + description: Set the eager collection percent threshold for the nursery. + type: int + setPref: + branch: user + pref: "javascript.options.mem.nursery_eager_collection_threshold_percent" + nursery_eager_collection_timeout_ms: + description: Set the eager collection timeout, in ms, for the nursery. + type: int + setPref: + branch: user + pref: "javascript.options.mem.nursery_eager_collection_timeout_ms" + +jsParallelParsing: + description: Pref to toggle JS parallel parsing. + owner: dpalmeiro@mozilla.com, nbp@mozilla.com + hasExposure: false + variables: + enabled: + description: True to enable parallel parsing. + type: boolean + setPref: + branch: user + pref: "javascript.options.parallel_parsing" + +jitThresholds: + description: Prefs that control jit tier thresholds. + owner: dpalmeiro@mozilla.com, jdemooij@mozilla.com + hasExposure: false + variables: + blinterp_threshold: + description: Set the threshold to enable blinterp compilation. + type: int + setPref: + branch: user + pref: "javascript.options.blinterp.threshold" + baseline_threshold: + description: Set the threshold to enable baseline compilation. + type: int + setPref: + branch: user + pref: "javascript.options.baselinejit.threshold" + ion_threshold: + description: Set the threshold to enable ion compilation. + type: int + setPref: + branch: user + pref: "javascript.options.ion.threshold" + ion_bailout_threshold: + description: Set the ion frequent bailout threshold. + type: int + setPref: + branch: user + pref: "javascript.options.ion.frequent_bailout_threshold" + ion_offthread_compilation: + description: True to enable offthread ion compilations. + type: boolean + setPref: + branch: user + pref: "javascript.options.ion.offthread_compilation" + inlining_max_length: + description: Set the max bytecode length considered for inlining. + type: int + setPref: + branch: user + pref: "javascript.options.inlining_bytecode_max_length" + +jitHintsCache: + description: Pref to toggle the JIT hints cache. + owner: dpalmeiro@mozilla.com + hasExposure: false + variables: + enabled: + description: True to enable the hints cache. + type: boolean + setPref: + branch: user + pref: "javascript.options.jithints" + +raceCacheWithNetwork: + description: Prefs to toggle the race cache with network. + owner: dpalmeiro@mozilla.com, acreskey@mozilla.com + hasExposure: false + variables: + enabled: + description: True to enable the rcwn feature. + type: boolean + setPref: + branch: default + pref: "network.http.rcwn.enabled" + +shopping2023: + description: Prefs to control the 2023 shopping experiment. + owner: jhirsch@mozilla.com + hasExposure: true + exposureDescription: >- + The timing of the exposure event depends on the experiment, but generally + the event is recorded when the user first encounters onboarding UI for + the shopping feature. + variables: + enabled: + description: True if the experience is enabled (experimental treatment group) + type: boolean + fallbackPref: browser.shopping.experience2023.enabled + control: + description: True if the experiment is enabled but experience is disabled (experimental control group) + type: boolean + fallbackPref: browser.shopping.experience2023.control + adsEnabled: + description: True if showing recommended products is enabled + type: boolean + setPref: + branch: default + pref: browser.shopping.experience2023.ads.enabled + adsExposure: + description: True if we want to record ad inventory for opted-in users, even if ads are disabled + type: boolean + setPref: + branch: default + pref: browser.shopping.experience2023.ads.exposure + surveyEnabled: + description: True if showing survey is enabled + type: boolean + fallbackPref: browser.shopping.experience2023.survey.enabled + autoOpenEnabled: + description: True if auto-open behavior for the sidebar is enabled + type: boolean + setPref: + branch: default + pref: browser.shopping.experience2023.autoOpen.enabled + +shoppingOHTTP: + description: Prefs to control the OHTTP URLs used for shopping. + owner: gijs@mozilla.com + hasExposure: false + variables: + ohttpRelayURL: + description: What OHTTP relay URL to use + type: string + setPref: + branch: default + pref: toolkit.shopping.ohttpRelayURL + ohttpConfigURL: + description: URL for the OHTTP config to use + type: string + setPref: + branch: default + pref: toolkit.shopping.ohttpConfigURL + +opaqueResponseBlocking: + description: Prefs to enable Opaque Response Blocking + owner: farre@mozilla.com + hasExposure: true + exposureDescription: Exposure is sent when a response is blocked + variables: + enabled: + description: Whether ORB is enabled + type: boolean + setPref: + branch: user + pref: "browser.opaqueResponseBlocking" + javascriptValidator: + description: Whether JavaScript validation for ORB is enabled + type: boolean + setPref: + branch: user + pref: "browser.opaqueResponseBlocking.javascriptValidator" + filterFetchResponse: + description: Whether filtering of internal responses in the parent ORB is enabled + type: int + setPref: + branch: user + pref: "browser.opaqueResponseBlocking.filterFetchResponse" + mediaExceptionsStrategy: + description: >- + If we partially or wholly allow audio and video MIME types in conflict with spec. + type: int + setPref: + branch: user + pref: "browser.opaqueResponseBlocking.mediaExceptionsStrategy" + +updatePrompt: + description: Prefs to control content and behavior of update notifications + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + Exposure is sent at most once per browsing session when an update + notification prompt is displayed. + variables: + showReleaseNotesLink: + type: boolean + description: >- + If true, the "Learn More" link will be shown in the update prompt. If + false or omitted, the link will only be shown for supported locales. + releaseNotesURL: + type: string + fallbackPref: app.releaseNotesURL.prompt + description: >- + Template for the URL opened when the user clicks the "Learn More" link + in the update prompt. If an empty string, the link will not be shown. + +powerSaver: + description: Prefs to control power saving behaviors + owner: florian@mozilla.com + hasExposure: false + variables: + reduceFrameRates: + type: int + setPref: + branch: user + pref: "gfx.display.max-frame-rate" + description: >- + Limit the number of frames displayed per second. + If omitted, the refresh rate of the screen will be used. + mediaAutoPlay: + type: int + setPref: + branch: user + pref: "media.autoplay.default" + description: >- + Control if media is allowed to auto-play, with and without sound. + backgroundTimerMinTime: + type: int + setPref: + branch: user + pref: "dom.min_background_timeout_value" + description: >- + Limit how frequently timers are allowed to run in background tabs. + backgroundTimerRegenerationRate: + type: int + setPref: + branch: user + pref: "dom.timeout.background_budget_regeneration_rate" + description: >- + Limit how quickly the background tab timer budget regenerates. + +backgroundUpdate: + description: Prefs to control aspects of the background update process. + owner: install-update@mozilla.com + hasExposure: true + exposureDescription: >- + The exposure event is sent when scheduling the background task and both the + feature is enabled and the service registry key (Mozilla Maintenance + Service) is *not* available for this installation. That is the first time + the feature can impact Firefox behaviour and the user experience. + variables: + enableUpdatesForUnelevatedInstallations: + description: >- + Allow the background update process to download and apply updates when + the Mozilla Maintenance Service is unavailable but the installation + directory can be written. + type: boolean + setPref: + branch: user + pref: app.update.background.allowUpdatesForUnelevatedInstallations + +bookmarks: + description: Prefs to control aspects of the bookmarks system. + owner: omc@mozilla.com + hasExposure: false + variables: + enableBookmarksToolbar: + type: string + setPref: + branch: user + pref: browser.toolbars.bookmarks.visibility + description: If the bookmarks toolbar should never, always, or only show on newtab. + showOtherBookmarks: + type: boolean + setPref: + branch: user + pref: browser.toolbars.bookmarks.showOtherBookmarks + description: Display state of the "Other Bookmarks" toolbar button. + +cookieBannerHandling: + description: Automatically handle cookie banners on the user's behalf. + owner: emz@mozilla.com + hasExposure: false + variables: + modeNormalBrowsing: + type: int + setPref: + branch: default + pref: cookiebanners.service.mode + description: >- + Controls the cookie banner handling mode in normal browsing. + Values: 0 - disabled, 1 - reject all, 2 - reject all with accept all fallback. + modePrivateBrowsing: + type: int + setPref: + branch: default + pref: cookiebanners.service.mode.privateBrowsing + description: >- + Controls the cookie banner handling mode in private browsing. + Values: 0 - disabled, 1 - reject all, 2 - reject all with accept all fallback. + enableGlobalRules: + type: boolean + setPref: + branch: default + pref: cookiebanners.service.enableGlobalRules + description: >- + Enables use of global CookieBannerRules, which apply to all sites. + This enables handling of CMPs across sites without the use of site-specific rules. + enableGlobalRulesSubFrames: + type: boolean + setPref: + branch: default + pref: cookiebanners.service.enableGlobalRules.subFrames + description: >- + Whether global rules are allowed to run in sub-frames. Running query + selectors in every sub-frame may negatively impact performance, but is + required for some CMPs. + enableDetectOnly: + type: boolean + setPref: + branch: default + pref: cookiebanners.service.detectOnly + description: >- + When set to true, cookie banners are detected and detection events are + dispatched, but they will not be handled. + This pref applies to both normal and private browsing windows. + enableFirefoxDesktopUI: + type: boolean + setPref: + branch: default + pref: cookiebanners.ui.desktop.enabled + description: Enables the cookie banner desktop UI. + enablePromo: + type: boolean + setPref: + branch: default + pref: browser.promo.cookiebanners.enabled + description: Enables the cookie banner promo in about:privatebrowsing. + enableDesktopFeatureCallout: + type: boolean + setPref: + branch: default + pref: cookiebanners.ui.desktop.showCallout + description: Enables the cookie banner feature callout on desktop. + +backgroundThreads: + description: Prefs to control MacOS thread priorities for power savings. + owner: kwright@mozilla.com + hasExposure: false + variables: + use_low_power: + description: >- + Use the MacOS QoS libraries to deprioritize select threads. + type: boolean + setPref: + branch: user + pref: threads.use_low_power.enabled + lower_mainthread_priority_in_background: + description: >- + When a browsing context is put in the background and isn't actively playing + media, deprioritize its main thread. + type: boolean + setPref: + branch: user + pref: threads.lower_mainthread_priority_in_background.enabled + +reportBrokenSite: + description: The Report Broken Site feature + owner: twisniewski@mozilla.com + hasExposure: false + variables: + enabled: + type: boolean + setPref: + branch: user + pref: ui.new-webcompat-reporter.enabled + description: >- + Whether Report Broken Site is enabled + sendMoreInfo: + type: boolean + setPref: + branch: user + pref: ui.new-webcompat-reporter.send-more-info-link + description: >- + Whether Report Broken Site shows the send more info link directing + users to webcompat.com (defaults to true for prerelease channels) + reasonDropdown: + type: int + setPref: + branch: user + pref: ui.new-webcompat-reporter.reason-dropdown + description: >- + 0 = do not show the "reason" dropdown + 1 = show an optional "reason" dropdown + 2 = show a required "reason" dropdown + +feltPrivacy: + description: Prefs for Felt Privacy v1 experiments + owner: cmeador@mozilla.com + hasExposure: true + exposureDescription: Exposure when user opens a private browsing window. + variables: + feltPrivacy: + type: boolean + setPref: + branch: default + pref: browser.privatebrowsing.felt-privacy-v1 + description: >- + When true, new styles and copy enabled on about:privatebrowsing. When true, + a toggle for showing or hiding quick suggestions appears in about:preferences. + resetPBMAction: + type: boolean + setPref: + branch: default + pref: browser.privatebrowsing.resetPBM.enabled + description: >- + Enables the reset PBM feature button and confirmation panel. + +phc: + description: Prefs to control the Probabalistic Heap Checker (PHC) + owner: pbone@mozilla.com + hasExposure: false + variables: + phcEnabled: + description: Whether to enable PHC + type: boolean + setPref: + branch: user + pref: memory.phc.enabled + phcMinRamMB: + description: The minimum amount of RAM required to enable PHC + type: int + setPref: + branch: user + pref: memory.phc.min_ram_mb + phcAvgDelayFirst: + description: The delay before the first PHC allocation + type: int + setPref: + branch: user + pref: memory.phc.avg_delay.first + phcAvgDelayNormal: + description: The delay between PHC allocations + type: int + setPref: + branch: user + pref: memory.phc.avg_delay.normal + phcAvgDelayPageReuse: + description: The delay before reusing a PHC page + type: int + setPref: + branch: user + pref: memory.phc.avg_delay.page_reuse + +mailto: + description: Prefs to control aspects of the mailto handler + owner: install-update@mozilla.com + hasExposure: true + exposureDescription: >- + The exposure event is sent when a webmail site calls the + registerProtocolHandler function and when users use mailto links in Firefox. + variables: + dualPrompt: + type: boolean + description: >- + Can be used to toggle the entire feature on and off. + fallbackPref: browser.mailto.dualPrompt + dualPrompt.onLocationChange: + type: boolean + description: >- + Display a reminder prompt for known webmailers if the prompt was not + dismissed before the next visit of that webmailer. + fallbackPref: browser.mailto.dualPrompt.onLocationChange + dualPrompt.dismissXClickMinutes: + type: int + description: >- + This pref controls after how many minutes the mailto prompt can be shown + again, which has been dismissed by clicking the 'X' button before. + fallbackPref: browser.mailto.dualPrompt.dismissXClickMinutes + dualPrompt.dismissNotNowMinutes: + type: int + description: >- + This pref controls after how many minutes the mailto prompt can be shown + again, which has been dismissed by clicking a 'not now' button on it. + fallbackPref: browser.mailto.dualPrompt.dismissNotNowMinutes + +nimbusIsReady: + description: A feature that provides the number of Nimbus is_ready events to send + when Nimbus is ready. + owner: chumphreys@mozilla.com + hasExposure: false + applications: + - firefox-desktop + variables: + eventCount: + description: The number of events that should be sent. + type: int + +nimbusTelemetry: + description: A feature that enables or disables Nimbus telemetry. + owner: nimbus-team@mozilla.com + hasExposure: false + applications: + - firefox-desktop + variables: + gleanMetricConfiguration: + description: > + A Glean metric configuration JSON blob. + + This is limited to configuring the following categories: + - nimbus_events + - nimbus_targeting_context + - nimbus_targeting_environment + type: json + + nimbusTargetingEnvironment: + description: > + Configuration for the nimbus_targeting_environment telemetry category. + type: json + + schema: + uri: resource://nimbus/schemas/NimbusTelemetryFeature.schema.json + path: toolkit/components/nimbus/schemas/NimbusTelemetryFeature.schema.json + +httpsFirst: + description: >- + Prefs for HTTPS-First, which upgrades all top-level page loads to HTTPS and + provides a automatic fallback to HTTP if the site isn't available via HTTPS. + owner: mjurgens@mozilla.com, seceng-telemetry@mozilla.com + hasExposure: false + variables: + enabled: + description: Enable HTTPS-First + type: boolean + setPref: + branch: default + pref: dom.security.https_first + enabledPbm: + description: Enable HTTPS-First in private browsing only + type: boolean + setPref: + branch: default + pref: dom.security.https_first_pbm + enabledSchemeless: + description: >- + Enables schemeless HTTPS-First, which will only apply HTTPS-First to address + bar inputs without a scheme. This essentially makes HTTPS the default + scheme in the address bar, while providing a fallback to HTTP. + type: boolean + setPref: + branch: default + pref: dom.security.https_first_schemeless + backgroundTimerMs: + description: >- + After a request gets upgraded to HTTPS, specifies the time after which a + second HTTP request is fired to check if the site is available via + HTTPS, but timing out via HTTPS. This also applies to HTTPS-Only, not + just HTTPS-First. + type: int + setPref: + branch: default + pref: dom.security.https_only_fire_http_request_background_timer_ms + +contentRelevancy: + description: >- + A feature for interest-based content relevance ranking and personalization + for Firefox. + owner: disco-team@mozilla.com + hasExposure: false + variables: + enabled: + description: Enable this feature + type: boolean + fallbackPref: toolkit.contentRelevancy.enabled + maxInputUrls: + description: The maximum number of input URLs for interest classification + type: int + minInputUrls: + description: The minimal number of input URLs for interest classification + type: int + timerInterval: + description: >- + The interval (in seconds) of the background update timer for the content + relevancy manager + type: int + setPref: + branch: user + pref: toolkit.contentRelevancy.timerInterval + ingestEnabled: + description: Enable the ingestion through the Rust component + type: boolean + fallbackPref: toolkit.contentRelevancy.ingestEnabled + +backupService: + description: Prefs to control the profile backup service + owner: mconley@mozilla.com + hasExposure: false + variables: + enabled: + type: boolean + setPref: + branch: default + pref: browser.backup.enabled + description: >- + When true, the profile backup service will be initialized soon after + startup. + prefsUIEnabled: + type: boolean + setPref: + branch: default + pref: browser.backup.preferences.ui.enabled + description: >- + When true, the section in about:preferences to control the backup + feature is visible. + sqlitePagesPerStep: + description: >- + The number of database pages to backup per step when backing up an + SQLite database. + type: int + setPref: + branch: user + pref: browser.backup.sqlite.pages_per_step + sqliteStepDelayMs: + description: >- + The delay between SQLite database backup steps in milliseconds. + type: int + setPref: + branch: user + pref: browser.backup.sqlite.step_delay_ms + idleThresholdSeconds: + description: >- + The number of seconds of user idle time to wait for before considering + to schedule a backup. + type: int + setPref: + branch: user + pref: browser.backup.scheduled.idle-threshold-seconds + minTimeBetweenBackupsSeconds: + description: >- + The minimum number of seconds since the last known backup that must + pass before we might schedule a backup. + type: int + setPref: + branch: user + pref: browser.backup.scheduled.minimum-time-between-backups-seconds + +pqcrypto: + description: Prefs that control the use of post-quantum cryptography. + owner: jschanck@mozilla.com + hasExposure: false + variables: + tlsEnableMlkem: + type: boolean + setPref: + branch: default + pref: security.tls.enable_kyber + description: >- + Whether to enable mlkem768x25519 for TLS. + h3EnableMlkem: + type: boolean + setPref: + branch: default + pref: network.http.http3.enable_kyber + description: >- + Whether to enable mlkem768x25519 for H3/QUIC. + sendP256: + type: boolean + setPref: + branch: default + pref: security.tls.client_hello.send_p256_keyshare + description: >- + Whether to send a P256 share in the client hello in QUIC and TLS. + dtlsWebRTCEnableMlkem: + type: boolean + setPref: + branch: default + pref: media.webrtc.enable_pq_dtls + description: >- + Whether to enable mlkem768x25519 for DTLS in WebRTC. + + +dtlsWebRTC: + description: Pref that controls the use of DTLS. + owner: nkulatova@mozilla.com + hasExposure: false + variables: + tlsVersionDTLS: + type: int + setPref: + branch: default + pref: media.peerconnection.dtls.version.max + description: >- + The maximum version of DTLS protocol used in WebRTC (770 = DTLS 1.0, 771 = DTLS 1.2, 772 = DTLS 1.3). + +certCompression: + description: Prefs that control the use of certificate compression decoders. + owner: anna.weine@mozilla.com + hasExposure: false + variables: + tlsEnableZlib: + type: boolean + setPref: + branch: default + pref: security.tls.enable_certificate_compression_zlib + description: >- + Whether to enable Zlib for TLS certificate compression. + tlsEnableBrotli: + type: boolean + setPref: + branch: default + pref: security.tls.enable_certificate_compression_brotli + description: >- + Whether to enable Brotli for TLS certificate compression. + tlsEnableZstd: + type: boolean + setPref: + branch: default + pref: security.tls.enable_certificate_compression_zstd + description: >- + Whether to enable Zstd for TLS certificate compression. + +bounceTrackingProtection: + description: Controls the Bounce Tracking Protection feature. + owner: emz@mozilla.com + hasExposure: false + variables: + enabled: + type: int + setPref: + branch: default + pref: privacy.bounceTrackingProtection.mode + description: Mode to run the feature in. See nsIBounceTrackingProtection.idl for documentation. + +remoteTabManagement: + description: > + Features that let users manage tabs on other devices that are + connected to the same Mozilla account. + owner: skhamis@mozilla.com + hasExposure: false + variables: + closeTabsEnabled: + description: >- + When true, the user can close tabs on other devices connected to + the same Mozilla account from the synced tabs menu. + type: boolean + fallbackPref: identity.fxaccounts.commands.remoteTabManagement.enabled + +crlite: + description: Prefs that control the use of CRLite + owner: jschanck@mozilla.com + hasExposure: false + variables: + enabled: + type: boolean + setPref: + branch: default + pref: security.remote_settings.crlite_filters.enabled + description: >- + Whether CRLite artifacts will be downloaded. + channel: + type: string + setPref: + branch: default + pref: security.pki.crlite_channel + description: >- + The channel from which CRLite artifacts will be downloaded. + mode: + type: int + setPref: + branch: default + pref: security.pki.crlite_mode + description: >- + How CRLite results will be interpreted. + timestamps_for_coverage: + type: int + setPref: + branch: default + pref: security.pki.crlite_timestamps_for_coverage + description: >- + How many covered timestamps do we need to see before we enforce a CRLite result. + +chatbot: + description: AI chatbot feature configuration + owner: elee@mozilla.com + hasExposure: false + variables: + minVersion: + type: string + description: Minimum Firefox version to apply prefs + prefs: + type: json + description: >- + The prefs to set under browser.ml.chat.* with object keys as the + sub-pref and values objects indicating the desired branch and value + defaulting to clearing the user branch value. + +sidebar: + description: Sidebar feature configuration + owner: elee@mozilla.com + hasExposure: false + variables: + minVersion: + type: string + description: Minimum Firefox version to apply prefs + main.tools: + type: string + description: sidebar.main.tools pref value to set on user branch; which tools for sidebar panels show in the launcher + revamp: + type: boolean + description: sidebar.revamp pref value to set on user branch; true for new experience + verticalTabs: + type: boolean + description: sidebar.verticalTabs pref value to set on user branch; true to enable vertical tabs + visibility: + type: string + description: sidebar.visibility pref value ("hide" or "always-show") to set on user branch + +fxms_bmb_button: + description: A feature for the Firefox Messaging System Bookmarks Bar button surface + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + Exposure is sent if the message is about to be shown after trigger and + targeting conditions on the message matched. + schema: + uri: chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json + path: browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json + variables: {} + +contentProcessSandbox: + description: Prefs that control the content process sandbox. + owner: bowen@mozilla.com + hasExposure: false + variables: + Level: + description: Content process sandbox level + type: int + setPref: + branch: user + pref: security.sandbox.content.level + +certificateTransparency: + description: Certificate Transparency configuration + owner: dkeeler@mozilla.com + hasExposure: false + variables: + mode: + type: int + setPref: + branch: default + pref: security.pki.certificate_transparency.mode + description: >- + What mode Certificate Transparency is in (0=disable, 1=telemetry only, + 2=enforce). + +setToDefaultPrompt: + description: "Experimental set to default spotlight" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + variables: + showSpotlightPrompt: + description: Show experimental set to default spotlight message instead of default prompt + type: boolean + message: + description: Message to show instead of the default prompt + type: json + +tabGroups: + description: Prefs to control Tab Groups + owner: dao@mozilla.com + hasExposure: false + variables: + enabled: + type: boolean + fallbackPref: browser.tabs.groups.enabled + description: Controls whether users can create new tab groups via drag and drop or the tab context menu + +smartblockEmbeds: + description: Pref to control Smartblock Embeds + owner: emz@mozilla.com + hasExposure: false + variables: + enabled: + type: boolean + setPref: + branch: default + pref: extensions.webcompat.smartblockEmbeds.enabled + description: >- + Controls whether smartblock embed placeholders and protections panel toggles will be shown to the user. + +selectableProfiles: + description: "Multiple profile management using selectableProfileService" + owner: jhirsch@mozilla.com + hasExposure: false + variables: + enabled: + type: boolean + description: Enables the multiple profiles feature when true. Turning off this variable will not disable the feature. diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/v136.0.0/schemas/browser/components/asrouter/content-src/schemas/BackgroundTaskMessagingExperiment.schema.json b/experimenter/experimenter/features/manifests/firefox-desktop/v136.0.0/schemas/browser/components/asrouter/content-src/schemas/BackgroundTaskMessagingExperiment.schema.json new file mode 100644 index 0000000000..5fe86f9617 --- /dev/null +++ b/experimenter/experimenter/features/manifests/firefox-desktop/v136.0.0/schemas/browser/components/asrouter/content-src/schemas/BackgroundTaskMessagingExperiment.schema.json @@ -0,0 +1,344 @@ +{ + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json", + "title": "Messaging Experiment", + "description": "A Firefox Messaging System message.", + "if": { + "type": "object", + "properties": { + "template": { + "const": "multi" + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/MultiMessage" + }, + "else": { + "$ref": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/TemplatedMessage" + }, + "$defs": { + "ToastNotification": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///ToastNotification.schema.json", + "title": "ToastNotification", + "description": "A template for toast notifications displayed by the Alert service.", + "allOf": [ + { + "$ref": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "content": { + "type": "object", + "properties": { + "title": { + "$ref": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/localizableText", + "description": "Id of localized string or message override of toast notification title" + }, + "body": { + "$ref": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/localizableText", + "description": "Id of localized string or message override of toast notification body" + }, + "icon_url": { + "description": "The URL of the image used as an icon of the toast notification.", + "type": "string", + "format": "moz-url-format" + }, + "image_url": { + "description": "The URL of an image to be displayed as part of the notification.", + "type": "string", + "format": "moz-url-format" + }, + "launch_url": { + "description": "The URL to launch when the notification or an action button is clicked.", + "type": "string", + "format": "moz-url-format" + }, + "launch_action": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "The launch action to be performed when Firefox is launched." + }, + "data": { + "type": "object" + } + }, + "required": [ + "type" + ], + "additionalProperties": true + }, + "requireInteraction": { + "type": "boolean", + "description": "Whether the toast notification should remain active until the user clicks or dismisses it, rather than closing automatically." + }, + "tag": { + "type": "string", + "description": "An identifying tag for the toast notification." + }, + "data": { + "type": "object", + "description": "Arbitrary data associated with the toast notification." + }, + "actions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "$ref": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/localizableText", + "description": "The action text to be shown to the user." + }, + "action": { + "type": "string", + "description": "Opaque identifer that identifies action." + }, + "iconURL": { + "type": "string", + "format": "uri", + "description": "URL of an icon to display with the action." + }, + "windowsSystemActivationType": { + "type": "boolean", + "description": "Whether to have Windows process the given `action`." + }, + "launch_action": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "The launch action to be performed when Firefox is launched." + }, + "data": { + "type": "object" + } + }, + "required": [ + "type" + ], + "additionalProperties": true + } + }, + "required": [ + "action", + "title" + ], + "additionalProperties": true + } + } + }, + "additionalProperties": true, + "required": [ + "title", + "body" + ] + }, + "template": { + "type": "string", + "const": "toast_notification" + } + }, + "required": [ + "content", + "targeting", + "template", + "trigger" + ], + "additionalProperties": true + }, + "Message": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The message identifier" + }, + "groups": { + "description": "Array of preferences used to control `enabled` status of the group. If any is `false` the group is disabled.", + "type": "array", + "items": { + "type": "string", + "description": "Preference name" + } + }, + "template": { + "type": "string", + "description": "Which messaging template this message is using.", + "enum": [ + "toast_notification" + ] + }, + "frequency": { + "type": "object", + "description": "An object containing frequency cap information for a message.", + "properties": { + "lifetime": { + "type": "integer", + "description": "The maximum lifetime impressions for a message.", + "minimum": 1, + "maximum": 100 + }, + "custom": { + "type": "array", + "description": "An array of custom frequency cap definitions.", + "items": { + "description": "A frequency cap definition containing time and max impression information", + "type": "object", + "properties": { + "period": { + "type": "integer", + "description": "Period of time in milliseconds (e.g. 86400000 for one day)" + }, + "cap": { + "type": "integer", + "description": "The maximum impressions for the message within the defined period.", + "minimum": 1, + "maximum": 100 + } + }, + "required": [ + "period", + "cap" + ] + } + } + } + }, + "priority": { + "description": "The priority of the message. If there are two competing messages to show, the one with the highest priority will be shown", + "type": "integer" + }, + "order": { + "description": "The order in which messages should be shown. Messages will be shown in increasing order.", + "type": "integer" + }, + "targeting": { + "description": "A JEXL expression representing targeting information", + "type": "string" + }, + "trigger": { + "description": "An action to trigger potentially showing the message", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "A string identifying the trigger action" + }, + "params": { + "type": "array", + "description": "An optional array of string parameters for the trigger action", + "items": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] + } + } + }, + "required": [ + "id" + ] + }, + "provider": { + "description": "An identifier for the provider of this message, such as \"cfr\" or \"preview\".", + "type": "string" + } + }, + "additionalProperties": true, + "dependentRequired": { + "content": [ + "id", + "template" + ], + "template": [ + "id", + "content" + ] + } + }, + "localizedText": { + "type": "object", + "properties": { + "string_id": { + "description": "Id of localized string to be rendered.", + "type": "string" + } + }, + "required": [ + "string_id" + ] + }, + "localizableText": { + "description": "Either a raw string or an object containing the string_id of the localized text", + "oneOf": [ + { + "type": "string", + "description": "The string to be rendered." + }, + { + "$ref": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/localizedText" + } + ] + }, + "TemplatedMessage": { + "description": "An FxMS message of one of a variety of types.", + "type": "object", + "allOf": [ + { + "$ref": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/Message" + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "toast_notification" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/ToastNotification" + } + } + ] + }, + "MultiMessage": { + "description": "An object containing an array of messages.", + "type": "object", + "properties": { + "template": { + "type": "string", + "const": "multi" + }, + "messages": { + "type": "array", + "description": "An array of messages.", + "items": { + "$ref": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/TemplatedMessage" + } + } + }, + "required": [ + "template", + "messages" + ] + } + } +} diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/v136.0.0/schemas/browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json b/experimenter/experimenter/features/manifests/firefox-desktop/v136.0.0/schemas/browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json new file mode 100644 index 0000000000..7dc6158eff --- /dev/null +++ b/experimenter/experimenter/features/manifests/firefox-desktop/v136.0.0/schemas/browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json @@ -0,0 +1,1627 @@ +{ + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json", + "title": "Messaging Experiment", + "description": "A Firefox Messaging System message.", + "if": { + "type": "object", + "properties": { + "template": { + "const": "multi" + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/MultiMessage" + }, + "else": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/TemplatedMessage" + }, + "$defs": { + "BookmarksBarButton": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///BookmarksBarButton.schema.json", + "title": "BookmarksBarButton", + "description": "A template with a label and a special message action (currently only supports OPEN_URL)", + "allOf": [ + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "template": { + "type": "string", + "const": "bookmarks_bar_button" + }, + "content": { + "type": "object", + "properties": { + "action": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Action dispatched by the button." + }, + "data": { + "type": "object" + } + }, + "required": [ + "type" + ], + "additionalProperties": true + } + }, + "additionalProperties": true + } + }, + "additionalProperties": true, + "required": [ + "targeting" + ] + }, + "CFRUrlbarChiclet": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///CFRUrlbarChiclet.schema.json", + "title": "CFRUrlbarChiclet", + "description": "A template with a chiclet button with text.", + "allOf": [ + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "content": { + "type": "object", + "properties": { + "category": { + "type": "string", + "description": "Attribute used for different groups of messages from the same provider" + }, + "layout": { + "type": "string", + "description": "Describes how content should be displayed.", + "enum": [ + "chiclet_open_url" + ] + }, + "bucket_id": { + "type": "string", + "description": "A bucket identifier for the addon. This is used in order to anonymize telemetry for history-sensitive targeting." + }, + "notification_text": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "The text in the small blue chicklet that appears in the URL bar. This can be a reference to a localized string in Firefox or just a plain string." + }, + "active_color": { + "type": "string", + "description": "Background color of the button" + }, + "action": { + "type": "object", + "properties": { + "url": { + "description": "The page to open when the button is clicked.", + "type": "string", + "format": "moz-url-format" + }, + "where": { + "description": "Should it open in a new tab or the current tab", + "type": "string", + "enum": [ + "current", + "tabshifted" + ] + } + }, + "additionalProperties": true, + "required": [ + "url", + "where" + ] + } + }, + "additionalProperties": true, + "required": [ + "layout", + "category", + "bucket_id", + "notification_text", + "action" + ] + }, + "template": { + "type": "string", + "const": "cfr_urlbar_chiclet" + } + }, + "required": [ + "targeting", + "trigger" + ] + }, + "ExtensionDoorhanger": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///ExtensionDoorhanger.schema.json", + "title": "ExtensionDoorhanger", + "description": "A template with a heading, addon icon, title and description. No markup allowed.", + "allOf": [ + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "content": { + "type": "object", + "properties": { + "category": { + "type": "string", + "description": "Attribute used for different groups of messages from the same provider" + }, + "layout": { + "type": "string", + "description": "Attribute used for different groups of messages from the same provider", + "enum": [ + "short_message", + "icon_and_message", + "addon_recommendation" + ] + }, + "anchor_id": { + "type": "string", + "description": "A DOM element ID that the pop-over will be anchored." + }, + "alt_anchor_id": { + "type": "string", + "description": "An alternate DOM element ID that the pop-over will be anchored." + }, + "bucket_id": { + "type": "string", + "description": "A bucket identifier for the addon. This is used in order to anonymize telemetry for history-sensitive targeting." + }, + "skip_address_bar_notifier": { + "type": "boolean", + "description": "Skip the 'Recommend' notifier and show directly." + }, + "persistent_doorhanger": { + "type": "boolean", + "description": "Prevent the doorhanger from being dismissed if user interacts with the page or switches between applications." + }, + "show_in_private_browsing": { + "type": "boolean", + "description": "Whether to allow the message to be shown in private browsing mode. Defaults to false." + }, + "notification_text": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "The text in the small blue chicklet that appears in the URL bar. This can be a reference to a localized string in Firefox or just a plain string." + }, + "info_icon": { + "type": "object", + "description": "The small icon displayed in the top right corner of the pop-over. Should be 19x19px, svg or png. Defaults to a small question mark.", + "properties": { + "label": { + "oneOf": [ + { + "type": "object", + "properties": { + "attributes": { + "type": "object", + "properties": { + "tooltiptext": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "Text for button tooltip used to provide information about the doorhanger." + } + }, + "required": [ + "tooltiptext" + ] + } + }, + "required": [ + "attributes" + ] + }, + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizedText" + } + ] + }, + "sumo_path": { + "type": "string", + "description": "Last part of the path in the URL to the support page with the information about the doorhanger.", + "examples": [ + "extensionpromotions", + "extensionrecommendations" + ] + } + } + }, + "learn_more": { + "type": "string", + "description": "Last part of the path in the SUMO URL to the support page with the information about the doorhanger.", + "examples": [ + "extensionpromotions", + "extensionrecommendations" + ] + }, + "heading_text": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "The larger heading text displayed in the pop-over. This can be a reference to a localized string in Firefox or just a plain string." + }, + "icon": { + "$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/linkUrl", + "description": "The icon displayed in the pop-over. Should be 32x32px or 64x64px and png/svg." + }, + "icon_dark_theme": { + "type": "string", + "description": "Pop-over icon, dark theme variant. Should be 32x32px or 64x64px and png/svg." + }, + "icon_class": { + "type": "string", + "description": "CSS class of the pop-over icon." + }, + "addon": { + "description": "Addon information including AMO URL.", + "type": "object", + "properties": { + "id": { + "$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/plainText", + "description": "Unique addon ID" + }, + "title": { + "$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/plainText", + "description": "Addon name" + }, + "author": { + "$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/plainText", + "description": "Addon author" + }, + "icon": { + "$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/linkUrl", + "description": "The icon displayed in the pop-over. Should be 64x64px and png/svg." + }, + "rating": { + "type": "string", + "description": "Star rating" + }, + "users": { + "type": "string", + "description": "Installed users" + }, + "amo_url": { + "$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/linkUrl", + "description": "Link that offers more information related to the addon." + } + }, + "required": [ + "title", + "author", + "icon", + "amo_url" + ] + }, + "text": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "The body text displayed in the pop-over. This can be a reference to a localized string in Firefox or just a plain string." + }, + "descriptionDetails": { + "description": "Additional information and steps on how to use", + "type": "object", + "properties": { + "steps": { + "description": "Array of string_ids", + "type": "array", + "items": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizedText", + "description": "Id of string to localized addon description" + } + } + }, + "required": [ + "steps" + ] + }, + "buttons": { + "description": "The label and functionality for the buttons in the pop-over.", + "type": "object", + "properties": { + "primary": { + "type": "object", + "properties": { + "label": { + "type": "object", + "oneOf": [ + { + "properties": { + "value": { + "$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/plainText", + "description": "Button label override used when a localized version is not available." + }, + "attributes": { + "type": "object", + "properties": { + "accesskey": { + "type": "string", + "description": "A single character to be used as a shortcut key for the secondary button. This should be one of the characters that appears in the button label." + } + }, + "required": [ + "accesskey" + ], + "description": "Button attributes." + } + }, + "required": [ + "value", + "attributes" + ] + }, + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizedText" + } + ], + "description": "Id of localized string or message override." + }, + "action": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Action dispatched by the button." + }, + "data": { + "properties": { + "url": { + "type": "string", + "$comment": "This is dynamically generated from the addon.id. See CFRPageActions.sys.mjs", + "description": "URL used in combination with the primary action dispatched." + } + } + } + } + } + } + }, + "secondary": { + "type": "array", + "items": { + "type": "object", + "properties": { + "label": { + "type": "object", + "oneOf": [ + { + "properties": { + "value": { + "allOf": [ + { + "$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/plainText" + }, + { + "description": "Button label override used when a localized version is not available." + } + ] + }, + "attributes": { + "type": "object", + "properties": { + "accesskey": { + "type": "string", + "description": "A single character to be used as a shortcut key for the secondary button. This should be one of the characters that appears in the button label." + } + }, + "required": [ + "accesskey" + ], + "description": "Button attributes." + } + }, + "required": [ + "value", + "attributes" + ] + }, + { + "properties": { + "string_id": { + "allOf": [ + { + "$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/plainText" + }, + { + "description": "Id of localized string for button" + } + ] + } + }, + "required": [ + "string_id" + ] + } + ], + "description": "Id of localized string or message override." + }, + "action": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Action dispatched by the button." + }, + "data": { + "properties": { + "url": { + "allOf": [ + { + "$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/linkUrl" + }, + { + "description": "URL used in combination with the primary action dispatched." + } + ] + } + } + } + } + } + } + } + } + } + } + }, + "additionalProperties": true, + "required": [ + "layout", + "bucket_id", + "heading_text", + "text", + "buttons" + ], + "if": { + "properties": { + "skip_address_bar_notifier": { + "anyOf": [ + { + "const": "false" + }, + { + "const": null + } + ] + } + } + }, + "then": { + "required": [ + "category", + "notification_text" + ] + } + }, + "template": { + "type": "string", + "enum": [ + "cfr_doorhanger", + "milestone_message" + ] + } + }, + "additionalProperties": true, + "required": [ + "targeting", + "trigger" + ], + "$defs": { + "plainText": { + "description": "Plain text (no HTML allowed)", + "type": "string" + }, + "linkUrl": { + "description": "Target for links or buttons", + "type": "string", + "format": "uri" + } + } + }, + "InfoBar": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///InfoBar.schema.json", + "title": "InfoBar", + "description": "A template with an image, test and buttons.", + "allOf": [ + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "content": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Should the message be global (persisted across tabs) or local (disappear when switching to a different tab).", + "enum": [ + "global", + "tab" + ] + }, + "text": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "The text show in the notification box." + }, + "priority": { + "description": "Infobar priority level https://searchfox.org/mozilla-central/rev/3aef835f6cb12e607154d56d68726767172571e4/toolkit/content/widgets/notificationbox.js#387", + "type": "number", + "minumum": 0, + "exclusiveMaximum": 10 + }, + "buttons": { + "type": "array", + "items": { + "type": "object", + "properties": { + "label": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "The text label of the button." + }, + "primary": { + "type": "boolean", + "description": "Is this the primary button?" + }, + "accessKey": { + "type": "string", + "description": "Keyboard shortcut letter." + }, + "action": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Action dispatched by the button." + }, + "data": { + "type": "object" + } + }, + "required": [ + "type" + ], + "additionalProperties": true + }, + "supportPage": { + "type": "string", + "description": "A page title on SUMO to link to" + } + }, + "required": [ + "label", + "action" + ], + "additionalProperties": true + } + } + }, + "additionalProperties": true, + "required": [ + "text", + "buttons" + ] + }, + "template": { + "type": "string", + "const": "infobar" + } + }, + "additionalProperties": true, + "required": [ + "targeting", + "trigger" + ], + "$defs": { + "plainText": { + "description": "Plain text (no HTML allowed)", + "type": "string" + }, + "linkUrl": { + "description": "Target for links or buttons", + "type": "string", + "format": "uri" + } + } + }, + "MenuMessage": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///MenuMessage.schema.json", + "title": "MenuMessage", + "description": "A template for messages that appear within our menus.", + "allOf": [ + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "content": { + "type": "object", + "properties": { + "messageType": { + "type": "string", + "description": "The subtype of the message.", + "enum": [ + "fxa_cta" + ] + }, + "primaryText": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "The primary text for the message, which offers the value proposition to the user." + }, + "secondaryText": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "The second text for the message, which offers more detail on the value proposition to the user." + }, + "closeAction": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Action dispatched by the button." + }, + "data": { + "type": "object" + } + }, + "required": [ + "type" + ], + "additionalProperties": true, + "description": "The action to take upon clicking the close button." + }, + "primaryAction": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Action dispatched by the button." + }, + "data": { + "type": "object" + } + }, + "required": [ + "type" + ], + "additionalProperties": true, + "description": "The action to take upon clicking the primary action button." + }, + "primaryActionText": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "The label for the primary action." + }, + "imageURL": { + "type": "string", + "description": "URL for image to use with the content." + }, + "imageVerticalOffset": { + "type": "number", + "description": "The margin-block-start value to apply to the image in pixels." + } + } + }, + "template": { + "type": "string", + "const": "menu_message" + }, + "testingTriggerContext": { + "type": "string", + "enum": [ + "app_menu", + "pxi_menu" + ] + } + }, + "additionalProperties": true + }, + "NewtabPromoMessage": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///NewtabPromoMessage.schema.json", + "title": "PBNewtabPromoMessage", + "description": "Message shown on the private browsing newtab page.", + "allOf": [ + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "content": { + "type": "object", + "properties": { + "hideDefault": { + "type": "boolean", + "description": "Should we hide the default promo after the experiment promo is dismissed." + }, + "infoEnabled": { + "type": "boolean", + "description": "Should we show the info section." + }, + "infoIcon": { + "type": "string", + "description": "Icon shown in the left side of the info section. Default is the private browsing icon." + }, + "infoTitle": { + "type": "string", + "description": "Is the title in the info section enabled." + }, + "infoTitleEnabled": { + "type": "boolean", + "description": "Is the title in the info section enabled." + }, + "infoBody": { + "type": "string", + "description": "Text content in the info section." + }, + "infoLinkText": { + "type": "string", + "description": "Text for the link in the info section." + }, + "infoLinkUrl": { + "type": "string", + "description": "URL for the info section link.", + "format": "moz-url-format" + }, + "promoEnabled": { + "type": "boolean", + "description": "Should we show the promo section." + }, + "promoType": { + "type": "string", + "description": "Promo type used to determine if promo should show to a given user", + "enum": [ + "FOCUS", + "VPN", + "PIN", + "COOKIE_BANNERS", + "OTHER" + ] + }, + "promoSectionStyle": { + "type": "string", + "description": "Sets the position of the promo section. Possible values are: top, below-search, bottom. Default bottom.", + "enum": [ + "top", + "below-search", + "bottom" + ] + }, + "promoTitle": { + "type": "string", + "description": "The text content of the promo section." + }, + "promoTitleEnabled": { + "type": "boolean", + "description": "Should we show text content in the promo section." + }, + "promoLinkText": { + "type": "string", + "description": "The text of the link in the promo box." + }, + "promoHeader": { + "type": "string", + "description": "The title of the promo section." + }, + "promoButton": { + "type": "object", + "properties": { + "action": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Action dispatched by the button." + }, + "data": { + "type": "object" + } + }, + "required": [ + "type" + ], + "additionalProperties": true + } + }, + "required": [ + "action" + ] + }, + "promoLinkType": { + "type": "string", + "description": "Type of promo link type. Possible values: link, button. Default is link.", + "enum": [ + "link", + "button" + ] + }, + "promoImageLarge": { + "type": "string", + "description": "URL for image used on the left side of the promo box, larger, showcases some feature. Default off.", + "format": "uri" + }, + "promoImageSmall": { + "type": "string", + "description": "URL for image used on the right side of the promo box, smaller, usually a logo. Default off.", + "format": "uri" + } + }, + "additionalProperties": true, + "allOf": [ + { + "if": { + "properties": { + "promoEnabled": { + "const": true + } + }, + "required": [ + "promoEnabled" + ] + }, + "then": { + "required": [ + "promoButton" + ] + } + }, + { + "if": { + "properties": { + "infoEnabled": { + "const": true + } + }, + "required": [ + "infoEnabled" + ] + }, + "then": { + "required": [ + "infoLinkText" + ], + "if": { + "properties": { + "infoTitleEnabled": { + "const": true + } + }, + "required": [ + "infoTitleEnabled" + ] + }, + "then": { + "required": [ + "infoTitle" + ] + } + } + } + ] + }, + "template": { + "type": "string", + "const": "pb_newtab" + } + }, + "additionalProperties": true, + "required": [ + "targeting" + ] + }, + "Spotlight": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///Spotlight.schema.json", + "title": "Spotlight", + "description": "A template with an image, title, content and two buttons.", + "allOf": [ + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "content": { + "type": "object", + "properties": { + "template": { + "type": "string", + "description": "Specify the layout template for the Spotlight", + "const": "multistage" + }, + "backdrop": { + "type": "string", + "description": "Background css behind modal content" + }, + "logo": { + "type": "object", + "properties": { + "imageURL": { + "type": "string", + "description": "URL for image to use with the content" + }, + "imageId": { + "type": "string", + "description": "The ID for a remotely hosted image" + }, + "size": { + "type": "string", + "description": "The logo size." + } + }, + "additionalProperties": true + }, + "screens": { + "type": "array", + "description": "Collection of individual screen content" + }, + "transitions": { + "type": "boolean", + "description": "Show transitions within and between screens" + }, + "disableEscClose": { + "type": "boolean", + "description": "Don't allow the message to be dismissed using the ESC key - for limited use in Spotlight modals only when the message content clearly informs the user that a decision is required to proceed" + }, + "disableHistoryUpdates": { + "type": "boolean", + "description": "Don't alter the browser session's history stack - used with messaging surfaces like Feature Callouts" + }, + "startScreen": { + "type": "integer", + "description": "Index of first screen to show from message, defaulting to 0" + }, + "no-rdm": { + "type": "boolean", + "description": "If true, prevents the spotlight from entering responsive design mode at widths less than 800px" + } + }, + "additionalProperties": true + }, + "template": { + "type": "string", + "description": "Specify whether the surface is shown as a Spotlight modal or an in-surface Feature Callout dialog", + "enum": [ + "spotlight", + "feature_callout" + ] + } + }, + "additionalProperties": true, + "required": [ + "targeting" + ] + }, + "ToastNotification": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///ToastNotification.schema.json", + "title": "ToastNotification", + "description": "A template for toast notifications displayed by the Alert service.", + "allOf": [ + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "content": { + "type": "object", + "properties": { + "title": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "Id of localized string or message override of toast notification title" + }, + "body": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "Id of localized string or message override of toast notification body" + }, + "icon_url": { + "description": "The URL of the image used as an icon of the toast notification.", + "type": "string", + "format": "moz-url-format" + }, + "image_url": { + "description": "The URL of an image to be displayed as part of the notification.", + "type": "string", + "format": "moz-url-format" + }, + "launch_url": { + "description": "The URL to launch when the notification or an action button is clicked.", + "type": "string", + "format": "moz-url-format" + }, + "launch_action": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "The launch action to be performed when Firefox is launched." + }, + "data": { + "type": "object" + } + }, + "required": [ + "type" + ], + "additionalProperties": true + }, + "requireInteraction": { + "type": "boolean", + "description": "Whether the toast notification should remain active until the user clicks or dismisses it, rather than closing automatically." + }, + "tag": { + "type": "string", + "description": "An identifying tag for the toast notification." + }, + "data": { + "type": "object", + "description": "Arbitrary data associated with the toast notification." + }, + "actions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "The action text to be shown to the user." + }, + "action": { + "type": "string", + "description": "Opaque identifer that identifies action." + }, + "iconURL": { + "type": "string", + "format": "uri", + "description": "URL of an icon to display with the action." + }, + "windowsSystemActivationType": { + "type": "boolean", + "description": "Whether to have Windows process the given `action`." + }, + "launch_action": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "The launch action to be performed when Firefox is launched." + }, + "data": { + "type": "object" + } + }, + "required": [ + "type" + ], + "additionalProperties": true + } + }, + "required": [ + "action", + "title" + ], + "additionalProperties": true + } + } + }, + "additionalProperties": true, + "required": [ + "title", + "body" + ] + }, + "template": { + "type": "string", + "const": "toast_notification" + } + }, + "required": [ + "content", + "targeting", + "template", + "trigger" + ], + "additionalProperties": true + }, + "ToolbarBadgeMessage": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///ToolbarBadgeMessage.schema.json", + "title": "ToolbarBadgeMessage", + "description": "A template that specifies to which element in the browser toolbar to add a notification.", + "allOf": [ + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "content": { + "type": "object", + "properties": { + "target": { + "type": "string" + }, + "action": { + "type": "object", + "properties": { + "id": { + "type": "string" + } + }, + "additionalProperties": true, + "required": [ + "id" + ], + "description": "Optional action to take in addition to showing the notification" + }, + "delay": { + "type": "number", + "description": "Optional delay in ms after which to show the notification" + }, + "badgeDescription": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizedText", + "description": "This is used in combination with the badged button to offer a text based alternative to the visual badging. Example 'New Feature: What's New'" + } + }, + "additionalProperties": true, + "required": [ + "target" + ] + }, + "template": { + "type": "string", + "const": "toolbar_badge" + } + }, + "additionalProperties": true, + "required": [ + "targeting" + ] + }, + "UpdateAction": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///UpdateAction.schema.json", + "title": "UpdateActionMessage", + "description": "A template for messages that execute predetermined actions.", + "allOf": [ + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "content": { + "type": "object", + "properties": { + "action": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "data": { + "type": "object", + "description": "Additional data provided as argument when executing the action", + "properties": { + "url": { + "type": "string", + "description": "URL data to be used as argument to the action" + }, + "expireDelta": { + "type": "number", + "description": "Expiration timestamp to be used as argument to the action" + } + } + } + }, + "additionalProperties": true, + "description": "Optional action to take in addition to showing the notification", + "required": [ + "id", + "data" + ] + } + }, + "additionalProperties": true, + "required": [ + "action" + ] + }, + "template": { + "type": "string", + "const": "update_action" + } + }, + "required": [ + "targeting" + ] + }, + "Message": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The message identifier" + }, + "groups": { + "description": "Array of preferences used to control `enabled` status of the group. If any is `false` the group is disabled.", + "type": "array", + "items": { + "type": "string", + "description": "Preference name" + } + }, + "template": { + "type": "string", + "description": "Which messaging template this message is using.", + "enum": [ + "bookmarks_bar_button", + "cfr_urlbar_chiclet", + "cfr_doorhanger", + "milestone_message", + "infobar", + "menu_message", + "pb_newtab", + "spotlight", + "feature_callout", + "toast_notification", + "toolbar_badge", + "update_action" + ] + }, + "frequency": { + "type": "object", + "description": "An object containing frequency cap information for a message.", + "properties": { + "lifetime": { + "type": "integer", + "description": "The maximum lifetime impressions for a message.", + "minimum": 1, + "maximum": 100 + }, + "custom": { + "type": "array", + "description": "An array of custom frequency cap definitions.", + "items": { + "description": "A frequency cap definition containing time and max impression information", + "type": "object", + "properties": { + "period": { + "type": "integer", + "description": "Period of time in milliseconds (e.g. 86400000 for one day)" + }, + "cap": { + "type": "integer", + "description": "The maximum impressions for the message within the defined period.", + "minimum": 1, + "maximum": 100 + } + }, + "required": [ + "period", + "cap" + ] + } + } + } + }, + "priority": { + "description": "The priority of the message. If there are two competing messages to show, the one with the highest priority will be shown", + "type": "integer" + }, + "order": { + "description": "The order in which messages should be shown. Messages will be shown in increasing order.", + "type": "integer" + }, + "targeting": { + "description": "A JEXL expression representing targeting information", + "type": "string" + }, + "trigger": { + "description": "An action to trigger potentially showing the message", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "A string identifying the trigger action" + }, + "params": { + "type": "array", + "description": "An optional array of string parameters for the trigger action", + "items": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] + } + } + }, + "required": [ + "id" + ] + }, + "provider": { + "description": "An identifier for the provider of this message, such as \"cfr\" or \"preview\".", + "type": "string" + } + }, + "additionalProperties": true, + "dependentRequired": { + "content": [ + "id", + "template" + ], + "template": [ + "id", + "content" + ] + } + }, + "localizedText": { + "type": "object", + "properties": { + "string_id": { + "description": "Id of localized string to be rendered.", + "type": "string" + } + }, + "required": [ + "string_id" + ] + }, + "localizableText": { + "description": "Either a raw string or an object containing the string_id of the localized text", + "oneOf": [ + { + "type": "string", + "description": "The string to be rendered." + }, + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizedText" + } + ] + }, + "TemplatedMessage": { + "description": "An FxMS message of one of a variety of types.", + "type": "object", + "allOf": [ + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message" + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "bookmarks_bar_button" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/BookmarksBarButton" + } + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "cfr_urlbar_chiclet" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/CFRUrlbarChiclet" + } + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "cfr_doorhanger", + "milestone_message" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/ExtensionDoorhanger" + } + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "infobar" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/InfoBar" + } + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "menu_message" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/MenuMessage" + } + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "pb_newtab" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/NewtabPromoMessage" + } + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "spotlight", + "feature_callout" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Spotlight" + } + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "toast_notification" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/ToastNotification" + } + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "toolbar_badge" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/ToolbarBadgeMessage" + } + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "update_action" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/UpdateAction" + } + } + ] + }, + "MultiMessage": { + "description": "An object containing an array of messages.", + "type": "object", + "properties": { + "template": { + "type": "string", + "const": "multi" + }, + "messages": { + "type": "array", + "description": "An array of messages.", + "items": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/TemplatedMessage" + } + } + }, + "required": [ + "template", + "messages" + ] + } + } +} diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/v136.0.0/schemas/toolkit/components/nimbus/schemas/NimbusTelemetryFeature.schema.json b/experimenter/experimenter/features/manifests/firefox-desktop/v136.0.0/schemas/toolkit/components/nimbus/schemas/NimbusTelemetryFeature.schema.json new file mode 100644 index 0000000000..668236e81c --- /dev/null +++ b/experimenter/experimenter/features/manifests/firefox-desktop/v136.0.0/schemas/toolkit/components/nimbus/schemas/NimbusTelemetryFeature.schema.json @@ -0,0 +1,35 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "gleanMetricConfiguration": { + "type": "object", + "properties": { + "metrics_enabled": { + "type": "object", + "patternProperties": { + "^nimbus_targeting_environment\\..*": { "type": "boolean" }, + "^nimbus_targeting_context\\..*": { "type": "boolean" }, + "^nimbus_events\\..*": { "type": "boolean" } + }, + "additionalProperties": false + } + }, + "additionalProperties": true + }, + "nimbusTargetingEnvironment": { + "type": "object", + "properties": { + "recordAttrs": { + "description": "A list of attributes that should be recorded in the nimbus_targeting_environment.targeting_context_value metric. If not provided, it will default to all attributes.", + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": true + } + }, + "additionalProperties": true +} diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/v136.0.0/schemas/toolkit/components/nimbus/schemas/PrefFlipsFeature.schema.json b/experimenter/experimenter/features/manifests/firefox-desktop/v136.0.0/schemas/toolkit/components/nimbus/schemas/PrefFlipsFeature.schema.json new file mode 100644 index 0000000000..9fa5acc7c9 --- /dev/null +++ b/experimenter/experimenter/features/manifests/firefox-desktop/v136.0.0/schemas/toolkit/components/nimbus/schemas/PrefFlipsFeature.schema.json @@ -0,0 +1,48 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "prefs": { + "description": "The prefs to set", + "type": "object", + "patternProperties": { + ".*": { + "type": "object", + "properties": { + "branch": { + "description": "The branch the pref should be set on.", + "type": "string", + "enum": ["user", "default"] + }, + "value": { + "description": "The value of the pref. Set to null to clear prefs.", + "type": ["string", "integer", "boolean", "null"] + } + }, + "required": ["branch", "value"], + "allOf": [ + { + "description": "Prevent clearing the default branch", + "if": { + "properties": { + "branch": { + "const": "default" + } + } + }, + "then": { + "properties": { + "value": { + "type": ["string", "integer", "boolean"] + } + } + } + } + ] + } + } + } + }, + "required": ["prefs"], + "additionalProperties": false +} diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/v136.0.0/schemas/toolkit/components/normandy/schemas/LegacyHeartbeat.schema.json b/experimenter/experimenter/features/manifests/firefox-desktop/v136.0.0/schemas/toolkit/components/normandy/schemas/LegacyHeartbeat.schema.json new file mode 100644 index 0000000000..6915fc9b71 --- /dev/null +++ b/experimenter/experimenter/features/manifests/firefox-desktop/v136.0.0/schemas/toolkit/components/normandy/schemas/LegacyHeartbeat.schema.json @@ -0,0 +1,73 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Legacy (Normandy) Heartbeat, via Nimbus", + "description": "The schema for the Legacy Heartbeat Nimbus feature.", + "type": "object", + "properties": { + "survey": { + "$comment": "Hearbeat arguments are nested under survey to prevent simultaneous rollouts and experiments from overriding eachothers optional variables", + "type": "object", + "properties": { + "repeatOption": { + "type": "string", + "enum": ["once", "xdays", "nag"], + "description": "Determines how often a prompt is shown executes.", + "default": "once" + }, + "repeatEvery": { + "description": "For repeatOption=xdays, how often (in days) the prompt is displayed.", + "default": null, + "type": ["number", "null"] + }, + "includeTelemetryUUID": { + "type": "boolean", + "description": "Include unique user ID in post-answer-url and Telemetry", + "default": false + }, + "surveyId": { + "description": "Slug uniquely identifying this survey in telemetry", + "type": "string" + }, + "message": { + "description": "Message to show to the user", + "type": "string" + }, + "engagementButtonLabel": { + "description": "Text for the engagement button. If specified, this button will be shown instead of rating stars.", + "default": null, + "type": ["string", "null"] + }, + "thanksMessage": { + "description": "Thanks message to show to the user after they've rated Firefox", + "type": "string" + }, + "postAnswerUrl": { + "description": "URL to redirect the user to after rating Firefox or clicking the engagement button", + "default": null, + "type": ["string", "null"] + }, + "learnMoreMessage": { + "description": "Message to show to the user to learn more", + "default": null, + "type": ["string", "null"] + }, + "learnMoreUrl": { + "description": "URL to show to the user when they click Learn More", + "default": null, + "type": ["string", "null"] + } + }, + "required": [ + "surveyId", + "message", + "thanksMessage", + "postAnswerUrl", + "learnMoreMessage", + "learnMoreUrl" + ], + "additionalProperties": false + } + }, + "required": ["survey"], + "additionalProperties": false +} diff --git a/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml b/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml index 3eed5c6e98..9ff7c758b2 100644 --- a/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml @@ -13,7 +13,7 @@ focus/klar-v131.1: b7dca2271b14988837524a30eb154d91eb5e4912 focus/klar-v132.0: d9ed6134db59ff456d343e2bb211aefd040319ac focus/klar-v133.0: a3372669a06fa684d3c5945c317d6787e3125303 focus/klar-v134.0: be550d94c2c7bc8b8902cdf7fe542a64e73a381a -main: 3e1fc4259238dec086a5b899734c65ebb818d639 +main: 62258e345b377b98e67de79cd1cec6d3f918a3e2 release/v124: da250bed9e19c4978d4400d6d404cb312e33636e release/v125: a3e1e0773a00009e08d95726fd518ab642255ccd release/v126: 6f305409b4af68e8404401a2caad8cb0da9a0494 @@ -24,4 +24,5 @@ release/v130: a48ec1b1f0219e1987bb38bc4f6b838f37dc6f12 release/v131: 7444df581b62d357df12ddc3c90d821d940efbb8 release/v132: cb318d0061ec6354167ecc1968020d5d75f1bffc release/v133: 7c651ce29e94c6389af7a69ec6b5c44251976e92 -release/v134: be550d94c2c7bc8b8902cdf7fe542a64e73a381a +release/v134: 846f290dfd0627f1873a524da439ebd7a1a4a932 +release/v135: a407f3705c6a6134ac84ff3d9e99d6fa4d5fd0fb diff --git a/experimenter/experimenter/features/manifests/focus-ios/v134.1.0/beta.fml.yaml b/experimenter/experimenter/features/manifests/focus-ios/v134.1.0/beta.fml.yaml new file mode 100644 index 0000000000..46b77ec1d0 --- /dev/null +++ b/experimenter/experimenter/features/manifests/focus-ios/v134.1.0/beta.fml.yaml @@ -0,0 +1,21 @@ +--- +version: 1.0.0 +about: + description: The root level Feature Manifest for Focus for iOS +channels: + - beta +features: + nimbus-validation: + description: A tiny feature to validate that Nimbus is working + variables: + bold-tip-title: + description: Make the tips title label bold + type: Boolean + default: true + onboarding-variables: + description: A collection of variables about onboarding + variables: + show-new-onboarding: + description: Should the v2 of the onboarding be shown. + type: Boolean + default: false diff --git a/experimenter/experimenter/features/manifests/focus-ios/v134.1.0/developer.fml.yaml b/experimenter/experimenter/features/manifests/focus-ios/v134.1.0/developer.fml.yaml new file mode 100644 index 0000000000..36e01f7f33 --- /dev/null +++ b/experimenter/experimenter/features/manifests/focus-ios/v134.1.0/developer.fml.yaml @@ -0,0 +1,21 @@ +--- +version: 1.0.0 +about: + description: The root level Feature Manifest for Focus for iOS +channels: + - developer +features: + nimbus-validation: + description: A tiny feature to validate that Nimbus is working + variables: + bold-tip-title: + description: Make the tips title label bold + type: Boolean + default: true + onboarding-variables: + description: A collection of variables about onboarding + variables: + show-new-onboarding: + description: Should the v2 of the onboarding be shown. + type: Boolean + default: true diff --git a/experimenter/experimenter/features/manifests/focus-ios/v134.1.0/experimenter.yaml b/experimenter/experimenter/features/manifests/focus-ios/v134.1.0/experimenter.yaml new file mode 100644 index 0000000000..f544374809 --- /dev/null +++ b/experimenter/experimenter/features/manifests/focus-ios/v134.1.0/experimenter.yaml @@ -0,0 +1,17 @@ +--- +nimbus-validation: + description: A tiny feature to validate that Nimbus is working + hasExposure: true + exposureDescription: "" + variables: + bold-tip-title: + type: boolean + description: Make the tips title label bold +onboarding-variables: + description: A collection of variables about onboarding + hasExposure: true + exposureDescription: "" + variables: + show-new-onboarding: + type: boolean + description: Should the v2 of the onboarding be shown. diff --git a/experimenter/experimenter/features/manifests/focus-ios/v134.1.0/release.fml.yaml b/experimenter/experimenter/features/manifests/focus-ios/v134.1.0/release.fml.yaml new file mode 100644 index 0000000000..5eabdc2f80 --- /dev/null +++ b/experimenter/experimenter/features/manifests/focus-ios/v134.1.0/release.fml.yaml @@ -0,0 +1,21 @@ +--- +version: 1.0.0 +about: + description: The root level Feature Manifest for Focus for iOS +channels: + - release +features: + nimbus-validation: + description: A tiny feature to validate that Nimbus is working + variables: + bold-tip-title: + description: Make the tips title label bold + type: Boolean + default: true + onboarding-variables: + description: A collection of variables about onboarding + variables: + show-new-onboarding: + description: Should the v2 of the onboarding be shown. + type: Boolean + default: false diff --git a/experimenter/experimenter/features/manifests/focus-ios/v136.0.0/beta.fml.yaml b/experimenter/experimenter/features/manifests/focus-ios/v136.0.0/beta.fml.yaml new file mode 100644 index 0000000000..46b77ec1d0 --- /dev/null +++ b/experimenter/experimenter/features/manifests/focus-ios/v136.0.0/beta.fml.yaml @@ -0,0 +1,21 @@ +--- +version: 1.0.0 +about: + description: The root level Feature Manifest for Focus for iOS +channels: + - beta +features: + nimbus-validation: + description: A tiny feature to validate that Nimbus is working + variables: + bold-tip-title: + description: Make the tips title label bold + type: Boolean + default: true + onboarding-variables: + description: A collection of variables about onboarding + variables: + show-new-onboarding: + description: Should the v2 of the onboarding be shown. + type: Boolean + default: false diff --git a/experimenter/experimenter/features/manifests/focus-ios/v136.0.0/developer.fml.yaml b/experimenter/experimenter/features/manifests/focus-ios/v136.0.0/developer.fml.yaml new file mode 100644 index 0000000000..36e01f7f33 --- /dev/null +++ b/experimenter/experimenter/features/manifests/focus-ios/v136.0.0/developer.fml.yaml @@ -0,0 +1,21 @@ +--- +version: 1.0.0 +about: + description: The root level Feature Manifest for Focus for iOS +channels: + - developer +features: + nimbus-validation: + description: A tiny feature to validate that Nimbus is working + variables: + bold-tip-title: + description: Make the tips title label bold + type: Boolean + default: true + onboarding-variables: + description: A collection of variables about onboarding + variables: + show-new-onboarding: + description: Should the v2 of the onboarding be shown. + type: Boolean + default: true diff --git a/experimenter/experimenter/features/manifests/focus-ios/v136.0.0/experimenter.yaml b/experimenter/experimenter/features/manifests/focus-ios/v136.0.0/experimenter.yaml new file mode 100644 index 0000000000..f544374809 --- /dev/null +++ b/experimenter/experimenter/features/manifests/focus-ios/v136.0.0/experimenter.yaml @@ -0,0 +1,17 @@ +--- +nimbus-validation: + description: A tiny feature to validate that Nimbus is working + hasExposure: true + exposureDescription: "" + variables: + bold-tip-title: + type: boolean + description: Make the tips title label bold +onboarding-variables: + description: A collection of variables about onboarding + hasExposure: true + exposureDescription: "" + variables: + show-new-onboarding: + type: boolean + description: Should the v2 of the onboarding be shown. diff --git a/experimenter/experimenter/features/manifests/focus-ios/v136.0.0/release.fml.yaml b/experimenter/experimenter/features/manifests/focus-ios/v136.0.0/release.fml.yaml new file mode 100644 index 0000000000..5eabdc2f80 --- /dev/null +++ b/experimenter/experimenter/features/manifests/focus-ios/v136.0.0/release.fml.yaml @@ -0,0 +1,21 @@ +--- +version: 1.0.0 +about: + description: The root level Feature Manifest for Focus for iOS +channels: + - release +features: + nimbus-validation: + description: A tiny feature to validate that Nimbus is working + variables: + bold-tip-title: + description: Make the tips title label bold + type: Boolean + default: true + onboarding-variables: + description: A collection of variables about onboarding + variables: + show-new-onboarding: + description: Should the v2 of the onboarding be shown. + type: Boolean + default: false diff --git a/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml b/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml index 77237b6c39..a76cbeecfa 100644 --- a/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml @@ -1,4 +1,4 @@ -main: 3e1fc4259238dec086a5b899734c65ebb818d639 +main: 62258e345b377b98e67de79cd1cec6d3f918a3e2 release/v117: 43b690c450066d4dde1b2ccb93ed3714d244d502 release/v118: 89a7ea3c3372e5a4ef5b3c5b85499d26198d0524 release/v119: 7dc381f991c6d2a983c3ba7f0cffd880e8c29e7b @@ -16,7 +16,8 @@ release/v130: a48ec1b1f0219e1987bb38bc4f6b838f37dc6f12 release/v131: 7444df581b62d357df12ddc3c90d821d940efbb8 release/v132: cb318d0061ec6354167ecc1968020d5d75f1bffc release/v133: 7c651ce29e94c6389af7a69ec6b5c44251976e92 -release/v134: be550d94c2c7bc8b8902cdf7fe542a64e73a381a +release/v134: 846f290dfd0627f1873a524da439ebd7a1a4a932 +release/v135: a407f3705c6a6134ac84ff3d9e99d6fa4d5fd0fb v117.0: 3b275ab1e4ccef769d84437033c0c68acfd2df8a v117.1: 55ddcf473a65d106d43f6d2ae5af4076d6d03688 v117.2: 5cc367aa8857199cd8a54d53e8faf6696c5614c3 diff --git a/experimenter/experimenter/features/manifests/ios/v134.1.0/beta.fml.yaml b/experimenter/experimenter/features/manifests/ios/v134.1.0/beta.fml.yaml new file mode 100644 index 0000000000..9b11398d84 --- /dev/null +++ b/experimenter/experimenter/features/manifests/ios/v134.1.0/beta.fml.yaml @@ -0,0 +1,1034 @@ +--- +version: 1.0.0 +about: + description: The root level Feature Manifest for Firefox for iOS +channels: + - beta +features: + account-settings-redux-feature: + description: "This feature is for managing the roll out of the Account Settings Redux implementation\n" + variables: + enabled: + description: "Enables the feature\n" + type: Boolean + default: false + address-autofill-edit: + description: This property defines if the address editing is enabled in Settings + variables: + status: + description: "If true, we will allow user to edit the address" + type: Boolean + default: false + bookmark-refactor-feature: + description: "The Feature for managing the roll out of the Bookmark refactor feature\n" + variables: + enabled: + description: "Enables the bookmark refactor feature\n" + type: Boolean + default: false + contextual-hint-feature: + description: This set holds all features pertaining to contextual hints. + variables: + features-enabled: + description: "This property provides a lookup table of whether specific contextual hints are enabled.\n" + type: "Map" + default: + toolbar-hint: true + credit-card-autofill: + description: This property defines the credit card autofill feature + variables: + credit-card-autofill-status: + description: "If true, we will allow user to use the credit autofill feature" + type: Boolean + default: true + felt-privacy-feature: + description: The feature that enhances private browsing mode + variables: + felt-deletion-enabled: + description: "If true, enable Felt Deletion part of Felt Privacy" + type: Boolean + default: false + simplified-ui-enabled: + description: "If true, enable simplified UI part of Felt Privacy" + type: Boolean + default: false + firefox-suggest-feature: + description: Configuration for the Firefox Suggest feature. + variables: + available-suggestions-types: + description: "A map of suggestion types to booleans that indicate whether or not the provider should return suggestions of those types.\n" + type: "Map" + default: + amp: true + ampMobile: false + wikipedia: true + status: + description: "Whether the feature is enabled. When Firefox Suggest is enabled, Firefox will download and store new search suggestions in the background, and show additional Search settings to control which suggestions appear in the awesomebar. When Firefox Suggest is disabled, Firefox will not download new suggestions, and hide the additional Search settings.\n" + type: Boolean + default: false + general-app-features: + description: The feature that contains feature flags for the entire application + variables: + report-site-issue: + description: This property defines whether or not the feature is enabled + type: GeneralFeature + default: + status: true + glean-server-knobs: + description: A feature that provides server-side configurations for Glean metrics (aka Server Knobs). + variables: + metrics-enabled: + description: "A map of metric base-identifiers to booleans representing the state of the 'enabled' flag for that metric." + type: "Map" + default: {} + homepage-rebuild-feature: + description: "This feature is for managing the roll out of the Homepage rebuild feature\n" + variables: + enabled: + description: "If true, enables the feature\n" + type: Boolean + default: false + homescreenFeature: + description: The homescreen that the user goes to when they press home or new tab. + variables: + prefer-switch-to-open-tab: + description: "Enables the feature to automatically switch to an existing tab with the same content instead of opening a new one.\n" + type: Boolean + default: false + sections-enabled: + description: "This property provides a lookup table of whether or not the given section should be enabled. If the section is enabled, it should be toggleable in the settings screen, and on by default.\n" + type: "Map" + default: + jump-back-in: true + recent-explorations: false + login-autofill: + description: This property defines the login autofill feature for automatically filling in usernames and passwords. + variables: + login-autofill-status: + description: "If true, allows the user to use the login autofill feature for usernames and passwords." + type: Boolean + default: true + menu-refactor-feature: + description: "Controls the menu refactor feature\n" + variables: + enabled: + description: "Controls which menu users will see\n" + type: Boolean + default: false + menu-hint: + description: "If true, enables the menu contextual hint.\n" + type: Boolean + default: false + messaging: + description: "The in-app messaging system\n" + documentation: + - name: User documentation + url: "https://experimenter.info/messaging/mobile-messaging" + contacts: + - jhugman@mozilla.com + - brennie@mozilla.com + - gbuciu@mozilla.com + - wteichmann@mozilla.com + events: + - "https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_shown" + - "https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_clicked" + - "https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_expired" + - "https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_dismissed" + - "https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_malformed" + variables: + actions: + description: A growable map of action URLs. + type: "Map" + default: + OPEN_SETTINGS: "://deep-link?url=settings/general" + OPEN_SETTINGS_NEW_TAB: "://deep-link?url=settings/newtab" + OPEN_SETTINGS_HOMESCREEN: "://deep-link?url=settings/homepage" + OPEN_SETTINGS_WALLPAPERS: "://deep-link?url=settings/wallpaper" + OPEN_SETTINGS_EMAIL: "://deep-link?url=settings/mailto" + OPEN_SETTINGS_SEARCH_ENGINE: "://deep-link?url=settings/search" + OPEN_SETTINGS_PRIVACY: "://deep-link?url=settings/clear-private-data" + OPEN_SETTINGS_FXA: "://deep-link?url=settings/fxa" + OPEN_SETTINGS_THEME: "://deep-link?url=settings/theme" + OPEN_URL: "://open-url" + VIEW_BOOKMARKS: "://deep-link?url=homepanel/bookmarks" + VIEW_TOP_SITES: "://deep-link?url=homepanel/top-sites" + VIEW_READING_LIST: "://deep-link?url=homepanel/reading-list" + VIEW_HISTORY: "://deep-link?url=homepanel/history" + VIEW_DOWNLOADS: "://deep-link?url=homepanel/downloads" + ENABLE_PRIVATE_BROWSING: "://deep-link?url=homepanel/new-private-tab" + OPEN_NEW_TAB: "://deep-link?url=homepanel/new-tab" + MAKE_DEFAULT_BROWSER: "://deep-link?url=default-browser/system-settings" + MAKE_DEFAULT_BROWSER_WITH_TUTORIAL: "://deep-link?url=default-browser/tutorial" + OPEN_SHARE_SHEET: "://share-sheet" + string-alias: ActionName + message-under-experiment: + description: "Deprecated. Please use \"experiment\": \"{experiment}\" instead." + type: Option + default: ~ + messages: + description: "A growable collection of messages, where the Key is the message identifier and the value is its associated MessageData.\n" + type: "Map" + default: + default-browser: + surface: new-tab-card + style: FALLBACK + trigger-if-all: + - SUPPORTS_DEFAULT_BROWSER + - ON_FOURTH_LAUNCH_THIS_YEAR + except-if-any: + - I_AM_DEFAULT_BROWSER + title: Default Browser/DefaultBrowserCard.Title + text: Default Browser/DefaultBrowserCard.Description + button-label: Default Browser/DefaultBrowserCard.Button.v2 + action: MAKE_DEFAULT_BROWSER_WITH_TUTORIAL + homepage-microsurvey-message: + surface: microsurvey + style: MICROSURVEY + trigger-if-all: + - SECOND_HOMEPAGE_VIEW + title: Microsurvey/Microsurvey.Prompt.TitleLabel.v127 + text: How satisfied are you with your Firefox homepage? + button-label: Microsurvey/Microsurvey.Prompt.Button.v127 + microsurveyConfig: + utm-content: homepage + icon: homeLarge + options: + - Microsurvey/Microsurvey.Survey.Options.VerySatisfied.v132 + - Microsurvey/Microsurvey.Survey.Options.Satisfied.v132 + - Microsurvey/Microsurvey.Survey.Options.Neutral.v132 + - Microsurvey/Microsurvey.Survey.Options.Dissatisfied.v132 + - Microsurvey/Microsurvey.Survey.Options.VeryDissatisfied.v132 + - Microsurvey/Microsurvey.Survey.Options.NotApplicable.v132 + string-alias: MessageKey + on-control: + description: What should be displayed when a control message is selected. + type: ControlMessageBehavior + default: show-next-message + styles: + description: "A map of styles to configure message appearance.\n" + type: "Map" + default: + FALLBACK: + priority: 40 + max-display-count: 20 + DEFAULT: + priority: 50 + max-display-count: 5 + MICROSURVEY: + priority: 50 + max-display-count: 1 + NOTIFICATION: + priority: 50 + max-display-count: 1 + PERSISTENT: + priority: 50 + max-display-count: 20 + SURVEY: + priority: 55 + max-display-count: 10 + WARNING: + priority: 60 + max-display-count: 10 + URGENT: + priority: 100 + max-display-count: 10 + string-alias: StyleName + triggers: + description: "A collection of out the box trigger expressions. Each entry maps to a valid JEXL expression.\n" + type: "Map" + default: + ALWAYS: "true" + NEVER: "false" + USER_RECENTLY_INSTALLED: days_since_install < 7 + USER_RECENTLY_UPDATED: days_since_update < 7 && days_since_install != days_since_update + USER_TIER_ONE_COUNTRY: "('US' in locale || 'GB' in locale || 'CA' in locale || 'DE' in locale || 'FR' in locale)" + USER_EN_SPEAKER: "'en' in locale" + USER_ES_SPEAKER: "'es' in locale" + USER_DE_SPEAKER: "'de' in locale" + USER_FR_SPEAKER: "'fr' in locale" + DEVICE_ANDROID: "os == 'Android'" + DEVICE_IOS: "os == 'iOS'" + DAY_1_AFTER_INSTALL: days_since_install == 1 + DAY_2_AFTER_INSTALL: days_since_install == 2 + DAY_3_AFTER_INSTALL: days_since_install == 3 + DAY_4_AFTER_INSTALL: days_since_install == 4 + DAY_5_AFTER_INSTALL: days_since_install == 5 + MORE_THAN_24H_SINCE_INSTALLED_OR_UPDATED: days_since_update >= 1 + NOT_LAUNCHED_YESTERDAY: "'app_cycle.foreground'|eventLastSeen('Days', 1) > 1" + AFTER_THREE_LAUNCHES_THIS_WEEK: "'app_cycle.foreground'|eventSum('Weeks', 1, 0) >= 3" + I_AM_DEFAULT_BROWSER: is_default_browser + I_AM_NOT_DEFAULT_BROWSER: is_default_browser == false + SUPPORTS_DEFAULT_BROWSER: "os_version|versionCompare('14.!') >= 0" + INACTIVE_NEW_USER: is_inactive_new_user + ALLOWED_TIPS_NOTIFICATIONS: allowed_tips_notifications + FXA_CURRENTLY_SIGNED_IN: is_fxa_signed_in == true + SECOND_HOMEPAGE_VIEW: "'homepage_viewed'|eventSum('Years', 4, 0) >= 2" + ON_FOURTH_LAUNCH_THIS_YEAR: "'app_cycle.foreground'|eventSum('Years', 1, 0) > 3" + string-alias: TriggerName + ~~experiment: + description: Not to be set by experiment. + type: ExperimentSlug + default: "{experiment}" + string-alias: ExperimentSlug + allow-coenrollment: true + microsurvey-feature: + description: "A feature that shows the microsurvey for users to interact with and submit responses.\n" + variables: + enabled: + description: "If true, the feature is active.\n" + type: Boolean + default: false + native-error-page-feature: + description: "This feature is for managing the roll out of the native error page feature\n" + variables: + enabled: + description: "If true, the feature is active.\n" + type: Boolean + default: false + no_internet_connection_error: + description: "This feature is for managing the roll out of the no interet connection native error page feature\n" + type: Boolean + default: false + night-mode-feature: + description: "Describes the night mode feature's configuration\n" + variables: + enabled: + description: "Whether night mode is available for users or not\n" + type: Boolean + default: true + onboarding-framework-feature: + description: "The new onboarding framework feature that will allow onboarding to be experimentable through initial experiments.\n" + variables: + cards: + description: "The list of available cards for onboarding.\n" + type: "Map" + default: + welcome: + card-type: basic + order: 10 + title: Onboarding/Onboarding.Welcome.Title.TreatementA.v120 + body: Onboarding/Onboarding.Welcome.Description.TreatementA.v120 + image: welcome-globe + link: + title: Onboarding/Onboarding.Welcome.Link.Action.v114 + url: "https://www.mozilla.org/privacy/firefox/" + buttons: + primary: + title: Onboarding/Onboarding.Welcome.ActionTreatementA.v114 + action: open-instructions-popup + secondary: + title: Onboarding/Onboarding.Welcome.Skip.v114 + action: forward-one-card + instructions-popup: + title: Onboarding/DefaultBrowserPopup.Title.v114 + button-title: Onboarding/DefaultBrowserPopup.ButtonTitle.v114 + button-action: open-ios-fx-settings + instructions: + - Onboarding/DefaultBrowserPopup.FirstLabel.v114 + - Onboarding/DefaultBrowserPopup.SecondLabel.v114 + - Onboarding/DefaultBrowserPopup.ThirdLabel.v114 + onboarding-type: fresh-install + prerequisites: + - ALWAYS + notification-permissions: + card-type: basic + order: 30 + title: Onboarding/Onboarding.Notification.Title.v120 + body: Onboarding/Onboarding.Notification.Description.v120 + image: notifications + buttons: + primary: + title: Onboarding/Onboarding.Notification.TurnOnNotifications.Action.v114 + action: request-notifications + secondary: + title: Onboarding/Onboarding.Notification.Skip.Action.v115 + action: forward-one-card + onboarding-type: fresh-install + prerequisites: + - ALWAYS + sign-to-sync: + card-type: basic + order: 20 + title: Onboarding/Onboarding.Sync.Title.v120 + body: Onboarding/Onboarding.Sync.Description.v123 + image: sync-devices + buttons: + primary: + title: Onboarding/Onboarding.Sync.SignIn.Action.v114 + action: sync-sign-in + secondary: + title: Onboarding/Onboarding.Sync.Skip.Action.v114 + action: forward-one-card + onboarding-type: fresh-install + prerequisites: + - ALWAYS + customization-theme: + card-type: multiple-choice + order: 40 + title: Onboarding/Onboarding.Customization.Theme.Title.v123 + body: Onboarding/Onboarding.Customization.Theme.Description.v123 + image: themeing + buttons: + primary: + title: Onboarding/Onboarding.Customization.Theme.Continue.Action.v123 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Customization.Theme.System.Action.v123 + image: theme-system + action: theme-system-default + - title: Onboarding/Onboarding.Customization.Theme.Light.Action.v123 + image: theme-light + action: theme-light + - title: Onboarding/Onboarding.Customization.Theme.Dark.Action.v123 + image: theme-dark + action: theme-dark + onboarding-type: fresh-install + prerequisites: + - ALWAYS + customization-toolbar: + card-type: multiple-choice + order: 41 + title: Onboarding/Onboarding.Customization.Toolbar.Title.v123 + body: Onboarding/Onboarding.Customization.Toolbar.Description.v123 + image: toolbar + buttons: + primary: + title: Onboarding/Onboarding.Customization.Toolbar.Continue.Action.v123 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Customization.Toolbar.Top.Action.v123 + image: toolbar-top + action: toolbar-top + - title: Onboarding/Onboarding.Customization.Toolbar.Bottom.Action.v123 + image: toolbar-bottom + action: toolbar-bottom + onboarding-type: fresh-install + prerequisites: + - ALWAYS + update-welcome: + card-type: basic + order: 10 + title: Upgrade/Upgrade.Welcome.Title.v114 + body: Upgrade/Upgrade.Welcome.Description.v114 + image: welcome-globe + buttons: + primary: + title: Upgrade/Upgrade.Welcome.Action.v114 + action: forward-one-card + onboarding-type: upgrade + prerequisites: + - NEVER + update-sign-to-sync: + card-type: basic + order: 20 + title: Upgrade/Upgrade.SyncSign.Title.v114 + body: Upgrade/Upgrade.SyncSign.Description.v114 + image: sync-devices + buttons: + primary: + title: Upgrade/Upgrade.SyncSign.Action.v114 + action: sync-sign-in + secondary: + title: Onboarding/Onboarding.LaterAction.v114 + action: forward-one-card + onboarding-type: upgrade + prerequisites: + - NEVER + string-alias: NimbusOnboardingCardKey + conditions: + description: "A collection of out the box conditional expressions to be used in determining whether a card should show or not. Each entry maps to a valid JEXL expression.\n" + type: "Map" + default: + ALWAYS: "true" + NEVER: "false" + string-alias: ConditionName + dismissable: + description: "Whether or not the entire onboarding is dismissable by pressing an X at the top right corner of the screen.\n" + type: Boolean + default: true + password-generator-feature: + description: Password Generator Feature + variables: + enabled: + description: "If true, the password generator feature is enabled" + type: Boolean + default: false + pull-to-refresh-refactor-feature: + description: "The Feature flag to manage the roll out of the new pull to refresh feature.\n" + variables: + enabled: + description: "Enables the feature\n" + type: Boolean + default: true + redux-search-settings-feature: + description: "This feature is for managing the roll out of redux on the search settings screen\n" + variables: + enabled: + description: "Enables the feature\n" + type: Boolean + default: false + remote-tab-management: + description: "Features that let users manage tabs on other devices that are connected to the same Mozilla account.\n" + variables: + close-tabs-enabled: + description: "Whether the feature to close synced tabs is enabled. When enabled, this device will allow other devices to close tabs that are open on this device, and show a \"close\" button for tabs that are currently open on other supported devices in the synced tabs tray.\n" + type: Boolean + default: false + search: + description: "Configuring the functionality to do with search. This will be separated into smaller sub-features in later releases.\n" + variables: + awesome-bar: + description: Configuring the awesome bar. + type: AwesomeBar + default: + min-search-term: 3 + position: + is-bottom: false + is-position-feature-enabled: true + is-toolbar-cfr-on: false + search-highlights: false + use-page-content: false + sent-from-firefox-feature: + description: "Adds additional promo text to links shared to WhatsApp.\n" + variables: + enabled: + description: "Controls whether promo text is added to WhatsApp shares and an on/off toggle is added to Settings.\n" + type: Boolean + default: false + shopping2023: + description: "The configuration setting for the status of the Fakespot feature\n" + variables: + back_in_stock_reporting: + description: "If true, enables for users the reporting feature for products back in stock.\n" + type: Boolean + default: false + config: + description: "A Map of website configurations\n" + type: "Map" + default: + amazon: + productIdFromURLRegex: "(?:[\\\\/]|$|%2F)(?[A-Z0-9]{10})(?:[\\\\/]|$|\\\\#|\\\\?|%2F)" + validTLDs: + - com + - de + - fr + walmart: + productIdFromURLRegex: "\\\\/ip\\\\/(?:[A-Za-z0-9-]{1,320}\\\\/)?(?[0-9]{3,13})" + validTLDs: + - com + bestbuy: + productIdFromURLRegex: "\\\\/(?\\\\d+\\\\.p)" + validTLDs: + - com + product_ads: + description: "If true, enables the product advertisement feature, allowing users to see and interact with ads for various products.\n" + type: Boolean + default: false + relay: + description: "Configurable relay URL for production environment\n" + type: String + default: "https://mozilla-ohttp-fakespot.fastly-edge.com/" + status: + description: "Whether the Fakespot feature is enabled or disabled\n" + type: Boolean + default: false + splash-screen: + description: "A feature that extends splash screen duration, allowing additional data fetching time for the app's initial run.\n" + variables: + enabled: + description: "If true, the feature is active.\n" + type: Boolean + default: false + maximum_duration_ms: + description: "The maximum amount of time in milliseconds the splashscreen will be visible while waiting for initialization calls to complete.\n" + type: Int + default: 0 + spotlight-search: + description: Add pages as items findable with Spotlight. + variables: + enabled: + description: "If this is true, then on each page load adds a new item to Spotlight." + type: Boolean + default: false + icon-type: + description: "The icon that is displayed next to the item in the search results. If this is `null`, then no icon is displayed.\n" + type: Option + default: letter + keep-for-days: + description: "Number of days to keep the item before automatic deletion. If this is left `null`, then it is left to iOS's default.\n" + type: Option + default: ~ + searchable-content: + description: "The text content that is made searchable. If this is `null` then no additional content is used, and only the title and URL will be used.\n" + type: Option + default: text-excerpt + tabTrayFeature: + description: The tab tray screen that the user goes to when they open the tab tray. + variables: + sections-enabled: + description: "This property provides a lookup table of whether or not the given section should be enabled. If the section is enabled, it should be toggleable in the settings screen, and on by default." + type: "Map" + default: + inactive-tabs: true + toolbar-refactor-feature: + description: "This feature is for managing the roll out of the Toolbar refactor feature\n" + variables: + enabled: + description: "Enables the feature\n" + type: Boolean + default: false + navigation_hint: + description: "If true, enables the navigation contextual hint.\n" + type: Boolean + default: false + one_tap_new_tab: + description: "If true, enables the one tap new tab feature for users.\n" + type: Boolean + default: false + unified_search: + description: "Enables the unified search feature\n" + type: Boolean + default: false + tos-feature: + description: "This feature is for managing the roll out of the ToS (Term of Service) implementation\n" + variables: + status: + description: "Enables the feature\n" + type: Boolean + default: false + tracking-protection-refactor: + description: "The Enhanced Tracking Protection refactor\n" + variables: + enabled: + description: "Whether the Enhanced Tracking Protection refactor is enabled or not\n" + type: Boolean + default: false + zoom-feature: + description: "The configuration for the status of the zoom feature\n" + variables: + status: + description: "Whether the page zoom feature is enabled or not\n" + type: Boolean + default: true +enums: + ContextualHint: + description: The identifiers for a individual contextual hints. + variants: + toolbar-hint: + description: The contextual hint bubble that appears to provide a hint about the toolbar. + ControlMessageBehavior: + description: An enum to influence what should be displayed when a control message is selected. + variants: + show-next-message: + description: The next eligible message should be shown. + show-none: + description: The surface should show no message. + HomeScreenSection: + description: The identifiers for the sections of the homescreen. + variants: + jump-back-in: + description: The tabs the user was looking immediately before being interrupted. + recent-explorations: + description: The tab groups + IconType: + description: "The icon that will be added to the item in the device's search engine." + variants: + favicon: + description: The favicon of the page + letter: + description: An icon generated from the first letter of the base domain. + screenshot: + description: A screenshot of the page at load time. + MessageSurfaceId: + description: "For messaging, we would like to have a message tell us which surface its associated with. This is a label that matches across both Android and iOS.\n" + variants: + Unknown: + description: A message has NOT declared its target surface. + microsurvey: + description: This is a microsurvey that appears on top of the bottom toolbar to the user. + new-tab-card: + description: This is the card that appears at the top on the Firefox Home Page. + notification: + description: This is a local notification send to the user periodically with tips and updates. + survey: + description: This is a full-page that appears providing a survey to the user. + NimbusOnboardingHeaderImage: + description: "The identifiers for the different images available for cards in onboarding\n" + variants: + customize-firefox: + description: "Corresponding to the fox window image\n" + notifications: + description: "Corresponding to the notifications image\n" + notifications-ctd: + description: "Corresponding to the notifications image for CTD\n" + search-widget: + description: "Corresponding to the fox search widget image\n" + set-default-steps: + description: "Corresponding to the set to default steps image\n" + set-to-dock: + description: "Corresponding to the set to dock image\n" + sync-devices: + description: "Corresponding to the sync-devices image\n" + sync-devices-ctd: + description: "Corresponding to the sync image for CTD\n" + themeing: + description: "Corresponding to the fox world image\n" + toolbar: + description: "Corresponding to the fox world image\n" + welcome-ctd: + description: "Corresponding to the welcome image for CTD\n" + welcome-globe: + description: "Corresponding to the fox world image\n" + NimbusOnboardingMultipleChoiceButtonImage: + description: "The identifiers for the different images available for multiple choice buttons in onboarding\n" + variants: + theme-dark: + description: "Corresponding to the dark theme\n" + theme-light: + description: "Corresponding to the light theme\n" + theme-system: + description: "Corresponding to the system theme\n" + toolbar-bottom: + description: "Corresponding to the toolbar on the bottom\n" + toolbar-top: + description: "Corresponding to the toolbar on top\n" + OnboardingActions: + description: "The identifiers for the different actions available for cards in onboarding\n" + variants: + end-onboarding: + description: "Will end the onboarding on a set card\n" + forward-one-card: + description: "Will take the user to the next card\n" + forward-three-card: + description: "Will take the user to the next card\n" + forward-two-card: + description: "Will take the user to the next card\n" + open-instructions-popup: + description: "Will open up a popup with instructions for something\n" + open-ios-fx-settings: + description: "Will take the user to the default browser settings in the iOS system settings\n" + read-privacy-policy: + description: "Will open a webview where the user can read the privacy policy\n" + request-notifications: + description: "Will request to allow notifications from the user\n" + set-default-browser: + description: "Will send the user to settings to set Firefox as their default browser and advance to next card\n" + sync-sign-in: + description: "Will take the user to the sync sign in flow\n" + OnboardingCardType: + description: "The identifiers for the different types of onboarding cards.\n" + variants: + basic: + description: "Corresponding to basic info onboarding cards\n" + multiple-choice: + description: "Corresponding to onboarding cards with multiple choice buttons\n" + OnboardingInstructionsPopupActions: + description: "The identifiers for the different actions available for the insturction card in onboarding\n" + variants: + dismiss: + description: "Will dismiss the popup\n" + dismiss-and-next-card: + description: "Will dismiss the popup and move to the next card\n" + open-ios-fx-settings: + description: "Will take the user to the default browser settings in the iOS system settings\n" + OnboardingMultipleChoiceAction: + description: "The identifiers for the different actions available for cards in onboarding\n" + variants: + theme-dark: + description: "Will will set the theme to dark mode\n" + theme-light: + description: "Will set the theme to light mode\n" + theme-system-default: + description: "Will set the theme to use the system theme\n" + toolbar-bottom: + description: "Will set the toolbar on the bottom\n" + toolbar-top: + description: "Will set the toolbar on the top\n" + OnboardingType: + description: "The identifiers for the different types of onboarding cards.\n" + variants: + fresh-install: + description: "Corresponding to onboarding cards that are for new users\n" + upgrade: + description: "Corresponding to onboarding cards that are for users who have updated\n" + PageContent: + description: "The page content that will be added as an item in the device's search engine." + variants: + html-content: + description: Use all the page as HTML + text-content: + description: Use all the page as text + text-excerpt: + description: Only use the first paragraph + SuggestionType: + description: The type of a Firefox Suggest search suggestion. + variants: + amp: + description: A Firefox Suggestion for desktop from adMarketplace. + ampMobile: + description: A Firefox Suggestion specifically for mobile from adMarketplace. + wikipedia: + description: A Firefox Suggestion for a Wikipedia page. + TabTraySection: + description: The identifiers for the sections of the tab tray. + variants: + inactive-tabs: + description: Tabs that have been automatically closed for the user. +objects: + AwesomeBar: + description: "A configuration option for the awesome bar. Part of the `search` feature." + fields: + min-search-term: + description: The minimum number of characters that the user types before searching in the page. + type: Int + default: 3 + position: + description: "This property defines whether or not the feature is enabled, and the position of the search bar\n" + type: SearchBarPositionFeature + default: + is-position-feature-enabled: true + is-bottom: true + is-toolbar-cfr-on: true + search-highlights: + description: Whether or not search highlights are enabled + type: Boolean + default: false + use-page-content: + description: "Search in the open tab's text content when typing." + type: Boolean + default: false + GeneralFeature: + description: The configuration for the a feature that can be enabled or disabled + fields: + status: + description: Whether or not the feature is enabled + type: Boolean + default: false + MessageData: + description: "An object to describe a message. It uses human readable strings to describe the triggers, action and style of the message as well as the text of the message and call to action.\n" + fields: + action: + description: "The name of a deeplink URL to be opened if the button is clicked.\n" + type: Option + default: ~ + action-params: + description: Query parameters appended to the deeplink action URL + type: "Map" + default: {} + button-label: + description: "The text on the button. If no text is present, the whole message is clickable.\n" + type: Option + default: ~ + except-if-any: + description: "A list of strings corresponding to targeting expressions. If any of these expressions evaluate to `true`, the message will not be eligible.\n" + type: List + default: [] + experiment: + description: The experiment slug that this message is involved in. + type: Option + default: ~ + is-control: + description: "Indicates if this message is the control message, if true shouldn't be displayed" + type: Boolean + default: false + microsurveyConfig: + description: Optional configuration data for a microsurvey. + type: Option + default: ~ + style: + description: "The style as described in a `StyleData` from the styles table.\n" + type: StyleName + default: DEFAULT + surface: + description: Each message will tell us the surface it is targeting with this. + type: MessageSurfaceId + default: Unknown + text: + description: The message text displayed to the user + type: Text + default: "" + title: + description: The title text displayed to the user + type: Option + default: ~ + trigger-if-all: + description: "A list of strings corresponding to targeting expressions. All named expressions must evaluate to true if the message is to be eligible to be shown.\n" + type: List + default: + - ALWAYS + MicrosurveyConfig: + description: "Attributes relating to microsurvey messaging.\n" + fields: + icon: + description: The asset name in our bundle used as the icon shown in the survey. + type: Image + default: lightbulbLarge + options: + description: The list of survey options to present to the user. + type: List + default: [] + utm-content: + description: The name used to provide as the utm_content parameter for the privacy notice. + type: Option + default: ~ + NimbusOnboardingButton: + description: "A group of properties describing the attributes of a card.\n" + fields: + action: + description: "The action the button should take. The default for this will be \"forward-one-card\"\n" + type: OnboardingActions + default: forward-one-card + title: + description: "The text of the button title. This should never be defaulted.\n" + type: Text + default: "" + NimbusOnboardingButtons: + description: "A set of buttons for the card. There can be up to two, but there must be at least one.\n" + fields: + primary: + description: "The primary button for the card. This must exist.\n" + type: NimbusOnboardingButton + default: + title: Primary Button + action: forward-one-card + secondary: + description: "A secondary, optional, button for the card.\n" + type: Option + default: ~ + NimbusOnboardingCardData: + description: "A group of properties describing the attributes of a card.\n" + fields: + body: + description: "The body text dispalyed on the card, in less prominent text. This should never be defaulted.\n" + type: Text + default: "" + buttons: + description: "The set of buttons associated with the card.\n" + type: NimbusOnboardingButtons + default: + primary: + title: Onboarding/Onboarding.Sync.Skip.Action.v114 + action: forward-one-card + secondary: ~ + card-type: + description: "The type of onboarding this card should be shown in, whether it a fresh install or an update. The default is fresh-install.\n" + type: OnboardingCardType + default: basic + disqualifiers: + description: "A list of ConditionName strings corresponding to targeting expressions. The card will not be shown if any expression is `true`.\n" + type: List + default: [] + image: + description: "The image that should be dispalyed on the card.\n" + type: NimbusOnboardingHeaderImage + default: welcome-globe + instructions-popup: + description: "The object describing the specific instruction popup button for a card. If left empty, the card will have no instruction popup information\n" + type: Option + default: ~ + link: + description: "The object describing the link button for a card. If left empty, the card will have no link.\n" + type: Option + default: ~ + multiple-choice-buttons: + description: "A list of multiple choice buttons that the card will display\n" + type: List + default: [] + onboarding-type: + description: "The type of onboarding this card should be shown in, whether it a fresh install or an update. The default is fresh-install.\n" + type: OnboardingType + default: fresh-install + order: + description: "The place in the order where the card will be found. The feature layer will then sort the cards based on this field.\n" + type: Int + default: 10 + prerequisites: + description: "A list of ConditionName strings corresponding to targeting expressions. The card will be shown if all expressions `true` and if no expressions in the `disqualifiers` table are true, or if the `disqualifiers` table is empty.\n" + type: List + default: [] + title: + description: "The title displayed on the card, in prominent, bolded text. This should never be defaulted.\n" + type: Text + default: "" + NimbusOnboardingInstructionPopup: + description: "The object outlining the content of the instruction card.\n" + fields: + button-action: + description: "The action the button should have. Default is `dismiss-and-next-card`\n" + type: OnboardingInstructionsPopupActions + default: dismiss-and-next-card + button-title: + description: "The title the button should have. This should never be defaulted.\n" + type: Text + default: "" + instructions: + description: "A list of instructions, either as free text, or as Text identifiers.\n" + type: List + default: [] + title: + description: "The text of the popup. This should never be defaulted.\n" + type: Text + default: "" + NimbusOnboardingLink: + description: "A group of properties describing the attributes for the active link on a card\n" + fields: + title: + description: "The text of the link title.\n" + type: Text + default: Onboarding/Onboarding.Welcome.Link.Action.v114 + url: + description: "The url that the link will lead to.\n" + type: String + default: "https://www.mozilla.org/privacy/firefox/" + NimbusOnboardingMultipleChoiceButton: + description: "A group of properties describing the attributes of a multiple choice button on a card\n" + fields: + action: + description: "The action the button should take. The default for this will be \"theme-system-default\"\n" + type: OnboardingMultipleChoiceAction + default: theme-system-default + image: + description: "The text of the button title. This should never be defaulted.\n" + type: NimbusOnboardingMultipleChoiceButtonImage + default: theme-system + title: + description: "The text of the button title. This should never be defaulted.\n" + type: Text + default: "" + SearchBarPositionFeature: + description: The configuration for the bottom search bar on the homescreen + fields: + is-bottom: + description: Whether or not the default position is at the bottom + type: Boolean + default: true + is-position-feature-enabled: + description: Whether or not the feature is enabled + type: Boolean + default: true + is-toolbar-cfr-on: + description: Whether or not the toolbar CFR shows. This is a temporary hack for Nimbus + type: Boolean + default: true + StyleData: + description: "A group of properities (predominantly visual) to the describe style of the message.\n" + fields: + max-display-count: + description: "How many sessions will this message be shown to the user before it is expired.\n" + type: Int + default: 5 + priority: + description: "The importance of this message. 0 is not very important, 100 is very important.\n" + type: Int + default: 50 + WebsiteConfig: + description: "It represents a configuration for different e-commerce websites and includes regular expressions for extracting product IDs from their respective URLs\n" + fields: + productIdFromURLRegex: + description: "It represents the product ID extracted from a regex query\n" + type: String + default: "" + validTLDs: + description: "Valid Top Level Domains\n" + type: List + default: [] diff --git a/experimenter/experimenter/features/manifests/ios/v134.1.0/developer.fml.yaml b/experimenter/experimenter/features/manifests/ios/v134.1.0/developer.fml.yaml new file mode 100644 index 0000000000..66f9ec5d36 --- /dev/null +++ b/experimenter/experimenter/features/manifests/ios/v134.1.0/developer.fml.yaml @@ -0,0 +1,1044 @@ +--- +version: 1.0.0 +about: + description: The root level Feature Manifest for Firefox for iOS +channels: + - developer +features: + account-settings-redux-feature: + description: "This feature is for managing the roll out of the Account Settings Redux implementation\n" + variables: + enabled: + description: "Enables the feature\n" + type: Boolean + default: false + address-autofill-edit: + description: This property defines if the address editing is enabled in Settings + variables: + status: + description: "If true, we will allow user to edit the address" + type: Boolean + default: true + bookmark-refactor-feature: + description: "The Feature for managing the roll out of the Bookmark refactor feature\n" + variables: + enabled: + description: "Enables the bookmark refactor feature\n" + type: Boolean + default: false + contextual-hint-feature: + description: This set holds all features pertaining to contextual hints. + variables: + features-enabled: + description: "This property provides a lookup table of whether specific contextual hints are enabled.\n" + type: "Map" + default: + toolbar-hint: true + credit-card-autofill: + description: This property defines the credit card autofill feature + variables: + credit-card-autofill-status: + description: "If true, we will allow user to use the credit autofill feature" + type: Boolean + default: true + felt-privacy-feature: + description: The feature that enhances private browsing mode + variables: + felt-deletion-enabled: + description: "If true, enable Felt Deletion part of Felt Privacy" + type: Boolean + default: true + simplified-ui-enabled: + description: "If true, enable simplified UI part of Felt Privacy" + type: Boolean + default: true + firefox-suggest-feature: + description: Configuration for the Firefox Suggest feature. + variables: + available-suggestions-types: + description: "A map of suggestion types to booleans that indicate whether or not the provider should return suggestions of those types.\n" + type: "Map" + default: + amp: true + ampMobile: false + wikipedia: true + status: + description: "Whether the feature is enabled. When Firefox Suggest is enabled, Firefox will download and store new search suggestions in the background, and show additional Search settings to control which suggestions appear in the awesomebar. When Firefox Suggest is disabled, Firefox will not download new suggestions, and hide the additional Search settings.\n" + type: Boolean + default: true + general-app-features: + description: The feature that contains feature flags for the entire application + variables: + report-site-issue: + description: This property defines whether or not the feature is enabled + type: GeneralFeature + default: + status: true + glean-server-knobs: + description: A feature that provides server-side configurations for Glean metrics (aka Server Knobs). + variables: + metrics-enabled: + description: "A map of metric base-identifiers to booleans representing the state of the 'enabled' flag for that metric." + type: "Map" + default: {} + homepage-rebuild-feature: + description: "This feature is for managing the roll out of the Homepage rebuild feature\n" + variables: + enabled: + description: "If true, enables the feature\n" + type: Boolean + default: false + homescreenFeature: + description: The homescreen that the user goes to when they press home or new tab. + variables: + prefer-switch-to-open-tab: + description: "Enables the feature to automatically switch to an existing tab with the same content instead of opening a new one.\n" + type: Boolean + default: true + sections-enabled: + description: "This property provides a lookup table of whether or not the given section should be enabled. If the section is enabled, it should be toggleable in the settings screen, and on by default.\n" + type: "Map" + default: + jump-back-in: true + recent-explorations: false + login-autofill: + description: This property defines the login autofill feature for automatically filling in usernames and passwords. + variables: + login-autofill-status: + description: "If true, allows the user to use the login autofill feature for usernames and passwords." + type: Boolean + default: true + menu-refactor-feature: + description: "Controls the menu refactor feature\n" + variables: + enabled: + description: "Controls which menu users will see\n" + type: Boolean + default: false + menu-hint: + description: "If true, enables the menu contextual hint.\n" + type: Boolean + default: true + messaging: + description: "The in-app messaging system\n" + documentation: + - name: User documentation + url: "https://experimenter.info/messaging/mobile-messaging" + contacts: + - jhugman@mozilla.com + - brennie@mozilla.com + - gbuciu@mozilla.com + - wteichmann@mozilla.com + events: + - "https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_shown" + - "https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_clicked" + - "https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_expired" + - "https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_dismissed" + - "https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_malformed" + variables: + actions: + description: A growable map of action URLs. + type: "Map" + default: + OPEN_SETTINGS: "://deep-link?url=settings/general" + OPEN_SETTINGS_NEW_TAB: "://deep-link?url=settings/newtab" + OPEN_SETTINGS_HOMESCREEN: "://deep-link?url=settings/homepage" + OPEN_SETTINGS_WALLPAPERS: "://deep-link?url=settings/wallpaper" + OPEN_SETTINGS_EMAIL: "://deep-link?url=settings/mailto" + OPEN_SETTINGS_SEARCH_ENGINE: "://deep-link?url=settings/search" + OPEN_SETTINGS_PRIVACY: "://deep-link?url=settings/clear-private-data" + OPEN_SETTINGS_FXA: "://deep-link?url=settings/fxa" + OPEN_SETTINGS_THEME: "://deep-link?url=settings/theme" + OPEN_URL: "://open-url" + VIEW_BOOKMARKS: "://deep-link?url=homepanel/bookmarks" + VIEW_TOP_SITES: "://deep-link?url=homepanel/top-sites" + VIEW_READING_LIST: "://deep-link?url=homepanel/reading-list" + VIEW_HISTORY: "://deep-link?url=homepanel/history" + VIEW_DOWNLOADS: "://deep-link?url=homepanel/downloads" + ENABLE_PRIVATE_BROWSING: "://deep-link?url=homepanel/new-private-tab" + OPEN_NEW_TAB: "://deep-link?url=homepanel/new-tab" + MAKE_DEFAULT_BROWSER: "://deep-link?url=default-browser/system-settings" + MAKE_DEFAULT_BROWSER_WITH_TUTORIAL: "://deep-link?url=default-browser/tutorial" + OPEN_SHARE_SHEET: "://share-sheet" + string-alias: ActionName + message-under-experiment: + description: "Deprecated. Please use \"experiment\": \"{experiment}\" instead." + type: Option + default: ~ + messages: + description: "A growable collection of messages, where the Key is the message identifier and the value is its associated MessageData.\n" + type: "Map" + default: + default-browser: + surface: new-tab-card + style: FALLBACK + trigger-if-all: + - SUPPORTS_DEFAULT_BROWSER + - ON_FOURTH_LAUNCH_THIS_YEAR + except-if-any: + - I_AM_DEFAULT_BROWSER + title: Default Browser/DefaultBrowserCard.Title + text: Default Browser/DefaultBrowserCard.Description + button-label: Default Browser/DefaultBrowserCard.Button.v2 + action: MAKE_DEFAULT_BROWSER_WITH_TUTORIAL + homepage-microsurvey-message: + surface: microsurvey + style: MICROSURVEY + trigger-if-all: + - SECOND_HOMEPAGE_VIEW + title: Microsurvey/Microsurvey.Prompt.TitleLabel.v127 + text: How satisfied are you with your Firefox homepage? + button-label: Microsurvey/Microsurvey.Prompt.Button.v127 + microsurveyConfig: + utm-content: homepage + icon: homeLarge + options: + - Microsurvey/Microsurvey.Survey.Options.VerySatisfied.v132 + - Microsurvey/Microsurvey.Survey.Options.Satisfied.v132 + - Microsurvey/Microsurvey.Survey.Options.Neutral.v132 + - Microsurvey/Microsurvey.Survey.Options.Dissatisfied.v132 + - Microsurvey/Microsurvey.Survey.Options.VeryDissatisfied.v132 + - Microsurvey/Microsurvey.Survey.Options.NotApplicable.v132 + survey-surface-message: + surface: survey + style: SURVEY + trigger-if-all: + - NEVER + text: ResearchSurface/Body.Text.v112 + button-label: ResearchSurface/PrimaryButton.Label.v112 + action: OPEN_URL + action-params: + url: "https://www.macrumors.com" + string-alias: MessageKey + on-control: + description: What should be displayed when a control message is selected. + type: ControlMessageBehavior + default: show-next-message + styles: + description: "A map of styles to configure message appearance.\n" + type: "Map" + default: + FALLBACK: + priority: 40 + max-display-count: 20 + DEFAULT: + priority: 50 + max-display-count: 5 + MICROSURVEY: + priority: 50 + max-display-count: 1 + NOTIFICATION: + priority: 50 + max-display-count: 1 + PERSISTENT: + priority: 50 + max-display-count: 20 + SURVEY: + priority: 55 + max-display-count: 10 + WARNING: + priority: 60 + max-display-count: 10 + URGENT: + priority: 100 + max-display-count: 10 + string-alias: StyleName + triggers: + description: "A collection of out the box trigger expressions. Each entry maps to a valid JEXL expression.\n" + type: "Map" + default: + ALWAYS: "true" + NEVER: "false" + USER_RECENTLY_INSTALLED: days_since_install < 7 + USER_RECENTLY_UPDATED: days_since_update < 7 && days_since_install != days_since_update + USER_TIER_ONE_COUNTRY: "('US' in locale || 'GB' in locale || 'CA' in locale || 'DE' in locale || 'FR' in locale)" + USER_EN_SPEAKER: "'en' in locale" + USER_ES_SPEAKER: "'es' in locale" + USER_DE_SPEAKER: "'de' in locale" + USER_FR_SPEAKER: "'fr' in locale" + DEVICE_ANDROID: "os == 'Android'" + DEVICE_IOS: "os == 'iOS'" + DAY_1_AFTER_INSTALL: days_since_install == 1 + DAY_2_AFTER_INSTALL: days_since_install == 2 + DAY_3_AFTER_INSTALL: days_since_install == 3 + DAY_4_AFTER_INSTALL: days_since_install == 4 + DAY_5_AFTER_INSTALL: days_since_install == 5 + MORE_THAN_24H_SINCE_INSTALLED_OR_UPDATED: days_since_update >= 1 + NOT_LAUNCHED_YESTERDAY: "'app_cycle.foreground'|eventLastSeen('Days', 1) > 1" + AFTER_THREE_LAUNCHES_THIS_WEEK: "'app_cycle.foreground'|eventSum('Weeks', 1, 0) >= 3" + I_AM_DEFAULT_BROWSER: is_default_browser + I_AM_NOT_DEFAULT_BROWSER: is_default_browser == false + SUPPORTS_DEFAULT_BROWSER: "os_version|versionCompare('14.!') >= 0" + INACTIVE_NEW_USER: is_inactive_new_user + ALLOWED_TIPS_NOTIFICATIONS: allowed_tips_notifications + FXA_CURRENTLY_SIGNED_IN: is_fxa_signed_in == true + SECOND_HOMEPAGE_VIEW: "'homepage_viewed'|eventSum('Years', 4, 0) >= 2" + ON_FOURTH_LAUNCH_THIS_YEAR: "'app_cycle.foreground'|eventSum('Years', 1, 0) > 3" + string-alias: TriggerName + ~~experiment: + description: Not to be set by experiment. + type: ExperimentSlug + default: "{experiment}" + string-alias: ExperimentSlug + allow-coenrollment: true + microsurvey-feature: + description: "A feature that shows the microsurvey for users to interact with and submit responses.\n" + variables: + enabled: + description: "If true, the feature is active.\n" + type: Boolean + default: true + native-error-page-feature: + description: "This feature is for managing the roll out of the native error page feature\n" + variables: + enabled: + description: "If true, the feature is active.\n" + type: Boolean + default: false + no_internet_connection_error: + description: "This feature is for managing the roll out of the no interet connection native error page feature\n" + type: Boolean + default: false + night-mode-feature: + description: "Describes the night mode feature's configuration\n" + variables: + enabled: + description: "Whether night mode is available for users or not\n" + type: Boolean + default: true + onboarding-framework-feature: + description: "The new onboarding framework feature that will allow onboarding to be experimentable through initial experiments.\n" + variables: + cards: + description: "The list of available cards for onboarding.\n" + type: "Map" + default: + welcome: + card-type: basic + order: 10 + title: Onboarding/Onboarding.Welcome.Title.TreatementA.v120 + body: Onboarding/Onboarding.Welcome.Description.TreatementA.v120 + image: welcome-globe + link: + title: Onboarding/Onboarding.Welcome.Link.Action.v114 + url: "https://www.mozilla.org/privacy/firefox/" + buttons: + primary: + title: Onboarding/Onboarding.Welcome.ActionTreatementA.v114 + action: open-instructions-popup + secondary: + title: Onboarding/Onboarding.Welcome.Skip.v114 + action: forward-one-card + instructions-popup: + title: Onboarding/DefaultBrowserPopup.Title.v114 + button-title: Onboarding/DefaultBrowserPopup.ButtonTitle.v114 + button-action: open-ios-fx-settings + instructions: + - Onboarding/DefaultBrowserPopup.FirstLabel.v114 + - Onboarding/DefaultBrowserPopup.SecondLabel.v114 + - Onboarding/DefaultBrowserPopup.ThirdLabel.v114 + onboarding-type: fresh-install + prerequisites: + - ALWAYS + notification-permissions: + card-type: basic + order: 30 + title: Onboarding/Onboarding.Notification.Title.v120 + body: Onboarding/Onboarding.Notification.Description.v120 + image: notifications + buttons: + primary: + title: Onboarding/Onboarding.Notification.TurnOnNotifications.Action.v114 + action: request-notifications + secondary: + title: Onboarding/Onboarding.Notification.Skip.Action.v115 + action: forward-one-card + onboarding-type: fresh-install + prerequisites: + - ALWAYS + sign-to-sync: + card-type: basic + order: 20 + title: Onboarding/Onboarding.Sync.Title.v120 + body: Onboarding/Onboarding.Sync.Description.v123 + image: sync-devices + buttons: + primary: + title: Onboarding/Onboarding.Sync.SignIn.Action.v114 + action: sync-sign-in + secondary: + title: Onboarding/Onboarding.Sync.Skip.Action.v114 + action: forward-one-card + onboarding-type: fresh-install + prerequisites: + - ALWAYS + customization-theme: + card-type: multiple-choice + order: 40 + title: Onboarding/Onboarding.Customization.Theme.Title.v123 + body: Onboarding/Onboarding.Customization.Theme.Description.v123 + image: themeing + buttons: + primary: + title: Onboarding/Onboarding.Customization.Theme.Continue.Action.v123 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Customization.Theme.System.Action.v123 + image: theme-system + action: theme-system-default + - title: Onboarding/Onboarding.Customization.Theme.Light.Action.v123 + image: theme-light + action: theme-light + - title: Onboarding/Onboarding.Customization.Theme.Dark.Action.v123 + image: theme-dark + action: theme-dark + onboarding-type: fresh-install + prerequisites: + - ALWAYS + customization-toolbar: + card-type: multiple-choice + order: 41 + title: Onboarding/Onboarding.Customization.Toolbar.Title.v123 + body: Onboarding/Onboarding.Customization.Toolbar.Description.v123 + image: toolbar + buttons: + primary: + title: Onboarding/Onboarding.Customization.Toolbar.Continue.Action.v123 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Customization.Toolbar.Top.Action.v123 + image: toolbar-top + action: toolbar-top + - title: Onboarding/Onboarding.Customization.Toolbar.Bottom.Action.v123 + image: toolbar-bottom + action: toolbar-bottom + onboarding-type: fresh-install + prerequisites: + - ALWAYS + update-welcome: + card-type: basic + order: 10 + title: Upgrade/Upgrade.Welcome.Title.v114 + body: Upgrade/Upgrade.Welcome.Description.v114 + image: welcome-globe + buttons: + primary: + title: Upgrade/Upgrade.Welcome.Action.v114 + action: forward-one-card + onboarding-type: upgrade + prerequisites: + - NEVER + update-sign-to-sync: + card-type: basic + order: 20 + title: Upgrade/Upgrade.SyncSign.Title.v114 + body: Upgrade/Upgrade.SyncSign.Description.v114 + image: sync-devices + buttons: + primary: + title: Upgrade/Upgrade.SyncSign.Action.v114 + action: sync-sign-in + secondary: + title: Onboarding/Onboarding.LaterAction.v114 + action: forward-one-card + onboarding-type: upgrade + prerequisites: + - NEVER + string-alias: NimbusOnboardingCardKey + conditions: + description: "A collection of out the box conditional expressions to be used in determining whether a card should show or not. Each entry maps to a valid JEXL expression.\n" + type: "Map" + default: + ALWAYS: "true" + NEVER: "false" + string-alias: ConditionName + dismissable: + description: "Whether or not the entire onboarding is dismissable by pressing an X at the top right corner of the screen.\n" + type: Boolean + default: true + password-generator-feature: + description: Password Generator Feature + variables: + enabled: + description: "If true, the password generator feature is enabled" + type: Boolean + default: true + pull-to-refresh-refactor-feature: + description: "The Feature flag to manage the roll out of the new pull to refresh feature.\n" + variables: + enabled: + description: "Enables the feature\n" + type: Boolean + default: true + redux-search-settings-feature: + description: "This feature is for managing the roll out of redux on the search settings screen\n" + variables: + enabled: + description: "Enables the feature\n" + type: Boolean + default: false + remote-tab-management: + description: "Features that let users manage tabs on other devices that are connected to the same Mozilla account.\n" + variables: + close-tabs-enabled: + description: "Whether the feature to close synced tabs is enabled. When enabled, this device will allow other devices to close tabs that are open on this device, and show a \"close\" button for tabs that are currently open on other supported devices in the synced tabs tray.\n" + type: Boolean + default: true + search: + description: "Configuring the functionality to do with search. This will be separated into smaller sub-features in later releases.\n" + variables: + awesome-bar: + description: Configuring the awesome bar. + type: AwesomeBar + default: + min-search-term: 3 + position: + is-bottom: false + is-position-feature-enabled: true + is-toolbar-cfr-on: false + search-highlights: false + use-page-content: false + sent-from-firefox-feature: + description: "Adds additional promo text to links shared to WhatsApp.\n" + variables: + enabled: + description: "Controls whether promo text is added to WhatsApp shares and an on/off toggle is added to Settings.\n" + type: Boolean + default: false + shopping2023: + description: "The configuration setting for the status of the Fakespot feature\n" + variables: + back_in_stock_reporting: + description: "If true, enables for users the reporting feature for products back in stock.\n" + type: Boolean + default: false + config: + description: "A Map of website configurations\n" + type: "Map" + default: + amazon: + productIdFromURLRegex: "(?:[\\\\/]|$|%2F)(?[A-Z0-9]{10})(?:[\\\\/]|$|\\\\#|\\\\?|%2F)" + validTLDs: + - com + - de + - fr + walmart: + productIdFromURLRegex: "\\\\/ip\\\\/(?:[A-Za-z0-9-]{1,320}\\\\/)?(?[0-9]{3,13})" + validTLDs: + - com + bestbuy: + productIdFromURLRegex: "\\\\/(?\\\\d+\\\\.p)" + validTLDs: + - com + product_ads: + description: "If true, enables the product advertisement feature, allowing users to see and interact with ads for various products.\n" + type: Boolean + default: false + relay: + description: "Configurable relay URL for production environment\n" + type: String + default: "https://mozilla-ohttp-fakespot.fastly-edge.com/" + status: + description: "Whether the Fakespot feature is enabled or disabled\n" + type: Boolean + default: false + splash-screen: + description: "A feature that extends splash screen duration, allowing additional data fetching time for the app's initial run.\n" + variables: + enabled: + description: "If true, the feature is active.\n" + type: Boolean + default: true + maximum_duration_ms: + description: "The maximum amount of time in milliseconds the splashscreen will be visible while waiting for initialization calls to complete.\n" + type: Int + default: 6000 + spotlight-search: + description: Add pages as items findable with Spotlight. + variables: + enabled: + description: "If this is true, then on each page load adds a new item to Spotlight." + type: Boolean + default: true + icon-type: + description: "The icon that is displayed next to the item in the search results. If this is `null`, then no icon is displayed.\n" + type: Option + default: screenshot + keep-for-days: + description: "Number of days to keep the item before automatic deletion. If this is left `null`, then it is left to iOS's default.\n" + type: Option + default: ~ + searchable-content: + description: "The text content that is made searchable. If this is `null` then no additional content is used, and only the title and URL will be used.\n" + type: Option + default: text-excerpt + tabTrayFeature: + description: The tab tray screen that the user goes to when they open the tab tray. + variables: + sections-enabled: + description: "This property provides a lookup table of whether or not the given section should be enabled. If the section is enabled, it should be toggleable in the settings screen, and on by default." + type: "Map" + default: + inactive-tabs: true + toolbar-refactor-feature: + description: "This feature is for managing the roll out of the Toolbar refactor feature\n" + variables: + enabled: + description: "Enables the feature\n" + type: Boolean + default: true + navigation_hint: + description: "If true, enables the navigation contextual hint.\n" + type: Boolean + default: true + one_tap_new_tab: + description: "If true, enables the one tap new tab feature for users.\n" + type: Boolean + default: true + unified_search: + description: "Enables the unified search feature\n" + type: Boolean + default: false + tos-feature: + description: "This feature is for managing the roll out of the ToS (Term of Service) implementation\n" + variables: + status: + description: "Enables the feature\n" + type: Boolean + default: false + tracking-protection-refactor: + description: "The Enhanced Tracking Protection refactor\n" + variables: + enabled: + description: "Whether the Enhanced Tracking Protection refactor is enabled or not\n" + type: Boolean + default: true + zoom-feature: + description: "The configuration for the status of the zoom feature\n" + variables: + status: + description: "Whether the page zoom feature is enabled or not\n" + type: Boolean + default: true +enums: + ContextualHint: + description: The identifiers for a individual contextual hints. + variants: + toolbar-hint: + description: The contextual hint bubble that appears to provide a hint about the toolbar. + ControlMessageBehavior: + description: An enum to influence what should be displayed when a control message is selected. + variants: + show-next-message: + description: The next eligible message should be shown. + show-none: + description: The surface should show no message. + HomeScreenSection: + description: The identifiers for the sections of the homescreen. + variants: + jump-back-in: + description: The tabs the user was looking immediately before being interrupted. + recent-explorations: + description: The tab groups + IconType: + description: "The icon that will be added to the item in the device's search engine." + variants: + favicon: + description: The favicon of the page + letter: + description: An icon generated from the first letter of the base domain. + screenshot: + description: A screenshot of the page at load time. + MessageSurfaceId: + description: "For messaging, we would like to have a message tell us which surface its associated with. This is a label that matches across both Android and iOS.\n" + variants: + Unknown: + description: A message has NOT declared its target surface. + microsurvey: + description: This is a microsurvey that appears on top of the bottom toolbar to the user. + new-tab-card: + description: This is the card that appears at the top on the Firefox Home Page. + notification: + description: This is a local notification send to the user periodically with tips and updates. + survey: + description: This is a full-page that appears providing a survey to the user. + NimbusOnboardingHeaderImage: + description: "The identifiers for the different images available for cards in onboarding\n" + variants: + customize-firefox: + description: "Corresponding to the fox window image\n" + notifications: + description: "Corresponding to the notifications image\n" + notifications-ctd: + description: "Corresponding to the notifications image for CTD\n" + search-widget: + description: "Corresponding to the fox search widget image\n" + set-default-steps: + description: "Corresponding to the set to default steps image\n" + set-to-dock: + description: "Corresponding to the set to dock image\n" + sync-devices: + description: "Corresponding to the sync-devices image\n" + sync-devices-ctd: + description: "Corresponding to the sync image for CTD\n" + themeing: + description: "Corresponding to the fox world image\n" + toolbar: + description: "Corresponding to the fox world image\n" + welcome-ctd: + description: "Corresponding to the welcome image for CTD\n" + welcome-globe: + description: "Corresponding to the fox world image\n" + NimbusOnboardingMultipleChoiceButtonImage: + description: "The identifiers for the different images available for multiple choice buttons in onboarding\n" + variants: + theme-dark: + description: "Corresponding to the dark theme\n" + theme-light: + description: "Corresponding to the light theme\n" + theme-system: + description: "Corresponding to the system theme\n" + toolbar-bottom: + description: "Corresponding to the toolbar on the bottom\n" + toolbar-top: + description: "Corresponding to the toolbar on top\n" + OnboardingActions: + description: "The identifiers for the different actions available for cards in onboarding\n" + variants: + end-onboarding: + description: "Will end the onboarding on a set card\n" + forward-one-card: + description: "Will take the user to the next card\n" + forward-three-card: + description: "Will take the user to the next card\n" + forward-two-card: + description: "Will take the user to the next card\n" + open-instructions-popup: + description: "Will open up a popup with instructions for something\n" + open-ios-fx-settings: + description: "Will take the user to the default browser settings in the iOS system settings\n" + read-privacy-policy: + description: "Will open a webview where the user can read the privacy policy\n" + request-notifications: + description: "Will request to allow notifications from the user\n" + set-default-browser: + description: "Will send the user to settings to set Firefox as their default browser and advance to next card\n" + sync-sign-in: + description: "Will take the user to the sync sign in flow\n" + OnboardingCardType: + description: "The identifiers for the different types of onboarding cards.\n" + variants: + basic: + description: "Corresponding to basic info onboarding cards\n" + multiple-choice: + description: "Corresponding to onboarding cards with multiple choice buttons\n" + OnboardingInstructionsPopupActions: + description: "The identifiers for the different actions available for the insturction card in onboarding\n" + variants: + dismiss: + description: "Will dismiss the popup\n" + dismiss-and-next-card: + description: "Will dismiss the popup and move to the next card\n" + open-ios-fx-settings: + description: "Will take the user to the default browser settings in the iOS system settings\n" + OnboardingMultipleChoiceAction: + description: "The identifiers for the different actions available for cards in onboarding\n" + variants: + theme-dark: + description: "Will will set the theme to dark mode\n" + theme-light: + description: "Will set the theme to light mode\n" + theme-system-default: + description: "Will set the theme to use the system theme\n" + toolbar-bottom: + description: "Will set the toolbar on the bottom\n" + toolbar-top: + description: "Will set the toolbar on the top\n" + OnboardingType: + description: "The identifiers for the different types of onboarding cards.\n" + variants: + fresh-install: + description: "Corresponding to onboarding cards that are for new users\n" + upgrade: + description: "Corresponding to onboarding cards that are for users who have updated\n" + PageContent: + description: "The page content that will be added as an item in the device's search engine." + variants: + html-content: + description: Use all the page as HTML + text-content: + description: Use all the page as text + text-excerpt: + description: Only use the first paragraph + SuggestionType: + description: The type of a Firefox Suggest search suggestion. + variants: + amp: + description: A Firefox Suggestion for desktop from adMarketplace. + ampMobile: + description: A Firefox Suggestion specifically for mobile from adMarketplace. + wikipedia: + description: A Firefox Suggestion for a Wikipedia page. + TabTraySection: + description: The identifiers for the sections of the tab tray. + variants: + inactive-tabs: + description: Tabs that have been automatically closed for the user. +objects: + AwesomeBar: + description: "A configuration option for the awesome bar. Part of the `search` feature." + fields: + min-search-term: + description: The minimum number of characters that the user types before searching in the page. + type: Int + default: 3 + position: + description: "This property defines whether or not the feature is enabled, and the position of the search bar\n" + type: SearchBarPositionFeature + default: + is-position-feature-enabled: true + is-bottom: true + is-toolbar-cfr-on: true + search-highlights: + description: Whether or not search highlights are enabled + type: Boolean + default: false + use-page-content: + description: "Search in the open tab's text content when typing." + type: Boolean + default: false + GeneralFeature: + description: The configuration for the a feature that can be enabled or disabled + fields: + status: + description: Whether or not the feature is enabled + type: Boolean + default: false + MessageData: + description: "An object to describe a message. It uses human readable strings to describe the triggers, action and style of the message as well as the text of the message and call to action.\n" + fields: + action: + description: "The name of a deeplink URL to be opened if the button is clicked.\n" + type: Option + default: ~ + action-params: + description: Query parameters appended to the deeplink action URL + type: "Map" + default: {} + button-label: + description: "The text on the button. If no text is present, the whole message is clickable.\n" + type: Option + default: ~ + except-if-any: + description: "A list of strings corresponding to targeting expressions. If any of these expressions evaluate to `true`, the message will not be eligible.\n" + type: List + default: [] + experiment: + description: The experiment slug that this message is involved in. + type: Option + default: ~ + is-control: + description: "Indicates if this message is the control message, if true shouldn't be displayed" + type: Boolean + default: false + microsurveyConfig: + description: Optional configuration data for a microsurvey. + type: Option + default: ~ + style: + description: "The style as described in a `StyleData` from the styles table.\n" + type: StyleName + default: DEFAULT + surface: + description: Each message will tell us the surface it is targeting with this. + type: MessageSurfaceId + default: Unknown + text: + description: The message text displayed to the user + type: Text + default: "" + title: + description: The title text displayed to the user + type: Option + default: ~ + trigger-if-all: + description: "A list of strings corresponding to targeting expressions. All named expressions must evaluate to true if the message is to be eligible to be shown.\n" + type: List + default: + - ALWAYS + MicrosurveyConfig: + description: "Attributes relating to microsurvey messaging.\n" + fields: + icon: + description: The asset name in our bundle used as the icon shown in the survey. + type: Image + default: lightbulbLarge + options: + description: The list of survey options to present to the user. + type: List + default: [] + utm-content: + description: The name used to provide as the utm_content parameter for the privacy notice. + type: Option + default: ~ + NimbusOnboardingButton: + description: "A group of properties describing the attributes of a card.\n" + fields: + action: + description: "The action the button should take. The default for this will be \"forward-one-card\"\n" + type: OnboardingActions + default: forward-one-card + title: + description: "The text of the button title. This should never be defaulted.\n" + type: Text + default: "" + NimbusOnboardingButtons: + description: "A set of buttons for the card. There can be up to two, but there must be at least one.\n" + fields: + primary: + description: "The primary button for the card. This must exist.\n" + type: NimbusOnboardingButton + default: + title: Primary Button + action: forward-one-card + secondary: + description: "A secondary, optional, button for the card.\n" + type: Option + default: ~ + NimbusOnboardingCardData: + description: "A group of properties describing the attributes of a card.\n" + fields: + body: + description: "The body text dispalyed on the card, in less prominent text. This should never be defaulted.\n" + type: Text + default: "" + buttons: + description: "The set of buttons associated with the card.\n" + type: NimbusOnboardingButtons + default: + primary: + title: Onboarding/Onboarding.Sync.Skip.Action.v114 + action: forward-one-card + secondary: ~ + card-type: + description: "The type of onboarding this card should be shown in, whether it a fresh install or an update. The default is fresh-install.\n" + type: OnboardingCardType + default: basic + disqualifiers: + description: "A list of ConditionName strings corresponding to targeting expressions. The card will not be shown if any expression is `true`.\n" + type: List + default: [] + image: + description: "The image that should be dispalyed on the card.\n" + type: NimbusOnboardingHeaderImage + default: welcome-globe + instructions-popup: + description: "The object describing the specific instruction popup button for a card. If left empty, the card will have no instruction popup information\n" + type: Option + default: ~ + link: + description: "The object describing the link button for a card. If left empty, the card will have no link.\n" + type: Option + default: ~ + multiple-choice-buttons: + description: "A list of multiple choice buttons that the card will display\n" + type: List + default: [] + onboarding-type: + description: "The type of onboarding this card should be shown in, whether it a fresh install or an update. The default is fresh-install.\n" + type: OnboardingType + default: fresh-install + order: + description: "The place in the order where the card will be found. The feature layer will then sort the cards based on this field.\n" + type: Int + default: 10 + prerequisites: + description: "A list of ConditionName strings corresponding to targeting expressions. The card will be shown if all expressions `true` and if no expressions in the `disqualifiers` table are true, or if the `disqualifiers` table is empty.\n" + type: List + default: [] + title: + description: "The title displayed on the card, in prominent, bolded text. This should never be defaulted.\n" + type: Text + default: "" + NimbusOnboardingInstructionPopup: + description: "The object outlining the content of the instruction card.\n" + fields: + button-action: + description: "The action the button should have. Default is `dismiss-and-next-card`\n" + type: OnboardingInstructionsPopupActions + default: dismiss-and-next-card + button-title: + description: "The title the button should have. This should never be defaulted.\n" + type: Text + default: "" + instructions: + description: "A list of instructions, either as free text, or as Text identifiers.\n" + type: List + default: [] + title: + description: "The text of the popup. This should never be defaulted.\n" + type: Text + default: "" + NimbusOnboardingLink: + description: "A group of properties describing the attributes for the active link on a card\n" + fields: + title: + description: "The text of the link title.\n" + type: Text + default: Onboarding/Onboarding.Welcome.Link.Action.v114 + url: + description: "The url that the link will lead to.\n" + type: String + default: "https://www.mozilla.org/privacy/firefox/" + NimbusOnboardingMultipleChoiceButton: + description: "A group of properties describing the attributes of a multiple choice button on a card\n" + fields: + action: + description: "The action the button should take. The default for this will be \"theme-system-default\"\n" + type: OnboardingMultipleChoiceAction + default: theme-system-default + image: + description: "The text of the button title. This should never be defaulted.\n" + type: NimbusOnboardingMultipleChoiceButtonImage + default: theme-system + title: + description: "The text of the button title. This should never be defaulted.\n" + type: Text + default: "" + SearchBarPositionFeature: + description: The configuration for the bottom search bar on the homescreen + fields: + is-bottom: + description: Whether or not the default position is at the bottom + type: Boolean + default: true + is-position-feature-enabled: + description: Whether or not the feature is enabled + type: Boolean + default: true + is-toolbar-cfr-on: + description: Whether or not the toolbar CFR shows. This is a temporary hack for Nimbus + type: Boolean + default: true + StyleData: + description: "A group of properities (predominantly visual) to the describe style of the message.\n" + fields: + max-display-count: + description: "How many sessions will this message be shown to the user before it is expired.\n" + type: Int + default: 5 + priority: + description: "The importance of this message. 0 is not very important, 100 is very important.\n" + type: Int + default: 50 + WebsiteConfig: + description: "It represents a configuration for different e-commerce websites and includes regular expressions for extracting product IDs from their respective URLs\n" + fields: + productIdFromURLRegex: + description: "It represents the product ID extracted from a regex query\n" + type: String + default: "" + validTLDs: + description: "Valid Top Level Domains\n" + type: List + default: [] diff --git a/experimenter/experimenter/features/manifests/ios/v134.1.0/experimenter.yaml b/experimenter/experimenter/features/manifests/ios/v134.1.0/experimenter.yaml new file mode 100644 index 0000000000..5a2e0ddad0 --- /dev/null +++ b/experimenter/experimenter/features/manifests/ios/v134.1.0/experimenter.yaml @@ -0,0 +1,332 @@ +--- +account-settings-redux-feature: + description: "This feature is for managing the roll out of the Account Settings Redux implementation\n" + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "Enables the feature\n" +address-autofill-edit: + description: This property defines if the address editing is enabled in Settings + hasExposure: true + exposureDescription: "" + variables: + status: + type: boolean + description: "If true, we will allow user to edit the address" +bookmark-refactor-feature: + description: "The Feature for managing the roll out of the Bookmark refactor feature\n" + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "Enables the bookmark refactor feature\n" +contextual-hint-feature: + description: This set holds all features pertaining to contextual hints. + hasExposure: true + exposureDescription: "" + variables: + features-enabled: + type: json + description: "This property provides a lookup table of whether specific contextual hints are enabled.\n" +credit-card-autofill: + description: This property defines the credit card autofill feature + hasExposure: true + exposureDescription: "" + variables: + credit-card-autofill-status: + type: boolean + description: "If true, we will allow user to use the credit autofill feature" +felt-privacy-feature: + description: The feature that enhances private browsing mode + hasExposure: true + exposureDescription: "" + variables: + felt-deletion-enabled: + type: boolean + description: "If true, enable Felt Deletion part of Felt Privacy" + simplified-ui-enabled: + type: boolean + description: "If true, enable simplified UI part of Felt Privacy" +firefox-suggest-feature: + description: Configuration for the Firefox Suggest feature. + hasExposure: true + exposureDescription: "" + variables: + available-suggestions-types: + type: json + description: "A map of suggestion types to booleans that indicate whether or not the provider should return suggestions of those types.\n" + status: + type: boolean + description: "Whether the feature is enabled. When Firefox Suggest is enabled, Firefox will download and store new search suggestions in the background, and show additional Search settings to control which suggestions appear in the awesomebar. When Firefox Suggest is disabled, Firefox will not download new suggestions, and hide the additional Search settings.\n" +general-app-features: + description: The feature that contains feature flags for the entire application + hasExposure: true + exposureDescription: "" + variables: + report-site-issue: + type: json + description: This property defines whether or not the feature is enabled +glean-server-knobs: + description: A feature that provides server-side configurations for Glean metrics (aka Server Knobs). + hasExposure: true + exposureDescription: "" + variables: + metrics-enabled: + type: json + description: "A map of metric base-identifiers to booleans representing the state of the 'enabled' flag for that metric." +homepage-rebuild-feature: + description: "This feature is for managing the roll out of the Homepage rebuild feature\n" + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "If true, enables the feature\n" +homescreenFeature: + description: The homescreen that the user goes to when they press home or new tab. + hasExposure: true + exposureDescription: "" + variables: + prefer-switch-to-open-tab: + type: boolean + description: "Enables the feature to automatically switch to an existing tab with the same content instead of opening a new one.\n" + sections-enabled: + type: json + description: "This property provides a lookup table of whether or not the given section should be enabled. If the section is enabled, it should be toggleable in the settings screen, and on by default.\n" +login-autofill: + description: This property defines the login autofill feature for automatically filling in usernames and passwords. + hasExposure: true + exposureDescription: "" + variables: + login-autofill-status: + type: boolean + description: "If true, allows the user to use the login autofill feature for usernames and passwords." +menu-refactor-feature: + description: "Controls the menu refactor feature\n" + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "Controls which menu users will see\n" + menu-hint: + type: boolean + description: "If true, enables the menu contextual hint.\n" +messaging: + description: "The in-app messaging system\n" + hasExposure: true + exposureDescription: "" + variables: + actions: + type: json + description: A growable map of action URLs. + message-under-experiment: + type: string + description: "Deprecated. Please use \"experiment\": \"{experiment}\" instead." + messages: + type: json + description: "A growable collection of messages, where the Key is the message identifier and the value is its associated MessageData.\n" + on-control: + type: string + description: What should be displayed when a control message is selected. + enum: + - show-next-message + - show-none + styles: + type: json + description: "A map of styles to configure message appearance.\n" + triggers: + type: json + description: "A collection of out the box trigger expressions. Each entry maps to a valid JEXL expression.\n" + ~~experiment: + type: string + description: Not to be set by experiment. +microsurvey-feature: + description: "A feature that shows the microsurvey for users to interact with and submit responses.\n" + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "If true, the feature is active.\n" +native-error-page-feature: + description: "This feature is for managing the roll out of the native error page feature\n" + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "If true, the feature is active.\n" + no_internet_connection_error: + type: boolean + description: "This feature is for managing the roll out of the no interet connection native error page feature\n" +night-mode-feature: + description: "Describes the night mode feature's configuration\n" + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "Whether night mode is available for users or not\n" +onboarding-framework-feature: + description: "The new onboarding framework feature that will allow onboarding to be experimentable through initial experiments.\n" + hasExposure: true + exposureDescription: "" + variables: + cards: + type: json + description: "The list of available cards for onboarding.\n" + conditions: + type: json + description: "A collection of out the box conditional expressions to be used in determining whether a card should show or not. Each entry maps to a valid JEXL expression.\n" + dismissable: + type: boolean + description: "Whether or not the entire onboarding is dismissable by pressing an X at the top right corner of the screen.\n" +password-generator-feature: + description: Password Generator Feature + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "If true, the password generator feature is enabled" +pull-to-refresh-refactor-feature: + description: "The Feature flag to manage the roll out of the new pull to refresh feature.\n" + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "Enables the feature\n" +redux-search-settings-feature: + description: "This feature is for managing the roll out of redux on the search settings screen\n" + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "Enables the feature\n" +remote-tab-management: + description: "Features that let users manage tabs on other devices that are connected to the same Mozilla account.\n" + hasExposure: true + exposureDescription: "" + variables: + close-tabs-enabled: + type: boolean + description: "Whether the feature to close synced tabs is enabled. When enabled, this device will allow other devices to close tabs that are open on this device, and show a \"close\" button for tabs that are currently open on other supported devices in the synced tabs tray.\n" +search: + description: "Configuring the functionality to do with search. This will be separated into smaller sub-features in later releases.\n" + hasExposure: true + exposureDescription: "" + variables: + awesome-bar: + type: json + description: Configuring the awesome bar. +sent-from-firefox-feature: + description: "Adds additional promo text to links shared to WhatsApp.\n" + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "Controls whether promo text is added to WhatsApp shares and an on/off toggle is added to Settings.\n" +shopping2023: + description: "The configuration setting for the status of the Fakespot feature\n" + hasExposure: true + exposureDescription: "" + variables: + back_in_stock_reporting: + type: boolean + description: "If true, enables for users the reporting feature for products back in stock.\n" + config: + type: json + description: "A Map of website configurations\n" + product_ads: + type: boolean + description: "If true, enables the product advertisement feature, allowing users to see and interact with ads for various products.\n" + relay: + type: string + description: "Configurable relay URL for production environment\n" + status: + type: boolean + description: "Whether the Fakespot feature is enabled or disabled\n" +splash-screen: + description: "A feature that extends splash screen duration, allowing additional data fetching time for the app's initial run.\n" + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "If true, the feature is active.\n" + maximum_duration_ms: + type: int + description: "The maximum amount of time in milliseconds the splashscreen will be visible while waiting for initialization calls to complete.\n" +spotlight-search: + description: Add pages as items findable with Spotlight. + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "If this is true, then on each page load adds a new item to Spotlight." + icon-type: + type: string + description: "The icon that is displayed next to the item in the search results. If this is `null`, then no icon is displayed.\n" + keep-for-days: + type: int + description: "Number of days to keep the item before automatic deletion. If this is left `null`, then it is left to iOS's default.\n" + searchable-content: + type: string + description: "The text content that is made searchable. If this is `null` then no additional content is used, and only the title and URL will be used.\n" +tabTrayFeature: + description: The tab tray screen that the user goes to when they open the tab tray. + hasExposure: true + exposureDescription: "" + variables: + sections-enabled: + type: json + description: "This property provides a lookup table of whether or not the given section should be enabled. If the section is enabled, it should be toggleable in the settings screen, and on by default." +toolbar-refactor-feature: + description: "This feature is for managing the roll out of the Toolbar refactor feature\n" + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "Enables the feature\n" + navigation_hint: + type: boolean + description: "If true, enables the navigation contextual hint.\n" + one_tap_new_tab: + type: boolean + description: "If true, enables the one tap new tab feature for users.\n" + unified_search: + type: boolean + description: "Enables the unified search feature\n" +tos-feature: + description: "This feature is for managing the roll out of the ToS (Term of Service) implementation\n" + hasExposure: true + exposureDescription: "" + variables: + status: + type: boolean + description: "Enables the feature\n" +tracking-protection-refactor: + description: "The Enhanced Tracking Protection refactor\n" + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "Whether the Enhanced Tracking Protection refactor is enabled or not\n" +zoom-feature: + description: "The configuration for the status of the zoom feature\n" + hasExposure: true + exposureDescription: "" + variables: + status: + type: boolean + description: "Whether the page zoom feature is enabled or not\n" diff --git a/experimenter/experimenter/features/manifests/ios/v134.1.0/release.fml.yaml b/experimenter/experimenter/features/manifests/ios/v134.1.0/release.fml.yaml new file mode 100644 index 0000000000..ac09191fd4 --- /dev/null +++ b/experimenter/experimenter/features/manifests/ios/v134.1.0/release.fml.yaml @@ -0,0 +1,1016 @@ +--- +version: 1.0.0 +about: + description: The root level Feature Manifest for Firefox for iOS +channels: + - release +features: + account-settings-redux-feature: + description: "This feature is for managing the roll out of the Account Settings Redux implementation\n" + variables: + enabled: + description: "Enables the feature\n" + type: Boolean + default: false + address-autofill-edit: + description: This property defines if the address editing is enabled in Settings + variables: + status: + description: "If true, we will allow user to edit the address" + type: Boolean + default: false + bookmark-refactor-feature: + description: "The Feature for managing the roll out of the Bookmark refactor feature\n" + variables: + enabled: + description: "Enables the bookmark refactor feature\n" + type: Boolean + default: false + contextual-hint-feature: + description: This set holds all features pertaining to contextual hints. + variables: + features-enabled: + description: "This property provides a lookup table of whether specific contextual hints are enabled.\n" + type: "Map" + default: + toolbar-hint: true + credit-card-autofill: + description: This property defines the credit card autofill feature + variables: + credit-card-autofill-status: + description: "If true, we will allow user to use the credit autofill feature" + type: Boolean + default: true + felt-privacy-feature: + description: The feature that enhances private browsing mode + variables: + felt-deletion-enabled: + description: "If true, enable Felt Deletion part of Felt Privacy" + type: Boolean + default: false + simplified-ui-enabled: + description: "If true, enable simplified UI part of Felt Privacy" + type: Boolean + default: false + firefox-suggest-feature: + description: Configuration for the Firefox Suggest feature. + variables: + available-suggestions-types: + description: "A map of suggestion types to booleans that indicate whether or not the provider should return suggestions of those types.\n" + type: "Map" + default: + amp: true + ampMobile: false + wikipedia: true + status: + description: "Whether the feature is enabled. When Firefox Suggest is enabled, Firefox will download and store new search suggestions in the background, and show additional Search settings to control which suggestions appear in the awesomebar. When Firefox Suggest is disabled, Firefox will not download new suggestions, and hide the additional Search settings.\n" + type: Boolean + default: false + general-app-features: + description: The feature that contains feature flags for the entire application + variables: + report-site-issue: + description: This property defines whether or not the feature is enabled + type: GeneralFeature + default: + status: false + glean-server-knobs: + description: A feature that provides server-side configurations for Glean metrics (aka Server Knobs). + variables: + metrics-enabled: + description: "A map of metric base-identifiers to booleans representing the state of the 'enabled' flag for that metric." + type: "Map" + default: {} + homepage-rebuild-feature: + description: "This feature is for managing the roll out of the Homepage rebuild feature\n" + variables: + enabled: + description: "If true, enables the feature\n" + type: Boolean + default: false + homescreenFeature: + description: The homescreen that the user goes to when they press home or new tab. + variables: + prefer-switch-to-open-tab: + description: "Enables the feature to automatically switch to an existing tab with the same content instead of opening a new one.\n" + type: Boolean + default: false + sections-enabled: + description: "This property provides a lookup table of whether or not the given section should be enabled. If the section is enabled, it should be toggleable in the settings screen, and on by default.\n" + type: "Map" + default: + jump-back-in: true + recent-explorations: false + login-autofill: + description: This property defines the login autofill feature for automatically filling in usernames and passwords. + variables: + login-autofill-status: + description: "If true, allows the user to use the login autofill feature for usernames and passwords." + type: Boolean + default: true + menu-refactor-feature: + description: "Controls the menu refactor feature\n" + variables: + enabled: + description: "Controls which menu users will see\n" + type: Boolean + default: false + menu-hint: + description: "If true, enables the menu contextual hint.\n" + type: Boolean + default: false + messaging: + description: "The in-app messaging system\n" + documentation: + - name: User documentation + url: "https://experimenter.info/messaging/mobile-messaging" + contacts: + - jhugman@mozilla.com + - brennie@mozilla.com + - gbuciu@mozilla.com + - wteichmann@mozilla.com + events: + - "https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_shown" + - "https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_clicked" + - "https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_expired" + - "https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_dismissed" + - "https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_malformed" + variables: + actions: + description: A growable map of action URLs. + type: "Map" + default: + OPEN_SETTINGS: "://deep-link?url=settings/general" + OPEN_SETTINGS_NEW_TAB: "://deep-link?url=settings/newtab" + OPEN_SETTINGS_HOMESCREEN: "://deep-link?url=settings/homepage" + OPEN_SETTINGS_WALLPAPERS: "://deep-link?url=settings/wallpaper" + OPEN_SETTINGS_EMAIL: "://deep-link?url=settings/mailto" + OPEN_SETTINGS_SEARCH_ENGINE: "://deep-link?url=settings/search" + OPEN_SETTINGS_PRIVACY: "://deep-link?url=settings/clear-private-data" + OPEN_SETTINGS_FXA: "://deep-link?url=settings/fxa" + OPEN_SETTINGS_THEME: "://deep-link?url=settings/theme" + OPEN_URL: "://open-url" + VIEW_BOOKMARKS: "://deep-link?url=homepanel/bookmarks" + VIEW_TOP_SITES: "://deep-link?url=homepanel/top-sites" + VIEW_READING_LIST: "://deep-link?url=homepanel/reading-list" + VIEW_HISTORY: "://deep-link?url=homepanel/history" + VIEW_DOWNLOADS: "://deep-link?url=homepanel/downloads" + ENABLE_PRIVATE_BROWSING: "://deep-link?url=homepanel/new-private-tab" + OPEN_NEW_TAB: "://deep-link?url=homepanel/new-tab" + MAKE_DEFAULT_BROWSER: "://deep-link?url=default-browser/system-settings" + MAKE_DEFAULT_BROWSER_WITH_TUTORIAL: "://deep-link?url=default-browser/tutorial" + OPEN_SHARE_SHEET: "://share-sheet" + string-alias: ActionName + message-under-experiment: + description: "Deprecated. Please use \"experiment\": \"{experiment}\" instead." + type: Option + default: ~ + messages: + description: "A growable collection of messages, where the Key is the message identifier and the value is its associated MessageData.\n" + type: "Map" + default: + default-browser: + surface: new-tab-card + style: FALLBACK + trigger-if-all: + - SUPPORTS_DEFAULT_BROWSER + - ON_FOURTH_LAUNCH_THIS_YEAR + except-if-any: + - I_AM_DEFAULT_BROWSER + title: Default Browser/DefaultBrowserCard.Title + text: Default Browser/DefaultBrowserCard.Description + button-label: Default Browser/DefaultBrowserCard.Button.v2 + action: MAKE_DEFAULT_BROWSER_WITH_TUTORIAL + string-alias: MessageKey + on-control: + description: What should be displayed when a control message is selected. + type: ControlMessageBehavior + default: show-next-message + styles: + description: "A map of styles to configure message appearance.\n" + type: "Map" + default: + FALLBACK: + priority: 40 + max-display-count: 20 + DEFAULT: + priority: 50 + max-display-count: 5 + MICROSURVEY: + priority: 50 + max-display-count: 1 + NOTIFICATION: + priority: 50 + max-display-count: 1 + PERSISTENT: + priority: 50 + max-display-count: 20 + SURVEY: + priority: 55 + max-display-count: 10 + WARNING: + priority: 60 + max-display-count: 10 + URGENT: + priority: 100 + max-display-count: 10 + string-alias: StyleName + triggers: + description: "A collection of out the box trigger expressions. Each entry maps to a valid JEXL expression.\n" + type: "Map" + default: + ALWAYS: "true" + NEVER: "false" + USER_RECENTLY_INSTALLED: days_since_install < 7 + USER_RECENTLY_UPDATED: days_since_update < 7 && days_since_install != days_since_update + USER_TIER_ONE_COUNTRY: "('US' in locale || 'GB' in locale || 'CA' in locale || 'DE' in locale || 'FR' in locale)" + USER_EN_SPEAKER: "'en' in locale" + USER_ES_SPEAKER: "'es' in locale" + USER_DE_SPEAKER: "'de' in locale" + USER_FR_SPEAKER: "'fr' in locale" + DEVICE_ANDROID: "os == 'Android'" + DEVICE_IOS: "os == 'iOS'" + DAY_1_AFTER_INSTALL: days_since_install == 1 + DAY_2_AFTER_INSTALL: days_since_install == 2 + DAY_3_AFTER_INSTALL: days_since_install == 3 + DAY_4_AFTER_INSTALL: days_since_install == 4 + DAY_5_AFTER_INSTALL: days_since_install == 5 + MORE_THAN_24H_SINCE_INSTALLED_OR_UPDATED: days_since_update >= 1 + NOT_LAUNCHED_YESTERDAY: "'app_cycle.foreground'|eventLastSeen('Days', 1) > 1" + AFTER_THREE_LAUNCHES_THIS_WEEK: "'app_cycle.foreground'|eventSum('Weeks', 1, 0) >= 3" + I_AM_DEFAULT_BROWSER: is_default_browser + I_AM_NOT_DEFAULT_BROWSER: is_default_browser == false + SUPPORTS_DEFAULT_BROWSER: "os_version|versionCompare('14.!') >= 0" + INACTIVE_NEW_USER: is_inactive_new_user + ALLOWED_TIPS_NOTIFICATIONS: allowed_tips_notifications + FXA_CURRENTLY_SIGNED_IN: is_fxa_signed_in == true + SECOND_HOMEPAGE_VIEW: "'homepage_viewed'|eventSum('Years', 4, 0) >= 2" + ON_FOURTH_LAUNCH_THIS_YEAR: "'app_cycle.foreground'|eventSum('Years', 1, 0) > 3" + string-alias: TriggerName + ~~experiment: + description: Not to be set by experiment. + type: ExperimentSlug + default: "{experiment}" + string-alias: ExperimentSlug + allow-coenrollment: true + microsurvey-feature: + description: "A feature that shows the microsurvey for users to interact with and submit responses.\n" + variables: + enabled: + description: "If true, the feature is active.\n" + type: Boolean + default: false + native-error-page-feature: + description: "This feature is for managing the roll out of the native error page feature\n" + variables: + enabled: + description: "If true, the feature is active.\n" + type: Boolean + default: false + no_internet_connection_error: + description: "This feature is for managing the roll out of the no interet connection native error page feature\n" + type: Boolean + default: false + night-mode-feature: + description: "Describes the night mode feature's configuration\n" + variables: + enabled: + description: "Whether night mode is available for users or not\n" + type: Boolean + default: true + onboarding-framework-feature: + description: "The new onboarding framework feature that will allow onboarding to be experimentable through initial experiments.\n" + variables: + cards: + description: "The list of available cards for onboarding.\n" + type: "Map" + default: + welcome: + card-type: basic + order: 10 + title: Onboarding/Onboarding.Welcome.Title.TreatementA.v120 + body: Onboarding/Onboarding.Welcome.Description.TreatementA.v120 + image: welcome-globe + link: + title: Onboarding/Onboarding.Welcome.Link.Action.v114 + url: "https://www.mozilla.org/privacy/firefox/" + buttons: + primary: + title: Onboarding/Onboarding.Welcome.ActionTreatementA.v114 + action: open-instructions-popup + secondary: + title: Onboarding/Onboarding.Welcome.Skip.v114 + action: forward-one-card + instructions-popup: + title: Onboarding/DefaultBrowserPopup.Title.v114 + button-title: Onboarding/DefaultBrowserPopup.ButtonTitle.v114 + button-action: open-ios-fx-settings + instructions: + - Onboarding/DefaultBrowserPopup.FirstLabel.v114 + - Onboarding/DefaultBrowserPopup.SecondLabel.v114 + - Onboarding/DefaultBrowserPopup.ThirdLabel.v114 + onboarding-type: fresh-install + prerequisites: + - ALWAYS + notification-permissions: + card-type: basic + order: 30 + title: Onboarding/Onboarding.Notification.Title.v120 + body: Onboarding/Onboarding.Notification.Description.v120 + image: notifications + buttons: + primary: + title: Onboarding/Onboarding.Notification.TurnOnNotifications.Action.v114 + action: request-notifications + secondary: + title: Onboarding/Onboarding.Notification.Skip.Action.v115 + action: forward-one-card + onboarding-type: fresh-install + prerequisites: + - ALWAYS + sign-to-sync: + card-type: basic + order: 20 + title: Onboarding/Onboarding.Sync.Title.v120 + body: Onboarding/Onboarding.Sync.Description.v123 + image: sync-devices + buttons: + primary: + title: Onboarding/Onboarding.Sync.SignIn.Action.v114 + action: sync-sign-in + secondary: + title: Onboarding/Onboarding.Sync.Skip.Action.v114 + action: forward-one-card + onboarding-type: fresh-install + prerequisites: + - ALWAYS + customization-theme: + card-type: multiple-choice + order: 40 + title: Onboarding/Onboarding.Customization.Theme.Title.v123 + body: Onboarding/Onboarding.Customization.Theme.Description.v123 + image: themeing + buttons: + primary: + title: Onboarding/Onboarding.Customization.Theme.Continue.Action.v123 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Customization.Theme.System.Action.v123 + image: theme-system + action: theme-system-default + - title: Onboarding/Onboarding.Customization.Theme.Light.Action.v123 + image: theme-light + action: theme-light + - title: Onboarding/Onboarding.Customization.Theme.Dark.Action.v123 + image: theme-dark + action: theme-dark + onboarding-type: fresh-install + prerequisites: + - ALWAYS + customization-toolbar: + card-type: multiple-choice + order: 41 + title: Onboarding/Onboarding.Customization.Toolbar.Title.v123 + body: Onboarding/Onboarding.Customization.Toolbar.Description.v123 + image: toolbar + buttons: + primary: + title: Onboarding/Onboarding.Customization.Toolbar.Continue.Action.v123 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Customization.Toolbar.Top.Action.v123 + image: toolbar-top + action: toolbar-top + - title: Onboarding/Onboarding.Customization.Toolbar.Bottom.Action.v123 + image: toolbar-bottom + action: toolbar-bottom + onboarding-type: fresh-install + prerequisites: + - ALWAYS + update-welcome: + card-type: basic + order: 10 + title: Upgrade/Upgrade.Welcome.Title.v114 + body: Upgrade/Upgrade.Welcome.Description.v114 + image: welcome-globe + buttons: + primary: + title: Upgrade/Upgrade.Welcome.Action.v114 + action: forward-one-card + onboarding-type: upgrade + prerequisites: + - NEVER + update-sign-to-sync: + card-type: basic + order: 20 + title: Upgrade/Upgrade.SyncSign.Title.v114 + body: Upgrade/Upgrade.SyncSign.Description.v114 + image: sync-devices + buttons: + primary: + title: Upgrade/Upgrade.SyncSign.Action.v114 + action: sync-sign-in + secondary: + title: Onboarding/Onboarding.LaterAction.v114 + action: forward-one-card + onboarding-type: upgrade + prerequisites: + - NEVER + string-alias: NimbusOnboardingCardKey + conditions: + description: "A collection of out the box conditional expressions to be used in determining whether a card should show or not. Each entry maps to a valid JEXL expression.\n" + type: "Map" + default: + ALWAYS: "true" + NEVER: "false" + string-alias: ConditionName + dismissable: + description: "Whether or not the entire onboarding is dismissable by pressing an X at the top right corner of the screen.\n" + type: Boolean + default: true + password-generator-feature: + description: Password Generator Feature + variables: + enabled: + description: "If true, the password generator feature is enabled" + type: Boolean + default: false + pull-to-refresh-refactor-feature: + description: "The Feature flag to manage the roll out of the new pull to refresh feature.\n" + variables: + enabled: + description: "Enables the feature\n" + type: Boolean + default: false + redux-search-settings-feature: + description: "This feature is for managing the roll out of redux on the search settings screen\n" + variables: + enabled: + description: "Enables the feature\n" + type: Boolean + default: false + remote-tab-management: + description: "Features that let users manage tabs on other devices that are connected to the same Mozilla account.\n" + variables: + close-tabs-enabled: + description: "Whether the feature to close synced tabs is enabled. When enabled, this device will allow other devices to close tabs that are open on this device, and show a \"close\" button for tabs that are currently open on other supported devices in the synced tabs tray.\n" + type: Boolean + default: false + search: + description: "Configuring the functionality to do with search. This will be separated into smaller sub-features in later releases.\n" + variables: + awesome-bar: + description: Configuring the awesome bar. + type: AwesomeBar + default: + min-search-term: 3 + position: + is-bottom: true + is-position-feature-enabled: true + is-toolbar-cfr-on: false + search-highlights: false + use-page-content: false + sent-from-firefox-feature: + description: "Adds additional promo text to links shared to WhatsApp.\n" + variables: + enabled: + description: "Controls whether promo text is added to WhatsApp shares and an on/off toggle is added to Settings.\n" + type: Boolean + default: false + shopping2023: + description: "The configuration setting for the status of the Fakespot feature\n" + variables: + back_in_stock_reporting: + description: "If true, enables for users the reporting feature for products back in stock.\n" + type: Boolean + default: false + config: + description: "A Map of website configurations\n" + type: "Map" + default: + amazon: + productIdFromURLRegex: "(?:[\\\\/]|$|%2F)(?[A-Z0-9]{10})(?:[\\\\/]|$|\\\\#|\\\\?|%2F)" + validTLDs: + - com + - de + - fr + walmart: + productIdFromURLRegex: "\\\\/ip\\\\/(?:[A-Za-z0-9-]{1,320}\\\\/)?(?[0-9]{3,13})" + validTLDs: + - com + bestbuy: + productIdFromURLRegex: "\\\\/(?\\\\d+\\\\.p)" + validTLDs: + - com + product_ads: + description: "If true, enables the product advertisement feature, allowing users to see and interact with ads for various products.\n" + type: Boolean + default: false + relay: + description: "Configurable relay URL for production environment\n" + type: String + default: "https://mozilla-ohttp-fakespot.fastly-edge.com/" + status: + description: "Whether the Fakespot feature is enabled or disabled\n" + type: Boolean + default: false + splash-screen: + description: "A feature that extends splash screen duration, allowing additional data fetching time for the app's initial run.\n" + variables: + enabled: + description: "If true, the feature is active.\n" + type: Boolean + default: false + maximum_duration_ms: + description: "The maximum amount of time in milliseconds the splashscreen will be visible while waiting for initialization calls to complete.\n" + type: Int + default: 0 + spotlight-search: + description: Add pages as items findable with Spotlight. + variables: + enabled: + description: "If this is true, then on each page load adds a new item to Spotlight." + type: Boolean + default: false + icon-type: + description: "The icon that is displayed next to the item in the search results. If this is `null`, then no icon is displayed.\n" + type: Option + default: letter + keep-for-days: + description: "Number of days to keep the item before automatic deletion. If this is left `null`, then it is left to iOS's default.\n" + type: Option + default: ~ + searchable-content: + description: "The text content that is made searchable. If this is `null` then no additional content is used, and only the title and URL will be used.\n" + type: Option + default: text-excerpt + tabTrayFeature: + description: The tab tray screen that the user goes to when they open the tab tray. + variables: + sections-enabled: + description: "This property provides a lookup table of whether or not the given section should be enabled. If the section is enabled, it should be toggleable in the settings screen, and on by default." + type: "Map" + default: + inactive-tabs: true + toolbar-refactor-feature: + description: "This feature is for managing the roll out of the Toolbar refactor feature\n" + variables: + enabled: + description: "Enables the feature\n" + type: Boolean + default: false + navigation_hint: + description: "If true, enables the navigation contextual hint.\n" + type: Boolean + default: false + one_tap_new_tab: + description: "If true, enables the one tap new tab feature for users.\n" + type: Boolean + default: false + unified_search: + description: "Enables the unified search feature\n" + type: Boolean + default: false + tos-feature: + description: "This feature is for managing the roll out of the ToS (Term of Service) implementation\n" + variables: + status: + description: "Enables the feature\n" + type: Boolean + default: false + tracking-protection-refactor: + description: "The Enhanced Tracking Protection refactor\n" + variables: + enabled: + description: "Whether the Enhanced Tracking Protection refactor is enabled or not\n" + type: Boolean + default: false + zoom-feature: + description: "The configuration for the status of the zoom feature\n" + variables: + status: + description: "Whether the page zoom feature is enabled or not\n" + type: Boolean + default: true +enums: + ContextualHint: + description: The identifiers for a individual contextual hints. + variants: + toolbar-hint: + description: The contextual hint bubble that appears to provide a hint about the toolbar. + ControlMessageBehavior: + description: An enum to influence what should be displayed when a control message is selected. + variants: + show-next-message: + description: The next eligible message should be shown. + show-none: + description: The surface should show no message. + HomeScreenSection: + description: The identifiers for the sections of the homescreen. + variants: + jump-back-in: + description: The tabs the user was looking immediately before being interrupted. + recent-explorations: + description: The tab groups + IconType: + description: "The icon that will be added to the item in the device's search engine." + variants: + favicon: + description: The favicon of the page + letter: + description: An icon generated from the first letter of the base domain. + screenshot: + description: A screenshot of the page at load time. + MessageSurfaceId: + description: "For messaging, we would like to have a message tell us which surface its associated with. This is a label that matches across both Android and iOS.\n" + variants: + Unknown: + description: A message has NOT declared its target surface. + microsurvey: + description: This is a microsurvey that appears on top of the bottom toolbar to the user. + new-tab-card: + description: This is the card that appears at the top on the Firefox Home Page. + notification: + description: This is a local notification send to the user periodically with tips and updates. + survey: + description: This is a full-page that appears providing a survey to the user. + NimbusOnboardingHeaderImage: + description: "The identifiers for the different images available for cards in onboarding\n" + variants: + customize-firefox: + description: "Corresponding to the fox window image\n" + notifications: + description: "Corresponding to the notifications image\n" + notifications-ctd: + description: "Corresponding to the notifications image for CTD\n" + search-widget: + description: "Corresponding to the fox search widget image\n" + set-default-steps: + description: "Corresponding to the set to default steps image\n" + set-to-dock: + description: "Corresponding to the set to dock image\n" + sync-devices: + description: "Corresponding to the sync-devices image\n" + sync-devices-ctd: + description: "Corresponding to the sync image for CTD\n" + themeing: + description: "Corresponding to the fox world image\n" + toolbar: + description: "Corresponding to the fox world image\n" + welcome-ctd: + description: "Corresponding to the welcome image for CTD\n" + welcome-globe: + description: "Corresponding to the fox world image\n" + NimbusOnboardingMultipleChoiceButtonImage: + description: "The identifiers for the different images available for multiple choice buttons in onboarding\n" + variants: + theme-dark: + description: "Corresponding to the dark theme\n" + theme-light: + description: "Corresponding to the light theme\n" + theme-system: + description: "Corresponding to the system theme\n" + toolbar-bottom: + description: "Corresponding to the toolbar on the bottom\n" + toolbar-top: + description: "Corresponding to the toolbar on top\n" + OnboardingActions: + description: "The identifiers for the different actions available for cards in onboarding\n" + variants: + end-onboarding: + description: "Will end the onboarding on a set card\n" + forward-one-card: + description: "Will take the user to the next card\n" + forward-three-card: + description: "Will take the user to the next card\n" + forward-two-card: + description: "Will take the user to the next card\n" + open-instructions-popup: + description: "Will open up a popup with instructions for something\n" + open-ios-fx-settings: + description: "Will take the user to the default browser settings in the iOS system settings\n" + read-privacy-policy: + description: "Will open a webview where the user can read the privacy policy\n" + request-notifications: + description: "Will request to allow notifications from the user\n" + set-default-browser: + description: "Will send the user to settings to set Firefox as their default browser and advance to next card\n" + sync-sign-in: + description: "Will take the user to the sync sign in flow\n" + OnboardingCardType: + description: "The identifiers for the different types of onboarding cards.\n" + variants: + basic: + description: "Corresponding to basic info onboarding cards\n" + multiple-choice: + description: "Corresponding to onboarding cards with multiple choice buttons\n" + OnboardingInstructionsPopupActions: + description: "The identifiers for the different actions available for the insturction card in onboarding\n" + variants: + dismiss: + description: "Will dismiss the popup\n" + dismiss-and-next-card: + description: "Will dismiss the popup and move to the next card\n" + open-ios-fx-settings: + description: "Will take the user to the default browser settings in the iOS system settings\n" + OnboardingMultipleChoiceAction: + description: "The identifiers for the different actions available for cards in onboarding\n" + variants: + theme-dark: + description: "Will will set the theme to dark mode\n" + theme-light: + description: "Will set the theme to light mode\n" + theme-system-default: + description: "Will set the theme to use the system theme\n" + toolbar-bottom: + description: "Will set the toolbar on the bottom\n" + toolbar-top: + description: "Will set the toolbar on the top\n" + OnboardingType: + description: "The identifiers for the different types of onboarding cards.\n" + variants: + fresh-install: + description: "Corresponding to onboarding cards that are for new users\n" + upgrade: + description: "Corresponding to onboarding cards that are for users who have updated\n" + PageContent: + description: "The page content that will be added as an item in the device's search engine." + variants: + html-content: + description: Use all the page as HTML + text-content: + description: Use all the page as text + text-excerpt: + description: Only use the first paragraph + SuggestionType: + description: The type of a Firefox Suggest search suggestion. + variants: + amp: + description: A Firefox Suggestion for desktop from adMarketplace. + ampMobile: + description: A Firefox Suggestion specifically for mobile from adMarketplace. + wikipedia: + description: A Firefox Suggestion for a Wikipedia page. + TabTraySection: + description: The identifiers for the sections of the tab tray. + variants: + inactive-tabs: + description: Tabs that have been automatically closed for the user. +objects: + AwesomeBar: + description: "A configuration option for the awesome bar. Part of the `search` feature." + fields: + min-search-term: + description: The minimum number of characters that the user types before searching in the page. + type: Int + default: 3 + position: + description: "This property defines whether or not the feature is enabled, and the position of the search bar\n" + type: SearchBarPositionFeature + default: + is-position-feature-enabled: true + is-bottom: true + is-toolbar-cfr-on: true + search-highlights: + description: Whether or not search highlights are enabled + type: Boolean + default: false + use-page-content: + description: "Search in the open tab's text content when typing." + type: Boolean + default: false + GeneralFeature: + description: The configuration for the a feature that can be enabled or disabled + fields: + status: + description: Whether or not the feature is enabled + type: Boolean + default: false + MessageData: + description: "An object to describe a message. It uses human readable strings to describe the triggers, action and style of the message as well as the text of the message and call to action.\n" + fields: + action: + description: "The name of a deeplink URL to be opened if the button is clicked.\n" + type: Option + default: ~ + action-params: + description: Query parameters appended to the deeplink action URL + type: "Map" + default: {} + button-label: + description: "The text on the button. If no text is present, the whole message is clickable.\n" + type: Option + default: ~ + except-if-any: + description: "A list of strings corresponding to targeting expressions. If any of these expressions evaluate to `true`, the message will not be eligible.\n" + type: List + default: [] + experiment: + description: The experiment slug that this message is involved in. + type: Option + default: ~ + is-control: + description: "Indicates if this message is the control message, if true shouldn't be displayed" + type: Boolean + default: false + microsurveyConfig: + description: Optional configuration data for a microsurvey. + type: Option + default: ~ + style: + description: "The style as described in a `StyleData` from the styles table.\n" + type: StyleName + default: DEFAULT + surface: + description: Each message will tell us the surface it is targeting with this. + type: MessageSurfaceId + default: Unknown + text: + description: The message text displayed to the user + type: Text + default: "" + title: + description: The title text displayed to the user + type: Option + default: ~ + trigger-if-all: + description: "A list of strings corresponding to targeting expressions. All named expressions must evaluate to true if the message is to be eligible to be shown.\n" + type: List + default: + - ALWAYS + MicrosurveyConfig: + description: "Attributes relating to microsurvey messaging.\n" + fields: + icon: + description: The asset name in our bundle used as the icon shown in the survey. + type: Image + default: lightbulbLarge + options: + description: The list of survey options to present to the user. + type: List + default: [] + utm-content: + description: The name used to provide as the utm_content parameter for the privacy notice. + type: Option + default: ~ + NimbusOnboardingButton: + description: "A group of properties describing the attributes of a card.\n" + fields: + action: + description: "The action the button should take. The default for this will be \"forward-one-card\"\n" + type: OnboardingActions + default: forward-one-card + title: + description: "The text of the button title. This should never be defaulted.\n" + type: Text + default: "" + NimbusOnboardingButtons: + description: "A set of buttons for the card. There can be up to two, but there must be at least one.\n" + fields: + primary: + description: "The primary button for the card. This must exist.\n" + type: NimbusOnboardingButton + default: + title: Primary Button + action: forward-one-card + secondary: + description: "A secondary, optional, button for the card.\n" + type: Option + default: ~ + NimbusOnboardingCardData: + description: "A group of properties describing the attributes of a card.\n" + fields: + body: + description: "The body text dispalyed on the card, in less prominent text. This should never be defaulted.\n" + type: Text + default: "" + buttons: + description: "The set of buttons associated with the card.\n" + type: NimbusOnboardingButtons + default: + primary: + title: Onboarding/Onboarding.Sync.Skip.Action.v114 + action: forward-one-card + secondary: ~ + card-type: + description: "The type of onboarding this card should be shown in, whether it a fresh install or an update. The default is fresh-install.\n" + type: OnboardingCardType + default: basic + disqualifiers: + description: "A list of ConditionName strings corresponding to targeting expressions. The card will not be shown if any expression is `true`.\n" + type: List + default: [] + image: + description: "The image that should be dispalyed on the card.\n" + type: NimbusOnboardingHeaderImage + default: welcome-globe + instructions-popup: + description: "The object describing the specific instruction popup button for a card. If left empty, the card will have no instruction popup information\n" + type: Option + default: ~ + link: + description: "The object describing the link button for a card. If left empty, the card will have no link.\n" + type: Option + default: ~ + multiple-choice-buttons: + description: "A list of multiple choice buttons that the card will display\n" + type: List + default: [] + onboarding-type: + description: "The type of onboarding this card should be shown in, whether it a fresh install or an update. The default is fresh-install.\n" + type: OnboardingType + default: fresh-install + order: + description: "The place in the order where the card will be found. The feature layer will then sort the cards based on this field.\n" + type: Int + default: 10 + prerequisites: + description: "A list of ConditionName strings corresponding to targeting expressions. The card will be shown if all expressions `true` and if no expressions in the `disqualifiers` table are true, or if the `disqualifiers` table is empty.\n" + type: List + default: [] + title: + description: "The title displayed on the card, in prominent, bolded text. This should never be defaulted.\n" + type: Text + default: "" + NimbusOnboardingInstructionPopup: + description: "The object outlining the content of the instruction card.\n" + fields: + button-action: + description: "The action the button should have. Default is `dismiss-and-next-card`\n" + type: OnboardingInstructionsPopupActions + default: dismiss-and-next-card + button-title: + description: "The title the button should have. This should never be defaulted.\n" + type: Text + default: "" + instructions: + description: "A list of instructions, either as free text, or as Text identifiers.\n" + type: List + default: [] + title: + description: "The text of the popup. This should never be defaulted.\n" + type: Text + default: "" + NimbusOnboardingLink: + description: "A group of properties describing the attributes for the active link on a card\n" + fields: + title: + description: "The text of the link title.\n" + type: Text + default: Onboarding/Onboarding.Welcome.Link.Action.v114 + url: + description: "The url that the link will lead to.\n" + type: String + default: "https://www.mozilla.org/privacy/firefox/" + NimbusOnboardingMultipleChoiceButton: + description: "A group of properties describing the attributes of a multiple choice button on a card\n" + fields: + action: + description: "The action the button should take. The default for this will be \"theme-system-default\"\n" + type: OnboardingMultipleChoiceAction + default: theme-system-default + image: + description: "The text of the button title. This should never be defaulted.\n" + type: NimbusOnboardingMultipleChoiceButtonImage + default: theme-system + title: + description: "The text of the button title. This should never be defaulted.\n" + type: Text + default: "" + SearchBarPositionFeature: + description: The configuration for the bottom search bar on the homescreen + fields: + is-bottom: + description: Whether or not the default position is at the bottom + type: Boolean + default: true + is-position-feature-enabled: + description: Whether or not the feature is enabled + type: Boolean + default: true + is-toolbar-cfr-on: + description: Whether or not the toolbar CFR shows. This is a temporary hack for Nimbus + type: Boolean + default: true + StyleData: + description: "A group of properities (predominantly visual) to the describe style of the message.\n" + fields: + max-display-count: + description: "How many sessions will this message be shown to the user before it is expired.\n" + type: Int + default: 5 + priority: + description: "The importance of this message. 0 is not very important, 100 is very important.\n" + type: Int + default: 50 + WebsiteConfig: + description: "It represents a configuration for different e-commerce websites and includes regular expressions for extracting product IDs from their respective URLs\n" + fields: + productIdFromURLRegex: + description: "It represents the product ID extracted from a regex query\n" + type: String + default: "" + validTLDs: + description: "Valid Top Level Domains\n" + type: List + default: [] diff --git a/experimenter/experimenter/features/manifests/ios/v136.0.0/beta.fml.yaml b/experimenter/experimenter/features/manifests/ios/v136.0.0/beta.fml.yaml new file mode 100644 index 0000000000..1900fa7de5 --- /dev/null +++ b/experimenter/experimenter/features/manifests/ios/v136.0.0/beta.fml.yaml @@ -0,0 +1,1052 @@ +--- +version: 1.0.0 +about: + description: The root level Feature Manifest for Firefox for iOS +channels: + - beta +features: + account-settings-redux-feature: + description: "This feature is for managing the roll out of the Account Settings Redux implementation\n" + variables: + enabled: + description: "Enables the feature\n" + type: Boolean + default: false + address-autofill-edit: + description: This property defines if the address editing is enabled in Settings + variables: + status: + description: "If true, we will allow user to edit the address" + type: Boolean + default: false + bookmark-refactor-feature: + description: "The Feature for managing the roll out of the Bookmark refactor feature\n" + variables: + enabled: + description: "Enables the bookmark refactor feature\n" + type: Boolean + default: false + contextual-hint-feature: + description: This set holds all features pertaining to contextual hints. + variables: + features-enabled: + description: "This property provides a lookup table of whether specific contextual hints are enabled.\n" + type: "Map" + default: + toolbar-hint: true + credit-card-autofill: + description: This property defines the credit card autofill feature + variables: + credit-card-autofill-status: + description: "If true, we will allow user to use the credit autofill feature" + type: Boolean + default: true + felt-privacy-feature: + description: The feature that enhances private browsing mode + variables: + felt-deletion-enabled: + description: "If true, enable Felt Deletion part of Felt Privacy" + type: Boolean + default: false + simplified-ui-enabled: + description: "If true, enable simplified UI part of Felt Privacy" + type: Boolean + default: false + firefox-suggest-feature: + description: Configuration for the Firefox Suggest feature. + variables: + available-suggestions-types: + description: "A map of suggestion types to booleans that indicate whether or not the provider should return suggestions of those types.\n" + type: "Map" + default: + amp: true + ampMobile: false + wikipedia: true + status: + description: "Whether the feature is enabled. When Firefox Suggest is enabled, Firefox will download and store new search suggestions in the background, and show additional Search settings to control which suggestions appear in the awesomebar. When Firefox Suggest is disabled, Firefox will not download new suggestions, and hide the additional Search settings.\n" + type: Boolean + default: false + general-app-features: + description: The feature that contains feature flags for the entire application + variables: + report-site-issue: + description: This property defines whether or not the feature is enabled + type: GeneralFeature + default: + status: true + glean-server-knobs: + description: A feature that provides server-side configurations for Glean metrics (aka Server Knobs). + variables: + metrics-enabled: + description: "A map of metric base-identifiers to booleans representing the state of the 'enabled' flag for that metric." + type: "Map" + default: {} + homepage-rebuild-feature: + description: "This feature is for managing the roll out of the Homepage rebuild feature\n" + variables: + enabled: + description: "If true, enables the feature\n" + type: Boolean + default: false + homescreenFeature: + description: The homescreen that the user goes to when they press home or new tab. + variables: + prefer-switch-to-open-tab: + description: "Enables the feature to automatically switch to an existing tab with the same content instead of opening a new one.\n" + type: Boolean + default: false + sections-enabled: + description: "This property provides a lookup table of whether or not the given section should be enabled. If the section is enabled, it should be toggleable in the settings screen, and on by default.\n" + type: "Map" + default: + jump-back-in: true + recent-explorations: false + login-autofill: + description: This property defines the login autofill feature for automatically filling in usernames and passwords. + variables: + login-autofill-status: + description: "If true, allows the user to use the login autofill feature for usernames and passwords." + type: Boolean + default: true + menu-refactor-feature: + description: "Controls the menu refactor feature\n" + variables: + enabled: + description: "Controls which menu users will see\n" + type: Boolean + default: false + menu-hint: + description: "If true, enables the menu contextual hint.\n" + type: Boolean + default: false + messaging: + description: "The in-app messaging system\n" + documentation: + - name: User documentation + url: "https://experimenter.info/messaging/mobile-messaging" + contacts: + - jhugman@mozilla.com + - brennie@mozilla.com + - gbuciu@mozilla.com + - wteichmann@mozilla.com + events: + - "https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_shown" + - "https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_clicked" + - "https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_expired" + - "https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_dismissed" + - "https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_malformed" + variables: + actions: + description: A growable map of action URLs. + type: "Map" + default: + OPEN_SETTINGS: "://deep-link?url=settings/general" + OPEN_SETTINGS_NEW_TAB: "://deep-link?url=settings/newtab" + OPEN_SETTINGS_HOMESCREEN: "://deep-link?url=settings/homepage" + OPEN_SETTINGS_WALLPAPERS: "://deep-link?url=settings/wallpaper" + OPEN_SETTINGS_EMAIL: "://deep-link?url=settings/mailto" + OPEN_SETTINGS_SEARCH_ENGINE: "://deep-link?url=settings/search" + OPEN_SETTINGS_PRIVACY: "://deep-link?url=settings/clear-private-data" + OPEN_SETTINGS_FXA: "://deep-link?url=settings/fxa" + OPEN_SETTINGS_THEME: "://deep-link?url=settings/theme" + OPEN_URL: "://open-url" + VIEW_BOOKMARKS: "://deep-link?url=homepanel/bookmarks" + VIEW_TOP_SITES: "://deep-link?url=homepanel/top-sites" + VIEW_READING_LIST: "://deep-link?url=homepanel/reading-list" + VIEW_HISTORY: "://deep-link?url=homepanel/history" + VIEW_DOWNLOADS: "://deep-link?url=homepanel/downloads" + ENABLE_PRIVATE_BROWSING: "://deep-link?url=homepanel/new-private-tab" + OPEN_NEW_TAB: "://deep-link?url=homepanel/new-tab" + MAKE_DEFAULT_BROWSER: "://deep-link?url=default-browser/system-settings" + MAKE_DEFAULT_BROWSER_WITH_TUTORIAL: "://deep-link?url=default-browser/tutorial" + OPEN_SHARE_SHEET: "://share-sheet" + string-alias: ActionName + message-under-experiment: + description: "Deprecated. Please use \"experiment\": \"{experiment}\" instead." + type: Option + default: ~ + messages: + description: "A growable collection of messages, where the Key is the message identifier and the value is its associated MessageData.\n" + type: "Map" + default: + default-browser: + surface: new-tab-card + style: FALLBACK + trigger-if-all: + - SUPPORTS_DEFAULT_BROWSER + - ON_FOURTH_LAUNCH_THIS_YEAR + except-if-any: + - I_AM_DEFAULT_BROWSER + title: Default Browser/DefaultBrowserCard.Title + text: Default Browser/DefaultBrowserCard.Description + button-label: Default Browser/DefaultBrowserCard.Button.v2 + action: MAKE_DEFAULT_BROWSER_WITH_TUTORIAL + homepage-microsurvey-message: + surface: microsurvey + style: MICROSURVEY + trigger-if-all: + - SECOND_HOMEPAGE_VIEW + title: Microsurvey/Microsurvey.Prompt.TitleLabel.v127 + text: How satisfied are you with your Firefox homepage? + button-label: Microsurvey/Microsurvey.Prompt.Button.v127 + microsurveyConfig: + utm-content: homepage + icon: homeLarge + options: + - Microsurvey/Microsurvey.Survey.Options.VerySatisfied.v132 + - Microsurvey/Microsurvey.Survey.Options.Satisfied.v132 + - Microsurvey/Microsurvey.Survey.Options.Neutral.v132 + - Microsurvey/Microsurvey.Survey.Options.Dissatisfied.v132 + - Microsurvey/Microsurvey.Survey.Options.VeryDissatisfied.v132 + - Microsurvey/Microsurvey.Survey.Options.NotApplicable.v132 + string-alias: MessageKey + on-control: + description: What should be displayed when a control message is selected. + type: ControlMessageBehavior + default: show-next-message + styles: + description: "A map of styles to configure message appearance.\n" + type: "Map" + default: + FALLBACK: + priority: 40 + max-display-count: 20 + DEFAULT: + priority: 50 + max-display-count: 5 + MICROSURVEY: + priority: 50 + max-display-count: 1 + NOTIFICATION: + priority: 50 + max-display-count: 1 + PERSISTENT: + priority: 50 + max-display-count: 20 + SURVEY: + priority: 55 + max-display-count: 10 + WARNING: + priority: 60 + max-display-count: 10 + URGENT: + priority: 100 + max-display-count: 10 + string-alias: StyleName + triggers: + description: "A collection of out the box trigger expressions. Each entry maps to a valid JEXL expression.\n" + type: "Map" + default: + ALWAYS: "true" + NEVER: "false" + USER_RECENTLY_INSTALLED: days_since_install < 7 + USER_RECENTLY_UPDATED: days_since_update < 7 && days_since_install != days_since_update + USER_TIER_ONE_COUNTRY: "('US' in locale || 'GB' in locale || 'CA' in locale || 'DE' in locale || 'FR' in locale)" + USER_EN_SPEAKER: "'en' in locale" + USER_ES_SPEAKER: "'es' in locale" + USER_DE_SPEAKER: "'de' in locale" + USER_FR_SPEAKER: "'fr' in locale" + DEVICE_ANDROID: "os == 'Android'" + DEVICE_IOS: "os == 'iOS'" + DAY_1_AFTER_INSTALL: days_since_install == 1 + DAY_2_AFTER_INSTALL: days_since_install == 2 + DAY_3_AFTER_INSTALL: days_since_install == 3 + DAY_4_AFTER_INSTALL: days_since_install == 4 + DAY_5_AFTER_INSTALL: days_since_install == 5 + MORE_THAN_24H_SINCE_INSTALLED_OR_UPDATED: days_since_update >= 1 + NOT_LAUNCHED_YESTERDAY: "'app_cycle.foreground'|eventLastSeen('Days', 1) > 1" + AFTER_THREE_LAUNCHES_THIS_WEEK: "'app_cycle.foreground'|eventSum('Weeks', 1, 0) >= 3" + I_AM_DEFAULT_BROWSER: is_default_browser + I_AM_NOT_DEFAULT_BROWSER: is_default_browser == false + SUPPORTS_DEFAULT_BROWSER: "os_version|versionCompare('14.!') >= 0" + INACTIVE_NEW_USER: is_inactive_new_user + ALLOWED_TIPS_NOTIFICATIONS: allowed_tips_notifications + FXA_CURRENTLY_SIGNED_IN: is_fxa_signed_in == true + SECOND_HOMEPAGE_VIEW: "'homepage_viewed'|eventSum('Years', 4, 0) >= 2" + ON_FOURTH_LAUNCH_THIS_YEAR: "'app_cycle.foreground'|eventSum('Years', 1, 0) > 3" + string-alias: TriggerName + ~~experiment: + description: Not to be set by experiment. + type: ExperimentSlug + default: "{experiment}" + string-alias: ExperimentSlug + allow-coenrollment: true + microsurvey-feature: + description: "A feature that shows the microsurvey for users to interact with and submit responses.\n" + variables: + enabled: + description: "If true, the feature is active.\n" + type: Boolean + default: false + native-error-page-feature: + description: "This feature is for managing the roll out of the native error page feature\n" + variables: + enabled: + description: "If true, the feature is active.\n" + type: Boolean + default: false + no_internet_connection_error: + description: "This feature is for managing the roll out of the no interet connection native error page feature\n" + type: Boolean + default: false + night-mode-feature: + description: "Describes the night mode feature's configuration\n" + variables: + enabled: + description: "Whether night mode is available for users or not\n" + type: Boolean + default: true + onboarding-framework-feature: + description: "The new onboarding framework feature that will allow onboarding to be experimentable through initial experiments.\n" + variables: + cards: + description: "The list of available cards for onboarding.\n" + type: "Map" + default: + welcome: + card-type: basic + order: 10 + title: Onboarding/Onboarding.Welcome.Title.TreatementA.v120 + body: Onboarding/Onboarding.Welcome.Description.TreatementA.v120 + image: welcome-globe + link: + title: Onboarding/Onboarding.Welcome.Link.Action.v114 + url: "https://www.mozilla.org/privacy/firefox/" + buttons: + primary: + title: Onboarding/Onboarding.Welcome.ActionTreatementA.v114 + action: open-instructions-popup + secondary: + title: Onboarding/Onboarding.Welcome.Skip.v114 + action: forward-one-card + instructions-popup: + title: Onboarding/DefaultBrowserPopup.Title.v114 + button-title: Onboarding/DefaultBrowserPopup.ButtonTitle.v114 + button-action: open-ios-fx-settings + instructions: + - Onboarding/DefaultBrowserPopup.FirstLabel.v114 + - Onboarding/DefaultBrowserPopup.SecondLabel.v114 + - Onboarding/DefaultBrowserPopup.ThirdLabel.v114 + onboarding-type: fresh-install + prerequisites: + - ALWAYS + notification-permissions: + card-type: basic + order: 30 + title: Onboarding/Onboarding.Notification.Title.v120 + body: Onboarding/Onboarding.Notification.Description.v120 + image: notifications + buttons: + primary: + title: Onboarding/Onboarding.Notification.TurnOnNotifications.Action.v114 + action: request-notifications + secondary: + title: Onboarding/Onboarding.Notification.Skip.Action.v115 + action: forward-one-card + onboarding-type: fresh-install + prerequisites: + - ALWAYS + sign-to-sync: + card-type: basic + order: 20 + title: Onboarding/Onboarding.Sync.Title.v120 + body: Onboarding/Onboarding.Sync.Description.v123 + image: sync-devices + buttons: + primary: + title: Onboarding/Onboarding.Sync.SignIn.Action.v114 + action: sync-sign-in + secondary: + title: Onboarding/Onboarding.Sync.Skip.Action.v114 + action: forward-one-card + onboarding-type: fresh-install + prerequisites: + - ALWAYS + customization-theme: + card-type: multiple-choice + order: 40 + title: Onboarding/Onboarding.Customization.Theme.Title.v123 + body: Onboarding/Onboarding.Customization.Theme.Description.v123 + image: themeing + buttons: + primary: + title: Onboarding/Onboarding.Customization.Theme.Continue.Action.v123 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Customization.Theme.System.Action.v123 + image: theme-system + action: theme-system-default + - title: Onboarding/Onboarding.Customization.Theme.Light.Action.v123 + image: theme-light + action: theme-light + - title: Onboarding/Onboarding.Customization.Theme.Dark.Action.v123 + image: theme-dark + action: theme-dark + onboarding-type: fresh-install + prerequisites: + - ALWAYS + customization-toolbar: + card-type: multiple-choice + order: 41 + title: Onboarding/Onboarding.Customization.Toolbar.Title.v123 + body: Onboarding/Onboarding.Customization.Toolbar.Description.v123 + image: toolbar + buttons: + primary: + title: Onboarding/Onboarding.Customization.Toolbar.Continue.Action.v123 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Customization.Toolbar.Top.Action.v123 + image: toolbar-top + action: toolbar-top + - title: Onboarding/Onboarding.Customization.Toolbar.Bottom.Action.v123 + image: toolbar-bottom + action: toolbar-bottom + onboarding-type: fresh-install + prerequisites: + - ALWAYS + update-welcome: + card-type: basic + order: 10 + title: Upgrade/Upgrade.Welcome.Title.v114 + body: Upgrade/Upgrade.Welcome.Description.v114 + image: welcome-globe + buttons: + primary: + title: Upgrade/Upgrade.Welcome.Action.v114 + action: forward-one-card + onboarding-type: upgrade + prerequisites: + - NEVER + update-sign-to-sync: + card-type: basic + order: 20 + title: Upgrade/Upgrade.SyncSign.Title.v114 + body: Upgrade/Upgrade.SyncSign.Description.v114 + image: sync-devices + buttons: + primary: + title: Upgrade/Upgrade.SyncSign.Action.v114 + action: sync-sign-in + secondary: + title: Onboarding/Onboarding.LaterAction.v114 + action: forward-one-card + onboarding-type: upgrade + prerequisites: + - NEVER + string-alias: NimbusOnboardingCardKey + conditions: + description: "A collection of out the box conditional expressions to be used in determining whether a card should show or not. Each entry maps to a valid JEXL expression.\n" + type: "Map" + default: + ALWAYS: "true" + NEVER: "false" + string-alias: ConditionName + dismissable: + description: "Whether or not the entire onboarding is dismissable by pressing an X at the top right corner of the screen.\n" + type: Boolean + default: true + password-generator-feature: + description: Password Generator Feature + variables: + enabled: + description: "If true, the password generator feature is enabled" + type: Boolean + default: false + pull-to-refresh-refactor-feature: + description: "The Feature flag to manage the roll out of the new pull to refresh feature.\n" + variables: + enabled: + description: "Enables the feature\n" + type: Boolean + default: true + redux-search-settings-feature: + description: "This feature is for managing the roll out of redux on the search settings screen\n" + variables: + enabled: + description: "Enables the feature\n" + type: Boolean + default: false + remote-tab-management: + description: "Features that let users manage tabs on other devices that are connected to the same Mozilla account.\n" + variables: + close-tabs-enabled: + description: "Whether the feature to close synced tabs is enabled. When enabled, this device will allow other devices to close tabs that are open on this device, and show a \"close\" button for tabs that are currently open on other supported devices in the synced tabs tray.\n" + type: Boolean + default: false + search: + description: "Configuring the functionality to do with search. This will be separated into smaller sub-features in later releases.\n" + variables: + awesome-bar: + description: Configuring the awesome bar. + type: AwesomeBar + default: + min-search-term: 3 + position: + is-bottom: false + is-position-feature-enabled: true + is-toolbar-cfr-on: false + search-highlights: false + use-page-content: false + sent-from-firefox-feature: + description: "Adds additional promo text to links shared to WhatsApp.\n" + variables: + enabled: + description: "Controls whether promo text is added to WhatsApp shares and an on/off toggle is added to Settings.\n" + type: Boolean + default: false + isTreatmentA: + description: "If true, shares the treatment A text. If false, shares the treatment B text.\n" + type: Boolean + default: true + shopping2023: + description: "The configuration setting for the status of the Fakespot feature\n" + variables: + back_in_stock_reporting: + description: "If true, enables for users the reporting feature for products back in stock.\n" + type: Boolean + default: false + config: + description: "A Map of website configurations\n" + type: "Map" + default: + amazon: + productIdFromURLRegex: "(?:[\\\\/]|$|%2F)(?[A-Z0-9]{10})(?:[\\\\/]|$|\\\\#|\\\\?|%2F)" + validTLDs: + - com + - de + - fr + walmart: + productIdFromURLRegex: "\\\\/ip\\\\/(?:[A-Za-z0-9-]{1,320}\\\\/)?(?[0-9]{3,13})" + validTLDs: + - com + bestbuy: + productIdFromURLRegex: "\\\\/(?\\\\d+\\\\.p)" + validTLDs: + - com + product_ads: + description: "If true, enables the product advertisement feature, allowing users to see and interact with ads for various products.\n" + type: Boolean + default: false + relay: + description: "Configurable relay URL for production environment\n" + type: String + default: "https://mozilla-ohttp-fakespot.fastly-edge.com/" + status: + description: "Whether the Fakespot feature is enabled or disabled\n" + type: Boolean + default: false + splash-screen: + description: "A feature that extends splash screen duration, allowing additional data fetching time for the app's initial run.\n" + variables: + enabled: + description: "If true, the feature is active.\n" + type: Boolean + default: false + maximum_duration_ms: + description: "The maximum amount of time in milliseconds the splashscreen will be visible while waiting for initialization calls to complete.\n" + type: Int + default: 0 + spotlight-search: + description: Add pages as items findable with Spotlight. + variables: + enabled: + description: "If this is true, then on each page load adds a new item to Spotlight." + type: Boolean + default: false + icon-type: + description: "The icon that is displayed next to the item in the search results. If this is `null`, then no icon is displayed.\n" + type: Option + default: letter + keep-for-days: + description: "Number of days to keep the item before automatic deletion. If this is left `null`, then it is left to iOS's default.\n" + type: Option + default: ~ + searchable-content: + description: "The text content that is made searchable. If this is `null` then no additional content is used, and only the title and URL will be used.\n" + type: Option + default: text-excerpt + tabTrayFeature: + description: The tab tray screen that the user goes to when they open the tab tray. + variables: + sections-enabled: + description: "This property provides a lookup table of whether or not the given section should be enabled. If the section is enabled, it should be toggleable in the settings screen, and on by default." + type: "Map" + default: + inactive-tabs: true + toolbar-refactor-feature: + description: "This feature is for managing the roll out of the Toolbar refactor feature\n" + variables: + enabled: + description: "Enables the feature\n" + type: Boolean + default: false + navigation_hint: + description: "If true, enables the navigation contextual hint.\n" + type: Boolean + default: false + one_tap_new_tab: + description: "If true, enables the one tap new tab feature for users.\n" + type: Boolean + default: false + unified_search: + description: "Enables the unified search feature\n" + type: Boolean + default: false + tos-feature: + description: "This feature is for managing the roll out of the ToS (Term of Service) implementation\n" + variables: + status: + description: "Enables the feature\n" + type: Boolean + default: false + tracking-protection-refactor: + description: "The Enhanced Tracking Protection refactor\n" + variables: + enabled: + description: "Whether the Enhanced Tracking Protection refactor is enabled or not\n" + type: Boolean + default: false + unified-ads: + description: "This property is for managing the roll out of the unified ads API\n" + variables: + enabled: + description: "If true, we will enable user to use the unified ads API\n" + type: Boolean + default: true + universal-links: + description: "This feature is for managing the roll out of universal link support in the iOS App\n" + variables: + enabled: + description: "If true, enables the feature\n" + type: Boolean + default: false + zoom-feature: + description: "The configuration for the status of the zoom feature\n" + variables: + status: + description: "Whether the page zoom feature is enabled or not\n" + type: Boolean + default: true +enums: + ContextualHint: + description: The identifiers for a individual contextual hints. + variants: + toolbar-hint: + description: The contextual hint bubble that appears to provide a hint about the toolbar. + ControlMessageBehavior: + description: An enum to influence what should be displayed when a control message is selected. + variants: + show-next-message: + description: The next eligible message should be shown. + show-none: + description: The surface should show no message. + HomeScreenSection: + description: The identifiers for the sections of the homescreen. + variants: + jump-back-in: + description: The tabs the user was looking immediately before being interrupted. + recent-explorations: + description: The tab groups + IconType: + description: "The icon that will be added to the item in the device's search engine." + variants: + favicon: + description: The favicon of the page + letter: + description: An icon generated from the first letter of the base domain. + screenshot: + description: A screenshot of the page at load time. + MessageSurfaceId: + description: "For messaging, we would like to have a message tell us which surface its associated with. This is a label that matches across both Android and iOS.\n" + variants: + Unknown: + description: A message has NOT declared its target surface. + microsurvey: + description: This is a microsurvey that appears on top of the bottom toolbar to the user. + new-tab-card: + description: This is the card that appears at the top on the Firefox Home Page. + notification: + description: This is a local notification send to the user periodically with tips and updates. + survey: + description: This is a full-page that appears providing a survey to the user. + NimbusOnboardingHeaderImage: + description: "The identifiers for the different images available for cards in onboarding\n" + variants: + customize-firefox: + description: "Corresponding to the fox window image\n" + notifications: + description: "Corresponding to the notifications image\n" + notifications-ctd: + description: "Corresponding to the notifications image for CTD\n" + search-widget: + description: "Corresponding to the fox search widget image\n" + set-default-steps: + description: "Corresponding to the set to default steps image\n" + set-to-dock: + description: "Corresponding to the set to dock image\n" + sync-devices: + description: "Corresponding to the sync-devices image\n" + sync-devices-ctd: + description: "Corresponding to the sync image for CTD\n" + themeing: + description: "Corresponding to the fox world image\n" + toolbar: + description: "Corresponding to the fox world image\n" + welcome-ctd: + description: "Corresponding to the welcome image for CTD\n" + welcome-globe: + description: "Corresponding to the fox world image\n" + NimbusOnboardingMultipleChoiceButtonImage: + description: "The identifiers for the different images available for multiple choice buttons in onboarding\n" + variants: + theme-dark: + description: "Corresponding to the dark theme\n" + theme-light: + description: "Corresponding to the light theme\n" + theme-system: + description: "Corresponding to the system theme\n" + toolbar-bottom: + description: "Corresponding to the toolbar on the bottom\n" + toolbar-top: + description: "Corresponding to the toolbar on top\n" + OnboardingActions: + description: "The identifiers for the different actions available for cards in onboarding\n" + variants: + end-onboarding: + description: "Will end the onboarding on a set card\n" + forward-one-card: + description: "Will take the user to the next card\n" + forward-three-card: + description: "Will take the user to the next card\n" + forward-two-card: + description: "Will take the user to the next card\n" + open-instructions-popup: + description: "Will open up a popup with instructions for something\n" + open-ios-fx-settings: + description: "Will take the user to the default browser settings in the iOS system settings\n" + read-privacy-policy: + description: "Will open a webview where the user can read the privacy policy\n" + request-notifications: + description: "Will request to allow notifications from the user\n" + set-default-browser: + description: "Will send the user to settings to set Firefox as their default browser and advance to next card\n" + sync-sign-in: + description: "Will take the user to the sync sign in flow\n" + OnboardingCardType: + description: "The identifiers for the different types of onboarding cards.\n" + variants: + basic: + description: "Corresponding to basic info onboarding cards\n" + multiple-choice: + description: "Corresponding to onboarding cards with multiple choice buttons\n" + OnboardingInstructionsPopupActions: + description: "The identifiers for the different actions available for the insturction card in onboarding\n" + variants: + dismiss: + description: "Will dismiss the popup\n" + dismiss-and-next-card: + description: "Will dismiss the popup and move to the next card\n" + open-ios-fx-settings: + description: "Will take the user to the default browser settings in the iOS system settings\n" + OnboardingMultipleChoiceAction: + description: "The identifiers for the different actions available for cards in onboarding\n" + variants: + theme-dark: + description: "Will will set the theme to dark mode\n" + theme-light: + description: "Will set the theme to light mode\n" + theme-system-default: + description: "Will set the theme to use the system theme\n" + toolbar-bottom: + description: "Will set the toolbar on the bottom\n" + toolbar-top: + description: "Will set the toolbar on the top\n" + OnboardingType: + description: "The identifiers for the different types of onboarding cards.\n" + variants: + fresh-install: + description: "Corresponding to onboarding cards that are for new users\n" + upgrade: + description: "Corresponding to onboarding cards that are for users who have updated\n" + PageContent: + description: "The page content that will be added as an item in the device's search engine." + variants: + html-content: + description: Use all the page as HTML + text-content: + description: Use all the page as text + text-excerpt: + description: Only use the first paragraph + SuggestionType: + description: The type of a Firefox Suggest search suggestion. + variants: + amp: + description: A Firefox Suggestion for desktop from adMarketplace. + ampMobile: + description: A Firefox Suggestion specifically for mobile from adMarketplace. + wikipedia: + description: A Firefox Suggestion for a Wikipedia page. + TabTraySection: + description: The identifiers for the sections of the tab tray. + variants: + inactive-tabs: + description: Tabs that have been automatically closed for the user. +objects: + AwesomeBar: + description: "A configuration option for the awesome bar. Part of the `search` feature." + fields: + min-search-term: + description: The minimum number of characters that the user types before searching in the page. + type: Int + default: 3 + position: + description: "This property defines whether or not the feature is enabled, and the position of the search bar\n" + type: SearchBarPositionFeature + default: + is-position-feature-enabled: true + is-bottom: true + is-toolbar-cfr-on: true + search-highlights: + description: Whether or not search highlights are enabled + type: Boolean + default: false + use-page-content: + description: "Search in the open tab's text content when typing." + type: Boolean + default: false + GeneralFeature: + description: The configuration for the a feature that can be enabled or disabled + fields: + status: + description: Whether or not the feature is enabled + type: Boolean + default: false + MessageData: + description: "An object to describe a message. It uses human readable strings to describe the triggers, action and style of the message as well as the text of the message and call to action.\n" + fields: + action: + description: "The name of a deeplink URL to be opened if the button is clicked.\n" + type: Option + default: ~ + action-params: + description: Query parameters appended to the deeplink action URL + type: "Map" + default: {} + button-label: + description: "The text on the button. If no text is present, the whole message is clickable.\n" + type: Option + default: ~ + except-if-any: + description: "A list of strings corresponding to targeting expressions. If any of these expressions evaluate to `true`, the message will not be eligible.\n" + type: List + default: [] + experiment: + description: The experiment slug that this message is involved in. + type: Option + default: ~ + is-control: + description: "Indicates if this message is the control message, if true shouldn't be displayed" + type: Boolean + default: false + microsurveyConfig: + description: Optional configuration data for a microsurvey. + type: Option + default: ~ + style: + description: "The style as described in a `StyleData` from the styles table.\n" + type: StyleName + default: DEFAULT + surface: + description: Each message will tell us the surface it is targeting with this. + type: MessageSurfaceId + default: Unknown + text: + description: The message text displayed to the user + type: Text + default: "" + title: + description: The title text displayed to the user + type: Option + default: ~ + trigger-if-all: + description: "A list of strings corresponding to targeting expressions. All named expressions must evaluate to true if the message is to be eligible to be shown.\n" + type: List + default: + - ALWAYS + MicrosurveyConfig: + description: "Attributes relating to microsurvey messaging.\n" + fields: + icon: + description: The asset name in our bundle used as the icon shown in the survey. + type: Image + default: lightbulbLarge + options: + description: The list of survey options to present to the user. + type: List + default: [] + utm-content: + description: The name used to provide as the utm_content parameter for the privacy notice. + type: Option + default: ~ + NimbusOnboardingButton: + description: "A group of properties describing the attributes of a card.\n" + fields: + action: + description: "The action the button should take. The default for this will be \"forward-one-card\"\n" + type: OnboardingActions + default: forward-one-card + title: + description: "The text of the button title. This should never be defaulted.\n" + type: Text + default: "" + NimbusOnboardingButtons: + description: "A set of buttons for the card. There can be up to two, but there must be at least one.\n" + fields: + primary: + description: "The primary button for the card. This must exist.\n" + type: NimbusOnboardingButton + default: + title: Primary Button + action: forward-one-card + secondary: + description: "A secondary, optional, button for the card.\n" + type: Option + default: ~ + NimbusOnboardingCardData: + description: "A group of properties describing the attributes of a card.\n" + fields: + body: + description: "The body text dispalyed on the card, in less prominent text. This should never be defaulted.\n" + type: Text + default: "" + buttons: + description: "The set of buttons associated with the card.\n" + type: NimbusOnboardingButtons + default: + primary: + title: Onboarding/Onboarding.Sync.Skip.Action.v114 + action: forward-one-card + secondary: ~ + card-type: + description: "The type of onboarding this card should be shown in, whether it a fresh install or an update. The default is fresh-install.\n" + type: OnboardingCardType + default: basic + disqualifiers: + description: "A list of ConditionName strings corresponding to targeting expressions. The card will not be shown if any expression is `true`.\n" + type: List + default: [] + image: + description: "The image that should be dispalyed on the card.\n" + type: NimbusOnboardingHeaderImage + default: welcome-globe + instructions-popup: + description: "The object describing the specific instruction popup button for a card. If left empty, the card will have no instruction popup information\n" + type: Option + default: ~ + link: + description: "The object describing the link button for a card. If left empty, the card will have no link.\n" + type: Option + default: ~ + multiple-choice-buttons: + description: "A list of multiple choice buttons that the card will display\n" + type: List + default: [] + onboarding-type: + description: "The type of onboarding this card should be shown in, whether it a fresh install or an update. The default is fresh-install.\n" + type: OnboardingType + default: fresh-install + order: + description: "The place in the order where the card will be found. The feature layer will then sort the cards based on this field.\n" + type: Int + default: 10 + prerequisites: + description: "A list of ConditionName strings corresponding to targeting expressions. The card will be shown if all expressions `true` and if no expressions in the `disqualifiers` table are true, or if the `disqualifiers` table is empty.\n" + type: List + default: [] + title: + description: "The title displayed on the card, in prominent, bolded text. This should never be defaulted.\n" + type: Text + default: "" + NimbusOnboardingInstructionPopup: + description: "The object outlining the content of the instruction card.\n" + fields: + button-action: + description: "The action the button should have. Default is `dismiss-and-next-card`\n" + type: OnboardingInstructionsPopupActions + default: dismiss-and-next-card + button-title: + description: "The title the button should have. This should never be defaulted.\n" + type: Text + default: "" + instructions: + description: "A list of instructions, either as free text, or as Text identifiers.\n" + type: List + default: [] + title: + description: "The text of the popup. This should never be defaulted.\n" + type: Text + default: "" + NimbusOnboardingLink: + description: "A group of properties describing the attributes for the active link on a card\n" + fields: + title: + description: "The text of the link title.\n" + type: Text + default: Onboarding/Onboarding.Welcome.Link.Action.v114 + url: + description: "The url that the link will lead to.\n" + type: String + default: "https://www.mozilla.org/privacy/firefox/" + NimbusOnboardingMultipleChoiceButton: + description: "A group of properties describing the attributes of a multiple choice button on a card\n" + fields: + action: + description: "The action the button should take. The default for this will be \"theme-system-default\"\n" + type: OnboardingMultipleChoiceAction + default: theme-system-default + image: + description: "The text of the button title. This should never be defaulted.\n" + type: NimbusOnboardingMultipleChoiceButtonImage + default: theme-system + title: + description: "The text of the button title. This should never be defaulted.\n" + type: Text + default: "" + SearchBarPositionFeature: + description: The configuration for the bottom search bar on the homescreen + fields: + is-bottom: + description: Whether or not the default position is at the bottom + type: Boolean + default: true + is-position-feature-enabled: + description: Whether or not the feature is enabled + type: Boolean + default: true + is-toolbar-cfr-on: + description: Whether or not the toolbar CFR shows. This is a temporary hack for Nimbus + type: Boolean + default: true + StyleData: + description: "A group of properities (predominantly visual) to the describe style of the message.\n" + fields: + max-display-count: + description: "How many sessions will this message be shown to the user before it is expired.\n" + type: Int + default: 5 + priority: + description: "The importance of this message. 0 is not very important, 100 is very important.\n" + type: Int + default: 50 + WebsiteConfig: + description: "It represents a configuration for different e-commerce websites and includes regular expressions for extracting product IDs from their respective URLs\n" + fields: + productIdFromURLRegex: + description: "It represents the product ID extracted from a regex query\n" + type: String + default: "" + validTLDs: + description: "Valid Top Level Domains\n" + type: List + default: [] diff --git a/experimenter/experimenter/features/manifests/ios/v136.0.0/developer.fml.yaml b/experimenter/experimenter/features/manifests/ios/v136.0.0/developer.fml.yaml new file mode 100644 index 0000000000..ce44305c20 --- /dev/null +++ b/experimenter/experimenter/features/manifests/ios/v136.0.0/developer.fml.yaml @@ -0,0 +1,1062 @@ +--- +version: 1.0.0 +about: + description: The root level Feature Manifest for Firefox for iOS +channels: + - developer +features: + account-settings-redux-feature: + description: "This feature is for managing the roll out of the Account Settings Redux implementation\n" + variables: + enabled: + description: "Enables the feature\n" + type: Boolean + default: false + address-autofill-edit: + description: This property defines if the address editing is enabled in Settings + variables: + status: + description: "If true, we will allow user to edit the address" + type: Boolean + default: true + bookmark-refactor-feature: + description: "The Feature for managing the roll out of the Bookmark refactor feature\n" + variables: + enabled: + description: "Enables the bookmark refactor feature\n" + type: Boolean + default: false + contextual-hint-feature: + description: This set holds all features pertaining to contextual hints. + variables: + features-enabled: + description: "This property provides a lookup table of whether specific contextual hints are enabled.\n" + type: "Map" + default: + toolbar-hint: true + credit-card-autofill: + description: This property defines the credit card autofill feature + variables: + credit-card-autofill-status: + description: "If true, we will allow user to use the credit autofill feature" + type: Boolean + default: true + felt-privacy-feature: + description: The feature that enhances private browsing mode + variables: + felt-deletion-enabled: + description: "If true, enable Felt Deletion part of Felt Privacy" + type: Boolean + default: true + simplified-ui-enabled: + description: "If true, enable simplified UI part of Felt Privacy" + type: Boolean + default: true + firefox-suggest-feature: + description: Configuration for the Firefox Suggest feature. + variables: + available-suggestions-types: + description: "A map of suggestion types to booleans that indicate whether or not the provider should return suggestions of those types.\n" + type: "Map" + default: + amp: true + ampMobile: false + wikipedia: true + status: + description: "Whether the feature is enabled. When Firefox Suggest is enabled, Firefox will download and store new search suggestions in the background, and show additional Search settings to control which suggestions appear in the awesomebar. When Firefox Suggest is disabled, Firefox will not download new suggestions, and hide the additional Search settings.\n" + type: Boolean + default: true + general-app-features: + description: The feature that contains feature flags for the entire application + variables: + report-site-issue: + description: This property defines whether or not the feature is enabled + type: GeneralFeature + default: + status: true + glean-server-knobs: + description: A feature that provides server-side configurations for Glean metrics (aka Server Knobs). + variables: + metrics-enabled: + description: "A map of metric base-identifiers to booleans representing the state of the 'enabled' flag for that metric." + type: "Map" + default: {} + homepage-rebuild-feature: + description: "This feature is for managing the roll out of the Homepage rebuild feature\n" + variables: + enabled: + description: "If true, enables the feature\n" + type: Boolean + default: false + homescreenFeature: + description: The homescreen that the user goes to when they press home or new tab. + variables: + prefer-switch-to-open-tab: + description: "Enables the feature to automatically switch to an existing tab with the same content instead of opening a new one.\n" + type: Boolean + default: true + sections-enabled: + description: "This property provides a lookup table of whether or not the given section should be enabled. If the section is enabled, it should be toggleable in the settings screen, and on by default.\n" + type: "Map" + default: + jump-back-in: true + recent-explorations: false + login-autofill: + description: This property defines the login autofill feature for automatically filling in usernames and passwords. + variables: + login-autofill-status: + description: "If true, allows the user to use the login autofill feature for usernames and passwords." + type: Boolean + default: true + menu-refactor-feature: + description: "Controls the menu refactor feature\n" + variables: + enabled: + description: "Controls which menu users will see\n" + type: Boolean + default: true + menu-hint: + description: "If true, enables the menu contextual hint.\n" + type: Boolean + default: true + messaging: + description: "The in-app messaging system\n" + documentation: + - name: User documentation + url: "https://experimenter.info/messaging/mobile-messaging" + contacts: + - jhugman@mozilla.com + - brennie@mozilla.com + - gbuciu@mozilla.com + - wteichmann@mozilla.com + events: + - "https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_shown" + - "https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_clicked" + - "https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_expired" + - "https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_dismissed" + - "https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_malformed" + variables: + actions: + description: A growable map of action URLs. + type: "Map" + default: + OPEN_SETTINGS: "://deep-link?url=settings/general" + OPEN_SETTINGS_NEW_TAB: "://deep-link?url=settings/newtab" + OPEN_SETTINGS_HOMESCREEN: "://deep-link?url=settings/homepage" + OPEN_SETTINGS_WALLPAPERS: "://deep-link?url=settings/wallpaper" + OPEN_SETTINGS_EMAIL: "://deep-link?url=settings/mailto" + OPEN_SETTINGS_SEARCH_ENGINE: "://deep-link?url=settings/search" + OPEN_SETTINGS_PRIVACY: "://deep-link?url=settings/clear-private-data" + OPEN_SETTINGS_FXA: "://deep-link?url=settings/fxa" + OPEN_SETTINGS_THEME: "://deep-link?url=settings/theme" + OPEN_URL: "://open-url" + VIEW_BOOKMARKS: "://deep-link?url=homepanel/bookmarks" + VIEW_TOP_SITES: "://deep-link?url=homepanel/top-sites" + VIEW_READING_LIST: "://deep-link?url=homepanel/reading-list" + VIEW_HISTORY: "://deep-link?url=homepanel/history" + VIEW_DOWNLOADS: "://deep-link?url=homepanel/downloads" + ENABLE_PRIVATE_BROWSING: "://deep-link?url=homepanel/new-private-tab" + OPEN_NEW_TAB: "://deep-link?url=homepanel/new-tab" + MAKE_DEFAULT_BROWSER: "://deep-link?url=default-browser/system-settings" + MAKE_DEFAULT_BROWSER_WITH_TUTORIAL: "://deep-link?url=default-browser/tutorial" + OPEN_SHARE_SHEET: "://share-sheet" + string-alias: ActionName + message-under-experiment: + description: "Deprecated. Please use \"experiment\": \"{experiment}\" instead." + type: Option + default: ~ + messages: + description: "A growable collection of messages, where the Key is the message identifier and the value is its associated MessageData.\n" + type: "Map" + default: + default-browser: + surface: new-tab-card + style: FALLBACK + trigger-if-all: + - SUPPORTS_DEFAULT_BROWSER + - ON_FOURTH_LAUNCH_THIS_YEAR + except-if-any: + - I_AM_DEFAULT_BROWSER + title: Default Browser/DefaultBrowserCard.Title + text: Default Browser/DefaultBrowserCard.Description + button-label: Default Browser/DefaultBrowserCard.Button.v2 + action: MAKE_DEFAULT_BROWSER_WITH_TUTORIAL + homepage-microsurvey-message: + surface: microsurvey + style: MICROSURVEY + trigger-if-all: + - SECOND_HOMEPAGE_VIEW + title: Microsurvey/Microsurvey.Prompt.TitleLabel.v127 + text: How satisfied are you with your Firefox homepage? + button-label: Microsurvey/Microsurvey.Prompt.Button.v127 + microsurveyConfig: + utm-content: homepage + icon: homeLarge + options: + - Microsurvey/Microsurvey.Survey.Options.VerySatisfied.v132 + - Microsurvey/Microsurvey.Survey.Options.Satisfied.v132 + - Microsurvey/Microsurvey.Survey.Options.Neutral.v132 + - Microsurvey/Microsurvey.Survey.Options.Dissatisfied.v132 + - Microsurvey/Microsurvey.Survey.Options.VeryDissatisfied.v132 + - Microsurvey/Microsurvey.Survey.Options.NotApplicable.v132 + survey-surface-message: + surface: survey + style: SURVEY + trigger-if-all: + - NEVER + text: ResearchSurface/Body.Text.v112 + button-label: ResearchSurface/PrimaryButton.Label.v112 + action: OPEN_URL + action-params: + url: "https://www.macrumors.com" + string-alias: MessageKey + on-control: + description: What should be displayed when a control message is selected. + type: ControlMessageBehavior + default: show-next-message + styles: + description: "A map of styles to configure message appearance.\n" + type: "Map" + default: + FALLBACK: + priority: 40 + max-display-count: 20 + DEFAULT: + priority: 50 + max-display-count: 5 + MICROSURVEY: + priority: 50 + max-display-count: 1 + NOTIFICATION: + priority: 50 + max-display-count: 1 + PERSISTENT: + priority: 50 + max-display-count: 20 + SURVEY: + priority: 55 + max-display-count: 10 + WARNING: + priority: 60 + max-display-count: 10 + URGENT: + priority: 100 + max-display-count: 10 + string-alias: StyleName + triggers: + description: "A collection of out the box trigger expressions. Each entry maps to a valid JEXL expression.\n" + type: "Map" + default: + ALWAYS: "true" + NEVER: "false" + USER_RECENTLY_INSTALLED: days_since_install < 7 + USER_RECENTLY_UPDATED: days_since_update < 7 && days_since_install != days_since_update + USER_TIER_ONE_COUNTRY: "('US' in locale || 'GB' in locale || 'CA' in locale || 'DE' in locale || 'FR' in locale)" + USER_EN_SPEAKER: "'en' in locale" + USER_ES_SPEAKER: "'es' in locale" + USER_DE_SPEAKER: "'de' in locale" + USER_FR_SPEAKER: "'fr' in locale" + DEVICE_ANDROID: "os == 'Android'" + DEVICE_IOS: "os == 'iOS'" + DAY_1_AFTER_INSTALL: days_since_install == 1 + DAY_2_AFTER_INSTALL: days_since_install == 2 + DAY_3_AFTER_INSTALL: days_since_install == 3 + DAY_4_AFTER_INSTALL: days_since_install == 4 + DAY_5_AFTER_INSTALL: days_since_install == 5 + MORE_THAN_24H_SINCE_INSTALLED_OR_UPDATED: days_since_update >= 1 + NOT_LAUNCHED_YESTERDAY: "'app_cycle.foreground'|eventLastSeen('Days', 1) > 1" + AFTER_THREE_LAUNCHES_THIS_WEEK: "'app_cycle.foreground'|eventSum('Weeks', 1, 0) >= 3" + I_AM_DEFAULT_BROWSER: is_default_browser + I_AM_NOT_DEFAULT_BROWSER: is_default_browser == false + SUPPORTS_DEFAULT_BROWSER: "os_version|versionCompare('14.!') >= 0" + INACTIVE_NEW_USER: is_inactive_new_user + ALLOWED_TIPS_NOTIFICATIONS: allowed_tips_notifications + FXA_CURRENTLY_SIGNED_IN: is_fxa_signed_in == true + SECOND_HOMEPAGE_VIEW: "'homepage_viewed'|eventSum('Years', 4, 0) >= 2" + ON_FOURTH_LAUNCH_THIS_YEAR: "'app_cycle.foreground'|eventSum('Years', 1, 0) > 3" + string-alias: TriggerName + ~~experiment: + description: Not to be set by experiment. + type: ExperimentSlug + default: "{experiment}" + string-alias: ExperimentSlug + allow-coenrollment: true + microsurvey-feature: + description: "A feature that shows the microsurvey for users to interact with and submit responses.\n" + variables: + enabled: + description: "If true, the feature is active.\n" + type: Boolean + default: true + native-error-page-feature: + description: "This feature is for managing the roll out of the native error page feature\n" + variables: + enabled: + description: "If true, the feature is active.\n" + type: Boolean + default: false + no_internet_connection_error: + description: "This feature is for managing the roll out of the no interet connection native error page feature\n" + type: Boolean + default: false + night-mode-feature: + description: "Describes the night mode feature's configuration\n" + variables: + enabled: + description: "Whether night mode is available for users or not\n" + type: Boolean + default: true + onboarding-framework-feature: + description: "The new onboarding framework feature that will allow onboarding to be experimentable through initial experiments.\n" + variables: + cards: + description: "The list of available cards for onboarding.\n" + type: "Map" + default: + welcome: + card-type: basic + order: 10 + title: Onboarding/Onboarding.Welcome.Title.TreatementA.v120 + body: Onboarding/Onboarding.Welcome.Description.TreatementA.v120 + image: welcome-globe + link: + title: Onboarding/Onboarding.Welcome.Link.Action.v114 + url: "https://www.mozilla.org/privacy/firefox/" + buttons: + primary: + title: Onboarding/Onboarding.Welcome.ActionTreatementA.v114 + action: open-instructions-popup + secondary: + title: Onboarding/Onboarding.Welcome.Skip.v114 + action: forward-one-card + instructions-popup: + title: Onboarding/DefaultBrowserPopup.Title.v114 + button-title: Onboarding/DefaultBrowserPopup.ButtonTitle.v114 + button-action: open-ios-fx-settings + instructions: + - Onboarding/DefaultBrowserPopup.FirstLabel.v114 + - Onboarding/DefaultBrowserPopup.SecondLabel.v114 + - Onboarding/DefaultBrowserPopup.ThirdLabel.v114 + onboarding-type: fresh-install + prerequisites: + - ALWAYS + notification-permissions: + card-type: basic + order: 30 + title: Onboarding/Onboarding.Notification.Title.v120 + body: Onboarding/Onboarding.Notification.Description.v120 + image: notifications + buttons: + primary: + title: Onboarding/Onboarding.Notification.TurnOnNotifications.Action.v114 + action: request-notifications + secondary: + title: Onboarding/Onboarding.Notification.Skip.Action.v115 + action: forward-one-card + onboarding-type: fresh-install + prerequisites: + - ALWAYS + sign-to-sync: + card-type: basic + order: 20 + title: Onboarding/Onboarding.Sync.Title.v120 + body: Onboarding/Onboarding.Sync.Description.v123 + image: sync-devices + buttons: + primary: + title: Onboarding/Onboarding.Sync.SignIn.Action.v114 + action: sync-sign-in + secondary: + title: Onboarding/Onboarding.Sync.Skip.Action.v114 + action: forward-one-card + onboarding-type: fresh-install + prerequisites: + - ALWAYS + customization-theme: + card-type: multiple-choice + order: 40 + title: Onboarding/Onboarding.Customization.Theme.Title.v123 + body: Onboarding/Onboarding.Customization.Theme.Description.v123 + image: themeing + buttons: + primary: + title: Onboarding/Onboarding.Customization.Theme.Continue.Action.v123 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Customization.Theme.System.Action.v123 + image: theme-system + action: theme-system-default + - title: Onboarding/Onboarding.Customization.Theme.Light.Action.v123 + image: theme-light + action: theme-light + - title: Onboarding/Onboarding.Customization.Theme.Dark.Action.v123 + image: theme-dark + action: theme-dark + onboarding-type: fresh-install + prerequisites: + - ALWAYS + customization-toolbar: + card-type: multiple-choice + order: 41 + title: Onboarding/Onboarding.Customization.Toolbar.Title.v123 + body: Onboarding/Onboarding.Customization.Toolbar.Description.v123 + image: toolbar + buttons: + primary: + title: Onboarding/Onboarding.Customization.Toolbar.Continue.Action.v123 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Customization.Toolbar.Top.Action.v123 + image: toolbar-top + action: toolbar-top + - title: Onboarding/Onboarding.Customization.Toolbar.Bottom.Action.v123 + image: toolbar-bottom + action: toolbar-bottom + onboarding-type: fresh-install + prerequisites: + - ALWAYS + update-welcome: + card-type: basic + order: 10 + title: Upgrade/Upgrade.Welcome.Title.v114 + body: Upgrade/Upgrade.Welcome.Description.v114 + image: welcome-globe + buttons: + primary: + title: Upgrade/Upgrade.Welcome.Action.v114 + action: forward-one-card + onboarding-type: upgrade + prerequisites: + - NEVER + update-sign-to-sync: + card-type: basic + order: 20 + title: Upgrade/Upgrade.SyncSign.Title.v114 + body: Upgrade/Upgrade.SyncSign.Description.v114 + image: sync-devices + buttons: + primary: + title: Upgrade/Upgrade.SyncSign.Action.v114 + action: sync-sign-in + secondary: + title: Onboarding/Onboarding.LaterAction.v114 + action: forward-one-card + onboarding-type: upgrade + prerequisites: + - NEVER + string-alias: NimbusOnboardingCardKey + conditions: + description: "A collection of out the box conditional expressions to be used in determining whether a card should show or not. Each entry maps to a valid JEXL expression.\n" + type: "Map" + default: + ALWAYS: "true" + NEVER: "false" + string-alias: ConditionName + dismissable: + description: "Whether or not the entire onboarding is dismissable by pressing an X at the top right corner of the screen.\n" + type: Boolean + default: true + password-generator-feature: + description: Password Generator Feature + variables: + enabled: + description: "If true, the password generator feature is enabled" + type: Boolean + default: true + pull-to-refresh-refactor-feature: + description: "The Feature flag to manage the roll out of the new pull to refresh feature.\n" + variables: + enabled: + description: "Enables the feature\n" + type: Boolean + default: true + redux-search-settings-feature: + description: "This feature is for managing the roll out of redux on the search settings screen\n" + variables: + enabled: + description: "Enables the feature\n" + type: Boolean + default: false + remote-tab-management: + description: "Features that let users manage tabs on other devices that are connected to the same Mozilla account.\n" + variables: + close-tabs-enabled: + description: "Whether the feature to close synced tabs is enabled. When enabled, this device will allow other devices to close tabs that are open on this device, and show a \"close\" button for tabs that are currently open on other supported devices in the synced tabs tray.\n" + type: Boolean + default: true + search: + description: "Configuring the functionality to do with search. This will be separated into smaller sub-features in later releases.\n" + variables: + awesome-bar: + description: Configuring the awesome bar. + type: AwesomeBar + default: + min-search-term: 3 + position: + is-bottom: false + is-position-feature-enabled: true + is-toolbar-cfr-on: false + search-highlights: false + use-page-content: false + sent-from-firefox-feature: + description: "Adds additional promo text to links shared to WhatsApp.\n" + variables: + enabled: + description: "Controls whether promo text is added to WhatsApp shares and an on/off toggle is added to Settings.\n" + type: Boolean + default: true + isTreatmentA: + description: "If true, shares the treatment A text. If false, shares the treatment B text.\n" + type: Boolean + default: true + shopping2023: + description: "The configuration setting for the status of the Fakespot feature\n" + variables: + back_in_stock_reporting: + description: "If true, enables for users the reporting feature for products back in stock.\n" + type: Boolean + default: false + config: + description: "A Map of website configurations\n" + type: "Map" + default: + amazon: + productIdFromURLRegex: "(?:[\\\\/]|$|%2F)(?[A-Z0-9]{10})(?:[\\\\/]|$|\\\\#|\\\\?|%2F)" + validTLDs: + - com + - de + - fr + walmart: + productIdFromURLRegex: "\\\\/ip\\\\/(?:[A-Za-z0-9-]{1,320}\\\\/)?(?[0-9]{3,13})" + validTLDs: + - com + bestbuy: + productIdFromURLRegex: "\\\\/(?\\\\d+\\\\.p)" + validTLDs: + - com + product_ads: + description: "If true, enables the product advertisement feature, allowing users to see and interact with ads for various products.\n" + type: Boolean + default: false + relay: + description: "Configurable relay URL for production environment\n" + type: String + default: "https://mozilla-ohttp-fakespot.fastly-edge.com/" + status: + description: "Whether the Fakespot feature is enabled or disabled\n" + type: Boolean + default: false + splash-screen: + description: "A feature that extends splash screen duration, allowing additional data fetching time for the app's initial run.\n" + variables: + enabled: + description: "If true, the feature is active.\n" + type: Boolean + default: true + maximum_duration_ms: + description: "The maximum amount of time in milliseconds the splashscreen will be visible while waiting for initialization calls to complete.\n" + type: Int + default: 6000 + spotlight-search: + description: Add pages as items findable with Spotlight. + variables: + enabled: + description: "If this is true, then on each page load adds a new item to Spotlight." + type: Boolean + default: true + icon-type: + description: "The icon that is displayed next to the item in the search results. If this is `null`, then no icon is displayed.\n" + type: Option + default: screenshot + keep-for-days: + description: "Number of days to keep the item before automatic deletion. If this is left `null`, then it is left to iOS's default.\n" + type: Option + default: ~ + searchable-content: + description: "The text content that is made searchable. If this is `null` then no additional content is used, and only the title and URL will be used.\n" + type: Option + default: text-excerpt + tabTrayFeature: + description: The tab tray screen that the user goes to when they open the tab tray. + variables: + sections-enabled: + description: "This property provides a lookup table of whether or not the given section should be enabled. If the section is enabled, it should be toggleable in the settings screen, and on by default." + type: "Map" + default: + inactive-tabs: true + toolbar-refactor-feature: + description: "This feature is for managing the roll out of the Toolbar refactor feature\n" + variables: + enabled: + description: "Enables the feature\n" + type: Boolean + default: true + navigation_hint: + description: "If true, enables the navigation contextual hint.\n" + type: Boolean + default: true + one_tap_new_tab: + description: "If true, enables the one tap new tab feature for users.\n" + type: Boolean + default: true + unified_search: + description: "Enables the unified search feature\n" + type: Boolean + default: false + tos-feature: + description: "This feature is for managing the roll out of the ToS (Term of Service) implementation\n" + variables: + status: + description: "Enables the feature\n" + type: Boolean + default: false + tracking-protection-refactor: + description: "The Enhanced Tracking Protection refactor\n" + variables: + enabled: + description: "Whether the Enhanced Tracking Protection refactor is enabled or not\n" + type: Boolean + default: true + unified-ads: + description: "This property is for managing the roll out of the unified ads API\n" + variables: + enabled: + description: "If true, we will enable user to use the unified ads API\n" + type: Boolean + default: true + universal-links: + description: "This feature is for managing the roll out of universal link support in the iOS App\n" + variables: + enabled: + description: "If true, enables the feature\n" + type: Boolean + default: true + zoom-feature: + description: "The configuration for the status of the zoom feature\n" + variables: + status: + description: "Whether the page zoom feature is enabled or not\n" + type: Boolean + default: true +enums: + ContextualHint: + description: The identifiers for a individual contextual hints. + variants: + toolbar-hint: + description: The contextual hint bubble that appears to provide a hint about the toolbar. + ControlMessageBehavior: + description: An enum to influence what should be displayed when a control message is selected. + variants: + show-next-message: + description: The next eligible message should be shown. + show-none: + description: The surface should show no message. + HomeScreenSection: + description: The identifiers for the sections of the homescreen. + variants: + jump-back-in: + description: The tabs the user was looking immediately before being interrupted. + recent-explorations: + description: The tab groups + IconType: + description: "The icon that will be added to the item in the device's search engine." + variants: + favicon: + description: The favicon of the page + letter: + description: An icon generated from the first letter of the base domain. + screenshot: + description: A screenshot of the page at load time. + MessageSurfaceId: + description: "For messaging, we would like to have a message tell us which surface its associated with. This is a label that matches across both Android and iOS.\n" + variants: + Unknown: + description: A message has NOT declared its target surface. + microsurvey: + description: This is a microsurvey that appears on top of the bottom toolbar to the user. + new-tab-card: + description: This is the card that appears at the top on the Firefox Home Page. + notification: + description: This is a local notification send to the user periodically with tips and updates. + survey: + description: This is a full-page that appears providing a survey to the user. + NimbusOnboardingHeaderImage: + description: "The identifiers for the different images available for cards in onboarding\n" + variants: + customize-firefox: + description: "Corresponding to the fox window image\n" + notifications: + description: "Corresponding to the notifications image\n" + notifications-ctd: + description: "Corresponding to the notifications image for CTD\n" + search-widget: + description: "Corresponding to the fox search widget image\n" + set-default-steps: + description: "Corresponding to the set to default steps image\n" + set-to-dock: + description: "Corresponding to the set to dock image\n" + sync-devices: + description: "Corresponding to the sync-devices image\n" + sync-devices-ctd: + description: "Corresponding to the sync image for CTD\n" + themeing: + description: "Corresponding to the fox world image\n" + toolbar: + description: "Corresponding to the fox world image\n" + welcome-ctd: + description: "Corresponding to the welcome image for CTD\n" + welcome-globe: + description: "Corresponding to the fox world image\n" + NimbusOnboardingMultipleChoiceButtonImage: + description: "The identifiers for the different images available for multiple choice buttons in onboarding\n" + variants: + theme-dark: + description: "Corresponding to the dark theme\n" + theme-light: + description: "Corresponding to the light theme\n" + theme-system: + description: "Corresponding to the system theme\n" + toolbar-bottom: + description: "Corresponding to the toolbar on the bottom\n" + toolbar-top: + description: "Corresponding to the toolbar on top\n" + OnboardingActions: + description: "The identifiers for the different actions available for cards in onboarding\n" + variants: + end-onboarding: + description: "Will end the onboarding on a set card\n" + forward-one-card: + description: "Will take the user to the next card\n" + forward-three-card: + description: "Will take the user to the next card\n" + forward-two-card: + description: "Will take the user to the next card\n" + open-instructions-popup: + description: "Will open up a popup with instructions for something\n" + open-ios-fx-settings: + description: "Will take the user to the default browser settings in the iOS system settings\n" + read-privacy-policy: + description: "Will open a webview where the user can read the privacy policy\n" + request-notifications: + description: "Will request to allow notifications from the user\n" + set-default-browser: + description: "Will send the user to settings to set Firefox as their default browser and advance to next card\n" + sync-sign-in: + description: "Will take the user to the sync sign in flow\n" + OnboardingCardType: + description: "The identifiers for the different types of onboarding cards.\n" + variants: + basic: + description: "Corresponding to basic info onboarding cards\n" + multiple-choice: + description: "Corresponding to onboarding cards with multiple choice buttons\n" + OnboardingInstructionsPopupActions: + description: "The identifiers for the different actions available for the insturction card in onboarding\n" + variants: + dismiss: + description: "Will dismiss the popup\n" + dismiss-and-next-card: + description: "Will dismiss the popup and move to the next card\n" + open-ios-fx-settings: + description: "Will take the user to the default browser settings in the iOS system settings\n" + OnboardingMultipleChoiceAction: + description: "The identifiers for the different actions available for cards in onboarding\n" + variants: + theme-dark: + description: "Will will set the theme to dark mode\n" + theme-light: + description: "Will set the theme to light mode\n" + theme-system-default: + description: "Will set the theme to use the system theme\n" + toolbar-bottom: + description: "Will set the toolbar on the bottom\n" + toolbar-top: + description: "Will set the toolbar on the top\n" + OnboardingType: + description: "The identifiers for the different types of onboarding cards.\n" + variants: + fresh-install: + description: "Corresponding to onboarding cards that are for new users\n" + upgrade: + description: "Corresponding to onboarding cards that are for users who have updated\n" + PageContent: + description: "The page content that will be added as an item in the device's search engine." + variants: + html-content: + description: Use all the page as HTML + text-content: + description: Use all the page as text + text-excerpt: + description: Only use the first paragraph + SuggestionType: + description: The type of a Firefox Suggest search suggestion. + variants: + amp: + description: A Firefox Suggestion for desktop from adMarketplace. + ampMobile: + description: A Firefox Suggestion specifically for mobile from adMarketplace. + wikipedia: + description: A Firefox Suggestion for a Wikipedia page. + TabTraySection: + description: The identifiers for the sections of the tab tray. + variants: + inactive-tabs: + description: Tabs that have been automatically closed for the user. +objects: + AwesomeBar: + description: "A configuration option for the awesome bar. Part of the `search` feature." + fields: + min-search-term: + description: The minimum number of characters that the user types before searching in the page. + type: Int + default: 3 + position: + description: "This property defines whether or not the feature is enabled, and the position of the search bar\n" + type: SearchBarPositionFeature + default: + is-position-feature-enabled: true + is-bottom: true + is-toolbar-cfr-on: true + search-highlights: + description: Whether or not search highlights are enabled + type: Boolean + default: false + use-page-content: + description: "Search in the open tab's text content when typing." + type: Boolean + default: false + GeneralFeature: + description: The configuration for the a feature that can be enabled or disabled + fields: + status: + description: Whether or not the feature is enabled + type: Boolean + default: false + MessageData: + description: "An object to describe a message. It uses human readable strings to describe the triggers, action and style of the message as well as the text of the message and call to action.\n" + fields: + action: + description: "The name of a deeplink URL to be opened if the button is clicked.\n" + type: Option + default: ~ + action-params: + description: Query parameters appended to the deeplink action URL + type: "Map" + default: {} + button-label: + description: "The text on the button. If no text is present, the whole message is clickable.\n" + type: Option + default: ~ + except-if-any: + description: "A list of strings corresponding to targeting expressions. If any of these expressions evaluate to `true`, the message will not be eligible.\n" + type: List + default: [] + experiment: + description: The experiment slug that this message is involved in. + type: Option + default: ~ + is-control: + description: "Indicates if this message is the control message, if true shouldn't be displayed" + type: Boolean + default: false + microsurveyConfig: + description: Optional configuration data for a microsurvey. + type: Option + default: ~ + style: + description: "The style as described in a `StyleData` from the styles table.\n" + type: StyleName + default: DEFAULT + surface: + description: Each message will tell us the surface it is targeting with this. + type: MessageSurfaceId + default: Unknown + text: + description: The message text displayed to the user + type: Text + default: "" + title: + description: The title text displayed to the user + type: Option + default: ~ + trigger-if-all: + description: "A list of strings corresponding to targeting expressions. All named expressions must evaluate to true if the message is to be eligible to be shown.\n" + type: List + default: + - ALWAYS + MicrosurveyConfig: + description: "Attributes relating to microsurvey messaging.\n" + fields: + icon: + description: The asset name in our bundle used as the icon shown in the survey. + type: Image + default: lightbulbLarge + options: + description: The list of survey options to present to the user. + type: List + default: [] + utm-content: + description: The name used to provide as the utm_content parameter for the privacy notice. + type: Option + default: ~ + NimbusOnboardingButton: + description: "A group of properties describing the attributes of a card.\n" + fields: + action: + description: "The action the button should take. The default for this will be \"forward-one-card\"\n" + type: OnboardingActions + default: forward-one-card + title: + description: "The text of the button title. This should never be defaulted.\n" + type: Text + default: "" + NimbusOnboardingButtons: + description: "A set of buttons for the card. There can be up to two, but there must be at least one.\n" + fields: + primary: + description: "The primary button for the card. This must exist.\n" + type: NimbusOnboardingButton + default: + title: Primary Button + action: forward-one-card + secondary: + description: "A secondary, optional, button for the card.\n" + type: Option + default: ~ + NimbusOnboardingCardData: + description: "A group of properties describing the attributes of a card.\n" + fields: + body: + description: "The body text dispalyed on the card, in less prominent text. This should never be defaulted.\n" + type: Text + default: "" + buttons: + description: "The set of buttons associated with the card.\n" + type: NimbusOnboardingButtons + default: + primary: + title: Onboarding/Onboarding.Sync.Skip.Action.v114 + action: forward-one-card + secondary: ~ + card-type: + description: "The type of onboarding this card should be shown in, whether it a fresh install or an update. The default is fresh-install.\n" + type: OnboardingCardType + default: basic + disqualifiers: + description: "A list of ConditionName strings corresponding to targeting expressions. The card will not be shown if any expression is `true`.\n" + type: List + default: [] + image: + description: "The image that should be dispalyed on the card.\n" + type: NimbusOnboardingHeaderImage + default: welcome-globe + instructions-popup: + description: "The object describing the specific instruction popup button for a card. If left empty, the card will have no instruction popup information\n" + type: Option + default: ~ + link: + description: "The object describing the link button for a card. If left empty, the card will have no link.\n" + type: Option + default: ~ + multiple-choice-buttons: + description: "A list of multiple choice buttons that the card will display\n" + type: List + default: [] + onboarding-type: + description: "The type of onboarding this card should be shown in, whether it a fresh install or an update. The default is fresh-install.\n" + type: OnboardingType + default: fresh-install + order: + description: "The place in the order where the card will be found. The feature layer will then sort the cards based on this field.\n" + type: Int + default: 10 + prerequisites: + description: "A list of ConditionName strings corresponding to targeting expressions. The card will be shown if all expressions `true` and if no expressions in the `disqualifiers` table are true, or if the `disqualifiers` table is empty.\n" + type: List + default: [] + title: + description: "The title displayed on the card, in prominent, bolded text. This should never be defaulted.\n" + type: Text + default: "" + NimbusOnboardingInstructionPopup: + description: "The object outlining the content of the instruction card.\n" + fields: + button-action: + description: "The action the button should have. Default is `dismiss-and-next-card`\n" + type: OnboardingInstructionsPopupActions + default: dismiss-and-next-card + button-title: + description: "The title the button should have. This should never be defaulted.\n" + type: Text + default: "" + instructions: + description: "A list of instructions, either as free text, or as Text identifiers.\n" + type: List + default: [] + title: + description: "The text of the popup. This should never be defaulted.\n" + type: Text + default: "" + NimbusOnboardingLink: + description: "A group of properties describing the attributes for the active link on a card\n" + fields: + title: + description: "The text of the link title.\n" + type: Text + default: Onboarding/Onboarding.Welcome.Link.Action.v114 + url: + description: "The url that the link will lead to.\n" + type: String + default: "https://www.mozilla.org/privacy/firefox/" + NimbusOnboardingMultipleChoiceButton: + description: "A group of properties describing the attributes of a multiple choice button on a card\n" + fields: + action: + description: "The action the button should take. The default for this will be \"theme-system-default\"\n" + type: OnboardingMultipleChoiceAction + default: theme-system-default + image: + description: "The text of the button title. This should never be defaulted.\n" + type: NimbusOnboardingMultipleChoiceButtonImage + default: theme-system + title: + description: "The text of the button title. This should never be defaulted.\n" + type: Text + default: "" + SearchBarPositionFeature: + description: The configuration for the bottom search bar on the homescreen + fields: + is-bottom: + description: Whether or not the default position is at the bottom + type: Boolean + default: true + is-position-feature-enabled: + description: Whether or not the feature is enabled + type: Boolean + default: true + is-toolbar-cfr-on: + description: Whether or not the toolbar CFR shows. This is a temporary hack for Nimbus + type: Boolean + default: true + StyleData: + description: "A group of properities (predominantly visual) to the describe style of the message.\n" + fields: + max-display-count: + description: "How many sessions will this message be shown to the user before it is expired.\n" + type: Int + default: 5 + priority: + description: "The importance of this message. 0 is not very important, 100 is very important.\n" + type: Int + default: 50 + WebsiteConfig: + description: "It represents a configuration for different e-commerce websites and includes regular expressions for extracting product IDs from their respective URLs\n" + fields: + productIdFromURLRegex: + description: "It represents the product ID extracted from a regex query\n" + type: String + default: "" + validTLDs: + description: "Valid Top Level Domains\n" + type: List + default: [] diff --git a/experimenter/experimenter/features/manifests/ios/v136.0.0/experimenter.yaml b/experimenter/experimenter/features/manifests/ios/v136.0.0/experimenter.yaml new file mode 100644 index 0000000000..e1a08aa9ac --- /dev/null +++ b/experimenter/experimenter/features/manifests/ios/v136.0.0/experimenter.yaml @@ -0,0 +1,351 @@ +--- +account-settings-redux-feature: + description: "This feature is for managing the roll out of the Account Settings Redux implementation\n" + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "Enables the feature\n" +address-autofill-edit: + description: This property defines if the address editing is enabled in Settings + hasExposure: true + exposureDescription: "" + variables: + status: + type: boolean + description: "If true, we will allow user to edit the address" +bookmark-refactor-feature: + description: "The Feature for managing the roll out of the Bookmark refactor feature\n" + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "Enables the bookmark refactor feature\n" +contextual-hint-feature: + description: This set holds all features pertaining to contextual hints. + hasExposure: true + exposureDescription: "" + variables: + features-enabled: + type: json + description: "This property provides a lookup table of whether specific contextual hints are enabled.\n" +credit-card-autofill: + description: This property defines the credit card autofill feature + hasExposure: true + exposureDescription: "" + variables: + credit-card-autofill-status: + type: boolean + description: "If true, we will allow user to use the credit autofill feature" +felt-privacy-feature: + description: The feature that enhances private browsing mode + hasExposure: true + exposureDescription: "" + variables: + felt-deletion-enabled: + type: boolean + description: "If true, enable Felt Deletion part of Felt Privacy" + simplified-ui-enabled: + type: boolean + description: "If true, enable simplified UI part of Felt Privacy" +firefox-suggest-feature: + description: Configuration for the Firefox Suggest feature. + hasExposure: true + exposureDescription: "" + variables: + available-suggestions-types: + type: json + description: "A map of suggestion types to booleans that indicate whether or not the provider should return suggestions of those types.\n" + status: + type: boolean + description: "Whether the feature is enabled. When Firefox Suggest is enabled, Firefox will download and store new search suggestions in the background, and show additional Search settings to control which suggestions appear in the awesomebar. When Firefox Suggest is disabled, Firefox will not download new suggestions, and hide the additional Search settings.\n" +general-app-features: + description: The feature that contains feature flags for the entire application + hasExposure: true + exposureDescription: "" + variables: + report-site-issue: + type: json + description: This property defines whether or not the feature is enabled +glean-server-knobs: + description: A feature that provides server-side configurations for Glean metrics (aka Server Knobs). + hasExposure: true + exposureDescription: "" + variables: + metrics-enabled: + type: json + description: "A map of metric base-identifiers to booleans representing the state of the 'enabled' flag for that metric." +homepage-rebuild-feature: + description: "This feature is for managing the roll out of the Homepage rebuild feature\n" + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "If true, enables the feature\n" +homescreenFeature: + description: The homescreen that the user goes to when they press home or new tab. + hasExposure: true + exposureDescription: "" + variables: + prefer-switch-to-open-tab: + type: boolean + description: "Enables the feature to automatically switch to an existing tab with the same content instead of opening a new one.\n" + sections-enabled: + type: json + description: "This property provides a lookup table of whether or not the given section should be enabled. If the section is enabled, it should be toggleable in the settings screen, and on by default.\n" +login-autofill: + description: This property defines the login autofill feature for automatically filling in usernames and passwords. + hasExposure: true + exposureDescription: "" + variables: + login-autofill-status: + type: boolean + description: "If true, allows the user to use the login autofill feature for usernames and passwords." +menu-refactor-feature: + description: "Controls the menu refactor feature\n" + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "Controls which menu users will see\n" + menu-hint: + type: boolean + description: "If true, enables the menu contextual hint.\n" +messaging: + description: "The in-app messaging system\n" + hasExposure: true + exposureDescription: "" + variables: + actions: + type: json + description: A growable map of action URLs. + message-under-experiment: + type: string + description: "Deprecated. Please use \"experiment\": \"{experiment}\" instead." + messages: + type: json + description: "A growable collection of messages, where the Key is the message identifier and the value is its associated MessageData.\n" + on-control: + type: string + description: What should be displayed when a control message is selected. + enum: + - show-next-message + - show-none + styles: + type: json + description: "A map of styles to configure message appearance.\n" + triggers: + type: json + description: "A collection of out the box trigger expressions. Each entry maps to a valid JEXL expression.\n" + ~~experiment: + type: string + description: Not to be set by experiment. +microsurvey-feature: + description: "A feature that shows the microsurvey for users to interact with and submit responses.\n" + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "If true, the feature is active.\n" +native-error-page-feature: + description: "This feature is for managing the roll out of the native error page feature\n" + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "If true, the feature is active.\n" + no_internet_connection_error: + type: boolean + description: "This feature is for managing the roll out of the no interet connection native error page feature\n" +night-mode-feature: + description: "Describes the night mode feature's configuration\n" + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "Whether night mode is available for users or not\n" +onboarding-framework-feature: + description: "The new onboarding framework feature that will allow onboarding to be experimentable through initial experiments.\n" + hasExposure: true + exposureDescription: "" + variables: + cards: + type: json + description: "The list of available cards for onboarding.\n" + conditions: + type: json + description: "A collection of out the box conditional expressions to be used in determining whether a card should show or not. Each entry maps to a valid JEXL expression.\n" + dismissable: + type: boolean + description: "Whether or not the entire onboarding is dismissable by pressing an X at the top right corner of the screen.\n" +password-generator-feature: + description: Password Generator Feature + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "If true, the password generator feature is enabled" +pull-to-refresh-refactor-feature: + description: "The Feature flag to manage the roll out of the new pull to refresh feature.\n" + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "Enables the feature\n" +redux-search-settings-feature: + description: "This feature is for managing the roll out of redux on the search settings screen\n" + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "Enables the feature\n" +remote-tab-management: + description: "Features that let users manage tabs on other devices that are connected to the same Mozilla account.\n" + hasExposure: true + exposureDescription: "" + variables: + close-tabs-enabled: + type: boolean + description: "Whether the feature to close synced tabs is enabled. When enabled, this device will allow other devices to close tabs that are open on this device, and show a \"close\" button for tabs that are currently open on other supported devices in the synced tabs tray.\n" +search: + description: "Configuring the functionality to do with search. This will be separated into smaller sub-features in later releases.\n" + hasExposure: true + exposureDescription: "" + variables: + awesome-bar: + type: json + description: Configuring the awesome bar. +sent-from-firefox-feature: + description: "Adds additional promo text to links shared to WhatsApp.\n" + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "Controls whether promo text is added to WhatsApp shares and an on/off toggle is added to Settings.\n" + isTreatmentA: + type: boolean + description: "If true, shares the treatment A text. If false, shares the treatment B text.\n" +shopping2023: + description: "The configuration setting for the status of the Fakespot feature\n" + hasExposure: true + exposureDescription: "" + variables: + back_in_stock_reporting: + type: boolean + description: "If true, enables for users the reporting feature for products back in stock.\n" + config: + type: json + description: "A Map of website configurations\n" + product_ads: + type: boolean + description: "If true, enables the product advertisement feature, allowing users to see and interact with ads for various products.\n" + relay: + type: string + description: "Configurable relay URL for production environment\n" + status: + type: boolean + description: "Whether the Fakespot feature is enabled or disabled\n" +splash-screen: + description: "A feature that extends splash screen duration, allowing additional data fetching time for the app's initial run.\n" + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "If true, the feature is active.\n" + maximum_duration_ms: + type: int + description: "The maximum amount of time in milliseconds the splashscreen will be visible while waiting for initialization calls to complete.\n" +spotlight-search: + description: Add pages as items findable with Spotlight. + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "If this is true, then on each page load adds a new item to Spotlight." + icon-type: + type: string + description: "The icon that is displayed next to the item in the search results. If this is `null`, then no icon is displayed.\n" + keep-for-days: + type: int + description: "Number of days to keep the item before automatic deletion. If this is left `null`, then it is left to iOS's default.\n" + searchable-content: + type: string + description: "The text content that is made searchable. If this is `null` then no additional content is used, and only the title and URL will be used.\n" +tabTrayFeature: + description: The tab tray screen that the user goes to when they open the tab tray. + hasExposure: true + exposureDescription: "" + variables: + sections-enabled: + type: json + description: "This property provides a lookup table of whether or not the given section should be enabled. If the section is enabled, it should be toggleable in the settings screen, and on by default." +toolbar-refactor-feature: + description: "This feature is for managing the roll out of the Toolbar refactor feature\n" + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "Enables the feature\n" + navigation_hint: + type: boolean + description: "If true, enables the navigation contextual hint.\n" + one_tap_new_tab: + type: boolean + description: "If true, enables the one tap new tab feature for users.\n" + unified_search: + type: boolean + description: "Enables the unified search feature\n" +tos-feature: + description: "This feature is for managing the roll out of the ToS (Term of Service) implementation\n" + hasExposure: true + exposureDescription: "" + variables: + status: + type: boolean + description: "Enables the feature\n" +tracking-protection-refactor: + description: "The Enhanced Tracking Protection refactor\n" + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "Whether the Enhanced Tracking Protection refactor is enabled or not\n" +unified-ads: + description: "This property is for managing the roll out of the unified ads API\n" + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "If true, we will enable user to use the unified ads API\n" +universal-links: + description: "This feature is for managing the roll out of universal link support in the iOS App\n" + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "If true, enables the feature\n" +zoom-feature: + description: "The configuration for the status of the zoom feature\n" + hasExposure: true + exposureDescription: "" + variables: + status: + type: boolean + description: "Whether the page zoom feature is enabled or not\n" diff --git a/experimenter/experimenter/features/manifests/ios/v136.0.0/release.fml.yaml b/experimenter/experimenter/features/manifests/ios/v136.0.0/release.fml.yaml new file mode 100644 index 0000000000..e02df600a2 --- /dev/null +++ b/experimenter/experimenter/features/manifests/ios/v136.0.0/release.fml.yaml @@ -0,0 +1,1034 @@ +--- +version: 1.0.0 +about: + description: The root level Feature Manifest for Firefox for iOS +channels: + - release +features: + account-settings-redux-feature: + description: "This feature is for managing the roll out of the Account Settings Redux implementation\n" + variables: + enabled: + description: "Enables the feature\n" + type: Boolean + default: false + address-autofill-edit: + description: This property defines if the address editing is enabled in Settings + variables: + status: + description: "If true, we will allow user to edit the address" + type: Boolean + default: false + bookmark-refactor-feature: + description: "The Feature for managing the roll out of the Bookmark refactor feature\n" + variables: + enabled: + description: "Enables the bookmark refactor feature\n" + type: Boolean + default: false + contextual-hint-feature: + description: This set holds all features pertaining to contextual hints. + variables: + features-enabled: + description: "This property provides a lookup table of whether specific contextual hints are enabled.\n" + type: "Map" + default: + toolbar-hint: true + credit-card-autofill: + description: This property defines the credit card autofill feature + variables: + credit-card-autofill-status: + description: "If true, we will allow user to use the credit autofill feature" + type: Boolean + default: true + felt-privacy-feature: + description: The feature that enhances private browsing mode + variables: + felt-deletion-enabled: + description: "If true, enable Felt Deletion part of Felt Privacy" + type: Boolean + default: false + simplified-ui-enabled: + description: "If true, enable simplified UI part of Felt Privacy" + type: Boolean + default: false + firefox-suggest-feature: + description: Configuration for the Firefox Suggest feature. + variables: + available-suggestions-types: + description: "A map of suggestion types to booleans that indicate whether or not the provider should return suggestions of those types.\n" + type: "Map" + default: + amp: true + ampMobile: false + wikipedia: true + status: + description: "Whether the feature is enabled. When Firefox Suggest is enabled, Firefox will download and store new search suggestions in the background, and show additional Search settings to control which suggestions appear in the awesomebar. When Firefox Suggest is disabled, Firefox will not download new suggestions, and hide the additional Search settings.\n" + type: Boolean + default: false + general-app-features: + description: The feature that contains feature flags for the entire application + variables: + report-site-issue: + description: This property defines whether or not the feature is enabled + type: GeneralFeature + default: + status: false + glean-server-knobs: + description: A feature that provides server-side configurations for Glean metrics (aka Server Knobs). + variables: + metrics-enabled: + description: "A map of metric base-identifiers to booleans representing the state of the 'enabled' flag for that metric." + type: "Map" + default: {} + homepage-rebuild-feature: + description: "This feature is for managing the roll out of the Homepage rebuild feature\n" + variables: + enabled: + description: "If true, enables the feature\n" + type: Boolean + default: false + homescreenFeature: + description: The homescreen that the user goes to when they press home or new tab. + variables: + prefer-switch-to-open-tab: + description: "Enables the feature to automatically switch to an existing tab with the same content instead of opening a new one.\n" + type: Boolean + default: false + sections-enabled: + description: "This property provides a lookup table of whether or not the given section should be enabled. If the section is enabled, it should be toggleable in the settings screen, and on by default.\n" + type: "Map" + default: + jump-back-in: true + recent-explorations: false + login-autofill: + description: This property defines the login autofill feature for automatically filling in usernames and passwords. + variables: + login-autofill-status: + description: "If true, allows the user to use the login autofill feature for usernames and passwords." + type: Boolean + default: true + menu-refactor-feature: + description: "Controls the menu refactor feature\n" + variables: + enabled: + description: "Controls which menu users will see\n" + type: Boolean + default: false + menu-hint: + description: "If true, enables the menu contextual hint.\n" + type: Boolean + default: false + messaging: + description: "The in-app messaging system\n" + documentation: + - name: User documentation + url: "https://experimenter.info/messaging/mobile-messaging" + contacts: + - jhugman@mozilla.com + - brennie@mozilla.com + - gbuciu@mozilla.com + - wteichmann@mozilla.com + events: + - "https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_shown" + - "https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_clicked" + - "https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_expired" + - "https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_dismissed" + - "https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_malformed" + variables: + actions: + description: A growable map of action URLs. + type: "Map" + default: + OPEN_SETTINGS: "://deep-link?url=settings/general" + OPEN_SETTINGS_NEW_TAB: "://deep-link?url=settings/newtab" + OPEN_SETTINGS_HOMESCREEN: "://deep-link?url=settings/homepage" + OPEN_SETTINGS_WALLPAPERS: "://deep-link?url=settings/wallpaper" + OPEN_SETTINGS_EMAIL: "://deep-link?url=settings/mailto" + OPEN_SETTINGS_SEARCH_ENGINE: "://deep-link?url=settings/search" + OPEN_SETTINGS_PRIVACY: "://deep-link?url=settings/clear-private-data" + OPEN_SETTINGS_FXA: "://deep-link?url=settings/fxa" + OPEN_SETTINGS_THEME: "://deep-link?url=settings/theme" + OPEN_URL: "://open-url" + VIEW_BOOKMARKS: "://deep-link?url=homepanel/bookmarks" + VIEW_TOP_SITES: "://deep-link?url=homepanel/top-sites" + VIEW_READING_LIST: "://deep-link?url=homepanel/reading-list" + VIEW_HISTORY: "://deep-link?url=homepanel/history" + VIEW_DOWNLOADS: "://deep-link?url=homepanel/downloads" + ENABLE_PRIVATE_BROWSING: "://deep-link?url=homepanel/new-private-tab" + OPEN_NEW_TAB: "://deep-link?url=homepanel/new-tab" + MAKE_DEFAULT_BROWSER: "://deep-link?url=default-browser/system-settings" + MAKE_DEFAULT_BROWSER_WITH_TUTORIAL: "://deep-link?url=default-browser/tutorial" + OPEN_SHARE_SHEET: "://share-sheet" + string-alias: ActionName + message-under-experiment: + description: "Deprecated. Please use \"experiment\": \"{experiment}\" instead." + type: Option + default: ~ + messages: + description: "A growable collection of messages, where the Key is the message identifier and the value is its associated MessageData.\n" + type: "Map" + default: + default-browser: + surface: new-tab-card + style: FALLBACK + trigger-if-all: + - SUPPORTS_DEFAULT_BROWSER + - ON_FOURTH_LAUNCH_THIS_YEAR + except-if-any: + - I_AM_DEFAULT_BROWSER + title: Default Browser/DefaultBrowserCard.Title + text: Default Browser/DefaultBrowserCard.Description + button-label: Default Browser/DefaultBrowserCard.Button.v2 + action: MAKE_DEFAULT_BROWSER_WITH_TUTORIAL + string-alias: MessageKey + on-control: + description: What should be displayed when a control message is selected. + type: ControlMessageBehavior + default: show-next-message + styles: + description: "A map of styles to configure message appearance.\n" + type: "Map" + default: + FALLBACK: + priority: 40 + max-display-count: 20 + DEFAULT: + priority: 50 + max-display-count: 5 + MICROSURVEY: + priority: 50 + max-display-count: 1 + NOTIFICATION: + priority: 50 + max-display-count: 1 + PERSISTENT: + priority: 50 + max-display-count: 20 + SURVEY: + priority: 55 + max-display-count: 10 + WARNING: + priority: 60 + max-display-count: 10 + URGENT: + priority: 100 + max-display-count: 10 + string-alias: StyleName + triggers: + description: "A collection of out the box trigger expressions. Each entry maps to a valid JEXL expression.\n" + type: "Map" + default: + ALWAYS: "true" + NEVER: "false" + USER_RECENTLY_INSTALLED: days_since_install < 7 + USER_RECENTLY_UPDATED: days_since_update < 7 && days_since_install != days_since_update + USER_TIER_ONE_COUNTRY: "('US' in locale || 'GB' in locale || 'CA' in locale || 'DE' in locale || 'FR' in locale)" + USER_EN_SPEAKER: "'en' in locale" + USER_ES_SPEAKER: "'es' in locale" + USER_DE_SPEAKER: "'de' in locale" + USER_FR_SPEAKER: "'fr' in locale" + DEVICE_ANDROID: "os == 'Android'" + DEVICE_IOS: "os == 'iOS'" + DAY_1_AFTER_INSTALL: days_since_install == 1 + DAY_2_AFTER_INSTALL: days_since_install == 2 + DAY_3_AFTER_INSTALL: days_since_install == 3 + DAY_4_AFTER_INSTALL: days_since_install == 4 + DAY_5_AFTER_INSTALL: days_since_install == 5 + MORE_THAN_24H_SINCE_INSTALLED_OR_UPDATED: days_since_update >= 1 + NOT_LAUNCHED_YESTERDAY: "'app_cycle.foreground'|eventLastSeen('Days', 1) > 1" + AFTER_THREE_LAUNCHES_THIS_WEEK: "'app_cycle.foreground'|eventSum('Weeks', 1, 0) >= 3" + I_AM_DEFAULT_BROWSER: is_default_browser + I_AM_NOT_DEFAULT_BROWSER: is_default_browser == false + SUPPORTS_DEFAULT_BROWSER: "os_version|versionCompare('14.!') >= 0" + INACTIVE_NEW_USER: is_inactive_new_user + ALLOWED_TIPS_NOTIFICATIONS: allowed_tips_notifications + FXA_CURRENTLY_SIGNED_IN: is_fxa_signed_in == true + SECOND_HOMEPAGE_VIEW: "'homepage_viewed'|eventSum('Years', 4, 0) >= 2" + ON_FOURTH_LAUNCH_THIS_YEAR: "'app_cycle.foreground'|eventSum('Years', 1, 0) > 3" + string-alias: TriggerName + ~~experiment: + description: Not to be set by experiment. + type: ExperimentSlug + default: "{experiment}" + string-alias: ExperimentSlug + allow-coenrollment: true + microsurvey-feature: + description: "A feature that shows the microsurvey for users to interact with and submit responses.\n" + variables: + enabled: + description: "If true, the feature is active.\n" + type: Boolean + default: false + native-error-page-feature: + description: "This feature is for managing the roll out of the native error page feature\n" + variables: + enabled: + description: "If true, the feature is active.\n" + type: Boolean + default: false + no_internet_connection_error: + description: "This feature is for managing the roll out of the no interet connection native error page feature\n" + type: Boolean + default: false + night-mode-feature: + description: "Describes the night mode feature's configuration\n" + variables: + enabled: + description: "Whether night mode is available for users or not\n" + type: Boolean + default: true + onboarding-framework-feature: + description: "The new onboarding framework feature that will allow onboarding to be experimentable through initial experiments.\n" + variables: + cards: + description: "The list of available cards for onboarding.\n" + type: "Map" + default: + welcome: + card-type: basic + order: 10 + title: Onboarding/Onboarding.Welcome.Title.TreatementA.v120 + body: Onboarding/Onboarding.Welcome.Description.TreatementA.v120 + image: welcome-globe + link: + title: Onboarding/Onboarding.Welcome.Link.Action.v114 + url: "https://www.mozilla.org/privacy/firefox/" + buttons: + primary: + title: Onboarding/Onboarding.Welcome.ActionTreatementA.v114 + action: open-instructions-popup + secondary: + title: Onboarding/Onboarding.Welcome.Skip.v114 + action: forward-one-card + instructions-popup: + title: Onboarding/DefaultBrowserPopup.Title.v114 + button-title: Onboarding/DefaultBrowserPopup.ButtonTitle.v114 + button-action: open-ios-fx-settings + instructions: + - Onboarding/DefaultBrowserPopup.FirstLabel.v114 + - Onboarding/DefaultBrowserPopup.SecondLabel.v114 + - Onboarding/DefaultBrowserPopup.ThirdLabel.v114 + onboarding-type: fresh-install + prerequisites: + - ALWAYS + notification-permissions: + card-type: basic + order: 30 + title: Onboarding/Onboarding.Notification.Title.v120 + body: Onboarding/Onboarding.Notification.Description.v120 + image: notifications + buttons: + primary: + title: Onboarding/Onboarding.Notification.TurnOnNotifications.Action.v114 + action: request-notifications + secondary: + title: Onboarding/Onboarding.Notification.Skip.Action.v115 + action: forward-one-card + onboarding-type: fresh-install + prerequisites: + - ALWAYS + sign-to-sync: + card-type: basic + order: 20 + title: Onboarding/Onboarding.Sync.Title.v120 + body: Onboarding/Onboarding.Sync.Description.v123 + image: sync-devices + buttons: + primary: + title: Onboarding/Onboarding.Sync.SignIn.Action.v114 + action: sync-sign-in + secondary: + title: Onboarding/Onboarding.Sync.Skip.Action.v114 + action: forward-one-card + onboarding-type: fresh-install + prerequisites: + - ALWAYS + customization-theme: + card-type: multiple-choice + order: 40 + title: Onboarding/Onboarding.Customization.Theme.Title.v123 + body: Onboarding/Onboarding.Customization.Theme.Description.v123 + image: themeing + buttons: + primary: + title: Onboarding/Onboarding.Customization.Theme.Continue.Action.v123 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Customization.Theme.System.Action.v123 + image: theme-system + action: theme-system-default + - title: Onboarding/Onboarding.Customization.Theme.Light.Action.v123 + image: theme-light + action: theme-light + - title: Onboarding/Onboarding.Customization.Theme.Dark.Action.v123 + image: theme-dark + action: theme-dark + onboarding-type: fresh-install + prerequisites: + - ALWAYS + customization-toolbar: + card-type: multiple-choice + order: 41 + title: Onboarding/Onboarding.Customization.Toolbar.Title.v123 + body: Onboarding/Onboarding.Customization.Toolbar.Description.v123 + image: toolbar + buttons: + primary: + title: Onboarding/Onboarding.Customization.Toolbar.Continue.Action.v123 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Customization.Toolbar.Top.Action.v123 + image: toolbar-top + action: toolbar-top + - title: Onboarding/Onboarding.Customization.Toolbar.Bottom.Action.v123 + image: toolbar-bottom + action: toolbar-bottom + onboarding-type: fresh-install + prerequisites: + - ALWAYS + update-welcome: + card-type: basic + order: 10 + title: Upgrade/Upgrade.Welcome.Title.v114 + body: Upgrade/Upgrade.Welcome.Description.v114 + image: welcome-globe + buttons: + primary: + title: Upgrade/Upgrade.Welcome.Action.v114 + action: forward-one-card + onboarding-type: upgrade + prerequisites: + - NEVER + update-sign-to-sync: + card-type: basic + order: 20 + title: Upgrade/Upgrade.SyncSign.Title.v114 + body: Upgrade/Upgrade.SyncSign.Description.v114 + image: sync-devices + buttons: + primary: + title: Upgrade/Upgrade.SyncSign.Action.v114 + action: sync-sign-in + secondary: + title: Onboarding/Onboarding.LaterAction.v114 + action: forward-one-card + onboarding-type: upgrade + prerequisites: + - NEVER + string-alias: NimbusOnboardingCardKey + conditions: + description: "A collection of out the box conditional expressions to be used in determining whether a card should show or not. Each entry maps to a valid JEXL expression.\n" + type: "Map" + default: + ALWAYS: "true" + NEVER: "false" + string-alias: ConditionName + dismissable: + description: "Whether or not the entire onboarding is dismissable by pressing an X at the top right corner of the screen.\n" + type: Boolean + default: true + password-generator-feature: + description: Password Generator Feature + variables: + enabled: + description: "If true, the password generator feature is enabled" + type: Boolean + default: false + pull-to-refresh-refactor-feature: + description: "The Feature flag to manage the roll out of the new pull to refresh feature.\n" + variables: + enabled: + description: "Enables the feature\n" + type: Boolean + default: false + redux-search-settings-feature: + description: "This feature is for managing the roll out of redux on the search settings screen\n" + variables: + enabled: + description: "Enables the feature\n" + type: Boolean + default: false + remote-tab-management: + description: "Features that let users manage tabs on other devices that are connected to the same Mozilla account.\n" + variables: + close-tabs-enabled: + description: "Whether the feature to close synced tabs is enabled. When enabled, this device will allow other devices to close tabs that are open on this device, and show a \"close\" button for tabs that are currently open on other supported devices in the synced tabs tray.\n" + type: Boolean + default: false + search: + description: "Configuring the functionality to do with search. This will be separated into smaller sub-features in later releases.\n" + variables: + awesome-bar: + description: Configuring the awesome bar. + type: AwesomeBar + default: + min-search-term: 3 + position: + is-bottom: true + is-position-feature-enabled: true + is-toolbar-cfr-on: false + search-highlights: false + use-page-content: false + sent-from-firefox-feature: + description: "Adds additional promo text to links shared to WhatsApp.\n" + variables: + enabled: + description: "Controls whether promo text is added to WhatsApp shares and an on/off toggle is added to Settings.\n" + type: Boolean + default: false + isTreatmentA: + description: "If true, shares the treatment A text. If false, shares the treatment B text.\n" + type: Boolean + default: true + shopping2023: + description: "The configuration setting for the status of the Fakespot feature\n" + variables: + back_in_stock_reporting: + description: "If true, enables for users the reporting feature for products back in stock.\n" + type: Boolean + default: false + config: + description: "A Map of website configurations\n" + type: "Map" + default: + amazon: + productIdFromURLRegex: "(?:[\\\\/]|$|%2F)(?[A-Z0-9]{10})(?:[\\\\/]|$|\\\\#|\\\\?|%2F)" + validTLDs: + - com + - de + - fr + walmart: + productIdFromURLRegex: "\\\\/ip\\\\/(?:[A-Za-z0-9-]{1,320}\\\\/)?(?[0-9]{3,13})" + validTLDs: + - com + bestbuy: + productIdFromURLRegex: "\\\\/(?\\\\d+\\\\.p)" + validTLDs: + - com + product_ads: + description: "If true, enables the product advertisement feature, allowing users to see and interact with ads for various products.\n" + type: Boolean + default: false + relay: + description: "Configurable relay URL for production environment\n" + type: String + default: "https://mozilla-ohttp-fakespot.fastly-edge.com/" + status: + description: "Whether the Fakespot feature is enabled or disabled\n" + type: Boolean + default: false + splash-screen: + description: "A feature that extends splash screen duration, allowing additional data fetching time for the app's initial run.\n" + variables: + enabled: + description: "If true, the feature is active.\n" + type: Boolean + default: false + maximum_duration_ms: + description: "The maximum amount of time in milliseconds the splashscreen will be visible while waiting for initialization calls to complete.\n" + type: Int + default: 0 + spotlight-search: + description: Add pages as items findable with Spotlight. + variables: + enabled: + description: "If this is true, then on each page load adds a new item to Spotlight." + type: Boolean + default: false + icon-type: + description: "The icon that is displayed next to the item in the search results. If this is `null`, then no icon is displayed.\n" + type: Option + default: letter + keep-for-days: + description: "Number of days to keep the item before automatic deletion. If this is left `null`, then it is left to iOS's default.\n" + type: Option + default: ~ + searchable-content: + description: "The text content that is made searchable. If this is `null` then no additional content is used, and only the title and URL will be used.\n" + type: Option + default: text-excerpt + tabTrayFeature: + description: The tab tray screen that the user goes to when they open the tab tray. + variables: + sections-enabled: + description: "This property provides a lookup table of whether or not the given section should be enabled. If the section is enabled, it should be toggleable in the settings screen, and on by default." + type: "Map" + default: + inactive-tabs: true + toolbar-refactor-feature: + description: "This feature is for managing the roll out of the Toolbar refactor feature\n" + variables: + enabled: + description: "Enables the feature\n" + type: Boolean + default: false + navigation_hint: + description: "If true, enables the navigation contextual hint.\n" + type: Boolean + default: false + one_tap_new_tab: + description: "If true, enables the one tap new tab feature for users.\n" + type: Boolean + default: false + unified_search: + description: "Enables the unified search feature\n" + type: Boolean + default: false + tos-feature: + description: "This feature is for managing the roll out of the ToS (Term of Service) implementation\n" + variables: + status: + description: "Enables the feature\n" + type: Boolean + default: false + tracking-protection-refactor: + description: "The Enhanced Tracking Protection refactor\n" + variables: + enabled: + description: "Whether the Enhanced Tracking Protection refactor is enabled or not\n" + type: Boolean + default: false + unified-ads: + description: "This property is for managing the roll out of the unified ads API\n" + variables: + enabled: + description: "If true, we will enable user to use the unified ads API\n" + type: Boolean + default: false + universal-links: + description: "This feature is for managing the roll out of universal link support in the iOS App\n" + variables: + enabled: + description: "If true, enables the feature\n" + type: Boolean + default: false + zoom-feature: + description: "The configuration for the status of the zoom feature\n" + variables: + status: + description: "Whether the page zoom feature is enabled or not\n" + type: Boolean + default: true +enums: + ContextualHint: + description: The identifiers for a individual contextual hints. + variants: + toolbar-hint: + description: The contextual hint bubble that appears to provide a hint about the toolbar. + ControlMessageBehavior: + description: An enum to influence what should be displayed when a control message is selected. + variants: + show-next-message: + description: The next eligible message should be shown. + show-none: + description: The surface should show no message. + HomeScreenSection: + description: The identifiers for the sections of the homescreen. + variants: + jump-back-in: + description: The tabs the user was looking immediately before being interrupted. + recent-explorations: + description: The tab groups + IconType: + description: "The icon that will be added to the item in the device's search engine." + variants: + favicon: + description: The favicon of the page + letter: + description: An icon generated from the first letter of the base domain. + screenshot: + description: A screenshot of the page at load time. + MessageSurfaceId: + description: "For messaging, we would like to have a message tell us which surface its associated with. This is a label that matches across both Android and iOS.\n" + variants: + Unknown: + description: A message has NOT declared its target surface. + microsurvey: + description: This is a microsurvey that appears on top of the bottom toolbar to the user. + new-tab-card: + description: This is the card that appears at the top on the Firefox Home Page. + notification: + description: This is a local notification send to the user periodically with tips and updates. + survey: + description: This is a full-page that appears providing a survey to the user. + NimbusOnboardingHeaderImage: + description: "The identifiers for the different images available for cards in onboarding\n" + variants: + customize-firefox: + description: "Corresponding to the fox window image\n" + notifications: + description: "Corresponding to the notifications image\n" + notifications-ctd: + description: "Corresponding to the notifications image for CTD\n" + search-widget: + description: "Corresponding to the fox search widget image\n" + set-default-steps: + description: "Corresponding to the set to default steps image\n" + set-to-dock: + description: "Corresponding to the set to dock image\n" + sync-devices: + description: "Corresponding to the sync-devices image\n" + sync-devices-ctd: + description: "Corresponding to the sync image for CTD\n" + themeing: + description: "Corresponding to the fox world image\n" + toolbar: + description: "Corresponding to the fox world image\n" + welcome-ctd: + description: "Corresponding to the welcome image for CTD\n" + welcome-globe: + description: "Corresponding to the fox world image\n" + NimbusOnboardingMultipleChoiceButtonImage: + description: "The identifiers for the different images available for multiple choice buttons in onboarding\n" + variants: + theme-dark: + description: "Corresponding to the dark theme\n" + theme-light: + description: "Corresponding to the light theme\n" + theme-system: + description: "Corresponding to the system theme\n" + toolbar-bottom: + description: "Corresponding to the toolbar on the bottom\n" + toolbar-top: + description: "Corresponding to the toolbar on top\n" + OnboardingActions: + description: "The identifiers for the different actions available for cards in onboarding\n" + variants: + end-onboarding: + description: "Will end the onboarding on a set card\n" + forward-one-card: + description: "Will take the user to the next card\n" + forward-three-card: + description: "Will take the user to the next card\n" + forward-two-card: + description: "Will take the user to the next card\n" + open-instructions-popup: + description: "Will open up a popup with instructions for something\n" + open-ios-fx-settings: + description: "Will take the user to the default browser settings in the iOS system settings\n" + read-privacy-policy: + description: "Will open a webview where the user can read the privacy policy\n" + request-notifications: + description: "Will request to allow notifications from the user\n" + set-default-browser: + description: "Will send the user to settings to set Firefox as their default browser and advance to next card\n" + sync-sign-in: + description: "Will take the user to the sync sign in flow\n" + OnboardingCardType: + description: "The identifiers for the different types of onboarding cards.\n" + variants: + basic: + description: "Corresponding to basic info onboarding cards\n" + multiple-choice: + description: "Corresponding to onboarding cards with multiple choice buttons\n" + OnboardingInstructionsPopupActions: + description: "The identifiers for the different actions available for the insturction card in onboarding\n" + variants: + dismiss: + description: "Will dismiss the popup\n" + dismiss-and-next-card: + description: "Will dismiss the popup and move to the next card\n" + open-ios-fx-settings: + description: "Will take the user to the default browser settings in the iOS system settings\n" + OnboardingMultipleChoiceAction: + description: "The identifiers for the different actions available for cards in onboarding\n" + variants: + theme-dark: + description: "Will will set the theme to dark mode\n" + theme-light: + description: "Will set the theme to light mode\n" + theme-system-default: + description: "Will set the theme to use the system theme\n" + toolbar-bottom: + description: "Will set the toolbar on the bottom\n" + toolbar-top: + description: "Will set the toolbar on the top\n" + OnboardingType: + description: "The identifiers for the different types of onboarding cards.\n" + variants: + fresh-install: + description: "Corresponding to onboarding cards that are for new users\n" + upgrade: + description: "Corresponding to onboarding cards that are for users who have updated\n" + PageContent: + description: "The page content that will be added as an item in the device's search engine." + variants: + html-content: + description: Use all the page as HTML + text-content: + description: Use all the page as text + text-excerpt: + description: Only use the first paragraph + SuggestionType: + description: The type of a Firefox Suggest search suggestion. + variants: + amp: + description: A Firefox Suggestion for desktop from adMarketplace. + ampMobile: + description: A Firefox Suggestion specifically for mobile from adMarketplace. + wikipedia: + description: A Firefox Suggestion for a Wikipedia page. + TabTraySection: + description: The identifiers for the sections of the tab tray. + variants: + inactive-tabs: + description: Tabs that have been automatically closed for the user. +objects: + AwesomeBar: + description: "A configuration option for the awesome bar. Part of the `search` feature." + fields: + min-search-term: + description: The minimum number of characters that the user types before searching in the page. + type: Int + default: 3 + position: + description: "This property defines whether or not the feature is enabled, and the position of the search bar\n" + type: SearchBarPositionFeature + default: + is-position-feature-enabled: true + is-bottom: true + is-toolbar-cfr-on: true + search-highlights: + description: Whether or not search highlights are enabled + type: Boolean + default: false + use-page-content: + description: "Search in the open tab's text content when typing." + type: Boolean + default: false + GeneralFeature: + description: The configuration for the a feature that can be enabled or disabled + fields: + status: + description: Whether or not the feature is enabled + type: Boolean + default: false + MessageData: + description: "An object to describe a message. It uses human readable strings to describe the triggers, action and style of the message as well as the text of the message and call to action.\n" + fields: + action: + description: "The name of a deeplink URL to be opened if the button is clicked.\n" + type: Option + default: ~ + action-params: + description: Query parameters appended to the deeplink action URL + type: "Map" + default: {} + button-label: + description: "The text on the button. If no text is present, the whole message is clickable.\n" + type: Option + default: ~ + except-if-any: + description: "A list of strings corresponding to targeting expressions. If any of these expressions evaluate to `true`, the message will not be eligible.\n" + type: List + default: [] + experiment: + description: The experiment slug that this message is involved in. + type: Option + default: ~ + is-control: + description: "Indicates if this message is the control message, if true shouldn't be displayed" + type: Boolean + default: false + microsurveyConfig: + description: Optional configuration data for a microsurvey. + type: Option + default: ~ + style: + description: "The style as described in a `StyleData` from the styles table.\n" + type: StyleName + default: DEFAULT + surface: + description: Each message will tell us the surface it is targeting with this. + type: MessageSurfaceId + default: Unknown + text: + description: The message text displayed to the user + type: Text + default: "" + title: + description: The title text displayed to the user + type: Option + default: ~ + trigger-if-all: + description: "A list of strings corresponding to targeting expressions. All named expressions must evaluate to true if the message is to be eligible to be shown.\n" + type: List + default: + - ALWAYS + MicrosurveyConfig: + description: "Attributes relating to microsurvey messaging.\n" + fields: + icon: + description: The asset name in our bundle used as the icon shown in the survey. + type: Image + default: lightbulbLarge + options: + description: The list of survey options to present to the user. + type: List + default: [] + utm-content: + description: The name used to provide as the utm_content parameter for the privacy notice. + type: Option + default: ~ + NimbusOnboardingButton: + description: "A group of properties describing the attributes of a card.\n" + fields: + action: + description: "The action the button should take. The default for this will be \"forward-one-card\"\n" + type: OnboardingActions + default: forward-one-card + title: + description: "The text of the button title. This should never be defaulted.\n" + type: Text + default: "" + NimbusOnboardingButtons: + description: "A set of buttons for the card. There can be up to two, but there must be at least one.\n" + fields: + primary: + description: "The primary button for the card. This must exist.\n" + type: NimbusOnboardingButton + default: + title: Primary Button + action: forward-one-card + secondary: + description: "A secondary, optional, button for the card.\n" + type: Option + default: ~ + NimbusOnboardingCardData: + description: "A group of properties describing the attributes of a card.\n" + fields: + body: + description: "The body text dispalyed on the card, in less prominent text. This should never be defaulted.\n" + type: Text + default: "" + buttons: + description: "The set of buttons associated with the card.\n" + type: NimbusOnboardingButtons + default: + primary: + title: Onboarding/Onboarding.Sync.Skip.Action.v114 + action: forward-one-card + secondary: ~ + card-type: + description: "The type of onboarding this card should be shown in, whether it a fresh install or an update. The default is fresh-install.\n" + type: OnboardingCardType + default: basic + disqualifiers: + description: "A list of ConditionName strings corresponding to targeting expressions. The card will not be shown if any expression is `true`.\n" + type: List + default: [] + image: + description: "The image that should be dispalyed on the card.\n" + type: NimbusOnboardingHeaderImage + default: welcome-globe + instructions-popup: + description: "The object describing the specific instruction popup button for a card. If left empty, the card will have no instruction popup information\n" + type: Option + default: ~ + link: + description: "The object describing the link button for a card. If left empty, the card will have no link.\n" + type: Option + default: ~ + multiple-choice-buttons: + description: "A list of multiple choice buttons that the card will display\n" + type: List + default: [] + onboarding-type: + description: "The type of onboarding this card should be shown in, whether it a fresh install or an update. The default is fresh-install.\n" + type: OnboardingType + default: fresh-install + order: + description: "The place in the order where the card will be found. The feature layer will then sort the cards based on this field.\n" + type: Int + default: 10 + prerequisites: + description: "A list of ConditionName strings corresponding to targeting expressions. The card will be shown if all expressions `true` and if no expressions in the `disqualifiers` table are true, or if the `disqualifiers` table is empty.\n" + type: List + default: [] + title: + description: "The title displayed on the card, in prominent, bolded text. This should never be defaulted.\n" + type: Text + default: "" + NimbusOnboardingInstructionPopup: + description: "The object outlining the content of the instruction card.\n" + fields: + button-action: + description: "The action the button should have. Default is `dismiss-and-next-card`\n" + type: OnboardingInstructionsPopupActions + default: dismiss-and-next-card + button-title: + description: "The title the button should have. This should never be defaulted.\n" + type: Text + default: "" + instructions: + description: "A list of instructions, either as free text, or as Text identifiers.\n" + type: List + default: [] + title: + description: "The text of the popup. This should never be defaulted.\n" + type: Text + default: "" + NimbusOnboardingLink: + description: "A group of properties describing the attributes for the active link on a card\n" + fields: + title: + description: "The text of the link title.\n" + type: Text + default: Onboarding/Onboarding.Welcome.Link.Action.v114 + url: + description: "The url that the link will lead to.\n" + type: String + default: "https://www.mozilla.org/privacy/firefox/" + NimbusOnboardingMultipleChoiceButton: + description: "A group of properties describing the attributes of a multiple choice button on a card\n" + fields: + action: + description: "The action the button should take. The default for this will be \"theme-system-default\"\n" + type: OnboardingMultipleChoiceAction + default: theme-system-default + image: + description: "The text of the button title. This should never be defaulted.\n" + type: NimbusOnboardingMultipleChoiceButtonImage + default: theme-system + title: + description: "The text of the button title. This should never be defaulted.\n" + type: Text + default: "" + SearchBarPositionFeature: + description: The configuration for the bottom search bar on the homescreen + fields: + is-bottom: + description: Whether or not the default position is at the bottom + type: Boolean + default: true + is-position-feature-enabled: + description: Whether or not the feature is enabled + type: Boolean + default: true + is-toolbar-cfr-on: + description: Whether or not the toolbar CFR shows. This is a temporary hack for Nimbus + type: Boolean + default: true + StyleData: + description: "A group of properities (predominantly visual) to the describe style of the message.\n" + fields: + max-display-count: + description: "How many sessions will this message be shown to the user before it is expired.\n" + type: Int + default: 5 + priority: + description: "The importance of this message. 0 is not very important, 100 is very important.\n" + type: Int + default: 50 + WebsiteConfig: + description: "It represents a configuration for different e-commerce websites and includes regular expressions for extracting product IDs from their respective URLs\n" + fields: + productIdFromURLRegex: + description: "It represents the product ID extracted from a regex query\n" + type: String + default: "" + validTLDs: + description: "Valid Top Level Domains\n" + type: List + default: [] From e0d97d537c981b0c421036798368b5baabad3d38 Mon Sep 17 00:00:00 2001 From: Benjamin Forehand Jr Date: Mon, 6 Jan 2025 17:31:18 -0600 Subject: [PATCH 03/36] fix(tests): Hardcode sdk targeting test path. (#11995) Because - Something changed recently with the rust image we use for the sdk targeting tests that now causes pytest to not detect the test file we need to run This commit - Hard codes the path so that we don't need to rely on resolving it. Fixes #11994 --- experimenter/tests/nimbus_rust_tests.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/experimenter/tests/nimbus_rust_tests.sh b/experimenter/tests/nimbus_rust_tests.sh index fc6703e12e..0a9926078a 100755 --- a/experimenter/tests/nimbus_rust_tests.sh +++ b/experimenter/tests/nimbus_rust_tests.sh @@ -14,5 +14,5 @@ poetry -C experimenter/tests/integration \ --base-url https://nginx/nimbus/ \ --html=test-reports/report.htm \ --self-contained-html \ - experimenter/tests/integration/nimbus/test_mobile_targeting.py \ + /code/experimenter/tests/integration/nimbus/test_mobile_targeting.py \ -vvv From ff8caa5bed2ab40152ecd921153a89e1c557cc5c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Jan 2025 18:21:37 -0600 Subject: [PATCH 04/36] chore(deps): Bump marshmallow from 3.23.0 to 3.24.0 in /experimenter/tests (#11992) Bumps [marshmallow](https://github.com/marshmallow-code/marshmallow) from 3.23.0 to 3.24.0.
Changelog

Sourced from marshmallow's changelog.

3.24.0 (2025-01-06)


Features:

  • Typing: Improve typings in marshmallow.fields (:pr:2723).
  • Typing: Replace type comments with inline typings (:pr:2718).

Bug fixes:

  • Typing: Fix type hint for nested parameter of Nested <marshmallow.fields.Nested> (:pr:2721).

Deprecations:

  • Custom validators should raise a ValidationError <marshmallow.exceptions.ValidationError> for invalid values. Returning `False`` is no longer supported .
  • Deprecate context parameter of Schema <marshmallow.schema.Schema> (:issue:1826). Use contextVars.ContextVar to pass context data instead.
  • Field <marshmallow.fields.Field>, Mapping <marshmallow.fields.Mapping>, and Number <marshmallow.fields.Number> should no longer be used as fields within schemas. Use their subclasses instead.

3.23.3 (2025-01-03)


Bug fixes:

  • Typing: Fix typing for Schema.from_dict <marshmallow.schema.Schema.from_dict> (:issue:1653). Thanks :user:SteadBytes for reporting.

Support:

  • Documentation: Various documentation cleanups, including more concise docs in the marshmallow.fields API reference (:issue:2307). Thanks :user:AbdealiLoKo for reporting.

3.23.2 (2024-12-18)


Bug fixes:

  • Improve type hint formatting for Field, Nested, and Function fields to resolve PyCharm warnings (:issue:2268). Thanks :user:Fares-Abubaker for reporting and fixing.

3.23.1 (2024-11-01)


Support:

... (truncated)

Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=marshmallow&package-manager=pip&previous-version=3.23.0&new-version=3.24.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- experimenter/tests/poetry.lock | 10 +++++----- experimenter/tests/pyproject.toml | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/experimenter/tests/poetry.lock b/experimenter/tests/poetry.lock index 51d714cbc0..4715e1c6e4 100644 --- a/experimenter/tests/poetry.lock +++ b/experimenter/tests/poetry.lock @@ -526,13 +526,13 @@ files = [ [[package]] name = "marshmallow" -version = "3.23.0" +version = "3.24.0" description = "A lightweight library for converting complex datatypes to and from native Python datatypes." optional = false python-versions = ">=3.9" files = [ - {file = "marshmallow-3.23.0-py3-none-any.whl", hash = "sha256:82f20a2397834fe6d9611b241f2f7e7b680ed89c49f84728a1ad937be6b4bdf4"}, - {file = "marshmallow-3.23.0.tar.gz", hash = "sha256:98d8827a9f10c03d44ead298d2e99c6aea8197df18ccfad360dae7f89a50da2e"}, + {file = "marshmallow-3.24.0-py3-none-any.whl", hash = "sha256:459922b7a1fd3d29d5082ddcadfcea0efd98985030e71d3ef0dd8f44f406e41d"}, + {file = "marshmallow-3.24.0.tar.gz", hash = "sha256:378572f727e52123d00de1bdd9b7ea7bed18bbfedc7f9bfbcddaf78925a8d602"}, ] [package.dependencies] @@ -540,7 +540,7 @@ packaging = ">=17.0" [package.extras] dev = ["marshmallow[tests]", "pre-commit (>=3.5,<5.0)", "tox"] -docs = ["alabaster (==1.0.0)", "autodocsumm (==0.2.13)", "sphinx (==8.1.3)", "sphinx-issues (==5.0.0)", "sphinx-version-warning (==1.1.2)"] +docs = ["alabaster (==1.0.0)", "autodocsumm (==0.2.14)", "sphinx (==8.1.3)", "sphinx-issues (==5.0.0)"] tests = ["pytest", "simplejson"] [[package]] @@ -1733,4 +1733,4 @@ test = ["zope.security", "zope.testrunner"] [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "7ee764c1277123eb80d9bcf258a93ae41be8b35e6d192446c2426e792234a0ba" +content-hash = "ad762912648bbf7d7c87051ce29937f327a2c40b27bf2041138bc0cafef7f6a5" diff --git a/experimenter/tests/pyproject.toml b/experimenter/tests/pyproject.toml index 3521cdfe9f..3121dc3177 100644 --- a/experimenter/tests/pyproject.toml +++ b/experimenter/tests/pyproject.toml @@ -45,7 +45,7 @@ pytest-forked = "^1.6.0" apipkg = "^3.0.2" python-dateutil = "^2.9.0.post0" pydantic = "^1.10.15" -marshmallow = "^3.23.0" +marshmallow = "^3.24.0" marshmallow-enum = "^1.5.1" mypy-extensions = "^1.0.0" charset-normalizer = "^3.4.0" From aa11b495476f0bcf384135841924dc21af492009 Mon Sep 17 00:00:00 2001 From: dataops-ci-bot <59976087+dataops-ci-bot@users.noreply.github.com> Date: Tue, 7 Jan 2025 07:54:14 -0800 Subject: [PATCH 05/36] chore(nimbus): Update External Configs (#11993) SUMMARY: SUCCESS: fenix at master (e24277e20c492b4a785b4488af02cca062ec7c2c) version None fenix at master (e24277e20c492b4a785b4488af02cca062ec7c2c) version 136.0.0 fenix at beta (a64cc659cd6532fb4e838d76c71f6162076cba17) version 135.0.0 firefox_ios at main (f732e7f18b3384061fb87d5aaf1e4257ba86bd64) version None firefox_ios at release/v135 (97d52f4eb357afc7cc73dfdf94ab6a585da2cf12) version 135.0.0 firefox_ios at main (f732e7f18b3384061fb87d5aaf1e4257ba86bd64) version 136.0.0 focus_android at main (fe8a71cd70ad5674abe1824fe11dc78372b736c2) version None focus_ios at main (f732e7f18b3384061fb87d5aaf1e4257ba86bd64) version None focus_ios at release/v135 (97d52f4eb357afc7cc73dfdf94ab6a585da2cf12) version 135.0.0 focus_ios at main (f732e7f18b3384061fb87d5aaf1e4257ba86bd64) version 136.0.0 monitor_cirrus at main (5edcb113aaefe7df6d822a8155e3397340c60e78) version None mozillavpn_backend_cirrus at main (86963e1fe3fbe3aaee3aa3776efad50a85c516e2) version None firefox_accounts_cirrus at main (4e7c4140f90f7bbda51f473fe1f07281131f10a7) version None firefox_desktop at central (a568ac65fd4e6833bbee5cc341b3031de12f41a6) version None firefox_desktop at central (a568ac65fd4e6833bbee5cc341b3031de12f41a6) version 136.0.0 firefox_desktop at beta (2f218da698db4f92722be65f51a6e53d24321cec) version 135.0.0 CACHED: fenix at release (d8f30fc43d8a411937b53bb95eb9555356e9bcb8) version 134.0.0 (cached) firefox_ios at release/v131 (7444df581b62d357df12ddc3c90d821d940efbb8) version 131.5.0 (cached) firefox_ios at release/v132 (cb318d0061ec6354167ecc1968020d5d75f1bffc) version 132.2.0 (cached) firefox_ios at release/v133 (7c651ce29e94c6389af7a69ec6b5c44251976e92) version 133.5.0 (cached) firefox_ios at release/v134 (846f290dfd0627f1873a524da439ebd7a1a4a932) version 134.1.0 (cached) focus_android at releases_v121 (979fbe8d7fe04a9b09fe657bb787fda6f4d5ab42) version 121.1.1 (cached) focus_android at releases_v122 (1fcbfc41dba53965481a0e4d4725833bf3669dce) version 122.1.1 (cached) focus_android at releases_v123 (5a38e0cb4499f659a5fff308fa1deee653c0318b) version 123.1.1 (cached) focus_android at releases_v124 (0ad8d97fb3ab2ec6b9bb3905ee742900a4b9325d) version 124.2.1 (cached) focus_android at releases_v125 (2b43ab8069abac2bfee4b609e734c0207876a2ac) version 125.3.1 (cached) focus_android at focus-v125.3.0 (9f2990415376f169eb0053fceb329b70b4421bcb) version 125.3.0 (cached) focus_android at focus-v125.2.0 (d1c6eeb4167fc8ffed02cdfd3138fa696381d548) version 125.2.0 (cached) focus_android at main (fe8a71cd70ad5674abe1824fe11dc78372b736c2) version 125.0.0 (cached) focus_android at focus-v124.2.0 (7a0e399c7bc4faae43ce70ddc201c7899498d1b5) version 124.2.0 (cached) focus_android at focus-v124.1.0 (516df33ca96e950af1bf791893cd16d7add61c5d) version 124.1.0 (cached) focus_android at focus-v124.0 (5afe87a5bbb92f7ecf990a2fbc8095503a47c272) version 124.0.0 (cached) focus_android at focus-v123.1.0 (cb7c807e0fb5bc08131415e2e5ecef9da658d410) version 123.1.0 (cached) focus_android at focus-v123.0 (f5f378e2c05c9d69a5088c112c14fdea507d1c65) version 123.0.0 (cached) focus_android at focus-v122.1.0 (0d665405685c43c9266a3de65f16eabb832bb908) version 122.1.0 (cached) focus_android at focus-v122.0.1 (c67c9e840c00ec348a6a27adedad28feb54aa4a2) version 122.0.1 (cached) focus_android at focus-v122.0 (b49c4f23804d23cc727b8f70c061dccd64d720bc) version 122.0.0 (cached) focus_android at focus-v121.1.0 (62d5117f7996cc8862fdbdc0cb4a1dd5cdebedd6) version 121.1.0 (cached) focus_android at focus-v121.0.1 (fd4d2513324712e91577d8be18797e64089d3cf1) version 121.0.1 (cached) focus_android at focus-v121.0 (1955f8455fa2cac1b2080af9360996c06df5b4dd) version 121.0.0 (cached) focus_ios at release/v131 (7444df581b62d357df12ddc3c90d821d940efbb8) version 131.5.0 (cached) focus_ios at release/v132 (cb318d0061ec6354167ecc1968020d5d75f1bffc) version 132.2.0 (cached) focus_ios at release/v133 (7c651ce29e94c6389af7a69ec6b5c44251976e92) version 133.5.0 (cached) focus_ios at release/v134 (846f290dfd0627f1873a524da439ebd7a1a4a932) version 134.1.0 (cached) focus_ios at focus/klar-v134.0 (be550d94c2c7bc8b8902cdf7fe542a64e73a381a) version 134.0.0 (cached) focus_ios at focus/klar-v133.0 (a3372669a06fa684d3c5945c317d6787e3125303) version 133.0.0 (cached) focus_ios at focus/klar-v132.0 (d9ed6134db59ff456d343e2bb211aefd040319ac) version 132.0.0 (cached) focus_ios at focus/klar-v131.1 (b7dca2271b14988837524a30eb154d91eb5e4912) version 131.1.0 (cached) focus_ios at focus/klar-v131.0 (34d92c8df1b1522a1da88c23879b439d763ec133) version 131.0.0 (cached) firefox_desktop at release (8c35adfaf5ea8b07c3e221d0c9d557a1375f5852) version 134.0.0 (cached) firefox_desktop at esr115 (dc8b700b41911c2bde2cff62bde16d3c0ceadc2a) version 115.20.0 (cached) firefox_desktop at esr128 (a7c935b8a7c0c39bd2161d0927e9f2f2eb4c9d47) version 128.7.0 (cached) Circle CI Task: https://circleci.com/gh/mozilla/experimenter/272392 --- .../features/manifests/fenix/.ref-cache.yaml | 4 ++-- .../features/manifests/fenix/beta.fml.yaml | 11 +++++++++++ .../features/manifests/fenix/developer.fml.yaml | 11 +++++++++++ .../features/manifests/fenix/experimenter.yaml | 11 +++++++++++ .../features/manifests/fenix/nightly.fml.yaml | 11 +++++++++++ .../features/manifests/fenix/release.fml.yaml | 11 +++++++++++ .../manifests/fenix/v136.0.0/beta.fml.yaml | 11 +++++++++++ .../manifests/fenix/v136.0.0/developer.fml.yaml | 11 +++++++++++ .../manifests/fenix/v136.0.0/experimenter.yaml | 11 +++++++++++ .../manifests/fenix/v136.0.0/nightly.fml.yaml | 11 +++++++++++ .../manifests/fenix/v136.0.0/release.fml.yaml | 11 +++++++++++ .../manifests/firefox-desktop/.ref-cache.yaml | 4 ++-- .../manifests/firefox-desktop/experimenter.yaml | 15 +++++++++++++-- .../firefox-desktop/v136.0.0/experimenter.yaml | 15 +++++++++++++-- .../features/manifests/focus-ios/.ref-cache.yaml | 4 ++-- .../features/manifests/ios/.ref-cache.yaml | 4 ++-- .../features/manifests/ios/beta.fml.yaml | 7 +++++++ .../features/manifests/ios/developer.fml.yaml | 7 +++++++ .../features/manifests/ios/experimenter.yaml | 8 ++++++++ .../features/manifests/ios/release.fml.yaml | 7 +++++++ .../features/manifests/ios/v135.0.0/beta.fml.yaml | 7 +++++++ .../manifests/ios/v135.0.0/developer.fml.yaml | 7 +++++++ .../manifests/ios/v135.0.0/experimenter.yaml | 8 ++++++++ .../manifests/ios/v135.0.0/release.fml.yaml | 7 +++++++ .../features/manifests/ios/v136.0.0/beta.fml.yaml | 7 +++++++ .../manifests/ios/v136.0.0/developer.fml.yaml | 7 +++++++ .../manifests/ios/v136.0.0/experimenter.yaml | 8 ++++++++ .../manifests/ios/v136.0.0/release.fml.yaml | 7 +++++++ 28 files changed, 231 insertions(+), 12 deletions(-) diff --git a/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml b/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml index ad7b341127..ad110b9865 100644 --- a/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml @@ -1,3 +1,3 @@ -beta: 93fdd4234be5673a174351922a8be796cefcad65 -master: 26ad7aaffe02c4f9ab84c0faf5bc2f4dc4583806 +beta: a64cc659cd6532fb4e838d76c71f6162076cba17 +master: e24277e20c492b4a785b4488af02cca062ec7c2c release: d8f30fc43d8a411937b53bb95eb9555356e9bcb8 diff --git a/experimenter/experimenter/features/manifests/fenix/beta.fml.yaml b/experimenter/experimenter/features/manifests/fenix/beta.fml.yaml index acf2ad4341..d68d0e1e44 100644 --- a/experimenter/experimenter/features/manifests/fenix/beta.fml.yaml +++ b/experimenter/experimenter/features/manifests/fenix/beta.fml.yaml @@ -46,6 +46,17 @@ features: feature-setting-detect-only: 0 feature-setting-global-rules: 1 feature-setting-global-rules-sub-frames: 1 + encourage-search-cfr: + description: A feature that shows a CFR on first launch to encourage users to make a search + variables: + cfrText: + description: The text to show in the CFR + type: Text + default: "" + enabled: + description: "When true, the CFR will show" + type: Boolean + default: false fingerprinting-protection: description: Control Fingerprinting Protection variables: diff --git a/experimenter/experimenter/features/manifests/fenix/developer.fml.yaml b/experimenter/experimenter/features/manifests/fenix/developer.fml.yaml index c3606ed74c..517bc02740 100644 --- a/experimenter/experimenter/features/manifests/fenix/developer.fml.yaml +++ b/experimenter/experimenter/features/manifests/fenix/developer.fml.yaml @@ -46,6 +46,17 @@ features: feature-setting-detect-only: 0 feature-setting-global-rules: 1 feature-setting-global-rules-sub-frames: 1 + encourage-search-cfr: + description: A feature that shows a CFR on first launch to encourage users to make a search + variables: + cfrText: + description: The text to show in the CFR + type: Text + default: "" + enabled: + description: "When true, the CFR will show" + type: Boolean + default: false fingerprinting-protection: description: Control Fingerprinting Protection variables: diff --git a/experimenter/experimenter/features/manifests/fenix/experimenter.yaml b/experimenter/experimenter/features/manifests/fenix/experimenter.yaml index 1dc5541d02..7409d0b772 100644 --- a/experimenter/experimenter/features/manifests/fenix/experimenter.yaml +++ b/experimenter/experimenter/features/manifests/fenix/experimenter.yaml @@ -34,6 +34,17 @@ cookie-banners: sections-enabled: type: json description: This property provides a lookup table of whether or not the given section should be enabled. +encourage-search-cfr: + description: A feature that shows a CFR on first launch to encourage users to make a search + hasExposure: true + exposureDescription: "" + variables: + cfrText: + type: string + description: The text to show in the CFR + enabled: + type: boolean + description: "When true, the CFR will show" fingerprinting-protection: description: Control Fingerprinting Protection hasExposure: true diff --git a/experimenter/experimenter/features/manifests/fenix/nightly.fml.yaml b/experimenter/experimenter/features/manifests/fenix/nightly.fml.yaml index 198ff574e5..edcbcfeedf 100644 --- a/experimenter/experimenter/features/manifests/fenix/nightly.fml.yaml +++ b/experimenter/experimenter/features/manifests/fenix/nightly.fml.yaml @@ -46,6 +46,17 @@ features: feature-setting-detect-only: 0 feature-setting-global-rules: 1 feature-setting-global-rules-sub-frames: 1 + encourage-search-cfr: + description: A feature that shows a CFR on first launch to encourage users to make a search + variables: + cfrText: + description: The text to show in the CFR + type: Text + default: "" + enabled: + description: "When true, the CFR will show" + type: Boolean + default: false fingerprinting-protection: description: Control Fingerprinting Protection variables: diff --git a/experimenter/experimenter/features/manifests/fenix/release.fml.yaml b/experimenter/experimenter/features/manifests/fenix/release.fml.yaml index 01739864d1..5743e0dc57 100644 --- a/experimenter/experimenter/features/manifests/fenix/release.fml.yaml +++ b/experimenter/experimenter/features/manifests/fenix/release.fml.yaml @@ -46,6 +46,17 @@ features: feature-setting-detect-only: 0 feature-setting-global-rules: 1 feature-setting-global-rules-sub-frames: 1 + encourage-search-cfr: + description: A feature that shows a CFR on first launch to encourage users to make a search + variables: + cfrText: + description: The text to show in the CFR + type: Text + default: "" + enabled: + description: "When true, the CFR will show" + type: Boolean + default: false fingerprinting-protection: description: Control Fingerprinting Protection variables: diff --git a/experimenter/experimenter/features/manifests/fenix/v136.0.0/beta.fml.yaml b/experimenter/experimenter/features/manifests/fenix/v136.0.0/beta.fml.yaml index acf2ad4341..d68d0e1e44 100644 --- a/experimenter/experimenter/features/manifests/fenix/v136.0.0/beta.fml.yaml +++ b/experimenter/experimenter/features/manifests/fenix/v136.0.0/beta.fml.yaml @@ -46,6 +46,17 @@ features: feature-setting-detect-only: 0 feature-setting-global-rules: 1 feature-setting-global-rules-sub-frames: 1 + encourage-search-cfr: + description: A feature that shows a CFR on first launch to encourage users to make a search + variables: + cfrText: + description: The text to show in the CFR + type: Text + default: "" + enabled: + description: "When true, the CFR will show" + type: Boolean + default: false fingerprinting-protection: description: Control Fingerprinting Protection variables: diff --git a/experimenter/experimenter/features/manifests/fenix/v136.0.0/developer.fml.yaml b/experimenter/experimenter/features/manifests/fenix/v136.0.0/developer.fml.yaml index c3606ed74c..517bc02740 100644 --- a/experimenter/experimenter/features/manifests/fenix/v136.0.0/developer.fml.yaml +++ b/experimenter/experimenter/features/manifests/fenix/v136.0.0/developer.fml.yaml @@ -46,6 +46,17 @@ features: feature-setting-detect-only: 0 feature-setting-global-rules: 1 feature-setting-global-rules-sub-frames: 1 + encourage-search-cfr: + description: A feature that shows a CFR on first launch to encourage users to make a search + variables: + cfrText: + description: The text to show in the CFR + type: Text + default: "" + enabled: + description: "When true, the CFR will show" + type: Boolean + default: false fingerprinting-protection: description: Control Fingerprinting Protection variables: diff --git a/experimenter/experimenter/features/manifests/fenix/v136.0.0/experimenter.yaml b/experimenter/experimenter/features/manifests/fenix/v136.0.0/experimenter.yaml index 1dc5541d02..7409d0b772 100644 --- a/experimenter/experimenter/features/manifests/fenix/v136.0.0/experimenter.yaml +++ b/experimenter/experimenter/features/manifests/fenix/v136.0.0/experimenter.yaml @@ -34,6 +34,17 @@ cookie-banners: sections-enabled: type: json description: This property provides a lookup table of whether or not the given section should be enabled. +encourage-search-cfr: + description: A feature that shows a CFR on first launch to encourage users to make a search + hasExposure: true + exposureDescription: "" + variables: + cfrText: + type: string + description: The text to show in the CFR + enabled: + type: boolean + description: "When true, the CFR will show" fingerprinting-protection: description: Control Fingerprinting Protection hasExposure: true diff --git a/experimenter/experimenter/features/manifests/fenix/v136.0.0/nightly.fml.yaml b/experimenter/experimenter/features/manifests/fenix/v136.0.0/nightly.fml.yaml index 198ff574e5..edcbcfeedf 100644 --- a/experimenter/experimenter/features/manifests/fenix/v136.0.0/nightly.fml.yaml +++ b/experimenter/experimenter/features/manifests/fenix/v136.0.0/nightly.fml.yaml @@ -46,6 +46,17 @@ features: feature-setting-detect-only: 0 feature-setting-global-rules: 1 feature-setting-global-rules-sub-frames: 1 + encourage-search-cfr: + description: A feature that shows a CFR on first launch to encourage users to make a search + variables: + cfrText: + description: The text to show in the CFR + type: Text + default: "" + enabled: + description: "When true, the CFR will show" + type: Boolean + default: false fingerprinting-protection: description: Control Fingerprinting Protection variables: diff --git a/experimenter/experimenter/features/manifests/fenix/v136.0.0/release.fml.yaml b/experimenter/experimenter/features/manifests/fenix/v136.0.0/release.fml.yaml index 01739864d1..5743e0dc57 100644 --- a/experimenter/experimenter/features/manifests/fenix/v136.0.0/release.fml.yaml +++ b/experimenter/experimenter/features/manifests/fenix/v136.0.0/release.fml.yaml @@ -46,6 +46,17 @@ features: feature-setting-detect-only: 0 feature-setting-global-rules: 1 feature-setting-global-rules-sub-frames: 1 + encourage-search-cfr: + description: A feature that shows a CFR on first launch to encourage users to make a search + variables: + cfrText: + description: The text to show in the CFR + type: Text + default: "" + enabled: + description: "When true, the CFR will show" + type: Boolean + default: false fingerprinting-protection: description: Control Fingerprinting Protection variables: diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml b/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml index 864251d40a..3670efc68f 100644 --- a/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml @@ -1,5 +1,5 @@ -beta: a1e5d1f58aca7129af9148ced4bd6e8781b3aeb4 -central: dd9f5a143dd227e6a6271b78458950bfd6736161 +beta: 2f218da698db4f92722be65f51a6e53d24321cec +central: a568ac65fd4e6833bbee5cc341b3031de12f41a6 esr115: dc8b700b41911c2bde2cff62bde16d3c0ceadc2a esr128: a7c935b8a7c0c39bd2161d0927e9f2f2eb4c9d47 release: 8c35adfaf5ea8b07c3e221d0c9d557a1375f5852 diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/experimenter.yaml b/experimenter/experimenter/features/manifests/firefox-desktop/experimenter.yaml index b1199d4b58..fea84dd44a 100644 --- a/experimenter/experimenter/features/manifests/firefox-desktop/experimenter.yaml +++ b/experimenter/experimenter/features/manifests/firefox-desktop/experimenter.yaml @@ -4040,12 +4040,23 @@ bounceTrackingProtection: owner: emz@mozilla.com hasExposure: false variables: - enabled: + mode: type: int setPref: branch: default pref: privacy.bounceTrackingProtection.mode - description: Mode to run the feature in. See nsIBounceTrackingProtection.idl for documentation. + description: >- + Mode to run the feature in. See nsIBounceTrackingProtection.idl for + documentation. + requireStatefulBounces: + type: boolean + setPref: + branch: default + pref: privacy.bounceTrackingProtection.requireStatefulBounces + description: >- + If true, only bounce redirects where the middle hop/s access cookies or + storage will be considered to be bounce trackers. If false, all + redirects that fit the bounce tracker heuristic will be considered. remoteTabManagement: description: > diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/v136.0.0/experimenter.yaml b/experimenter/experimenter/features/manifests/firefox-desktop/v136.0.0/experimenter.yaml index b1199d4b58..fea84dd44a 100644 --- a/experimenter/experimenter/features/manifests/firefox-desktop/v136.0.0/experimenter.yaml +++ b/experimenter/experimenter/features/manifests/firefox-desktop/v136.0.0/experimenter.yaml @@ -4040,12 +4040,23 @@ bounceTrackingProtection: owner: emz@mozilla.com hasExposure: false variables: - enabled: + mode: type: int setPref: branch: default pref: privacy.bounceTrackingProtection.mode - description: Mode to run the feature in. See nsIBounceTrackingProtection.idl for documentation. + description: >- + Mode to run the feature in. See nsIBounceTrackingProtection.idl for + documentation. + requireStatefulBounces: + type: boolean + setPref: + branch: default + pref: privacy.bounceTrackingProtection.requireStatefulBounces + description: >- + If true, only bounce redirects where the middle hop/s access cookies or + storage will be considered to be bounce trackers. If false, all + redirects that fit the bounce tracker heuristic will be considered. remoteTabManagement: description: > diff --git a/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml b/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml index 9ff7c758b2..ff1cfb8836 100644 --- a/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml @@ -13,7 +13,7 @@ focus/klar-v131.1: b7dca2271b14988837524a30eb154d91eb5e4912 focus/klar-v132.0: d9ed6134db59ff456d343e2bb211aefd040319ac focus/klar-v133.0: a3372669a06fa684d3c5945c317d6787e3125303 focus/klar-v134.0: be550d94c2c7bc8b8902cdf7fe542a64e73a381a -main: 62258e345b377b98e67de79cd1cec6d3f918a3e2 +main: f732e7f18b3384061fb87d5aaf1e4257ba86bd64 release/v124: da250bed9e19c4978d4400d6d404cb312e33636e release/v125: a3e1e0773a00009e08d95726fd518ab642255ccd release/v126: 6f305409b4af68e8404401a2caad8cb0da9a0494 @@ -25,4 +25,4 @@ release/v131: 7444df581b62d357df12ddc3c90d821d940efbb8 release/v132: cb318d0061ec6354167ecc1968020d5d75f1bffc release/v133: 7c651ce29e94c6389af7a69ec6b5c44251976e92 release/v134: 846f290dfd0627f1873a524da439ebd7a1a4a932 -release/v135: a407f3705c6a6134ac84ff3d9e99d6fa4d5fd0fb +release/v135: 97d52f4eb357afc7cc73dfdf94ab6a585da2cf12 diff --git a/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml b/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml index a76cbeecfa..0e7774f1d5 100644 --- a/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml @@ -1,4 +1,4 @@ -main: 62258e345b377b98e67de79cd1cec6d3f918a3e2 +main: f732e7f18b3384061fb87d5aaf1e4257ba86bd64 release/v117: 43b690c450066d4dde1b2ccb93ed3714d244d502 release/v118: 89a7ea3c3372e5a4ef5b3c5b85499d26198d0524 release/v119: 7dc381f991c6d2a983c3ba7f0cffd880e8c29e7b @@ -17,7 +17,7 @@ release/v131: 7444df581b62d357df12ddc3c90d821d940efbb8 release/v132: cb318d0061ec6354167ecc1968020d5d75f1bffc release/v133: 7c651ce29e94c6389af7a69ec6b5c44251976e92 release/v134: 846f290dfd0627f1873a524da439ebd7a1a4a932 -release/v135: a407f3705c6a6134ac84ff3d9e99d6fa4d5fd0fb +release/v135: 97d52f4eb357afc7cc73dfdf94ab6a585da2cf12 v117.0: 3b275ab1e4ccef769d84437033c0c68acfd2df8a v117.1: 55ddcf473a65d106d43f6d2ae5af4076d6d03688 v117.2: 5cc367aa8857199cd8a54d53e8faf6696c5614c3 diff --git a/experimenter/experimenter/features/manifests/ios/beta.fml.yaml b/experimenter/experimenter/features/manifests/ios/beta.fml.yaml index 1900fa7de5..93da728494 100644 --- a/experimenter/experimenter/features/manifests/ios/beta.fml.yaml +++ b/experimenter/experimenter/features/manifests/ios/beta.fml.yaml @@ -101,6 +101,13 @@ features: default: jump-back-in: true recent-explorations: false + js-alert-refactor: + description: "This feature is for the JavaScript Webview refactor\n" + variables: + enabled: + description: "When true this enables the new JS alerts system to be used\n" + type: Boolean + default: true login-autofill: description: This property defines the login autofill feature for automatically filling in usernames and passwords. variables: diff --git a/experimenter/experimenter/features/manifests/ios/developer.fml.yaml b/experimenter/experimenter/features/manifests/ios/developer.fml.yaml index ce44305c20..4617778a73 100644 --- a/experimenter/experimenter/features/manifests/ios/developer.fml.yaml +++ b/experimenter/experimenter/features/manifests/ios/developer.fml.yaml @@ -101,6 +101,13 @@ features: default: jump-back-in: true recent-explorations: false + js-alert-refactor: + description: "This feature is for the JavaScript Webview refactor\n" + variables: + enabled: + description: "When true this enables the new JS alerts system to be used\n" + type: Boolean + default: true login-autofill: description: This property defines the login autofill feature for automatically filling in usernames and passwords. variables: diff --git a/experimenter/experimenter/features/manifests/ios/experimenter.yaml b/experimenter/experimenter/features/manifests/ios/experimenter.yaml index e1a08aa9ac..2ac1c6c678 100644 --- a/experimenter/experimenter/features/manifests/ios/experimenter.yaml +++ b/experimenter/experimenter/features/manifests/ios/experimenter.yaml @@ -96,6 +96,14 @@ homescreenFeature: sections-enabled: type: json description: "This property provides a lookup table of whether or not the given section should be enabled. If the section is enabled, it should be toggleable in the settings screen, and on by default.\n" +js-alert-refactor: + description: "This feature is for the JavaScript Webview refactor\n" + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "When true this enables the new JS alerts system to be used\n" login-autofill: description: This property defines the login autofill feature for automatically filling in usernames and passwords. hasExposure: true diff --git a/experimenter/experimenter/features/manifests/ios/release.fml.yaml b/experimenter/experimenter/features/manifests/ios/release.fml.yaml index e02df600a2..3a316cedeb 100644 --- a/experimenter/experimenter/features/manifests/ios/release.fml.yaml +++ b/experimenter/experimenter/features/manifests/ios/release.fml.yaml @@ -101,6 +101,13 @@ features: default: jump-back-in: true recent-explorations: false + js-alert-refactor: + description: "This feature is for the JavaScript Webview refactor\n" + variables: + enabled: + description: "When true this enables the new JS alerts system to be used\n" + type: Boolean + default: false login-autofill: description: This property defines the login autofill feature for automatically filling in usernames and passwords. variables: diff --git a/experimenter/experimenter/features/manifests/ios/v135.0.0/beta.fml.yaml b/experimenter/experimenter/features/manifests/ios/v135.0.0/beta.fml.yaml index 1900fa7de5..93da728494 100644 --- a/experimenter/experimenter/features/manifests/ios/v135.0.0/beta.fml.yaml +++ b/experimenter/experimenter/features/manifests/ios/v135.0.0/beta.fml.yaml @@ -101,6 +101,13 @@ features: default: jump-back-in: true recent-explorations: false + js-alert-refactor: + description: "This feature is for the JavaScript Webview refactor\n" + variables: + enabled: + description: "When true this enables the new JS alerts system to be used\n" + type: Boolean + default: true login-autofill: description: This property defines the login autofill feature for automatically filling in usernames and passwords. variables: diff --git a/experimenter/experimenter/features/manifests/ios/v135.0.0/developer.fml.yaml b/experimenter/experimenter/features/manifests/ios/v135.0.0/developer.fml.yaml index ce44305c20..4617778a73 100644 --- a/experimenter/experimenter/features/manifests/ios/v135.0.0/developer.fml.yaml +++ b/experimenter/experimenter/features/manifests/ios/v135.0.0/developer.fml.yaml @@ -101,6 +101,13 @@ features: default: jump-back-in: true recent-explorations: false + js-alert-refactor: + description: "This feature is for the JavaScript Webview refactor\n" + variables: + enabled: + description: "When true this enables the new JS alerts system to be used\n" + type: Boolean + default: true login-autofill: description: This property defines the login autofill feature for automatically filling in usernames and passwords. variables: diff --git a/experimenter/experimenter/features/manifests/ios/v135.0.0/experimenter.yaml b/experimenter/experimenter/features/manifests/ios/v135.0.0/experimenter.yaml index e1a08aa9ac..2ac1c6c678 100644 --- a/experimenter/experimenter/features/manifests/ios/v135.0.0/experimenter.yaml +++ b/experimenter/experimenter/features/manifests/ios/v135.0.0/experimenter.yaml @@ -96,6 +96,14 @@ homescreenFeature: sections-enabled: type: json description: "This property provides a lookup table of whether or not the given section should be enabled. If the section is enabled, it should be toggleable in the settings screen, and on by default.\n" +js-alert-refactor: + description: "This feature is for the JavaScript Webview refactor\n" + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "When true this enables the new JS alerts system to be used\n" login-autofill: description: This property defines the login autofill feature for automatically filling in usernames and passwords. hasExposure: true diff --git a/experimenter/experimenter/features/manifests/ios/v135.0.0/release.fml.yaml b/experimenter/experimenter/features/manifests/ios/v135.0.0/release.fml.yaml index e02df600a2..3a316cedeb 100644 --- a/experimenter/experimenter/features/manifests/ios/v135.0.0/release.fml.yaml +++ b/experimenter/experimenter/features/manifests/ios/v135.0.0/release.fml.yaml @@ -101,6 +101,13 @@ features: default: jump-back-in: true recent-explorations: false + js-alert-refactor: + description: "This feature is for the JavaScript Webview refactor\n" + variables: + enabled: + description: "When true this enables the new JS alerts system to be used\n" + type: Boolean + default: false login-autofill: description: This property defines the login autofill feature for automatically filling in usernames and passwords. variables: diff --git a/experimenter/experimenter/features/manifests/ios/v136.0.0/beta.fml.yaml b/experimenter/experimenter/features/manifests/ios/v136.0.0/beta.fml.yaml index 1900fa7de5..93da728494 100644 --- a/experimenter/experimenter/features/manifests/ios/v136.0.0/beta.fml.yaml +++ b/experimenter/experimenter/features/manifests/ios/v136.0.0/beta.fml.yaml @@ -101,6 +101,13 @@ features: default: jump-back-in: true recent-explorations: false + js-alert-refactor: + description: "This feature is for the JavaScript Webview refactor\n" + variables: + enabled: + description: "When true this enables the new JS alerts system to be used\n" + type: Boolean + default: true login-autofill: description: This property defines the login autofill feature for automatically filling in usernames and passwords. variables: diff --git a/experimenter/experimenter/features/manifests/ios/v136.0.0/developer.fml.yaml b/experimenter/experimenter/features/manifests/ios/v136.0.0/developer.fml.yaml index ce44305c20..4617778a73 100644 --- a/experimenter/experimenter/features/manifests/ios/v136.0.0/developer.fml.yaml +++ b/experimenter/experimenter/features/manifests/ios/v136.0.0/developer.fml.yaml @@ -101,6 +101,13 @@ features: default: jump-back-in: true recent-explorations: false + js-alert-refactor: + description: "This feature is for the JavaScript Webview refactor\n" + variables: + enabled: + description: "When true this enables the new JS alerts system to be used\n" + type: Boolean + default: true login-autofill: description: This property defines the login autofill feature for automatically filling in usernames and passwords. variables: diff --git a/experimenter/experimenter/features/manifests/ios/v136.0.0/experimenter.yaml b/experimenter/experimenter/features/manifests/ios/v136.0.0/experimenter.yaml index e1a08aa9ac..2ac1c6c678 100644 --- a/experimenter/experimenter/features/manifests/ios/v136.0.0/experimenter.yaml +++ b/experimenter/experimenter/features/manifests/ios/v136.0.0/experimenter.yaml @@ -96,6 +96,14 @@ homescreenFeature: sections-enabled: type: json description: "This property provides a lookup table of whether or not the given section should be enabled. If the section is enabled, it should be toggleable in the settings screen, and on by default.\n" +js-alert-refactor: + description: "This feature is for the JavaScript Webview refactor\n" + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "When true this enables the new JS alerts system to be used\n" login-autofill: description: This property defines the login autofill feature for automatically filling in usernames and passwords. hasExposure: true diff --git a/experimenter/experimenter/features/manifests/ios/v136.0.0/release.fml.yaml b/experimenter/experimenter/features/manifests/ios/v136.0.0/release.fml.yaml index e02df600a2..3a316cedeb 100644 --- a/experimenter/experimenter/features/manifests/ios/v136.0.0/release.fml.yaml +++ b/experimenter/experimenter/features/manifests/ios/v136.0.0/release.fml.yaml @@ -101,6 +101,13 @@ features: default: jump-back-in: true recent-explorations: false + js-alert-refactor: + description: "This feature is for the JavaScript Webview refactor\n" + variables: + enabled: + description: "When true this enables the new JS alerts system to be used\n" + type: Boolean + default: false login-autofill: description: This property defines the login autofill feature for automatically filling in usernames and passwords. variables: From c9657a4e77fdf465d93a3224ea2f724fdc87fa47 Mon Sep 17 00:00:00 2001 From: dataops-ci-bot <59976087+dataops-ci-bot@users.noreply.github.com> Date: Tue, 7 Jan 2025 10:42:09 -0800 Subject: [PATCH 06/36] chore(nimbus): Update External Configs (#11997) SUMMARY: SUCCESS: fenix at master (7d1b5c88343879056168aa710a9ee743392604c0) version None fenix at master (7d1b5c88343879056168aa710a9ee743392604c0) version 136.0.0 fenix at release (eac9a2a9d14dfb013cd293c69fb8c3e62f86baaa) version 134.0.1 firefox_ios at main (782d7a4b0ef7eadb70c56eb9486f3f6261b76468) version None firefox_ios at main (782d7a4b0ef7eadb70c56eb9486f3f6261b76468) version 136.0.0 focus_android at main (fe8a71cd70ad5674abe1824fe11dc78372b736c2) version None focus_ios at main (782d7a4b0ef7eadb70c56eb9486f3f6261b76468) version None focus_ios at main (782d7a4b0ef7eadb70c56eb9486f3f6261b76468) version 136.0.0 monitor_cirrus at main (5edcb113aaefe7df6d822a8155e3397340c60e78) version None mozillavpn_backend_cirrus at main (86963e1fe3fbe3aaee3aa3776efad50a85c516e2) version None firefox_accounts_cirrus at main (4e7c4140f90f7bbda51f473fe1f07281131f10a7) version None firefox_desktop at central (114a69547c262e92d13156de8a309ee3de9ac35a) version None firefox_desktop at central (114a69547c262e92d13156de8a309ee3de9ac35a) version 136.0.0 firefox_desktop at release (c455977f9b6c285c9c5ac1f9ae6b9bae5072ba84) version 134.0.1 firefox_desktop at esr115 (6a331477d572723c5a5f18cbcd665689c97165bc) version 115.20.0 firefox_desktop at esr128 (10845c3218167063ec1c2fe66ea032fb2f53162a) version 128.7.0 CACHED: fenix at beta (a64cc659cd6532fb4e838d76c71f6162076cba17) version 135.0.0 (cached) firefox_ios at release/v131 (7444df581b62d357df12ddc3c90d821d940efbb8) version 131.5.0 (cached) firefox_ios at release/v132 (cb318d0061ec6354167ecc1968020d5d75f1bffc) version 132.2.0 (cached) firefox_ios at release/v133 (7c651ce29e94c6389af7a69ec6b5c44251976e92) version 133.5.0 (cached) firefox_ios at release/v134 (846f290dfd0627f1873a524da439ebd7a1a4a932) version 134.1.0 (cached) firefox_ios at release/v135 (97d52f4eb357afc7cc73dfdf94ab6a585da2cf12) version 135.0.0 (cached) focus_android at releases_v121 (979fbe8d7fe04a9b09fe657bb787fda6f4d5ab42) version 121.1.1 (cached) focus_android at releases_v122 (1fcbfc41dba53965481a0e4d4725833bf3669dce) version 122.1.1 (cached) focus_android at releases_v123 (5a38e0cb4499f659a5fff308fa1deee653c0318b) version 123.1.1 (cached) focus_android at releases_v124 (0ad8d97fb3ab2ec6b9bb3905ee742900a4b9325d) version 124.2.1 (cached) focus_android at releases_v125 (2b43ab8069abac2bfee4b609e734c0207876a2ac) version 125.3.1 (cached) focus_android at focus-v125.3.0 (9f2990415376f169eb0053fceb329b70b4421bcb) version 125.3.0 (cached) focus_android at focus-v125.2.0 (d1c6eeb4167fc8ffed02cdfd3138fa696381d548) version 125.2.0 (cached) focus_android at main (fe8a71cd70ad5674abe1824fe11dc78372b736c2) version 125.0.0 (cached) focus_android at focus-v124.2.0 (7a0e399c7bc4faae43ce70ddc201c7899498d1b5) version 124.2.0 (cached) focus_android at focus-v124.1.0 (516df33ca96e950af1bf791893cd16d7add61c5d) version 124.1.0 (cached) focus_android at focus-v124.0 (5afe87a5bbb92f7ecf990a2fbc8095503a47c272) version 124.0.0 (cached) focus_android at focus-v123.1.0 (cb7c807e0fb5bc08131415e2e5ecef9da658d410) version 123.1.0 (cached) focus_android at focus-v123.0 (f5f378e2c05c9d69a5088c112c14fdea507d1c65) version 123.0.0 (cached) focus_android at focus-v122.1.0 (0d665405685c43c9266a3de65f16eabb832bb908) version 122.1.0 (cached) focus_android at focus-v122.0.1 (c67c9e840c00ec348a6a27adedad28feb54aa4a2) version 122.0.1 (cached) focus_android at focus-v122.0 (b49c4f23804d23cc727b8f70c061dccd64d720bc) version 122.0.0 (cached) focus_android at focus-v121.1.0 (62d5117f7996cc8862fdbdc0cb4a1dd5cdebedd6) version 121.1.0 (cached) focus_android at focus-v121.0.1 (fd4d2513324712e91577d8be18797e64089d3cf1) version 121.0.1 (cached) focus_android at focus-v121.0 (1955f8455fa2cac1b2080af9360996c06df5b4dd) version 121.0.0 (cached) focus_ios at release/v131 (7444df581b62d357df12ddc3c90d821d940efbb8) version 131.5.0 (cached) focus_ios at release/v132 (cb318d0061ec6354167ecc1968020d5d75f1bffc) version 132.2.0 (cached) focus_ios at release/v133 (7c651ce29e94c6389af7a69ec6b5c44251976e92) version 133.5.0 (cached) focus_ios at release/v134 (846f290dfd0627f1873a524da439ebd7a1a4a932) version 134.1.0 (cached) focus_ios at release/v135 (97d52f4eb357afc7cc73dfdf94ab6a585da2cf12) version 135.0.0 (cached) focus_ios at focus/klar-v134.0 (be550d94c2c7bc8b8902cdf7fe542a64e73a381a) version 134.0.0 (cached) focus_ios at focus/klar-v133.0 (a3372669a06fa684d3c5945c317d6787e3125303) version 133.0.0 (cached) focus_ios at focus/klar-v132.0 (d9ed6134db59ff456d343e2bb211aefd040319ac) version 132.0.0 (cached) focus_ios at focus/klar-v131.1 (b7dca2271b14988837524a30eb154d91eb5e4912) version 131.1.0 (cached) focus_ios at focus/klar-v131.0 (34d92c8df1b1522a1da88c23879b439d763ec133) version 131.0.0 (cached) firefox_desktop at beta (2f218da698db4f92722be65f51a6e53d24321cec) version 135.0.0 (cached) Circle CI Task: https://circleci.com/gh/mozilla/experimenter/272504 --- .../features/manifests/fenix/.ref-cache.yaml | 4 +- .../manifests/fenix/v134.0.1/beta.fml.yaml | 936 ++++ .../fenix/v134.0.1/developer.fml.yaml | 962 ++++ .../fenix/v134.0.1/experimenter.yaml | 442 ++ .../manifests/fenix/v134.0.1/nightly.fml.yaml | 936 ++++ .../manifests/fenix/v134.0.1/release.fml.yaml | 936 ++++ .../manifests/firefox-desktop/.ref-cache.yaml | 8 +- .../v134.0.1/experimenter.yaml | 4058 +++++++++++++++++ ...kgroundTaskMessagingExperiment.schema.json | 344 ++ .../schemas/MessagingExperiment.schema.json | 1623 +++++++ .../schemas/PrefFlipsFeature.schema.json | 48 + .../schemas/LegacyHeartbeat.schema.json | 73 + .../manifests/focus-ios/.ref-cache.yaml | 2 +- .../features/manifests/ios/.ref-cache.yaml | 2 +- 14 files changed, 10366 insertions(+), 8 deletions(-) create mode 100644 experimenter/experimenter/features/manifests/fenix/v134.0.1/beta.fml.yaml create mode 100644 experimenter/experimenter/features/manifests/fenix/v134.0.1/developer.fml.yaml create mode 100644 experimenter/experimenter/features/manifests/fenix/v134.0.1/experimenter.yaml create mode 100644 experimenter/experimenter/features/manifests/fenix/v134.0.1/nightly.fml.yaml create mode 100644 experimenter/experimenter/features/manifests/fenix/v134.0.1/release.fml.yaml create mode 100644 experimenter/experimenter/features/manifests/firefox-desktop/v134.0.1/experimenter.yaml create mode 100644 experimenter/experimenter/features/manifests/firefox-desktop/v134.0.1/schemas/browser/components/asrouter/content-src/schemas/BackgroundTaskMessagingExperiment.schema.json create mode 100644 experimenter/experimenter/features/manifests/firefox-desktop/v134.0.1/schemas/browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json create mode 100644 experimenter/experimenter/features/manifests/firefox-desktop/v134.0.1/schemas/toolkit/components/nimbus/schemas/PrefFlipsFeature.schema.json create mode 100644 experimenter/experimenter/features/manifests/firefox-desktop/v134.0.1/schemas/toolkit/components/normandy/schemas/LegacyHeartbeat.schema.json diff --git a/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml b/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml index ad110b9865..ade46b52b3 100644 --- a/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml @@ -1,3 +1,3 @@ beta: a64cc659cd6532fb4e838d76c71f6162076cba17 -master: e24277e20c492b4a785b4488af02cca062ec7c2c -release: d8f30fc43d8a411937b53bb95eb9555356e9bcb8 +master: 7d1b5c88343879056168aa710a9ee743392604c0 +release: eac9a2a9d14dfb013cd293c69fb8c3e62f86baaa diff --git a/experimenter/experimenter/features/manifests/fenix/v134.0.1/beta.fml.yaml b/experimenter/experimenter/features/manifests/fenix/v134.0.1/beta.fml.yaml new file mode 100644 index 0000000000..569fb62375 --- /dev/null +++ b/experimenter/experimenter/features/manifests/fenix/v134.0.1/beta.fml.yaml @@ -0,0 +1,936 @@ +--- +version: 1.0.0 +about: + description: Nimbus Feature Manifest for Fenix (Firefox Android) +channels: + - beta +features: + alternative-app-launcher-icon: + description: A feature that changes the app launcher icon background color. + variables: + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + reset-to-default: + description: "If true use the default icon, if false use the alternative icon. This is required to 'reset' the icon for enrolled users once the initial experiment is complete.\n" + type: Boolean + default: false + awesomebar-suggestion-provider: + description: Configuration for the Firefox Suggest awesomebar suggestion provider. + variables: + available-suggestion-types: + description: "A map of suggestion types to booleans that indicate whether or not the provider should return suggestions of those types.\n" + type: "Map" + default: + amp: true + ampMobile: false + wikipedia: true + bookmarks: + description: Feature for Bookmarks + variables: + new-compose-ui: + description: "if true, enable new compose based UI" + type: Boolean + default: false + cookie-banners: + description: Features for cookie banner handling. + variables: + sections-enabled: + description: This property provides a lookup table of whether or not the given section should be enabled. + type: "Map" + default: + feature-ui: 1 + feature-setting-value: 0 + feature-setting-value-pbm: 1 + feature-setting-detect-only: 0 + feature-setting-global-rules: 1 + feature-setting-global-rules-sub-frames: 1 + fingerprinting-protection: + description: Control Fingerprinting Protection + variables: + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + enabled-normal: + description: "Enables / disables fingerprinting protection in normal browsing mode.\n" + type: Boolean + default: false + enabled-private: + description: "Enables / disables fingerprinting protection in private browsing mode.\n" + type: Boolean + default: true + fdlibm-math: + description: "Uses a different math backend for Math.sin/cos/tan in JavaScript that exposes less entropy\n" + type: Boolean + default: false + overrides: + description: "The protection overrides to add or remove fingerprinting protection targets. Please check RFPTargets.inc for all supported targets.\n" + type: String + default: "" + fission: + description: The feature that controls whether fission is enabled or not in Gecko. + variables: + enabled: + description: "Whether or not to enable fission. Fission is enabled when set to true. Fission is disabled when set to false.\n" + type: Boolean + default: false + fx-suggest: + description: A feature that provides Firefox Suggest search suggestions. + variables: + boost-amp-wiki: + description: "The feature boost wiki and AMP suggestions to the top of its group.\n" + type: Boolean + default: false + enabled: + description: "Whether the feature is enabled. When Firefox Suggest is enabled, Firefox will download and store new search suggestions in the background, and show additional Search settings to control which suggestions appear in the awesomebar. When Firefox Suggest is disabled, Firefox will not download new suggestions, and hide the additional Search settings.\n" + type: Boolean + default: false + glean: + description: A feature that provides server-side configurations for Glean metrics (aka Server Knobs). + variables: + delay-ping-lifetime-io: + description: Glean will delay io for ping lifetime metrics + type: Boolean + default: true + enable-event-timestamps: + description: Enables precise event timestamps for Glean events + type: Boolean + default: true + metrics-enabled: + description: "A map of metric base-identifiers to booleans representing the state of the 'enabled' flag for that metric." + type: "Map" + default: {} + ping-lifetime-max-time: + description: After what time to auto-flush + type: Int + default: 2000 + ping-lifetime-threshold: + description: Write count threshold when to auto-flush + type: Int + default: 1000 + allow-coenrollment: true + growth-data: + description: A feature measuring campaign growth data + variables: + enabled: + description: "If true, the feature is active" + type: Boolean + default: false + homescreen: + description: The homescreen that the user goes to when they press home or new tab. + variables: + sections-enabled: + description: "This property provides a lookup table of whether or not the given section should be enabled. If the section is enabled, it should be toggleable in the settings screen, and on by default." + type: "Map" + default: + top-sites: true + jump-back-in: true + bookmarks: true + recent-explorations: true + pocket: true + pocket-sponsored-stories: true + javascript: + description: Enables Javascript Engine (Spidermonkey) features + variables: + parallelMarkingEnabled: + description: "Enables or disables javascript.options.mem.gc_parallel_marking preference.\n" + type: Boolean + default: false + juno-onboarding: + description: A feature that shows the onboarding flow. + variables: + cards: + description: Collection of user facing onboarding cards. + type: "Map" + default: + default-browser: + body: juno_onboarding_default_browser_description_nimbus_3 + card-type: default-browser + disqualifiers: + - NEVER + enabled: true + extra-data: ~ + image-res: ic_onboarding_welcome + ordering: 10 + prerequisites: + - ALWAYS + primary-button-label: juno_onboarding_default_browser_positive_button + secondary-button-label: juno_onboarding_default_browser_negative_button + title: juno_onboarding_default_browser_title_nimbus_2 + add-search-widget: + body: juno_onboarding_add_search_widget_description + card-type: add-search-widget + disqualifiers: + - NEVER + enabled: true + extra-data: ~ + image-res: ic_onboarding_search_widget + ordering: 15 + prerequisites: + - ALWAYS + primary-button-label: juno_onboarding_add_search_widget_positive_button + secondary-button-label: juno_onboarding_add_search_widget_negative_button + title: juno_onboarding_add_search_widget_title + sync-sign-in: + body: juno_onboarding_sign_in_description_3 + card-type: sync-sign-in + disqualifiers: + - NEVER + enabled: true + extra-data: ~ + image-res: ic_onboarding_sync + ordering: 20 + prerequisites: + - ALWAYS + primary-button-label: juno_onboarding_sign_in_positive_button + secondary-button-label: juno_onboarding_sign_in_negative_button + title: juno_onboarding_sign_in_title_2 + notification-permission: + body: juno_onboarding_enable_notifications_description_nimbus_2 + card-type: notification-permission + disqualifiers: + - NEVER + enabled: true + extra-data: ~ + image-res: ic_notification_permission + ordering: 30 + prerequisites: + - ALWAYS + primary-button-label: juno_onboarding_enable_notifications_positive_button + secondary-button-label: juno_onboarding_enable_notifications_negative_button + title: juno_onboarding_enable_notifications_title_nimbus_2 + string-alias: OnboardingCardKey + conditions: + description: "A collection of out the box conditional expressions to be used in determining whether a card should show or not. Each entry maps to a valid JEXL expression.\n" + type: "Map" + default: + ALWAYS: "true" + NEVER: "false" + string-alias: ConditionName + menu-redesign: + description: Control the new menu redesign. + variables: + enabled: + description: "If true, the new menu redesign is available." + type: Boolean + default: false + report-site-issue: + description: "If true, report site issue menu item and preview is available." + type: Boolean + default: true + messaging: + description: "The in-app messaging system.\n" + variables: + $$experiment: + description: "The only acceptable value for `MessageData#experiment`. This should not be set by experiment." + type: ExperimentSlug + default: "{experiment}" + string-alias: ExperimentSlug + $$surfaces: + description: "A list available surfaces for this app.\n\nThis should not be written to by experiments, and should be hidden to users.\n" + type: List + default: + - homescreen + - notification + - survey + - microsurvey + string-alias: SurfaceName + actions: + description: A growable map of action URLs. + type: "Map" + default: + OPEN_URL: "://open" + ENABLE_PRIVATE_BROWSING: "://enable_private_browsing" + INSTALL_SEARCH_WIDGET: "://install_search_widget" + MAKE_DEFAULT_BROWSER: "://make_default_browser" + VIEW_BOOKMARKS: "://urls_bookmarks" + VIEW_COLLECTIONS: "://home_collections" + VIEW_HISTORY: "://urls_history" + VIEW_HOMESCREEN: "://home" + OPEN_SETTINGS_ACCESSIBILITY: "://settings_accessibility" + OPEN_SETTINGS_ADDON_MANAGER: "://settings_addon_manager" + OPEN_SETTINGS_DELETE_BROWSING_DATA: "://settings_delete_browsing_data" + OPEN_SETTINGS_LOGINS: "://settings_logins" + OPEN_SETTINGS_NOTIFICATIONS: "://settings_notifications" + OPEN_SETTINGS_PRIVACY: "://settings_privacy" + OPEN_SETTINGS_SEARCH_ENGINE: "://settings_search_engine" + OPEN_SETTINGS_TRACKING_PROTECTION: "://settings_tracking_protection" + OPEN_SETTINGS_WALLPAPERS: "://settings_wallpapers" + OPEN_SETTINGS: "://settings" + OPEN_SHARE_SHEET: "://share_sheet" + TURN_ON_SYNC: "://turn_on_sync" + string-alias: ActionName + message-under-experiment: + description: "Deprecated in favor of `MessageData#experiment`. This will be removed in future releases." + type: Option + default: ~ + messages: + description: A growable collection of messages + type: "Map" + default: + default-browser: + title: default_browser_experiment_card_title + text: default_browser_experiment_card_text + surface: homescreen + action: MAKE_DEFAULT_BROWSER + trigger-if-all: + - USER_ESTABLISHED_INSTALL + - ANDROID_API_BELOW_29 + exclude-if-any: + - I_AM_DEFAULT_BROWSER + style: PERSISTENT + button-label: preferences_set_as_default_browser + default-browser-notification: + title: nimbus_notification_default_browser_title + text: nimbus_notification_default_browser_text + surface: notification + style: NOTIFICATION + trigger-if-all: + - DAY_3_AFTER_INSTALL + exclude-if-any: + - I_AM_DEFAULT_BROWSER + action: MAKE_DEFAULT_BROWSER + string-alias: MessageKey + notification-config: + description: Configuration of the notification worker for all notification messages. + type: NotificationConfig + default: + refresh-interval: 240 + on-control: + description: What should be displayed when a control message is selected. + type: ControlMessageBehavior + default: show-next-message + styles: + description: "A map of styles to configure message appearance.\n" + type: "Map" + default: + DEFAULT: + priority: 50 + max-display-count: 5 + SURVEY: + priority: 55 + max-display-count: 1 + PERSISTENT: + priority: 50 + max-display-count: 20 + WARNING: + priority: 60 + max-display-count: 10 + URGENT: + priority: 100 + max-display-count: 10 + NOTIFICATION: + priority: 50 + max-display-count: 1 + MICROSURVEY: + priority: 50 + max-display-count: 5 + string-alias: StyleName + triggers: + description: "A collection of out the box trigger expressions. Each entry maps to a valid JEXL expression.\n" + type: "Map" + default: + USER_ESTABLISHED_INSTALL: number_of_app_launches >=4 + ANDROID_API_BELOW_29: android_version < 29 + USER_RECENTLY_INSTALLED: days_since_install < 7 + USER_RECENTLY_UPDATED: days_since_update < 7 && days_since_install != days_since_update + USER_TIER_ONE_COUNTRY: "('US' in locale || 'GB' in locale || 'CA' in locale || 'DE' in locale || 'FR' in locale)" + USER_EN_SPEAKER: "'en' in locale" + USER_ES_SPEAKER: "'es' in locale" + USER_DE_SPEAKER: "'de' in locale" + USER_FR_SPEAKER: "'fr' in locale" + DEVICE_ANDROID: "os == 'Android'" + DEVICE_IOS: "os == 'iOS'" + ALWAYS: "true" + NEVER: "false" + DAY_1_AFTER_INSTALL: days_since_install == 1 + DAY_2_AFTER_INSTALL: days_since_install == 2 + DAY_3_AFTER_INSTALL: days_since_install == 3 + DAY_4_AFTER_INSTALL: days_since_install == 4 + DAY_5_AFTER_INSTALL: days_since_install == 5 + MORE_THAN_24H_SINCE_INSTALLED_OR_UPDATED: days_since_update >= 1 + I_AM_DEFAULT_BROWSER: is_default_browser + I_AM_NOT_DEFAULT_BROWSER: is_default_browser == false + FUNNEL_PAID: "adjust_campaign != ''" + FUNNEL_ORGANIC: "adjust_campaign == ''" + INACTIVE_1_DAY: "'app_launched'|eventLastSeen('Hours') >= 24" + INACTIVE_2_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 2" + INACTIVE_3_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 3" + INACTIVE_4_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 4" + INACTIVE_5_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 5" + RECENTLY_PRINTED: "'print_tapped'|eventLastSeen('Hours') <= 24" + SECOND_HOMEPAGE_VIEW: "'home_screen_displayed'|eventSum('Years', 4, 0) >= 2" + PERFORMED_A_SEARCH_AGAIN_RECENTLY: "'performed_search'|eventSum('Years', 4, 0) >= 2 && 'performed_search'|eventLastSeen('Minutes') < 1" + FXA_CURRENTLY_SIGNED_IN: is_fxa_signed_in == true + FXA_MORE_THAN_1_DEVICE: fxa_connected_devices > 1 + FXA_SIGNED_IN: "'sync_auth.sign_in'|eventLastSeen('Years', 0) <= 4" + FXA_NOT_SIGNED_IN: "'sync_auth.sign_in'|eventLastSeen('Years', 0) > 4" + USER_INFREQUENT: "'app_launched'|eventCountNonZero('Days', 28) >= 1 && 'app_launched'|eventCountNonZero('Days', 28) < 7" + USER_CASUAL: "'app_launched'|eventCountNonZero('Days', 28) >= 7 && 'app_launched'|eventCountNonZero('Days', 28) < 14" + USER_REGULAR: "'app_launched'|eventCountNonZero('Days', 28) >= 14 && 'app_launched'|eventCountNonZero('Days', 28) < 21" + USER_CORE_ACTIVE: "'app_launched'|eventCountNonZero('Days', 28) >= 21" + LAUNCHED_ONCE_THIS_WEEK: "'app_launched'|eventSum('Days', 7) == 1" + string-alias: TriggerName + allow-coenrollment: true + microsurveys: + description: Feature for microsurveys. + variables: + enabled: + description: "When the feature is enabled then microsurveys can be used.\n" + type: Boolean + default: true + mr2022: + description: Features for MR 2022. + variables: + sections-enabled: + description: This property provides a lookup table of whether or not the given section should be enabled. + type: "Map" + default: + home-onboarding-dialog-existing-users: true + sync-cfr: true + wallpapers-selection-tool: true + jump-back-in-cfr: true + tcp-cfr: true + tcp-feature: true + navigation-toolbar: + description: Feature for navigation toolbar. + variables: + enabled: + description: "When the feature is enabled then the user will see the new navigation toolbar.\n" + type: Boolean + default: false + networking: + description: Enables networking features + variables: + fetchPriorityEnabled: + description: "Enables or disables network.fetchpriority.enabled preference.\n" + type: Boolean + default: true + nimbus-is-ready: + description: "A feature that provides the number of Nimbus is_ready events to send when Nimbus finishes launching.\n" + variables: + event-count: + description: The number of events that should be sent. + type: Int + default: 1 + nimbus-system: + description: "Configuration of the Nimbus System in Android.\n" + variables: + refresh-interval-foreground: + description: "The minimum interval in minutes between fetching experiment\nrecipes in the foreground.\n" + type: Int + default: 60 + nimbus-validation: + description: A feature that does not correspond to an application feature suitable for showing that Nimbus is working. This should never be used in production. + variables: + settings-icon: + description: The drawable displayed in the app menu for Settings + type: String + default: mozac_ic_settings + settings-punctuation: + description: The emoji displayed in the Settings screen title. + type: String + default: "" + settings-title: + description: The title of displayed in the Settings screen and app menu. + type: Text + default: browser_menu_settings + onboarding: + description: "A feature that configures the new user onboarding page. Note that onboarding is a **first run** feature, and should only be modified by first run experiments." + variables: + order: + description: Determines the order of the onboarding page panels + type: List + default: + - themes + - toolbar-placement + - sync + - tcp + - privacy-notice + one-click-search: + description: Enable/disable the one click search feature. + variables: + enabled: + description: "If true, the one click search will be enabled." + type: Boolean + default: false + pdfjs: + description: PDF.js features + variables: + download-button: + description: Download button + type: Boolean + default: true + open-in-app-button: + description: Open in app button + type: Boolean + default: true + print: + description: A feature for printing from the share or browser menu. + variables: + browser-print-enabled: + description: "If true, a print button from the browser menu is available." + type: Boolean + default: true + share-print-enabled: + description: "If true, a print button from the share menu is available." + type: Boolean + default: true + private-browsing: + description: Private Browsing Mode + variables: + felt-privacy-enabled: + description: "if true, enable felt privacy related UI" + type: Boolean + default: false + query-parameter-stripping: + description: Features for query parameter stripping. + variables: + sections-enabled: + description: This property provides a lookup table of whether or not the given section should be enabled. + type: "Map" + default: + query-parameter-stripping: "0" + query-parameter-stripping-pmb: "0" + query-parameter-stripping-allow-list: "" + query-parameter-stripping-strip-list: "" + re-engagement-notification: + description: A feature that shows the re-engagement notification if the user is inactive. + variables: + enabled: + description: "If true, the re-engagement notification is shown to the inactive user." + type: Boolean + default: false + type: + description: The type of re-engagement notification that is shown to the inactive user. + type: Int + default: 0 + remote-tab-management: + description: "Features that let users manage tabs on other devices that are connected to the same Mozilla account.\n" + variables: + close-tabs-enabled: + description: "Whether the feature to close synced tabs is enabled. When enabled, this device will allow other devices to close tabs that are open on this device, and show a \"close\" button for tabs that are currently open on other supported devices in the synced tabs tray.\n" + type: Boolean + default: true + search-extra-params: + description: A feature that provides additional args for search. + variables: + channel-id: + description: The channel Id param name with arg. + type: "Map" + default: {} + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + feature-enabler: + description: "The feature enabler param name with arg, NOTE this map could be empty." + type: "Map" + default: {} + search-engine: + description: The search engine name. + type: String + default: "" + search-term-groups: + description: A feature allowing the grouping of URLs around the search term that it came from. + variables: + enabled: + description: "If true, the feature shows up on the homescreen and on the new tab screen." + type: Boolean + default: false + set-as-default-prompt: + description: "Displays native default browser prompt to existing users.\n" + variables: + app-cold-starts-between-prompts: + description: "Minimum number of app cold starts before the next prompt should be displayed to the user.\n" + type: Int + default: 4 + days-between-prompts: + description: "Minimum number of days between displays of Set as default prompt.\n" + type: Int + default: 14 + enabled: + description: "When the feature is enabled then the Set as default prompt can be triggered for existing users.\n" + type: Boolean + default: true + max-number-of-times-to-display: + description: "Maximum number of time the prompt should be displayed.\n" + type: Int + default: 3 + ship: + description: The feature that controls Session History in Parent (SHIP) in Gecko. + variables: + disabled: + description: "Whether or not to disable SHIP. SHIP is enabled when set to false. SHIP is disabled when set to true.\n" + type: Boolean + default: true + shopping-experience: + description: A feature that shows product review quality information. + variables: + enabled: + description: "if true, the shopping experience feature is shown to the user." + type: Boolean + default: false + product-recommendations: + description: "if true, recommended products feature is enabled to be shown to the user based on their preference." + type: Boolean + default: false + product-recommendations-exposure: + description: "if true, we want to record recommended products inventory for opted-in users, even if product recommendations are disabled." + type: Boolean + default: false + splash-screen: + description: "A feature that extends splash screen duration, allowing additional data fetching time for the app's initial run." + variables: + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + maximum_duration_ms: + description: The maximum amount of time in milliseconds the splashscreen will be visible while waiting for initialization calls to complete. + type: Int + default: 0 + suggest-shipped-domains: + description: Feature that suggests domains from the shipped domain list. + variables: + enabled: + description: "Suggest domains from the shipped domain list.\n" + type: Boolean + default: true + third-party-cookie-blocking: + description: Control third-party cookie blocking. + variables: + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + enabled-normal: + description: "Enables / disables third-party cookie blocking in normal browsing mode.\n" + type: Boolean + default: false + enabled-private: + description: "Enables / disables third-party cookie blocking in private browsing mode.\n" + type: Boolean + default: true + translations: + description: The feature that allows on-device translations of web content. + variables: + downloads-enabled: + description: "Show the global language model download options entry point for translations. ('Download languages' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + global-lang-settings-enabled: + description: "Show the global language options entry point for automatically translating. ('Automatic Translation' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + global-settings-enabled: + description: "Show the global settings entry point within the translations feature. ('Translation Settings' on the page settings view.) 'page-settings-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + global-site-settings-enabled: + description: "Show the global never translate this site options entry point for site management. ('Never translate these sites' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + main-flow-browser-menu-enabled: + description: "Show the browser menu entry point into the translations feature. ('Translate Page' on browser menu.)\n" + type: Boolean + default: true + main-flow-toolbar-enabled: + description: "Show the primary toolbar entry point into the translations feature. (Translations icon on URL toolbar.)\n" + type: Boolean + default: true + page-settings-enabled: + description: "Show the page settings entry point within the translations feature. (Gear icon on the translations main flow page.) 'main-flow-toolbar-enabled' or 'main-flow-browser-menu-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + user-characteristics: + description: A feature for control user characteristic data collection + variables: + currentVersion: + description: The current collection version of the user characteristics. + type: Int + default: 0 +enums: + ControlMessageBehavior: + description: An enum to influence what should be displayed when a control message is selected. + variants: + show-next-message: + description: The next eligible message should be shown. + show-none: + description: The surface should show no message. + CookieBannersSection: + description: The identifiers for the sections of the MR 2022. + variants: + feature-setting-detect-only: + description: "An integer either 0 or 1 indicating if cookie banner detect only mode should be enabled or disabled. 0 for setting to be disabled, and 1 for enabling the setting." + feature-setting-global-rules: + description: "An integer either 0 or 1 indicating if cookie banner global rules should be enabled or disabled. 0 for setting to be disabled, and 1 for enabling the setting." + feature-setting-global-rules-sub-frames: + description: "An integer either 0 or 1 indicating if cookie banner global rules sub-frames should be enabled or disabled. 0 for setting to be disabled, and 1 for enabling the setting." + feature-setting-value: + description: "An integer either 0 or 1 indicating if cookie banner setting should be enabled or disabled, 0 for setting the value to disabled, 1 for enabling the setting with the value reject_all." + feature-setting-value-pbm: + description: "An integer either 0 or 1 indicating if cookie banner setting should be enabled or disabled, 0 for setting the value to disabled, 1 for enabling the setting with the value reject_all." + feature-ui: + description: "An integer either 0 or 1 indicating if the UI for cookie banner handling should be visible, 0 to hide the UI and 1 to show the UI. The actual UI is composed by cookie banner section in the settings page, the toolbar section and the re-engagement dialog." + HomeScreenSection: + description: The identifiers for the sections of the homescreen. + variants: + bookmarks: + description: The sites the user has bookmarked. + jump-back-in: + description: The tabs the user was looking immediately before being interrupted. + pocket: + description: The pocket section. This should only be available in the US. + pocket-sponsored-stories: + description: Subsection of the Pocket homescreen section which shows sponsored stories. + recent-explorations: + description: The tab groups + top-sites: + description: The frecency and pinned sites. + MR2022Section: + description: The identifiers for the sections of the MR 2022. + variants: + home-onboarding-dialog-existing-users: + description: Home onboarding dialog for upgraded users. + jump-back-in-cfr: + description: Jump back-in onboarding message. + sync-cfr: + description: CFR for the first time you see a synced tab on the home screen. + tcp-cfr: + description: CFR for the first time you use the browse with Total Cookie Protection on the browser screen. + tcp-feature: + description: Controls the Total Cookie Protection feature. + wallpapers-selection-tool: + description: Wallpapers selection dialog tool for the home screen. + OnboardingCardType: + description: An enum to describe a type of card. + variants: + add-ons: + description: Allows user to install add-ons from onboarding. + add-search-widget: + description: Allows user to add search widget to homescreen. + default-browser: + description: Allows user to set Firefox as the default browser. + notification-permission: + description: Allows user to enable notification permission. + sync-sign-in: + description: Allows user to sync with a Firefox account. + OnboardingPanel: + description: The types of onboarding panels in the onboarding page + variants: + privacy-notice: + description: The onboarding panel where users can tap to view our privacy notice. + sync: + description: The onboarding panel where users can sign in to sync + tcp: + description: The onboarding panel where users can choose their total cookie protection settings + themes: + description: The themes onboarding panel where users pick themes + toolbar-placement: + description: The onboarding panel where users choose their toolbar placement (bottom or top) + QueryParameterStrippingSection: + description: The identifiers for the options for the Query Parameter Stripping feature. + variants: + query-parameter-stripping: + description: "An integer either 0 or 1 indicating if query parameter stripping should be enabled or disabled in normal mode. 0 for setting to be disabled, and 1 for enabling the setting." + query-parameter-stripping-allow-list: + description: An string separated by commas indicating the sites where should from query stripping should be exempted. + query-parameter-stripping-pmb: + description: "An integer either 0 or 1 indicating if query parameter stripping should be enabled or disabled in private mode. 0 for setting to be disabled, and 1 for enabling the setting." + query-parameter-stripping-strip-list: + description: An string separated by commas indicating the list of query params to be stripped from URIs. This list will be merged with records coming from RemoteSettings. + SuggestionType: + description: The type of a Firefox Suggest search suggestion. + variants: + amp: + description: A Firefox Suggestion from adMarketplace. + ampMobile: + description: A firefox Suggestion from adMarketplace specifically for mobile. + wikipedia: + description: A Firefox Suggestion for a Wikipedia page. +objects: + AddOnData: + description: An object to describe an add-on to be installed from the onboarding card. + fields: + average-rating: + description: The average rating of the add-on. + type: String + default: "0.0" + description: + description: A small description of the add-on to be displayed to the user. + type: Text + default: "" + icon-res: + description: The resource id of the icon of the add-on to be displayed. + type: Image + default: ic_onboarding_welcome + id: + description: The identifier for this add-on. + type: Text + default: "" + install-url: + description: The url from where the add-on can be installed. + type: Text + default: "" + name: + description: The name of the add-on to be displayed to the user. + type: Text + default: "" + review-count: + description: The amount of reviews the add-on has. + type: String + default: "0.0" + ExtraCardData: + description: "Holds data for cards that require additional data, e.g. add-ons, toolbar placement cards." + fields: + add-ons-data: + description: "An optional list of add-ons which will be shown in add-on onboarding card.\n" + type: List + default: [] + MessageData: + description: "An object to describe a message. It uses human readable strings to describe the triggers, action and style of the message as well as the text of the message and call to action.\n" + fields: + action: + description: "A URL of a page or a deeplink. This may have substitution variables in.\n" + type: ActionName + default: OPEN_URL + action-params: + description: "A string map containing query parameters that will be appended to the action URL. This is useful for opening URLs in tabs, or specifying that the tab should be private. The values may have substitutions, e.g. \"url\": \"https://example.com/id={uuid}\", \"private\": \"true\".\nThe params and their values are all determined downstream of the messaging component, by the embedding app's deeplink processing machinery.\n" + type: "Map" + default: {} + button-label: + description: "The text on the button. If no text is present, the whole message is clickable.\n" + type: Option + default: ~ + exclude-if-any: + description: "A list of strings corresponding to targeting expressions. The message will not be shown if any of the expressions are `true`.\n" + type: List + default: [] + experiment: + description: The slug of the experiment that this message came from. + type: Option + default: ~ + is-control: + description: "Indicates if this message is the control message, if true shouldn't be displayed" + type: Boolean + default: false + microsurvey-config: + description: Optional configuration data for a microsurvey. + type: Option + default: ~ + style: + description: "The style as described in a `StyleData` from the styles table.\n" + type: StyleName + default: DEFAULT + surface: + description: The surface identifier for this message. + type: SurfaceName + default: homescreen + text: + description: The message text displayed to the user + type: Text + default: "" + title: + description: The title text displayed to the user + type: Option + default: ~ + trigger-if-all: + description: "A list of strings corresponding to targeting expressions. The message will be shown if all expressions are `true`.\n" + type: List + default: [] + MicrosurveyAnswer: + description: Attributes relating to microsurvey content. + fields: + ordering: + description: "Used to sequence the answers top to bottom. E.g. 0 will be the first/top item, 1 will be next and so on. Always set either ALL the provided answers ordering or NONE. If ALL answers are default, the the ordering used will be the same as provided by the experiment.\n" + type: Int + default: 0 + text: + description: The text for the answer. + type: Text + default: "" + MicrosurveyConfig: + description: Attributes relating to microsurvey content. + fields: + answers: + description: "The list of answers to present to the user e.g. \"Satisfied, Dissatisfied...\"." + type: List + default: [] + icon: + description: The icon shown in the survey. + type: Option + default: ~ + utm-content: + description: "Optional \"utm_content\" parameter for the privacy notice URL to specify the feature being surveyed." + type: Option + default: ~ + NotificationConfig: + description: Attributes controlling the global configuration of notification messages. + fields: + refresh-interval: + description: "How often, in minutes, the notification message worker will wake up and check for new messages.\n" + type: Int + default: 240 + OnboardingCardData: + description: An object to describe a user facing onboarding card. + fields: + body: + description: The message text displayed to the user. May contain linkable text. + type: Text + default: "" + card-type: + description: The type of the card. + type: OnboardingCardType + default: default-browser + disqualifiers: + description: "A list of strings corresponding to targeting expressions. The card will not be shown if any expression is `true`.\n" + type: List + default: + - NEVER + enabled: + description: "If true, this card is shown to the user." + type: Boolean + default: true + extra-data: + description: Optional extra data for cards that require additional data. + type: Option + default: ~ + image-res: + description: The resource id of the image to be displayed. + type: Image + default: ic_onboarding_welcome + ordering: + description: Used to sequence the cards. + type: Int + default: 0 + prerequisites: + description: "A list of strings corresponding to targeting expressions. The card will be shown if all expressions are `true` and if no expressions in the `disqualifiers` table are true, or if the `disqualifiers` table is empty.\n" + type: List + default: + - ALWAYS + primary-button-label: + description: The text to display on the primary button. + type: Text + default: "" + secondary-button-label: + description: The text to display on the secondary button. + type: Text + default: "" + title: + description: The title text displayed to the user. + type: Text + default: "" + StyleData: + description: "A group of properties (predominantly visual) to describe the style of the message.\n" + fields: + max-display-count: + description: "How many sessions will this message be shown to the user before it is expired.\n" + type: Int + default: 5 + priority: + description: "The importance of this message. 0 is not very important, 100 is very important.\n" + type: Int + default: 50 diff --git a/experimenter/experimenter/features/manifests/fenix/v134.0.1/developer.fml.yaml b/experimenter/experimenter/features/manifests/fenix/v134.0.1/developer.fml.yaml new file mode 100644 index 0000000000..5989e461bc --- /dev/null +++ b/experimenter/experimenter/features/manifests/fenix/v134.0.1/developer.fml.yaml @@ -0,0 +1,962 @@ +--- +version: 1.0.0 +about: + description: Nimbus Feature Manifest for Fenix (Firefox Android) +channels: + - developer +features: + alternative-app-launcher-icon: + description: A feature that changes the app launcher icon background color. + variables: + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + reset-to-default: + description: "If true use the default icon, if false use the alternative icon. This is required to 'reset' the icon for enrolled users once the initial experiment is complete.\n" + type: Boolean + default: false + awesomebar-suggestion-provider: + description: Configuration for the Firefox Suggest awesomebar suggestion provider. + variables: + available-suggestion-types: + description: "A map of suggestion types to booleans that indicate whether or not the provider should return suggestions of those types.\n" + type: "Map" + default: + amp: true + ampMobile: false + wikipedia: true + bookmarks: + description: Feature for Bookmarks + variables: + new-compose-ui: + description: "if true, enable new compose based UI" + type: Boolean + default: false + cookie-banners: + description: Features for cookie banner handling. + variables: + sections-enabled: + description: This property provides a lookup table of whether or not the given section should be enabled. + type: "Map" + default: + feature-ui: 1 + feature-setting-value: 0 + feature-setting-value-pbm: 1 + feature-setting-detect-only: 0 + feature-setting-global-rules: 1 + feature-setting-global-rules-sub-frames: 1 + fingerprinting-protection: + description: Control Fingerprinting Protection + variables: + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + enabled-normal: + description: "Enables / disables fingerprinting protection in normal browsing mode.\n" + type: Boolean + default: false + enabled-private: + description: "Enables / disables fingerprinting protection in private browsing mode.\n" + type: Boolean + default: true + fdlibm-math: + description: "Uses a different math backend for Math.sin/cos/tan in JavaScript that exposes less entropy\n" + type: Boolean + default: false + overrides: + description: "The protection overrides to add or remove fingerprinting protection targets. Please check RFPTargets.inc for all supported targets.\n" + type: String + default: "" + fission: + description: The feature that controls whether fission is enabled or not in Gecko. + variables: + enabled: + description: "Whether or not to enable fission. Fission is enabled when set to true. Fission is disabled when set to false.\n" + type: Boolean + default: false + fx-suggest: + description: A feature that provides Firefox Suggest search suggestions. + variables: + boost-amp-wiki: + description: "The feature boost wiki and AMP suggestions to the top of its group.\n" + type: Boolean + default: true + enabled: + description: "Whether the feature is enabled. When Firefox Suggest is enabled, Firefox will download and store new search suggestions in the background, and show additional Search settings to control which suggestions appear in the awesomebar. When Firefox Suggest is disabled, Firefox will not download new suggestions, and hide the additional Search settings.\n" + type: Boolean + default: true + glean: + description: A feature that provides server-side configurations for Glean metrics (aka Server Knobs). + variables: + delay-ping-lifetime-io: + description: Glean will delay io for ping lifetime metrics + type: Boolean + default: true + enable-event-timestamps: + description: Enables precise event timestamps for Glean events + type: Boolean + default: true + metrics-enabled: + description: "A map of metric base-identifiers to booleans representing the state of the 'enabled' flag for that metric." + type: "Map" + default: {} + ping-lifetime-max-time: + description: After what time to auto-flush + type: Int + default: 2000 + ping-lifetime-threshold: + description: Write count threshold when to auto-flush + type: Int + default: 1000 + allow-coenrollment: true + growth-data: + description: A feature measuring campaign growth data + variables: + enabled: + description: "If true, the feature is active" + type: Boolean + default: false + homescreen: + description: The homescreen that the user goes to when they press home or new tab. + variables: + sections-enabled: + description: "This property provides a lookup table of whether or not the given section should be enabled. If the section is enabled, it should be toggleable in the settings screen, and on by default." + type: "Map" + default: + top-sites: true + jump-back-in: true + bookmarks: true + recent-explorations: true + pocket: true + pocket-sponsored-stories: true + javascript: + description: Enables Javascript Engine (Spidermonkey) features + variables: + parallelMarkingEnabled: + description: "Enables or disables javascript.options.mem.gc_parallel_marking preference.\n" + type: Boolean + default: false + juno-onboarding: + description: A feature that shows the onboarding flow. + variables: + cards: + description: Collection of user facing onboarding cards. + type: "Map" + default: + default-browser: + body: juno_onboarding_default_browser_description_nimbus_3 + card-type: default-browser + disqualifiers: + - NEVER + enabled: true + extra-data: ~ + image-res: ic_onboarding_welcome + ordering: 10 + prerequisites: + - ALWAYS + primary-button-label: juno_onboarding_default_browser_positive_button + secondary-button-label: juno_onboarding_default_browser_negative_button + title: juno_onboarding_default_browser_title_nimbus_2 + add-search-widget: + body: juno_onboarding_add_search_widget_description + card-type: add-search-widget + disqualifiers: + - NEVER + enabled: true + extra-data: ~ + image-res: ic_onboarding_search_widget + ordering: 15 + prerequisites: + - ALWAYS + primary-button-label: juno_onboarding_add_search_widget_positive_button + secondary-button-label: juno_onboarding_add_search_widget_negative_button + title: juno_onboarding_add_search_widget_title + sync-sign-in: + body: juno_onboarding_sign_in_description_3 + card-type: sync-sign-in + disqualifiers: + - NEVER + enabled: true + extra-data: ~ + image-res: ic_onboarding_sync + ordering: 20 + prerequisites: + - ALWAYS + primary-button-label: juno_onboarding_sign_in_positive_button + secondary-button-label: juno_onboarding_sign_in_negative_button + title: juno_onboarding_sign_in_title_2 + notification-permission: + body: juno_onboarding_enable_notifications_description_nimbus_2 + card-type: notification-permission + disqualifiers: + - NEVER + enabled: true + extra-data: ~ + image-res: ic_notification_permission + ordering: 30 + prerequisites: + - ALWAYS + primary-button-label: juno_onboarding_enable_notifications_positive_button + secondary-button-label: juno_onboarding_enable_notifications_negative_button + title: juno_onboarding_enable_notifications_title_nimbus_2 + string-alias: OnboardingCardKey + conditions: + description: "A collection of out the box conditional expressions to be used in determining whether a card should show or not. Each entry maps to a valid JEXL expression.\n" + type: "Map" + default: + ALWAYS: "true" + NEVER: "false" + string-alias: ConditionName + menu-redesign: + description: Control the new menu redesign. + variables: + enabled: + description: "If true, the new menu redesign is available." + type: Boolean + default: false + report-site-issue: + description: "If true, report site issue menu item and preview is available." + type: Boolean + default: true + messaging: + description: "The in-app messaging system.\n" + variables: + $$experiment: + description: "The only acceptable value for `MessageData#experiment`. This should not be set by experiment." + type: ExperimentSlug + default: "{experiment}" + string-alias: ExperimentSlug + $$surfaces: + description: "A list available surfaces for this app.\n\nThis should not be written to by experiments, and should be hidden to users.\n" + type: List + default: + - homescreen + - notification + - survey + - microsurvey + string-alias: SurfaceName + actions: + description: A growable map of action URLs. + type: "Map" + default: + OPEN_URL: "://open" + ENABLE_PRIVATE_BROWSING: "://enable_private_browsing" + INSTALL_SEARCH_WIDGET: "://install_search_widget" + MAKE_DEFAULT_BROWSER: "://make_default_browser" + VIEW_BOOKMARKS: "://urls_bookmarks" + VIEW_COLLECTIONS: "://home_collections" + VIEW_HISTORY: "://urls_history" + VIEW_HOMESCREEN: "://home" + OPEN_SETTINGS_ACCESSIBILITY: "://settings_accessibility" + OPEN_SETTINGS_ADDON_MANAGER: "://settings_addon_manager" + OPEN_SETTINGS_DELETE_BROWSING_DATA: "://settings_delete_browsing_data" + OPEN_SETTINGS_LOGINS: "://settings_logins" + OPEN_SETTINGS_NOTIFICATIONS: "://settings_notifications" + OPEN_SETTINGS_PRIVACY: "://settings_privacy" + OPEN_SETTINGS_SEARCH_ENGINE: "://settings_search_engine" + OPEN_SETTINGS_TRACKING_PROTECTION: "://settings_tracking_protection" + OPEN_SETTINGS_WALLPAPERS: "://settings_wallpapers" + OPEN_SETTINGS: "://settings" + OPEN_SHARE_SHEET: "://share_sheet" + TURN_ON_SYNC: "://turn_on_sync" + string-alias: ActionName + message-under-experiment: + description: "Deprecated in favor of `MessageData#experiment`. This will be removed in future releases." + type: Option + default: ~ + messages: + description: A growable collection of messages + type: "Map" + default: + default-browser: + title: default_browser_experiment_card_title + text: default_browser_experiment_card_text + surface: homescreen + action: MAKE_DEFAULT_BROWSER + trigger-if-all: + - USER_ESTABLISHED_INSTALL + - ANDROID_API_BELOW_29 + exclude-if-any: + - I_AM_DEFAULT_BROWSER + style: PERSISTENT + button-label: preferences_set_as_default_browser + default-browser-notification: + title: nimbus_notification_default_browser_title + text: nimbus_notification_default_browser_text + surface: notification + style: NOTIFICATION + trigger-if-all: + - DAY_3_AFTER_INSTALL + exclude-if-any: + - I_AM_DEFAULT_BROWSER + action: MAKE_DEFAULT_BROWSER + microsurvey-printing-example: + title: microsurvey_prompt_printing_title + text: microsurvey_survey_printing_title + surface: microsurvey + trigger-if-all: + - RECENTLY_PRINTED + style: MICROSURVEY + microsurvey-config: + utm-content: homepage + icon: ic_print + answers: + - text: likert_scale_option_1 + ordering: 0 + - text: likert_scale_option_2 + ordering: 1 + - text: likert_scale_option_3 + ordering: 2 + - text: likert_scale_option_4 + ordering: 3 + - text: likert_scale_option_5 + ordering: 4 + - text: likert_scale_option_6 + ordering: 5 + string-alias: MessageKey + notification-config: + description: Configuration of the notification worker for all notification messages. + type: NotificationConfig + default: + refresh-interval: 120 + on-control: + description: What should be displayed when a control message is selected. + type: ControlMessageBehavior + default: show-next-message + styles: + description: "A map of styles to configure message appearance.\n" + type: "Map" + default: + DEFAULT: + priority: 50 + max-display-count: 100 + SURVEY: + priority: 55 + max-display-count: 1 + PERSISTENT: + priority: 50 + max-display-count: 20 + WARNING: + priority: 60 + max-display-count: 10 + URGENT: + priority: 100 + max-display-count: 10 + NOTIFICATION: + priority: 50 + max-display-count: 1 + MICROSURVEY: + priority: 50 + max-display-count: 5 + EXPIRES_QUICKLY: + priority: 100 + max-display-count: 1 + string-alias: StyleName + triggers: + description: "A collection of out the box trigger expressions. Each entry maps to a valid JEXL expression.\n" + type: "Map" + default: + USER_ESTABLISHED_INSTALL: number_of_app_launches >=4 + ANDROID_API_BELOW_29: android_version < 29 + USER_RECENTLY_INSTALLED: days_since_install < 7 + USER_RECENTLY_UPDATED: days_since_update < 7 && days_since_install != days_since_update + USER_TIER_ONE_COUNTRY: "('US' in locale || 'GB' in locale || 'CA' in locale || 'DE' in locale || 'FR' in locale)" + USER_EN_SPEAKER: "'en' in locale" + USER_ES_SPEAKER: "'es' in locale" + USER_DE_SPEAKER: "'de' in locale" + USER_FR_SPEAKER: "'fr' in locale" + DEVICE_ANDROID: "os == 'Android'" + DEVICE_IOS: "os == 'iOS'" + ALWAYS: "true" + NEVER: "false" + DAY_1_AFTER_INSTALL: days_since_install == 1 + DAY_2_AFTER_INSTALL: days_since_install == 2 + DAY_3_AFTER_INSTALL: days_since_install == 3 + DAY_4_AFTER_INSTALL: days_since_install == 4 + DAY_5_AFTER_INSTALL: days_since_install == 5 + MORE_THAN_24H_SINCE_INSTALLED_OR_UPDATED: days_since_update >= 1 + I_AM_DEFAULT_BROWSER: is_default_browser + I_AM_NOT_DEFAULT_BROWSER: is_default_browser == false + FUNNEL_PAID: "adjust_campaign != ''" + FUNNEL_ORGANIC: "adjust_campaign == ''" + INACTIVE_1_DAY: "'app_launched'|eventLastSeen('Hours') >= 24" + INACTIVE_2_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 2" + INACTIVE_3_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 3" + INACTIVE_4_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 4" + INACTIVE_5_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 5" + RECENTLY_PRINTED: "'print_tapped'|eventLastSeen('Hours') <= 24" + SECOND_HOMEPAGE_VIEW: "'home_screen_displayed'|eventSum('Years', 4, 0) >= 2" + PERFORMED_A_SEARCH_AGAIN_RECENTLY: "'performed_search'|eventSum('Years', 4, 0) >= 2 && 'performed_search'|eventLastSeen('Minutes') < 1" + FXA_CURRENTLY_SIGNED_IN: is_fxa_signed_in == true + FXA_MORE_THAN_1_DEVICE: fxa_connected_devices > 1 + FXA_SIGNED_IN: "'sync_auth.sign_in'|eventLastSeen('Years', 0) <= 4" + FXA_NOT_SIGNED_IN: "'sync_auth.sign_in'|eventLastSeen('Years', 0) > 4" + USER_INFREQUENT: "'app_launched'|eventCountNonZero('Days', 28) >= 1 && 'app_launched'|eventCountNonZero('Days', 28) < 7" + USER_CASUAL: "'app_launched'|eventCountNonZero('Days', 28) >= 7 && 'app_launched'|eventCountNonZero('Days', 28) < 14" + USER_REGULAR: "'app_launched'|eventCountNonZero('Days', 28) >= 14 && 'app_launched'|eventCountNonZero('Days', 28) < 21" + USER_CORE_ACTIVE: "'app_launched'|eventCountNonZero('Days', 28) >= 21" + LAUNCHED_ONCE_THIS_WEEK: "'app_launched'|eventSum('Days', 7) == 1" + string-alias: TriggerName + allow-coenrollment: true + microsurveys: + description: Feature for microsurveys. + variables: + enabled: + description: "When the feature is enabled then microsurveys can be used.\n" + type: Boolean + default: true + mr2022: + description: Features for MR 2022. + variables: + sections-enabled: + description: This property provides a lookup table of whether or not the given section should be enabled. + type: "Map" + default: + home-onboarding-dialog-existing-users: true + sync-cfr: true + wallpapers-selection-tool: true + jump-back-in-cfr: true + tcp-cfr: true + tcp-feature: true + navigation-toolbar: + description: Feature for navigation toolbar. + variables: + enabled: + description: "When the feature is enabled then the user will see the new navigation toolbar.\n" + type: Boolean + default: true + networking: + description: Enables networking features + variables: + fetchPriorityEnabled: + description: "Enables or disables network.fetchpriority.enabled preference.\n" + type: Boolean + default: true + nimbus-is-ready: + description: "A feature that provides the number of Nimbus is_ready events to send when Nimbus finishes launching.\n" + variables: + event-count: + description: The number of events that should be sent. + type: Int + default: 1 + nimbus-system: + description: "Configuration of the Nimbus System in Android.\n" + variables: + refresh-interval-foreground: + description: "The minimum interval in minutes between fetching experiment\nrecipes in the foreground.\n" + type: Int + default: 60 + nimbus-validation: + description: A feature that does not correspond to an application feature suitable for showing that Nimbus is working. This should never be used in production. + variables: + settings-icon: + description: The drawable displayed in the app menu for Settings + type: String + default: mozac_ic_settings + settings-punctuation: + description: The emoji displayed in the Settings screen title. + type: String + default: "" + settings-title: + description: The title of displayed in the Settings screen and app menu. + type: Text + default: browser_menu_settings + onboarding: + description: "A feature that configures the new user onboarding page. Note that onboarding is a **first run** feature, and should only be modified by first run experiments." + variables: + order: + description: Determines the order of the onboarding page panels + type: List + default: + - themes + - toolbar-placement + - sync + - tcp + - privacy-notice + one-click-search: + description: Enable/disable the one click search feature. + variables: + enabled: + description: "If true, the one click search will be enabled." + type: Boolean + default: false + pdfjs: + description: PDF.js features + variables: + download-button: + description: Download button + type: Boolean + default: true + open-in-app-button: + description: Open in app button + type: Boolean + default: true + print: + description: A feature for printing from the share or browser menu. + variables: + browser-print-enabled: + description: "If true, a print button from the browser menu is available." + type: Boolean + default: true + share-print-enabled: + description: "If true, a print button from the share menu is available." + type: Boolean + default: true + private-browsing: + description: Private Browsing Mode + variables: + felt-privacy-enabled: + description: "if true, enable felt privacy related UI" + type: Boolean + default: false + query-parameter-stripping: + description: Features for query parameter stripping. + variables: + sections-enabled: + description: This property provides a lookup table of whether or not the given section should be enabled. + type: "Map" + default: + query-parameter-stripping: "0" + query-parameter-stripping-pmb: "0" + query-parameter-stripping-allow-list: "" + query-parameter-stripping-strip-list: "" + re-engagement-notification: + description: A feature that shows the re-engagement notification if the user is inactive. + variables: + enabled: + description: "If true, the re-engagement notification is shown to the inactive user." + type: Boolean + default: false + type: + description: The type of re-engagement notification that is shown to the inactive user. + type: Int + default: 0 + remote-tab-management: + description: "Features that let users manage tabs on other devices that are connected to the same Mozilla account.\n" + variables: + close-tabs-enabled: + description: "Whether the feature to close synced tabs is enabled. When enabled, this device will allow other devices to close tabs that are open on this device, and show a \"close\" button for tabs that are currently open on other supported devices in the synced tabs tray.\n" + type: Boolean + default: true + search-extra-params: + description: A feature that provides additional args for search. + variables: + channel-id: + description: The channel Id param name with arg. + type: "Map" + default: {} + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + feature-enabler: + description: "The feature enabler param name with arg, NOTE this map could be empty." + type: "Map" + default: {} + search-engine: + description: The search engine name. + type: String + default: "" + search-term-groups: + description: A feature allowing the grouping of URLs around the search term that it came from. + variables: + enabled: + description: "If true, the feature shows up on the homescreen and on the new tab screen." + type: Boolean + default: true + set-as-default-prompt: + description: "Displays native default browser prompt to existing users.\n" + variables: + app-cold-starts-between-prompts: + description: "Minimum number of app cold starts before the next prompt should be displayed to the user.\n" + type: Int + default: 4 + days-between-prompts: + description: "Minimum number of days between displays of Set as default prompt.\n" + type: Int + default: 14 + enabled: + description: "When the feature is enabled then the Set as default prompt can be triggered for existing users.\n" + type: Boolean + default: true + max-number-of-times-to-display: + description: "Maximum number of time the prompt should be displayed.\n" + type: Int + default: 3 + ship: + description: The feature that controls Session History in Parent (SHIP) in Gecko. + variables: + disabled: + description: "Whether or not to disable SHIP. SHIP is enabled when set to false. SHIP is disabled when set to true.\n" + type: Boolean + default: true + shopping-experience: + description: A feature that shows product review quality information. + variables: + enabled: + description: "if true, the shopping experience feature is shown to the user." + type: Boolean + default: true + product-recommendations: + description: "if true, recommended products feature is enabled to be shown to the user based on their preference." + type: Boolean + default: true + product-recommendations-exposure: + description: "if true, we want to record recommended products inventory for opted-in users, even if product recommendations are disabled." + type: Boolean + default: true + splash-screen: + description: "A feature that extends splash screen duration, allowing additional data fetching time for the app's initial run." + variables: + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + maximum_duration_ms: + description: The maximum amount of time in milliseconds the splashscreen will be visible while waiting for initialization calls to complete. + type: Int + default: 0 + suggest-shipped-domains: + description: Feature that suggests domains from the shipped domain list. + variables: + enabled: + description: "Suggest domains from the shipped domain list.\n" + type: Boolean + default: false + third-party-cookie-blocking: + description: Control third-party cookie blocking. + variables: + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + enabled-normal: + description: "Enables / disables third-party cookie blocking in normal browsing mode.\n" + type: Boolean + default: false + enabled-private: + description: "Enables / disables third-party cookie blocking in private browsing mode.\n" + type: Boolean + default: true + translations: + description: The feature that allows on-device translations of web content. + variables: + downloads-enabled: + description: "Show the global language model download options entry point for translations. ('Download languages' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + global-lang-settings-enabled: + description: "Show the global language options entry point for automatically translating. ('Automatic Translation' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + global-settings-enabled: + description: "Show the global settings entry point within the translations feature. ('Translation Settings' on the page settings view.) 'page-settings-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + global-site-settings-enabled: + description: "Show the global never translate this site options entry point for site management. ('Never translate these sites' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + main-flow-browser-menu-enabled: + description: "Show the browser menu entry point into the translations feature. ('Translate Page' on browser menu.)\n" + type: Boolean + default: true + main-flow-toolbar-enabled: + description: "Show the primary toolbar entry point into the translations feature. (Translations icon on URL toolbar.)\n" + type: Boolean + default: true + page-settings-enabled: + description: "Show the page settings entry point within the translations feature. (Gear icon on the translations main flow page.) 'main-flow-toolbar-enabled' or 'main-flow-browser-menu-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + user-characteristics: + description: A feature for control user characteristic data collection + variables: + currentVersion: + description: The current collection version of the user characteristics. + type: Int + default: 0 +enums: + ControlMessageBehavior: + description: An enum to influence what should be displayed when a control message is selected. + variants: + show-next-message: + description: The next eligible message should be shown. + show-none: + description: The surface should show no message. + CookieBannersSection: + description: The identifiers for the sections of the MR 2022. + variants: + feature-setting-detect-only: + description: "An integer either 0 or 1 indicating if cookie banner detect only mode should be enabled or disabled. 0 for setting to be disabled, and 1 for enabling the setting." + feature-setting-global-rules: + description: "An integer either 0 or 1 indicating if cookie banner global rules should be enabled or disabled. 0 for setting to be disabled, and 1 for enabling the setting." + feature-setting-global-rules-sub-frames: + description: "An integer either 0 or 1 indicating if cookie banner global rules sub-frames should be enabled or disabled. 0 for setting to be disabled, and 1 for enabling the setting." + feature-setting-value: + description: "An integer either 0 or 1 indicating if cookie banner setting should be enabled or disabled, 0 for setting the value to disabled, 1 for enabling the setting with the value reject_all." + feature-setting-value-pbm: + description: "An integer either 0 or 1 indicating if cookie banner setting should be enabled or disabled, 0 for setting the value to disabled, 1 for enabling the setting with the value reject_all." + feature-ui: + description: "An integer either 0 or 1 indicating if the UI for cookie banner handling should be visible, 0 to hide the UI and 1 to show the UI. The actual UI is composed by cookie banner section in the settings page, the toolbar section and the re-engagement dialog." + HomeScreenSection: + description: The identifiers for the sections of the homescreen. + variants: + bookmarks: + description: The sites the user has bookmarked. + jump-back-in: + description: The tabs the user was looking immediately before being interrupted. + pocket: + description: The pocket section. This should only be available in the US. + pocket-sponsored-stories: + description: Subsection of the Pocket homescreen section which shows sponsored stories. + recent-explorations: + description: The tab groups + top-sites: + description: The frecency and pinned sites. + MR2022Section: + description: The identifiers for the sections of the MR 2022. + variants: + home-onboarding-dialog-existing-users: + description: Home onboarding dialog for upgraded users. + jump-back-in-cfr: + description: Jump back-in onboarding message. + sync-cfr: + description: CFR for the first time you see a synced tab on the home screen. + tcp-cfr: + description: CFR for the first time you use the browse with Total Cookie Protection on the browser screen. + tcp-feature: + description: Controls the Total Cookie Protection feature. + wallpapers-selection-tool: + description: Wallpapers selection dialog tool for the home screen. + OnboardingCardType: + description: An enum to describe a type of card. + variants: + add-ons: + description: Allows user to install add-ons from onboarding. + add-search-widget: + description: Allows user to add search widget to homescreen. + default-browser: + description: Allows user to set Firefox as the default browser. + notification-permission: + description: Allows user to enable notification permission. + sync-sign-in: + description: Allows user to sync with a Firefox account. + OnboardingPanel: + description: The types of onboarding panels in the onboarding page + variants: + privacy-notice: + description: The onboarding panel where users can tap to view our privacy notice. + sync: + description: The onboarding panel where users can sign in to sync + tcp: + description: The onboarding panel where users can choose their total cookie protection settings + themes: + description: The themes onboarding panel where users pick themes + toolbar-placement: + description: The onboarding panel where users choose their toolbar placement (bottom or top) + QueryParameterStrippingSection: + description: The identifiers for the options for the Query Parameter Stripping feature. + variants: + query-parameter-stripping: + description: "An integer either 0 or 1 indicating if query parameter stripping should be enabled or disabled in normal mode. 0 for setting to be disabled, and 1 for enabling the setting." + query-parameter-stripping-allow-list: + description: An string separated by commas indicating the sites where should from query stripping should be exempted. + query-parameter-stripping-pmb: + description: "An integer either 0 or 1 indicating if query parameter stripping should be enabled or disabled in private mode. 0 for setting to be disabled, and 1 for enabling the setting." + query-parameter-stripping-strip-list: + description: An string separated by commas indicating the list of query params to be stripped from URIs. This list will be merged with records coming from RemoteSettings. + SuggestionType: + description: The type of a Firefox Suggest search suggestion. + variants: + amp: + description: A Firefox Suggestion from adMarketplace. + ampMobile: + description: A firefox Suggestion from adMarketplace specifically for mobile. + wikipedia: + description: A Firefox Suggestion for a Wikipedia page. +objects: + AddOnData: + description: An object to describe an add-on to be installed from the onboarding card. + fields: + average-rating: + description: The average rating of the add-on. + type: String + default: "0.0" + description: + description: A small description of the add-on to be displayed to the user. + type: Text + default: "" + icon-res: + description: The resource id of the icon of the add-on to be displayed. + type: Image + default: ic_onboarding_welcome + id: + description: The identifier for this add-on. + type: Text + default: "" + install-url: + description: The url from where the add-on can be installed. + type: Text + default: "" + name: + description: The name of the add-on to be displayed to the user. + type: Text + default: "" + review-count: + description: The amount of reviews the add-on has. + type: String + default: "0.0" + ExtraCardData: + description: "Holds data for cards that require additional data, e.g. add-ons, toolbar placement cards." + fields: + add-ons-data: + description: "An optional list of add-ons which will be shown in add-on onboarding card.\n" + type: List + default: [] + MessageData: + description: "An object to describe a message. It uses human readable strings to describe the triggers, action and style of the message as well as the text of the message and call to action.\n" + fields: + action: + description: "A URL of a page or a deeplink. This may have substitution variables in.\n" + type: ActionName + default: OPEN_URL + action-params: + description: "A string map containing query parameters that will be appended to the action URL. This is useful for opening URLs in tabs, or specifying that the tab should be private. The values may have substitutions, e.g. \"url\": \"https://example.com/id={uuid}\", \"private\": \"true\".\nThe params and their values are all determined downstream of the messaging component, by the embedding app's deeplink processing machinery.\n" + type: "Map" + default: {} + button-label: + description: "The text on the button. If no text is present, the whole message is clickable.\n" + type: Option + default: ~ + exclude-if-any: + description: "A list of strings corresponding to targeting expressions. The message will not be shown if any of the expressions are `true`.\n" + type: List + default: [] + experiment: + description: The slug of the experiment that this message came from. + type: Option + default: ~ + is-control: + description: "Indicates if this message is the control message, if true shouldn't be displayed" + type: Boolean + default: false + microsurvey-config: + description: Optional configuration data for a microsurvey. + type: Option + default: ~ + style: + description: "The style as described in a `StyleData` from the styles table.\n" + type: StyleName + default: DEFAULT + surface: + description: The surface identifier for this message. + type: SurfaceName + default: homescreen + text: + description: The message text displayed to the user + type: Text + default: "" + title: + description: The title text displayed to the user + type: Option + default: ~ + trigger-if-all: + description: "A list of strings corresponding to targeting expressions. The message will be shown if all expressions are `true`.\n" + type: List + default: [] + MicrosurveyAnswer: + description: Attributes relating to microsurvey content. + fields: + ordering: + description: "Used to sequence the answers top to bottom. E.g. 0 will be the first/top item, 1 will be next and so on. Always set either ALL the provided answers ordering or NONE. If ALL answers are default, the the ordering used will be the same as provided by the experiment.\n" + type: Int + default: 0 + text: + description: The text for the answer. + type: Text + default: "" + MicrosurveyConfig: + description: Attributes relating to microsurvey content. + fields: + answers: + description: "The list of answers to present to the user e.g. \"Satisfied, Dissatisfied...\"." + type: List + default: [] + icon: + description: The icon shown in the survey. + type: Option + default: ~ + utm-content: + description: "Optional \"utm_content\" parameter for the privacy notice URL to specify the feature being surveyed." + type: Option + default: ~ + NotificationConfig: + description: Attributes controlling the global configuration of notification messages. + fields: + refresh-interval: + description: "How often, in minutes, the notification message worker will wake up and check for new messages.\n" + type: Int + default: 240 + OnboardingCardData: + description: An object to describe a user facing onboarding card. + fields: + body: + description: The message text displayed to the user. May contain linkable text. + type: Text + default: "" + card-type: + description: The type of the card. + type: OnboardingCardType + default: default-browser + disqualifiers: + description: "A list of strings corresponding to targeting expressions. The card will not be shown if any expression is `true`.\n" + type: List + default: + - NEVER + enabled: + description: "If true, this card is shown to the user." + type: Boolean + default: true + extra-data: + description: Optional extra data for cards that require additional data. + type: Option + default: ~ + image-res: + description: The resource id of the image to be displayed. + type: Image + default: ic_onboarding_welcome + ordering: + description: Used to sequence the cards. + type: Int + default: 0 + prerequisites: + description: "A list of strings corresponding to targeting expressions. The card will be shown if all expressions are `true` and if no expressions in the `disqualifiers` table are true, or if the `disqualifiers` table is empty.\n" + type: List + default: + - ALWAYS + primary-button-label: + description: The text to display on the primary button. + type: Text + default: "" + secondary-button-label: + description: The text to display on the secondary button. + type: Text + default: "" + title: + description: The title text displayed to the user. + type: Text + default: "" + StyleData: + description: "A group of properties (predominantly visual) to describe the style of the message.\n" + fields: + max-display-count: + description: "How many sessions will this message be shown to the user before it is expired.\n" + type: Int + default: 5 + priority: + description: "The importance of this message. 0 is not very important, 100 is very important.\n" + type: Int + default: 50 diff --git a/experimenter/experimenter/features/manifests/fenix/v134.0.1/experimenter.yaml b/experimenter/experimenter/features/manifests/fenix/v134.0.1/experimenter.yaml new file mode 100644 index 0000000000..8e6010d117 --- /dev/null +++ b/experimenter/experimenter/features/manifests/fenix/v134.0.1/experimenter.yaml @@ -0,0 +1,442 @@ +--- +alternative-app-launcher-icon: + description: A feature that changes the app launcher icon background color. + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "If true, the feature is active." + reset-to-default: + type: boolean + description: "If true use the default icon, if false use the alternative icon. This is required to 'reset' the icon for enrolled users once the initial experiment is complete.\n" +awesomebar-suggestion-provider: + description: Configuration for the Firefox Suggest awesomebar suggestion provider. + hasExposure: true + exposureDescription: "" + variables: + available-suggestion-types: + type: json + description: "A map of suggestion types to booleans that indicate whether or not the provider should return suggestions of those types.\n" +bookmarks: + description: Feature for Bookmarks + hasExposure: true + exposureDescription: "" + variables: + new-compose-ui: + type: boolean + description: "if true, enable new compose based UI" +cookie-banners: + description: Features for cookie banner handling. + hasExposure: true + exposureDescription: "" + variables: + sections-enabled: + type: json + description: This property provides a lookup table of whether or not the given section should be enabled. +fingerprinting-protection: + description: Control Fingerprinting Protection + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "If true, the feature is active." + enabled-normal: + type: boolean + description: "Enables / disables fingerprinting protection in normal browsing mode.\n" + enabled-private: + type: boolean + description: "Enables / disables fingerprinting protection in private browsing mode.\n" + fdlibm-math: + type: boolean + description: "Uses a different math backend for Math.sin/cos/tan in JavaScript that exposes less entropy\n" + overrides: + type: string + description: "The protection overrides to add or remove fingerprinting protection targets. Please check RFPTargets.inc for all supported targets.\n" +fission: + description: The feature that controls whether fission is enabled or not in Gecko. + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "Whether or not to enable fission. Fission is enabled when set to true. Fission is disabled when set to false.\n" +fx-suggest: + description: A feature that provides Firefox Suggest search suggestions. + hasExposure: true + exposureDescription: "" + variables: + boost-amp-wiki: + type: boolean + description: "The feature boost wiki and AMP suggestions to the top of its group.\n" + enabled: + type: boolean + description: "Whether the feature is enabled. When Firefox Suggest is enabled, Firefox will download and store new search suggestions in the background, and show additional Search settings to control which suggestions appear in the awesomebar. When Firefox Suggest is disabled, Firefox will not download new suggestions, and hide the additional Search settings.\n" +glean: + description: A feature that provides server-side configurations for Glean metrics (aka Server Knobs). + hasExposure: true + exposureDescription: "" + variables: + delay-ping-lifetime-io: + type: boolean + description: Glean will delay io for ping lifetime metrics + enable-event-timestamps: + type: boolean + description: Enables precise event timestamps for Glean events + metrics-enabled: + type: json + description: "A map of metric base-identifiers to booleans representing the state of the 'enabled' flag for that metric." + ping-lifetime-max-time: + type: int + description: After what time to auto-flush + ping-lifetime-threshold: + type: int + description: Write count threshold when to auto-flush +growth-data: + description: A feature measuring campaign growth data + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "If true, the feature is active" +homescreen: + description: The homescreen that the user goes to when they press home or new tab. + hasExposure: true + exposureDescription: "" + variables: + sections-enabled: + type: json + description: "This property provides a lookup table of whether or not the given section should be enabled. If the section is enabled, it should be toggleable in the settings screen, and on by default." +javascript: + description: Enables Javascript Engine (Spidermonkey) features + hasExposure: true + exposureDescription: "" + variables: + parallelMarkingEnabled: + type: boolean + description: "Enables or disables javascript.options.mem.gc_parallel_marking preference.\n" +juno-onboarding: + description: A feature that shows the onboarding flow. + hasExposure: true + exposureDescription: "" + variables: + cards: + type: json + description: Collection of user facing onboarding cards. + conditions: + type: json + description: "A collection of out the box conditional expressions to be used in determining whether a card should show or not. Each entry maps to a valid JEXL expression.\n" +menu-redesign: + description: Control the new menu redesign. + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "If true, the new menu redesign is available." + report-site-issue: + type: boolean + description: "If true, report site issue menu item and preview is available." +messaging: + description: "The in-app messaging system.\n" + hasExposure: true + exposureDescription: "" + variables: + $$experiment: + type: string + description: "The only acceptable value for `MessageData#experiment`. This should not be set by experiment." + $$surfaces: + type: json + description: "A list available surfaces for this app.\n\nThis should not be written to by experiments, and should be hidden to users.\n" + actions: + type: json + description: A growable map of action URLs. + message-under-experiment: + type: string + description: "Deprecated in favor of `MessageData#experiment`. This will be removed in future releases." + messages: + type: json + description: A growable collection of messages + notification-config: + type: json + description: Configuration of the notification worker for all notification messages. + on-control: + type: string + description: What should be displayed when a control message is selected. + enum: + - show-next-message + - show-none + styles: + type: json + description: "A map of styles to configure message appearance.\n" + triggers: + type: json + description: "A collection of out the box trigger expressions. Each entry maps to a valid JEXL expression.\n" +microsurveys: + description: Feature for microsurveys. + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "When the feature is enabled then microsurveys can be used.\n" +mr2022: + description: Features for MR 2022. + hasExposure: true + exposureDescription: "" + variables: + sections-enabled: + type: json + description: This property provides a lookup table of whether or not the given section should be enabled. +navigation-toolbar: + description: Feature for navigation toolbar. + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "When the feature is enabled then the user will see the new navigation toolbar.\n" +networking: + description: Enables networking features + hasExposure: true + exposureDescription: "" + variables: + fetchPriorityEnabled: + type: boolean + description: "Enables or disables network.fetchpriority.enabled preference.\n" +nimbus-is-ready: + description: "A feature that provides the number of Nimbus is_ready events to send when Nimbus finishes launching.\n" + hasExposure: true + exposureDescription: "" + variables: + event-count: + type: int + description: The number of events that should be sent. +nimbus-system: + description: "Configuration of the Nimbus System in Android.\n" + hasExposure: true + exposureDescription: "" + variables: + refresh-interval-foreground: + type: int + description: "The minimum interval in minutes between fetching experiment\nrecipes in the foreground.\n" +nimbus-validation: + description: A feature that does not correspond to an application feature suitable for showing that Nimbus is working. This should never be used in production. + hasExposure: true + exposureDescription: "" + variables: + settings-icon: + type: string + description: The drawable displayed in the app menu for Settings + settings-punctuation: + type: string + description: The emoji displayed in the Settings screen title. + settings-title: + type: string + description: The title of displayed in the Settings screen and app menu. +onboarding: + description: "A feature that configures the new user onboarding page. Note that onboarding is a **first run** feature, and should only be modified by first run experiments." + hasExposure: true + exposureDescription: "" + variables: + order: + type: json + description: Determines the order of the onboarding page panels +one-click-search: + description: Enable/disable the one click search feature. + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "If true, the one click search will be enabled." +pdfjs: + description: PDF.js features + hasExposure: true + exposureDescription: "" + variables: + download-button: + type: boolean + description: Download button + open-in-app-button: + type: boolean + description: Open in app button +print: + description: A feature for printing from the share or browser menu. + hasExposure: true + exposureDescription: "" + variables: + browser-print-enabled: + type: boolean + description: "If true, a print button from the browser menu is available." + share-print-enabled: + type: boolean + description: "If true, a print button from the share menu is available." +private-browsing: + description: Private Browsing Mode + hasExposure: true + exposureDescription: "" + variables: + felt-privacy-enabled: + type: boolean + description: "if true, enable felt privacy related UI" +query-parameter-stripping: + description: Features for query parameter stripping. + hasExposure: true + exposureDescription: "" + variables: + sections-enabled: + type: json + description: This property provides a lookup table of whether or not the given section should be enabled. +re-engagement-notification: + description: A feature that shows the re-engagement notification if the user is inactive. + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "If true, the re-engagement notification is shown to the inactive user." + type: + type: int + description: The type of re-engagement notification that is shown to the inactive user. +remote-tab-management: + description: "Features that let users manage tabs on other devices that are connected to the same Mozilla account.\n" + hasExposure: true + exposureDescription: "" + variables: + close-tabs-enabled: + type: boolean + description: "Whether the feature to close synced tabs is enabled. When enabled, this device will allow other devices to close tabs that are open on this device, and show a \"close\" button for tabs that are currently open on other supported devices in the synced tabs tray.\n" +search-extra-params: + description: A feature that provides additional args for search. + hasExposure: true + exposureDescription: "" + variables: + channel-id: + type: json + description: The channel Id param name with arg. + enabled: + type: boolean + description: "If true, the feature is active." + feature-enabler: + type: json + description: "The feature enabler param name with arg, NOTE this map could be empty." + search-engine: + type: string + description: The search engine name. +search-term-groups: + description: A feature allowing the grouping of URLs around the search term that it came from. + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "If true, the feature shows up on the homescreen and on the new tab screen." +set-as-default-prompt: + description: "Displays native default browser prompt to existing users.\n" + hasExposure: true + exposureDescription: "" + variables: + app-cold-starts-between-prompts: + type: int + description: "Minimum number of app cold starts before the next prompt should be displayed to the user.\n" + days-between-prompts: + type: int + description: "Minimum number of days between displays of Set as default prompt.\n" + enabled: + type: boolean + description: "When the feature is enabled then the Set as default prompt can be triggered for existing users.\n" + max-number-of-times-to-display: + type: int + description: "Maximum number of time the prompt should be displayed.\n" +ship: + description: The feature that controls Session History in Parent (SHIP) in Gecko. + hasExposure: true + exposureDescription: "" + variables: + disabled: + type: boolean + description: "Whether or not to disable SHIP. SHIP is enabled when set to false. SHIP is disabled when set to true.\n" +shopping-experience: + description: A feature that shows product review quality information. + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "if true, the shopping experience feature is shown to the user." + product-recommendations: + type: boolean + description: "if true, recommended products feature is enabled to be shown to the user based on their preference." + product-recommendations-exposure: + type: boolean + description: "if true, we want to record recommended products inventory for opted-in users, even if product recommendations are disabled." +splash-screen: + description: "A feature that extends splash screen duration, allowing additional data fetching time for the app's initial run." + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "If true, the feature is active." + maximum_duration_ms: + type: int + description: The maximum amount of time in milliseconds the splashscreen will be visible while waiting for initialization calls to complete. +suggest-shipped-domains: + description: Feature that suggests domains from the shipped domain list. + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "Suggest domains from the shipped domain list.\n" +third-party-cookie-blocking: + description: Control third-party cookie blocking. + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "If true, the feature is active." + enabled-normal: + type: boolean + description: "Enables / disables third-party cookie blocking in normal browsing mode.\n" + enabled-private: + type: boolean + description: "Enables / disables third-party cookie blocking in private browsing mode.\n" +translations: + description: The feature that allows on-device translations of web content. + hasExposure: true + exposureDescription: "" + variables: + downloads-enabled: + type: boolean + description: "Show the global language model download options entry point for translations. ('Download languages' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n" + global-lang-settings-enabled: + type: boolean + description: "Show the global language options entry point for automatically translating. ('Automatic Translation' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n" + global-settings-enabled: + type: boolean + description: "Show the global settings entry point within the translations feature. ('Translation Settings' on the page settings view.) 'page-settings-enabled' must also be enabled for users to access this feature.\n" + global-site-settings-enabled: + type: boolean + description: "Show the global never translate this site options entry point for site management. ('Never translate these sites' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n" + main-flow-browser-menu-enabled: + type: boolean + description: "Show the browser menu entry point into the translations feature. ('Translate Page' on browser menu.)\n" + main-flow-toolbar-enabled: + type: boolean + description: "Show the primary toolbar entry point into the translations feature. (Translations icon on URL toolbar.)\n" + page-settings-enabled: + type: boolean + description: "Show the page settings entry point within the translations feature. (Gear icon on the translations main flow page.) 'main-flow-toolbar-enabled' or 'main-flow-browser-menu-enabled' must also be enabled for users to access this feature.\n" +user-characteristics: + description: A feature for control user characteristic data collection + hasExposure: true + exposureDescription: "" + variables: + currentVersion: + type: int + description: The current collection version of the user characteristics. diff --git a/experimenter/experimenter/features/manifests/fenix/v134.0.1/nightly.fml.yaml b/experimenter/experimenter/features/manifests/fenix/v134.0.1/nightly.fml.yaml new file mode 100644 index 0000000000..08b4d0eefe --- /dev/null +++ b/experimenter/experimenter/features/manifests/fenix/v134.0.1/nightly.fml.yaml @@ -0,0 +1,936 @@ +--- +version: 1.0.0 +about: + description: Nimbus Feature Manifest for Fenix (Firefox Android) +channels: + - nightly +features: + alternative-app-launcher-icon: + description: A feature that changes the app launcher icon background color. + variables: + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + reset-to-default: + description: "If true use the default icon, if false use the alternative icon. This is required to 'reset' the icon for enrolled users once the initial experiment is complete.\n" + type: Boolean + default: false + awesomebar-suggestion-provider: + description: Configuration for the Firefox Suggest awesomebar suggestion provider. + variables: + available-suggestion-types: + description: "A map of suggestion types to booleans that indicate whether or not the provider should return suggestions of those types.\n" + type: "Map" + default: + amp: true + ampMobile: false + wikipedia: true + bookmarks: + description: Feature for Bookmarks + variables: + new-compose-ui: + description: "if true, enable new compose based UI" + type: Boolean + default: false + cookie-banners: + description: Features for cookie banner handling. + variables: + sections-enabled: + description: This property provides a lookup table of whether or not the given section should be enabled. + type: "Map" + default: + feature-ui: 1 + feature-setting-value: 0 + feature-setting-value-pbm: 1 + feature-setting-detect-only: 0 + feature-setting-global-rules: 1 + feature-setting-global-rules-sub-frames: 1 + fingerprinting-protection: + description: Control Fingerprinting Protection + variables: + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + enabled-normal: + description: "Enables / disables fingerprinting protection in normal browsing mode.\n" + type: Boolean + default: false + enabled-private: + description: "Enables / disables fingerprinting protection in private browsing mode.\n" + type: Boolean + default: true + fdlibm-math: + description: "Uses a different math backend for Math.sin/cos/tan in JavaScript that exposes less entropy\n" + type: Boolean + default: false + overrides: + description: "The protection overrides to add or remove fingerprinting protection targets. Please check RFPTargets.inc for all supported targets.\n" + type: String + default: "" + fission: + description: The feature that controls whether fission is enabled or not in Gecko. + variables: + enabled: + description: "Whether or not to enable fission. Fission is enabled when set to true. Fission is disabled when set to false.\n" + type: Boolean + default: false + fx-suggest: + description: A feature that provides Firefox Suggest search suggestions. + variables: + boost-amp-wiki: + description: "The feature boost wiki and AMP suggestions to the top of its group.\n" + type: Boolean + default: false + enabled: + description: "Whether the feature is enabled. When Firefox Suggest is enabled, Firefox will download and store new search suggestions in the background, and show additional Search settings to control which suggestions appear in the awesomebar. When Firefox Suggest is disabled, Firefox will not download new suggestions, and hide the additional Search settings.\n" + type: Boolean + default: true + glean: + description: A feature that provides server-side configurations for Glean metrics (aka Server Knobs). + variables: + delay-ping-lifetime-io: + description: Glean will delay io for ping lifetime metrics + type: Boolean + default: true + enable-event-timestamps: + description: Enables precise event timestamps for Glean events + type: Boolean + default: true + metrics-enabled: + description: "A map of metric base-identifiers to booleans representing the state of the 'enabled' flag for that metric." + type: "Map" + default: {} + ping-lifetime-max-time: + description: After what time to auto-flush + type: Int + default: 2000 + ping-lifetime-threshold: + description: Write count threshold when to auto-flush + type: Int + default: 1000 + allow-coenrollment: true + growth-data: + description: A feature measuring campaign growth data + variables: + enabled: + description: "If true, the feature is active" + type: Boolean + default: false + homescreen: + description: The homescreen that the user goes to when they press home or new tab. + variables: + sections-enabled: + description: "This property provides a lookup table of whether or not the given section should be enabled. If the section is enabled, it should be toggleable in the settings screen, and on by default." + type: "Map" + default: + top-sites: true + jump-back-in: true + bookmarks: true + recent-explorations: true + pocket: true + pocket-sponsored-stories: true + javascript: + description: Enables Javascript Engine (Spidermonkey) features + variables: + parallelMarkingEnabled: + description: "Enables or disables javascript.options.mem.gc_parallel_marking preference.\n" + type: Boolean + default: false + juno-onboarding: + description: A feature that shows the onboarding flow. + variables: + cards: + description: Collection of user facing onboarding cards. + type: "Map" + default: + default-browser: + body: juno_onboarding_default_browser_description_nimbus_3 + card-type: default-browser + disqualifiers: + - NEVER + enabled: true + extra-data: ~ + image-res: ic_onboarding_welcome + ordering: 10 + prerequisites: + - ALWAYS + primary-button-label: juno_onboarding_default_browser_positive_button + secondary-button-label: juno_onboarding_default_browser_negative_button + title: juno_onboarding_default_browser_title_nimbus_2 + add-search-widget: + body: juno_onboarding_add_search_widget_description + card-type: add-search-widget + disqualifiers: + - NEVER + enabled: true + extra-data: ~ + image-res: ic_onboarding_search_widget + ordering: 15 + prerequisites: + - ALWAYS + primary-button-label: juno_onboarding_add_search_widget_positive_button + secondary-button-label: juno_onboarding_add_search_widget_negative_button + title: juno_onboarding_add_search_widget_title + sync-sign-in: + body: juno_onboarding_sign_in_description_3 + card-type: sync-sign-in + disqualifiers: + - NEVER + enabled: true + extra-data: ~ + image-res: ic_onboarding_sync + ordering: 20 + prerequisites: + - ALWAYS + primary-button-label: juno_onboarding_sign_in_positive_button + secondary-button-label: juno_onboarding_sign_in_negative_button + title: juno_onboarding_sign_in_title_2 + notification-permission: + body: juno_onboarding_enable_notifications_description_nimbus_2 + card-type: notification-permission + disqualifiers: + - NEVER + enabled: true + extra-data: ~ + image-res: ic_notification_permission + ordering: 30 + prerequisites: + - ALWAYS + primary-button-label: juno_onboarding_enable_notifications_positive_button + secondary-button-label: juno_onboarding_enable_notifications_negative_button + title: juno_onboarding_enable_notifications_title_nimbus_2 + string-alias: OnboardingCardKey + conditions: + description: "A collection of out the box conditional expressions to be used in determining whether a card should show or not. Each entry maps to a valid JEXL expression.\n" + type: "Map" + default: + ALWAYS: "true" + NEVER: "false" + string-alias: ConditionName + menu-redesign: + description: Control the new menu redesign. + variables: + enabled: + description: "If true, the new menu redesign is available." + type: Boolean + default: false + report-site-issue: + description: "If true, report site issue menu item and preview is available." + type: Boolean + default: true + messaging: + description: "The in-app messaging system.\n" + variables: + $$experiment: + description: "The only acceptable value for `MessageData#experiment`. This should not be set by experiment." + type: ExperimentSlug + default: "{experiment}" + string-alias: ExperimentSlug + $$surfaces: + description: "A list available surfaces for this app.\n\nThis should not be written to by experiments, and should be hidden to users.\n" + type: List + default: + - homescreen + - notification + - survey + - microsurvey + string-alias: SurfaceName + actions: + description: A growable map of action URLs. + type: "Map" + default: + OPEN_URL: "://open" + ENABLE_PRIVATE_BROWSING: "://enable_private_browsing" + INSTALL_SEARCH_WIDGET: "://install_search_widget" + MAKE_DEFAULT_BROWSER: "://make_default_browser" + VIEW_BOOKMARKS: "://urls_bookmarks" + VIEW_COLLECTIONS: "://home_collections" + VIEW_HISTORY: "://urls_history" + VIEW_HOMESCREEN: "://home" + OPEN_SETTINGS_ACCESSIBILITY: "://settings_accessibility" + OPEN_SETTINGS_ADDON_MANAGER: "://settings_addon_manager" + OPEN_SETTINGS_DELETE_BROWSING_DATA: "://settings_delete_browsing_data" + OPEN_SETTINGS_LOGINS: "://settings_logins" + OPEN_SETTINGS_NOTIFICATIONS: "://settings_notifications" + OPEN_SETTINGS_PRIVACY: "://settings_privacy" + OPEN_SETTINGS_SEARCH_ENGINE: "://settings_search_engine" + OPEN_SETTINGS_TRACKING_PROTECTION: "://settings_tracking_protection" + OPEN_SETTINGS_WALLPAPERS: "://settings_wallpapers" + OPEN_SETTINGS: "://settings" + OPEN_SHARE_SHEET: "://share_sheet" + TURN_ON_SYNC: "://turn_on_sync" + string-alias: ActionName + message-under-experiment: + description: "Deprecated in favor of `MessageData#experiment`. This will be removed in future releases." + type: Option + default: ~ + messages: + description: A growable collection of messages + type: "Map" + default: + default-browser: + title: default_browser_experiment_card_title + text: default_browser_experiment_card_text + surface: homescreen + action: MAKE_DEFAULT_BROWSER + trigger-if-all: + - USER_ESTABLISHED_INSTALL + - ANDROID_API_BELOW_29 + exclude-if-any: + - I_AM_DEFAULT_BROWSER + style: PERSISTENT + button-label: preferences_set_as_default_browser + default-browser-notification: + title: nimbus_notification_default_browser_title + text: nimbus_notification_default_browser_text + surface: notification + style: NOTIFICATION + trigger-if-all: + - DAY_3_AFTER_INSTALL + exclude-if-any: + - I_AM_DEFAULT_BROWSER + action: MAKE_DEFAULT_BROWSER + string-alias: MessageKey + notification-config: + description: Configuration of the notification worker for all notification messages. + type: NotificationConfig + default: + refresh-interval: 240 + on-control: + description: What should be displayed when a control message is selected. + type: ControlMessageBehavior + default: show-next-message + styles: + description: "A map of styles to configure message appearance.\n" + type: "Map" + default: + DEFAULT: + priority: 50 + max-display-count: 5 + SURVEY: + priority: 55 + max-display-count: 1 + PERSISTENT: + priority: 50 + max-display-count: 20 + WARNING: + priority: 60 + max-display-count: 10 + URGENT: + priority: 100 + max-display-count: 10 + NOTIFICATION: + priority: 50 + max-display-count: 1 + MICROSURVEY: + priority: 50 + max-display-count: 5 + string-alias: StyleName + triggers: + description: "A collection of out the box trigger expressions. Each entry maps to a valid JEXL expression.\n" + type: "Map" + default: + USER_ESTABLISHED_INSTALL: number_of_app_launches >=4 + ANDROID_API_BELOW_29: android_version < 29 + USER_RECENTLY_INSTALLED: days_since_install < 7 + USER_RECENTLY_UPDATED: days_since_update < 7 && days_since_install != days_since_update + USER_TIER_ONE_COUNTRY: "('US' in locale || 'GB' in locale || 'CA' in locale || 'DE' in locale || 'FR' in locale)" + USER_EN_SPEAKER: "'en' in locale" + USER_ES_SPEAKER: "'es' in locale" + USER_DE_SPEAKER: "'de' in locale" + USER_FR_SPEAKER: "'fr' in locale" + DEVICE_ANDROID: "os == 'Android'" + DEVICE_IOS: "os == 'iOS'" + ALWAYS: "true" + NEVER: "false" + DAY_1_AFTER_INSTALL: days_since_install == 1 + DAY_2_AFTER_INSTALL: days_since_install == 2 + DAY_3_AFTER_INSTALL: days_since_install == 3 + DAY_4_AFTER_INSTALL: days_since_install == 4 + DAY_5_AFTER_INSTALL: days_since_install == 5 + MORE_THAN_24H_SINCE_INSTALLED_OR_UPDATED: days_since_update >= 1 + I_AM_DEFAULT_BROWSER: is_default_browser + I_AM_NOT_DEFAULT_BROWSER: is_default_browser == false + FUNNEL_PAID: "adjust_campaign != ''" + FUNNEL_ORGANIC: "adjust_campaign == ''" + INACTIVE_1_DAY: "'app_launched'|eventLastSeen('Hours') >= 24" + INACTIVE_2_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 2" + INACTIVE_3_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 3" + INACTIVE_4_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 4" + INACTIVE_5_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 5" + RECENTLY_PRINTED: "'print_tapped'|eventLastSeen('Hours') <= 24" + SECOND_HOMEPAGE_VIEW: "'home_screen_displayed'|eventSum('Years', 4, 0) >= 2" + PERFORMED_A_SEARCH_AGAIN_RECENTLY: "'performed_search'|eventSum('Years', 4, 0) >= 2 && 'performed_search'|eventLastSeen('Minutes') < 1" + FXA_CURRENTLY_SIGNED_IN: is_fxa_signed_in == true + FXA_MORE_THAN_1_DEVICE: fxa_connected_devices > 1 + FXA_SIGNED_IN: "'sync_auth.sign_in'|eventLastSeen('Years', 0) <= 4" + FXA_NOT_SIGNED_IN: "'sync_auth.sign_in'|eventLastSeen('Years', 0) > 4" + USER_INFREQUENT: "'app_launched'|eventCountNonZero('Days', 28) >= 1 && 'app_launched'|eventCountNonZero('Days', 28) < 7" + USER_CASUAL: "'app_launched'|eventCountNonZero('Days', 28) >= 7 && 'app_launched'|eventCountNonZero('Days', 28) < 14" + USER_REGULAR: "'app_launched'|eventCountNonZero('Days', 28) >= 14 && 'app_launched'|eventCountNonZero('Days', 28) < 21" + USER_CORE_ACTIVE: "'app_launched'|eventCountNonZero('Days', 28) >= 21" + LAUNCHED_ONCE_THIS_WEEK: "'app_launched'|eventSum('Days', 7) == 1" + string-alias: TriggerName + allow-coenrollment: true + microsurveys: + description: Feature for microsurveys. + variables: + enabled: + description: "When the feature is enabled then microsurveys can be used.\n" + type: Boolean + default: true + mr2022: + description: Features for MR 2022. + variables: + sections-enabled: + description: This property provides a lookup table of whether or not the given section should be enabled. + type: "Map" + default: + home-onboarding-dialog-existing-users: true + sync-cfr: true + wallpapers-selection-tool: true + jump-back-in-cfr: true + tcp-cfr: true + tcp-feature: true + navigation-toolbar: + description: Feature for navigation toolbar. + variables: + enabled: + description: "When the feature is enabled then the user will see the new navigation toolbar.\n" + type: Boolean + default: true + networking: + description: Enables networking features + variables: + fetchPriorityEnabled: + description: "Enables or disables network.fetchpriority.enabled preference.\n" + type: Boolean + default: true + nimbus-is-ready: + description: "A feature that provides the number of Nimbus is_ready events to send when Nimbus finishes launching.\n" + variables: + event-count: + description: The number of events that should be sent. + type: Int + default: 1 + nimbus-system: + description: "Configuration of the Nimbus System in Android.\n" + variables: + refresh-interval-foreground: + description: "The minimum interval in minutes between fetching experiment\nrecipes in the foreground.\n" + type: Int + default: 60 + nimbus-validation: + description: A feature that does not correspond to an application feature suitable for showing that Nimbus is working. This should never be used in production. + variables: + settings-icon: + description: The drawable displayed in the app menu for Settings + type: String + default: mozac_ic_settings + settings-punctuation: + description: The emoji displayed in the Settings screen title. + type: String + default: "" + settings-title: + description: The title of displayed in the Settings screen and app menu. + type: Text + default: browser_menu_settings + onboarding: + description: "A feature that configures the new user onboarding page. Note that onboarding is a **first run** feature, and should only be modified by first run experiments." + variables: + order: + description: Determines the order of the onboarding page panels + type: List + default: + - themes + - toolbar-placement + - sync + - tcp + - privacy-notice + one-click-search: + description: Enable/disable the one click search feature. + variables: + enabled: + description: "If true, the one click search will be enabled." + type: Boolean + default: false + pdfjs: + description: PDF.js features + variables: + download-button: + description: Download button + type: Boolean + default: true + open-in-app-button: + description: Open in app button + type: Boolean + default: true + print: + description: A feature for printing from the share or browser menu. + variables: + browser-print-enabled: + description: "If true, a print button from the browser menu is available." + type: Boolean + default: true + share-print-enabled: + description: "If true, a print button from the share menu is available." + type: Boolean + default: true + private-browsing: + description: Private Browsing Mode + variables: + felt-privacy-enabled: + description: "if true, enable felt privacy related UI" + type: Boolean + default: false + query-parameter-stripping: + description: Features for query parameter stripping. + variables: + sections-enabled: + description: This property provides a lookup table of whether or not the given section should be enabled. + type: "Map" + default: + query-parameter-stripping: "0" + query-parameter-stripping-pmb: "0" + query-parameter-stripping-allow-list: "" + query-parameter-stripping-strip-list: "" + re-engagement-notification: + description: A feature that shows the re-engagement notification if the user is inactive. + variables: + enabled: + description: "If true, the re-engagement notification is shown to the inactive user." + type: Boolean + default: false + type: + description: The type of re-engagement notification that is shown to the inactive user. + type: Int + default: 0 + remote-tab-management: + description: "Features that let users manage tabs on other devices that are connected to the same Mozilla account.\n" + variables: + close-tabs-enabled: + description: "Whether the feature to close synced tabs is enabled. When enabled, this device will allow other devices to close tabs that are open on this device, and show a \"close\" button for tabs that are currently open on other supported devices in the synced tabs tray.\n" + type: Boolean + default: true + search-extra-params: + description: A feature that provides additional args for search. + variables: + channel-id: + description: The channel Id param name with arg. + type: "Map" + default: {} + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + feature-enabler: + description: "The feature enabler param name with arg, NOTE this map could be empty." + type: "Map" + default: {} + search-engine: + description: The search engine name. + type: String + default: "" + search-term-groups: + description: A feature allowing the grouping of URLs around the search term that it came from. + variables: + enabled: + description: "If true, the feature shows up on the homescreen and on the new tab screen." + type: Boolean + default: true + set-as-default-prompt: + description: "Displays native default browser prompt to existing users.\n" + variables: + app-cold-starts-between-prompts: + description: "Minimum number of app cold starts before the next prompt should be displayed to the user.\n" + type: Int + default: 4 + days-between-prompts: + description: "Minimum number of days between displays of Set as default prompt.\n" + type: Int + default: 14 + enabled: + description: "When the feature is enabled then the Set as default prompt can be triggered for existing users.\n" + type: Boolean + default: true + max-number-of-times-to-display: + description: "Maximum number of time the prompt should be displayed.\n" + type: Int + default: 3 + ship: + description: The feature that controls Session History in Parent (SHIP) in Gecko. + variables: + disabled: + description: "Whether or not to disable SHIP. SHIP is enabled when set to false. SHIP is disabled when set to true.\n" + type: Boolean + default: true + shopping-experience: + description: A feature that shows product review quality information. + variables: + enabled: + description: "if true, the shopping experience feature is shown to the user." + type: Boolean + default: false + product-recommendations: + description: "if true, recommended products feature is enabled to be shown to the user based on their preference." + type: Boolean + default: false + product-recommendations-exposure: + description: "if true, we want to record recommended products inventory for opted-in users, even if product recommendations are disabled." + type: Boolean + default: false + splash-screen: + description: "A feature that extends splash screen duration, allowing additional data fetching time for the app's initial run." + variables: + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + maximum_duration_ms: + description: The maximum amount of time in milliseconds the splashscreen will be visible while waiting for initialization calls to complete. + type: Int + default: 0 + suggest-shipped-domains: + description: Feature that suggests domains from the shipped domain list. + variables: + enabled: + description: "Suggest domains from the shipped domain list.\n" + type: Boolean + default: false + third-party-cookie-blocking: + description: Control third-party cookie blocking. + variables: + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + enabled-normal: + description: "Enables / disables third-party cookie blocking in normal browsing mode.\n" + type: Boolean + default: false + enabled-private: + description: "Enables / disables third-party cookie blocking in private browsing mode.\n" + type: Boolean + default: true + translations: + description: The feature that allows on-device translations of web content. + variables: + downloads-enabled: + description: "Show the global language model download options entry point for translations. ('Download languages' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + global-lang-settings-enabled: + description: "Show the global language options entry point for automatically translating. ('Automatic Translation' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + global-settings-enabled: + description: "Show the global settings entry point within the translations feature. ('Translation Settings' on the page settings view.) 'page-settings-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + global-site-settings-enabled: + description: "Show the global never translate this site options entry point for site management. ('Never translate these sites' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + main-flow-browser-menu-enabled: + description: "Show the browser menu entry point into the translations feature. ('Translate Page' on browser menu.)\n" + type: Boolean + default: true + main-flow-toolbar-enabled: + description: "Show the primary toolbar entry point into the translations feature. (Translations icon on URL toolbar.)\n" + type: Boolean + default: true + page-settings-enabled: + description: "Show the page settings entry point within the translations feature. (Gear icon on the translations main flow page.) 'main-flow-toolbar-enabled' or 'main-flow-browser-menu-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + user-characteristics: + description: A feature for control user characteristic data collection + variables: + currentVersion: + description: The current collection version of the user characteristics. + type: Int + default: 0 +enums: + ControlMessageBehavior: + description: An enum to influence what should be displayed when a control message is selected. + variants: + show-next-message: + description: The next eligible message should be shown. + show-none: + description: The surface should show no message. + CookieBannersSection: + description: The identifiers for the sections of the MR 2022. + variants: + feature-setting-detect-only: + description: "An integer either 0 or 1 indicating if cookie banner detect only mode should be enabled or disabled. 0 for setting to be disabled, and 1 for enabling the setting." + feature-setting-global-rules: + description: "An integer either 0 or 1 indicating if cookie banner global rules should be enabled or disabled. 0 for setting to be disabled, and 1 for enabling the setting." + feature-setting-global-rules-sub-frames: + description: "An integer either 0 or 1 indicating if cookie banner global rules sub-frames should be enabled or disabled. 0 for setting to be disabled, and 1 for enabling the setting." + feature-setting-value: + description: "An integer either 0 or 1 indicating if cookie banner setting should be enabled or disabled, 0 for setting the value to disabled, 1 for enabling the setting with the value reject_all." + feature-setting-value-pbm: + description: "An integer either 0 or 1 indicating if cookie banner setting should be enabled or disabled, 0 for setting the value to disabled, 1 for enabling the setting with the value reject_all." + feature-ui: + description: "An integer either 0 or 1 indicating if the UI for cookie banner handling should be visible, 0 to hide the UI and 1 to show the UI. The actual UI is composed by cookie banner section in the settings page, the toolbar section and the re-engagement dialog." + HomeScreenSection: + description: The identifiers for the sections of the homescreen. + variants: + bookmarks: + description: The sites the user has bookmarked. + jump-back-in: + description: The tabs the user was looking immediately before being interrupted. + pocket: + description: The pocket section. This should only be available in the US. + pocket-sponsored-stories: + description: Subsection of the Pocket homescreen section which shows sponsored stories. + recent-explorations: + description: The tab groups + top-sites: + description: The frecency and pinned sites. + MR2022Section: + description: The identifiers for the sections of the MR 2022. + variants: + home-onboarding-dialog-existing-users: + description: Home onboarding dialog for upgraded users. + jump-back-in-cfr: + description: Jump back-in onboarding message. + sync-cfr: + description: CFR for the first time you see a synced tab on the home screen. + tcp-cfr: + description: CFR for the first time you use the browse with Total Cookie Protection on the browser screen. + tcp-feature: + description: Controls the Total Cookie Protection feature. + wallpapers-selection-tool: + description: Wallpapers selection dialog tool for the home screen. + OnboardingCardType: + description: An enum to describe a type of card. + variants: + add-ons: + description: Allows user to install add-ons from onboarding. + add-search-widget: + description: Allows user to add search widget to homescreen. + default-browser: + description: Allows user to set Firefox as the default browser. + notification-permission: + description: Allows user to enable notification permission. + sync-sign-in: + description: Allows user to sync with a Firefox account. + OnboardingPanel: + description: The types of onboarding panels in the onboarding page + variants: + privacy-notice: + description: The onboarding panel where users can tap to view our privacy notice. + sync: + description: The onboarding panel where users can sign in to sync + tcp: + description: The onboarding panel where users can choose their total cookie protection settings + themes: + description: The themes onboarding panel where users pick themes + toolbar-placement: + description: The onboarding panel where users choose their toolbar placement (bottom or top) + QueryParameterStrippingSection: + description: The identifiers for the options for the Query Parameter Stripping feature. + variants: + query-parameter-stripping: + description: "An integer either 0 or 1 indicating if query parameter stripping should be enabled or disabled in normal mode. 0 for setting to be disabled, and 1 for enabling the setting." + query-parameter-stripping-allow-list: + description: An string separated by commas indicating the sites where should from query stripping should be exempted. + query-parameter-stripping-pmb: + description: "An integer either 0 or 1 indicating if query parameter stripping should be enabled or disabled in private mode. 0 for setting to be disabled, and 1 for enabling the setting." + query-parameter-stripping-strip-list: + description: An string separated by commas indicating the list of query params to be stripped from URIs. This list will be merged with records coming from RemoteSettings. + SuggestionType: + description: The type of a Firefox Suggest search suggestion. + variants: + amp: + description: A Firefox Suggestion from adMarketplace. + ampMobile: + description: A firefox Suggestion from adMarketplace specifically for mobile. + wikipedia: + description: A Firefox Suggestion for a Wikipedia page. +objects: + AddOnData: + description: An object to describe an add-on to be installed from the onboarding card. + fields: + average-rating: + description: The average rating of the add-on. + type: String + default: "0.0" + description: + description: A small description of the add-on to be displayed to the user. + type: Text + default: "" + icon-res: + description: The resource id of the icon of the add-on to be displayed. + type: Image + default: ic_onboarding_welcome + id: + description: The identifier for this add-on. + type: Text + default: "" + install-url: + description: The url from where the add-on can be installed. + type: Text + default: "" + name: + description: The name of the add-on to be displayed to the user. + type: Text + default: "" + review-count: + description: The amount of reviews the add-on has. + type: String + default: "0.0" + ExtraCardData: + description: "Holds data for cards that require additional data, e.g. add-ons, toolbar placement cards." + fields: + add-ons-data: + description: "An optional list of add-ons which will be shown in add-on onboarding card.\n" + type: List + default: [] + MessageData: + description: "An object to describe a message. It uses human readable strings to describe the triggers, action and style of the message as well as the text of the message and call to action.\n" + fields: + action: + description: "A URL of a page or a deeplink. This may have substitution variables in.\n" + type: ActionName + default: OPEN_URL + action-params: + description: "A string map containing query parameters that will be appended to the action URL. This is useful for opening URLs in tabs, or specifying that the tab should be private. The values may have substitutions, e.g. \"url\": \"https://example.com/id={uuid}\", \"private\": \"true\".\nThe params and their values are all determined downstream of the messaging component, by the embedding app's deeplink processing machinery.\n" + type: "Map" + default: {} + button-label: + description: "The text on the button. If no text is present, the whole message is clickable.\n" + type: Option + default: ~ + exclude-if-any: + description: "A list of strings corresponding to targeting expressions. The message will not be shown if any of the expressions are `true`.\n" + type: List + default: [] + experiment: + description: The slug of the experiment that this message came from. + type: Option + default: ~ + is-control: + description: "Indicates if this message is the control message, if true shouldn't be displayed" + type: Boolean + default: false + microsurvey-config: + description: Optional configuration data for a microsurvey. + type: Option + default: ~ + style: + description: "The style as described in a `StyleData` from the styles table.\n" + type: StyleName + default: DEFAULT + surface: + description: The surface identifier for this message. + type: SurfaceName + default: homescreen + text: + description: The message text displayed to the user + type: Text + default: "" + title: + description: The title text displayed to the user + type: Option + default: ~ + trigger-if-all: + description: "A list of strings corresponding to targeting expressions. The message will be shown if all expressions are `true`.\n" + type: List + default: [] + MicrosurveyAnswer: + description: Attributes relating to microsurvey content. + fields: + ordering: + description: "Used to sequence the answers top to bottom. E.g. 0 will be the first/top item, 1 will be next and so on. Always set either ALL the provided answers ordering or NONE. If ALL answers are default, the the ordering used will be the same as provided by the experiment.\n" + type: Int + default: 0 + text: + description: The text for the answer. + type: Text + default: "" + MicrosurveyConfig: + description: Attributes relating to microsurvey content. + fields: + answers: + description: "The list of answers to present to the user e.g. \"Satisfied, Dissatisfied...\"." + type: List + default: [] + icon: + description: The icon shown in the survey. + type: Option + default: ~ + utm-content: + description: "Optional \"utm_content\" parameter for the privacy notice URL to specify the feature being surveyed." + type: Option + default: ~ + NotificationConfig: + description: Attributes controlling the global configuration of notification messages. + fields: + refresh-interval: + description: "How often, in minutes, the notification message worker will wake up and check for new messages.\n" + type: Int + default: 240 + OnboardingCardData: + description: An object to describe a user facing onboarding card. + fields: + body: + description: The message text displayed to the user. May contain linkable text. + type: Text + default: "" + card-type: + description: The type of the card. + type: OnboardingCardType + default: default-browser + disqualifiers: + description: "A list of strings corresponding to targeting expressions. The card will not be shown if any expression is `true`.\n" + type: List + default: + - NEVER + enabled: + description: "If true, this card is shown to the user." + type: Boolean + default: true + extra-data: + description: Optional extra data for cards that require additional data. + type: Option + default: ~ + image-res: + description: The resource id of the image to be displayed. + type: Image + default: ic_onboarding_welcome + ordering: + description: Used to sequence the cards. + type: Int + default: 0 + prerequisites: + description: "A list of strings corresponding to targeting expressions. The card will be shown if all expressions are `true` and if no expressions in the `disqualifiers` table are true, or if the `disqualifiers` table is empty.\n" + type: List + default: + - ALWAYS + primary-button-label: + description: The text to display on the primary button. + type: Text + default: "" + secondary-button-label: + description: The text to display on the secondary button. + type: Text + default: "" + title: + description: The title text displayed to the user. + type: Text + default: "" + StyleData: + description: "A group of properties (predominantly visual) to describe the style of the message.\n" + fields: + max-display-count: + description: "How many sessions will this message be shown to the user before it is expired.\n" + type: Int + default: 5 + priority: + description: "The importance of this message. 0 is not very important, 100 is very important.\n" + type: Int + default: 50 diff --git a/experimenter/experimenter/features/manifests/fenix/v134.0.1/release.fml.yaml b/experimenter/experimenter/features/manifests/fenix/v134.0.1/release.fml.yaml new file mode 100644 index 0000000000..05901352a7 --- /dev/null +++ b/experimenter/experimenter/features/manifests/fenix/v134.0.1/release.fml.yaml @@ -0,0 +1,936 @@ +--- +version: 1.0.0 +about: + description: Nimbus Feature Manifest for Fenix (Firefox Android) +channels: + - release +features: + alternative-app-launcher-icon: + description: A feature that changes the app launcher icon background color. + variables: + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + reset-to-default: + description: "If true use the default icon, if false use the alternative icon. This is required to 'reset' the icon for enrolled users once the initial experiment is complete.\n" + type: Boolean + default: false + awesomebar-suggestion-provider: + description: Configuration for the Firefox Suggest awesomebar suggestion provider. + variables: + available-suggestion-types: + description: "A map of suggestion types to booleans that indicate whether or not the provider should return suggestions of those types.\n" + type: "Map" + default: + amp: true + ampMobile: false + wikipedia: true + bookmarks: + description: Feature for Bookmarks + variables: + new-compose-ui: + description: "if true, enable new compose based UI" + type: Boolean + default: false + cookie-banners: + description: Features for cookie banner handling. + variables: + sections-enabled: + description: This property provides a lookup table of whether or not the given section should be enabled. + type: "Map" + default: + feature-ui: 0 + feature-setting-value: 0 + feature-setting-value-pbm: 0 + feature-setting-detect-only: 0 + feature-setting-global-rules: 1 + feature-setting-global-rules-sub-frames: 1 + fingerprinting-protection: + description: Control Fingerprinting Protection + variables: + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + enabled-normal: + description: "Enables / disables fingerprinting protection in normal browsing mode.\n" + type: Boolean + default: false + enabled-private: + description: "Enables / disables fingerprinting protection in private browsing mode.\n" + type: Boolean + default: true + fdlibm-math: + description: "Uses a different math backend for Math.sin/cos/tan in JavaScript that exposes less entropy\n" + type: Boolean + default: false + overrides: + description: "The protection overrides to add or remove fingerprinting protection targets. Please check RFPTargets.inc for all supported targets.\n" + type: String + default: "" + fission: + description: The feature that controls whether fission is enabled or not in Gecko. + variables: + enabled: + description: "Whether or not to enable fission. Fission is enabled when set to true. Fission is disabled when set to false.\n" + type: Boolean + default: false + fx-suggest: + description: A feature that provides Firefox Suggest search suggestions. + variables: + boost-amp-wiki: + description: "The feature boost wiki and AMP suggestions to the top of its group.\n" + type: Boolean + default: false + enabled: + description: "Whether the feature is enabled. When Firefox Suggest is enabled, Firefox will download and store new search suggestions in the background, and show additional Search settings to control which suggestions appear in the awesomebar. When Firefox Suggest is disabled, Firefox will not download new suggestions, and hide the additional Search settings.\n" + type: Boolean + default: false + glean: + description: A feature that provides server-side configurations for Glean metrics (aka Server Knobs). + variables: + delay-ping-lifetime-io: + description: Glean will delay io for ping lifetime metrics + type: Boolean + default: true + enable-event-timestamps: + description: Enables precise event timestamps for Glean events + type: Boolean + default: true + metrics-enabled: + description: "A map of metric base-identifiers to booleans representing the state of the 'enabled' flag for that metric." + type: "Map" + default: {} + ping-lifetime-max-time: + description: After what time to auto-flush + type: Int + default: 2000 + ping-lifetime-threshold: + description: Write count threshold when to auto-flush + type: Int + default: 1000 + allow-coenrollment: true + growth-data: + description: A feature measuring campaign growth data + variables: + enabled: + description: "If true, the feature is active" + type: Boolean + default: true + homescreen: + description: The homescreen that the user goes to when they press home or new tab. + variables: + sections-enabled: + description: "This property provides a lookup table of whether or not the given section should be enabled. If the section is enabled, it should be toggleable in the settings screen, and on by default." + type: "Map" + default: + top-sites: true + jump-back-in: true + bookmarks: true + recent-explorations: true + pocket: true + pocket-sponsored-stories: true + javascript: + description: Enables Javascript Engine (Spidermonkey) features + variables: + parallelMarkingEnabled: + description: "Enables or disables javascript.options.mem.gc_parallel_marking preference.\n" + type: Boolean + default: false + juno-onboarding: + description: A feature that shows the onboarding flow. + variables: + cards: + description: Collection of user facing onboarding cards. + type: "Map" + default: + default-browser: + body: juno_onboarding_default_browser_description_nimbus_3 + card-type: default-browser + disqualifiers: + - NEVER + enabled: true + extra-data: ~ + image-res: ic_onboarding_welcome + ordering: 10 + prerequisites: + - ALWAYS + primary-button-label: juno_onboarding_default_browser_positive_button + secondary-button-label: juno_onboarding_default_browser_negative_button + title: juno_onboarding_default_browser_title_nimbus_2 + add-search-widget: + body: juno_onboarding_add_search_widget_description + card-type: add-search-widget + disqualifiers: + - NEVER + enabled: true + extra-data: ~ + image-res: ic_onboarding_search_widget + ordering: 15 + prerequisites: + - ALWAYS + primary-button-label: juno_onboarding_add_search_widget_positive_button + secondary-button-label: juno_onboarding_add_search_widget_negative_button + title: juno_onboarding_add_search_widget_title + sync-sign-in: + body: juno_onboarding_sign_in_description_3 + card-type: sync-sign-in + disqualifiers: + - NEVER + enabled: true + extra-data: ~ + image-res: ic_onboarding_sync + ordering: 20 + prerequisites: + - ALWAYS + primary-button-label: juno_onboarding_sign_in_positive_button + secondary-button-label: juno_onboarding_sign_in_negative_button + title: juno_onboarding_sign_in_title_2 + notification-permission: + body: juno_onboarding_enable_notifications_description_nimbus_2 + card-type: notification-permission + disqualifiers: + - NEVER + enabled: true + extra-data: ~ + image-res: ic_notification_permission + ordering: 30 + prerequisites: + - ALWAYS + primary-button-label: juno_onboarding_enable_notifications_positive_button + secondary-button-label: juno_onboarding_enable_notifications_negative_button + title: juno_onboarding_enable_notifications_title_nimbus_2 + string-alias: OnboardingCardKey + conditions: + description: "A collection of out the box conditional expressions to be used in determining whether a card should show or not. Each entry maps to a valid JEXL expression.\n" + type: "Map" + default: + ALWAYS: "true" + NEVER: "false" + string-alias: ConditionName + menu-redesign: + description: Control the new menu redesign. + variables: + enabled: + description: "If true, the new menu redesign is available." + type: Boolean + default: false + report-site-issue: + description: "If true, report site issue menu item and preview is available." + type: Boolean + default: false + messaging: + description: "The in-app messaging system.\n" + variables: + $$experiment: + description: "The only acceptable value for `MessageData#experiment`. This should not be set by experiment." + type: ExperimentSlug + default: "{experiment}" + string-alias: ExperimentSlug + $$surfaces: + description: "A list available surfaces for this app.\n\nThis should not be written to by experiments, and should be hidden to users.\n" + type: List + default: + - homescreen + - notification + - survey + - microsurvey + string-alias: SurfaceName + actions: + description: A growable map of action URLs. + type: "Map" + default: + OPEN_URL: "://open" + ENABLE_PRIVATE_BROWSING: "://enable_private_browsing" + INSTALL_SEARCH_WIDGET: "://install_search_widget" + MAKE_DEFAULT_BROWSER: "://make_default_browser" + VIEW_BOOKMARKS: "://urls_bookmarks" + VIEW_COLLECTIONS: "://home_collections" + VIEW_HISTORY: "://urls_history" + VIEW_HOMESCREEN: "://home" + OPEN_SETTINGS_ACCESSIBILITY: "://settings_accessibility" + OPEN_SETTINGS_ADDON_MANAGER: "://settings_addon_manager" + OPEN_SETTINGS_DELETE_BROWSING_DATA: "://settings_delete_browsing_data" + OPEN_SETTINGS_LOGINS: "://settings_logins" + OPEN_SETTINGS_NOTIFICATIONS: "://settings_notifications" + OPEN_SETTINGS_PRIVACY: "://settings_privacy" + OPEN_SETTINGS_SEARCH_ENGINE: "://settings_search_engine" + OPEN_SETTINGS_TRACKING_PROTECTION: "://settings_tracking_protection" + OPEN_SETTINGS_WALLPAPERS: "://settings_wallpapers" + OPEN_SETTINGS: "://settings" + OPEN_SHARE_SHEET: "://share_sheet" + TURN_ON_SYNC: "://turn_on_sync" + string-alias: ActionName + message-under-experiment: + description: "Deprecated in favor of `MessageData#experiment`. This will be removed in future releases." + type: Option + default: ~ + messages: + description: A growable collection of messages + type: "Map" + default: + default-browser: + title: default_browser_experiment_card_title + text: default_browser_experiment_card_text + surface: homescreen + action: MAKE_DEFAULT_BROWSER + trigger-if-all: + - USER_ESTABLISHED_INSTALL + - ANDROID_API_BELOW_29 + exclude-if-any: + - I_AM_DEFAULT_BROWSER + style: PERSISTENT + button-label: preferences_set_as_default_browser + default-browser-notification: + title: nimbus_notification_default_browser_title + text: nimbus_notification_default_browser_text + surface: notification + style: NOTIFICATION + trigger-if-all: + - DAY_3_AFTER_INSTALL + exclude-if-any: + - I_AM_DEFAULT_BROWSER + action: MAKE_DEFAULT_BROWSER + string-alias: MessageKey + notification-config: + description: Configuration of the notification worker for all notification messages. + type: NotificationConfig + default: + refresh-interval: 240 + on-control: + description: What should be displayed when a control message is selected. + type: ControlMessageBehavior + default: show-next-message + styles: + description: "A map of styles to configure message appearance.\n" + type: "Map" + default: + DEFAULT: + priority: 50 + max-display-count: 5 + SURVEY: + priority: 55 + max-display-count: 1 + PERSISTENT: + priority: 50 + max-display-count: 20 + WARNING: + priority: 60 + max-display-count: 10 + URGENT: + priority: 100 + max-display-count: 10 + NOTIFICATION: + priority: 50 + max-display-count: 1 + MICROSURVEY: + priority: 50 + max-display-count: 5 + string-alias: StyleName + triggers: + description: "A collection of out the box trigger expressions. Each entry maps to a valid JEXL expression.\n" + type: "Map" + default: + USER_ESTABLISHED_INSTALL: number_of_app_launches >=4 + ANDROID_API_BELOW_29: android_version < 29 + USER_RECENTLY_INSTALLED: days_since_install < 7 + USER_RECENTLY_UPDATED: days_since_update < 7 && days_since_install != days_since_update + USER_TIER_ONE_COUNTRY: "('US' in locale || 'GB' in locale || 'CA' in locale || 'DE' in locale || 'FR' in locale)" + USER_EN_SPEAKER: "'en' in locale" + USER_ES_SPEAKER: "'es' in locale" + USER_DE_SPEAKER: "'de' in locale" + USER_FR_SPEAKER: "'fr' in locale" + DEVICE_ANDROID: "os == 'Android'" + DEVICE_IOS: "os == 'iOS'" + ALWAYS: "true" + NEVER: "false" + DAY_1_AFTER_INSTALL: days_since_install == 1 + DAY_2_AFTER_INSTALL: days_since_install == 2 + DAY_3_AFTER_INSTALL: days_since_install == 3 + DAY_4_AFTER_INSTALL: days_since_install == 4 + DAY_5_AFTER_INSTALL: days_since_install == 5 + MORE_THAN_24H_SINCE_INSTALLED_OR_UPDATED: days_since_update >= 1 + I_AM_DEFAULT_BROWSER: is_default_browser + I_AM_NOT_DEFAULT_BROWSER: is_default_browser == false + FUNNEL_PAID: "adjust_campaign != ''" + FUNNEL_ORGANIC: "adjust_campaign == ''" + INACTIVE_1_DAY: "'app_launched'|eventLastSeen('Hours') >= 24" + INACTIVE_2_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 2" + INACTIVE_3_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 3" + INACTIVE_4_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 4" + INACTIVE_5_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 5" + RECENTLY_PRINTED: "'print_tapped'|eventLastSeen('Hours') <= 24" + SECOND_HOMEPAGE_VIEW: "'home_screen_displayed'|eventSum('Years', 4, 0) >= 2" + PERFORMED_A_SEARCH_AGAIN_RECENTLY: "'performed_search'|eventSum('Years', 4, 0) >= 2 && 'performed_search'|eventLastSeen('Minutes') < 1" + FXA_CURRENTLY_SIGNED_IN: is_fxa_signed_in == true + FXA_MORE_THAN_1_DEVICE: fxa_connected_devices > 1 + FXA_SIGNED_IN: "'sync_auth.sign_in'|eventLastSeen('Years', 0) <= 4" + FXA_NOT_SIGNED_IN: "'sync_auth.sign_in'|eventLastSeen('Years', 0) > 4" + USER_INFREQUENT: "'app_launched'|eventCountNonZero('Days', 28) >= 1 && 'app_launched'|eventCountNonZero('Days', 28) < 7" + USER_CASUAL: "'app_launched'|eventCountNonZero('Days', 28) >= 7 && 'app_launched'|eventCountNonZero('Days', 28) < 14" + USER_REGULAR: "'app_launched'|eventCountNonZero('Days', 28) >= 14 && 'app_launched'|eventCountNonZero('Days', 28) < 21" + USER_CORE_ACTIVE: "'app_launched'|eventCountNonZero('Days', 28) >= 21" + LAUNCHED_ONCE_THIS_WEEK: "'app_launched'|eventSum('Days', 7) == 1" + string-alias: TriggerName + allow-coenrollment: true + microsurveys: + description: Feature for microsurveys. + variables: + enabled: + description: "When the feature is enabled then microsurveys can be used.\n" + type: Boolean + default: true + mr2022: + description: Features for MR 2022. + variables: + sections-enabled: + description: This property provides a lookup table of whether or not the given section should be enabled. + type: "Map" + default: + home-onboarding-dialog-existing-users: true + sync-cfr: true + wallpapers-selection-tool: true + jump-back-in-cfr: true + tcp-cfr: true + tcp-feature: true + navigation-toolbar: + description: Feature for navigation toolbar. + variables: + enabled: + description: "When the feature is enabled then the user will see the new navigation toolbar.\n" + type: Boolean + default: false + networking: + description: Enables networking features + variables: + fetchPriorityEnabled: + description: "Enables or disables network.fetchpriority.enabled preference.\n" + type: Boolean + default: true + nimbus-is-ready: + description: "A feature that provides the number of Nimbus is_ready events to send when Nimbus finishes launching.\n" + variables: + event-count: + description: The number of events that should be sent. + type: Int + default: 1 + nimbus-system: + description: "Configuration of the Nimbus System in Android.\n" + variables: + refresh-interval-foreground: + description: "The minimum interval in minutes between fetching experiment\nrecipes in the foreground.\n" + type: Int + default: 60 + nimbus-validation: + description: A feature that does not correspond to an application feature suitable for showing that Nimbus is working. This should never be used in production. + variables: + settings-icon: + description: The drawable displayed in the app menu for Settings + type: String + default: mozac_ic_settings + settings-punctuation: + description: The emoji displayed in the Settings screen title. + type: String + default: "" + settings-title: + description: The title of displayed in the Settings screen and app menu. + type: Text + default: browser_menu_settings + onboarding: + description: "A feature that configures the new user onboarding page. Note that onboarding is a **first run** feature, and should only be modified by first run experiments." + variables: + order: + description: Determines the order of the onboarding page panels + type: List + default: + - themes + - toolbar-placement + - sync + - tcp + - privacy-notice + one-click-search: + description: Enable/disable the one click search feature. + variables: + enabled: + description: "If true, the one click search will be enabled." + type: Boolean + default: false + pdfjs: + description: PDF.js features + variables: + download-button: + description: Download button + type: Boolean + default: true + open-in-app-button: + description: Open in app button + type: Boolean + default: true + print: + description: A feature for printing from the share or browser menu. + variables: + browser-print-enabled: + description: "If true, a print button from the browser menu is available." + type: Boolean + default: true + share-print-enabled: + description: "If true, a print button from the share menu is available." + type: Boolean + default: true + private-browsing: + description: Private Browsing Mode + variables: + felt-privacy-enabled: + description: "if true, enable felt privacy related UI" + type: Boolean + default: false + query-parameter-stripping: + description: Features for query parameter stripping. + variables: + sections-enabled: + description: This property provides a lookup table of whether or not the given section should be enabled. + type: "Map" + default: + query-parameter-stripping: "0" + query-parameter-stripping-pmb: "0" + query-parameter-stripping-allow-list: "" + query-parameter-stripping-strip-list: "" + re-engagement-notification: + description: A feature that shows the re-engagement notification if the user is inactive. + variables: + enabled: + description: "If true, the re-engagement notification is shown to the inactive user." + type: Boolean + default: false + type: + description: The type of re-engagement notification that is shown to the inactive user. + type: Int + default: 0 + remote-tab-management: + description: "Features that let users manage tabs on other devices that are connected to the same Mozilla account.\n" + variables: + close-tabs-enabled: + description: "Whether the feature to close synced tabs is enabled. When enabled, this device will allow other devices to close tabs that are open on this device, and show a \"close\" button for tabs that are currently open on other supported devices in the synced tabs tray.\n" + type: Boolean + default: true + search-extra-params: + description: A feature that provides additional args for search. + variables: + channel-id: + description: The channel Id param name with arg. + type: "Map" + default: {} + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + feature-enabler: + description: "The feature enabler param name with arg, NOTE this map could be empty." + type: "Map" + default: {} + search-engine: + description: The search engine name. + type: String + default: "" + search-term-groups: + description: A feature allowing the grouping of URLs around the search term that it came from. + variables: + enabled: + description: "If true, the feature shows up on the homescreen and on the new tab screen." + type: Boolean + default: false + set-as-default-prompt: + description: "Displays native default browser prompt to existing users.\n" + variables: + app-cold-starts-between-prompts: + description: "Minimum number of app cold starts before the next prompt should be displayed to the user.\n" + type: Int + default: 4 + days-between-prompts: + description: "Minimum number of days between displays of Set as default prompt.\n" + type: Int + default: 14 + enabled: + description: "When the feature is enabled then the Set as default prompt can be triggered for existing users.\n" + type: Boolean + default: true + max-number-of-times-to-display: + description: "Maximum number of time the prompt should be displayed.\n" + type: Int + default: 3 + ship: + description: The feature that controls Session History in Parent (SHIP) in Gecko. + variables: + disabled: + description: "Whether or not to disable SHIP. SHIP is enabled when set to false. SHIP is disabled when set to true.\n" + type: Boolean + default: true + shopping-experience: + description: A feature that shows product review quality information. + variables: + enabled: + description: "if true, the shopping experience feature is shown to the user." + type: Boolean + default: false + product-recommendations: + description: "if true, recommended products feature is enabled to be shown to the user based on their preference." + type: Boolean + default: false + product-recommendations-exposure: + description: "if true, we want to record recommended products inventory for opted-in users, even if product recommendations are disabled." + type: Boolean + default: false + splash-screen: + description: "A feature that extends splash screen duration, allowing additional data fetching time for the app's initial run." + variables: + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + maximum_duration_ms: + description: The maximum amount of time in milliseconds the splashscreen will be visible while waiting for initialization calls to complete. + type: Int + default: 0 + suggest-shipped-domains: + description: Feature that suggests domains from the shipped domain list. + variables: + enabled: + description: "Suggest domains from the shipped domain list.\n" + type: Boolean + default: true + third-party-cookie-blocking: + description: Control third-party cookie blocking. + variables: + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + enabled-normal: + description: "Enables / disables third-party cookie blocking in normal browsing mode.\n" + type: Boolean + default: false + enabled-private: + description: "Enables / disables third-party cookie blocking in private browsing mode.\n" + type: Boolean + default: true + translations: + description: The feature that allows on-device translations of web content. + variables: + downloads-enabled: + description: "Show the global language model download options entry point for translations. ('Download languages' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + global-lang-settings-enabled: + description: "Show the global language options entry point for automatically translating. ('Automatic Translation' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + global-settings-enabled: + description: "Show the global settings entry point within the translations feature. ('Translation Settings' on the page settings view.) 'page-settings-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + global-site-settings-enabled: + description: "Show the global never translate this site options entry point for site management. ('Never translate these sites' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + main-flow-browser-menu-enabled: + description: "Show the browser menu entry point into the translations feature. ('Translate Page' on browser menu.)\n" + type: Boolean + default: true + main-flow-toolbar-enabled: + description: "Show the primary toolbar entry point into the translations feature. (Translations icon on URL toolbar.)\n" + type: Boolean + default: true + page-settings-enabled: + description: "Show the page settings entry point within the translations feature. (Gear icon on the translations main flow page.) 'main-flow-toolbar-enabled' or 'main-flow-browser-menu-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + user-characteristics: + description: A feature for control user characteristic data collection + variables: + currentVersion: + description: The current collection version of the user characteristics. + type: Int + default: 0 +enums: + ControlMessageBehavior: + description: An enum to influence what should be displayed when a control message is selected. + variants: + show-next-message: + description: The next eligible message should be shown. + show-none: + description: The surface should show no message. + CookieBannersSection: + description: The identifiers for the sections of the MR 2022. + variants: + feature-setting-detect-only: + description: "An integer either 0 or 1 indicating if cookie banner detect only mode should be enabled or disabled. 0 for setting to be disabled, and 1 for enabling the setting." + feature-setting-global-rules: + description: "An integer either 0 or 1 indicating if cookie banner global rules should be enabled or disabled. 0 for setting to be disabled, and 1 for enabling the setting." + feature-setting-global-rules-sub-frames: + description: "An integer either 0 or 1 indicating if cookie banner global rules sub-frames should be enabled or disabled. 0 for setting to be disabled, and 1 for enabling the setting." + feature-setting-value: + description: "An integer either 0 or 1 indicating if cookie banner setting should be enabled or disabled, 0 for setting the value to disabled, 1 for enabling the setting with the value reject_all." + feature-setting-value-pbm: + description: "An integer either 0 or 1 indicating if cookie banner setting should be enabled or disabled, 0 for setting the value to disabled, 1 for enabling the setting with the value reject_all." + feature-ui: + description: "An integer either 0 or 1 indicating if the UI for cookie banner handling should be visible, 0 to hide the UI and 1 to show the UI. The actual UI is composed by cookie banner section in the settings page, the toolbar section and the re-engagement dialog." + HomeScreenSection: + description: The identifiers for the sections of the homescreen. + variants: + bookmarks: + description: The sites the user has bookmarked. + jump-back-in: + description: The tabs the user was looking immediately before being interrupted. + pocket: + description: The pocket section. This should only be available in the US. + pocket-sponsored-stories: + description: Subsection of the Pocket homescreen section which shows sponsored stories. + recent-explorations: + description: The tab groups + top-sites: + description: The frecency and pinned sites. + MR2022Section: + description: The identifiers for the sections of the MR 2022. + variants: + home-onboarding-dialog-existing-users: + description: Home onboarding dialog for upgraded users. + jump-back-in-cfr: + description: Jump back-in onboarding message. + sync-cfr: + description: CFR for the first time you see a synced tab on the home screen. + tcp-cfr: + description: CFR for the first time you use the browse with Total Cookie Protection on the browser screen. + tcp-feature: + description: Controls the Total Cookie Protection feature. + wallpapers-selection-tool: + description: Wallpapers selection dialog tool for the home screen. + OnboardingCardType: + description: An enum to describe a type of card. + variants: + add-ons: + description: Allows user to install add-ons from onboarding. + add-search-widget: + description: Allows user to add search widget to homescreen. + default-browser: + description: Allows user to set Firefox as the default browser. + notification-permission: + description: Allows user to enable notification permission. + sync-sign-in: + description: Allows user to sync with a Firefox account. + OnboardingPanel: + description: The types of onboarding panels in the onboarding page + variants: + privacy-notice: + description: The onboarding panel where users can tap to view our privacy notice. + sync: + description: The onboarding panel where users can sign in to sync + tcp: + description: The onboarding panel where users can choose their total cookie protection settings + themes: + description: The themes onboarding panel where users pick themes + toolbar-placement: + description: The onboarding panel where users choose their toolbar placement (bottom or top) + QueryParameterStrippingSection: + description: The identifiers for the options for the Query Parameter Stripping feature. + variants: + query-parameter-stripping: + description: "An integer either 0 or 1 indicating if query parameter stripping should be enabled or disabled in normal mode. 0 for setting to be disabled, and 1 for enabling the setting." + query-parameter-stripping-allow-list: + description: An string separated by commas indicating the sites where should from query stripping should be exempted. + query-parameter-stripping-pmb: + description: "An integer either 0 or 1 indicating if query parameter stripping should be enabled or disabled in private mode. 0 for setting to be disabled, and 1 for enabling the setting." + query-parameter-stripping-strip-list: + description: An string separated by commas indicating the list of query params to be stripped from URIs. This list will be merged with records coming from RemoteSettings. + SuggestionType: + description: The type of a Firefox Suggest search suggestion. + variants: + amp: + description: A Firefox Suggestion from adMarketplace. + ampMobile: + description: A firefox Suggestion from adMarketplace specifically for mobile. + wikipedia: + description: A Firefox Suggestion for a Wikipedia page. +objects: + AddOnData: + description: An object to describe an add-on to be installed from the onboarding card. + fields: + average-rating: + description: The average rating of the add-on. + type: String + default: "0.0" + description: + description: A small description of the add-on to be displayed to the user. + type: Text + default: "" + icon-res: + description: The resource id of the icon of the add-on to be displayed. + type: Image + default: ic_onboarding_welcome + id: + description: The identifier for this add-on. + type: Text + default: "" + install-url: + description: The url from where the add-on can be installed. + type: Text + default: "" + name: + description: The name of the add-on to be displayed to the user. + type: Text + default: "" + review-count: + description: The amount of reviews the add-on has. + type: String + default: "0.0" + ExtraCardData: + description: "Holds data for cards that require additional data, e.g. add-ons, toolbar placement cards." + fields: + add-ons-data: + description: "An optional list of add-ons which will be shown in add-on onboarding card.\n" + type: List + default: [] + MessageData: + description: "An object to describe a message. It uses human readable strings to describe the triggers, action and style of the message as well as the text of the message and call to action.\n" + fields: + action: + description: "A URL of a page or a deeplink. This may have substitution variables in.\n" + type: ActionName + default: OPEN_URL + action-params: + description: "A string map containing query parameters that will be appended to the action URL. This is useful for opening URLs in tabs, or specifying that the tab should be private. The values may have substitutions, e.g. \"url\": \"https://example.com/id={uuid}\", \"private\": \"true\".\nThe params and their values are all determined downstream of the messaging component, by the embedding app's deeplink processing machinery.\n" + type: "Map" + default: {} + button-label: + description: "The text on the button. If no text is present, the whole message is clickable.\n" + type: Option + default: ~ + exclude-if-any: + description: "A list of strings corresponding to targeting expressions. The message will not be shown if any of the expressions are `true`.\n" + type: List + default: [] + experiment: + description: The slug of the experiment that this message came from. + type: Option + default: ~ + is-control: + description: "Indicates if this message is the control message, if true shouldn't be displayed" + type: Boolean + default: false + microsurvey-config: + description: Optional configuration data for a microsurvey. + type: Option + default: ~ + style: + description: "The style as described in a `StyleData` from the styles table.\n" + type: StyleName + default: DEFAULT + surface: + description: The surface identifier for this message. + type: SurfaceName + default: homescreen + text: + description: The message text displayed to the user + type: Text + default: "" + title: + description: The title text displayed to the user + type: Option + default: ~ + trigger-if-all: + description: "A list of strings corresponding to targeting expressions. The message will be shown if all expressions are `true`.\n" + type: List + default: [] + MicrosurveyAnswer: + description: Attributes relating to microsurvey content. + fields: + ordering: + description: "Used to sequence the answers top to bottom. E.g. 0 will be the first/top item, 1 will be next and so on. Always set either ALL the provided answers ordering or NONE. If ALL answers are default, the the ordering used will be the same as provided by the experiment.\n" + type: Int + default: 0 + text: + description: The text for the answer. + type: Text + default: "" + MicrosurveyConfig: + description: Attributes relating to microsurvey content. + fields: + answers: + description: "The list of answers to present to the user e.g. \"Satisfied, Dissatisfied...\"." + type: List + default: [] + icon: + description: The icon shown in the survey. + type: Option + default: ~ + utm-content: + description: "Optional \"utm_content\" parameter for the privacy notice URL to specify the feature being surveyed." + type: Option + default: ~ + NotificationConfig: + description: Attributes controlling the global configuration of notification messages. + fields: + refresh-interval: + description: "How often, in minutes, the notification message worker will wake up and check for new messages.\n" + type: Int + default: 240 + OnboardingCardData: + description: An object to describe a user facing onboarding card. + fields: + body: + description: The message text displayed to the user. May contain linkable text. + type: Text + default: "" + card-type: + description: The type of the card. + type: OnboardingCardType + default: default-browser + disqualifiers: + description: "A list of strings corresponding to targeting expressions. The card will not be shown if any expression is `true`.\n" + type: List + default: + - NEVER + enabled: + description: "If true, this card is shown to the user." + type: Boolean + default: true + extra-data: + description: Optional extra data for cards that require additional data. + type: Option + default: ~ + image-res: + description: The resource id of the image to be displayed. + type: Image + default: ic_onboarding_welcome + ordering: + description: Used to sequence the cards. + type: Int + default: 0 + prerequisites: + description: "A list of strings corresponding to targeting expressions. The card will be shown if all expressions are `true` and if no expressions in the `disqualifiers` table are true, or if the `disqualifiers` table is empty.\n" + type: List + default: + - ALWAYS + primary-button-label: + description: The text to display on the primary button. + type: Text + default: "" + secondary-button-label: + description: The text to display on the secondary button. + type: Text + default: "" + title: + description: The title text displayed to the user. + type: Text + default: "" + StyleData: + description: "A group of properties (predominantly visual) to describe the style of the message.\n" + fields: + max-display-count: + description: "How many sessions will this message be shown to the user before it is expired.\n" + type: Int + default: 5 + priority: + description: "The importance of this message. 0 is not very important, 100 is very important.\n" + type: Int + default: 50 diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml b/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml index 3670efc68f..06d999c563 100644 --- a/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml @@ -1,5 +1,5 @@ beta: 2f218da698db4f92722be65f51a6e53d24321cec -central: a568ac65fd4e6833bbee5cc341b3031de12f41a6 -esr115: dc8b700b41911c2bde2cff62bde16d3c0ceadc2a -esr128: a7c935b8a7c0c39bd2161d0927e9f2f2eb4c9d47 -release: 8c35adfaf5ea8b07c3e221d0c9d557a1375f5852 +central: 114a69547c262e92d13156de8a309ee3de9ac35a +esr115: 6a331477d572723c5a5f18cbcd665689c97165bc +esr128: 10845c3218167063ec1c2fe66ea032fb2f53162a +release: c455977f9b6c285c9c5ac1f9ae6b9bae5072ba84 diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/v134.0.1/experimenter.yaml b/experimenter/experimenter/features/manifests/firefox-desktop/v134.0.1/experimenter.yaml new file mode 100644 index 0000000000..b24a4d4c0a --- /dev/null +++ b/experimenter/experimenter/features/manifests/firefox-desktop/v134.0.1/experimenter.yaml @@ -0,0 +1,4058 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +# yaml-language-server: $schema=schemas/ExperimentFeatureManifest.schema.json + +# Features must be added here to be accessible through the NimbusFeature API. + +"no-feature-firefox-desktop": + description: A dummy feature for experiments that target no feature. + owner: beth@mozilla.com + applications: + - firefox-desktop + - firefox-desktop-background-task + hasExposure: false + variables: {} + +testFeature: + description: Test only feature + owner: beth@mozilla.com + applications: + - firefox-desktop + - firefox-desktop-background-task + hasExposure: false + isEarlyStartup: true + variables: + enabled: + type: boolean + description: Whether or not this feature is enabled + testInt: + type: int + fallbackPref: nimbus.testing.testInt + description: Int pref used by platform API tests + testSetString: + type: string + setPref: + branch: user + pref: nimbus.testing.testSetString + description: A string pref set by Nimbus tests + +nimbus-qa-1: + description: A feature for testing pref-setting on the default branch. + owner: beth@mozilla.com + hasExposure: false + variables: + value: + type: string + setPref: + branch: default + pref: nimbus.qa.pref-1 + description: The value to set for the pref. + +nimbus-qa-2: + description: A feature for testing pref-setting on the user branch. + owner: beth@mozilla.com + hasExposure: false + variables: + value: + type: string + setPref: + branch: user + pref: nimbus.qa.pref-2 + description: The value to set for the pref. + +# Note: this feature is not for general use. If you want to run an experiment +# that sets prefs, you *must* register your feature in this manifest and specify +# the prefs you will control. +prefFlips: + description: Flip arbitrary prefs. Controlled by release management. + owner: beth@mozilla.com + hasExposure: false + variables: + prefs: + type: json + description: "The prefs to set." + schema: + uri: resource://nimbus/schemas/PrefFlipsFeature.schema.json + path: toolkit/components/nimbus/schemas/PrefFlipsFeature.schema.json + + +# `search` is for search engine experimentation features which do not require +# isEarlyStartup to be set. +search: + description: Search engine experimentation support and testing features. + owner: search-and-suggest-program@mozilla.com + hasExposure: false + variables: + extraParams: + type: json + description: >- + This allows extra parameters to be set for search engines requests including, + where calls to the suggestions API, the search engine configuration defines + those parameters. + + The use of this field should be coordinated with the Search team. + + The field value is an array of objects with key/value fields. For example: + + [ + {"key": "google_channel_row", "value": "foo"} + ] + + This is matched to a section in the search configuration: + + "extraParams": [ + { + "name": "channel", + "pref": "google_channel_row", + "condition": "pref" + } + ], + + In this case, the resulting URL for the appropriate search engine would have + `&channel=foo` added to the URL when doing searches. + + If the key is not referenced in the search configuration, then no parameter + will be added. Only the search team can update the configuration. + logEnabled: + type: boolean + setPref: + branch: default + pref: browser.search.log + description: >- + Whether or not enable search log in their console. + richSuggestionsFeatureGate: + type: boolean + setPref: + branch: default + pref: browser.urlbar.richSuggestions.featureGate + description: >- + Feature gate that controls whether Rich Suggestions are enabled. + scotchBonnetEnableOverride: + type: boolean + setPref: + branch: default + pref: browser.urlbar.scotchBonnet.enableOverride + description: >- + Whether or not enabling scotch bonnet feature. + If this variable is true, the following features are available as default. + * Unified search button + * Secondary action buttons + * Search term persistence + * Intuitive search keywords + * HTTP swap + serpEventTelemetryCategorizationEnabled: + type: boolean + setPref: + branch: default + pref: browser.search.serpEventTelemetryCategorization.enabled + description: Whether the Glean SERP event telemetry for SERP categorization is enabled. + trendingEnabled: + type: boolean + setPref: + branch: default + pref: browser.urlbar.trending.featureGate + description: Feature gate that controls whether trending suggestions are enabled. + trendingRequireSearchMode: + type: boolean + setPref: + branch: default + pref: browser.urlbar.trending.requireSearchMode + description: Controls whether trending suggestions are only shown in search mode or not. + trendingMaxResultsNoSearchMode: + type: int + setPref: + branch: default + pref: browser.urlbar.trending.maxResultsNoSearchMode + description: The maximum number of trending results mode outside search mode. + newSearchConfigEnabled: + type: boolean + setPref: + branch: user + pref: browser.search.newSearchConfig.enabled + description: >- + Whether search-config-v2 is enabled for the user. This will only take + effect when the user restarts. + Obsolete. This is kept until all multi-feature roll-outs using it are + ended to prevent un-enrollment. + targetExperiment: + type: string + description: >- + The slug of the experiment someone is requesting enrollment and branch + information for. (Note that the featureId needs to be set to "search".) + +# `searchConfiguration` is for search experiment features for items that require +# isEarlyStartup to be true. These items may require a reload of the search +# engine configuration, and an additional reload may happen during the startup +# process. +searchConfiguration: + description: Search experimentation support for the engine configuration + owner: search-and-suggest-program@mozilla.com + isEarlyStartup: true + hasExposure: false + variables: + experiment: + type: string + fallbackPref: browser.search.experiment + description: >- + Used to activate only matching configurations that contain the value in + `experiment` + seperatePrivateDefaultUIEnabled: + type: boolean + description: Whether the UI for the separate private default feature is enabled. + seperatePrivateDefaultUrlbarResultEnabled: + type: boolean + description: Whether the urlbar result for the separate private default is shown. + +urlbar: + description: The Address Bar + owner: search-and-suggest-program@mozilla.com + hasExposure: true + exposureDescription: >- + The timing of the exposure event depends on the experiment, but generally + the event is recorded once per app session when the user first encounters + the UI of the experiment in which they're enrolled. + variables: + addonsFeatureGate: + type: boolean + fallbackPref: browser.urlbar.addons.featureGate + description: >- + Feature gate that controls whether all aspects of the addons suggestion + feature are exposed to the user. + addonsShowLessFrequentlyCap: + type: int + description: >- + If defined and non-zero, this is the maximum number of times the user + will be able to click the "Show less frequently" command for addon + suggestions. If undefined or zero, the user will be able to click the + command without any limit. + autoFillAdaptiveHistoryEnabled: + type: boolean + fallbackPref: browser.urlbar.autoFill.adaptiveHistory.enabled + description: Whether enabling adaptive history autofill. + autoFillAdaptiveHistoryMinCharsThreshold: + type: int + fallbackPref: browser.urlbar.autoFill.adaptiveHistory.minCharsThreshold + description: Minimum char length of the user's search string to trigger adaptive history autofill. + autoFillAdaptiveHistoryUseCountThreshold: + type: string + description: This value assumes float expression like "0.47". Threshold for use count of input history that we handle as adaptive history autofill. If the use count is this value or more, it will be a candidate. + experimentType: + type: string + description: The type of the experiment (or rollout). If "best-match", then the Nimbus exposure event will be recorded when the user first triggers a best match (or would have triggered a best match, for users in the control group). If empty, the event will be recorded when the user first triggers any type of Suggest suggestion. + enum: + - best-match + - "" + fakespotFeatureGate: + type: boolean + fallbackPref: browser.urlbar.fakespot.featureGate + description: >- + Feature gate that controls whether all aspects of the Fakespot suggestion + feature are exposed to the user. + fakespotMinKeywordLength: + type: int + description: >- + The minimum prefix length of a Fakespot keyword the user must type to + trigger the suggestion. + fakespotShowLessFrequentlyCap: + type: int + fallbackPref: browser.urlbar.fakespot.showLessFrequentlyCap + description: >- + If defined and non-zero, this is the maximum number of times the user + will be able to click the "Show less frequently" command for Fakespot + suggestions. If undefined or zero, the user will be able to click the + command without any limit. + fakespotSuggestedIndex: + type: int + fallbackPref: browser.urlbar.fakespot.suggestedIndex + description: >- + The index of Fakespot results within the Firefox Suggest section. A + negative index is relative to the end of the section. + keywordExposureResults: + type: string + setPref: + pref: browser.urlbar.keywordExposureResults + branch: user + description: >- + Comma-separated list of result types that should trigger + keyword-exposure telemetry. Keyword exposures can be recorded along with + result exposures. To enable keyword exposures for a result type, you + must add it both to this variable and to `exposureResults`. The only + exception is the "rust_exposure" result type, which can be added to this + variable even if it's not in `exposureResults` since it's enabled by + setting the `quickSuggestExposureSuggestionTypes` variable. Keyword + exposures are recorded in the `urlbar-keyword-exposure` ping. See that + ping's description for more. + mdnFeatureGate: + type: boolean + setPref: + branch: default + pref: browser.urlbar.mdn.featureGate + description: >- + Feature gate that controls whether all aspects of the mdn suggestion + feature are exposed to the user. + merinoClientVariants: + type: string + fallbackPref: browser.urlbar.merino.clientVariants + description: >- + Comma separated list of client variants to report to the Merino server. + May impact server behavior. + merinoEndpointURL: + type: string + fallbackPref: browser.urlbar.merino.endpointURL + description: >- + The Merino endpoint URL, not including parameters. An empty string will + cause Firefox not to fetch from Merino. + merinoProviders: + type: string + fallbackPref: browser.urlbar.merino.providers + description: >- + Comma-separated list of providers to request from the Merino server. + Merino will return suggestions only for these providers. + merinoTimeoutMs: + type: int + fallbackPref: browser.urlbar.merino.timeoutMs + description: Timeout for Merino fetches (ms) + exposureResults: + type: string + setPref: + pref: browser.urlbar.exposureResults + branch: user + description: >- + Comma-separated list of result types that should trigger exposure + telemetry, which is recorded in the `exposure` event. By default + exposure results are visible like usual, but they can be hidden by + setting the `showExposureResults` variable to false. To also record + keyword exposures for a result type, include it in the + `keywordExposureResults` variable as well. + showExposureResults: + type: boolean + setPref: + pref: browser.urlbar.showExposureResults + branch: user + description: >- + Boolean used to determine if the results defined in `exposureResults` should be shown in search results. Should be false for Control branch of an experiment. + pocketFeatureGate: + type: boolean + fallbackPref: browser.urlbar.pocket.featureGate + description: >- + Feature gate that controls whether all aspects of the Pocket suggestions + feature are exposed to the user. + pocketShowLessFrequentlyCap: + type: int + description: >- + If defined and non-zero, this is the maximum number of times the user + will be able to click the "Show less frequently" command for Pocket + suggestions. If undefined or zero, the user will be able to click the + command without any limit. + pocketSuggestIndex: + type: int + description: >- + The group-relative suggestedIndex of Pocket suggestions within the Firefox + Suggest section. + quickSuggestAllowPositionInSuggestions: + type: boolean + fallbackPref: browser.urlbar.quicksuggest.allowPositionInSuggestions + description: Whether quick suggest results can be shown in position specified in the suggestions. + quickSuggestAmpTopPickCharThreshold: + type: int + fallbackPref: browser.urlbar.quicksuggest.ampTopPickCharThreshold + description: >- + Character-count threshold (inclusive) for showing AMP suggestions as top + picks. If an AMP suggestion is triggered by a keyword at least this many + characters long, it will be shown as a top pick. When this variable is + set, full keywords will also show AMP suggestions as top picks even if + they have fewer characters than this threshold. + quickSuggestContextualOptInEnabled: + type: boolean + setPref: + branch: default + pref: browser.urlbar.quicksuggest.contextualOptIn + description: Whether the Firefox Suggest contextual opt-in result is enabled. If true, this implicitly disables shouldShowOnboardingDialog. + quickSuggestContextualOptInSayHello: + type: boolean + setPref: + branch: default + pref: browser.urlbar.quicksuggest.contextualOptIn.sayHello + description: Controls which variant of the copy is used for the Firefox Suggest contextual opt-in result. + quickSuggestContextualOptInTopPosition: + type: boolean + setPref: + branch: default + pref: browser.urlbar.quicksuggest.contextualOptIn.topPosition + description: Controls whether the Firefox Suggest contextual opt-in result appears at the top of results or at the bottom, after one-off buttons. + quickSuggestDataCollectionEnabled: + type: boolean + description: Whether data collection should be enabled by default. If this variable is specified, it will override the value implied by the scenario. It will never override the user's local preference to disable (or enable) data collection, if the user has already toggled that preference. + quickSuggestEnabled: + type: boolean + fallbackPref: browser.urlbar.quicksuggest.enabled + description: Gate for the Firefox Suggest feature as a whole. If false, the Firefox Suggest preferences UI and Suggest suggestions will not be shown. If true, the preferences UI will be shown, and the user can turn suggestions on or off. + quickSuggestExposureSuggestionTypes: + type: string + setPref: + pref: browser.urlbar.quicksuggest.exposureSuggestionTypes + branch: user + description: >- + Comma-separated list of Suggest exposure suggestion types to enable. + Exposure suggestions are used to test potential exposures. They trigger + exposure telemetry based on a set of keywords you provide but they are + never visible. Set this variable to the `suggestion_type` defined in the + remote settings record(s) that contains your keywords. If you want to + test multiple suggestion types, separate them with commas, but also + consider using one experiment branch per type, especially if you are + also enabling keyword exposures. Exposure suggestions are recorded in + telemetry with the "rust_exposure" result type. It's not necessary to + include "rust_exposure" in `exposureResults`. Unless you are testing + other results in the same experiment branch, it's also not necessary to + set `showExposureResults: false`. To also record keyword exposures, + include "rust_exposure" in `keywordExposureResults`. + quickSuggestHideSettingsUI: + type: boolean + fallbackPref: browser.urlbar.quicksuggest.hideSettingsUI + description: >- + This variable is intended to be used in potential exposure experiments + in regions and locales where Suggest normally isn't enabled. Potential + exposure suggestions are implemented in Suggest, and this variable lets + us enable core Suggest functionality but keep it hidden. Set both + `quickSuggestEnabled` and `quickSuggestHideSettingsUI` to true, along + with `quickSuggestExposureSuggestionTypes`. This variable does NOT hide + visible suggestions and other UI that can be independently enabled with + other Nimbus variables. But since all visible suggestions are disabled + by default for users not in the Suggest population, as long as you don't + set any Nimbus variables to enable other suggestions and UI, Suggest + will remain hidden. + quickSuggestImpressionCapsSponsoredEnabled: + type: boolean + fallbackPref: browser.urlbar.quicksuggest.impressionCaps.sponsoredEnabled + description: Whether sponsored suggestions are subject to impression frequency caps. If false, sponsored suggestions can be shown an unlimited number of times over any given period. If true, sponsored suggestion impressions will be subject to the caps in the remote settings configuration. + quickSuggestImpressionCapsNonSponsoredEnabled: + type: boolean + fallbackPref: browser.urlbar.quicksuggest.impressionCaps.nonSponsoredEnabled + description: Whether non-sponsored suggestions are subject to impression frequency caps. If false, non-sponsored suggestions can be shown an unlimited number of times over any given period. If true, non-sponsored suggestion impressions will be subject to the caps in the remote settings configuration. + quickSuggestMlEnabled: + type: boolean + fallbackPref: browser.urlbar.quicksuggest.mlEnabled + description: >- + Whether Suggest will use the ML backend in addition to Rust. + quickSuggestNonSponsoredEnabled: + type: boolean + description: Whether non-sponsored suggestions should be enabled by default. If this variable is specified, it will override the value implied by the scenario. It will never override the user's local preference to disable (or enable) non-sponsored suggestions, if the user has already toggled that preference. + quickSuggestNonSponsoredIndex: + type: int + fallbackPref: browser.urlbar.quicksuggest.nonSponsoredIndex + description: >- + The index of non-sponsored QuickSuggest results within the general + group. A negative index is relative to the end of the group + quickSuggestOnboardingDialogVariation: + type: string + description: >- + Specify the messages/UI variation for QuickSuggest onboarding dialog. This value is case insensitive. + quickSuggestRankingMode: + type: string + fallbackPref: browser.urlbar.quicksuggest.rankingMode + description: >- + Specify the ranking mode for QuickSuggest. + - "default": ranking by static scores specified by individual providers. + - "interest": ranking by relevance scores provided by `ContentRelevancyManager`. + - "random": ranking by randomly selecting a winner out of candidates. + Note that this ranking mode can still be overridden by `quickSuggestScoreMap`. + If the ranking mode is unspecified or set to any unknown values, it will default + to the static score based ranking. + enum: + - default + - interest + - random + quickSuggestRemoteSettingsDataType: + type: string + description: The `type` of the suggestions data in remote settings. If not specified, "data" is used. + quickSuggestRustEnabled: + type: boolean + fallbackPref: browser.urlbar.quicksuggest.rustEnabled + description: >- + Whether Firefox Suggest will use the new Rust backend instead of the + original JS backend. + quickSuggestScenario: + # IMPORTANT: This should not have a fallbackPref. See UrlbarPrefs.sys.mjs. + type: string + description: The Firefox Suggest scenario in which the user is enrolled + enum: + - history + - offline + - online + quickSuggestScoreMap: + type: json + description: >- + A JSON object that maps telemetry result types to suggestion scores. If + a telemetry result type is present in this map, the client will use the + corresponding score as the score for all suggestions of the type, + overriding all other sources of scores for the type. In other words, + the scores in this map will override scores that are set in remote + settings and Merino as well as scores that are hardcoded in the client. + Example entries: `"amo": 0.5`, `"adm_sponsored": 0.9` + quickSuggestShouldShowOnboardingDialog: + type: boolean + fallbackPref: browser.urlbar.quicksuggest.shouldShowOnboardingDialog + description: Whether or not to show the QuickSuggest onboarding dialog + quickSuggestShowOnboardingDialogAfterNRestarts: + type: int + fallbackPref: browser.urlbar.quicksuggest.showOnboardingDialogAfterNRestarts + description: Show QuickSuggest onboarding dialog after N browser restarts + quickSuggestSponsoredEnabled: + type: boolean + description: Whether sponsored suggestions should be enabled by default. If this variable is specified, it will override the value implied by the scenario. It will never override the user's local preference to disable (or enable) sponsored suggestions, if the user has already toggled that preference. + quickSuggestSponsoredIndex: + type: int + fallbackPref: browser.urlbar.quicksuggest.sponsoredIndex + description: >- + The index of sponsored Firefox Suggest results within the Firefox Suggest + section when "Show search suggestions ahead of browsing history in + address bar results" is checked. When not checked, the index is hardcoded + as -1. Negative indexes are relative to the end of the section. + quickSuggestSponsoredPriority: + type: boolean + fallbackPref: browser.urlbar.quicksuggest.sponsoredPriority + description: >- + Whether or not showing sponsored suggestion as priority. + If this variable is true, the following things are processed. + * "Sponsored" label is shown as the group label. + * Change the suggested index to 1. + * Handle as top pick. + recentSearchesFeatureGate: + type: boolean + setPref: + branch: default + pref: browser.urlbar.recentsearches.featureGate + description: Gate for the recent searches feature. + recentSearchesMaxResults: + type: int + setPref: + branch: default + pref: browser.urlbar.recentsearches.maxResults + description: The maximum number of recent searches to show. + recordNavigationalSuggestionTelemetry: + type: boolean + description: Whether to record navigational suggestion telemetry. Defaults to false. + showSearchTermsFeatureGate: + type: boolean + fallbackPref: browser.urlbar.showSearchTerms.featureGate + description: Gate for the show search terms feature. If false, the preference#search will not show the search terms feature checkbox, and search terms will never persist in the urlbar. If true, the preference checkbox will be shown on preferences#search, and the user can choose to persist search terms on or off in the urlbar. + weatherFeatureGate: + type: boolean + fallbackPref: browser.urlbar.weather.featureGate + description: >- + Feature gate that controls whether all aspects of the weather suggestion + feature are exposed to the user. + weatherKeywordsMinimumLength: + type: int + description: >- + If defined and non-zero, the weather suggestion will be triggered by + typing any prefix of a full weather keyword when the prefix is at least + `weatherKeywordsMinimumLength` characters long. If this variable is + absent or zero, Firefox will fall back to the minimum length defined in + remote settings. If neither Nimbus nor remote settings defines a minimum + length, only full keywords will trigger the suggestion. + weatherShowLessFrequentlyCap: + type: int + description: >- + If defined and non-zero, this is the maximum number of times the user + will be able to click the "Show less frequently" command for weather + suggestions. If undefined or zero, the user will be able to click the + command without any limit. + weatherSimpleUI: + type: boolean + description: >- + If true, show the weather suggestion by simple UI edition as follows. + * Remove the forcast text from the summary text. + yelpMinKeywordLength: + type: int + description: >- + The minimum prefix length of a Yelp keyword the user must type to + trigger the suggestion. + yelpMlEnabled: + type: boolean + fallbackPref: browser.urlbar.yelp.mlEnabled + description: >- + Whether Yelp suggestions will be served from the Suggest ML backend + instead of Rust. + yelpFeatureGate: + type: boolean + fallbackPref: browser.urlbar.yelp.featureGate + description: >- + Feature gate that controls whether all aspects of the Yelp suggestion + feature are exposed to the user. + yelpShowLessFrequentlyCap: + type: int + fallbackPref: browser.urlbar.yelp.showLessFrequentlyCap + description: >- + If defined and non-zero, this is the maximum number of times the user + will be able to click the "Show less frequently" command for Yelp + suggestions. If undefined or zero, the user will be able to click the + command without any limit. + yelpSuggestNonPriorityIndex: + type: int + description: >- + The group-relative suggestedIndex of Yelp suggestions within the Firefox + Suggest section. Ignored when `yelpSuggestPriority` is true. + yelpSuggestPriority: + type: boolean + fallbackPref: browser.urlbar.yelp.priority + description: >- + Whether or not showing yelp suggestion as priority. + If this variable is true, the following things are processed. + * Change the suggested index to 1. + * Handle as top pick. + originsAlternativeEnable: + description: >- + Use an alternative ranking algorithm for autofilling origins, that is + mainly domains of Web pages. When the user types the beginning of an + origin, we autofill the whole origin. Whether autofill happens depends + on the ranking algorithm. Bookmarks are always autofilled anyway. + type: boolean + setPref: + branch: user + pref: "places.frecency.origins.alternative.featureGate" + originsDaysCutOff: + description: >- + The alternative ranking algorithm only considers pages visited in the + last N days, where N is controlled by this variable. + type: int + setPref: + branch: user + pref: "places.frecency.origins.alternative.daysCutOff" + pagesAlternativeEnable: + description: >- + Use an alternative ranking algorithm for sorting history and bookmarks + among the urlbar results. + type: boolean + setPref: + branch: user + pref: "places.frecency.pages.alternative.featureGate" + pagesNumSampledVisits: + description: >- + The number of recent visits to sample when calculating the ranking of + a page. Examining all the visits would be expensive, so we only sample + recent visits. + type: int + setPref: + branch: user + pref: "places.frecency.pages.alternative.numSampledVisits" + pagesHalfLifeDays: + description: >- + The number of days after which the ranking halves. This implements the + "recency" part of the algorithm. + type: int + setPref: + branch: user + pref: "places.frecency.pages.alternative.halfLifeDays" + pagesHighWeight: + description: >- + The weight to use for the high importance bucket. + type: int + setPref: + branch: user + pref: "places.frecency.pages.alternative.highWeight" + pagesMediumWeight: + description: >- + The weight to use for the medium importance bucket. + type: int + setPref: + branch: user + pref: "places.frecency.pages.alternative.mediumWeight" + pagesLowWeight: + description: >- + The weight to use for the low importance bucket. + type: int + setPref: + branch: user + pref: "places.frecency.pages.alternative.lowWeight" + +aboutwelcome: + description: "The about:welcome page" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + Exposure is sent once per browsing session when the about:welcome URL is + first accessed. + isEarlyStartup: true + variables: + enabled: + type: boolean + fallbackPref: browser.aboutwelcome.enabled + description: >- + Should users see about:welcome? If this is false, users will see a + regular new tab instead. + id: + type: string + description: >- + Descriptive ID for the about:welcome content + screens: + type: json + fallbackPref: browser.aboutwelcome.screens + description: Content to show in the onboarding flow + languageMismatchEnabled: + type: boolean + fallbackPref: intl.multilingual.aboutWelcome.languageMismatchEnabled + description: >- + Suggest to change the language on about:welcome when there is a mismatch with + the OS. + transitions: + type: boolean + description: Enable transition effect between screens + showModal: + type: boolean + fallbackPref: browser.aboutwelcome.showModal + description: >- + Should users see window modal onboarding + backdrop: + type: string + fallbackPref: browser.aboutwelcome.backdrop + description: >- + Specify the color to be used to update the background color + toolbarButtonEnabled: + type: boolean + setPref: + branch: user + pref: browser.aboutwelcome.toolbarButtonEnabled + description: >- + Should the return to about:welcome toolbar button be shown + +moreFromMozilla: + description: "New page on about:preferences to suggest more Mozilla products" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + Exposure is sent once per browsing session when the about:preferences URL is + first accessed. + variables: + enabled: + type: boolean + fallbackPref: browser.preferences.moreFromMozilla + description: Should users see the new more from Mozilla section. + template: + type: string + fallbackPref: browser.preferences.moreFromMozilla.template + description: UI template used to display Mozilla products. Possible values simple, advanced. Default is simple. + +windowsLaunchOnLogin: + description: "New checkbox in about:preferences startup section to start Firefox on Windows login" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + Exposure is sent once per browsing session when the about:preferences URL is + first accessed. + variables: + enabled: + type: boolean + setPref: + branch: default + pref: browser.startup.windowsLaunchOnLogin.enabled + description: Should users see the Windows launch on login checkbox. + +firefoxBridge: + description: "Controls for Firefox Bridge extension and extension registration" + owner: install-update@mozilla.com + hasExposure: false + variables: + enabled: + type: boolean + setPref: + branch: default + pref: browser.firefoxbridge.enabled + description: >- + Should Firefox Bridge be registered within firefoxBridgeNativeMessaging + startup idle task for use with native messaging proxy. + +abouthomecache: + description: "The startup about:home cache." + owner: omc@mozilla.com, mconley@mozilla.com + hasExposure: false + variables: + enabled: + type: boolean + description: Is the feature enabled? + setPref: + branch: user + pref: browser.startup.homepage.abouthome_cache.enabled + +newtab: + description: "The about:newtab page" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + Exposure is sent once per browsing session when the first newtab page loads + (either about:newtab or about:home). + isEarlyStartup: true + variables: + newTheme: + type: boolean + description: Enable the new theme + customizationMenuEnabled: + type: boolean + fallbackPref: browser.newtabpage.activity-stream.customizationMenu.enabled + description: Enable the customization panel inside of the newtab + prefsButtonIcon: + type: string + description: Icon url to use for the preferences button + topSitesContileEnabled: + type: boolean + fallbackPref: browser.topsites.contile.enabled + description: Enable the Contile integration for Sponsored Top Sites + topSitesUseAdditionalTilesFromContile: + type: boolean + description: Allow Contile to use additonal sponsored top sites + +newtabUnifiedAds: + description: Mozilla Ad Routing Service (MARS) unified ads service + owner: mcrawford@mozilla.com, sdowne@mozilla.com + hasExposure: false + variables: + unifiedAdsEndpoint: + description: The URL for the MARS API endpoint. + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.unifiedAds.endpoint + unifiedAdsSpocsEnabled: + type: boolean + description: >- + Enable MARS endpoint to serve ads for recommended stories + setPref: + branch: user + pref: browser.newtabpage.activity-stream.unifiedAds.spocs.enabled + unifiedAdsTilesEnabled: + type: boolean + description: >- + Enable MARS endpoint to serve content for top sites tiles + setPref: + branch: user + pref: browser.newtabpage.activity-stream.unifiedAds.tiles.enabled + +newtabSpocsCache: + description: The about:newtab sponsored content cache. + owner: sdowne@mozilla.com + hasExposure: false + variables: + spocsCacheTimeout: + type: int + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.spocs.cacheTimeout + description: >- + Set sponsored content cache timeout in minutes. + spocsStartupCache: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.spocs.startupCache.enabled + description: >- + Controls if spocs should be included in startup cache. + +newtabAdSizingExperiment: + description: >- + Change the default ad size and UI for certain ad formats. + owner: achurchwell@mozilla.com, sdowne@mozilla.com + hasExposure: false + variables: + variantA: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.newtabAdSize.variant-a + description: >- + Variant A ad size and UI. + variantB: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.newtabAdSize.variant-b + description: >- + Variant B ad size and UI. + +newtabLayoutExperiment: + description: >- + Change the default layout of new tab by adjusting sizes and spacing of elements. + owner: achurchwell@mozilla.com, sdowne@mozilla.com + hasExposure: false + variables: + variantA: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.newtabLayouts.variant-a + description: >- + Variant A in layouts experiment. + variantB: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.newtabLayouts.variant-b + description: >- + Variant B in layouts experiment. + +newtabSponsoredContent: + description: >- + Change and control the sponsored content on newtab. + owner: sdowne@mozilla.com + hasExposure: false + variables: + spocPositions: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.spoc-positions + description: CSV string of spoc position indexes on newtab Pocket grid + spocPlacements: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.placements.spocs + description: CSV string of spoc placement ids on newtab Pocket grid. A placement id tells our ad server where the ads are intended to be displayed. + spocCounts: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.placements.spocs.counts + description: CSV string of spoc placement counts on newtab Pocket grid. The count tells the ad server how many ads to return for this position and placement. + tilesPlacements: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.placements.tiles + description: CSV string of tiles placement ids on newtab tiles section. A placement id tells our ad server where the ads are intended to be displayed. + tilesCounts: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.placements.tiles.counts + description: CSV string of tiles placement counts on newtab tiles section. The count tells the ad server how many ads to return for this position and placement. + +newtabTopicSelection: + description: the about:newtab topic selection experience. + owner: nbarrett@mozilla.com + hasExposure: false + variables: + availableTopics: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.topicSelection.topics + description: >- + List of available topics to select for topic selection + suggestedTopics: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.topicSelection.suggestedTopics + description: >- + List of pre-selected topics to display on first run of topic selection modal + topicSelectionOnboarding: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.topicSelection.onboarding.enabled + description: >- + Turns on and off topic selection onbaording + regionTopicsConfig: + description: A comma-separated list of regions that get topics selection by default. + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.topicSelection.region-topics-config + localeTopicsConfig: + description: A comma-separated list of locales that get topics selection by default. + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.topicSelection.locale-topics-config + regionTopicLabelConfig: + description: A comma-separated list of regions that get topic labels by default. + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.topicLabels.region-topic-label-config + localeTopicLabelConfig: + description: A comma-separated list of locales that get topic Labels by default. + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.topicLabels.locale-topic-label-config + +newtabContextualContent: + description: about:newtab contextual content feed + owner: nbarrett@mozilla.com + hasExposure: false + variables: + contextualContentEnabled: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.contextualContent.enabled + description: >- + Override the contextual content enabled value set via region/locale + localeContextualContentConfig: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.contextualContent.locale-content-config + description: >- + A comma-separated list of locales that get contextual content by default. + regionContextualContentConfig: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.contextualContent.region-content-config + description: >- + A comma-separated list of regions that get contextual content by default. + contextualContentFeeds: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.contextualContent.feeds + description: >- + CSV list of possible feeds for the contextual content feed + contextualContentSelectedFeed: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.contextualContent.selectedFeed + description: >- + currently selected feed to display in the Contextual Content component + +newTabSectionsExperiment: + description: about:newtab section UI update + owner: nbarrett@mozilla.com, mcrawford@mozilla.com + hasExposure: false + variables: + sectionsEnabled: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.sections.enabled + description: >- + Enable the Section UI for recommended stories on newtab + cardRefreshThumbsUpDownEnabled: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.sections.cards.thumbsUpDown.enabled + description: >- + Enable the thumbs up/down buttons in the revised pocket story + card UI in recommended stories on newtab + cardRefreshEnabled: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.sections.cards.enabled + description: >- + Enable the revised pocket story card UI in recommended stories on newtab + localeSectionstConfig: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.sections.locale-content-config + description: >- + A comma-separated list of locales that get contextual content by default. + regionSectionsConfig: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.sections.region-content-config + description: >- + A comma-separated list of regions that get contextual content by default. + +pocketNewtab: + description: The Pocket section in newtab + owner: sdowne@mozilla.com + hasExposure: false + isEarlyStartup: true + variables: + spocTopsitesPositions: + type: string + fallbackPref: browser.newtabpage.activity-stream.discoverystream.spoc-topsites-positions + description: CSV string of spoc position indexes on newtab topsites section + contileTopsitesPositions: + type: string + fallbackPref: browser.newtabpage.activity-stream.discoverystream.contile-topsites-positions + description: CSV string of contile position indexes on newtab topsites section + spocAdTypes: + type: string + fallbackPref: browser.newtabpage.activity-stream.discoverystream.spocAdTypes + description: CSV string of data to set the spoc content. + spocZoneIds: + type: string + fallbackPref: browser.newtabpage.activity-stream.discoverystream.spocZoneIds + description: CSV string of data to set the spoc content. + spocTopsitesAdTypes: + type: string + fallbackPref: browser.newtabpage.activity-stream.discoverystream.spocTopsitesAdTypes + description: CSV string of data to set the spoc content. + spocTopsitesZoneIds: + type: string + fallbackPref: browser.newtabpage.activity-stream.discoverystream.spocTopsitesZoneIds + description: CSV string of data to set the spoc content. + spocTopsitesPlacementEnabled: + type: boolean + fallbackPref: browser.newtabpage.activity-stream.discoverystream.spocTopsitesPlacement.enabled + description: Tuns on and off the sponsored topsites placement. + spocSiteId: + type: string + fallbackPref: browser.newtabpage.activity-stream.discoverystream.spocSiteId + description: String ID to set the spoc content. + widgetPositions: + type: string + fallbackPref: browser.newtabpage.activity-stream.discoverystream.widget-positions + description: CSV string of widget position indexes on newtab grid + hybridLayout: + type: boolean + fallbackPref: browser.newtabpage.activity-stream.discoverystream.hybridLayout.enabled + description: Enable compact cards on newtab grid only for specific breakpoints + hideCardBackground: + type: boolean + fallbackPref: browser.newtabpage.activity-stream.discoverystream.hideCardBackground.enabled + description: Removes Pocket card background and borders. + fourCardLayout: + type: boolean + fallbackPref: browser.newtabpage.activity-stream.discoverystream.fourCardLayout.enabled + description: Enable four Pocket cards per row. + newFooterSection: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.newFooterSection.enabled + description: Enable an updated Pocket section topics footer + saveToPocketCard: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.saveToPocketCard.enabled + description: >- + A save to Pocket button inside the card, shown on the card thumbnail, on + hover. + saveToPocketCardRegions: + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.saveToPocketCardRegions + description: >- + CSV string of regions that support the save to Pocket button inside the card. + hideDescriptions: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.hideDescriptions.enabled + description: >- + Hide or display descriptions for Pocket stories on newtab. + hideDescriptionsRegions: + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.hideDescriptionsRegions + description: >- + CSV string of regions that hide descriptions for Pocket stories on newtab. + compactGrid: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.compactGrid.enabled + description: >- + Reduce the number of pixels between the Pocket cards on newtab. + compactImages: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.compactImages.enabled + description: >- + Reduce the height on Pocket card images on newtab. + imageGradient: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.imageGradient.enabled + description: >- + Add a gradient to the bottom of Pocket card images on newtab to blend the + image in with the card. + titleLines: + type: int + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.titleLines + description: >- + Changes the maximum number of lines a title can be for Pocket cards on newtab. + descLines: + type: int + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.descLines + description: >- + Changes the maximum number of lines a description can be for Pocket cards on newtab. + onboardingExperience: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.onboardingExperience.enabled + description: >- + Enables an onboarding experience for Pocket section on newtab. + essentialReadsHeader: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.essentialReadsHeader.enabled + description: >- + Updates the Pocket section header and title to say "Today’s Essential Reads", + moves the "Recommended by Pocket" header to the right side. + editorsPicksHeader: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.editorsPicksHeader.enabled + description: >- + Updates the Pocket section header and title to say "Editor’s Picks", if used with + essentialReadsHeader, creates a second section 2 rows down for editorsPicksHeader. + recentSavesEnabled: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.recentSaves.enabled + description: >- + Updates the Pocket section with a new header and 1 row of recently saved Pocket stories. + readTime: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.readTime.enabled + description: >- + Displays an estimated read time for Pocket cards on newtab. + newSponsoredLabel: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.newSponsoredLabel.enabled + description: >- + Updates the sponsored label position to below the image for Pocket cards on newtab. + sendToPocket: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.sendToPocket.enabled + description: >- + Decides what to do when a logged out user click "Save to Pocket" from a Pocket card. + wallpapers: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.newtabWallpapers.enabled + description: >- + Turns on and off wallpaper support. + wallpapersV2: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.newtabWallpapers.v2.enabled + description: >- + Turns on and off updated wallpaper experience. + wallpapersHighlightEnabled: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.newtabWallpapers.highlightEnabled + description: >- + Turns on and off wallpaper feature highlight. + wallpaperHighlightHeaderText: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.newtabWallpapers.highlightHeaderText + description: >- + Changes the wallpaper feature highlight header + wallpaperHighlightContentText: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.newtabWallpapers.highlightContentText + description: >- + Changes the wallpaper feature highlight content + wallpaperHighlightCtaText: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.newtabWallpapers.highlightCtaText + description: >- + Changes the wallpaper feature highlight cta + weatherLocationSearch: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.weather.locationSearchEnabled + description: >- + Turns on and off location search for newtab weather widget + recsPersonalized: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.recs.personalized + description: >- + Enables Pocket stories personalization. + spocsPersonalized: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.spocs.personalized + description: >- + Enables Pocket sponsored content personalization. + discoveryStreamConfig: + description: A JSON blob of discovery stream configuration. + type: string + setPref: + branch: user + pref: "browser.newtabpage.activity-stream.discoverystream.config" + spocsEndpoint: + description: The URL for the spocs endpoint. + type: string + setPref: + branch: user + pref: "browser.newtabpage.activity-stream.discoverystream.spocs-endpoint" + spocsEndpointAllowlist: + description: Comma separated list of allowed endpoints for fetching spocs + type: string + setPref: + branch: user + pref: "browser.newtabpage.activity-stream.discoverystream.endpoints" + spocsClearEndpoint: + description: URL for deleting any server data when a user opts out of sponsored content + type: string + setPref: + branch: user + pref: "browser.newtabpage.activity-stream.discoverystream.endpointSpocsClear" + ctaButtonSponsors: + description: A CSV list of sponsors that should use a button CTA. + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.ctaButtonSponsors + ctaButtonVariant: + description: Specifies which variant to use for any sponsors in ctaButtonSponsors + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.ctaButtonVariant + spocMessageVariant: + description: Adds some message dialogs explainging sponsored content to the user + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.spocMessageVariant + regionStoriesConfig: + description: A comma-separated list of region to get stories for. + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.region-stories-config + regionBffConfig: + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.region-bff-config + description: A comma-separated list of regions to get stories from the recommendations BFF. Also requires region-stories-config. + merinoProviderEnabled: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.merino-provider.enabled + description: Sets the recommendations provider service to Merino. + merinoProviderEndpoint: + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.merino-provider.endpoint + description: Merino endpoint to use for recommendations. + regionStoriesBlock: + description: A comma-separated list of regions that do not get stories, regardless of locale-list-config. + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.region-stories-block + localeListConfig: + description: A comma-separated list of locales that get stories, regardless of region-stories-config. + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.locale-list-config + regionSpocsConfig: + description: A comma-separated list of regions that get spocs by default. + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.region-spocs-config + regionWeatherConfig: + description: A comma-separated list of regions that get weather by default. + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.region-weather-config + localeWeatherConfig: + description: A comma-separated list of locales that weather widget supports. + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.locale-weather-config + topSitesMaxSponsored: + # Defined under `pocketNewtab` as it needs to be used along with other variables + type: int + description: The maximum number of sponsored Top Sites to be displayed + topSitesContileMaxSponsored: + # Defined under `pocketNewtab` as it needs to be used along with other variables + type: int + description: The maximum number of sponsored Top Sites used from Contile + topSitesContileSovEnabled: + # Defined under `pocketNewtab` as it needs to be used along with other variables + description: Enable the Share-of-Voice feature for Sponsored Topsites. + type: boolean + fallbackPref: >- + browser.topsites.contile.sov.enabled + pocketFeedParameters: + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.pocket-feed-parameters + description: >- + Add parameters to Pocket feed URL. + merinoFeedExperiment: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.merino-feed-experiment + description: >- + Should we pass the experiment branch and slug to the Merino feed request. + thumbsUpDown: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.thumbsUpDown.enabled + description: Display thumbs up and down buttons on recommended stories + regionThumbsUpDownConfig: + description: A comma-separated list of regions that get thumbs up and down buttons by default. + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.thumbsUpDown.region-thumbs-config + description: Display thumbs up and down buttons on recommended stories + localeThumbsUpDownConfig: + description: A comma-separated list of locales that get thumbs up and down buttons by default. + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.thumbsUpDown.locale-thumbs-config + thumbsUpDownCompactLayout: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.thumbsUpDown.searchTopsitesCompact + description: >- + Change the layout of the sections to be more compact to account for the added card height with the thumbs up/down enabled. + +saveToPocket: + description: The save to Pocket feature + owner: sdowne@mozilla.com + hasExposure: false + variables: + emailButton: + type: boolean + setPref: + branch: user + pref: extensions.pocket.refresh.emailButton.enabled + description: Just for the new Pocket panels, enables the email signup button. + hideRecentSaves: + type: boolean + setPref: + branch: user + pref: extensions.pocket.refresh.hideRecentSaves.enabled + description: Hides the recently saved section in the home panel. + bffRecentSaves: + type: boolean + setPref: + branch: user + pref: extensions.pocket.bffRecentSaves + description: Use the new BFF Proxy Service instead of the legacy Pocket Service for Recent Saves + bffApi: + type: string + setPref: + branch: user + pref: extensions.pocket.bffApi + description: BFF Proxy Service domain + oAuthConsumerKeyBff: + type: string + setPref: + branch: user + pref: extensions.pocket.oAuthConsumerKeyBff + description: BFF Proxy Service OAuth Consumer Key + +password-autocomplete: + description: A special autocomplete UI for password fields. + owner: sgalich@mozilla.com + hasExposure: false + variables: + directMigrateSingleProfile: + type: boolean + description: Enable direct migration? + +# Experiment for different Relay UI treatments. Variations at: +# https://www.figma.com/design/gnyElr1Wtce3RdQT54y8kS/Relay-%26-Firefox-Integration?node-id=316-2024&node-type=canvas&t=A3iAuevSTtwXeFxb-0 +email-autocomplete-relay: + description: Relay UI for email fields. + exposureDescription: Exposure is sent each time a user sees the Relay autocomplete dropdown item + hasExposure: true + owner: lcrouch@mozilla.com + variables: + firstOfferVersion: + type: string + description: Which Relay UI treatment to show + fallbackPref: signon.firefoxRelay.firstOfferVersionFallback + +# This feature flag mirrors the one used for ios +# https://github.com/mozilla-mobile/firefox-ios/blob/main/nimbus-features/addressAutofillFeature.yaml +address-autofill-feature: + description: Enabling address autofill feature + owner: issozi@mozilla.com + hasExposure: false + variables: + status: + type: boolean + setPref: + branch: default + pref: extensions.formautofill.addresses.experiments.enabled + description: If true, we will allow user to use address autofill + +creditcards-autofill-enabled: + description: Credit card autofill is enabled in all regions + owner: issozi@mozilla.com + hasExposure: false + variables: + creditcardsSupported: + description: Enable credit card autofill in all regions + type: string + setPref: + branch: default + pref: extensions.formautofill.creditCards.supported + +shellService: + description: "Interface with OS, e.g., pinning and set default" + owner: desktop-integrations@mozilla.com + hasExposure: false + variables: + disablePin: + type: boolean + description: Disable pin to taskbar feature + disableStartMenuPin: + type: boolean + setPref: + branch: user + pref: browser.shell.disableStartMenuPin + description: Disable pin to start menu feature + setDefaultBrowserUserChoice: + type: boolean + setPref: + branch: user + pref: browser.shell.setDefaultBrowserUserChoice + description: Should it set as default browser + setDefaultBrowserUserChoiceRegRename: + type: boolean + setPref: + branch: user + pref: browser.shell.setDefaultBrowserUserChoice.regRename + description: When setting default via UserChoice, rename the underlying registry key to prevent kennel driver registry locking. + setDefaultPDFHandler: + type: boolean + fallbackPref: browser.shell.setDefaultPDFHandler + description: Should setting it as the default browser set it as the default PDF handler. + setDefaultPDFHandlerOnlyReplaceBrowsers: + type: boolean + fallbackPref: browser.shell.setDefaultPDFHandler.onlyReplaceBrowsers + description: >- + Should setting it as the default PDF handler only replace existing PDF + handlers that are browsers, and not other PDF handlers such as Acrobat + Reader or Nitro PDF. + setDefaultGuidanceNotifications: + type: boolean + fallbackPref: browser.shell.setDefaultGuidanceNotifications + description: Whether or not the user should see the guidance notifications when setting Firefox as their default browser. +upgradeDialog: + description: The dialog shown for major upgrades + owner: omc@mozilla.com + hasExposure: false + isEarlyStartup: true + variables: + enabled: + type: boolean + fallbackPref: browser.startup.upgradeDialog.enabled + description: Is the feature enabled? + +cfr: + description: "A Firefox Messaging System message for the cfr message channel" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +"moments-page": + description: "A Firefox Messaging System message for the moments-page message channel" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +infobar: + description: "A Firefox Messaging system message for the infobar message channel" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +spotlight: + description: "A Firefox Messaging System message for the spotlight message channel" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +# Before 117, this feature only included one variable, pdfJsTourProgress. So, +# the minimum version for messaging experiments using this feature ID is 117. +featureCallout: + description: "A Firefox Messaging System message for the Feature Callout message channel" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +fullPageTranslation: + description: This feature opens a popup panel to offer to translate a page. + owner: gtatum@mozilla.com + hasExposure: false + variables: + boolean: + description: Set to true to enable the translations feature + type: boolean + setPref: + branch: user + pref: browser.translations.enable + +fullPageTranslationAutomaticPopup: + description: Controls whether the popup automatically shows for translations. + owner: gtatum@mozilla.com + hasExposure: false + variables: + boolean: + description: Set to true to automatically popup, and false to only show the button. + type: boolean + setPref: + branch: user + pref: browser.translations.automaticallyPopup + +selectTranslation: + description: This feature enables the option to translate selected text from the context menu. + owner: enordin@mozilla.com + hasExposure: false + variables: + enabled: + description: Set to true to enable the select-translations feature + type: boolean + setPref: + branch: user + pref: browser.translations.select.enable + +pdfjs: + description: The Firefox pdf reader. + owner: pdfjs-team@mozilla.com + hasExposure: true + exposureDescription: >- + Exposure is sent each time a pdf is displayed. + variables: + enableAltText: + description: Set to true to enable alt text generation. + type: boolean + setPref: + branch: default + pref: pdfjs.enableAltText + enableUpdatedAddImage: + description: Set to true to enable updated add image with alt text flow. + type: boolean + setPref: + branch: default + pref: pdfjs.enableUpdatedAddImage + browserMlEnable: + description: Set to true to enable local inference engine + type: boolean + setPref: + branch: default + pref: browser.ml.enable + +# fxms-message-* placeholder feature ids +# +# https://docs.google.com/spreadsheets/d/119YbeKStLL0Fg2QkK-yN93mrtD1rlneGZGTl_jAwtyw/edit#gid=1903378504 +# has info on using these placeholder feature ids, as well as (very short) instructions on +# checking to see if we need more (which we do once per Nightly) and how to add them. +# +# Instructions for adding a new fxms-message-* placeholder feature id +# 1) clone an existing one here +# 2) update the YAML feature id to the next unused number +# 3) update the YAML description +# 4) add the new feature id to MESSAGING_EXPERIMENTS_DEFAULT_FEATURES list in MessagingExperimentConstants.sys.mjs +# 5) add the new feature id and the version it landed to the spreadsheet tab linked to above + +fxms-message-1: + description: "A Firefox Messaging System message" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +fxms-message-2: + description: "Firefox Messaging System message 2" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +fxms-message-3: + description: "Firefox Messaging System message 3" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +fxms-message-4: + description: "Firefox Messaging System message 4" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +fxms-message-5: + description: "Firefox Messaging System message 5" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +fxms-message-6: + description: "Firefox Messaging System message 6" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +fxms-message-7: + description: "Firefox Messaging System message 7" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +fxms-message-8: + description: "Firefox Messaging System message 8" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +fxms-message-9: + description: "Firefox Messaging System message 9" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +fxms-message-10: + description: "Firefox Messaging System message 10" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +fxms-message-11: + description: "Firefox Messaging System message 11" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +whatsNewPage: + description: "A Firefox Messaging System message for the What's new page channel" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + variables: + overrideUrl: + description: URL of the What's new page + type: string + setPref: + branch: user + pref: startup.homepage_override_url_nimbus + maxVersion: + description: Maximum Firefox update version + type: string + setPref: + branch: user + pref: startup.homepage_override_nimbus_maxVersion + minVersion: + description: Minimum Firefox update version + type: string + setPref: + branch: user + pref: startup.homepage_override_nimbus_minVersion + disableWNP: + description: >- + Block all What's New Pages. Used to compare no-WNP control branches to + WNP treatment branches. + type: boolean + setPref: + branch: user + pref: startup.homepage_override_nimbus_disable_wnp + +pbNewtab: + description: "A Firefox Messaging System message for the pbNewtab message channel" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched. + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +backgroundTaskMessage: + description: "A Firefox Messaging System message for the background task message channel" + owner: nalexander@mozilla.com + applications: + - firefox-desktop-background-task + hasExposure: true + exposureDescription: >- + Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched. + schema: + uri: "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/BackgroundTaskMessagingExperiment.schema.json" + variables: {} + +backgroundUpdateAutomaticRestart: + description: "Whether to automatically restart when the background update task could make more progress." + owner: nalexander@mozilla.com + applications: + - firefox-desktop-background-task + hasExposure: false + variables: + enabled: + type: boolean + fallbackPref: app.update.background.automaticRestartEnabled + description: >- + When true, make the background update task restart when the final update state is `READY_FOR_RESTART`. + Generally, this will finish applying a staged update, completing the update earlier than it + otherwise would have been completed. + +pictureinpicture: + description: Message for first time Picture-in-Picture users + owner: nbaumgardner@mozilla.com + hasExposure: true + exposureDescription: Exposure is sent when a user hovers over a video and Picture-in-Picture has not been used before + variables: + title: + type: string + description: The title to be used for the PiP toggle + message: + type: string + description: The message to be used in the PiP toggle + showIconOnly: + type: boolean + description: Whether to show the first time PiP toggle or show the PiP icon only + oldToggle: + type: boolean + description: Whether to show the control style (true) or variant style (false) for the first time PiP toggle + displayDuration: + type: int + description: Duration of PiP first time toggle display in days before switching to PiP icon toggle + +glean: + description: "The Glean data-control-plane feature within Firefox Desktop for controlling metric configuration" + owner: glean-team@mozilla.com + hasExposure: false + variables: + newtabPingEnabled: + type: "boolean" + fallbackPref: "browser.newtabpage.ping.enabled" + description: "Whether to submit the 'newtab' ping" + gleanMetricConfiguration: + type: json + description: | + A map of metric base-identifiers to booleans representing the state of the 'enabled' flag for that metric. + This variable is intended for interacting with the Glean data-control-plane via the Server Knobs functionality + to remotely configure metrics to be enabled or disabled. + +gleanInternalSdk: + description: "The Glean internal SDK feature intended only for internal Glean Team use" + owner: glean-team@mozilla.com + hasExposure: false + variables: + finalInactive: + type: "boolean" + description: "Enables FOG early shutdown pings when true" + setPref: + branch: user + pref: telemetry.glean.internal.finalInactive + gleanMetricConfiguration: + type: json + description: | + A map of metric base-identifiers to booleans representing the state of the 'enabled' flag for that metric. + This is not for public use! For data-control-plane use, please refer to the Glean documentation and use the + `gleanMetricConfiguration` found in the `glean` feature for this. + gleanMaxPingsPerMinute: + type: int + description: >- + Maximum number of pings that can be sent in a 60 second interval + setPref: + branch: user + pref: telemetry.glean.internal.maxPingsPerMinute + +browserLowMemoryPrefs: + description: Prefs which control the browser's behaviour under low memory. + owner: haftandilian@mozilla.com + hasExposure: false + variables: + lowMemoryResponseMask: + description: Control the response on macOS when under memory pressure. + type: int + setPref: + branch: default + pref: "browser.lowMemoryResponseMask" + lowMemoryResponseOnWarn: + description: Controls which macOS memory-pressure levels trigger the browser low memory response. + type: boolean + setPref: + branch: default + pref: "browser.lowMemoryResponseOnWarn" + tabsUnloadOnLowMemory: + description: Whether to unload tabs when available memory is running low. + type: boolean + setPref: + branch: default + pref: "browser.tabs.unloadOnLowMemory" + +scriptLoaderPrefs: + description: Prefs that control the script loader. + owner: npierron@mozilla.com + hasExposure: false + variables: + delazificationStrategy: + description: >- + Selects which parsing/delazification strategy should be used while + parsing scripts off-main-thread. See DelazificationOption in + CompileOptions.h for values. + type: int + setPref: + branch: default + pref: "dom.script_loader.delazification.strategy" + +echPrefs: + description: Prefs that control Encrypted Client Hello. + owner: djackson@mozilla.com + hasExposure: false + variables: + tlsEnabled: + description: Whether to enable ECH for connections using TLS + type: boolean + setPref: + branch: default + pref: "network.dns.echconfig.enabled" + h3Enabled: + description: Whether to enable ECH for connections using H3/QUIC + type: boolean + setPref: + branch: default + pref: "network.dns.http3_echconfig.enabled" + forceWaitHttpsRR: + description: Whether to force waiting for HTTPS DNS records, which ECH requires. + type: boolean + setPref: + branch: default + pref: "network.dns.force_waiting_https_rr" + insecureFallback: + description: Whether to fallback to non-ECH connections if all ECH RRs fail. + type: boolean + setPref: + branch: default + pref: "network.dns.echconfig.fallback_to_origin_when_all_failed" + tlsGreaseProb: + description: Probability of GREASEing a TLS connection with ECH (0-100). + type: int + setPref: + branch: default + pref: "security.tls.ech.grease_probability" + h3GreaseEnabled: + description: Whether to apply GREASE settings to H3/QUIC connections. + type: boolean + setPref: + branch: default + pref: "security.tls.ech.grease_http3" + disableGreaseOnFallback: + description: Whether to disable GREASE when retrying a connection. + type: boolean + setPref: + branch: default + pref: "security.tls.ech.disable_grease_on_fallback" + greasePaddingSize: + description: Assumed echConfig padding length for GREASE extensions (1-255). + type: int + setPref: + branch: default + pref: "security.tls.ech.grease_size" + +dohPrefs: + description: Prefs that control DNS over HTTPS. + owner: vgosu@mozilla.com + hasExposure: false + variables: + trrMode: + description: Has a value of 2 for TRR first, 3 for TRR only, 0 for off. + type: int + setPref: + branch: default + pref: "network.trr.mode" + trrUri: + description: The URL of the DNS over HTTPS endpoint + type: string + setPref: + branch: default + pref: "network.trr.uri" + dohMode: + description: Same as trrMode, but set by the DoHController module. + type: int + setPref: + branch: default + pref: "doh-rollout.mode" + dohUri: + description: Same as trrUri, but set by the DoHController module. + type: string + setPref: + branch: default + pref: "doh-rollout.uri" + enableFallbackWarningPage: + description: Whether DoH fallback warning page will be displayed when DoH doesn't work in TRR first mode. + type: boolean + setPref: + branch: default + pref: "network.trr.display_fallback_warning" + showFallbackCheckbox: + description: Whether the checkbox to enable the fallback warning page is displayed in the settings UI. + type: boolean + setPref: + branch: default + pref: "network.trr_ui.show_fallback_warning_option" + nativeHTTPSRecords: + description: Whether we can perform native DNS HTTPS lookups + type: boolean + setPref: + branch: default + pref: "network.dns.native_https_query" + +dooh: + description: "DNS over Oblivious HTTP" + owner: vgosu@mozilla.com + hasExposure: false + variables: + ohttpEnabled: + description: Whether to use Oblivious HTTP for the resolution + type: boolean + setPref: + branch: default + pref: "network.trr.use_ohttp" + ohttpRelayUri: + description: The URL of the Oblivious HTTP relay + type: string + setPref: + branch: default + pref: "network.trr.ohttp.relay_uri" + ohttpConfigUri: + description: The URL used to fetch the configuration of the Oblivious HTTP gateway + type: string + setPref: + branch: default + pref: "network.trr.ohttp.config_uri" + ohttpUri: + description: The URL of the Oblivious DNS over HTTPS target resource + type: string + setPref: + branch: default + pref: "network.trr.ohttp.uri" + +networking: + description: "Firefox Networking (Necko)" + owner: vgosu@mozilla.com + hasExposure: false + variables: + ehPreloadEnabled: + description: Whether Early Hints preload is enabled + type: boolean + setPref: + branch: default + pref: "network.early-hints.enabled" + ehPreconnectEnabled: + description: Whether Early Hints preconnect is enabled + type: boolean + setPref: + branch: default + pref: "network.early-hints.preconnect.enabled" + dnsMaxPriorityThreads: + description: The maximum number of high priority DNS threads that can be created. + type: int + setPref: + branch: default + pref: "network.dns.max_high_priority_threads" + dnsMaxAnyPriorityThreads: + description: The maximum number of DNS threads that can be created to handle any priority DNS requests. + type: int + setPref: + branch: default + pref: "network.dns.max_any_priority_threads" + preconnect: + description: Whether the rel=preconnect feature is enabled + type: boolean + setPref: + branch: default + pref: "network.preconnect" + networkPredictor: + description: Whether the Necko predictor is enabled + type: boolean + setPref: + branch: default + pref: "network.predictor.enabled" + http3CCalgorithm: + description: The congestion control algorithm with which to configure neqo. 0 for NewReno, 1 for Cubic + type: int + setPref: + branch: default + pref: "network.http.http3.cc_algorithm" + sendOnDataFinished: + description: Whether we can send OnDataFinished in the content process + type: boolean + setPref: + branch: default + pref: "network.send_OnDataFinished" + sendOnDataFinshedFromInputStreamPump: + description: Whether we can send OnDataFinished to the content process from InputStreamPump + type: boolean + setPref: + branch: default + pref: "network.send_OnDataFinished.nsInputStreamPump" + sendOnDataFinishedToHtml5parser: + description: Whether we can send OnDataFinished to the html5parser in content process + type: boolean + setPref: + branch: default + pref: "network.send_OnDataFinished.html5parser" + sendOnDataFinishedToCssLoader: + description: Whether we can send OnDataFinished to the cssLoader in content process + type: boolean + setPref: + branch: default + pref: "network.send_OnDataFinished.cssLoader" + enableOffMainThreadStreamDecompression: + description: Whether to enable decompression of network streams off-main-thread + type: boolean + setPref: + branch: default + pref: "network.decompression_off_mainthread2" + offMainThreadStreamDecompressionThreshold: + description: Minimum content length for off-main-thread decompression + type: int + setPref: + branch: default + pref: "network.decompression_off_mainthread_min_size" + httpMaxConnections: + description: The maximum number of http connections. + type: int + setPref: + branch: default + pref: "network.http.max-connections" + httpMaxPersistentConnectionsPerServer: + description: The maximum number of persistent connections to a server + type: int + setPref: + branch: default + pref: "network.http.max-persistent-connections-per-server" + speculativeConnectionLimit: + description: The maximum number of half-open sockets allowed for speculative connections + type: int + setPref: + branch: default + pref: "network.http.speculative-parallel-limit" + chipsEnabled: + description: Whether CHIPS is enabled or not + type: boolean + setPref: + branch: default + pref: "network.cookie.CHIPS.enabled" + chipsMigrationTarget: + description: What CHIPS migration count target the browser should reach. + type: int + setPref: + branch: default + pref: "network.cookie.CHIPS.migrateDatabaseTarget" + chipsPartitionLimitEnabled: + description: Whether we enforce CHIPS partition limit + type: boolean + setPref: + branch: default + pref: "network.cookie.chips.partitionLimitEnabled" + chipsPartitionLimitDryRun: + description: Whether we actually perform purging/rejection, used to report telemetry without webcompat issues + type: boolean + setPref: + branch: default + pref: "network.cookie.chips.partitionLimitDryRun" + chipsPartitionLimitByteCapacity: + description: The actual value of the CHIPS partition limit in bytes + type: boolean + setPref: + branch: default + pref: "network.cookie.chips.partitionLimitByteCapacity" + +disableHttp3: + description: "Whether HTTP/3 is disabled" + owner: kershaw@mozilla.com + hasExposure: false + variables: + withThirdPartyRoots: + description: If third party roots are detected, disable HTTP/3 + type: boolean + setPref: + branch: default + pref: "network.http.http3.disable_when_third_party_roots_found" + + +networkPrioritization: + description: "Network request prioritization" + owner: vgosu@mozilla.com + hasExposure: false + variables: + priorityHeader: + description: Whether to set the Priority header on each request. + type: boolean + setPref: + branch: default + pref: "network.http.priority_header.enabled" + fetchPriority: + description: Whether fetch priority is enabled + type: boolean + setPref: + branch: default + pref: "network.fetchpriority.enabled" + h3FetchPriority: + description: Whether to send HTTP3 priority frames + type: boolean + setPref: + branch: default + pref: "network.http.http3.priority" + sendNoRFC7540Setting: + description: Whether to send the SETTINGS_NO_RFC7540_PRIORITIES for the HTTP2 session. + type: boolean + setPref: + branch: default + pref: "network.http.http2.send_NO_RFC7540_PRI" + h2deps: + description: Whether RFC7540 priorities / stream dependencies are enabled + type: boolean + setPref: + branch: default + pref: "network.http.http2.enabled.deps" + h3BackgroundTabDeprioritization: + description: Lowers the priority when the tab is in the background. Potential privacy concerns. + type: boolean + setPref: + branch: default + pref: "network.http.http3.send_background_tabs_deprioritization" + documentPriorityIncremental: + description: Sets the incremental flag on the Priority header for document requests + type: boolean + setPref: + branch: default + pref: "dom.document_priority.incremental" + imagePriorityIncremental: + description: Sets the incremental flag on the Priority header for image requests + type: boolean + setPref: + branch: default + pref: "image.priority.incremental" + imageAdjustLayoutPriority: + description: Whether the network request priority should be adjusted according the layout and view frame position of each particular image. + type: boolean + setPref: + branch: default + pref: "image.layout_network_priority" + adjustLinkPreloadScriptLow: + description: Priority adjustment low for link-preload-script + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.link-preload-script.low" + adjustLinkPreloadScriptHigh: + description: Priority adjustment high for link-preload-script + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.link-preload-script.high" + adjustLinkPreloadScriptAuto: + description: Priority adjustment auto for link-preload-script + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.link-preload-script.auto" + adjustModuleScriptLow: + description: Priority adjustment low for module-script + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.module-script.low" + adjustModuleScriptHigh: + description: Priority adjustment high for module-script + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.module-script.high" + adjustModuleScriptAuto: + description: Priority adjustment auto for module-script + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.module-script.auto" + adjustAsyncOrDeferScriptLow: + description: Priority adjustment low for async-or-defer-script + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.async-or-defer-script.low" + adjustAsyncOrDeferScriptHigh: + description: Priority adjustment high for async-or-defer-script + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.async-or-defer-script.high" + adjustAsyncOrDeferScriptAuto: + description: Priority adjustment auto for async-or-defer-script + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.async-or-defer-script.auto" + adjustScriptInHeadLow: + description: Priority adjustment low for script-in-head + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.script-in-head.low" + adjustScriptInHeadHigh: + description: Priority adjustment high for script-in-head + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.script-in-head.high" + adjustScriptInHeadAuto: + description: Priority adjustment auto for script-in-head + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.script-in-head.auto" + adjustOtherScriptLow: + description: Priority adjustment low for other-script + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.other-script.low" + adjustOtherScriptHigh: + description: Priority adjustment high for other-script + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.other-script.high" + adjustOtherScriptAuto: + description: Priority adjustment auto for other-script + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.other-script.auto" + adjustLinkPreloadFontLow: + description: Priority adjustment low for link-preload-font + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.link-preload-font.low" + adjustLinkPreloadFontHigh: + description: Priority adjustment high for link-preload-font + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.link-preload-font.high" + adjustLinkPreloadFontAuto: + description: Priority adjustment auto for link-preload-font + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.link-preload-font.auto" + adjustLinkPreloadFetchLow: + description: Priority adjustment low for link-preload-fetch + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.link-preload-fetch.low" + adjustLinkPreloadFetchHigh: + description: Priority adjustment high for link-preload-fetch + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.link-preload-fetch.high" + adjustLinkPreloadFetchAuto: + description: Priority adjustment auto for link-preload-fetch + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.link-preload-fetch.auto" + adjustDeferredStyleLow: + description: Priority adjustment low for deferred-style + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.deferred-style.low" + adjustDeferredStyleHigh: + description: Priority adjustment high for deferred-style + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.deferred-style.high" + adjustDeferredStyleAuto: + description: Priority adjustment auto for deferred-style + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.deferred-style.auto" + adjustLinkPreloadStyleLow: + description: Priority adjustment low for link-preload-style + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.link-preload-style.low" + adjustLinkPreloadStyleHigh: + description: Priority adjustment high for link-preload-style + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.link-preload-style.high" + adjustLinkPreloadStyleAuto: + description: Priority adjustment auto for link-preload-style + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.link-preload-style.auto" + adjustNonDeferredStyleLow: + description: Priority adjustment low for non-deferred-style + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.non-deferred-style.low" + adjustNonDeferredStyleHigh: + description: Priority adjustment high for non-deferred-style + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.non-deferred-style.high" + adjustNonDeferredStyleAuto: + description: Priority adjustment auto for non-deferred-style + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.non-deferred-style.auto" + adjustGlobalFetchApiLow: + description: Priority adjustment low for global-fetch-api + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.global-fetch-api.low" + adjustGlobalFetchApiHigh: + description: Priority adjustment high for global-fetch-api + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.global-fetch-api.high" + adjustGlobalFetchApiAuto: + description: Priority adjustment auto for global-fetch-api + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.global-fetch-api.auto" + adjustImagesLow: + description: Priority adjustment low for images + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.images.low" + adjustImagesHigh: + description: Priority adjustment high for images + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.images.high" + adjustImagesAuto: + description: Priority adjustment auto for images + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.images.auto" + lowerTrackersPriority: + description: Whether to lower priority of resources on the tracking protection list + type: boolean + setPref: + branch: default + pref: "privacy.trackingprotection.lower_network_priority" + enableHttpTailing: + description: Whether certain requests, mainly trackers, are put to the "tail", behind other requests + type: boolean + setPref: + branch: default + pref: "network.http.tailing.enabled" + httpTailingUrgency: + description: Priority urgency of tailed request + type: int + setPref: + branch: default + pref: "network.http.tailing.urgency" + httpTailingDelayQuantum: + description: When the page load has not yet reached DOMContentLoaded point, tail requestes are delayed by (non-tailed requests count + 1) * delay-quantum milliseconds. + type: int + setPref: + branch: default + pref: "network.http.tailing.delay-quantum" + httpTailingDelayQuantumAfterDCL: + description: After the page load reached DOMContentLoaded point, tail requestes are delayed by (non-tailed requests count + 1) * delay-quantum-after-domcontentloaded milliseconds. + type: int + setPref: + branch: default + pref: "network.http.tailing.delay-quantum-after-domcontentloaded" + httpTailingMaxDelay: + description: Upper limit for the calculated delay, prevents long standing and comet-like requests + type: int + setPref: + branch: default + pref: "network.http.tailing.delay-max" + httpTailingTotalMaxDelay: + description: Total limit we delay tailed requests since page load start + type: int + setPref: + branch: default + pref: "network.http.tailing.total-max" + +networkingAuth: + description: "Firefox Networking (Necko) Authentication" + owner: vgosu@mozilla.com + hasExposure: false + variables: + redirectForAuthRetriesEnabled: + description: Whether to enable redirects for auth retries + type: boolean + setPref: + branch: default + pref: "network.auth.use_redirect_for_retries" + +networkingDenyIpAddrAny: + description: "Firefox Networking (Necko) Deny IP Address Any" + owner: vgosu@mozilla.com + hasExposure: false + variables: + denyIpAddrAny: + description: Whether to deny empty (0.0.0.0) IP addresses + type: boolean + setPref: + branch: default + pref: "network.socket.ip_addr_any.disabled" + +pingsender: + description: "In-product usage of the pingsender telemetry reporter." + owner: nalexander@mozilla.com + hasExposure: false + variables: + backgroundTaskEnabled: + type: "boolean" + fallbackPref: "toolkit.telemetry.shutdownPingSender.backgroundtask.enabled" + description: "Whether to use the `pingsender` background task to send shutdown telemetry" + +dapTelemetry: + description: DAP Telemetry + owner: simon@mozilla.com + hasExposure: false + variables: + enabled: + type: boolean + description: Whether to automatically send DAP measurements. + task1Enabled: + type: boolean + description: Whether to send fake measurements for task 1. + task1TaskId: + type: string + description: The task ID to use for task 1 measurements. + visitCountingEnabled: + type: boolean + description: Whether to count visits to the provided list of URLs. + visitCountingExperimentList: + type: json + description: A list of experiments with URLs for which we want to count visits. + +dapAggregators: + description: Aggregator server configuration to use for submitting DAP reports. + owner: tcampbell@mozilla.com + hasExposure: false + variables: + leader_url: + description: The URL of the DAP Leader server where reports are submitted. + type: string + setPref: + branch: default + pref: "toolkit.telemetry.dap.leader.url" + leader_hpke: + description: The base64-encode HPKE key to encrypt leader shares with. + type: string + setPref: + branch: default + pref: "toolkit.telemetry.dap.leader.hpke" + helper_url: + description: The URL of the DAP Helper server. + type: string + setPref: + branch: default + pref: "toolkit.telemetry.dap.helper.url" + helper_hpke: + description: The base64-encode HPKE key to encrypt helper shares with. + type: string + setPref: + branch: default + pref: "toolkit.telemetry.dap.helper.hpke" + +etpLevel2PBMPref: + description: The pref that controls the ETP level 2 list in the private browsing mode + owner: tihuang@mozilla.com + hasExposure: false + variables: + enabled: + description: Whether to enable ETP level 2 list in the private browsing mode. + type: boolean + setPref: + branch: default + pref: "privacy.annotate_channels.strict_list.pbmode.enabled" + +etpStrictFeatures: + description: Prefs to control the strict ETP features + owner: tihuang@mozilla.com + hasExposure: false + variables: + features: + description: The list of strict ETP features to enable in ETP strict mode. + type: string + setPref: + branch: default + pref: "browser.contentblocking.features.strict" + +thirdPartyCookieBlocking: + description: Prefs to control third-party cookie blocking + owner: tihuang@mozilla.com + hasExposure: false + variables: + enabled: + description: Whether to enable third-party cookie blocking + type: boolean + setPref: + branch: default + pref: "network.cookie.cookieBehavior.optInPartitioning" + enabledPBM: + description: Whether to enable third-party cookie blocking in private browsing mode + type: boolean + setPref: + branch: default + pref: "network.cookie.cookieBehavior.optInPartitioning.pbmode" + +thirdPartyTrackerCookieBlocking: + description: Prefs to control third-party tracker cookie blocking + owner: tihuang@mozilla.com + hasExposure: false + variables: + enabled: + description: Whether to enable third-party tracker cookie blocking. + type: boolean + setPref: + branch: default + pref: "network.cookie.cookieBehavior.trackerCookieBlocking" + +fxaButtonVisibility: + description: Prefs to control the visibility of the Firefox Accounts toolbar button when not signed in. + owner: mconley@mozilla.com + hasExposure: false + variables: + boolean: + description: True if the Firefox Accounts toolbar button should be visible when not signed in. + type: boolean + setPref: + branch: user + pref: identity.fxaccounts.toolbar.defaultVisible + pxiToolbarEnabled: + description: >- + True if we're enabling the PXI dropdown menu for the FxA toolbar button instead of + taking the user straight to login + type: boolean + setPref: + branch: user + pref: identity.fxaccounts.toolbar.pxiToolbarEnabled + monitorEnabled: + description: >- + Toggle the Monitor CTA + type: boolean + setPref: + branch: user + pref: identity.fxaccounts.toolbar.pxiToolbarEnabled.monitorEnabled + relayEnabled: + description: >- + Toggle the Relay CTA + type: boolean + setPref: + branch: user + pref: identity.fxaccounts.toolbar.pxiToolbarEnabled.relayEnabled + vpnEnabled: + description: >- + Toggle the VPN CTA + type: boolean + setPref: + branch: user + pref: identity.fxaccounts.toolbar.pxiToolbarEnabled.vpnEnabled + +syncDecouplingUpdates: + description: Prefs to control the updated Mozilla account panel flow for users without sync enabled. + owner: skhamis@mozilla.com + hasExposure: false + variables: + syncSetup: + description: True if we should show the user the updated sync set-up UI + type: boolean + fallbackPref: identity.fxaccounts.toolbar.syncSetup.enabled + +fxaClientAssociation: + description: Prefs to control the client association ping. + owner: mconley@mozilla.com + hasExposure: false + variables: + pingEnabled: + description: >- + True if the client association ping should be sent. + type: boolean + setPref: + branch: user + pref: identity.fxaccounts.telemetry.clientAssociationPing.enabled + +fxaAppMenuItem: + description: >- + Prefs to control the appearance and copy of the FxA sign-in button in the + AppMenu when signed out. + owner: mconley@mozilla.com + hasExposure: true + exposureDescription: >- + Exposure is recorded when the user is enrolled in an experiment using this + feature and the AppMenu on Firefox Desktop is opened. + variables: + ctaCopyVariant: + description: >- + One of the following values: + - control + - sync-devices + - backup-data + - backup-sync + - mobile + type: string + +fxaAvatarMenuItem: + description: >- + Prefs to control the appearance and copy of the FxA sign-in button in the + FxA avatar menu when signed out. + owner: mconley@mozilla.com + hasExposure: true + exposureDescription: >- + Exposure is recorded when the user is enrolled in an experiment using this + feature and the FxA avatar menu on Firefox Desktop is opened. + variables: + ctaCopyVariant: + description: >- + One of the following values: + - control + - sync-devices + - backup-data + - backup-sync + - mobile + type: string + +legacyHeartbeat: + description: Normandy Heartbeat exposed to Nimbus + owner: beth@mozilla.com + hasExposure: false + schema: + uri: "resource://normandy/schemas/LegacyHeartbeat.schema.json" + path: "toolkit/components/normandy/schemas/LegacyHeartbeat.schema.json" + variables: + survey: + type: json + description: The Heartbeat survey parameters. + +queryStripping: + description: Query parameter stripping anti-tracking feature. + owner: pbz@mozilla.com + hasExposure: false + variables: + enabledNormalBrowsing: + type: boolean + setPref: + branch: default + pref: privacy.query_stripping.enabled + description: Enables / disables URL query string stripping in normal browsing mode. + enabledPrivateBrowsing: + type: boolean + setPref: + branch: default + pref: privacy.query_stripping.enabled.pbmode + description: Enables / disables URL query string stripping in private browsing mode. + allowList: + type: string + setPref: + branch: default + pref: privacy.query_stripping.allow_list + description: >- + List of sites exempt from query stripping. This list will be merged with + records coming from RemoteSettings. + stripList: + type: string + setPref: + branch: default + pref: privacy.query_stripping.strip_list + description: >- + List of query params to be stripped from URIs. This list will be merged + with records coming from RemoteSettings. + +fontvisibility: + description: Control Font Visibility in PBM + owner: tom@mozilla.com + hasExposure: false + variables: + enabledETP: + type: int + setPref: + branch: default + pref: layout.css.font-visibility.trackingprotection + description: Set the Font Visibility level when Enhanced Tracking Protection is enabled + enabledStandard: + type: int + setPref: + branch: default + pref: layout.css.font-visibility.standard + description: Set the Font Visibility level for normal browsing + enabledPBM: + type: int + setPref: + branch: default + pref: layout.css.font-visibility.private + description: Set the Font Visibility level for private browsing (will override ETP) + +fingerprintingProtection: + description: Control Fingerprinting Protection + owner: tihuang@mozilla.com + hasExposure: false + variables: + enabledNormal: + type: boolean + setPref: + branch: default + pref: privacy.fingerprintingProtection + description: Enables / disables fingerprinting protection in normal browsing mode. + enabledPrivate: + type: boolean + setPref: + branch: default + pref: privacy.fingerprintingProtection.pbmode + description: Enables / disables fingerprinting protection in private browsing mode. + overrides: + type: string + setPref: + branch: default + pref: privacy.fingerprintingProtection.overrides + description: >- + The protection overrides to add or remove fingerprinting protection + targets. Please check RFPTargets.inc for all supported targets. + fdlibm_math: + type: boolean + setPref: + branch: default + pref: javascript.options.use_fdlibm_for_sin_cos_tan + description: >- + Uses a different math backend for Math.sin/cos/tan in JavaScript that exposes less entropy + +userCharacteristics: + description: Control user characteristic data collection + owner: tihuang@mozilla.com + hasExposure: false + variables: + currentVersion: + type: int + setPref: + branch: user + pref: toolkit.telemetry.user_characteristics_ping.current_version + description: The current collection version of the user characteristics. + +migrationWizard: + description: Prefs to control the Migration Wizard UI. + owner: mconley@mozilla.com + hasExposure: false + variables: + showImportAll: + description: True if the "Variant 2" of the Migration Wizard browser / profile selection UI should be used. This is only meaningful in the new Migration Wizard. + type: boolean + setPref: + branch: user + pref: browser.migrate.content-modal.import-all.enabled + showPreferencesEntrypoint: + description: True if an entrypoint to the migration wizard should be visible in about:preferences. + type: boolean + setPref: + branch: user + pref: browser.migrate.preferences-entrypoint.enabled + aboutWelcomeBehavior: + description: >- + When migration is kicked off from about:welcome, there are + a few different behaviors that we want to test, controlled + by a preference that is instrumented for Nimbus. The pref + has the following possible states: + + "autoclose": + The user will be directed to the migration wizard in + about:preferences, but once the wizard is dismissed, + the tab will close. + + "embedded": + The migration wizard is embedded in about:welcome. + + "standalone": + The migration wizard will open in a new top-level content + window. + + "default" / other + The user will be directed to the migration wizard in + about:preferences. The tab will not close once the + user closes the wizard. + type: string + setPref: + branch: user + pref: browser.migrate.content-modal.about-welcome-behavior + migrateExtensions: + description: True if importing extensions is enabled. + type: boolean + setPref: + branch: user + pref: browser.migrate.chrome.extensions.enabled + chromeCanRequestPermissions: + description: >- + True if Chrome-based browsers can request read permissions on + platforms where the browser is restricted from reading the contents + of a Chrome-based browser's user data directory. In practice, this + is only relevant to the Linux platform when the browser is installed + as a Snap package. + type: boolean + setPref: + branch: user + pref: browser.migrate.chrome.get_permissions.enabled + +mixedContentUpgrading: + description: Prefs to control whether we upgrade mixed passive content (images, audio, video) from http to https + owner: fbraun@mozilla.com + hasExposure: false + variables: + enabled: + description: True if the mixed content upgrading pref is enabled + type: boolean + setPref: + branch: default + pref: security.mixed_content.upgrade_display_content + image: + description: True if the mixed content upgrading is enabled for images + type: boolean + setPref: + branch: default + pref: security.mixed_content.upgrade_display_content.image + audio: + description: True if the mixed content upgrading is enabled for audio + type: boolean + setPref: + branch: default + pref: security.mixed_content.upgrade_display_content.audio + video: + description: True if the mixed content upgrading is enabled for videos + type: boolean + setPref: + branch: default + pref: security.mixed_content.upgrade_display_content.video + +gc: + description: Prefs that control gc heuristics. + owner: dpalmeiro@mozilla.com + hasExposure: false + variables: + max_nursery_size: + description: Set the maximum size of the GC nursery, in kb. + type: int + setPref: + branch: user + pref: "javascript.options.mem.nursery.max_kb" + min_nursery_size: + description: Set the minimum size of the GC nursery, in kb. + type: int + setPref: + branch: user + pref: "javascript.options.mem.nursery.min_kb" + gc_allocation_threshold_mb: + description: Lower limit for collecting a zone, in MB. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_allocation_threshold_mb" + gc_balanced_heap_limits: + description: Whether balanced heap limits are enabled. + type: boolean + setPref: + branch: user + pref: "javascript.options.mem.gc_balanced_heap_limits" + gc_compacting: + description: Whether compacting GC is enabled. + type: boolean + setPref: + branch: user + pref: "javascript.options.mem.gc_compacting" + gc_generational: + description: Whether generational GC is enabled. + type: boolean + setPref: + branch: user + pref: "javascript.options.mem.gc_generational" + gc_heap_growth_factor: + description: Heap growth parameter for balanced heap limit calculation. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_heap_growth_factor" + gc_helper_thread_ratio: + description: Number of threads to use for parallel GC work. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_helper_thread_ratio" + gc_high_frequency_large_heap_growth: + description: Heap growth factor for large heaps in the high-frequency GC state. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_high_frequency_large_heap_growth" + gc_high_frequency_small_heap_growth: + description: Heap growth factor for small heaps in the high-frequency GC state. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_high_frequency_small_heap_growth" + gc_high_frequency_time_limit_ms: + description: GCs less than this far apart in milliseconds will be + considered high-frequency GCs. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_high_frequency_time_limit_ms" + gc_incremental: + description: Whether incremental GC is enabled. If not, GC will always run to completion. + type: boolean + setPref: + branch: user + pref: "javascript.options.mem.gc_incremental" + incremental_weakmap: + description: Enable incremental weakmap marking. + type: boolean + setPref: + branch: user + pref: "javascript.options.mem.incremental_weakmap" + gc_incremental_slice_ms: + description: Max milliseconds to spend in an incremental GC slice. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_incremental_slice_ms" + gc_large_heap_incremental_limit: + description: Limit of how far over the incremental trigger threshold we allow the + heap to grow before finishing a collection non-incrementally, for large heaps. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_large_heap_incremental_limit" + gc_large_heap_size_min_mb: + description: Lower limit for classifying a heap as large, in MB. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_large_heap_size_min_mb" + gc_low_frequency_heap_growth: + description: Heap growth factor for low frequency GCs. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_low_frequency_heap_growth" + gc_malloc_threshold_base_mb: + description: Set the malloc threshold base value in MB. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_malloc_threshold_base_mb" + gc_max_empty_chunk_count: + description: Do not keep more than this many unused chunks in the free chunk pool. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_max_empty_chunk_count" + gc_max_helper_threads: + description: The maximum number of background threads to use for parallel GC work. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_max_helper_threads" + gc_min_empty_chunk_count: + description: We try to keep at least this many unused chunks in the free chunk + pool at all times, even after a shrinking GC. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_min_empty_chunk_count" + gc_parallel_marking: + description: Enable parallel marking. + type: boolean + setPref: + branch: user + pref: "javascript.options.mem.gc_parallel_marking" + gc_parallel_marking_threshold_mb: + description: The heap size above which to use parallel marking. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_parallel_marking_threshold_mb" + gc_max_parallel_marking_threads: + description: The maximum number of threads to use for parallel marking, if enabled. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_max_parallel_marking_threads" + gc_per_zone: + description: Whether per-zone GC is enabled. If not, all zones are collected every time. + type: boolean + setPref: + branch: user + pref: "javascript.options.mem.gc_per_zone" + gc_small_heap_incremental_limit: + description: Limit of how far over the incremental trigger threshold we allow the heap + to grow before finishing a collection non-incrementally, for small heaps. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_small_heap_incremental_limit" + gc_small_heap_size_max_mb: + description: Upper limit for classifying a heap as small, in MB. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_small_heap_size_max_mb" + gc_urgent_threshold_mb: + description: Set the urgent threshold, in MB. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_urgent_threshold_mb" + nursery_eager_collection_threshold_kb: + description: Set the eager collection threshold, in kb, for the nursery. + type: int + setPref: + branch: user + pref: "javascript.options.mem.nursery_eager_collection_threshold_kb" + nursery_eager_collection_threshold_percent: + description: Set the eager collection percent threshold for the nursery. + type: int + setPref: + branch: user + pref: "javascript.options.mem.nursery_eager_collection_threshold_percent" + nursery_eager_collection_timeout_ms: + description: Set the eager collection timeout, in ms, for the nursery. + type: int + setPref: + branch: user + pref: "javascript.options.mem.nursery_eager_collection_timeout_ms" + +jsParallelParsing: + description: Pref to toggle JS parallel parsing. + owner: dpalmeiro@mozilla.com, nbp@mozilla.com + hasExposure: false + variables: + enabled: + description: True to enable parallel parsing. + type: boolean + setPref: + branch: user + pref: "javascript.options.parallel_parsing" + +jitThresholds: + description: Prefs that control jit tier thresholds. + owner: dpalmeiro@mozilla.com, jdemooij@mozilla.com + hasExposure: false + variables: + blinterp_threshold: + description: Set the threshold to enable blinterp compilation. + type: int + setPref: + branch: user + pref: "javascript.options.blinterp.threshold" + baseline_threshold: + description: Set the threshold to enable baseline compilation. + type: int + setPref: + branch: user + pref: "javascript.options.baselinejit.threshold" + ion_threshold: + description: Set the threshold to enable ion compilation. + type: int + setPref: + branch: user + pref: "javascript.options.ion.threshold" + ion_bailout_threshold: + description: Set the ion frequent bailout threshold. + type: int + setPref: + branch: user + pref: "javascript.options.ion.frequent_bailout_threshold" + ion_offthread_compilation: + description: True to enable offthread ion compilations. + type: boolean + setPref: + branch: user + pref: "javascript.options.ion.offthread_compilation" + inlining_max_length: + description: Set the max bytecode length considered for inlining. + type: int + setPref: + branch: user + pref: "javascript.options.inlining_bytecode_max_length" + +jitHintsCache: + description: Pref to toggle the JIT hints cache. + owner: dpalmeiro@mozilla.com + hasExposure: false + variables: + enabled: + description: True to enable the hints cache. + type: boolean + setPref: + branch: user + pref: "javascript.options.jithints" + +raceCacheWithNetwork: + description: Prefs to toggle the race cache with network. + owner: dpalmeiro@mozilla.com, acreskey@mozilla.com + hasExposure: false + variables: + enabled: + description: True to enable the rcwn feature. + type: boolean + setPref: + branch: default + pref: "network.http.rcwn.enabled" + +shopping2023: + description: Prefs to control the 2023 shopping experiment. + owner: jhirsch@mozilla.com + hasExposure: true + exposureDescription: >- + The timing of the exposure event depends on the experiment, but generally + the event is recorded when the user first encounters onboarding UI for + the shopping feature. + variables: + enabled: + description: True if the experience is enabled (experimental treatment group) + type: boolean + fallbackPref: browser.shopping.experience2023.enabled + control: + description: True if the experiment is enabled but experience is disabled (experimental control group) + type: boolean + fallbackPref: browser.shopping.experience2023.control + adsEnabled: + description: True if showing recommended products is enabled + type: boolean + setPref: + branch: default + pref: browser.shopping.experience2023.ads.enabled + adsExposure: + description: True if we want to record ad inventory for opted-in users, even if ads are disabled + type: boolean + setPref: + branch: default + pref: browser.shopping.experience2023.ads.exposure + surveyEnabled: + description: True if showing survey is enabled + type: boolean + fallbackPref: browser.shopping.experience2023.survey.enabled + autoOpenEnabled: + description: True if auto-open behavior for the sidebar is enabled + type: boolean + setPref: + branch: default + pref: browser.shopping.experience2023.autoOpen.enabled + +shoppingOHTTP: + description: Prefs to control the OHTTP URLs used for shopping. + owner: gijs@mozilla.com + hasExposure: false + variables: + ohttpRelayURL: + description: What OHTTP relay URL to use + type: string + setPref: + branch: default + pref: toolkit.shopping.ohttpRelayURL + ohttpConfigURL: + description: URL for the OHTTP config to use + type: string + setPref: + branch: default + pref: toolkit.shopping.ohttpConfigURL + +opaqueResponseBlocking: + description: Prefs to enable Opaque Response Blocking + owner: farre@mozilla.com + hasExposure: true + exposureDescription: Exposure is sent when a response is blocked + variables: + enabled: + description: Whether ORB is enabled + type: boolean + setPref: + branch: user + pref: "browser.opaqueResponseBlocking" + javascriptValidator: + description: Whether JavaScript validation for ORB is enabled + type: boolean + setPref: + branch: user + pref: "browser.opaqueResponseBlocking.javascriptValidator" + filterFetchResponse: + description: Whether filtering of internal responses in the parent ORB is enabled + type: int + setPref: + branch: user + pref: "browser.opaqueResponseBlocking.filterFetchResponse" + mediaExceptionsStrategy: + description: >- + If we partially or wholly allow audio and video MIME types in conflict with spec. + type: int + setPref: + branch: user + pref: "browser.opaqueResponseBlocking.mediaExceptionsStrategy" + +updatePrompt: + description: Prefs to control content and behavior of update notifications + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + Exposure is sent at most once per browsing session when an update + notification prompt is displayed. + variables: + showReleaseNotesLink: + type: boolean + description: >- + If true, the "Learn More" link will be shown in the update prompt. If + false or omitted, the link will only be shown for supported locales. + releaseNotesURL: + type: string + fallbackPref: app.releaseNotesURL.prompt + description: >- + Template for the URL opened when the user clicks the "Learn More" link + in the update prompt. If an empty string, the link will not be shown. + +powerSaver: + description: Prefs to control power saving behaviors + owner: florian@mozilla.com + hasExposure: false + variables: + reduceFrameRates: + type: int + setPref: + branch: user + pref: "gfx.display.max-frame-rate" + description: >- + Limit the number of frames displayed per second. + If omitted, the refresh rate of the screen will be used. + mediaAutoPlay: + type: int + setPref: + branch: user + pref: "media.autoplay.default" + description: >- + Control if media is allowed to auto-play, with and without sound. + backgroundTimerMinTime: + type: int + setPref: + branch: user + pref: "dom.min_background_timeout_value" + description: >- + Limit how frequently timers are allowed to run in background tabs. + backgroundTimerRegenerationRate: + type: int + setPref: + branch: user + pref: "dom.timeout.background_budget_regeneration_rate" + description: >- + Limit how quickly the background tab timer budget regenerates. + +backgroundUpdate: + description: Prefs to control aspects of the background update process. + owner: install-update@mozilla.com + hasExposure: true + exposureDescription: >- + The exposure event is sent when scheduling the background task and both the + feature is enabled and the service registry key (Mozilla Maintenance + Service) is *not* available for this installation. That is the first time + the feature can impact Firefox behaviour and the user experience. + variables: + enableUpdatesForUnelevatedInstallations: + description: >- + Allow the background update process to download and apply updates when + the Mozilla Maintenance Service is unavailable but the installation + directory can be written. + type: boolean + setPref: + branch: user + pref: app.update.background.allowUpdatesForUnelevatedInstallations + +bookmarks: + description: Prefs to control aspects of the bookmarks system. + owner: omc@mozilla.com + hasExposure: false + variables: + enableBookmarksToolbar: + type: string + setPref: + branch: user + pref: browser.toolbars.bookmarks.visibility + description: If the bookmarks toolbar should never, always, or only show on newtab. + showOtherBookmarks: + type: boolean + setPref: + branch: user + pref: browser.toolbars.bookmarks.showOtherBookmarks + description: Display state of the "Other Bookmarks" toolbar button. + +cookieBannerHandling: + description: Automatically handle cookie banners on the user's behalf. + owner: pbz@mozilla.com + hasExposure: false + variables: + modeNormalBrowsing: + type: int + setPref: + branch: default + pref: cookiebanners.service.mode + description: >- + Controls the cookie banner handling mode in normal browsing. + Values: 0 - disabled, 1 - reject all, 2 - reject all with accept all fallback. + modePrivateBrowsing: + type: int + setPref: + branch: default + pref: cookiebanners.service.mode.privateBrowsing + description: >- + Controls the cookie banner handling mode in private browsing. + Values: 0 - disabled, 1 - reject all, 2 - reject all with accept all fallback. + enableGlobalRules: + type: boolean + setPref: + branch: default + pref: cookiebanners.service.enableGlobalRules + description: >- + Enables use of global CookieBannerRules, which apply to all sites. + This enables handling of CMPs across sites without the use of site-specific rules. + enableGlobalRulesSubFrames: + type: boolean + setPref: + branch: default + pref: cookiebanners.service.enableGlobalRules.subFrames + description: >- + Whether global rules are allowed to run in sub-frames. Running query + selectors in every sub-frame may negatively impact performance, but is + required for some CMPs. + enableDetectOnly: + type: boolean + setPref: + branch: default + pref: cookiebanners.service.detectOnly + description: >- + When set to true, cookie banners are detected and detection events are + dispatched, but they will not be handled. + This pref applies to both normal and private browsing windows. + enableFirefoxDesktopUI: + type: boolean + setPref: + branch: default + pref: cookiebanners.ui.desktop.enabled + description: Enables the cookie banner desktop UI. + enablePromo: + type: boolean + setPref: + branch: default + pref: browser.promo.cookiebanners.enabled + description: Enables the cookie banner promo in about:privatebrowsing. + enableDesktopFeatureCallout: + type: boolean + setPref: + branch: default + pref: cookiebanners.ui.desktop.showCallout + description: Enables the cookie banner feature callout on desktop. + +backgroundThreads: + description: Prefs to control MacOS thread priorities for power savings. + owner: kwright@mozilla.com + hasExposure: false + variables: + use_low_power: + description: >- + Use the MacOS QoS libraries to deprioritize select threads. + type: boolean + setPref: + branch: user + pref: threads.use_low_power.enabled + lower_mainthread_priority_in_background: + description: >- + When a browsing context is put in the background and isn't actively playing + media, deprioritize its main thread. + type: boolean + setPref: + branch: user + pref: threads.lower_mainthread_priority_in_background.enabled + +reportBrokenSite: + description: The Report Broken Site feature + owner: twisniewski@mozilla.com + hasExposure: false + variables: + enabled: + type: boolean + setPref: + branch: user + pref: ui.new-webcompat-reporter.enabled + description: >- + Whether Report Broken Site is enabled + sendMoreInfo: + type: boolean + setPref: + branch: user + pref: ui.new-webcompat-reporter.send-more-info-link + description: >- + Whether Report Broken Site shows the send more info link directing + users to webcompat.com (defaults to true for prerelease channels) + reasonDropdown: + type: int + setPref: + branch: user + pref: ui.new-webcompat-reporter.reason-dropdown + description: >- + 0 = do not show the "reason" dropdown + 1 = show an optional "reason" dropdown + 2 = show a required "reason" dropdown + +feltPrivacy: + description: Prefs for Felt Privacy v1 experiments + owner: cmeador@mozilla.com + hasExposure: true + exposureDescription: Exposure when user opens a private browsing window. + variables: + feltPrivacy: + type: boolean + setPref: + branch: default + pref: browser.privatebrowsing.felt-privacy-v1 + description: >- + When true, new styles and copy enabled on about:privatebrowsing. When true, + a toggle for showing or hiding quick suggestions appears in about:preferences. + resetPBMAction: + type: boolean + setPref: + branch: default + pref: browser.privatebrowsing.resetPBM.enabled + description: >- + Enables the reset PBM feature button and confirmation panel. + +phc: + description: Prefs to control the Probabalistic Heap Checker (PHC) + owner: pbone@mozilla.com + hasExposure: false + variables: + phcEnabled: + description: Whether to enable PHC + type: boolean + setPref: + branch: user + pref: memory.phc.enabled + phcMinRamMB: + description: The minimum amount of RAM required to enable PHC + type: int + setPref: + branch: user + pref: memory.phc.min_ram_mb + phcAvgDelayFirst: + description: The delay before the first PHC allocation + type: int + setPref: + branch: user + pref: memory.phc.avg_delay.first + phcAvgDelayNormal: + description: The delay between PHC allocations + type: int + setPref: + branch: user + pref: memory.phc.avg_delay.normal + phcAvgDelayPageReuse: + description: The delay before reusing a PHC page + type: int + setPref: + branch: user + pref: memory.phc.avg_delay.page_reuse + +mailto: + description: Prefs to control aspects of the mailto handler + owner: install-update@mozilla.com + hasExposure: true + exposureDescription: >- + The exposure event is sent when a webmail site calls the + registerProtocolHandler function and when users use mailto links in Firefox. + variables: + dualPrompt: + type: boolean + description: >- + Can be used to toggle the entire feature on and off. + fallbackPref: browser.mailto.dualPrompt + dualPrompt.onLocationChange: + type: boolean + description: >- + Display a reminder prompt for known webmailers if the prompt was not + dismissed before the next visit of that webmailer. + fallbackPref: browser.mailto.dualPrompt.onLocationChange + dualPrompt.dismissXClickMinutes: + type: int + description: >- + This pref controls after how many minutes the mailto prompt can be shown + again, which has been dismissed by clicking the 'X' button before. + fallbackPref: browser.mailto.dualPrompt.dismissXClickMinutes + dualPrompt.dismissNotNowMinutes: + type: int + description: >- + This pref controls after how many minutes the mailto prompt can be shown + again, which has been dismissed by clicking a 'not now' button on it. + fallbackPref: browser.mailto.dualPrompt.dismissNotNowMinutes + +nimbusIsReady: + description: A feature that provides the number of Nimbus is_ready events to send + when Nimbus is ready. + owner: chumphreys@mozilla.com + hasExposure: false + applications: + - firefox-desktop + variables: + eventCount: + description: The number of events that should be sent. + type: int + +nimbusTelemetry: + description: A feature that enables or disables Nimbus telemetry. + owner: chumphreys@mozilla.com + hasExposure: false + applications: + - firefox-desktop + variables: + gleanMetricConfiguration: + description: A Glean metric configuration JSON blob. + type: json + +httpsFirst: + description: >- + Prefs for HTTPS-First, which upgrades all top-level page loads to HTTPS and + provides a automatic fallback to HTTP if the site isn't available via HTTPS. + owner: mjurgens@mozilla.com, seceng-telemetry@mozilla.com + hasExposure: false + variables: + enabled: + description: Enable HTTPS-First + type: boolean + setPref: + branch: default + pref: dom.security.https_first + enabledPbm: + description: Enable HTTPS-First in private browsing only + type: boolean + setPref: + branch: default + pref: dom.security.https_first_pbm + enabledSchemeless: + description: >- + Enables schemeless HTTPS-First, which will only apply HTTPS-First to address + bar inputs without a scheme. This essentially makes HTTPS the default + scheme in the address bar, while providing a fallback to HTTP. + type: boolean + setPref: + branch: default + pref: dom.security.https_first_schemeless + backgroundTimerMs: + description: >- + After a request gets upgraded to HTTPS, specifies the time after which a + second HTTP request is fired to check if the site is available via + HTTPS, but timing out via HTTPS. This also applies to HTTPS-Only, not + just HTTPS-First. + type: int + setPref: + branch: default + pref: dom.security.https_only_fire_http_request_background_timer_ms + +contentRelevancy: + description: >- + A feature for interest-based content relevance ranking and personalization + for Firefox. + owner: disco-team@mozilla.com + hasExposure: false + variables: + enabled: + description: Enable this feature + type: boolean + fallbackPref: toolkit.contentRelevancy.enabled + maxInputUrls: + description: The maximum number of input URLs for interest classification + type: int + minInputUrls: + description: The minimal number of input URLs for interest classification + type: int + timerInterval: + description: >- + The interval (in seconds) of the background update timer for the content + relevancy manager + type: int + setPref: + branch: user + pref: toolkit.contentRelevancy.timerInterval + ingestEnabled: + description: Enable the ingestion through the Rust component + type: boolean + fallbackPref: toolkit.contentRelevancy.ingestEnabled + +backupService: + description: Prefs to control the profile backup service + owner: mconley@mozilla.com + hasExposure: false + variables: + enabled: + type: boolean + setPref: + branch: default + pref: browser.backup.enabled + description: >- + When true, the profile backup service will be initialized soon after + startup. + prefsUIEnabled: + type: boolean + setPref: + branch: default + pref: browser.backup.preferences.ui.enabled + description: >- + When true, the section in about:preferences to control the backup + feature is visible. + sqlitePagesPerStep: + description: >- + The number of database pages to backup per step when backing up an + SQLite database. + type: int + setPref: + branch: user + pref: browser.backup.sqlite.pages_per_step + sqliteStepDelayMs: + description: >- + The delay between SQLite database backup steps in milliseconds. + type: int + setPref: + branch: user + pref: browser.backup.sqlite.step_delay_ms + idleThresholdSeconds: + description: >- + The number of seconds of user idle time to wait for before considering + to schedule a backup. + type: int + setPref: + branch: user + pref: browser.backup.scheduled.idle-threshold-seconds + minTimeBetweenBackupsSeconds: + description: >- + The minimum number of seconds since the last known backup that must + pass before we might schedule a backup. + type: int + setPref: + branch: user + pref: browser.backup.scheduled.minimum-time-between-backups-seconds + +pqcrypto: + description: Prefs that control the use of post-quantum cryptography. + owner: jschanck@mozilla.com + hasExposure: false + variables: + tlsEnableMlkem: + type: boolean + setPref: + branch: default + pref: security.tls.enable_kyber + description: >- + Whether to enable mlkem768x25519 for TLS. + h3EnableMlkem: + type: boolean + setPref: + branch: default + pref: network.http.http3.enable_kyber + description: >- + Whether to enable mlkem768x25519 for H3/QUIC. + sendP256: + type: boolean + setPref: + branch: default + pref: security.tls.client_hello.send_p256_keyshare + description: >- + Whether to send a P256 share in the client hello in QUIC and TLS. + dtlsWebRTCEnableMlkem: + type: boolean + setPref: + branch: default + pref: media.webrtc.enable_pq_dtls + description: >- + Whether to enable mlkem768x25519 for DTLS in WebRTC. + + +dtlsWebRTC: + description: Pref that controls the use of DTLS. + owner: nkulatova@mozilla.com + hasExposure: false + variables: + tlsVersionDTLS: + type: int + setPref: + branch: default + pref: media.peerconnection.dtls.version.max + description: >- + The maximum version of DTLS protocol used in WebRTC (770 = DTLS 1.0, 771 = DTLS 1.2, 772 = DTLS 1.3). + +certCompression: + description: Prefs that control the use of certificate compression decoders. + owner: anna.weine@mozilla.com + hasExposure: false + variables: + tlsEnableZlib: + type: boolean + setPref: + branch: default + pref: security.tls.enable_certificate_compression_zlib + description: >- + Whether to enable Zlib for TLS certificate compression. + tlsEnableBrotli: + type: boolean + setPref: + branch: default + pref: security.tls.enable_certificate_compression_brotli + description: >- + Whether to enable Brotli for TLS certificate compression. + tlsEnableZstd: + type: boolean + setPref: + branch: default + pref: security.tls.enable_certificate_compression_zstd + description: >- + Whether to enable Zstd for TLS certificate compression. + +bounceTrackingProtection: + description: Controls the Bounce Tracking Protection feature. + owner: pbz@mozilla.com + hasExposure: false + variables: + enabled: + type: int + setPref: + branch: default + pref: privacy.bounceTrackingProtection.mode + description: Mode to run the feature in. See nsIBounceTrackingProtection.idl for documentation. + +remoteTabManagement: + description: > + Features that let users manage tabs on other devices that are + connected to the same Mozilla account. + owner: skhamis@mozilla.com + hasExposure: false + variables: + closeTabsEnabled: + description: >- + When true, the user can close tabs on other devices connected to + the same Mozilla account from the synced tabs menu. + type: boolean + fallbackPref: identity.fxaccounts.commands.remoteTabManagement.enabled + +crlite: + description: Prefs that control the use of CRLite + owner: jschanck@mozilla.com + hasExposure: false + variables: + enabled: + type: boolean + setPref: + branch: default + pref: security.remote_settings.crlite_filters.enabled + description: >- + Whether CRLite artifacts will be downloaded. + channel: + type: string + setPref: + branch: default + pref: security.pki.crlite_channel + description: >- + The channel from which CRLite artifacts will be downloaded. + mode: + type: int + setPref: + branch: default + pref: security.pki.crlite_mode + description: >- + How CRLite results will be interpreted. + timestamps_for_coverage: + type: int + setPref: + branch: default + pref: security.pki.crlite_timestamps_for_coverage + description: >- + How many covered timestamps do we need to see before we enforce a CRLite result. + +chatbot: + description: AI chatbot feature configuration + owner: elee@mozilla.com + hasExposure: false + variables: + minVersion: + type: string + description: Minimum Firefox version to apply prefs + prefs: + type: json + description: >- + The prefs to set under browser.ml.chat.* with object keys as the + sub-pref and values objects indicating the desired branch and value + defaulting to clearing the user branch value. + +sidebar: + description: Sidebar feature configuration + owner: elee@mozilla.com + hasExposure: false + variables: + minVersion: + type: string + description: Minimum Firefox version to apply prefs + main.tools: + type: string + description: sidebar.main.tools pref value to set on user branch + revamp: + type: boolean + description: sidebar.revamp pref value to set on user branch + verticalTabs: + type: boolean + description: sidebar.verticalTabs pref value to set on user branch + +fxms_bmb_button: + description: A feature for the Firefox Messaging System Bookmarks Bar button surface + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + Exposure is sent if the message is about to be shown after trigger and + targeting conditions on the message matched. + schema: + uri: chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json + path: browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json + variables: {} + +contentProcessSandbox: + description: Prefs that control the content process sandbox. + owner: bowen@mozilla.com + hasExposure: false + variables: + Level: + description: Content process sandbox level + type: int + setPref: + branch: user + pref: security.sandbox.content.level + +certificateTransparency: + description: Certificate Transparency configuration + owner: dkeeler@mozilla.com + hasExposure: false + variables: + mode: + type: int + setPref: + branch: default + pref: security.pki.certificate_transparency.mode + description: >- + What mode Certificate Transparency is in (0=disable, 1=telemetry only, + 2=enforce). + +setToDefaultPrompt: + description: "Experimental set to default spotlight" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + variables: + showSpotlightPrompt: + description: Show experimental set to default spotlight message instead of default prompt + type: boolean + message: + description: Message to show instead of the default prompt + type: json diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/v134.0.1/schemas/browser/components/asrouter/content-src/schemas/BackgroundTaskMessagingExperiment.schema.json b/experimenter/experimenter/features/manifests/firefox-desktop/v134.0.1/schemas/browser/components/asrouter/content-src/schemas/BackgroundTaskMessagingExperiment.schema.json new file mode 100644 index 0000000000..5fe86f9617 --- /dev/null +++ b/experimenter/experimenter/features/manifests/firefox-desktop/v134.0.1/schemas/browser/components/asrouter/content-src/schemas/BackgroundTaskMessagingExperiment.schema.json @@ -0,0 +1,344 @@ +{ + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json", + "title": "Messaging Experiment", + "description": "A Firefox Messaging System message.", + "if": { + "type": "object", + "properties": { + "template": { + "const": "multi" + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/MultiMessage" + }, + "else": { + "$ref": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/TemplatedMessage" + }, + "$defs": { + "ToastNotification": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///ToastNotification.schema.json", + "title": "ToastNotification", + "description": "A template for toast notifications displayed by the Alert service.", + "allOf": [ + { + "$ref": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "content": { + "type": "object", + "properties": { + "title": { + "$ref": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/localizableText", + "description": "Id of localized string or message override of toast notification title" + }, + "body": { + "$ref": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/localizableText", + "description": "Id of localized string or message override of toast notification body" + }, + "icon_url": { + "description": "The URL of the image used as an icon of the toast notification.", + "type": "string", + "format": "moz-url-format" + }, + "image_url": { + "description": "The URL of an image to be displayed as part of the notification.", + "type": "string", + "format": "moz-url-format" + }, + "launch_url": { + "description": "The URL to launch when the notification or an action button is clicked.", + "type": "string", + "format": "moz-url-format" + }, + "launch_action": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "The launch action to be performed when Firefox is launched." + }, + "data": { + "type": "object" + } + }, + "required": [ + "type" + ], + "additionalProperties": true + }, + "requireInteraction": { + "type": "boolean", + "description": "Whether the toast notification should remain active until the user clicks or dismisses it, rather than closing automatically." + }, + "tag": { + "type": "string", + "description": "An identifying tag for the toast notification." + }, + "data": { + "type": "object", + "description": "Arbitrary data associated with the toast notification." + }, + "actions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "$ref": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/localizableText", + "description": "The action text to be shown to the user." + }, + "action": { + "type": "string", + "description": "Opaque identifer that identifies action." + }, + "iconURL": { + "type": "string", + "format": "uri", + "description": "URL of an icon to display with the action." + }, + "windowsSystemActivationType": { + "type": "boolean", + "description": "Whether to have Windows process the given `action`." + }, + "launch_action": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "The launch action to be performed when Firefox is launched." + }, + "data": { + "type": "object" + } + }, + "required": [ + "type" + ], + "additionalProperties": true + } + }, + "required": [ + "action", + "title" + ], + "additionalProperties": true + } + } + }, + "additionalProperties": true, + "required": [ + "title", + "body" + ] + }, + "template": { + "type": "string", + "const": "toast_notification" + } + }, + "required": [ + "content", + "targeting", + "template", + "trigger" + ], + "additionalProperties": true + }, + "Message": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The message identifier" + }, + "groups": { + "description": "Array of preferences used to control `enabled` status of the group. If any is `false` the group is disabled.", + "type": "array", + "items": { + "type": "string", + "description": "Preference name" + } + }, + "template": { + "type": "string", + "description": "Which messaging template this message is using.", + "enum": [ + "toast_notification" + ] + }, + "frequency": { + "type": "object", + "description": "An object containing frequency cap information for a message.", + "properties": { + "lifetime": { + "type": "integer", + "description": "The maximum lifetime impressions for a message.", + "minimum": 1, + "maximum": 100 + }, + "custom": { + "type": "array", + "description": "An array of custom frequency cap definitions.", + "items": { + "description": "A frequency cap definition containing time and max impression information", + "type": "object", + "properties": { + "period": { + "type": "integer", + "description": "Period of time in milliseconds (e.g. 86400000 for one day)" + }, + "cap": { + "type": "integer", + "description": "The maximum impressions for the message within the defined period.", + "minimum": 1, + "maximum": 100 + } + }, + "required": [ + "period", + "cap" + ] + } + } + } + }, + "priority": { + "description": "The priority of the message. If there are two competing messages to show, the one with the highest priority will be shown", + "type": "integer" + }, + "order": { + "description": "The order in which messages should be shown. Messages will be shown in increasing order.", + "type": "integer" + }, + "targeting": { + "description": "A JEXL expression representing targeting information", + "type": "string" + }, + "trigger": { + "description": "An action to trigger potentially showing the message", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "A string identifying the trigger action" + }, + "params": { + "type": "array", + "description": "An optional array of string parameters for the trigger action", + "items": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] + } + } + }, + "required": [ + "id" + ] + }, + "provider": { + "description": "An identifier for the provider of this message, such as \"cfr\" or \"preview\".", + "type": "string" + } + }, + "additionalProperties": true, + "dependentRequired": { + "content": [ + "id", + "template" + ], + "template": [ + "id", + "content" + ] + } + }, + "localizedText": { + "type": "object", + "properties": { + "string_id": { + "description": "Id of localized string to be rendered.", + "type": "string" + } + }, + "required": [ + "string_id" + ] + }, + "localizableText": { + "description": "Either a raw string or an object containing the string_id of the localized text", + "oneOf": [ + { + "type": "string", + "description": "The string to be rendered." + }, + { + "$ref": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/localizedText" + } + ] + }, + "TemplatedMessage": { + "description": "An FxMS message of one of a variety of types.", + "type": "object", + "allOf": [ + { + "$ref": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/Message" + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "toast_notification" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/ToastNotification" + } + } + ] + }, + "MultiMessage": { + "description": "An object containing an array of messages.", + "type": "object", + "properties": { + "template": { + "type": "string", + "const": "multi" + }, + "messages": { + "type": "array", + "description": "An array of messages.", + "items": { + "$ref": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/TemplatedMessage" + } + } + }, + "required": [ + "template", + "messages" + ] + } + } +} diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/v134.0.1/schemas/browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json b/experimenter/experimenter/features/manifests/firefox-desktop/v134.0.1/schemas/browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json new file mode 100644 index 0000000000..6067f38398 --- /dev/null +++ b/experimenter/experimenter/features/manifests/firefox-desktop/v134.0.1/schemas/browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json @@ -0,0 +1,1623 @@ +{ + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json", + "title": "Messaging Experiment", + "description": "A Firefox Messaging System message.", + "if": { + "type": "object", + "properties": { + "template": { + "const": "multi" + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/MultiMessage" + }, + "else": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/TemplatedMessage" + }, + "$defs": { + "BookmarksBarButton": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///BookmarksBarButton.schema.json", + "title": "BookmarksBarButton", + "description": "A template with a label and a special message action (currently only supports OPEN_URL)", + "allOf": [ + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "template": { + "type": "string", + "const": "bookmarks_bar_button" + }, + "content": { + "type": "object", + "properties": { + "action": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Action dispatched by the button." + }, + "data": { + "type": "object" + } + }, + "required": [ + "type" + ], + "additionalProperties": true + } + }, + "additionalProperties": true + } + }, + "additionalProperties": true, + "required": [ + "targeting" + ] + }, + "CFRUrlbarChiclet": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///CFRUrlbarChiclet.schema.json", + "title": "CFRUrlbarChiclet", + "description": "A template with a chiclet button with text.", + "allOf": [ + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "content": { + "type": "object", + "properties": { + "category": { + "type": "string", + "description": "Attribute used for different groups of messages from the same provider" + }, + "layout": { + "type": "string", + "description": "Describes how content should be displayed.", + "enum": [ + "chiclet_open_url" + ] + }, + "bucket_id": { + "type": "string", + "description": "A bucket identifier for the addon. This is used in order to anonymize telemetry for history-sensitive targeting." + }, + "notification_text": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "The text in the small blue chicklet that appears in the URL bar. This can be a reference to a localized string in Firefox or just a plain string." + }, + "active_color": { + "type": "string", + "description": "Background color of the button" + }, + "action": { + "type": "object", + "properties": { + "url": { + "description": "The page to open when the button is clicked.", + "type": "string", + "format": "moz-url-format" + }, + "where": { + "description": "Should it open in a new tab or the current tab", + "type": "string", + "enum": [ + "current", + "tabshifted" + ] + } + }, + "additionalProperties": true, + "required": [ + "url", + "where" + ] + } + }, + "additionalProperties": true, + "required": [ + "layout", + "category", + "bucket_id", + "notification_text", + "action" + ] + }, + "template": { + "type": "string", + "const": "cfr_urlbar_chiclet" + } + }, + "required": [ + "targeting", + "trigger" + ] + }, + "ExtensionDoorhanger": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///ExtensionDoorhanger.schema.json", + "title": "ExtensionDoorhanger", + "description": "A template with a heading, addon icon, title and description. No markup allowed.", + "allOf": [ + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "content": { + "type": "object", + "properties": { + "category": { + "type": "string", + "description": "Attribute used for different groups of messages from the same provider" + }, + "layout": { + "type": "string", + "description": "Attribute used for different groups of messages from the same provider", + "enum": [ + "short_message", + "icon_and_message", + "addon_recommendation" + ] + }, + "anchor_id": { + "type": "string", + "description": "A DOM element ID that the pop-over will be anchored." + }, + "alt_anchor_id": { + "type": "string", + "description": "An alternate DOM element ID that the pop-over will be anchored." + }, + "bucket_id": { + "type": "string", + "description": "A bucket identifier for the addon. This is used in order to anonymize telemetry for history-sensitive targeting." + }, + "skip_address_bar_notifier": { + "type": "boolean", + "description": "Skip the 'Recommend' notifier and show directly." + }, + "persistent_doorhanger": { + "type": "boolean", + "description": "Prevent the doorhanger from being dismissed if user interacts with the page or switches between applications." + }, + "show_in_private_browsing": { + "type": "boolean", + "description": "Whether to allow the message to be shown in private browsing mode. Defaults to false." + }, + "notification_text": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "The text in the small blue chicklet that appears in the URL bar. This can be a reference to a localized string in Firefox or just a plain string." + }, + "info_icon": { + "type": "object", + "description": "The small icon displayed in the top right corner of the pop-over. Should be 19x19px, svg or png. Defaults to a small question mark.", + "properties": { + "label": { + "oneOf": [ + { + "type": "object", + "properties": { + "attributes": { + "type": "object", + "properties": { + "tooltiptext": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "Text for button tooltip used to provide information about the doorhanger." + } + }, + "required": [ + "tooltiptext" + ] + } + }, + "required": [ + "attributes" + ] + }, + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizedText" + } + ] + }, + "sumo_path": { + "type": "string", + "description": "Last part of the path in the URL to the support page with the information about the doorhanger.", + "examples": [ + "extensionpromotions", + "extensionrecommendations" + ] + } + } + }, + "learn_more": { + "type": "string", + "description": "Last part of the path in the SUMO URL to the support page with the information about the doorhanger.", + "examples": [ + "extensionpromotions", + "extensionrecommendations" + ] + }, + "heading_text": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "The larger heading text displayed in the pop-over. This can be a reference to a localized string in Firefox or just a plain string." + }, + "icon": { + "$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/linkUrl", + "description": "The icon displayed in the pop-over. Should be 32x32px or 64x64px and png/svg." + }, + "icon_dark_theme": { + "type": "string", + "description": "Pop-over icon, dark theme variant. Should be 32x32px or 64x64px and png/svg." + }, + "icon_class": { + "type": "string", + "description": "CSS class of the pop-over icon." + }, + "addon": { + "description": "Addon information including AMO URL.", + "type": "object", + "properties": { + "id": { + "$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/plainText", + "description": "Unique addon ID" + }, + "title": { + "$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/plainText", + "description": "Addon name" + }, + "author": { + "$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/plainText", + "description": "Addon author" + }, + "icon": { + "$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/linkUrl", + "description": "The icon displayed in the pop-over. Should be 64x64px and png/svg." + }, + "rating": { + "type": "string", + "description": "Star rating" + }, + "users": { + "type": "string", + "description": "Installed users" + }, + "amo_url": { + "$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/linkUrl", + "description": "Link that offers more information related to the addon." + } + }, + "required": [ + "title", + "author", + "icon", + "amo_url" + ] + }, + "text": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "The body text displayed in the pop-over. This can be a reference to a localized string in Firefox or just a plain string." + }, + "descriptionDetails": { + "description": "Additional information and steps on how to use", + "type": "object", + "properties": { + "steps": { + "description": "Array of string_ids", + "type": "array", + "items": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizedText", + "description": "Id of string to localized addon description" + } + } + }, + "required": [ + "steps" + ] + }, + "buttons": { + "description": "The label and functionality for the buttons in the pop-over.", + "type": "object", + "properties": { + "primary": { + "type": "object", + "properties": { + "label": { + "type": "object", + "oneOf": [ + { + "properties": { + "value": { + "$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/plainText", + "description": "Button label override used when a localized version is not available." + }, + "attributes": { + "type": "object", + "properties": { + "accesskey": { + "type": "string", + "description": "A single character to be used as a shortcut key for the secondary button. This should be one of the characters that appears in the button label." + } + }, + "required": [ + "accesskey" + ], + "description": "Button attributes." + } + }, + "required": [ + "value", + "attributes" + ] + }, + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizedText" + } + ], + "description": "Id of localized string or message override." + }, + "action": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Action dispatched by the button." + }, + "data": { + "properties": { + "url": { + "type": "string", + "$comment": "This is dynamically generated from the addon.id. See CFRPageActions.sys.mjs", + "description": "URL used in combination with the primary action dispatched." + } + } + } + } + } + } + }, + "secondary": { + "type": "array", + "items": { + "type": "object", + "properties": { + "label": { + "type": "object", + "oneOf": [ + { + "properties": { + "value": { + "allOf": [ + { + "$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/plainText" + }, + { + "description": "Button label override used when a localized version is not available." + } + ] + }, + "attributes": { + "type": "object", + "properties": { + "accesskey": { + "type": "string", + "description": "A single character to be used as a shortcut key for the secondary button. This should be one of the characters that appears in the button label." + } + }, + "required": [ + "accesskey" + ], + "description": "Button attributes." + } + }, + "required": [ + "value", + "attributes" + ] + }, + { + "properties": { + "string_id": { + "allOf": [ + { + "$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/plainText" + }, + { + "description": "Id of localized string for button" + } + ] + } + }, + "required": [ + "string_id" + ] + } + ], + "description": "Id of localized string or message override." + }, + "action": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Action dispatched by the button." + }, + "data": { + "properties": { + "url": { + "allOf": [ + { + "$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/linkUrl" + }, + { + "description": "URL used in combination with the primary action dispatched." + } + ] + } + } + } + } + } + } + } + } + } + } + }, + "additionalProperties": true, + "required": [ + "layout", + "bucket_id", + "heading_text", + "text", + "buttons" + ], + "if": { + "properties": { + "skip_address_bar_notifier": { + "anyOf": [ + { + "const": "false" + }, + { + "const": null + } + ] + } + } + }, + "then": { + "required": [ + "category", + "notification_text" + ] + } + }, + "template": { + "type": "string", + "enum": [ + "cfr_doorhanger", + "milestone_message" + ] + } + }, + "additionalProperties": true, + "required": [ + "targeting", + "trigger" + ], + "$defs": { + "plainText": { + "description": "Plain text (no HTML allowed)", + "type": "string" + }, + "linkUrl": { + "description": "Target for links or buttons", + "type": "string", + "format": "uri" + } + } + }, + "InfoBar": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///InfoBar.schema.json", + "title": "InfoBar", + "description": "A template with an image, test and buttons.", + "allOf": [ + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "content": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Should the message be global (persisted across tabs) or local (disappear when switching to a different tab).", + "enum": [ + "global", + "tab" + ] + }, + "text": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "The text show in the notification box." + }, + "priority": { + "description": "Infobar priority level https://searchfox.org/mozilla-central/rev/3aef835f6cb12e607154d56d68726767172571e4/toolkit/content/widgets/notificationbox.js#387", + "type": "number", + "minumum": 0, + "exclusiveMaximum": 10 + }, + "buttons": { + "type": "array", + "items": { + "type": "object", + "properties": { + "label": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "The text label of the button." + }, + "primary": { + "type": "boolean", + "description": "Is this the primary button?" + }, + "accessKey": { + "type": "string", + "description": "Keyboard shortcut letter." + }, + "action": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Action dispatched by the button." + }, + "data": { + "type": "object" + } + }, + "required": [ + "type" + ], + "additionalProperties": true + }, + "supportPage": { + "type": "string", + "description": "A page title on SUMO to link to" + } + }, + "required": [ + "label", + "action" + ], + "additionalProperties": true + } + } + }, + "additionalProperties": true, + "required": [ + "text", + "buttons" + ] + }, + "template": { + "type": "string", + "const": "infobar" + } + }, + "additionalProperties": true, + "required": [ + "targeting", + "trigger" + ], + "$defs": { + "plainText": { + "description": "Plain text (no HTML allowed)", + "type": "string" + }, + "linkUrl": { + "description": "Target for links or buttons", + "type": "string", + "format": "uri" + } + } + }, + "MenuMessage": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///MenuMessage.schema.json", + "title": "MenuMessage", + "description": "A template for messages that appear within our menus.", + "allOf": [ + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "content": { + "type": "object", + "properties": { + "messageType": { + "type": "string", + "description": "The subtype of the message.", + "enum": [ + "fxa_cta" + ] + }, + "primaryText": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "The primary text for the message, which offers the value proposition to the user." + }, + "secondaryText": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "The second text for the message, which offers more detail on the value proposition to the user." + }, + "closeAction": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Action dispatched by the button." + }, + "data": { + "type": "object" + } + }, + "required": [ + "type" + ], + "additionalProperties": true, + "description": "The action to take upon clicking the close button." + }, + "primaryAction": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Action dispatched by the button." + }, + "data": { + "type": "object" + } + }, + "required": [ + "type" + ], + "additionalProperties": true, + "description": "The action to take upon clicking the primary action button." + }, + "primaryActionText": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "The label for the primary action." + }, + "imageURL": { + "type": "string", + "description": "URL for image to use with the content." + }, + "imageVerticalOffset": { + "type": "number", + "description": "The margin-block-start value to apply to the image in pixels." + } + } + }, + "template": { + "type": "string", + "const": "menu_message" + }, + "testingTriggerContext": { + "type": "string", + "enum": [ + "app_menu", + "pxi_menu" + ] + } + }, + "additionalProperties": true + }, + "NewtabPromoMessage": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///NewtabPromoMessage.schema.json", + "title": "PBNewtabPromoMessage", + "description": "Message shown on the private browsing newtab page.", + "allOf": [ + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "content": { + "type": "object", + "properties": { + "hideDefault": { + "type": "boolean", + "description": "Should we hide the default promo after the experiment promo is dismissed." + }, + "infoEnabled": { + "type": "boolean", + "description": "Should we show the info section." + }, + "infoIcon": { + "type": "string", + "description": "Icon shown in the left side of the info section. Default is the private browsing icon." + }, + "infoTitle": { + "type": "string", + "description": "Is the title in the info section enabled." + }, + "infoTitleEnabled": { + "type": "boolean", + "description": "Is the title in the info section enabled." + }, + "infoBody": { + "type": "string", + "description": "Text content in the info section." + }, + "infoLinkText": { + "type": "string", + "description": "Text for the link in the info section." + }, + "infoLinkUrl": { + "type": "string", + "description": "URL for the info section link.", + "format": "moz-url-format" + }, + "promoEnabled": { + "type": "boolean", + "description": "Should we show the promo section." + }, + "promoType": { + "type": "string", + "description": "Promo type used to determine if promo should show to a given user", + "enum": [ + "FOCUS", + "VPN", + "PIN", + "COOKIE_BANNERS", + "OTHER" + ] + }, + "promoSectionStyle": { + "type": "string", + "description": "Sets the position of the promo section. Possible values are: top, below-search, bottom. Default bottom.", + "enum": [ + "top", + "below-search", + "bottom" + ] + }, + "promoTitle": { + "type": "string", + "description": "The text content of the promo section." + }, + "promoTitleEnabled": { + "type": "boolean", + "description": "Should we show text content in the promo section." + }, + "promoLinkText": { + "type": "string", + "description": "The text of the link in the promo box." + }, + "promoHeader": { + "type": "string", + "description": "The title of the promo section." + }, + "promoButton": { + "type": "object", + "properties": { + "action": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Action dispatched by the button." + }, + "data": { + "type": "object" + } + }, + "required": [ + "type" + ], + "additionalProperties": true + } + }, + "required": [ + "action" + ] + }, + "promoLinkType": { + "type": "string", + "description": "Type of promo link type. Possible values: link, button. Default is link.", + "enum": [ + "link", + "button" + ] + }, + "promoImageLarge": { + "type": "string", + "description": "URL for image used on the left side of the promo box, larger, showcases some feature. Default off.", + "format": "uri" + }, + "promoImageSmall": { + "type": "string", + "description": "URL for image used on the right side of the promo box, smaller, usually a logo. Default off.", + "format": "uri" + } + }, + "additionalProperties": true, + "allOf": [ + { + "if": { + "properties": { + "promoEnabled": { + "const": true + } + }, + "required": [ + "promoEnabled" + ] + }, + "then": { + "required": [ + "promoButton" + ] + } + }, + { + "if": { + "properties": { + "infoEnabled": { + "const": true + } + }, + "required": [ + "infoEnabled" + ] + }, + "then": { + "required": [ + "infoLinkText" + ], + "if": { + "properties": { + "infoTitleEnabled": { + "const": true + } + }, + "required": [ + "infoTitleEnabled" + ] + }, + "then": { + "required": [ + "infoTitle" + ] + } + } + } + ] + }, + "template": { + "type": "string", + "const": "pb_newtab" + } + }, + "additionalProperties": true, + "required": [ + "targeting" + ] + }, + "Spotlight": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///Spotlight.schema.json", + "title": "Spotlight", + "description": "A template with an image, title, content and two buttons.", + "allOf": [ + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "content": { + "type": "object", + "properties": { + "template": { + "type": "string", + "description": "Specify the layout template for the Spotlight", + "const": "multistage" + }, + "backdrop": { + "type": "string", + "description": "Background css behind modal content" + }, + "logo": { + "type": "object", + "properties": { + "imageURL": { + "type": "string", + "description": "URL for image to use with the content" + }, + "imageId": { + "type": "string", + "description": "The ID for a remotely hosted image" + }, + "size": { + "type": "string", + "description": "The logo size." + } + }, + "additionalProperties": true + }, + "screens": { + "type": "array", + "description": "Collection of individual screen content" + }, + "transitions": { + "type": "boolean", + "description": "Show transitions within and between screens" + }, + "disableHistoryUpdates": { + "type": "boolean", + "description": "Don't alter the browser session's history stack - used with messaging surfaces like Feature Callouts" + }, + "startScreen": { + "type": "integer", + "description": "Index of first screen to show from message, defaulting to 0" + }, + "no-rdm": { + "type": "boolean", + "description": "If true, prevents the spotlight from entering responsive design mode at widths less than 800px" + } + }, + "additionalProperties": true + }, + "template": { + "type": "string", + "description": "Specify whether the surface is shown as a Spotlight modal or an in-surface Feature Callout dialog", + "enum": [ + "spotlight", + "feature_callout" + ] + } + }, + "additionalProperties": true, + "required": [ + "targeting" + ] + }, + "ToastNotification": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///ToastNotification.schema.json", + "title": "ToastNotification", + "description": "A template for toast notifications displayed by the Alert service.", + "allOf": [ + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "content": { + "type": "object", + "properties": { + "title": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "Id of localized string or message override of toast notification title" + }, + "body": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "Id of localized string or message override of toast notification body" + }, + "icon_url": { + "description": "The URL of the image used as an icon of the toast notification.", + "type": "string", + "format": "moz-url-format" + }, + "image_url": { + "description": "The URL of an image to be displayed as part of the notification.", + "type": "string", + "format": "moz-url-format" + }, + "launch_url": { + "description": "The URL to launch when the notification or an action button is clicked.", + "type": "string", + "format": "moz-url-format" + }, + "launch_action": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "The launch action to be performed when Firefox is launched." + }, + "data": { + "type": "object" + } + }, + "required": [ + "type" + ], + "additionalProperties": true + }, + "requireInteraction": { + "type": "boolean", + "description": "Whether the toast notification should remain active until the user clicks or dismisses it, rather than closing automatically." + }, + "tag": { + "type": "string", + "description": "An identifying tag for the toast notification." + }, + "data": { + "type": "object", + "description": "Arbitrary data associated with the toast notification." + }, + "actions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "The action text to be shown to the user." + }, + "action": { + "type": "string", + "description": "Opaque identifer that identifies action." + }, + "iconURL": { + "type": "string", + "format": "uri", + "description": "URL of an icon to display with the action." + }, + "windowsSystemActivationType": { + "type": "boolean", + "description": "Whether to have Windows process the given `action`." + }, + "launch_action": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "The launch action to be performed when Firefox is launched." + }, + "data": { + "type": "object" + } + }, + "required": [ + "type" + ], + "additionalProperties": true + } + }, + "required": [ + "action", + "title" + ], + "additionalProperties": true + } + } + }, + "additionalProperties": true, + "required": [ + "title", + "body" + ] + }, + "template": { + "type": "string", + "const": "toast_notification" + } + }, + "required": [ + "content", + "targeting", + "template", + "trigger" + ], + "additionalProperties": true + }, + "ToolbarBadgeMessage": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///ToolbarBadgeMessage.schema.json", + "title": "ToolbarBadgeMessage", + "description": "A template that specifies to which element in the browser toolbar to add a notification.", + "allOf": [ + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "content": { + "type": "object", + "properties": { + "target": { + "type": "string" + }, + "action": { + "type": "object", + "properties": { + "id": { + "type": "string" + } + }, + "additionalProperties": true, + "required": [ + "id" + ], + "description": "Optional action to take in addition to showing the notification" + }, + "delay": { + "type": "number", + "description": "Optional delay in ms after which to show the notification" + }, + "badgeDescription": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizedText", + "description": "This is used in combination with the badged button to offer a text based alternative to the visual badging. Example 'New Feature: What's New'" + } + }, + "additionalProperties": true, + "required": [ + "target" + ] + }, + "template": { + "type": "string", + "const": "toolbar_badge" + } + }, + "additionalProperties": true, + "required": [ + "targeting" + ] + }, + "UpdateAction": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///UpdateAction.schema.json", + "title": "UpdateActionMessage", + "description": "A template for messages that execute predetermined actions.", + "allOf": [ + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "content": { + "type": "object", + "properties": { + "action": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "data": { + "type": "object", + "description": "Additional data provided as argument when executing the action", + "properties": { + "url": { + "type": "string", + "description": "URL data to be used as argument to the action" + }, + "expireDelta": { + "type": "number", + "description": "Expiration timestamp to be used as argument to the action" + } + } + } + }, + "additionalProperties": true, + "description": "Optional action to take in addition to showing the notification", + "required": [ + "id", + "data" + ] + } + }, + "additionalProperties": true, + "required": [ + "action" + ] + }, + "template": { + "type": "string", + "const": "update_action" + } + }, + "required": [ + "targeting" + ] + }, + "Message": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The message identifier" + }, + "groups": { + "description": "Array of preferences used to control `enabled` status of the group. If any is `false` the group is disabled.", + "type": "array", + "items": { + "type": "string", + "description": "Preference name" + } + }, + "template": { + "type": "string", + "description": "Which messaging template this message is using.", + "enum": [ + "bookmarks_bar_button", + "cfr_urlbar_chiclet", + "cfr_doorhanger", + "milestone_message", + "infobar", + "menu_message", + "pb_newtab", + "spotlight", + "feature_callout", + "toast_notification", + "toolbar_badge", + "update_action" + ] + }, + "frequency": { + "type": "object", + "description": "An object containing frequency cap information for a message.", + "properties": { + "lifetime": { + "type": "integer", + "description": "The maximum lifetime impressions for a message.", + "minimum": 1, + "maximum": 100 + }, + "custom": { + "type": "array", + "description": "An array of custom frequency cap definitions.", + "items": { + "description": "A frequency cap definition containing time and max impression information", + "type": "object", + "properties": { + "period": { + "type": "integer", + "description": "Period of time in milliseconds (e.g. 86400000 for one day)" + }, + "cap": { + "type": "integer", + "description": "The maximum impressions for the message within the defined period.", + "minimum": 1, + "maximum": 100 + } + }, + "required": [ + "period", + "cap" + ] + } + } + } + }, + "priority": { + "description": "The priority of the message. If there are two competing messages to show, the one with the highest priority will be shown", + "type": "integer" + }, + "order": { + "description": "The order in which messages should be shown. Messages will be shown in increasing order.", + "type": "integer" + }, + "targeting": { + "description": "A JEXL expression representing targeting information", + "type": "string" + }, + "trigger": { + "description": "An action to trigger potentially showing the message", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "A string identifying the trigger action" + }, + "params": { + "type": "array", + "description": "An optional array of string parameters for the trigger action", + "items": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] + } + } + }, + "required": [ + "id" + ] + }, + "provider": { + "description": "An identifier for the provider of this message, such as \"cfr\" or \"preview\".", + "type": "string" + } + }, + "additionalProperties": true, + "dependentRequired": { + "content": [ + "id", + "template" + ], + "template": [ + "id", + "content" + ] + } + }, + "localizedText": { + "type": "object", + "properties": { + "string_id": { + "description": "Id of localized string to be rendered.", + "type": "string" + } + }, + "required": [ + "string_id" + ] + }, + "localizableText": { + "description": "Either a raw string or an object containing the string_id of the localized text", + "oneOf": [ + { + "type": "string", + "description": "The string to be rendered." + }, + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizedText" + } + ] + }, + "TemplatedMessage": { + "description": "An FxMS message of one of a variety of types.", + "type": "object", + "allOf": [ + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message" + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "bookmarks_bar_button" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/BookmarksBarButton" + } + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "cfr_urlbar_chiclet" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/CFRUrlbarChiclet" + } + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "cfr_doorhanger", + "milestone_message" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/ExtensionDoorhanger" + } + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "infobar" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/InfoBar" + } + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "menu_message" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/MenuMessage" + } + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "pb_newtab" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/NewtabPromoMessage" + } + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "spotlight", + "feature_callout" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Spotlight" + } + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "toast_notification" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/ToastNotification" + } + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "toolbar_badge" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/ToolbarBadgeMessage" + } + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "update_action" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/UpdateAction" + } + } + ] + }, + "MultiMessage": { + "description": "An object containing an array of messages.", + "type": "object", + "properties": { + "template": { + "type": "string", + "const": "multi" + }, + "messages": { + "type": "array", + "description": "An array of messages.", + "items": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/TemplatedMessage" + } + } + }, + "required": [ + "template", + "messages" + ] + } + } +} diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/v134.0.1/schemas/toolkit/components/nimbus/schemas/PrefFlipsFeature.schema.json b/experimenter/experimenter/features/manifests/firefox-desktop/v134.0.1/schemas/toolkit/components/nimbus/schemas/PrefFlipsFeature.schema.json new file mode 100644 index 0000000000..9fa5acc7c9 --- /dev/null +++ b/experimenter/experimenter/features/manifests/firefox-desktop/v134.0.1/schemas/toolkit/components/nimbus/schemas/PrefFlipsFeature.schema.json @@ -0,0 +1,48 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "prefs": { + "description": "The prefs to set", + "type": "object", + "patternProperties": { + ".*": { + "type": "object", + "properties": { + "branch": { + "description": "The branch the pref should be set on.", + "type": "string", + "enum": ["user", "default"] + }, + "value": { + "description": "The value of the pref. Set to null to clear prefs.", + "type": ["string", "integer", "boolean", "null"] + } + }, + "required": ["branch", "value"], + "allOf": [ + { + "description": "Prevent clearing the default branch", + "if": { + "properties": { + "branch": { + "const": "default" + } + } + }, + "then": { + "properties": { + "value": { + "type": ["string", "integer", "boolean"] + } + } + } + } + ] + } + } + } + }, + "required": ["prefs"], + "additionalProperties": false +} diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/v134.0.1/schemas/toolkit/components/normandy/schemas/LegacyHeartbeat.schema.json b/experimenter/experimenter/features/manifests/firefox-desktop/v134.0.1/schemas/toolkit/components/normandy/schemas/LegacyHeartbeat.schema.json new file mode 100644 index 0000000000..6915fc9b71 --- /dev/null +++ b/experimenter/experimenter/features/manifests/firefox-desktop/v134.0.1/schemas/toolkit/components/normandy/schemas/LegacyHeartbeat.schema.json @@ -0,0 +1,73 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Legacy (Normandy) Heartbeat, via Nimbus", + "description": "The schema for the Legacy Heartbeat Nimbus feature.", + "type": "object", + "properties": { + "survey": { + "$comment": "Hearbeat arguments are nested under survey to prevent simultaneous rollouts and experiments from overriding eachothers optional variables", + "type": "object", + "properties": { + "repeatOption": { + "type": "string", + "enum": ["once", "xdays", "nag"], + "description": "Determines how often a prompt is shown executes.", + "default": "once" + }, + "repeatEvery": { + "description": "For repeatOption=xdays, how often (in days) the prompt is displayed.", + "default": null, + "type": ["number", "null"] + }, + "includeTelemetryUUID": { + "type": "boolean", + "description": "Include unique user ID in post-answer-url and Telemetry", + "default": false + }, + "surveyId": { + "description": "Slug uniquely identifying this survey in telemetry", + "type": "string" + }, + "message": { + "description": "Message to show to the user", + "type": "string" + }, + "engagementButtonLabel": { + "description": "Text for the engagement button. If specified, this button will be shown instead of rating stars.", + "default": null, + "type": ["string", "null"] + }, + "thanksMessage": { + "description": "Thanks message to show to the user after they've rated Firefox", + "type": "string" + }, + "postAnswerUrl": { + "description": "URL to redirect the user to after rating Firefox or clicking the engagement button", + "default": null, + "type": ["string", "null"] + }, + "learnMoreMessage": { + "description": "Message to show to the user to learn more", + "default": null, + "type": ["string", "null"] + }, + "learnMoreUrl": { + "description": "URL to show to the user when they click Learn More", + "default": null, + "type": ["string", "null"] + } + }, + "required": [ + "surveyId", + "message", + "thanksMessage", + "postAnswerUrl", + "learnMoreMessage", + "learnMoreUrl" + ], + "additionalProperties": false + } + }, + "required": ["survey"], + "additionalProperties": false +} diff --git a/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml b/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml index ff1cfb8836..d0efb9bad6 100644 --- a/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml @@ -13,7 +13,7 @@ focus/klar-v131.1: b7dca2271b14988837524a30eb154d91eb5e4912 focus/klar-v132.0: d9ed6134db59ff456d343e2bb211aefd040319ac focus/klar-v133.0: a3372669a06fa684d3c5945c317d6787e3125303 focus/klar-v134.0: be550d94c2c7bc8b8902cdf7fe542a64e73a381a -main: f732e7f18b3384061fb87d5aaf1e4257ba86bd64 +main: 782d7a4b0ef7eadb70c56eb9486f3f6261b76468 release/v124: da250bed9e19c4978d4400d6d404cb312e33636e release/v125: a3e1e0773a00009e08d95726fd518ab642255ccd release/v126: 6f305409b4af68e8404401a2caad8cb0da9a0494 diff --git a/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml b/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml index 0e7774f1d5..4e5f55d13d 100644 --- a/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml @@ -1,4 +1,4 @@ -main: f732e7f18b3384061fb87d5aaf1e4257ba86bd64 +main: 782d7a4b0ef7eadb70c56eb9486f3f6261b76468 release/v117: 43b690c450066d4dde1b2ccb93ed3714d244d502 release/v118: 89a7ea3c3372e5a4ef5b3c5b85499d26198d0524 release/v119: 7dc381f991c6d2a983c3ba7f0cffd880e8c29e7b From 7da772def49e883a0cb3091226ebcb5473ec5194 Mon Sep 17 00:00:00 2001 From: dataops-ci-bot <59976087+dataops-ci-bot@users.noreply.github.com> Date: Tue, 7 Jan 2025 10:42:35 -0800 Subject: [PATCH 07/36] chore(nimbus): Update application-services (#11979) --- application-services/application-services.env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application-services/application-services.env b/application-services/application-services.env index 480e1042cd..64d73af550 100644 --- a/application-services/application-services.env +++ b/application-services/application-services.env @@ -1 +1 @@ -APPLICATION_SERVICES_BUILD_ID=135.20241220191521 +APPLICATION_SERVICES_BUILD_ID=136.20250107050243 From 527533ad787d0b6665952eee50bf1058f78404a3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 7 Jan 2025 10:42:53 -0800 Subject: [PATCH 08/36] chore(deps): Bump jinja2 from 3.1.4 to 3.1.5 in /cirrus/server (#11986) Bumps [jinja2](https://github.com/pallets/jinja) from 3.1.4 to 3.1.5.
Release notes

Sourced from jinja2's releases.

3.1.5

This is the Jinja 3.1.5 security fix release, which fixes security issues and bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.

PyPI: https://pypi.org/project/Jinja2/3.1.5/ Changes: https://jinja.palletsprojects.com/changes/#version-3-1-5 Milestone: https://github.com/pallets/jinja/milestone/16?closed=1

  • The sandboxed environment handles indirect calls to str.format, such as by passing a stored reference to a filter that calls its argument. GHSA-q2x7-8rv6-6q7h
  • Escape template name before formatting it into error messages, to avoid issues with names that contain f-string syntax. #1792, GHSA-gmj6-6f8f-6699
  • Sandbox does not allow clear and pop on known mutable sequence types. #2032
  • Calling sync render for an async template uses asyncio.run. #1952
  • Avoid unclosed auto_aiter warnings. #1960
  • Return an aclose-able AsyncGenerator from Template.generate_async. #1960
  • Avoid leaving root_render_func() unclosed in Template.generate_async. #1960
  • Avoid leaving async generators unclosed in blocks, includes and extends. #1960
  • The runtime uses the correct concat function for the current environment when calling block references. #1701
  • Make |unique async-aware, allowing it to be used after another async-aware filter. #1781
  • |int filter handles OverflowError from scientific notation. #1921
  • Make compiling deterministic for tuple unpacking in a {% set ... %} call. #2021
  • Fix dunder protocol (copy/pickle/etc) interaction with Undefined objects. #2025
  • Fix copy/pickle support for the internal missing object. #2027
  • Environment.overlay(enable_async) is applied correctly. #2061
  • The error message from FileSystemLoader includes the paths that were searched. #1661
  • PackageLoader shows a clearer error message when the package does not contain the templates directory. #1705
  • Improve annotations for methods returning copies. #1880
  • urlize does not add mailto: to values like @a@b. #1870
  • Tests decorated with @pass_context can be used with the |select filter. #1624
  • Using set for multiple assignment (a, b = 1, 2) does not fail when the target is a namespace attribute. #1413
  • Using set in all branches of {% if %}{% elif %}{% else %} blocks does not cause the variable to be considered initially undefined. #1253
Changelog

Sourced from jinja2's changelog.

Version 3.1.5

Released 2024-12-21

  • The sandboxed environment handles indirect calls to str.format, such as by passing a stored reference to a filter that calls its argument. :ghsa:q2x7-8rv6-6q7h
  • Escape template name before formatting it into error messages, to avoid issues with names that contain f-string syntax. :issue:1792, :ghsa:gmj6-6f8f-6699
  • Sandbox does not allow clear and pop on known mutable sequence types. :issue:2032
  • Calling sync render for an async template uses asyncio.run. :pr:1952
  • Avoid unclosed auto_aiter warnings. :pr:1960
  • Return an aclose-able AsyncGenerator from Template.generate_async. :pr:1960
  • Avoid leaving root_render_func() unclosed in Template.generate_async. :pr:1960
  • Avoid leaving async generators unclosed in blocks, includes and extends. :pr:1960
  • The runtime uses the correct concat function for the current environment when calling block references. :issue:1701
  • Make |unique async-aware, allowing it to be used after another async-aware filter. :issue:1781
  • |int filter handles OverflowError from scientific notation. :issue:1921
  • Make compiling deterministic for tuple unpacking in a {% set ... %} call. :issue:2021
  • Fix dunder protocol (copy/pickle/etc) interaction with Undefined objects. :issue:2025
  • Fix copy/pickle support for the internal missing object. :issue:2027
  • Environment.overlay(enable_async) is applied correctly. :pr:2061
  • The error message from FileSystemLoader includes the paths that were searched. :issue:1661
  • PackageLoader shows a clearer error message when the package does not contain the templates directory. :issue:1705
  • Improve annotations for methods returning copies. :pr:1880
  • urlize does not add mailto: to values like @a@b. :pr:1870
  • Tests decorated with @pass_context`` can be used with the ``|select`` filter. :issue:1624`
  • Using set for multiple assignment (a, b = 1, 2) does not fail when the target is a namespace attribute. :issue:1413
  • Using set in all branches of {% if %}{% elif %}{% else %} blocks does not cause the variable to be considered initially undefined. :issue:1253
Commits
  • 877f6e5 release version 3.1.5
  • 8d58859 remove test pypi
  • eda8fe8 update dev dependencies
  • c8fdce1 Fix bug involving calling set on a template parameter within all branches of ...
  • 66587ce Fix bug where set would sometimes fail within if
  • fbc3a69 Add support for namespaces in tuple parsing (#1664)
  • b8f4831 more comments about nsref assignment
  • ee83219 Add support for namespaces in tuple assignment
  • 1d55cdd Triple quotes in docs (#2064)
  • 8a8eafc edit block assignment section
  • Additional commits viewable in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=jinja2&package-manager=pip&previous-version=3.1.4&new-version=3.1.5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/mozilla/experimenter/network/alerts).
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- cirrus/server/poetry.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cirrus/server/poetry.lock b/cirrus/server/poetry.lock index 45649d30ba..59883eba85 100644 --- a/cirrus/server/poetry.lock +++ b/cirrus/server/poetry.lock @@ -486,13 +486,13 @@ files = [ [[package]] name = "jinja2" -version = "3.1.4" +version = "3.1.5" description = "A very fast and expressive template engine." optional = false python-versions = ">=3.7" files = [ - {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, - {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, + {file = "jinja2-3.1.5-py3-none-any.whl", hash = "sha256:aba0f4dc9ed8013c424088f68a5c226f7d6097ed89b246d7749c2ec4175c6adb"}, + {file = "jinja2-3.1.5.tar.gz", hash = "sha256:8fefff8dc3034e27bb80d67c671eb8a9bc424c0ef4c0826edbff304cceff43bb"}, ] [package.dependencies] From de23ccd0a519e6878f1ade2a6dc12bbe0f92ad2e Mon Sep 17 00:00:00 2001 From: Benjamin Forehand Jr Date: Tue, 7 Jan 2025 13:37:40 -0600 Subject: [PATCH 09/36] chore(project): Pin poetry version to 1.8.4 (#11999) Because - Poetry introduced some breaking changes with their v2 release This commit - Pins all poetry installs to 1.8.4 for now. Fixes #11998 --- .circleci/config.yml | 2 +- experimenter/tests/integration/Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 221a85c773..2a36d12b75 100755 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -304,7 +304,7 @@ jobs: name: Download test files and run command: | curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/mozilla/application-services/main/install-nimbus-cli.sh | bash - pip install poetry + pip install poetry=1.8.4 make integration_test_nimbus_fenix PYTEST_ARGS="$PYTEST_ARGS" - android/save-gradle-cache: cache-prefix: v1a diff --git a/experimenter/tests/integration/Dockerfile b/experimenter/tests/integration/Dockerfile index 193af9a04d..9bd47b0b27 100755 --- a/experimenter/tests/integration/Dockerfile +++ b/experimenter/tests/integration/Dockerfile @@ -10,6 +10,6 @@ RUN apt-get update -qqy && \ python3-venv \ python3-pip -RUN pip install poetry +RUN pip install poetry==1.8.4 WORKDIR /code From 02f74362da1205de341c76e21008f74611358b21 Mon Sep 17 00:00:00 2001 From: dataops-ci-bot <59976087+dataops-ci-bot@users.noreply.github.com> Date: Wed, 8 Jan 2025 06:58:19 -0800 Subject: [PATCH 10/36] chore(nimbus): Update External Configs (#12004) SUMMARY: SUCCESS: fenix at master (6b61714b224f8cdca1a48ef1c51edab027f2c09f) version None fenix at master (6b61714b224f8cdca1a48ef1c51edab027f2c09f) version 136.0.0 fenix at beta (37d3995a57630da7952db8dc641236abd87cc9aa) version 135.0.0 fenix at release (bad91669ae17673b3f19d6f8d705ef156f0f7e08) version 134.0.1 firefox_ios at main (e93ef9d136efb9719311f3f51a24748d1e850bb3) version None firefox_ios at release/v134 (83fa5a2cbf8a2671f7c7e7c7cb60ab219e782ec8) version 134.1.0 firefox_ios at main (e93ef9d136efb9719311f3f51a24748d1e850bb3) version 136.0.0 focus_android at main (fe8a71cd70ad5674abe1824fe11dc78372b736c2) version None focus_ios at main (e93ef9d136efb9719311f3f51a24748d1e850bb3) version None focus_ios at release/v134 (83fa5a2cbf8a2671f7c7e7c7cb60ab219e782ec8) version 134.1.0 focus_ios at main (e93ef9d136efb9719311f3f51a24748d1e850bb3) version 136.0.0 monitor_cirrus at main (d91f5a5242282c7e65ee9d4b3f5180a4f6f68fc4) version None mozillavpn_backend_cirrus at main (86963e1fe3fbe3aaee3aa3776efad50a85c516e2) version None firefox_accounts_cirrus at main (930172986397cab94b89103a0863369c7f2718c1) version None firefox_desktop at central (bf40d95ccc9bf4bb1337d18ed853231b83382b7c) version None firefox_desktop at central (bf40d95ccc9bf4bb1337d18ed853231b83382b7c) version 136.0.0 firefox_desktop at beta (c04744fcc1cb75e70ce17e8d92172c3d40fbd3e6) version 135.0.0 firefox_desktop at release (ad89651d634a20ea7db2bd42eedab696128c289e) version 134.0.1 firefox_desktop at esr115 (2c64c4cc6e15d11c1dd1708dc30088074295ac62) version 115.20.0 firefox_desktop at esr128 (826f17057ab6c9f6c108d9dc489741e082c3672f) version 128.7.0 CACHED: firefox_ios at release/v131 (7444df581b62d357df12ddc3c90d821d940efbb8) version 131.5.0 (cached) firefox_ios at release/v132 (cb318d0061ec6354167ecc1968020d5d75f1bffc) version 132.2.0 (cached) firefox_ios at release/v133 (7c651ce29e94c6389af7a69ec6b5c44251976e92) version 133.5.0 (cached) firefox_ios at release/v135 (97d52f4eb357afc7cc73dfdf94ab6a585da2cf12) version 135.0.0 (cached) focus_android at releases_v121 (979fbe8d7fe04a9b09fe657bb787fda6f4d5ab42) version 121.1.1 (cached) focus_android at releases_v122 (1fcbfc41dba53965481a0e4d4725833bf3669dce) version 122.1.1 (cached) focus_android at releases_v123 (5a38e0cb4499f659a5fff308fa1deee653c0318b) version 123.1.1 (cached) focus_android at releases_v124 (0ad8d97fb3ab2ec6b9bb3905ee742900a4b9325d) version 124.2.1 (cached) focus_android at releases_v125 (2b43ab8069abac2bfee4b609e734c0207876a2ac) version 125.3.1 (cached) focus_android at focus-v125.3.0 (9f2990415376f169eb0053fceb329b70b4421bcb) version 125.3.0 (cached) focus_android at focus-v125.2.0 (d1c6eeb4167fc8ffed02cdfd3138fa696381d548) version 125.2.0 (cached) focus_android at main (fe8a71cd70ad5674abe1824fe11dc78372b736c2) version 125.0.0 (cached) focus_android at focus-v124.2.0 (7a0e399c7bc4faae43ce70ddc201c7899498d1b5) version 124.2.0 (cached) focus_android at focus-v124.1.0 (516df33ca96e950af1bf791893cd16d7add61c5d) version 124.1.0 (cached) focus_android at focus-v124.0 (5afe87a5bbb92f7ecf990a2fbc8095503a47c272) version 124.0.0 (cached) focus_android at focus-v123.1.0 (cb7c807e0fb5bc08131415e2e5ecef9da658d410) version 123.1.0 (cached) focus_android at focus-v123.0 (f5f378e2c05c9d69a5088c112c14fdea507d1c65) version 123.0.0 (cached) focus_android at focus-v122.1.0 (0d665405685c43c9266a3de65f16eabb832bb908) version 122.1.0 (cached) focus_android at focus-v122.0.1 (c67c9e840c00ec348a6a27adedad28feb54aa4a2) version 122.0.1 (cached) focus_android at focus-v122.0 (b49c4f23804d23cc727b8f70c061dccd64d720bc) version 122.0.0 (cached) focus_android at focus-v121.1.0 (62d5117f7996cc8862fdbdc0cb4a1dd5cdebedd6) version 121.1.0 (cached) focus_android at focus-v121.0.1 (fd4d2513324712e91577d8be18797e64089d3cf1) version 121.0.1 (cached) focus_android at focus-v121.0 (1955f8455fa2cac1b2080af9360996c06df5b4dd) version 121.0.0 (cached) focus_ios at release/v131 (7444df581b62d357df12ddc3c90d821d940efbb8) version 131.5.0 (cached) focus_ios at release/v132 (cb318d0061ec6354167ecc1968020d5d75f1bffc) version 132.2.0 (cached) focus_ios at release/v133 (7c651ce29e94c6389af7a69ec6b5c44251976e92) version 133.5.0 (cached) focus_ios at release/v135 (97d52f4eb357afc7cc73dfdf94ab6a585da2cf12) version 135.0.0 (cached) focus_ios at focus/klar-v134.0 (be550d94c2c7bc8b8902cdf7fe542a64e73a381a) version 134.0.0 (cached) focus_ios at focus/klar-v133.0 (a3372669a06fa684d3c5945c317d6787e3125303) version 133.0.0 (cached) focus_ios at focus/klar-v132.0 (d9ed6134db59ff456d343e2bb211aefd040319ac) version 132.0.0 (cached) focus_ios at focus/klar-v131.1 (b7dca2271b14988837524a30eb154d91eb5e4912) version 131.1.0 (cached) focus_ios at focus/klar-v131.0 (34d92c8df1b1522a1da88c23879b439d763ec133) version 131.0.0 (cached) Circle CI Task: https://circleci.com/gh/mozilla/experimenter/272845 --- .../features/manifests/fenix/.ref-cache.yaml | 6 +++--- .../features/manifests/fenix/beta.fml.yaml | 7 +++++++ .../features/manifests/fenix/developer.fml.yaml | 7 +++++++ .../features/manifests/fenix/experimenter.yaml | 8 ++++++++ .../features/manifests/fenix/nightly.fml.yaml | 7 +++++++ .../features/manifests/fenix/release.fml.yaml | 7 +++++++ .../features/manifests/fenix/v136.0.0/beta.fml.yaml | 7 +++++++ .../manifests/fenix/v136.0.0/developer.fml.yaml | 7 +++++++ .../manifests/fenix/v136.0.0/experimenter.yaml | 8 ++++++++ .../features/manifests/fenix/v136.0.0/nightly.fml.yaml | 7 +++++++ .../features/manifests/fenix/v136.0.0/release.fml.yaml | 7 +++++++ .../features/manifests/firefox-desktop/.ref-cache.yaml | 10 +++++----- .../features/manifests/focus-ios/.ref-cache.yaml | 4 ++-- .../features/manifests/ios/.ref-cache.yaml | 4 ++-- 14 files changed, 84 insertions(+), 12 deletions(-) diff --git a/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml b/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml index ade46b52b3..9caf6b484a 100644 --- a/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml @@ -1,3 +1,3 @@ -beta: a64cc659cd6532fb4e838d76c71f6162076cba17 -master: 7d1b5c88343879056168aa710a9ee743392604c0 -release: eac9a2a9d14dfb013cd293c69fb8c3e62f86baaa +beta: 37d3995a57630da7952db8dc641236abd87cc9aa +master: 6b61714b224f8cdca1a48ef1c51edab027f2c09f +release: bad91669ae17673b3f19d6f8d705ef156f0f7e08 diff --git a/experimenter/experimenter/features/manifests/fenix/beta.fml.yaml b/experimenter/experimenter/features/manifests/fenix/beta.fml.yaml index d68d0e1e44..1d3a72116d 100644 --- a/experimenter/experimenter/features/manifests/fenix/beta.fml.yaml +++ b/experimenter/experimenter/features/manifests/fenix/beta.fml.yaml @@ -478,6 +478,13 @@ features: description: Open in app button type: Boolean default: true + pki: + description: Certificate verification configuration + variables: + certificateTransparencyMode: + description: "What mode Certificate Transparency is in (0=disable, 1=telemetry only, 2=enforce).\n" + type: Int + default: 0 print: description: A feature for printing from the share or browser menu. variables: diff --git a/experimenter/experimenter/features/manifests/fenix/developer.fml.yaml b/experimenter/experimenter/features/manifests/fenix/developer.fml.yaml index 517bc02740..0741686dfa 100644 --- a/experimenter/experimenter/features/manifests/fenix/developer.fml.yaml +++ b/experimenter/experimenter/features/manifests/fenix/developer.fml.yaml @@ -504,6 +504,13 @@ features: description: Open in app button type: Boolean default: true + pki: + description: Certificate verification configuration + variables: + certificateTransparencyMode: + description: "What mode Certificate Transparency is in (0=disable, 1=telemetry only, 2=enforce).\n" + type: Int + default: 0 print: description: A feature for printing from the share or browser menu. variables: diff --git a/experimenter/experimenter/features/manifests/fenix/experimenter.yaml b/experimenter/experimenter/features/manifests/fenix/experimenter.yaml index 7409d0b772..cf4d61375a 100644 --- a/experimenter/experimenter/features/manifests/fenix/experimenter.yaml +++ b/experimenter/experimenter/features/manifests/fenix/experimenter.yaml @@ -274,6 +274,14 @@ pdfjs: open-in-app-button: type: boolean description: Open in app button +pki: + description: Certificate verification configuration + hasExposure: true + exposureDescription: "" + variables: + certificateTransparencyMode: + type: int + description: "What mode Certificate Transparency is in (0=disable, 1=telemetry only, 2=enforce).\n" print: description: A feature for printing from the share or browser menu. hasExposure: true diff --git a/experimenter/experimenter/features/manifests/fenix/nightly.fml.yaml b/experimenter/experimenter/features/manifests/fenix/nightly.fml.yaml index edcbcfeedf..3280e557a9 100644 --- a/experimenter/experimenter/features/manifests/fenix/nightly.fml.yaml +++ b/experimenter/experimenter/features/manifests/fenix/nightly.fml.yaml @@ -478,6 +478,13 @@ features: description: Open in app button type: Boolean default: true + pki: + description: Certificate verification configuration + variables: + certificateTransparencyMode: + description: "What mode Certificate Transparency is in (0=disable, 1=telemetry only, 2=enforce).\n" + type: Int + default: 0 print: description: A feature for printing from the share or browser menu. variables: diff --git a/experimenter/experimenter/features/manifests/fenix/release.fml.yaml b/experimenter/experimenter/features/manifests/fenix/release.fml.yaml index 5743e0dc57..fa536ea810 100644 --- a/experimenter/experimenter/features/manifests/fenix/release.fml.yaml +++ b/experimenter/experimenter/features/manifests/fenix/release.fml.yaml @@ -478,6 +478,13 @@ features: description: Open in app button type: Boolean default: true + pki: + description: Certificate verification configuration + variables: + certificateTransparencyMode: + description: "What mode Certificate Transparency is in (0=disable, 1=telemetry only, 2=enforce).\n" + type: Int + default: 0 print: description: A feature for printing from the share or browser menu. variables: diff --git a/experimenter/experimenter/features/manifests/fenix/v136.0.0/beta.fml.yaml b/experimenter/experimenter/features/manifests/fenix/v136.0.0/beta.fml.yaml index d68d0e1e44..1d3a72116d 100644 --- a/experimenter/experimenter/features/manifests/fenix/v136.0.0/beta.fml.yaml +++ b/experimenter/experimenter/features/manifests/fenix/v136.0.0/beta.fml.yaml @@ -478,6 +478,13 @@ features: description: Open in app button type: Boolean default: true + pki: + description: Certificate verification configuration + variables: + certificateTransparencyMode: + description: "What mode Certificate Transparency is in (0=disable, 1=telemetry only, 2=enforce).\n" + type: Int + default: 0 print: description: A feature for printing from the share or browser menu. variables: diff --git a/experimenter/experimenter/features/manifests/fenix/v136.0.0/developer.fml.yaml b/experimenter/experimenter/features/manifests/fenix/v136.0.0/developer.fml.yaml index 517bc02740..0741686dfa 100644 --- a/experimenter/experimenter/features/manifests/fenix/v136.0.0/developer.fml.yaml +++ b/experimenter/experimenter/features/manifests/fenix/v136.0.0/developer.fml.yaml @@ -504,6 +504,13 @@ features: description: Open in app button type: Boolean default: true + pki: + description: Certificate verification configuration + variables: + certificateTransparencyMode: + description: "What mode Certificate Transparency is in (0=disable, 1=telemetry only, 2=enforce).\n" + type: Int + default: 0 print: description: A feature for printing from the share or browser menu. variables: diff --git a/experimenter/experimenter/features/manifests/fenix/v136.0.0/experimenter.yaml b/experimenter/experimenter/features/manifests/fenix/v136.0.0/experimenter.yaml index 7409d0b772..cf4d61375a 100644 --- a/experimenter/experimenter/features/manifests/fenix/v136.0.0/experimenter.yaml +++ b/experimenter/experimenter/features/manifests/fenix/v136.0.0/experimenter.yaml @@ -274,6 +274,14 @@ pdfjs: open-in-app-button: type: boolean description: Open in app button +pki: + description: Certificate verification configuration + hasExposure: true + exposureDescription: "" + variables: + certificateTransparencyMode: + type: int + description: "What mode Certificate Transparency is in (0=disable, 1=telemetry only, 2=enforce).\n" print: description: A feature for printing from the share or browser menu. hasExposure: true diff --git a/experimenter/experimenter/features/manifests/fenix/v136.0.0/nightly.fml.yaml b/experimenter/experimenter/features/manifests/fenix/v136.0.0/nightly.fml.yaml index edcbcfeedf..3280e557a9 100644 --- a/experimenter/experimenter/features/manifests/fenix/v136.0.0/nightly.fml.yaml +++ b/experimenter/experimenter/features/manifests/fenix/v136.0.0/nightly.fml.yaml @@ -478,6 +478,13 @@ features: description: Open in app button type: Boolean default: true + pki: + description: Certificate verification configuration + variables: + certificateTransparencyMode: + description: "What mode Certificate Transparency is in (0=disable, 1=telemetry only, 2=enforce).\n" + type: Int + default: 0 print: description: A feature for printing from the share or browser menu. variables: diff --git a/experimenter/experimenter/features/manifests/fenix/v136.0.0/release.fml.yaml b/experimenter/experimenter/features/manifests/fenix/v136.0.0/release.fml.yaml index 5743e0dc57..fa536ea810 100644 --- a/experimenter/experimenter/features/manifests/fenix/v136.0.0/release.fml.yaml +++ b/experimenter/experimenter/features/manifests/fenix/v136.0.0/release.fml.yaml @@ -478,6 +478,13 @@ features: description: Open in app button type: Boolean default: true + pki: + description: Certificate verification configuration + variables: + certificateTransparencyMode: + description: "What mode Certificate Transparency is in (0=disable, 1=telemetry only, 2=enforce).\n" + type: Int + default: 0 print: description: A feature for printing from the share or browser menu. variables: diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml b/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml index 06d999c563..c93e352a01 100644 --- a/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml @@ -1,5 +1,5 @@ -beta: 2f218da698db4f92722be65f51a6e53d24321cec -central: 114a69547c262e92d13156de8a309ee3de9ac35a -esr115: 6a331477d572723c5a5f18cbcd665689c97165bc -esr128: 10845c3218167063ec1c2fe66ea032fb2f53162a -release: c455977f9b6c285c9c5ac1f9ae6b9bae5072ba84 +beta: c04744fcc1cb75e70ce17e8d92172c3d40fbd3e6 +central: bf40d95ccc9bf4bb1337d18ed853231b83382b7c +esr115: 2c64c4cc6e15d11c1dd1708dc30088074295ac62 +esr128: 826f17057ab6c9f6c108d9dc489741e082c3672f +release: ad89651d634a20ea7db2bd42eedab696128c289e diff --git a/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml b/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml index d0efb9bad6..83ffd01e35 100644 --- a/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml @@ -13,7 +13,7 @@ focus/klar-v131.1: b7dca2271b14988837524a30eb154d91eb5e4912 focus/klar-v132.0: d9ed6134db59ff456d343e2bb211aefd040319ac focus/klar-v133.0: a3372669a06fa684d3c5945c317d6787e3125303 focus/klar-v134.0: be550d94c2c7bc8b8902cdf7fe542a64e73a381a -main: 782d7a4b0ef7eadb70c56eb9486f3f6261b76468 +main: e93ef9d136efb9719311f3f51a24748d1e850bb3 release/v124: da250bed9e19c4978d4400d6d404cb312e33636e release/v125: a3e1e0773a00009e08d95726fd518ab642255ccd release/v126: 6f305409b4af68e8404401a2caad8cb0da9a0494 @@ -24,5 +24,5 @@ release/v130: a48ec1b1f0219e1987bb38bc4f6b838f37dc6f12 release/v131: 7444df581b62d357df12ddc3c90d821d940efbb8 release/v132: cb318d0061ec6354167ecc1968020d5d75f1bffc release/v133: 7c651ce29e94c6389af7a69ec6b5c44251976e92 -release/v134: 846f290dfd0627f1873a524da439ebd7a1a4a932 +release/v134: 83fa5a2cbf8a2671f7c7e7c7cb60ab219e782ec8 release/v135: 97d52f4eb357afc7cc73dfdf94ab6a585da2cf12 diff --git a/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml b/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml index 4e5f55d13d..6269b1b33a 100644 --- a/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml @@ -1,4 +1,4 @@ -main: 782d7a4b0ef7eadb70c56eb9486f3f6261b76468 +main: e93ef9d136efb9719311f3f51a24748d1e850bb3 release/v117: 43b690c450066d4dde1b2ccb93ed3714d244d502 release/v118: 89a7ea3c3372e5a4ef5b3c5b85499d26198d0524 release/v119: 7dc381f991c6d2a983c3ba7f0cffd880e8c29e7b @@ -16,7 +16,7 @@ release/v130: a48ec1b1f0219e1987bb38bc4f6b838f37dc6f12 release/v131: 7444df581b62d357df12ddc3c90d821d940efbb8 release/v132: cb318d0061ec6354167ecc1968020d5d75f1bffc release/v133: 7c651ce29e94c6389af7a69ec6b5c44251976e92 -release/v134: 846f290dfd0627f1873a524da439ebd7a1a4a932 +release/v134: 83fa5a2cbf8a2671f7c7e7c7cb60ab219e782ec8 release/v135: 97d52f4eb357afc7cc73dfdf94ab6a585da2cf12 v117.0: 3b275ab1e4ccef769d84437033c0c68acfd2df8a v117.1: 55ddcf473a65d106d43f6d2ae5af4076d6d03688 From 21a53cb54cc521095672c5aa768eab9146f19a80 Mon Sep 17 00:00:00 2001 From: dataops-ci-bot <59976087+dataops-ci-bot@users.noreply.github.com> Date: Wed, 8 Jan 2025 06:58:43 -0800 Subject: [PATCH 11/36] chore(nimbus): Update application-services (#12005) --- application-services/application-services.env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application-services/application-services.env b/application-services/application-services.env index 64d73af550..08b94e244c 100644 --- a/application-services/application-services.env +++ b/application-services/application-services.env @@ -1 +1 @@ -APPLICATION_SERVICES_BUILD_ID=136.20250107050243 +APPLICATION_SERVICES_BUILD_ID=136.20250108050329 From 7b39a9da3368672193d6f45f37399598d3c4b885 Mon Sep 17 00:00:00 2001 From: Benjamin Forehand Jr Date: Wed, 8 Jan 2025 09:02:59 -0600 Subject: [PATCH 12/36] chore(ci): Fix incorrect version set for poetry install. (#12003) Because - I must not have hit the equals key hard enough the second time because the pip poetry version setter is missing an `=` sign. This commit - Fixes that Fixes #11998 --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 2a36d12b75..4487efdefe 100755 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -304,7 +304,7 @@ jobs: name: Download test files and run command: | curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/mozilla/application-services/main/install-nimbus-cli.sh | bash - pip install poetry=1.8.4 + pip install poetry==1.8.4 make integration_test_nimbus_fenix PYTEST_ARGS="$PYTEST_ARGS" - android/save-gradle-cache: cache-prefix: v1a From d23284d80123ec003ae110e6dd14f155aec6c51b Mon Sep 17 00:00:00 2001 From: Rana Al-Khulaidi <69090627+RJAK11@users.noreply.github.com> Date: Wed, 8 Jan 2025 14:35:58 -0500 Subject: [PATCH 13/36] feat(nimbus): Add tooltips to new experiment timeline (#11991) Because - The new UI is missing the tooltips on the timeline This commit - Adds tooltips to the new experiment timeline explaining what each count of days on the timeline means Fixes #11748 Cursor does not show up in the screenshots. ![image](https://github.com/user-attachments/assets/a917adc0-5023-4cc5-9f2a-45db870a6d82) ![image](https://github.com/user-attachments/assets/20087025-f8a6-4726-b282-d78834fc76a6) ![image](https://github.com/user-attachments/assets/31fb1ba3-12d5-4a17-a4ab-347ff0a8b8dd) ![image](https://github.com/user-attachments/assets/038c34e7-96b5-4abe-adbd-e9033d1fd3f2) ![image](https://github.com/user-attachments/assets/5b48dbef-c0b9-44c2-84ea-044090aa10ee) ![image](https://github.com/user-attachments/assets/ca8e185f-e7cb-4425-bfc1-6b949391fb67) --- .../experimenter/experiments/models.py | 6 ++++++ .../experiments/tests/test_models.py | 7 +++++++ .../experimenter/nimbus_ui_new/constants.py | 21 +++++++++++++++++++ .../nimbus_experiments/experiment_base.html | 13 ++++++++++-- 4 files changed, 45 insertions(+), 2 deletions(-) diff --git a/experimenter/experimenter/experiments/models.py b/experimenter/experimenter/experiments/models.py index 72034f81a5..e78a765a33 100644 --- a/experimenter/experimenter/experiments/models.py +++ b/experimenter/experimenter/experiments/models.py @@ -876,30 +876,35 @@ def timeline(self): "date": self.draft_date, "is_active": self.is_draft, "days": self.computed_draft_days, + "tooltip": NimbusUIConstants.TIMELINE_TOOLTIPS["Draft"], }, { "label": self.Status.PREVIEW, "date": self.preview_date, "is_active": self.is_preview, "days": self.computed_preview_days, + "tooltip": NimbusUIConstants.TIMELINE_TOOLTIPS["Preview"], }, { "label": self.PublishStatus.REVIEW, "date": self.review_date, "is_active": self.is_review, "days": self.computed_review_days, + "tooltip": NimbusUIConstants.TIMELINE_TOOLTIPS["Review"], }, { "label": NimbusConstants.ENROLLMENT, "date": self.start_date, "is_active": self.is_enrollment, "days": self.computed_enrollment_days, + "tooltip": NimbusUIConstants.TIMELINE_TOOLTIPS["Enrollment"], }, { "label": self.Status.COMPLETE, "date": self.computed_end_date, "is_active": self.is_complete, "days": self.computed_duration_days, + "tooltip": NimbusUIConstants.TIMELINE_TOOLTIPS["Complete"], }, ] if not self.is_rollout: @@ -910,6 +915,7 @@ def timeline(self): "date": self._enrollment_end_date, "is_active": self.is_observation, "days": self.computed_observations_days, + "tooltip": NimbusUIConstants.TIMELINE_TOOLTIPS["Observation"], }, ) diff --git a/experimenter/experimenter/experiments/tests/test_models.py b/experimenter/experimenter/experiments/tests/test_models.py index f1e69bfb0c..7a31e69f1d 100644 --- a/experimenter/experimenter/experiments/tests/test_models.py +++ b/experimenter/experimenter/experiments/tests/test_models.py @@ -1777,36 +1777,42 @@ def test_timeline_dates_includes_correct_status_dates_and_flags(self): "date": experiment.draft_date, "is_active": False, "days": 1, + "tooltip": NimbusUIConstants.TIMELINE_TOOLTIPS["Draft"], }, { "label": "Preview", "date": experiment.preview_date, "is_active": False, "days": 0, + "tooltip": NimbusUIConstants.TIMELINE_TOOLTIPS["Preview"], }, { "label": "Review", "date": experiment.review_date, "is_active": False, "days": 2, + "tooltip": NimbusUIConstants.TIMELINE_TOOLTIPS["Review"], }, { "label": NimbusConstants.ENROLLMENT, "date": experiment.start_date, "is_active": False, "days": 2, + "tooltip": NimbusUIConstants.TIMELINE_TOOLTIPS["Enrollment"], }, { "label": NimbusConstants.OBSERVATION, "date": experiment._enrollment_end_date, "is_active": False, "days": 2, + "tooltip": NimbusUIConstants.TIMELINE_TOOLTIPS["Observation"], }, { "label": "Complete", "date": experiment.computed_end_date, "is_active": True, "days": 4, + "tooltip": NimbusUIConstants.TIMELINE_TOOLTIPS["Complete"], }, ] @@ -1815,6 +1821,7 @@ def test_timeline_dates_includes_correct_status_dates_and_flags(self): self.assertEqual(timeline[i]["date"], expected["date"]) self.assertEqual(timeline[i]["is_active"], expected["is_active"]) self.assertEqual(timeline[i].get("days"), expected["days"]) + self.assertEqual(timeline[i].get("tooltip"), expected["tooltip"]) def test_timeline_dates_complete_is_active_when_status_is_complete(self): experiment = NimbusExperimentFactory.create_with_lifecycle( diff --git a/experimenter/experimenter/nimbus_ui_new/constants.py b/experimenter/experimenter/nimbus_ui_new/constants.py index 2deb8b41ae..5ed8a168f9 100644 --- a/experimenter/experimenter/nimbus_ui_new/constants.py +++ b/experimenter/experimenter/nimbus_ui_new/constants.py @@ -28,3 +28,24 @@ class NimbusUIConstants: proportion has accounted for this:""" AUDIENCE_OVERLAP_WARNING = "https://experimenter.info/faq/warnings/#audience-overlap" + + TIMELINE_TOOLTIPS = { + "Draft": ( + "The duration from the initial draft of the experiment to its entry " + "into either the preview or review stage." + ), + "Preview": ("The number of days the experiment has spent in the preview stage."), + "Review": ("The number of days the experiment has spent in the review stage."), + "Enrollment": ( + "The duration from the start to the end of the participant enrollment " + "period." + ), + "Complete": ( + "The total number of days from the start of participant enrollment " + "to the end of the experiment." + ), + "Observation": ( + "The number of days the experiment was observed after the enrollment " + "period ended." + ), + } diff --git a/experimenter/experimenter/nimbus_ui_new/templates/nimbus_experiments/experiment_base.html b/experimenter/experimenter/nimbus_ui_new/templates/nimbus_experiments/experiment_base.html index 549585dbcc..f1640af5d9 100644 --- a/experimenter/experimenter/nimbus_ui_new/templates/nimbus_experiments/experiment_base.html +++ b/experimenter/experimenter/nimbus_ui_new/templates/nimbus_experiments/experiment_base.html @@ -7,7 +7,7 @@ {% block main_content_header %}
-
+

{{ experiment.name }}

QA Status: {{ experiment.qa_status|default:"Not Set"|title }} @@ -22,12 +22,21 @@

{{ experiment.name }}

{% endif %}
-
+
    {% for status in experiment.timeline %}
  • {{ status.label }} {{ status.date|default:'---' }} + {% if status.days is not None %} +
    + {{ status.days }} day{{ status.days|pluralize }} + +
    + {% endif %}
  • {% endfor %}
From b5b79622989995284463f6a8c0e81890cbf2640e Mon Sep 17 00:00:00 2001 From: dataops-ci-bot <59976087+dataops-ci-bot@users.noreply.github.com> Date: Thu, 9 Jan 2025 08:34:00 -0800 Subject: [PATCH 14/36] chore(nimbus): Update External Configs (#12010) SUMMARY: SUCCESS: fenix at master (48caa4719ed2c75a2937bcfea9e7326e87846984) version None fenix at master (48caa4719ed2c75a2937bcfea9e7326e87846984) version 136.0.0 fenix at beta (c3749118c6f30c862686981f97fc7e4a10d7abea) version 135.0.0 fenix at release (cd38106203c7d9f44b75a5a112cf0488c8c8a173) version 134.0.1 firefox_ios at main (548c1af9b723813272f1f6bda4515b88bdc065d2) version None firefox_ios at release/v135 (86d468dcc94ba87e31069e2a09779f0f38414c89) version 135.0.0 firefox_ios at main (548c1af9b723813272f1f6bda4515b88bdc065d2) version 136.0.0 focus_android at main (fe8a71cd70ad5674abe1824fe11dc78372b736c2) version None focus_ios at main (548c1af9b723813272f1f6bda4515b88bdc065d2) version None focus_ios at release/v135 (86d468dcc94ba87e31069e2a09779f0f38414c89) version 135.0.0 focus_ios at main (548c1af9b723813272f1f6bda4515b88bdc065d2) version 136.0.0 monitor_cirrus at main (d8fffd23e5e3850574e2364e58db82332ebb1eea) version None mozillavpn_backend_cirrus at main (86963e1fe3fbe3aaee3aa3776efad50a85c516e2) version None firefox_accounts_cirrus at main (f62e7ce479a1c991f3b1d5880ec5ea788d81e63a) version None firefox_desktop at central (6da2f152d57b1d53d526ce821330553db4947c84) version None firefox_desktop at central (6da2f152d57b1d53d526ce821330553db4947c84) version 136.0.0 firefox_desktop at beta (5d68d40f767ea617bd2408cab2255997d3506202) version 135.0.0 firefox_desktop at release (bfd0d58905f6ffb2963d967605b53b99e8a5e90e) version 134.0.1 firefox_desktop at esr115 (7f6c5d86c04cb9078dec5596c5b0dfb1cfcfb7c3) version 115.20.0 firefox_desktop at esr128 (35a312538af48e822f0ae314b89a7b23a1fa1de9) version 128.7.0 CACHED: firefox_ios at release/v131 (7444df581b62d357df12ddc3c90d821d940efbb8) version 131.5.0 (cached) firefox_ios at release/v132 (cb318d0061ec6354167ecc1968020d5d75f1bffc) version 132.2.0 (cached) firefox_ios at release/v133 (7c651ce29e94c6389af7a69ec6b5c44251976e92) version 133.5.0 (cached) firefox_ios at release/v134 (83fa5a2cbf8a2671f7c7e7c7cb60ab219e782ec8) version 134.1.0 (cached) focus_android at releases_v121 (979fbe8d7fe04a9b09fe657bb787fda6f4d5ab42) version 121.1.1 (cached) focus_android at releases_v122 (1fcbfc41dba53965481a0e4d4725833bf3669dce) version 122.1.1 (cached) focus_android at releases_v123 (5a38e0cb4499f659a5fff308fa1deee653c0318b) version 123.1.1 (cached) focus_android at releases_v124 (0ad8d97fb3ab2ec6b9bb3905ee742900a4b9325d) version 124.2.1 (cached) focus_android at releases_v125 (2b43ab8069abac2bfee4b609e734c0207876a2ac) version 125.3.1 (cached) focus_android at focus-v125.3.0 (9f2990415376f169eb0053fceb329b70b4421bcb) version 125.3.0 (cached) focus_android at focus-v125.2.0 (d1c6eeb4167fc8ffed02cdfd3138fa696381d548) version 125.2.0 (cached) focus_android at main (fe8a71cd70ad5674abe1824fe11dc78372b736c2) version 125.0.0 (cached) focus_android at focus-v124.2.0 (7a0e399c7bc4faae43ce70ddc201c7899498d1b5) version 124.2.0 (cached) focus_android at focus-v124.1.0 (516df33ca96e950af1bf791893cd16d7add61c5d) version 124.1.0 (cached) focus_android at focus-v124.0 (5afe87a5bbb92f7ecf990a2fbc8095503a47c272) version 124.0.0 (cached) focus_android at focus-v123.1.0 (cb7c807e0fb5bc08131415e2e5ecef9da658d410) version 123.1.0 (cached) focus_android at focus-v123.0 (f5f378e2c05c9d69a5088c112c14fdea507d1c65) version 123.0.0 (cached) focus_android at focus-v122.1.0 (0d665405685c43c9266a3de65f16eabb832bb908) version 122.1.0 (cached) focus_android at focus-v122.0.1 (c67c9e840c00ec348a6a27adedad28feb54aa4a2) version 122.0.1 (cached) focus_android at focus-v122.0 (b49c4f23804d23cc727b8f70c061dccd64d720bc) version 122.0.0 (cached) focus_android at focus-v121.1.0 (62d5117f7996cc8862fdbdc0cb4a1dd5cdebedd6) version 121.1.0 (cached) focus_android at focus-v121.0.1 (fd4d2513324712e91577d8be18797e64089d3cf1) version 121.0.1 (cached) focus_android at focus-v121.0 (1955f8455fa2cac1b2080af9360996c06df5b4dd) version 121.0.0 (cached) focus_ios at release/v131 (7444df581b62d357df12ddc3c90d821d940efbb8) version 131.5.0 (cached) focus_ios at release/v132 (cb318d0061ec6354167ecc1968020d5d75f1bffc) version 132.2.0 (cached) focus_ios at release/v133 (7c651ce29e94c6389af7a69ec6b5c44251976e92) version 133.5.0 (cached) focus_ios at release/v134 (83fa5a2cbf8a2671f7c7e7c7cb60ab219e782ec8) version 134.1.0 (cached) focus_ios at focus/klar-v134.0 (be550d94c2c7bc8b8902cdf7fe542a64e73a381a) version 134.0.0 (cached) focus_ios at focus/klar-v133.0 (a3372669a06fa684d3c5945c317d6787e3125303) version 133.0.0 (cached) focus_ios at focus/klar-v132.0 (d9ed6134db59ff456d343e2bb211aefd040319ac) version 132.0.0 (cached) focus_ios at focus/klar-v131.1 (b7dca2271b14988837524a30eb154d91eb5e4912) version 131.1.0 (cached) focus_ios at focus/klar-v131.0 (34d92c8df1b1522a1da88c23879b439d763ec133) version 131.0.0 (cached) Circle CI Task: https://circleci.com/gh/mozilla/experimenter/273170 --- .../features/manifests/fenix/.ref-cache.yaml | 6 +++--- .../features/manifests/fenix/v135.0.0/beta.fml.yaml | 7 +++++++ .../manifests/fenix/v135.0.0/developer.fml.yaml | 7 +++++++ .../manifests/fenix/v135.0.0/experimenter.yaml | 8 ++++++++ .../features/manifests/fenix/v135.0.0/nightly.fml.yaml | 7 +++++++ .../features/manifests/fenix/v135.0.0/release.fml.yaml | 7 +++++++ .../features/manifests/firefox-desktop/.ref-cache.yaml | 10 +++++----- .../manifests/firefox-desktop/experimenter.yaml | 6 ++++++ .../firefox-desktop/v136.0.0/experimenter.yaml | 6 ++++++ .../features/manifests/focus-ios/.ref-cache.yaml | 4 ++-- .../features/manifests/ios/.ref-cache.yaml | 4 ++-- 11 files changed, 60 insertions(+), 12 deletions(-) diff --git a/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml b/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml index 9caf6b484a..39a4793b9c 100644 --- a/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml @@ -1,3 +1,3 @@ -beta: 37d3995a57630da7952db8dc641236abd87cc9aa -master: 6b61714b224f8cdca1a48ef1c51edab027f2c09f -release: bad91669ae17673b3f19d6f8d705ef156f0f7e08 +beta: c3749118c6f30c862686981f97fc7e4a10d7abea +master: 48caa4719ed2c75a2937bcfea9e7326e87846984 +release: cd38106203c7d9f44b75a5a112cf0488c8c8a173 diff --git a/experimenter/experimenter/features/manifests/fenix/v135.0.0/beta.fml.yaml b/experimenter/experimenter/features/manifests/fenix/v135.0.0/beta.fml.yaml index acf2ad4341..81188f4417 100644 --- a/experimenter/experimenter/features/manifests/fenix/v135.0.0/beta.fml.yaml +++ b/experimenter/experimenter/features/manifests/fenix/v135.0.0/beta.fml.yaml @@ -467,6 +467,13 @@ features: description: Open in app button type: Boolean default: true + pki: + description: Certificate verification configuration + variables: + certificateTransparencyMode: + description: "What mode Certificate Transparency is in (0=disable, 1=telemetry only, 2=enforce).\n" + type: Int + default: 0 print: description: A feature for printing from the share or browser menu. variables: diff --git a/experimenter/experimenter/features/manifests/fenix/v135.0.0/developer.fml.yaml b/experimenter/experimenter/features/manifests/fenix/v135.0.0/developer.fml.yaml index c3606ed74c..185a52d5c5 100644 --- a/experimenter/experimenter/features/manifests/fenix/v135.0.0/developer.fml.yaml +++ b/experimenter/experimenter/features/manifests/fenix/v135.0.0/developer.fml.yaml @@ -493,6 +493,13 @@ features: description: Open in app button type: Boolean default: true + pki: + description: Certificate verification configuration + variables: + certificateTransparencyMode: + description: "What mode Certificate Transparency is in (0=disable, 1=telemetry only, 2=enforce).\n" + type: Int + default: 0 print: description: A feature for printing from the share or browser menu. variables: diff --git a/experimenter/experimenter/features/manifests/fenix/v135.0.0/experimenter.yaml b/experimenter/experimenter/features/manifests/fenix/v135.0.0/experimenter.yaml index 1dc5541d02..2560e8bd6f 100644 --- a/experimenter/experimenter/features/manifests/fenix/v135.0.0/experimenter.yaml +++ b/experimenter/experimenter/features/manifests/fenix/v135.0.0/experimenter.yaml @@ -263,6 +263,14 @@ pdfjs: open-in-app-button: type: boolean description: Open in app button +pki: + description: Certificate verification configuration + hasExposure: true + exposureDescription: "" + variables: + certificateTransparencyMode: + type: int + description: "What mode Certificate Transparency is in (0=disable, 1=telemetry only, 2=enforce).\n" print: description: A feature for printing from the share or browser menu. hasExposure: true diff --git a/experimenter/experimenter/features/manifests/fenix/v135.0.0/nightly.fml.yaml b/experimenter/experimenter/features/manifests/fenix/v135.0.0/nightly.fml.yaml index 198ff574e5..80ad098604 100644 --- a/experimenter/experimenter/features/manifests/fenix/v135.0.0/nightly.fml.yaml +++ b/experimenter/experimenter/features/manifests/fenix/v135.0.0/nightly.fml.yaml @@ -467,6 +467,13 @@ features: description: Open in app button type: Boolean default: true + pki: + description: Certificate verification configuration + variables: + certificateTransparencyMode: + description: "What mode Certificate Transparency is in (0=disable, 1=telemetry only, 2=enforce).\n" + type: Int + default: 0 print: description: A feature for printing from the share or browser menu. variables: diff --git a/experimenter/experimenter/features/manifests/fenix/v135.0.0/release.fml.yaml b/experimenter/experimenter/features/manifests/fenix/v135.0.0/release.fml.yaml index 01739864d1..e50544a69f 100644 --- a/experimenter/experimenter/features/manifests/fenix/v135.0.0/release.fml.yaml +++ b/experimenter/experimenter/features/manifests/fenix/v135.0.0/release.fml.yaml @@ -467,6 +467,13 @@ features: description: Open in app button type: Boolean default: true + pki: + description: Certificate verification configuration + variables: + certificateTransparencyMode: + description: "What mode Certificate Transparency is in (0=disable, 1=telemetry only, 2=enforce).\n" + type: Int + default: 0 print: description: A feature for printing from the share or browser menu. variables: diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml b/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml index c93e352a01..ea9310b94a 100644 --- a/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml @@ -1,5 +1,5 @@ -beta: c04744fcc1cb75e70ce17e8d92172c3d40fbd3e6 -central: bf40d95ccc9bf4bb1337d18ed853231b83382b7c -esr115: 2c64c4cc6e15d11c1dd1708dc30088074295ac62 -esr128: 826f17057ab6c9f6c108d9dc489741e082c3672f -release: ad89651d634a20ea7db2bd42eedab696128c289e +beta: 5d68d40f767ea617bd2408cab2255997d3506202 +central: 6da2f152d57b1d53d526ce821330553db4947c84 +esr115: 7f6c5d86c04cb9078dec5596c5b0dfb1cfcfb7c3 +esr128: 35a312538af48e822f0ae314b89a7b23a1fa1de9 +release: bfd0d58905f6ffb2963d967605b53b99e8a5e90e diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/experimenter.yaml b/experimenter/experimenter/features/manifests/firefox-desktop/experimenter.yaml index fea84dd44a..ce2ad13d95 100644 --- a/experimenter/experimenter/features/manifests/firefox-desktop/experimenter.yaml +++ b/experimenter/experimenter/features/manifests/firefox-desktop/experimenter.yaml @@ -1506,6 +1506,12 @@ email-autocomplete-relay: type: string description: Which Relay UI treatment to show fallbackPref: signon.firefoxRelay.firstOfferVersionFallback + showToAllBrowsers: + type: boolean + setPref: + branch: user + pref: signon.firefoxRelay.showToAllBrowsers + description: Whether to show Relay to Firefox users who are NOT signed into FXA. # This feature flag mirrors the one used for ios # https://github.com/mozilla-mobile/firefox-ios/blob/main/nimbus-features/addressAutofillFeature.yaml diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/v136.0.0/experimenter.yaml b/experimenter/experimenter/features/manifests/firefox-desktop/v136.0.0/experimenter.yaml index fea84dd44a..ce2ad13d95 100644 --- a/experimenter/experimenter/features/manifests/firefox-desktop/v136.0.0/experimenter.yaml +++ b/experimenter/experimenter/features/manifests/firefox-desktop/v136.0.0/experimenter.yaml @@ -1506,6 +1506,12 @@ email-autocomplete-relay: type: string description: Which Relay UI treatment to show fallbackPref: signon.firefoxRelay.firstOfferVersionFallback + showToAllBrowsers: + type: boolean + setPref: + branch: user + pref: signon.firefoxRelay.showToAllBrowsers + description: Whether to show Relay to Firefox users who are NOT signed into FXA. # This feature flag mirrors the one used for ios # https://github.com/mozilla-mobile/firefox-ios/blob/main/nimbus-features/addressAutofillFeature.yaml diff --git a/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml b/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml index 83ffd01e35..6efd46b555 100644 --- a/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml @@ -13,7 +13,7 @@ focus/klar-v131.1: b7dca2271b14988837524a30eb154d91eb5e4912 focus/klar-v132.0: d9ed6134db59ff456d343e2bb211aefd040319ac focus/klar-v133.0: a3372669a06fa684d3c5945c317d6787e3125303 focus/klar-v134.0: be550d94c2c7bc8b8902cdf7fe542a64e73a381a -main: e93ef9d136efb9719311f3f51a24748d1e850bb3 +main: 548c1af9b723813272f1f6bda4515b88bdc065d2 release/v124: da250bed9e19c4978d4400d6d404cb312e33636e release/v125: a3e1e0773a00009e08d95726fd518ab642255ccd release/v126: 6f305409b4af68e8404401a2caad8cb0da9a0494 @@ -25,4 +25,4 @@ release/v131: 7444df581b62d357df12ddc3c90d821d940efbb8 release/v132: cb318d0061ec6354167ecc1968020d5d75f1bffc release/v133: 7c651ce29e94c6389af7a69ec6b5c44251976e92 release/v134: 83fa5a2cbf8a2671f7c7e7c7cb60ab219e782ec8 -release/v135: 97d52f4eb357afc7cc73dfdf94ab6a585da2cf12 +release/v135: 86d468dcc94ba87e31069e2a09779f0f38414c89 diff --git a/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml b/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml index 6269b1b33a..4f129bdcea 100644 --- a/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml @@ -1,4 +1,4 @@ -main: e93ef9d136efb9719311f3f51a24748d1e850bb3 +main: 548c1af9b723813272f1f6bda4515b88bdc065d2 release/v117: 43b690c450066d4dde1b2ccb93ed3714d244d502 release/v118: 89a7ea3c3372e5a4ef5b3c5b85499d26198d0524 release/v119: 7dc381f991c6d2a983c3ba7f0cffd880e8c29e7b @@ -17,7 +17,7 @@ release/v131: 7444df581b62d357df12ddc3c90d821d940efbb8 release/v132: cb318d0061ec6354167ecc1968020d5d75f1bffc release/v133: 7c651ce29e94c6389af7a69ec6b5c44251976e92 release/v134: 83fa5a2cbf8a2671f7c7e7c7cb60ab219e782ec8 -release/v135: 97d52f4eb357afc7cc73dfdf94ab6a585da2cf12 +release/v135: 86d468dcc94ba87e31069e2a09779f0f38414c89 v117.0: 3b275ab1e4ccef769d84437033c0c68acfd2df8a v117.1: 55ddcf473a65d106d43f6d2ae5af4076d6d03688 v117.2: 5cc367aa8857199cd8a54d53e8faf6696c5614c3 From e431b3e56456e267a3180e073dccb9d623a7c450 Mon Sep 17 00:00:00 2001 From: Jared Lockhart <119884+jaredlockhart@users.noreply.github.com> Date: Thu, 9 Jan 2025 14:41:13 -0500 Subject: [PATCH 15/36] chore(nimbus): add version 134.1.0 (#12012) Becuase * We need to targeting 134.1.0 This commit * Adds version 134.1.0 fixes #12011 --- experimenter/experimenter/experiments/constants.py | 1 + experimenter/experimenter/nimbus-ui/schema.graphql | 1 + experimenter/experimenter/nimbus-ui/src/types/globalTypes.ts | 1 + 3 files changed, 3 insertions(+) diff --git a/experimenter/experimenter/experiments/constants.py b/experimenter/experimenter/experiments/constants.py index b89c5b5e1b..86f02c4b41 100644 --- a/experimenter/experimenter/experiments/constants.py +++ b/experimenter/experimenter/experiments/constants.py @@ -584,6 +584,7 @@ def parse(version_str): FIREFOX_133_B8 = "133.0b8" FIREFOX_133_0_1 = "133.0.1" FIREFOX_134 = "134.!" + FIREFOX_134_1_0 = "134.1.0" FIREFOX_135 = "135.!" FIREFOX_136 = "136.!" FIREFOX_137 = "137.!" diff --git a/experimenter/experimenter/nimbus-ui/schema.graphql b/experimenter/experimenter/nimbus-ui/schema.graphql index 4040fd7242..a7133a0fbe 100644 --- a/experimenter/experimenter/nimbus-ui/schema.graphql +++ b/experimenter/experimenter/nimbus-ui/schema.graphql @@ -298,6 +298,7 @@ enum NimbusExperimentFirefoxVersionEnum { FIREFOX_133_B8 FIREFOX_133_0_1 FIREFOX_134 + FIREFOX_134_1_0 FIREFOX_135 FIREFOX_136 FIREFOX_137 diff --git a/experimenter/experimenter/nimbus-ui/src/types/globalTypes.ts b/experimenter/experimenter/nimbus-ui/src/types/globalTypes.ts index cb11337506..1e467aad0d 100644 --- a/experimenter/experimenter/nimbus-ui/src/types/globalTypes.ts +++ b/experimenter/experimenter/nimbus-ui/src/types/globalTypes.ts @@ -128,6 +128,7 @@ export enum NimbusExperimentFirefoxVersionEnum { FIREFOX_133_0_1 = "FIREFOX_133_0_1", FIREFOX_133_B8 = "FIREFOX_133_B8", FIREFOX_134 = "FIREFOX_134", + FIREFOX_134_1_0 = "FIREFOX_134_1_0", FIREFOX_135 = "FIREFOX_135", FIREFOX_136 = "FIREFOX_136", FIREFOX_137 = "FIREFOX_137", From ba4a55c7facb2d169ab424da6b849f7992b77118 Mon Sep 17 00:00:00 2001 From: Jared Lockhart <119884+jaredlockhart@users.noreply.github.com> Date: Thu, 9 Jan 2025 16:13:35 -0500 Subject: [PATCH 16/36] feat(nimbus): hide archived experiments from require/exclude fields (#12015) Because * We need a way to hide some experiments from the require/exclude field so users don't accidentally select the wrong one when they have nearly identical names * The simplest way to do that for now is to just use archiving as a way to hide them from the drop downs This commit * Hides archived experiments from the require/exclude drop downs in both the old and new Nimbus UI fixes #12013 --- .../FormAudience/index.test.tsx | 59 +++++++++++++++++++ .../PageEditAudience/FormAudience/index.tsx | 6 +- .../nimbus-ui/src/gql/experiments.ts | 3 + .../experimenter/nimbus-ui/src/lib/mocks.tsx | 1 + .../types/getAllExperimentsByApplication.ts | 1 + .../nimbus-ui/src/types/getExperiment.ts | 2 + .../experimenter/nimbus_ui_new/forms.py | 2 +- .../nimbus_ui_new/tests/test_forms.py | 58 ++++++++++++++++++ 8 files changed, 128 insertions(+), 4 deletions(-) diff --git a/experimenter/experimenter/nimbus-ui/src/components/PageEditAudience/FormAudience/index.test.tsx b/experimenter/experimenter/nimbus-ui/src/components/PageEditAudience/FormAudience/index.test.tsx index 71e28c884e..f49fdc2309 100644 --- a/experimenter/experimenter/nimbus-ui/src/components/PageEditAudience/FormAudience/index.test.tsx +++ b/experimenter/experimenter/nimbus-ui/src/components/PageEditAudience/FormAudience/index.test.tsx @@ -150,6 +150,61 @@ describe("FormAudience", () => { ).toBeUndefined(); }); + it("only hides archived experiments from required and excluded drop downs", async () => { + const experiment = { + ...MOCK_EXPERIMENT, + name: MOCK_EXPERIMENTS_BY_APPLICATION[0].name, + slug: MOCK_EXPERIMENTS_BY_APPLICATION[0].slug, + id: MOCK_EXPERIMENTS_BY_APPLICATION[0].id, + }; + + const experimentsByApplication = [ + { + ...MOCK_EXPERIMENTS_BY_APPLICATION[1], + name: "available", + treatmentBranches: [], + isArchived: false, + }, + { + ...MOCK_EXPERIMENTS_BY_APPLICATION[2], + name: "archived", + treatmentBranches: [], + isArchived: true, + }, + ]; + + const { container } = render( + , + ); + + const excluded = screen.getByLabelText(/Exclude users enrolled/); + await selectEvent.openMenu(excluded); + let options = container.querySelectorAll(query("excludedExperiments")); + + expect(options.length).toEqual(2); + expect( + Array.from(options, (e) => e.textContent).filter((text) => + text?.includes("archived"), + ).length, + ).toEqual(0); + + const required = screen.getByLabelText(/Require users to be enrolled/); + await selectEvent.openMenu(required); + options = container.querySelectorAll(query("requiredExperiments")); + + expect(options.length).toEqual(2); + expect( + Array.from(options, (e) => e.textContent).filter((text) => + text?.includes("archived"), + ).length, + ).toEqual(0); + }); + it("saves required and excluded experiments with all branches for experiments", async () => { const onSubmit = jest.fn(); const MOCK_EXPERIMENTS_BY_APPLICATION: getAllExperimentsByApplication_experimentsByApplication[] = @@ -163,6 +218,7 @@ describe("FormAudience", () => { publicDescription: "mock description", referenceBranch: { slug: "control" }, treatmentBranches: [{ slug: "treatment" }], + isArchived: false, }), ); const experiment: getExperiment_experimentBySlug = mockExperimentQuery( @@ -241,6 +297,7 @@ describe("FormAudience", () => { publicDescription: "mock description", referenceBranch: { slug: "control" }, treatmentBranches: [{ slug: "treatment" }], + isArchived: false, }), ); const experiment: getExperiment_experimentBySlug = mockExperimentQuery( @@ -320,6 +377,7 @@ describe("FormAudience", () => { publicDescription: "mock description", referenceBranch: { slug: "control" }, treatmentBranches: [{ slug: "treatment" }], + isArchived: false, }), ); const experiment: getExperiment_experimentBySlug = mockExperimentQuery( @@ -398,6 +456,7 @@ describe("FormAudience", () => { publicDescription: "mock description", referenceBranch: { slug: "control" }, treatmentBranches: [{ slug: "treatment" }], + isArchived: false, }), ); const experiment: getExperiment_experimentBySlug = mockExperimentQuery( diff --git a/experimenter/experimenter/nimbus-ui/src/components/PageEditAudience/FormAudience/index.tsx b/experimenter/experimenter/nimbus-ui/src/components/PageEditAudience/FormAudience/index.tsx index b7d791d448..150cca1b22 100644 --- a/experimenter/experimenter/nimbus-ui/src/components/PageEditAudience/FormAudience/index.tsx +++ b/experimenter/experimenter/nimbus-ui/src/components/PageEditAudience/FormAudience/index.tsx @@ -159,9 +159,9 @@ function selectExperimentOptions( allExperiments: getAllExperimentsByApplication_experimentsByApplication[], selectedExperimentBranchValues?: string[], ): SelectExperimentBranchOption[] { - let selectableExperimentBranchOptions = allExperiments.flatMap( - toSelectExperimentBranchOptions, - ); + let selectableExperimentBranchOptions = allExperiments + .filter((experiment) => !experiment.isArchived) + .flatMap(toSelectExperimentBranchOptions); if (selectedExperimentBranchValues) { const selectedExperimentBranchValuesSet = new Set( diff --git a/experimenter/experimenter/nimbus-ui/src/gql/experiments.ts b/experimenter/experimenter/nimbus-ui/src/gql/experiments.ts index f702204593..ab12126473 100644 --- a/experimenter/experimenter/nimbus-ui/src/gql/experiments.ts +++ b/experimenter/experimenter/nimbus-ui/src/gql/experiments.ts @@ -149,6 +149,7 @@ export const GET_EXPERIMENT_QUERY = gql` treatmentBranches { slug } + isArchived } branchSlug } @@ -164,6 +165,7 @@ export const GET_EXPERIMENT_QUERY = gql` treatmentBranches { slug } + isArchived } branchSlug } @@ -343,6 +345,7 @@ export const GET_ALL_EXPERIMENTS_BY_APPLICATION_QUERY = gql` treatmentBranches { slug } + isArchived } } `; diff --git a/experimenter/experimenter/nimbus-ui/src/lib/mocks.tsx b/experimenter/experimenter/nimbus-ui/src/lib/mocks.tsx index a58797ecaf..15104384a3 100644 --- a/experimenter/experimenter/nimbus-ui/src/lib/mocks.tsx +++ b/experimenter/experimenter/nimbus-ui/src/lib/mocks.tsx @@ -1150,6 +1150,7 @@ export const MOCK_EXPERIMENTS_BY_APPLICATION: getAllExperimentsByApplication_exp publicDescription: "mock description", referenceBranch: { slug: "control" }, treatmentBranches: [{ slug: "treatment" }], + isArchived: false, })); // Basically the same as useOutcomes, but uses the mocked config values diff --git a/experimenter/experimenter/nimbus-ui/src/types/getAllExperimentsByApplication.ts b/experimenter/experimenter/nimbus-ui/src/types/getAllExperimentsByApplication.ts index 88b24212b5..9f3ff60476 100644 --- a/experimenter/experimenter/nimbus-ui/src/types/getAllExperimentsByApplication.ts +++ b/experimenter/experimenter/nimbus-ui/src/types/getAllExperimentsByApplication.ts @@ -24,6 +24,7 @@ export interface getAllExperimentsByApplication_experimentsByApplication { publicDescription: string | null; referenceBranch: getAllExperimentsByApplication_experimentsByApplication_referenceBranch | null; treatmentBranches: (getAllExperimentsByApplication_experimentsByApplication_treatmentBranches | null)[] | null; + isArchived: boolean | null; } export interface getAllExperimentsByApplication { diff --git a/experimenter/experimenter/nimbus-ui/src/types/getExperiment.ts b/experimenter/experimenter/nimbus-ui/src/types/getExperiment.ts index 8480f6b57e..9482f109ed 100644 --- a/experimenter/experimenter/nimbus-ui/src/types/getExperiment.ts +++ b/experimenter/experimenter/nimbus-ui/src/types/getExperiment.ts @@ -107,6 +107,7 @@ export interface getExperiment_experimentBySlug_excludedExperimentsBranches_excl publicDescription: string | null; referenceBranch: getExperiment_experimentBySlug_excludedExperimentsBranches_excludedExperiment_referenceBranch | null; treatmentBranches: (getExperiment_experimentBySlug_excludedExperimentsBranches_excludedExperiment_treatmentBranches | null)[] | null; + isArchived: boolean | null; } export interface getExperiment_experimentBySlug_excludedExperimentsBranches { @@ -129,6 +130,7 @@ export interface getExperiment_experimentBySlug_requiredExperimentsBranches_requ publicDescription: string | null; referenceBranch: getExperiment_experimentBySlug_requiredExperimentsBranches_requiredExperiment_referenceBranch | null; treatmentBranches: (getExperiment_experimentBySlug_requiredExperimentsBranches_requiredExperiment_treatmentBranches | null)[] | null; + isArchived: boolean | null; } export interface getExperiment_experimentBySlug_requiredExperimentsBranches { diff --git a/experimenter/experimenter/nimbus_ui_new/forms.py b/experimenter/experimenter/nimbus_ui_new/forms.py index e83381a063..6045f8e746 100644 --- a/experimenter/experimenter/nimbus_ui_new/forms.py +++ b/experimenter/experimenter/nimbus_ui_new/forms.py @@ -342,7 +342,7 @@ def get_experiment_branch_choices(): return sorted( [ branch_choice - for experiment in NimbusExperiment.objects.all() + for experiment in NimbusExperiment.objects.exclude(is_archived=True) for branch_choice in experiment.branch_choices() ] ) diff --git a/experimenter/experimenter/nimbus_ui_new/tests/test_forms.py b/experimenter/experimenter/nimbus_ui_new/tests/test_forms.py index 03296e511b..ad6abefbe6 100644 --- a/experimenter/experimenter/nimbus_ui_new/tests/test_forms.py +++ b/experimenter/experimenter/nimbus_ui_new/tests/test_forms.py @@ -505,3 +505,61 @@ def test_valid_form_saves(self): parent_experiment=experiment, child_experiment=required, branch_slug=None ).exists() ) + + def test_archived_required_or_excluded_is_invalid(self): + country = CountryFactory.create() + locale = LocaleFactory.create() + language = LanguageFactory.create() + excluded = NimbusExperimentFactory.create_with_lifecycle( + NimbusExperimentFactory.Lifecycles.CREATED, + name="archived-excluded", + application=NimbusExperiment.Application.DESKTOP, + is_archived=True, + ) + required = NimbusExperimentFactory.create_with_lifecycle( + NimbusExperimentFactory.Lifecycles.CREATED, + name="archived-required", + application=NimbusExperiment.Application.DESKTOP, + is_archived=True, + ) + experiment = NimbusExperimentFactory( + channel=NimbusExperiment.Channel.NO_CHANNEL, + application=NimbusExperiment.Application.DESKTOP, + firefox_min_version=NimbusExperiment.Version.NO_VERSION, + population_percent=0.0, + proposed_duration=0, + proposed_enrollment=0, + proposed_release_date=None, + targeting_config_slug=NimbusExperiment.TargetingConfig.NO_TARGETING, + total_enrolled_clients=0, + is_sticky=False, + countries=[], + locales=[], + languages=[], + ) + + form = AudienceForm( + instance=experiment, + data={ + "changelog_message": "test changelog message", + "channel": NimbusExperiment.Channel.BETA, + "countries": [country.id], + "excluded_experiments_branches": [excluded.branch_choices()[0][0]], + "firefox_max_version": NimbusExperiment.Version.FIREFOX_84, + "firefox_min_version": NimbusExperiment.Version.FIREFOX_83, + "is_sticky": True, + "languages": [language.id], + "locales": [locale.id], + "population_percent": 10, + "proposed_duration": 120, + "proposed_enrollment": 42, + "required_experiments_branches": [required.branch_choices()[0][0]], + "targeting_config_slug": (NimbusExperiment.TargetingConfig.FIRST_RUN), + "total_enrolled_clients": 100, + }, + request=self.request, + ) + + self.assertFalse(form.is_valid(), form.errors) + self.assertIn("excluded_experiments_branches", form.errors) + self.assertIn("required_experiments_branches", form.errors) From b0c75bdfb69f699d4278b5a6132614b866a55fc8 Mon Sep 17 00:00:00 2001 From: dataops-ci-bot <59976087+dataops-ci-bot@users.noreply.github.com> Date: Thu, 9 Jan 2025 13:37:04 -0800 Subject: [PATCH 17/36] chore(nimbus): Update External Configs (#12014) SUMMARY: SUCCESS: fenix at master (6d06ffc186ac356648f1feeadd52cc61b2ad6737) version None fenix at master (6d06ffc186ac356648f1feeadd52cc61b2ad6737) version 136.0.0 fenix at beta (8f75613e0ab39887e3e6b67145ef7550290ad897) version 135.0.0 firefox_ios at main (907817e90c6ec73a4b8b51426049fe70f5ca3bd0) version None firefox_ios at release/v135 (1e11eb62e9d6fb91c030326111b229422c9637d5) version 135.0.0 firefox_ios at main (907817e90c6ec73a4b8b51426049fe70f5ca3bd0) version 136.0.0 focus_android at main (fe8a71cd70ad5674abe1824fe11dc78372b736c2) version None focus_ios at main (907817e90c6ec73a4b8b51426049fe70f5ca3bd0) version None focus_ios at release/v135 (1e11eb62e9d6fb91c030326111b229422c9637d5) version 135.0.0 focus_ios at main (907817e90c6ec73a4b8b51426049fe70f5ca3bd0) version 136.0.0 monitor_cirrus at main (8b97f7c65eb864ade4566895a725f708f316aff4) version None mozillavpn_backend_cirrus at main (86963e1fe3fbe3aaee3aa3776efad50a85c516e2) version None firefox_accounts_cirrus at main (f62e7ce479a1c991f3b1d5880ec5ea788d81e63a) version None firefox_desktop at central (d342dabbf5220645f92f272afd499780c3890a9c) version None firefox_desktop at central (d342dabbf5220645f92f272afd499780c3890a9c) version 136.0.0 firefox_desktop at beta (5d6a820fc4c1e73cc70b4eb75fec65747ef8c7e8) version 135.0.0 CACHED: fenix at release (cd38106203c7d9f44b75a5a112cf0488c8c8a173) version 134.0.1 (cached) firefox_ios at release/v131 (7444df581b62d357df12ddc3c90d821d940efbb8) version 131.5.0 (cached) firefox_ios at release/v132 (cb318d0061ec6354167ecc1968020d5d75f1bffc) version 132.2.0 (cached) firefox_ios at release/v133 (7c651ce29e94c6389af7a69ec6b5c44251976e92) version 133.5.0 (cached) firefox_ios at release/v134 (83fa5a2cbf8a2671f7c7e7c7cb60ab219e782ec8) version 134.1.0 (cached) focus_android at releases_v121 (979fbe8d7fe04a9b09fe657bb787fda6f4d5ab42) version 121.1.1 (cached) focus_android at releases_v122 (1fcbfc41dba53965481a0e4d4725833bf3669dce) version 122.1.1 (cached) focus_android at releases_v123 (5a38e0cb4499f659a5fff308fa1deee653c0318b) version 123.1.1 (cached) focus_android at releases_v124 (0ad8d97fb3ab2ec6b9bb3905ee742900a4b9325d) version 124.2.1 (cached) focus_android at releases_v125 (2b43ab8069abac2bfee4b609e734c0207876a2ac) version 125.3.1 (cached) focus_android at focus-v125.3.0 (9f2990415376f169eb0053fceb329b70b4421bcb) version 125.3.0 (cached) focus_android at focus-v125.2.0 (d1c6eeb4167fc8ffed02cdfd3138fa696381d548) version 125.2.0 (cached) focus_android at main (fe8a71cd70ad5674abe1824fe11dc78372b736c2) version 125.0.0 (cached) focus_android at focus-v124.2.0 (7a0e399c7bc4faae43ce70ddc201c7899498d1b5) version 124.2.0 (cached) focus_android at focus-v124.1.0 (516df33ca96e950af1bf791893cd16d7add61c5d) version 124.1.0 (cached) focus_android at focus-v124.0 (5afe87a5bbb92f7ecf990a2fbc8095503a47c272) version 124.0.0 (cached) focus_android at focus-v123.1.0 (cb7c807e0fb5bc08131415e2e5ecef9da658d410) version 123.1.0 (cached) focus_android at focus-v123.0 (f5f378e2c05c9d69a5088c112c14fdea507d1c65) version 123.0.0 (cached) focus_android at focus-v122.1.0 (0d665405685c43c9266a3de65f16eabb832bb908) version 122.1.0 (cached) focus_android at focus-v122.0.1 (c67c9e840c00ec348a6a27adedad28feb54aa4a2) version 122.0.1 (cached) focus_android at focus-v122.0 (b49c4f23804d23cc727b8f70c061dccd64d720bc) version 122.0.0 (cached) focus_android at focus-v121.1.0 (62d5117f7996cc8862fdbdc0cb4a1dd5cdebedd6) version 121.1.0 (cached) focus_android at focus-v121.0.1 (fd4d2513324712e91577d8be18797e64089d3cf1) version 121.0.1 (cached) focus_android at focus-v121.0 (1955f8455fa2cac1b2080af9360996c06df5b4dd) version 121.0.0 (cached) focus_ios at release/v131 (7444df581b62d357df12ddc3c90d821d940efbb8) version 131.5.0 (cached) focus_ios at release/v132 (cb318d0061ec6354167ecc1968020d5d75f1bffc) version 132.2.0 (cached) focus_ios at release/v133 (7c651ce29e94c6389af7a69ec6b5c44251976e92) version 133.5.0 (cached) focus_ios at release/v134 (83fa5a2cbf8a2671f7c7e7c7cb60ab219e782ec8) version 134.1.0 (cached) focus_ios at focus/klar-v134.0 (be550d94c2c7bc8b8902cdf7fe542a64e73a381a) version 134.0.0 (cached) focus_ios at focus/klar-v133.0 (a3372669a06fa684d3c5945c317d6787e3125303) version 133.0.0 (cached) focus_ios at focus/klar-v132.0 (d9ed6134db59ff456d343e2bb211aefd040319ac) version 132.0.0 (cached) focus_ios at focus/klar-v131.1 (b7dca2271b14988837524a30eb154d91eb5e4912) version 131.1.0 (cached) focus_ios at focus/klar-v131.0 (34d92c8df1b1522a1da88c23879b439d763ec133) version 131.0.0 (cached) firefox_desktop at release (bfd0d58905f6ffb2963d967605b53b99e8a5e90e) version 134.0.1 (cached) firefox_desktop at esr115 (7f6c5d86c04cb9078dec5596c5b0dfb1cfcfb7c3) version 115.20.0 (cached) firefox_desktop at esr128 (35a312538af48e822f0ae314b89a7b23a1fa1de9) version 128.7.0 (cached) Circle CI Task: https://circleci.com/gh/mozilla/experimenter/273247 --- .../features/manifests/fenix/.ref-cache.yaml | 4 ++-- .../manifests/firefox-desktop/.ref-cache.yaml | 4 ++-- .../manifests/focus-ios/.ref-cache.yaml | 4 ++-- .../features/manifests/ios/.ref-cache.yaml | 4 ++-- .../manifests/monitor-web/experimenter.yaml | 14 ++++++++++++++ .../manifests/monitor-web/local.fml.yaml | 18 ++++++++++++++++++ .../manifests/monitor-web/production.fml.yaml | 18 ++++++++++++++++++ .../manifests/monitor-web/staging.fml.yaml | 18 ++++++++++++++++++ 8 files changed, 76 insertions(+), 8 deletions(-) diff --git a/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml b/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml index 39a4793b9c..4b0ce9684b 100644 --- a/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml @@ -1,3 +1,3 @@ -beta: c3749118c6f30c862686981f97fc7e4a10d7abea -master: 48caa4719ed2c75a2937bcfea9e7326e87846984 +beta: 8f75613e0ab39887e3e6b67145ef7550290ad897 +master: 6d06ffc186ac356648f1feeadd52cc61b2ad6737 release: cd38106203c7d9f44b75a5a112cf0488c8c8a173 diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml b/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml index ea9310b94a..1ad2ea8016 100644 --- a/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml @@ -1,5 +1,5 @@ -beta: 5d68d40f767ea617bd2408cab2255997d3506202 -central: 6da2f152d57b1d53d526ce821330553db4947c84 +beta: 5d6a820fc4c1e73cc70b4eb75fec65747ef8c7e8 +central: d342dabbf5220645f92f272afd499780c3890a9c esr115: 7f6c5d86c04cb9078dec5596c5b0dfb1cfcfb7c3 esr128: 35a312538af48e822f0ae314b89a7b23a1fa1de9 release: bfd0d58905f6ffb2963d967605b53b99e8a5e90e diff --git a/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml b/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml index 6efd46b555..9319bda3ac 100644 --- a/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml @@ -13,7 +13,7 @@ focus/klar-v131.1: b7dca2271b14988837524a30eb154d91eb5e4912 focus/klar-v132.0: d9ed6134db59ff456d343e2bb211aefd040319ac focus/klar-v133.0: a3372669a06fa684d3c5945c317d6787e3125303 focus/klar-v134.0: be550d94c2c7bc8b8902cdf7fe542a64e73a381a -main: 548c1af9b723813272f1f6bda4515b88bdc065d2 +main: 907817e90c6ec73a4b8b51426049fe70f5ca3bd0 release/v124: da250bed9e19c4978d4400d6d404cb312e33636e release/v125: a3e1e0773a00009e08d95726fd518ab642255ccd release/v126: 6f305409b4af68e8404401a2caad8cb0da9a0494 @@ -25,4 +25,4 @@ release/v131: 7444df581b62d357df12ddc3c90d821d940efbb8 release/v132: cb318d0061ec6354167ecc1968020d5d75f1bffc release/v133: 7c651ce29e94c6389af7a69ec6b5c44251976e92 release/v134: 83fa5a2cbf8a2671f7c7e7c7cb60ab219e782ec8 -release/v135: 86d468dcc94ba87e31069e2a09779f0f38414c89 +release/v135: 1e11eb62e9d6fb91c030326111b229422c9637d5 diff --git a/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml b/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml index 4f129bdcea..3c5714480b 100644 --- a/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml @@ -1,4 +1,4 @@ -main: 548c1af9b723813272f1f6bda4515b88bdc065d2 +main: 907817e90c6ec73a4b8b51426049fe70f5ca3bd0 release/v117: 43b690c450066d4dde1b2ccb93ed3714d244d502 release/v118: 89a7ea3c3372e5a4ef5b3c5b85499d26198d0524 release/v119: 7dc381f991c6d2a983c3ba7f0cffd880e8c29e7b @@ -17,7 +17,7 @@ release/v131: 7444df581b62d357df12ddc3c90d821d940efbb8 release/v132: cb318d0061ec6354167ecc1968020d5d75f1bffc release/v133: 7c651ce29e94c6389af7a69ec6b5c44251976e92 release/v134: 83fa5a2cbf8a2671f7c7e7c7cb60ab219e782ec8 -release/v135: 86d468dcc94ba87e31069e2a09779f0f38414c89 +release/v135: 1e11eb62e9d6fb91c030326111b229422c9637d5 v117.0: 3b275ab1e4ccef769d84437033c0c68acfd2df8a v117.1: 55ddcf473a65d106d43f6d2ae5af4076d6d03688 v117.2: 5cc367aa8857199cd8a54d53e8faf6696c5614c3 diff --git a/experimenter/experimenter/features/manifests/monitor-web/experimenter.yaml b/experimenter/experimenter/features/manifests/monitor-web/experimenter.yaml index 59083ee3a0..3a8942efcb 100644 --- a/experimenter/experimenter/features/manifests/monitor-web/experimenter.yaml +++ b/experimenter/experimenter/features/manifests/monitor-web/experimenter.yaml @@ -30,6 +30,20 @@ landing-page-free-scan-cta: - ctaOnly - ctaOnlyAlternativeLabel - ctaWithEmail +landing-page-redesign-plus-eligible-experiment: + description: Landing page redesign + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: If the feature is enabled + variant: + type: string + description: The landing page variant to show + enum: + - default + - redesign last-scan-date: description: "Show the date of the user's last scan in the top right-hand corner" hasExposure: true diff --git a/experimenter/experimenter/features/manifests/monitor-web/local.fml.yaml b/experimenter/experimenter/features/manifests/monitor-web/local.fml.yaml index c03d166916..8ee62c5cdb 100644 --- a/experimenter/experimenter/features/manifests/monitor-web/local.fml.yaml +++ b/experimenter/experimenter/features/manifests/monitor-web/local.fml.yaml @@ -30,6 +30,17 @@ features: description: The CTA variant to show type: FreeScanCtaType default: ctaWithEmail + landing-page-redesign-plus-eligible-experiment: + description: Landing page redesign + variables: + enabled: + description: If the feature is enabled + type: Boolean + default: true + variant: + description: The landing page variant to show + type: LandingPageVariant + default: redesign last-scan-date: description: "Show the date of the user's last scan in the top right-hand corner" variables: @@ -58,6 +69,13 @@ enums: description: Only show a CTA button with the label “Sign up to get free scan” ctaWithEmail: description: Show a CTA button with an optional email input + LandingPageVariant: + description: An enum of landing page variants + variants: + default: + description: Show the default landing page + redesign: + description: Show the redesigned landing page OptionalBrokerScanInfoFields: description: An enum of optional broker scan info fields variants: diff --git a/experimenter/experimenter/features/manifests/monitor-web/production.fml.yaml b/experimenter/experimenter/features/manifests/monitor-web/production.fml.yaml index d1a51fa850..ffaa83795a 100644 --- a/experimenter/experimenter/features/manifests/monitor-web/production.fml.yaml +++ b/experimenter/experimenter/features/manifests/monitor-web/production.fml.yaml @@ -30,6 +30,17 @@ features: description: The CTA variant to show type: FreeScanCtaType default: ctaWithEmail + landing-page-redesign-plus-eligible-experiment: + description: Landing page redesign + variables: + enabled: + description: If the feature is enabled + type: Boolean + default: false + variant: + description: The landing page variant to show + type: LandingPageVariant + default: default last-scan-date: description: "Show the date of the user's last scan in the top right-hand corner" variables: @@ -58,6 +69,13 @@ enums: description: Only show a CTA button with the label “Sign up to get free scan” ctaWithEmail: description: Show a CTA button with an optional email input + LandingPageVariant: + description: An enum of landing page variants + variants: + default: + description: Show the default landing page + redesign: + description: Show the redesigned landing page OptionalBrokerScanInfoFields: description: An enum of optional broker scan info fields variants: diff --git a/experimenter/experimenter/features/manifests/monitor-web/staging.fml.yaml b/experimenter/experimenter/features/manifests/monitor-web/staging.fml.yaml index 8e129e3e25..b3fe815ad6 100644 --- a/experimenter/experimenter/features/manifests/monitor-web/staging.fml.yaml +++ b/experimenter/experimenter/features/manifests/monitor-web/staging.fml.yaml @@ -30,6 +30,17 @@ features: description: The CTA variant to show type: FreeScanCtaType default: ctaWithEmail + landing-page-redesign-plus-eligible-experiment: + description: Landing page redesign + variables: + enabled: + description: If the feature is enabled + type: Boolean + default: false + variant: + description: The landing page variant to show + type: LandingPageVariant + default: default last-scan-date: description: "Show the date of the user's last scan in the top right-hand corner" variables: @@ -58,6 +69,13 @@ enums: description: Only show a CTA button with the label “Sign up to get free scan” ctaWithEmail: description: Show a CTA button with an optional email input + LandingPageVariant: + description: An enum of landing page variants + variants: + default: + description: Show the default landing page + redesign: + description: Show the redesigned landing page OptionalBrokerScanInfoFields: description: An enum of optional broker scan info fields variants: From 947dca92d733df70248cea8749a6e084cfc7d449 Mon Sep 17 00:00:00 2001 From: dataops-ci-bot <59976087+dataops-ci-bot@users.noreply.github.com> Date: Fri, 10 Jan 2025 08:22:45 -0800 Subject: [PATCH 18/36] chore(nimbus): Update application-services (#12019) --- application-services/application-services.env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application-services/application-services.env b/application-services/application-services.env index 08b94e244c..e5ebfc0044 100644 --- a/application-services/application-services.env +++ b/application-services/application-services.env @@ -1 +1 @@ -APPLICATION_SERVICES_BUILD_ID=136.20250108050329 +APPLICATION_SERVICES_BUILD_ID=136.20250110050330 From 4af35223d70e407e98d7ffb2dddf24d3b63d9d3a Mon Sep 17 00:00:00 2001 From: dataops-ci-bot <59976087+dataops-ci-bot@users.noreply.github.com> Date: Fri, 10 Jan 2025 08:33:08 -0800 Subject: [PATCH 19/36] chore(nimbus): Update External Configs (#12018) SUMMARY: SUCCESS: fenix at master (29e186485fe1b835f05bde01f650e371545de98e) version None fenix at master (29e186485fe1b835f05bde01f650e371545de98e) version 136.0.0 fenix at beta (5f5f7f9d8b995a17da5f768c4f9d330862d45e72) version 135.0.0 firefox_ios at main (20fe2827f3251277b648cf1f214e140ab8faea91) version None firefox_ios at main (20fe2827f3251277b648cf1f214e140ab8faea91) version 136.0.0 focus_android at main (fe8a71cd70ad5674abe1824fe11dc78372b736c2) version None focus_ios at main (20fe2827f3251277b648cf1f214e140ab8faea91) version None focus_ios at main (20fe2827f3251277b648cf1f214e140ab8faea91) version 136.0.0 monitor_cirrus at main (8d0740c1a4002248501bf33f9bf5912b99982f67) version None mozillavpn_backend_cirrus at main (86963e1fe3fbe3aaee3aa3776efad50a85c516e2) version None firefox_accounts_cirrus at main (68775ab869083cb7a66ce3a470608e4a38adb9f7) version None firefox_desktop at central (9c18ffcb71e3ba3fb77093494dc190bb411840e3) version None firefox_desktop at central (9c18ffcb71e3ba3fb77093494dc190bb411840e3) version 136.0.0 firefox_desktop at beta (80127ac28939bfb433e4dc5e9792888166e0cc2f) version 135.0.0 CACHED: fenix at release (cd38106203c7d9f44b75a5a112cf0488c8c8a173) version 134.0.1 (cached) firefox_ios at release/v131 (7444df581b62d357df12ddc3c90d821d940efbb8) version 131.5.0 (cached) firefox_ios at release/v132 (cb318d0061ec6354167ecc1968020d5d75f1bffc) version 132.2.0 (cached) firefox_ios at release/v133 (7c651ce29e94c6389af7a69ec6b5c44251976e92) version 133.5.0 (cached) firefox_ios at release/v134 (83fa5a2cbf8a2671f7c7e7c7cb60ab219e782ec8) version 134.1.0 (cached) firefox_ios at release/v135 (1e11eb62e9d6fb91c030326111b229422c9637d5) version 135.0.0 (cached) focus_android at releases_v121 (979fbe8d7fe04a9b09fe657bb787fda6f4d5ab42) version 121.1.1 (cached) focus_android at releases_v122 (1fcbfc41dba53965481a0e4d4725833bf3669dce) version 122.1.1 (cached) focus_android at releases_v123 (5a38e0cb4499f659a5fff308fa1deee653c0318b) version 123.1.1 (cached) focus_android at releases_v124 (0ad8d97fb3ab2ec6b9bb3905ee742900a4b9325d) version 124.2.1 (cached) focus_android at releases_v125 (2b43ab8069abac2bfee4b609e734c0207876a2ac) version 125.3.1 (cached) focus_android at focus-v125.3.0 (9f2990415376f169eb0053fceb329b70b4421bcb) version 125.3.0 (cached) focus_android at focus-v125.2.0 (d1c6eeb4167fc8ffed02cdfd3138fa696381d548) version 125.2.0 (cached) focus_android at main (fe8a71cd70ad5674abe1824fe11dc78372b736c2) version 125.0.0 (cached) focus_android at focus-v124.2.0 (7a0e399c7bc4faae43ce70ddc201c7899498d1b5) version 124.2.0 (cached) focus_android at focus-v124.1.0 (516df33ca96e950af1bf791893cd16d7add61c5d) version 124.1.0 (cached) focus_android at focus-v124.0 (5afe87a5bbb92f7ecf990a2fbc8095503a47c272) version 124.0.0 (cached) focus_android at focus-v123.1.0 (cb7c807e0fb5bc08131415e2e5ecef9da658d410) version 123.1.0 (cached) focus_android at focus-v123.0 (f5f378e2c05c9d69a5088c112c14fdea507d1c65) version 123.0.0 (cached) focus_android at focus-v122.1.0 (0d665405685c43c9266a3de65f16eabb832bb908) version 122.1.0 (cached) focus_android at focus-v122.0.1 (c67c9e840c00ec348a6a27adedad28feb54aa4a2) version 122.0.1 (cached) focus_android at focus-v122.0 (b49c4f23804d23cc727b8f70c061dccd64d720bc) version 122.0.0 (cached) focus_android at focus-v121.1.0 (62d5117f7996cc8862fdbdc0cb4a1dd5cdebedd6) version 121.1.0 (cached) focus_android at focus-v121.0.1 (fd4d2513324712e91577d8be18797e64089d3cf1) version 121.0.1 (cached) focus_android at focus-v121.0 (1955f8455fa2cac1b2080af9360996c06df5b4dd) version 121.0.0 (cached) focus_ios at release/v131 (7444df581b62d357df12ddc3c90d821d940efbb8) version 131.5.0 (cached) focus_ios at release/v132 (cb318d0061ec6354167ecc1968020d5d75f1bffc) version 132.2.0 (cached) focus_ios at release/v133 (7c651ce29e94c6389af7a69ec6b5c44251976e92) version 133.5.0 (cached) focus_ios at release/v134 (83fa5a2cbf8a2671f7c7e7c7cb60ab219e782ec8) version 134.1.0 (cached) focus_ios at release/v135 (1e11eb62e9d6fb91c030326111b229422c9637d5) version 135.0.0 (cached) focus_ios at focus/klar-v134.0 (be550d94c2c7bc8b8902cdf7fe542a64e73a381a) version 134.0.0 (cached) focus_ios at focus/klar-v133.0 (a3372669a06fa684d3c5945c317d6787e3125303) version 133.0.0 (cached) focus_ios at focus/klar-v132.0 (d9ed6134db59ff456d343e2bb211aefd040319ac) version 132.0.0 (cached) focus_ios at focus/klar-v131.1 (b7dca2271b14988837524a30eb154d91eb5e4912) version 131.1.0 (cached) focus_ios at focus/klar-v131.0 (34d92c8df1b1522a1da88c23879b439d763ec133) version 131.0.0 (cached) firefox_desktop at release (bfd0d58905f6ffb2963d967605b53b99e8a5e90e) version 134.0.1 (cached) firefox_desktop at esr115 (7f6c5d86c04cb9078dec5596c5b0dfb1cfcfb7c3) version 115.20.0 (cached) firefox_desktop at esr128 (35a312538af48e822f0ae314b89a7b23a1fa1de9) version 128.7.0 (cached) Circle CI Task: https://circleci.com/gh/mozilla/experimenter/273519 --- .../features/manifests/fenix/.ref-cache.yaml | 4 +- .../manifests/firefox-desktop/.ref-cache.yaml | 4 +- .../firefox-desktop/experimenter.yaml | 15 ++ .../v136.0.0/experimenter.yaml | 15 ++ .../manifests/focus-ios/.ref-cache.yaml | 2 +- .../features/manifests/ios/.ref-cache.yaml | 2 +- .../features/manifests/ios/beta.fml.yaml | 7 + .../features/manifests/ios/developer.fml.yaml | 7 + .../features/manifests/ios/experimenter.yaml | 8 + .../features/manifests/ios/release.fml.yaml | 7 + .../manifests/ios/v136.0.0/beta.fml.yaml | 7 + .../manifests/ios/v136.0.0/developer.fml.yaml | 7 + .../manifests/ios/v136.0.0/experimenter.yaml | 8 + .../manifests/ios/v136.0.0/release.fml.yaml | 7 + .../outcomes/firefox_desktop/relay.toml | 149 ++++++++++++++++++ 15 files changed, 243 insertions(+), 6 deletions(-) create mode 100644 experimenter/experimenter/outcomes/metric-hub-main/jetstream/outcomes/firefox_desktop/relay.toml diff --git a/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml b/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml index 4b0ce9684b..cff6f1b183 100644 --- a/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml @@ -1,3 +1,3 @@ -beta: 8f75613e0ab39887e3e6b67145ef7550290ad897 -master: 6d06ffc186ac356648f1feeadd52cc61b2ad6737 +beta: 5f5f7f9d8b995a17da5f768c4f9d330862d45e72 +master: 29e186485fe1b835f05bde01f650e371545de98e release: cd38106203c7d9f44b75a5a112cf0488c8c8a173 diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml b/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml index 1ad2ea8016..b832643bdf 100644 --- a/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml @@ -1,5 +1,5 @@ -beta: 5d6a820fc4c1e73cc70b4eb75fec65747ef8c7e8 -central: d342dabbf5220645f92f272afd499780c3890a9c +beta: 80127ac28939bfb433e4dc5e9792888166e0cc2f +central: 9c18ffcb71e3ba3fb77093494dc190bb411840e3 esr115: 7f6c5d86c04cb9078dec5596c5b0dfb1cfcfb7c3 esr128: 35a312538af48e822f0ae314b89a7b23a1fa1de9 release: bfd0d58905f6ffb2963d967605b53b99e8a5e90e diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/experimenter.yaml b/experimenter/experimenter/features/manifests/firefox-desktop/experimenter.yaml index ce2ad13d95..452b4974be 100644 --- a/experimenter/experimenter/features/manifests/firefox-desktop/experimenter.yaml +++ b/experimenter/experimenter/features/manifests/firefox-desktop/experimenter.yaml @@ -822,6 +822,21 @@ newtabUnifiedAds: setPref: branch: user pref: browser.newtabpage.activity-stream.unifiedAds.tiles.enabled + unifiedAdsFeedEnabled: + type: boolean + description: >- + Enable AdsFeed to manage all ads request/serving logic + setPref: + branch: user + pref: browser.newtabpage.activity-stream.unifiedAds.adsFeed.enabled + unifiedAdsFeedTilesEnabled: + type: boolean + description: >- + Enable AdsFeed to query MARS server to fetch/serve top sites tiles + setPref: + branch: user + pref: browser.newtabpage.activity-stream.unifiedAds.adsFeed.tiles.enabled + newtabSpocsCache: description: The about:newtab sponsored content cache. diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/v136.0.0/experimenter.yaml b/experimenter/experimenter/features/manifests/firefox-desktop/v136.0.0/experimenter.yaml index ce2ad13d95..452b4974be 100644 --- a/experimenter/experimenter/features/manifests/firefox-desktop/v136.0.0/experimenter.yaml +++ b/experimenter/experimenter/features/manifests/firefox-desktop/v136.0.0/experimenter.yaml @@ -822,6 +822,21 @@ newtabUnifiedAds: setPref: branch: user pref: browser.newtabpage.activity-stream.unifiedAds.tiles.enabled + unifiedAdsFeedEnabled: + type: boolean + description: >- + Enable AdsFeed to manage all ads request/serving logic + setPref: + branch: user + pref: browser.newtabpage.activity-stream.unifiedAds.adsFeed.enabled + unifiedAdsFeedTilesEnabled: + type: boolean + description: >- + Enable AdsFeed to query MARS server to fetch/serve top sites tiles + setPref: + branch: user + pref: browser.newtabpage.activity-stream.unifiedAds.adsFeed.tiles.enabled + newtabSpocsCache: description: The about:newtab sponsored content cache. diff --git a/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml b/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml index 9319bda3ac..5b498ec8a9 100644 --- a/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml @@ -13,7 +13,7 @@ focus/klar-v131.1: b7dca2271b14988837524a30eb154d91eb5e4912 focus/klar-v132.0: d9ed6134db59ff456d343e2bb211aefd040319ac focus/klar-v133.0: a3372669a06fa684d3c5945c317d6787e3125303 focus/klar-v134.0: be550d94c2c7bc8b8902cdf7fe542a64e73a381a -main: 907817e90c6ec73a4b8b51426049fe70f5ca3bd0 +main: 20fe2827f3251277b648cf1f214e140ab8faea91 release/v124: da250bed9e19c4978d4400d6d404cb312e33636e release/v125: a3e1e0773a00009e08d95726fd518ab642255ccd release/v126: 6f305409b4af68e8404401a2caad8cb0da9a0494 diff --git a/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml b/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml index 3c5714480b..363949d682 100644 --- a/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml @@ -1,4 +1,4 @@ -main: 907817e90c6ec73a4b8b51426049fe70f5ca3bd0 +main: 20fe2827f3251277b648cf1f214e140ab8faea91 release/v117: 43b690c450066d4dde1b2ccb93ed3714d244d502 release/v118: 89a7ea3c3372e5a4ef5b3c5b85499d26198d0524 release/v119: 7dc381f991c6d2a983c3ba7f0cffd880e8c29e7b diff --git a/experimenter/experimenter/features/manifests/ios/beta.fml.yaml b/experimenter/experimenter/features/manifests/ios/beta.fml.yaml index 93da728494..a407aab4b5 100644 --- a/experimenter/experimenter/features/manifests/ios/beta.fml.yaml +++ b/experimenter/experimenter/features/manifests/ios/beta.fml.yaml @@ -26,6 +26,13 @@ features: description: "Enables the bookmark refactor feature\n" type: Boolean default: false + cleanup-history-reenabled: + description: "This feature flag will help us slowly re-enable the cleanupHistoryIfNeeded functionnality at startup of the app\n" + variables: + enabled: + description: "When true the cleanupHistoryIfNeeded will be run\n" + type: Boolean + default: true contextual-hint-feature: description: This set holds all features pertaining to contextual hints. variables: diff --git a/experimenter/experimenter/features/manifests/ios/developer.fml.yaml b/experimenter/experimenter/features/manifests/ios/developer.fml.yaml index 4617778a73..fbb2015884 100644 --- a/experimenter/experimenter/features/manifests/ios/developer.fml.yaml +++ b/experimenter/experimenter/features/manifests/ios/developer.fml.yaml @@ -26,6 +26,13 @@ features: description: "Enables the bookmark refactor feature\n" type: Boolean default: false + cleanup-history-reenabled: + description: "This feature flag will help us slowly re-enable the cleanupHistoryIfNeeded functionnality at startup of the app\n" + variables: + enabled: + description: "When true the cleanupHistoryIfNeeded will be run\n" + type: Boolean + default: true contextual-hint-feature: description: This set holds all features pertaining to contextual hints. variables: diff --git a/experimenter/experimenter/features/manifests/ios/experimenter.yaml b/experimenter/experimenter/features/manifests/ios/experimenter.yaml index 2ac1c6c678..771147c60f 100644 --- a/experimenter/experimenter/features/manifests/ios/experimenter.yaml +++ b/experimenter/experimenter/features/manifests/ios/experimenter.yaml @@ -23,6 +23,14 @@ bookmark-refactor-feature: enabled: type: boolean description: "Enables the bookmark refactor feature\n" +cleanup-history-reenabled: + description: "This feature flag will help us slowly re-enable the cleanupHistoryIfNeeded functionnality at startup of the app\n" + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "When true the cleanupHistoryIfNeeded will be run\n" contextual-hint-feature: description: This set holds all features pertaining to contextual hints. hasExposure: true diff --git a/experimenter/experimenter/features/manifests/ios/release.fml.yaml b/experimenter/experimenter/features/manifests/ios/release.fml.yaml index 3a316cedeb..07da8f691e 100644 --- a/experimenter/experimenter/features/manifests/ios/release.fml.yaml +++ b/experimenter/experimenter/features/manifests/ios/release.fml.yaml @@ -26,6 +26,13 @@ features: description: "Enables the bookmark refactor feature\n" type: Boolean default: false + cleanup-history-reenabled: + description: "This feature flag will help us slowly re-enable the cleanupHistoryIfNeeded functionnality at startup of the app\n" + variables: + enabled: + description: "When true the cleanupHistoryIfNeeded will be run\n" + type: Boolean + default: false contextual-hint-feature: description: This set holds all features pertaining to contextual hints. variables: diff --git a/experimenter/experimenter/features/manifests/ios/v136.0.0/beta.fml.yaml b/experimenter/experimenter/features/manifests/ios/v136.0.0/beta.fml.yaml index 93da728494..a407aab4b5 100644 --- a/experimenter/experimenter/features/manifests/ios/v136.0.0/beta.fml.yaml +++ b/experimenter/experimenter/features/manifests/ios/v136.0.0/beta.fml.yaml @@ -26,6 +26,13 @@ features: description: "Enables the bookmark refactor feature\n" type: Boolean default: false + cleanup-history-reenabled: + description: "This feature flag will help us slowly re-enable the cleanupHistoryIfNeeded functionnality at startup of the app\n" + variables: + enabled: + description: "When true the cleanupHistoryIfNeeded will be run\n" + type: Boolean + default: true contextual-hint-feature: description: This set holds all features pertaining to contextual hints. variables: diff --git a/experimenter/experimenter/features/manifests/ios/v136.0.0/developer.fml.yaml b/experimenter/experimenter/features/manifests/ios/v136.0.0/developer.fml.yaml index 4617778a73..fbb2015884 100644 --- a/experimenter/experimenter/features/manifests/ios/v136.0.0/developer.fml.yaml +++ b/experimenter/experimenter/features/manifests/ios/v136.0.0/developer.fml.yaml @@ -26,6 +26,13 @@ features: description: "Enables the bookmark refactor feature\n" type: Boolean default: false + cleanup-history-reenabled: + description: "This feature flag will help us slowly re-enable the cleanupHistoryIfNeeded functionnality at startup of the app\n" + variables: + enabled: + description: "When true the cleanupHistoryIfNeeded will be run\n" + type: Boolean + default: true contextual-hint-feature: description: This set holds all features pertaining to contextual hints. variables: diff --git a/experimenter/experimenter/features/manifests/ios/v136.0.0/experimenter.yaml b/experimenter/experimenter/features/manifests/ios/v136.0.0/experimenter.yaml index 2ac1c6c678..771147c60f 100644 --- a/experimenter/experimenter/features/manifests/ios/v136.0.0/experimenter.yaml +++ b/experimenter/experimenter/features/manifests/ios/v136.0.0/experimenter.yaml @@ -23,6 +23,14 @@ bookmark-refactor-feature: enabled: type: boolean description: "Enables the bookmark refactor feature\n" +cleanup-history-reenabled: + description: "This feature flag will help us slowly re-enable the cleanupHistoryIfNeeded functionnality at startup of the app\n" + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "When true the cleanupHistoryIfNeeded will be run\n" contextual-hint-feature: description: This set holds all features pertaining to contextual hints. hasExposure: true diff --git a/experimenter/experimenter/features/manifests/ios/v136.0.0/release.fml.yaml b/experimenter/experimenter/features/manifests/ios/v136.0.0/release.fml.yaml index 3a316cedeb..07da8f691e 100644 --- a/experimenter/experimenter/features/manifests/ios/v136.0.0/release.fml.yaml +++ b/experimenter/experimenter/features/manifests/ios/v136.0.0/release.fml.yaml @@ -26,6 +26,13 @@ features: description: "Enables the bookmark refactor feature\n" type: Boolean default: false + cleanup-history-reenabled: + description: "This feature flag will help us slowly re-enable the cleanupHistoryIfNeeded functionnality at startup of the app\n" + variables: + enabled: + description: "When true the cleanupHistoryIfNeeded will be run\n" + type: Boolean + default: false contextual-hint-feature: description: This set holds all features pertaining to contextual hints. variables: diff --git a/experimenter/experimenter/outcomes/metric-hub-main/jetstream/outcomes/firefox_desktop/relay.toml b/experimenter/experimenter/outcomes/metric-hub-main/jetstream/outcomes/firefox_desktop/relay.toml new file mode 100644 index 0000000000..275d6ef804 --- /dev/null +++ b/experimenter/experimenter/outcomes/metric-hub-main/jetstream/outcomes/firefox_desktop/relay.toml @@ -0,0 +1,149 @@ +friendly_name = "Relay" +description = "Metrics for the Relay integration" + + +# Metric for tracking how many times the offer was shown +[metrics.relay_integration_shown_relay_offer] +friendly_name = "Relay Optin: Relay offer shown to client" +description = "Number of times Relay offer is shown" +select_expression = """ + COALESCE(COUNTIF( + event_method= 'shown' + AND event_object = 'offer_relay' + AND event_category = 'relay_integration' + ),0) +""" +data_source = "events" +statistics = { bootstrap_mean = {}, deciles = {} } + +[metrics.relay_integration_clicked_relay_offer] +friendly_name = "Relay Optin: Relay offer clicked by client" +description = "Number of times user clicked on Relay offer" +select_expression = """ + COALESCE(COUNTIF( + event_method = 'clicked' + AND event_object = 'offer_relay' + AND event_category = 'relay_integration' + ),0) +""" +data_source = "events" +statistics = { bootstrap_mean = {}, deciles = {} } + +[metrics.relay_integration_shown_opt_in_panel] +friendly_name = "Relay Optin: Relay optin panel shown to client" +description = "Number of times Relay optin panel is shown" +select_expression = """ + COALESCE(COUNTIF( + event_method = 'shown' + AND event_object = 'opt_in_panel' + AND event_category = 'relay_integration' + ),0) +""" +data_source = "events" +statistics = { bootstrap_mean = {}, deciles = {} } + +[metrics.relay_integration_enabled_opt_in_panel] +friendly_name = "Relay Optin: Relay optin panel enabled by client" +description = "Number of times Relay optin panel is enabled" +select_expression = """ + COALESCE(COUNTIF( + event_method = 'enabled' + AND event_object = 'opt_in_panel' + AND event_category = 'relay_integration' + ),0) +""" +data_source = "events" +statistics = { bootstrap_mean = {}, deciles = {} } + +[metrics.relay_integration_postponed_opt_in_panel] +friendly_name = "Relay Optin: Relay optin panel postponed by client" +description = "Number of times Relay optin panel is postponed" +select_expression = """ + COALESCE(COUNTIF( + event_method = 'postponed' + AND event_object = 'opt_in_panel' + AND event_category = 'relay_integration' + ),0) +""" +data_source = "events" +statistics = { bootstrap_mean = {}, deciles = {} } + +[metrics.relay_integration_disabled_opt_in_panel] +friendly_name = "Relay Optin: Relay optin panel disabled by client" +description = "Number of times Relay optin panel is disabled" +select_expression = """ + COALESCE(COUNTIF( + event_method = 'disabled' + AND event_object = 'opt_in_panel' + AND event_category = 'relay_integration' + ),0) +""" +data_source = "events" +statistics = { bootstrap_mean = {}, deciles = {} } + +[metrics.relay_integration_shown_fill_username] +friendly_name = "Relay Engagement: Relay integration autocomplete popup shown" +description = "Number of times the Relay UI is shown to fill in a new Relay mask" +select_expression = """ + COALESCE(COUNTIF( + event_method = 'shown' + AND event_object = 'fill_username' + AND event_category = 'relay_integration' + ),0) +""" +data_source = "events" +statistics = { bootstrap_mean = {}, deciles = {} } + +[metrics.relay_integration_clicked_fill_username] +friendly_name = "Relay Engagement: Relay integration autocomplete popup clicked" +description = "Number of times the Relay UI is clicked to fill in a new Relay mask" +select_expression = """ + COALESCE(COUNTIF( + event_method = 'clicked' + AND event_object = 'fill_username' + AND event_category = 'relay_integration' + ),0) +""" +data_source = "events" +statistics = { bootstrap_mean = {}, deciles = {} } + +[metrics.relay_optin_rate] +description = "Relay optin panel enabled by client / Relay optin panel shown to client " +friendly_name = "Relay Optin: Relay Optin Rate" +depends_on = ["relay_integration_enabled_opt_in_panel", "relay_integration_shown_opt_in_panel"] + +[metrics.relay_optin_rate.statistics.population_ratio] +numerator = "relay_integration_enabled_opt_in_panel" +denominator = "relay_integration_shown_optin_panel" + +[metrics.relay_optin_disabled_rate] +description = "Relay optin panel disabled by client / Relay optin panel shown to client " +friendly_name = "Relay Optin: Relay Optin disabled Rate" +depends_on = ["relay_integration_disabled_opt_in_panel", "relay_integration_shown_opt_in_panel"] + +[metrics.relay_optin_disabled_rate.statistics.population_ratio] +numerator = "relay_integration_disabled_opt_in_panel" +denominator = "relay_integration_shown_optin_panel" + +[metrics.relay_offer_ctr] +description = "Relay offer clicked by client / Relay offer shown to client" +friendly_name = "Relay Optin: CTR on the Relay mask offer" +depends_on = ["relay_integration_clicked_relay_offer", "relay_integration_shown_relay_offer"] + +[metrics.relay_offer_ctr.statistics.population_ratio] +numerator = "relay_integration_clicked_relay_offer" +denominator = "relay_integration_shown_relay_offer" + +[metrics.fill_username_ctr] +description = "relay_integration_clicked_fill_username / relay_integration_shown_fill_username" +friendly_name = "Relay Engagement: CTR on the Relay fill_username" +depends_on = ["relay_integration_clicked_fill_username", "relay_integration_shown_fill_username"] + +[metrics.fill_username_ctr.statistics.population_ratio] +numerator = "relay_integration_clicked_fill_username" +denominator = "relay_integration_shown_fill_username" + + + + + From ec57e0cf505764c2e024022e833ad1b84a1fc8e8 Mon Sep 17 00:00:00 2001 From: Rana Al-Khulaidi <69090627+RJAK11@users.noreply.github.com> Date: Mon, 13 Jan 2025 09:10:12 -0500 Subject: [PATCH 20/36] fix(nimbus): Make name field in new UI required (#12020) Because - Submitting a form with an empty name field in the new Nimbus UI causes a 500 error. This commit - Adds validation to ensure the name field is required and prevents submission with an empty value Fixes #12016 --- .../experimenter/nimbus_ui_new/forms.py | 2 +- .../nimbus_ui_new/tests/test_forms.py | 27 +++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/experimenter/experimenter/nimbus_ui_new/forms.py b/experimenter/experimenter/nimbus_ui_new/forms.py index 6045f8e746..4abfc483f7 100644 --- a/experimenter/experimenter/nimbus_ui_new/forms.py +++ b/experimenter/experimenter/nimbus_ui_new/forms.py @@ -192,7 +192,7 @@ class OverviewForm(NimbusChangeLogFormMixin, forms.ModelForm): ) name = forms.CharField( - required=False, widget=forms.TextInput(attrs={"class": "form-control"}) + required=True, widget=forms.TextInput(attrs={"class": "form-control"}) ) hypothesis = forms.CharField( required=False, widget=forms.Textarea(attrs={"class": "form-control"}) diff --git a/experimenter/experimenter/nimbus_ui_new/tests/test_forms.py b/experimenter/experimenter/nimbus_ui_new/tests/test_forms.py index ad6abefbe6..c50425b462 100644 --- a/experimenter/experimenter/nimbus_ui_new/tests/test_forms.py +++ b/experimenter/experimenter/nimbus_ui_new/tests/test_forms.py @@ -378,6 +378,33 @@ def test_valid_form_saves(self): ) self.assertEqual(documentation_link.link, "https://www.example.com") + def test_name_field_is_required(self): + project = ProjectFactory.create() + documentation_link = NimbusDocumentationLinkFactory.create() + + form_data = { + "name": "", + "hypothesis": "new hypothesis", + "risk_brand": True, + "risk_message": True, + "projects": [project.id], + "public_description": "new description", + "risk_revenue": True, + "risk_partner_related": True, + "documentation_links-TOTAL_FORMS": "1", + "documentation_links-INITIAL_FORMS": "1", + "documentation_links-0-id": documentation_link.id, + "documentation_links-0-title": ( + NimbusExperiment.DocumentationLink.DESIGN_DOC.value + ), + "documentation_links-0-link": "https://www.example.com", + } + + form = OverviewForm(data=form_data) + + self.assertFalse(form.is_valid()) + self.assertIn("name", form.errors) + class TestDocumentationLinkCreateForm(RequestFormTestCase): def test_valid_form_adds_documentation_link(self): From 9118049ce132a66b7ed0fec121df4beaf0157474 Mon Sep 17 00:00:00 2001 From: dataops-ci-bot <59976087+dataops-ci-bot@users.noreply.github.com> Date: Mon, 13 Jan 2025 08:49:16 -0800 Subject: [PATCH 21/36] chore(nimbus): Update External Configs (#12025) SUMMARY: SUCCESS: fenix at master (d788991012a1a8ec862787f9799db4954a33045f) version None fenix at master (d788991012a1a8ec862787f9799db4954a33045f) version 136.0.0 fenix at beta (2f079b6ad3d419a7cdc467fd5e6d1f67266ee5f6) version 135.0.0 fenix at release (17da7b0df454f23474df88f569b2e854d8671ba8) version 134.0.1 firefox_ios at main (199c0037a5cdf660761978180319b029e40a8c1e) version None firefox_ios at release/v134 (a19590e788dbb236292c88126468c59b66f20dc3) version 134.1.0 firefox_ios at main (199c0037a5cdf660761978180319b029e40a8c1e) version 136.0.0 focus_android at main (fe8a71cd70ad5674abe1824fe11dc78372b736c2) version None focus_ios at main (199c0037a5cdf660761978180319b029e40a8c1e) version None focus_ios at release/v134 (a19590e788dbb236292c88126468c59b66f20dc3) version 134.1.0 focus_ios at main (199c0037a5cdf660761978180319b029e40a8c1e) version 136.0.0 monitor_cirrus at main (0fb9f97f6dfe47e75ea256ff046cada029ad48b4) version None mozillavpn_backend_cirrus at main (86963e1fe3fbe3aaee3aa3776efad50a85c516e2) version None firefox_accounts_cirrus at main (1ab854d3206dff82e67426a2d03b121697bbc44d) version None firefox_desktop at central (000fac19cadd6513cd37a07e0dc4a357a029ffc1) version None firefox_desktop at central (000fac19cadd6513cd37a07e0dc4a357a029ffc1) version 136.0.0 firefox_desktop at beta (d4e8dad97c5d66b0f0febac15834f2710648501b) version 135.0.0 firefox_desktop at release (305d3819bf05f28c99c9cab5bbeb9e7867fb4d77) version 134.0.1 firefox_desktop at esr115 (bd4fb4aebf03b8c20f66ba05e5d1b378a51b92ed) version 115.20.0 firefox_desktop at esr128 (9ae18a146984c0398f5a3d4813f96f4ef297e232) version 128.7.0 CACHED: firefox_ios at release/v131 (7444df581b62d357df12ddc3c90d821d940efbb8) version 131.5.0 (cached) firefox_ios at release/v132 (cb318d0061ec6354167ecc1968020d5d75f1bffc) version 132.2.0 (cached) firefox_ios at release/v133 (7c651ce29e94c6389af7a69ec6b5c44251976e92) version 133.5.0 (cached) firefox_ios at release/v135 (1e11eb62e9d6fb91c030326111b229422c9637d5) version 135.0.0 (cached) focus_android at releases_v121 (979fbe8d7fe04a9b09fe657bb787fda6f4d5ab42) version 121.1.1 (cached) focus_android at releases_v122 (1fcbfc41dba53965481a0e4d4725833bf3669dce) version 122.1.1 (cached) focus_android at releases_v123 (5a38e0cb4499f659a5fff308fa1deee653c0318b) version 123.1.1 (cached) focus_android at releases_v124 (0ad8d97fb3ab2ec6b9bb3905ee742900a4b9325d) version 124.2.1 (cached) focus_android at releases_v125 (2b43ab8069abac2bfee4b609e734c0207876a2ac) version 125.3.1 (cached) focus_android at focus-v125.3.0 (9f2990415376f169eb0053fceb329b70b4421bcb) version 125.3.0 (cached) focus_android at focus-v125.2.0 (d1c6eeb4167fc8ffed02cdfd3138fa696381d548) version 125.2.0 (cached) focus_android at main (fe8a71cd70ad5674abe1824fe11dc78372b736c2) version 125.0.0 (cached) focus_android at focus-v124.2.0 (7a0e399c7bc4faae43ce70ddc201c7899498d1b5) version 124.2.0 (cached) focus_android at focus-v124.1.0 (516df33ca96e950af1bf791893cd16d7add61c5d) version 124.1.0 (cached) focus_android at focus-v124.0 (5afe87a5bbb92f7ecf990a2fbc8095503a47c272) version 124.0.0 (cached) focus_android at focus-v123.1.0 (cb7c807e0fb5bc08131415e2e5ecef9da658d410) version 123.1.0 (cached) focus_android at focus-v123.0 (f5f378e2c05c9d69a5088c112c14fdea507d1c65) version 123.0.0 (cached) focus_android at focus-v122.1.0 (0d665405685c43c9266a3de65f16eabb832bb908) version 122.1.0 (cached) focus_android at focus-v122.0.1 (c67c9e840c00ec348a6a27adedad28feb54aa4a2) version 122.0.1 (cached) focus_android at focus-v122.0 (b49c4f23804d23cc727b8f70c061dccd64d720bc) version 122.0.0 (cached) focus_android at focus-v121.1.0 (62d5117f7996cc8862fdbdc0cb4a1dd5cdebedd6) version 121.1.0 (cached) focus_android at focus-v121.0.1 (fd4d2513324712e91577d8be18797e64089d3cf1) version 121.0.1 (cached) focus_android at focus-v121.0 (1955f8455fa2cac1b2080af9360996c06df5b4dd) version 121.0.0 (cached) focus_ios at release/v131 (7444df581b62d357df12ddc3c90d821d940efbb8) version 131.5.0 (cached) focus_ios at release/v132 (cb318d0061ec6354167ecc1968020d5d75f1bffc) version 132.2.0 (cached) focus_ios at release/v133 (7c651ce29e94c6389af7a69ec6b5c44251976e92) version 133.5.0 (cached) focus_ios at release/v135 (1e11eb62e9d6fb91c030326111b229422c9637d5) version 135.0.0 (cached) focus_ios at focus/klar-v134.0 (be550d94c2c7bc8b8902cdf7fe542a64e73a381a) version 134.0.0 (cached) focus_ios at focus/klar-v133.0 (a3372669a06fa684d3c5945c317d6787e3125303) version 133.0.0 (cached) focus_ios at focus/klar-v132.0 (d9ed6134db59ff456d343e2bb211aefd040319ac) version 132.0.0 (cached) focus_ios at focus/klar-v131.1 (b7dca2271b14988837524a30eb154d91eb5e4912) version 131.1.0 (cached) focus_ios at focus/klar-v131.0 (34d92c8df1b1522a1da88c23879b439d763ec133) version 131.0.0 (cached) Circle CI Task: https://circleci.com/gh/mozilla/experimenter/274055 --- .../features/manifests/fenix/.ref-cache.yaml | 6 +++--- .../manifests/firefox-desktop/.ref-cache.yaml | 10 +++++----- .../manifests/firefox-desktop/experimenter.yaml | 12 ++++++++++++ .../firefox-desktop/v136.0.0/experimenter.yaml | 12 ++++++++++++ .../features/manifests/focus-ios/.ref-cache.yaml | 4 ++-- .../features/manifests/ios/.ref-cache.yaml | 4 ++-- 6 files changed, 36 insertions(+), 12 deletions(-) diff --git a/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml b/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml index cff6f1b183..31b110339b 100644 --- a/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml @@ -1,3 +1,3 @@ -beta: 5f5f7f9d8b995a17da5f768c4f9d330862d45e72 -master: 29e186485fe1b835f05bde01f650e371545de98e -release: cd38106203c7d9f44b75a5a112cf0488c8c8a173 +beta: 2f079b6ad3d419a7cdc467fd5e6d1f67266ee5f6 +master: d788991012a1a8ec862787f9799db4954a33045f +release: 17da7b0df454f23474df88f569b2e854d8671ba8 diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml b/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml index b832643bdf..9fc64c7541 100644 --- a/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml @@ -1,5 +1,5 @@ -beta: 80127ac28939bfb433e4dc5e9792888166e0cc2f -central: 9c18ffcb71e3ba3fb77093494dc190bb411840e3 -esr115: 7f6c5d86c04cb9078dec5596c5b0dfb1cfcfb7c3 -esr128: 35a312538af48e822f0ae314b89a7b23a1fa1de9 -release: bfd0d58905f6ffb2963d967605b53b99e8a5e90e +beta: d4e8dad97c5d66b0f0febac15834f2710648501b +central: 000fac19cadd6513cd37a07e0dc4a357a029ffc1 +esr115: bd4fb4aebf03b8c20f66ba05e5d1b378a51b92ed +esr128: 9ae18a146984c0398f5a3d4813f96f4ef297e232 +release: 305d3819bf05f28c99c9cab5bbeb9e7867fb4d77 diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/experimenter.yaml b/experimenter/experimenter/features/manifests/firefox-desktop/experimenter.yaml index 452b4974be..fe4fb87a7b 100644 --- a/experimenter/experimenter/features/manifests/firefox-desktop/experimenter.yaml +++ b/experimenter/experimenter/features/manifests/firefox-desktop/experimenter.yaml @@ -214,6 +214,11 @@ urlbar: the event is recorded once per app session when the user first encounters the UI of the experiment in which they're enrolled. variables: + actionsOnboardingTimesToShow: + type: int + fallbackPref: browser.urlbar.quickactions.timesToShowOnboardingLabel + description: >- + The number of times a user should be shown the actions onboarding label. addonsFeatureGate: type: boolean fallbackPref: browser.urlbar.addons.featureGate @@ -1307,6 +1312,13 @@ pocketNewtab: pref: browser.newtabpage.activity-stream.newtabWallpapers.highlightCtaText description: >- Changes the wallpaper feature highlight cta + currentWallpaper: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.newtabWallpapers.wallpaper + description: >- + Changes the currently selected wallpaper weatherLocationSearch: type: boolean setPref: diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/v136.0.0/experimenter.yaml b/experimenter/experimenter/features/manifests/firefox-desktop/v136.0.0/experimenter.yaml index 452b4974be..fe4fb87a7b 100644 --- a/experimenter/experimenter/features/manifests/firefox-desktop/v136.0.0/experimenter.yaml +++ b/experimenter/experimenter/features/manifests/firefox-desktop/v136.0.0/experimenter.yaml @@ -214,6 +214,11 @@ urlbar: the event is recorded once per app session when the user first encounters the UI of the experiment in which they're enrolled. variables: + actionsOnboardingTimesToShow: + type: int + fallbackPref: browser.urlbar.quickactions.timesToShowOnboardingLabel + description: >- + The number of times a user should be shown the actions onboarding label. addonsFeatureGate: type: boolean fallbackPref: browser.urlbar.addons.featureGate @@ -1307,6 +1312,13 @@ pocketNewtab: pref: browser.newtabpage.activity-stream.newtabWallpapers.highlightCtaText description: >- Changes the wallpaper feature highlight cta + currentWallpaper: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.newtabWallpapers.wallpaper + description: >- + Changes the currently selected wallpaper weatherLocationSearch: type: boolean setPref: diff --git a/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml b/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml index 5b498ec8a9..b2e2a822fe 100644 --- a/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml @@ -13,7 +13,7 @@ focus/klar-v131.1: b7dca2271b14988837524a30eb154d91eb5e4912 focus/klar-v132.0: d9ed6134db59ff456d343e2bb211aefd040319ac focus/klar-v133.0: a3372669a06fa684d3c5945c317d6787e3125303 focus/klar-v134.0: be550d94c2c7bc8b8902cdf7fe542a64e73a381a -main: 20fe2827f3251277b648cf1f214e140ab8faea91 +main: 199c0037a5cdf660761978180319b029e40a8c1e release/v124: da250bed9e19c4978d4400d6d404cb312e33636e release/v125: a3e1e0773a00009e08d95726fd518ab642255ccd release/v126: 6f305409b4af68e8404401a2caad8cb0da9a0494 @@ -24,5 +24,5 @@ release/v130: a48ec1b1f0219e1987bb38bc4f6b838f37dc6f12 release/v131: 7444df581b62d357df12ddc3c90d821d940efbb8 release/v132: cb318d0061ec6354167ecc1968020d5d75f1bffc release/v133: 7c651ce29e94c6389af7a69ec6b5c44251976e92 -release/v134: 83fa5a2cbf8a2671f7c7e7c7cb60ab219e782ec8 +release/v134: a19590e788dbb236292c88126468c59b66f20dc3 release/v135: 1e11eb62e9d6fb91c030326111b229422c9637d5 diff --git a/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml b/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml index 363949d682..527791054e 100644 --- a/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml @@ -1,4 +1,4 @@ -main: 20fe2827f3251277b648cf1f214e140ab8faea91 +main: 199c0037a5cdf660761978180319b029e40a8c1e release/v117: 43b690c450066d4dde1b2ccb93ed3714d244d502 release/v118: 89a7ea3c3372e5a4ef5b3c5b85499d26198d0524 release/v119: 7dc381f991c6d2a983c3ba7f0cffd880e8c29e7b @@ -16,7 +16,7 @@ release/v130: a48ec1b1f0219e1987bb38bc4f6b838f37dc6f12 release/v131: 7444df581b62d357df12ddc3c90d821d940efbb8 release/v132: cb318d0061ec6354167ecc1968020d5d75f1bffc release/v133: 7c651ce29e94c6389af7a69ec6b5c44251976e92 -release/v134: 83fa5a2cbf8a2671f7c7e7c7cb60ab219e782ec8 +release/v134: a19590e788dbb236292c88126468c59b66f20dc3 release/v135: 1e11eb62e9d6fb91c030326111b229422c9637d5 v117.0: 3b275ab1e4ccef769d84437033c0c68acfd2df8a v117.1: 55ddcf473a65d106d43f6d2ae5af4076d6d03688 From c589c12f5be548e3aaf06f9c31530b43d00f3bee Mon Sep 17 00:00:00 2001 From: dataops-ci-bot <59976087+dataops-ci-bot@users.noreply.github.com> Date: Mon, 13 Jan 2025 08:49:51 -0800 Subject: [PATCH 22/36] chore(nimbus): Update application-services (#12024) --- application-services/application-services.env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application-services/application-services.env b/application-services/application-services.env index e5ebfc0044..d9c7b820c3 100644 --- a/application-services/application-services.env +++ b/application-services/application-services.env @@ -1 +1 @@ -APPLICATION_SERVICES_BUILD_ID=136.20250110050330 +APPLICATION_SERVICES_BUILD_ID=136.20250111050346 From 884b61102d53b5080b326a1f84479ddeb327b091 Mon Sep 17 00:00:00 2001 From: Benjamin Forehand Jr Date: Mon, 13 Jan 2025 10:50:43 -0600 Subject: [PATCH 23/36] chore(ci): Update firefox beta downloads on CI to new file types. (#12023) Because - Firefox Beta now uses `.xz` compression and not `.bzip2` This commit - Updates our scripts to reflect this change. Fixes #12022 --- experimenter/tests/nimbus_integration_tests.sh | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/experimenter/tests/nimbus_integration_tests.sh b/experimenter/tests/nimbus_integration_tests.sh index 5192bda97b..50c3090c7d 100755 --- a/experimenter/tests/nimbus_integration_tests.sh +++ b/experimenter/tests/nimbus_integration_tests.sh @@ -10,11 +10,12 @@ PYTEST_ARGS=${PYTEST_ARGS:-"-k FIREFOX_DESKTOP"} install_firefox() { local firefox_version="$1" sudo apt-get update -qqy + sudo apt-get install xz-utils sudo rm -rf /var/lib/apt/lists/* /var/cache/apt/* - sudo wget --no-verbose -O /tmp/firefox.tar.bz2 $firefox_version + sudo wget --no-verbose -O /tmp/firefox $firefox_version sudo rm -rf /opt/firefox-latest - sudo tar -C /opt -xjf /tmp/firefox.tar.bz2 - sudo rm /tmp/firefox.tar.bz2 + sudo tar -C /opt -xf /tmp/firefox + sudo rm /tmp/firefox sudo ln -fs /opt/firefox/firefox /usr/bin/firefox sudo chown -R seluser /opt/firefox/firefox } @@ -27,7 +28,7 @@ if [[ -n "${FIREFOX_BETA}" ]]; then source ./experimenter/tests/firefox_desktop_beta_build.env FIREFOX_DESKTOP_BETA_TASK_ID=${FIREFOX_DESKTOP_BETA_TASK_ID//\"/} echo "Installing firefox beta from taskcluster" - install_firefox "https://firefox-ci-tc.services.mozilla.com/api/queue/v1/task/${FIREFOX_DESKTOP_BETA_TASK_ID}/artifacts/public/build/target.tar.bz2" + install_firefox "https://firefox-ci-tc.services.mozilla.com/api/queue/v1/task/${FIREFOX_DESKTOP_BETA_TASK_ID}/artifacts/public/build/target.tar.xz" fi if [[ -n "${FIREFOX_RELEASE}" ]]; then From 2f49f0c775c989d0455bd72f4376384b3a40c41a Mon Sep 17 00:00:00 2001 From: dataops-ci-bot <59976087+dataops-ci-bot@users.noreply.github.com> Date: Mon, 13 Jan 2025 10:42:23 -0800 Subject: [PATCH 24/36] chore(nimbus): Update application-services (#12026) --- application-services/application-services.env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application-services/application-services.env b/application-services/application-services.env index d9c7b820c3..c06085e02d 100644 --- a/application-services/application-services.env +++ b/application-services/application-services.env @@ -1 +1 @@ -APPLICATION_SERVICES_BUILD_ID=136.20250111050346 +APPLICATION_SERVICES_BUILD_ID=136.20250113172332 From 25587fc0deb2b445bb3cb4521ca48664b3618b18 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Jan 2025 14:30:46 -0800 Subject: [PATCH 25/36] chore(deps): Bump ruff from 0.8.0 to 0.9.1 in /cirrus/server (#12029) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [ruff](https://github.com/astral-sh/ruff) from 0.8.0 to 0.9.1.
Release notes

Sourced from ruff's releases.

0.9.1

Release Notes

Preview features

  • [pycodestyle] Run too-many-newlines-at-end-of-file on each cell in notebooks (W391) (#15308)
  • [ruff] Omit diagnostic for shadowed private function parameters in used-dummy-variable (RUF052) (#15376)

Rule changes

  • [flake8-bugbear] Improve assert-raises-exception message (B017) (#15389)

Formatter

  • Preserve trailing end-of line comments for the last string literal in implicitly concatenated strings (#15378)

Server

  • Fix a bug where the server and client notebooks were out of sync after reordering cells (#15398)

Bug fixes

  • [flake8-pie] Correctly remove wrapping parentheses (PIE800) (#15394)
  • [pyupgrade] Handle comments and multiline expressions correctly (UP037) (#15337)

Contributors

Install ruff 0.9.1

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf
https://github.com/astral-sh/ruff/releases/download/0.9.1/ruff-installer.sh
| sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy ByPass -c "irm
https://github.com/astral-sh/ruff/releases/download/0.9.1/ruff-installer.ps1
| iex"

... (truncated)

Changelog

Sourced from ruff's changelog.

0.9.1

Preview features

  • [pycodestyle] Run too-many-newlines-at-end-of-file on each cell in notebooks (W391) (#15308)
  • [ruff] Omit diagnostic for shadowed private function parameters in used-dummy-variable (RUF052) (#15376)

Rule changes

  • [flake8-bugbear] Improve assert-raises-exception message (B017) (#15389)

Formatter

  • Preserve trailing end-of line comments for the last string literal in implicitly concatenated strings (#15378)

Server

  • Fix a bug where the server and client notebooks were out of sync after reordering cells (#15398)

Bug fixes

  • [flake8-pie] Correctly remove wrapping parentheses (PIE800) (#15394)
  • [pyupgrade] Handle comments and multiline expressions correctly (UP037) (#15337)

0.9.0

Check out the blog post for a migration guide and overview of the changes!

Breaking changes

Ruff now formats your code according to the 2025 style guide. As a result, your code might now get formatted differently. See the formatter section for a detailed list of changes.

This release doesn’t remove or remap any existing stable rules.

Stabilization

The following rules have been stabilized and are no longer in preview:

The following behaviors have been stabilized:

... (truncated)

Commits
  • 12f86f3 Ruff 0.9.1 (#15407)
  • 2b28d56 Associate a trailing end-of-line comment in a parenthesized implicit concaten...
  • adca7bd Remove pygments pin (#15404)
  • 6b98a26 [red-knot] Support assert_type (#15194)
  • c874638 [red-knot] Move tuple-containing-Never tests to Markdown (#15402)
  • c364b58 [flake8-pie] Correctly remove wrapping parentheses (PIE800) (#15394)
  • 73d424e Fix outdated doc for handling the default file types with the pre-commit hook...
  • 6e9ff44 Insert the cells from the start position (#15398)
  • f2c3ddc [red-knot] Move intersection type tests to Markdown (#15396)
  • b861551 Remove unnecessary backticks (#15393)
  • Additional commits viewable in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=ruff&package-manager=pip&previous-version=0.8.0&new-version=0.9.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- cirrus/server/poetry.lock | 40 ++++++++++++++++++------------------ cirrus/server/pyproject.toml | 2 +- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/cirrus/server/poetry.lock b/cirrus/server/poetry.lock index 59883eba85..3eda99d4cf 100644 --- a/cirrus/server/poetry.lock +++ b/cirrus/server/poetry.lock @@ -1150,29 +1150,29 @@ files = [ [[package]] name = "ruff" -version = "0.8.0" +version = "0.9.1" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" files = [ - {file = "ruff-0.8.0-py3-none-linux_armv6l.whl", hash = "sha256:fcb1bf2cc6706adae9d79c8d86478677e3bbd4ced796ccad106fd4776d395fea"}, - {file = "ruff-0.8.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:295bb4c02d58ff2ef4378a1870c20af30723013f441c9d1637a008baaf928c8b"}, - {file = "ruff-0.8.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:7b1f1c76b47c18fa92ee78b60d2d20d7e866c55ee603e7d19c1e991fad933a9a"}, - {file = "ruff-0.8.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb0d4f250a7711b67ad513fde67e8870109e5ce590a801c3722580fe98c33a99"}, - {file = "ruff-0.8.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0e55cce9aa93c5d0d4e3937e47b169035c7e91c8655b0974e61bb79cf398d49c"}, - {file = "ruff-0.8.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3f4cd64916d8e732ce6b87f3f5296a8942d285bbbc161acee7fe561134af64f9"}, - {file = "ruff-0.8.0-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:c5c1466be2a2ebdf7c5450dd5d980cc87c8ba6976fb82582fea18823da6fa362"}, - {file = "ruff-0.8.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2dabfd05b96b7b8f2da00d53c514eea842bff83e41e1cceb08ae1966254a51df"}, - {file = "ruff-0.8.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:facebdfe5a5af6b1588a1d26d170635ead6892d0e314477e80256ef4a8470cf3"}, - {file = "ruff-0.8.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87a8e86bae0dbd749c815211ca11e3a7bd559b9710746c559ed63106d382bd9c"}, - {file = "ruff-0.8.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:85e654f0ded7befe2d61eeaf3d3b1e4ef3894469cd664ffa85006c7720f1e4a2"}, - {file = "ruff-0.8.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:83a55679c4cb449fa527b8497cadf54f076603cc36779b2170b24f704171ce70"}, - {file = "ruff-0.8.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:812e2052121634cf13cd6fddf0c1871d0ead1aad40a1a258753c04c18bb71bbd"}, - {file = "ruff-0.8.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:780d5d8523c04202184405e60c98d7595bdb498c3c6abba3b6d4cdf2ca2af426"}, - {file = "ruff-0.8.0-py3-none-win32.whl", hash = "sha256:5fdb6efecc3eb60bba5819679466471fd7d13c53487df7248d6e27146e985468"}, - {file = "ruff-0.8.0-py3-none-win_amd64.whl", hash = "sha256:582891c57b96228d146725975fbb942e1f30a0c4ba19722e692ca3eb25cc9b4f"}, - {file = "ruff-0.8.0-py3-none-win_arm64.whl", hash = "sha256:ba93e6294e9a737cd726b74b09a6972e36bb511f9a102f1d9a7e1ce94dd206a6"}, - {file = "ruff-0.8.0.tar.gz", hash = "sha256:a7ccfe6331bf8c8dad715753e157457faf7351c2b69f62f32c165c2dbcbacd44"}, + {file = "ruff-0.9.1-py3-none-linux_armv6l.whl", hash = "sha256:84330dda7abcc270e6055551aca93fdde1b0685fc4fd358f26410f9349cf1743"}, + {file = "ruff-0.9.1-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:3cae39ba5d137054b0e5b472aee3b78a7c884e61591b100aeb544bcd1fc38d4f"}, + {file = "ruff-0.9.1-py3-none-macosx_11_0_arm64.whl", hash = "sha256:50c647ff96f4ba288db0ad87048257753733763b409b2faf2ea78b45c8bb7fcb"}, + {file = "ruff-0.9.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0c8b149e9c7353cace7d698e1656ffcf1e36e50f8ea3b5d5f7f87ff9986a7ca"}, + {file = "ruff-0.9.1-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:beb3298604540c884d8b282fe7625651378e1986c25df51dec5b2f60cafc31ce"}, + {file = "ruff-0.9.1-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:39d0174ccc45c439093971cc06ed3ac4dc545f5e8bdacf9f067adf879544d969"}, + {file = "ruff-0.9.1-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:69572926c0f0c9912288915214ca9b2809525ea263603370b9e00bed2ba56dbd"}, + {file = "ruff-0.9.1-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:937267afce0c9170d6d29f01fcd1f4378172dec6760a9f4dface48cdabf9610a"}, + {file = "ruff-0.9.1-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:186c2313de946f2c22bdf5954b8dd083e124bcfb685732cfb0beae0c47233d9b"}, + {file = "ruff-0.9.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f94942a3bb767675d9a051867c036655fe9f6c8a491539156a6f7e6b5f31831"}, + {file = "ruff-0.9.1-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:728d791b769cc28c05f12c280f99e8896932e9833fef1dd8756a6af2261fd1ab"}, + {file = "ruff-0.9.1-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:2f312c86fb40c5c02b44a29a750ee3b21002bd813b5233facdaf63a51d9a85e1"}, + {file = "ruff-0.9.1-py3-none-musllinux_1_2_i686.whl", hash = "sha256:ae017c3a29bee341ba584f3823f805abbe5fe9cd97f87ed07ecbf533c4c88366"}, + {file = "ruff-0.9.1-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:5dc40a378a0e21b4cfe2b8a0f1812a6572fc7b230ef12cd9fac9161aa91d807f"}, + {file = "ruff-0.9.1-py3-none-win32.whl", hash = "sha256:46ebf5cc106cf7e7378ca3c28ce4293b61b449cd121b98699be727d40b79ba72"}, + {file = "ruff-0.9.1-py3-none-win_amd64.whl", hash = "sha256:342a824b46ddbcdddd3abfbb332fa7fcaac5488bf18073e841236aadf4ad5c19"}, + {file = "ruff-0.9.1-py3-none-win_arm64.whl", hash = "sha256:1cd76c7f9c679e6e8f2af8f778367dca82b95009bc7b1a85a47f1521ae524fa7"}, + {file = "ruff-0.9.1.tar.gz", hash = "sha256:fd2b25ecaf907d6458fa842675382c8597b3c746a2dde6717fe3415425df0c17"}, ] [[package]] @@ -1372,4 +1372,4 @@ standard = ["colorama (>=0.4)", "httptools (>=0.6.3)", "python-dotenv (>=0.13)", [metadata] lock-version = "2.0" python-versions = "^3.10.10" -content-hash = "4c7b79d63765c4e286b9a7f343a770469508054464380612a1405211eccda27d" +content-hash = "593b354b674e7a93c270846d11f2830e4ca9c575d90e0620bd25bedcc0d24c37" diff --git a/cirrus/server/pyproject.toml b/cirrus/server/pyproject.toml index 979dd6a3ad..604bb758e6 100644 --- a/cirrus/server/pyproject.toml +++ b/cirrus/server/pyproject.toml @@ -6,7 +6,7 @@ authors = [""] [tool.poetry.dependencies] python = "^3.10.10" -ruff = "^0.8.0" +ruff = "^0.9.1" fastapi = "^0.115.0" uvicorn = "^0.34.0" pytest = "^7.2.2" From 5b76d98c3de473f872cfb2432638d7135d9a2e1a Mon Sep 17 00:00:00 2001 From: dataops-ci-bot <59976087+dataops-ci-bot@users.noreply.github.com> Date: Mon, 13 Jan 2025 14:31:05 -0800 Subject: [PATCH 26/36] chore(nimbus): Update application-services (#12027) --- application-services/application-services.env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application-services/application-services.env b/application-services/application-services.env index c06085e02d..438d5a101f 100644 --- a/application-services/application-services.env +++ b/application-services/application-services.env @@ -1 +1 @@ -APPLICATION_SERVICES_BUILD_ID=136.20250113172332 +APPLICATION_SERVICES_BUILD_ID=136.20250113194724 From 8ff47fe678b9c9215c7d75f3eab98181442f6f42 Mon Sep 17 00:00:00 2001 From: dataops-ci-bot <59976087+dataops-ci-bot@users.noreply.github.com> Date: Mon, 13 Jan 2025 14:31:48 -0800 Subject: [PATCH 27/36] chore(nimbus): Update External Configs (#12028) SUMMARY: SUCCESS: fenix at master (e46f8390a67732e08d6c04729f27631edec98aeb) version None fenix at master (e46f8390a67732e08d6c04729f27631edec98aeb) version 136.0.0 fenix at beta (d4e6bf4b79d9200d2c3613a58051d0cfe1fcc846) version 135.0.0 fenix at release (5bbcab17c180296d65b7fd249b01aed2e7ad2267) version 134.0.1 firefox_ios at main (e9f02a05b9664d45bd82394e8f371f4474f2c20d) version None firefox_ios at release/v135 (98fbe880bdf41a84fbc23b3cb4b99966647b5438) version 135.0.0 firefox_ios at main (e9f02a05b9664d45bd82394e8f371f4474f2c20d) version 136.0.0 focus_android at main (fe8a71cd70ad5674abe1824fe11dc78372b736c2) version None focus_ios at main (e9f02a05b9664d45bd82394e8f371f4474f2c20d) version None focus_ios at release/v135 (98fbe880bdf41a84fbc23b3cb4b99966647b5438) version 135.0.0 focus_ios at main (e9f02a05b9664d45bd82394e8f371f4474f2c20d) version 136.0.0 monitor_cirrus at main (0fff5183836faa3373227c77b1bb3aab06839f9e) version None mozillavpn_backend_cirrus at main (86963e1fe3fbe3aaee3aa3776efad50a85c516e2) version None firefox_accounts_cirrus at main (fb78ebd701cc833f00b10b3fb799527d5a4d7518) version None firefox_desktop at central (000fac19cadd6513cd37a07e0dc4a357a029ffc1) version None firefox_desktop at beta (9bf021b8cc51a5b58a3002120c1a897755c02f9f) version 135.0.0 firefox_desktop at release (df45ac03bd6f89c9930c648b0feb4db14868ddc8) version 134.0.1 CACHED: firefox_ios at release/v131 (7444df581b62d357df12ddc3c90d821d940efbb8) version 131.5.0 (cached) firefox_ios at release/v132 (cb318d0061ec6354167ecc1968020d5d75f1bffc) version 132.2.0 (cached) firefox_ios at release/v133 (7c651ce29e94c6389af7a69ec6b5c44251976e92) version 133.5.0 (cached) firefox_ios at release/v134 (a19590e788dbb236292c88126468c59b66f20dc3) version 134.1.0 (cached) focus_android at releases_v121 (979fbe8d7fe04a9b09fe657bb787fda6f4d5ab42) version 121.1.1 (cached) focus_android at releases_v122 (1fcbfc41dba53965481a0e4d4725833bf3669dce) version 122.1.1 (cached) focus_android at releases_v123 (5a38e0cb4499f659a5fff308fa1deee653c0318b) version 123.1.1 (cached) focus_android at releases_v124 (0ad8d97fb3ab2ec6b9bb3905ee742900a4b9325d) version 124.2.1 (cached) focus_android at releases_v125 (2b43ab8069abac2bfee4b609e734c0207876a2ac) version 125.3.1 (cached) focus_android at focus-v125.3.0 (9f2990415376f169eb0053fceb329b70b4421bcb) version 125.3.0 (cached) focus_android at focus-v125.2.0 (d1c6eeb4167fc8ffed02cdfd3138fa696381d548) version 125.2.0 (cached) focus_android at main (fe8a71cd70ad5674abe1824fe11dc78372b736c2) version 125.0.0 (cached) focus_android at focus-v124.2.0 (7a0e399c7bc4faae43ce70ddc201c7899498d1b5) version 124.2.0 (cached) focus_android at focus-v124.1.0 (516df33ca96e950af1bf791893cd16d7add61c5d) version 124.1.0 (cached) focus_android at focus-v124.0 (5afe87a5bbb92f7ecf990a2fbc8095503a47c272) version 124.0.0 (cached) focus_android at focus-v123.1.0 (cb7c807e0fb5bc08131415e2e5ecef9da658d410) version 123.1.0 (cached) focus_android at focus-v123.0 (f5f378e2c05c9d69a5088c112c14fdea507d1c65) version 123.0.0 (cached) focus_android at focus-v122.1.0 (0d665405685c43c9266a3de65f16eabb832bb908) version 122.1.0 (cached) focus_android at focus-v122.0.1 (c67c9e840c00ec348a6a27adedad28feb54aa4a2) version 122.0.1 (cached) focus_android at focus-v122.0 (b49c4f23804d23cc727b8f70c061dccd64d720bc) version 122.0.0 (cached) focus_android at focus-v121.1.0 (62d5117f7996cc8862fdbdc0cb4a1dd5cdebedd6) version 121.1.0 (cached) focus_android at focus-v121.0.1 (fd4d2513324712e91577d8be18797e64089d3cf1) version 121.0.1 (cached) focus_android at focus-v121.0 (1955f8455fa2cac1b2080af9360996c06df5b4dd) version 121.0.0 (cached) focus_ios at release/v131 (7444df581b62d357df12ddc3c90d821d940efbb8) version 131.5.0 (cached) focus_ios at release/v132 (cb318d0061ec6354167ecc1968020d5d75f1bffc) version 132.2.0 (cached) focus_ios at release/v133 (7c651ce29e94c6389af7a69ec6b5c44251976e92) version 133.5.0 (cached) focus_ios at release/v134 (a19590e788dbb236292c88126468c59b66f20dc3) version 134.1.0 (cached) focus_ios at focus/klar-v134.0 (be550d94c2c7bc8b8902cdf7fe542a64e73a381a) version 134.0.0 (cached) focus_ios at focus/klar-v133.0 (a3372669a06fa684d3c5945c317d6787e3125303) version 133.0.0 (cached) focus_ios at focus/klar-v132.0 (d9ed6134db59ff456d343e2bb211aefd040319ac) version 132.0.0 (cached) focus_ios at focus/klar-v131.1 (b7dca2271b14988837524a30eb154d91eb5e4912) version 131.1.0 (cached) focus_ios at focus/klar-v131.0 (34d92c8df1b1522a1da88c23879b439d763ec133) version 131.0.0 (cached) firefox_desktop at central (000fac19cadd6513cd37a07e0dc4a357a029ffc1) version 136.0.0 (cached) firefox_desktop at esr115 (bd4fb4aebf03b8c20f66ba05e5d1b378a51b92ed) version 115.20.0 (cached) firefox_desktop at esr128 (9ae18a146984c0398f5a3d4813f96f4ef297e232) version 128.7.0 (cached) Circle CI Task: https://circleci.com/gh/mozilla/experimenter/274280 --- .../experimenter/features/manifests/fenix/.ref-cache.yaml | 6 +++--- .../features/manifests/firefox-desktop/.ref-cache.yaml | 4 ++-- .../manifests/firefox-desktop/v135.0.0/experimenter.yaml | 6 ++++++ .../features/manifests/focus-ios/.ref-cache.yaml | 4 ++-- .../experimenter/features/manifests/ios/.ref-cache.yaml | 4 ++-- 5 files changed, 15 insertions(+), 9 deletions(-) diff --git a/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml b/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml index 31b110339b..e49412320b 100644 --- a/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml @@ -1,3 +1,3 @@ -beta: 2f079b6ad3d419a7cdc467fd5e6d1f67266ee5f6 -master: d788991012a1a8ec862787f9799db4954a33045f -release: 17da7b0df454f23474df88f569b2e854d8671ba8 +beta: d4e6bf4b79d9200d2c3613a58051d0cfe1fcc846 +master: e46f8390a67732e08d6c04729f27631edec98aeb +release: 5bbcab17c180296d65b7fd249b01aed2e7ad2267 diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml b/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml index 9fc64c7541..b005a6b44c 100644 --- a/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml @@ -1,5 +1,5 @@ -beta: d4e8dad97c5d66b0f0febac15834f2710648501b +beta: 9bf021b8cc51a5b58a3002120c1a897755c02f9f central: 000fac19cadd6513cd37a07e0dc4a357a029ffc1 esr115: bd4fb4aebf03b8c20f66ba05e5d1b378a51b92ed esr128: 9ae18a146984c0398f5a3d4813f96f4ef297e232 -release: 305d3819bf05f28c99c9cab5bbeb9e7867fb4d77 +release: df45ac03bd6f89c9930c648b0feb4db14868ddc8 diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/v135.0.0/experimenter.yaml b/experimenter/experimenter/features/manifests/firefox-desktop/v135.0.0/experimenter.yaml index b1199d4b58..ddbaeb3aeb 100644 --- a/experimenter/experimenter/features/manifests/firefox-desktop/v135.0.0/experimenter.yaml +++ b/experimenter/experimenter/features/manifests/firefox-desktop/v135.0.0/experimenter.yaml @@ -1506,6 +1506,12 @@ email-autocomplete-relay: type: string description: Which Relay UI treatment to show fallbackPref: signon.firefoxRelay.firstOfferVersionFallback + showToAllBrowsers: + type: boolean + setPref: + branch: user + pref: signon.firefoxRelay.showToAllBrowsers + description: Whether to show Relay to Firefox users who are NOT signed into FXA. # This feature flag mirrors the one used for ios # https://github.com/mozilla-mobile/firefox-ios/blob/main/nimbus-features/addressAutofillFeature.yaml diff --git a/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml b/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml index b2e2a822fe..2a9faf2fb2 100644 --- a/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml @@ -13,7 +13,7 @@ focus/klar-v131.1: b7dca2271b14988837524a30eb154d91eb5e4912 focus/klar-v132.0: d9ed6134db59ff456d343e2bb211aefd040319ac focus/klar-v133.0: a3372669a06fa684d3c5945c317d6787e3125303 focus/klar-v134.0: be550d94c2c7bc8b8902cdf7fe542a64e73a381a -main: 199c0037a5cdf660761978180319b029e40a8c1e +main: e9f02a05b9664d45bd82394e8f371f4474f2c20d release/v124: da250bed9e19c4978d4400d6d404cb312e33636e release/v125: a3e1e0773a00009e08d95726fd518ab642255ccd release/v126: 6f305409b4af68e8404401a2caad8cb0da9a0494 @@ -25,4 +25,4 @@ release/v131: 7444df581b62d357df12ddc3c90d821d940efbb8 release/v132: cb318d0061ec6354167ecc1968020d5d75f1bffc release/v133: 7c651ce29e94c6389af7a69ec6b5c44251976e92 release/v134: a19590e788dbb236292c88126468c59b66f20dc3 -release/v135: 1e11eb62e9d6fb91c030326111b229422c9637d5 +release/v135: 98fbe880bdf41a84fbc23b3cb4b99966647b5438 diff --git a/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml b/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml index 527791054e..76f39beee7 100644 --- a/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml @@ -1,4 +1,4 @@ -main: 199c0037a5cdf660761978180319b029e40a8c1e +main: e9f02a05b9664d45bd82394e8f371f4474f2c20d release/v117: 43b690c450066d4dde1b2ccb93ed3714d244d502 release/v118: 89a7ea3c3372e5a4ef5b3c5b85499d26198d0524 release/v119: 7dc381f991c6d2a983c3ba7f0cffd880e8c29e7b @@ -17,7 +17,7 @@ release/v131: 7444df581b62d357df12ddc3c90d821d940efbb8 release/v132: cb318d0061ec6354167ecc1968020d5d75f1bffc release/v133: 7c651ce29e94c6389af7a69ec6b5c44251976e92 release/v134: a19590e788dbb236292c88126468c59b66f20dc3 -release/v135: 1e11eb62e9d6fb91c030326111b229422c9637d5 +release/v135: 98fbe880bdf41a84fbc23b3cb4b99966647b5438 v117.0: 3b275ab1e4ccef769d84437033c0c68acfd2df8a v117.1: 55ddcf473a65d106d43f6d2ae5af4076d6d03688 v117.2: 5cc367aa8857199cd8a54d53e8faf6696c5614c3 From 8c4c275d8581e25368e60112624121fdf209c93d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Jan 2025 22:31:51 +0000 Subject: [PATCH 28/36] chore(deps): Bump postcss from 8.4.31 to 8.5.0 in /experimenter (#12030) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [postcss](https://github.com/postcss/postcss) from 8.4.31 to 8.5.0.
Release notes

Sourced from postcss's releases.

8.5 “Duke Alloces”

PostCSS 8.5 brought API to work better with non-CSS sources like HTML, Vue.js/Svelte sources or CSS-in-JS.

@​romainmenke during his work on Stylelint added Input#document in additional to Input#css.

root.source.input.document //=>
"<p>Hello</p>
                           //    <style>
                           //    p {
                           //      color: green;
                           //    }
                           //    </style>"
root.source.input.css      //=> "p {
                           //      color: green;
                           //    }"

Thanks to Sponsors

This release was possible thanks to our community.

If your company wants to support the sustainability of front-end infrastructure or wants to give some love to PostCSS, you can join our supporters by:

8.4.49

8.4.48

  • Fixed position calculation in error/warnings methods (by @​romainmenke).

8.4.47

  • Removed debug code.

8.4.46

  • Fixed Cannot read properties of undefined (reading 'before').

8.4.45

  • Removed unnecessary fix which could lead to infinite loop.

8.4.44

  • Another way to fix markClean is not a function error.

8.4.43

  • Fixed markClean is not a function error.

... (truncated)

Changelog

Sourced from postcss's changelog.

Change Log

This project adheres to Semantic Versioning.

8.5 “Duke Alloces”

  • Added Input#document for sources like CSS-in-JS or HTML (by @​romainmenke).

8.4.49

8.4.48

  • Fixed position calculation in error/warnings methods (by @​romainmenke).

8.4.47

  • Removed debug code.

8.4.46

  • Fixed Cannot read properties of undefined (reading 'before').

8.4.45

  • Removed unnecessary fix which could lead to infinite loop.

8.4.44

  • Another way to fix markClean is not a function error.

8.4.43

  • Fixed markClean is not a function error.

8.4.42

  • Fixed CSS syntax error on long minified files (by @​varpstar).

8.4.41

8.4.40

  • Moved to getter/setter in nodes types to help Sass team (by @​nex3).

8.4.39

8.4.38

8.4.37

  • Fixed original.column are not numbers error in another case.

8.4.36

  • Fixed original.column are not numbers error on broken previous source map.

8.4.35

... (truncated)

Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=postcss&package-manager=npm_and_yarn&previous-version=8.4.31&new-version=8.5.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .../experimenter/nimbus-ui/package.json | 2 +- .../nimbus_ui_new/static/package.json | 2 +- experimenter/yarn.lock | 46 +++++++------------ 3 files changed, 18 insertions(+), 32 deletions(-) diff --git a/experimenter/experimenter/nimbus-ui/package.json b/experimenter/experimenter/nimbus-ui/package.json index fd20782794..9a083d2ae7 100644 --- a/experimenter/experimenter/nimbus-ui/package.json +++ b/experimenter/experimenter/nimbus-ui/package.json @@ -52,7 +52,7 @@ "fuse.js": "^6.6.2", "graphql": "^15.9.0", "json-to-ast": "^2.1.0", - "postcss": "8.4.31", + "postcss": "8.5.0", "react": "^17.0.2", "react-async-hook": "^3.6.2", "react-bootstrap": "^1.6.1", diff --git a/experimenter/experimenter/nimbus_ui_new/static/package.json b/experimenter/experimenter/nimbus_ui_new/static/package.json index 117e906cce..787ed0310c 100644 --- a/experimenter/experimenter/nimbus_ui_new/static/package.json +++ b/experimenter/experimenter/nimbus_ui_new/static/package.json @@ -23,7 +23,7 @@ "eslint-config-prettier": "^9.1.0", "eslint-plugin-import": "^2.31.0", "eslint-plugin-prettier": "^5.1.3", - "postcss": "^8.4.38", + "postcss": "^8.5.0", "postcss-loader": "^5", "prettier": "^3.3.2", "sass": "^1.83.0", diff --git a/experimenter/yarn.lock b/experimenter/yarn.lock index b4b5ce82c8..38cc1d030c 100644 --- a/experimenter/yarn.lock +++ b/experimenter/yarn.lock @@ -5479,9 +5479,9 @@ browserify-zlib@^0.2.0: pako "~1.0.5" browserslist@4.14.2, browserslist@^4.0.0, browserslist@^4.1.0, browserslist@^4.12.0, browserslist@^4.16.5, browserslist@^4.21.4, browserslist@^4.24.0, browserslist@^4.6.2, browserslist@^4.6.4, browserslist@^4.9.1: - version "4.24.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.3.tgz#5fc2725ca8fb3c1432e13dac278c7cc103e026d2" - integrity sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA== + version "4.24.4" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.4.tgz#c6b2865a3f08bcb860a0e827389003b9fe686e4b" + integrity sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A== dependencies: caniuse-lite "^1.0.30001688" electron-to-chromium "^1.5.73" @@ -13605,7 +13605,7 @@ nan@^2.12.1: resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw== -nanoid@^3.3.6, nanoid@^3.3.7: +nanoid@^3.3.8: version "3.3.8" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.8.tgz#b1be3030bee36aaff18bacb375e5cce521684baf" integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w== @@ -14618,12 +14618,7 @@ picocolors@^0.2.1: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f" integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - -picocolors@^1.1.0: +picocolors@^1.0.0, picocolors@^1.1.0, picocolors@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== @@ -15553,14 +15548,14 @@ postcss@7.0.32: source-map "^0.6.1" supports-color "^6.1.0" -postcss@8.4.31: - version "8.4.31" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" - integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== +postcss@8.5.0, postcss@^8.4.33, postcss@^8.5.0: + version "8.5.0" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.0.tgz#15244b9fd65f809b2819682456f0e7e1e30c145b" + integrity sha512-27VKOqrYfPncKA2NrFOVhP5MGAfHKLYn/Q0mz9cNQyRAKYi3VNHwYU2qKKqPCqgBmeeJ0uAFB56NumXZ5ZReXg== dependencies: - nanoid "^3.3.6" - picocolors "^1.0.0" - source-map-js "^1.0.2" + nanoid "^3.3.8" + picocolors "^1.1.1" + source-map-js "^1.2.1" postcss@^6.0.1: version "6.0.23" @@ -15579,15 +15574,6 @@ postcss@^7, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.11, postcss@^7.0.14, po picocolors "^0.2.1" source-map "^0.6.1" -postcss@^8.4.33, postcss@^8.4.38: - version "8.4.38" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.38.tgz#b387d533baf2054288e337066d81c6bee9db9e0e" - integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A== - dependencies: - nanoid "^3.3.7" - picocolors "^1.0.0" - source-map-js "^1.2.0" - posthtml-parser@^0.4.0, posthtml-parser@^0.4.1: version "0.4.2" resolved "https://registry.yarnpkg.com/posthtml-parser/-/posthtml-parser-0.4.2.tgz#a132bbdf0cd4bc199d34f322f5c1599385d7c6c1" @@ -17479,10 +17465,10 @@ source-list-map@^2.0.0: resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== -"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2, source-map-js@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" - integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== +"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: version "0.5.3" From 248a5c026942c07349a1a026b001b8daeaf80a0d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Jan 2025 17:32:14 -0500 Subject: [PATCH 29/36] chore(deps): Bump marshmallow from 3.24.0 to 3.25.1 in /experimenter/tests (#12032) Bumps [marshmallow](https://github.com/marshmallow-code/marshmallow) from 3.24.0 to 3.25.1.
Changelog

Sourced from marshmallow's changelog.

3.25.1 (2025-01-11)


Bug fixes:

  • Typing: Fix type annotations for Tuple <marshmallow.fields.Tuple>, Boolean <marshmallow.fields.Boolean>, and Pluck <marshmallow.fields.Pluck> constructors (:pr:2756).
  • Typing: Fix overload for marshmallow.class_registry.get_class (:pr:2756).

Documentation:

  • Various documentation improvements (:pr:2746, :pr:2747, :pr:2748, :pr:2749, :pr:2750, :pr:2751).

3.25.0 (2025-01-09)


Features:

  • Typing: Improve type annotations for SchemaMeta.get_declared_fields (:pr:2742).

Bug fixes:

  • Typing: Relax type annotation for Schema.opts to allow subclasses to define their own options classes (:pr:2744).

Other changes:

  • Restore marshmallow.base.SchemaABC for backwards-compatibility (:issue:2743). Note that this class is deprecated and will be removed in marshmallow 4. Use marshmallow.schema.Schema as a base class for type-checking instead.

3.24.2 (2025-01-08)


Changes:

  • Don't override __new__ to avoid breaking usages of inspect.signature with Field <marshmallow.fields.Field> classes. This allows marshmallow-sqlalchemy users to upgrade marshmallow without upgrading to marshmallow-sqlalchemy>=1.1.1.

Documentation:

  • Add top-level API back to docs (:issue:2739). Thanks :user:llucax for reporting.

3.24.1 (2025-01-06)


... (truncated)

Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=marshmallow&package-manager=pip&previous-version=3.24.0&new-version=3.25.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- experimenter/tests/poetry.lock | 10 +++++----- experimenter/tests/pyproject.toml | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/experimenter/tests/poetry.lock b/experimenter/tests/poetry.lock index 4715e1c6e4..7981a31f05 100644 --- a/experimenter/tests/poetry.lock +++ b/experimenter/tests/poetry.lock @@ -526,13 +526,13 @@ files = [ [[package]] name = "marshmallow" -version = "3.24.0" +version = "3.25.1" description = "A lightweight library for converting complex datatypes to and from native Python datatypes." optional = false python-versions = ">=3.9" files = [ - {file = "marshmallow-3.24.0-py3-none-any.whl", hash = "sha256:459922b7a1fd3d29d5082ddcadfcea0efd98985030e71d3ef0dd8f44f406e41d"}, - {file = "marshmallow-3.24.0.tar.gz", hash = "sha256:378572f727e52123d00de1bdd9b7ea7bed18bbfedc7f9bfbcddaf78925a8d602"}, + {file = "marshmallow-3.25.1-py3-none-any.whl", hash = "sha256:ec5d00d873ce473b7f2ffcb7104286a376c354cab0c2fa12f5573dab03e87210"}, + {file = "marshmallow-3.25.1.tar.gz", hash = "sha256:f4debda3bb11153d81ac34b0d582bf23053055ee11e791b54b4b35493468040a"}, ] [package.dependencies] @@ -540,7 +540,7 @@ packaging = ">=17.0" [package.extras] dev = ["marshmallow[tests]", "pre-commit (>=3.5,<5.0)", "tox"] -docs = ["alabaster (==1.0.0)", "autodocsumm (==0.2.14)", "sphinx (==8.1.3)", "sphinx-issues (==5.0.0)"] +docs = ["autodocsumm (==0.2.14)", "furo (==2024.8.6)", "sphinx (==8.1.3)", "sphinx-copybutton (==0.5.2)", "sphinx-issues (==5.0.0)", "sphinxext-opengraph (==0.9.1)"] tests = ["pytest", "simplejson"] [[package]] @@ -1733,4 +1733,4 @@ test = ["zope.security", "zope.testrunner"] [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "ad762912648bbf7d7c87051ce29937f327a2c40b27bf2041138bc0cafef7f6a5" +content-hash = "7e4816bc4119dbf0474562f19ecc5f26424f4a3cca8098d82f248792bf7725d3" diff --git a/experimenter/tests/pyproject.toml b/experimenter/tests/pyproject.toml index 3121dc3177..7d8c328429 100644 --- a/experimenter/tests/pyproject.toml +++ b/experimenter/tests/pyproject.toml @@ -45,7 +45,7 @@ pytest-forked = "^1.6.0" apipkg = "^3.0.2" python-dateutil = "^2.9.0.post0" pydantic = "^1.10.15" -marshmallow = "^3.24.0" +marshmallow = "^3.25.1" marshmallow-enum = "^1.5.1" mypy-extensions = "^1.0.0" charset-normalizer = "^3.4.0" From f1502ed8a03828e9d160c439814e5040181cca3d Mon Sep 17 00:00:00 2001 From: dataops-ci-bot <59976087+dataops-ci-bot@users.noreply.github.com> Date: Tue, 14 Jan 2025 08:35:32 -0800 Subject: [PATCH 30/36] chore(nimbus): Update External Configs (#12040) SUMMARY: SUCCESS: fenix at master (eb80f267aabbf90ac66ebbed77b6d33592eb2be0) version None fenix at master (eb80f267aabbf90ac66ebbed77b6d33592eb2be0) version 136.0.0 fenix at beta (5e7a223f7309b04c4b7b29d64ec24e4251e5ef60) version 135.0.0 fenix at release (2299d1d3cb7d7f2df856ef274f8df5e75b87500a) version 134.0.2 firefox_ios at main (3137c1235e6af34e577436ac87c44f6127980696) version None firefox_ios at main (3137c1235e6af34e577436ac87c44f6127980696) version 136.0.0 focus_android at main (fe8a71cd70ad5674abe1824fe11dc78372b736c2) version None focus_ios at main (3137c1235e6af34e577436ac87c44f6127980696) version None focus_ios at main (3137c1235e6af34e577436ac87c44f6127980696) version 136.0.0 monitor_cirrus at main (d18e1117500d8b18cb722d8ed47bf6896bcd47a4) version None mozillavpn_backend_cirrus at main (86963e1fe3fbe3aaee3aa3776efad50a85c516e2) version None firefox_accounts_cirrus at main (9ba2f65c8c94fa2c4444c90d6dcd6e7c6df1611c) version None firefox_desktop at central (234c9429e537609d3f10c999f7fc808af688ec3d) version None firefox_desktop at central (234c9429e537609d3f10c999f7fc808af688ec3d) version 136.0.0 firefox_desktop at beta (05abdaa663670b484c696082d5a69ee999f25730) version 135.0.0 firefox_desktop at release (2f6aed4fe4581fede29aca4e12d3c3f45cb44d76) version 134.0.2 firefox_desktop at esr115 (54237eecf7beefa9390fddbef45941cd844b9db9) version 115.20.0 firefox_desktop at esr128 (c2fe3dd80e493387d1f266022f11b30a726f38d8) version 128.7.0 CACHED: firefox_ios at release/v131 (7444df581b62d357df12ddc3c90d821d940efbb8) version 131.5.0 (cached) firefox_ios at release/v132 (cb318d0061ec6354167ecc1968020d5d75f1bffc) version 132.2.0 (cached) firefox_ios at release/v133 (7c651ce29e94c6389af7a69ec6b5c44251976e92) version 133.5.0 (cached) firefox_ios at release/v134 (a19590e788dbb236292c88126468c59b66f20dc3) version 134.1.0 (cached) firefox_ios at release/v135 (98fbe880bdf41a84fbc23b3cb4b99966647b5438) version 135.0.0 (cached) focus_android at releases_v121 (979fbe8d7fe04a9b09fe657bb787fda6f4d5ab42) version 121.1.1 (cached) focus_android at releases_v122 (1fcbfc41dba53965481a0e4d4725833bf3669dce) version 122.1.1 (cached) focus_android at releases_v123 (5a38e0cb4499f659a5fff308fa1deee653c0318b) version 123.1.1 (cached) focus_android at releases_v124 (0ad8d97fb3ab2ec6b9bb3905ee742900a4b9325d) version 124.2.1 (cached) focus_android at releases_v125 (2b43ab8069abac2bfee4b609e734c0207876a2ac) version 125.3.1 (cached) focus_android at focus-v125.3.0 (9f2990415376f169eb0053fceb329b70b4421bcb) version 125.3.0 (cached) focus_android at focus-v125.2.0 (d1c6eeb4167fc8ffed02cdfd3138fa696381d548) version 125.2.0 (cached) focus_android at main (fe8a71cd70ad5674abe1824fe11dc78372b736c2) version 125.0.0 (cached) focus_android at focus-v124.2.0 (7a0e399c7bc4faae43ce70ddc201c7899498d1b5) version 124.2.0 (cached) focus_android at focus-v124.1.0 (516df33ca96e950af1bf791893cd16d7add61c5d) version 124.1.0 (cached) focus_android at focus-v124.0 (5afe87a5bbb92f7ecf990a2fbc8095503a47c272) version 124.0.0 (cached) focus_android at focus-v123.1.0 (cb7c807e0fb5bc08131415e2e5ecef9da658d410) version 123.1.0 (cached) focus_android at focus-v123.0 (f5f378e2c05c9d69a5088c112c14fdea507d1c65) version 123.0.0 (cached) focus_android at focus-v122.1.0 (0d665405685c43c9266a3de65f16eabb832bb908) version 122.1.0 (cached) focus_android at focus-v122.0.1 (c67c9e840c00ec348a6a27adedad28feb54aa4a2) version 122.0.1 (cached) focus_android at focus-v122.0 (b49c4f23804d23cc727b8f70c061dccd64d720bc) version 122.0.0 (cached) focus_android at focus-v121.1.0 (62d5117f7996cc8862fdbdc0cb4a1dd5cdebedd6) version 121.1.0 (cached) focus_android at focus-v121.0.1 (fd4d2513324712e91577d8be18797e64089d3cf1) version 121.0.1 (cached) focus_android at focus-v121.0 (1955f8455fa2cac1b2080af9360996c06df5b4dd) version 121.0.0 (cached) focus_ios at release/v131 (7444df581b62d357df12ddc3c90d821d940efbb8) version 131.5.0 (cached) focus_ios at release/v132 (cb318d0061ec6354167ecc1968020d5d75f1bffc) version 132.2.0 (cached) focus_ios at release/v133 (7c651ce29e94c6389af7a69ec6b5c44251976e92) version 133.5.0 (cached) focus_ios at release/v134 (a19590e788dbb236292c88126468c59b66f20dc3) version 134.1.0 (cached) focus_ios at release/v135 (98fbe880bdf41a84fbc23b3cb4b99966647b5438) version 135.0.0 (cached) focus_ios at focus/klar-v134.0 (be550d94c2c7bc8b8902cdf7fe542a64e73a381a) version 134.0.0 (cached) focus_ios at focus/klar-v133.0 (a3372669a06fa684d3c5945c317d6787e3125303) version 133.0.0 (cached) focus_ios at focus/klar-v132.0 (d9ed6134db59ff456d343e2bb211aefd040319ac) version 132.0.0 (cached) focus_ios at focus/klar-v131.1 (b7dca2271b14988837524a30eb154d91eb5e4912) version 131.1.0 (cached) focus_ios at focus/klar-v131.0 (34d92c8df1b1522a1da88c23879b439d763ec133) version 131.0.0 (cached) Circle CI Task: https://circleci.com/gh/mozilla/experimenter/274538 --- .../features/manifests/fenix/.ref-cache.yaml | 6 +- .../manifests/fenix/v134.0.2/beta.fml.yaml | 936 ++++ .../fenix/v134.0.2/developer.fml.yaml | 962 ++++ .../fenix/v134.0.2/experimenter.yaml | 442 ++ .../manifests/fenix/v134.0.2/nightly.fml.yaml | 936 ++++ .../manifests/fenix/v134.0.2/release.fml.yaml | 936 ++++ .../manifests/firefox-desktop/.ref-cache.yaml | 10 +- .../v134.0.2/experimenter.yaml | 4058 +++++++++++++++++ ...kgroundTaskMessagingExperiment.schema.json | 344 ++ .../schemas/MessagingExperiment.schema.json | 1623 +++++++ .../schemas/PrefFlipsFeature.schema.json | 48 + .../schemas/LegacyHeartbeat.schema.json | 73 + .../manifests/focus-ios/.ref-cache.yaml | 2 +- .../features/manifests/ios/.ref-cache.yaml | 2 +- 14 files changed, 10368 insertions(+), 10 deletions(-) create mode 100644 experimenter/experimenter/features/manifests/fenix/v134.0.2/beta.fml.yaml create mode 100644 experimenter/experimenter/features/manifests/fenix/v134.0.2/developer.fml.yaml create mode 100644 experimenter/experimenter/features/manifests/fenix/v134.0.2/experimenter.yaml create mode 100644 experimenter/experimenter/features/manifests/fenix/v134.0.2/nightly.fml.yaml create mode 100644 experimenter/experimenter/features/manifests/fenix/v134.0.2/release.fml.yaml create mode 100644 experimenter/experimenter/features/manifests/firefox-desktop/v134.0.2/experimenter.yaml create mode 100644 experimenter/experimenter/features/manifests/firefox-desktop/v134.0.2/schemas/browser/components/asrouter/content-src/schemas/BackgroundTaskMessagingExperiment.schema.json create mode 100644 experimenter/experimenter/features/manifests/firefox-desktop/v134.0.2/schemas/browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json create mode 100644 experimenter/experimenter/features/manifests/firefox-desktop/v134.0.2/schemas/toolkit/components/nimbus/schemas/PrefFlipsFeature.schema.json create mode 100644 experimenter/experimenter/features/manifests/firefox-desktop/v134.0.2/schemas/toolkit/components/normandy/schemas/LegacyHeartbeat.schema.json diff --git a/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml b/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml index e49412320b..c0000661f4 100644 --- a/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml @@ -1,3 +1,3 @@ -beta: d4e6bf4b79d9200d2c3613a58051d0cfe1fcc846 -master: e46f8390a67732e08d6c04729f27631edec98aeb -release: 5bbcab17c180296d65b7fd249b01aed2e7ad2267 +beta: 5e7a223f7309b04c4b7b29d64ec24e4251e5ef60 +master: eb80f267aabbf90ac66ebbed77b6d33592eb2be0 +release: 2299d1d3cb7d7f2df856ef274f8df5e75b87500a diff --git a/experimenter/experimenter/features/manifests/fenix/v134.0.2/beta.fml.yaml b/experimenter/experimenter/features/manifests/fenix/v134.0.2/beta.fml.yaml new file mode 100644 index 0000000000..569fb62375 --- /dev/null +++ b/experimenter/experimenter/features/manifests/fenix/v134.0.2/beta.fml.yaml @@ -0,0 +1,936 @@ +--- +version: 1.0.0 +about: + description: Nimbus Feature Manifest for Fenix (Firefox Android) +channels: + - beta +features: + alternative-app-launcher-icon: + description: A feature that changes the app launcher icon background color. + variables: + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + reset-to-default: + description: "If true use the default icon, if false use the alternative icon. This is required to 'reset' the icon for enrolled users once the initial experiment is complete.\n" + type: Boolean + default: false + awesomebar-suggestion-provider: + description: Configuration for the Firefox Suggest awesomebar suggestion provider. + variables: + available-suggestion-types: + description: "A map of suggestion types to booleans that indicate whether or not the provider should return suggestions of those types.\n" + type: "Map" + default: + amp: true + ampMobile: false + wikipedia: true + bookmarks: + description: Feature for Bookmarks + variables: + new-compose-ui: + description: "if true, enable new compose based UI" + type: Boolean + default: false + cookie-banners: + description: Features for cookie banner handling. + variables: + sections-enabled: + description: This property provides a lookup table of whether or not the given section should be enabled. + type: "Map" + default: + feature-ui: 1 + feature-setting-value: 0 + feature-setting-value-pbm: 1 + feature-setting-detect-only: 0 + feature-setting-global-rules: 1 + feature-setting-global-rules-sub-frames: 1 + fingerprinting-protection: + description: Control Fingerprinting Protection + variables: + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + enabled-normal: + description: "Enables / disables fingerprinting protection in normal browsing mode.\n" + type: Boolean + default: false + enabled-private: + description: "Enables / disables fingerprinting protection in private browsing mode.\n" + type: Boolean + default: true + fdlibm-math: + description: "Uses a different math backend for Math.sin/cos/tan in JavaScript that exposes less entropy\n" + type: Boolean + default: false + overrides: + description: "The protection overrides to add or remove fingerprinting protection targets. Please check RFPTargets.inc for all supported targets.\n" + type: String + default: "" + fission: + description: The feature that controls whether fission is enabled or not in Gecko. + variables: + enabled: + description: "Whether or not to enable fission. Fission is enabled when set to true. Fission is disabled when set to false.\n" + type: Boolean + default: false + fx-suggest: + description: A feature that provides Firefox Suggest search suggestions. + variables: + boost-amp-wiki: + description: "The feature boost wiki and AMP suggestions to the top of its group.\n" + type: Boolean + default: false + enabled: + description: "Whether the feature is enabled. When Firefox Suggest is enabled, Firefox will download and store new search suggestions in the background, and show additional Search settings to control which suggestions appear in the awesomebar. When Firefox Suggest is disabled, Firefox will not download new suggestions, and hide the additional Search settings.\n" + type: Boolean + default: false + glean: + description: A feature that provides server-side configurations for Glean metrics (aka Server Knobs). + variables: + delay-ping-lifetime-io: + description: Glean will delay io for ping lifetime metrics + type: Boolean + default: true + enable-event-timestamps: + description: Enables precise event timestamps for Glean events + type: Boolean + default: true + metrics-enabled: + description: "A map of metric base-identifiers to booleans representing the state of the 'enabled' flag for that metric." + type: "Map" + default: {} + ping-lifetime-max-time: + description: After what time to auto-flush + type: Int + default: 2000 + ping-lifetime-threshold: + description: Write count threshold when to auto-flush + type: Int + default: 1000 + allow-coenrollment: true + growth-data: + description: A feature measuring campaign growth data + variables: + enabled: + description: "If true, the feature is active" + type: Boolean + default: false + homescreen: + description: The homescreen that the user goes to when they press home or new tab. + variables: + sections-enabled: + description: "This property provides a lookup table of whether or not the given section should be enabled. If the section is enabled, it should be toggleable in the settings screen, and on by default." + type: "Map" + default: + top-sites: true + jump-back-in: true + bookmarks: true + recent-explorations: true + pocket: true + pocket-sponsored-stories: true + javascript: + description: Enables Javascript Engine (Spidermonkey) features + variables: + parallelMarkingEnabled: + description: "Enables or disables javascript.options.mem.gc_parallel_marking preference.\n" + type: Boolean + default: false + juno-onboarding: + description: A feature that shows the onboarding flow. + variables: + cards: + description: Collection of user facing onboarding cards. + type: "Map" + default: + default-browser: + body: juno_onboarding_default_browser_description_nimbus_3 + card-type: default-browser + disqualifiers: + - NEVER + enabled: true + extra-data: ~ + image-res: ic_onboarding_welcome + ordering: 10 + prerequisites: + - ALWAYS + primary-button-label: juno_onboarding_default_browser_positive_button + secondary-button-label: juno_onboarding_default_browser_negative_button + title: juno_onboarding_default_browser_title_nimbus_2 + add-search-widget: + body: juno_onboarding_add_search_widget_description + card-type: add-search-widget + disqualifiers: + - NEVER + enabled: true + extra-data: ~ + image-res: ic_onboarding_search_widget + ordering: 15 + prerequisites: + - ALWAYS + primary-button-label: juno_onboarding_add_search_widget_positive_button + secondary-button-label: juno_onboarding_add_search_widget_negative_button + title: juno_onboarding_add_search_widget_title + sync-sign-in: + body: juno_onboarding_sign_in_description_3 + card-type: sync-sign-in + disqualifiers: + - NEVER + enabled: true + extra-data: ~ + image-res: ic_onboarding_sync + ordering: 20 + prerequisites: + - ALWAYS + primary-button-label: juno_onboarding_sign_in_positive_button + secondary-button-label: juno_onboarding_sign_in_negative_button + title: juno_onboarding_sign_in_title_2 + notification-permission: + body: juno_onboarding_enable_notifications_description_nimbus_2 + card-type: notification-permission + disqualifiers: + - NEVER + enabled: true + extra-data: ~ + image-res: ic_notification_permission + ordering: 30 + prerequisites: + - ALWAYS + primary-button-label: juno_onboarding_enable_notifications_positive_button + secondary-button-label: juno_onboarding_enable_notifications_negative_button + title: juno_onboarding_enable_notifications_title_nimbus_2 + string-alias: OnboardingCardKey + conditions: + description: "A collection of out the box conditional expressions to be used in determining whether a card should show or not. Each entry maps to a valid JEXL expression.\n" + type: "Map" + default: + ALWAYS: "true" + NEVER: "false" + string-alias: ConditionName + menu-redesign: + description: Control the new menu redesign. + variables: + enabled: + description: "If true, the new menu redesign is available." + type: Boolean + default: false + report-site-issue: + description: "If true, report site issue menu item and preview is available." + type: Boolean + default: true + messaging: + description: "The in-app messaging system.\n" + variables: + $$experiment: + description: "The only acceptable value for `MessageData#experiment`. This should not be set by experiment." + type: ExperimentSlug + default: "{experiment}" + string-alias: ExperimentSlug + $$surfaces: + description: "A list available surfaces for this app.\n\nThis should not be written to by experiments, and should be hidden to users.\n" + type: List + default: + - homescreen + - notification + - survey + - microsurvey + string-alias: SurfaceName + actions: + description: A growable map of action URLs. + type: "Map" + default: + OPEN_URL: "://open" + ENABLE_PRIVATE_BROWSING: "://enable_private_browsing" + INSTALL_SEARCH_WIDGET: "://install_search_widget" + MAKE_DEFAULT_BROWSER: "://make_default_browser" + VIEW_BOOKMARKS: "://urls_bookmarks" + VIEW_COLLECTIONS: "://home_collections" + VIEW_HISTORY: "://urls_history" + VIEW_HOMESCREEN: "://home" + OPEN_SETTINGS_ACCESSIBILITY: "://settings_accessibility" + OPEN_SETTINGS_ADDON_MANAGER: "://settings_addon_manager" + OPEN_SETTINGS_DELETE_BROWSING_DATA: "://settings_delete_browsing_data" + OPEN_SETTINGS_LOGINS: "://settings_logins" + OPEN_SETTINGS_NOTIFICATIONS: "://settings_notifications" + OPEN_SETTINGS_PRIVACY: "://settings_privacy" + OPEN_SETTINGS_SEARCH_ENGINE: "://settings_search_engine" + OPEN_SETTINGS_TRACKING_PROTECTION: "://settings_tracking_protection" + OPEN_SETTINGS_WALLPAPERS: "://settings_wallpapers" + OPEN_SETTINGS: "://settings" + OPEN_SHARE_SHEET: "://share_sheet" + TURN_ON_SYNC: "://turn_on_sync" + string-alias: ActionName + message-under-experiment: + description: "Deprecated in favor of `MessageData#experiment`. This will be removed in future releases." + type: Option + default: ~ + messages: + description: A growable collection of messages + type: "Map" + default: + default-browser: + title: default_browser_experiment_card_title + text: default_browser_experiment_card_text + surface: homescreen + action: MAKE_DEFAULT_BROWSER + trigger-if-all: + - USER_ESTABLISHED_INSTALL + - ANDROID_API_BELOW_29 + exclude-if-any: + - I_AM_DEFAULT_BROWSER + style: PERSISTENT + button-label: preferences_set_as_default_browser + default-browser-notification: + title: nimbus_notification_default_browser_title + text: nimbus_notification_default_browser_text + surface: notification + style: NOTIFICATION + trigger-if-all: + - DAY_3_AFTER_INSTALL + exclude-if-any: + - I_AM_DEFAULT_BROWSER + action: MAKE_DEFAULT_BROWSER + string-alias: MessageKey + notification-config: + description: Configuration of the notification worker for all notification messages. + type: NotificationConfig + default: + refresh-interval: 240 + on-control: + description: What should be displayed when a control message is selected. + type: ControlMessageBehavior + default: show-next-message + styles: + description: "A map of styles to configure message appearance.\n" + type: "Map" + default: + DEFAULT: + priority: 50 + max-display-count: 5 + SURVEY: + priority: 55 + max-display-count: 1 + PERSISTENT: + priority: 50 + max-display-count: 20 + WARNING: + priority: 60 + max-display-count: 10 + URGENT: + priority: 100 + max-display-count: 10 + NOTIFICATION: + priority: 50 + max-display-count: 1 + MICROSURVEY: + priority: 50 + max-display-count: 5 + string-alias: StyleName + triggers: + description: "A collection of out the box trigger expressions. Each entry maps to a valid JEXL expression.\n" + type: "Map" + default: + USER_ESTABLISHED_INSTALL: number_of_app_launches >=4 + ANDROID_API_BELOW_29: android_version < 29 + USER_RECENTLY_INSTALLED: days_since_install < 7 + USER_RECENTLY_UPDATED: days_since_update < 7 && days_since_install != days_since_update + USER_TIER_ONE_COUNTRY: "('US' in locale || 'GB' in locale || 'CA' in locale || 'DE' in locale || 'FR' in locale)" + USER_EN_SPEAKER: "'en' in locale" + USER_ES_SPEAKER: "'es' in locale" + USER_DE_SPEAKER: "'de' in locale" + USER_FR_SPEAKER: "'fr' in locale" + DEVICE_ANDROID: "os == 'Android'" + DEVICE_IOS: "os == 'iOS'" + ALWAYS: "true" + NEVER: "false" + DAY_1_AFTER_INSTALL: days_since_install == 1 + DAY_2_AFTER_INSTALL: days_since_install == 2 + DAY_3_AFTER_INSTALL: days_since_install == 3 + DAY_4_AFTER_INSTALL: days_since_install == 4 + DAY_5_AFTER_INSTALL: days_since_install == 5 + MORE_THAN_24H_SINCE_INSTALLED_OR_UPDATED: days_since_update >= 1 + I_AM_DEFAULT_BROWSER: is_default_browser + I_AM_NOT_DEFAULT_BROWSER: is_default_browser == false + FUNNEL_PAID: "adjust_campaign != ''" + FUNNEL_ORGANIC: "adjust_campaign == ''" + INACTIVE_1_DAY: "'app_launched'|eventLastSeen('Hours') >= 24" + INACTIVE_2_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 2" + INACTIVE_3_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 3" + INACTIVE_4_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 4" + INACTIVE_5_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 5" + RECENTLY_PRINTED: "'print_tapped'|eventLastSeen('Hours') <= 24" + SECOND_HOMEPAGE_VIEW: "'home_screen_displayed'|eventSum('Years', 4, 0) >= 2" + PERFORMED_A_SEARCH_AGAIN_RECENTLY: "'performed_search'|eventSum('Years', 4, 0) >= 2 && 'performed_search'|eventLastSeen('Minutes') < 1" + FXA_CURRENTLY_SIGNED_IN: is_fxa_signed_in == true + FXA_MORE_THAN_1_DEVICE: fxa_connected_devices > 1 + FXA_SIGNED_IN: "'sync_auth.sign_in'|eventLastSeen('Years', 0) <= 4" + FXA_NOT_SIGNED_IN: "'sync_auth.sign_in'|eventLastSeen('Years', 0) > 4" + USER_INFREQUENT: "'app_launched'|eventCountNonZero('Days', 28) >= 1 && 'app_launched'|eventCountNonZero('Days', 28) < 7" + USER_CASUAL: "'app_launched'|eventCountNonZero('Days', 28) >= 7 && 'app_launched'|eventCountNonZero('Days', 28) < 14" + USER_REGULAR: "'app_launched'|eventCountNonZero('Days', 28) >= 14 && 'app_launched'|eventCountNonZero('Days', 28) < 21" + USER_CORE_ACTIVE: "'app_launched'|eventCountNonZero('Days', 28) >= 21" + LAUNCHED_ONCE_THIS_WEEK: "'app_launched'|eventSum('Days', 7) == 1" + string-alias: TriggerName + allow-coenrollment: true + microsurveys: + description: Feature for microsurveys. + variables: + enabled: + description: "When the feature is enabled then microsurveys can be used.\n" + type: Boolean + default: true + mr2022: + description: Features for MR 2022. + variables: + sections-enabled: + description: This property provides a lookup table of whether or not the given section should be enabled. + type: "Map" + default: + home-onboarding-dialog-existing-users: true + sync-cfr: true + wallpapers-selection-tool: true + jump-back-in-cfr: true + tcp-cfr: true + tcp-feature: true + navigation-toolbar: + description: Feature for navigation toolbar. + variables: + enabled: + description: "When the feature is enabled then the user will see the new navigation toolbar.\n" + type: Boolean + default: false + networking: + description: Enables networking features + variables: + fetchPriorityEnabled: + description: "Enables or disables network.fetchpriority.enabled preference.\n" + type: Boolean + default: true + nimbus-is-ready: + description: "A feature that provides the number of Nimbus is_ready events to send when Nimbus finishes launching.\n" + variables: + event-count: + description: The number of events that should be sent. + type: Int + default: 1 + nimbus-system: + description: "Configuration of the Nimbus System in Android.\n" + variables: + refresh-interval-foreground: + description: "The minimum interval in minutes between fetching experiment\nrecipes in the foreground.\n" + type: Int + default: 60 + nimbus-validation: + description: A feature that does not correspond to an application feature suitable for showing that Nimbus is working. This should never be used in production. + variables: + settings-icon: + description: The drawable displayed in the app menu for Settings + type: String + default: mozac_ic_settings + settings-punctuation: + description: The emoji displayed in the Settings screen title. + type: String + default: "" + settings-title: + description: The title of displayed in the Settings screen and app menu. + type: Text + default: browser_menu_settings + onboarding: + description: "A feature that configures the new user onboarding page. Note that onboarding is a **first run** feature, and should only be modified by first run experiments." + variables: + order: + description: Determines the order of the onboarding page panels + type: List + default: + - themes + - toolbar-placement + - sync + - tcp + - privacy-notice + one-click-search: + description: Enable/disable the one click search feature. + variables: + enabled: + description: "If true, the one click search will be enabled." + type: Boolean + default: false + pdfjs: + description: PDF.js features + variables: + download-button: + description: Download button + type: Boolean + default: true + open-in-app-button: + description: Open in app button + type: Boolean + default: true + print: + description: A feature for printing from the share or browser menu. + variables: + browser-print-enabled: + description: "If true, a print button from the browser menu is available." + type: Boolean + default: true + share-print-enabled: + description: "If true, a print button from the share menu is available." + type: Boolean + default: true + private-browsing: + description: Private Browsing Mode + variables: + felt-privacy-enabled: + description: "if true, enable felt privacy related UI" + type: Boolean + default: false + query-parameter-stripping: + description: Features for query parameter stripping. + variables: + sections-enabled: + description: This property provides a lookup table of whether or not the given section should be enabled. + type: "Map" + default: + query-parameter-stripping: "0" + query-parameter-stripping-pmb: "0" + query-parameter-stripping-allow-list: "" + query-parameter-stripping-strip-list: "" + re-engagement-notification: + description: A feature that shows the re-engagement notification if the user is inactive. + variables: + enabled: + description: "If true, the re-engagement notification is shown to the inactive user." + type: Boolean + default: false + type: + description: The type of re-engagement notification that is shown to the inactive user. + type: Int + default: 0 + remote-tab-management: + description: "Features that let users manage tabs on other devices that are connected to the same Mozilla account.\n" + variables: + close-tabs-enabled: + description: "Whether the feature to close synced tabs is enabled. When enabled, this device will allow other devices to close tabs that are open on this device, and show a \"close\" button for tabs that are currently open on other supported devices in the synced tabs tray.\n" + type: Boolean + default: true + search-extra-params: + description: A feature that provides additional args for search. + variables: + channel-id: + description: The channel Id param name with arg. + type: "Map" + default: {} + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + feature-enabler: + description: "The feature enabler param name with arg, NOTE this map could be empty." + type: "Map" + default: {} + search-engine: + description: The search engine name. + type: String + default: "" + search-term-groups: + description: A feature allowing the grouping of URLs around the search term that it came from. + variables: + enabled: + description: "If true, the feature shows up on the homescreen and on the new tab screen." + type: Boolean + default: false + set-as-default-prompt: + description: "Displays native default browser prompt to existing users.\n" + variables: + app-cold-starts-between-prompts: + description: "Minimum number of app cold starts before the next prompt should be displayed to the user.\n" + type: Int + default: 4 + days-between-prompts: + description: "Minimum number of days between displays of Set as default prompt.\n" + type: Int + default: 14 + enabled: + description: "When the feature is enabled then the Set as default prompt can be triggered for existing users.\n" + type: Boolean + default: true + max-number-of-times-to-display: + description: "Maximum number of time the prompt should be displayed.\n" + type: Int + default: 3 + ship: + description: The feature that controls Session History in Parent (SHIP) in Gecko. + variables: + disabled: + description: "Whether or not to disable SHIP. SHIP is enabled when set to false. SHIP is disabled when set to true.\n" + type: Boolean + default: true + shopping-experience: + description: A feature that shows product review quality information. + variables: + enabled: + description: "if true, the shopping experience feature is shown to the user." + type: Boolean + default: false + product-recommendations: + description: "if true, recommended products feature is enabled to be shown to the user based on their preference." + type: Boolean + default: false + product-recommendations-exposure: + description: "if true, we want to record recommended products inventory for opted-in users, even if product recommendations are disabled." + type: Boolean + default: false + splash-screen: + description: "A feature that extends splash screen duration, allowing additional data fetching time for the app's initial run." + variables: + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + maximum_duration_ms: + description: The maximum amount of time in milliseconds the splashscreen will be visible while waiting for initialization calls to complete. + type: Int + default: 0 + suggest-shipped-domains: + description: Feature that suggests domains from the shipped domain list. + variables: + enabled: + description: "Suggest domains from the shipped domain list.\n" + type: Boolean + default: true + third-party-cookie-blocking: + description: Control third-party cookie blocking. + variables: + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + enabled-normal: + description: "Enables / disables third-party cookie blocking in normal browsing mode.\n" + type: Boolean + default: false + enabled-private: + description: "Enables / disables third-party cookie blocking in private browsing mode.\n" + type: Boolean + default: true + translations: + description: The feature that allows on-device translations of web content. + variables: + downloads-enabled: + description: "Show the global language model download options entry point for translations. ('Download languages' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + global-lang-settings-enabled: + description: "Show the global language options entry point for automatically translating. ('Automatic Translation' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + global-settings-enabled: + description: "Show the global settings entry point within the translations feature. ('Translation Settings' on the page settings view.) 'page-settings-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + global-site-settings-enabled: + description: "Show the global never translate this site options entry point for site management. ('Never translate these sites' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + main-flow-browser-menu-enabled: + description: "Show the browser menu entry point into the translations feature. ('Translate Page' on browser menu.)\n" + type: Boolean + default: true + main-flow-toolbar-enabled: + description: "Show the primary toolbar entry point into the translations feature. (Translations icon on URL toolbar.)\n" + type: Boolean + default: true + page-settings-enabled: + description: "Show the page settings entry point within the translations feature. (Gear icon on the translations main flow page.) 'main-flow-toolbar-enabled' or 'main-flow-browser-menu-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + user-characteristics: + description: A feature for control user characteristic data collection + variables: + currentVersion: + description: The current collection version of the user characteristics. + type: Int + default: 0 +enums: + ControlMessageBehavior: + description: An enum to influence what should be displayed when a control message is selected. + variants: + show-next-message: + description: The next eligible message should be shown. + show-none: + description: The surface should show no message. + CookieBannersSection: + description: The identifiers for the sections of the MR 2022. + variants: + feature-setting-detect-only: + description: "An integer either 0 or 1 indicating if cookie banner detect only mode should be enabled or disabled. 0 for setting to be disabled, and 1 for enabling the setting." + feature-setting-global-rules: + description: "An integer either 0 or 1 indicating if cookie banner global rules should be enabled or disabled. 0 for setting to be disabled, and 1 for enabling the setting." + feature-setting-global-rules-sub-frames: + description: "An integer either 0 or 1 indicating if cookie banner global rules sub-frames should be enabled or disabled. 0 for setting to be disabled, and 1 for enabling the setting." + feature-setting-value: + description: "An integer either 0 or 1 indicating if cookie banner setting should be enabled or disabled, 0 for setting the value to disabled, 1 for enabling the setting with the value reject_all." + feature-setting-value-pbm: + description: "An integer either 0 or 1 indicating if cookie banner setting should be enabled or disabled, 0 for setting the value to disabled, 1 for enabling the setting with the value reject_all." + feature-ui: + description: "An integer either 0 or 1 indicating if the UI for cookie banner handling should be visible, 0 to hide the UI and 1 to show the UI. The actual UI is composed by cookie banner section in the settings page, the toolbar section and the re-engagement dialog." + HomeScreenSection: + description: The identifiers for the sections of the homescreen. + variants: + bookmarks: + description: The sites the user has bookmarked. + jump-back-in: + description: The tabs the user was looking immediately before being interrupted. + pocket: + description: The pocket section. This should only be available in the US. + pocket-sponsored-stories: + description: Subsection of the Pocket homescreen section which shows sponsored stories. + recent-explorations: + description: The tab groups + top-sites: + description: The frecency and pinned sites. + MR2022Section: + description: The identifiers for the sections of the MR 2022. + variants: + home-onboarding-dialog-existing-users: + description: Home onboarding dialog for upgraded users. + jump-back-in-cfr: + description: Jump back-in onboarding message. + sync-cfr: + description: CFR for the first time you see a synced tab on the home screen. + tcp-cfr: + description: CFR for the first time you use the browse with Total Cookie Protection on the browser screen. + tcp-feature: + description: Controls the Total Cookie Protection feature. + wallpapers-selection-tool: + description: Wallpapers selection dialog tool for the home screen. + OnboardingCardType: + description: An enum to describe a type of card. + variants: + add-ons: + description: Allows user to install add-ons from onboarding. + add-search-widget: + description: Allows user to add search widget to homescreen. + default-browser: + description: Allows user to set Firefox as the default browser. + notification-permission: + description: Allows user to enable notification permission. + sync-sign-in: + description: Allows user to sync with a Firefox account. + OnboardingPanel: + description: The types of onboarding panels in the onboarding page + variants: + privacy-notice: + description: The onboarding panel where users can tap to view our privacy notice. + sync: + description: The onboarding panel where users can sign in to sync + tcp: + description: The onboarding panel where users can choose their total cookie protection settings + themes: + description: The themes onboarding panel where users pick themes + toolbar-placement: + description: The onboarding panel where users choose their toolbar placement (bottom or top) + QueryParameterStrippingSection: + description: The identifiers for the options for the Query Parameter Stripping feature. + variants: + query-parameter-stripping: + description: "An integer either 0 or 1 indicating if query parameter stripping should be enabled or disabled in normal mode. 0 for setting to be disabled, and 1 for enabling the setting." + query-parameter-stripping-allow-list: + description: An string separated by commas indicating the sites where should from query stripping should be exempted. + query-parameter-stripping-pmb: + description: "An integer either 0 or 1 indicating if query parameter stripping should be enabled or disabled in private mode. 0 for setting to be disabled, and 1 for enabling the setting." + query-parameter-stripping-strip-list: + description: An string separated by commas indicating the list of query params to be stripped from URIs. This list will be merged with records coming from RemoteSettings. + SuggestionType: + description: The type of a Firefox Suggest search suggestion. + variants: + amp: + description: A Firefox Suggestion from adMarketplace. + ampMobile: + description: A firefox Suggestion from adMarketplace specifically for mobile. + wikipedia: + description: A Firefox Suggestion for a Wikipedia page. +objects: + AddOnData: + description: An object to describe an add-on to be installed from the onboarding card. + fields: + average-rating: + description: The average rating of the add-on. + type: String + default: "0.0" + description: + description: A small description of the add-on to be displayed to the user. + type: Text + default: "" + icon-res: + description: The resource id of the icon of the add-on to be displayed. + type: Image + default: ic_onboarding_welcome + id: + description: The identifier for this add-on. + type: Text + default: "" + install-url: + description: The url from where the add-on can be installed. + type: Text + default: "" + name: + description: The name of the add-on to be displayed to the user. + type: Text + default: "" + review-count: + description: The amount of reviews the add-on has. + type: String + default: "0.0" + ExtraCardData: + description: "Holds data for cards that require additional data, e.g. add-ons, toolbar placement cards." + fields: + add-ons-data: + description: "An optional list of add-ons which will be shown in add-on onboarding card.\n" + type: List + default: [] + MessageData: + description: "An object to describe a message. It uses human readable strings to describe the triggers, action and style of the message as well as the text of the message and call to action.\n" + fields: + action: + description: "A URL of a page or a deeplink. This may have substitution variables in.\n" + type: ActionName + default: OPEN_URL + action-params: + description: "A string map containing query parameters that will be appended to the action URL. This is useful for opening URLs in tabs, or specifying that the tab should be private. The values may have substitutions, e.g. \"url\": \"https://example.com/id={uuid}\", \"private\": \"true\".\nThe params and their values are all determined downstream of the messaging component, by the embedding app's deeplink processing machinery.\n" + type: "Map" + default: {} + button-label: + description: "The text on the button. If no text is present, the whole message is clickable.\n" + type: Option + default: ~ + exclude-if-any: + description: "A list of strings corresponding to targeting expressions. The message will not be shown if any of the expressions are `true`.\n" + type: List + default: [] + experiment: + description: The slug of the experiment that this message came from. + type: Option + default: ~ + is-control: + description: "Indicates if this message is the control message, if true shouldn't be displayed" + type: Boolean + default: false + microsurvey-config: + description: Optional configuration data for a microsurvey. + type: Option + default: ~ + style: + description: "The style as described in a `StyleData` from the styles table.\n" + type: StyleName + default: DEFAULT + surface: + description: The surface identifier for this message. + type: SurfaceName + default: homescreen + text: + description: The message text displayed to the user + type: Text + default: "" + title: + description: The title text displayed to the user + type: Option + default: ~ + trigger-if-all: + description: "A list of strings corresponding to targeting expressions. The message will be shown if all expressions are `true`.\n" + type: List + default: [] + MicrosurveyAnswer: + description: Attributes relating to microsurvey content. + fields: + ordering: + description: "Used to sequence the answers top to bottom. E.g. 0 will be the first/top item, 1 will be next and so on. Always set either ALL the provided answers ordering or NONE. If ALL answers are default, the the ordering used will be the same as provided by the experiment.\n" + type: Int + default: 0 + text: + description: The text for the answer. + type: Text + default: "" + MicrosurveyConfig: + description: Attributes relating to microsurvey content. + fields: + answers: + description: "The list of answers to present to the user e.g. \"Satisfied, Dissatisfied...\"." + type: List + default: [] + icon: + description: The icon shown in the survey. + type: Option + default: ~ + utm-content: + description: "Optional \"utm_content\" parameter for the privacy notice URL to specify the feature being surveyed." + type: Option + default: ~ + NotificationConfig: + description: Attributes controlling the global configuration of notification messages. + fields: + refresh-interval: + description: "How often, in minutes, the notification message worker will wake up and check for new messages.\n" + type: Int + default: 240 + OnboardingCardData: + description: An object to describe a user facing onboarding card. + fields: + body: + description: The message text displayed to the user. May contain linkable text. + type: Text + default: "" + card-type: + description: The type of the card. + type: OnboardingCardType + default: default-browser + disqualifiers: + description: "A list of strings corresponding to targeting expressions. The card will not be shown if any expression is `true`.\n" + type: List + default: + - NEVER + enabled: + description: "If true, this card is shown to the user." + type: Boolean + default: true + extra-data: + description: Optional extra data for cards that require additional data. + type: Option + default: ~ + image-res: + description: The resource id of the image to be displayed. + type: Image + default: ic_onboarding_welcome + ordering: + description: Used to sequence the cards. + type: Int + default: 0 + prerequisites: + description: "A list of strings corresponding to targeting expressions. The card will be shown if all expressions are `true` and if no expressions in the `disqualifiers` table are true, or if the `disqualifiers` table is empty.\n" + type: List + default: + - ALWAYS + primary-button-label: + description: The text to display on the primary button. + type: Text + default: "" + secondary-button-label: + description: The text to display on the secondary button. + type: Text + default: "" + title: + description: The title text displayed to the user. + type: Text + default: "" + StyleData: + description: "A group of properties (predominantly visual) to describe the style of the message.\n" + fields: + max-display-count: + description: "How many sessions will this message be shown to the user before it is expired.\n" + type: Int + default: 5 + priority: + description: "The importance of this message. 0 is not very important, 100 is very important.\n" + type: Int + default: 50 diff --git a/experimenter/experimenter/features/manifests/fenix/v134.0.2/developer.fml.yaml b/experimenter/experimenter/features/manifests/fenix/v134.0.2/developer.fml.yaml new file mode 100644 index 0000000000..5989e461bc --- /dev/null +++ b/experimenter/experimenter/features/manifests/fenix/v134.0.2/developer.fml.yaml @@ -0,0 +1,962 @@ +--- +version: 1.0.0 +about: + description: Nimbus Feature Manifest for Fenix (Firefox Android) +channels: + - developer +features: + alternative-app-launcher-icon: + description: A feature that changes the app launcher icon background color. + variables: + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + reset-to-default: + description: "If true use the default icon, if false use the alternative icon. This is required to 'reset' the icon for enrolled users once the initial experiment is complete.\n" + type: Boolean + default: false + awesomebar-suggestion-provider: + description: Configuration for the Firefox Suggest awesomebar suggestion provider. + variables: + available-suggestion-types: + description: "A map of suggestion types to booleans that indicate whether or not the provider should return suggestions of those types.\n" + type: "Map" + default: + amp: true + ampMobile: false + wikipedia: true + bookmarks: + description: Feature for Bookmarks + variables: + new-compose-ui: + description: "if true, enable new compose based UI" + type: Boolean + default: false + cookie-banners: + description: Features for cookie banner handling. + variables: + sections-enabled: + description: This property provides a lookup table of whether or not the given section should be enabled. + type: "Map" + default: + feature-ui: 1 + feature-setting-value: 0 + feature-setting-value-pbm: 1 + feature-setting-detect-only: 0 + feature-setting-global-rules: 1 + feature-setting-global-rules-sub-frames: 1 + fingerprinting-protection: + description: Control Fingerprinting Protection + variables: + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + enabled-normal: + description: "Enables / disables fingerprinting protection in normal browsing mode.\n" + type: Boolean + default: false + enabled-private: + description: "Enables / disables fingerprinting protection in private browsing mode.\n" + type: Boolean + default: true + fdlibm-math: + description: "Uses a different math backend for Math.sin/cos/tan in JavaScript that exposes less entropy\n" + type: Boolean + default: false + overrides: + description: "The protection overrides to add or remove fingerprinting protection targets. Please check RFPTargets.inc for all supported targets.\n" + type: String + default: "" + fission: + description: The feature that controls whether fission is enabled or not in Gecko. + variables: + enabled: + description: "Whether or not to enable fission. Fission is enabled when set to true. Fission is disabled when set to false.\n" + type: Boolean + default: false + fx-suggest: + description: A feature that provides Firefox Suggest search suggestions. + variables: + boost-amp-wiki: + description: "The feature boost wiki and AMP suggestions to the top of its group.\n" + type: Boolean + default: true + enabled: + description: "Whether the feature is enabled. When Firefox Suggest is enabled, Firefox will download and store new search suggestions in the background, and show additional Search settings to control which suggestions appear in the awesomebar. When Firefox Suggest is disabled, Firefox will not download new suggestions, and hide the additional Search settings.\n" + type: Boolean + default: true + glean: + description: A feature that provides server-side configurations for Glean metrics (aka Server Knobs). + variables: + delay-ping-lifetime-io: + description: Glean will delay io for ping lifetime metrics + type: Boolean + default: true + enable-event-timestamps: + description: Enables precise event timestamps for Glean events + type: Boolean + default: true + metrics-enabled: + description: "A map of metric base-identifiers to booleans representing the state of the 'enabled' flag for that metric." + type: "Map" + default: {} + ping-lifetime-max-time: + description: After what time to auto-flush + type: Int + default: 2000 + ping-lifetime-threshold: + description: Write count threshold when to auto-flush + type: Int + default: 1000 + allow-coenrollment: true + growth-data: + description: A feature measuring campaign growth data + variables: + enabled: + description: "If true, the feature is active" + type: Boolean + default: false + homescreen: + description: The homescreen that the user goes to when they press home or new tab. + variables: + sections-enabled: + description: "This property provides a lookup table of whether or not the given section should be enabled. If the section is enabled, it should be toggleable in the settings screen, and on by default." + type: "Map" + default: + top-sites: true + jump-back-in: true + bookmarks: true + recent-explorations: true + pocket: true + pocket-sponsored-stories: true + javascript: + description: Enables Javascript Engine (Spidermonkey) features + variables: + parallelMarkingEnabled: + description: "Enables or disables javascript.options.mem.gc_parallel_marking preference.\n" + type: Boolean + default: false + juno-onboarding: + description: A feature that shows the onboarding flow. + variables: + cards: + description: Collection of user facing onboarding cards. + type: "Map" + default: + default-browser: + body: juno_onboarding_default_browser_description_nimbus_3 + card-type: default-browser + disqualifiers: + - NEVER + enabled: true + extra-data: ~ + image-res: ic_onboarding_welcome + ordering: 10 + prerequisites: + - ALWAYS + primary-button-label: juno_onboarding_default_browser_positive_button + secondary-button-label: juno_onboarding_default_browser_negative_button + title: juno_onboarding_default_browser_title_nimbus_2 + add-search-widget: + body: juno_onboarding_add_search_widget_description + card-type: add-search-widget + disqualifiers: + - NEVER + enabled: true + extra-data: ~ + image-res: ic_onboarding_search_widget + ordering: 15 + prerequisites: + - ALWAYS + primary-button-label: juno_onboarding_add_search_widget_positive_button + secondary-button-label: juno_onboarding_add_search_widget_negative_button + title: juno_onboarding_add_search_widget_title + sync-sign-in: + body: juno_onboarding_sign_in_description_3 + card-type: sync-sign-in + disqualifiers: + - NEVER + enabled: true + extra-data: ~ + image-res: ic_onboarding_sync + ordering: 20 + prerequisites: + - ALWAYS + primary-button-label: juno_onboarding_sign_in_positive_button + secondary-button-label: juno_onboarding_sign_in_negative_button + title: juno_onboarding_sign_in_title_2 + notification-permission: + body: juno_onboarding_enable_notifications_description_nimbus_2 + card-type: notification-permission + disqualifiers: + - NEVER + enabled: true + extra-data: ~ + image-res: ic_notification_permission + ordering: 30 + prerequisites: + - ALWAYS + primary-button-label: juno_onboarding_enable_notifications_positive_button + secondary-button-label: juno_onboarding_enable_notifications_negative_button + title: juno_onboarding_enable_notifications_title_nimbus_2 + string-alias: OnboardingCardKey + conditions: + description: "A collection of out the box conditional expressions to be used in determining whether a card should show or not. Each entry maps to a valid JEXL expression.\n" + type: "Map" + default: + ALWAYS: "true" + NEVER: "false" + string-alias: ConditionName + menu-redesign: + description: Control the new menu redesign. + variables: + enabled: + description: "If true, the new menu redesign is available." + type: Boolean + default: false + report-site-issue: + description: "If true, report site issue menu item and preview is available." + type: Boolean + default: true + messaging: + description: "The in-app messaging system.\n" + variables: + $$experiment: + description: "The only acceptable value for `MessageData#experiment`. This should not be set by experiment." + type: ExperimentSlug + default: "{experiment}" + string-alias: ExperimentSlug + $$surfaces: + description: "A list available surfaces for this app.\n\nThis should not be written to by experiments, and should be hidden to users.\n" + type: List + default: + - homescreen + - notification + - survey + - microsurvey + string-alias: SurfaceName + actions: + description: A growable map of action URLs. + type: "Map" + default: + OPEN_URL: "://open" + ENABLE_PRIVATE_BROWSING: "://enable_private_browsing" + INSTALL_SEARCH_WIDGET: "://install_search_widget" + MAKE_DEFAULT_BROWSER: "://make_default_browser" + VIEW_BOOKMARKS: "://urls_bookmarks" + VIEW_COLLECTIONS: "://home_collections" + VIEW_HISTORY: "://urls_history" + VIEW_HOMESCREEN: "://home" + OPEN_SETTINGS_ACCESSIBILITY: "://settings_accessibility" + OPEN_SETTINGS_ADDON_MANAGER: "://settings_addon_manager" + OPEN_SETTINGS_DELETE_BROWSING_DATA: "://settings_delete_browsing_data" + OPEN_SETTINGS_LOGINS: "://settings_logins" + OPEN_SETTINGS_NOTIFICATIONS: "://settings_notifications" + OPEN_SETTINGS_PRIVACY: "://settings_privacy" + OPEN_SETTINGS_SEARCH_ENGINE: "://settings_search_engine" + OPEN_SETTINGS_TRACKING_PROTECTION: "://settings_tracking_protection" + OPEN_SETTINGS_WALLPAPERS: "://settings_wallpapers" + OPEN_SETTINGS: "://settings" + OPEN_SHARE_SHEET: "://share_sheet" + TURN_ON_SYNC: "://turn_on_sync" + string-alias: ActionName + message-under-experiment: + description: "Deprecated in favor of `MessageData#experiment`. This will be removed in future releases." + type: Option + default: ~ + messages: + description: A growable collection of messages + type: "Map" + default: + default-browser: + title: default_browser_experiment_card_title + text: default_browser_experiment_card_text + surface: homescreen + action: MAKE_DEFAULT_BROWSER + trigger-if-all: + - USER_ESTABLISHED_INSTALL + - ANDROID_API_BELOW_29 + exclude-if-any: + - I_AM_DEFAULT_BROWSER + style: PERSISTENT + button-label: preferences_set_as_default_browser + default-browser-notification: + title: nimbus_notification_default_browser_title + text: nimbus_notification_default_browser_text + surface: notification + style: NOTIFICATION + trigger-if-all: + - DAY_3_AFTER_INSTALL + exclude-if-any: + - I_AM_DEFAULT_BROWSER + action: MAKE_DEFAULT_BROWSER + microsurvey-printing-example: + title: microsurvey_prompt_printing_title + text: microsurvey_survey_printing_title + surface: microsurvey + trigger-if-all: + - RECENTLY_PRINTED + style: MICROSURVEY + microsurvey-config: + utm-content: homepage + icon: ic_print + answers: + - text: likert_scale_option_1 + ordering: 0 + - text: likert_scale_option_2 + ordering: 1 + - text: likert_scale_option_3 + ordering: 2 + - text: likert_scale_option_4 + ordering: 3 + - text: likert_scale_option_5 + ordering: 4 + - text: likert_scale_option_6 + ordering: 5 + string-alias: MessageKey + notification-config: + description: Configuration of the notification worker for all notification messages. + type: NotificationConfig + default: + refresh-interval: 120 + on-control: + description: What should be displayed when a control message is selected. + type: ControlMessageBehavior + default: show-next-message + styles: + description: "A map of styles to configure message appearance.\n" + type: "Map" + default: + DEFAULT: + priority: 50 + max-display-count: 100 + SURVEY: + priority: 55 + max-display-count: 1 + PERSISTENT: + priority: 50 + max-display-count: 20 + WARNING: + priority: 60 + max-display-count: 10 + URGENT: + priority: 100 + max-display-count: 10 + NOTIFICATION: + priority: 50 + max-display-count: 1 + MICROSURVEY: + priority: 50 + max-display-count: 5 + EXPIRES_QUICKLY: + priority: 100 + max-display-count: 1 + string-alias: StyleName + triggers: + description: "A collection of out the box trigger expressions. Each entry maps to a valid JEXL expression.\n" + type: "Map" + default: + USER_ESTABLISHED_INSTALL: number_of_app_launches >=4 + ANDROID_API_BELOW_29: android_version < 29 + USER_RECENTLY_INSTALLED: days_since_install < 7 + USER_RECENTLY_UPDATED: days_since_update < 7 && days_since_install != days_since_update + USER_TIER_ONE_COUNTRY: "('US' in locale || 'GB' in locale || 'CA' in locale || 'DE' in locale || 'FR' in locale)" + USER_EN_SPEAKER: "'en' in locale" + USER_ES_SPEAKER: "'es' in locale" + USER_DE_SPEAKER: "'de' in locale" + USER_FR_SPEAKER: "'fr' in locale" + DEVICE_ANDROID: "os == 'Android'" + DEVICE_IOS: "os == 'iOS'" + ALWAYS: "true" + NEVER: "false" + DAY_1_AFTER_INSTALL: days_since_install == 1 + DAY_2_AFTER_INSTALL: days_since_install == 2 + DAY_3_AFTER_INSTALL: days_since_install == 3 + DAY_4_AFTER_INSTALL: days_since_install == 4 + DAY_5_AFTER_INSTALL: days_since_install == 5 + MORE_THAN_24H_SINCE_INSTALLED_OR_UPDATED: days_since_update >= 1 + I_AM_DEFAULT_BROWSER: is_default_browser + I_AM_NOT_DEFAULT_BROWSER: is_default_browser == false + FUNNEL_PAID: "adjust_campaign != ''" + FUNNEL_ORGANIC: "adjust_campaign == ''" + INACTIVE_1_DAY: "'app_launched'|eventLastSeen('Hours') >= 24" + INACTIVE_2_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 2" + INACTIVE_3_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 3" + INACTIVE_4_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 4" + INACTIVE_5_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 5" + RECENTLY_PRINTED: "'print_tapped'|eventLastSeen('Hours') <= 24" + SECOND_HOMEPAGE_VIEW: "'home_screen_displayed'|eventSum('Years', 4, 0) >= 2" + PERFORMED_A_SEARCH_AGAIN_RECENTLY: "'performed_search'|eventSum('Years', 4, 0) >= 2 && 'performed_search'|eventLastSeen('Minutes') < 1" + FXA_CURRENTLY_SIGNED_IN: is_fxa_signed_in == true + FXA_MORE_THAN_1_DEVICE: fxa_connected_devices > 1 + FXA_SIGNED_IN: "'sync_auth.sign_in'|eventLastSeen('Years', 0) <= 4" + FXA_NOT_SIGNED_IN: "'sync_auth.sign_in'|eventLastSeen('Years', 0) > 4" + USER_INFREQUENT: "'app_launched'|eventCountNonZero('Days', 28) >= 1 && 'app_launched'|eventCountNonZero('Days', 28) < 7" + USER_CASUAL: "'app_launched'|eventCountNonZero('Days', 28) >= 7 && 'app_launched'|eventCountNonZero('Days', 28) < 14" + USER_REGULAR: "'app_launched'|eventCountNonZero('Days', 28) >= 14 && 'app_launched'|eventCountNonZero('Days', 28) < 21" + USER_CORE_ACTIVE: "'app_launched'|eventCountNonZero('Days', 28) >= 21" + LAUNCHED_ONCE_THIS_WEEK: "'app_launched'|eventSum('Days', 7) == 1" + string-alias: TriggerName + allow-coenrollment: true + microsurveys: + description: Feature for microsurveys. + variables: + enabled: + description: "When the feature is enabled then microsurveys can be used.\n" + type: Boolean + default: true + mr2022: + description: Features for MR 2022. + variables: + sections-enabled: + description: This property provides a lookup table of whether or not the given section should be enabled. + type: "Map" + default: + home-onboarding-dialog-existing-users: true + sync-cfr: true + wallpapers-selection-tool: true + jump-back-in-cfr: true + tcp-cfr: true + tcp-feature: true + navigation-toolbar: + description: Feature for navigation toolbar. + variables: + enabled: + description: "When the feature is enabled then the user will see the new navigation toolbar.\n" + type: Boolean + default: true + networking: + description: Enables networking features + variables: + fetchPriorityEnabled: + description: "Enables or disables network.fetchpriority.enabled preference.\n" + type: Boolean + default: true + nimbus-is-ready: + description: "A feature that provides the number of Nimbus is_ready events to send when Nimbus finishes launching.\n" + variables: + event-count: + description: The number of events that should be sent. + type: Int + default: 1 + nimbus-system: + description: "Configuration of the Nimbus System in Android.\n" + variables: + refresh-interval-foreground: + description: "The minimum interval in minutes between fetching experiment\nrecipes in the foreground.\n" + type: Int + default: 60 + nimbus-validation: + description: A feature that does not correspond to an application feature suitable for showing that Nimbus is working. This should never be used in production. + variables: + settings-icon: + description: The drawable displayed in the app menu for Settings + type: String + default: mozac_ic_settings + settings-punctuation: + description: The emoji displayed in the Settings screen title. + type: String + default: "" + settings-title: + description: The title of displayed in the Settings screen and app menu. + type: Text + default: browser_menu_settings + onboarding: + description: "A feature that configures the new user onboarding page. Note that onboarding is a **first run** feature, and should only be modified by first run experiments." + variables: + order: + description: Determines the order of the onboarding page panels + type: List + default: + - themes + - toolbar-placement + - sync + - tcp + - privacy-notice + one-click-search: + description: Enable/disable the one click search feature. + variables: + enabled: + description: "If true, the one click search will be enabled." + type: Boolean + default: false + pdfjs: + description: PDF.js features + variables: + download-button: + description: Download button + type: Boolean + default: true + open-in-app-button: + description: Open in app button + type: Boolean + default: true + print: + description: A feature for printing from the share or browser menu. + variables: + browser-print-enabled: + description: "If true, a print button from the browser menu is available." + type: Boolean + default: true + share-print-enabled: + description: "If true, a print button from the share menu is available." + type: Boolean + default: true + private-browsing: + description: Private Browsing Mode + variables: + felt-privacy-enabled: + description: "if true, enable felt privacy related UI" + type: Boolean + default: false + query-parameter-stripping: + description: Features for query parameter stripping. + variables: + sections-enabled: + description: This property provides a lookup table of whether or not the given section should be enabled. + type: "Map" + default: + query-parameter-stripping: "0" + query-parameter-stripping-pmb: "0" + query-parameter-stripping-allow-list: "" + query-parameter-stripping-strip-list: "" + re-engagement-notification: + description: A feature that shows the re-engagement notification if the user is inactive. + variables: + enabled: + description: "If true, the re-engagement notification is shown to the inactive user." + type: Boolean + default: false + type: + description: The type of re-engagement notification that is shown to the inactive user. + type: Int + default: 0 + remote-tab-management: + description: "Features that let users manage tabs on other devices that are connected to the same Mozilla account.\n" + variables: + close-tabs-enabled: + description: "Whether the feature to close synced tabs is enabled. When enabled, this device will allow other devices to close tabs that are open on this device, and show a \"close\" button for tabs that are currently open on other supported devices in the synced tabs tray.\n" + type: Boolean + default: true + search-extra-params: + description: A feature that provides additional args for search. + variables: + channel-id: + description: The channel Id param name with arg. + type: "Map" + default: {} + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + feature-enabler: + description: "The feature enabler param name with arg, NOTE this map could be empty." + type: "Map" + default: {} + search-engine: + description: The search engine name. + type: String + default: "" + search-term-groups: + description: A feature allowing the grouping of URLs around the search term that it came from. + variables: + enabled: + description: "If true, the feature shows up on the homescreen and on the new tab screen." + type: Boolean + default: true + set-as-default-prompt: + description: "Displays native default browser prompt to existing users.\n" + variables: + app-cold-starts-between-prompts: + description: "Minimum number of app cold starts before the next prompt should be displayed to the user.\n" + type: Int + default: 4 + days-between-prompts: + description: "Minimum number of days between displays of Set as default prompt.\n" + type: Int + default: 14 + enabled: + description: "When the feature is enabled then the Set as default prompt can be triggered for existing users.\n" + type: Boolean + default: true + max-number-of-times-to-display: + description: "Maximum number of time the prompt should be displayed.\n" + type: Int + default: 3 + ship: + description: The feature that controls Session History in Parent (SHIP) in Gecko. + variables: + disabled: + description: "Whether or not to disable SHIP. SHIP is enabled when set to false. SHIP is disabled when set to true.\n" + type: Boolean + default: true + shopping-experience: + description: A feature that shows product review quality information. + variables: + enabled: + description: "if true, the shopping experience feature is shown to the user." + type: Boolean + default: true + product-recommendations: + description: "if true, recommended products feature is enabled to be shown to the user based on their preference." + type: Boolean + default: true + product-recommendations-exposure: + description: "if true, we want to record recommended products inventory for opted-in users, even if product recommendations are disabled." + type: Boolean + default: true + splash-screen: + description: "A feature that extends splash screen duration, allowing additional data fetching time for the app's initial run." + variables: + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + maximum_duration_ms: + description: The maximum amount of time in milliseconds the splashscreen will be visible while waiting for initialization calls to complete. + type: Int + default: 0 + suggest-shipped-domains: + description: Feature that suggests domains from the shipped domain list. + variables: + enabled: + description: "Suggest domains from the shipped domain list.\n" + type: Boolean + default: false + third-party-cookie-blocking: + description: Control third-party cookie blocking. + variables: + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + enabled-normal: + description: "Enables / disables third-party cookie blocking in normal browsing mode.\n" + type: Boolean + default: false + enabled-private: + description: "Enables / disables third-party cookie blocking in private browsing mode.\n" + type: Boolean + default: true + translations: + description: The feature that allows on-device translations of web content. + variables: + downloads-enabled: + description: "Show the global language model download options entry point for translations. ('Download languages' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + global-lang-settings-enabled: + description: "Show the global language options entry point for automatically translating. ('Automatic Translation' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + global-settings-enabled: + description: "Show the global settings entry point within the translations feature. ('Translation Settings' on the page settings view.) 'page-settings-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + global-site-settings-enabled: + description: "Show the global never translate this site options entry point for site management. ('Never translate these sites' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + main-flow-browser-menu-enabled: + description: "Show the browser menu entry point into the translations feature. ('Translate Page' on browser menu.)\n" + type: Boolean + default: true + main-flow-toolbar-enabled: + description: "Show the primary toolbar entry point into the translations feature. (Translations icon on URL toolbar.)\n" + type: Boolean + default: true + page-settings-enabled: + description: "Show the page settings entry point within the translations feature. (Gear icon on the translations main flow page.) 'main-flow-toolbar-enabled' or 'main-flow-browser-menu-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + user-characteristics: + description: A feature for control user characteristic data collection + variables: + currentVersion: + description: The current collection version of the user characteristics. + type: Int + default: 0 +enums: + ControlMessageBehavior: + description: An enum to influence what should be displayed when a control message is selected. + variants: + show-next-message: + description: The next eligible message should be shown. + show-none: + description: The surface should show no message. + CookieBannersSection: + description: The identifiers for the sections of the MR 2022. + variants: + feature-setting-detect-only: + description: "An integer either 0 or 1 indicating if cookie banner detect only mode should be enabled or disabled. 0 for setting to be disabled, and 1 for enabling the setting." + feature-setting-global-rules: + description: "An integer either 0 or 1 indicating if cookie banner global rules should be enabled or disabled. 0 for setting to be disabled, and 1 for enabling the setting." + feature-setting-global-rules-sub-frames: + description: "An integer either 0 or 1 indicating if cookie banner global rules sub-frames should be enabled or disabled. 0 for setting to be disabled, and 1 for enabling the setting." + feature-setting-value: + description: "An integer either 0 or 1 indicating if cookie banner setting should be enabled or disabled, 0 for setting the value to disabled, 1 for enabling the setting with the value reject_all." + feature-setting-value-pbm: + description: "An integer either 0 or 1 indicating if cookie banner setting should be enabled or disabled, 0 for setting the value to disabled, 1 for enabling the setting with the value reject_all." + feature-ui: + description: "An integer either 0 or 1 indicating if the UI for cookie banner handling should be visible, 0 to hide the UI and 1 to show the UI. The actual UI is composed by cookie banner section in the settings page, the toolbar section and the re-engagement dialog." + HomeScreenSection: + description: The identifiers for the sections of the homescreen. + variants: + bookmarks: + description: The sites the user has bookmarked. + jump-back-in: + description: The tabs the user was looking immediately before being interrupted. + pocket: + description: The pocket section. This should only be available in the US. + pocket-sponsored-stories: + description: Subsection of the Pocket homescreen section which shows sponsored stories. + recent-explorations: + description: The tab groups + top-sites: + description: The frecency and pinned sites. + MR2022Section: + description: The identifiers for the sections of the MR 2022. + variants: + home-onboarding-dialog-existing-users: + description: Home onboarding dialog for upgraded users. + jump-back-in-cfr: + description: Jump back-in onboarding message. + sync-cfr: + description: CFR for the first time you see a synced tab on the home screen. + tcp-cfr: + description: CFR for the first time you use the browse with Total Cookie Protection on the browser screen. + tcp-feature: + description: Controls the Total Cookie Protection feature. + wallpapers-selection-tool: + description: Wallpapers selection dialog tool for the home screen. + OnboardingCardType: + description: An enum to describe a type of card. + variants: + add-ons: + description: Allows user to install add-ons from onboarding. + add-search-widget: + description: Allows user to add search widget to homescreen. + default-browser: + description: Allows user to set Firefox as the default browser. + notification-permission: + description: Allows user to enable notification permission. + sync-sign-in: + description: Allows user to sync with a Firefox account. + OnboardingPanel: + description: The types of onboarding panels in the onboarding page + variants: + privacy-notice: + description: The onboarding panel where users can tap to view our privacy notice. + sync: + description: The onboarding panel where users can sign in to sync + tcp: + description: The onboarding panel where users can choose their total cookie protection settings + themes: + description: The themes onboarding panel where users pick themes + toolbar-placement: + description: The onboarding panel where users choose their toolbar placement (bottom or top) + QueryParameterStrippingSection: + description: The identifiers for the options for the Query Parameter Stripping feature. + variants: + query-parameter-stripping: + description: "An integer either 0 or 1 indicating if query parameter stripping should be enabled or disabled in normal mode. 0 for setting to be disabled, and 1 for enabling the setting." + query-parameter-stripping-allow-list: + description: An string separated by commas indicating the sites where should from query stripping should be exempted. + query-parameter-stripping-pmb: + description: "An integer either 0 or 1 indicating if query parameter stripping should be enabled or disabled in private mode. 0 for setting to be disabled, and 1 for enabling the setting." + query-parameter-stripping-strip-list: + description: An string separated by commas indicating the list of query params to be stripped from URIs. This list will be merged with records coming from RemoteSettings. + SuggestionType: + description: The type of a Firefox Suggest search suggestion. + variants: + amp: + description: A Firefox Suggestion from adMarketplace. + ampMobile: + description: A firefox Suggestion from adMarketplace specifically for mobile. + wikipedia: + description: A Firefox Suggestion for a Wikipedia page. +objects: + AddOnData: + description: An object to describe an add-on to be installed from the onboarding card. + fields: + average-rating: + description: The average rating of the add-on. + type: String + default: "0.0" + description: + description: A small description of the add-on to be displayed to the user. + type: Text + default: "" + icon-res: + description: The resource id of the icon of the add-on to be displayed. + type: Image + default: ic_onboarding_welcome + id: + description: The identifier for this add-on. + type: Text + default: "" + install-url: + description: The url from where the add-on can be installed. + type: Text + default: "" + name: + description: The name of the add-on to be displayed to the user. + type: Text + default: "" + review-count: + description: The amount of reviews the add-on has. + type: String + default: "0.0" + ExtraCardData: + description: "Holds data for cards that require additional data, e.g. add-ons, toolbar placement cards." + fields: + add-ons-data: + description: "An optional list of add-ons which will be shown in add-on onboarding card.\n" + type: List + default: [] + MessageData: + description: "An object to describe a message. It uses human readable strings to describe the triggers, action and style of the message as well as the text of the message and call to action.\n" + fields: + action: + description: "A URL of a page or a deeplink. This may have substitution variables in.\n" + type: ActionName + default: OPEN_URL + action-params: + description: "A string map containing query parameters that will be appended to the action URL. This is useful for opening URLs in tabs, or specifying that the tab should be private. The values may have substitutions, e.g. \"url\": \"https://example.com/id={uuid}\", \"private\": \"true\".\nThe params and their values are all determined downstream of the messaging component, by the embedding app's deeplink processing machinery.\n" + type: "Map" + default: {} + button-label: + description: "The text on the button. If no text is present, the whole message is clickable.\n" + type: Option + default: ~ + exclude-if-any: + description: "A list of strings corresponding to targeting expressions. The message will not be shown if any of the expressions are `true`.\n" + type: List + default: [] + experiment: + description: The slug of the experiment that this message came from. + type: Option + default: ~ + is-control: + description: "Indicates if this message is the control message, if true shouldn't be displayed" + type: Boolean + default: false + microsurvey-config: + description: Optional configuration data for a microsurvey. + type: Option + default: ~ + style: + description: "The style as described in a `StyleData` from the styles table.\n" + type: StyleName + default: DEFAULT + surface: + description: The surface identifier for this message. + type: SurfaceName + default: homescreen + text: + description: The message text displayed to the user + type: Text + default: "" + title: + description: The title text displayed to the user + type: Option + default: ~ + trigger-if-all: + description: "A list of strings corresponding to targeting expressions. The message will be shown if all expressions are `true`.\n" + type: List + default: [] + MicrosurveyAnswer: + description: Attributes relating to microsurvey content. + fields: + ordering: + description: "Used to sequence the answers top to bottom. E.g. 0 will be the first/top item, 1 will be next and so on. Always set either ALL the provided answers ordering or NONE. If ALL answers are default, the the ordering used will be the same as provided by the experiment.\n" + type: Int + default: 0 + text: + description: The text for the answer. + type: Text + default: "" + MicrosurveyConfig: + description: Attributes relating to microsurvey content. + fields: + answers: + description: "The list of answers to present to the user e.g. \"Satisfied, Dissatisfied...\"." + type: List + default: [] + icon: + description: The icon shown in the survey. + type: Option + default: ~ + utm-content: + description: "Optional \"utm_content\" parameter for the privacy notice URL to specify the feature being surveyed." + type: Option + default: ~ + NotificationConfig: + description: Attributes controlling the global configuration of notification messages. + fields: + refresh-interval: + description: "How often, in minutes, the notification message worker will wake up and check for new messages.\n" + type: Int + default: 240 + OnboardingCardData: + description: An object to describe a user facing onboarding card. + fields: + body: + description: The message text displayed to the user. May contain linkable text. + type: Text + default: "" + card-type: + description: The type of the card. + type: OnboardingCardType + default: default-browser + disqualifiers: + description: "A list of strings corresponding to targeting expressions. The card will not be shown if any expression is `true`.\n" + type: List + default: + - NEVER + enabled: + description: "If true, this card is shown to the user." + type: Boolean + default: true + extra-data: + description: Optional extra data for cards that require additional data. + type: Option + default: ~ + image-res: + description: The resource id of the image to be displayed. + type: Image + default: ic_onboarding_welcome + ordering: + description: Used to sequence the cards. + type: Int + default: 0 + prerequisites: + description: "A list of strings corresponding to targeting expressions. The card will be shown if all expressions are `true` and if no expressions in the `disqualifiers` table are true, or if the `disqualifiers` table is empty.\n" + type: List + default: + - ALWAYS + primary-button-label: + description: The text to display on the primary button. + type: Text + default: "" + secondary-button-label: + description: The text to display on the secondary button. + type: Text + default: "" + title: + description: The title text displayed to the user. + type: Text + default: "" + StyleData: + description: "A group of properties (predominantly visual) to describe the style of the message.\n" + fields: + max-display-count: + description: "How many sessions will this message be shown to the user before it is expired.\n" + type: Int + default: 5 + priority: + description: "The importance of this message. 0 is not very important, 100 is very important.\n" + type: Int + default: 50 diff --git a/experimenter/experimenter/features/manifests/fenix/v134.0.2/experimenter.yaml b/experimenter/experimenter/features/manifests/fenix/v134.0.2/experimenter.yaml new file mode 100644 index 0000000000..8e6010d117 --- /dev/null +++ b/experimenter/experimenter/features/manifests/fenix/v134.0.2/experimenter.yaml @@ -0,0 +1,442 @@ +--- +alternative-app-launcher-icon: + description: A feature that changes the app launcher icon background color. + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "If true, the feature is active." + reset-to-default: + type: boolean + description: "If true use the default icon, if false use the alternative icon. This is required to 'reset' the icon for enrolled users once the initial experiment is complete.\n" +awesomebar-suggestion-provider: + description: Configuration for the Firefox Suggest awesomebar suggestion provider. + hasExposure: true + exposureDescription: "" + variables: + available-suggestion-types: + type: json + description: "A map of suggestion types to booleans that indicate whether or not the provider should return suggestions of those types.\n" +bookmarks: + description: Feature for Bookmarks + hasExposure: true + exposureDescription: "" + variables: + new-compose-ui: + type: boolean + description: "if true, enable new compose based UI" +cookie-banners: + description: Features for cookie banner handling. + hasExposure: true + exposureDescription: "" + variables: + sections-enabled: + type: json + description: This property provides a lookup table of whether or not the given section should be enabled. +fingerprinting-protection: + description: Control Fingerprinting Protection + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "If true, the feature is active." + enabled-normal: + type: boolean + description: "Enables / disables fingerprinting protection in normal browsing mode.\n" + enabled-private: + type: boolean + description: "Enables / disables fingerprinting protection in private browsing mode.\n" + fdlibm-math: + type: boolean + description: "Uses a different math backend for Math.sin/cos/tan in JavaScript that exposes less entropy\n" + overrides: + type: string + description: "The protection overrides to add or remove fingerprinting protection targets. Please check RFPTargets.inc for all supported targets.\n" +fission: + description: The feature that controls whether fission is enabled or not in Gecko. + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "Whether or not to enable fission. Fission is enabled when set to true. Fission is disabled when set to false.\n" +fx-suggest: + description: A feature that provides Firefox Suggest search suggestions. + hasExposure: true + exposureDescription: "" + variables: + boost-amp-wiki: + type: boolean + description: "The feature boost wiki and AMP suggestions to the top of its group.\n" + enabled: + type: boolean + description: "Whether the feature is enabled. When Firefox Suggest is enabled, Firefox will download and store new search suggestions in the background, and show additional Search settings to control which suggestions appear in the awesomebar. When Firefox Suggest is disabled, Firefox will not download new suggestions, and hide the additional Search settings.\n" +glean: + description: A feature that provides server-side configurations for Glean metrics (aka Server Knobs). + hasExposure: true + exposureDescription: "" + variables: + delay-ping-lifetime-io: + type: boolean + description: Glean will delay io for ping lifetime metrics + enable-event-timestamps: + type: boolean + description: Enables precise event timestamps for Glean events + metrics-enabled: + type: json + description: "A map of metric base-identifiers to booleans representing the state of the 'enabled' flag for that metric." + ping-lifetime-max-time: + type: int + description: After what time to auto-flush + ping-lifetime-threshold: + type: int + description: Write count threshold when to auto-flush +growth-data: + description: A feature measuring campaign growth data + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "If true, the feature is active" +homescreen: + description: The homescreen that the user goes to when they press home or new tab. + hasExposure: true + exposureDescription: "" + variables: + sections-enabled: + type: json + description: "This property provides a lookup table of whether or not the given section should be enabled. If the section is enabled, it should be toggleable in the settings screen, and on by default." +javascript: + description: Enables Javascript Engine (Spidermonkey) features + hasExposure: true + exposureDescription: "" + variables: + parallelMarkingEnabled: + type: boolean + description: "Enables or disables javascript.options.mem.gc_parallel_marking preference.\n" +juno-onboarding: + description: A feature that shows the onboarding flow. + hasExposure: true + exposureDescription: "" + variables: + cards: + type: json + description: Collection of user facing onboarding cards. + conditions: + type: json + description: "A collection of out the box conditional expressions to be used in determining whether a card should show or not. Each entry maps to a valid JEXL expression.\n" +menu-redesign: + description: Control the new menu redesign. + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "If true, the new menu redesign is available." + report-site-issue: + type: boolean + description: "If true, report site issue menu item and preview is available." +messaging: + description: "The in-app messaging system.\n" + hasExposure: true + exposureDescription: "" + variables: + $$experiment: + type: string + description: "The only acceptable value for `MessageData#experiment`. This should not be set by experiment." + $$surfaces: + type: json + description: "A list available surfaces for this app.\n\nThis should not be written to by experiments, and should be hidden to users.\n" + actions: + type: json + description: A growable map of action URLs. + message-under-experiment: + type: string + description: "Deprecated in favor of `MessageData#experiment`. This will be removed in future releases." + messages: + type: json + description: A growable collection of messages + notification-config: + type: json + description: Configuration of the notification worker for all notification messages. + on-control: + type: string + description: What should be displayed when a control message is selected. + enum: + - show-next-message + - show-none + styles: + type: json + description: "A map of styles to configure message appearance.\n" + triggers: + type: json + description: "A collection of out the box trigger expressions. Each entry maps to a valid JEXL expression.\n" +microsurveys: + description: Feature for microsurveys. + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "When the feature is enabled then microsurveys can be used.\n" +mr2022: + description: Features for MR 2022. + hasExposure: true + exposureDescription: "" + variables: + sections-enabled: + type: json + description: This property provides a lookup table of whether or not the given section should be enabled. +navigation-toolbar: + description: Feature for navigation toolbar. + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "When the feature is enabled then the user will see the new navigation toolbar.\n" +networking: + description: Enables networking features + hasExposure: true + exposureDescription: "" + variables: + fetchPriorityEnabled: + type: boolean + description: "Enables or disables network.fetchpriority.enabled preference.\n" +nimbus-is-ready: + description: "A feature that provides the number of Nimbus is_ready events to send when Nimbus finishes launching.\n" + hasExposure: true + exposureDescription: "" + variables: + event-count: + type: int + description: The number of events that should be sent. +nimbus-system: + description: "Configuration of the Nimbus System in Android.\n" + hasExposure: true + exposureDescription: "" + variables: + refresh-interval-foreground: + type: int + description: "The minimum interval in minutes between fetching experiment\nrecipes in the foreground.\n" +nimbus-validation: + description: A feature that does not correspond to an application feature suitable for showing that Nimbus is working. This should never be used in production. + hasExposure: true + exposureDescription: "" + variables: + settings-icon: + type: string + description: The drawable displayed in the app menu for Settings + settings-punctuation: + type: string + description: The emoji displayed in the Settings screen title. + settings-title: + type: string + description: The title of displayed in the Settings screen and app menu. +onboarding: + description: "A feature that configures the new user onboarding page. Note that onboarding is a **first run** feature, and should only be modified by first run experiments." + hasExposure: true + exposureDescription: "" + variables: + order: + type: json + description: Determines the order of the onboarding page panels +one-click-search: + description: Enable/disable the one click search feature. + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "If true, the one click search will be enabled." +pdfjs: + description: PDF.js features + hasExposure: true + exposureDescription: "" + variables: + download-button: + type: boolean + description: Download button + open-in-app-button: + type: boolean + description: Open in app button +print: + description: A feature for printing from the share or browser menu. + hasExposure: true + exposureDescription: "" + variables: + browser-print-enabled: + type: boolean + description: "If true, a print button from the browser menu is available." + share-print-enabled: + type: boolean + description: "If true, a print button from the share menu is available." +private-browsing: + description: Private Browsing Mode + hasExposure: true + exposureDescription: "" + variables: + felt-privacy-enabled: + type: boolean + description: "if true, enable felt privacy related UI" +query-parameter-stripping: + description: Features for query parameter stripping. + hasExposure: true + exposureDescription: "" + variables: + sections-enabled: + type: json + description: This property provides a lookup table of whether or not the given section should be enabled. +re-engagement-notification: + description: A feature that shows the re-engagement notification if the user is inactive. + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "If true, the re-engagement notification is shown to the inactive user." + type: + type: int + description: The type of re-engagement notification that is shown to the inactive user. +remote-tab-management: + description: "Features that let users manage tabs on other devices that are connected to the same Mozilla account.\n" + hasExposure: true + exposureDescription: "" + variables: + close-tabs-enabled: + type: boolean + description: "Whether the feature to close synced tabs is enabled. When enabled, this device will allow other devices to close tabs that are open on this device, and show a \"close\" button for tabs that are currently open on other supported devices in the synced tabs tray.\n" +search-extra-params: + description: A feature that provides additional args for search. + hasExposure: true + exposureDescription: "" + variables: + channel-id: + type: json + description: The channel Id param name with arg. + enabled: + type: boolean + description: "If true, the feature is active." + feature-enabler: + type: json + description: "The feature enabler param name with arg, NOTE this map could be empty." + search-engine: + type: string + description: The search engine name. +search-term-groups: + description: A feature allowing the grouping of URLs around the search term that it came from. + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "If true, the feature shows up on the homescreen and on the new tab screen." +set-as-default-prompt: + description: "Displays native default browser prompt to existing users.\n" + hasExposure: true + exposureDescription: "" + variables: + app-cold-starts-between-prompts: + type: int + description: "Minimum number of app cold starts before the next prompt should be displayed to the user.\n" + days-between-prompts: + type: int + description: "Minimum number of days between displays of Set as default prompt.\n" + enabled: + type: boolean + description: "When the feature is enabled then the Set as default prompt can be triggered for existing users.\n" + max-number-of-times-to-display: + type: int + description: "Maximum number of time the prompt should be displayed.\n" +ship: + description: The feature that controls Session History in Parent (SHIP) in Gecko. + hasExposure: true + exposureDescription: "" + variables: + disabled: + type: boolean + description: "Whether or not to disable SHIP. SHIP is enabled when set to false. SHIP is disabled when set to true.\n" +shopping-experience: + description: A feature that shows product review quality information. + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "if true, the shopping experience feature is shown to the user." + product-recommendations: + type: boolean + description: "if true, recommended products feature is enabled to be shown to the user based on their preference." + product-recommendations-exposure: + type: boolean + description: "if true, we want to record recommended products inventory for opted-in users, even if product recommendations are disabled." +splash-screen: + description: "A feature that extends splash screen duration, allowing additional data fetching time for the app's initial run." + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "If true, the feature is active." + maximum_duration_ms: + type: int + description: The maximum amount of time in milliseconds the splashscreen will be visible while waiting for initialization calls to complete. +suggest-shipped-domains: + description: Feature that suggests domains from the shipped domain list. + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "Suggest domains from the shipped domain list.\n" +third-party-cookie-blocking: + description: Control third-party cookie blocking. + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "If true, the feature is active." + enabled-normal: + type: boolean + description: "Enables / disables third-party cookie blocking in normal browsing mode.\n" + enabled-private: + type: boolean + description: "Enables / disables third-party cookie blocking in private browsing mode.\n" +translations: + description: The feature that allows on-device translations of web content. + hasExposure: true + exposureDescription: "" + variables: + downloads-enabled: + type: boolean + description: "Show the global language model download options entry point for translations. ('Download languages' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n" + global-lang-settings-enabled: + type: boolean + description: "Show the global language options entry point for automatically translating. ('Automatic Translation' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n" + global-settings-enabled: + type: boolean + description: "Show the global settings entry point within the translations feature. ('Translation Settings' on the page settings view.) 'page-settings-enabled' must also be enabled for users to access this feature.\n" + global-site-settings-enabled: + type: boolean + description: "Show the global never translate this site options entry point for site management. ('Never translate these sites' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n" + main-flow-browser-menu-enabled: + type: boolean + description: "Show the browser menu entry point into the translations feature. ('Translate Page' on browser menu.)\n" + main-flow-toolbar-enabled: + type: boolean + description: "Show the primary toolbar entry point into the translations feature. (Translations icon on URL toolbar.)\n" + page-settings-enabled: + type: boolean + description: "Show the page settings entry point within the translations feature. (Gear icon on the translations main flow page.) 'main-flow-toolbar-enabled' or 'main-flow-browser-menu-enabled' must also be enabled for users to access this feature.\n" +user-characteristics: + description: A feature for control user characteristic data collection + hasExposure: true + exposureDescription: "" + variables: + currentVersion: + type: int + description: The current collection version of the user characteristics. diff --git a/experimenter/experimenter/features/manifests/fenix/v134.0.2/nightly.fml.yaml b/experimenter/experimenter/features/manifests/fenix/v134.0.2/nightly.fml.yaml new file mode 100644 index 0000000000..08b4d0eefe --- /dev/null +++ b/experimenter/experimenter/features/manifests/fenix/v134.0.2/nightly.fml.yaml @@ -0,0 +1,936 @@ +--- +version: 1.0.0 +about: + description: Nimbus Feature Manifest for Fenix (Firefox Android) +channels: + - nightly +features: + alternative-app-launcher-icon: + description: A feature that changes the app launcher icon background color. + variables: + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + reset-to-default: + description: "If true use the default icon, if false use the alternative icon. This is required to 'reset' the icon for enrolled users once the initial experiment is complete.\n" + type: Boolean + default: false + awesomebar-suggestion-provider: + description: Configuration for the Firefox Suggest awesomebar suggestion provider. + variables: + available-suggestion-types: + description: "A map of suggestion types to booleans that indicate whether or not the provider should return suggestions of those types.\n" + type: "Map" + default: + amp: true + ampMobile: false + wikipedia: true + bookmarks: + description: Feature for Bookmarks + variables: + new-compose-ui: + description: "if true, enable new compose based UI" + type: Boolean + default: false + cookie-banners: + description: Features for cookie banner handling. + variables: + sections-enabled: + description: This property provides a lookup table of whether or not the given section should be enabled. + type: "Map" + default: + feature-ui: 1 + feature-setting-value: 0 + feature-setting-value-pbm: 1 + feature-setting-detect-only: 0 + feature-setting-global-rules: 1 + feature-setting-global-rules-sub-frames: 1 + fingerprinting-protection: + description: Control Fingerprinting Protection + variables: + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + enabled-normal: + description: "Enables / disables fingerprinting protection in normal browsing mode.\n" + type: Boolean + default: false + enabled-private: + description: "Enables / disables fingerprinting protection in private browsing mode.\n" + type: Boolean + default: true + fdlibm-math: + description: "Uses a different math backend for Math.sin/cos/tan in JavaScript that exposes less entropy\n" + type: Boolean + default: false + overrides: + description: "The protection overrides to add or remove fingerprinting protection targets. Please check RFPTargets.inc for all supported targets.\n" + type: String + default: "" + fission: + description: The feature that controls whether fission is enabled or not in Gecko. + variables: + enabled: + description: "Whether or not to enable fission. Fission is enabled when set to true. Fission is disabled when set to false.\n" + type: Boolean + default: false + fx-suggest: + description: A feature that provides Firefox Suggest search suggestions. + variables: + boost-amp-wiki: + description: "The feature boost wiki and AMP suggestions to the top of its group.\n" + type: Boolean + default: false + enabled: + description: "Whether the feature is enabled. When Firefox Suggest is enabled, Firefox will download and store new search suggestions in the background, and show additional Search settings to control which suggestions appear in the awesomebar. When Firefox Suggest is disabled, Firefox will not download new suggestions, and hide the additional Search settings.\n" + type: Boolean + default: true + glean: + description: A feature that provides server-side configurations for Glean metrics (aka Server Knobs). + variables: + delay-ping-lifetime-io: + description: Glean will delay io for ping lifetime metrics + type: Boolean + default: true + enable-event-timestamps: + description: Enables precise event timestamps for Glean events + type: Boolean + default: true + metrics-enabled: + description: "A map of metric base-identifiers to booleans representing the state of the 'enabled' flag for that metric." + type: "Map" + default: {} + ping-lifetime-max-time: + description: After what time to auto-flush + type: Int + default: 2000 + ping-lifetime-threshold: + description: Write count threshold when to auto-flush + type: Int + default: 1000 + allow-coenrollment: true + growth-data: + description: A feature measuring campaign growth data + variables: + enabled: + description: "If true, the feature is active" + type: Boolean + default: false + homescreen: + description: The homescreen that the user goes to when they press home or new tab. + variables: + sections-enabled: + description: "This property provides a lookup table of whether or not the given section should be enabled. If the section is enabled, it should be toggleable in the settings screen, and on by default." + type: "Map" + default: + top-sites: true + jump-back-in: true + bookmarks: true + recent-explorations: true + pocket: true + pocket-sponsored-stories: true + javascript: + description: Enables Javascript Engine (Spidermonkey) features + variables: + parallelMarkingEnabled: + description: "Enables or disables javascript.options.mem.gc_parallel_marking preference.\n" + type: Boolean + default: false + juno-onboarding: + description: A feature that shows the onboarding flow. + variables: + cards: + description: Collection of user facing onboarding cards. + type: "Map" + default: + default-browser: + body: juno_onboarding_default_browser_description_nimbus_3 + card-type: default-browser + disqualifiers: + - NEVER + enabled: true + extra-data: ~ + image-res: ic_onboarding_welcome + ordering: 10 + prerequisites: + - ALWAYS + primary-button-label: juno_onboarding_default_browser_positive_button + secondary-button-label: juno_onboarding_default_browser_negative_button + title: juno_onboarding_default_browser_title_nimbus_2 + add-search-widget: + body: juno_onboarding_add_search_widget_description + card-type: add-search-widget + disqualifiers: + - NEVER + enabled: true + extra-data: ~ + image-res: ic_onboarding_search_widget + ordering: 15 + prerequisites: + - ALWAYS + primary-button-label: juno_onboarding_add_search_widget_positive_button + secondary-button-label: juno_onboarding_add_search_widget_negative_button + title: juno_onboarding_add_search_widget_title + sync-sign-in: + body: juno_onboarding_sign_in_description_3 + card-type: sync-sign-in + disqualifiers: + - NEVER + enabled: true + extra-data: ~ + image-res: ic_onboarding_sync + ordering: 20 + prerequisites: + - ALWAYS + primary-button-label: juno_onboarding_sign_in_positive_button + secondary-button-label: juno_onboarding_sign_in_negative_button + title: juno_onboarding_sign_in_title_2 + notification-permission: + body: juno_onboarding_enable_notifications_description_nimbus_2 + card-type: notification-permission + disqualifiers: + - NEVER + enabled: true + extra-data: ~ + image-res: ic_notification_permission + ordering: 30 + prerequisites: + - ALWAYS + primary-button-label: juno_onboarding_enable_notifications_positive_button + secondary-button-label: juno_onboarding_enable_notifications_negative_button + title: juno_onboarding_enable_notifications_title_nimbus_2 + string-alias: OnboardingCardKey + conditions: + description: "A collection of out the box conditional expressions to be used in determining whether a card should show or not. Each entry maps to a valid JEXL expression.\n" + type: "Map" + default: + ALWAYS: "true" + NEVER: "false" + string-alias: ConditionName + menu-redesign: + description: Control the new menu redesign. + variables: + enabled: + description: "If true, the new menu redesign is available." + type: Boolean + default: false + report-site-issue: + description: "If true, report site issue menu item and preview is available." + type: Boolean + default: true + messaging: + description: "The in-app messaging system.\n" + variables: + $$experiment: + description: "The only acceptable value for `MessageData#experiment`. This should not be set by experiment." + type: ExperimentSlug + default: "{experiment}" + string-alias: ExperimentSlug + $$surfaces: + description: "A list available surfaces for this app.\n\nThis should not be written to by experiments, and should be hidden to users.\n" + type: List + default: + - homescreen + - notification + - survey + - microsurvey + string-alias: SurfaceName + actions: + description: A growable map of action URLs. + type: "Map" + default: + OPEN_URL: "://open" + ENABLE_PRIVATE_BROWSING: "://enable_private_browsing" + INSTALL_SEARCH_WIDGET: "://install_search_widget" + MAKE_DEFAULT_BROWSER: "://make_default_browser" + VIEW_BOOKMARKS: "://urls_bookmarks" + VIEW_COLLECTIONS: "://home_collections" + VIEW_HISTORY: "://urls_history" + VIEW_HOMESCREEN: "://home" + OPEN_SETTINGS_ACCESSIBILITY: "://settings_accessibility" + OPEN_SETTINGS_ADDON_MANAGER: "://settings_addon_manager" + OPEN_SETTINGS_DELETE_BROWSING_DATA: "://settings_delete_browsing_data" + OPEN_SETTINGS_LOGINS: "://settings_logins" + OPEN_SETTINGS_NOTIFICATIONS: "://settings_notifications" + OPEN_SETTINGS_PRIVACY: "://settings_privacy" + OPEN_SETTINGS_SEARCH_ENGINE: "://settings_search_engine" + OPEN_SETTINGS_TRACKING_PROTECTION: "://settings_tracking_protection" + OPEN_SETTINGS_WALLPAPERS: "://settings_wallpapers" + OPEN_SETTINGS: "://settings" + OPEN_SHARE_SHEET: "://share_sheet" + TURN_ON_SYNC: "://turn_on_sync" + string-alias: ActionName + message-under-experiment: + description: "Deprecated in favor of `MessageData#experiment`. This will be removed in future releases." + type: Option + default: ~ + messages: + description: A growable collection of messages + type: "Map" + default: + default-browser: + title: default_browser_experiment_card_title + text: default_browser_experiment_card_text + surface: homescreen + action: MAKE_DEFAULT_BROWSER + trigger-if-all: + - USER_ESTABLISHED_INSTALL + - ANDROID_API_BELOW_29 + exclude-if-any: + - I_AM_DEFAULT_BROWSER + style: PERSISTENT + button-label: preferences_set_as_default_browser + default-browser-notification: + title: nimbus_notification_default_browser_title + text: nimbus_notification_default_browser_text + surface: notification + style: NOTIFICATION + trigger-if-all: + - DAY_3_AFTER_INSTALL + exclude-if-any: + - I_AM_DEFAULT_BROWSER + action: MAKE_DEFAULT_BROWSER + string-alias: MessageKey + notification-config: + description: Configuration of the notification worker for all notification messages. + type: NotificationConfig + default: + refresh-interval: 240 + on-control: + description: What should be displayed when a control message is selected. + type: ControlMessageBehavior + default: show-next-message + styles: + description: "A map of styles to configure message appearance.\n" + type: "Map" + default: + DEFAULT: + priority: 50 + max-display-count: 5 + SURVEY: + priority: 55 + max-display-count: 1 + PERSISTENT: + priority: 50 + max-display-count: 20 + WARNING: + priority: 60 + max-display-count: 10 + URGENT: + priority: 100 + max-display-count: 10 + NOTIFICATION: + priority: 50 + max-display-count: 1 + MICROSURVEY: + priority: 50 + max-display-count: 5 + string-alias: StyleName + triggers: + description: "A collection of out the box trigger expressions. Each entry maps to a valid JEXL expression.\n" + type: "Map" + default: + USER_ESTABLISHED_INSTALL: number_of_app_launches >=4 + ANDROID_API_BELOW_29: android_version < 29 + USER_RECENTLY_INSTALLED: days_since_install < 7 + USER_RECENTLY_UPDATED: days_since_update < 7 && days_since_install != days_since_update + USER_TIER_ONE_COUNTRY: "('US' in locale || 'GB' in locale || 'CA' in locale || 'DE' in locale || 'FR' in locale)" + USER_EN_SPEAKER: "'en' in locale" + USER_ES_SPEAKER: "'es' in locale" + USER_DE_SPEAKER: "'de' in locale" + USER_FR_SPEAKER: "'fr' in locale" + DEVICE_ANDROID: "os == 'Android'" + DEVICE_IOS: "os == 'iOS'" + ALWAYS: "true" + NEVER: "false" + DAY_1_AFTER_INSTALL: days_since_install == 1 + DAY_2_AFTER_INSTALL: days_since_install == 2 + DAY_3_AFTER_INSTALL: days_since_install == 3 + DAY_4_AFTER_INSTALL: days_since_install == 4 + DAY_5_AFTER_INSTALL: days_since_install == 5 + MORE_THAN_24H_SINCE_INSTALLED_OR_UPDATED: days_since_update >= 1 + I_AM_DEFAULT_BROWSER: is_default_browser + I_AM_NOT_DEFAULT_BROWSER: is_default_browser == false + FUNNEL_PAID: "adjust_campaign != ''" + FUNNEL_ORGANIC: "adjust_campaign == ''" + INACTIVE_1_DAY: "'app_launched'|eventLastSeen('Hours') >= 24" + INACTIVE_2_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 2" + INACTIVE_3_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 3" + INACTIVE_4_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 4" + INACTIVE_5_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 5" + RECENTLY_PRINTED: "'print_tapped'|eventLastSeen('Hours') <= 24" + SECOND_HOMEPAGE_VIEW: "'home_screen_displayed'|eventSum('Years', 4, 0) >= 2" + PERFORMED_A_SEARCH_AGAIN_RECENTLY: "'performed_search'|eventSum('Years', 4, 0) >= 2 && 'performed_search'|eventLastSeen('Minutes') < 1" + FXA_CURRENTLY_SIGNED_IN: is_fxa_signed_in == true + FXA_MORE_THAN_1_DEVICE: fxa_connected_devices > 1 + FXA_SIGNED_IN: "'sync_auth.sign_in'|eventLastSeen('Years', 0) <= 4" + FXA_NOT_SIGNED_IN: "'sync_auth.sign_in'|eventLastSeen('Years', 0) > 4" + USER_INFREQUENT: "'app_launched'|eventCountNonZero('Days', 28) >= 1 && 'app_launched'|eventCountNonZero('Days', 28) < 7" + USER_CASUAL: "'app_launched'|eventCountNonZero('Days', 28) >= 7 && 'app_launched'|eventCountNonZero('Days', 28) < 14" + USER_REGULAR: "'app_launched'|eventCountNonZero('Days', 28) >= 14 && 'app_launched'|eventCountNonZero('Days', 28) < 21" + USER_CORE_ACTIVE: "'app_launched'|eventCountNonZero('Days', 28) >= 21" + LAUNCHED_ONCE_THIS_WEEK: "'app_launched'|eventSum('Days', 7) == 1" + string-alias: TriggerName + allow-coenrollment: true + microsurveys: + description: Feature for microsurveys. + variables: + enabled: + description: "When the feature is enabled then microsurveys can be used.\n" + type: Boolean + default: true + mr2022: + description: Features for MR 2022. + variables: + sections-enabled: + description: This property provides a lookup table of whether or not the given section should be enabled. + type: "Map" + default: + home-onboarding-dialog-existing-users: true + sync-cfr: true + wallpapers-selection-tool: true + jump-back-in-cfr: true + tcp-cfr: true + tcp-feature: true + navigation-toolbar: + description: Feature for navigation toolbar. + variables: + enabled: + description: "When the feature is enabled then the user will see the new navigation toolbar.\n" + type: Boolean + default: true + networking: + description: Enables networking features + variables: + fetchPriorityEnabled: + description: "Enables or disables network.fetchpriority.enabled preference.\n" + type: Boolean + default: true + nimbus-is-ready: + description: "A feature that provides the number of Nimbus is_ready events to send when Nimbus finishes launching.\n" + variables: + event-count: + description: The number of events that should be sent. + type: Int + default: 1 + nimbus-system: + description: "Configuration of the Nimbus System in Android.\n" + variables: + refresh-interval-foreground: + description: "The minimum interval in minutes between fetching experiment\nrecipes in the foreground.\n" + type: Int + default: 60 + nimbus-validation: + description: A feature that does not correspond to an application feature suitable for showing that Nimbus is working. This should never be used in production. + variables: + settings-icon: + description: The drawable displayed in the app menu for Settings + type: String + default: mozac_ic_settings + settings-punctuation: + description: The emoji displayed in the Settings screen title. + type: String + default: "" + settings-title: + description: The title of displayed in the Settings screen and app menu. + type: Text + default: browser_menu_settings + onboarding: + description: "A feature that configures the new user onboarding page. Note that onboarding is a **first run** feature, and should only be modified by first run experiments." + variables: + order: + description: Determines the order of the onboarding page panels + type: List + default: + - themes + - toolbar-placement + - sync + - tcp + - privacy-notice + one-click-search: + description: Enable/disable the one click search feature. + variables: + enabled: + description: "If true, the one click search will be enabled." + type: Boolean + default: false + pdfjs: + description: PDF.js features + variables: + download-button: + description: Download button + type: Boolean + default: true + open-in-app-button: + description: Open in app button + type: Boolean + default: true + print: + description: A feature for printing from the share or browser menu. + variables: + browser-print-enabled: + description: "If true, a print button from the browser menu is available." + type: Boolean + default: true + share-print-enabled: + description: "If true, a print button from the share menu is available." + type: Boolean + default: true + private-browsing: + description: Private Browsing Mode + variables: + felt-privacy-enabled: + description: "if true, enable felt privacy related UI" + type: Boolean + default: false + query-parameter-stripping: + description: Features for query parameter stripping. + variables: + sections-enabled: + description: This property provides a lookup table of whether or not the given section should be enabled. + type: "Map" + default: + query-parameter-stripping: "0" + query-parameter-stripping-pmb: "0" + query-parameter-stripping-allow-list: "" + query-parameter-stripping-strip-list: "" + re-engagement-notification: + description: A feature that shows the re-engagement notification if the user is inactive. + variables: + enabled: + description: "If true, the re-engagement notification is shown to the inactive user." + type: Boolean + default: false + type: + description: The type of re-engagement notification that is shown to the inactive user. + type: Int + default: 0 + remote-tab-management: + description: "Features that let users manage tabs on other devices that are connected to the same Mozilla account.\n" + variables: + close-tabs-enabled: + description: "Whether the feature to close synced tabs is enabled. When enabled, this device will allow other devices to close tabs that are open on this device, and show a \"close\" button for tabs that are currently open on other supported devices in the synced tabs tray.\n" + type: Boolean + default: true + search-extra-params: + description: A feature that provides additional args for search. + variables: + channel-id: + description: The channel Id param name with arg. + type: "Map" + default: {} + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + feature-enabler: + description: "The feature enabler param name with arg, NOTE this map could be empty." + type: "Map" + default: {} + search-engine: + description: The search engine name. + type: String + default: "" + search-term-groups: + description: A feature allowing the grouping of URLs around the search term that it came from. + variables: + enabled: + description: "If true, the feature shows up on the homescreen and on the new tab screen." + type: Boolean + default: true + set-as-default-prompt: + description: "Displays native default browser prompt to existing users.\n" + variables: + app-cold-starts-between-prompts: + description: "Minimum number of app cold starts before the next prompt should be displayed to the user.\n" + type: Int + default: 4 + days-between-prompts: + description: "Minimum number of days between displays of Set as default prompt.\n" + type: Int + default: 14 + enabled: + description: "When the feature is enabled then the Set as default prompt can be triggered for existing users.\n" + type: Boolean + default: true + max-number-of-times-to-display: + description: "Maximum number of time the prompt should be displayed.\n" + type: Int + default: 3 + ship: + description: The feature that controls Session History in Parent (SHIP) in Gecko. + variables: + disabled: + description: "Whether or not to disable SHIP. SHIP is enabled when set to false. SHIP is disabled when set to true.\n" + type: Boolean + default: true + shopping-experience: + description: A feature that shows product review quality information. + variables: + enabled: + description: "if true, the shopping experience feature is shown to the user." + type: Boolean + default: false + product-recommendations: + description: "if true, recommended products feature is enabled to be shown to the user based on their preference." + type: Boolean + default: false + product-recommendations-exposure: + description: "if true, we want to record recommended products inventory for opted-in users, even if product recommendations are disabled." + type: Boolean + default: false + splash-screen: + description: "A feature that extends splash screen duration, allowing additional data fetching time for the app's initial run." + variables: + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + maximum_duration_ms: + description: The maximum amount of time in milliseconds the splashscreen will be visible while waiting for initialization calls to complete. + type: Int + default: 0 + suggest-shipped-domains: + description: Feature that suggests domains from the shipped domain list. + variables: + enabled: + description: "Suggest domains from the shipped domain list.\n" + type: Boolean + default: false + third-party-cookie-blocking: + description: Control third-party cookie blocking. + variables: + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + enabled-normal: + description: "Enables / disables third-party cookie blocking in normal browsing mode.\n" + type: Boolean + default: false + enabled-private: + description: "Enables / disables third-party cookie blocking in private browsing mode.\n" + type: Boolean + default: true + translations: + description: The feature that allows on-device translations of web content. + variables: + downloads-enabled: + description: "Show the global language model download options entry point for translations. ('Download languages' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + global-lang-settings-enabled: + description: "Show the global language options entry point for automatically translating. ('Automatic Translation' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + global-settings-enabled: + description: "Show the global settings entry point within the translations feature. ('Translation Settings' on the page settings view.) 'page-settings-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + global-site-settings-enabled: + description: "Show the global never translate this site options entry point for site management. ('Never translate these sites' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + main-flow-browser-menu-enabled: + description: "Show the browser menu entry point into the translations feature. ('Translate Page' on browser menu.)\n" + type: Boolean + default: true + main-flow-toolbar-enabled: + description: "Show the primary toolbar entry point into the translations feature. (Translations icon on URL toolbar.)\n" + type: Boolean + default: true + page-settings-enabled: + description: "Show the page settings entry point within the translations feature. (Gear icon on the translations main flow page.) 'main-flow-toolbar-enabled' or 'main-flow-browser-menu-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + user-characteristics: + description: A feature for control user characteristic data collection + variables: + currentVersion: + description: The current collection version of the user characteristics. + type: Int + default: 0 +enums: + ControlMessageBehavior: + description: An enum to influence what should be displayed when a control message is selected. + variants: + show-next-message: + description: The next eligible message should be shown. + show-none: + description: The surface should show no message. + CookieBannersSection: + description: The identifiers for the sections of the MR 2022. + variants: + feature-setting-detect-only: + description: "An integer either 0 or 1 indicating if cookie banner detect only mode should be enabled or disabled. 0 for setting to be disabled, and 1 for enabling the setting." + feature-setting-global-rules: + description: "An integer either 0 or 1 indicating if cookie banner global rules should be enabled or disabled. 0 for setting to be disabled, and 1 for enabling the setting." + feature-setting-global-rules-sub-frames: + description: "An integer either 0 or 1 indicating if cookie banner global rules sub-frames should be enabled or disabled. 0 for setting to be disabled, and 1 for enabling the setting." + feature-setting-value: + description: "An integer either 0 or 1 indicating if cookie banner setting should be enabled or disabled, 0 for setting the value to disabled, 1 for enabling the setting with the value reject_all." + feature-setting-value-pbm: + description: "An integer either 0 or 1 indicating if cookie banner setting should be enabled or disabled, 0 for setting the value to disabled, 1 for enabling the setting with the value reject_all." + feature-ui: + description: "An integer either 0 or 1 indicating if the UI for cookie banner handling should be visible, 0 to hide the UI and 1 to show the UI. The actual UI is composed by cookie banner section in the settings page, the toolbar section and the re-engagement dialog." + HomeScreenSection: + description: The identifiers for the sections of the homescreen. + variants: + bookmarks: + description: The sites the user has bookmarked. + jump-back-in: + description: The tabs the user was looking immediately before being interrupted. + pocket: + description: The pocket section. This should only be available in the US. + pocket-sponsored-stories: + description: Subsection of the Pocket homescreen section which shows sponsored stories. + recent-explorations: + description: The tab groups + top-sites: + description: The frecency and pinned sites. + MR2022Section: + description: The identifiers for the sections of the MR 2022. + variants: + home-onboarding-dialog-existing-users: + description: Home onboarding dialog for upgraded users. + jump-back-in-cfr: + description: Jump back-in onboarding message. + sync-cfr: + description: CFR for the first time you see a synced tab on the home screen. + tcp-cfr: + description: CFR for the first time you use the browse with Total Cookie Protection on the browser screen. + tcp-feature: + description: Controls the Total Cookie Protection feature. + wallpapers-selection-tool: + description: Wallpapers selection dialog tool for the home screen. + OnboardingCardType: + description: An enum to describe a type of card. + variants: + add-ons: + description: Allows user to install add-ons from onboarding. + add-search-widget: + description: Allows user to add search widget to homescreen. + default-browser: + description: Allows user to set Firefox as the default browser. + notification-permission: + description: Allows user to enable notification permission. + sync-sign-in: + description: Allows user to sync with a Firefox account. + OnboardingPanel: + description: The types of onboarding panels in the onboarding page + variants: + privacy-notice: + description: The onboarding panel where users can tap to view our privacy notice. + sync: + description: The onboarding panel where users can sign in to sync + tcp: + description: The onboarding panel where users can choose their total cookie protection settings + themes: + description: The themes onboarding panel where users pick themes + toolbar-placement: + description: The onboarding panel where users choose their toolbar placement (bottom or top) + QueryParameterStrippingSection: + description: The identifiers for the options for the Query Parameter Stripping feature. + variants: + query-parameter-stripping: + description: "An integer either 0 or 1 indicating if query parameter stripping should be enabled or disabled in normal mode. 0 for setting to be disabled, and 1 for enabling the setting." + query-parameter-stripping-allow-list: + description: An string separated by commas indicating the sites where should from query stripping should be exempted. + query-parameter-stripping-pmb: + description: "An integer either 0 or 1 indicating if query parameter stripping should be enabled or disabled in private mode. 0 for setting to be disabled, and 1 for enabling the setting." + query-parameter-stripping-strip-list: + description: An string separated by commas indicating the list of query params to be stripped from URIs. This list will be merged with records coming from RemoteSettings. + SuggestionType: + description: The type of a Firefox Suggest search suggestion. + variants: + amp: + description: A Firefox Suggestion from adMarketplace. + ampMobile: + description: A firefox Suggestion from adMarketplace specifically for mobile. + wikipedia: + description: A Firefox Suggestion for a Wikipedia page. +objects: + AddOnData: + description: An object to describe an add-on to be installed from the onboarding card. + fields: + average-rating: + description: The average rating of the add-on. + type: String + default: "0.0" + description: + description: A small description of the add-on to be displayed to the user. + type: Text + default: "" + icon-res: + description: The resource id of the icon of the add-on to be displayed. + type: Image + default: ic_onboarding_welcome + id: + description: The identifier for this add-on. + type: Text + default: "" + install-url: + description: The url from where the add-on can be installed. + type: Text + default: "" + name: + description: The name of the add-on to be displayed to the user. + type: Text + default: "" + review-count: + description: The amount of reviews the add-on has. + type: String + default: "0.0" + ExtraCardData: + description: "Holds data for cards that require additional data, e.g. add-ons, toolbar placement cards." + fields: + add-ons-data: + description: "An optional list of add-ons which will be shown in add-on onboarding card.\n" + type: List + default: [] + MessageData: + description: "An object to describe a message. It uses human readable strings to describe the triggers, action and style of the message as well as the text of the message and call to action.\n" + fields: + action: + description: "A URL of a page or a deeplink. This may have substitution variables in.\n" + type: ActionName + default: OPEN_URL + action-params: + description: "A string map containing query parameters that will be appended to the action URL. This is useful for opening URLs in tabs, or specifying that the tab should be private. The values may have substitutions, e.g. \"url\": \"https://example.com/id={uuid}\", \"private\": \"true\".\nThe params and their values are all determined downstream of the messaging component, by the embedding app's deeplink processing machinery.\n" + type: "Map" + default: {} + button-label: + description: "The text on the button. If no text is present, the whole message is clickable.\n" + type: Option + default: ~ + exclude-if-any: + description: "A list of strings corresponding to targeting expressions. The message will not be shown if any of the expressions are `true`.\n" + type: List + default: [] + experiment: + description: The slug of the experiment that this message came from. + type: Option + default: ~ + is-control: + description: "Indicates if this message is the control message, if true shouldn't be displayed" + type: Boolean + default: false + microsurvey-config: + description: Optional configuration data for a microsurvey. + type: Option + default: ~ + style: + description: "The style as described in a `StyleData` from the styles table.\n" + type: StyleName + default: DEFAULT + surface: + description: The surface identifier for this message. + type: SurfaceName + default: homescreen + text: + description: The message text displayed to the user + type: Text + default: "" + title: + description: The title text displayed to the user + type: Option + default: ~ + trigger-if-all: + description: "A list of strings corresponding to targeting expressions. The message will be shown if all expressions are `true`.\n" + type: List + default: [] + MicrosurveyAnswer: + description: Attributes relating to microsurvey content. + fields: + ordering: + description: "Used to sequence the answers top to bottom. E.g. 0 will be the first/top item, 1 will be next and so on. Always set either ALL the provided answers ordering or NONE. If ALL answers are default, the the ordering used will be the same as provided by the experiment.\n" + type: Int + default: 0 + text: + description: The text for the answer. + type: Text + default: "" + MicrosurveyConfig: + description: Attributes relating to microsurvey content. + fields: + answers: + description: "The list of answers to present to the user e.g. \"Satisfied, Dissatisfied...\"." + type: List + default: [] + icon: + description: The icon shown in the survey. + type: Option + default: ~ + utm-content: + description: "Optional \"utm_content\" parameter for the privacy notice URL to specify the feature being surveyed." + type: Option + default: ~ + NotificationConfig: + description: Attributes controlling the global configuration of notification messages. + fields: + refresh-interval: + description: "How often, in minutes, the notification message worker will wake up and check for new messages.\n" + type: Int + default: 240 + OnboardingCardData: + description: An object to describe a user facing onboarding card. + fields: + body: + description: The message text displayed to the user. May contain linkable text. + type: Text + default: "" + card-type: + description: The type of the card. + type: OnboardingCardType + default: default-browser + disqualifiers: + description: "A list of strings corresponding to targeting expressions. The card will not be shown if any expression is `true`.\n" + type: List + default: + - NEVER + enabled: + description: "If true, this card is shown to the user." + type: Boolean + default: true + extra-data: + description: Optional extra data for cards that require additional data. + type: Option + default: ~ + image-res: + description: The resource id of the image to be displayed. + type: Image + default: ic_onboarding_welcome + ordering: + description: Used to sequence the cards. + type: Int + default: 0 + prerequisites: + description: "A list of strings corresponding to targeting expressions. The card will be shown if all expressions are `true` and if no expressions in the `disqualifiers` table are true, or if the `disqualifiers` table is empty.\n" + type: List + default: + - ALWAYS + primary-button-label: + description: The text to display on the primary button. + type: Text + default: "" + secondary-button-label: + description: The text to display on the secondary button. + type: Text + default: "" + title: + description: The title text displayed to the user. + type: Text + default: "" + StyleData: + description: "A group of properties (predominantly visual) to describe the style of the message.\n" + fields: + max-display-count: + description: "How many sessions will this message be shown to the user before it is expired.\n" + type: Int + default: 5 + priority: + description: "The importance of this message. 0 is not very important, 100 is very important.\n" + type: Int + default: 50 diff --git a/experimenter/experimenter/features/manifests/fenix/v134.0.2/release.fml.yaml b/experimenter/experimenter/features/manifests/fenix/v134.0.2/release.fml.yaml new file mode 100644 index 0000000000..05901352a7 --- /dev/null +++ b/experimenter/experimenter/features/manifests/fenix/v134.0.2/release.fml.yaml @@ -0,0 +1,936 @@ +--- +version: 1.0.0 +about: + description: Nimbus Feature Manifest for Fenix (Firefox Android) +channels: + - release +features: + alternative-app-launcher-icon: + description: A feature that changes the app launcher icon background color. + variables: + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + reset-to-default: + description: "If true use the default icon, if false use the alternative icon. This is required to 'reset' the icon for enrolled users once the initial experiment is complete.\n" + type: Boolean + default: false + awesomebar-suggestion-provider: + description: Configuration for the Firefox Suggest awesomebar suggestion provider. + variables: + available-suggestion-types: + description: "A map of suggestion types to booleans that indicate whether or not the provider should return suggestions of those types.\n" + type: "Map" + default: + amp: true + ampMobile: false + wikipedia: true + bookmarks: + description: Feature for Bookmarks + variables: + new-compose-ui: + description: "if true, enable new compose based UI" + type: Boolean + default: false + cookie-banners: + description: Features for cookie banner handling. + variables: + sections-enabled: + description: This property provides a lookup table of whether or not the given section should be enabled. + type: "Map" + default: + feature-ui: 0 + feature-setting-value: 0 + feature-setting-value-pbm: 0 + feature-setting-detect-only: 0 + feature-setting-global-rules: 1 + feature-setting-global-rules-sub-frames: 1 + fingerprinting-protection: + description: Control Fingerprinting Protection + variables: + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + enabled-normal: + description: "Enables / disables fingerprinting protection in normal browsing mode.\n" + type: Boolean + default: false + enabled-private: + description: "Enables / disables fingerprinting protection in private browsing mode.\n" + type: Boolean + default: true + fdlibm-math: + description: "Uses a different math backend for Math.sin/cos/tan in JavaScript that exposes less entropy\n" + type: Boolean + default: false + overrides: + description: "The protection overrides to add or remove fingerprinting protection targets. Please check RFPTargets.inc for all supported targets.\n" + type: String + default: "" + fission: + description: The feature that controls whether fission is enabled or not in Gecko. + variables: + enabled: + description: "Whether or not to enable fission. Fission is enabled when set to true. Fission is disabled when set to false.\n" + type: Boolean + default: false + fx-suggest: + description: A feature that provides Firefox Suggest search suggestions. + variables: + boost-amp-wiki: + description: "The feature boost wiki and AMP suggestions to the top of its group.\n" + type: Boolean + default: false + enabled: + description: "Whether the feature is enabled. When Firefox Suggest is enabled, Firefox will download and store new search suggestions in the background, and show additional Search settings to control which suggestions appear in the awesomebar. When Firefox Suggest is disabled, Firefox will not download new suggestions, and hide the additional Search settings.\n" + type: Boolean + default: false + glean: + description: A feature that provides server-side configurations for Glean metrics (aka Server Knobs). + variables: + delay-ping-lifetime-io: + description: Glean will delay io for ping lifetime metrics + type: Boolean + default: true + enable-event-timestamps: + description: Enables precise event timestamps for Glean events + type: Boolean + default: true + metrics-enabled: + description: "A map of metric base-identifiers to booleans representing the state of the 'enabled' flag for that metric." + type: "Map" + default: {} + ping-lifetime-max-time: + description: After what time to auto-flush + type: Int + default: 2000 + ping-lifetime-threshold: + description: Write count threshold when to auto-flush + type: Int + default: 1000 + allow-coenrollment: true + growth-data: + description: A feature measuring campaign growth data + variables: + enabled: + description: "If true, the feature is active" + type: Boolean + default: true + homescreen: + description: The homescreen that the user goes to when they press home or new tab. + variables: + sections-enabled: + description: "This property provides a lookup table of whether or not the given section should be enabled. If the section is enabled, it should be toggleable in the settings screen, and on by default." + type: "Map" + default: + top-sites: true + jump-back-in: true + bookmarks: true + recent-explorations: true + pocket: true + pocket-sponsored-stories: true + javascript: + description: Enables Javascript Engine (Spidermonkey) features + variables: + parallelMarkingEnabled: + description: "Enables or disables javascript.options.mem.gc_parallel_marking preference.\n" + type: Boolean + default: false + juno-onboarding: + description: A feature that shows the onboarding flow. + variables: + cards: + description: Collection of user facing onboarding cards. + type: "Map" + default: + default-browser: + body: juno_onboarding_default_browser_description_nimbus_3 + card-type: default-browser + disqualifiers: + - NEVER + enabled: true + extra-data: ~ + image-res: ic_onboarding_welcome + ordering: 10 + prerequisites: + - ALWAYS + primary-button-label: juno_onboarding_default_browser_positive_button + secondary-button-label: juno_onboarding_default_browser_negative_button + title: juno_onboarding_default_browser_title_nimbus_2 + add-search-widget: + body: juno_onboarding_add_search_widget_description + card-type: add-search-widget + disqualifiers: + - NEVER + enabled: true + extra-data: ~ + image-res: ic_onboarding_search_widget + ordering: 15 + prerequisites: + - ALWAYS + primary-button-label: juno_onboarding_add_search_widget_positive_button + secondary-button-label: juno_onboarding_add_search_widget_negative_button + title: juno_onboarding_add_search_widget_title + sync-sign-in: + body: juno_onboarding_sign_in_description_3 + card-type: sync-sign-in + disqualifiers: + - NEVER + enabled: true + extra-data: ~ + image-res: ic_onboarding_sync + ordering: 20 + prerequisites: + - ALWAYS + primary-button-label: juno_onboarding_sign_in_positive_button + secondary-button-label: juno_onboarding_sign_in_negative_button + title: juno_onboarding_sign_in_title_2 + notification-permission: + body: juno_onboarding_enable_notifications_description_nimbus_2 + card-type: notification-permission + disqualifiers: + - NEVER + enabled: true + extra-data: ~ + image-res: ic_notification_permission + ordering: 30 + prerequisites: + - ALWAYS + primary-button-label: juno_onboarding_enable_notifications_positive_button + secondary-button-label: juno_onboarding_enable_notifications_negative_button + title: juno_onboarding_enable_notifications_title_nimbus_2 + string-alias: OnboardingCardKey + conditions: + description: "A collection of out the box conditional expressions to be used in determining whether a card should show or not. Each entry maps to a valid JEXL expression.\n" + type: "Map" + default: + ALWAYS: "true" + NEVER: "false" + string-alias: ConditionName + menu-redesign: + description: Control the new menu redesign. + variables: + enabled: + description: "If true, the new menu redesign is available." + type: Boolean + default: false + report-site-issue: + description: "If true, report site issue menu item and preview is available." + type: Boolean + default: false + messaging: + description: "The in-app messaging system.\n" + variables: + $$experiment: + description: "The only acceptable value for `MessageData#experiment`. This should not be set by experiment." + type: ExperimentSlug + default: "{experiment}" + string-alias: ExperimentSlug + $$surfaces: + description: "A list available surfaces for this app.\n\nThis should not be written to by experiments, and should be hidden to users.\n" + type: List + default: + - homescreen + - notification + - survey + - microsurvey + string-alias: SurfaceName + actions: + description: A growable map of action URLs. + type: "Map" + default: + OPEN_URL: "://open" + ENABLE_PRIVATE_BROWSING: "://enable_private_browsing" + INSTALL_SEARCH_WIDGET: "://install_search_widget" + MAKE_DEFAULT_BROWSER: "://make_default_browser" + VIEW_BOOKMARKS: "://urls_bookmarks" + VIEW_COLLECTIONS: "://home_collections" + VIEW_HISTORY: "://urls_history" + VIEW_HOMESCREEN: "://home" + OPEN_SETTINGS_ACCESSIBILITY: "://settings_accessibility" + OPEN_SETTINGS_ADDON_MANAGER: "://settings_addon_manager" + OPEN_SETTINGS_DELETE_BROWSING_DATA: "://settings_delete_browsing_data" + OPEN_SETTINGS_LOGINS: "://settings_logins" + OPEN_SETTINGS_NOTIFICATIONS: "://settings_notifications" + OPEN_SETTINGS_PRIVACY: "://settings_privacy" + OPEN_SETTINGS_SEARCH_ENGINE: "://settings_search_engine" + OPEN_SETTINGS_TRACKING_PROTECTION: "://settings_tracking_protection" + OPEN_SETTINGS_WALLPAPERS: "://settings_wallpapers" + OPEN_SETTINGS: "://settings" + OPEN_SHARE_SHEET: "://share_sheet" + TURN_ON_SYNC: "://turn_on_sync" + string-alias: ActionName + message-under-experiment: + description: "Deprecated in favor of `MessageData#experiment`. This will be removed in future releases." + type: Option + default: ~ + messages: + description: A growable collection of messages + type: "Map" + default: + default-browser: + title: default_browser_experiment_card_title + text: default_browser_experiment_card_text + surface: homescreen + action: MAKE_DEFAULT_BROWSER + trigger-if-all: + - USER_ESTABLISHED_INSTALL + - ANDROID_API_BELOW_29 + exclude-if-any: + - I_AM_DEFAULT_BROWSER + style: PERSISTENT + button-label: preferences_set_as_default_browser + default-browser-notification: + title: nimbus_notification_default_browser_title + text: nimbus_notification_default_browser_text + surface: notification + style: NOTIFICATION + trigger-if-all: + - DAY_3_AFTER_INSTALL + exclude-if-any: + - I_AM_DEFAULT_BROWSER + action: MAKE_DEFAULT_BROWSER + string-alias: MessageKey + notification-config: + description: Configuration of the notification worker for all notification messages. + type: NotificationConfig + default: + refresh-interval: 240 + on-control: + description: What should be displayed when a control message is selected. + type: ControlMessageBehavior + default: show-next-message + styles: + description: "A map of styles to configure message appearance.\n" + type: "Map" + default: + DEFAULT: + priority: 50 + max-display-count: 5 + SURVEY: + priority: 55 + max-display-count: 1 + PERSISTENT: + priority: 50 + max-display-count: 20 + WARNING: + priority: 60 + max-display-count: 10 + URGENT: + priority: 100 + max-display-count: 10 + NOTIFICATION: + priority: 50 + max-display-count: 1 + MICROSURVEY: + priority: 50 + max-display-count: 5 + string-alias: StyleName + triggers: + description: "A collection of out the box trigger expressions. Each entry maps to a valid JEXL expression.\n" + type: "Map" + default: + USER_ESTABLISHED_INSTALL: number_of_app_launches >=4 + ANDROID_API_BELOW_29: android_version < 29 + USER_RECENTLY_INSTALLED: days_since_install < 7 + USER_RECENTLY_UPDATED: days_since_update < 7 && days_since_install != days_since_update + USER_TIER_ONE_COUNTRY: "('US' in locale || 'GB' in locale || 'CA' in locale || 'DE' in locale || 'FR' in locale)" + USER_EN_SPEAKER: "'en' in locale" + USER_ES_SPEAKER: "'es' in locale" + USER_DE_SPEAKER: "'de' in locale" + USER_FR_SPEAKER: "'fr' in locale" + DEVICE_ANDROID: "os == 'Android'" + DEVICE_IOS: "os == 'iOS'" + ALWAYS: "true" + NEVER: "false" + DAY_1_AFTER_INSTALL: days_since_install == 1 + DAY_2_AFTER_INSTALL: days_since_install == 2 + DAY_3_AFTER_INSTALL: days_since_install == 3 + DAY_4_AFTER_INSTALL: days_since_install == 4 + DAY_5_AFTER_INSTALL: days_since_install == 5 + MORE_THAN_24H_SINCE_INSTALLED_OR_UPDATED: days_since_update >= 1 + I_AM_DEFAULT_BROWSER: is_default_browser + I_AM_NOT_DEFAULT_BROWSER: is_default_browser == false + FUNNEL_PAID: "adjust_campaign != ''" + FUNNEL_ORGANIC: "adjust_campaign == ''" + INACTIVE_1_DAY: "'app_launched'|eventLastSeen('Hours') >= 24" + INACTIVE_2_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 2" + INACTIVE_3_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 3" + INACTIVE_4_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 4" + INACTIVE_5_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 5" + RECENTLY_PRINTED: "'print_tapped'|eventLastSeen('Hours') <= 24" + SECOND_HOMEPAGE_VIEW: "'home_screen_displayed'|eventSum('Years', 4, 0) >= 2" + PERFORMED_A_SEARCH_AGAIN_RECENTLY: "'performed_search'|eventSum('Years', 4, 0) >= 2 && 'performed_search'|eventLastSeen('Minutes') < 1" + FXA_CURRENTLY_SIGNED_IN: is_fxa_signed_in == true + FXA_MORE_THAN_1_DEVICE: fxa_connected_devices > 1 + FXA_SIGNED_IN: "'sync_auth.sign_in'|eventLastSeen('Years', 0) <= 4" + FXA_NOT_SIGNED_IN: "'sync_auth.sign_in'|eventLastSeen('Years', 0) > 4" + USER_INFREQUENT: "'app_launched'|eventCountNonZero('Days', 28) >= 1 && 'app_launched'|eventCountNonZero('Days', 28) < 7" + USER_CASUAL: "'app_launched'|eventCountNonZero('Days', 28) >= 7 && 'app_launched'|eventCountNonZero('Days', 28) < 14" + USER_REGULAR: "'app_launched'|eventCountNonZero('Days', 28) >= 14 && 'app_launched'|eventCountNonZero('Days', 28) < 21" + USER_CORE_ACTIVE: "'app_launched'|eventCountNonZero('Days', 28) >= 21" + LAUNCHED_ONCE_THIS_WEEK: "'app_launched'|eventSum('Days', 7) == 1" + string-alias: TriggerName + allow-coenrollment: true + microsurveys: + description: Feature for microsurveys. + variables: + enabled: + description: "When the feature is enabled then microsurveys can be used.\n" + type: Boolean + default: true + mr2022: + description: Features for MR 2022. + variables: + sections-enabled: + description: This property provides a lookup table of whether or not the given section should be enabled. + type: "Map" + default: + home-onboarding-dialog-existing-users: true + sync-cfr: true + wallpapers-selection-tool: true + jump-back-in-cfr: true + tcp-cfr: true + tcp-feature: true + navigation-toolbar: + description: Feature for navigation toolbar. + variables: + enabled: + description: "When the feature is enabled then the user will see the new navigation toolbar.\n" + type: Boolean + default: false + networking: + description: Enables networking features + variables: + fetchPriorityEnabled: + description: "Enables or disables network.fetchpriority.enabled preference.\n" + type: Boolean + default: true + nimbus-is-ready: + description: "A feature that provides the number of Nimbus is_ready events to send when Nimbus finishes launching.\n" + variables: + event-count: + description: The number of events that should be sent. + type: Int + default: 1 + nimbus-system: + description: "Configuration of the Nimbus System in Android.\n" + variables: + refresh-interval-foreground: + description: "The minimum interval in minutes between fetching experiment\nrecipes in the foreground.\n" + type: Int + default: 60 + nimbus-validation: + description: A feature that does not correspond to an application feature suitable for showing that Nimbus is working. This should never be used in production. + variables: + settings-icon: + description: The drawable displayed in the app menu for Settings + type: String + default: mozac_ic_settings + settings-punctuation: + description: The emoji displayed in the Settings screen title. + type: String + default: "" + settings-title: + description: The title of displayed in the Settings screen and app menu. + type: Text + default: browser_menu_settings + onboarding: + description: "A feature that configures the new user onboarding page. Note that onboarding is a **first run** feature, and should only be modified by first run experiments." + variables: + order: + description: Determines the order of the onboarding page panels + type: List + default: + - themes + - toolbar-placement + - sync + - tcp + - privacy-notice + one-click-search: + description: Enable/disable the one click search feature. + variables: + enabled: + description: "If true, the one click search will be enabled." + type: Boolean + default: false + pdfjs: + description: PDF.js features + variables: + download-button: + description: Download button + type: Boolean + default: true + open-in-app-button: + description: Open in app button + type: Boolean + default: true + print: + description: A feature for printing from the share or browser menu. + variables: + browser-print-enabled: + description: "If true, a print button from the browser menu is available." + type: Boolean + default: true + share-print-enabled: + description: "If true, a print button from the share menu is available." + type: Boolean + default: true + private-browsing: + description: Private Browsing Mode + variables: + felt-privacy-enabled: + description: "if true, enable felt privacy related UI" + type: Boolean + default: false + query-parameter-stripping: + description: Features for query parameter stripping. + variables: + sections-enabled: + description: This property provides a lookup table of whether or not the given section should be enabled. + type: "Map" + default: + query-parameter-stripping: "0" + query-parameter-stripping-pmb: "0" + query-parameter-stripping-allow-list: "" + query-parameter-stripping-strip-list: "" + re-engagement-notification: + description: A feature that shows the re-engagement notification if the user is inactive. + variables: + enabled: + description: "If true, the re-engagement notification is shown to the inactive user." + type: Boolean + default: false + type: + description: The type of re-engagement notification that is shown to the inactive user. + type: Int + default: 0 + remote-tab-management: + description: "Features that let users manage tabs on other devices that are connected to the same Mozilla account.\n" + variables: + close-tabs-enabled: + description: "Whether the feature to close synced tabs is enabled. When enabled, this device will allow other devices to close tabs that are open on this device, and show a \"close\" button for tabs that are currently open on other supported devices in the synced tabs tray.\n" + type: Boolean + default: true + search-extra-params: + description: A feature that provides additional args for search. + variables: + channel-id: + description: The channel Id param name with arg. + type: "Map" + default: {} + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + feature-enabler: + description: "The feature enabler param name with arg, NOTE this map could be empty." + type: "Map" + default: {} + search-engine: + description: The search engine name. + type: String + default: "" + search-term-groups: + description: A feature allowing the grouping of URLs around the search term that it came from. + variables: + enabled: + description: "If true, the feature shows up on the homescreen and on the new tab screen." + type: Boolean + default: false + set-as-default-prompt: + description: "Displays native default browser prompt to existing users.\n" + variables: + app-cold-starts-between-prompts: + description: "Minimum number of app cold starts before the next prompt should be displayed to the user.\n" + type: Int + default: 4 + days-between-prompts: + description: "Minimum number of days between displays of Set as default prompt.\n" + type: Int + default: 14 + enabled: + description: "When the feature is enabled then the Set as default prompt can be triggered for existing users.\n" + type: Boolean + default: true + max-number-of-times-to-display: + description: "Maximum number of time the prompt should be displayed.\n" + type: Int + default: 3 + ship: + description: The feature that controls Session History in Parent (SHIP) in Gecko. + variables: + disabled: + description: "Whether or not to disable SHIP. SHIP is enabled when set to false. SHIP is disabled when set to true.\n" + type: Boolean + default: true + shopping-experience: + description: A feature that shows product review quality information. + variables: + enabled: + description: "if true, the shopping experience feature is shown to the user." + type: Boolean + default: false + product-recommendations: + description: "if true, recommended products feature is enabled to be shown to the user based on their preference." + type: Boolean + default: false + product-recommendations-exposure: + description: "if true, we want to record recommended products inventory for opted-in users, even if product recommendations are disabled." + type: Boolean + default: false + splash-screen: + description: "A feature that extends splash screen duration, allowing additional data fetching time for the app's initial run." + variables: + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + maximum_duration_ms: + description: The maximum amount of time in milliseconds the splashscreen will be visible while waiting for initialization calls to complete. + type: Int + default: 0 + suggest-shipped-domains: + description: Feature that suggests domains from the shipped domain list. + variables: + enabled: + description: "Suggest domains from the shipped domain list.\n" + type: Boolean + default: true + third-party-cookie-blocking: + description: Control third-party cookie blocking. + variables: + enabled: + description: "If true, the feature is active." + type: Boolean + default: false + enabled-normal: + description: "Enables / disables third-party cookie blocking in normal browsing mode.\n" + type: Boolean + default: false + enabled-private: + description: "Enables / disables third-party cookie blocking in private browsing mode.\n" + type: Boolean + default: true + translations: + description: The feature that allows on-device translations of web content. + variables: + downloads-enabled: + description: "Show the global language model download options entry point for translations. ('Download languages' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + global-lang-settings-enabled: + description: "Show the global language options entry point for automatically translating. ('Automatic Translation' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + global-settings-enabled: + description: "Show the global settings entry point within the translations feature. ('Translation Settings' on the page settings view.) 'page-settings-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + global-site-settings-enabled: + description: "Show the global never translate this site options entry point for site management. ('Never translate these sites' on the global settings view.) 'global-settings-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + main-flow-browser-menu-enabled: + description: "Show the browser menu entry point into the translations feature. ('Translate Page' on browser menu.)\n" + type: Boolean + default: true + main-flow-toolbar-enabled: + description: "Show the primary toolbar entry point into the translations feature. (Translations icon on URL toolbar.)\n" + type: Boolean + default: true + page-settings-enabled: + description: "Show the page settings entry point within the translations feature. (Gear icon on the translations main flow page.) 'main-flow-toolbar-enabled' or 'main-flow-browser-menu-enabled' must also be enabled for users to access this feature.\n" + type: Boolean + default: true + user-characteristics: + description: A feature for control user characteristic data collection + variables: + currentVersion: + description: The current collection version of the user characteristics. + type: Int + default: 0 +enums: + ControlMessageBehavior: + description: An enum to influence what should be displayed when a control message is selected. + variants: + show-next-message: + description: The next eligible message should be shown. + show-none: + description: The surface should show no message. + CookieBannersSection: + description: The identifiers for the sections of the MR 2022. + variants: + feature-setting-detect-only: + description: "An integer either 0 or 1 indicating if cookie banner detect only mode should be enabled or disabled. 0 for setting to be disabled, and 1 for enabling the setting." + feature-setting-global-rules: + description: "An integer either 0 or 1 indicating if cookie banner global rules should be enabled or disabled. 0 for setting to be disabled, and 1 for enabling the setting." + feature-setting-global-rules-sub-frames: + description: "An integer either 0 or 1 indicating if cookie banner global rules sub-frames should be enabled or disabled. 0 for setting to be disabled, and 1 for enabling the setting." + feature-setting-value: + description: "An integer either 0 or 1 indicating if cookie banner setting should be enabled or disabled, 0 for setting the value to disabled, 1 for enabling the setting with the value reject_all." + feature-setting-value-pbm: + description: "An integer either 0 or 1 indicating if cookie banner setting should be enabled or disabled, 0 for setting the value to disabled, 1 for enabling the setting with the value reject_all." + feature-ui: + description: "An integer either 0 or 1 indicating if the UI for cookie banner handling should be visible, 0 to hide the UI and 1 to show the UI. The actual UI is composed by cookie banner section in the settings page, the toolbar section and the re-engagement dialog." + HomeScreenSection: + description: The identifiers for the sections of the homescreen. + variants: + bookmarks: + description: The sites the user has bookmarked. + jump-back-in: + description: The tabs the user was looking immediately before being interrupted. + pocket: + description: The pocket section. This should only be available in the US. + pocket-sponsored-stories: + description: Subsection of the Pocket homescreen section which shows sponsored stories. + recent-explorations: + description: The tab groups + top-sites: + description: The frecency and pinned sites. + MR2022Section: + description: The identifiers for the sections of the MR 2022. + variants: + home-onboarding-dialog-existing-users: + description: Home onboarding dialog for upgraded users. + jump-back-in-cfr: + description: Jump back-in onboarding message. + sync-cfr: + description: CFR for the first time you see a synced tab on the home screen. + tcp-cfr: + description: CFR for the first time you use the browse with Total Cookie Protection on the browser screen. + tcp-feature: + description: Controls the Total Cookie Protection feature. + wallpapers-selection-tool: + description: Wallpapers selection dialog tool for the home screen. + OnboardingCardType: + description: An enum to describe a type of card. + variants: + add-ons: + description: Allows user to install add-ons from onboarding. + add-search-widget: + description: Allows user to add search widget to homescreen. + default-browser: + description: Allows user to set Firefox as the default browser. + notification-permission: + description: Allows user to enable notification permission. + sync-sign-in: + description: Allows user to sync with a Firefox account. + OnboardingPanel: + description: The types of onboarding panels in the onboarding page + variants: + privacy-notice: + description: The onboarding panel where users can tap to view our privacy notice. + sync: + description: The onboarding panel where users can sign in to sync + tcp: + description: The onboarding panel where users can choose their total cookie protection settings + themes: + description: The themes onboarding panel where users pick themes + toolbar-placement: + description: The onboarding panel where users choose their toolbar placement (bottom or top) + QueryParameterStrippingSection: + description: The identifiers for the options for the Query Parameter Stripping feature. + variants: + query-parameter-stripping: + description: "An integer either 0 or 1 indicating if query parameter stripping should be enabled or disabled in normal mode. 0 for setting to be disabled, and 1 for enabling the setting." + query-parameter-stripping-allow-list: + description: An string separated by commas indicating the sites where should from query stripping should be exempted. + query-parameter-stripping-pmb: + description: "An integer either 0 or 1 indicating if query parameter stripping should be enabled or disabled in private mode. 0 for setting to be disabled, and 1 for enabling the setting." + query-parameter-stripping-strip-list: + description: An string separated by commas indicating the list of query params to be stripped from URIs. This list will be merged with records coming from RemoteSettings. + SuggestionType: + description: The type of a Firefox Suggest search suggestion. + variants: + amp: + description: A Firefox Suggestion from adMarketplace. + ampMobile: + description: A firefox Suggestion from adMarketplace specifically for mobile. + wikipedia: + description: A Firefox Suggestion for a Wikipedia page. +objects: + AddOnData: + description: An object to describe an add-on to be installed from the onboarding card. + fields: + average-rating: + description: The average rating of the add-on. + type: String + default: "0.0" + description: + description: A small description of the add-on to be displayed to the user. + type: Text + default: "" + icon-res: + description: The resource id of the icon of the add-on to be displayed. + type: Image + default: ic_onboarding_welcome + id: + description: The identifier for this add-on. + type: Text + default: "" + install-url: + description: The url from where the add-on can be installed. + type: Text + default: "" + name: + description: The name of the add-on to be displayed to the user. + type: Text + default: "" + review-count: + description: The amount of reviews the add-on has. + type: String + default: "0.0" + ExtraCardData: + description: "Holds data for cards that require additional data, e.g. add-ons, toolbar placement cards." + fields: + add-ons-data: + description: "An optional list of add-ons which will be shown in add-on onboarding card.\n" + type: List + default: [] + MessageData: + description: "An object to describe a message. It uses human readable strings to describe the triggers, action and style of the message as well as the text of the message and call to action.\n" + fields: + action: + description: "A URL of a page or a deeplink. This may have substitution variables in.\n" + type: ActionName + default: OPEN_URL + action-params: + description: "A string map containing query parameters that will be appended to the action URL. This is useful for opening URLs in tabs, or specifying that the tab should be private. The values may have substitutions, e.g. \"url\": \"https://example.com/id={uuid}\", \"private\": \"true\".\nThe params and their values are all determined downstream of the messaging component, by the embedding app's deeplink processing machinery.\n" + type: "Map" + default: {} + button-label: + description: "The text on the button. If no text is present, the whole message is clickable.\n" + type: Option + default: ~ + exclude-if-any: + description: "A list of strings corresponding to targeting expressions. The message will not be shown if any of the expressions are `true`.\n" + type: List + default: [] + experiment: + description: The slug of the experiment that this message came from. + type: Option + default: ~ + is-control: + description: "Indicates if this message is the control message, if true shouldn't be displayed" + type: Boolean + default: false + microsurvey-config: + description: Optional configuration data for a microsurvey. + type: Option + default: ~ + style: + description: "The style as described in a `StyleData` from the styles table.\n" + type: StyleName + default: DEFAULT + surface: + description: The surface identifier for this message. + type: SurfaceName + default: homescreen + text: + description: The message text displayed to the user + type: Text + default: "" + title: + description: The title text displayed to the user + type: Option + default: ~ + trigger-if-all: + description: "A list of strings corresponding to targeting expressions. The message will be shown if all expressions are `true`.\n" + type: List + default: [] + MicrosurveyAnswer: + description: Attributes relating to microsurvey content. + fields: + ordering: + description: "Used to sequence the answers top to bottom. E.g. 0 will be the first/top item, 1 will be next and so on. Always set either ALL the provided answers ordering or NONE. If ALL answers are default, the the ordering used will be the same as provided by the experiment.\n" + type: Int + default: 0 + text: + description: The text for the answer. + type: Text + default: "" + MicrosurveyConfig: + description: Attributes relating to microsurvey content. + fields: + answers: + description: "The list of answers to present to the user e.g. \"Satisfied, Dissatisfied...\"." + type: List + default: [] + icon: + description: The icon shown in the survey. + type: Option + default: ~ + utm-content: + description: "Optional \"utm_content\" parameter for the privacy notice URL to specify the feature being surveyed." + type: Option + default: ~ + NotificationConfig: + description: Attributes controlling the global configuration of notification messages. + fields: + refresh-interval: + description: "How often, in minutes, the notification message worker will wake up and check for new messages.\n" + type: Int + default: 240 + OnboardingCardData: + description: An object to describe a user facing onboarding card. + fields: + body: + description: The message text displayed to the user. May contain linkable text. + type: Text + default: "" + card-type: + description: The type of the card. + type: OnboardingCardType + default: default-browser + disqualifiers: + description: "A list of strings corresponding to targeting expressions. The card will not be shown if any expression is `true`.\n" + type: List + default: + - NEVER + enabled: + description: "If true, this card is shown to the user." + type: Boolean + default: true + extra-data: + description: Optional extra data for cards that require additional data. + type: Option + default: ~ + image-res: + description: The resource id of the image to be displayed. + type: Image + default: ic_onboarding_welcome + ordering: + description: Used to sequence the cards. + type: Int + default: 0 + prerequisites: + description: "A list of strings corresponding to targeting expressions. The card will be shown if all expressions are `true` and if no expressions in the `disqualifiers` table are true, or if the `disqualifiers` table is empty.\n" + type: List + default: + - ALWAYS + primary-button-label: + description: The text to display on the primary button. + type: Text + default: "" + secondary-button-label: + description: The text to display on the secondary button. + type: Text + default: "" + title: + description: The title text displayed to the user. + type: Text + default: "" + StyleData: + description: "A group of properties (predominantly visual) to describe the style of the message.\n" + fields: + max-display-count: + description: "How many sessions will this message be shown to the user before it is expired.\n" + type: Int + default: 5 + priority: + description: "The importance of this message. 0 is not very important, 100 is very important.\n" + type: Int + default: 50 diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml b/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml index b005a6b44c..6aac3792f3 100644 --- a/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml @@ -1,5 +1,5 @@ -beta: 9bf021b8cc51a5b58a3002120c1a897755c02f9f -central: 000fac19cadd6513cd37a07e0dc4a357a029ffc1 -esr115: bd4fb4aebf03b8c20f66ba05e5d1b378a51b92ed -esr128: 9ae18a146984c0398f5a3d4813f96f4ef297e232 -release: df45ac03bd6f89c9930c648b0feb4db14868ddc8 +beta: 05abdaa663670b484c696082d5a69ee999f25730 +central: 234c9429e537609d3f10c999f7fc808af688ec3d +esr115: 54237eecf7beefa9390fddbef45941cd844b9db9 +esr128: c2fe3dd80e493387d1f266022f11b30a726f38d8 +release: 2f6aed4fe4581fede29aca4e12d3c3f45cb44d76 diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/v134.0.2/experimenter.yaml b/experimenter/experimenter/features/manifests/firefox-desktop/v134.0.2/experimenter.yaml new file mode 100644 index 0000000000..b24a4d4c0a --- /dev/null +++ b/experimenter/experimenter/features/manifests/firefox-desktop/v134.0.2/experimenter.yaml @@ -0,0 +1,4058 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +# yaml-language-server: $schema=schemas/ExperimentFeatureManifest.schema.json + +# Features must be added here to be accessible through the NimbusFeature API. + +"no-feature-firefox-desktop": + description: A dummy feature for experiments that target no feature. + owner: beth@mozilla.com + applications: + - firefox-desktop + - firefox-desktop-background-task + hasExposure: false + variables: {} + +testFeature: + description: Test only feature + owner: beth@mozilla.com + applications: + - firefox-desktop + - firefox-desktop-background-task + hasExposure: false + isEarlyStartup: true + variables: + enabled: + type: boolean + description: Whether or not this feature is enabled + testInt: + type: int + fallbackPref: nimbus.testing.testInt + description: Int pref used by platform API tests + testSetString: + type: string + setPref: + branch: user + pref: nimbus.testing.testSetString + description: A string pref set by Nimbus tests + +nimbus-qa-1: + description: A feature for testing pref-setting on the default branch. + owner: beth@mozilla.com + hasExposure: false + variables: + value: + type: string + setPref: + branch: default + pref: nimbus.qa.pref-1 + description: The value to set for the pref. + +nimbus-qa-2: + description: A feature for testing pref-setting on the user branch. + owner: beth@mozilla.com + hasExposure: false + variables: + value: + type: string + setPref: + branch: user + pref: nimbus.qa.pref-2 + description: The value to set for the pref. + +# Note: this feature is not for general use. If you want to run an experiment +# that sets prefs, you *must* register your feature in this manifest and specify +# the prefs you will control. +prefFlips: + description: Flip arbitrary prefs. Controlled by release management. + owner: beth@mozilla.com + hasExposure: false + variables: + prefs: + type: json + description: "The prefs to set." + schema: + uri: resource://nimbus/schemas/PrefFlipsFeature.schema.json + path: toolkit/components/nimbus/schemas/PrefFlipsFeature.schema.json + + +# `search` is for search engine experimentation features which do not require +# isEarlyStartup to be set. +search: + description: Search engine experimentation support and testing features. + owner: search-and-suggest-program@mozilla.com + hasExposure: false + variables: + extraParams: + type: json + description: >- + This allows extra parameters to be set for search engines requests including, + where calls to the suggestions API, the search engine configuration defines + those parameters. + + The use of this field should be coordinated with the Search team. + + The field value is an array of objects with key/value fields. For example: + + [ + {"key": "google_channel_row", "value": "foo"} + ] + + This is matched to a section in the search configuration: + + "extraParams": [ + { + "name": "channel", + "pref": "google_channel_row", + "condition": "pref" + } + ], + + In this case, the resulting URL for the appropriate search engine would have + `&channel=foo` added to the URL when doing searches. + + If the key is not referenced in the search configuration, then no parameter + will be added. Only the search team can update the configuration. + logEnabled: + type: boolean + setPref: + branch: default + pref: browser.search.log + description: >- + Whether or not enable search log in their console. + richSuggestionsFeatureGate: + type: boolean + setPref: + branch: default + pref: browser.urlbar.richSuggestions.featureGate + description: >- + Feature gate that controls whether Rich Suggestions are enabled. + scotchBonnetEnableOverride: + type: boolean + setPref: + branch: default + pref: browser.urlbar.scotchBonnet.enableOverride + description: >- + Whether or not enabling scotch bonnet feature. + If this variable is true, the following features are available as default. + * Unified search button + * Secondary action buttons + * Search term persistence + * Intuitive search keywords + * HTTP swap + serpEventTelemetryCategorizationEnabled: + type: boolean + setPref: + branch: default + pref: browser.search.serpEventTelemetryCategorization.enabled + description: Whether the Glean SERP event telemetry for SERP categorization is enabled. + trendingEnabled: + type: boolean + setPref: + branch: default + pref: browser.urlbar.trending.featureGate + description: Feature gate that controls whether trending suggestions are enabled. + trendingRequireSearchMode: + type: boolean + setPref: + branch: default + pref: browser.urlbar.trending.requireSearchMode + description: Controls whether trending suggestions are only shown in search mode or not. + trendingMaxResultsNoSearchMode: + type: int + setPref: + branch: default + pref: browser.urlbar.trending.maxResultsNoSearchMode + description: The maximum number of trending results mode outside search mode. + newSearchConfigEnabled: + type: boolean + setPref: + branch: user + pref: browser.search.newSearchConfig.enabled + description: >- + Whether search-config-v2 is enabled for the user. This will only take + effect when the user restarts. + Obsolete. This is kept until all multi-feature roll-outs using it are + ended to prevent un-enrollment. + targetExperiment: + type: string + description: >- + The slug of the experiment someone is requesting enrollment and branch + information for. (Note that the featureId needs to be set to "search".) + +# `searchConfiguration` is for search experiment features for items that require +# isEarlyStartup to be true. These items may require a reload of the search +# engine configuration, and an additional reload may happen during the startup +# process. +searchConfiguration: + description: Search experimentation support for the engine configuration + owner: search-and-suggest-program@mozilla.com + isEarlyStartup: true + hasExposure: false + variables: + experiment: + type: string + fallbackPref: browser.search.experiment + description: >- + Used to activate only matching configurations that contain the value in + `experiment` + seperatePrivateDefaultUIEnabled: + type: boolean + description: Whether the UI for the separate private default feature is enabled. + seperatePrivateDefaultUrlbarResultEnabled: + type: boolean + description: Whether the urlbar result for the separate private default is shown. + +urlbar: + description: The Address Bar + owner: search-and-suggest-program@mozilla.com + hasExposure: true + exposureDescription: >- + The timing of the exposure event depends on the experiment, but generally + the event is recorded once per app session when the user first encounters + the UI of the experiment in which they're enrolled. + variables: + addonsFeatureGate: + type: boolean + fallbackPref: browser.urlbar.addons.featureGate + description: >- + Feature gate that controls whether all aspects of the addons suggestion + feature are exposed to the user. + addonsShowLessFrequentlyCap: + type: int + description: >- + If defined and non-zero, this is the maximum number of times the user + will be able to click the "Show less frequently" command for addon + suggestions. If undefined or zero, the user will be able to click the + command without any limit. + autoFillAdaptiveHistoryEnabled: + type: boolean + fallbackPref: browser.urlbar.autoFill.adaptiveHistory.enabled + description: Whether enabling adaptive history autofill. + autoFillAdaptiveHistoryMinCharsThreshold: + type: int + fallbackPref: browser.urlbar.autoFill.adaptiveHistory.minCharsThreshold + description: Minimum char length of the user's search string to trigger adaptive history autofill. + autoFillAdaptiveHistoryUseCountThreshold: + type: string + description: This value assumes float expression like "0.47". Threshold for use count of input history that we handle as adaptive history autofill. If the use count is this value or more, it will be a candidate. + experimentType: + type: string + description: The type of the experiment (or rollout). If "best-match", then the Nimbus exposure event will be recorded when the user first triggers a best match (or would have triggered a best match, for users in the control group). If empty, the event will be recorded when the user first triggers any type of Suggest suggestion. + enum: + - best-match + - "" + fakespotFeatureGate: + type: boolean + fallbackPref: browser.urlbar.fakespot.featureGate + description: >- + Feature gate that controls whether all aspects of the Fakespot suggestion + feature are exposed to the user. + fakespotMinKeywordLength: + type: int + description: >- + The minimum prefix length of a Fakespot keyword the user must type to + trigger the suggestion. + fakespotShowLessFrequentlyCap: + type: int + fallbackPref: browser.urlbar.fakespot.showLessFrequentlyCap + description: >- + If defined and non-zero, this is the maximum number of times the user + will be able to click the "Show less frequently" command for Fakespot + suggestions. If undefined or zero, the user will be able to click the + command without any limit. + fakespotSuggestedIndex: + type: int + fallbackPref: browser.urlbar.fakespot.suggestedIndex + description: >- + The index of Fakespot results within the Firefox Suggest section. A + negative index is relative to the end of the section. + keywordExposureResults: + type: string + setPref: + pref: browser.urlbar.keywordExposureResults + branch: user + description: >- + Comma-separated list of result types that should trigger + keyword-exposure telemetry. Keyword exposures can be recorded along with + result exposures. To enable keyword exposures for a result type, you + must add it both to this variable and to `exposureResults`. The only + exception is the "rust_exposure" result type, which can be added to this + variable even if it's not in `exposureResults` since it's enabled by + setting the `quickSuggestExposureSuggestionTypes` variable. Keyword + exposures are recorded in the `urlbar-keyword-exposure` ping. See that + ping's description for more. + mdnFeatureGate: + type: boolean + setPref: + branch: default + pref: browser.urlbar.mdn.featureGate + description: >- + Feature gate that controls whether all aspects of the mdn suggestion + feature are exposed to the user. + merinoClientVariants: + type: string + fallbackPref: browser.urlbar.merino.clientVariants + description: >- + Comma separated list of client variants to report to the Merino server. + May impact server behavior. + merinoEndpointURL: + type: string + fallbackPref: browser.urlbar.merino.endpointURL + description: >- + The Merino endpoint URL, not including parameters. An empty string will + cause Firefox not to fetch from Merino. + merinoProviders: + type: string + fallbackPref: browser.urlbar.merino.providers + description: >- + Comma-separated list of providers to request from the Merino server. + Merino will return suggestions only for these providers. + merinoTimeoutMs: + type: int + fallbackPref: browser.urlbar.merino.timeoutMs + description: Timeout for Merino fetches (ms) + exposureResults: + type: string + setPref: + pref: browser.urlbar.exposureResults + branch: user + description: >- + Comma-separated list of result types that should trigger exposure + telemetry, which is recorded in the `exposure` event. By default + exposure results are visible like usual, but they can be hidden by + setting the `showExposureResults` variable to false. To also record + keyword exposures for a result type, include it in the + `keywordExposureResults` variable as well. + showExposureResults: + type: boolean + setPref: + pref: browser.urlbar.showExposureResults + branch: user + description: >- + Boolean used to determine if the results defined in `exposureResults` should be shown in search results. Should be false for Control branch of an experiment. + pocketFeatureGate: + type: boolean + fallbackPref: browser.urlbar.pocket.featureGate + description: >- + Feature gate that controls whether all aspects of the Pocket suggestions + feature are exposed to the user. + pocketShowLessFrequentlyCap: + type: int + description: >- + If defined and non-zero, this is the maximum number of times the user + will be able to click the "Show less frequently" command for Pocket + suggestions. If undefined or zero, the user will be able to click the + command without any limit. + pocketSuggestIndex: + type: int + description: >- + The group-relative suggestedIndex of Pocket suggestions within the Firefox + Suggest section. + quickSuggestAllowPositionInSuggestions: + type: boolean + fallbackPref: browser.urlbar.quicksuggest.allowPositionInSuggestions + description: Whether quick suggest results can be shown in position specified in the suggestions. + quickSuggestAmpTopPickCharThreshold: + type: int + fallbackPref: browser.urlbar.quicksuggest.ampTopPickCharThreshold + description: >- + Character-count threshold (inclusive) for showing AMP suggestions as top + picks. If an AMP suggestion is triggered by a keyword at least this many + characters long, it will be shown as a top pick. When this variable is + set, full keywords will also show AMP suggestions as top picks even if + they have fewer characters than this threshold. + quickSuggestContextualOptInEnabled: + type: boolean + setPref: + branch: default + pref: browser.urlbar.quicksuggest.contextualOptIn + description: Whether the Firefox Suggest contextual opt-in result is enabled. If true, this implicitly disables shouldShowOnboardingDialog. + quickSuggestContextualOptInSayHello: + type: boolean + setPref: + branch: default + pref: browser.urlbar.quicksuggest.contextualOptIn.sayHello + description: Controls which variant of the copy is used for the Firefox Suggest contextual opt-in result. + quickSuggestContextualOptInTopPosition: + type: boolean + setPref: + branch: default + pref: browser.urlbar.quicksuggest.contextualOptIn.topPosition + description: Controls whether the Firefox Suggest contextual opt-in result appears at the top of results or at the bottom, after one-off buttons. + quickSuggestDataCollectionEnabled: + type: boolean + description: Whether data collection should be enabled by default. If this variable is specified, it will override the value implied by the scenario. It will never override the user's local preference to disable (or enable) data collection, if the user has already toggled that preference. + quickSuggestEnabled: + type: boolean + fallbackPref: browser.urlbar.quicksuggest.enabled + description: Gate for the Firefox Suggest feature as a whole. If false, the Firefox Suggest preferences UI and Suggest suggestions will not be shown. If true, the preferences UI will be shown, and the user can turn suggestions on or off. + quickSuggestExposureSuggestionTypes: + type: string + setPref: + pref: browser.urlbar.quicksuggest.exposureSuggestionTypes + branch: user + description: >- + Comma-separated list of Suggest exposure suggestion types to enable. + Exposure suggestions are used to test potential exposures. They trigger + exposure telemetry based on a set of keywords you provide but they are + never visible. Set this variable to the `suggestion_type` defined in the + remote settings record(s) that contains your keywords. If you want to + test multiple suggestion types, separate them with commas, but also + consider using one experiment branch per type, especially if you are + also enabling keyword exposures. Exposure suggestions are recorded in + telemetry with the "rust_exposure" result type. It's not necessary to + include "rust_exposure" in `exposureResults`. Unless you are testing + other results in the same experiment branch, it's also not necessary to + set `showExposureResults: false`. To also record keyword exposures, + include "rust_exposure" in `keywordExposureResults`. + quickSuggestHideSettingsUI: + type: boolean + fallbackPref: browser.urlbar.quicksuggest.hideSettingsUI + description: >- + This variable is intended to be used in potential exposure experiments + in regions and locales where Suggest normally isn't enabled. Potential + exposure suggestions are implemented in Suggest, and this variable lets + us enable core Suggest functionality but keep it hidden. Set both + `quickSuggestEnabled` and `quickSuggestHideSettingsUI` to true, along + with `quickSuggestExposureSuggestionTypes`. This variable does NOT hide + visible suggestions and other UI that can be independently enabled with + other Nimbus variables. But since all visible suggestions are disabled + by default for users not in the Suggest population, as long as you don't + set any Nimbus variables to enable other suggestions and UI, Suggest + will remain hidden. + quickSuggestImpressionCapsSponsoredEnabled: + type: boolean + fallbackPref: browser.urlbar.quicksuggest.impressionCaps.sponsoredEnabled + description: Whether sponsored suggestions are subject to impression frequency caps. If false, sponsored suggestions can be shown an unlimited number of times over any given period. If true, sponsored suggestion impressions will be subject to the caps in the remote settings configuration. + quickSuggestImpressionCapsNonSponsoredEnabled: + type: boolean + fallbackPref: browser.urlbar.quicksuggest.impressionCaps.nonSponsoredEnabled + description: Whether non-sponsored suggestions are subject to impression frequency caps. If false, non-sponsored suggestions can be shown an unlimited number of times over any given period. If true, non-sponsored suggestion impressions will be subject to the caps in the remote settings configuration. + quickSuggestMlEnabled: + type: boolean + fallbackPref: browser.urlbar.quicksuggest.mlEnabled + description: >- + Whether Suggest will use the ML backend in addition to Rust. + quickSuggestNonSponsoredEnabled: + type: boolean + description: Whether non-sponsored suggestions should be enabled by default. If this variable is specified, it will override the value implied by the scenario. It will never override the user's local preference to disable (or enable) non-sponsored suggestions, if the user has already toggled that preference. + quickSuggestNonSponsoredIndex: + type: int + fallbackPref: browser.urlbar.quicksuggest.nonSponsoredIndex + description: >- + The index of non-sponsored QuickSuggest results within the general + group. A negative index is relative to the end of the group + quickSuggestOnboardingDialogVariation: + type: string + description: >- + Specify the messages/UI variation for QuickSuggest onboarding dialog. This value is case insensitive. + quickSuggestRankingMode: + type: string + fallbackPref: browser.urlbar.quicksuggest.rankingMode + description: >- + Specify the ranking mode for QuickSuggest. + - "default": ranking by static scores specified by individual providers. + - "interest": ranking by relevance scores provided by `ContentRelevancyManager`. + - "random": ranking by randomly selecting a winner out of candidates. + Note that this ranking mode can still be overridden by `quickSuggestScoreMap`. + If the ranking mode is unspecified or set to any unknown values, it will default + to the static score based ranking. + enum: + - default + - interest + - random + quickSuggestRemoteSettingsDataType: + type: string + description: The `type` of the suggestions data in remote settings. If not specified, "data" is used. + quickSuggestRustEnabled: + type: boolean + fallbackPref: browser.urlbar.quicksuggest.rustEnabled + description: >- + Whether Firefox Suggest will use the new Rust backend instead of the + original JS backend. + quickSuggestScenario: + # IMPORTANT: This should not have a fallbackPref. See UrlbarPrefs.sys.mjs. + type: string + description: The Firefox Suggest scenario in which the user is enrolled + enum: + - history + - offline + - online + quickSuggestScoreMap: + type: json + description: >- + A JSON object that maps telemetry result types to suggestion scores. If + a telemetry result type is present in this map, the client will use the + corresponding score as the score for all suggestions of the type, + overriding all other sources of scores for the type. In other words, + the scores in this map will override scores that are set in remote + settings and Merino as well as scores that are hardcoded in the client. + Example entries: `"amo": 0.5`, `"adm_sponsored": 0.9` + quickSuggestShouldShowOnboardingDialog: + type: boolean + fallbackPref: browser.urlbar.quicksuggest.shouldShowOnboardingDialog + description: Whether or not to show the QuickSuggest onboarding dialog + quickSuggestShowOnboardingDialogAfterNRestarts: + type: int + fallbackPref: browser.urlbar.quicksuggest.showOnboardingDialogAfterNRestarts + description: Show QuickSuggest onboarding dialog after N browser restarts + quickSuggestSponsoredEnabled: + type: boolean + description: Whether sponsored suggestions should be enabled by default. If this variable is specified, it will override the value implied by the scenario. It will never override the user's local preference to disable (or enable) sponsored suggestions, if the user has already toggled that preference. + quickSuggestSponsoredIndex: + type: int + fallbackPref: browser.urlbar.quicksuggest.sponsoredIndex + description: >- + The index of sponsored Firefox Suggest results within the Firefox Suggest + section when "Show search suggestions ahead of browsing history in + address bar results" is checked. When not checked, the index is hardcoded + as -1. Negative indexes are relative to the end of the section. + quickSuggestSponsoredPriority: + type: boolean + fallbackPref: browser.urlbar.quicksuggest.sponsoredPriority + description: >- + Whether or not showing sponsored suggestion as priority. + If this variable is true, the following things are processed. + * "Sponsored" label is shown as the group label. + * Change the suggested index to 1. + * Handle as top pick. + recentSearchesFeatureGate: + type: boolean + setPref: + branch: default + pref: browser.urlbar.recentsearches.featureGate + description: Gate for the recent searches feature. + recentSearchesMaxResults: + type: int + setPref: + branch: default + pref: browser.urlbar.recentsearches.maxResults + description: The maximum number of recent searches to show. + recordNavigationalSuggestionTelemetry: + type: boolean + description: Whether to record navigational suggestion telemetry. Defaults to false. + showSearchTermsFeatureGate: + type: boolean + fallbackPref: browser.urlbar.showSearchTerms.featureGate + description: Gate for the show search terms feature. If false, the preference#search will not show the search terms feature checkbox, and search terms will never persist in the urlbar. If true, the preference checkbox will be shown on preferences#search, and the user can choose to persist search terms on or off in the urlbar. + weatherFeatureGate: + type: boolean + fallbackPref: browser.urlbar.weather.featureGate + description: >- + Feature gate that controls whether all aspects of the weather suggestion + feature are exposed to the user. + weatherKeywordsMinimumLength: + type: int + description: >- + If defined and non-zero, the weather suggestion will be triggered by + typing any prefix of a full weather keyword when the prefix is at least + `weatherKeywordsMinimumLength` characters long. If this variable is + absent or zero, Firefox will fall back to the minimum length defined in + remote settings. If neither Nimbus nor remote settings defines a minimum + length, only full keywords will trigger the suggestion. + weatherShowLessFrequentlyCap: + type: int + description: >- + If defined and non-zero, this is the maximum number of times the user + will be able to click the "Show less frequently" command for weather + suggestions. If undefined or zero, the user will be able to click the + command without any limit. + weatherSimpleUI: + type: boolean + description: >- + If true, show the weather suggestion by simple UI edition as follows. + * Remove the forcast text from the summary text. + yelpMinKeywordLength: + type: int + description: >- + The minimum prefix length of a Yelp keyword the user must type to + trigger the suggestion. + yelpMlEnabled: + type: boolean + fallbackPref: browser.urlbar.yelp.mlEnabled + description: >- + Whether Yelp suggestions will be served from the Suggest ML backend + instead of Rust. + yelpFeatureGate: + type: boolean + fallbackPref: browser.urlbar.yelp.featureGate + description: >- + Feature gate that controls whether all aspects of the Yelp suggestion + feature are exposed to the user. + yelpShowLessFrequentlyCap: + type: int + fallbackPref: browser.urlbar.yelp.showLessFrequentlyCap + description: >- + If defined and non-zero, this is the maximum number of times the user + will be able to click the "Show less frequently" command for Yelp + suggestions. If undefined or zero, the user will be able to click the + command without any limit. + yelpSuggestNonPriorityIndex: + type: int + description: >- + The group-relative suggestedIndex of Yelp suggestions within the Firefox + Suggest section. Ignored when `yelpSuggestPriority` is true. + yelpSuggestPriority: + type: boolean + fallbackPref: browser.urlbar.yelp.priority + description: >- + Whether or not showing yelp suggestion as priority. + If this variable is true, the following things are processed. + * Change the suggested index to 1. + * Handle as top pick. + originsAlternativeEnable: + description: >- + Use an alternative ranking algorithm for autofilling origins, that is + mainly domains of Web pages. When the user types the beginning of an + origin, we autofill the whole origin. Whether autofill happens depends + on the ranking algorithm. Bookmarks are always autofilled anyway. + type: boolean + setPref: + branch: user + pref: "places.frecency.origins.alternative.featureGate" + originsDaysCutOff: + description: >- + The alternative ranking algorithm only considers pages visited in the + last N days, where N is controlled by this variable. + type: int + setPref: + branch: user + pref: "places.frecency.origins.alternative.daysCutOff" + pagesAlternativeEnable: + description: >- + Use an alternative ranking algorithm for sorting history and bookmarks + among the urlbar results. + type: boolean + setPref: + branch: user + pref: "places.frecency.pages.alternative.featureGate" + pagesNumSampledVisits: + description: >- + The number of recent visits to sample when calculating the ranking of + a page. Examining all the visits would be expensive, so we only sample + recent visits. + type: int + setPref: + branch: user + pref: "places.frecency.pages.alternative.numSampledVisits" + pagesHalfLifeDays: + description: >- + The number of days after which the ranking halves. This implements the + "recency" part of the algorithm. + type: int + setPref: + branch: user + pref: "places.frecency.pages.alternative.halfLifeDays" + pagesHighWeight: + description: >- + The weight to use for the high importance bucket. + type: int + setPref: + branch: user + pref: "places.frecency.pages.alternative.highWeight" + pagesMediumWeight: + description: >- + The weight to use for the medium importance bucket. + type: int + setPref: + branch: user + pref: "places.frecency.pages.alternative.mediumWeight" + pagesLowWeight: + description: >- + The weight to use for the low importance bucket. + type: int + setPref: + branch: user + pref: "places.frecency.pages.alternative.lowWeight" + +aboutwelcome: + description: "The about:welcome page" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + Exposure is sent once per browsing session when the about:welcome URL is + first accessed. + isEarlyStartup: true + variables: + enabled: + type: boolean + fallbackPref: browser.aboutwelcome.enabled + description: >- + Should users see about:welcome? If this is false, users will see a + regular new tab instead. + id: + type: string + description: >- + Descriptive ID for the about:welcome content + screens: + type: json + fallbackPref: browser.aboutwelcome.screens + description: Content to show in the onboarding flow + languageMismatchEnabled: + type: boolean + fallbackPref: intl.multilingual.aboutWelcome.languageMismatchEnabled + description: >- + Suggest to change the language on about:welcome when there is a mismatch with + the OS. + transitions: + type: boolean + description: Enable transition effect between screens + showModal: + type: boolean + fallbackPref: browser.aboutwelcome.showModal + description: >- + Should users see window modal onboarding + backdrop: + type: string + fallbackPref: browser.aboutwelcome.backdrop + description: >- + Specify the color to be used to update the background color + toolbarButtonEnabled: + type: boolean + setPref: + branch: user + pref: browser.aboutwelcome.toolbarButtonEnabled + description: >- + Should the return to about:welcome toolbar button be shown + +moreFromMozilla: + description: "New page on about:preferences to suggest more Mozilla products" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + Exposure is sent once per browsing session when the about:preferences URL is + first accessed. + variables: + enabled: + type: boolean + fallbackPref: browser.preferences.moreFromMozilla + description: Should users see the new more from Mozilla section. + template: + type: string + fallbackPref: browser.preferences.moreFromMozilla.template + description: UI template used to display Mozilla products. Possible values simple, advanced. Default is simple. + +windowsLaunchOnLogin: + description: "New checkbox in about:preferences startup section to start Firefox on Windows login" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + Exposure is sent once per browsing session when the about:preferences URL is + first accessed. + variables: + enabled: + type: boolean + setPref: + branch: default + pref: browser.startup.windowsLaunchOnLogin.enabled + description: Should users see the Windows launch on login checkbox. + +firefoxBridge: + description: "Controls for Firefox Bridge extension and extension registration" + owner: install-update@mozilla.com + hasExposure: false + variables: + enabled: + type: boolean + setPref: + branch: default + pref: browser.firefoxbridge.enabled + description: >- + Should Firefox Bridge be registered within firefoxBridgeNativeMessaging + startup idle task for use with native messaging proxy. + +abouthomecache: + description: "The startup about:home cache." + owner: omc@mozilla.com, mconley@mozilla.com + hasExposure: false + variables: + enabled: + type: boolean + description: Is the feature enabled? + setPref: + branch: user + pref: browser.startup.homepage.abouthome_cache.enabled + +newtab: + description: "The about:newtab page" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + Exposure is sent once per browsing session when the first newtab page loads + (either about:newtab or about:home). + isEarlyStartup: true + variables: + newTheme: + type: boolean + description: Enable the new theme + customizationMenuEnabled: + type: boolean + fallbackPref: browser.newtabpage.activity-stream.customizationMenu.enabled + description: Enable the customization panel inside of the newtab + prefsButtonIcon: + type: string + description: Icon url to use for the preferences button + topSitesContileEnabled: + type: boolean + fallbackPref: browser.topsites.contile.enabled + description: Enable the Contile integration for Sponsored Top Sites + topSitesUseAdditionalTilesFromContile: + type: boolean + description: Allow Contile to use additonal sponsored top sites + +newtabUnifiedAds: + description: Mozilla Ad Routing Service (MARS) unified ads service + owner: mcrawford@mozilla.com, sdowne@mozilla.com + hasExposure: false + variables: + unifiedAdsEndpoint: + description: The URL for the MARS API endpoint. + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.unifiedAds.endpoint + unifiedAdsSpocsEnabled: + type: boolean + description: >- + Enable MARS endpoint to serve ads for recommended stories + setPref: + branch: user + pref: browser.newtabpage.activity-stream.unifiedAds.spocs.enabled + unifiedAdsTilesEnabled: + type: boolean + description: >- + Enable MARS endpoint to serve content for top sites tiles + setPref: + branch: user + pref: browser.newtabpage.activity-stream.unifiedAds.tiles.enabled + +newtabSpocsCache: + description: The about:newtab sponsored content cache. + owner: sdowne@mozilla.com + hasExposure: false + variables: + spocsCacheTimeout: + type: int + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.spocs.cacheTimeout + description: >- + Set sponsored content cache timeout in minutes. + spocsStartupCache: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.spocs.startupCache.enabled + description: >- + Controls if spocs should be included in startup cache. + +newtabAdSizingExperiment: + description: >- + Change the default ad size and UI for certain ad formats. + owner: achurchwell@mozilla.com, sdowne@mozilla.com + hasExposure: false + variables: + variantA: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.newtabAdSize.variant-a + description: >- + Variant A ad size and UI. + variantB: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.newtabAdSize.variant-b + description: >- + Variant B ad size and UI. + +newtabLayoutExperiment: + description: >- + Change the default layout of new tab by adjusting sizes and spacing of elements. + owner: achurchwell@mozilla.com, sdowne@mozilla.com + hasExposure: false + variables: + variantA: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.newtabLayouts.variant-a + description: >- + Variant A in layouts experiment. + variantB: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.newtabLayouts.variant-b + description: >- + Variant B in layouts experiment. + +newtabSponsoredContent: + description: >- + Change and control the sponsored content on newtab. + owner: sdowne@mozilla.com + hasExposure: false + variables: + spocPositions: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.spoc-positions + description: CSV string of spoc position indexes on newtab Pocket grid + spocPlacements: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.placements.spocs + description: CSV string of spoc placement ids on newtab Pocket grid. A placement id tells our ad server where the ads are intended to be displayed. + spocCounts: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.placements.spocs.counts + description: CSV string of spoc placement counts on newtab Pocket grid. The count tells the ad server how many ads to return for this position and placement. + tilesPlacements: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.placements.tiles + description: CSV string of tiles placement ids on newtab tiles section. A placement id tells our ad server where the ads are intended to be displayed. + tilesCounts: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.placements.tiles.counts + description: CSV string of tiles placement counts on newtab tiles section. The count tells the ad server how many ads to return for this position and placement. + +newtabTopicSelection: + description: the about:newtab topic selection experience. + owner: nbarrett@mozilla.com + hasExposure: false + variables: + availableTopics: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.topicSelection.topics + description: >- + List of available topics to select for topic selection + suggestedTopics: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.topicSelection.suggestedTopics + description: >- + List of pre-selected topics to display on first run of topic selection modal + topicSelectionOnboarding: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.topicSelection.onboarding.enabled + description: >- + Turns on and off topic selection onbaording + regionTopicsConfig: + description: A comma-separated list of regions that get topics selection by default. + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.topicSelection.region-topics-config + localeTopicsConfig: + description: A comma-separated list of locales that get topics selection by default. + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.topicSelection.locale-topics-config + regionTopicLabelConfig: + description: A comma-separated list of regions that get topic labels by default. + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.topicLabels.region-topic-label-config + localeTopicLabelConfig: + description: A comma-separated list of locales that get topic Labels by default. + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.topicLabels.locale-topic-label-config + +newtabContextualContent: + description: about:newtab contextual content feed + owner: nbarrett@mozilla.com + hasExposure: false + variables: + contextualContentEnabled: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.contextualContent.enabled + description: >- + Override the contextual content enabled value set via region/locale + localeContextualContentConfig: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.contextualContent.locale-content-config + description: >- + A comma-separated list of locales that get contextual content by default. + regionContextualContentConfig: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.contextualContent.region-content-config + description: >- + A comma-separated list of regions that get contextual content by default. + contextualContentFeeds: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.contextualContent.feeds + description: >- + CSV list of possible feeds for the contextual content feed + contextualContentSelectedFeed: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.contextualContent.selectedFeed + description: >- + currently selected feed to display in the Contextual Content component + +newTabSectionsExperiment: + description: about:newtab section UI update + owner: nbarrett@mozilla.com, mcrawford@mozilla.com + hasExposure: false + variables: + sectionsEnabled: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.sections.enabled + description: >- + Enable the Section UI for recommended stories on newtab + cardRefreshThumbsUpDownEnabled: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.sections.cards.thumbsUpDown.enabled + description: >- + Enable the thumbs up/down buttons in the revised pocket story + card UI in recommended stories on newtab + cardRefreshEnabled: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.sections.cards.enabled + description: >- + Enable the revised pocket story card UI in recommended stories on newtab + localeSectionstConfig: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.sections.locale-content-config + description: >- + A comma-separated list of locales that get contextual content by default. + regionSectionsConfig: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.sections.region-content-config + description: >- + A comma-separated list of regions that get contextual content by default. + +pocketNewtab: + description: The Pocket section in newtab + owner: sdowne@mozilla.com + hasExposure: false + isEarlyStartup: true + variables: + spocTopsitesPositions: + type: string + fallbackPref: browser.newtabpage.activity-stream.discoverystream.spoc-topsites-positions + description: CSV string of spoc position indexes on newtab topsites section + contileTopsitesPositions: + type: string + fallbackPref: browser.newtabpage.activity-stream.discoverystream.contile-topsites-positions + description: CSV string of contile position indexes on newtab topsites section + spocAdTypes: + type: string + fallbackPref: browser.newtabpage.activity-stream.discoverystream.spocAdTypes + description: CSV string of data to set the spoc content. + spocZoneIds: + type: string + fallbackPref: browser.newtabpage.activity-stream.discoverystream.spocZoneIds + description: CSV string of data to set the spoc content. + spocTopsitesAdTypes: + type: string + fallbackPref: browser.newtabpage.activity-stream.discoverystream.spocTopsitesAdTypes + description: CSV string of data to set the spoc content. + spocTopsitesZoneIds: + type: string + fallbackPref: browser.newtabpage.activity-stream.discoverystream.spocTopsitesZoneIds + description: CSV string of data to set the spoc content. + spocTopsitesPlacementEnabled: + type: boolean + fallbackPref: browser.newtabpage.activity-stream.discoverystream.spocTopsitesPlacement.enabled + description: Tuns on and off the sponsored topsites placement. + spocSiteId: + type: string + fallbackPref: browser.newtabpage.activity-stream.discoverystream.spocSiteId + description: String ID to set the spoc content. + widgetPositions: + type: string + fallbackPref: browser.newtabpage.activity-stream.discoverystream.widget-positions + description: CSV string of widget position indexes on newtab grid + hybridLayout: + type: boolean + fallbackPref: browser.newtabpage.activity-stream.discoverystream.hybridLayout.enabled + description: Enable compact cards on newtab grid only for specific breakpoints + hideCardBackground: + type: boolean + fallbackPref: browser.newtabpage.activity-stream.discoverystream.hideCardBackground.enabled + description: Removes Pocket card background and borders. + fourCardLayout: + type: boolean + fallbackPref: browser.newtabpage.activity-stream.discoverystream.fourCardLayout.enabled + description: Enable four Pocket cards per row. + newFooterSection: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.newFooterSection.enabled + description: Enable an updated Pocket section topics footer + saveToPocketCard: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.saveToPocketCard.enabled + description: >- + A save to Pocket button inside the card, shown on the card thumbnail, on + hover. + saveToPocketCardRegions: + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.saveToPocketCardRegions + description: >- + CSV string of regions that support the save to Pocket button inside the card. + hideDescriptions: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.hideDescriptions.enabled + description: >- + Hide or display descriptions for Pocket stories on newtab. + hideDescriptionsRegions: + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.hideDescriptionsRegions + description: >- + CSV string of regions that hide descriptions for Pocket stories on newtab. + compactGrid: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.compactGrid.enabled + description: >- + Reduce the number of pixels between the Pocket cards on newtab. + compactImages: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.compactImages.enabled + description: >- + Reduce the height on Pocket card images on newtab. + imageGradient: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.imageGradient.enabled + description: >- + Add a gradient to the bottom of Pocket card images on newtab to blend the + image in with the card. + titleLines: + type: int + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.titleLines + description: >- + Changes the maximum number of lines a title can be for Pocket cards on newtab. + descLines: + type: int + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.descLines + description: >- + Changes the maximum number of lines a description can be for Pocket cards on newtab. + onboardingExperience: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.onboardingExperience.enabled + description: >- + Enables an onboarding experience for Pocket section on newtab. + essentialReadsHeader: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.essentialReadsHeader.enabled + description: >- + Updates the Pocket section header and title to say "Today’s Essential Reads", + moves the "Recommended by Pocket" header to the right side. + editorsPicksHeader: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.editorsPicksHeader.enabled + description: >- + Updates the Pocket section header and title to say "Editor’s Picks", if used with + essentialReadsHeader, creates a second section 2 rows down for editorsPicksHeader. + recentSavesEnabled: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.recentSaves.enabled + description: >- + Updates the Pocket section with a new header and 1 row of recently saved Pocket stories. + readTime: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.readTime.enabled + description: >- + Displays an estimated read time for Pocket cards on newtab. + newSponsoredLabel: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.newSponsoredLabel.enabled + description: >- + Updates the sponsored label position to below the image for Pocket cards on newtab. + sendToPocket: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.sendToPocket.enabled + description: >- + Decides what to do when a logged out user click "Save to Pocket" from a Pocket card. + wallpapers: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.newtabWallpapers.enabled + description: >- + Turns on and off wallpaper support. + wallpapersV2: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.newtabWallpapers.v2.enabled + description: >- + Turns on and off updated wallpaper experience. + wallpapersHighlightEnabled: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.newtabWallpapers.highlightEnabled + description: >- + Turns on and off wallpaper feature highlight. + wallpaperHighlightHeaderText: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.newtabWallpapers.highlightHeaderText + description: >- + Changes the wallpaper feature highlight header + wallpaperHighlightContentText: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.newtabWallpapers.highlightContentText + description: >- + Changes the wallpaper feature highlight content + wallpaperHighlightCtaText: + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.newtabWallpapers.highlightCtaText + description: >- + Changes the wallpaper feature highlight cta + weatherLocationSearch: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.weather.locationSearchEnabled + description: >- + Turns on and off location search for newtab weather widget + recsPersonalized: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.recs.personalized + description: >- + Enables Pocket stories personalization. + spocsPersonalized: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.spocs.personalized + description: >- + Enables Pocket sponsored content personalization. + discoveryStreamConfig: + description: A JSON blob of discovery stream configuration. + type: string + setPref: + branch: user + pref: "browser.newtabpage.activity-stream.discoverystream.config" + spocsEndpoint: + description: The URL for the spocs endpoint. + type: string + setPref: + branch: user + pref: "browser.newtabpage.activity-stream.discoverystream.spocs-endpoint" + spocsEndpointAllowlist: + description: Comma separated list of allowed endpoints for fetching spocs + type: string + setPref: + branch: user + pref: "browser.newtabpage.activity-stream.discoverystream.endpoints" + spocsClearEndpoint: + description: URL for deleting any server data when a user opts out of sponsored content + type: string + setPref: + branch: user + pref: "browser.newtabpage.activity-stream.discoverystream.endpointSpocsClear" + ctaButtonSponsors: + description: A CSV list of sponsors that should use a button CTA. + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.ctaButtonSponsors + ctaButtonVariant: + description: Specifies which variant to use for any sponsors in ctaButtonSponsors + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.ctaButtonVariant + spocMessageVariant: + description: Adds some message dialogs explainging sponsored content to the user + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.spocMessageVariant + regionStoriesConfig: + description: A comma-separated list of region to get stories for. + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.region-stories-config + regionBffConfig: + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.region-bff-config + description: A comma-separated list of regions to get stories from the recommendations BFF. Also requires region-stories-config. + merinoProviderEnabled: + type: boolean + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.merino-provider.enabled + description: Sets the recommendations provider service to Merino. + merinoProviderEndpoint: + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.merino-provider.endpoint + description: Merino endpoint to use for recommendations. + regionStoriesBlock: + description: A comma-separated list of regions that do not get stories, regardless of locale-list-config. + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.region-stories-block + localeListConfig: + description: A comma-separated list of locales that get stories, regardless of region-stories-config. + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.locale-list-config + regionSpocsConfig: + description: A comma-separated list of regions that get spocs by default. + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.region-spocs-config + regionWeatherConfig: + description: A comma-separated list of regions that get weather by default. + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.region-weather-config + localeWeatherConfig: + description: A comma-separated list of locales that weather widget supports. + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.locale-weather-config + topSitesMaxSponsored: + # Defined under `pocketNewtab` as it needs to be used along with other variables + type: int + description: The maximum number of sponsored Top Sites to be displayed + topSitesContileMaxSponsored: + # Defined under `pocketNewtab` as it needs to be used along with other variables + type: int + description: The maximum number of sponsored Top Sites used from Contile + topSitesContileSovEnabled: + # Defined under `pocketNewtab` as it needs to be used along with other variables + description: Enable the Share-of-Voice feature for Sponsored Topsites. + type: boolean + fallbackPref: >- + browser.topsites.contile.sov.enabled + pocketFeedParameters: + type: string + fallbackPref: >- + browser.newtabpage.activity-stream.discoverystream.pocket-feed-parameters + description: >- + Add parameters to Pocket feed URL. + merinoFeedExperiment: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.merino-feed-experiment + description: >- + Should we pass the experiment branch and slug to the Merino feed request. + thumbsUpDown: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.thumbsUpDown.enabled + description: Display thumbs up and down buttons on recommended stories + regionThumbsUpDownConfig: + description: A comma-separated list of regions that get thumbs up and down buttons by default. + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.thumbsUpDown.region-thumbs-config + description: Display thumbs up and down buttons on recommended stories + localeThumbsUpDownConfig: + description: A comma-separated list of locales that get thumbs up and down buttons by default. + type: string + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.thumbsUpDown.locale-thumbs-config + thumbsUpDownCompactLayout: + type: boolean + setPref: + branch: user + pref: browser.newtabpage.activity-stream.discoverystream.thumbsUpDown.searchTopsitesCompact + description: >- + Change the layout of the sections to be more compact to account for the added card height with the thumbs up/down enabled. + +saveToPocket: + description: The save to Pocket feature + owner: sdowne@mozilla.com + hasExposure: false + variables: + emailButton: + type: boolean + setPref: + branch: user + pref: extensions.pocket.refresh.emailButton.enabled + description: Just for the new Pocket panels, enables the email signup button. + hideRecentSaves: + type: boolean + setPref: + branch: user + pref: extensions.pocket.refresh.hideRecentSaves.enabled + description: Hides the recently saved section in the home panel. + bffRecentSaves: + type: boolean + setPref: + branch: user + pref: extensions.pocket.bffRecentSaves + description: Use the new BFF Proxy Service instead of the legacy Pocket Service for Recent Saves + bffApi: + type: string + setPref: + branch: user + pref: extensions.pocket.bffApi + description: BFF Proxy Service domain + oAuthConsumerKeyBff: + type: string + setPref: + branch: user + pref: extensions.pocket.oAuthConsumerKeyBff + description: BFF Proxy Service OAuth Consumer Key + +password-autocomplete: + description: A special autocomplete UI for password fields. + owner: sgalich@mozilla.com + hasExposure: false + variables: + directMigrateSingleProfile: + type: boolean + description: Enable direct migration? + +# Experiment for different Relay UI treatments. Variations at: +# https://www.figma.com/design/gnyElr1Wtce3RdQT54y8kS/Relay-%26-Firefox-Integration?node-id=316-2024&node-type=canvas&t=A3iAuevSTtwXeFxb-0 +email-autocomplete-relay: + description: Relay UI for email fields. + exposureDescription: Exposure is sent each time a user sees the Relay autocomplete dropdown item + hasExposure: true + owner: lcrouch@mozilla.com + variables: + firstOfferVersion: + type: string + description: Which Relay UI treatment to show + fallbackPref: signon.firefoxRelay.firstOfferVersionFallback + +# This feature flag mirrors the one used for ios +# https://github.com/mozilla-mobile/firefox-ios/blob/main/nimbus-features/addressAutofillFeature.yaml +address-autofill-feature: + description: Enabling address autofill feature + owner: issozi@mozilla.com + hasExposure: false + variables: + status: + type: boolean + setPref: + branch: default + pref: extensions.formautofill.addresses.experiments.enabled + description: If true, we will allow user to use address autofill + +creditcards-autofill-enabled: + description: Credit card autofill is enabled in all regions + owner: issozi@mozilla.com + hasExposure: false + variables: + creditcardsSupported: + description: Enable credit card autofill in all regions + type: string + setPref: + branch: default + pref: extensions.formautofill.creditCards.supported + +shellService: + description: "Interface with OS, e.g., pinning and set default" + owner: desktop-integrations@mozilla.com + hasExposure: false + variables: + disablePin: + type: boolean + description: Disable pin to taskbar feature + disableStartMenuPin: + type: boolean + setPref: + branch: user + pref: browser.shell.disableStartMenuPin + description: Disable pin to start menu feature + setDefaultBrowserUserChoice: + type: boolean + setPref: + branch: user + pref: browser.shell.setDefaultBrowserUserChoice + description: Should it set as default browser + setDefaultBrowserUserChoiceRegRename: + type: boolean + setPref: + branch: user + pref: browser.shell.setDefaultBrowserUserChoice.regRename + description: When setting default via UserChoice, rename the underlying registry key to prevent kennel driver registry locking. + setDefaultPDFHandler: + type: boolean + fallbackPref: browser.shell.setDefaultPDFHandler + description: Should setting it as the default browser set it as the default PDF handler. + setDefaultPDFHandlerOnlyReplaceBrowsers: + type: boolean + fallbackPref: browser.shell.setDefaultPDFHandler.onlyReplaceBrowsers + description: >- + Should setting it as the default PDF handler only replace existing PDF + handlers that are browsers, and not other PDF handlers such as Acrobat + Reader or Nitro PDF. + setDefaultGuidanceNotifications: + type: boolean + fallbackPref: browser.shell.setDefaultGuidanceNotifications + description: Whether or not the user should see the guidance notifications when setting Firefox as their default browser. +upgradeDialog: + description: The dialog shown for major upgrades + owner: omc@mozilla.com + hasExposure: false + isEarlyStartup: true + variables: + enabled: + type: boolean + fallbackPref: browser.startup.upgradeDialog.enabled + description: Is the feature enabled? + +cfr: + description: "A Firefox Messaging System message for the cfr message channel" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +"moments-page": + description: "A Firefox Messaging System message for the moments-page message channel" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +infobar: + description: "A Firefox Messaging system message for the infobar message channel" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +spotlight: + description: "A Firefox Messaging System message for the spotlight message channel" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +# Before 117, this feature only included one variable, pdfJsTourProgress. So, +# the minimum version for messaging experiments using this feature ID is 117. +featureCallout: + description: "A Firefox Messaging System message for the Feature Callout message channel" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +fullPageTranslation: + description: This feature opens a popup panel to offer to translate a page. + owner: gtatum@mozilla.com + hasExposure: false + variables: + boolean: + description: Set to true to enable the translations feature + type: boolean + setPref: + branch: user + pref: browser.translations.enable + +fullPageTranslationAutomaticPopup: + description: Controls whether the popup automatically shows for translations. + owner: gtatum@mozilla.com + hasExposure: false + variables: + boolean: + description: Set to true to automatically popup, and false to only show the button. + type: boolean + setPref: + branch: user + pref: browser.translations.automaticallyPopup + +selectTranslation: + description: This feature enables the option to translate selected text from the context menu. + owner: enordin@mozilla.com + hasExposure: false + variables: + enabled: + description: Set to true to enable the select-translations feature + type: boolean + setPref: + branch: user + pref: browser.translations.select.enable + +pdfjs: + description: The Firefox pdf reader. + owner: pdfjs-team@mozilla.com + hasExposure: true + exposureDescription: >- + Exposure is sent each time a pdf is displayed. + variables: + enableAltText: + description: Set to true to enable alt text generation. + type: boolean + setPref: + branch: default + pref: pdfjs.enableAltText + enableUpdatedAddImage: + description: Set to true to enable updated add image with alt text flow. + type: boolean + setPref: + branch: default + pref: pdfjs.enableUpdatedAddImage + browserMlEnable: + description: Set to true to enable local inference engine + type: boolean + setPref: + branch: default + pref: browser.ml.enable + +# fxms-message-* placeholder feature ids +# +# https://docs.google.com/spreadsheets/d/119YbeKStLL0Fg2QkK-yN93mrtD1rlneGZGTl_jAwtyw/edit#gid=1903378504 +# has info on using these placeholder feature ids, as well as (very short) instructions on +# checking to see if we need more (which we do once per Nightly) and how to add them. +# +# Instructions for adding a new fxms-message-* placeholder feature id +# 1) clone an existing one here +# 2) update the YAML feature id to the next unused number +# 3) update the YAML description +# 4) add the new feature id to MESSAGING_EXPERIMENTS_DEFAULT_FEATURES list in MessagingExperimentConstants.sys.mjs +# 5) add the new feature id and the version it landed to the spreadsheet tab linked to above + +fxms-message-1: + description: "A Firefox Messaging System message" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +fxms-message-2: + description: "Firefox Messaging System message 2" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +fxms-message-3: + description: "Firefox Messaging System message 3" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +fxms-message-4: + description: "Firefox Messaging System message 4" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +fxms-message-5: + description: "Firefox Messaging System message 5" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +fxms-message-6: + description: "Firefox Messaging System message 6" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +fxms-message-7: + description: "Firefox Messaging System message 7" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +fxms-message-8: + description: "Firefox Messaging System message 8" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +fxms-message-9: + description: "Firefox Messaging System message 9" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +fxms-message-10: + description: "Firefox Messaging System message 10" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +fxms-message-11: + description: "Firefox Messaging System message 11" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +whatsNewPage: + description: "A Firefox Messaging System message for the What's new page channel" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + variables: + overrideUrl: + description: URL of the What's new page + type: string + setPref: + branch: user + pref: startup.homepage_override_url_nimbus + maxVersion: + description: Maximum Firefox update version + type: string + setPref: + branch: user + pref: startup.homepage_override_nimbus_maxVersion + minVersion: + description: Minimum Firefox update version + type: string + setPref: + branch: user + pref: startup.homepage_override_nimbus_minVersion + disableWNP: + description: >- + Block all What's New Pages. Used to compare no-WNP control branches to + WNP treatment branches. + type: boolean + setPref: + branch: user + pref: startup.homepage_override_nimbus_disable_wnp + +pbNewtab: + description: "A Firefox Messaging System message for the pbNewtab message channel" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched. + schema: + uri: "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json" + variables: {} + +backgroundTaskMessage: + description: "A Firefox Messaging System message for the background task message channel" + owner: nalexander@mozilla.com + applications: + - firefox-desktop-background-task + hasExposure: true + exposureDescription: >- + Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched. + schema: + uri: "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json" + path: "browser/components/asrouter/content-src/schemas/BackgroundTaskMessagingExperiment.schema.json" + variables: {} + +backgroundUpdateAutomaticRestart: + description: "Whether to automatically restart when the background update task could make more progress." + owner: nalexander@mozilla.com + applications: + - firefox-desktop-background-task + hasExposure: false + variables: + enabled: + type: boolean + fallbackPref: app.update.background.automaticRestartEnabled + description: >- + When true, make the background update task restart when the final update state is `READY_FOR_RESTART`. + Generally, this will finish applying a staged update, completing the update earlier than it + otherwise would have been completed. + +pictureinpicture: + description: Message for first time Picture-in-Picture users + owner: nbaumgardner@mozilla.com + hasExposure: true + exposureDescription: Exposure is sent when a user hovers over a video and Picture-in-Picture has not been used before + variables: + title: + type: string + description: The title to be used for the PiP toggle + message: + type: string + description: The message to be used in the PiP toggle + showIconOnly: + type: boolean + description: Whether to show the first time PiP toggle or show the PiP icon only + oldToggle: + type: boolean + description: Whether to show the control style (true) or variant style (false) for the first time PiP toggle + displayDuration: + type: int + description: Duration of PiP first time toggle display in days before switching to PiP icon toggle + +glean: + description: "The Glean data-control-plane feature within Firefox Desktop for controlling metric configuration" + owner: glean-team@mozilla.com + hasExposure: false + variables: + newtabPingEnabled: + type: "boolean" + fallbackPref: "browser.newtabpage.ping.enabled" + description: "Whether to submit the 'newtab' ping" + gleanMetricConfiguration: + type: json + description: | + A map of metric base-identifiers to booleans representing the state of the 'enabled' flag for that metric. + This variable is intended for interacting with the Glean data-control-plane via the Server Knobs functionality + to remotely configure metrics to be enabled or disabled. + +gleanInternalSdk: + description: "The Glean internal SDK feature intended only for internal Glean Team use" + owner: glean-team@mozilla.com + hasExposure: false + variables: + finalInactive: + type: "boolean" + description: "Enables FOG early shutdown pings when true" + setPref: + branch: user + pref: telemetry.glean.internal.finalInactive + gleanMetricConfiguration: + type: json + description: | + A map of metric base-identifiers to booleans representing the state of the 'enabled' flag for that metric. + This is not for public use! For data-control-plane use, please refer to the Glean documentation and use the + `gleanMetricConfiguration` found in the `glean` feature for this. + gleanMaxPingsPerMinute: + type: int + description: >- + Maximum number of pings that can be sent in a 60 second interval + setPref: + branch: user + pref: telemetry.glean.internal.maxPingsPerMinute + +browserLowMemoryPrefs: + description: Prefs which control the browser's behaviour under low memory. + owner: haftandilian@mozilla.com + hasExposure: false + variables: + lowMemoryResponseMask: + description: Control the response on macOS when under memory pressure. + type: int + setPref: + branch: default + pref: "browser.lowMemoryResponseMask" + lowMemoryResponseOnWarn: + description: Controls which macOS memory-pressure levels trigger the browser low memory response. + type: boolean + setPref: + branch: default + pref: "browser.lowMemoryResponseOnWarn" + tabsUnloadOnLowMemory: + description: Whether to unload tabs when available memory is running low. + type: boolean + setPref: + branch: default + pref: "browser.tabs.unloadOnLowMemory" + +scriptLoaderPrefs: + description: Prefs that control the script loader. + owner: npierron@mozilla.com + hasExposure: false + variables: + delazificationStrategy: + description: >- + Selects which parsing/delazification strategy should be used while + parsing scripts off-main-thread. See DelazificationOption in + CompileOptions.h for values. + type: int + setPref: + branch: default + pref: "dom.script_loader.delazification.strategy" + +echPrefs: + description: Prefs that control Encrypted Client Hello. + owner: djackson@mozilla.com + hasExposure: false + variables: + tlsEnabled: + description: Whether to enable ECH for connections using TLS + type: boolean + setPref: + branch: default + pref: "network.dns.echconfig.enabled" + h3Enabled: + description: Whether to enable ECH for connections using H3/QUIC + type: boolean + setPref: + branch: default + pref: "network.dns.http3_echconfig.enabled" + forceWaitHttpsRR: + description: Whether to force waiting for HTTPS DNS records, which ECH requires. + type: boolean + setPref: + branch: default + pref: "network.dns.force_waiting_https_rr" + insecureFallback: + description: Whether to fallback to non-ECH connections if all ECH RRs fail. + type: boolean + setPref: + branch: default + pref: "network.dns.echconfig.fallback_to_origin_when_all_failed" + tlsGreaseProb: + description: Probability of GREASEing a TLS connection with ECH (0-100). + type: int + setPref: + branch: default + pref: "security.tls.ech.grease_probability" + h3GreaseEnabled: + description: Whether to apply GREASE settings to H3/QUIC connections. + type: boolean + setPref: + branch: default + pref: "security.tls.ech.grease_http3" + disableGreaseOnFallback: + description: Whether to disable GREASE when retrying a connection. + type: boolean + setPref: + branch: default + pref: "security.tls.ech.disable_grease_on_fallback" + greasePaddingSize: + description: Assumed echConfig padding length for GREASE extensions (1-255). + type: int + setPref: + branch: default + pref: "security.tls.ech.grease_size" + +dohPrefs: + description: Prefs that control DNS over HTTPS. + owner: vgosu@mozilla.com + hasExposure: false + variables: + trrMode: + description: Has a value of 2 for TRR first, 3 for TRR only, 0 for off. + type: int + setPref: + branch: default + pref: "network.trr.mode" + trrUri: + description: The URL of the DNS over HTTPS endpoint + type: string + setPref: + branch: default + pref: "network.trr.uri" + dohMode: + description: Same as trrMode, but set by the DoHController module. + type: int + setPref: + branch: default + pref: "doh-rollout.mode" + dohUri: + description: Same as trrUri, but set by the DoHController module. + type: string + setPref: + branch: default + pref: "doh-rollout.uri" + enableFallbackWarningPage: + description: Whether DoH fallback warning page will be displayed when DoH doesn't work in TRR first mode. + type: boolean + setPref: + branch: default + pref: "network.trr.display_fallback_warning" + showFallbackCheckbox: + description: Whether the checkbox to enable the fallback warning page is displayed in the settings UI. + type: boolean + setPref: + branch: default + pref: "network.trr_ui.show_fallback_warning_option" + nativeHTTPSRecords: + description: Whether we can perform native DNS HTTPS lookups + type: boolean + setPref: + branch: default + pref: "network.dns.native_https_query" + +dooh: + description: "DNS over Oblivious HTTP" + owner: vgosu@mozilla.com + hasExposure: false + variables: + ohttpEnabled: + description: Whether to use Oblivious HTTP for the resolution + type: boolean + setPref: + branch: default + pref: "network.trr.use_ohttp" + ohttpRelayUri: + description: The URL of the Oblivious HTTP relay + type: string + setPref: + branch: default + pref: "network.trr.ohttp.relay_uri" + ohttpConfigUri: + description: The URL used to fetch the configuration of the Oblivious HTTP gateway + type: string + setPref: + branch: default + pref: "network.trr.ohttp.config_uri" + ohttpUri: + description: The URL of the Oblivious DNS over HTTPS target resource + type: string + setPref: + branch: default + pref: "network.trr.ohttp.uri" + +networking: + description: "Firefox Networking (Necko)" + owner: vgosu@mozilla.com + hasExposure: false + variables: + ehPreloadEnabled: + description: Whether Early Hints preload is enabled + type: boolean + setPref: + branch: default + pref: "network.early-hints.enabled" + ehPreconnectEnabled: + description: Whether Early Hints preconnect is enabled + type: boolean + setPref: + branch: default + pref: "network.early-hints.preconnect.enabled" + dnsMaxPriorityThreads: + description: The maximum number of high priority DNS threads that can be created. + type: int + setPref: + branch: default + pref: "network.dns.max_high_priority_threads" + dnsMaxAnyPriorityThreads: + description: The maximum number of DNS threads that can be created to handle any priority DNS requests. + type: int + setPref: + branch: default + pref: "network.dns.max_any_priority_threads" + preconnect: + description: Whether the rel=preconnect feature is enabled + type: boolean + setPref: + branch: default + pref: "network.preconnect" + networkPredictor: + description: Whether the Necko predictor is enabled + type: boolean + setPref: + branch: default + pref: "network.predictor.enabled" + http3CCalgorithm: + description: The congestion control algorithm with which to configure neqo. 0 for NewReno, 1 for Cubic + type: int + setPref: + branch: default + pref: "network.http.http3.cc_algorithm" + sendOnDataFinished: + description: Whether we can send OnDataFinished in the content process + type: boolean + setPref: + branch: default + pref: "network.send_OnDataFinished" + sendOnDataFinshedFromInputStreamPump: + description: Whether we can send OnDataFinished to the content process from InputStreamPump + type: boolean + setPref: + branch: default + pref: "network.send_OnDataFinished.nsInputStreamPump" + sendOnDataFinishedToHtml5parser: + description: Whether we can send OnDataFinished to the html5parser in content process + type: boolean + setPref: + branch: default + pref: "network.send_OnDataFinished.html5parser" + sendOnDataFinishedToCssLoader: + description: Whether we can send OnDataFinished to the cssLoader in content process + type: boolean + setPref: + branch: default + pref: "network.send_OnDataFinished.cssLoader" + enableOffMainThreadStreamDecompression: + description: Whether to enable decompression of network streams off-main-thread + type: boolean + setPref: + branch: default + pref: "network.decompression_off_mainthread2" + offMainThreadStreamDecompressionThreshold: + description: Minimum content length for off-main-thread decompression + type: int + setPref: + branch: default + pref: "network.decompression_off_mainthread_min_size" + httpMaxConnections: + description: The maximum number of http connections. + type: int + setPref: + branch: default + pref: "network.http.max-connections" + httpMaxPersistentConnectionsPerServer: + description: The maximum number of persistent connections to a server + type: int + setPref: + branch: default + pref: "network.http.max-persistent-connections-per-server" + speculativeConnectionLimit: + description: The maximum number of half-open sockets allowed for speculative connections + type: int + setPref: + branch: default + pref: "network.http.speculative-parallel-limit" + chipsEnabled: + description: Whether CHIPS is enabled or not + type: boolean + setPref: + branch: default + pref: "network.cookie.CHIPS.enabled" + chipsMigrationTarget: + description: What CHIPS migration count target the browser should reach. + type: int + setPref: + branch: default + pref: "network.cookie.CHIPS.migrateDatabaseTarget" + chipsPartitionLimitEnabled: + description: Whether we enforce CHIPS partition limit + type: boolean + setPref: + branch: default + pref: "network.cookie.chips.partitionLimitEnabled" + chipsPartitionLimitDryRun: + description: Whether we actually perform purging/rejection, used to report telemetry without webcompat issues + type: boolean + setPref: + branch: default + pref: "network.cookie.chips.partitionLimitDryRun" + chipsPartitionLimitByteCapacity: + description: The actual value of the CHIPS partition limit in bytes + type: boolean + setPref: + branch: default + pref: "network.cookie.chips.partitionLimitByteCapacity" + +disableHttp3: + description: "Whether HTTP/3 is disabled" + owner: kershaw@mozilla.com + hasExposure: false + variables: + withThirdPartyRoots: + description: If third party roots are detected, disable HTTP/3 + type: boolean + setPref: + branch: default + pref: "network.http.http3.disable_when_third_party_roots_found" + + +networkPrioritization: + description: "Network request prioritization" + owner: vgosu@mozilla.com + hasExposure: false + variables: + priorityHeader: + description: Whether to set the Priority header on each request. + type: boolean + setPref: + branch: default + pref: "network.http.priority_header.enabled" + fetchPriority: + description: Whether fetch priority is enabled + type: boolean + setPref: + branch: default + pref: "network.fetchpriority.enabled" + h3FetchPriority: + description: Whether to send HTTP3 priority frames + type: boolean + setPref: + branch: default + pref: "network.http.http3.priority" + sendNoRFC7540Setting: + description: Whether to send the SETTINGS_NO_RFC7540_PRIORITIES for the HTTP2 session. + type: boolean + setPref: + branch: default + pref: "network.http.http2.send_NO_RFC7540_PRI" + h2deps: + description: Whether RFC7540 priorities / stream dependencies are enabled + type: boolean + setPref: + branch: default + pref: "network.http.http2.enabled.deps" + h3BackgroundTabDeprioritization: + description: Lowers the priority when the tab is in the background. Potential privacy concerns. + type: boolean + setPref: + branch: default + pref: "network.http.http3.send_background_tabs_deprioritization" + documentPriorityIncremental: + description: Sets the incremental flag on the Priority header for document requests + type: boolean + setPref: + branch: default + pref: "dom.document_priority.incremental" + imagePriorityIncremental: + description: Sets the incremental flag on the Priority header for image requests + type: boolean + setPref: + branch: default + pref: "image.priority.incremental" + imageAdjustLayoutPriority: + description: Whether the network request priority should be adjusted according the layout and view frame position of each particular image. + type: boolean + setPref: + branch: default + pref: "image.layout_network_priority" + adjustLinkPreloadScriptLow: + description: Priority adjustment low for link-preload-script + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.link-preload-script.low" + adjustLinkPreloadScriptHigh: + description: Priority adjustment high for link-preload-script + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.link-preload-script.high" + adjustLinkPreloadScriptAuto: + description: Priority adjustment auto for link-preload-script + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.link-preload-script.auto" + adjustModuleScriptLow: + description: Priority adjustment low for module-script + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.module-script.low" + adjustModuleScriptHigh: + description: Priority adjustment high for module-script + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.module-script.high" + adjustModuleScriptAuto: + description: Priority adjustment auto for module-script + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.module-script.auto" + adjustAsyncOrDeferScriptLow: + description: Priority adjustment low for async-or-defer-script + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.async-or-defer-script.low" + adjustAsyncOrDeferScriptHigh: + description: Priority adjustment high for async-or-defer-script + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.async-or-defer-script.high" + adjustAsyncOrDeferScriptAuto: + description: Priority adjustment auto for async-or-defer-script + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.async-or-defer-script.auto" + adjustScriptInHeadLow: + description: Priority adjustment low for script-in-head + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.script-in-head.low" + adjustScriptInHeadHigh: + description: Priority adjustment high for script-in-head + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.script-in-head.high" + adjustScriptInHeadAuto: + description: Priority adjustment auto for script-in-head + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.script-in-head.auto" + adjustOtherScriptLow: + description: Priority adjustment low for other-script + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.other-script.low" + adjustOtherScriptHigh: + description: Priority adjustment high for other-script + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.other-script.high" + adjustOtherScriptAuto: + description: Priority adjustment auto for other-script + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.other-script.auto" + adjustLinkPreloadFontLow: + description: Priority adjustment low for link-preload-font + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.link-preload-font.low" + adjustLinkPreloadFontHigh: + description: Priority adjustment high for link-preload-font + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.link-preload-font.high" + adjustLinkPreloadFontAuto: + description: Priority adjustment auto for link-preload-font + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.link-preload-font.auto" + adjustLinkPreloadFetchLow: + description: Priority adjustment low for link-preload-fetch + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.link-preload-fetch.low" + adjustLinkPreloadFetchHigh: + description: Priority adjustment high for link-preload-fetch + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.link-preload-fetch.high" + adjustLinkPreloadFetchAuto: + description: Priority adjustment auto for link-preload-fetch + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.link-preload-fetch.auto" + adjustDeferredStyleLow: + description: Priority adjustment low for deferred-style + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.deferred-style.low" + adjustDeferredStyleHigh: + description: Priority adjustment high for deferred-style + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.deferred-style.high" + adjustDeferredStyleAuto: + description: Priority adjustment auto for deferred-style + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.deferred-style.auto" + adjustLinkPreloadStyleLow: + description: Priority adjustment low for link-preload-style + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.link-preload-style.low" + adjustLinkPreloadStyleHigh: + description: Priority adjustment high for link-preload-style + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.link-preload-style.high" + adjustLinkPreloadStyleAuto: + description: Priority adjustment auto for link-preload-style + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.link-preload-style.auto" + adjustNonDeferredStyleLow: + description: Priority adjustment low for non-deferred-style + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.non-deferred-style.low" + adjustNonDeferredStyleHigh: + description: Priority adjustment high for non-deferred-style + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.non-deferred-style.high" + adjustNonDeferredStyleAuto: + description: Priority adjustment auto for non-deferred-style + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.non-deferred-style.auto" + adjustGlobalFetchApiLow: + description: Priority adjustment low for global-fetch-api + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.global-fetch-api.low" + adjustGlobalFetchApiHigh: + description: Priority adjustment high for global-fetch-api + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.global-fetch-api.high" + adjustGlobalFetchApiAuto: + description: Priority adjustment auto for global-fetch-api + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.global-fetch-api.auto" + adjustImagesLow: + description: Priority adjustment low for images + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.images.low" + adjustImagesHigh: + description: Priority adjustment high for images + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.images.high" + adjustImagesAuto: + description: Priority adjustment auto for images + type: int + setPref: + branch: default + pref: "network.fetchpriority.adjustments.images.auto" + lowerTrackersPriority: + description: Whether to lower priority of resources on the tracking protection list + type: boolean + setPref: + branch: default + pref: "privacy.trackingprotection.lower_network_priority" + enableHttpTailing: + description: Whether certain requests, mainly trackers, are put to the "tail", behind other requests + type: boolean + setPref: + branch: default + pref: "network.http.tailing.enabled" + httpTailingUrgency: + description: Priority urgency of tailed request + type: int + setPref: + branch: default + pref: "network.http.tailing.urgency" + httpTailingDelayQuantum: + description: When the page load has not yet reached DOMContentLoaded point, tail requestes are delayed by (non-tailed requests count + 1) * delay-quantum milliseconds. + type: int + setPref: + branch: default + pref: "network.http.tailing.delay-quantum" + httpTailingDelayQuantumAfterDCL: + description: After the page load reached DOMContentLoaded point, tail requestes are delayed by (non-tailed requests count + 1) * delay-quantum-after-domcontentloaded milliseconds. + type: int + setPref: + branch: default + pref: "network.http.tailing.delay-quantum-after-domcontentloaded" + httpTailingMaxDelay: + description: Upper limit for the calculated delay, prevents long standing and comet-like requests + type: int + setPref: + branch: default + pref: "network.http.tailing.delay-max" + httpTailingTotalMaxDelay: + description: Total limit we delay tailed requests since page load start + type: int + setPref: + branch: default + pref: "network.http.tailing.total-max" + +networkingAuth: + description: "Firefox Networking (Necko) Authentication" + owner: vgosu@mozilla.com + hasExposure: false + variables: + redirectForAuthRetriesEnabled: + description: Whether to enable redirects for auth retries + type: boolean + setPref: + branch: default + pref: "network.auth.use_redirect_for_retries" + +networkingDenyIpAddrAny: + description: "Firefox Networking (Necko) Deny IP Address Any" + owner: vgosu@mozilla.com + hasExposure: false + variables: + denyIpAddrAny: + description: Whether to deny empty (0.0.0.0) IP addresses + type: boolean + setPref: + branch: default + pref: "network.socket.ip_addr_any.disabled" + +pingsender: + description: "In-product usage of the pingsender telemetry reporter." + owner: nalexander@mozilla.com + hasExposure: false + variables: + backgroundTaskEnabled: + type: "boolean" + fallbackPref: "toolkit.telemetry.shutdownPingSender.backgroundtask.enabled" + description: "Whether to use the `pingsender` background task to send shutdown telemetry" + +dapTelemetry: + description: DAP Telemetry + owner: simon@mozilla.com + hasExposure: false + variables: + enabled: + type: boolean + description: Whether to automatically send DAP measurements. + task1Enabled: + type: boolean + description: Whether to send fake measurements for task 1. + task1TaskId: + type: string + description: The task ID to use for task 1 measurements. + visitCountingEnabled: + type: boolean + description: Whether to count visits to the provided list of URLs. + visitCountingExperimentList: + type: json + description: A list of experiments with URLs for which we want to count visits. + +dapAggregators: + description: Aggregator server configuration to use for submitting DAP reports. + owner: tcampbell@mozilla.com + hasExposure: false + variables: + leader_url: + description: The URL of the DAP Leader server where reports are submitted. + type: string + setPref: + branch: default + pref: "toolkit.telemetry.dap.leader.url" + leader_hpke: + description: The base64-encode HPKE key to encrypt leader shares with. + type: string + setPref: + branch: default + pref: "toolkit.telemetry.dap.leader.hpke" + helper_url: + description: The URL of the DAP Helper server. + type: string + setPref: + branch: default + pref: "toolkit.telemetry.dap.helper.url" + helper_hpke: + description: The base64-encode HPKE key to encrypt helper shares with. + type: string + setPref: + branch: default + pref: "toolkit.telemetry.dap.helper.hpke" + +etpLevel2PBMPref: + description: The pref that controls the ETP level 2 list in the private browsing mode + owner: tihuang@mozilla.com + hasExposure: false + variables: + enabled: + description: Whether to enable ETP level 2 list in the private browsing mode. + type: boolean + setPref: + branch: default + pref: "privacy.annotate_channels.strict_list.pbmode.enabled" + +etpStrictFeatures: + description: Prefs to control the strict ETP features + owner: tihuang@mozilla.com + hasExposure: false + variables: + features: + description: The list of strict ETP features to enable in ETP strict mode. + type: string + setPref: + branch: default + pref: "browser.contentblocking.features.strict" + +thirdPartyCookieBlocking: + description: Prefs to control third-party cookie blocking + owner: tihuang@mozilla.com + hasExposure: false + variables: + enabled: + description: Whether to enable third-party cookie blocking + type: boolean + setPref: + branch: default + pref: "network.cookie.cookieBehavior.optInPartitioning" + enabledPBM: + description: Whether to enable third-party cookie blocking in private browsing mode + type: boolean + setPref: + branch: default + pref: "network.cookie.cookieBehavior.optInPartitioning.pbmode" + +thirdPartyTrackerCookieBlocking: + description: Prefs to control third-party tracker cookie blocking + owner: tihuang@mozilla.com + hasExposure: false + variables: + enabled: + description: Whether to enable third-party tracker cookie blocking. + type: boolean + setPref: + branch: default + pref: "network.cookie.cookieBehavior.trackerCookieBlocking" + +fxaButtonVisibility: + description: Prefs to control the visibility of the Firefox Accounts toolbar button when not signed in. + owner: mconley@mozilla.com + hasExposure: false + variables: + boolean: + description: True if the Firefox Accounts toolbar button should be visible when not signed in. + type: boolean + setPref: + branch: user + pref: identity.fxaccounts.toolbar.defaultVisible + pxiToolbarEnabled: + description: >- + True if we're enabling the PXI dropdown menu for the FxA toolbar button instead of + taking the user straight to login + type: boolean + setPref: + branch: user + pref: identity.fxaccounts.toolbar.pxiToolbarEnabled + monitorEnabled: + description: >- + Toggle the Monitor CTA + type: boolean + setPref: + branch: user + pref: identity.fxaccounts.toolbar.pxiToolbarEnabled.monitorEnabled + relayEnabled: + description: >- + Toggle the Relay CTA + type: boolean + setPref: + branch: user + pref: identity.fxaccounts.toolbar.pxiToolbarEnabled.relayEnabled + vpnEnabled: + description: >- + Toggle the VPN CTA + type: boolean + setPref: + branch: user + pref: identity.fxaccounts.toolbar.pxiToolbarEnabled.vpnEnabled + +syncDecouplingUpdates: + description: Prefs to control the updated Mozilla account panel flow for users without sync enabled. + owner: skhamis@mozilla.com + hasExposure: false + variables: + syncSetup: + description: True if we should show the user the updated sync set-up UI + type: boolean + fallbackPref: identity.fxaccounts.toolbar.syncSetup.enabled + +fxaClientAssociation: + description: Prefs to control the client association ping. + owner: mconley@mozilla.com + hasExposure: false + variables: + pingEnabled: + description: >- + True if the client association ping should be sent. + type: boolean + setPref: + branch: user + pref: identity.fxaccounts.telemetry.clientAssociationPing.enabled + +fxaAppMenuItem: + description: >- + Prefs to control the appearance and copy of the FxA sign-in button in the + AppMenu when signed out. + owner: mconley@mozilla.com + hasExposure: true + exposureDescription: >- + Exposure is recorded when the user is enrolled in an experiment using this + feature and the AppMenu on Firefox Desktop is opened. + variables: + ctaCopyVariant: + description: >- + One of the following values: + - control + - sync-devices + - backup-data + - backup-sync + - mobile + type: string + +fxaAvatarMenuItem: + description: >- + Prefs to control the appearance and copy of the FxA sign-in button in the + FxA avatar menu when signed out. + owner: mconley@mozilla.com + hasExposure: true + exposureDescription: >- + Exposure is recorded when the user is enrolled in an experiment using this + feature and the FxA avatar menu on Firefox Desktop is opened. + variables: + ctaCopyVariant: + description: >- + One of the following values: + - control + - sync-devices + - backup-data + - backup-sync + - mobile + type: string + +legacyHeartbeat: + description: Normandy Heartbeat exposed to Nimbus + owner: beth@mozilla.com + hasExposure: false + schema: + uri: "resource://normandy/schemas/LegacyHeartbeat.schema.json" + path: "toolkit/components/normandy/schemas/LegacyHeartbeat.schema.json" + variables: + survey: + type: json + description: The Heartbeat survey parameters. + +queryStripping: + description: Query parameter stripping anti-tracking feature. + owner: pbz@mozilla.com + hasExposure: false + variables: + enabledNormalBrowsing: + type: boolean + setPref: + branch: default + pref: privacy.query_stripping.enabled + description: Enables / disables URL query string stripping in normal browsing mode. + enabledPrivateBrowsing: + type: boolean + setPref: + branch: default + pref: privacy.query_stripping.enabled.pbmode + description: Enables / disables URL query string stripping in private browsing mode. + allowList: + type: string + setPref: + branch: default + pref: privacy.query_stripping.allow_list + description: >- + List of sites exempt from query stripping. This list will be merged with + records coming from RemoteSettings. + stripList: + type: string + setPref: + branch: default + pref: privacy.query_stripping.strip_list + description: >- + List of query params to be stripped from URIs. This list will be merged + with records coming from RemoteSettings. + +fontvisibility: + description: Control Font Visibility in PBM + owner: tom@mozilla.com + hasExposure: false + variables: + enabledETP: + type: int + setPref: + branch: default + pref: layout.css.font-visibility.trackingprotection + description: Set the Font Visibility level when Enhanced Tracking Protection is enabled + enabledStandard: + type: int + setPref: + branch: default + pref: layout.css.font-visibility.standard + description: Set the Font Visibility level for normal browsing + enabledPBM: + type: int + setPref: + branch: default + pref: layout.css.font-visibility.private + description: Set the Font Visibility level for private browsing (will override ETP) + +fingerprintingProtection: + description: Control Fingerprinting Protection + owner: tihuang@mozilla.com + hasExposure: false + variables: + enabledNormal: + type: boolean + setPref: + branch: default + pref: privacy.fingerprintingProtection + description: Enables / disables fingerprinting protection in normal browsing mode. + enabledPrivate: + type: boolean + setPref: + branch: default + pref: privacy.fingerprintingProtection.pbmode + description: Enables / disables fingerprinting protection in private browsing mode. + overrides: + type: string + setPref: + branch: default + pref: privacy.fingerprintingProtection.overrides + description: >- + The protection overrides to add or remove fingerprinting protection + targets. Please check RFPTargets.inc for all supported targets. + fdlibm_math: + type: boolean + setPref: + branch: default + pref: javascript.options.use_fdlibm_for_sin_cos_tan + description: >- + Uses a different math backend for Math.sin/cos/tan in JavaScript that exposes less entropy + +userCharacteristics: + description: Control user characteristic data collection + owner: tihuang@mozilla.com + hasExposure: false + variables: + currentVersion: + type: int + setPref: + branch: user + pref: toolkit.telemetry.user_characteristics_ping.current_version + description: The current collection version of the user characteristics. + +migrationWizard: + description: Prefs to control the Migration Wizard UI. + owner: mconley@mozilla.com + hasExposure: false + variables: + showImportAll: + description: True if the "Variant 2" of the Migration Wizard browser / profile selection UI should be used. This is only meaningful in the new Migration Wizard. + type: boolean + setPref: + branch: user + pref: browser.migrate.content-modal.import-all.enabled + showPreferencesEntrypoint: + description: True if an entrypoint to the migration wizard should be visible in about:preferences. + type: boolean + setPref: + branch: user + pref: browser.migrate.preferences-entrypoint.enabled + aboutWelcomeBehavior: + description: >- + When migration is kicked off from about:welcome, there are + a few different behaviors that we want to test, controlled + by a preference that is instrumented for Nimbus. The pref + has the following possible states: + + "autoclose": + The user will be directed to the migration wizard in + about:preferences, but once the wizard is dismissed, + the tab will close. + + "embedded": + The migration wizard is embedded in about:welcome. + + "standalone": + The migration wizard will open in a new top-level content + window. + + "default" / other + The user will be directed to the migration wizard in + about:preferences. The tab will not close once the + user closes the wizard. + type: string + setPref: + branch: user + pref: browser.migrate.content-modal.about-welcome-behavior + migrateExtensions: + description: True if importing extensions is enabled. + type: boolean + setPref: + branch: user + pref: browser.migrate.chrome.extensions.enabled + chromeCanRequestPermissions: + description: >- + True if Chrome-based browsers can request read permissions on + platforms where the browser is restricted from reading the contents + of a Chrome-based browser's user data directory. In practice, this + is only relevant to the Linux platform when the browser is installed + as a Snap package. + type: boolean + setPref: + branch: user + pref: browser.migrate.chrome.get_permissions.enabled + +mixedContentUpgrading: + description: Prefs to control whether we upgrade mixed passive content (images, audio, video) from http to https + owner: fbraun@mozilla.com + hasExposure: false + variables: + enabled: + description: True if the mixed content upgrading pref is enabled + type: boolean + setPref: + branch: default + pref: security.mixed_content.upgrade_display_content + image: + description: True if the mixed content upgrading is enabled for images + type: boolean + setPref: + branch: default + pref: security.mixed_content.upgrade_display_content.image + audio: + description: True if the mixed content upgrading is enabled for audio + type: boolean + setPref: + branch: default + pref: security.mixed_content.upgrade_display_content.audio + video: + description: True if the mixed content upgrading is enabled for videos + type: boolean + setPref: + branch: default + pref: security.mixed_content.upgrade_display_content.video + +gc: + description: Prefs that control gc heuristics. + owner: dpalmeiro@mozilla.com + hasExposure: false + variables: + max_nursery_size: + description: Set the maximum size of the GC nursery, in kb. + type: int + setPref: + branch: user + pref: "javascript.options.mem.nursery.max_kb" + min_nursery_size: + description: Set the minimum size of the GC nursery, in kb. + type: int + setPref: + branch: user + pref: "javascript.options.mem.nursery.min_kb" + gc_allocation_threshold_mb: + description: Lower limit for collecting a zone, in MB. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_allocation_threshold_mb" + gc_balanced_heap_limits: + description: Whether balanced heap limits are enabled. + type: boolean + setPref: + branch: user + pref: "javascript.options.mem.gc_balanced_heap_limits" + gc_compacting: + description: Whether compacting GC is enabled. + type: boolean + setPref: + branch: user + pref: "javascript.options.mem.gc_compacting" + gc_generational: + description: Whether generational GC is enabled. + type: boolean + setPref: + branch: user + pref: "javascript.options.mem.gc_generational" + gc_heap_growth_factor: + description: Heap growth parameter for balanced heap limit calculation. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_heap_growth_factor" + gc_helper_thread_ratio: + description: Number of threads to use for parallel GC work. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_helper_thread_ratio" + gc_high_frequency_large_heap_growth: + description: Heap growth factor for large heaps in the high-frequency GC state. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_high_frequency_large_heap_growth" + gc_high_frequency_small_heap_growth: + description: Heap growth factor for small heaps in the high-frequency GC state. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_high_frequency_small_heap_growth" + gc_high_frequency_time_limit_ms: + description: GCs less than this far apart in milliseconds will be + considered high-frequency GCs. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_high_frequency_time_limit_ms" + gc_incremental: + description: Whether incremental GC is enabled. If not, GC will always run to completion. + type: boolean + setPref: + branch: user + pref: "javascript.options.mem.gc_incremental" + incremental_weakmap: + description: Enable incremental weakmap marking. + type: boolean + setPref: + branch: user + pref: "javascript.options.mem.incremental_weakmap" + gc_incremental_slice_ms: + description: Max milliseconds to spend in an incremental GC slice. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_incremental_slice_ms" + gc_large_heap_incremental_limit: + description: Limit of how far over the incremental trigger threshold we allow the + heap to grow before finishing a collection non-incrementally, for large heaps. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_large_heap_incremental_limit" + gc_large_heap_size_min_mb: + description: Lower limit for classifying a heap as large, in MB. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_large_heap_size_min_mb" + gc_low_frequency_heap_growth: + description: Heap growth factor for low frequency GCs. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_low_frequency_heap_growth" + gc_malloc_threshold_base_mb: + description: Set the malloc threshold base value in MB. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_malloc_threshold_base_mb" + gc_max_empty_chunk_count: + description: Do not keep more than this many unused chunks in the free chunk pool. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_max_empty_chunk_count" + gc_max_helper_threads: + description: The maximum number of background threads to use for parallel GC work. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_max_helper_threads" + gc_min_empty_chunk_count: + description: We try to keep at least this many unused chunks in the free chunk + pool at all times, even after a shrinking GC. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_min_empty_chunk_count" + gc_parallel_marking: + description: Enable parallel marking. + type: boolean + setPref: + branch: user + pref: "javascript.options.mem.gc_parallel_marking" + gc_parallel_marking_threshold_mb: + description: The heap size above which to use parallel marking. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_parallel_marking_threshold_mb" + gc_max_parallel_marking_threads: + description: The maximum number of threads to use for parallel marking, if enabled. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_max_parallel_marking_threads" + gc_per_zone: + description: Whether per-zone GC is enabled. If not, all zones are collected every time. + type: boolean + setPref: + branch: user + pref: "javascript.options.mem.gc_per_zone" + gc_small_heap_incremental_limit: + description: Limit of how far over the incremental trigger threshold we allow the heap + to grow before finishing a collection non-incrementally, for small heaps. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_small_heap_incremental_limit" + gc_small_heap_size_max_mb: + description: Upper limit for classifying a heap as small, in MB. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_small_heap_size_max_mb" + gc_urgent_threshold_mb: + description: Set the urgent threshold, in MB. + type: int + setPref: + branch: user + pref: "javascript.options.mem.gc_urgent_threshold_mb" + nursery_eager_collection_threshold_kb: + description: Set the eager collection threshold, in kb, for the nursery. + type: int + setPref: + branch: user + pref: "javascript.options.mem.nursery_eager_collection_threshold_kb" + nursery_eager_collection_threshold_percent: + description: Set the eager collection percent threshold for the nursery. + type: int + setPref: + branch: user + pref: "javascript.options.mem.nursery_eager_collection_threshold_percent" + nursery_eager_collection_timeout_ms: + description: Set the eager collection timeout, in ms, for the nursery. + type: int + setPref: + branch: user + pref: "javascript.options.mem.nursery_eager_collection_timeout_ms" + +jsParallelParsing: + description: Pref to toggle JS parallel parsing. + owner: dpalmeiro@mozilla.com, nbp@mozilla.com + hasExposure: false + variables: + enabled: + description: True to enable parallel parsing. + type: boolean + setPref: + branch: user + pref: "javascript.options.parallel_parsing" + +jitThresholds: + description: Prefs that control jit tier thresholds. + owner: dpalmeiro@mozilla.com, jdemooij@mozilla.com + hasExposure: false + variables: + blinterp_threshold: + description: Set the threshold to enable blinterp compilation. + type: int + setPref: + branch: user + pref: "javascript.options.blinterp.threshold" + baseline_threshold: + description: Set the threshold to enable baseline compilation. + type: int + setPref: + branch: user + pref: "javascript.options.baselinejit.threshold" + ion_threshold: + description: Set the threshold to enable ion compilation. + type: int + setPref: + branch: user + pref: "javascript.options.ion.threshold" + ion_bailout_threshold: + description: Set the ion frequent bailout threshold. + type: int + setPref: + branch: user + pref: "javascript.options.ion.frequent_bailout_threshold" + ion_offthread_compilation: + description: True to enable offthread ion compilations. + type: boolean + setPref: + branch: user + pref: "javascript.options.ion.offthread_compilation" + inlining_max_length: + description: Set the max bytecode length considered for inlining. + type: int + setPref: + branch: user + pref: "javascript.options.inlining_bytecode_max_length" + +jitHintsCache: + description: Pref to toggle the JIT hints cache. + owner: dpalmeiro@mozilla.com + hasExposure: false + variables: + enabled: + description: True to enable the hints cache. + type: boolean + setPref: + branch: user + pref: "javascript.options.jithints" + +raceCacheWithNetwork: + description: Prefs to toggle the race cache with network. + owner: dpalmeiro@mozilla.com, acreskey@mozilla.com + hasExposure: false + variables: + enabled: + description: True to enable the rcwn feature. + type: boolean + setPref: + branch: default + pref: "network.http.rcwn.enabled" + +shopping2023: + description: Prefs to control the 2023 shopping experiment. + owner: jhirsch@mozilla.com + hasExposure: true + exposureDescription: >- + The timing of the exposure event depends on the experiment, but generally + the event is recorded when the user first encounters onboarding UI for + the shopping feature. + variables: + enabled: + description: True if the experience is enabled (experimental treatment group) + type: boolean + fallbackPref: browser.shopping.experience2023.enabled + control: + description: True if the experiment is enabled but experience is disabled (experimental control group) + type: boolean + fallbackPref: browser.shopping.experience2023.control + adsEnabled: + description: True if showing recommended products is enabled + type: boolean + setPref: + branch: default + pref: browser.shopping.experience2023.ads.enabled + adsExposure: + description: True if we want to record ad inventory for opted-in users, even if ads are disabled + type: boolean + setPref: + branch: default + pref: browser.shopping.experience2023.ads.exposure + surveyEnabled: + description: True if showing survey is enabled + type: boolean + fallbackPref: browser.shopping.experience2023.survey.enabled + autoOpenEnabled: + description: True if auto-open behavior for the sidebar is enabled + type: boolean + setPref: + branch: default + pref: browser.shopping.experience2023.autoOpen.enabled + +shoppingOHTTP: + description: Prefs to control the OHTTP URLs used for shopping. + owner: gijs@mozilla.com + hasExposure: false + variables: + ohttpRelayURL: + description: What OHTTP relay URL to use + type: string + setPref: + branch: default + pref: toolkit.shopping.ohttpRelayURL + ohttpConfigURL: + description: URL for the OHTTP config to use + type: string + setPref: + branch: default + pref: toolkit.shopping.ohttpConfigURL + +opaqueResponseBlocking: + description: Prefs to enable Opaque Response Blocking + owner: farre@mozilla.com + hasExposure: true + exposureDescription: Exposure is sent when a response is blocked + variables: + enabled: + description: Whether ORB is enabled + type: boolean + setPref: + branch: user + pref: "browser.opaqueResponseBlocking" + javascriptValidator: + description: Whether JavaScript validation for ORB is enabled + type: boolean + setPref: + branch: user + pref: "browser.opaqueResponseBlocking.javascriptValidator" + filterFetchResponse: + description: Whether filtering of internal responses in the parent ORB is enabled + type: int + setPref: + branch: user + pref: "browser.opaqueResponseBlocking.filterFetchResponse" + mediaExceptionsStrategy: + description: >- + If we partially or wholly allow audio and video MIME types in conflict with spec. + type: int + setPref: + branch: user + pref: "browser.opaqueResponseBlocking.mediaExceptionsStrategy" + +updatePrompt: + description: Prefs to control content and behavior of update notifications + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + Exposure is sent at most once per browsing session when an update + notification prompt is displayed. + variables: + showReleaseNotesLink: + type: boolean + description: >- + If true, the "Learn More" link will be shown in the update prompt. If + false or omitted, the link will only be shown for supported locales. + releaseNotesURL: + type: string + fallbackPref: app.releaseNotesURL.prompt + description: >- + Template for the URL opened when the user clicks the "Learn More" link + in the update prompt. If an empty string, the link will not be shown. + +powerSaver: + description: Prefs to control power saving behaviors + owner: florian@mozilla.com + hasExposure: false + variables: + reduceFrameRates: + type: int + setPref: + branch: user + pref: "gfx.display.max-frame-rate" + description: >- + Limit the number of frames displayed per second. + If omitted, the refresh rate of the screen will be used. + mediaAutoPlay: + type: int + setPref: + branch: user + pref: "media.autoplay.default" + description: >- + Control if media is allowed to auto-play, with and without sound. + backgroundTimerMinTime: + type: int + setPref: + branch: user + pref: "dom.min_background_timeout_value" + description: >- + Limit how frequently timers are allowed to run in background tabs. + backgroundTimerRegenerationRate: + type: int + setPref: + branch: user + pref: "dom.timeout.background_budget_regeneration_rate" + description: >- + Limit how quickly the background tab timer budget regenerates. + +backgroundUpdate: + description: Prefs to control aspects of the background update process. + owner: install-update@mozilla.com + hasExposure: true + exposureDescription: >- + The exposure event is sent when scheduling the background task and both the + feature is enabled and the service registry key (Mozilla Maintenance + Service) is *not* available for this installation. That is the first time + the feature can impact Firefox behaviour and the user experience. + variables: + enableUpdatesForUnelevatedInstallations: + description: >- + Allow the background update process to download and apply updates when + the Mozilla Maintenance Service is unavailable but the installation + directory can be written. + type: boolean + setPref: + branch: user + pref: app.update.background.allowUpdatesForUnelevatedInstallations + +bookmarks: + description: Prefs to control aspects of the bookmarks system. + owner: omc@mozilla.com + hasExposure: false + variables: + enableBookmarksToolbar: + type: string + setPref: + branch: user + pref: browser.toolbars.bookmarks.visibility + description: If the bookmarks toolbar should never, always, or only show on newtab. + showOtherBookmarks: + type: boolean + setPref: + branch: user + pref: browser.toolbars.bookmarks.showOtherBookmarks + description: Display state of the "Other Bookmarks" toolbar button. + +cookieBannerHandling: + description: Automatically handle cookie banners on the user's behalf. + owner: pbz@mozilla.com + hasExposure: false + variables: + modeNormalBrowsing: + type: int + setPref: + branch: default + pref: cookiebanners.service.mode + description: >- + Controls the cookie banner handling mode in normal browsing. + Values: 0 - disabled, 1 - reject all, 2 - reject all with accept all fallback. + modePrivateBrowsing: + type: int + setPref: + branch: default + pref: cookiebanners.service.mode.privateBrowsing + description: >- + Controls the cookie banner handling mode in private browsing. + Values: 0 - disabled, 1 - reject all, 2 - reject all with accept all fallback. + enableGlobalRules: + type: boolean + setPref: + branch: default + pref: cookiebanners.service.enableGlobalRules + description: >- + Enables use of global CookieBannerRules, which apply to all sites. + This enables handling of CMPs across sites without the use of site-specific rules. + enableGlobalRulesSubFrames: + type: boolean + setPref: + branch: default + pref: cookiebanners.service.enableGlobalRules.subFrames + description: >- + Whether global rules are allowed to run in sub-frames. Running query + selectors in every sub-frame may negatively impact performance, but is + required for some CMPs. + enableDetectOnly: + type: boolean + setPref: + branch: default + pref: cookiebanners.service.detectOnly + description: >- + When set to true, cookie banners are detected and detection events are + dispatched, but they will not be handled. + This pref applies to both normal and private browsing windows. + enableFirefoxDesktopUI: + type: boolean + setPref: + branch: default + pref: cookiebanners.ui.desktop.enabled + description: Enables the cookie banner desktop UI. + enablePromo: + type: boolean + setPref: + branch: default + pref: browser.promo.cookiebanners.enabled + description: Enables the cookie banner promo in about:privatebrowsing. + enableDesktopFeatureCallout: + type: boolean + setPref: + branch: default + pref: cookiebanners.ui.desktop.showCallout + description: Enables the cookie banner feature callout on desktop. + +backgroundThreads: + description: Prefs to control MacOS thread priorities for power savings. + owner: kwright@mozilla.com + hasExposure: false + variables: + use_low_power: + description: >- + Use the MacOS QoS libraries to deprioritize select threads. + type: boolean + setPref: + branch: user + pref: threads.use_low_power.enabled + lower_mainthread_priority_in_background: + description: >- + When a browsing context is put in the background and isn't actively playing + media, deprioritize its main thread. + type: boolean + setPref: + branch: user + pref: threads.lower_mainthread_priority_in_background.enabled + +reportBrokenSite: + description: The Report Broken Site feature + owner: twisniewski@mozilla.com + hasExposure: false + variables: + enabled: + type: boolean + setPref: + branch: user + pref: ui.new-webcompat-reporter.enabled + description: >- + Whether Report Broken Site is enabled + sendMoreInfo: + type: boolean + setPref: + branch: user + pref: ui.new-webcompat-reporter.send-more-info-link + description: >- + Whether Report Broken Site shows the send more info link directing + users to webcompat.com (defaults to true for prerelease channels) + reasonDropdown: + type: int + setPref: + branch: user + pref: ui.new-webcompat-reporter.reason-dropdown + description: >- + 0 = do not show the "reason" dropdown + 1 = show an optional "reason" dropdown + 2 = show a required "reason" dropdown + +feltPrivacy: + description: Prefs for Felt Privacy v1 experiments + owner: cmeador@mozilla.com + hasExposure: true + exposureDescription: Exposure when user opens a private browsing window. + variables: + feltPrivacy: + type: boolean + setPref: + branch: default + pref: browser.privatebrowsing.felt-privacy-v1 + description: >- + When true, new styles and copy enabled on about:privatebrowsing. When true, + a toggle for showing or hiding quick suggestions appears in about:preferences. + resetPBMAction: + type: boolean + setPref: + branch: default + pref: browser.privatebrowsing.resetPBM.enabled + description: >- + Enables the reset PBM feature button and confirmation panel. + +phc: + description: Prefs to control the Probabalistic Heap Checker (PHC) + owner: pbone@mozilla.com + hasExposure: false + variables: + phcEnabled: + description: Whether to enable PHC + type: boolean + setPref: + branch: user + pref: memory.phc.enabled + phcMinRamMB: + description: The minimum amount of RAM required to enable PHC + type: int + setPref: + branch: user + pref: memory.phc.min_ram_mb + phcAvgDelayFirst: + description: The delay before the first PHC allocation + type: int + setPref: + branch: user + pref: memory.phc.avg_delay.first + phcAvgDelayNormal: + description: The delay between PHC allocations + type: int + setPref: + branch: user + pref: memory.phc.avg_delay.normal + phcAvgDelayPageReuse: + description: The delay before reusing a PHC page + type: int + setPref: + branch: user + pref: memory.phc.avg_delay.page_reuse + +mailto: + description: Prefs to control aspects of the mailto handler + owner: install-update@mozilla.com + hasExposure: true + exposureDescription: >- + The exposure event is sent when a webmail site calls the + registerProtocolHandler function and when users use mailto links in Firefox. + variables: + dualPrompt: + type: boolean + description: >- + Can be used to toggle the entire feature on and off. + fallbackPref: browser.mailto.dualPrompt + dualPrompt.onLocationChange: + type: boolean + description: >- + Display a reminder prompt for known webmailers if the prompt was not + dismissed before the next visit of that webmailer. + fallbackPref: browser.mailto.dualPrompt.onLocationChange + dualPrompt.dismissXClickMinutes: + type: int + description: >- + This pref controls after how many minutes the mailto prompt can be shown + again, which has been dismissed by clicking the 'X' button before. + fallbackPref: browser.mailto.dualPrompt.dismissXClickMinutes + dualPrompt.dismissNotNowMinutes: + type: int + description: >- + This pref controls after how many minutes the mailto prompt can be shown + again, which has been dismissed by clicking a 'not now' button on it. + fallbackPref: browser.mailto.dualPrompt.dismissNotNowMinutes + +nimbusIsReady: + description: A feature that provides the number of Nimbus is_ready events to send + when Nimbus is ready. + owner: chumphreys@mozilla.com + hasExposure: false + applications: + - firefox-desktop + variables: + eventCount: + description: The number of events that should be sent. + type: int + +nimbusTelemetry: + description: A feature that enables or disables Nimbus telemetry. + owner: chumphreys@mozilla.com + hasExposure: false + applications: + - firefox-desktop + variables: + gleanMetricConfiguration: + description: A Glean metric configuration JSON blob. + type: json + +httpsFirst: + description: >- + Prefs for HTTPS-First, which upgrades all top-level page loads to HTTPS and + provides a automatic fallback to HTTP if the site isn't available via HTTPS. + owner: mjurgens@mozilla.com, seceng-telemetry@mozilla.com + hasExposure: false + variables: + enabled: + description: Enable HTTPS-First + type: boolean + setPref: + branch: default + pref: dom.security.https_first + enabledPbm: + description: Enable HTTPS-First in private browsing only + type: boolean + setPref: + branch: default + pref: dom.security.https_first_pbm + enabledSchemeless: + description: >- + Enables schemeless HTTPS-First, which will only apply HTTPS-First to address + bar inputs without a scheme. This essentially makes HTTPS the default + scheme in the address bar, while providing a fallback to HTTP. + type: boolean + setPref: + branch: default + pref: dom.security.https_first_schemeless + backgroundTimerMs: + description: >- + After a request gets upgraded to HTTPS, specifies the time after which a + second HTTP request is fired to check if the site is available via + HTTPS, but timing out via HTTPS. This also applies to HTTPS-Only, not + just HTTPS-First. + type: int + setPref: + branch: default + pref: dom.security.https_only_fire_http_request_background_timer_ms + +contentRelevancy: + description: >- + A feature for interest-based content relevance ranking and personalization + for Firefox. + owner: disco-team@mozilla.com + hasExposure: false + variables: + enabled: + description: Enable this feature + type: boolean + fallbackPref: toolkit.contentRelevancy.enabled + maxInputUrls: + description: The maximum number of input URLs for interest classification + type: int + minInputUrls: + description: The minimal number of input URLs for interest classification + type: int + timerInterval: + description: >- + The interval (in seconds) of the background update timer for the content + relevancy manager + type: int + setPref: + branch: user + pref: toolkit.contentRelevancy.timerInterval + ingestEnabled: + description: Enable the ingestion through the Rust component + type: boolean + fallbackPref: toolkit.contentRelevancy.ingestEnabled + +backupService: + description: Prefs to control the profile backup service + owner: mconley@mozilla.com + hasExposure: false + variables: + enabled: + type: boolean + setPref: + branch: default + pref: browser.backup.enabled + description: >- + When true, the profile backup service will be initialized soon after + startup. + prefsUIEnabled: + type: boolean + setPref: + branch: default + pref: browser.backup.preferences.ui.enabled + description: >- + When true, the section in about:preferences to control the backup + feature is visible. + sqlitePagesPerStep: + description: >- + The number of database pages to backup per step when backing up an + SQLite database. + type: int + setPref: + branch: user + pref: browser.backup.sqlite.pages_per_step + sqliteStepDelayMs: + description: >- + The delay between SQLite database backup steps in milliseconds. + type: int + setPref: + branch: user + pref: browser.backup.sqlite.step_delay_ms + idleThresholdSeconds: + description: >- + The number of seconds of user idle time to wait for before considering + to schedule a backup. + type: int + setPref: + branch: user + pref: browser.backup.scheduled.idle-threshold-seconds + minTimeBetweenBackupsSeconds: + description: >- + The minimum number of seconds since the last known backup that must + pass before we might schedule a backup. + type: int + setPref: + branch: user + pref: browser.backup.scheduled.minimum-time-between-backups-seconds + +pqcrypto: + description: Prefs that control the use of post-quantum cryptography. + owner: jschanck@mozilla.com + hasExposure: false + variables: + tlsEnableMlkem: + type: boolean + setPref: + branch: default + pref: security.tls.enable_kyber + description: >- + Whether to enable mlkem768x25519 for TLS. + h3EnableMlkem: + type: boolean + setPref: + branch: default + pref: network.http.http3.enable_kyber + description: >- + Whether to enable mlkem768x25519 for H3/QUIC. + sendP256: + type: boolean + setPref: + branch: default + pref: security.tls.client_hello.send_p256_keyshare + description: >- + Whether to send a P256 share in the client hello in QUIC and TLS. + dtlsWebRTCEnableMlkem: + type: boolean + setPref: + branch: default + pref: media.webrtc.enable_pq_dtls + description: >- + Whether to enable mlkem768x25519 for DTLS in WebRTC. + + +dtlsWebRTC: + description: Pref that controls the use of DTLS. + owner: nkulatova@mozilla.com + hasExposure: false + variables: + tlsVersionDTLS: + type: int + setPref: + branch: default + pref: media.peerconnection.dtls.version.max + description: >- + The maximum version of DTLS protocol used in WebRTC (770 = DTLS 1.0, 771 = DTLS 1.2, 772 = DTLS 1.3). + +certCompression: + description: Prefs that control the use of certificate compression decoders. + owner: anna.weine@mozilla.com + hasExposure: false + variables: + tlsEnableZlib: + type: boolean + setPref: + branch: default + pref: security.tls.enable_certificate_compression_zlib + description: >- + Whether to enable Zlib for TLS certificate compression. + tlsEnableBrotli: + type: boolean + setPref: + branch: default + pref: security.tls.enable_certificate_compression_brotli + description: >- + Whether to enable Brotli for TLS certificate compression. + tlsEnableZstd: + type: boolean + setPref: + branch: default + pref: security.tls.enable_certificate_compression_zstd + description: >- + Whether to enable Zstd for TLS certificate compression. + +bounceTrackingProtection: + description: Controls the Bounce Tracking Protection feature. + owner: pbz@mozilla.com + hasExposure: false + variables: + enabled: + type: int + setPref: + branch: default + pref: privacy.bounceTrackingProtection.mode + description: Mode to run the feature in. See nsIBounceTrackingProtection.idl for documentation. + +remoteTabManagement: + description: > + Features that let users manage tabs on other devices that are + connected to the same Mozilla account. + owner: skhamis@mozilla.com + hasExposure: false + variables: + closeTabsEnabled: + description: >- + When true, the user can close tabs on other devices connected to + the same Mozilla account from the synced tabs menu. + type: boolean + fallbackPref: identity.fxaccounts.commands.remoteTabManagement.enabled + +crlite: + description: Prefs that control the use of CRLite + owner: jschanck@mozilla.com + hasExposure: false + variables: + enabled: + type: boolean + setPref: + branch: default + pref: security.remote_settings.crlite_filters.enabled + description: >- + Whether CRLite artifacts will be downloaded. + channel: + type: string + setPref: + branch: default + pref: security.pki.crlite_channel + description: >- + The channel from which CRLite artifacts will be downloaded. + mode: + type: int + setPref: + branch: default + pref: security.pki.crlite_mode + description: >- + How CRLite results will be interpreted. + timestamps_for_coverage: + type: int + setPref: + branch: default + pref: security.pki.crlite_timestamps_for_coverage + description: >- + How many covered timestamps do we need to see before we enforce a CRLite result. + +chatbot: + description: AI chatbot feature configuration + owner: elee@mozilla.com + hasExposure: false + variables: + minVersion: + type: string + description: Minimum Firefox version to apply prefs + prefs: + type: json + description: >- + The prefs to set under browser.ml.chat.* with object keys as the + sub-pref and values objects indicating the desired branch and value + defaulting to clearing the user branch value. + +sidebar: + description: Sidebar feature configuration + owner: elee@mozilla.com + hasExposure: false + variables: + minVersion: + type: string + description: Minimum Firefox version to apply prefs + main.tools: + type: string + description: sidebar.main.tools pref value to set on user branch + revamp: + type: boolean + description: sidebar.revamp pref value to set on user branch + verticalTabs: + type: boolean + description: sidebar.verticalTabs pref value to set on user branch + +fxms_bmb_button: + description: A feature for the Firefox Messaging System Bookmarks Bar button surface + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + Exposure is sent if the message is about to be shown after trigger and + targeting conditions on the message matched. + schema: + uri: chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json + path: browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json + variables: {} + +contentProcessSandbox: + description: Prefs that control the content process sandbox. + owner: bowen@mozilla.com + hasExposure: false + variables: + Level: + description: Content process sandbox level + type: int + setPref: + branch: user + pref: security.sandbox.content.level + +certificateTransparency: + description: Certificate Transparency configuration + owner: dkeeler@mozilla.com + hasExposure: false + variables: + mode: + type: int + setPref: + branch: default + pref: security.pki.certificate_transparency.mode + description: >- + What mode Certificate Transparency is in (0=disable, 1=telemetry only, + 2=enforce). + +setToDefaultPrompt: + description: "Experimental set to default spotlight" + owner: omc@mozilla.com + hasExposure: true + exposureDescription: >- + "Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched." + variables: + showSpotlightPrompt: + description: Show experimental set to default spotlight message instead of default prompt + type: boolean + message: + description: Message to show instead of the default prompt + type: json diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/v134.0.2/schemas/browser/components/asrouter/content-src/schemas/BackgroundTaskMessagingExperiment.schema.json b/experimenter/experimenter/features/manifests/firefox-desktop/v134.0.2/schemas/browser/components/asrouter/content-src/schemas/BackgroundTaskMessagingExperiment.schema.json new file mode 100644 index 0000000000..5fe86f9617 --- /dev/null +++ b/experimenter/experimenter/features/manifests/firefox-desktop/v134.0.2/schemas/browser/components/asrouter/content-src/schemas/BackgroundTaskMessagingExperiment.schema.json @@ -0,0 +1,344 @@ +{ + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json", + "title": "Messaging Experiment", + "description": "A Firefox Messaging System message.", + "if": { + "type": "object", + "properties": { + "template": { + "const": "multi" + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/MultiMessage" + }, + "else": { + "$ref": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/TemplatedMessage" + }, + "$defs": { + "ToastNotification": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///ToastNotification.schema.json", + "title": "ToastNotification", + "description": "A template for toast notifications displayed by the Alert service.", + "allOf": [ + { + "$ref": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "content": { + "type": "object", + "properties": { + "title": { + "$ref": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/localizableText", + "description": "Id of localized string or message override of toast notification title" + }, + "body": { + "$ref": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/localizableText", + "description": "Id of localized string or message override of toast notification body" + }, + "icon_url": { + "description": "The URL of the image used as an icon of the toast notification.", + "type": "string", + "format": "moz-url-format" + }, + "image_url": { + "description": "The URL of an image to be displayed as part of the notification.", + "type": "string", + "format": "moz-url-format" + }, + "launch_url": { + "description": "The URL to launch when the notification or an action button is clicked.", + "type": "string", + "format": "moz-url-format" + }, + "launch_action": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "The launch action to be performed when Firefox is launched." + }, + "data": { + "type": "object" + } + }, + "required": [ + "type" + ], + "additionalProperties": true + }, + "requireInteraction": { + "type": "boolean", + "description": "Whether the toast notification should remain active until the user clicks or dismisses it, rather than closing automatically." + }, + "tag": { + "type": "string", + "description": "An identifying tag for the toast notification." + }, + "data": { + "type": "object", + "description": "Arbitrary data associated with the toast notification." + }, + "actions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "$ref": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/localizableText", + "description": "The action text to be shown to the user." + }, + "action": { + "type": "string", + "description": "Opaque identifer that identifies action." + }, + "iconURL": { + "type": "string", + "format": "uri", + "description": "URL of an icon to display with the action." + }, + "windowsSystemActivationType": { + "type": "boolean", + "description": "Whether to have Windows process the given `action`." + }, + "launch_action": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "The launch action to be performed when Firefox is launched." + }, + "data": { + "type": "object" + } + }, + "required": [ + "type" + ], + "additionalProperties": true + } + }, + "required": [ + "action", + "title" + ], + "additionalProperties": true + } + } + }, + "additionalProperties": true, + "required": [ + "title", + "body" + ] + }, + "template": { + "type": "string", + "const": "toast_notification" + } + }, + "required": [ + "content", + "targeting", + "template", + "trigger" + ], + "additionalProperties": true + }, + "Message": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The message identifier" + }, + "groups": { + "description": "Array of preferences used to control `enabled` status of the group. If any is `false` the group is disabled.", + "type": "array", + "items": { + "type": "string", + "description": "Preference name" + } + }, + "template": { + "type": "string", + "description": "Which messaging template this message is using.", + "enum": [ + "toast_notification" + ] + }, + "frequency": { + "type": "object", + "description": "An object containing frequency cap information for a message.", + "properties": { + "lifetime": { + "type": "integer", + "description": "The maximum lifetime impressions for a message.", + "minimum": 1, + "maximum": 100 + }, + "custom": { + "type": "array", + "description": "An array of custom frequency cap definitions.", + "items": { + "description": "A frequency cap definition containing time and max impression information", + "type": "object", + "properties": { + "period": { + "type": "integer", + "description": "Period of time in milliseconds (e.g. 86400000 for one day)" + }, + "cap": { + "type": "integer", + "description": "The maximum impressions for the message within the defined period.", + "minimum": 1, + "maximum": 100 + } + }, + "required": [ + "period", + "cap" + ] + } + } + } + }, + "priority": { + "description": "The priority of the message. If there are two competing messages to show, the one with the highest priority will be shown", + "type": "integer" + }, + "order": { + "description": "The order in which messages should be shown. Messages will be shown in increasing order.", + "type": "integer" + }, + "targeting": { + "description": "A JEXL expression representing targeting information", + "type": "string" + }, + "trigger": { + "description": "An action to trigger potentially showing the message", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "A string identifying the trigger action" + }, + "params": { + "type": "array", + "description": "An optional array of string parameters for the trigger action", + "items": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] + } + } + }, + "required": [ + "id" + ] + }, + "provider": { + "description": "An identifier for the provider of this message, such as \"cfr\" or \"preview\".", + "type": "string" + } + }, + "additionalProperties": true, + "dependentRequired": { + "content": [ + "id", + "template" + ], + "template": [ + "id", + "content" + ] + } + }, + "localizedText": { + "type": "object", + "properties": { + "string_id": { + "description": "Id of localized string to be rendered.", + "type": "string" + } + }, + "required": [ + "string_id" + ] + }, + "localizableText": { + "description": "Either a raw string or an object containing the string_id of the localized text", + "oneOf": [ + { + "type": "string", + "description": "The string to be rendered." + }, + { + "$ref": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/localizedText" + } + ] + }, + "TemplatedMessage": { + "description": "An FxMS message of one of a variety of types.", + "type": "object", + "allOf": [ + { + "$ref": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/Message" + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "toast_notification" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/ToastNotification" + } + } + ] + }, + "MultiMessage": { + "description": "An object containing an array of messages.", + "type": "object", + "properties": { + "template": { + "type": "string", + "const": "multi" + }, + "messages": { + "type": "array", + "description": "An array of messages.", + "items": { + "$ref": "chrome://browser/content/asrouter/schemas/BackgroundTaskMessagingExperiment.schema.json#/$defs/TemplatedMessage" + } + } + }, + "required": [ + "template", + "messages" + ] + } + } +} diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/v134.0.2/schemas/browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json b/experimenter/experimenter/features/manifests/firefox-desktop/v134.0.2/schemas/browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json new file mode 100644 index 0000000000..6067f38398 --- /dev/null +++ b/experimenter/experimenter/features/manifests/firefox-desktop/v134.0.2/schemas/browser/components/asrouter/content-src/schemas/MessagingExperiment.schema.json @@ -0,0 +1,1623 @@ +{ + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json", + "title": "Messaging Experiment", + "description": "A Firefox Messaging System message.", + "if": { + "type": "object", + "properties": { + "template": { + "const": "multi" + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/MultiMessage" + }, + "else": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/TemplatedMessage" + }, + "$defs": { + "BookmarksBarButton": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///BookmarksBarButton.schema.json", + "title": "BookmarksBarButton", + "description": "A template with a label and a special message action (currently only supports OPEN_URL)", + "allOf": [ + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "template": { + "type": "string", + "const": "bookmarks_bar_button" + }, + "content": { + "type": "object", + "properties": { + "action": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Action dispatched by the button." + }, + "data": { + "type": "object" + } + }, + "required": [ + "type" + ], + "additionalProperties": true + } + }, + "additionalProperties": true + } + }, + "additionalProperties": true, + "required": [ + "targeting" + ] + }, + "CFRUrlbarChiclet": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///CFRUrlbarChiclet.schema.json", + "title": "CFRUrlbarChiclet", + "description": "A template with a chiclet button with text.", + "allOf": [ + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "content": { + "type": "object", + "properties": { + "category": { + "type": "string", + "description": "Attribute used for different groups of messages from the same provider" + }, + "layout": { + "type": "string", + "description": "Describes how content should be displayed.", + "enum": [ + "chiclet_open_url" + ] + }, + "bucket_id": { + "type": "string", + "description": "A bucket identifier for the addon. This is used in order to anonymize telemetry for history-sensitive targeting." + }, + "notification_text": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "The text in the small blue chicklet that appears in the URL bar. This can be a reference to a localized string in Firefox or just a plain string." + }, + "active_color": { + "type": "string", + "description": "Background color of the button" + }, + "action": { + "type": "object", + "properties": { + "url": { + "description": "The page to open when the button is clicked.", + "type": "string", + "format": "moz-url-format" + }, + "where": { + "description": "Should it open in a new tab or the current tab", + "type": "string", + "enum": [ + "current", + "tabshifted" + ] + } + }, + "additionalProperties": true, + "required": [ + "url", + "where" + ] + } + }, + "additionalProperties": true, + "required": [ + "layout", + "category", + "bucket_id", + "notification_text", + "action" + ] + }, + "template": { + "type": "string", + "const": "cfr_urlbar_chiclet" + } + }, + "required": [ + "targeting", + "trigger" + ] + }, + "ExtensionDoorhanger": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///ExtensionDoorhanger.schema.json", + "title": "ExtensionDoorhanger", + "description": "A template with a heading, addon icon, title and description. No markup allowed.", + "allOf": [ + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "content": { + "type": "object", + "properties": { + "category": { + "type": "string", + "description": "Attribute used for different groups of messages from the same provider" + }, + "layout": { + "type": "string", + "description": "Attribute used for different groups of messages from the same provider", + "enum": [ + "short_message", + "icon_and_message", + "addon_recommendation" + ] + }, + "anchor_id": { + "type": "string", + "description": "A DOM element ID that the pop-over will be anchored." + }, + "alt_anchor_id": { + "type": "string", + "description": "An alternate DOM element ID that the pop-over will be anchored." + }, + "bucket_id": { + "type": "string", + "description": "A bucket identifier for the addon. This is used in order to anonymize telemetry for history-sensitive targeting." + }, + "skip_address_bar_notifier": { + "type": "boolean", + "description": "Skip the 'Recommend' notifier and show directly." + }, + "persistent_doorhanger": { + "type": "boolean", + "description": "Prevent the doorhanger from being dismissed if user interacts with the page or switches between applications." + }, + "show_in_private_browsing": { + "type": "boolean", + "description": "Whether to allow the message to be shown in private browsing mode. Defaults to false." + }, + "notification_text": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "The text in the small blue chicklet that appears in the URL bar. This can be a reference to a localized string in Firefox or just a plain string." + }, + "info_icon": { + "type": "object", + "description": "The small icon displayed in the top right corner of the pop-over. Should be 19x19px, svg or png. Defaults to a small question mark.", + "properties": { + "label": { + "oneOf": [ + { + "type": "object", + "properties": { + "attributes": { + "type": "object", + "properties": { + "tooltiptext": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "Text for button tooltip used to provide information about the doorhanger." + } + }, + "required": [ + "tooltiptext" + ] + } + }, + "required": [ + "attributes" + ] + }, + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizedText" + } + ] + }, + "sumo_path": { + "type": "string", + "description": "Last part of the path in the URL to the support page with the information about the doorhanger.", + "examples": [ + "extensionpromotions", + "extensionrecommendations" + ] + } + } + }, + "learn_more": { + "type": "string", + "description": "Last part of the path in the SUMO URL to the support page with the information about the doorhanger.", + "examples": [ + "extensionpromotions", + "extensionrecommendations" + ] + }, + "heading_text": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "The larger heading text displayed in the pop-over. This can be a reference to a localized string in Firefox or just a plain string." + }, + "icon": { + "$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/linkUrl", + "description": "The icon displayed in the pop-over. Should be 32x32px or 64x64px and png/svg." + }, + "icon_dark_theme": { + "type": "string", + "description": "Pop-over icon, dark theme variant. Should be 32x32px or 64x64px and png/svg." + }, + "icon_class": { + "type": "string", + "description": "CSS class of the pop-over icon." + }, + "addon": { + "description": "Addon information including AMO URL.", + "type": "object", + "properties": { + "id": { + "$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/plainText", + "description": "Unique addon ID" + }, + "title": { + "$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/plainText", + "description": "Addon name" + }, + "author": { + "$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/plainText", + "description": "Addon author" + }, + "icon": { + "$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/linkUrl", + "description": "The icon displayed in the pop-over. Should be 64x64px and png/svg." + }, + "rating": { + "type": "string", + "description": "Star rating" + }, + "users": { + "type": "string", + "description": "Installed users" + }, + "amo_url": { + "$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/linkUrl", + "description": "Link that offers more information related to the addon." + } + }, + "required": [ + "title", + "author", + "icon", + "amo_url" + ] + }, + "text": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "The body text displayed in the pop-over. This can be a reference to a localized string in Firefox or just a plain string." + }, + "descriptionDetails": { + "description": "Additional information and steps on how to use", + "type": "object", + "properties": { + "steps": { + "description": "Array of string_ids", + "type": "array", + "items": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizedText", + "description": "Id of string to localized addon description" + } + } + }, + "required": [ + "steps" + ] + }, + "buttons": { + "description": "The label and functionality for the buttons in the pop-over.", + "type": "object", + "properties": { + "primary": { + "type": "object", + "properties": { + "label": { + "type": "object", + "oneOf": [ + { + "properties": { + "value": { + "$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/plainText", + "description": "Button label override used when a localized version is not available." + }, + "attributes": { + "type": "object", + "properties": { + "accesskey": { + "type": "string", + "description": "A single character to be used as a shortcut key for the secondary button. This should be one of the characters that appears in the button label." + } + }, + "required": [ + "accesskey" + ], + "description": "Button attributes." + } + }, + "required": [ + "value", + "attributes" + ] + }, + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizedText" + } + ], + "description": "Id of localized string or message override." + }, + "action": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Action dispatched by the button." + }, + "data": { + "properties": { + "url": { + "type": "string", + "$comment": "This is dynamically generated from the addon.id. See CFRPageActions.sys.mjs", + "description": "URL used in combination with the primary action dispatched." + } + } + } + } + } + } + }, + "secondary": { + "type": "array", + "items": { + "type": "object", + "properties": { + "label": { + "type": "object", + "oneOf": [ + { + "properties": { + "value": { + "allOf": [ + { + "$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/plainText" + }, + { + "description": "Button label override used when a localized version is not available." + } + ] + }, + "attributes": { + "type": "object", + "properties": { + "accesskey": { + "type": "string", + "description": "A single character to be used as a shortcut key for the secondary button. This should be one of the characters that appears in the button label." + } + }, + "required": [ + "accesskey" + ], + "description": "Button attributes." + } + }, + "required": [ + "value", + "attributes" + ] + }, + { + "properties": { + "string_id": { + "allOf": [ + { + "$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/plainText" + }, + { + "description": "Id of localized string for button" + } + ] + } + }, + "required": [ + "string_id" + ] + } + ], + "description": "Id of localized string or message override." + }, + "action": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Action dispatched by the button." + }, + "data": { + "properties": { + "url": { + "allOf": [ + { + "$ref": "file:///ExtensionDoorhanger.schema.json#/$defs/linkUrl" + }, + { + "description": "URL used in combination with the primary action dispatched." + } + ] + } + } + } + } + } + } + } + } + } + } + }, + "additionalProperties": true, + "required": [ + "layout", + "bucket_id", + "heading_text", + "text", + "buttons" + ], + "if": { + "properties": { + "skip_address_bar_notifier": { + "anyOf": [ + { + "const": "false" + }, + { + "const": null + } + ] + } + } + }, + "then": { + "required": [ + "category", + "notification_text" + ] + } + }, + "template": { + "type": "string", + "enum": [ + "cfr_doorhanger", + "milestone_message" + ] + } + }, + "additionalProperties": true, + "required": [ + "targeting", + "trigger" + ], + "$defs": { + "plainText": { + "description": "Plain text (no HTML allowed)", + "type": "string" + }, + "linkUrl": { + "description": "Target for links or buttons", + "type": "string", + "format": "uri" + } + } + }, + "InfoBar": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///InfoBar.schema.json", + "title": "InfoBar", + "description": "A template with an image, test and buttons.", + "allOf": [ + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "content": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Should the message be global (persisted across tabs) or local (disappear when switching to a different tab).", + "enum": [ + "global", + "tab" + ] + }, + "text": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "The text show in the notification box." + }, + "priority": { + "description": "Infobar priority level https://searchfox.org/mozilla-central/rev/3aef835f6cb12e607154d56d68726767172571e4/toolkit/content/widgets/notificationbox.js#387", + "type": "number", + "minumum": 0, + "exclusiveMaximum": 10 + }, + "buttons": { + "type": "array", + "items": { + "type": "object", + "properties": { + "label": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "The text label of the button." + }, + "primary": { + "type": "boolean", + "description": "Is this the primary button?" + }, + "accessKey": { + "type": "string", + "description": "Keyboard shortcut letter." + }, + "action": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Action dispatched by the button." + }, + "data": { + "type": "object" + } + }, + "required": [ + "type" + ], + "additionalProperties": true + }, + "supportPage": { + "type": "string", + "description": "A page title on SUMO to link to" + } + }, + "required": [ + "label", + "action" + ], + "additionalProperties": true + } + } + }, + "additionalProperties": true, + "required": [ + "text", + "buttons" + ] + }, + "template": { + "type": "string", + "const": "infobar" + } + }, + "additionalProperties": true, + "required": [ + "targeting", + "trigger" + ], + "$defs": { + "plainText": { + "description": "Plain text (no HTML allowed)", + "type": "string" + }, + "linkUrl": { + "description": "Target for links or buttons", + "type": "string", + "format": "uri" + } + } + }, + "MenuMessage": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///MenuMessage.schema.json", + "title": "MenuMessage", + "description": "A template for messages that appear within our menus.", + "allOf": [ + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "content": { + "type": "object", + "properties": { + "messageType": { + "type": "string", + "description": "The subtype of the message.", + "enum": [ + "fxa_cta" + ] + }, + "primaryText": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "The primary text for the message, which offers the value proposition to the user." + }, + "secondaryText": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "The second text for the message, which offers more detail on the value proposition to the user." + }, + "closeAction": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Action dispatched by the button." + }, + "data": { + "type": "object" + } + }, + "required": [ + "type" + ], + "additionalProperties": true, + "description": "The action to take upon clicking the close button." + }, + "primaryAction": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Action dispatched by the button." + }, + "data": { + "type": "object" + } + }, + "required": [ + "type" + ], + "additionalProperties": true, + "description": "The action to take upon clicking the primary action button." + }, + "primaryActionText": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "The label for the primary action." + }, + "imageURL": { + "type": "string", + "description": "URL for image to use with the content." + }, + "imageVerticalOffset": { + "type": "number", + "description": "The margin-block-start value to apply to the image in pixels." + } + } + }, + "template": { + "type": "string", + "const": "menu_message" + }, + "testingTriggerContext": { + "type": "string", + "enum": [ + "app_menu", + "pxi_menu" + ] + } + }, + "additionalProperties": true + }, + "NewtabPromoMessage": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///NewtabPromoMessage.schema.json", + "title": "PBNewtabPromoMessage", + "description": "Message shown on the private browsing newtab page.", + "allOf": [ + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "content": { + "type": "object", + "properties": { + "hideDefault": { + "type": "boolean", + "description": "Should we hide the default promo after the experiment promo is dismissed." + }, + "infoEnabled": { + "type": "boolean", + "description": "Should we show the info section." + }, + "infoIcon": { + "type": "string", + "description": "Icon shown in the left side of the info section. Default is the private browsing icon." + }, + "infoTitle": { + "type": "string", + "description": "Is the title in the info section enabled." + }, + "infoTitleEnabled": { + "type": "boolean", + "description": "Is the title in the info section enabled." + }, + "infoBody": { + "type": "string", + "description": "Text content in the info section." + }, + "infoLinkText": { + "type": "string", + "description": "Text for the link in the info section." + }, + "infoLinkUrl": { + "type": "string", + "description": "URL for the info section link.", + "format": "moz-url-format" + }, + "promoEnabled": { + "type": "boolean", + "description": "Should we show the promo section." + }, + "promoType": { + "type": "string", + "description": "Promo type used to determine if promo should show to a given user", + "enum": [ + "FOCUS", + "VPN", + "PIN", + "COOKIE_BANNERS", + "OTHER" + ] + }, + "promoSectionStyle": { + "type": "string", + "description": "Sets the position of the promo section. Possible values are: top, below-search, bottom. Default bottom.", + "enum": [ + "top", + "below-search", + "bottom" + ] + }, + "promoTitle": { + "type": "string", + "description": "The text content of the promo section." + }, + "promoTitleEnabled": { + "type": "boolean", + "description": "Should we show text content in the promo section." + }, + "promoLinkText": { + "type": "string", + "description": "The text of the link in the promo box." + }, + "promoHeader": { + "type": "string", + "description": "The title of the promo section." + }, + "promoButton": { + "type": "object", + "properties": { + "action": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Action dispatched by the button." + }, + "data": { + "type": "object" + } + }, + "required": [ + "type" + ], + "additionalProperties": true + } + }, + "required": [ + "action" + ] + }, + "promoLinkType": { + "type": "string", + "description": "Type of promo link type. Possible values: link, button. Default is link.", + "enum": [ + "link", + "button" + ] + }, + "promoImageLarge": { + "type": "string", + "description": "URL for image used on the left side of the promo box, larger, showcases some feature. Default off.", + "format": "uri" + }, + "promoImageSmall": { + "type": "string", + "description": "URL for image used on the right side of the promo box, smaller, usually a logo. Default off.", + "format": "uri" + } + }, + "additionalProperties": true, + "allOf": [ + { + "if": { + "properties": { + "promoEnabled": { + "const": true + } + }, + "required": [ + "promoEnabled" + ] + }, + "then": { + "required": [ + "promoButton" + ] + } + }, + { + "if": { + "properties": { + "infoEnabled": { + "const": true + } + }, + "required": [ + "infoEnabled" + ] + }, + "then": { + "required": [ + "infoLinkText" + ], + "if": { + "properties": { + "infoTitleEnabled": { + "const": true + } + }, + "required": [ + "infoTitleEnabled" + ] + }, + "then": { + "required": [ + "infoTitle" + ] + } + } + } + ] + }, + "template": { + "type": "string", + "const": "pb_newtab" + } + }, + "additionalProperties": true, + "required": [ + "targeting" + ] + }, + "Spotlight": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///Spotlight.schema.json", + "title": "Spotlight", + "description": "A template with an image, title, content and two buttons.", + "allOf": [ + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "content": { + "type": "object", + "properties": { + "template": { + "type": "string", + "description": "Specify the layout template for the Spotlight", + "const": "multistage" + }, + "backdrop": { + "type": "string", + "description": "Background css behind modal content" + }, + "logo": { + "type": "object", + "properties": { + "imageURL": { + "type": "string", + "description": "URL for image to use with the content" + }, + "imageId": { + "type": "string", + "description": "The ID for a remotely hosted image" + }, + "size": { + "type": "string", + "description": "The logo size." + } + }, + "additionalProperties": true + }, + "screens": { + "type": "array", + "description": "Collection of individual screen content" + }, + "transitions": { + "type": "boolean", + "description": "Show transitions within and between screens" + }, + "disableHistoryUpdates": { + "type": "boolean", + "description": "Don't alter the browser session's history stack - used with messaging surfaces like Feature Callouts" + }, + "startScreen": { + "type": "integer", + "description": "Index of first screen to show from message, defaulting to 0" + }, + "no-rdm": { + "type": "boolean", + "description": "If true, prevents the spotlight from entering responsive design mode at widths less than 800px" + } + }, + "additionalProperties": true + }, + "template": { + "type": "string", + "description": "Specify whether the surface is shown as a Spotlight modal or an in-surface Feature Callout dialog", + "enum": [ + "spotlight", + "feature_callout" + ] + } + }, + "additionalProperties": true, + "required": [ + "targeting" + ] + }, + "ToastNotification": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///ToastNotification.schema.json", + "title": "ToastNotification", + "description": "A template for toast notifications displayed by the Alert service.", + "allOf": [ + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "content": { + "type": "object", + "properties": { + "title": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "Id of localized string or message override of toast notification title" + }, + "body": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "Id of localized string or message override of toast notification body" + }, + "icon_url": { + "description": "The URL of the image used as an icon of the toast notification.", + "type": "string", + "format": "moz-url-format" + }, + "image_url": { + "description": "The URL of an image to be displayed as part of the notification.", + "type": "string", + "format": "moz-url-format" + }, + "launch_url": { + "description": "The URL to launch when the notification or an action button is clicked.", + "type": "string", + "format": "moz-url-format" + }, + "launch_action": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "The launch action to be performed when Firefox is launched." + }, + "data": { + "type": "object" + } + }, + "required": [ + "type" + ], + "additionalProperties": true + }, + "requireInteraction": { + "type": "boolean", + "description": "Whether the toast notification should remain active until the user clicks or dismisses it, rather than closing automatically." + }, + "tag": { + "type": "string", + "description": "An identifying tag for the toast notification." + }, + "data": { + "type": "object", + "description": "Arbitrary data associated with the toast notification." + }, + "actions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizableText", + "description": "The action text to be shown to the user." + }, + "action": { + "type": "string", + "description": "Opaque identifer that identifies action." + }, + "iconURL": { + "type": "string", + "format": "uri", + "description": "URL of an icon to display with the action." + }, + "windowsSystemActivationType": { + "type": "boolean", + "description": "Whether to have Windows process the given `action`." + }, + "launch_action": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "The launch action to be performed when Firefox is launched." + }, + "data": { + "type": "object" + } + }, + "required": [ + "type" + ], + "additionalProperties": true + } + }, + "required": [ + "action", + "title" + ], + "additionalProperties": true + } + } + }, + "additionalProperties": true, + "required": [ + "title", + "body" + ] + }, + "template": { + "type": "string", + "const": "toast_notification" + } + }, + "required": [ + "content", + "targeting", + "template", + "trigger" + ], + "additionalProperties": true + }, + "ToolbarBadgeMessage": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///ToolbarBadgeMessage.schema.json", + "title": "ToolbarBadgeMessage", + "description": "A template that specifies to which element in the browser toolbar to add a notification.", + "allOf": [ + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "content": { + "type": "object", + "properties": { + "target": { + "type": "string" + }, + "action": { + "type": "object", + "properties": { + "id": { + "type": "string" + } + }, + "additionalProperties": true, + "required": [ + "id" + ], + "description": "Optional action to take in addition to showing the notification" + }, + "delay": { + "type": "number", + "description": "Optional delay in ms after which to show the notification" + }, + "badgeDescription": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizedText", + "description": "This is used in combination with the badged button to offer a text based alternative to the visual badging. Example 'New Feature: What's New'" + } + }, + "additionalProperties": true, + "required": [ + "target" + ] + }, + "template": { + "type": "string", + "const": "toolbar_badge" + } + }, + "additionalProperties": true, + "required": [ + "targeting" + ] + }, + "UpdateAction": { + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "file:///UpdateAction.schema.json", + "title": "UpdateActionMessage", + "description": "A template for messages that execute predetermined actions.", + "allOf": [ + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message" + } + ], + "type": "object", + "properties": { + "content": { + "type": "object", + "properties": { + "action": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "data": { + "type": "object", + "description": "Additional data provided as argument when executing the action", + "properties": { + "url": { + "type": "string", + "description": "URL data to be used as argument to the action" + }, + "expireDelta": { + "type": "number", + "description": "Expiration timestamp to be used as argument to the action" + } + } + } + }, + "additionalProperties": true, + "description": "Optional action to take in addition to showing the notification", + "required": [ + "id", + "data" + ] + } + }, + "additionalProperties": true, + "required": [ + "action" + ] + }, + "template": { + "type": "string", + "const": "update_action" + } + }, + "required": [ + "targeting" + ] + }, + "Message": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The message identifier" + }, + "groups": { + "description": "Array of preferences used to control `enabled` status of the group. If any is `false` the group is disabled.", + "type": "array", + "items": { + "type": "string", + "description": "Preference name" + } + }, + "template": { + "type": "string", + "description": "Which messaging template this message is using.", + "enum": [ + "bookmarks_bar_button", + "cfr_urlbar_chiclet", + "cfr_doorhanger", + "milestone_message", + "infobar", + "menu_message", + "pb_newtab", + "spotlight", + "feature_callout", + "toast_notification", + "toolbar_badge", + "update_action" + ] + }, + "frequency": { + "type": "object", + "description": "An object containing frequency cap information for a message.", + "properties": { + "lifetime": { + "type": "integer", + "description": "The maximum lifetime impressions for a message.", + "minimum": 1, + "maximum": 100 + }, + "custom": { + "type": "array", + "description": "An array of custom frequency cap definitions.", + "items": { + "description": "A frequency cap definition containing time and max impression information", + "type": "object", + "properties": { + "period": { + "type": "integer", + "description": "Period of time in milliseconds (e.g. 86400000 for one day)" + }, + "cap": { + "type": "integer", + "description": "The maximum impressions for the message within the defined period.", + "minimum": 1, + "maximum": 100 + } + }, + "required": [ + "period", + "cap" + ] + } + } + } + }, + "priority": { + "description": "The priority of the message. If there are two competing messages to show, the one with the highest priority will be shown", + "type": "integer" + }, + "order": { + "description": "The order in which messages should be shown. Messages will be shown in increasing order.", + "type": "integer" + }, + "targeting": { + "description": "A JEXL expression representing targeting information", + "type": "string" + }, + "trigger": { + "description": "An action to trigger potentially showing the message", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "A string identifying the trigger action" + }, + "params": { + "type": "array", + "description": "An optional array of string parameters for the trigger action", + "items": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] + } + } + }, + "required": [ + "id" + ] + }, + "provider": { + "description": "An identifier for the provider of this message, such as \"cfr\" or \"preview\".", + "type": "string" + } + }, + "additionalProperties": true, + "dependentRequired": { + "content": [ + "id", + "template" + ], + "template": [ + "id", + "content" + ] + } + }, + "localizedText": { + "type": "object", + "properties": { + "string_id": { + "description": "Id of localized string to be rendered.", + "type": "string" + } + }, + "required": [ + "string_id" + ] + }, + "localizableText": { + "description": "Either a raw string or an object containing the string_id of the localized text", + "oneOf": [ + { + "type": "string", + "description": "The string to be rendered." + }, + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/localizedText" + } + ] + }, + "TemplatedMessage": { + "description": "An FxMS message of one of a variety of types.", + "type": "object", + "allOf": [ + { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Message" + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "bookmarks_bar_button" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/BookmarksBarButton" + } + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "cfr_urlbar_chiclet" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/CFRUrlbarChiclet" + } + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "cfr_doorhanger", + "milestone_message" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/ExtensionDoorhanger" + } + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "infobar" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/InfoBar" + } + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "menu_message" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/MenuMessage" + } + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "pb_newtab" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/NewtabPromoMessage" + } + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "spotlight", + "feature_callout" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/Spotlight" + } + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "toast_notification" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/ToastNotification" + } + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "toolbar_badge" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/ToolbarBadgeMessage" + } + }, + { + "if": { + "type": "object", + "properties": { + "template": { + "type": "string", + "enum": [ + "update_action" + ] + } + }, + "required": [ + "template" + ] + }, + "then": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/UpdateAction" + } + } + ] + }, + "MultiMessage": { + "description": "An object containing an array of messages.", + "type": "object", + "properties": { + "template": { + "type": "string", + "const": "multi" + }, + "messages": { + "type": "array", + "description": "An array of messages.", + "items": { + "$ref": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json#/$defs/TemplatedMessage" + } + } + }, + "required": [ + "template", + "messages" + ] + } + } +} diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/v134.0.2/schemas/toolkit/components/nimbus/schemas/PrefFlipsFeature.schema.json b/experimenter/experimenter/features/manifests/firefox-desktop/v134.0.2/schemas/toolkit/components/nimbus/schemas/PrefFlipsFeature.schema.json new file mode 100644 index 0000000000..9fa5acc7c9 --- /dev/null +++ b/experimenter/experimenter/features/manifests/firefox-desktop/v134.0.2/schemas/toolkit/components/nimbus/schemas/PrefFlipsFeature.schema.json @@ -0,0 +1,48 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "prefs": { + "description": "The prefs to set", + "type": "object", + "patternProperties": { + ".*": { + "type": "object", + "properties": { + "branch": { + "description": "The branch the pref should be set on.", + "type": "string", + "enum": ["user", "default"] + }, + "value": { + "description": "The value of the pref. Set to null to clear prefs.", + "type": ["string", "integer", "boolean", "null"] + } + }, + "required": ["branch", "value"], + "allOf": [ + { + "description": "Prevent clearing the default branch", + "if": { + "properties": { + "branch": { + "const": "default" + } + } + }, + "then": { + "properties": { + "value": { + "type": ["string", "integer", "boolean"] + } + } + } + } + ] + } + } + } + }, + "required": ["prefs"], + "additionalProperties": false +} diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/v134.0.2/schemas/toolkit/components/normandy/schemas/LegacyHeartbeat.schema.json b/experimenter/experimenter/features/manifests/firefox-desktop/v134.0.2/schemas/toolkit/components/normandy/schemas/LegacyHeartbeat.schema.json new file mode 100644 index 0000000000..6915fc9b71 --- /dev/null +++ b/experimenter/experimenter/features/manifests/firefox-desktop/v134.0.2/schemas/toolkit/components/normandy/schemas/LegacyHeartbeat.schema.json @@ -0,0 +1,73 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Legacy (Normandy) Heartbeat, via Nimbus", + "description": "The schema for the Legacy Heartbeat Nimbus feature.", + "type": "object", + "properties": { + "survey": { + "$comment": "Hearbeat arguments are nested under survey to prevent simultaneous rollouts and experiments from overriding eachothers optional variables", + "type": "object", + "properties": { + "repeatOption": { + "type": "string", + "enum": ["once", "xdays", "nag"], + "description": "Determines how often a prompt is shown executes.", + "default": "once" + }, + "repeatEvery": { + "description": "For repeatOption=xdays, how often (in days) the prompt is displayed.", + "default": null, + "type": ["number", "null"] + }, + "includeTelemetryUUID": { + "type": "boolean", + "description": "Include unique user ID in post-answer-url and Telemetry", + "default": false + }, + "surveyId": { + "description": "Slug uniquely identifying this survey in telemetry", + "type": "string" + }, + "message": { + "description": "Message to show to the user", + "type": "string" + }, + "engagementButtonLabel": { + "description": "Text for the engagement button. If specified, this button will be shown instead of rating stars.", + "default": null, + "type": ["string", "null"] + }, + "thanksMessage": { + "description": "Thanks message to show to the user after they've rated Firefox", + "type": "string" + }, + "postAnswerUrl": { + "description": "URL to redirect the user to after rating Firefox or clicking the engagement button", + "default": null, + "type": ["string", "null"] + }, + "learnMoreMessage": { + "description": "Message to show to the user to learn more", + "default": null, + "type": ["string", "null"] + }, + "learnMoreUrl": { + "description": "URL to show to the user when they click Learn More", + "default": null, + "type": ["string", "null"] + } + }, + "required": [ + "surveyId", + "message", + "thanksMessage", + "postAnswerUrl", + "learnMoreMessage", + "learnMoreUrl" + ], + "additionalProperties": false + } + }, + "required": ["survey"], + "additionalProperties": false +} diff --git a/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml b/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml index 2a9faf2fb2..cc1178ad06 100644 --- a/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml @@ -13,7 +13,7 @@ focus/klar-v131.1: b7dca2271b14988837524a30eb154d91eb5e4912 focus/klar-v132.0: d9ed6134db59ff456d343e2bb211aefd040319ac focus/klar-v133.0: a3372669a06fa684d3c5945c317d6787e3125303 focus/klar-v134.0: be550d94c2c7bc8b8902cdf7fe542a64e73a381a -main: e9f02a05b9664d45bd82394e8f371f4474f2c20d +main: 3137c1235e6af34e577436ac87c44f6127980696 release/v124: da250bed9e19c4978d4400d6d404cb312e33636e release/v125: a3e1e0773a00009e08d95726fd518ab642255ccd release/v126: 6f305409b4af68e8404401a2caad8cb0da9a0494 diff --git a/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml b/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml index 76f39beee7..4ebc83301b 100644 --- a/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml @@ -1,4 +1,4 @@ -main: e9f02a05b9664d45bd82394e8f371f4474f2c20d +main: 3137c1235e6af34e577436ac87c44f6127980696 release/v117: 43b690c450066d4dde1b2ccb93ed3714d244d502 release/v118: 89a7ea3c3372e5a4ef5b3c5b85499d26198d0524 release/v119: 7dc381f991c6d2a983c3ba7f0cffd880e8c29e7b From 538a6506155230ef32df28439afef3c8688d9409 Mon Sep 17 00:00:00 2001 From: dataops-ci-bot <59976087+dataops-ci-bot@users.noreply.github.com> Date: Tue, 14 Jan 2025 09:06:40 -0800 Subject: [PATCH 31/36] chore(nimbus): Update Firefox Versions (#11996) Co-authored-by: Benjamin Forehand Jr --- experimenter/tests/firefox_desktop_beta_build.env | 2 +- experimenter/tests/firefox_desktop_release_build.env | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/experimenter/tests/firefox_desktop_beta_build.env b/experimenter/tests/firefox_desktop_beta_build.env index a86c609cc1..e6e7531184 100644 --- a/experimenter/tests/firefox_desktop_beta_build.env +++ b/experimenter/tests/firefox_desktop_beta_build.env @@ -1 +1 @@ -FIREFOX_DESKTOP_BETA_TASK_ID="csKnB62OTs6om0Nwll-Hzw" +FIREFOX_DESKTOP_BETA_TASK_ID="YbgJUVkOS6qFd2Vdnl9hug" diff --git a/experimenter/tests/firefox_desktop_release_build.env b/experimenter/tests/firefox_desktop_release_build.env index 13462a74d2..8da08dda65 100644 --- a/experimenter/tests/firefox_desktop_release_build.env +++ b/experimenter/tests/firefox_desktop_release_build.env @@ -1 +1 @@ -FIREFOX_DESKTOP_RELEASE_VERSION_ID="133.0.3" +FIREFOX_DESKTOP_RELEASE_VERSION_ID="134.0" From 050c5043dbd6e363a4bde940ab196c4a1768c3c4 Mon Sep 17 00:00:00 2001 From: dataops-ci-bot <59976087+dataops-ci-bot@users.noreply.github.com> Date: Tue, 14 Jan 2025 12:43:28 -0800 Subject: [PATCH 32/36] chore(nimbus): Update External Configs (#12043) SUMMARY: SUCCESS: fenix at master (40e3b6a049ba53e75a5ad906cde175ed84f9e948) version None fenix at master (40e3b6a049ba53e75a5ad906cde175ed84f9e948) version 136.0.0 fenix at beta (9565531878ceeaf734ed7711d6681fe8ead96374) version 135.0.0 fenix at release (8275040d808c4b15c7d8842a737505e9ed1b8fdc) version 134.0.2 firefox_ios at main (703ef66d8f452f927a2d84aafef35084d79370ce) version None firefox_ios at release/v134 (58f809c3c0717fffaef3bf9443b2c1e3e3a86a0f) version 134.2.0 firefox_ios at main (703ef66d8f452f927a2d84aafef35084d79370ce) version 136.0.0 focus_android at main (fe8a71cd70ad5674abe1824fe11dc78372b736c2) version None focus_ios at main (703ef66d8f452f927a2d84aafef35084d79370ce) version None focus_ios at release/v134 (58f809c3c0717fffaef3bf9443b2c1e3e3a86a0f) version 134.2.0 focus_ios at main (703ef66d8f452f927a2d84aafef35084d79370ce) version 136.0.0 monitor_cirrus at main (ca3bbf37f95cacf40f97d8ff7ac9cf02312a003d) version None mozillavpn_backend_cirrus at main (86963e1fe3fbe3aaee3aa3776efad50a85c516e2) version None firefox_accounts_cirrus at main (4b3c1be59b53a31062687391c8930652e2c843fc) version None firefox_desktop at central (6b0b18434da4cb5c9031a09bf081d6761c3618e2) version None firefox_desktop at central (6b0b18434da4cb5c9031a09bf081d6761c3618e2) version 136.0.0 firefox_desktop at beta (4be78759691ce5e8084e98a6bcffb2253f838f5f) version 135.0.0 firefox_desktop at release (1deebf110046bedfc02eaeb8353ca3835e2fa3a9) version 134.0.2 CACHED: firefox_ios at release/v131 (7444df581b62d357df12ddc3c90d821d940efbb8) version 131.5.0 (cached) firefox_ios at release/v132 (cb318d0061ec6354167ecc1968020d5d75f1bffc) version 132.2.0 (cached) firefox_ios at release/v133 (7c651ce29e94c6389af7a69ec6b5c44251976e92) version 133.5.0 (cached) firefox_ios at release/v135 (98fbe880bdf41a84fbc23b3cb4b99966647b5438) version 135.0.0 (cached) focus_android at releases_v121 (979fbe8d7fe04a9b09fe657bb787fda6f4d5ab42) version 121.1.1 (cached) focus_android at releases_v122 (1fcbfc41dba53965481a0e4d4725833bf3669dce) version 122.1.1 (cached) focus_android at releases_v123 (5a38e0cb4499f659a5fff308fa1deee653c0318b) version 123.1.1 (cached) focus_android at releases_v124 (0ad8d97fb3ab2ec6b9bb3905ee742900a4b9325d) version 124.2.1 (cached) focus_android at releases_v125 (2b43ab8069abac2bfee4b609e734c0207876a2ac) version 125.3.1 (cached) focus_android at focus-v125.3.0 (9f2990415376f169eb0053fceb329b70b4421bcb) version 125.3.0 (cached) focus_android at focus-v125.2.0 (d1c6eeb4167fc8ffed02cdfd3138fa696381d548) version 125.2.0 (cached) focus_android at main (fe8a71cd70ad5674abe1824fe11dc78372b736c2) version 125.0.0 (cached) focus_android at focus-v124.2.0 (7a0e399c7bc4faae43ce70ddc201c7899498d1b5) version 124.2.0 (cached) focus_android at focus-v124.1.0 (516df33ca96e950af1bf791893cd16d7add61c5d) version 124.1.0 (cached) focus_android at focus-v124.0 (5afe87a5bbb92f7ecf990a2fbc8095503a47c272) version 124.0.0 (cached) focus_android at focus-v123.1.0 (cb7c807e0fb5bc08131415e2e5ecef9da658d410) version 123.1.0 (cached) focus_android at focus-v123.0 (f5f378e2c05c9d69a5088c112c14fdea507d1c65) version 123.0.0 (cached) focus_android at focus-v122.1.0 (0d665405685c43c9266a3de65f16eabb832bb908) version 122.1.0 (cached) focus_android at focus-v122.0.1 (c67c9e840c00ec348a6a27adedad28feb54aa4a2) version 122.0.1 (cached) focus_android at focus-v122.0 (b49c4f23804d23cc727b8f70c061dccd64d720bc) version 122.0.0 (cached) focus_android at focus-v121.1.0 (62d5117f7996cc8862fdbdc0cb4a1dd5cdebedd6) version 121.1.0 (cached) focus_android at focus-v121.0.1 (fd4d2513324712e91577d8be18797e64089d3cf1) version 121.0.1 (cached) focus_android at focus-v121.0 (1955f8455fa2cac1b2080af9360996c06df5b4dd) version 121.0.0 (cached) focus_ios at release/v131 (7444df581b62d357df12ddc3c90d821d940efbb8) version 131.5.0 (cached) focus_ios at release/v132 (cb318d0061ec6354167ecc1968020d5d75f1bffc) version 132.2.0 (cached) focus_ios at release/v133 (7c651ce29e94c6389af7a69ec6b5c44251976e92) version 133.5.0 (cached) focus_ios at release/v135 (98fbe880bdf41a84fbc23b3cb4b99966647b5438) version 135.0.0 (cached) focus_ios at focus/klar-v134.0 (be550d94c2c7bc8b8902cdf7fe542a64e73a381a) version 134.0.0 (cached) focus_ios at focus/klar-v133.0 (a3372669a06fa684d3c5945c317d6787e3125303) version 133.0.0 (cached) focus_ios at focus/klar-v132.0 (d9ed6134db59ff456d343e2bb211aefd040319ac) version 132.0.0 (cached) focus_ios at focus/klar-v131.1 (b7dca2271b14988837524a30eb154d91eb5e4912) version 131.1.0 (cached) focus_ios at focus/klar-v131.0 (34d92c8df1b1522a1da88c23879b439d763ec133) version 131.0.0 (cached) firefox_desktop at esr115 (54237eecf7beefa9390fddbef45941cd844b9db9) version 115.20.0 (cached) firefox_desktop at esr128 (c2fe3dd80e493387d1f266022f11b30a726f38d8) version 128.7.0 (cached) Circle CI Task: https://circleci.com/gh/mozilla/experimenter/274635 --- .../features/manifests/fenix/.ref-cache.yaml | 6 +- .../manifests/firefox-desktop/.ref-cache.yaml | 6 +- .../manifests/focus-ios/.ref-cache.yaml | 4 +- .../focus-ios/v134.2.0/beta.fml.yaml | 21 + .../focus-ios/v134.2.0/developer.fml.yaml | 21 + .../focus-ios/v134.2.0/experimenter.yaml | 17 + .../focus-ios/v134.2.0/release.fml.yaml | 21 + .../features/manifests/ios/.ref-cache.yaml | 4 +- .../manifests/ios/v134.2.0/beta.fml.yaml | 1034 ++++++++++++++++ .../manifests/ios/v134.2.0/developer.fml.yaml | 1044 +++++++++++++++++ .../manifests/ios/v134.2.0/experimenter.yaml | 332 ++++++ .../manifests/ios/v134.2.0/release.fml.yaml | 1016 ++++++++++++++++ 12 files changed, 3516 insertions(+), 10 deletions(-) create mode 100644 experimenter/experimenter/features/manifests/focus-ios/v134.2.0/beta.fml.yaml create mode 100644 experimenter/experimenter/features/manifests/focus-ios/v134.2.0/developer.fml.yaml create mode 100644 experimenter/experimenter/features/manifests/focus-ios/v134.2.0/experimenter.yaml create mode 100644 experimenter/experimenter/features/manifests/focus-ios/v134.2.0/release.fml.yaml create mode 100644 experimenter/experimenter/features/manifests/ios/v134.2.0/beta.fml.yaml create mode 100644 experimenter/experimenter/features/manifests/ios/v134.2.0/developer.fml.yaml create mode 100644 experimenter/experimenter/features/manifests/ios/v134.2.0/experimenter.yaml create mode 100644 experimenter/experimenter/features/manifests/ios/v134.2.0/release.fml.yaml diff --git a/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml b/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml index c0000661f4..a6cc42b623 100644 --- a/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml @@ -1,3 +1,3 @@ -beta: 5e7a223f7309b04c4b7b29d64ec24e4251e5ef60 -master: eb80f267aabbf90ac66ebbed77b6d33592eb2be0 -release: 2299d1d3cb7d7f2df856ef274f8df5e75b87500a +beta: 9565531878ceeaf734ed7711d6681fe8ead96374 +master: 40e3b6a049ba53e75a5ad906cde175ed84f9e948 +release: 8275040d808c4b15c7d8842a737505e9ed1b8fdc diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml b/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml index 6aac3792f3..f686bbf783 100644 --- a/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml @@ -1,5 +1,5 @@ -beta: 05abdaa663670b484c696082d5a69ee999f25730 -central: 234c9429e537609d3f10c999f7fc808af688ec3d +beta: 4be78759691ce5e8084e98a6bcffb2253f838f5f +central: 6b0b18434da4cb5c9031a09bf081d6761c3618e2 esr115: 54237eecf7beefa9390fddbef45941cd844b9db9 esr128: c2fe3dd80e493387d1f266022f11b30a726f38d8 -release: 2f6aed4fe4581fede29aca4e12d3c3f45cb44d76 +release: 1deebf110046bedfc02eaeb8353ca3835e2fa3a9 diff --git a/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml b/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml index cc1178ad06..2b54d55328 100644 --- a/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml @@ -13,7 +13,7 @@ focus/klar-v131.1: b7dca2271b14988837524a30eb154d91eb5e4912 focus/klar-v132.0: d9ed6134db59ff456d343e2bb211aefd040319ac focus/klar-v133.0: a3372669a06fa684d3c5945c317d6787e3125303 focus/klar-v134.0: be550d94c2c7bc8b8902cdf7fe542a64e73a381a -main: 3137c1235e6af34e577436ac87c44f6127980696 +main: 703ef66d8f452f927a2d84aafef35084d79370ce release/v124: da250bed9e19c4978d4400d6d404cb312e33636e release/v125: a3e1e0773a00009e08d95726fd518ab642255ccd release/v126: 6f305409b4af68e8404401a2caad8cb0da9a0494 @@ -24,5 +24,5 @@ release/v130: a48ec1b1f0219e1987bb38bc4f6b838f37dc6f12 release/v131: 7444df581b62d357df12ddc3c90d821d940efbb8 release/v132: cb318d0061ec6354167ecc1968020d5d75f1bffc release/v133: 7c651ce29e94c6389af7a69ec6b5c44251976e92 -release/v134: a19590e788dbb236292c88126468c59b66f20dc3 +release/v134: 58f809c3c0717fffaef3bf9443b2c1e3e3a86a0f release/v135: 98fbe880bdf41a84fbc23b3cb4b99966647b5438 diff --git a/experimenter/experimenter/features/manifests/focus-ios/v134.2.0/beta.fml.yaml b/experimenter/experimenter/features/manifests/focus-ios/v134.2.0/beta.fml.yaml new file mode 100644 index 0000000000..46b77ec1d0 --- /dev/null +++ b/experimenter/experimenter/features/manifests/focus-ios/v134.2.0/beta.fml.yaml @@ -0,0 +1,21 @@ +--- +version: 1.0.0 +about: + description: The root level Feature Manifest for Focus for iOS +channels: + - beta +features: + nimbus-validation: + description: A tiny feature to validate that Nimbus is working + variables: + bold-tip-title: + description: Make the tips title label bold + type: Boolean + default: true + onboarding-variables: + description: A collection of variables about onboarding + variables: + show-new-onboarding: + description: Should the v2 of the onboarding be shown. + type: Boolean + default: false diff --git a/experimenter/experimenter/features/manifests/focus-ios/v134.2.0/developer.fml.yaml b/experimenter/experimenter/features/manifests/focus-ios/v134.2.0/developer.fml.yaml new file mode 100644 index 0000000000..36e01f7f33 --- /dev/null +++ b/experimenter/experimenter/features/manifests/focus-ios/v134.2.0/developer.fml.yaml @@ -0,0 +1,21 @@ +--- +version: 1.0.0 +about: + description: The root level Feature Manifest for Focus for iOS +channels: + - developer +features: + nimbus-validation: + description: A tiny feature to validate that Nimbus is working + variables: + bold-tip-title: + description: Make the tips title label bold + type: Boolean + default: true + onboarding-variables: + description: A collection of variables about onboarding + variables: + show-new-onboarding: + description: Should the v2 of the onboarding be shown. + type: Boolean + default: true diff --git a/experimenter/experimenter/features/manifests/focus-ios/v134.2.0/experimenter.yaml b/experimenter/experimenter/features/manifests/focus-ios/v134.2.0/experimenter.yaml new file mode 100644 index 0000000000..f544374809 --- /dev/null +++ b/experimenter/experimenter/features/manifests/focus-ios/v134.2.0/experimenter.yaml @@ -0,0 +1,17 @@ +--- +nimbus-validation: + description: A tiny feature to validate that Nimbus is working + hasExposure: true + exposureDescription: "" + variables: + bold-tip-title: + type: boolean + description: Make the tips title label bold +onboarding-variables: + description: A collection of variables about onboarding + hasExposure: true + exposureDescription: "" + variables: + show-new-onboarding: + type: boolean + description: Should the v2 of the onboarding be shown. diff --git a/experimenter/experimenter/features/manifests/focus-ios/v134.2.0/release.fml.yaml b/experimenter/experimenter/features/manifests/focus-ios/v134.2.0/release.fml.yaml new file mode 100644 index 0000000000..5eabdc2f80 --- /dev/null +++ b/experimenter/experimenter/features/manifests/focus-ios/v134.2.0/release.fml.yaml @@ -0,0 +1,21 @@ +--- +version: 1.0.0 +about: + description: The root level Feature Manifest for Focus for iOS +channels: + - release +features: + nimbus-validation: + description: A tiny feature to validate that Nimbus is working + variables: + bold-tip-title: + description: Make the tips title label bold + type: Boolean + default: true + onboarding-variables: + description: A collection of variables about onboarding + variables: + show-new-onboarding: + description: Should the v2 of the onboarding be shown. + type: Boolean + default: false diff --git a/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml b/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml index 4ebc83301b..997b3823d8 100644 --- a/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml @@ -1,4 +1,4 @@ -main: 3137c1235e6af34e577436ac87c44f6127980696 +main: 703ef66d8f452f927a2d84aafef35084d79370ce release/v117: 43b690c450066d4dde1b2ccb93ed3714d244d502 release/v118: 89a7ea3c3372e5a4ef5b3c5b85499d26198d0524 release/v119: 7dc381f991c6d2a983c3ba7f0cffd880e8c29e7b @@ -16,7 +16,7 @@ release/v130: a48ec1b1f0219e1987bb38bc4f6b838f37dc6f12 release/v131: 7444df581b62d357df12ddc3c90d821d940efbb8 release/v132: cb318d0061ec6354167ecc1968020d5d75f1bffc release/v133: 7c651ce29e94c6389af7a69ec6b5c44251976e92 -release/v134: a19590e788dbb236292c88126468c59b66f20dc3 +release/v134: 58f809c3c0717fffaef3bf9443b2c1e3e3a86a0f release/v135: 98fbe880bdf41a84fbc23b3cb4b99966647b5438 v117.0: 3b275ab1e4ccef769d84437033c0c68acfd2df8a v117.1: 55ddcf473a65d106d43f6d2ae5af4076d6d03688 diff --git a/experimenter/experimenter/features/manifests/ios/v134.2.0/beta.fml.yaml b/experimenter/experimenter/features/manifests/ios/v134.2.0/beta.fml.yaml new file mode 100644 index 0000000000..9b11398d84 --- /dev/null +++ b/experimenter/experimenter/features/manifests/ios/v134.2.0/beta.fml.yaml @@ -0,0 +1,1034 @@ +--- +version: 1.0.0 +about: + description: The root level Feature Manifest for Firefox for iOS +channels: + - beta +features: + account-settings-redux-feature: + description: "This feature is for managing the roll out of the Account Settings Redux implementation\n" + variables: + enabled: + description: "Enables the feature\n" + type: Boolean + default: false + address-autofill-edit: + description: This property defines if the address editing is enabled in Settings + variables: + status: + description: "If true, we will allow user to edit the address" + type: Boolean + default: false + bookmark-refactor-feature: + description: "The Feature for managing the roll out of the Bookmark refactor feature\n" + variables: + enabled: + description: "Enables the bookmark refactor feature\n" + type: Boolean + default: false + contextual-hint-feature: + description: This set holds all features pertaining to contextual hints. + variables: + features-enabled: + description: "This property provides a lookup table of whether specific contextual hints are enabled.\n" + type: "Map" + default: + toolbar-hint: true + credit-card-autofill: + description: This property defines the credit card autofill feature + variables: + credit-card-autofill-status: + description: "If true, we will allow user to use the credit autofill feature" + type: Boolean + default: true + felt-privacy-feature: + description: The feature that enhances private browsing mode + variables: + felt-deletion-enabled: + description: "If true, enable Felt Deletion part of Felt Privacy" + type: Boolean + default: false + simplified-ui-enabled: + description: "If true, enable simplified UI part of Felt Privacy" + type: Boolean + default: false + firefox-suggest-feature: + description: Configuration for the Firefox Suggest feature. + variables: + available-suggestions-types: + description: "A map of suggestion types to booleans that indicate whether or not the provider should return suggestions of those types.\n" + type: "Map" + default: + amp: true + ampMobile: false + wikipedia: true + status: + description: "Whether the feature is enabled. When Firefox Suggest is enabled, Firefox will download and store new search suggestions in the background, and show additional Search settings to control which suggestions appear in the awesomebar. When Firefox Suggest is disabled, Firefox will not download new suggestions, and hide the additional Search settings.\n" + type: Boolean + default: false + general-app-features: + description: The feature that contains feature flags for the entire application + variables: + report-site-issue: + description: This property defines whether or not the feature is enabled + type: GeneralFeature + default: + status: true + glean-server-knobs: + description: A feature that provides server-side configurations for Glean metrics (aka Server Knobs). + variables: + metrics-enabled: + description: "A map of metric base-identifiers to booleans representing the state of the 'enabled' flag for that metric." + type: "Map" + default: {} + homepage-rebuild-feature: + description: "This feature is for managing the roll out of the Homepage rebuild feature\n" + variables: + enabled: + description: "If true, enables the feature\n" + type: Boolean + default: false + homescreenFeature: + description: The homescreen that the user goes to when they press home or new tab. + variables: + prefer-switch-to-open-tab: + description: "Enables the feature to automatically switch to an existing tab with the same content instead of opening a new one.\n" + type: Boolean + default: false + sections-enabled: + description: "This property provides a lookup table of whether or not the given section should be enabled. If the section is enabled, it should be toggleable in the settings screen, and on by default.\n" + type: "Map" + default: + jump-back-in: true + recent-explorations: false + login-autofill: + description: This property defines the login autofill feature for automatically filling in usernames and passwords. + variables: + login-autofill-status: + description: "If true, allows the user to use the login autofill feature for usernames and passwords." + type: Boolean + default: true + menu-refactor-feature: + description: "Controls the menu refactor feature\n" + variables: + enabled: + description: "Controls which menu users will see\n" + type: Boolean + default: false + menu-hint: + description: "If true, enables the menu contextual hint.\n" + type: Boolean + default: false + messaging: + description: "The in-app messaging system\n" + documentation: + - name: User documentation + url: "https://experimenter.info/messaging/mobile-messaging" + contacts: + - jhugman@mozilla.com + - brennie@mozilla.com + - gbuciu@mozilla.com + - wteichmann@mozilla.com + events: + - "https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_shown" + - "https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_clicked" + - "https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_expired" + - "https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_dismissed" + - "https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_malformed" + variables: + actions: + description: A growable map of action URLs. + type: "Map" + default: + OPEN_SETTINGS: "://deep-link?url=settings/general" + OPEN_SETTINGS_NEW_TAB: "://deep-link?url=settings/newtab" + OPEN_SETTINGS_HOMESCREEN: "://deep-link?url=settings/homepage" + OPEN_SETTINGS_WALLPAPERS: "://deep-link?url=settings/wallpaper" + OPEN_SETTINGS_EMAIL: "://deep-link?url=settings/mailto" + OPEN_SETTINGS_SEARCH_ENGINE: "://deep-link?url=settings/search" + OPEN_SETTINGS_PRIVACY: "://deep-link?url=settings/clear-private-data" + OPEN_SETTINGS_FXA: "://deep-link?url=settings/fxa" + OPEN_SETTINGS_THEME: "://deep-link?url=settings/theme" + OPEN_URL: "://open-url" + VIEW_BOOKMARKS: "://deep-link?url=homepanel/bookmarks" + VIEW_TOP_SITES: "://deep-link?url=homepanel/top-sites" + VIEW_READING_LIST: "://deep-link?url=homepanel/reading-list" + VIEW_HISTORY: "://deep-link?url=homepanel/history" + VIEW_DOWNLOADS: "://deep-link?url=homepanel/downloads" + ENABLE_PRIVATE_BROWSING: "://deep-link?url=homepanel/new-private-tab" + OPEN_NEW_TAB: "://deep-link?url=homepanel/new-tab" + MAKE_DEFAULT_BROWSER: "://deep-link?url=default-browser/system-settings" + MAKE_DEFAULT_BROWSER_WITH_TUTORIAL: "://deep-link?url=default-browser/tutorial" + OPEN_SHARE_SHEET: "://share-sheet" + string-alias: ActionName + message-under-experiment: + description: "Deprecated. Please use \"experiment\": \"{experiment}\" instead." + type: Option + default: ~ + messages: + description: "A growable collection of messages, where the Key is the message identifier and the value is its associated MessageData.\n" + type: "Map" + default: + default-browser: + surface: new-tab-card + style: FALLBACK + trigger-if-all: + - SUPPORTS_DEFAULT_BROWSER + - ON_FOURTH_LAUNCH_THIS_YEAR + except-if-any: + - I_AM_DEFAULT_BROWSER + title: Default Browser/DefaultBrowserCard.Title + text: Default Browser/DefaultBrowserCard.Description + button-label: Default Browser/DefaultBrowserCard.Button.v2 + action: MAKE_DEFAULT_BROWSER_WITH_TUTORIAL + homepage-microsurvey-message: + surface: microsurvey + style: MICROSURVEY + trigger-if-all: + - SECOND_HOMEPAGE_VIEW + title: Microsurvey/Microsurvey.Prompt.TitleLabel.v127 + text: How satisfied are you with your Firefox homepage? + button-label: Microsurvey/Microsurvey.Prompt.Button.v127 + microsurveyConfig: + utm-content: homepage + icon: homeLarge + options: + - Microsurvey/Microsurvey.Survey.Options.VerySatisfied.v132 + - Microsurvey/Microsurvey.Survey.Options.Satisfied.v132 + - Microsurvey/Microsurvey.Survey.Options.Neutral.v132 + - Microsurvey/Microsurvey.Survey.Options.Dissatisfied.v132 + - Microsurvey/Microsurvey.Survey.Options.VeryDissatisfied.v132 + - Microsurvey/Microsurvey.Survey.Options.NotApplicable.v132 + string-alias: MessageKey + on-control: + description: What should be displayed when a control message is selected. + type: ControlMessageBehavior + default: show-next-message + styles: + description: "A map of styles to configure message appearance.\n" + type: "Map" + default: + FALLBACK: + priority: 40 + max-display-count: 20 + DEFAULT: + priority: 50 + max-display-count: 5 + MICROSURVEY: + priority: 50 + max-display-count: 1 + NOTIFICATION: + priority: 50 + max-display-count: 1 + PERSISTENT: + priority: 50 + max-display-count: 20 + SURVEY: + priority: 55 + max-display-count: 10 + WARNING: + priority: 60 + max-display-count: 10 + URGENT: + priority: 100 + max-display-count: 10 + string-alias: StyleName + triggers: + description: "A collection of out the box trigger expressions. Each entry maps to a valid JEXL expression.\n" + type: "Map" + default: + ALWAYS: "true" + NEVER: "false" + USER_RECENTLY_INSTALLED: days_since_install < 7 + USER_RECENTLY_UPDATED: days_since_update < 7 && days_since_install != days_since_update + USER_TIER_ONE_COUNTRY: "('US' in locale || 'GB' in locale || 'CA' in locale || 'DE' in locale || 'FR' in locale)" + USER_EN_SPEAKER: "'en' in locale" + USER_ES_SPEAKER: "'es' in locale" + USER_DE_SPEAKER: "'de' in locale" + USER_FR_SPEAKER: "'fr' in locale" + DEVICE_ANDROID: "os == 'Android'" + DEVICE_IOS: "os == 'iOS'" + DAY_1_AFTER_INSTALL: days_since_install == 1 + DAY_2_AFTER_INSTALL: days_since_install == 2 + DAY_3_AFTER_INSTALL: days_since_install == 3 + DAY_4_AFTER_INSTALL: days_since_install == 4 + DAY_5_AFTER_INSTALL: days_since_install == 5 + MORE_THAN_24H_SINCE_INSTALLED_OR_UPDATED: days_since_update >= 1 + NOT_LAUNCHED_YESTERDAY: "'app_cycle.foreground'|eventLastSeen('Days', 1) > 1" + AFTER_THREE_LAUNCHES_THIS_WEEK: "'app_cycle.foreground'|eventSum('Weeks', 1, 0) >= 3" + I_AM_DEFAULT_BROWSER: is_default_browser + I_AM_NOT_DEFAULT_BROWSER: is_default_browser == false + SUPPORTS_DEFAULT_BROWSER: "os_version|versionCompare('14.!') >= 0" + INACTIVE_NEW_USER: is_inactive_new_user + ALLOWED_TIPS_NOTIFICATIONS: allowed_tips_notifications + FXA_CURRENTLY_SIGNED_IN: is_fxa_signed_in == true + SECOND_HOMEPAGE_VIEW: "'homepage_viewed'|eventSum('Years', 4, 0) >= 2" + ON_FOURTH_LAUNCH_THIS_YEAR: "'app_cycle.foreground'|eventSum('Years', 1, 0) > 3" + string-alias: TriggerName + ~~experiment: + description: Not to be set by experiment. + type: ExperimentSlug + default: "{experiment}" + string-alias: ExperimentSlug + allow-coenrollment: true + microsurvey-feature: + description: "A feature that shows the microsurvey for users to interact with and submit responses.\n" + variables: + enabled: + description: "If true, the feature is active.\n" + type: Boolean + default: false + native-error-page-feature: + description: "This feature is for managing the roll out of the native error page feature\n" + variables: + enabled: + description: "If true, the feature is active.\n" + type: Boolean + default: false + no_internet_connection_error: + description: "This feature is for managing the roll out of the no interet connection native error page feature\n" + type: Boolean + default: false + night-mode-feature: + description: "Describes the night mode feature's configuration\n" + variables: + enabled: + description: "Whether night mode is available for users or not\n" + type: Boolean + default: true + onboarding-framework-feature: + description: "The new onboarding framework feature that will allow onboarding to be experimentable through initial experiments.\n" + variables: + cards: + description: "The list of available cards for onboarding.\n" + type: "Map" + default: + welcome: + card-type: basic + order: 10 + title: Onboarding/Onboarding.Welcome.Title.TreatementA.v120 + body: Onboarding/Onboarding.Welcome.Description.TreatementA.v120 + image: welcome-globe + link: + title: Onboarding/Onboarding.Welcome.Link.Action.v114 + url: "https://www.mozilla.org/privacy/firefox/" + buttons: + primary: + title: Onboarding/Onboarding.Welcome.ActionTreatementA.v114 + action: open-instructions-popup + secondary: + title: Onboarding/Onboarding.Welcome.Skip.v114 + action: forward-one-card + instructions-popup: + title: Onboarding/DefaultBrowserPopup.Title.v114 + button-title: Onboarding/DefaultBrowserPopup.ButtonTitle.v114 + button-action: open-ios-fx-settings + instructions: + - Onboarding/DefaultBrowserPopup.FirstLabel.v114 + - Onboarding/DefaultBrowserPopup.SecondLabel.v114 + - Onboarding/DefaultBrowserPopup.ThirdLabel.v114 + onboarding-type: fresh-install + prerequisites: + - ALWAYS + notification-permissions: + card-type: basic + order: 30 + title: Onboarding/Onboarding.Notification.Title.v120 + body: Onboarding/Onboarding.Notification.Description.v120 + image: notifications + buttons: + primary: + title: Onboarding/Onboarding.Notification.TurnOnNotifications.Action.v114 + action: request-notifications + secondary: + title: Onboarding/Onboarding.Notification.Skip.Action.v115 + action: forward-one-card + onboarding-type: fresh-install + prerequisites: + - ALWAYS + sign-to-sync: + card-type: basic + order: 20 + title: Onboarding/Onboarding.Sync.Title.v120 + body: Onboarding/Onboarding.Sync.Description.v123 + image: sync-devices + buttons: + primary: + title: Onboarding/Onboarding.Sync.SignIn.Action.v114 + action: sync-sign-in + secondary: + title: Onboarding/Onboarding.Sync.Skip.Action.v114 + action: forward-one-card + onboarding-type: fresh-install + prerequisites: + - ALWAYS + customization-theme: + card-type: multiple-choice + order: 40 + title: Onboarding/Onboarding.Customization.Theme.Title.v123 + body: Onboarding/Onboarding.Customization.Theme.Description.v123 + image: themeing + buttons: + primary: + title: Onboarding/Onboarding.Customization.Theme.Continue.Action.v123 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Customization.Theme.System.Action.v123 + image: theme-system + action: theme-system-default + - title: Onboarding/Onboarding.Customization.Theme.Light.Action.v123 + image: theme-light + action: theme-light + - title: Onboarding/Onboarding.Customization.Theme.Dark.Action.v123 + image: theme-dark + action: theme-dark + onboarding-type: fresh-install + prerequisites: + - ALWAYS + customization-toolbar: + card-type: multiple-choice + order: 41 + title: Onboarding/Onboarding.Customization.Toolbar.Title.v123 + body: Onboarding/Onboarding.Customization.Toolbar.Description.v123 + image: toolbar + buttons: + primary: + title: Onboarding/Onboarding.Customization.Toolbar.Continue.Action.v123 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Customization.Toolbar.Top.Action.v123 + image: toolbar-top + action: toolbar-top + - title: Onboarding/Onboarding.Customization.Toolbar.Bottom.Action.v123 + image: toolbar-bottom + action: toolbar-bottom + onboarding-type: fresh-install + prerequisites: + - ALWAYS + update-welcome: + card-type: basic + order: 10 + title: Upgrade/Upgrade.Welcome.Title.v114 + body: Upgrade/Upgrade.Welcome.Description.v114 + image: welcome-globe + buttons: + primary: + title: Upgrade/Upgrade.Welcome.Action.v114 + action: forward-one-card + onboarding-type: upgrade + prerequisites: + - NEVER + update-sign-to-sync: + card-type: basic + order: 20 + title: Upgrade/Upgrade.SyncSign.Title.v114 + body: Upgrade/Upgrade.SyncSign.Description.v114 + image: sync-devices + buttons: + primary: + title: Upgrade/Upgrade.SyncSign.Action.v114 + action: sync-sign-in + secondary: + title: Onboarding/Onboarding.LaterAction.v114 + action: forward-one-card + onboarding-type: upgrade + prerequisites: + - NEVER + string-alias: NimbusOnboardingCardKey + conditions: + description: "A collection of out the box conditional expressions to be used in determining whether a card should show or not. Each entry maps to a valid JEXL expression.\n" + type: "Map" + default: + ALWAYS: "true" + NEVER: "false" + string-alias: ConditionName + dismissable: + description: "Whether or not the entire onboarding is dismissable by pressing an X at the top right corner of the screen.\n" + type: Boolean + default: true + password-generator-feature: + description: Password Generator Feature + variables: + enabled: + description: "If true, the password generator feature is enabled" + type: Boolean + default: false + pull-to-refresh-refactor-feature: + description: "The Feature flag to manage the roll out of the new pull to refresh feature.\n" + variables: + enabled: + description: "Enables the feature\n" + type: Boolean + default: true + redux-search-settings-feature: + description: "This feature is for managing the roll out of redux on the search settings screen\n" + variables: + enabled: + description: "Enables the feature\n" + type: Boolean + default: false + remote-tab-management: + description: "Features that let users manage tabs on other devices that are connected to the same Mozilla account.\n" + variables: + close-tabs-enabled: + description: "Whether the feature to close synced tabs is enabled. When enabled, this device will allow other devices to close tabs that are open on this device, and show a \"close\" button for tabs that are currently open on other supported devices in the synced tabs tray.\n" + type: Boolean + default: false + search: + description: "Configuring the functionality to do with search. This will be separated into smaller sub-features in later releases.\n" + variables: + awesome-bar: + description: Configuring the awesome bar. + type: AwesomeBar + default: + min-search-term: 3 + position: + is-bottom: false + is-position-feature-enabled: true + is-toolbar-cfr-on: false + search-highlights: false + use-page-content: false + sent-from-firefox-feature: + description: "Adds additional promo text to links shared to WhatsApp.\n" + variables: + enabled: + description: "Controls whether promo text is added to WhatsApp shares and an on/off toggle is added to Settings.\n" + type: Boolean + default: false + shopping2023: + description: "The configuration setting for the status of the Fakespot feature\n" + variables: + back_in_stock_reporting: + description: "If true, enables for users the reporting feature for products back in stock.\n" + type: Boolean + default: false + config: + description: "A Map of website configurations\n" + type: "Map" + default: + amazon: + productIdFromURLRegex: "(?:[\\\\/]|$|%2F)(?[A-Z0-9]{10})(?:[\\\\/]|$|\\\\#|\\\\?|%2F)" + validTLDs: + - com + - de + - fr + walmart: + productIdFromURLRegex: "\\\\/ip\\\\/(?:[A-Za-z0-9-]{1,320}\\\\/)?(?[0-9]{3,13})" + validTLDs: + - com + bestbuy: + productIdFromURLRegex: "\\\\/(?\\\\d+\\\\.p)" + validTLDs: + - com + product_ads: + description: "If true, enables the product advertisement feature, allowing users to see and interact with ads for various products.\n" + type: Boolean + default: false + relay: + description: "Configurable relay URL for production environment\n" + type: String + default: "https://mozilla-ohttp-fakespot.fastly-edge.com/" + status: + description: "Whether the Fakespot feature is enabled or disabled\n" + type: Boolean + default: false + splash-screen: + description: "A feature that extends splash screen duration, allowing additional data fetching time for the app's initial run.\n" + variables: + enabled: + description: "If true, the feature is active.\n" + type: Boolean + default: false + maximum_duration_ms: + description: "The maximum amount of time in milliseconds the splashscreen will be visible while waiting for initialization calls to complete.\n" + type: Int + default: 0 + spotlight-search: + description: Add pages as items findable with Spotlight. + variables: + enabled: + description: "If this is true, then on each page load adds a new item to Spotlight." + type: Boolean + default: false + icon-type: + description: "The icon that is displayed next to the item in the search results. If this is `null`, then no icon is displayed.\n" + type: Option + default: letter + keep-for-days: + description: "Number of days to keep the item before automatic deletion. If this is left `null`, then it is left to iOS's default.\n" + type: Option + default: ~ + searchable-content: + description: "The text content that is made searchable. If this is `null` then no additional content is used, and only the title and URL will be used.\n" + type: Option + default: text-excerpt + tabTrayFeature: + description: The tab tray screen that the user goes to when they open the tab tray. + variables: + sections-enabled: + description: "This property provides a lookup table of whether or not the given section should be enabled. If the section is enabled, it should be toggleable in the settings screen, and on by default." + type: "Map" + default: + inactive-tabs: true + toolbar-refactor-feature: + description: "This feature is for managing the roll out of the Toolbar refactor feature\n" + variables: + enabled: + description: "Enables the feature\n" + type: Boolean + default: false + navigation_hint: + description: "If true, enables the navigation contextual hint.\n" + type: Boolean + default: false + one_tap_new_tab: + description: "If true, enables the one tap new tab feature for users.\n" + type: Boolean + default: false + unified_search: + description: "Enables the unified search feature\n" + type: Boolean + default: false + tos-feature: + description: "This feature is for managing the roll out of the ToS (Term of Service) implementation\n" + variables: + status: + description: "Enables the feature\n" + type: Boolean + default: false + tracking-protection-refactor: + description: "The Enhanced Tracking Protection refactor\n" + variables: + enabled: + description: "Whether the Enhanced Tracking Protection refactor is enabled or not\n" + type: Boolean + default: false + zoom-feature: + description: "The configuration for the status of the zoom feature\n" + variables: + status: + description: "Whether the page zoom feature is enabled or not\n" + type: Boolean + default: true +enums: + ContextualHint: + description: The identifiers for a individual contextual hints. + variants: + toolbar-hint: + description: The contextual hint bubble that appears to provide a hint about the toolbar. + ControlMessageBehavior: + description: An enum to influence what should be displayed when a control message is selected. + variants: + show-next-message: + description: The next eligible message should be shown. + show-none: + description: The surface should show no message. + HomeScreenSection: + description: The identifiers for the sections of the homescreen. + variants: + jump-back-in: + description: The tabs the user was looking immediately before being interrupted. + recent-explorations: + description: The tab groups + IconType: + description: "The icon that will be added to the item in the device's search engine." + variants: + favicon: + description: The favicon of the page + letter: + description: An icon generated from the first letter of the base domain. + screenshot: + description: A screenshot of the page at load time. + MessageSurfaceId: + description: "For messaging, we would like to have a message tell us which surface its associated with. This is a label that matches across both Android and iOS.\n" + variants: + Unknown: + description: A message has NOT declared its target surface. + microsurvey: + description: This is a microsurvey that appears on top of the bottom toolbar to the user. + new-tab-card: + description: This is the card that appears at the top on the Firefox Home Page. + notification: + description: This is a local notification send to the user periodically with tips and updates. + survey: + description: This is a full-page that appears providing a survey to the user. + NimbusOnboardingHeaderImage: + description: "The identifiers for the different images available for cards in onboarding\n" + variants: + customize-firefox: + description: "Corresponding to the fox window image\n" + notifications: + description: "Corresponding to the notifications image\n" + notifications-ctd: + description: "Corresponding to the notifications image for CTD\n" + search-widget: + description: "Corresponding to the fox search widget image\n" + set-default-steps: + description: "Corresponding to the set to default steps image\n" + set-to-dock: + description: "Corresponding to the set to dock image\n" + sync-devices: + description: "Corresponding to the sync-devices image\n" + sync-devices-ctd: + description: "Corresponding to the sync image for CTD\n" + themeing: + description: "Corresponding to the fox world image\n" + toolbar: + description: "Corresponding to the fox world image\n" + welcome-ctd: + description: "Corresponding to the welcome image for CTD\n" + welcome-globe: + description: "Corresponding to the fox world image\n" + NimbusOnboardingMultipleChoiceButtonImage: + description: "The identifiers for the different images available for multiple choice buttons in onboarding\n" + variants: + theme-dark: + description: "Corresponding to the dark theme\n" + theme-light: + description: "Corresponding to the light theme\n" + theme-system: + description: "Corresponding to the system theme\n" + toolbar-bottom: + description: "Corresponding to the toolbar on the bottom\n" + toolbar-top: + description: "Corresponding to the toolbar on top\n" + OnboardingActions: + description: "The identifiers for the different actions available for cards in onboarding\n" + variants: + end-onboarding: + description: "Will end the onboarding on a set card\n" + forward-one-card: + description: "Will take the user to the next card\n" + forward-three-card: + description: "Will take the user to the next card\n" + forward-two-card: + description: "Will take the user to the next card\n" + open-instructions-popup: + description: "Will open up a popup with instructions for something\n" + open-ios-fx-settings: + description: "Will take the user to the default browser settings in the iOS system settings\n" + read-privacy-policy: + description: "Will open a webview where the user can read the privacy policy\n" + request-notifications: + description: "Will request to allow notifications from the user\n" + set-default-browser: + description: "Will send the user to settings to set Firefox as their default browser and advance to next card\n" + sync-sign-in: + description: "Will take the user to the sync sign in flow\n" + OnboardingCardType: + description: "The identifiers for the different types of onboarding cards.\n" + variants: + basic: + description: "Corresponding to basic info onboarding cards\n" + multiple-choice: + description: "Corresponding to onboarding cards with multiple choice buttons\n" + OnboardingInstructionsPopupActions: + description: "The identifiers for the different actions available for the insturction card in onboarding\n" + variants: + dismiss: + description: "Will dismiss the popup\n" + dismiss-and-next-card: + description: "Will dismiss the popup and move to the next card\n" + open-ios-fx-settings: + description: "Will take the user to the default browser settings in the iOS system settings\n" + OnboardingMultipleChoiceAction: + description: "The identifiers for the different actions available for cards in onboarding\n" + variants: + theme-dark: + description: "Will will set the theme to dark mode\n" + theme-light: + description: "Will set the theme to light mode\n" + theme-system-default: + description: "Will set the theme to use the system theme\n" + toolbar-bottom: + description: "Will set the toolbar on the bottom\n" + toolbar-top: + description: "Will set the toolbar on the top\n" + OnboardingType: + description: "The identifiers for the different types of onboarding cards.\n" + variants: + fresh-install: + description: "Corresponding to onboarding cards that are for new users\n" + upgrade: + description: "Corresponding to onboarding cards that are for users who have updated\n" + PageContent: + description: "The page content that will be added as an item in the device's search engine." + variants: + html-content: + description: Use all the page as HTML + text-content: + description: Use all the page as text + text-excerpt: + description: Only use the first paragraph + SuggestionType: + description: The type of a Firefox Suggest search suggestion. + variants: + amp: + description: A Firefox Suggestion for desktop from adMarketplace. + ampMobile: + description: A Firefox Suggestion specifically for mobile from adMarketplace. + wikipedia: + description: A Firefox Suggestion for a Wikipedia page. + TabTraySection: + description: The identifiers for the sections of the tab tray. + variants: + inactive-tabs: + description: Tabs that have been automatically closed for the user. +objects: + AwesomeBar: + description: "A configuration option for the awesome bar. Part of the `search` feature." + fields: + min-search-term: + description: The minimum number of characters that the user types before searching in the page. + type: Int + default: 3 + position: + description: "This property defines whether or not the feature is enabled, and the position of the search bar\n" + type: SearchBarPositionFeature + default: + is-position-feature-enabled: true + is-bottom: true + is-toolbar-cfr-on: true + search-highlights: + description: Whether or not search highlights are enabled + type: Boolean + default: false + use-page-content: + description: "Search in the open tab's text content when typing." + type: Boolean + default: false + GeneralFeature: + description: The configuration for the a feature that can be enabled or disabled + fields: + status: + description: Whether or not the feature is enabled + type: Boolean + default: false + MessageData: + description: "An object to describe a message. It uses human readable strings to describe the triggers, action and style of the message as well as the text of the message and call to action.\n" + fields: + action: + description: "The name of a deeplink URL to be opened if the button is clicked.\n" + type: Option + default: ~ + action-params: + description: Query parameters appended to the deeplink action URL + type: "Map" + default: {} + button-label: + description: "The text on the button. If no text is present, the whole message is clickable.\n" + type: Option + default: ~ + except-if-any: + description: "A list of strings corresponding to targeting expressions. If any of these expressions evaluate to `true`, the message will not be eligible.\n" + type: List + default: [] + experiment: + description: The experiment slug that this message is involved in. + type: Option + default: ~ + is-control: + description: "Indicates if this message is the control message, if true shouldn't be displayed" + type: Boolean + default: false + microsurveyConfig: + description: Optional configuration data for a microsurvey. + type: Option + default: ~ + style: + description: "The style as described in a `StyleData` from the styles table.\n" + type: StyleName + default: DEFAULT + surface: + description: Each message will tell us the surface it is targeting with this. + type: MessageSurfaceId + default: Unknown + text: + description: The message text displayed to the user + type: Text + default: "" + title: + description: The title text displayed to the user + type: Option + default: ~ + trigger-if-all: + description: "A list of strings corresponding to targeting expressions. All named expressions must evaluate to true if the message is to be eligible to be shown.\n" + type: List + default: + - ALWAYS + MicrosurveyConfig: + description: "Attributes relating to microsurvey messaging.\n" + fields: + icon: + description: The asset name in our bundle used as the icon shown in the survey. + type: Image + default: lightbulbLarge + options: + description: The list of survey options to present to the user. + type: List + default: [] + utm-content: + description: The name used to provide as the utm_content parameter for the privacy notice. + type: Option + default: ~ + NimbusOnboardingButton: + description: "A group of properties describing the attributes of a card.\n" + fields: + action: + description: "The action the button should take. The default for this will be \"forward-one-card\"\n" + type: OnboardingActions + default: forward-one-card + title: + description: "The text of the button title. This should never be defaulted.\n" + type: Text + default: "" + NimbusOnboardingButtons: + description: "A set of buttons for the card. There can be up to two, but there must be at least one.\n" + fields: + primary: + description: "The primary button for the card. This must exist.\n" + type: NimbusOnboardingButton + default: + title: Primary Button + action: forward-one-card + secondary: + description: "A secondary, optional, button for the card.\n" + type: Option + default: ~ + NimbusOnboardingCardData: + description: "A group of properties describing the attributes of a card.\n" + fields: + body: + description: "The body text dispalyed on the card, in less prominent text. This should never be defaulted.\n" + type: Text + default: "" + buttons: + description: "The set of buttons associated with the card.\n" + type: NimbusOnboardingButtons + default: + primary: + title: Onboarding/Onboarding.Sync.Skip.Action.v114 + action: forward-one-card + secondary: ~ + card-type: + description: "The type of onboarding this card should be shown in, whether it a fresh install or an update. The default is fresh-install.\n" + type: OnboardingCardType + default: basic + disqualifiers: + description: "A list of ConditionName strings corresponding to targeting expressions. The card will not be shown if any expression is `true`.\n" + type: List + default: [] + image: + description: "The image that should be dispalyed on the card.\n" + type: NimbusOnboardingHeaderImage + default: welcome-globe + instructions-popup: + description: "The object describing the specific instruction popup button for a card. If left empty, the card will have no instruction popup information\n" + type: Option + default: ~ + link: + description: "The object describing the link button for a card. If left empty, the card will have no link.\n" + type: Option + default: ~ + multiple-choice-buttons: + description: "A list of multiple choice buttons that the card will display\n" + type: List + default: [] + onboarding-type: + description: "The type of onboarding this card should be shown in, whether it a fresh install or an update. The default is fresh-install.\n" + type: OnboardingType + default: fresh-install + order: + description: "The place in the order where the card will be found. The feature layer will then sort the cards based on this field.\n" + type: Int + default: 10 + prerequisites: + description: "A list of ConditionName strings corresponding to targeting expressions. The card will be shown if all expressions `true` and if no expressions in the `disqualifiers` table are true, or if the `disqualifiers` table is empty.\n" + type: List + default: [] + title: + description: "The title displayed on the card, in prominent, bolded text. This should never be defaulted.\n" + type: Text + default: "" + NimbusOnboardingInstructionPopup: + description: "The object outlining the content of the instruction card.\n" + fields: + button-action: + description: "The action the button should have. Default is `dismiss-and-next-card`\n" + type: OnboardingInstructionsPopupActions + default: dismiss-and-next-card + button-title: + description: "The title the button should have. This should never be defaulted.\n" + type: Text + default: "" + instructions: + description: "A list of instructions, either as free text, or as Text identifiers.\n" + type: List + default: [] + title: + description: "The text of the popup. This should never be defaulted.\n" + type: Text + default: "" + NimbusOnboardingLink: + description: "A group of properties describing the attributes for the active link on a card\n" + fields: + title: + description: "The text of the link title.\n" + type: Text + default: Onboarding/Onboarding.Welcome.Link.Action.v114 + url: + description: "The url that the link will lead to.\n" + type: String + default: "https://www.mozilla.org/privacy/firefox/" + NimbusOnboardingMultipleChoiceButton: + description: "A group of properties describing the attributes of a multiple choice button on a card\n" + fields: + action: + description: "The action the button should take. The default for this will be \"theme-system-default\"\n" + type: OnboardingMultipleChoiceAction + default: theme-system-default + image: + description: "The text of the button title. This should never be defaulted.\n" + type: NimbusOnboardingMultipleChoiceButtonImage + default: theme-system + title: + description: "The text of the button title. This should never be defaulted.\n" + type: Text + default: "" + SearchBarPositionFeature: + description: The configuration for the bottom search bar on the homescreen + fields: + is-bottom: + description: Whether or not the default position is at the bottom + type: Boolean + default: true + is-position-feature-enabled: + description: Whether or not the feature is enabled + type: Boolean + default: true + is-toolbar-cfr-on: + description: Whether or not the toolbar CFR shows. This is a temporary hack for Nimbus + type: Boolean + default: true + StyleData: + description: "A group of properities (predominantly visual) to the describe style of the message.\n" + fields: + max-display-count: + description: "How many sessions will this message be shown to the user before it is expired.\n" + type: Int + default: 5 + priority: + description: "The importance of this message. 0 is not very important, 100 is very important.\n" + type: Int + default: 50 + WebsiteConfig: + description: "It represents a configuration for different e-commerce websites and includes regular expressions for extracting product IDs from their respective URLs\n" + fields: + productIdFromURLRegex: + description: "It represents the product ID extracted from a regex query\n" + type: String + default: "" + validTLDs: + description: "Valid Top Level Domains\n" + type: List + default: [] diff --git a/experimenter/experimenter/features/manifests/ios/v134.2.0/developer.fml.yaml b/experimenter/experimenter/features/manifests/ios/v134.2.0/developer.fml.yaml new file mode 100644 index 0000000000..66f9ec5d36 --- /dev/null +++ b/experimenter/experimenter/features/manifests/ios/v134.2.0/developer.fml.yaml @@ -0,0 +1,1044 @@ +--- +version: 1.0.0 +about: + description: The root level Feature Manifest for Firefox for iOS +channels: + - developer +features: + account-settings-redux-feature: + description: "This feature is for managing the roll out of the Account Settings Redux implementation\n" + variables: + enabled: + description: "Enables the feature\n" + type: Boolean + default: false + address-autofill-edit: + description: This property defines if the address editing is enabled in Settings + variables: + status: + description: "If true, we will allow user to edit the address" + type: Boolean + default: true + bookmark-refactor-feature: + description: "The Feature for managing the roll out of the Bookmark refactor feature\n" + variables: + enabled: + description: "Enables the bookmark refactor feature\n" + type: Boolean + default: false + contextual-hint-feature: + description: This set holds all features pertaining to contextual hints. + variables: + features-enabled: + description: "This property provides a lookup table of whether specific contextual hints are enabled.\n" + type: "Map" + default: + toolbar-hint: true + credit-card-autofill: + description: This property defines the credit card autofill feature + variables: + credit-card-autofill-status: + description: "If true, we will allow user to use the credit autofill feature" + type: Boolean + default: true + felt-privacy-feature: + description: The feature that enhances private browsing mode + variables: + felt-deletion-enabled: + description: "If true, enable Felt Deletion part of Felt Privacy" + type: Boolean + default: true + simplified-ui-enabled: + description: "If true, enable simplified UI part of Felt Privacy" + type: Boolean + default: true + firefox-suggest-feature: + description: Configuration for the Firefox Suggest feature. + variables: + available-suggestions-types: + description: "A map of suggestion types to booleans that indicate whether or not the provider should return suggestions of those types.\n" + type: "Map" + default: + amp: true + ampMobile: false + wikipedia: true + status: + description: "Whether the feature is enabled. When Firefox Suggest is enabled, Firefox will download and store new search suggestions in the background, and show additional Search settings to control which suggestions appear in the awesomebar. When Firefox Suggest is disabled, Firefox will not download new suggestions, and hide the additional Search settings.\n" + type: Boolean + default: true + general-app-features: + description: The feature that contains feature flags for the entire application + variables: + report-site-issue: + description: This property defines whether or not the feature is enabled + type: GeneralFeature + default: + status: true + glean-server-knobs: + description: A feature that provides server-side configurations for Glean metrics (aka Server Knobs). + variables: + metrics-enabled: + description: "A map of metric base-identifiers to booleans representing the state of the 'enabled' flag for that metric." + type: "Map" + default: {} + homepage-rebuild-feature: + description: "This feature is for managing the roll out of the Homepage rebuild feature\n" + variables: + enabled: + description: "If true, enables the feature\n" + type: Boolean + default: false + homescreenFeature: + description: The homescreen that the user goes to when they press home or new tab. + variables: + prefer-switch-to-open-tab: + description: "Enables the feature to automatically switch to an existing tab with the same content instead of opening a new one.\n" + type: Boolean + default: true + sections-enabled: + description: "This property provides a lookup table of whether or not the given section should be enabled. If the section is enabled, it should be toggleable in the settings screen, and on by default.\n" + type: "Map" + default: + jump-back-in: true + recent-explorations: false + login-autofill: + description: This property defines the login autofill feature for automatically filling in usernames and passwords. + variables: + login-autofill-status: + description: "If true, allows the user to use the login autofill feature for usernames and passwords." + type: Boolean + default: true + menu-refactor-feature: + description: "Controls the menu refactor feature\n" + variables: + enabled: + description: "Controls which menu users will see\n" + type: Boolean + default: false + menu-hint: + description: "If true, enables the menu contextual hint.\n" + type: Boolean + default: true + messaging: + description: "The in-app messaging system\n" + documentation: + - name: User documentation + url: "https://experimenter.info/messaging/mobile-messaging" + contacts: + - jhugman@mozilla.com + - brennie@mozilla.com + - gbuciu@mozilla.com + - wteichmann@mozilla.com + events: + - "https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_shown" + - "https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_clicked" + - "https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_expired" + - "https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_dismissed" + - "https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_malformed" + variables: + actions: + description: A growable map of action URLs. + type: "Map" + default: + OPEN_SETTINGS: "://deep-link?url=settings/general" + OPEN_SETTINGS_NEW_TAB: "://deep-link?url=settings/newtab" + OPEN_SETTINGS_HOMESCREEN: "://deep-link?url=settings/homepage" + OPEN_SETTINGS_WALLPAPERS: "://deep-link?url=settings/wallpaper" + OPEN_SETTINGS_EMAIL: "://deep-link?url=settings/mailto" + OPEN_SETTINGS_SEARCH_ENGINE: "://deep-link?url=settings/search" + OPEN_SETTINGS_PRIVACY: "://deep-link?url=settings/clear-private-data" + OPEN_SETTINGS_FXA: "://deep-link?url=settings/fxa" + OPEN_SETTINGS_THEME: "://deep-link?url=settings/theme" + OPEN_URL: "://open-url" + VIEW_BOOKMARKS: "://deep-link?url=homepanel/bookmarks" + VIEW_TOP_SITES: "://deep-link?url=homepanel/top-sites" + VIEW_READING_LIST: "://deep-link?url=homepanel/reading-list" + VIEW_HISTORY: "://deep-link?url=homepanel/history" + VIEW_DOWNLOADS: "://deep-link?url=homepanel/downloads" + ENABLE_PRIVATE_BROWSING: "://deep-link?url=homepanel/new-private-tab" + OPEN_NEW_TAB: "://deep-link?url=homepanel/new-tab" + MAKE_DEFAULT_BROWSER: "://deep-link?url=default-browser/system-settings" + MAKE_DEFAULT_BROWSER_WITH_TUTORIAL: "://deep-link?url=default-browser/tutorial" + OPEN_SHARE_SHEET: "://share-sheet" + string-alias: ActionName + message-under-experiment: + description: "Deprecated. Please use \"experiment\": \"{experiment}\" instead." + type: Option + default: ~ + messages: + description: "A growable collection of messages, where the Key is the message identifier and the value is its associated MessageData.\n" + type: "Map" + default: + default-browser: + surface: new-tab-card + style: FALLBACK + trigger-if-all: + - SUPPORTS_DEFAULT_BROWSER + - ON_FOURTH_LAUNCH_THIS_YEAR + except-if-any: + - I_AM_DEFAULT_BROWSER + title: Default Browser/DefaultBrowserCard.Title + text: Default Browser/DefaultBrowserCard.Description + button-label: Default Browser/DefaultBrowserCard.Button.v2 + action: MAKE_DEFAULT_BROWSER_WITH_TUTORIAL + homepage-microsurvey-message: + surface: microsurvey + style: MICROSURVEY + trigger-if-all: + - SECOND_HOMEPAGE_VIEW + title: Microsurvey/Microsurvey.Prompt.TitleLabel.v127 + text: How satisfied are you with your Firefox homepage? + button-label: Microsurvey/Microsurvey.Prompt.Button.v127 + microsurveyConfig: + utm-content: homepage + icon: homeLarge + options: + - Microsurvey/Microsurvey.Survey.Options.VerySatisfied.v132 + - Microsurvey/Microsurvey.Survey.Options.Satisfied.v132 + - Microsurvey/Microsurvey.Survey.Options.Neutral.v132 + - Microsurvey/Microsurvey.Survey.Options.Dissatisfied.v132 + - Microsurvey/Microsurvey.Survey.Options.VeryDissatisfied.v132 + - Microsurvey/Microsurvey.Survey.Options.NotApplicable.v132 + survey-surface-message: + surface: survey + style: SURVEY + trigger-if-all: + - NEVER + text: ResearchSurface/Body.Text.v112 + button-label: ResearchSurface/PrimaryButton.Label.v112 + action: OPEN_URL + action-params: + url: "https://www.macrumors.com" + string-alias: MessageKey + on-control: + description: What should be displayed when a control message is selected. + type: ControlMessageBehavior + default: show-next-message + styles: + description: "A map of styles to configure message appearance.\n" + type: "Map" + default: + FALLBACK: + priority: 40 + max-display-count: 20 + DEFAULT: + priority: 50 + max-display-count: 5 + MICROSURVEY: + priority: 50 + max-display-count: 1 + NOTIFICATION: + priority: 50 + max-display-count: 1 + PERSISTENT: + priority: 50 + max-display-count: 20 + SURVEY: + priority: 55 + max-display-count: 10 + WARNING: + priority: 60 + max-display-count: 10 + URGENT: + priority: 100 + max-display-count: 10 + string-alias: StyleName + triggers: + description: "A collection of out the box trigger expressions. Each entry maps to a valid JEXL expression.\n" + type: "Map" + default: + ALWAYS: "true" + NEVER: "false" + USER_RECENTLY_INSTALLED: days_since_install < 7 + USER_RECENTLY_UPDATED: days_since_update < 7 && days_since_install != days_since_update + USER_TIER_ONE_COUNTRY: "('US' in locale || 'GB' in locale || 'CA' in locale || 'DE' in locale || 'FR' in locale)" + USER_EN_SPEAKER: "'en' in locale" + USER_ES_SPEAKER: "'es' in locale" + USER_DE_SPEAKER: "'de' in locale" + USER_FR_SPEAKER: "'fr' in locale" + DEVICE_ANDROID: "os == 'Android'" + DEVICE_IOS: "os == 'iOS'" + DAY_1_AFTER_INSTALL: days_since_install == 1 + DAY_2_AFTER_INSTALL: days_since_install == 2 + DAY_3_AFTER_INSTALL: days_since_install == 3 + DAY_4_AFTER_INSTALL: days_since_install == 4 + DAY_5_AFTER_INSTALL: days_since_install == 5 + MORE_THAN_24H_SINCE_INSTALLED_OR_UPDATED: days_since_update >= 1 + NOT_LAUNCHED_YESTERDAY: "'app_cycle.foreground'|eventLastSeen('Days', 1) > 1" + AFTER_THREE_LAUNCHES_THIS_WEEK: "'app_cycle.foreground'|eventSum('Weeks', 1, 0) >= 3" + I_AM_DEFAULT_BROWSER: is_default_browser + I_AM_NOT_DEFAULT_BROWSER: is_default_browser == false + SUPPORTS_DEFAULT_BROWSER: "os_version|versionCompare('14.!') >= 0" + INACTIVE_NEW_USER: is_inactive_new_user + ALLOWED_TIPS_NOTIFICATIONS: allowed_tips_notifications + FXA_CURRENTLY_SIGNED_IN: is_fxa_signed_in == true + SECOND_HOMEPAGE_VIEW: "'homepage_viewed'|eventSum('Years', 4, 0) >= 2" + ON_FOURTH_LAUNCH_THIS_YEAR: "'app_cycle.foreground'|eventSum('Years', 1, 0) > 3" + string-alias: TriggerName + ~~experiment: + description: Not to be set by experiment. + type: ExperimentSlug + default: "{experiment}" + string-alias: ExperimentSlug + allow-coenrollment: true + microsurvey-feature: + description: "A feature that shows the microsurvey for users to interact with and submit responses.\n" + variables: + enabled: + description: "If true, the feature is active.\n" + type: Boolean + default: true + native-error-page-feature: + description: "This feature is for managing the roll out of the native error page feature\n" + variables: + enabled: + description: "If true, the feature is active.\n" + type: Boolean + default: false + no_internet_connection_error: + description: "This feature is for managing the roll out of the no interet connection native error page feature\n" + type: Boolean + default: false + night-mode-feature: + description: "Describes the night mode feature's configuration\n" + variables: + enabled: + description: "Whether night mode is available for users or not\n" + type: Boolean + default: true + onboarding-framework-feature: + description: "The new onboarding framework feature that will allow onboarding to be experimentable through initial experiments.\n" + variables: + cards: + description: "The list of available cards for onboarding.\n" + type: "Map" + default: + welcome: + card-type: basic + order: 10 + title: Onboarding/Onboarding.Welcome.Title.TreatementA.v120 + body: Onboarding/Onboarding.Welcome.Description.TreatementA.v120 + image: welcome-globe + link: + title: Onboarding/Onboarding.Welcome.Link.Action.v114 + url: "https://www.mozilla.org/privacy/firefox/" + buttons: + primary: + title: Onboarding/Onboarding.Welcome.ActionTreatementA.v114 + action: open-instructions-popup + secondary: + title: Onboarding/Onboarding.Welcome.Skip.v114 + action: forward-one-card + instructions-popup: + title: Onboarding/DefaultBrowserPopup.Title.v114 + button-title: Onboarding/DefaultBrowserPopup.ButtonTitle.v114 + button-action: open-ios-fx-settings + instructions: + - Onboarding/DefaultBrowserPopup.FirstLabel.v114 + - Onboarding/DefaultBrowserPopup.SecondLabel.v114 + - Onboarding/DefaultBrowserPopup.ThirdLabel.v114 + onboarding-type: fresh-install + prerequisites: + - ALWAYS + notification-permissions: + card-type: basic + order: 30 + title: Onboarding/Onboarding.Notification.Title.v120 + body: Onboarding/Onboarding.Notification.Description.v120 + image: notifications + buttons: + primary: + title: Onboarding/Onboarding.Notification.TurnOnNotifications.Action.v114 + action: request-notifications + secondary: + title: Onboarding/Onboarding.Notification.Skip.Action.v115 + action: forward-one-card + onboarding-type: fresh-install + prerequisites: + - ALWAYS + sign-to-sync: + card-type: basic + order: 20 + title: Onboarding/Onboarding.Sync.Title.v120 + body: Onboarding/Onboarding.Sync.Description.v123 + image: sync-devices + buttons: + primary: + title: Onboarding/Onboarding.Sync.SignIn.Action.v114 + action: sync-sign-in + secondary: + title: Onboarding/Onboarding.Sync.Skip.Action.v114 + action: forward-one-card + onboarding-type: fresh-install + prerequisites: + - ALWAYS + customization-theme: + card-type: multiple-choice + order: 40 + title: Onboarding/Onboarding.Customization.Theme.Title.v123 + body: Onboarding/Onboarding.Customization.Theme.Description.v123 + image: themeing + buttons: + primary: + title: Onboarding/Onboarding.Customization.Theme.Continue.Action.v123 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Customization.Theme.System.Action.v123 + image: theme-system + action: theme-system-default + - title: Onboarding/Onboarding.Customization.Theme.Light.Action.v123 + image: theme-light + action: theme-light + - title: Onboarding/Onboarding.Customization.Theme.Dark.Action.v123 + image: theme-dark + action: theme-dark + onboarding-type: fresh-install + prerequisites: + - ALWAYS + customization-toolbar: + card-type: multiple-choice + order: 41 + title: Onboarding/Onboarding.Customization.Toolbar.Title.v123 + body: Onboarding/Onboarding.Customization.Toolbar.Description.v123 + image: toolbar + buttons: + primary: + title: Onboarding/Onboarding.Customization.Toolbar.Continue.Action.v123 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Customization.Toolbar.Top.Action.v123 + image: toolbar-top + action: toolbar-top + - title: Onboarding/Onboarding.Customization.Toolbar.Bottom.Action.v123 + image: toolbar-bottom + action: toolbar-bottom + onboarding-type: fresh-install + prerequisites: + - ALWAYS + update-welcome: + card-type: basic + order: 10 + title: Upgrade/Upgrade.Welcome.Title.v114 + body: Upgrade/Upgrade.Welcome.Description.v114 + image: welcome-globe + buttons: + primary: + title: Upgrade/Upgrade.Welcome.Action.v114 + action: forward-one-card + onboarding-type: upgrade + prerequisites: + - NEVER + update-sign-to-sync: + card-type: basic + order: 20 + title: Upgrade/Upgrade.SyncSign.Title.v114 + body: Upgrade/Upgrade.SyncSign.Description.v114 + image: sync-devices + buttons: + primary: + title: Upgrade/Upgrade.SyncSign.Action.v114 + action: sync-sign-in + secondary: + title: Onboarding/Onboarding.LaterAction.v114 + action: forward-one-card + onboarding-type: upgrade + prerequisites: + - NEVER + string-alias: NimbusOnboardingCardKey + conditions: + description: "A collection of out the box conditional expressions to be used in determining whether a card should show or not. Each entry maps to a valid JEXL expression.\n" + type: "Map" + default: + ALWAYS: "true" + NEVER: "false" + string-alias: ConditionName + dismissable: + description: "Whether or not the entire onboarding is dismissable by pressing an X at the top right corner of the screen.\n" + type: Boolean + default: true + password-generator-feature: + description: Password Generator Feature + variables: + enabled: + description: "If true, the password generator feature is enabled" + type: Boolean + default: true + pull-to-refresh-refactor-feature: + description: "The Feature flag to manage the roll out of the new pull to refresh feature.\n" + variables: + enabled: + description: "Enables the feature\n" + type: Boolean + default: true + redux-search-settings-feature: + description: "This feature is for managing the roll out of redux on the search settings screen\n" + variables: + enabled: + description: "Enables the feature\n" + type: Boolean + default: false + remote-tab-management: + description: "Features that let users manage tabs on other devices that are connected to the same Mozilla account.\n" + variables: + close-tabs-enabled: + description: "Whether the feature to close synced tabs is enabled. When enabled, this device will allow other devices to close tabs that are open on this device, and show a \"close\" button for tabs that are currently open on other supported devices in the synced tabs tray.\n" + type: Boolean + default: true + search: + description: "Configuring the functionality to do with search. This will be separated into smaller sub-features in later releases.\n" + variables: + awesome-bar: + description: Configuring the awesome bar. + type: AwesomeBar + default: + min-search-term: 3 + position: + is-bottom: false + is-position-feature-enabled: true + is-toolbar-cfr-on: false + search-highlights: false + use-page-content: false + sent-from-firefox-feature: + description: "Adds additional promo text to links shared to WhatsApp.\n" + variables: + enabled: + description: "Controls whether promo text is added to WhatsApp shares and an on/off toggle is added to Settings.\n" + type: Boolean + default: false + shopping2023: + description: "The configuration setting for the status of the Fakespot feature\n" + variables: + back_in_stock_reporting: + description: "If true, enables for users the reporting feature for products back in stock.\n" + type: Boolean + default: false + config: + description: "A Map of website configurations\n" + type: "Map" + default: + amazon: + productIdFromURLRegex: "(?:[\\\\/]|$|%2F)(?[A-Z0-9]{10})(?:[\\\\/]|$|\\\\#|\\\\?|%2F)" + validTLDs: + - com + - de + - fr + walmart: + productIdFromURLRegex: "\\\\/ip\\\\/(?:[A-Za-z0-9-]{1,320}\\\\/)?(?[0-9]{3,13})" + validTLDs: + - com + bestbuy: + productIdFromURLRegex: "\\\\/(?\\\\d+\\\\.p)" + validTLDs: + - com + product_ads: + description: "If true, enables the product advertisement feature, allowing users to see and interact with ads for various products.\n" + type: Boolean + default: false + relay: + description: "Configurable relay URL for production environment\n" + type: String + default: "https://mozilla-ohttp-fakespot.fastly-edge.com/" + status: + description: "Whether the Fakespot feature is enabled or disabled\n" + type: Boolean + default: false + splash-screen: + description: "A feature that extends splash screen duration, allowing additional data fetching time for the app's initial run.\n" + variables: + enabled: + description: "If true, the feature is active.\n" + type: Boolean + default: true + maximum_duration_ms: + description: "The maximum amount of time in milliseconds the splashscreen will be visible while waiting for initialization calls to complete.\n" + type: Int + default: 6000 + spotlight-search: + description: Add pages as items findable with Spotlight. + variables: + enabled: + description: "If this is true, then on each page load adds a new item to Spotlight." + type: Boolean + default: true + icon-type: + description: "The icon that is displayed next to the item in the search results. If this is `null`, then no icon is displayed.\n" + type: Option + default: screenshot + keep-for-days: + description: "Number of days to keep the item before automatic deletion. If this is left `null`, then it is left to iOS's default.\n" + type: Option + default: ~ + searchable-content: + description: "The text content that is made searchable. If this is `null` then no additional content is used, and only the title and URL will be used.\n" + type: Option + default: text-excerpt + tabTrayFeature: + description: The tab tray screen that the user goes to when they open the tab tray. + variables: + sections-enabled: + description: "This property provides a lookup table of whether or not the given section should be enabled. If the section is enabled, it should be toggleable in the settings screen, and on by default." + type: "Map" + default: + inactive-tabs: true + toolbar-refactor-feature: + description: "This feature is for managing the roll out of the Toolbar refactor feature\n" + variables: + enabled: + description: "Enables the feature\n" + type: Boolean + default: true + navigation_hint: + description: "If true, enables the navigation contextual hint.\n" + type: Boolean + default: true + one_tap_new_tab: + description: "If true, enables the one tap new tab feature for users.\n" + type: Boolean + default: true + unified_search: + description: "Enables the unified search feature\n" + type: Boolean + default: false + tos-feature: + description: "This feature is for managing the roll out of the ToS (Term of Service) implementation\n" + variables: + status: + description: "Enables the feature\n" + type: Boolean + default: false + tracking-protection-refactor: + description: "The Enhanced Tracking Protection refactor\n" + variables: + enabled: + description: "Whether the Enhanced Tracking Protection refactor is enabled or not\n" + type: Boolean + default: true + zoom-feature: + description: "The configuration for the status of the zoom feature\n" + variables: + status: + description: "Whether the page zoom feature is enabled or not\n" + type: Boolean + default: true +enums: + ContextualHint: + description: The identifiers for a individual contextual hints. + variants: + toolbar-hint: + description: The contextual hint bubble that appears to provide a hint about the toolbar. + ControlMessageBehavior: + description: An enum to influence what should be displayed when a control message is selected. + variants: + show-next-message: + description: The next eligible message should be shown. + show-none: + description: The surface should show no message. + HomeScreenSection: + description: The identifiers for the sections of the homescreen. + variants: + jump-back-in: + description: The tabs the user was looking immediately before being interrupted. + recent-explorations: + description: The tab groups + IconType: + description: "The icon that will be added to the item in the device's search engine." + variants: + favicon: + description: The favicon of the page + letter: + description: An icon generated from the first letter of the base domain. + screenshot: + description: A screenshot of the page at load time. + MessageSurfaceId: + description: "For messaging, we would like to have a message tell us which surface its associated with. This is a label that matches across both Android and iOS.\n" + variants: + Unknown: + description: A message has NOT declared its target surface. + microsurvey: + description: This is a microsurvey that appears on top of the bottom toolbar to the user. + new-tab-card: + description: This is the card that appears at the top on the Firefox Home Page. + notification: + description: This is a local notification send to the user periodically with tips and updates. + survey: + description: This is a full-page that appears providing a survey to the user. + NimbusOnboardingHeaderImage: + description: "The identifiers for the different images available for cards in onboarding\n" + variants: + customize-firefox: + description: "Corresponding to the fox window image\n" + notifications: + description: "Corresponding to the notifications image\n" + notifications-ctd: + description: "Corresponding to the notifications image for CTD\n" + search-widget: + description: "Corresponding to the fox search widget image\n" + set-default-steps: + description: "Corresponding to the set to default steps image\n" + set-to-dock: + description: "Corresponding to the set to dock image\n" + sync-devices: + description: "Corresponding to the sync-devices image\n" + sync-devices-ctd: + description: "Corresponding to the sync image for CTD\n" + themeing: + description: "Corresponding to the fox world image\n" + toolbar: + description: "Corresponding to the fox world image\n" + welcome-ctd: + description: "Corresponding to the welcome image for CTD\n" + welcome-globe: + description: "Corresponding to the fox world image\n" + NimbusOnboardingMultipleChoiceButtonImage: + description: "The identifiers for the different images available for multiple choice buttons in onboarding\n" + variants: + theme-dark: + description: "Corresponding to the dark theme\n" + theme-light: + description: "Corresponding to the light theme\n" + theme-system: + description: "Corresponding to the system theme\n" + toolbar-bottom: + description: "Corresponding to the toolbar on the bottom\n" + toolbar-top: + description: "Corresponding to the toolbar on top\n" + OnboardingActions: + description: "The identifiers for the different actions available for cards in onboarding\n" + variants: + end-onboarding: + description: "Will end the onboarding on a set card\n" + forward-one-card: + description: "Will take the user to the next card\n" + forward-three-card: + description: "Will take the user to the next card\n" + forward-two-card: + description: "Will take the user to the next card\n" + open-instructions-popup: + description: "Will open up a popup with instructions for something\n" + open-ios-fx-settings: + description: "Will take the user to the default browser settings in the iOS system settings\n" + read-privacy-policy: + description: "Will open a webview where the user can read the privacy policy\n" + request-notifications: + description: "Will request to allow notifications from the user\n" + set-default-browser: + description: "Will send the user to settings to set Firefox as their default browser and advance to next card\n" + sync-sign-in: + description: "Will take the user to the sync sign in flow\n" + OnboardingCardType: + description: "The identifiers for the different types of onboarding cards.\n" + variants: + basic: + description: "Corresponding to basic info onboarding cards\n" + multiple-choice: + description: "Corresponding to onboarding cards with multiple choice buttons\n" + OnboardingInstructionsPopupActions: + description: "The identifiers for the different actions available for the insturction card in onboarding\n" + variants: + dismiss: + description: "Will dismiss the popup\n" + dismiss-and-next-card: + description: "Will dismiss the popup and move to the next card\n" + open-ios-fx-settings: + description: "Will take the user to the default browser settings in the iOS system settings\n" + OnboardingMultipleChoiceAction: + description: "The identifiers for the different actions available for cards in onboarding\n" + variants: + theme-dark: + description: "Will will set the theme to dark mode\n" + theme-light: + description: "Will set the theme to light mode\n" + theme-system-default: + description: "Will set the theme to use the system theme\n" + toolbar-bottom: + description: "Will set the toolbar on the bottom\n" + toolbar-top: + description: "Will set the toolbar on the top\n" + OnboardingType: + description: "The identifiers for the different types of onboarding cards.\n" + variants: + fresh-install: + description: "Corresponding to onboarding cards that are for new users\n" + upgrade: + description: "Corresponding to onboarding cards that are for users who have updated\n" + PageContent: + description: "The page content that will be added as an item in the device's search engine." + variants: + html-content: + description: Use all the page as HTML + text-content: + description: Use all the page as text + text-excerpt: + description: Only use the first paragraph + SuggestionType: + description: The type of a Firefox Suggest search suggestion. + variants: + amp: + description: A Firefox Suggestion for desktop from adMarketplace. + ampMobile: + description: A Firefox Suggestion specifically for mobile from adMarketplace. + wikipedia: + description: A Firefox Suggestion for a Wikipedia page. + TabTraySection: + description: The identifiers for the sections of the tab tray. + variants: + inactive-tabs: + description: Tabs that have been automatically closed for the user. +objects: + AwesomeBar: + description: "A configuration option for the awesome bar. Part of the `search` feature." + fields: + min-search-term: + description: The minimum number of characters that the user types before searching in the page. + type: Int + default: 3 + position: + description: "This property defines whether or not the feature is enabled, and the position of the search bar\n" + type: SearchBarPositionFeature + default: + is-position-feature-enabled: true + is-bottom: true + is-toolbar-cfr-on: true + search-highlights: + description: Whether or not search highlights are enabled + type: Boolean + default: false + use-page-content: + description: "Search in the open tab's text content when typing." + type: Boolean + default: false + GeneralFeature: + description: The configuration for the a feature that can be enabled or disabled + fields: + status: + description: Whether or not the feature is enabled + type: Boolean + default: false + MessageData: + description: "An object to describe a message. It uses human readable strings to describe the triggers, action and style of the message as well as the text of the message and call to action.\n" + fields: + action: + description: "The name of a deeplink URL to be opened if the button is clicked.\n" + type: Option + default: ~ + action-params: + description: Query parameters appended to the deeplink action URL + type: "Map" + default: {} + button-label: + description: "The text on the button. If no text is present, the whole message is clickable.\n" + type: Option + default: ~ + except-if-any: + description: "A list of strings corresponding to targeting expressions. If any of these expressions evaluate to `true`, the message will not be eligible.\n" + type: List + default: [] + experiment: + description: The experiment slug that this message is involved in. + type: Option + default: ~ + is-control: + description: "Indicates if this message is the control message, if true shouldn't be displayed" + type: Boolean + default: false + microsurveyConfig: + description: Optional configuration data for a microsurvey. + type: Option + default: ~ + style: + description: "The style as described in a `StyleData` from the styles table.\n" + type: StyleName + default: DEFAULT + surface: + description: Each message will tell us the surface it is targeting with this. + type: MessageSurfaceId + default: Unknown + text: + description: The message text displayed to the user + type: Text + default: "" + title: + description: The title text displayed to the user + type: Option + default: ~ + trigger-if-all: + description: "A list of strings corresponding to targeting expressions. All named expressions must evaluate to true if the message is to be eligible to be shown.\n" + type: List + default: + - ALWAYS + MicrosurveyConfig: + description: "Attributes relating to microsurvey messaging.\n" + fields: + icon: + description: The asset name in our bundle used as the icon shown in the survey. + type: Image + default: lightbulbLarge + options: + description: The list of survey options to present to the user. + type: List + default: [] + utm-content: + description: The name used to provide as the utm_content parameter for the privacy notice. + type: Option + default: ~ + NimbusOnboardingButton: + description: "A group of properties describing the attributes of a card.\n" + fields: + action: + description: "The action the button should take. The default for this will be \"forward-one-card\"\n" + type: OnboardingActions + default: forward-one-card + title: + description: "The text of the button title. This should never be defaulted.\n" + type: Text + default: "" + NimbusOnboardingButtons: + description: "A set of buttons for the card. There can be up to two, but there must be at least one.\n" + fields: + primary: + description: "The primary button for the card. This must exist.\n" + type: NimbusOnboardingButton + default: + title: Primary Button + action: forward-one-card + secondary: + description: "A secondary, optional, button for the card.\n" + type: Option + default: ~ + NimbusOnboardingCardData: + description: "A group of properties describing the attributes of a card.\n" + fields: + body: + description: "The body text dispalyed on the card, in less prominent text. This should never be defaulted.\n" + type: Text + default: "" + buttons: + description: "The set of buttons associated with the card.\n" + type: NimbusOnboardingButtons + default: + primary: + title: Onboarding/Onboarding.Sync.Skip.Action.v114 + action: forward-one-card + secondary: ~ + card-type: + description: "The type of onboarding this card should be shown in, whether it a fresh install or an update. The default is fresh-install.\n" + type: OnboardingCardType + default: basic + disqualifiers: + description: "A list of ConditionName strings corresponding to targeting expressions. The card will not be shown if any expression is `true`.\n" + type: List + default: [] + image: + description: "The image that should be dispalyed on the card.\n" + type: NimbusOnboardingHeaderImage + default: welcome-globe + instructions-popup: + description: "The object describing the specific instruction popup button for a card. If left empty, the card will have no instruction popup information\n" + type: Option + default: ~ + link: + description: "The object describing the link button for a card. If left empty, the card will have no link.\n" + type: Option + default: ~ + multiple-choice-buttons: + description: "A list of multiple choice buttons that the card will display\n" + type: List + default: [] + onboarding-type: + description: "The type of onboarding this card should be shown in, whether it a fresh install or an update. The default is fresh-install.\n" + type: OnboardingType + default: fresh-install + order: + description: "The place in the order where the card will be found. The feature layer will then sort the cards based on this field.\n" + type: Int + default: 10 + prerequisites: + description: "A list of ConditionName strings corresponding to targeting expressions. The card will be shown if all expressions `true` and if no expressions in the `disqualifiers` table are true, or if the `disqualifiers` table is empty.\n" + type: List + default: [] + title: + description: "The title displayed on the card, in prominent, bolded text. This should never be defaulted.\n" + type: Text + default: "" + NimbusOnboardingInstructionPopup: + description: "The object outlining the content of the instruction card.\n" + fields: + button-action: + description: "The action the button should have. Default is `dismiss-and-next-card`\n" + type: OnboardingInstructionsPopupActions + default: dismiss-and-next-card + button-title: + description: "The title the button should have. This should never be defaulted.\n" + type: Text + default: "" + instructions: + description: "A list of instructions, either as free text, or as Text identifiers.\n" + type: List + default: [] + title: + description: "The text of the popup. This should never be defaulted.\n" + type: Text + default: "" + NimbusOnboardingLink: + description: "A group of properties describing the attributes for the active link on a card\n" + fields: + title: + description: "The text of the link title.\n" + type: Text + default: Onboarding/Onboarding.Welcome.Link.Action.v114 + url: + description: "The url that the link will lead to.\n" + type: String + default: "https://www.mozilla.org/privacy/firefox/" + NimbusOnboardingMultipleChoiceButton: + description: "A group of properties describing the attributes of a multiple choice button on a card\n" + fields: + action: + description: "The action the button should take. The default for this will be \"theme-system-default\"\n" + type: OnboardingMultipleChoiceAction + default: theme-system-default + image: + description: "The text of the button title. This should never be defaulted.\n" + type: NimbusOnboardingMultipleChoiceButtonImage + default: theme-system + title: + description: "The text of the button title. This should never be defaulted.\n" + type: Text + default: "" + SearchBarPositionFeature: + description: The configuration for the bottom search bar on the homescreen + fields: + is-bottom: + description: Whether or not the default position is at the bottom + type: Boolean + default: true + is-position-feature-enabled: + description: Whether or not the feature is enabled + type: Boolean + default: true + is-toolbar-cfr-on: + description: Whether or not the toolbar CFR shows. This is a temporary hack for Nimbus + type: Boolean + default: true + StyleData: + description: "A group of properities (predominantly visual) to the describe style of the message.\n" + fields: + max-display-count: + description: "How many sessions will this message be shown to the user before it is expired.\n" + type: Int + default: 5 + priority: + description: "The importance of this message. 0 is not very important, 100 is very important.\n" + type: Int + default: 50 + WebsiteConfig: + description: "It represents a configuration for different e-commerce websites and includes regular expressions for extracting product IDs from their respective URLs\n" + fields: + productIdFromURLRegex: + description: "It represents the product ID extracted from a regex query\n" + type: String + default: "" + validTLDs: + description: "Valid Top Level Domains\n" + type: List + default: [] diff --git a/experimenter/experimenter/features/manifests/ios/v134.2.0/experimenter.yaml b/experimenter/experimenter/features/manifests/ios/v134.2.0/experimenter.yaml new file mode 100644 index 0000000000..5a2e0ddad0 --- /dev/null +++ b/experimenter/experimenter/features/manifests/ios/v134.2.0/experimenter.yaml @@ -0,0 +1,332 @@ +--- +account-settings-redux-feature: + description: "This feature is for managing the roll out of the Account Settings Redux implementation\n" + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "Enables the feature\n" +address-autofill-edit: + description: This property defines if the address editing is enabled in Settings + hasExposure: true + exposureDescription: "" + variables: + status: + type: boolean + description: "If true, we will allow user to edit the address" +bookmark-refactor-feature: + description: "The Feature for managing the roll out of the Bookmark refactor feature\n" + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "Enables the bookmark refactor feature\n" +contextual-hint-feature: + description: This set holds all features pertaining to contextual hints. + hasExposure: true + exposureDescription: "" + variables: + features-enabled: + type: json + description: "This property provides a lookup table of whether specific contextual hints are enabled.\n" +credit-card-autofill: + description: This property defines the credit card autofill feature + hasExposure: true + exposureDescription: "" + variables: + credit-card-autofill-status: + type: boolean + description: "If true, we will allow user to use the credit autofill feature" +felt-privacy-feature: + description: The feature that enhances private browsing mode + hasExposure: true + exposureDescription: "" + variables: + felt-deletion-enabled: + type: boolean + description: "If true, enable Felt Deletion part of Felt Privacy" + simplified-ui-enabled: + type: boolean + description: "If true, enable simplified UI part of Felt Privacy" +firefox-suggest-feature: + description: Configuration for the Firefox Suggest feature. + hasExposure: true + exposureDescription: "" + variables: + available-suggestions-types: + type: json + description: "A map of suggestion types to booleans that indicate whether or not the provider should return suggestions of those types.\n" + status: + type: boolean + description: "Whether the feature is enabled. When Firefox Suggest is enabled, Firefox will download and store new search suggestions in the background, and show additional Search settings to control which suggestions appear in the awesomebar. When Firefox Suggest is disabled, Firefox will not download new suggestions, and hide the additional Search settings.\n" +general-app-features: + description: The feature that contains feature flags for the entire application + hasExposure: true + exposureDescription: "" + variables: + report-site-issue: + type: json + description: This property defines whether or not the feature is enabled +glean-server-knobs: + description: A feature that provides server-side configurations for Glean metrics (aka Server Knobs). + hasExposure: true + exposureDescription: "" + variables: + metrics-enabled: + type: json + description: "A map of metric base-identifiers to booleans representing the state of the 'enabled' flag for that metric." +homepage-rebuild-feature: + description: "This feature is for managing the roll out of the Homepage rebuild feature\n" + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "If true, enables the feature\n" +homescreenFeature: + description: The homescreen that the user goes to when they press home or new tab. + hasExposure: true + exposureDescription: "" + variables: + prefer-switch-to-open-tab: + type: boolean + description: "Enables the feature to automatically switch to an existing tab with the same content instead of opening a new one.\n" + sections-enabled: + type: json + description: "This property provides a lookup table of whether or not the given section should be enabled. If the section is enabled, it should be toggleable in the settings screen, and on by default.\n" +login-autofill: + description: This property defines the login autofill feature for automatically filling in usernames and passwords. + hasExposure: true + exposureDescription: "" + variables: + login-autofill-status: + type: boolean + description: "If true, allows the user to use the login autofill feature for usernames and passwords." +menu-refactor-feature: + description: "Controls the menu refactor feature\n" + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "Controls which menu users will see\n" + menu-hint: + type: boolean + description: "If true, enables the menu contextual hint.\n" +messaging: + description: "The in-app messaging system\n" + hasExposure: true + exposureDescription: "" + variables: + actions: + type: json + description: A growable map of action URLs. + message-under-experiment: + type: string + description: "Deprecated. Please use \"experiment\": \"{experiment}\" instead." + messages: + type: json + description: "A growable collection of messages, where the Key is the message identifier and the value is its associated MessageData.\n" + on-control: + type: string + description: What should be displayed when a control message is selected. + enum: + - show-next-message + - show-none + styles: + type: json + description: "A map of styles to configure message appearance.\n" + triggers: + type: json + description: "A collection of out the box trigger expressions. Each entry maps to a valid JEXL expression.\n" + ~~experiment: + type: string + description: Not to be set by experiment. +microsurvey-feature: + description: "A feature that shows the microsurvey for users to interact with and submit responses.\n" + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "If true, the feature is active.\n" +native-error-page-feature: + description: "This feature is for managing the roll out of the native error page feature\n" + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "If true, the feature is active.\n" + no_internet_connection_error: + type: boolean + description: "This feature is for managing the roll out of the no interet connection native error page feature\n" +night-mode-feature: + description: "Describes the night mode feature's configuration\n" + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "Whether night mode is available for users or not\n" +onboarding-framework-feature: + description: "The new onboarding framework feature that will allow onboarding to be experimentable through initial experiments.\n" + hasExposure: true + exposureDescription: "" + variables: + cards: + type: json + description: "The list of available cards for onboarding.\n" + conditions: + type: json + description: "A collection of out the box conditional expressions to be used in determining whether a card should show or not. Each entry maps to a valid JEXL expression.\n" + dismissable: + type: boolean + description: "Whether or not the entire onboarding is dismissable by pressing an X at the top right corner of the screen.\n" +password-generator-feature: + description: Password Generator Feature + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "If true, the password generator feature is enabled" +pull-to-refresh-refactor-feature: + description: "The Feature flag to manage the roll out of the new pull to refresh feature.\n" + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "Enables the feature\n" +redux-search-settings-feature: + description: "This feature is for managing the roll out of redux on the search settings screen\n" + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "Enables the feature\n" +remote-tab-management: + description: "Features that let users manage tabs on other devices that are connected to the same Mozilla account.\n" + hasExposure: true + exposureDescription: "" + variables: + close-tabs-enabled: + type: boolean + description: "Whether the feature to close synced tabs is enabled. When enabled, this device will allow other devices to close tabs that are open on this device, and show a \"close\" button for tabs that are currently open on other supported devices in the synced tabs tray.\n" +search: + description: "Configuring the functionality to do with search. This will be separated into smaller sub-features in later releases.\n" + hasExposure: true + exposureDescription: "" + variables: + awesome-bar: + type: json + description: Configuring the awesome bar. +sent-from-firefox-feature: + description: "Adds additional promo text to links shared to WhatsApp.\n" + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "Controls whether promo text is added to WhatsApp shares and an on/off toggle is added to Settings.\n" +shopping2023: + description: "The configuration setting for the status of the Fakespot feature\n" + hasExposure: true + exposureDescription: "" + variables: + back_in_stock_reporting: + type: boolean + description: "If true, enables for users the reporting feature for products back in stock.\n" + config: + type: json + description: "A Map of website configurations\n" + product_ads: + type: boolean + description: "If true, enables the product advertisement feature, allowing users to see and interact with ads for various products.\n" + relay: + type: string + description: "Configurable relay URL for production environment\n" + status: + type: boolean + description: "Whether the Fakespot feature is enabled or disabled\n" +splash-screen: + description: "A feature that extends splash screen duration, allowing additional data fetching time for the app's initial run.\n" + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "If true, the feature is active.\n" + maximum_duration_ms: + type: int + description: "The maximum amount of time in milliseconds the splashscreen will be visible while waiting for initialization calls to complete.\n" +spotlight-search: + description: Add pages as items findable with Spotlight. + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "If this is true, then on each page load adds a new item to Spotlight." + icon-type: + type: string + description: "The icon that is displayed next to the item in the search results. If this is `null`, then no icon is displayed.\n" + keep-for-days: + type: int + description: "Number of days to keep the item before automatic deletion. If this is left `null`, then it is left to iOS's default.\n" + searchable-content: + type: string + description: "The text content that is made searchable. If this is `null` then no additional content is used, and only the title and URL will be used.\n" +tabTrayFeature: + description: The tab tray screen that the user goes to when they open the tab tray. + hasExposure: true + exposureDescription: "" + variables: + sections-enabled: + type: json + description: "This property provides a lookup table of whether or not the given section should be enabled. If the section is enabled, it should be toggleable in the settings screen, and on by default." +toolbar-refactor-feature: + description: "This feature is for managing the roll out of the Toolbar refactor feature\n" + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "Enables the feature\n" + navigation_hint: + type: boolean + description: "If true, enables the navigation contextual hint.\n" + one_tap_new_tab: + type: boolean + description: "If true, enables the one tap new tab feature for users.\n" + unified_search: + type: boolean + description: "Enables the unified search feature\n" +tos-feature: + description: "This feature is for managing the roll out of the ToS (Term of Service) implementation\n" + hasExposure: true + exposureDescription: "" + variables: + status: + type: boolean + description: "Enables the feature\n" +tracking-protection-refactor: + description: "The Enhanced Tracking Protection refactor\n" + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "Whether the Enhanced Tracking Protection refactor is enabled or not\n" +zoom-feature: + description: "The configuration for the status of the zoom feature\n" + hasExposure: true + exposureDescription: "" + variables: + status: + type: boolean + description: "Whether the page zoom feature is enabled or not\n" diff --git a/experimenter/experimenter/features/manifests/ios/v134.2.0/release.fml.yaml b/experimenter/experimenter/features/manifests/ios/v134.2.0/release.fml.yaml new file mode 100644 index 0000000000..ac09191fd4 --- /dev/null +++ b/experimenter/experimenter/features/manifests/ios/v134.2.0/release.fml.yaml @@ -0,0 +1,1016 @@ +--- +version: 1.0.0 +about: + description: The root level Feature Manifest for Firefox for iOS +channels: + - release +features: + account-settings-redux-feature: + description: "This feature is for managing the roll out of the Account Settings Redux implementation\n" + variables: + enabled: + description: "Enables the feature\n" + type: Boolean + default: false + address-autofill-edit: + description: This property defines if the address editing is enabled in Settings + variables: + status: + description: "If true, we will allow user to edit the address" + type: Boolean + default: false + bookmark-refactor-feature: + description: "The Feature for managing the roll out of the Bookmark refactor feature\n" + variables: + enabled: + description: "Enables the bookmark refactor feature\n" + type: Boolean + default: false + contextual-hint-feature: + description: This set holds all features pertaining to contextual hints. + variables: + features-enabled: + description: "This property provides a lookup table of whether specific contextual hints are enabled.\n" + type: "Map" + default: + toolbar-hint: true + credit-card-autofill: + description: This property defines the credit card autofill feature + variables: + credit-card-autofill-status: + description: "If true, we will allow user to use the credit autofill feature" + type: Boolean + default: true + felt-privacy-feature: + description: The feature that enhances private browsing mode + variables: + felt-deletion-enabled: + description: "If true, enable Felt Deletion part of Felt Privacy" + type: Boolean + default: false + simplified-ui-enabled: + description: "If true, enable simplified UI part of Felt Privacy" + type: Boolean + default: false + firefox-suggest-feature: + description: Configuration for the Firefox Suggest feature. + variables: + available-suggestions-types: + description: "A map of suggestion types to booleans that indicate whether or not the provider should return suggestions of those types.\n" + type: "Map" + default: + amp: true + ampMobile: false + wikipedia: true + status: + description: "Whether the feature is enabled. When Firefox Suggest is enabled, Firefox will download and store new search suggestions in the background, and show additional Search settings to control which suggestions appear in the awesomebar. When Firefox Suggest is disabled, Firefox will not download new suggestions, and hide the additional Search settings.\n" + type: Boolean + default: false + general-app-features: + description: The feature that contains feature flags for the entire application + variables: + report-site-issue: + description: This property defines whether or not the feature is enabled + type: GeneralFeature + default: + status: false + glean-server-knobs: + description: A feature that provides server-side configurations for Glean metrics (aka Server Knobs). + variables: + metrics-enabled: + description: "A map of metric base-identifiers to booleans representing the state of the 'enabled' flag for that metric." + type: "Map" + default: {} + homepage-rebuild-feature: + description: "This feature is for managing the roll out of the Homepage rebuild feature\n" + variables: + enabled: + description: "If true, enables the feature\n" + type: Boolean + default: false + homescreenFeature: + description: The homescreen that the user goes to when they press home or new tab. + variables: + prefer-switch-to-open-tab: + description: "Enables the feature to automatically switch to an existing tab with the same content instead of opening a new one.\n" + type: Boolean + default: false + sections-enabled: + description: "This property provides a lookup table of whether or not the given section should be enabled. If the section is enabled, it should be toggleable in the settings screen, and on by default.\n" + type: "Map" + default: + jump-back-in: true + recent-explorations: false + login-autofill: + description: This property defines the login autofill feature for automatically filling in usernames and passwords. + variables: + login-autofill-status: + description: "If true, allows the user to use the login autofill feature for usernames and passwords." + type: Boolean + default: true + menu-refactor-feature: + description: "Controls the menu refactor feature\n" + variables: + enabled: + description: "Controls which menu users will see\n" + type: Boolean + default: false + menu-hint: + description: "If true, enables the menu contextual hint.\n" + type: Boolean + default: false + messaging: + description: "The in-app messaging system\n" + documentation: + - name: User documentation + url: "https://experimenter.info/messaging/mobile-messaging" + contacts: + - jhugman@mozilla.com + - brennie@mozilla.com + - gbuciu@mozilla.com + - wteichmann@mozilla.com + events: + - "https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_shown" + - "https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_clicked" + - "https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_expired" + - "https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_dismissed" + - "https://dictionary.telemetry.mozilla.org/apps/firefox_ios/metrics/messaging_malformed" + variables: + actions: + description: A growable map of action URLs. + type: "Map" + default: + OPEN_SETTINGS: "://deep-link?url=settings/general" + OPEN_SETTINGS_NEW_TAB: "://deep-link?url=settings/newtab" + OPEN_SETTINGS_HOMESCREEN: "://deep-link?url=settings/homepage" + OPEN_SETTINGS_WALLPAPERS: "://deep-link?url=settings/wallpaper" + OPEN_SETTINGS_EMAIL: "://deep-link?url=settings/mailto" + OPEN_SETTINGS_SEARCH_ENGINE: "://deep-link?url=settings/search" + OPEN_SETTINGS_PRIVACY: "://deep-link?url=settings/clear-private-data" + OPEN_SETTINGS_FXA: "://deep-link?url=settings/fxa" + OPEN_SETTINGS_THEME: "://deep-link?url=settings/theme" + OPEN_URL: "://open-url" + VIEW_BOOKMARKS: "://deep-link?url=homepanel/bookmarks" + VIEW_TOP_SITES: "://deep-link?url=homepanel/top-sites" + VIEW_READING_LIST: "://deep-link?url=homepanel/reading-list" + VIEW_HISTORY: "://deep-link?url=homepanel/history" + VIEW_DOWNLOADS: "://deep-link?url=homepanel/downloads" + ENABLE_PRIVATE_BROWSING: "://deep-link?url=homepanel/new-private-tab" + OPEN_NEW_TAB: "://deep-link?url=homepanel/new-tab" + MAKE_DEFAULT_BROWSER: "://deep-link?url=default-browser/system-settings" + MAKE_DEFAULT_BROWSER_WITH_TUTORIAL: "://deep-link?url=default-browser/tutorial" + OPEN_SHARE_SHEET: "://share-sheet" + string-alias: ActionName + message-under-experiment: + description: "Deprecated. Please use \"experiment\": \"{experiment}\" instead." + type: Option + default: ~ + messages: + description: "A growable collection of messages, where the Key is the message identifier and the value is its associated MessageData.\n" + type: "Map" + default: + default-browser: + surface: new-tab-card + style: FALLBACK + trigger-if-all: + - SUPPORTS_DEFAULT_BROWSER + - ON_FOURTH_LAUNCH_THIS_YEAR + except-if-any: + - I_AM_DEFAULT_BROWSER + title: Default Browser/DefaultBrowserCard.Title + text: Default Browser/DefaultBrowserCard.Description + button-label: Default Browser/DefaultBrowserCard.Button.v2 + action: MAKE_DEFAULT_BROWSER_WITH_TUTORIAL + string-alias: MessageKey + on-control: + description: What should be displayed when a control message is selected. + type: ControlMessageBehavior + default: show-next-message + styles: + description: "A map of styles to configure message appearance.\n" + type: "Map" + default: + FALLBACK: + priority: 40 + max-display-count: 20 + DEFAULT: + priority: 50 + max-display-count: 5 + MICROSURVEY: + priority: 50 + max-display-count: 1 + NOTIFICATION: + priority: 50 + max-display-count: 1 + PERSISTENT: + priority: 50 + max-display-count: 20 + SURVEY: + priority: 55 + max-display-count: 10 + WARNING: + priority: 60 + max-display-count: 10 + URGENT: + priority: 100 + max-display-count: 10 + string-alias: StyleName + triggers: + description: "A collection of out the box trigger expressions. Each entry maps to a valid JEXL expression.\n" + type: "Map" + default: + ALWAYS: "true" + NEVER: "false" + USER_RECENTLY_INSTALLED: days_since_install < 7 + USER_RECENTLY_UPDATED: days_since_update < 7 && days_since_install != days_since_update + USER_TIER_ONE_COUNTRY: "('US' in locale || 'GB' in locale || 'CA' in locale || 'DE' in locale || 'FR' in locale)" + USER_EN_SPEAKER: "'en' in locale" + USER_ES_SPEAKER: "'es' in locale" + USER_DE_SPEAKER: "'de' in locale" + USER_FR_SPEAKER: "'fr' in locale" + DEVICE_ANDROID: "os == 'Android'" + DEVICE_IOS: "os == 'iOS'" + DAY_1_AFTER_INSTALL: days_since_install == 1 + DAY_2_AFTER_INSTALL: days_since_install == 2 + DAY_3_AFTER_INSTALL: days_since_install == 3 + DAY_4_AFTER_INSTALL: days_since_install == 4 + DAY_5_AFTER_INSTALL: days_since_install == 5 + MORE_THAN_24H_SINCE_INSTALLED_OR_UPDATED: days_since_update >= 1 + NOT_LAUNCHED_YESTERDAY: "'app_cycle.foreground'|eventLastSeen('Days', 1) > 1" + AFTER_THREE_LAUNCHES_THIS_WEEK: "'app_cycle.foreground'|eventSum('Weeks', 1, 0) >= 3" + I_AM_DEFAULT_BROWSER: is_default_browser + I_AM_NOT_DEFAULT_BROWSER: is_default_browser == false + SUPPORTS_DEFAULT_BROWSER: "os_version|versionCompare('14.!') >= 0" + INACTIVE_NEW_USER: is_inactive_new_user + ALLOWED_TIPS_NOTIFICATIONS: allowed_tips_notifications + FXA_CURRENTLY_SIGNED_IN: is_fxa_signed_in == true + SECOND_HOMEPAGE_VIEW: "'homepage_viewed'|eventSum('Years', 4, 0) >= 2" + ON_FOURTH_LAUNCH_THIS_YEAR: "'app_cycle.foreground'|eventSum('Years', 1, 0) > 3" + string-alias: TriggerName + ~~experiment: + description: Not to be set by experiment. + type: ExperimentSlug + default: "{experiment}" + string-alias: ExperimentSlug + allow-coenrollment: true + microsurvey-feature: + description: "A feature that shows the microsurvey for users to interact with and submit responses.\n" + variables: + enabled: + description: "If true, the feature is active.\n" + type: Boolean + default: false + native-error-page-feature: + description: "This feature is for managing the roll out of the native error page feature\n" + variables: + enabled: + description: "If true, the feature is active.\n" + type: Boolean + default: false + no_internet_connection_error: + description: "This feature is for managing the roll out of the no interet connection native error page feature\n" + type: Boolean + default: false + night-mode-feature: + description: "Describes the night mode feature's configuration\n" + variables: + enabled: + description: "Whether night mode is available for users or not\n" + type: Boolean + default: true + onboarding-framework-feature: + description: "The new onboarding framework feature that will allow onboarding to be experimentable through initial experiments.\n" + variables: + cards: + description: "The list of available cards for onboarding.\n" + type: "Map" + default: + welcome: + card-type: basic + order: 10 + title: Onboarding/Onboarding.Welcome.Title.TreatementA.v120 + body: Onboarding/Onboarding.Welcome.Description.TreatementA.v120 + image: welcome-globe + link: + title: Onboarding/Onboarding.Welcome.Link.Action.v114 + url: "https://www.mozilla.org/privacy/firefox/" + buttons: + primary: + title: Onboarding/Onboarding.Welcome.ActionTreatementA.v114 + action: open-instructions-popup + secondary: + title: Onboarding/Onboarding.Welcome.Skip.v114 + action: forward-one-card + instructions-popup: + title: Onboarding/DefaultBrowserPopup.Title.v114 + button-title: Onboarding/DefaultBrowserPopup.ButtonTitle.v114 + button-action: open-ios-fx-settings + instructions: + - Onboarding/DefaultBrowserPopup.FirstLabel.v114 + - Onboarding/DefaultBrowserPopup.SecondLabel.v114 + - Onboarding/DefaultBrowserPopup.ThirdLabel.v114 + onboarding-type: fresh-install + prerequisites: + - ALWAYS + notification-permissions: + card-type: basic + order: 30 + title: Onboarding/Onboarding.Notification.Title.v120 + body: Onboarding/Onboarding.Notification.Description.v120 + image: notifications + buttons: + primary: + title: Onboarding/Onboarding.Notification.TurnOnNotifications.Action.v114 + action: request-notifications + secondary: + title: Onboarding/Onboarding.Notification.Skip.Action.v115 + action: forward-one-card + onboarding-type: fresh-install + prerequisites: + - ALWAYS + sign-to-sync: + card-type: basic + order: 20 + title: Onboarding/Onboarding.Sync.Title.v120 + body: Onboarding/Onboarding.Sync.Description.v123 + image: sync-devices + buttons: + primary: + title: Onboarding/Onboarding.Sync.SignIn.Action.v114 + action: sync-sign-in + secondary: + title: Onboarding/Onboarding.Sync.Skip.Action.v114 + action: forward-one-card + onboarding-type: fresh-install + prerequisites: + - ALWAYS + customization-theme: + card-type: multiple-choice + order: 40 + title: Onboarding/Onboarding.Customization.Theme.Title.v123 + body: Onboarding/Onboarding.Customization.Theme.Description.v123 + image: themeing + buttons: + primary: + title: Onboarding/Onboarding.Customization.Theme.Continue.Action.v123 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Customization.Theme.System.Action.v123 + image: theme-system + action: theme-system-default + - title: Onboarding/Onboarding.Customization.Theme.Light.Action.v123 + image: theme-light + action: theme-light + - title: Onboarding/Onboarding.Customization.Theme.Dark.Action.v123 + image: theme-dark + action: theme-dark + onboarding-type: fresh-install + prerequisites: + - ALWAYS + customization-toolbar: + card-type: multiple-choice + order: 41 + title: Onboarding/Onboarding.Customization.Toolbar.Title.v123 + body: Onboarding/Onboarding.Customization.Toolbar.Description.v123 + image: toolbar + buttons: + primary: + title: Onboarding/Onboarding.Customization.Toolbar.Continue.Action.v123 + action: forward-one-card + multiple-choice-buttons: + - title: Onboarding/Onboarding.Customization.Toolbar.Top.Action.v123 + image: toolbar-top + action: toolbar-top + - title: Onboarding/Onboarding.Customization.Toolbar.Bottom.Action.v123 + image: toolbar-bottom + action: toolbar-bottom + onboarding-type: fresh-install + prerequisites: + - ALWAYS + update-welcome: + card-type: basic + order: 10 + title: Upgrade/Upgrade.Welcome.Title.v114 + body: Upgrade/Upgrade.Welcome.Description.v114 + image: welcome-globe + buttons: + primary: + title: Upgrade/Upgrade.Welcome.Action.v114 + action: forward-one-card + onboarding-type: upgrade + prerequisites: + - NEVER + update-sign-to-sync: + card-type: basic + order: 20 + title: Upgrade/Upgrade.SyncSign.Title.v114 + body: Upgrade/Upgrade.SyncSign.Description.v114 + image: sync-devices + buttons: + primary: + title: Upgrade/Upgrade.SyncSign.Action.v114 + action: sync-sign-in + secondary: + title: Onboarding/Onboarding.LaterAction.v114 + action: forward-one-card + onboarding-type: upgrade + prerequisites: + - NEVER + string-alias: NimbusOnboardingCardKey + conditions: + description: "A collection of out the box conditional expressions to be used in determining whether a card should show or not. Each entry maps to a valid JEXL expression.\n" + type: "Map" + default: + ALWAYS: "true" + NEVER: "false" + string-alias: ConditionName + dismissable: + description: "Whether or not the entire onboarding is dismissable by pressing an X at the top right corner of the screen.\n" + type: Boolean + default: true + password-generator-feature: + description: Password Generator Feature + variables: + enabled: + description: "If true, the password generator feature is enabled" + type: Boolean + default: false + pull-to-refresh-refactor-feature: + description: "The Feature flag to manage the roll out of the new pull to refresh feature.\n" + variables: + enabled: + description: "Enables the feature\n" + type: Boolean + default: false + redux-search-settings-feature: + description: "This feature is for managing the roll out of redux on the search settings screen\n" + variables: + enabled: + description: "Enables the feature\n" + type: Boolean + default: false + remote-tab-management: + description: "Features that let users manage tabs on other devices that are connected to the same Mozilla account.\n" + variables: + close-tabs-enabled: + description: "Whether the feature to close synced tabs is enabled. When enabled, this device will allow other devices to close tabs that are open on this device, and show a \"close\" button for tabs that are currently open on other supported devices in the synced tabs tray.\n" + type: Boolean + default: false + search: + description: "Configuring the functionality to do with search. This will be separated into smaller sub-features in later releases.\n" + variables: + awesome-bar: + description: Configuring the awesome bar. + type: AwesomeBar + default: + min-search-term: 3 + position: + is-bottom: true + is-position-feature-enabled: true + is-toolbar-cfr-on: false + search-highlights: false + use-page-content: false + sent-from-firefox-feature: + description: "Adds additional promo text to links shared to WhatsApp.\n" + variables: + enabled: + description: "Controls whether promo text is added to WhatsApp shares and an on/off toggle is added to Settings.\n" + type: Boolean + default: false + shopping2023: + description: "The configuration setting for the status of the Fakespot feature\n" + variables: + back_in_stock_reporting: + description: "If true, enables for users the reporting feature for products back in stock.\n" + type: Boolean + default: false + config: + description: "A Map of website configurations\n" + type: "Map" + default: + amazon: + productIdFromURLRegex: "(?:[\\\\/]|$|%2F)(?[A-Z0-9]{10})(?:[\\\\/]|$|\\\\#|\\\\?|%2F)" + validTLDs: + - com + - de + - fr + walmart: + productIdFromURLRegex: "\\\\/ip\\\\/(?:[A-Za-z0-9-]{1,320}\\\\/)?(?[0-9]{3,13})" + validTLDs: + - com + bestbuy: + productIdFromURLRegex: "\\\\/(?\\\\d+\\\\.p)" + validTLDs: + - com + product_ads: + description: "If true, enables the product advertisement feature, allowing users to see and interact with ads for various products.\n" + type: Boolean + default: false + relay: + description: "Configurable relay URL for production environment\n" + type: String + default: "https://mozilla-ohttp-fakespot.fastly-edge.com/" + status: + description: "Whether the Fakespot feature is enabled or disabled\n" + type: Boolean + default: false + splash-screen: + description: "A feature that extends splash screen duration, allowing additional data fetching time for the app's initial run.\n" + variables: + enabled: + description: "If true, the feature is active.\n" + type: Boolean + default: false + maximum_duration_ms: + description: "The maximum amount of time in milliseconds the splashscreen will be visible while waiting for initialization calls to complete.\n" + type: Int + default: 0 + spotlight-search: + description: Add pages as items findable with Spotlight. + variables: + enabled: + description: "If this is true, then on each page load adds a new item to Spotlight." + type: Boolean + default: false + icon-type: + description: "The icon that is displayed next to the item in the search results. If this is `null`, then no icon is displayed.\n" + type: Option + default: letter + keep-for-days: + description: "Number of days to keep the item before automatic deletion. If this is left `null`, then it is left to iOS's default.\n" + type: Option + default: ~ + searchable-content: + description: "The text content that is made searchable. If this is `null` then no additional content is used, and only the title and URL will be used.\n" + type: Option + default: text-excerpt + tabTrayFeature: + description: The tab tray screen that the user goes to when they open the tab tray. + variables: + sections-enabled: + description: "This property provides a lookup table of whether or not the given section should be enabled. If the section is enabled, it should be toggleable in the settings screen, and on by default." + type: "Map" + default: + inactive-tabs: true + toolbar-refactor-feature: + description: "This feature is for managing the roll out of the Toolbar refactor feature\n" + variables: + enabled: + description: "Enables the feature\n" + type: Boolean + default: false + navigation_hint: + description: "If true, enables the navigation contextual hint.\n" + type: Boolean + default: false + one_tap_new_tab: + description: "If true, enables the one tap new tab feature for users.\n" + type: Boolean + default: false + unified_search: + description: "Enables the unified search feature\n" + type: Boolean + default: false + tos-feature: + description: "This feature is for managing the roll out of the ToS (Term of Service) implementation\n" + variables: + status: + description: "Enables the feature\n" + type: Boolean + default: false + tracking-protection-refactor: + description: "The Enhanced Tracking Protection refactor\n" + variables: + enabled: + description: "Whether the Enhanced Tracking Protection refactor is enabled or not\n" + type: Boolean + default: false + zoom-feature: + description: "The configuration for the status of the zoom feature\n" + variables: + status: + description: "Whether the page zoom feature is enabled or not\n" + type: Boolean + default: true +enums: + ContextualHint: + description: The identifiers for a individual contextual hints. + variants: + toolbar-hint: + description: The contextual hint bubble that appears to provide a hint about the toolbar. + ControlMessageBehavior: + description: An enum to influence what should be displayed when a control message is selected. + variants: + show-next-message: + description: The next eligible message should be shown. + show-none: + description: The surface should show no message. + HomeScreenSection: + description: The identifiers for the sections of the homescreen. + variants: + jump-back-in: + description: The tabs the user was looking immediately before being interrupted. + recent-explorations: + description: The tab groups + IconType: + description: "The icon that will be added to the item in the device's search engine." + variants: + favicon: + description: The favicon of the page + letter: + description: An icon generated from the first letter of the base domain. + screenshot: + description: A screenshot of the page at load time. + MessageSurfaceId: + description: "For messaging, we would like to have a message tell us which surface its associated with. This is a label that matches across both Android and iOS.\n" + variants: + Unknown: + description: A message has NOT declared its target surface. + microsurvey: + description: This is a microsurvey that appears on top of the bottom toolbar to the user. + new-tab-card: + description: This is the card that appears at the top on the Firefox Home Page. + notification: + description: This is a local notification send to the user periodically with tips and updates. + survey: + description: This is a full-page that appears providing a survey to the user. + NimbusOnboardingHeaderImage: + description: "The identifiers for the different images available for cards in onboarding\n" + variants: + customize-firefox: + description: "Corresponding to the fox window image\n" + notifications: + description: "Corresponding to the notifications image\n" + notifications-ctd: + description: "Corresponding to the notifications image for CTD\n" + search-widget: + description: "Corresponding to the fox search widget image\n" + set-default-steps: + description: "Corresponding to the set to default steps image\n" + set-to-dock: + description: "Corresponding to the set to dock image\n" + sync-devices: + description: "Corresponding to the sync-devices image\n" + sync-devices-ctd: + description: "Corresponding to the sync image for CTD\n" + themeing: + description: "Corresponding to the fox world image\n" + toolbar: + description: "Corresponding to the fox world image\n" + welcome-ctd: + description: "Corresponding to the welcome image for CTD\n" + welcome-globe: + description: "Corresponding to the fox world image\n" + NimbusOnboardingMultipleChoiceButtonImage: + description: "The identifiers for the different images available for multiple choice buttons in onboarding\n" + variants: + theme-dark: + description: "Corresponding to the dark theme\n" + theme-light: + description: "Corresponding to the light theme\n" + theme-system: + description: "Corresponding to the system theme\n" + toolbar-bottom: + description: "Corresponding to the toolbar on the bottom\n" + toolbar-top: + description: "Corresponding to the toolbar on top\n" + OnboardingActions: + description: "The identifiers for the different actions available for cards in onboarding\n" + variants: + end-onboarding: + description: "Will end the onboarding on a set card\n" + forward-one-card: + description: "Will take the user to the next card\n" + forward-three-card: + description: "Will take the user to the next card\n" + forward-two-card: + description: "Will take the user to the next card\n" + open-instructions-popup: + description: "Will open up a popup with instructions for something\n" + open-ios-fx-settings: + description: "Will take the user to the default browser settings in the iOS system settings\n" + read-privacy-policy: + description: "Will open a webview where the user can read the privacy policy\n" + request-notifications: + description: "Will request to allow notifications from the user\n" + set-default-browser: + description: "Will send the user to settings to set Firefox as their default browser and advance to next card\n" + sync-sign-in: + description: "Will take the user to the sync sign in flow\n" + OnboardingCardType: + description: "The identifiers for the different types of onboarding cards.\n" + variants: + basic: + description: "Corresponding to basic info onboarding cards\n" + multiple-choice: + description: "Corresponding to onboarding cards with multiple choice buttons\n" + OnboardingInstructionsPopupActions: + description: "The identifiers for the different actions available for the insturction card in onboarding\n" + variants: + dismiss: + description: "Will dismiss the popup\n" + dismiss-and-next-card: + description: "Will dismiss the popup and move to the next card\n" + open-ios-fx-settings: + description: "Will take the user to the default browser settings in the iOS system settings\n" + OnboardingMultipleChoiceAction: + description: "The identifiers for the different actions available for cards in onboarding\n" + variants: + theme-dark: + description: "Will will set the theme to dark mode\n" + theme-light: + description: "Will set the theme to light mode\n" + theme-system-default: + description: "Will set the theme to use the system theme\n" + toolbar-bottom: + description: "Will set the toolbar on the bottom\n" + toolbar-top: + description: "Will set the toolbar on the top\n" + OnboardingType: + description: "The identifiers for the different types of onboarding cards.\n" + variants: + fresh-install: + description: "Corresponding to onboarding cards that are for new users\n" + upgrade: + description: "Corresponding to onboarding cards that are for users who have updated\n" + PageContent: + description: "The page content that will be added as an item in the device's search engine." + variants: + html-content: + description: Use all the page as HTML + text-content: + description: Use all the page as text + text-excerpt: + description: Only use the first paragraph + SuggestionType: + description: The type of a Firefox Suggest search suggestion. + variants: + amp: + description: A Firefox Suggestion for desktop from adMarketplace. + ampMobile: + description: A Firefox Suggestion specifically for mobile from adMarketplace. + wikipedia: + description: A Firefox Suggestion for a Wikipedia page. + TabTraySection: + description: The identifiers for the sections of the tab tray. + variants: + inactive-tabs: + description: Tabs that have been automatically closed for the user. +objects: + AwesomeBar: + description: "A configuration option for the awesome bar. Part of the `search` feature." + fields: + min-search-term: + description: The minimum number of characters that the user types before searching in the page. + type: Int + default: 3 + position: + description: "This property defines whether or not the feature is enabled, and the position of the search bar\n" + type: SearchBarPositionFeature + default: + is-position-feature-enabled: true + is-bottom: true + is-toolbar-cfr-on: true + search-highlights: + description: Whether or not search highlights are enabled + type: Boolean + default: false + use-page-content: + description: "Search in the open tab's text content when typing." + type: Boolean + default: false + GeneralFeature: + description: The configuration for the a feature that can be enabled or disabled + fields: + status: + description: Whether or not the feature is enabled + type: Boolean + default: false + MessageData: + description: "An object to describe a message. It uses human readable strings to describe the triggers, action and style of the message as well as the text of the message and call to action.\n" + fields: + action: + description: "The name of a deeplink URL to be opened if the button is clicked.\n" + type: Option + default: ~ + action-params: + description: Query parameters appended to the deeplink action URL + type: "Map" + default: {} + button-label: + description: "The text on the button. If no text is present, the whole message is clickable.\n" + type: Option + default: ~ + except-if-any: + description: "A list of strings corresponding to targeting expressions. If any of these expressions evaluate to `true`, the message will not be eligible.\n" + type: List + default: [] + experiment: + description: The experiment slug that this message is involved in. + type: Option + default: ~ + is-control: + description: "Indicates if this message is the control message, if true shouldn't be displayed" + type: Boolean + default: false + microsurveyConfig: + description: Optional configuration data for a microsurvey. + type: Option + default: ~ + style: + description: "The style as described in a `StyleData` from the styles table.\n" + type: StyleName + default: DEFAULT + surface: + description: Each message will tell us the surface it is targeting with this. + type: MessageSurfaceId + default: Unknown + text: + description: The message text displayed to the user + type: Text + default: "" + title: + description: The title text displayed to the user + type: Option + default: ~ + trigger-if-all: + description: "A list of strings corresponding to targeting expressions. All named expressions must evaluate to true if the message is to be eligible to be shown.\n" + type: List + default: + - ALWAYS + MicrosurveyConfig: + description: "Attributes relating to microsurvey messaging.\n" + fields: + icon: + description: The asset name in our bundle used as the icon shown in the survey. + type: Image + default: lightbulbLarge + options: + description: The list of survey options to present to the user. + type: List + default: [] + utm-content: + description: The name used to provide as the utm_content parameter for the privacy notice. + type: Option + default: ~ + NimbusOnboardingButton: + description: "A group of properties describing the attributes of a card.\n" + fields: + action: + description: "The action the button should take. The default for this will be \"forward-one-card\"\n" + type: OnboardingActions + default: forward-one-card + title: + description: "The text of the button title. This should never be defaulted.\n" + type: Text + default: "" + NimbusOnboardingButtons: + description: "A set of buttons for the card. There can be up to two, but there must be at least one.\n" + fields: + primary: + description: "The primary button for the card. This must exist.\n" + type: NimbusOnboardingButton + default: + title: Primary Button + action: forward-one-card + secondary: + description: "A secondary, optional, button for the card.\n" + type: Option + default: ~ + NimbusOnboardingCardData: + description: "A group of properties describing the attributes of a card.\n" + fields: + body: + description: "The body text dispalyed on the card, in less prominent text. This should never be defaulted.\n" + type: Text + default: "" + buttons: + description: "The set of buttons associated with the card.\n" + type: NimbusOnboardingButtons + default: + primary: + title: Onboarding/Onboarding.Sync.Skip.Action.v114 + action: forward-one-card + secondary: ~ + card-type: + description: "The type of onboarding this card should be shown in, whether it a fresh install or an update. The default is fresh-install.\n" + type: OnboardingCardType + default: basic + disqualifiers: + description: "A list of ConditionName strings corresponding to targeting expressions. The card will not be shown if any expression is `true`.\n" + type: List + default: [] + image: + description: "The image that should be dispalyed on the card.\n" + type: NimbusOnboardingHeaderImage + default: welcome-globe + instructions-popup: + description: "The object describing the specific instruction popup button for a card. If left empty, the card will have no instruction popup information\n" + type: Option + default: ~ + link: + description: "The object describing the link button for a card. If left empty, the card will have no link.\n" + type: Option + default: ~ + multiple-choice-buttons: + description: "A list of multiple choice buttons that the card will display\n" + type: List + default: [] + onboarding-type: + description: "The type of onboarding this card should be shown in, whether it a fresh install or an update. The default is fresh-install.\n" + type: OnboardingType + default: fresh-install + order: + description: "The place in the order where the card will be found. The feature layer will then sort the cards based on this field.\n" + type: Int + default: 10 + prerequisites: + description: "A list of ConditionName strings corresponding to targeting expressions. The card will be shown if all expressions `true` and if no expressions in the `disqualifiers` table are true, or if the `disqualifiers` table is empty.\n" + type: List + default: [] + title: + description: "The title displayed on the card, in prominent, bolded text. This should never be defaulted.\n" + type: Text + default: "" + NimbusOnboardingInstructionPopup: + description: "The object outlining the content of the instruction card.\n" + fields: + button-action: + description: "The action the button should have. Default is `dismiss-and-next-card`\n" + type: OnboardingInstructionsPopupActions + default: dismiss-and-next-card + button-title: + description: "The title the button should have. This should never be defaulted.\n" + type: Text + default: "" + instructions: + description: "A list of instructions, either as free text, or as Text identifiers.\n" + type: List + default: [] + title: + description: "The text of the popup. This should never be defaulted.\n" + type: Text + default: "" + NimbusOnboardingLink: + description: "A group of properties describing the attributes for the active link on a card\n" + fields: + title: + description: "The text of the link title.\n" + type: Text + default: Onboarding/Onboarding.Welcome.Link.Action.v114 + url: + description: "The url that the link will lead to.\n" + type: String + default: "https://www.mozilla.org/privacy/firefox/" + NimbusOnboardingMultipleChoiceButton: + description: "A group of properties describing the attributes of a multiple choice button on a card\n" + fields: + action: + description: "The action the button should take. The default for this will be \"theme-system-default\"\n" + type: OnboardingMultipleChoiceAction + default: theme-system-default + image: + description: "The text of the button title. This should never be defaulted.\n" + type: NimbusOnboardingMultipleChoiceButtonImage + default: theme-system + title: + description: "The text of the button title. This should never be defaulted.\n" + type: Text + default: "" + SearchBarPositionFeature: + description: The configuration for the bottom search bar on the homescreen + fields: + is-bottom: + description: Whether or not the default position is at the bottom + type: Boolean + default: true + is-position-feature-enabled: + description: Whether or not the feature is enabled + type: Boolean + default: true + is-toolbar-cfr-on: + description: Whether or not the toolbar CFR shows. This is a temporary hack for Nimbus + type: Boolean + default: true + StyleData: + description: "A group of properities (predominantly visual) to the describe style of the message.\n" + fields: + max-display-count: + description: "How many sessions will this message be shown to the user before it is expired.\n" + type: Int + default: 5 + priority: + description: "The importance of this message. 0 is not very important, 100 is very important.\n" + type: Int + default: 50 + WebsiteConfig: + description: "It represents a configuration for different e-commerce websites and includes regular expressions for extracting product IDs from their respective URLs\n" + fields: + productIdFromURLRegex: + description: "It represents the product ID extracted from a regex query\n" + type: String + default: "" + validTLDs: + description: "Valid Top Level Domains\n" + type: List + default: [] From f86ea6cf67862d735880bb14d40ef82303cebf1a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 14 Jan 2025 16:07:49 -0500 Subject: [PATCH 33/36] chore(deps-dev): Bump ruff from 0.8.0 to 0.9.1 in /schemas (#12034) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [ruff](https://github.com/astral-sh/ruff) from 0.8.0 to 0.9.1.
Release notes

Sourced from ruff's releases.

0.9.1

Release Notes

Preview features

  • [pycodestyle] Run too-many-newlines-at-end-of-file on each cell in notebooks (W391) (#15308)
  • [ruff] Omit diagnostic for shadowed private function parameters in used-dummy-variable (RUF052) (#15376)

Rule changes

  • [flake8-bugbear] Improve assert-raises-exception message (B017) (#15389)

Formatter

  • Preserve trailing end-of line comments for the last string literal in implicitly concatenated strings (#15378)

Server

  • Fix a bug where the server and client notebooks were out of sync after reordering cells (#15398)

Bug fixes

  • [flake8-pie] Correctly remove wrapping parentheses (PIE800) (#15394)
  • [pyupgrade] Handle comments and multiline expressions correctly (UP037) (#15337)

Contributors

Install ruff 0.9.1

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf
https://github.com/astral-sh/ruff/releases/download/0.9.1/ruff-installer.sh
| sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy ByPass -c "irm
https://github.com/astral-sh/ruff/releases/download/0.9.1/ruff-installer.ps1
| iex"

... (truncated)

Changelog

Sourced from ruff's changelog.

0.9.1

Preview features

  • [pycodestyle] Run too-many-newlines-at-end-of-file on each cell in notebooks (W391) (#15308)
  • [ruff] Omit diagnostic for shadowed private function parameters in used-dummy-variable (RUF052) (#15376)

Rule changes

  • [flake8-bugbear] Improve assert-raises-exception message (B017) (#15389)

Formatter

  • Preserve trailing end-of line comments for the last string literal in implicitly concatenated strings (#15378)

Server

  • Fix a bug where the server and client notebooks were out of sync after reordering cells (#15398)

Bug fixes

  • [flake8-pie] Correctly remove wrapping parentheses (PIE800) (#15394)
  • [pyupgrade] Handle comments and multiline expressions correctly (UP037) (#15337)

0.9.0

Check out the blog post for a migration guide and overview of the changes!

Breaking changes

Ruff now formats your code according to the 2025 style guide. As a result, your code might now get formatted differently. See the formatter section for a detailed list of changes.

This release doesn’t remove or remap any existing stable rules.

Stabilization

The following rules have been stabilized and are no longer in preview:

The following behaviors have been stabilized:

... (truncated)

Commits
  • 12f86f3 Ruff 0.9.1 (#15407)
  • 2b28d56 Associate a trailing end-of-line comment in a parenthesized implicit concaten...
  • adca7bd Remove pygments pin (#15404)
  • 6b98a26 [red-knot] Support assert_type (#15194)
  • c874638 [red-knot] Move tuple-containing-Never tests to Markdown (#15402)
  • c364b58 [flake8-pie] Correctly remove wrapping parentheses (PIE800) (#15394)
  • 73d424e Fix outdated doc for handling the default file types with the pre-commit hook...
  • 6e9ff44 Insert the cells from the start position (#15398)
  • f2c3ddc [red-knot] Move intersection type tests to Markdown (#15396)
  • b861551 Remove unnecessary backticks (#15393)
  • Additional commits viewable in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=ruff&package-manager=pip&previous-version=0.8.0&new-version=0.9.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) Dependabot will merge this PR once CI passes on it, as requested by @jaredlockhart. [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
--------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Jared Lockhart <119884+jaredlockhart@users.noreply.github.com> --- schemas/poetry.lock | 42 +++++++++++++++++++++--------------------- schemas/pyproject.toml | 10 ++++++++-- 2 files changed, 29 insertions(+), 23 deletions(-) diff --git a/schemas/poetry.lock b/schemas/poetry.lock index dc665ecafc..90e4645047 100644 --- a/schemas/poetry.lock +++ b/schemas/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.5 and should not be changed by hand. [[package]] name = "annotated-types" @@ -1217,29 +1217,29 @@ files = [ [[package]] name = "ruff" -version = "0.8.0" +version = "0.9.1" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" files = [ - {file = "ruff-0.8.0-py3-none-linux_armv6l.whl", hash = "sha256:fcb1bf2cc6706adae9d79c8d86478677e3bbd4ced796ccad106fd4776d395fea"}, - {file = "ruff-0.8.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:295bb4c02d58ff2ef4378a1870c20af30723013f441c9d1637a008baaf928c8b"}, - {file = "ruff-0.8.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:7b1f1c76b47c18fa92ee78b60d2d20d7e866c55ee603e7d19c1e991fad933a9a"}, - {file = "ruff-0.8.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb0d4f250a7711b67ad513fde67e8870109e5ce590a801c3722580fe98c33a99"}, - {file = "ruff-0.8.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0e55cce9aa93c5d0d4e3937e47b169035c7e91c8655b0974e61bb79cf398d49c"}, - {file = "ruff-0.8.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3f4cd64916d8e732ce6b87f3f5296a8942d285bbbc161acee7fe561134af64f9"}, - {file = "ruff-0.8.0-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:c5c1466be2a2ebdf7c5450dd5d980cc87c8ba6976fb82582fea18823da6fa362"}, - {file = "ruff-0.8.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2dabfd05b96b7b8f2da00d53c514eea842bff83e41e1cceb08ae1966254a51df"}, - {file = "ruff-0.8.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:facebdfe5a5af6b1588a1d26d170635ead6892d0e314477e80256ef4a8470cf3"}, - {file = "ruff-0.8.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87a8e86bae0dbd749c815211ca11e3a7bd559b9710746c559ed63106d382bd9c"}, - {file = "ruff-0.8.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:85e654f0ded7befe2d61eeaf3d3b1e4ef3894469cd664ffa85006c7720f1e4a2"}, - {file = "ruff-0.8.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:83a55679c4cb449fa527b8497cadf54f076603cc36779b2170b24f704171ce70"}, - {file = "ruff-0.8.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:812e2052121634cf13cd6fddf0c1871d0ead1aad40a1a258753c04c18bb71bbd"}, - {file = "ruff-0.8.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:780d5d8523c04202184405e60c98d7595bdb498c3c6abba3b6d4cdf2ca2af426"}, - {file = "ruff-0.8.0-py3-none-win32.whl", hash = "sha256:5fdb6efecc3eb60bba5819679466471fd7d13c53487df7248d6e27146e985468"}, - {file = "ruff-0.8.0-py3-none-win_amd64.whl", hash = "sha256:582891c57b96228d146725975fbb942e1f30a0c4ba19722e692ca3eb25cc9b4f"}, - {file = "ruff-0.8.0-py3-none-win_arm64.whl", hash = "sha256:ba93e6294e9a737cd726b74b09a6972e36bb511f9a102f1d9a7e1ce94dd206a6"}, - {file = "ruff-0.8.0.tar.gz", hash = "sha256:a7ccfe6331bf8c8dad715753e157457faf7351c2b69f62f32c165c2dbcbacd44"}, + {file = "ruff-0.9.1-py3-none-linux_armv6l.whl", hash = "sha256:84330dda7abcc270e6055551aca93fdde1b0685fc4fd358f26410f9349cf1743"}, + {file = "ruff-0.9.1-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:3cae39ba5d137054b0e5b472aee3b78a7c884e61591b100aeb544bcd1fc38d4f"}, + {file = "ruff-0.9.1-py3-none-macosx_11_0_arm64.whl", hash = "sha256:50c647ff96f4ba288db0ad87048257753733763b409b2faf2ea78b45c8bb7fcb"}, + {file = "ruff-0.9.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0c8b149e9c7353cace7d698e1656ffcf1e36e50f8ea3b5d5f7f87ff9986a7ca"}, + {file = "ruff-0.9.1-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:beb3298604540c884d8b282fe7625651378e1986c25df51dec5b2f60cafc31ce"}, + {file = "ruff-0.9.1-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:39d0174ccc45c439093971cc06ed3ac4dc545f5e8bdacf9f067adf879544d969"}, + {file = "ruff-0.9.1-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:69572926c0f0c9912288915214ca9b2809525ea263603370b9e00bed2ba56dbd"}, + {file = "ruff-0.9.1-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:937267afce0c9170d6d29f01fcd1f4378172dec6760a9f4dface48cdabf9610a"}, + {file = "ruff-0.9.1-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:186c2313de946f2c22bdf5954b8dd083e124bcfb685732cfb0beae0c47233d9b"}, + {file = "ruff-0.9.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f94942a3bb767675d9a051867c036655fe9f6c8a491539156a6f7e6b5f31831"}, + {file = "ruff-0.9.1-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:728d791b769cc28c05f12c280f99e8896932e9833fef1dd8756a6af2261fd1ab"}, + {file = "ruff-0.9.1-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:2f312c86fb40c5c02b44a29a750ee3b21002bd813b5233facdaf63a51d9a85e1"}, + {file = "ruff-0.9.1-py3-none-musllinux_1_2_i686.whl", hash = "sha256:ae017c3a29bee341ba584f3823f805abbe5fe9cd97f87ed07ecbf533c4c88366"}, + {file = "ruff-0.9.1-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:5dc40a378a0e21b4cfe2b8a0f1812a6572fc7b230ef12cd9fac9161aa91d807f"}, + {file = "ruff-0.9.1-py3-none-win32.whl", hash = "sha256:46ebf5cc106cf7e7378ca3c28ce4293b61b449cd121b98699be727d40b79ba72"}, + {file = "ruff-0.9.1-py3-none-win_amd64.whl", hash = "sha256:342a824b46ddbcdddd3abfbb332fa7fcaac5488bf18073e841236aadf4ad5c19"}, + {file = "ruff-0.9.1-py3-none-win_arm64.whl", hash = "sha256:1cd76c7f9c679e6e8f2af8f778367dca82b95009bc7b1a85a47f1521ae524fa7"}, + {file = "ruff-0.9.1.tar.gz", hash = "sha256:fd2b25ecaf907d6458fa842675382c8597b3c746a2dde6717fe3415425df0c17"}, ] [[package]] @@ -1351,4 +1351,4 @@ type = ["pytest-mypy"] [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "00d93da15392a1741f71b3bc53ee0ce9598e97bae91e53de581e20bc54535d0b" +content-hash = "e80305fe0d55e08a9c5d2ae03413e3515188ea9281dcdc405058dbc9775a9473" diff --git a/schemas/pyproject.toml b/schemas/pyproject.toml index 74dc773071..35b808b23b 100644 --- a/schemas/pyproject.toml +++ b/schemas/pyproject.toml @@ -6,7 +6,12 @@ authors = ["mikewilli"] license = "MPL 2.0" readme = "README.md" packages = [{ include = "mozilla_nimbus_schemas" }] -include = [{ path = "mozilla_nimbus_schemas/schemas", format = ["sdist", "wheel"] }] +include = [ + { path = "mozilla_nimbus_schemas/schemas", format = [ + "sdist", + "wheel", + ] }, +] [tool.poetry.dependencies] python = "^3.10" @@ -16,7 +21,7 @@ typing-extensions = ">=4.0.1" # Required until Python 3.11 jsonschema = "^4.23.0" [tool.poetry.group.dev.dependencies] -ruff = ">=0.5.0,<0.8.1" +ruff = ">=0.5.0,<0.9.2" black = ">=23.3,<25.0" pytest = "^7.3.1" twine = "^5.1.1" @@ -35,6 +40,7 @@ addopts = ["--import-mode=importlib"] lint.select = ["F", "E", "W", "I", "N", "YTT", "A", "C4", "RET", "SIM"] lint.ignore = [ "A003", + "A005", "E402", "E741", "F403", From 71f65e0b782cebfc6fd63e533114a323d0271153 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 14 Jan 2025 16:18:08 -0500 Subject: [PATCH 34/36] chore(deps): Bump ruff from 0.8.0 to 0.9.1 in /experimenter (#12033) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [ruff](https://github.com/astral-sh/ruff) from 0.8.0 to 0.9.1.
Release notes

Sourced from ruff's releases.

0.9.1

Release Notes

Preview features

  • [pycodestyle] Run too-many-newlines-at-end-of-file on each cell in notebooks (W391) (#15308)
  • [ruff] Omit diagnostic for shadowed private function parameters in used-dummy-variable (RUF052) (#15376)

Rule changes

  • [flake8-bugbear] Improve assert-raises-exception message (B017) (#15389)

Formatter

  • Preserve trailing end-of line comments for the last string literal in implicitly concatenated strings (#15378)

Server

  • Fix a bug where the server and client notebooks were out of sync after reordering cells (#15398)

Bug fixes

  • [flake8-pie] Correctly remove wrapping parentheses (PIE800) (#15394)
  • [pyupgrade] Handle comments and multiline expressions correctly (UP037) (#15337)

Contributors

Install ruff 0.9.1

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf
https://github.com/astral-sh/ruff/releases/download/0.9.1/ruff-installer.sh
| sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy ByPass -c "irm
https://github.com/astral-sh/ruff/releases/download/0.9.1/ruff-installer.ps1
| iex"

... (truncated)

Changelog

Sourced from ruff's changelog.

0.9.1

Preview features

  • [pycodestyle] Run too-many-newlines-at-end-of-file on each cell in notebooks (W391) (#15308)
  • [ruff] Omit diagnostic for shadowed private function parameters in used-dummy-variable (RUF052) (#15376)

Rule changes

  • [flake8-bugbear] Improve assert-raises-exception message (B017) (#15389)

Formatter

  • Preserve trailing end-of line comments for the last string literal in implicitly concatenated strings (#15378)

Server

  • Fix a bug where the server and client notebooks were out of sync after reordering cells (#15398)

Bug fixes

  • [flake8-pie] Correctly remove wrapping parentheses (PIE800) (#15394)
  • [pyupgrade] Handle comments and multiline expressions correctly (UP037) (#15337)

0.9.0

Check out the blog post for a migration guide and overview of the changes!

Breaking changes

Ruff now formats your code according to the 2025 style guide. As a result, your code might now get formatted differently. See the formatter section for a detailed list of changes.

This release doesn’t remove or remap any existing stable rules.

Stabilization

The following rules have been stabilized and are no longer in preview:

The following behaviors have been stabilized:

... (truncated)

Commits
  • 12f86f3 Ruff 0.9.1 (#15407)
  • 2b28d56 Associate a trailing end-of-line comment in a parenthesized implicit concaten...
  • adca7bd Remove pygments pin (#15404)
  • 6b98a26 [red-knot] Support assert_type (#15194)
  • c874638 [red-knot] Move tuple-containing-Never tests to Markdown (#15402)
  • c364b58 [flake8-pie] Correctly remove wrapping parentheses (PIE800) (#15394)
  • 73d424e Fix outdated doc for handling the default file types with the pre-commit hook...
  • 6e9ff44 Insert the cells from the start position (#15398)
  • f2c3ddc [red-knot] Move intersection type tests to Markdown (#15396)
  • b861551 Remove unnecessary backticks (#15393)
  • Additional commits viewable in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=ruff&package-manager=pip&previous-version=0.8.0&new-version=0.9.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) Dependabot will merge this PR once CI passes on it, as requested by @jaredlockhart. [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
--------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Jared Lockhart <119884+jaredlockhart@users.noreply.github.com> --- experimenter/poetry.lock | 40 ++++++++++++++++++------------------- experimenter/pyproject.toml | 3 ++- 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/experimenter/poetry.lock b/experimenter/poetry.lock index c04c4ae3fa..6449215ec8 100644 --- a/experimenter/poetry.lock +++ b/experimenter/poetry.lock @@ -2848,29 +2848,29 @@ pyasn1 = ">=0.1.3" [[package]] name = "ruff" -version = "0.8.0" +version = "0.9.1" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" files = [ - {file = "ruff-0.8.0-py3-none-linux_armv6l.whl", hash = "sha256:fcb1bf2cc6706adae9d79c8d86478677e3bbd4ced796ccad106fd4776d395fea"}, - {file = "ruff-0.8.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:295bb4c02d58ff2ef4378a1870c20af30723013f441c9d1637a008baaf928c8b"}, - {file = "ruff-0.8.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:7b1f1c76b47c18fa92ee78b60d2d20d7e866c55ee603e7d19c1e991fad933a9a"}, - {file = "ruff-0.8.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb0d4f250a7711b67ad513fde67e8870109e5ce590a801c3722580fe98c33a99"}, - {file = "ruff-0.8.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0e55cce9aa93c5d0d4e3937e47b169035c7e91c8655b0974e61bb79cf398d49c"}, - {file = "ruff-0.8.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3f4cd64916d8e732ce6b87f3f5296a8942d285bbbc161acee7fe561134af64f9"}, - {file = "ruff-0.8.0-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:c5c1466be2a2ebdf7c5450dd5d980cc87c8ba6976fb82582fea18823da6fa362"}, - {file = "ruff-0.8.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2dabfd05b96b7b8f2da00d53c514eea842bff83e41e1cceb08ae1966254a51df"}, - {file = "ruff-0.8.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:facebdfe5a5af6b1588a1d26d170635ead6892d0e314477e80256ef4a8470cf3"}, - {file = "ruff-0.8.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87a8e86bae0dbd749c815211ca11e3a7bd559b9710746c559ed63106d382bd9c"}, - {file = "ruff-0.8.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:85e654f0ded7befe2d61eeaf3d3b1e4ef3894469cd664ffa85006c7720f1e4a2"}, - {file = "ruff-0.8.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:83a55679c4cb449fa527b8497cadf54f076603cc36779b2170b24f704171ce70"}, - {file = "ruff-0.8.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:812e2052121634cf13cd6fddf0c1871d0ead1aad40a1a258753c04c18bb71bbd"}, - {file = "ruff-0.8.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:780d5d8523c04202184405e60c98d7595bdb498c3c6abba3b6d4cdf2ca2af426"}, - {file = "ruff-0.8.0-py3-none-win32.whl", hash = "sha256:5fdb6efecc3eb60bba5819679466471fd7d13c53487df7248d6e27146e985468"}, - {file = "ruff-0.8.0-py3-none-win_amd64.whl", hash = "sha256:582891c57b96228d146725975fbb942e1f30a0c4ba19722e692ca3eb25cc9b4f"}, - {file = "ruff-0.8.0-py3-none-win_arm64.whl", hash = "sha256:ba93e6294e9a737cd726b74b09a6972e36bb511f9a102f1d9a7e1ce94dd206a6"}, - {file = "ruff-0.8.0.tar.gz", hash = "sha256:a7ccfe6331bf8c8dad715753e157457faf7351c2b69f62f32c165c2dbcbacd44"}, + {file = "ruff-0.9.1-py3-none-linux_armv6l.whl", hash = "sha256:84330dda7abcc270e6055551aca93fdde1b0685fc4fd358f26410f9349cf1743"}, + {file = "ruff-0.9.1-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:3cae39ba5d137054b0e5b472aee3b78a7c884e61591b100aeb544bcd1fc38d4f"}, + {file = "ruff-0.9.1-py3-none-macosx_11_0_arm64.whl", hash = "sha256:50c647ff96f4ba288db0ad87048257753733763b409b2faf2ea78b45c8bb7fcb"}, + {file = "ruff-0.9.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0c8b149e9c7353cace7d698e1656ffcf1e36e50f8ea3b5d5f7f87ff9986a7ca"}, + {file = "ruff-0.9.1-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:beb3298604540c884d8b282fe7625651378e1986c25df51dec5b2f60cafc31ce"}, + {file = "ruff-0.9.1-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:39d0174ccc45c439093971cc06ed3ac4dc545f5e8bdacf9f067adf879544d969"}, + {file = "ruff-0.9.1-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:69572926c0f0c9912288915214ca9b2809525ea263603370b9e00bed2ba56dbd"}, + {file = "ruff-0.9.1-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:937267afce0c9170d6d29f01fcd1f4378172dec6760a9f4dface48cdabf9610a"}, + {file = "ruff-0.9.1-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:186c2313de946f2c22bdf5954b8dd083e124bcfb685732cfb0beae0c47233d9b"}, + {file = "ruff-0.9.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f94942a3bb767675d9a051867c036655fe9f6c8a491539156a6f7e6b5f31831"}, + {file = "ruff-0.9.1-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:728d791b769cc28c05f12c280f99e8896932e9833fef1dd8756a6af2261fd1ab"}, + {file = "ruff-0.9.1-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:2f312c86fb40c5c02b44a29a750ee3b21002bd813b5233facdaf63a51d9a85e1"}, + {file = "ruff-0.9.1-py3-none-musllinux_1_2_i686.whl", hash = "sha256:ae017c3a29bee341ba584f3823f805abbe5fe9cd97f87ed07ecbf533c4c88366"}, + {file = "ruff-0.9.1-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:5dc40a378a0e21b4cfe2b8a0f1812a6572fc7b230ef12cd9fac9161aa91d807f"}, + {file = "ruff-0.9.1-py3-none-win32.whl", hash = "sha256:46ebf5cc106cf7e7378ca3c28ce4293b61b449cd121b98699be727d40b79ba72"}, + {file = "ruff-0.9.1-py3-none-win_amd64.whl", hash = "sha256:342a824b46ddbcdddd3abfbb332fa7fcaac5488bf18073e841236aadf4ad5c19"}, + {file = "ruff-0.9.1-py3-none-win_arm64.whl", hash = "sha256:1cd76c7f9c679e6e8f2af8f778367dca82b95009bc7b1a85a47f1521ae524fa7"}, + {file = "ruff-0.9.1.tar.gz", hash = "sha256:fd2b25ecaf907d6458fa842675382c8597b3c746a2dde6717fe3415425df0c17"}, ] [[package]] @@ -3290,4 +3290,4 @@ files = [ [metadata] lock-version = "2.0" python-versions = "^3.11" -content-hash = "0f55e3dc31a45c5e723d4f068bb390bf3294adcb9804eb98a5c11f33401e6a54" +content-hash = "be12e2aa7868d7c03799a8e35af39fa916987326bf5338c8a541aa94ce3f7c0d" diff --git a/experimenter/pyproject.toml b/experimenter/pyproject.toml index 2cd540a825..d2e5a1d40c 100644 --- a/experimenter/pyproject.toml +++ b/experimenter/pyproject.toml @@ -68,7 +68,7 @@ mozilla-nimbus-schemas = "2024.12.2" mozilla-metric-config-parser = "^2024.11.1" django-redis = "^5.4.0" fontawesomefree = "6.6.0" -ruff = "^0.8.0" +ruff = "^0.9.1" django = "^5.1" dockerflow = "^2024.4.1" django-filter = "^23.5" @@ -156,6 +156,7 @@ select = [ ] ignore = [ "A003", + "A005", "B017", "B035", "DJ001", From 2834fadf3dfe7d752c965906f9a7c7a1c2c2d636 Mon Sep 17 00:00:00 2001 From: dataops-ci-bot <59976087+dataops-ci-bot@users.noreply.github.com> Date: Tue, 14 Jan 2025 13:54:46 -0800 Subject: [PATCH 35/36] chore(nimbus): Update External Configs (#12044) SUMMARY: SUCCESS: fenix at master (40e3b6a049ba53e75a5ad906cde175ed84f9e948) version None firefox_ios at main (d7e840c191010aba16a1cf84423299aa6186ff27) version None firefox_ios at main (d7e840c191010aba16a1cf84423299aa6186ff27) version 136.0.0 focus_android at main (fe8a71cd70ad5674abe1824fe11dc78372b736c2) version None focus_ios at main (d7e840c191010aba16a1cf84423299aa6186ff27) version None focus_ios at main (d7e840c191010aba16a1cf84423299aa6186ff27) version 136.0.0 monitor_cirrus at main (ca3bbf37f95cacf40f97d8ff7ac9cf02312a003d) version None mozillavpn_backend_cirrus at main (86963e1fe3fbe3aaee3aa3776efad50a85c516e2) version None firefox_accounts_cirrus at main (4b3c1be59b53a31062687391c8930652e2c843fc) version None firefox_desktop at central (6b0b18434da4cb5c9031a09bf081d6761c3618e2) version None CACHED: fenix at master (40e3b6a049ba53e75a5ad906cde175ed84f9e948) version 136.0.0 (cached) fenix at beta (9565531878ceeaf734ed7711d6681fe8ead96374) version 135.0.0 (cached) fenix at release (8275040d808c4b15c7d8842a737505e9ed1b8fdc) version 134.0.2 (cached) firefox_ios at release/v131 (7444df581b62d357df12ddc3c90d821d940efbb8) version 131.5.0 (cached) firefox_ios at release/v132 (cb318d0061ec6354167ecc1968020d5d75f1bffc) version 132.2.0 (cached) firefox_ios at release/v133 (7c651ce29e94c6389af7a69ec6b5c44251976e92) version 133.5.0 (cached) firefox_ios at release/v134 (58f809c3c0717fffaef3bf9443b2c1e3e3a86a0f) version 134.2.0 (cached) firefox_ios at release/v135 (98fbe880bdf41a84fbc23b3cb4b99966647b5438) version 135.0.0 (cached) focus_android at releases_v121 (979fbe8d7fe04a9b09fe657bb787fda6f4d5ab42) version 121.1.1 (cached) focus_android at releases_v122 (1fcbfc41dba53965481a0e4d4725833bf3669dce) version 122.1.1 (cached) focus_android at releases_v123 (5a38e0cb4499f659a5fff308fa1deee653c0318b) version 123.1.1 (cached) focus_android at releases_v124 (0ad8d97fb3ab2ec6b9bb3905ee742900a4b9325d) version 124.2.1 (cached) focus_android at releases_v125 (2b43ab8069abac2bfee4b609e734c0207876a2ac) version 125.3.1 (cached) focus_android at focus-v125.3.0 (9f2990415376f169eb0053fceb329b70b4421bcb) version 125.3.0 (cached) focus_android at focus-v125.2.0 (d1c6eeb4167fc8ffed02cdfd3138fa696381d548) version 125.2.0 (cached) focus_android at main (fe8a71cd70ad5674abe1824fe11dc78372b736c2) version 125.0.0 (cached) focus_android at focus-v124.2.0 (7a0e399c7bc4faae43ce70ddc201c7899498d1b5) version 124.2.0 (cached) focus_android at focus-v124.1.0 (516df33ca96e950af1bf791893cd16d7add61c5d) version 124.1.0 (cached) focus_android at focus-v124.0 (5afe87a5bbb92f7ecf990a2fbc8095503a47c272) version 124.0.0 (cached) focus_android at focus-v123.1.0 (cb7c807e0fb5bc08131415e2e5ecef9da658d410) version 123.1.0 (cached) focus_android at focus-v123.0 (f5f378e2c05c9d69a5088c112c14fdea507d1c65) version 123.0.0 (cached) focus_android at focus-v122.1.0 (0d665405685c43c9266a3de65f16eabb832bb908) version 122.1.0 (cached) focus_android at focus-v122.0.1 (c67c9e840c00ec348a6a27adedad28feb54aa4a2) version 122.0.1 (cached) focus_android at focus-v122.0 (b49c4f23804d23cc727b8f70c061dccd64d720bc) version 122.0.0 (cached) focus_android at focus-v121.1.0 (62d5117f7996cc8862fdbdc0cb4a1dd5cdebedd6) version 121.1.0 (cached) focus_android at focus-v121.0.1 (fd4d2513324712e91577d8be18797e64089d3cf1) version 121.0.1 (cached) focus_android at focus-v121.0 (1955f8455fa2cac1b2080af9360996c06df5b4dd) version 121.0.0 (cached) focus_ios at release/v131 (7444df581b62d357df12ddc3c90d821d940efbb8) version 131.5.0 (cached) focus_ios at release/v132 (cb318d0061ec6354167ecc1968020d5d75f1bffc) version 132.2.0 (cached) focus_ios at release/v133 (7c651ce29e94c6389af7a69ec6b5c44251976e92) version 133.5.0 (cached) focus_ios at release/v134 (58f809c3c0717fffaef3bf9443b2c1e3e3a86a0f) version 134.2.0 (cached) focus_ios at release/v135 (98fbe880bdf41a84fbc23b3cb4b99966647b5438) version 135.0.0 (cached) focus_ios at focus/klar-v134.0 (be550d94c2c7bc8b8902cdf7fe542a64e73a381a) version 134.0.0 (cached) focus_ios at focus/klar-v133.0 (a3372669a06fa684d3c5945c317d6787e3125303) version 133.0.0 (cached) focus_ios at focus/klar-v132.0 (d9ed6134db59ff456d343e2bb211aefd040319ac) version 132.0.0 (cached) focus_ios at focus/klar-v131.1 (b7dca2271b14988837524a30eb154d91eb5e4912) version 131.1.0 (cached) focus_ios at focus/klar-v131.0 (34d92c8df1b1522a1da88c23879b439d763ec133) version 131.0.0 (cached) firefox_desktop at central (6b0b18434da4cb5c9031a09bf081d6761c3618e2) version 136.0.0 (cached) firefox_desktop at beta (4be78759691ce5e8084e98a6bcffb2253f838f5f) version 135.0.0 (cached) firefox_desktop at release (1deebf110046bedfc02eaeb8353ca3835e2fa3a9) version 134.0.2 (cached) firefox_desktop at esr115 (54237eecf7beefa9390fddbef45941cd844b9db9) version 115.20.0 (cached) firefox_desktop at esr128 (c2fe3dd80e493387d1f266022f11b30a726f38d8) version 128.7.0 (cached) Circle CI Task: https://circleci.com/gh/mozilla/experimenter/274743 --- .../experimenter/features/manifests/focus-ios/.ref-cache.yaml | 2 +- .../experimenter/features/manifests/ios/.ref-cache.yaml | 2 +- .../segments/metric-hub-main/definitions/klar_ios.toml | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml b/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml index 2b54d55328..f45ae9821e 100644 --- a/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml @@ -13,7 +13,7 @@ focus/klar-v131.1: b7dca2271b14988837524a30eb154d91eb5e4912 focus/klar-v132.0: d9ed6134db59ff456d343e2bb211aefd040319ac focus/klar-v133.0: a3372669a06fa684d3c5945c317d6787e3125303 focus/klar-v134.0: be550d94c2c7bc8b8902cdf7fe542a64e73a381a -main: 703ef66d8f452f927a2d84aafef35084d79370ce +main: d7e840c191010aba16a1cf84423299aa6186ff27 release/v124: da250bed9e19c4978d4400d6d404cb312e33636e release/v125: a3e1e0773a00009e08d95726fd518ab642255ccd release/v126: 6f305409b4af68e8404401a2caad8cb0da9a0494 diff --git a/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml b/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml index 997b3823d8..4e727766c4 100644 --- a/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml @@ -1,4 +1,4 @@ -main: 703ef66d8f452f927a2d84aafef35084d79370ce +main: d7e840c191010aba16a1cf84423299aa6186ff27 release/v117: 43b690c450066d4dde1b2ccb93ed3714d244d502 release/v118: 89a7ea3c3372e5a4ef5b3c5b85499d26198d0524 release/v119: 7dc381f991c6d2a983c3ba7f0cffd880e8c29e7b diff --git a/experimenter/experimenter/segments/metric-hub-main/definitions/klar_ios.toml b/experimenter/experimenter/segments/metric-hub-main/definitions/klar_ios.toml index a2061df945..4d731d54ee 100644 --- a/experimenter/experimenter/segments/metric-hub-main/definitions/klar_ios.toml +++ b/experimenter/experimenter/segments/metric-hub-main/definitions/klar_ios.toml @@ -270,6 +270,7 @@ submission_date_column = "metric_date" description = "Aggregated 4th Week Retention Outcomes of Klar iOS New and Existing Users." friendly_name = "Klar iOS Retention" client_id_column = "NULL" +columns_as_dimensions = true [data_sources.klar_ios_active_users_view] friendly_name = "Klar iOS Active Users" From fbe5c40d93132e1f529da14e707530c8d350c7cb Mon Sep 17 00:00:00 2001 From: dataops-ci-bot <59976087+dataops-ci-bot@users.noreply.github.com> Date: Tue, 14 Jan 2025 16:54:15 -0800 Subject: [PATCH 36/36] chore(nimbus): Update External Configs (#12045) SUMMARY: SUCCESS: fenix at master (86c208f86f35d53dc824f18f8e540fe5b0663870) version None fenix at master (86c208f86f35d53dc824f18f8e540fe5b0663870) version 136.0.0 firefox_ios at main (fc0ddcc0b1cc8a4e42e34b0768882aa23c9d0688) version None firefox_ios at main (fc0ddcc0b1cc8a4e42e34b0768882aa23c9d0688) version 136.0.0 focus_android at main (fe8a71cd70ad5674abe1824fe11dc78372b736c2) version None focus_ios at main (fc0ddcc0b1cc8a4e42e34b0768882aa23c9d0688) version None focus_ios at main (fc0ddcc0b1cc8a4e42e34b0768882aa23c9d0688) version 136.0.0 monitor_cirrus at main (ca3bbf37f95cacf40f97d8ff7ac9cf02312a003d) version None mozillavpn_backend_cirrus at main (86963e1fe3fbe3aaee3aa3776efad50a85c516e2) version None firefox_accounts_cirrus at main (b21ecb112d409974d21b1bf44c57d723d6365e94) version None firefox_desktop at central (933bfbddaf61376385fb1efae72d62d81e6f8b91) version None firefox_desktop at central (933bfbddaf61376385fb1efae72d62d81e6f8b91) version 136.0.0 CACHED: fenix at beta (9565531878ceeaf734ed7711d6681fe8ead96374) version 135.0.0 (cached) fenix at release (8275040d808c4b15c7d8842a737505e9ed1b8fdc) version 134.0.2 (cached) firefox_ios at release/v131 (7444df581b62d357df12ddc3c90d821d940efbb8) version 131.5.0 (cached) firefox_ios at release/v132 (cb318d0061ec6354167ecc1968020d5d75f1bffc) version 132.2.0 (cached) firefox_ios at release/v133 (7c651ce29e94c6389af7a69ec6b5c44251976e92) version 133.5.0 (cached) firefox_ios at release/v134 (58f809c3c0717fffaef3bf9443b2c1e3e3a86a0f) version 134.2.0 (cached) firefox_ios at release/v135 (98fbe880bdf41a84fbc23b3cb4b99966647b5438) version 135.0.0 (cached) focus_android at releases_v121 (979fbe8d7fe04a9b09fe657bb787fda6f4d5ab42) version 121.1.1 (cached) focus_android at releases_v122 (1fcbfc41dba53965481a0e4d4725833bf3669dce) version 122.1.1 (cached) focus_android at releases_v123 (5a38e0cb4499f659a5fff308fa1deee653c0318b) version 123.1.1 (cached) focus_android at releases_v124 (0ad8d97fb3ab2ec6b9bb3905ee742900a4b9325d) version 124.2.1 (cached) focus_android at releases_v125 (2b43ab8069abac2bfee4b609e734c0207876a2ac) version 125.3.1 (cached) focus_android at focus-v125.3.0 (9f2990415376f169eb0053fceb329b70b4421bcb) version 125.3.0 (cached) focus_android at focus-v125.2.0 (d1c6eeb4167fc8ffed02cdfd3138fa696381d548) version 125.2.0 (cached) focus_android at main (fe8a71cd70ad5674abe1824fe11dc78372b736c2) version 125.0.0 (cached) focus_android at focus-v124.2.0 (7a0e399c7bc4faae43ce70ddc201c7899498d1b5) version 124.2.0 (cached) focus_android at focus-v124.1.0 (516df33ca96e950af1bf791893cd16d7add61c5d) version 124.1.0 (cached) focus_android at focus-v124.0 (5afe87a5bbb92f7ecf990a2fbc8095503a47c272) version 124.0.0 (cached) focus_android at focus-v123.1.0 (cb7c807e0fb5bc08131415e2e5ecef9da658d410) version 123.1.0 (cached) focus_android at focus-v123.0 (f5f378e2c05c9d69a5088c112c14fdea507d1c65) version 123.0.0 (cached) focus_android at focus-v122.1.0 (0d665405685c43c9266a3de65f16eabb832bb908) version 122.1.0 (cached) focus_android at focus-v122.0.1 (c67c9e840c00ec348a6a27adedad28feb54aa4a2) version 122.0.1 (cached) focus_android at focus-v122.0 (b49c4f23804d23cc727b8f70c061dccd64d720bc) version 122.0.0 (cached) focus_android at focus-v121.1.0 (62d5117f7996cc8862fdbdc0cb4a1dd5cdebedd6) version 121.1.0 (cached) focus_android at focus-v121.0.1 (fd4d2513324712e91577d8be18797e64089d3cf1) version 121.0.1 (cached) focus_android at focus-v121.0 (1955f8455fa2cac1b2080af9360996c06df5b4dd) version 121.0.0 (cached) focus_ios at release/v131 (7444df581b62d357df12ddc3c90d821d940efbb8) version 131.5.0 (cached) focus_ios at release/v132 (cb318d0061ec6354167ecc1968020d5d75f1bffc) version 132.2.0 (cached) focus_ios at release/v133 (7c651ce29e94c6389af7a69ec6b5c44251976e92) version 133.5.0 (cached) focus_ios at release/v134 (58f809c3c0717fffaef3bf9443b2c1e3e3a86a0f) version 134.2.0 (cached) focus_ios at release/v135 (98fbe880bdf41a84fbc23b3cb4b99966647b5438) version 135.0.0 (cached) focus_ios at focus/klar-v134.0 (be550d94c2c7bc8b8902cdf7fe542a64e73a381a) version 134.0.0 (cached) focus_ios at focus/klar-v133.0 (a3372669a06fa684d3c5945c317d6787e3125303) version 133.0.0 (cached) focus_ios at focus/klar-v132.0 (d9ed6134db59ff456d343e2bb211aefd040319ac) version 132.0.0 (cached) focus_ios at focus/klar-v131.1 (b7dca2271b14988837524a30eb154d91eb5e4912) version 131.1.0 (cached) focus_ios at focus/klar-v131.0 (34d92c8df1b1522a1da88c23879b439d763ec133) version 131.0.0 (cached) firefox_desktop at beta (4be78759691ce5e8084e98a6bcffb2253f838f5f) version 135.0.0 (cached) firefox_desktop at release (1deebf110046bedfc02eaeb8353ca3835e2fa3a9) version 134.0.2 (cached) firefox_desktop at esr115 (54237eecf7beefa9390fddbef45941cd844b9db9) version 115.20.0 (cached) firefox_desktop at esr128 (c2fe3dd80e493387d1f266022f11b30a726f38d8) version 128.7.0 (cached) Circle CI Task: https://circleci.com/gh/mozilla/experimenter/274883 --- .../experimenter/features/manifests/fenix/.ref-cache.yaml | 2 +- .../features/manifests/firefox-desktop/.ref-cache.yaml | 2 +- .../experimenter/features/manifests/focus-ios/.ref-cache.yaml | 2 +- .../experimenter/features/manifests/ios/.ref-cache.yaml | 2 +- .../segments/metric-hub-main/definitions/fenix.toml | 2 ++ .../segments/metric-hub-main/definitions/firefox_desktop.toml | 3 +++ .../segments/metric-hub-main/definitions/firefox_ios.toml | 4 ++++ .../segments/metric-hub-main/definitions/focus_android.toml | 2 ++ .../segments/metric-hub-main/definitions/focus_ios.toml | 2 ++ .../segments/metric-hub-main/definitions/klar_android.toml | 2 ++ .../segments/metric-hub-main/definitions/klar_ios.toml | 1 + 11 files changed, 20 insertions(+), 4 deletions(-) diff --git a/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml b/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml index a6cc42b623..cd8d086f53 100644 --- a/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/fenix/.ref-cache.yaml @@ -1,3 +1,3 @@ beta: 9565531878ceeaf734ed7711d6681fe8ead96374 -master: 40e3b6a049ba53e75a5ad906cde175ed84f9e948 +master: 86c208f86f35d53dc824f18f8e540fe5b0663870 release: 8275040d808c4b15c7d8842a737505e9ed1b8fdc diff --git a/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml b/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml index f686bbf783..73c35efddf 100644 --- a/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/firefox-desktop/.ref-cache.yaml @@ -1,5 +1,5 @@ beta: 4be78759691ce5e8084e98a6bcffb2253f838f5f -central: 6b0b18434da4cb5c9031a09bf081d6761c3618e2 +central: 933bfbddaf61376385fb1efae72d62d81e6f8b91 esr115: 54237eecf7beefa9390fddbef45941cd844b9db9 esr128: c2fe3dd80e493387d1f266022f11b30a726f38d8 release: 1deebf110046bedfc02eaeb8353ca3835e2fa3a9 diff --git a/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml b/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml index f45ae9821e..b8bf056ea8 100644 --- a/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/focus-ios/.ref-cache.yaml @@ -13,7 +13,7 @@ focus/klar-v131.1: b7dca2271b14988837524a30eb154d91eb5e4912 focus/klar-v132.0: d9ed6134db59ff456d343e2bb211aefd040319ac focus/klar-v133.0: a3372669a06fa684d3c5945c317d6787e3125303 focus/klar-v134.0: be550d94c2c7bc8b8902cdf7fe542a64e73a381a -main: d7e840c191010aba16a1cf84423299aa6186ff27 +main: fc0ddcc0b1cc8a4e42e34b0768882aa23c9d0688 release/v124: da250bed9e19c4978d4400d6d404cb312e33636e release/v125: a3e1e0773a00009e08d95726fd518ab642255ccd release/v126: 6f305409b4af68e8404401a2caad8cb0da9a0494 diff --git a/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml b/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml index 4e727766c4..1ebaf54945 100644 --- a/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml +++ b/experimenter/experimenter/features/manifests/ios/.ref-cache.yaml @@ -1,4 +1,4 @@ -main: d7e840c191010aba16a1cf84423299aa6186ff27 +main: fc0ddcc0b1cc8a4e42e34b0768882aa23c9d0688 release/v117: 43b690c450066d4dde1b2ccb93ed3714d244d502 release/v118: 89a7ea3c3372e5a4ef5b3c5b85499d26198d0524 release/v119: 7dc381f991c6d2a983c3ba7f0cffd880e8c29e7b diff --git a/experimenter/experimenter/segments/metric-hub-main/definitions/fenix.toml b/experimenter/experimenter/segments/metric-hub-main/definitions/fenix.toml index 3bb03abcc9..79f9edbd0e 100644 --- a/experimenter/experimenter/segments/metric-hub-main/definitions/fenix.toml +++ b/experimenter/experimenter/segments/metric-hub-main/definitions/fenix.toml @@ -706,6 +706,7 @@ submission_date_column = "submission_date" description = "Aggregated DAU, WAU, and MAU by different attributes for engagement ratio calculation." friendly_name = "Fenix Engagement" client_id_column = "NULL" +columns_as_dimensions = true [data_sources.fenix_retention_view] from_expression = """( @@ -717,6 +718,7 @@ submission_date_column = "metric_date" description = "Aggregated 4th Week Retention Outcomes of Fenix New and Existing Users." friendly_name = "Fenix Retention" client_id_column = "NULL" +columns_as_dimensions = true [data_sources.fenix_active_users_view] friendly_name = "Fenix Active Users" diff --git a/experimenter/experimenter/segments/metric-hub-main/definitions/firefox_desktop.toml b/experimenter/experimenter/segments/metric-hub-main/definitions/firefox_desktop.toml index 0fe7a1c8a1..69077a0353 100644 --- a/experimenter/experimenter/segments/metric-hub-main/definitions/firefox_desktop.toml +++ b/experimenter/experimenter/segments/metric-hub-main/definitions/firefox_desktop.toml @@ -2121,6 +2121,7 @@ submission_date_column = "submission_date" description = "Retention Outcomes of Desktop New Profiles Over their First 112 Days" friendly_name = "Desktop Cohorts Daily Retention" client_id_column = "NULL" +columns_as_dimensions = true [data_sources.desktop_engagement_view] from_expression = """( @@ -2132,6 +2133,7 @@ submission_date_column = "submission_date" description = "Aggregated DAU, WAU, and MAU by different attributes for engagement ratio calculation." friendly_name = "Desktop Engagement" client_id_column = "NULL" +columns_as_dimensions = true [data_sources.desktop_retention_view] from_expression = """( @@ -2142,6 +2144,7 @@ from_expression = """( submission_date_column = "metric_date" description = "Aggregated 4th Week Retention Outcomes of Desktop New and Existing Users." friendly_name = "Desktop Retention" +columns_as_dimensions = true client_id_column = "NULL" [data_sources.glean_events_stream] diff --git a/experimenter/experimenter/segments/metric-hub-main/definitions/firefox_ios.toml b/experimenter/experimenter/segments/metric-hub-main/definitions/firefox_ios.toml index 10c3931564..8b362bf860 100644 --- a/experimenter/experimenter/segments/metric-hub-main/definitions/firefox_ios.toml +++ b/experimenter/experimenter/segments/metric-hub-main/definitions/firefox_ios.toml @@ -571,6 +571,7 @@ friendly_name = "Appstore Funnel Metrics" description = "Top of the funnel metrics pulled from appstore api" submission_date_column = "submission_date" client_id_column = "NULL" +columns_as_dimensions = true [data_sources.funnel_retention] from_expression = """( @@ -581,6 +582,7 @@ friendly_name = "iOS Funnel Retention Metrics" description = "Bottom of the funnel metrics pulled from clients telemetry table" submission_date_column = "submission_date" client_id_column = "NULL" +columns_as_dimensions = true [data_sources.firefox_ios_engagement_view] from_expression = """( @@ -592,6 +594,7 @@ submission_date_column = "submission_date" description = "Aggregated DAU, WAU, and MAU by different attributes for engagement ratio calculation." friendly_name = "Firefox iOS Engagement" client_id_column = "NULL" +columns_as_dimensions = true [data_sources.firefox_ios_retention_view] from_expression = """( @@ -603,6 +606,7 @@ submission_date_column = "metric_date" description = "Aggregated 4th Week Retention Outcomes of Firefox iOS New and Existing Users." friendly_name = "Firefox iOS Retention" client_id_column = "NULL" +columns_as_dimensions = true [data_sources.firefox_ios_active_users_view] friendly_name = "Firefox iOS Active Users" diff --git a/experimenter/experimenter/segments/metric-hub-main/definitions/focus_android.toml b/experimenter/experimenter/segments/metric-hub-main/definitions/focus_android.toml index 17f1ea921b..2d96265207 100644 --- a/experimenter/experimenter/segments/metric-hub-main/definitions/focus_android.toml +++ b/experimenter/experimenter/segments/metric-hub-main/definitions/focus_android.toml @@ -375,6 +375,7 @@ submission_date_column = "submission_date" description = "Aggregated DAU, WAU, and MAU by different attributes for engagement ratio calculation." friendly_name = "Focus Android Engagement" client_id_column = "NULL" +columns_as_dimensions = true [data_sources.focus_android_retention_view] from_expression = """( @@ -386,6 +387,7 @@ submission_date_column = "metric_date" description = "Aggregated 4th Week Retention Outcomes of Focus Android New and Existing Users." friendly_name = "Focus Android Retention" client_id_column = "NULL" +columns_as_dimensions = true [data_sources.focus_android_active_users_view] friendly_name = "Focus Android Active Users" diff --git a/experimenter/experimenter/segments/metric-hub-main/definitions/focus_ios.toml b/experimenter/experimenter/segments/metric-hub-main/definitions/focus_ios.toml index 2b92f2f920..7e963ba582 100644 --- a/experimenter/experimenter/segments/metric-hub-main/definitions/focus_ios.toml +++ b/experimenter/experimenter/segments/metric-hub-main/definitions/focus_ios.toml @@ -382,6 +382,7 @@ submission_date_column = "submission_date" description = "Aggregated DAU, WAU, and MAU by different attributes for engagement ratio calculation." friendly_name = "Focus iOS Engagement" client_id_column = "NULL" +columns_as_dimensions = true [data_sources.focus_ios_retention_view] from_expression = """( @@ -393,6 +394,7 @@ submission_date_column = "metric_date" description = "Aggregated 4th Week Retention Outcomes of Focus iOS New and Existing Users." friendly_name = "Focus iOS Retention" client_id_column = "NULL" +columns_as_dimensions = true [data_sources.focus_ios_active_users_view] friendly_name = "Focus iOS Active Users" diff --git a/experimenter/experimenter/segments/metric-hub-main/definitions/klar_android.toml b/experimenter/experimenter/segments/metric-hub-main/definitions/klar_android.toml index 0653250feb..f58a2d32f0 100644 --- a/experimenter/experimenter/segments/metric-hub-main/definitions/klar_android.toml +++ b/experimenter/experimenter/segments/metric-hub-main/definitions/klar_android.toml @@ -255,6 +255,7 @@ submission_date_column = "submission_date" description = "Aggregated DAU, WAU, and MAU by different attributes for engagement ratio calculation." friendly_name = "Klar Android Engagement" client_id_column = "NULL" +columns_as_dimensions = true [data_sources.klar_android_retention_view] from_expression = """( @@ -266,6 +267,7 @@ submission_date_column = "metric_date" description = "Aggregated 4th Week Retention Outcomes of Klar Android New and Existing Users." friendly_name = "Klar Android Retention" client_id_column = "NULL" +columns_as_dimensions = true [data_sources.klar_android_active_users_view] friendly_name = "Klar Android Active Users" diff --git a/experimenter/experimenter/segments/metric-hub-main/definitions/klar_ios.toml b/experimenter/experimenter/segments/metric-hub-main/definitions/klar_ios.toml index 4d731d54ee..4b6129e1ef 100644 --- a/experimenter/experimenter/segments/metric-hub-main/definitions/klar_ios.toml +++ b/experimenter/experimenter/segments/metric-hub-main/definitions/klar_ios.toml @@ -259,6 +259,7 @@ submission_date_column = "submission_date" description = "Aggregated DAU, WAU, and MAU by different attributes for engagement ratio calculation." friendly_name = "Klar iOS Engagement" client_id_column = "NULL" +columns_as_dimensions = true [data_sources.klar_ios_retention_view] from_expression = """(