STR: 1. Install an extension that calls `browser.urlbar.engagementTelemetry.set({ value: true })` [1] 2. Restart Firefox 3. Uninstall or disable the extension 4. Open about:config and observe that `browser.urlbar.eventTelemetry.enabled` remains true when it should have been cleared If you skip step 2 -- i.e., don't restart Firefox -- the pref is cleared, as expected. The `browser.urlbar.engagementTelemetry` browser setting maps to the `browser.urlbar.eventTelemetry.enabled` pref, which does not exist by default. See https://searchfox.org/mozilla-central/rev/a650fac7b069ded3d63eba530271ce80e6cafb1b/browser/components/extensions/parent/ext-urlbar.js#201 I'm not sure whether this is a bug in the `browser.urlbar` implementation or something deeper in the webextensions framework. I did some debugging and it looks like the problem is in or around `ExtensionPreferencesManager`. When I restart Firefox and then unload the extension, `setPrefs` is called, and `prefs` is an empty object here: https://searchfox.org/mozilla-central/source/toolkit/components/extensions/ExtensionPreferencesManager.jsm#99 In contrast, when I don't restart Firefox before unloading the extension, `prefs` is `{ "browser.urlbar.eventTelemetry.enabled": undefined }`. And when I give `browser.urlbar.eventTelemetry.enabled` a default value of `false` by adding it to browser/app/profile/firefox.js, `prefs` is `{ "browser.urlbar.eventTelemetry.enabled": false }`. Here's an excerpt from a chat about it with Shane: > mixedpuppy: ok, so what happens is that there is an initialvalue that is set via Preferences.get(prefname) > mixedpuppy: if that initialvalue is undefined, then Preferences.reset(prefname) shoudl be called > mixedpuppy: https://searchfox.org/mozilla-central/rev/a650fac7b069ded3d63eba530271ce80e6cafb1b/toolkit/components/extensions/ExtensionPreferencesManager.jsm#79-115
Bug 1576266 Comment 0 Edit History
Note: The actual edited comment in the bug view page will always show the original commenter’s name and original timestamp.
STR: 1. Install an extension that calls `browser.urlbar.engagementTelemetry.set({ value: true })` [1] 2. Restart Firefox 3. Uninstall or disable the extension 4. Open about:config and observe that `browser.urlbar.eventTelemetry.enabled` remains true when it should have been cleared If you skip step 2 -- i.e., don't restart Firefox -- the pref is cleared, as expected. The `browser.urlbar.engagementTelemetry` browser setting maps to the `browser.urlbar.eventTelemetry.enabled` pref, which does not exist by default. See https://searchfox.org/mozilla-central/rev/a650fac7b069ded3d63eba530271ce80e6cafb1b/browser/components/extensions/parent/ext-urlbar.js#201 I'm not sure whether this is a bug in the `browser.urlbar` implementation or something deeper in the webextensions framework. I did some debugging and it looks like the problem is in or around `ExtensionPreferencesManager`. When I restart Firefox and then unload the extension, `setPrefs` is called, and `prefs` is an empty object here: https://searchfox.org/mozilla-central/source/toolkit/components/extensions/ExtensionPreferencesManager.jsm#99 In contrast, when I don't restart Firefox before unloading the extension, `prefs` is `{ "browser.urlbar.eventTelemetry.enabled": undefined }`. And when I give `browser.urlbar.eventTelemetry.enabled` a default value of `false` by adding it to browser/app/profile/firefox.js, `prefs` is `{ "browser.urlbar.eventTelemetry.enabled": false }`. Here's an excerpt from a chat about it with Shane: > mixedpuppy: ok, so what happens is that there is an initialvalue that is set via Preferences.get(prefname) > mixedpuppy: if that initialvalue is undefined, then Preferences.reset(prefname) shoudl be called > mixedpuppy: https://searchfox.org/mozilla-central/rev/a650fac7b069ded3d63eba530271ce80e6cafb1b/toolkit/components/extensions/ExtensionPreferencesManager.jsm#79-115 [1] e.g. https://github.com/0c0w3/urlbar-top-sites-experiment -- xpi in bug 1547670