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
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

Back to Bug 1576266 Comment 0