tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

onboarding.fml.yaml (25400B)


      1 ---
      2 features:
      3 
      4  juno-onboarding:
      5    description: A feature that shows the onboarding flow.
      6 
      7    variables:
      8      use-onboarding-redesign:
      9        description: If true, use the onboarding redesign.
     10        type: Boolean
     11        default: false
     12      conditions:
     13        description: >
     14          A collection of out the box conditional expressions to be
     15          used in determining whether a card should show or not.
     16          Each entry maps to a valid JEXL expression.
     17        type: Map<ConditionName, String>
     18        string-alias: ConditionName
     19        default: {
     20          ALWAYS: "true",
     21          NEVER: "false"
     22        }
     23      cards:
     24        description: Collection of user facing onboarding cards.
     25        type: Map<OnboardingCardKey, OnboardingCardData>
     26        string-alias: OnboardingCardKey
     27        default:
     28            terms-of-service:
     29              card-type: terms-of-service
     30              title: onboarding_welcome_to_firefox
     31              body: onboarding_terms_of_service_sub_header_2
     32              ordering: 1
     33              image-res: ic_addons_extensions
     34              primary-button-label: onboarding_term_of_service_agree_and_continue_button_label_2
     35              extra-data:
     36                term-of-service-data:
     37                  line-one-text: onboarding_term_of_service_line_one_2
     38                  line-one-link-text: onboarding_term_of_service_line_one_link_text_2
     39                  line-two-text: onboarding_term_of_service_line_two_2
     40                  line-two-link-text: onboarding_term_of_service_line_two_link_text
     41                  line-three-text: onboarding_term_of_service_line_three
     42                  line-three-link-text: onboarding_term_of_service_line_three_link_text
     43 
     44            default-browser:
     45              card-type: default-browser
     46              title: juno_onboarding_default_browser_title_nimbus_2
     47              ordering: 10
     48              body: juno_onboarding_default_browser_description_nimbus_3
     49              image-res: ic_addons_extensions
     50              primary-button-label: juno_onboarding_default_browser_positive_button
     51              secondary-button-label: juno_onboarding_default_browser_negative_button
     52 
     53            add-search-widget:
     54              card-type: add-search-widget
     55              title: juno_onboarding_add_search_widget_title
     56              body: juno_onboarding_add_search_widget_description
     57              image-res: ic_addons_extensions
     58              ordering: 15
     59              primary-button-label: juno_onboarding_add_search_widget_positive_button
     60              secondary-button-label: juno_onboarding_add_search_widget_negative_button
     61 
     62            sync-sign-in:
     63              card-type: sync-sign-in
     64              title: juno_onboarding_sign_in_title_2
     65              body: juno_onboarding_sign_in_description_3
     66              image-res: ic_addons_extensions
     67              ordering: 20
     68              primary-button-label: juno_onboarding_sign_in_positive_button
     69              secondary-button-label: juno_onboarding_sign_in_negative_button
     70 
     71            notification-permission:
     72              card-type: notification-permission
     73              title: juno_onboarding_enable_notifications_title_nimbus_2
     74              body: juno_onboarding_enable_notifications_description_nimbus_2
     75              image-res: ic_addons_extensions
     76              ordering: 30
     77              primary-button-label: juno_onboarding_enable_notifications_positive_button
     78              secondary-button-label: juno_onboarding_enable_notifications_negative_button
     79 
     80            theme-selection:
     81              card-type: theme-selection
     82              title: onboarding_customize_theme_title
     83              body: onboarding_customize_theme_description
     84              image-res: ic_pick_a_theme
     85              ordering: 33
     86              primary-button-label: onboarding_save_and_continue_button
     87              extra-data:
     88                customization-theme-data:
     89                  - theme-type: theme-system
     90                    label: onboarding_customize_theme_system_option
     91                    image-res: ic_pick_a_theme_system_auto
     92                  - theme-type: theme-light
     93                    label: onboarding_customize_theme_light_option
     94                    image-res: ic_pick_a_theme_light
     95                  - theme-type: theme-dark
     96                    label: onboarding_customize_theme_dark_option
     97                    image-res: ic_pick_a_theme_dark
     98 
     99            toolbar-placement:
    100              card-type: toolbar-placement
    101              title: onboarding_customize_toolbar_title
    102              body: onboarding_customize_toolbar_description
    103              image-res: ic_onboarding_customize_toolbar
    104              ordering: 37
    105              primary-button-label: onboarding_save_and_continue_button
    106              extra-data:
    107                customization-toolbar-data:
    108                  - toolbar-type: toolbar-top
    109                    label: onboarding_customize_toolbar_top_option
    110                    image-res: ic_onboarding_top_toolbar
    111                  - toolbar-type: toolbar-bottom
    112                    label: onboarding_customize_toolbar_bottom_option
    113                    image-res: ic_onboarding_bottom_toolbar
    114 
    115            marketing:
    116              card-type: marketing-data
    117              title: onboarding_marketing_title
    118              body: onboarding_marketing_body
    119              ordering: 40
    120              image-res: ic_addons_extensions
    121              primary-button-label: onboarding_marketing_positive_button
    122              extra-data:
    123                marketing-data:
    124                  body-line-one-text: onboarding_marketing_learn_more
    125                  body-line-one-link-text: onboarding_marketing_learn_more
    126                  body-line-two-text: onboarding_marketing_opt_out_checkbox
    127    defaults:
    128      - channel: developer
    129        value:
    130          cards:
    131            terms-of-service:
    132              card-type: terms-of-service
    133              enabled: false
    134              title: onboarding_welcome_to_firefox
    135              ordering: 0
    136              image-res: ic_addons_extensions
    137              primary-button-label: onboarding_term_of_service_agree_and_continue_button_label_2
    138              extra-data:
    139                term-of-service-data:
    140                  line-one-text: onboarding_term_of_service_line_one_2
    141                  line-one-link-text: onboarding_term_of_service_line_one_link_text_2
    142                  line-two-text: onboarding_term_of_service_line_two_2
    143                  line-two-link-text: onboarding_term_of_service_line_two_link_text
    144                  line-three-text: onboarding_term_of_service_line_three
    145                  line-three-link-text: onboarding_term_of_service_line_three_link_text
    146 
    147            terms-of-service-redesign:
    148              card-type: terms-of-service
    149              enabled: false
    150              title: onboarding_redesign_tou_title
    151              ordering: 0
    152              image-res: ic_firefox
    153              primary-button-label: onboarding_redesign_tou_agree_and_continue_button_label
    154              extra-data:
    155                term-of-service-data:
    156                  subheader-one-text: onboarding_redesign_tou_subheader_one
    157                  subheader-two-text: onboarding_redesign_tou_subheader_two
    158                  subheader-three-text: onboarding_redesign_tou_subheader_three
    159                  line-one-text: onboarding_redesign_tou_body_one
    160                  line-one-link-text: onboarding_redesign_tou_body_one_link_text
    161                  line-two-text: onboarding_redesign_tou_body_two
    162                  line-two-link-text: onboarding_redesign_tou_body_two_link_text
    163                  line-three-text: onboarding_redesign_tou_body_three
    164                  line-three-link-text: onboarding_redesign_tou_body_three_link_text
    165 
    166            default-browser:
    167              card-type: default-browser
    168              enabled: true
    169              title: juno_onboarding_default_browser_title_nimbus_2
    170              ordering: 5
    171              body: juno_onboarding_default_browser_description_nimbus_3
    172              image-res: ic_addons_extensions
    173              primary-button-label: juno_onboarding_default_browser_positive_button
    174              secondary-button-label: juno_onboarding_default_browser_negative_button
    175 
    176            default-browser-redesign:
    177              card-type: default-browser
    178              enabled: false
    179              title: onboarding_redesign_set_default_browser_title
    180              ordering: 5
    181              body: onboarding_redesign_set_default_browser_body
    182              primary-button-label: juno_onboarding_default_browser_positive_button
    183              secondary-button-label: juno_onboarding_default_browser_negative_button
    184 
    185            add-search-widget:
    186              enabled: true
    187              card-type: add-search-widget
    188              title: juno_onboarding_add_search_widget_title
    189              body: juno_onboarding_add_search_widget_description
    190              image-res: ic_addons_extensions
    191              ordering: 10
    192              primary-button-label: juno_onboarding_add_search_widget_positive_button
    193              secondary-button-label: juno_onboarding_add_search_widget_negative_button
    194 
    195            sync-sign-in:
    196              enabled: true
    197              card-type: sync-sign-in
    198              title: juno_onboarding_sign_in_title_2
    199              body: juno_onboarding_sign_in_description_3
    200              image-res: ic_addons_extensions
    201              ordering: 15
    202              primary-button-label: juno_onboarding_sign_in_positive_button
    203              secondary-button-label: juno_onboarding_sign_in_negative_button
    204 
    205            sync-sign-in-redesign:
    206              enabled: false
    207              card-type: sync-sign-in
    208              title: onboarding_redesign_sync_title
    209              body: onboarding_redesign_sync_body
    210              ordering: 15
    211              primary-button-label: onboarding_redesign_sync_positive_button
    212              secondary-button-label: onboarding_redesign_sync_negative_button
    213 
    214            notification-permission:
    215              enabled: true
    216              card-type: notification-permission
    217              title: juno_onboarding_enable_notifications_title_nimbus_2
    218              body: juno_onboarding_enable_notifications_description_nimbus_2
    219              image-res: ic_addons_extensions
    220              ordering: 20
    221              primary-button-label: juno_onboarding_enable_notifications_positive_button
    222              secondary-button-label: juno_onboarding_enable_notifications_negative_button
    223 
    224            theme-selection:
    225              card-type: theme-selection
    226              enabled: false
    227              title: onboarding_customize_theme_title
    228              body: onboarding_customize_theme_description
    229              image-res: ic_pick_a_theme
    230              ordering: 30
    231              primary-button-label: onboarding_save_and_continue_button
    232              extra-data:
    233                customization-theme-data:
    234                  - theme-type: theme-system
    235                    label: onboarding_customize_theme_system_option
    236                    image-res: ic_pick_a_theme_system_auto
    237                  - theme-type: theme-light
    238                    label: onboarding_customize_theme_light_option
    239                    image-res: ic_pick_a_theme_light
    240                  - theme-type: theme-dark
    241                    label: onboarding_customize_theme_dark_option
    242                    image-res: ic_pick_a_theme_dark
    243 
    244            toolbar-placement:
    245              card-type: toolbar-placement
    246              enabled: false
    247              title: onboarding_customize_toolbar_title
    248              body: onboarding_customize_toolbar_description
    249              image-res: ic_onboarding_customize_toolbar
    250              ordering: 35
    251              primary-button-label: onboarding_save_and_start_button
    252              extra-data:
    253                customization-toolbar-data:
    254                  - toolbar-type: toolbar-top
    255                    label: onboarding_customize_toolbar_top_option
    256                    image-res: ic_onboarding_top_toolbar
    257                  - toolbar-type: toolbar-bottom
    258                    label: onboarding_customize_toolbar_bottom_option
    259                    image-res: ic_onboarding_bottom_toolbar
    260 
    261            toolbar-placement-redesign:
    262              card-type: toolbar-placement
    263              enabled: false
    264              title: onboarding_redesign_customize_toolbar_title
    265              body: onboarding_customize_toolbar_description
    266              image-res: ic_onboarding_customize_toolbar
    267              ordering: 35
    268              primary-button-label: onboarding_redesign_continue_button
    269              extra-data:
    270                customization-toolbar-data:
    271                  - toolbar-type: toolbar-top
    272                    label: onboarding_customize_toolbar_top_option
    273                    image-res: ic_onboarding_top_toolbar
    274                  - toolbar-type: toolbar-bottom
    275                    label: onboarding_customize_toolbar_bottom_option
    276                    image-res: ic_onboarding_bottom_toolbar
    277 
    278            marketing-data:
    279              card-type: marketing-data
    280              enabled: false
    281              title: onboarding_marketing_title
    282              body: onboarding_marketing_body
    283              image-res: ic_addons_extensions
    284              ordering: 40
    285              primary-button-label: onboarding_marketing_positive_button
    286              extra-data:
    287                marketing-data:
    288                  body-line-one-text: onboarding_marketing_learn_more
    289                  body-line-one-link-text: onboarding_marketing_learn_more
    290                  body-line-two-text: onboarding_marketing_opt_out_checkbox
    291 
    292            marketing-data-redesign:
    293              card-type: marketing-data
    294              enabled: false
    295              title: onboarding_marketing_redesign_title
    296              body: onboarding_marketing_body
    297              image-res: ic_onboarding_marketing_redesign
    298              ordering: 40
    299              primary-button-label: onboarding_marketing_redesign_positive_button
    300              extra-data:
    301                marketing-data:
    302                  body-line-one-text: onboarding_marketing_redesign_learn_more
    303                  body-line-one-link-text: onboarding_marketing_redesign_learn_more
    304                  body-line-two-text: onboarding_marketing_redesign_opt_out_checkbox
    305 
    306      - channel: nightly
    307        value:
    308          use-onboarding-redesign: true
    309          cards:
    310            terms-of-service:
    311              title: onboarding_redesign_tou_title
    312              primary-button-label: onboarding_redesign_tou_agree_and_continue_button_label
    313              extra-data:
    314                term-of-service-data:
    315                  subheader-one-text: onboarding_redesign_tou_subheader_one
    316                  subheader-two-text: onboarding_redesign_tou_subheader_two
    317                  subheader-three-text: onboarding_redesign_tou_subheader_three
    318                  line-one-text: onboarding_redesign_tou_body_one
    319                  line-one-link-text: onboarding_redesign_tou_body_one_link_text
    320                  line-two-text: onboarding_redesign_tou_body_two
    321                  line-two-link-text: onboarding_redesign_tou_body_two_link_text
    322                  line-three-text: onboarding_redesign_tou_body_three
    323                  line-three-link-text: onboarding_redesign_tou_body_three_link_text
    324 
    325            default-browser:
    326              title: onboarding_redesign_set_default_browser_title
    327              body: onboarding_redesign_set_default_browser_body
    328              primary-button-label: juno_onboarding_default_browser_positive_button
    329              secondary-button-label: juno_onboarding_default_browser_negative_button
    330 
    331            sync-sign-in:
    332              title: onboarding_redesign_sync_title
    333              body: onboarding_redesign_sync_body
    334              primary-button-label: onboarding_redesign_sync_positive_button
    335              secondary-button-label: onboarding_redesign_sync_negative_button
    336 
    337            toolbar-placement:
    338              title: onboarding_redesign_customize_toolbar_title
    339              body: onboarding_customize_toolbar_description
    340              image-res: ic_onboarding_customize_toolbar
    341              primary-button-label: onboarding_redesign_continue_button
    342              extra-data:
    343                customization-toolbar-data:
    344                  - toolbar-type: toolbar-top
    345                    label: onboarding_customize_toolbar_top_option
    346                    image-res: ic_onboarding_top_toolbar
    347                  - toolbar-type: toolbar-bottom
    348                    label: onboarding_customize_toolbar_bottom_option
    349                    image-res: ic_onboarding_bottom_toolbar
    350 
    351            marketing:
    352              title: onboarding_marketing_redesign_title
    353              body: onboarding_marketing_body
    354              image-res: ic_onboarding_marketing_redesign
    355              primary-button-label: onboarding_marketing_redesign_positive_button
    356              extra-data:
    357                marketing-data:
    358                  body-line-one-text: onboarding_marketing_redesign_learn_more
    359                  body-line-one-link-text: onboarding_marketing_redesign_learn_more
    360                  body-line-two-text: onboarding_marketing_redesign_opt_out_checkbox
    361 
    362            # Disable the defaults that are not included in the redesign.
    363            theme-selection:
    364              enabled: false
    365 
    366 objects:
    367 
    368  OnboardingCardData:
    369    description: An object to describe a user facing onboarding card.
    370    fields:
    371      card-type:
    372        type: OnboardingCardType
    373        description: The type of the card.
    374        # This should never be defaulted.
    375        default: default-browser
    376      enabled:
    377        type: Boolean
    378        description: If true, this card is shown to the user.
    379        default: true
    380      title:
    381        type: Text
    382        description: The title text displayed to the user.
    383        # This should never be defaulted.
    384        default: ""
    385      body:
    386        type: Text
    387        description: The message text displayed to the user. May contain linkable text.
    388        # This should never be defaulted.
    389        default: ""
    390      image-res:
    391        type: Image
    392        description: The resource id of the image to be displayed.
    393        # This should never be defaulted.
    394        default: ic_addons_extensions
    395      ordering:
    396        type: Int
    397        description: Used to sequence the cards.
    398        # This should never be defaulted.
    399        default: 0
    400      primary-button-label:
    401        type: Text
    402        description: The text to display on the primary button.
    403        # This should never be defaulted.
    404        default: ""
    405      secondary-button-label:
    406        type: Text
    407        description: The text to display on the secondary button.
    408        # This can be defaulted if the card type does not required it.
    409        default: ""
    410      prerequisites:
    411        type: List<ConditionName>
    412        description: >
    413          A list of strings corresponding to targeting expressions.
    414          The card will be shown if all expressions are `true` and if
    415          no expressions in the `disqualifiers` table are true, or
    416          if the `disqualifiers` table is empty.
    417        default: [ ALWAYS ]
    418      disqualifiers:
    419        type: List<ConditionName>
    420        description: >
    421          A list of strings corresponding to targeting expressions.
    422          The card will not be shown if any expression is `true`.
    423        default: [ NEVER ]
    424      extra-data:
    425        type: Option<ExtraCardData>
    426        description: Optional extra data for cards that require additional data.
    427        default: null
    428 
    429  ExtraCardData:
    430    description: Holds data for cards that require additional data, e.g. toolbar placement cards.
    431    fields:
    432      customization-toolbar-data:
    433        type: List<CustomizationToolbarData>
    434        description: >
    435          An optional list of toolbar placements for the toolbar placement card.
    436        default: []
    437      customization-theme-data:
    438        type: List<CustomizationThemeData>
    439        description: An optional list of theme choices for the theme selection card.
    440        default: []
    441      term-of-service-data:
    442        type: Option<TermsOfServiceData>
    443        description: >
    444          An optional terms of service data for the onboarding card.
    445        default: null
    446      marketing-data:
    447        type: Option<MarketingData>
    448        description: >
    449          An optional marketing data for the onboarding card.
    450        default: null
    451 
    452  CustomizationToolbarData:
    453    description: An object to describe the placement of the toolbar.
    454    fields:
    455      toolbar-type:
    456        type: ToolbarType
    457        description: The type of toolbar placement.
    458        # This should never be defaulted.
    459        default: toolbar-top
    460      label:
    461        type: Text
    462        description: Display text for the toolbar placement option (e.g. "Top placement").
    463        # This should never be defaulted.
    464        default: ""
    465      image-res:
    466        type: Image
    467        description: The resource id of toolbar placement image.
    468        # This should never be defaulted.
    469        default: ic_onboarding_customize_toolbar
    470 
    471  CustomizationThemeData:
    472    description: Defines an option for theme selection.
    473    fields:
    474      theme-type:
    475        type: ThemeType
    476        description: The type of the theming option.
    477        # This should never be defaulted.
    478        default: theme-system
    479      label:
    480        type: Text
    481        description: Display text for the theme option (e.g., "Light Theme").
    482        # This should never be defaulted.
    483        default: ""
    484      image-res:
    485        type: Image
    486        description: The resource id of the image to be displayed.
    487        # This should never be defaulted.
    488        default: ic_pick_a_theme_system_auto
    489 
    490  TermsOfServiceData:
    491    description: An object to describe the terms of service onboarding card.
    492    fields:
    493      subheader-one-text:
    494        type: Option<Text>
    495        description: Optional text for the first subheader of the card.
    496        default: null
    497      subheader-two-text:
    498        type: Option<Text>
    499        description: Optional text for the second subheader of the card.
    500        default: null
    501      subheader-three-text:
    502        type: Option<Text>
    503        description: Optional text for the third subheader of the card.
    504        default: null
    505      line-one-text:
    506        type: Text
    507        description: The text for line one.
    508        # This should never be defaulted.
    509        default: ""
    510      line-one-link-text:
    511        type: Text
    512        description: The text for the link of line one.
    513        # This should never be defaulted.
    514        default: ""
    515      line-one-link-url:
    516        type: Text
    517        description: The url for the link of line one.
    518        # This should never be defaulted.
    519        default: ""
    520      line-two-text:
    521        type: Text
    522        description: The text for line two.
    523        # This should never be defaulted.
    524        default: ""
    525      line-two-link-text:
    526        type: Text
    527        description: The text for the link of line two.
    528        # This should never be defaulted.
    529        default: ""
    530      line-two-link-url:
    531        type: Text
    532        description: The url for the link of line two.
    533        # This should never be defaulted.
    534        default: ""
    535      line-three-text:
    536        type: Text
    537        description: The text for line three.
    538        # This should never be defaulted.
    539        default: ""
    540      line-three-link-text:
    541        type: Text
    542        description: The text for the link of line three.
    543        # This should never be defaulted.
    544        default: ""
    545 
    546  MarketingData:
    547    description: An object to describe the marketing data onboarding card.
    548    fields:
    549      body-line-one-text:
    550        type: Text
    551        description: The text for line one of the body.
    552        default: ""
    553      body-line-one-link-text:
    554        type: Text
    555        description: The link text from line one of the body.
    556        default: ""
    557      body-line-two-text:
    558        type: Text
    559        description: The text for line two of the body.
    560        default: ""
    561 
    562 enums:
    563 
    564  OnboardingCardType:
    565    description: An enum to describe a type of card.
    566    variants:
    567      default-browser:
    568        description: Allows user to set Firefox as the default browser.
    569      sync-sign-in:
    570        description: Allows user to sync with a Firefox account.
    571      notification-permission:
    572        description: Allows user to enable notification permission.
    573      add-search-widget:
    574        description: Allows user to add search widget to homescreen.
    575      toolbar-placement:
    576        description: Allows user to choose the toolbar position.
    577      theme-selection:
    578        description: Allows user to choose between dark and light themes.
    579      terms-of-service:
    580        description: Page to display the terms of services.
    581      marketing-data:
    582        description: Allows user to opt out of marketing data collection.
    583 
    584  ToolbarType:
    585    description: An enum to describe a toolbar placement option.
    586    variants:
    587      toolbar-top:
    588        description: Sets the toolbar placement on the top.
    589      toolbar-bottom:
    590        description: Sets the toolbar placement on the bottom.
    591 
    592  ThemeType:
    593    description: An enum to describe a theme selection option.
    594    variants:
    595      theme-system:
    596        description: Adapts the theme to match the device's system setting.
    597      theme-light:
    598        description: Sets the theme to light mode.
    599      theme-dark:
    600        description: Sets the theme to dark mode.