3 description: Nimbus Feature Manifest for Fenix (Firefox Android)
5 package: org.mozilla.fenix
6 class: .nimbus.FxNimbus
16 - path: ../../android-components/components/service/nimbus/messaging.fml.yaml
22 # Using attributes built into the Nimbus SDK
23 USER_RECENTLY_INSTALLED: days_since_install < 7
24 USER_RECENTLY_UPDATED: days_since_update < 7 && days_since_install != days_since_update
25 USER_TIER_ONE_COUNTRY: ('US' in locale || 'GB' in locale || 'CA' in locale || 'DE' in locale || 'FR' in locale)
26 USER_EN_SPEAKER: "'en' in locale"
27 USER_ES_SPEAKER: "'es' in locale"
28 USER_DE_SPEAKER: "'de' in locale"
29 USER_FR_SPEAKER: "'fr' in locale"
30 DEVICE_ANDROID: os == 'Android'
31 DEVICE_IOS: os == 'iOS'
34 DAY_1_AFTER_INSTALL: days_since_install == 1
35 DAY_2_AFTER_INSTALL: days_since_install == 2
36 DAY_3_AFTER_INSTALL: days_since_install == 3
37 DAY_4_AFTER_INSTALL: days_since_install == 4
38 DAY_5_AFTER_INSTALL: days_since_install == 5
39 MORE_THAN_24H_SINCE_INSTALLED_OR_UPDATED: days_since_update >= 1
41 # Using custom attributes for the browser
42 I_AM_DEFAULT_BROWSER: "is_default_browser"
43 I_AM_NOT_DEFAULT_BROWSER: "is_default_browser == false"
44 USER_ESTABLISHED_INSTALL: "number_of_app_launches >=4"
46 FUNNEL_PAID: "adjust_campaign != ''"
47 FUNNEL_ORGANIC: "adjust_campaign == ''"
49 # Using Glean events, specific to the browser
50 INACTIVE_1_DAY: "'app_launched'|eventLastSeen('Hours') >= 24"
51 INACTIVE_2_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 2"
52 INACTIVE_3_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 3"
53 INACTIVE_4_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 4"
54 INACTIVE_5_DAYS: "'app_launched'|eventLastSeen('Days', 0) >= 5"
56 # Has the user signed in the last 4 years
57 FXA_SIGNED_IN: "'sync_auth.sign_in'|eventLastSeen('Years', 0) <= 4"
58 FXA_NOT_SIGNED_IN: "'sync_auth.sign_in'|eventLastSeen('Years', 0) > 4"
60 # https://mozilla-hub.atlassian.net/wiki/spaces/FJT/pages/11469471/Core+Active
61 USER_INFREQUENT: "'app_launched'|eventCountNonZero('Days', 28) >= 1 && 'app_launched'|eventCountNonZero('Days', 28) < 7"
62 USER_CASUAL: "'app_launched'|eventCountNonZero('Days', 28) >= 7 && 'app_launched'|eventCountNonZero('Days', 28) < 14"
63 USER_REGULAR: "'app_launched'|eventCountNonZero('Days', 28) >= 14 && 'app_launched'|eventCountNonZero('Days', 28) < 21"
64 USER_CORE_ACTIVE: "'app_launched'|eventCountNonZero('Days', 28) >= 21"
66 LAUNCHED_ONCE_THIS_WEEK: "'app_launched'|eventSum('Days', 7) == 1"
69 ENABLE_PRIVATE_BROWSING: ://enable_private_browsing
70 INSTALL_SEARCH_WIDGET: ://install_search_widget
71 MAKE_DEFAULT_BROWSER: ://make_default_browser
72 VIEW_BOOKMARKS: ://urls_bookmarks
73 VIEW_COLLECTIONS: ://home_collections
74 VIEW_HISTORY: ://urls_history
75 VIEW_HOMESCREEN: ://home
76 OPEN_SETTINGS_ACCESSIBILITY: ://settings_accessibility
77 OPEN_SETTINGS_ADDON_MANAGER: ://settings_addon_manager
78 OPEN_SETTINGS_DELETE_BROWSING_DATA: ://settings_delete_browsing_data
79 OPEN_SETTINGS_LOGINS: ://settings_logins
80 OPEN_SETTINGS_NOTIFICATIONS: ://settings_notifications
81 OPEN_SETTINGS_PRIVACY: ://settings_privacy
82 OPEN_SETTINGS_SEARCH_ENGINE: ://settings_search_engine
83 OPEN_SETTINGS_TRACKING_PROTECTION: ://settings_tracking_protection
84 OPEN_SETTINGS_WALLPAPERS: ://settings_wallpapers
85 OPEN_SETTINGS: ://settings
86 TURN_ON_SYNC: ://turn_on_sync
102 max-display-count: 10
108 text: default_browser_experiment_card_text
110 action: "MAKE_DEFAULT_BROWSER"
111 trigger: [ "I_AM_NOT_DEFAULT_BROWSER","USER_ESTABLISHED_INSTALL" ]
113 button-label: preferences_set_as_default_browser
114 default-browser-notification:
115 title: nimbus_notification_default_browser_title
116 text: nimbus_notification_default_browser_text
117 surface: notification
120 - I_AM_NOT_DEFAULT_BROWSER
121 - DAY_3_AFTER_INSTALL
122 action: MAKE_DEFAULT_BROWSER
129 max-display-count: 100
134 refresh-interval: 120 # minutes (2 hours)
135 - path: ../../android-components/components/browser/engine-gecko/geckoview.fml.yaml
141 download-button: true,
142 open-in-app-button: true
147 description: The searchbar/awesomebar that user uses to search.
149 toolbar-position-top:
150 description: If true, toolbar appears at top of the screen.
154 description: The homescreen that the user goes to when they press home or new tab.
157 description: "This property provides a lookup table of whether or not the given section should be enabled.
158 If the section is enabled, it should be toggleable in the settings screen, and on by default."
159 type: Map<HomeScreenSection, Boolean>
163 "jump-back-in": true,
164 "recently-saved": true,
165 "recent-explorations": true,
167 "pocket-sponsored-stories": true,
172 "sections-enabled": {
174 "jump-back-in": true,
175 "recently-saved": true,
176 "recent-explorations": true,
181 description: "A feature that does not correspond to an application feature suitable for showing
182 that Nimbus is working. This should never be used in production."
185 description: The title of displayed in the Settings screen and app menu.
187 default: browser_menu_settings
188 settings-punctuation:
189 description: The emoji displayed in the Settings screen title.
193 description: The drawable displayed in the app menu for Settings
195 default: mozac_ic_settings
197 description: A feature allowing the grouping of URLs around the search term that it came from.
200 description: If true, the feature shows up on the homescreen and on the new tab screen.
211 description: Features for MR 2022.
214 description: "This property provides a lookup table of whether or not the given section should be enabled."
215 type: Map<MR2022Section, Boolean>
218 "home-onboarding-dialog-existing-users": true,
220 "wallpapers-selection-tool": true,
221 "jump-back-in-cfr": true,
228 "sections-enabled": {
229 "home-onboarding-dialog-existing-users": true,
231 "wallpapers-selection-tool": true,
232 "jump-back-in-cfr": true,
237 description: Features for cookie banner handling.
240 description: "This property provides a lookup table of whether or not the given section should be enabled."
241 type: Map<CookieBannersSection, Int>
245 "feature-setting-value": 0,
246 "dialog-re-engage-time": 4
251 "sections-enabled": {
253 "feature-setting-value": 0,
254 "dialog-re-engage-time": 4
259 "sections-enabled": {
261 "feature-setting-value": 0,
262 "dialog-re-engage-time": 4
266 description: A feature allowing user to easily search for specified results directly in the search bar.
269 description: If true, the feature shows up in the search bar.
274 description: A feature to rollout the extensions process.
277 description: If true, the extensions process is enabled.
288 description: A feature measuring campaign growth data
291 description: If true, the feature is active
299 re-engagement-notification:
300 description: A feature that shows the re-engagement notification if the user is inactive.
303 description: If true, the re-engagement notification is shown to the inactive user.
307 description: The type of re-engagement notification that is shown to the inactive user.
311 pre-permission-notification-prompt:
312 description: A feature that shows the pre-permission notification prompt.
315 description: if true, the pre-permission notification prompt is shown to the user.
320 description: "A feature that configures the new user onboarding page.
321 Note that onboarding is a **first run** feature, and should only be modified by first run experiments."
324 description: Determines the order of the onboarding page panels
325 type: List<OnboardingPanel>
326 default: ["themes", "toolbar-placement", "sync", "tcp", "privacy-notice"]
329 description: "A feature that provides server-side configurations for Glean metrics (aka Server Knobs)."
332 description: "A map of metric base-identifiers to booleans representing the state of the 'enabled' flag for that metric."
333 type: Map<String, Boolean>
337 description: "A feature that extends splash screen duration, allowing additional data fetching time for the app's initial run."
340 description: "If true, the feature is active."
344 description: The maximum amount of time in milliseconds the splashscreen will be visible while waiting for initialization calls to complete.
349 description: A feature that shows product review quality information.
352 description: if true, the shopping experience feature is shown to the user.
355 product-recommendations:
356 description: if true, recommended products feature is enabled to be shown to the user based on their preference.
365 description: A feature for printing from the share or browser menu.
368 description: If true, a print button from the share menu is available.
371 browser-print-enabled:
372 description: If true, a print button from the browser menu is available.
377 description: A feature that provides additional args for search.
380 description: If true, the feature is active.
384 description: The search engine name.
388 description: The feature enabler param name with arg, NOTE this map could be empty.
389 type: Map<String, String>
392 description: The channel Id param name with arg.
393 type: Map<String, String>
397 description: A feature that provides Firefox Suggest search suggestions.
401 Whether the feature is enabled. When Firefox Suggest is enabled,
402 Firefox will download and store new search suggestions in the
403 background, and show additional Search settings to control which
404 suggestions appear in the awesomebar. When Firefox Suggest is
405 disabled, Firefox will not download new suggestions, and hide the
406 additional Search settings.
418 description: The identifiers for the sections of the homescreen.
421 description: The frecency and pinned sites.
423 description: The sites the user has bookmarked recently.
425 description: The tabs the user was looking immediately before being interrupted.
427 description: The tab groups
429 description: The pocket section. This should only be available in the US.
430 pocket-sponsored-stories:
431 description: Subsection of the Pocket homescreen section which shows sponsored stories.
434 description: The identifiers for the sections of the MR 2022.
436 home-onboarding-dialog-existing-users:
437 description: Home onboarding dialog for upgraded users.
439 description: CFR for the first time you see a synced tab on the home screen.
440 wallpapers-selection-tool:
441 description: Wallpapers selection dialog tool for the home screen.
443 description: Jump back-in onboarding message.
445 description: CFR for the first time you use the browse with Total Cookie Protection on the browser screen.
447 description: Controls the Total Cookie Protection feature.
448 CookieBannersSection:
449 description: The identifiers for the sections of the MR 2022.
452 description: An integer either 0 or 1 indicating if the UI for cookie banner handling should be visible,
453 0 to hide the UI and 1 to show the UI. The actual UI is composed by cookie banner section
454 in the settings page, the toolbar section and the re-engagement dialog.
455 feature-setting-value:
456 description: An integer either 0 or 1 indicating if cookie banner setting should be enabled or disabled,
457 0 for setting the value to disabled, 1 for enabling the setting with the value reject_all.
458 dialog-re-engage-time:
459 description: An integer indicating the number of hours that needs to happen before
460 the re-engagement dialog shows again since the last seen, for example if set to 4
461 that means if the users has seen the dialog, it will see it 4 hours later.
463 description: The types of onboarding panels in the onboarding page
466 description: The themes onboarding panel where users pick themes
468 description: The onboarding panel where users choose their toolbar placement (bottom or top)
470 description: The onboarding panel where users can sign in to sync
472 description: The onboarding panel where users can choose their total cookie protection settings
474 description: The onboarding panel where users can tap to view our privacy notice.