Bug 1859544 - Fix IMServices.core.getProtocols returning an empty list. r=mkmelin

Differential Revision: https://phabricator.services.mozilla.com/D191197

--HG--
extra : amend_source : b461a1e236bccfc35fc764815decf87d64ac4261
extra : absorb_source : 42d65fdb67b9c9dcd4a722ac24fb2c8984e8f884
This commit is contained in:
Martin Giger 2023-10-18 10:56:16 +01:00
Родитель f456cbb8fb
Коммит d2ab715995
4 изменённых файлов: 53 добавлений и 27 удалений

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

@ -409,25 +409,20 @@ class CoreService {
throw Components.Exception("", Cr.NS_ERROR_NOT_INITIALIZED);
}
const protocols = [];
for (const id of Object.keys(protocols)) {
// If the preference is set to disable this prpl, don't show it in the
// full list of protocols.
const pref = "chat.prpls." + id + ".disable";
if (
Services.prefs.getPrefType(pref) == Services.prefs.PREF_BOOL &&
Services.prefs.getBoolPref(pref)
) {
this.LOG("Disabling prpl: " + id);
continue;
}
const proto = this.getProtocolById(id);
if (proto) {
protocols.push(proto);
}
}
return protocols;
return (
Object.keys(protocols)
// If the preference is set to disable this prpl, don't show it in the
// full list of protocols.
.filter(protocolId => {
const pref = `chat.prpls.${protocolId}.disable`;
return (
Services.prefs.getPrefType(pref) != Services.prefs.PREF_BOOL ||
!Services.prefs.getBoolPref(pref)
);
})
.map(protocolId => this.getProtocolById(protocolId))
.filter(Boolean)
);
}
/**

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

@ -5,9 +5,6 @@
var { IMServices } = ChromeUtils.importESModule(
"resource:///modules/IMServices.sys.mjs"
);
const { updateAppInfo } = ChromeUtils.importESModule(
"resource://testing-common/AppInfo.sys.mjs"
);
function run_test() {
do_get_profile();
@ -25,9 +22,6 @@ function run_test() {
Services.prefs.setCharPref("mail.server.server1.userName", kAccountName);
Services.prefs.setCharPref("mail.server.server1.hostname", kPrplId);
try {
// Having an implementation of nsIXULAppInfo is required for
// IMServices.core.init to work.
updateAppInfo();
IMServices.core.init();
const account = IMServices.accounts.getAccountByNumericId(1);

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

@ -0,0 +1,36 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
var { IMServices } = ChromeUtils.importESModule(
"resource:///modules/IMServices.sys.mjs"
);
const DISABLED_PROTOCOLS = [
"prpl-facebook",
"prpl-gtalk",
"prpl-twitter",
"prpl-yahoo",
];
add_setup(() => {
do_get_profile();
IMServices.core.init();
});
add_task(function test_getProtocols() {
const protocols = IMServices.core.getProtocols();
Assert.ok(Array.isArray(protocols), "Protocols are returned as array");
Assert.greaterOrEqual(
protocols.length,
4,
"At least 4 active protocols are returned"
);
for (const protocol of protocols) {
Assert.ok(
!DISABLED_PROTOCOLS.includes(protocol.id),
`${protocol.id} is not one of the disabled protocols`
);
}
});

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

@ -5,5 +5,6 @@ tail =
[test_accounts.js]
[test_commands.js]
[test_conversations.js]
[test_core.js]
[test_init.js]
[test_logger.js]