Description
Users keep misunderstanding what adding a widget to Widget Exceptions does. It does not mean that widget will always be allowed to load everywhere. It means that widget will still be blocked, but no longer replaced. It's like a selective way of unchecking "Enable widget replacement".
Beyond this confusion, some users want a way to always allow a widget everywhere, and we don't have an intuitive way of doing this.
Is there a reason for someone to turn off widget replacement either globally or selectively? Where PB keeps blocking but no longer replaces with a placeholder? If this functionality can be removed, we could then resolve the above confusion and allow users to globally allow particular widgets by re-purposing Widget Exceptions. Basically, make Widget Exceptions work the way people tend to think it does. First implementation thoughts:
- Remove the "Enable widget replacement" checkbox from the UI, and from widget replacement logic
- Reword "Don't replace the following widgets:" to something like "Always allow the following widgets:". (May ease the process to use a new locale message for this.)
- Have widget exceptions save to a new field in storage. When adding an exception, move all associated domain toggles to green. When removing an exception, restore the toggles to red. (Probably have to save the associated domains in the new field, so that when the associated domains change in the JSON, we can do the right thing (add new domains, remove deleted domains) on extension update.)
- Remove the original widget exceptions field from widget replacement logic
- Plan to remove "Enable widget replacement" and the original widget exceptions from storage (and from locales) in a separate followup update
After this, issues like #2539 that can now be worked around by disabling replacement for a particular widget could be worked around by always allowing the widget instead.