Bug 1365509: Special case handling of enabled state for XUL themes. r=rhelmer

Legacy XUL themes are treated specially for chrome registration when a
lightweight theme is enabled. In those cases, all XUL themes are marked as
disabled for the purposes of UI, but chrome for the default theme still needs
to be loaded. So we need to treate the `selectedTheme` as enabled for chrome
registration purposes regardless of its database disabled state.

MozReview-Commit-ID: EZLckFhftqt

--HG--
extra : rebase_source : e9ab9e9f0d4bdf84e31aa1c7ca77f3a5f0d49fca
This commit is contained in:
Kris Maglione 2017-05-17 13:48:47 -07:00
Родитель 0700aeac13
Коммит cf88e25324
1 изменённых файлов: 9 добавлений и 1 удалений

Просмотреть файл

@ -2408,7 +2408,15 @@ class XPIState {
// We don't use aDBAddon.active here because it's not updated until after restart.
let mustGetMod = (aDBAddon.visible && !aDBAddon.disabled && !this.enabled);
this.enabled = aDBAddon.visible && !aDBAddon.disabled;
// We need to treat XUL themes specially here, since lightweight
// themes require the default theme's chrome to be registered even
// though we report it as disabled for UI purposes.
if (aDBAddon.type == "theme") {
this.enabled = aDBAddon.internalName == XPIProvider.selectedSkin;
} else {
this.enabled = aDBAddon.visible && !aDBAddon.disabled;
}
this.version = aDBAddon.version;
this.type = aDBAddon.type;
this.enableShims = this.type == "extension" && !aDBAddon.multiprocessCompatible;