---
about:
  description: Nimbus Feature Manifest for Fenix (Firefox Android)
  kotlin:
    package: org.mozilla.fenix
    class: .nimbus.FxNimbus
channels:
  - release
  - beta
  - nightly
  - developer
includes:
  - onboarding.fml.yaml
  - messaging-fenix.fml.yaml
import:
  - path: ../../android-components/components/browser/engine-gecko/geckoview.fml.yaml
    channel: release
    features:
      pdfjs:
        - channel: developer
          value: {
          download-button: true,
          open-in-app-button: true
        }
  - path: ../../android-components/components/feature/fxsuggest/fxsuggest.fml.yaml
    channel: release
    features:
      awesomebar-suggestion-provider:
        - value:
            available-suggestion-types: {
              "amp": true,
              "ampMobile": false,
              "wikipedia": true,
            }
  - path: ../../android-components/components/feature/media/media.fml.yaml
    channel: default
    features:
      media-notification-improvements:
        - channel: developer
          value:
            enabled: true
        - channel: nightly
          value:
            enabled: true
        - channel: beta
          value:
            enabled: false
        - channel: release
          value:
            enabled: false

features:
  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<HomeScreenSection, Boolean>
        default:
          {
            "top-sites": true,
            "jump-back-in": true,
            "bookmarks": true,
            "recent-explorations": true,
            "pocket": true,
            "pocket-sponsored-stories": true,
            "synced-tabs": true,
            "collections": true,
            "privacy-report": true,
          }
    defaults:
      - channel: nightly
        value: {
          "sections-enabled": {
            "top-sites": true,
            "jump-back-in": true,
            "bookmarks": true,
            "recent-explorations": true,
            "pocket": true,
            "synced-tabs": true,
            "collections": true,
            "privacy-report": true,
          }
        }
  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-title:
        description: The title of displayed in the Settings screen and app menu.
        type: Text
        default: browser_menu_settings
      settings-punctuation:
        description: The emoji displayed in the Settings screen title.
        type: String
        default: ""
      settings-icon:
        description: The drawable displayed in the app menu for Settings
        type: String
        default: mozac_ic_settings
  gecko-nimbus-validation:
    description: "Feature for validating Nimbus Gecko functionality"
    variables:
      test-preference:
        description: "A test gecko preference"
        type: Option<String>
        gecko-pref:
          pref: "gecko.nimbus.test"
          branch: "default"
      test-preference-2:
        description: "A second test gecko preference"
        type: Option<Int>
        gecko-pref:
          pref: "gecko.nimbus.test.two"
          branch: "user"
  nimbus-qa-string-default:
    description: "A feature for testing string pref-setting on the default branch."
    variables:
      value:
        description: "The value to set for the pref."
        type: Option<String>
        gecko-pref:
          pref: "nimbus.qa.pref-string-default"
          branch: "default"
  nimbus-qa-string-user:
    description: "A feature for testing string pref-setting on the user branch."
    variables:
      value:
        description: "The value to set for the pref."
        type: Option<String>
        gecko-pref:
          pref: "nimbus.qa.pref-string-user"
          branch: "user"
  nimbus-qa-int-default:
    description: "A feature for testing int pref-setting on the default branch."
    variables:
      value:
        description: "The value to set for the pref."
        type: Option<Int>
        gecko-pref:
          pref: "nimbus.qa.pref-int-default"
          branch: "default"
  nimbus-qa-int-user:
    description: "A feature for testing int pref-setting on the user branch."
    variables:
      value:
        description: "The value to set for the pref."
        type: Option<Int>
        gecko-pref:
          pref: "nimbus.qa.pref-int-user"
          branch: "user"
  nimbus-qa-bool-default:
    description: "A feature for testing boolean pref-setting on the default branch."
    variables:
      value:
        description: "The value to set for the pref."
        type: Option<Boolean>
        gecko-pref:
          pref: "nimbus.qa.pref-bool-default"
          branch: "default"
  nimbus-qa-bool-user:
    description: "A feature for testing boolean pref-setting on the user branch."
    variables:
      value:
        description: "The value to set for the pref."
        type: Option<Boolean>
        gecko-pref:
          pref: "nimbus.qa.pref-bool-user"
          branch: "user"
  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<CookieBannersSection, Int>
        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,
          }
    defaults:
      - channel: developer
        value: {
          "sections-enabled": {
            "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,
          }
        }
      - channel: nightly
        value: {
          "sections-enabled": {
            "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,
          }
        }
      - channel: beta
        value: {
          "sections-enabled": {
            "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,
          }
        }

  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<OnboardingPanel>
        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

  glean:
    description: "A feature that provides server-side configurations for Glean metrics (aka Server Knobs)."
    allow-coenrollment: true
    variables:
      gleanMetricConfiguration:
        description: Configuration for Glean Server Knobs
        type: GleanServerKnobsConfiguration
        default: {}
      enable-event-timestamps:
        description: "Enables precise event timestamps for Glean events"
        type: Boolean
        default: true
      delay-ping-lifetime-io:
        description: "Glean will delay io for ping lifetime metrics"
        type: Boolean
        default: true
      ping-lifetime-threshold:
        description: "Write count threshold when to auto-flush"
        type: Int
        default: 1000
      ping-lifetime-max-time:
        description: "After what time to auto-flush"
        type: Int
        default: 2000

  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

  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.
        type: Boolean
        default: false

  sent-from-firefox:
    description: A feature that allows the user to add a download firefox footer to a shared link.
    variables:
      enabled:
        description: If true, the feature is available for the user.
        type: Boolean
        default: false
      template-message:
        description: A template for the shared message, supporting three placeholders. A shared link, the brand name and a store download link.
        type: Text
        default: ""
      download-link:
        description: A store download link.
        type: Text
        default: ""
      show-snackbar:
        description: If true, the user will see the snackbar after sharing a link, allowing quick navigation to settings.
        type: Boolean
        default: false
    defaults:
      - channel: developer
        value:
          enabled: true
          template-message: sent_from_firefox_template
          download-link: "[Download Link]"
          show-snackbar: true

  shake-to-summarize:
    description: A feature that can summarize the content of a page when you shake the screen.
    variables:
      enabled:
        type: Boolean
        description: If true, shake to summarize will be enabled
        default: false
    defaults:
      - channel: developer
        value:
          enabled: false
      - channel: nightly
        value:
          enabled: false
      - channel: beta
        value:
          enabled: false

  import-bookmarks:
    description: A feature that lets users import bookmarks from another browser.
    variables:
      enabled:
        type: Boolean
        description: If true, the import bookmarks feature will be enabled.
        default: false
    defaults:
      - channel: developer
        value:
          enabled: true
      - channel: nightly
        value:
          enabled: true
      - channel: beta
        value:
          enabled: true

  setup-checklist:
    description: A feature on the home page that allows the user to track onboarding setup progress.
    variables:
      enabled:
        type: Boolean
        description: If true, the setup checklist will be enabled.
        default: false
      setup-checklist-type:
        type: SetupChecklistType
        description: The collection used for the setup checklist.
        default: collection-1

  search-extra-params:
    description: A feature that provides additional args for search.
    variables:
      enabled:
        description: If true, the feature is active.
        type: Boolean
        default: false
      search-engine:
        description: The search engine name.
        type: String
        default: ""
      feature-enabler:
        description: The feature enabler param name with arg, NOTE this map could be empty.
        type: Map<String, String>
        default: {}
      channel-id:
        description: The channel Id param name with arg.
        type: Map<String, String>
        default: {}

  fx-suggest:
    description: A feature that provides Firefox Suggest search suggestions.
    variables:
      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.
        type: Boolean
        default: false
      boost-amp-wiki:
        description: >
          The feature boost wiki and AMP suggestions to the top of its group.
        type: Boolean
        default: false
    defaults:
      - channel: developer
        value:
          enabled: true
          boost-amp-wiki: true
      - channel: nightly
        value:
          enabled: true

  nimbus-is-ready:
    description: >
      A feature that provides the number of Nimbus is_ready events to send
      when Nimbus finishes launching.
    variables:
      event-count:
        description: The number of events that should be sent.
        type: Int
        default: 1

  translations:
    description: The feature that allows on-device translations of web content.
    variables:
      main-flow-toolbar-enabled:
        description: >
          Show the primary toolbar entry point into the translations feature. (Translations icon on URL toolbar.)
        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.)
        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.
        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.
        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.
        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.
        type: Boolean
        default: true
      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.
        type: Boolean
        default: true

  minimal-addressbar:
    description: Show a smaller height bottom addressbar with just the URL.
    variables:
      at-bottom-while-entering-text:
        description: >
          Whether to show the smaller height bottom addressbar with just the URL when entering text in a website.
        type: Boolean
        default: false

  default-bottom-toolbar:
    description: Default toolbar position for new users.
    variables:
      enabled:
        description: >
          Whether to default the toolbar position to bottom.
        type: Boolean
        default: false

  default-expanded-toolbar:
    description: Default expanded (bottom navigation) toolbar state for new users.
    variables:
      enabled:
        description: >
          Whether to default the expanded toolbar (bottom navigation bar with
          back/forward/share/bookmark/menu) to enabled. Only takes visible effect
          on tall, non-wide windows.
        type: Boolean
        default: false

  homescreen-edge-to-edge-background:
    description: >
      Feature that sets an edge to edge background on the Home Screen if the user hasn't selected
      a custom wallpaper
    variables:
      enabled:
        description: Enables the feature
        type: Boolean
        default: true

  remote-tab-management:
    description: >
      Features that let users manage tabs on other devices that are
      connected to the same Mozilla account.
    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.
        type: Boolean
        default: true

  fission:
    description: The feature that controls whether fission is enabled or not in Gecko.
    variables:
      shouldUseNimbus:
        description: >
            If true, the values for both SHIP and Fission set in this file apply.
            Otherwise, the values from modules/libpref/init/StaticPrefList.yaml apply.
        type: Boolean
        default: false
      enabled:
        description: >
          Whether or not to enable fission. Fission is enabled when set to true. Fission is disabled when
          set to false.
        type: Boolean
        default: false
      isolationStrategy:
        description: >
          The web content isolation strategy to use with fission. "0" means "isolate nothing", similar to
          non-fission behavior. "1" means "isolate everything", where every site-origin gets its own
          process. "2" means "isolate high value", Android-specific setting to only isolate sites
          considered "high value".
        type: Int
        default: 0
    defaults:
      - channel: nightly
        value:
          isolationStrategy: 2
      - channel: developer
        value:
          isolationStrategy: 2

  suggest-shipped-domains:
    description: Feature that suggests domains from the shipped domain list.
    variables:
      enabled:
        description: >
          Suggest domains from the shipped domain list.
        type: Boolean
        default: false
    defaults:
      - channel: nightly
        value:
          enabled: false
      - channel: developer
        value:
          enabled: false

  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.
        type: Boolean
        default: false
      enabled-private:
        description: >
          Enables / disables fingerprinting protection in private browsing mode.
        type: Boolean
        default: true
      overrides:
        description: >
          The protection overrides to add or remove fingerprinting protection
          targets. Please check RFPTargets.inc for all supported targets.
          The format of the overrides is +Target1,-Target2,+Target3
          where + means add and - means remove. The targets are separated by
          commas. The default value is empty string.
        type: String
        default: ""
      fdlibm-math:
        description: >
          Uses a different math backend for Math.sin/cos/tan in JavaScript that
          exposes less entropy
        type: Boolean
        default: false

  baseline-fpp:
    description: Control Baseline Fingerprinting Protection
    variables:
      feat-enabled:
        description: If true, the feature is active.
        type: Boolean
        default: false
      enabled:
        type: Boolean
        description: Enables / disables baseline fingerprinting protection.
        default: true
      overrides:
        type: String
        description: >-
          The protection overrides to add or remove fingerprinting protection
          targets. Please check RFPTargets.inc for all supported targets.
          The format of the overrides is +Target1,-Target2,+Target3
          where + means add and - means remove. The targets are separated by
          commas. The default value is empty string.
        default: ""

  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.
        type: Boolean
        default: false
      enabled-private:
        description: >
          Enables / disables third-party cookie blocking in private browsing mode.
        type: Boolean
        default: true

  safe-browsing-v5:
    description: Control Safe Browsing V5.
    variables:
      feature-enabled:
        description: >-
          If true, this feature is enabled. Otherwise, we follow the
          SafeBrowsing V5 enabled pref.
        type: Boolean
        default: false
      enable-v5:
        description: >-
          Enables / disables the SafeBrowsing V5 protocol.
        type: Boolean
        default: false

  safe-browsing-real-time:
    description: Control Safe Browsing real-time lookup and simulation.
    variables:
      feature-enabled:
        description: >-
          If true, this feature is enabled and the below settings override
          the Gecko defaults. Otherwise, the Gecko defaults are used.
        type: Boolean
        default: false
      global-cache-enabled:
        description: >-
          Enables / disables the Safe Browsing Global Cache.
        type: Boolean
        default: false
      real-time-enabled:
        description: >-
          Enables / disables Safe Browsing real-time lookup.
        type: Boolean
        default: false
      simulation-enabled:
        description: >-
          Enables / disables the real-time request simulator.
        type: Boolean
        default: false
      simulation-hit-probability:
        description: >-
          Hit probability for the real-time request simulator.
        type: Int
        default: 5
      simulation-cache-ttl-sec:
        description: >-
          Cache TTL in seconds for the real-time request simulator.
        type: Int
        default: 300
      simulation-negative-cache-enabled:
        description: >-
          Enables / disables the negative cache for the real-time request simulator.
        type: Boolean
        default: false
      simulation-negative-cache-ttl-sec:
        description: >-
          Negative cache TTL in seconds for the real-time request simulator.
        type: Int
        default: 300

  firefox-jp-guide-default-site:
    description: >
      This feature is for managing the visibility of the Firefox Japanese Guide default suggested site shortcut
    variables:
      enabled:
        description: >
          Enables the feature.
        type: Boolean
        default: false
    defaults:
      - channel: developer
        value:
          enabled: true

  microsurveys:
    description: Feature for microsurveys.
    variables:
      enabled:
        description: >
          When the feature is enabled then microsurveys can be used.
        type: Boolean
        default: false

  terms-of-use-prompt:
    description: Enables the terms of use prompt for users who have not accepted ToU
    variables:
      enabled:
        description: When the feature is enabled then the prompt can show for users.
        type: Boolean
        default: false
      content-option:
        description: Defines which content option should used for the prompt.
        type: TermsOfUsePromptContentOption
        default: value-0
      max-display-count:
        description: The maximum number of times to show the prompt.
        type: Int
        default: 2
      enable-drag-to-dismiss:
        description: Whether to show a drag handle on the prompt and allows users to use it to dismiss the prompt.
        type: Boolean
        default: true

  tab-strip:
    description: Enables tab strip.
    variables:
      enabled:
        description: >
          Whether or not to enable tab strip.
        type: Boolean
        default: true
      allow-on-all-devices:
        description: >
          Experimental: When true, bypasses device restrictions and enables use on all devices.
          May cause instability or unexpected behavior. This still requires the feature to be `enabled`.
        type: Boolean
        default: false

  search-suggestions-on-homepage:
    description: Enables search suggestions on homepage.
    variables:
      enabled:
        description: >
          Whether or not to enable search suggestions on homepage.
        type: Boolean
        default: false

  homepage-as-new-tab:
    description: Enables homepage as a a new tab.
    variables:
      enabled:
        description: >
          Whether or not to enable homepage as a new tab
        type: Boolean
        default: false

  homepage-hide-frecent-top-sites:
    description: Hides frecent top sites on the homepage.
    variables:
      enabled:
        description: >
          Whether or not to hide frecent top sites on the homepage.
        type: Boolean
        default: false

  homepage-opening-screen-default:
    description: Configure the default option for the homepage opening screen.
    variables:
      default-option:
        description: The default option for the homepage opening screen.
        type: OpeningScreenOption
        default: homepage-four-hours

  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

  networkingBannedPorts:
    description: "Networking (Necko) Banned Ports"
    variables:
      bannedPortList:
        description: A comma-separated list of ports that Firefox will refuse to connect to. These ports will be appended to nsIOService gBadPortList
        type: String
        default: ""

  networking-happy-eyeballs:
    description: "Networking (Necko) Happy Eyeballs V3 configuration"
    variables:
      enabled:
        description: Whether to enable the Happy Eyeballs v3 algorithm for connection establishment
        type: Option<Boolean>
        gecko-pref:
          pref: "network.http.happy_eyeballs_enabled"
          branch: "default"
      resolution-delay:
        description: Time in ms to wait after the first DNS response before starting connections
        type: Option<Int>
        gecko-pref:
          pref: "network.http.happy_eyeballs_resolution_delay"
          branch: "default"
      connection-attempt-delay:
        description: Time in ms between successive connection attempts
        type: Option<Int>
        gecko-pref:
          pref: "network.http.happy_eyeballs_connection_attempt_delay"
          branch: "default"

  tracking-protection-experimentation:
    description: "Experimental controls for tracking protection behavior"
    variables:
      defer-annotation-enabled:
        description: Whether to defer tracking protection classification annotation until the data is being handled
        type: Option<Boolean>
        gecko-pref:
          pref: "privacy.trackingprotection.defer_annotation.enabled"
          branch: "default"

  pki:
    description: Certificate verification configuration
    variables:
      certificateTransparencyMode:
        description: >
          What mode Certificate Transparency is in (0=disable, 1=telemetry only, 2=enforce).
        type: Option<Int>
        default: null
      crliteChannel:
        description: >
          The channel from which CRLite filters will be installed.
        type: Option<String>
        default: null

  pqcrypto:
    description: Control the use of post-quantum key exchange mechanisms in TLS and HTTP/3.
    variables:
      postQuantumKeyExchangeEnabled:
        description: >
          Toggles the security.tls.enable_kyber and network.http.http3.enable_kyber preferences.
        type: Option<Boolean>
        default: null

  javascript:
    description: Enables Javascript Engine (Spidermonkey) features
    variables:
      parallelMarkingEnabled:
        description: >
          Enables or disables javascript.options.mem.gc_parallel_marking preference.
        type: Boolean
        default: false

  enable-popups:
    description: A feature that enables or disables in app popups
    variables:
      cfr-popups-enabled:
        description: When true, CFR popups will show
        type: Boolean
        default: true
      in-app-messages-enabled:
        description: >
          Enables non-CFR in-app messaging surfaces. Currently includes:
          - Wallpaper onboarding bottom sheet
          - PWA onboarding ("Add to Home screen") dialog
          - "Open links in apps" banner
        type: Boolean
        default: true

  remote-search-configuration:
    description: Feature to use search configurations from remote servers.
    variables:
      enabled:
        description: >
          Uses search configuration from remote servers .
        type: Boolean
        default: true
  same-document-navigation-overrides-load-type:
    description: Control whether the same document navigation overrides the load type.
    variables:
      enabled:
        description: >
          Overrides the loadType when it is a same document navigation
        type: Boolean
        default: false
      force-disable-uri:
        description: >
          Disable overriding the loadType during same document navigation on the domain specified by this URI.
        type: String
        default: ""
  doh:
    description: Feature controlling DNS over HTTPS (DoH).
    variables:
      show-ui:
        description: >
          When `true`, include DoH settings in the settings UI.
        type: Boolean
        default: true
      autoselect-enabled:
        description: >
          Controls the network.android_doh.autoselect_enabled pref and automatically chooses a DoH provider when Default Protection mode is selected.
        type: Boolean
        default: false

  private-browsing-lock:
    description: Allows enabling and disabling the private browsing mode lock via an authentication screen.
    variables:
      enabled:
        description: >
          Whether or not to enable private browsing mode lock.
        type: Boolean
        default: true

  app-links:
    description: Control behavior of app links handling in the browser.
    variables:
      show-new-prompt:
        description: Whether to show the new AppLinksPromptFragment dialog when an app link is detected. If false, the old dialog is used.
        type: Boolean
        default: true
    defaults:
      - channel: release
        value:
          show-new-prompt: false

  tab-management-enhancements:
    description: Control the visibility of the tab management enhancements.
    variables:
      opening_animation_enabled:
        description: Whether or not the Tab Manager opening animation is enabled. When enabled,
          a shared element transition will initiate, taking the currently-opened tab's thumbnail
          and shrinking it into its spot in the Tab Manager.
        type: Boolean
        default: false
    defaults:
      - channel: release
        value:
          opening_animation_enabled: false
      - channel: beta
        value:
          opening_animation_enabled: false
      - channel: nightly
        value:
          opening_animation_enabled: true

  tab-groups:
    description: Control the visibility of the tab groups feature.
    variables:
      enabled:
        description: >
          Whether or not to enable the tab groups feature.
        type: Boolean
        default: false
    defaults:
      - channel: release
        value:
          enabled: false
      - channel: beta
        value:
          enabled: true
      - channel: nightly
        value:
          enabled: true
  tab-groups-drag-and-drop:
    description: Control the visibility of drag and drop for tab groups.
    variables:
      enabled:
        description: >
          Whether or not to enable drag and drop for tab groups.
        type: Boolean
        default: false
    defaults:
      - channel: release
        value:
          enabled: false
      - channel: beta
        value:
          enabled: true
      - channel: nightly
        value:
          enabled: true
  tab-groups-onboarding:
    description: Control the visibility of onboarding for tab groups.
    variables:
      enabled:
        description: >
          Whether or not to enable onboarding for tab groups.
        type: Boolean
        default: true
  tab-groups-live-reorder:
    description: Control whether reorder happens live during a drag and drop action for Tab Groups.
    variables:
      enabled:
        description: >
          Whether or not to enable live reorder for tab groups drag and drop.
        type: Boolean
        default: false
    defaults:
      - channel: release
        value:
          enabled: false
      - channel: beta
        value:
          enabled: false
      - channel: nightly
        value:
          enabled: false

  marketing-onboarding-card:
    description: A temporary feature to control the marketing onboarding card shown during the onboarding flow.
    variables:
      enabled:
        description: If false, the marketing onboarding card will never be shown.
        type: Boolean
        default: true

  suppress-sponsored-top-sites:
    description: Suppress sponsored top sites for new users for 14 days.
    variables:
      enabled:
        description: If true, new users won’t see sponsored tiles for 14 days.
        type: Boolean
        default: false

  lna-blocking:
    description: Feature that allows blocking local network or device access.
    variables:
      blocking:
        description: >
          Whether or not to block LNA requests
        type: Boolean
        default: false
      block-trackers:
        description: >
          Whether or not to block trackers
        type: Boolean
        default: false
      enabled:
        description: >
          Whether or not to turn on local network / device access blocking
        type: Boolean
        default: false

  isolated-content-processes:
    description: Feature that controls content process isolation.
    variables:
      enabled:
        description: >
          Whether or not to enable isolated content processes.
        type: Boolean
        default: false
      app-zygote-preloading:
        description: >
          Whether or not to enable app Zygote preloaded isolated content processes.
        type: Boolean
        default: false

  custom-review-prompt-ui:
    description: Feature that controls the custom UI for review prompt.
    variables:
      enabled:
        description: When enabled we show the custom review prompt UI. Otherwise we try to directly show the Play Store in-app review prompt.
        type: Boolean
        default: true

  default-browser-prompt:
    description: Feature that controls when the default browser prompt is shown.
    variables:
      enabled:
        description: Whether or not to enable the default browser prompt.
        type: Boolean
        default: true
      daysBetweenPrompts:
        description: The minimum number of days between showing the prompt.
        type: Option<Int>
        default: 14
      maxPromptsShown:
        description: The maximum number of times the prompt can shown to the user.
        type: Option<Int>
        default: 3
      coldStartsBetweenPrompts:
        description: The minimum number of cold starts between showing the prompt.
        type: Option<Int>
        default: 4

  email-masks:
    description: Feature to enable Email Mask for users on Firefox on Android.
    variables:
      enabled:
        description: If true, Email Mask feature is enabled.
        type: Boolean
        default: true

  ip-protection:
    description: Feature to enable IP Protection (VPN) for users on Firefox on Android.
    variables:
      enabled:
        description: If true, IP Protection feature is enabled.
        type: Boolean
        default: false
      show-beta-badge:
        description: If true, a BETA badge is shown next to the IP Protection entry in the settings list.
        type: Boolean
        default: true
      show-onboarding-bottom-sheet:
        description: If true, the IP Protection onboarding bottom sheet is shown to the user.
        type: Boolean
        default: false
      data-limit-gigabyte:
        description: Specifies the VPN data limit for unpaid users in GB (e.g. 50 GB).
        type: Int
        default: 50
      allowed-regions:
        description: Country codes whose users are eligible for IP Protection.
        type: List<String>
        default: [ "AU", "AT", "BE", "BG", "CA", "CL", "CO", "DK", "FI", "FR", "DE", "IE", "IT", "JP", "MY", "MX",
                   "NL", "NZ", "NO", "PL", "PT", "SG", "ZA", "ES", "SE", "CH", "TH", "GB", "US" ]
      promo-deadline:
        description: The final date for the promotion to end. This needs to be an ISO 8601 formatted date (i.e. YYYY-MM-DD).
        type: String
        default: "2026-08-31"
    defaults:
      - channel: developer
        value:
          enabled: true
          allowed-regions: ["XX"]
      - channel: nightly
        value:
          enabled: true
      - channel: beta
        value:
          enabled: true

  native-share-sheet:
    description: Feature to enable the Native Share Sheet for users on Firefox on Android.
    variables:
      enabled:
        description: If true, Native Share Sheet is enabled.
        type: Boolean
        default: false
    defaults:
      - channel: developer
        value:
          enabled: true
      - channel: nightly
        value:
          enabled: true

  add-shortcuts-improvement:
    description: Feature to enable Add Shortcuts improvement for users on Firefox on Android.
    variables:
      enabled:
        description: If true, Add Shortcuts improvement is enabled.
        type: Boolean
        default: true

  merino-client:
    description: Feature to enable the Merino Client for users on Firefox on Android.
    variables:
      enabled:
        description: If true, Merino Client is enabled.
        type: Boolean
        default: false

  ads-client-for-stories:
    description: Feature to enable the Mozilla Ads Client support for Sponsored Stories for users on Firefox on Android.
    variables:
      enabled:
        description: If true, Mozilla Ads Client support for Sponsored Stories is enabled.
        type: Boolean
        default: false

  private-mode-and-stories-entry-point:
    description: Feature to enable the Private Mode and Stories Entry Point Experiment.
    variables:
      enabled:
        description: If true, Private Mode and Stories Entry Point Experiment is enabled.
        type: Boolean
        default: false
    defaults:
      - channel: developer
        value:
          enabled: true
      - channel: nightly
        value:
          enabled: true

  search-optimization-option:
    description: Feature to enable the Search Optimization cards for users on Firefox on Android.
    variables:
      enabled:
        description: If true, Search Optimization is enabled.
        type: Boolean
        default: false
      show-stocks-card:
        description: If true, Search Optimization Stock cards are enabled.
        type: Boolean
        default: false
      show-flights-card:
        description: If true, Search Optimization Flights cards are enabled.
        type: Boolean
        default: false
      show-sports-card:
        description: If true, Search Optimization Sports cards are enabled.
        type: Boolean
        default: false
    defaults:
      - channel: developer
        value:
          enabled: true
          show-stocks-card: true
          show-flights-card: true
          show-sports-card: true

  downloads-custom-location:
    description: Feature to enable the custom download location for users on Firefox on Android.
    variables:
      enabled:
        description: If true, custom download location is enabled.
        type: Boolean
        default: true

  google-lens-integration:
    description: A feature that enables Google Lens integration for users on Firefox on Android.
    variables:
      enabled:
        description: If true, Google Lens integration is enabled.
        type: Boolean
        default: false
    defaults:
      - channel: developer
        value:
          enabled: true
      - channel: nightly
        value:
          enabled: true

  voice-search-in-display-mode:
    description: Controls whether the voice search entry point is shown in the display-mode browser toolbar.
    variables:
      enabled:
        description: If true, voice search is shown in the display toolbar.
        type: Boolean
        default: false
    defaults:
      - channel: developer
        value:
          enabled: true
      - channel: nightly
        value:
          enabled: true


  homepage-sports-widget:
    description: Feature to enable Homepage Sports Widget for users on Firefox on Android.
    variables:
      enabled:
        description: If true, Homepage Sports Widget is enabled.
        type: Boolean
        default: false
      force-one-week-to-world-cup:
        description: >
          If true, treat the user as being within one week of the World Cup kickoff regardless of the
          device date. Used to roll out the pre-tournament pager (follow your team + view-schedule cards)
          ahead of the calendar date for testing or staggered launches. The natural date-based check
          still applies when this is false (the default).
        type: Boolean
        default: false
      fetch-throttle-seconds:
        description: >
          Minimum interval, in seconds, that the client will wait between Sports Widget fetches.
          Guards the upstream Merino endpoint against refresh-button spam and Home/onResume thrash.
          The default aligns with the upstream cache TTL — a shorter interval just returns the
          same payload at the cost of battery and bandwidth. Lower this remotely only if the
          upstream cache TTL is also lowered, otherwise users will see no fresher data.
        type: Int
        default: 60
    defaults:
      - channel: developer
        value:
          enabled: true
      - channel: nightly
        value:
          enabled: true
      - channel: beta
        value:
          enabled: true

  webcompat-reporter-enhancements:
    description: Feature to enable WebCompat Reporter enhancements for users on Firefox Android.
    variables:
      enabled:
        description: If true, WebCompat Reporter enhancements is enabled.
        type: Boolean
        default: false
    defaults:
      - channel: nightly
        value:
          enabled: true
      - channel: developer
        value:
          enabled: true

  longfox:
    description: Flag to enable Longfox for users on Firefox Android.
    variables:
      enabled:
        description: If true, users will see a CTA for launching Longfox on the home screen.
        type: Boolean
        default: false
    defaults:
      - channel: nightly
        value:
          enabled: false
      - channel: developer
        value:
          enabled: true

  uninstall-survey:
    description: Feature that controls the visibility and handling of the uninstall survey app shortcut.
    variables:
      enabled:
        description: If true, the uninstall survey shortcut is enabled and visible.
        type: Boolean
        default: false
    defaults:
      - channel: developer
        value:
          enabled: true

