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/. */
/**
* Tests folders which should have a localised name that is different from the
* folder's name.
*/
add_task(function () {
// Get the localized strings. This test should work in any locale, or if you
// change the string values in messenger.properties.
const bundle = Services.strings.createBundle(
);
const inboxFolderName = bundle.GetStringFromName("inboxFolderName");
const trashFolderName = bundle.GetStringFromName("trashFolderName");
const sentFolderName = bundle.GetStringFromName("sentFolderName");
const draftsFolderName = bundle.GetStringFromName("draftsFolderName");
const templatesFolderName = bundle.GetStringFromName("templatesFolderName");
const outboxFolderName = bundle.GetStringFromName("outboxFolderName");
const junkFolderName = bundle.GetStringFromName("junkFolderName");
const archivesFolderName = bundle.GetStringFromName("archivesFolderName");
Cc["@mozilla.org/msgFolder/msgFolderService;1"]
.getService(Ci.nsIMsgFolderService)
.initializeFolderStrings();
const panorama = Services.prefs.getBoolPref("mail.panorama.enabled", false);
const account = MailServices.accounts.createLocalMailAccount();
const rootFolder = account.incomingServer.rootFolder;
rootFolder.QueryInterface(Ci.nsIMsgLocalMailFolder);
Assert.equal(rootFolder.name, "Local Folders");
Assert.equal(rootFolder.localizedName, "Local Folders");
const inboxFolder = rootFolder.createLocalSubfolder("Inbox");
inboxFolder.setFlag(Ci.nsMsgFolderFlags.Inbox);
Assert.equal(inboxFolder.name, "Inbox");
Assert.equal(inboxFolder.localizedName, inboxFolderName);
Assert.equal(
inboxFolder.msgDatabase.dBFolderInfo.folderName,
panorama ? "Inbox" : ""
);
// Normal sent mail folder as created by us.
const sentFolder1 = rootFolder.createLocalSubfolder("Sent");
sentFolder1.setFlag(Ci.nsMsgFolderFlags.SentMail);
Assert.equal(sentFolder1.name, "Sent");
Assert.equal(sentFolder1.localizedName, sentFolderName);
Assert.equal(
sentFolder1.msgDatabase.dBFolderInfo.folderName,
panorama ? "Sent" : ""
);
// Gmail.
const sentFolder2 = rootFolder.createLocalSubfolder("Sent Mail");
sentFolder2.setFlag(Ci.nsMsgFolderFlags.SentMail);
Assert.equal(sentFolder2.name, "Sent Mail");
Assert.equal(sentFolder2.localizedName, "Sent");
const sentFolder3 = rootFolder.createLocalSubfolder("Outbox");
sentFolder3.setFlag(Ci.nsMsgFolderFlags.SentMail);
Assert.equal(sentFolder3.name, "Outbox");
Assert.equal(sentFolder3.localizedName, "Sent");
// Normal drafts folder as created by us, but with weird capitalisation to
// prove it works. The case is "corrected" by nsMsgDBFolder::AddSubfolder.
const draftsFolder1 = rootFolder.createLocalSubfolder("drAfTs");
draftsFolder1.setFlag(Ci.nsMsgFolderFlags.Drafts);
Assert.equal(draftsFolder1.name, "Drafts");
Assert.equal(draftsFolder1.localizedName, draftsFolderName);
Assert.equal(
draftsFolder1.msgDatabase.dBFolderInfo.folderName,
panorama ? "Drafts" : ""
);
// Yahoo!.
const draftsFolder2 = rootFolder.createLocalSubfolder("Draft");
draftsFolder2.setFlag(Ci.nsMsgFolderFlags.Drafts);
Assert.equal(draftsFolder2.name, "Draft");
Assert.equal(draftsFolder2.localizedName, "Drafts");
Assert.equal(
draftsFolder2.msgDatabase.dBFolderInfo.folderName,
panorama ? "Draft" : ""
);
const templatesFolder = rootFolder.createLocalSubfolder("Templates");
templatesFolder.setFlag(Ci.nsMsgFolderFlags.Templates);
Assert.equal(templatesFolder.name, "Templates");
Assert.equal(templatesFolder.localizedName, templatesFolderName);
Assert.equal(
templatesFolder.msgDatabase.dBFolderInfo.folderName,
panorama ? "Templates" : ""
);
const trashFolder1 = rootFolder.getChildNamed("Trash");
Assert.equal(trashFolder1.name, "Trash");
Assert.equal(trashFolder1.localizedName, trashFolderName);
Assert.equal(
trashFolder1.msgDatabase.dBFolderInfo.folderName,
panorama ? "Trash" : ""
);
const trashFolder2 = rootFolder.createLocalSubfolder("Bin");
trashFolder2.setFlag(Ci.nsMsgFolderFlags.Trash);
Assert.equal(trashFolder2.name, "Bin");
Assert.equal(trashFolder2.localizedName, trashFolderName);
Assert.equal(
trashFolder2.msgDatabase.dBFolderInfo.folderName,
panorama ? "Bin" : ""
);
const trashFolder3 = rootFolder.createLocalSubfolder("Deleted");
trashFolder3.setFlag(Ci.nsMsgFolderFlags.Trash);
Assert.equal(trashFolder3.name, "Deleted");
Assert.equal(trashFolder3.localizedName, "Trash");
Assert.equal(
trashFolder3.msgDatabase.dBFolderInfo.folderName,
panorama ? "Deleted" : ""
);
const outboxFolder = rootFolder.getChildNamed("Unsent Messages");
outboxFolder.setFlag(Ci.nsMsgFolderFlags.Queue);
Assert.equal(outboxFolder.name, "Unsent Messages");
Assert.equal(outboxFolder.localizedName, outboxFolderName);
Assert.equal(
outboxFolder.msgDatabase.dBFolderInfo.folderName,
panorama ? "Unsent Messages" : ""
);
const junkFolder = rootFolder.createLocalSubfolder("Junk");
junkFolder.setFlag(Ci.nsMsgFolderFlags.Junk);
Assert.equal(junkFolder.name, "Junk");
Assert.equal(junkFolder.localizedName, junkFolderName);
Assert.equal(
junkFolder.msgDatabase.dBFolderInfo.folderName,
panorama ? "Junk" : ""
);
const archivesFolder1 = rootFolder.createLocalSubfolder("Archives");
archivesFolder1.setFlag(Ci.nsMsgFolderFlags.Archive);
Assert.equal(archivesFolder1.name, "Archives");
Assert.equal(archivesFolder1.localizedName, archivesFolderName);
Assert.equal(
archivesFolder1.msgDatabase.dBFolderInfo.folderName,
panorama ? "Archives" : ""
);
const archivesFolder2 = rootFolder.createLocalSubfolder("Archive");
archivesFolder2.setFlag(Ci.nsMsgFolderFlags.Archive);
Assert.equal(archivesFolder2.name, "Archive");
Assert.equal(archivesFolder2.localizedName, archivesFolderName);
Assert.equal(
archivesFolder2.msgDatabase.dBFolderInfo.folderName,
panorama ? "Archive" : ""
);
});