- Support an on-train limited rollout of the TOS preonboarding modal for platforms where first run experiments are not supported (Mac, Linux, MSIX)
- This patch lands the initial feature work and an uplift in 137 release will enable it for 1% of users. Later in 137, a second uplift will increase the population to 25%.
- Two nimbus features with fallback prefs are available for testing, the fallback prefs are `browser.preonboarding.onTrainRolloutEnabled` and `browser.preonboarding.onTrainRolloutPopulation`.
Differential Revision: https://phabricator.services.mozilla.com/D238304
To support the upcoming TOS preonboarding experiment, we want to ensure the following actions occur sequentially:
- setting prefs, including `datareporting.healthreport.uploadEnabled` (`SET_PREF`)
- submitting the onboarding opt-out ping, if applicable (`SUBMIT_ONBOARDING_OPT_OUT_PING`)
- notifying that the data reporting notification has been interacted with (`DATAREPORTING_NOTIFY_DATA_POLICY_INTERACTED`).
When these actions occur out of order, it is possible for telemetry to be enabled and then disabled. This is likely what accounts for the onboarding-opt-out followed by deletion-request pings witnessed by QA in Bug 1948717.
We believe that the issue is that the `MULTI_ACTION` SMA does not guarantee any ordering of its child actions: see [[ https://searchfox.org/mozilla-central/rev/0d1f8ff61fe506646fe3898ef727817b4436ab32/toolkit/components/messaging-system/lib/SpecialMessageActions.sys.mjs#687-696 | here ]]. That's by design, since early actions including pinning and set-to-default, which are slow and can be run concurrently. But here, we expect sequential ordering (and also [[ https://searchfox.org/mozilla-central/rev/0d1f8ff61fe506646fe3898ef727817b4436ab32/browser/components/aboutwelcome/content-src/components/MultiStageAboutWelcome.jsx#578-585 | in the code ]]).
The obvious way to address this is to have the MULTI_ACTION order its child actions. However, this needs to be a flag, since we have existing consumers and we want to minimize disruption.
This patch adds support for an `orderedExecution` flag on message `action` configurations for those with type `MULTI_ACTION`. This applies to nested `MULTI_ACTIONS` using `collectSelect` as well, assuming each `MULTI_ACTION` has the `orderedExecution` flag.
Differential Revision: https://phabricator.services.mozilla.com/D238816
We want to capture the default state of multiselect checklist items when a user clicks the primary CTA on an aboutwelcome screen, even if the checklist hasn't been rendered yet (such as when the user needs to click a button to toggle it in to view).
Differential Revision: https://phabricator.services.mozilla.com/D237773
**Primary Updates**
- Add ability to show multiple content tiles on a single AboutWelcome screen by supporting an array of tile objects and/or sub-arrays of tile objects to be groups together as a value for "tiles" in screen content
- Keep compatibility with messages that use a single tile object as the value of "tiles" in screen content
- Add updates to `setMultiSelectActions` to ensure we can handle actions across multiple MultiSelect tiles.
- Add optional tile headers which can be displayed in place of the tile until clicked, closing any other tile with a header that's currently open
- Send click event telemetry when a user clicks a tile header to open the tile
- Update aboutwelcome source docs related to content tiles to include this new capability
**Additional Updates to Support UX Designs**
[[ https://www.figma.com/design/F63Ac1akw2q1fN5D59rgS5/Privacy?node-id=4110-16458&t=kSzPUp4XFLq0dKg8-4 |
See Figma designs ]]
- Add ability to configure `display`, `padding`, and `width` for aboutwelcome screens (this allows us to support the proposed Spotlight modal designs, which include anchoring the modal towards the top of the screen and expanding it downward when a tile is opened, rather than centering vertically)
- Add ability to configure action buttons to show above screen content
{F11717546}
Differential Revision: https://phabricator.services.mozilla.com/D231856
Enhancements for the embedded browser component in AboutWelcome:
- Improve the speed at which the browser starts by predicting the `remoteType` the load is going to finish in
- Set `maychangeremoteness` attribute to true to allow changing remoteness if user navigates to a different URL that requires this (such as an `about:` page, though with the current set up `about:` pages won't load for security reasons).
- Set `nodefaultsrc` attribute to true to avoid loading a default URL if `src` is blank
Differential Revision: https://phabricator.services.mozilla.com/D232425
- Wait for ASRouter to be initialized before recording screen impressions to ensure the impression for the first screen in `about:welcome` isn't lost because ASRouter's `_storage` variable is still null
- Local testing shows that this first screen impression is lost when an attempt is made to record it before ASRouter is initialized. It's unclear if this is an issue on production, or just when running locally. Locally the issue occurs consistently, but this can't be the case on production as telemetry includes impressions from the first screen of `about:welcome`. However, we should monitor telemetry for possible changes after this fix goes out to see if there is an increase in screen impressions for the first screen of about:welcome.
Differential Revision: https://phabricator.services.mozilla.com/D232736