Bug 1003716 - Use new XBL charset-picker for character encoding menu pop-up. r=mkmelin
authorJavier Rueda <leofigueres@yahoo.com>
Sun, 26 Oct 2014 20:07:22 +0100
changeset 21252 4ec902dd0af4d6a3a705796d55f8aaee8e718a19
parent 21251 d2a7f4929f63647f05daca39d9d7b39b148cd013
child 21253 8e8d4662a7f07c79d6ebe6f449e4dfe8d77a2eab
push id1274
push usermbanner@mozilla.com
push dateMon, 12 Jan 2015 19:54:49 +0000
treeherdercomm-beta@baea280adc1c [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmkmelin
bugs1003716
Bug 1003716 - Use new XBL charset-picker for character encoding menu pop-up. r=mkmelin
mail/components/preferences/fonts.js
mail/components/preferences/fonts.xul
mailnews/base/content/charsetList.css
mailnews/base/content/charsetList.xml
mailnews/base/content/folderProps.js
mailnews/base/content/folderProps.xul
mailnews/base/prefs/content/am-server.js
mailnews/base/prefs/content/am-server.xul
mailnews/jar.mn
--- a/mail/components/preferences/fonts.js
+++ b/mail/components/preferences/fonts.js
@@ -12,82 +12,16 @@ const kFontNameFmtMonospace     = "font.
 const kFontNameListFmtSerif     = "font.name-list.serif.%LANG%";
 const kFontNameListFmtSansSerif = "font.name-list.sans-serif.%LANG%";
 const kFontNameListFmtMonospace = "font.name-list.monospace.%LANG%";
 const kFontSizeFmtVariable      = "font.size.variable.%LANG%";
 const kFontSizeFmtFixed         = "font.size.fixed.%LANG%";
 const kFontMinSizeFmt           = "font.minimum-size.%LANG%";
 
 var gFontsDialog = {
-  _init: function()
-  {
-    // build the charset menu lists.
-    this.createDefaultCharsetMenus();
-  },
-
-  createDefaultCharsetMenus: function()
-  {
-    var viewCharsetsValues = ["UTF-8", "Big5", "EUC-KR", "gbk", "ISO-2022-JP",
-                              "ISO-8859-1", "ISO-8859-2", "ISO-8859-7",
-                              "windows-874", "windows-1250", "windows-1251",
-                              "windows-1252", "windows-1255", "windows-1256",
-                              "windows-1257", "windows-1258"]
-
-    var sendCharsetsValues = ["UTF-8", "EUC-KR", "gbk", "gb18030",
-                              "ISO-2022-JP", "ISO-8859-1", "ISO-8859-7",
-                              "windows-1252"]
-
-    var viewMenuList = document.getElementById("viewDefaultCharsetList");
-    var sendMenuList = document.getElementById("sendDefaultCharsetList");
-
-    this.populateCharsetMenu(viewMenuList,
-                             this.sortCharsetLabels(viewCharsetsValues));
-    this.populateCharsetMenu(sendMenuList,
-                             this.sortCharsetLabels(sendCharsetsValues));
-
-    // Select appropiate menu item.
-    var preference = document.getElementById(
-      viewMenuList.getAttribute("preference"));
-    viewMenuList.value = preference.value;
-
-    preference = document.getElementById(
-      sendMenuList.getAttribute("preference"));
-    sendMenuList.value = preference.value;
-  },
-
-  sortCharsetLabels: function(aMenuStrings)
-  {
-    var menuLabels = [];
-    var charsetBundle = Services.strings.createBundle(
-      "chrome://messenger/locale/charsetTitles.properties");
-
-    aMenuStrings.forEach(function(item) {
-      var strCharset = charsetBundle.GetStringFromName(
-        item.toLowerCase() + ".title");
-
-      menuLabels.push({label: strCharset, value: item});
-    });
-
-    menuLabels.sort(function(a, b) {
-      if (a.value == "UTF-8" || a.label < b.label)
-        return -1;
-      if (b == "UTF-8" || a.label > b.label)
-        return 1;
-      return 0;
-    });
-    return menuLabels;
-  },
-
-  populateCharsetMenu: function(aMenuList, aMenuStrings)
-  {
-    aMenuStrings.forEach(function(item) {
-      aMenuList.appendItem(item.label, item.value);
-    });
-  },
-
   _selectLanguageGroup: function (aLanguageGroup)
   {
     var prefs = [{ format: kDefaultFontType,          type: "string",   element: "defaultFontType", fonttype: null},
                  { format: kFontNameFmtSerif,         type: "fontname", element: "serif",      fonttype: "serif"       },
                  { format: kFontNameFmtSansSerif,     type: "fontname", element: "sans-serif", fonttype: "sans-serif"  },
                  { format: kFontNameFmtMonospace,     type: "fontname", element: "monospace",  fonttype: "monospace"   },
                  { format: kFontNameListFmtSerif,     type: "unichar",  element: null,         fonttype: "serif"       },
                  { format: kFontNameListFmtSansSerif, type: "unichar",  element: null,         fonttype: "sans-serif"  },
--- a/mail/components/preferences/fonts.xul
+++ b/mail/components/preferences/fonts.xul
@@ -1,16 +1,17 @@
 <?xml version="1.0"?>
 
 # -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 4 -*-
 # 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/.
 
 <?xml-stylesheet href="chrome://global/skin/"?>
+<?xml-stylesheet href="chrome://messenger/content/charsetList.css"?>
 #ifdef XP_MACOSX
 <?xml-stylesheet href="chrome://messenger/skin/preferences/preferences.css"?>
 #endif
 
 <!DOCTYPE prefwindow [
 <!ENTITY % fontsDTD SYSTEM "chrome://messenger/locale/preferences/fonts.dtd" >
 %fontsDTD;
 ]>
@@ -25,17 +26,17 @@
             style="width: &window.macWidth; !important;">
 #else
             style="width: &window.unixWidth; !important;">
 #endif
 #else
             style="width: &window.width; !important;">
 #endif
 
-  <prefpane id="FontsDialogPane" onpaneload="gFontsDialog._init();">
+  <prefpane id="FontsDialogPane">
 
     <preferences id="fontPreferences">
       <preference id="font.language.group"  name="font.language.group"  type="wstring"/>
       <preference id="mail.fixed_width_messages" name="mail.fixed_width_messages" type="bool"/>
       <preference id="browser.display.use_document_fonts"
                   name="browser.display.use_document_fonts"
                   type="int"/>
       <preference id="intl.charset.default" name="intl.charset.default" type="wstring"/>
@@ -278,25 +279,27 @@
           <column flex="1"/>
         </columns>
 
         <rows>
           <row align="center" class="indent">
             <label control="sendDefaultCharsetList"
                    value="&sendDefaultCharset.label;"
                    accesskey="&sendDefaultCharset.accesskey;"/>
-            <menulist id="sendDefaultCharsetList" flex="1"
+            <menulist id="sendDefaultCharsetList" type="charset"
+                      subset="sending"
                       preference="mailnews.send_default_charset"/>
           </row>
 
           <row align="center" class="indent">
             <label control="viewDefaultCharsetList"
                    value="&viewDefaultCharsetList.label;"
                    accesskey="&viewDefaultCharsetList.accesskey;"/>
-            <menulist id="viewDefaultCharsetList"
+            <menulist id="viewDefaultCharsetList" type="charset"
+                      subset="viewing"
                       preference="mailnews.view_default_charset" />
           </row>
         </rows>
       </grid>
 
       <separator class="thin"/>
 
       <checkbox id="replyInDefaultCharset" label="&replyInDefaultCharset2.label;"
new file mode 100644
--- /dev/null
+++ b/mailnews/base/content/charsetList.css
@@ -0,0 +1,5 @@
+@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
+
+menulist[type="charset"] {
+  -moz-binding: url("chrome://messenger/content/charsetList.xml#charsetpicker");
+}
new file mode 100644
--- /dev/null
+++ b/mailnews/base/content/charsetList.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0"?>
+<!-- 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/.
+-->
+
+<bindings id="charsetListBinding"
+          xmlns="http://www.mozilla.org/xbl"
+          xmlns:xbl="http://www.mozilla.org/xbl"
+          xmlns:html="http://www.w3.org/1999/xhtml"
+          xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+  <binding id="charsetpicker"
+           extends="chrome://global/content/bindings/menulist.xml#menulist">
+    <implementation>
+      <constructor><![CDATA[
+        let charsetValues = "";
+
+        if (this.getAttribute("subset") == "sending")
+          charsetValues = ["UTF-8", "EUC-KR", "gbk", "gb18030", "ISO-2022-JP",
+                           "ISO-8859-1", "ISO-8859-7", "windows-1252"];
+
+        else if (!this.getAttribute("subset")
+                 || this.getAttribute("subset") == "viewing")
+          charsetValues = ["UTF-8", "Big5", "EUC-KR", "gbk", "ISO-2022-JP",
+                           "ISO-8859-1", "ISO-8859-2", "ISO-8859-7",
+                           "windows-874", "windows-1250", "windows-1251",
+                           "windows-1252", "windows-1255", "windows-1256",
+                           "windows-1257", "windows-1258"];
+
+        Components.utils.import("resource://gre/modules/Services.jsm");
+
+        let charsetBundle = Services.strings.createBundle(
+          "chrome://messenger/locale/charsetTitles.properties");
+        let aMenuList = this;
+        let menuLabels = [];
+
+        charsetValues.forEach(function(item) {
+          let strCharset = charsetBundle.GetStringFromName(
+            item.toLowerCase() + ".title");
+
+          menuLabels.push({label: strCharset, value: item});
+        });
+
+        menuLabels.sort(function(a, b) {
+          if (a.value == "UTF-8" || a.label < b.label)
+            return -1;
+          else if (b.value == "UTF-8" || a.label > b.label)
+            return 1;
+          return 0;
+        });
+
+        menuLabels.forEach(function(item) {
+          aMenuList.appendItem(item.label, item.value);
+        });
+
+        // Selecting appropiate menu item corresponding to preference stored
+        // value.
+        if (this.hasAttribute("preference")) {
+          const Ci = Components.interfaces;
+
+          let preference = Services.prefs.getComplexValue(
+            this.getAttribute("preference"), Ci.nsIPrefLocalizedString);
+          this.value = preference.data;
+        }
+     ]]></constructor>
+    </implementation>
+  </binding>
+</bindings>
--- a/mailnews/base/content/folderProps.js
+++ b/mailnews/base/content/folderProps.js
@@ -232,17 +232,16 @@ function folderPropsOnLoad()
     else {
       if(serverType == "imap" || serverType == "pop3")
         document.getElementById("offline.selectForOfflineFolder").checked = false;
 
       if(serverType == "nntp")
         document.getElementById("offline.selectForOfflineNewsgroup").checked = false;
     }
 
-    createCharsetMenu();
     // select the menu item
     var folderCharsetList = document.getElementById("folderCharsetList");
     folderCharsetList.value = gMsgFolder.charset;
 
     // set override checkbox
     document.getElementById("folderCharsetOverride").checked = gMsgFolder.charsetOverride;
 
     // set check for new mail checkbox
@@ -293,61 +292,16 @@ function folderPropsOnLoad()
         document.getElementById(window.arguments[0].tabID);
     }
     catch (ex) {}
   }
   onCheckKeepMsg();
   onUseDefaultRetentionSettings();
 }
 
-function createCharsetMenu()
-{
-  var menuStrings = ["UTF-8", "Big5", "EUC-KR", "gbk", "ISO-2022-JP",
-                     "ISO-8859-1", "ISO-8859-2", "ISO-8859-7", "windows-874",
-                     "windows-1250", "windows-1251", "windows-1252",
-                     "windows-1255", "windows-1256", "windows-1257",
-                     "windows-1258"];
-
-  var menuList = document.getElementById("folderCharsetList");
-
-  this.populateCharsetMenu(menuList,
-                           this.sortCharsetLabels(menuStrings));
-}
-
-function populateCharsetMenu(aMenuList, aMenuStrings)
-{
-  aMenuStrings.forEach(function(item) {
-    aMenuList.appendItem(item.label, item.value);
-  });
-}
-
-function sortCharsetLabels(aMenuStrings)
-{
-  var menuLabels = [];
-  var charsetBundle = Services.strings.createBundle(
-    "chrome://messenger/locale/charsetTitles.properties");
-
-  aMenuStrings.forEach(function(item) {
-    var strCharset = charsetBundle.GetStringFromName(
-      item.toLowerCase() + ".title");
-
-    menuLabels.push({label: strCharset, value: item});
-  });
-
-  menuLabels.sort(function(a, b) {
-    if (a.value == "UTF-8" || a.label < b.label)
-      return -1;
-    if (b == "UTF-8" || a.label > b.label)
-      return 1;
-    return 0;
-  });
-
-  return menuLabels;
-}
-
 function hideShowControls(serverType)
 {
   let controls = document.querySelectorAll("[hidefor]");
   var len = controls.length;
   for (var i=0; i<len; i++) {
     var control = controls[i];
     var hideFor = control.getAttribute("hidefor");
     if (!hideFor)
--- a/mailnews/base/content/folderProps.xul
+++ b/mailnews/base/content/folderProps.xul
@@ -2,16 +2,17 @@
 <!--
 
  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/. -->
 
 <?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?>
 <?xml-stylesheet href="chrome://messenger/skin/preferences/preferences.css" type="text/css"?>
+<?xml-stylesheet href="chrome://messenger/content/charsetList.css" type="text/css"?>
 
 <!DOCTYPE dialog SYSTEM "chrome://messenger/locale/folderProps.dtd">
 
 <dialog
   id="folderPropertiesDialog"
   xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
   title="&folderProps.windowtitle.label;"
   buttons="accept,cancel"
@@ -68,17 +69,17 @@
                 id="folderCheckForNewMessages"
                 label="&folderCheckForNewMessages2.label;"
                 accesskey="&folderCheckForNewMessages2.accesskey;"/>
       <vbox>
         <hbox align="center" valign="middle">
           <label value="&folderCharsetFallback.label;"
                  accesskey="&folderCharsetFallback.accesskey;"
                  control="folderCharsetList"/>
-          <menulist id="folderCharsetList"/>
+          <menulist id="folderCharsetList" type="charset"/>
         </hbox>
         <checkbox class="indent" id="folderCharsetOverride"
                   label="&folderCharsetEnforce.label;"
                   accesskey="&folderCharsetEnforce.accesskey;"/>
       </vbox>
       <groupbox id="folderRebuildSummaryGroupBox" align="baseline">
         <grid>
           <columns>
--- a/mailnews/base/prefs/content/am-server.js
+++ b/mailnews/base/prefs/content/am-server.js
@@ -4,28 +4,26 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 Components.utils.import("resource:///modules/iteratorUtils.jsm");
 Components.utils.import("resource:///modules/MailUtils.js");
 Components.utils.import("resource://gre/modules/Services.jsm");
 
 var gServer;
 
-function onInit(aPageId, aServerId) 
+function onInit(aPageId, aServerId)
 {
   initServerType();
 
   onCheckItem("server.biffMinutes", ["server.doBiff"]);
   onCheckItem("nntp.maxArticles", ["nntp.notifyOn"]);
   setupMailOnServerUI();
   setupFixedUI();
   if (document.getElementById("server.type").getAttribute("value") == "imap")
     setupImapDeleteUI(aServerId);
-  else if (document.getElementById("server.type").getAttribute("value") == "nntp")
-    createCharsetDefaultMenu();
 
   // "STARTTLS, if available" is vulnerable to MITM attacks so we shouldn't
   // allow users to choose it anymore. Hide the option unless the user already
   // has it set.
   hideUnlessSelected(document.getElementById("connectionSecurityType-1"));
 }
 
 function onPreInit(account, accountValues)
@@ -79,20 +77,20 @@ function hideUnlessSelected(element)
 }
 
 function setLabelFromStringBundle(elementID, stringName)
 {
   document.getElementById(elementID).label =
       document.getElementById("bundle_messenger").getString(stringName);
 }
 
-function setDivText(divname, value) 
+function setDivText(divname, value)
 {
   var div = document.getElementById(divname);
-  if (!div) 
+  if (!div)
     return;
   div.setAttribute("value", value);
 }
 
 
 function onAdvanced()
 {
   // Store the server type and, if an IMAP or POP3 server,
@@ -236,38 +234,38 @@ function setupAgeMsgOnServerUI()
   const kDeleteByAgeId = "pop3.deleteByAgeFromServer";
   onCheckItem(kDeleteByAgeId, [kLeaveMsgsId]);
   onCheckItem("daysEnd", [kLeaveMsgsId]);
   onCheckItem("pop3.numDaysToLeaveOnServer", [kLeaveMsgsId, kDeleteByAgeId]);
 }
 
 function setupFixedUI()
 {
-  var controls = [document.getElementById("fixedServerName"), 
+  var controls = [document.getElementById("fixedServerName"),
                   document.getElementById("fixedUserName"),
                   document.getElementById("fixedServerPort")];
 
-  var len = controls.length;  
+  var len = controls.length;
   for (var i=0; i<len; i++) {
     var fixedElement = controls[i];
     var otherElement = document.getElementById(fixedElement.getAttribute("use"));
 
     fixedElement.setAttribute("collapsed", "true");
     otherElement.removeAttribute("collapsed");
   }
 }
 
 function BrowseForNewsrc()
 {
   const nsIFilePicker = Components.interfaces.nsIFilePicker;
   const nsILocalFile = Components.interfaces.nsILocalFile;
 
   var newsrcTextBox = document.getElementById("nntp.newsrcFilePath");
   var fp = Components.classes["@mozilla.org/filepicker;1"].createInstance(nsIFilePicker);
-  fp.init(window, 
+  fp.init(window,
           document.getElementById("browseForNewsrc").getAttribute("filepickertitle"),
           nsIFilePicker.modeSave);
 
   var currentNewsrcFile;
   try {
     currentNewsrcFile = Components.classes["@mozilla.org/file/local;1"]
                                   .createInstance(nsILocalFile);
     currentNewsrcFile.initWithPath(newsrcTextBox.value);
@@ -317,17 +315,17 @@ function selectImapDeleteModel(choice)
   // set deleteModel to selected mode
   document.getElementById("imap.deleteModel").setAttribute("value", choice);
 
   switch (choice)
   {
     case "0" : // markDeleted
       // disable folderPicker
       document.getElementById("msgTrashFolderPicker").setAttribute("disabled", "true");
-      break;  
+      break;
     case "1" : // moveToTrashFolder
       // enable folderPicker
       document.getElementById("msgTrashFolderPicker").removeAttribute("disabled");
       break;
     case "2" : // deleteImmediately
       // disable folderPicker
       document.getElementById("msgTrashFolderPicker").setAttribute("disabled", "true");
       break;
@@ -371,58 +369,8 @@ function getTrashFolderName()
   var trashFolderName = document.getElementById("imap.trashFolderName").getAttribute("value");
   // if the preference hasn't been set, set it to a sane default
   if (!trashFolderName) {
     trashFolderName = "Trash";
     document.getElementById("imap.trashFolderName").setAttribute("value",trashFolderName);
   }
   return trashFolderName;
 }
-
-function createCharsetDefaultMenu()
-{
-  var nntpCharsetsValues = ["UTF-8", "Big5", "EUC-KR", "gbk", "ISO-2022-JP",
-                            "ISO-8859-1", "ISO-8859-2", "ISO-8859-7",
-                            "windows-874", "windows-1250", "windows-1251",
-                            "windows-1252", "windows-1255", "windows-1256",
-                            "windows-1257", "windows-1258"];
-
-  var charsetMenuList = document.getElementById("nntp.charset");
-
-  this.populateCharsetMenu(charsetMenuList,
-                           this.sortCharsetLabels(nntpCharsetsValues));
-
-  // Select appropiate menu item.
-  var preference = substPrefTokens(
-    charsetMenuList.getAttribute("prefstring"), charsetMenuList);
-  charsetMenuList.value = Services.prefs.getCharPref(preference);
-}
-
-function sortCharsetLabels(aMenuStrings)
-{
-  var menuLabels = [];
-  var charsetBundle = Services.strings.createBundle(
-    "chrome://messenger/locale/charsetTitles.properties");
-
-  aMenuStrings.forEach(function(item) {
-    var strCharset = charsetBundle.GetStringFromName(
-      item.toLowerCase() + ".title");
-
-    menuLabels.push({label: strCharset, value: item});
-  });
-
-  menuLabels.sort(function(a, b) {
-    if (a.value == "UTF-8" || a.label < b.label)
-      return -1;
-    if (b == "UTF-8" || a.label > b.label)
-      return 1;
-    return 0;
-  });
-
-  return menuLabels;
-}
-
-function populateCharsetMenu(aMenuList, aMenuStrings)
-{
-  aMenuStrings.forEach(function(item) {
-    aMenuList.appendItem(item.label, item.value);
-  });
-}
--- a/mailnews/base/prefs/content/am-server.xul
+++ b/mailnews/base/prefs/content/am-server.xul
@@ -4,16 +4,17 @@
 
  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/. -->
 
 <?xml-stylesheet href="chrome://messenger/skin/accountManage.css" type="text/css"?>
 <?xml-stylesheet href="chrome://messenger/skin/messenger.css" type="text/css"?>
 <?xml-stylesheet href="chrome://messenger/skin/folderMenus.css" type="text/css"?>
+<?xml-stylesheet href="chrome://messenger/content/charsetList.css" type="text/css"?>
 
 <!DOCTYPE page [
 <!ENTITY % trashDTD SYSTEM "chrome://messenger/locale/am-server-top.dtd">
 %trashDTD;
 ]>
 
 <page xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
       title="&serverSettings.label;"
@@ -413,16 +414,17 @@
 
     </groupbox>
 
     <separator class="thin"/>
 
     <hbox hidefor="imap,pop3,movemail" align="center" valign="middle" iscontrolcontainer="true">
       <label value="&serverDefaultCharset.label;" control="nntp.charset"/>
       <menulist hidable="true"
+                type="charset"
                 hidefor="imap,pop3,movemail"
                 wsm_persist="true"
                 id="nntp.charset"
                 preftype="string"
                 prefstring="mail.server.%serverkey%.charset"/>
     </hbox>
   </vbox>
 </page>
--- a/mailnews/jar.mn
+++ b/mailnews/jar.mn
@@ -77,16 +77,18 @@ messenger.jar:
     content/messenger/accountcreation/util.js                                  (base/prefs/content/accountcreation/util.js)
     content/messenger/accountcreation/verifyConfig.js                          (base/prefs/content/accountcreation/verifyConfig.js)
 #endif
     content/messenger/msgSynchronize.xul                                       (base/content/msgSynchronize.xul)
     content/messenger/msgSynchronize.js                                        (base/content/msgSynchronize.js)
     content/messenger/folderProps.xul                                          (base/content/folderProps.xul)
     content/messenger/folderProps.js                                           (base/content/folderProps.js)
     content/messenger/folderWidgets.xml                                        (base/content/folderWidgets.xml)
+    content/messenger/charsetList.xml                                          (base/content/charsetList.xml)
+    content/messenger/charsetList.css                                          (base/content/charsetList.css)
     content/messenger/retention.js                                             (base/content/retention.js)
     content/messenger/shareglue.js                                             (base/content/shareglue.js)
     content/messenger/newFolderDialog.xul                                      (base/content/newFolderDialog.xul)
     content/messenger/newFolderDialog.js                                       (base/content/newFolderDialog.js)
 *   content/messenger/msgAccountCentral.xul                                    (base/content/msgAccountCentral.xul)
     content/messenger/msgAccountCentral.js                                     (base/content/msgAccountCentral.js)
     content/messenger/msgFolderPickerOverlay.js                                (base/content/msgFolderPickerOverlay.js)
     content/messenger/renameFolderDialog.xul                                   (base/content/renameFolderDialog.xul)