Revision control

Copy as Markdown

Other Tools

/* 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/. */
"use strict";
const {
getAvailableItemIdsForSpace,
getDefaultItemIdsForSpace,
registerExtension,
unregisterExtension,
} = ChromeUtils.importESModule("resource:///modules/CustomizableItems.sys.mjs");
add_task(async function test_extensionRegisterUnregisterDefault() {
const extensionId = "thunderbird-compact-light@mozilla.org";
await registerExtension(extensionId);
const itemId = `ext-${extensionId}`;
ok(
getAvailableItemIdsForSpace("mail").includes(itemId),
"Extension item available in mail space"
);
ok(
getDefaultItemIdsForSpace("mail").includes(itemId),
"Extension item in mail space by default"
);
ok(
!getAvailableItemIdsForSpace().includes(itemId),
"Extension item not available in all spaces"
);
unregisterExtension(extensionId);
ok(
!getAvailableItemIdsForSpace("mail").includes(itemId),
"Extension item no longer available in mail space"
);
ok(
!getDefaultItemIdsForSpace("mail").includes(itemId),
"Extension item not in mail space by default"
);
});
add_task(async function test_extensionRegisterAllSpaces() {
const extensionId = "thunderbird-compact-light@mozilla.org";
await registerExtension(extensionId, []);
const itemId = `ext-${extensionId}`;
ok(
getAvailableItemIdsForSpace().includes(itemId),
"Extension item available in all spaces"
);
ok(
getDefaultItemIdsForSpace("default").includes(itemId),
"Extension item in all spaces by default"
);
ok(
!getAvailableItemIdsForSpace("mail").includes(itemId),
"Extension item not available in mail space"
);
ok(
getDefaultItemIdsForSpace("mail").includes(itemId),
"Extension item in mail space by default"
);
unregisterExtension(extensionId);
ok(
!getAvailableItemIdsForSpace().includes(itemId),
"Extension item no longer available in all spaces"
);
ok(
!getDefaultItemIdsForSpace("default").includes(itemId),
"Extension item not in any space by default"
);
});
add_task(async function test_extensionRegisterMultipleSpaces() {
const extensionId = "thunderbird-compact-light@mozilla.org";
await registerExtension(extensionId, ["mail", "calendar", "default"]);
const itemId = `ext-${extensionId}`;
ok(
getAvailableItemIdsForSpace("calendar").includes(itemId),
"Extension item available in calendar space"
);
ok(
getDefaultItemIdsForSpace("calendar").includes(itemId),
"Extension item in calendar space by default"
);
ok(
getAvailableItemIdsForSpace("mail").includes(itemId),
"Extension item available in mail space"
);
ok(
getDefaultItemIdsForSpace("mail").includes(itemId),
"Extension item in mail space by default"
);
ok(
!getAvailableItemIdsForSpace().includes(itemId),
"Extension item not available in all spaces"
);
ok(
getAvailableItemIdsForSpace("default").includes(itemId),
"Extension item available in default space"
);
ok(
getDefaultItemIdsForSpace("default").includes(itemId),
"Extension item in default space"
);
unregisterExtension(extensionId);
ok(
!getAvailableItemIdsForSpace("mail").includes(itemId),
"Extension item no longer available in mail space"
);
ok(
!getDefaultItemIdsForSpace("mail").includes(itemId),
"Extension item not in mail space by default"
);
ok(
!getAvailableItemIdsForSpace("calendar").includes(itemId),
"Extension item no longer available in calendar space"
);
ok(
!getDefaultItemIdsForSpace("calendar").includes(itemId),
"Extension item not in calendar space by default"
);
ok(
!getAvailableItemIdsForSpace().includes(itemId),
"Extension item not available in all spaces"
);
ok(
!getAvailableItemIdsForSpace("default").includes(itemId),
"Extension item not available in default space"
);
ok(
!getDefaultItemIdsForSpace("default").includes(itemId),
"Extension item not in default space"
);
});
add_task(async function test_extensionRegisterStableOrder() {
const extension1Id = "thunderbird-compact-light@mozilla.org";
const extension2Id = "thunderbird-compact-dark@mozilla.org";
await registerExtension(extension1Id);
await registerExtension(extension2Id);
const defaultItems = getDefaultItemIdsForSpace("mail");
const firstExtensionId = defaultItems
.find(itemId => itemId.startsWith("ext-"))
.slice(4);
unregisterExtension(firstExtensionId);
ok(
!getDefaultItemIdsForSpace("mail").includes(`ext-${firstExtensionId}`),
"Extension that was the first in the default set not in default set"
);
await registerExtension(firstExtensionId);
Assert.deepEqual(
getDefaultItemIdsForSpace("mail"),
defaultItems,
"Default items order stable for extensions"
);
unregisterExtension(extension1Id);
unregisterExtension(extension2Id);
});