- Adds a `browser_reviewchecker.toml` to run tests specific to the Review Checker sidebar and common "about:shoppingsidebar" UI tests with the ReviewChecker actors enabled.
- Prefaces Review Checker test filenames with `browser_reviewchecker_`.
- Only runs shopping sidebar specific tests in `browser.toml` and prefaces those filenames with `browser_shoppingsidebar_`.
- Splits out parts of test files that are specific only to one actor.
- Renames all common tests to `browser_shopping_`
- Updates `ReviewCheckerParent` to not return a url on `about:shoppingsidebar` so it is not handled valid non-product page, replicating the behavior of the current sidebar tests.
- Adds versions of sidebar test helper methods that work with the new sidebar.
Differential Revision: https://phabricator.services.mozilla.com/D233121
- Adds new illustrations and copy to RC sidebar panel for non PDPs, which will act as empty states
- To test the feature, set browser.shopping.experience2023.integratedSidebar=true, browser.shopping.experience2023.shoppingSidebar=false
- This is for users already opted-in to RC, so browser.shopping.experience2023.optedIn=true. See D226075 for the non-opted in versions of the empty states.
- Adds a new ShoppingProduct static method called getSupportedDomains, which allows us to read supported domains from our ProductConfig and display a list of domains in the empty state
- Adds browser tests for empty states and ShoppingProduct.getSupportedDomains
- Figma: https://www.figma.com/design/GnCtw7DmPtlSEIfjatHtSI/Review-Checker-in-sidebar-migration?node-id=9832-47109&node-type=section&m=dev
Differential Revision: https://phabricator.services.mozilla.com/D222891
- Adds new illustrations and copy to RC sidebar panel for non PDPs, which will act as empty states
- To test the feature, set browser.shopping.experience2023.integratedSidebar=true, browser.shopping.experience2023.shoppingSidebar=false
- This is for users already opted-in to RC, so browser.shopping.experience2023.optedIn=true. See D226075 for the non-opted in versions of the empty states.
- Adds a new ShoppingProduct static method called getSupportedDomains, which allows us to read supported domains from our ProductConfig and display a list of domains in the empty state
- Adds browser tests for empty states and ShoppingProduct.getSupportedDomains
- Figma: https://www.figma.com/design/GnCtw7DmPtlSEIfjatHtSI/Review-Checker-in-sidebar-migration?node-id=9832-47109&node-type=section&m=dev
Differential Revision: https://phabricator.services.mozilla.com/D222891
* Adds a `isSupportedSiteURL` method to the `ShoppingProduct` to determine if a URL is on a supported shopping site.
* Passes isProductPage and isSupportedSite booleans to the shopping container to render the empty state UIs
* Switches to checking if shopping container pref boolean properties is not nullish before setting in `_update`. This cleaned up the update objects in `ShoppingSidebarChild` and made adding the new empty states simpler.
Differential Revision: https://phabricator.services.mozilla.com/D227752
* Sends a `CloseShoppingSidebar` message on clicking the shopping header close button to allow the `ReviewCheckerParent` to close the sidebar.
Differential Revision: https://phabricator.services.mozilla.com/D228281
* Adds a `isSupportedSiteURL` method to the `ShoppingProduct` to determine if a URL is on a supported shopping site.
* Passes isProductPage and isSupportedSite booleans to the shopping container to render the empty state UIs
* Switches to checking if shopping container pref boolean properties is not nullish before setting in `_update`. This cleaned up the update objects in `ShoppingSidebarChild` and made adding the new empty states simpler.
Differential Revision: https://phabricator.services.mozilla.com/D227752
- Adds a remote content browser to contain `about:shoppingsidebar` in `review-checker.xhtml` and update the Review Checker sidebar to use that wrapper document.
- Adds ReviewChecker actors for the sidebar Review Checker panel.
- ReviewCheckerParent is a simplified version of the ShoppingSidebarParent as it does not need to handle the state of the sidebar opening or closing.
- ReviewCheckerChild is just extends ShoppingSidebarChild for now, though it will need to be separate in the future.
- Adds a browser.shopping.experience2023.shoppingSidebar boolean pref to disable ShoppingSidebar actors when they are not needed.
- Fixes `AbortError` error handling when the outer sidebar browser is removed.
Note that any auto-opening or closing behavior will need to be added afterwards, as these actors are not around to check product urls when the sidebar is closed.
Differential Revision: https://phabricator.services.mozilla.com/D222840
* Adds a `remoteType` attribute to the config when registering a sidebar to opt-in to using a remote content process when displaying that sidebar panel.
* Moves loading URLs into a `SidebarController._loadUrl` method, which can be passed a remoteType if the sidebar contents should be displayed in a remote content process. If needed it will replace the sidebar browser element with a remote or non-remote browser to match the remoteType passed.
* Adds browser load listeners methods, a `SidebarController._hasLoaded` promise for non-remote loading and a `SidebarController._hasProgressStopped` promise if the browser is remote.
* Adds a setter for `SidebarController.browser`.
* Adds a `shopping-sidebar` message manager group to avoid actor conflict.
Differential Revision: https://phabricator.services.mozilla.com/D223961
* Adds a `remoteType` attribute to the config when registering a sidebar to opt-in to using a remote content process when displaying that sidebar panel.
* Moves loading URLs into a `SidebarController._loadUrl` method, which can be passed a remoteType if the sidebar contents should be displayed in a remote content process. If needed it will replace the sidebar browser element with a remote or non-remote browser to match the remoteType passed.
* Adds browser load listeners methods, a `SidebarController._hasLoaded` promise for non-remote loading and a `SidebarController._hasProgressStopped` promise if the browser is remote.
* Adds a setter for `SidebarController.browser`.
* Adds a `shopping-sidebar` message manager group to avoid actor conflict.
Differential Revision: https://phabricator.services.mozilla.com/D223961
- Registers the a new review checker sidebar using `registerPrefSidebar` that will display if `browser.shopping.experience2023.integratedSidebar` is enabled.
- Hides any open review checker sidebars if the pref changes.
- Adds `reviewchecker` to the sidebar revamp tools pref.
Note: this only adds the sidebar tool, it will not load anything as the actors aren't setup yet.
Differential Revision: https://phabricator.services.mozilla.com/D221362
- Updated `AboutWelcomeChild.sys.mjs` to a new opt-in card `FS_OPT_IN_SIDEBAR_VARIANT` that is rendered only if `browser.shopping.experience2023.integratedSidebar`
- Updated styling for the integrated RC in `aboutwelcome.css`
- Added non-exposed strings to `shopping.ftl`
- Updated tests to work for both integrated and non-integrated versions
Differential Revision: https://phabricator.services.mozilla.com/D221396
- Updated `AboutWelcomeChild.sys.mjs` to a new opt-in card `FS_OPT_IN_SIDEBAR_VARIANT` that is rendered only if `browser.shopping.experience2023.integratedSidebar`
- Updated styling for the integrated RC in `aboutwelcome.css`
- Added non-exposed strings to `shopping.ftl`
- Updated tests to work for both integrated and non-integrated versions
Differential Revision: https://phabricator.services.mozilla.com/D221396
- Adds an extra sponsored key to pass if the recommendation was sponsored or not to `surface_ads_placement`, `surface_ads_impression` and `surface_ads_clicked`.
- Records `ads_exposure` for all recommendations.
- Parses the JSON response in exposure telemetry tests.
Differential Revision: https://phabricator.services.mozilla.com/D220302
- Adds an extra sponsored key to pass if the recommendation was sponsored or not to `surface_ads_placement`, `surface_ads_impression` and `surface_ads_clicked`.
- Records `ads_exposure` for all recommendations.
- Parses the JSON response in exposure telemetry tests.
Differential Revision: https://phabricator.services.mozilla.com/D220302
This switches from the deprecated/removed jsdoc/newline-after-description rule to using the replacement jsdoc/tag-lines rule.
Differential Revision: https://phabricator.services.mozilla.com/D219512
This switches from the deprecated/removed jsdoc/newline-after-description rule to using the replacement jsdoc/tag-lines rule.
Differential Revision: https://phabricator.services.mozilla.com/D219512