mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-31 14:15:30 +00:00
5537b5c159
Previously we just checked every newly sideloaded add-on to decide whether to offer it to the user for opt-in. This adds a new "seen" property (naming could be better if you have other suggestions) which tracks whether we've ever shown the opt-in UI for the add-on. It defaults to true for all add-ons and is only set to false for sideloaded add-ons that default to being disabled on install. The seen flag can be set to true through the API but cannot be reset to false as that would allow add-ons to forcibly re-present themselves to the user when disabled. The opt-in UI sets the seen flag to true only when it has focus which fixes a long-standing bug where if you accept the first add-on you see and restart the other tabs might not show up. The one slight downside of this approach is that it now requires loading the full add-ons database on every startup in order to check the seen flag for all installed add-ons. There are hacky ways we might get around this but they all involve overloading prefs with even more object data. The good thing is that we do the load and check asynchronously after most of startup is complete and the UI is fully loaded so there shouldn't be any percieved impact to startup time. I've run multiple talos runs to verify that none of the numbers appear to regress. --HG-- extra : commitid : AG6pELCYJDa extra : rebase_source : b824c1626d0c5a77416fa4349ed3dd4d0e96418b |
||
---|---|---|
.. | ||
content | ||
internal | ||
test | ||
AddonContentPolicy.cpp | ||
AddonContentPolicy.h | ||
addonManager.js | ||
AddonManager.jsm | ||
AddonPathService.cpp | ||
AddonPathService.h | ||
amContentHandler.js | ||
amIAddonManager.idl | ||
amIAddonPathService.idl | ||
amInstallTrigger.js | ||
amIWebInstaller.idl | ||
amIWebInstallListener.idl | ||
amWebInstallListener.js | ||
ChromeManifestParser.jsm | ||
DeferredSave.jsm | ||
extensions.manifest | ||
jar.mn | ||
LightweightThemeManager.jsm | ||
moz.build | ||
nsBlocklistService.js | ||
nsBlocklistServiceContent.js |