--- about: description: Nimbus Feature Manifest for Fenix (Firefox Android) kotlin: package: org.mozilla.fenix class: .nimbus.FxNimbus channels: - release - beta - nightly - developer - forkRelease 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 default: { "top-sites": true, "jump-back-in": true, "recently-saved": true, "recent-explorations": true, "pocket": true, "pocket-sponsored-stories": false, } defaults: - channel: nightly value: { "sections-enabled": { "top-sites": true, "jump-back-in": true, "recently-saved": true, "recent-explorations": true, "pocket": true, } } - channel: developer value: { "sections-enabled": { "pocket-sponsored-stories": 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 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 defaults: - channel: nightly value: enabled: true - channel: developer value: enabled: true messaging: description: | Configuration for the messaging system. In practice this is a set of growable lookup tables for the message controller to piece together. variables: message-under-experiment: description: Id or prefix of the message under experiment. type: Option default: null messages: description: A growable collection of messages type: Map default: {} triggers: description: > A collection of out the box trigger expressions. Each entry maps to a valid JEXL expression. type: Map default: {} styles: description: > A map of styles to configure message appearance. type: Map default: {} actions: type: Map description: A growable map of action URLs. default: {} on-control: type: ControlMessageBehavior description: What should be displayed when a control message is selected. default: show-next-message defaults: - value: triggers: 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_DE_SPEAKER: "'de' in locale" USER_FR_SPEAKER: "'fr' in locale" DEVICE_ANDROID: os == 'Android' DEVICE_IOS: os == 'iOS' ALWAYS: "true" NEVER: "false" I_AM_DEFAULT_BROWSER: "is_default_browser_string == 'true'" I_AM_NOT_DEFAULT_BROWSER: "is_default_browser_string == 'false'" USER_ESTABLISHED_INSTALL: "number_of_app_launches >=4" actions: 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 TURN_ON_SYNC: ://turn_on_sync styles: DEFAULT: priority: 50 max-display-count: 5 SURVEY: priority: 55 max-display-count: 10 PERSISTENT: priority: 50 max-display-count: 20 WARNING: priority: 60 max-display-count: 10 URGENT: priority: 100 max-display-count: 10 messages: default-browser: text: default_browser_experiment_card_text action: "MAKE_DEFAULT_BROWSER" trigger: [ "I_AM_NOT_DEFAULT_BROWSER","USER_ESTABLISHED_INSTALL" ] style: "PERSISTENT" button-label: preferences_set_as_default_browser - channel: developer value: styles: DEFAULT: priority: 50 max-display-count: 100 EXPIRES_QUICKLY: priority: 100 max-display-count: 1 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": false, "tcp-feature": false, } defaults: - channel: developer value: { "sections-enabled": { "home-onboarding-dialog-existing-users": true, "sync-cfr": true, "wallpapers-selection-tool": true, "jump-back-in-cfr": true, } } 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": false, "feature-setting-value": false, } defaults: - channel: developer value: { "sections-enabled": { "feature-ui": true, "feature-setting-value": false, } } - channel: nightly value: { "sections-enabled": { "feature-ui": true, "feature-setting-value": false, } } unified-search: description: A feature allowing user to easily search for specified results directly in the search bar. variables: enabled: description: If true, the feature shows up in the search bar. type: Boolean default: false defaults: - channel: nightly value: enabled: false growth-data: description: A feature measuring campaign growth data variables: enabled: description: If true, the feature is active type: Boolean default: false defaults: - channel: release value: enabled: true re-engagement-notification: description: A feature that shows the re-enagement notification if the user is inactive. variables: enabled: description: If true, the re-engagement notification is shown to the inactive user. type: Boolean default: true types: objects: 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. fields: action: type: Text description: > A URL of a page or a deeplink. This may have substitution variables in. # This should never be defaulted. default: empty_string title: type: Option description: "The title text displayed to the user" default: null text: type: Text description: "The message text displayed to the user" # This should never be defaulted. default: empty_string is-control: type: Boolean description: "Indicates if this message is the control message, if true shouldn't be displayed" default: false button-label: type: Option description: > The text on the button. If no text is present, the whole message is clickable. default: null style: type: String description: > The style as described in a `StyleData` from the styles table. default: DEFAULT trigger: type: List description: > A list of strings corresponding to targeting expressions. The message will be shown if all expressions `true`. default: [] StyleData: description: > A group of properities (predominantly visual) to describe the style of the message. fields: priority: type: Int description: > The importance of this message. 0 is not very important, 100 is very important. default: 50 max-display-count: type: Int description: > How many sessions will this message be shown to the user before it is expired. default: 5 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. HomeScreenSection: description: The identifiers for the sections of the homescreen. variants: top-sites: description: The frecency and pinned sites. recently-saved: description: The sites the user has bookmarked recently. 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. MessageSurfaceId: description: The identity of a message surface, used in the default browser experiments variants: app-menu-item: description: An item in the default toolbar menu. settings: description: A setting in the settings screen. homescreen-banner: description: A banner in the homescreen. MR2022Section: description: The identifiers for the sections of the MR 2022. variants: home-onboarding-dialog-existing-users: description: Home onboarding dialog for upgraded users. sync-cfr: description: CFR for the first time you see a synced tab on the home screen. wallpapers-selection-tool: description: Wallpapers selection dialog tool for the home screen. jump-back-in-cfr: description: Jump back-in onboarding message. 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. CookieBannersSection: description: The identifiers for the sections of the MR 2022. variants: feature-ui: description: Indicates if the user interfaces should be visible. feature-setting-value: description: Indicates if the cookie handling setting should be enabled.