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 { migrateToolbarForSpace, clearXULToolbarState } =
ChromeUtils.importESModule("resource:///modules/ToolbarMigration.sys.mjs");
const { getState, storeState } = ChromeUtils.importESModule(
);
const { AppConstants } = ChromeUtils.importESModule(
);
const MESSENGER_WINDOW = "chrome://messenger/content/messenger.xhtml";
function setXULToolbarState(
currentSet = "",
defaultSet = "",
toolbarId = "mail-bar3"
) {
Services.xulStore.setValue(
MESSENGER_WINDOW,
toolbarId,
"currentset",
currentSet
);
Services.xulStore.setValue(
MESSENGER_WINDOW,
toolbarId,
"defaultset",
defaultSet
);
}
add_setup(() => {
do_get_profile();
storeState({});
});
add_task(function test_migration_customized() {
setXULToolbarState(
"button-getmsg,button-newmsg,button-reply,spacer,qfb-show-filter-bar,button-file,folder-location-container,spring,gloda-search,button-appmenu"
);
setXULToolbarState(
"menubar-items,spring,button-addons",
"",
"toolbar-menubar"
);
setXULToolbarState("button-delete", "", "tabbar-toolbar");
migrateToolbarForSpace("mail");
const newState = getState();
Assert.deepEqual(
newState.mail,
[
"get-messages",
"write-message",
"reply",
"spacer",
"quick-filter-bar",
"move-to",
"folder-location",
"spacer",
"search-bar",
"spacer",
"add-ons-and-themes",
"delete",
],
"Items were combined and migrated"
);
Assert.ok(
!Services.xulStore.hasValue(MESSENGER_WINDOW, "mail-bar3", "currentset"),
"Old toolbar state is cleared"
);
Assert.ok(
!Services.xulStore.hasValue(MESSENGER_WINDOW, "mail-bar3", "defaultset"),
"Old toolbar default state is cleared"
);
storeState({});
});
add_task(function test_migration_defaults() {
setXULToolbarState();
setXULToolbarState("", "", "toolbar-menubar");
setXULToolbarState("", "", "tabbar-toolbar");
migrateToolbarForSpace("mail");
const newState = getState();
Assert.ok(!newState.mail, "New default state was preserved");
Assert.ok(
!Services.xulStore.hasValue(MESSENGER_WINDOW, "mail-bar3", "currentset"),
"Old toolbar state is cleared"
);
Assert.ok(
!Services.xulStore.hasValue(MESSENGER_WINDOW, "mail-bar3", "defaultset"),
"Old toolbar default state is cleared"
);
storeState({});
});
add_task(function test_migration_empty() {
setXULToolbarState("__empty");
setXULToolbarState("__empty", "menubar-items,spring", "toolbar-menubar");
setXULToolbarState("__empty", "", "tabbar-toolbar");
migrateToolbarForSpace("mail");
const newState = getState();
Assert.deepEqual(newState.mail, [], "The toolbar contents were emptied");
Assert.ok(
!Services.xulStore.hasValue(MESSENGER_WINDOW, "mail-bar3", "currentset"),
"Old toolbar state is cleared"
);
Assert.ok(
!Services.xulStore.hasValue(MESSENGER_WINDOW, "mail-bar3", "defaultset"),
"Old toolbar default state is cleared"
);
storeState({});
});
add_task(function test_migration_noop() {
const state = { mail: ["spacer", "search-bar", "spacer"] };
storeState(state);
migrateToolbarForSpace("mail");
const newState = getState();
Assert.deepEqual(newState, state, "Customization state is not modified");
Assert.ok(
!Services.xulStore.hasValue(MESSENGER_WINDOW, "mail-bar3", "currentset"),
"Old toolbar state is cleared"
);
Assert.ok(
!Services.xulStore.hasValue(MESSENGER_WINDOW, "mail-bar3", "defaultset"),
"Old toolbar default state is cleared"
);
storeState({});
});
add_task(function test_calendar_migration() {
setXULToolbarState(
"calendar-synchronize-button,calendar-newevent-button,separator,calendar-edit-button,calendar-delete-button,spring,calendar-unifinder-button,calendar-appmenu-button",
"",
"calendar-toolbar2"
);
setXULToolbarState(
"menubar-items,spring,button-addons",
"",
"toolbar-menubar"
);
setXULToolbarState("button-delete", "", "tabbar-toolbar");
migrateToolbarForSpace("calendar");
const newState = getState();
Assert.deepEqual(
newState.calendar,
[
"synchronize",
"new-event",
"edit-event",
"delete-event",
"spacer",
"unifinder",
"spacer",
"add-ons-and-themes",
],
"Items were combined and migrated"
);
Assert.ok(
!Services.xulStore.hasValue(
MESSENGER_WINDOW,
"calendar-toolbar2",
"currentset"
),
"Old toolbar state is cleared"
);
Assert.ok(
!Services.xulStore.hasValue(
MESSENGER_WINDOW,
"calendar-toolbar2",
"defaultset"
),
"Old toolbar default state is cleared"
);
storeState({});
});
add_task(function test_calendar_migration_defaults() {
setXULToolbarState("", "", "calendar-toolbar2");
setXULToolbarState("", "", "toolbar-menubar");
setXULToolbarState("", "", "tabbar-toolbar");
migrateToolbarForSpace("calendar");
const newState = getState();
Assert.deepEqual(
newState.calendar,
[
"synchronize",
"new-event",
"new-task",
"edit-event",
"delete-event",
"spacer",
],
"Default states were combined and migrated"
);
Assert.ok(
!Services.xulStore.hasValue(
MESSENGER_WINDOW,
"calendar-toolbar2",
"currentset"
),
"Old toolbar state is cleared"
);
Assert.ok(
!Services.xulStore.hasValue(
MESSENGER_WINDOW,
"calendar-toolbar2",
"defaultset"
),
"Old toolbar default state is cleared"
);
storeState({});
});
add_task(function test_tasks_migration() {
setXULToolbarState(
"task-synchronize-button,task-newtask-button,task-edit-button,task-delete-button,task-print-button,spring,task-appmenu-button",
"",
"task-toolbar2"
);
setXULToolbarState(
"menubar-items,spring,button-addons",
"",
"toolbar-menubar"
);
setXULToolbarState("button-delete", "", "tabbar-toolbar");
migrateToolbarForSpace("tasks");
const newState = getState();
Assert.deepEqual(
newState.tasks,
[
"synchronize",
"new-task",
"edit-event",
"delete-event",
"print-event",
"spacer",
"add-ons-and-themes",
],
"Items were combined and migrated"
);
Assert.ok(
!Services.xulStore.hasValue(
MESSENGER_WINDOW,
"task-toolbar2",
"currentset"
),
"Old toolbar state is cleared"
);
Assert.ok(
!Services.xulStore.hasValue(
MESSENGER_WINDOW,
"task-toolbar2",
"defaultset"
),
"Old toolbar default state is cleared"
);
storeState({});
});
add_task(function test_tasks_migration_defaults() {
setXULToolbarState("", "", "task-toolbar2");
setXULToolbarState("", "", "toolbar-menubar");
setXULToolbarState("", "", "tabbar-toolbar");
migrateToolbarForSpace("tasks");
const newState = getState();
Assert.deepEqual(
newState.tasks,
[
"synchronize",
"new-event",
"new-task",
"edit-event",
"delete-event",
"spacer",
],
"Default states were combined and migrated"
);
Assert.ok(
!Services.xulStore.hasValue(
MESSENGER_WINDOW,
"task-toolbar2",
"currentset"
),
"Old toolbar state is cleared"
);
Assert.ok(
!Services.xulStore.hasValue(
MESSENGER_WINDOW,
"task-toolbar2",
"defaultset"
),
"Old toolbar default state is cleared"
);
storeState({});
});
add_task(function test_global_items_migration() {
setXULToolbarState(
"menubar-items,spring,button-addons",
"",
"toolbar-menubar"
);
setXULToolbarState("button-delete", "", "tabbar-toolbar");
migrateToolbarForSpace("settings");
const newState = getState();
Assert.deepEqual(newState.settings, [
"spacer",
"search-bar",
"spacer",
"add-ons-and-themes",
]);
storeState({});
});
add_task(function test_global_items_migration_defaults() {
setXULToolbarState("", "", "toolbar-menubar");
setXULToolbarState("", "", "tabbar-toolbar");
migrateToolbarForSpace("settings");
const newState = getState();
Assert.deepEqual(newState.settings, ["spacer", "search-bar", "spacer"]);
storeState({});
});
add_task(function test_clear_xul_toolbar_state() {
setXULToolbarState(
"menubar-items,spring,button-addons",
"menubar-items,spring",
"toolbar-menubar"
);
clearXULToolbarState("toolbar-menubar");
Assert.ok(
!Services.xulStore.hasValue(
MESSENGER_WINDOW,
"toolbar-menubar",
"currentset"
),
"Old toolbar state is cleared"
);
Assert.ok(
!Services.xulStore.hasValue(
MESSENGER_WINDOW,
"toolbar-menubar",
"defaultset"
),
"Old toolbar default state is cleared"
);
});
add_task(function test_migration_defaults_with_extension() {
setXULToolbarState(
AppConstants.platform == "macosx"
? "button-getmsg,button-newmsg,button-tag,qfb-show-filter-bar,spring,gloda-search,extension1,extension2,button-appmenu"
: "button-getmsg,button-newmsg,separator,button-tag,qfb-show-filter-bar,spring,gloda-search,extension1,extension2,button-appmenu"
);
setXULToolbarState("", "", "toolbar-menubar");
setXULToolbarState("", "", "tabbar-toolbar");
Services.xulStore.setValue(
MESSENGER_WINDOW,
"mail-bar3",
"extensionset",
"extension1,extension2"
);
migrateToolbarForSpace("mail");
const newState = getState();
Assert.ok(!newState.mail, "New default state was preserved");
Assert.ok(
!Services.xulStore.hasValue(MESSENGER_WINDOW, "mail-bar3", "currentset"),
"Old toolbar state is cleared"
);
Assert.ok(
!Services.xulStore.hasValue(MESSENGER_WINDOW, "mail-bar3", "defaultset"),
"Old toolbar default state is cleared"
);
Assert.ok(
!Services.xulStore.hasValue(MESSENGER_WINDOW, "mail-bar3", "extensionset"),
"Old toolbar extension state is cleared"
);
storeState({});
});