types:
  objects:
    GleanServerKnobsConfiguration:
      description: A configuration object for Glean server knobs.
      fields:
        metrics_enabled:
          description: A map of metric base-identifiers to booleans representing the state of the 'enabled' flag for that metric.
          type: Map<String, Boolean>
          default: {}
        pings_enabled:
          description: A map of ping names to booleans representing the state of the 'enabled' flag for that ping.
          type: Map<String, Boolean>
          default: {}
        event_threshold:
          description: The threshold of events that will be buffered before an events ping is collected and submitted.
          type: Option<Int>
          default: null

  enums:
    HomeScreenSection:
      description: The identifiers for the sections of the homescreen.
      variants:
        top-sites:
          description: The frecency and pinned sites.
        bookmarks:
          description: The sites the user has bookmarked.
        jump-back-in:
          description: The tabs the user was looking immediately before being interrupted.
        recent-explorations:
          description: The tab groups
        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.
        synced-tabs:
          description: The synced tabs section of the homepage.
        collections:
          description: The collections section of the homepage.
        privacy-report:
          description: The privacy report section showing trackers blocked.

    CookieBannersSection:
      description: The identifiers for the sections of the MR 2022.
      variants:
        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.
        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-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.

    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-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-allow-list:
          description: An string separated by commas indicating the sites where should
            from query stripping should be exempted.
        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.

    OnboardingPanel:
      description: The types of onboarding panels in the onboarding page
      variants:
        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)
        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
        privacy-notice:
          description: The onboarding panel where users can tap to view our privacy notice.

    SetupChecklistType:
      description: An enum to represent the different experiment branches for the setup checklist.
      variants:
        collection-1:
          description: The collection for the setup checklist that has 3 items.
        collection-2:
          description: The collection for the setup checklist that has 6 items.

    # Enum is aligned with other Firefox platforms for consistent experiment configuration.
    TermsOfUsePromptContentOption:
      description: |
        Determines which predefined title and "learn more" strings are used for the Terms of Use prompt.
      variants:
        value-0:
          description: |
            Uses the current defaults:
            - Title: "We've got an update"
            - Learn more: "Please take a moment to review and accept. Learn more."
        value-1:
          description: |
            Uses the following copy:
            - Title: "Terms of Use"
            - Learn more: "You can learn more here."
        value-2:
          description: |
            Uses the following copy:
            - Title: "A note from Firefox"
            - Learn more: "You can learn more here."

    OpeningScreenOption:
      description: The types of different experiment branches for the opening screen.
      variants:
        homepage:
          description:
            Uses the homepage as the opening screen.
        last-tab:
          description:
            Uses the last tab as the opening screen.
        homepage-four-hours:
          description:
            Uses the homepage after four hours of inactivity as the opening screen.
