Patch by Bernard Igiri <bigiri@mozilla.com>
Replacing async events with async method calls that use JSWindowActors to communicate with the parent process.
This will simplify these calls, bring the relevant code into local scope, and eliminate the need for MessageChannel.
Eliminating the MessageChannel dependency allows us to move the ASRouter initialization out of ASRouterFeed and into
JSWindowActors.
Differential Revision: https://phabricator.services.mozilla.com/D71796
cfr doorhangers supports priority field, but it doen't work if we receive content blocking event separtely.
Therefore we should fire an event contains all events and let cfr priority decides the order.
Differential Revision: https://phabricator.services.mozilla.com/D49771
1. Previously, the label and tooltip for all recommendations was just "Recommendation", even though the icon was different for extension and feature recommendations.
Because users might not be able to see the icon and/or determine its meaning, it is important that this is communicated in the tooltip and a11y label.
2. Screen reader users won't know this has appeared, even though this attracts some attention visually.
Therefore, provide a specific announcement for screen reader users when the recommendation appears.
Differential Revision: https://phabricator.services.mozilla.com/D47718
1. Previously, the label and tooltip for all recommendations was just "Recommendation", even though the icon was different for extension and feature recommendations.
Because users might not be able to see the icon and/or determine its meaning, it is important that this is communicated in the tooltip and a11y label.
2. Screen reader users won't know this has appeared, even though this attracts some attention visually.
Therefore, provide a specific announcement for screen reader users when the recommendation appears.
Differential Revision: https://phabricator.services.mozilla.com/D47718
test with:
`./mach run --temp-profile --setpref browser.newtabpage.activity-stream.asrouter.providers.cfr="{\"id\":\"cfr\",\"enabled\":true,\"type\":\"local\",\"localProvider\":\"CFRMessageProvider\",\"frequency\":{\"custom\":[{\"period\":\"daily\",\"cap\":10}]},\"categories\":[\"cfrAddons\",\"cfrFeatures\"],\"updateCycleInMs\":3600000}"`
for testing: Change `browser/components/newtab/lib/CFRPageActions.jsm` line 136, to `if (false)` instead of `if (resource)` or comment out that block. This is to force using the local ftl file.
- you can use the newtab devtools, set `browser.newtabpage.activity-stream.asrouter.devtoolsEnabled=true`
- change the pref `privacy.trackingprotection.cfr-milestone.milestone-achieved=1` and `privacy.trackingprotection.cfr-milestone.milestones="1, 5000, 10000, 25000, 50000, 100000, 500000"`
- ensure at least one tracker has been saved in the database by visiting a tracking page and refreshing (this is so we can get the date it was saved from the database).
- open a new tab and click the wrench to the top right.
- change provider to "cfr" scroll down to find the milestone_message and click "show"
- I've now added a 24 hour timeout in `toolkit/components/antitracking/TrackingDBService.jsm` line 270 - you'll want to comment this out in order to see the popup.
Differential Revision: https://phabricator.services.mozilla.com/D47512
# support `recommendation.content.anchor_id`
# support `recommendation.content.skip_address_bar_notifier`
# support `recommendation.content.learn_more`
# support `recommendation.content.icon_dark_theme`
# support `recommendation.content.icon_class`
Differential Revision: https://phabricator.services.mozilla.com/D44177