mirror of
https://github.com/fork-maintainers/iceraven-browser
synced 2024-11-19 09:25:34 +00:00
3ba6593f98
This commit integrates the Firefox Suggest Android component added in bug 1850296 into Fenix, and adds: * A Nimbus feature for Firefox Suggest. * A secret setting to enable the Firefox Suggest feature, only visible on the debug channel. * Search settings for toggling sponsored and non-sponsored suggestions, only visible when the Firefox Suggest feature is enabled. When the feature is enabled, Fenix will ingest new suggestions in the background, show the new Search settings, and show matching suggestions in the awesomebar depending on those Search settings.
469 lines
18 KiB
YAML
469 lines
18 KiB
YAML
---
|
|
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
|
|
- pbm.fml.yaml
|
|
import:
|
|
- path: ../../android-components/components/service/nimbus/messaging.fml.yaml
|
|
channel: release
|
|
features:
|
|
messaging:
|
|
- value:
|
|
triggers:
|
|
# Using attributes built into the Nimbus SDK
|
|
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
|
|
|
|
# Using custom attributes for the browser
|
|
I_AM_DEFAULT_BROWSER: "is_default_browser"
|
|
I_AM_NOT_DEFAULT_BROWSER: "is_default_browser == false"
|
|
USER_ESTABLISHED_INSTALL: "number_of_app_launches >=4"
|
|
|
|
FUNNEL_PAID: "adjust_campaign != ''"
|
|
FUNNEL_ORGANIC: "adjust_campaign == ''"
|
|
|
|
# Using Glean events, specific to the browser
|
|
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"
|
|
|
|
# Has the user signed in the last 4 years
|
|
FXA_SIGNED_IN: "'sync_auth.sign_in'|eventLastSeen('Years', 0) <= 4"
|
|
FXA_NOT_SIGNED_IN: "'sync_auth.sign_in'|eventLastSeen('Years', 0) > 4"
|
|
|
|
# https://mozilla-hub.atlassian.net/wiki/spaces/FJT/pages/11469471/Core+Active
|
|
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"
|
|
|
|
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: 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
|
|
messages:
|
|
default-browser:
|
|
text: default_browser_experiment_card_text
|
|
surface: homescreen
|
|
action: "MAKE_DEFAULT_BROWSER"
|
|
trigger: [ "I_AM_NOT_DEFAULT_BROWSER","USER_ESTABLISHED_INSTALL" ]
|
|
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:
|
|
- I_AM_NOT_DEFAULT_BROWSER
|
|
- DAY_3_AFTER_INSTALL
|
|
action: MAKE_DEFAULT_BROWSER
|
|
|
|
- channel: developer
|
|
value:
|
|
styles:
|
|
DEFAULT:
|
|
priority: 50
|
|
max-display-count: 100
|
|
EXPIRES_QUICKLY:
|
|
priority: 100
|
|
max-display-count: 1
|
|
notification-config:
|
|
refresh-interval: 120 # minutes (2 hours)
|
|
- 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
|
|
}
|
|
|
|
features:
|
|
toolbar:
|
|
description: The searchbar/awesomebar that user uses to search.
|
|
variables:
|
|
toolbar-position-top:
|
|
description: If true, toolbar appears at top of the screen.
|
|
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<HomeScreenSection, Boolean>
|
|
default:
|
|
{
|
|
"top-sites": true,
|
|
"jump-back-in": true,
|
|
"recently-saved": true,
|
|
"recent-explorations": true,
|
|
"pocket": true,
|
|
"pocket-sponsored-stories": true,
|
|
}
|
|
defaults:
|
|
- channel: nightly
|
|
value: {
|
|
"sections-enabled": {
|
|
"top-sites": true,
|
|
"jump-back-in": true,
|
|
"recently-saved": true,
|
|
"recent-explorations": true,
|
|
"pocket": 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
|
|
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<MR2022Section, Boolean>
|
|
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,
|
|
}
|
|
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<CookieBannersSection, Int>
|
|
default:
|
|
{
|
|
"feature-ui": 0,
|
|
"feature-setting-value": 0,
|
|
"dialog-re-engage-time": 4
|
|
}
|
|
defaults:
|
|
- channel: developer
|
|
value: {
|
|
"sections-enabled": {
|
|
"feature-ui": 1,
|
|
"feature-setting-value": 0,
|
|
"dialog-re-engage-time": 4
|
|
}
|
|
}
|
|
- channel: nightly
|
|
value: {
|
|
"sections-enabled": {
|
|
"feature-ui": 1,
|
|
"feature-setting-value": 0,
|
|
"dialog-re-engage-time": 4
|
|
}
|
|
}
|
|
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: true
|
|
|
|
extensions-process:
|
|
description: A feature to rollout the extensions process.
|
|
variables:
|
|
enabled:
|
|
description: If true, the extensions process is enabled.
|
|
type: Boolean
|
|
default: 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-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
|
|
|
|
pre-permission-notification-prompt:
|
|
description: A feature that shows the pre-permission notification prompt.
|
|
variables:
|
|
enabled:
|
|
description: if true, the pre-permission notification prompt is shown to the user.
|
|
type: Boolean
|
|
default: false
|
|
|
|
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"]
|
|
|
|
glean:
|
|
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<String, Boolean>
|
|
default: {}
|
|
|
|
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
|
|
|
|
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
|
|
defaults:
|
|
- channel: developer
|
|
value:
|
|
enabled: true
|
|
|
|
print:
|
|
description: A feature for printing from the share or browser menu.
|
|
variables:
|
|
share-print-enabled:
|
|
description: If true, a print button from the share menu is available.
|
|
type: Boolean
|
|
default: true
|
|
browser-print-enabled:
|
|
description: If true, a print button from the browser menu is available.
|
|
type: Boolean
|
|
default: true
|
|
|
|
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
|
|
defaults:
|
|
- channel: developer
|
|
value:
|
|
enabled: true
|
|
types:
|
|
objects: {}
|
|
|
|
enums:
|
|
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.
|
|
|
|
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: 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.
|
|
dialog-re-engage-time:
|
|
description: An integer indicating the number of hours that needs to happen before
|
|
the re-engagement dialog shows again since the last seen, for example if set to 4
|
|
that means if the users has seen the dialog, it will see it 4 hours later.
|
|
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.
|