Bug 1463266 - fix typos in comm-central using codespell. rs=comment-only,typo-fix a=jorgk CLOSED TREE
authorJorg K <jorgk@jorgk.com>
Mon, 21 Oct 2019 23:07:47 +0200
changeset 37206 f72d9fcf281ea6f25557e6be94e63151d311fb5c
parent 37205 67169a45614459f525f9e2ed1e97583f6a639ba7
child 37207 1f79b263bbbb5adb59effdb52a517646a33ff41a
push id395
push userclokep@gmail.com
push dateMon, 02 Dec 2019 19:38:57 +0000
reviewerscomment-only, typo-fix, jorgk
bugs1463266
Bug 1463266 - fix typos in comm-central using codespell. rs=comment-only,typo-fix a=jorgk CLOSED TREE
.clang-format
.taskcluster.yml
build/macosx/hardenedruntime/developer.entitlements.xml
build/macosx/hardenedruntime/production.entitlements.xml
calendar/base/content/calendar-event-gripbar.js
calendar/base/content/calendar-multiday-base-view.js
calendar/base/content/dialogs/calendar-event-dialog-attendees-custom-elements.js
calendar/base/content/widgets/calendar-modebox.js
chat/content/otr/otr.ftl
chat/modules/OTR.jsm
common/src/viewSource.js
mail/components/customizableui/CustomizableUI.jsm
mail/components/customizableui/CustomizeMode.jsm
mail/components/customizableui/PanelMultiView.jsm
mail/components/enterprisepolicies/Policies.jsm
mail/components/enterprisepolicies/tests/browser/disable_app_update/browser_policy_disable_app_update.js
mail/components/extensions/parent/ext-mail.js
mail/components/extensions/schemas/chrome_settings_overrides.json
mail/extensions/mailviews/content/msgViewPickerOverlay.js
mail/test/mozmill/content-tabs/test-content-tab.js
mail/test/mozmill/shared-modules/WindowHelpers.jsm
mailnews/addrbook/content/map-list.js
mailnews/base/content/msgSynchronize.js
mailnews/base/util/nsMsgDBFolder.cpp
mailnews/base/util/nsMsgUtils.cpp
mailnews/compose/content/askSendFormat.js
mailnews/extensions/newsblog/content/FeedUtils.jsm
mailnews/extensions/newsblog/test/unit/test_rdfmigration.js
mailnews/imap/src/nsImapServerResponseParser.cpp
mailnews/mime/jsmime/jsmime.js
mailnews/mime/src/comi18n.cpp
mailnews/mime/test/unit/test_smime_decrypt.js
taskcluster/comm_taskgraph/manifests/thunderbird_candidates.yml
taskcluster/comm_taskgraph/manifests/thunderbird_candidates_checksums.yml
taskcluster/comm_taskgraph/manifests/thunderbird_nightly.yml
--- a/.clang-format
+++ b/.clang-format
@@ -29,15 +29,15 @@ StatementMacros: [MARKUPMAP, ASSERT_TRUE
 
 # The Google coding style states:
 # You should do this consistently within a single file, so, when modifying an
 # existing file, use the style in that file.
 # Let's be more prescriptive and default to the one used in the Mozilla
 # coding style
 
 # Note that for the time being, we differ from the mozilla-central settings
-# and use derivative pointer alignment since right aligment is prevalent in
+# and use derivative pointer alignment since right alignment is prevalent in
 # comm-central. Exceptions with left alignment are, amongst others:
 # db/ (Mork), mailnews/intl and mailnews/jsaccount.
 # We will decide later whether to make the pointer style consistent or not.
 # DerivePointerAlignment: false
 # PointerAlignment: Left
 DerivePointerAlignment: true
--- a/.taskcluster.yml
+++ b/.taskcluster.yml
@@ -41,18 +41,18 @@
 #   installs that as the hook task template.
 #
 #   {
 #     tasks_for: 'action',
 #     push: {owner, pushlog_id, revision},
 #     repository: {url, project, level},
 #     input,
 #     parameters,
-#     taskId,      // targetted taskId
-#     taskGroupId, // targetted taskGroupId
+#     taskId,      // targeted taskId
+#     taskGroupId, // targeted taskGroupId
 #     action: {name, title, description, taskGroupId, symbol, repo_scope, cb_name}
 #     ownTaskId:   // taskId of the task that will be created
 #   }
 
 version: 1
 
 tasks:
   - $let:
--- a/build/macosx/hardenedruntime/developer.entitlements.xml
+++ b/build/macosx/hardenedruntime/developer.entitlements.xml
@@ -23,17 +23,17 @@
 
     <!-- Code paged in from disk should match the signature at page-in time -->
     <key>com.apple.security.cs.disable-executable-page-protection</key><false/>
 
     <!-- Allow loading third party libraries. Possibly needed by some legacy extensions. -->
     <key>com.apple.security.cs.disable-library-validation</key><true/>
 
     <!-- Allow dyld environment variables. Needed because Thunderbird uses
-         dyld variables to load libaries from within the .app bundle. -->
+         dyld variables to load libraries from within the .app bundle. -->
     <key>com.apple.security.cs.allow-dyld-environment-variables</key><true/>
 
     <!-- Allow debuggers to attach to running executables -->
     <key>com.apple.security.get-task-allow</key><true/>
 
     <!-- Thunderbird needs to access the microphone on sites the user allows -->
     <key>com.apple.security.device.audio-input</key><true/>
 
--- a/build/macosx/hardenedruntime/production.entitlements.xml
+++ b/build/macosx/hardenedruntime/production.entitlements.xml
@@ -20,17 +20,17 @@
 
     <!-- Code paged in from disk should match the signature at page in-time -->
     <key>com.apple.security.cs.disable-executable-page-protection</key><false/>
 
     <!-- Allow loading third party libraries. Possibly needed by some legacy extensions.  -->
     <key>com.apple.security.cs.disable-library-validation</key><true/>
 
     <!-- Allow dyld environment variables. Needed because Thunderbird uses
-         dyld variables to load libaries from within the .app bundle. -->
+         dyld variables to load libraries from within the .app bundle. -->
     <key>com.apple.security.cs.allow-dyld-environment-variables</key><true/>
 
     <!-- Don't allow debugging of the executable. Debuggers will be prevented
          from attaching to running executables. Notarization does not permit
          access to get-task-allow (as documented by Apple) so this must be
          disabled on notarized builds. -->
     <key>com.apple.security.get-task-allow</key><false/>
 
--- a/calendar/base/content/calendar-event-gripbar.js
+++ b/calendar/base/content/calendar-event-gripbar.js
@@ -31,17 +31,17 @@
         // appropriate action.
         event.whichside = this.getAttribute("whichside");
       });
 
       this.addEventListener("click", event => {
         if (event.button != 0) {
           return;
         }
-        // parent event-column has event listner for click so
+        // parent event-column has event listener for click so
         // stopPropagation() is called.
         event.stopPropagation();
       });
     }
 
     connectedCallback() {
       this._image = document.createXULElement("image");
       this._image.setAttribute("pack", "center");
--- a/calendar/base/content/calendar-multiday-base-view.js
+++ b/calendar/base/content/calendar-multiday-base-view.js
@@ -965,17 +965,17 @@
 
       const displayDuration = highMinute - lowMinute;
       if (this.mSelectedItems.length && displayDuration >= 0) {
         let minute;
         if (displayDuration <= this.mVisibleMinutes) {
           minute = lowMinute + (displayDuration - this.mVisibleMinutes) / 2;
         } else if (this.mSelectedItems.length == 1) {
           // If the displayDuration doesn't fit into the visible minutes, but
-          // ony one event is selected, then go ahead and center the event start.
+          // only one event is selected, then go ahead and center the event start.
 
           minute = Math.max(0, lowMinute - this.mVisibleMinutes / 2);
         }
         this.scrollToMinute(minute);
       }
     }
 
     zoomIn(level) {
--- a/calendar/base/content/dialogs/calendar-event-dialog-attendees-custom-elements.js
+++ b/calendar/base/content/dialogs/calendar-event-dialog-attendees-custom-elements.js
@@ -242,17 +242,17 @@
         this.mEndHour = Services.prefs.getIntPref("calendar.view.dayendhour", 19);
       }
     }
   }
   customElements.define("calendar-event-freebusy-timebar", MozCalendarEventFreebusyTimebar);
 
   /**
    * MozCalendarEventAttendeesList is a widget allowing adding and removing of attendees of an event.
-   * It shows if attendee if required or optional, the attendee status, type and adddress.
+   * It shows if attendee if required or optional, the attendee status, type and address.
    * It is typically found in the Invite Attendees dialog.
    *
    * @extends {MozElements.RichListBox}
    */
   class MozCalendarEventAttendeesList extends MozElements.RichListBox {
     constructor() {
       super();
 
@@ -585,17 +585,17 @@
         let lastInput = this.getInputElement(this.mMaxAttendees);
         if (lastInput && lastInput.value) {
           this.appendNewRow(true);
         }
       }
     }
 
     /**
-     * This trigger the continous update chain, which effectively calls this.onModify() on
+     * This trigger the continuous update chain, which effectively calls this.onModify() on
      * predefined time intervals [each second].
      */
     init() {
       let callback = () => {
         setTimeout(callback, 1000);
         this.onModify();
       };
       callback();
@@ -1090,17 +1090,17 @@
         if (kids[i].hasAttribute("_isDummyRow")) {
           return kids[i];
         }
       }
       return null;
     }
 
     /**
-     * Returns richlistitem at row numer `row`.
+     * Returns richlistitem at row number `row`.
      *
      * @returns {Element}       richlistitem
      */
     getListItem(row) {
       return this.getElementsByTagName("richlistitem")[row - 1];
     }
 
     /**
@@ -1184,17 +1184,17 @@
       let listItem = this.getListItem(row);
       if (listItem) {
         return listItem.querySelector(".usertype-icon");
       }
       return null;
     }
 
     /**
-     * Sets foucs on the input element in the row `row`.
+     * Sets focus on the input element in the row `row`.
      *
      * @param {Element|Number} row      Row number or row
      */
     setFocus(row) {
       // See https://stackoverflow.com/questions/779379/why-is-settimeoutfn-0-sometimes-useful to
       // know why setTimeout is helpful here.
       setTimeout(() => {
         let node;
@@ -3013,18 +3013,18 @@
 
       // Special case for allday events - if the original datetime was indeed a date we need to
       // carry this state over to the calculated datetime.
       if (this.mStartDate.isDate) {
         startTime.isDate = true;
       }
 
       // In case the new starttime happens to be scheduled on a different day, we also need to
-      // update the complete freebusy informations and appropriate underlying arrays holding the
-      // informaion.
+      // update the complete freebusy information and appropriate underlying arrays holding the
+      // information.
       if (this.mStartDate.day != startTime.day) {
         for (let i = 1; i <= this.mMaxFreeBusy; i++) {
           let fbelem = this.getFreeBusyElement(i);
           fbelem.setAttribute("dirty", "true");
         }
         this.updateFreeBusy();
       }
 
--- a/calendar/base/content/widgets/calendar-modebox.js
+++ b/calendar/base/content/widgets/calendar-modebox.js
@@ -112,17 +112,17 @@
         return "";
       }
       let attributeValues = this.getAttribute(attributeName).split(",");
       let modes = this.getAttribute("mode").split(",");
       return attributeValues[modes.indexOf(mode)];
     }
 
     /**
-     * Sets the visiblity (collapsed state) of this modebox and (optionally) updates the
+     * Sets the visibility (collapsed state) of this modebox and (optionally) updates the
      * `collapsedinmode` attribute and (optionally) notifies the `refcontrol`.
      *
      * @param {boolean} visible  Whether the modebox should become visible or not.
      * @param {boolean} [toPushModeCollapsedAttribute=true]  Whether to push the current mode
      *                                                       to `collapsedinmodes` attribute.
      * @param {boolean} [toNotifyRefControl=true]  Whether to notify the `refcontrol`.
      */
     setVisible(visible, toPushModeCollapsedAttribute = true, toNotifyRefControl = true) {
--- a/chat/content/otr/otr.ftl
+++ b/chat/content/otr/otr.ftl
@@ -10,17 +10,17 @@ msgevent-encryption_required_part2 = Att
 msgevent-encryption_error = An error occurred when encrypting your message. The message was not sent.
 
 # Variables:
 #   $name (String) - the screen name of a chat contact person
 msgevent-connection_ended = { $name } has already closed their encrypted connection to you. To avoid that you accidentally send a message without encryption, your message was not sent. Please end your encrypted conversation, or restart it.
 
 # Variables:
 #   $name (String) - the screen name of a chat contact person
-msgevent-setup_error = An error occured while setting up a private conversation with { $name }.
+msgevent-setup_error = An error occurred while setting up a private conversation with { $name }.
 
 # Do not translate 'OTR' (name of an encryption protocol)
 msgevent-msg_reflected = You are receiving your own OTR messages. You are either trying to talk to yourself, or someone is reflecting your messages back at you.
 
 # Variables:
 #   $name (String) - the screen name of a chat contact person
 msgevent-msg_resent = The last message to { $name } was resent.
 
--- a/chat/modules/OTR.jsm
+++ b/chat/modules/OTR.jsm
@@ -620,17 +620,17 @@ var OTR = {
       conv.account.normalizedName,
       req ? OTRLib.OTRL_POLICY_ALWAYS : OTRLib.OTRL_POLICY_OPPORTUNISTIC
     );
     if (query.isNull()) {
       Cu.reportError(new Error("Sending query message failed."));
       return;
     }
     // Use the default msg to format the version.
-    // We don't supprt v1 of the protocol so this should be fine.
+    // We don't support v1 of the protocol so this should be fine.
     let queryMsg = /^\?OTR.*?\?/.exec(query.readString())[0] + "\n";
     // Avoid sending any numbers in the query message, because receiving
     // software could misinterpret it as a protocol version.
     // See https://bugzilla.mozilla.org/show_bug.cgi?id=1536108
     let noNumbersName = conv.account.normalizedName.replace(/[0-9]/g, "#");
     queryMsg += _strArgs("query-msg", { name: noNumbersName });
     conv.sendMsg(queryMsg);
     OTRLib.otrl_message_free(query);
--- a/common/src/viewSource.js
+++ b/common/src/viewSource.js
@@ -458,17 +458,17 @@ ViewSourceChrome.prototype = {
    * change the selected character set.
    *
    * @param event
    *        The click event on a character set menuitem.
    */
   onSetCharacterSet(event) {
     if (event.target.hasAttribute("charset")) {
       let charset = event.target.getAttribute("charset");
-      // Replace generic Japanses with Shift_JIS which will also auto-detect
+      // Replace generic Japanese with Shift_JIS which will also auto-detect
       // ISO-2022-JP and EUC-JP.
       if (charset == "Japanese") {
         charset = "Shift_JIS";
       }
       this.browser.docShell.charset = charset;
       this.browser.reloadWithFlags(
         Ci.nsIWebNavigation.LOAD_FLAGS_CHARSET_CHANGE
       );
--- a/mail/components/customizableui/CustomizableUI.jsm
+++ b/mail/components/customizableui/CustomizableUI.jsm
@@ -2129,17 +2129,17 @@ var CustomizableUIInternal = {
     let isWindowPrivate = PrivateBrowsingUtils.isWindowPrivate(window);
     // We use a Set because there can be overlap between the widgets in
     // gPalette and the items in the palette, especially after the first
     // customization, since programmatically generated widgets will remain
     // in the toolbox palette.
     let widgets = new Set();
 
     // It's possible that some widgets have been defined programmatically and
-    // have not been overlayed into the palette. We can find those inside
+    // have not been overlaid into the palette. We can find those inside
     // gPalette.
     for (let [id, widget] of gPalette) {
       if (!widget.currentArea) {
         if (widget.showInPrivateBrowsing || !isWindowPrivate) {
           widgets.add(id);
         }
       }
     }
@@ -4417,17 +4417,17 @@ var CustomizableUI = {
         continue;
       }
       for (let attr of attrs) {
         let attrVal = menuChild.getAttribute(attr);
         if (attrVal) {
           subviewItem.setAttribute(attr, attrVal);
         }
       }
-      // We do this after so the .subviewbutton class doesn't get overriden.
+      // We do this after so the .subviewbutton class doesn't get overridden.
       if (menuChild.localName == "menuitem") {
         subviewItem.classList.add("subviewbutton");
       }
       fragment.appendChild(subviewItem);
     }
     aSubview.appendChild(fragment);
   },
 
--- a/mail/components/customizableui/CustomizeMode.jsm
+++ b/mail/components/customizableui/CustomizeMode.jsm
@@ -133,17 +133,17 @@ function CustomizeMode(aWindow) {
   if (!content) {
     this.window.MozXULElement.insertFTLIfNeeded("browser/customizeMode.ftl");
     let container = this.$("customization-container");
     container.replaceChild(
       this.window.MozXULElement.parseXULToFragment(container.firstChild.data),
       container.lastChild
     );
   }
-  // There are two palettes - there's the palette that can be overlayed with
+  // There are two palettes - there's the palette that can be overlaid with
   // toolbar items in browser.xhtml. This is invisible, and never seen by the
   // user. Then there's the visible palette, which gets populated and displayed
   // to the user when in customizing mode.
   this.visiblePalette = this.$(kPaletteId);
   this.pongArena = this.$("customization-pong-arena");
 
   if (this._canDrawInTitlebar()) {
     this._updateTitlebarCheckbox();
@@ -1359,17 +1359,17 @@ CustomizeMode.prototype = {
     let win = this.window;
     let gUIDensity = win.gUIDensity;
     let currentDensity = gUIDensity.getCurrentDensity();
     let panel = win.document.getElementById("customization-uidensity-menu");
 
     Services.prefs.setIntPref(gUIDensity.uiDensityPref, mode);
 
     // If the user is choosing a different UI density mode while
-    // the mode is overriden to Touch, remove the override.
+    // the mode is overridden to Touch, remove the override.
     if (currentDensity.overridden) {
       Services.prefs.setBoolPref(gUIDensity.autoTouchModePref, false);
     }
 
     this._onUIChange();
     panel.hidePopup();
   },
 
--- a/mail/components/customizableui/PanelMultiView.jsm
+++ b/mail/components/customizableui/PanelMultiView.jsm
@@ -41,17 +41,17 @@
  * -- Visible or invisible
  *
  *    This indicates whether the view is visible in the document from a layout
  *    perspective, regardless of whether it is currently scrolled into view. In
  *    fact, all subviews are already visible before they start sliding in.
  *
  *    Before scrolling into view, a view may become visible but be placed in a
  *    special off-screen area of the document where layout and measurements can
- *    take place asyncronously.
+ *    take place asynchronously.
  *
  *    When navigating forward, an open view may become invisible but stay open
  *    after sliding out of view. The last known size of these views is still
  *    taken into account for determining the overall panel size.
  *
  *    When navigating backwards, an open subview will first become invisible and
  *    then will be closed.
  *
--- a/mail/components/enterprisepolicies/Policies.jsm
+++ b/mail/components/enterprisepolicies/Policies.jsm
@@ -530,17 +530,17 @@ function addAllowDenyPermissions(permiss
 
 /**
  * runOnce
  *
  * Helper function to run a callback only once per policy.
  *
  * @param {string} actionName
  *        A given name which will be used to track if this callback has run.
- * @param {Functon} callback
+ * @param {Function} callback
  *        The callback to run only once.
  */
 // eslint-disable-next-line no-unused-vars
 function runOnce(actionName, callback) {
   let prefName = `browser.policies.runonce.${actionName}`;
   if (Services.prefs.getBoolPref(prefName, false)) {
     log.debug(
       `Not running action ${actionName} again because it has already run.`
--- a/mail/components/enterprisepolicies/tests/browser/disable_app_update/browser_policy_disable_app_update.js
+++ b/mail/components/enterprisepolicies/tests/browser/disable_app_update/browser_policy_disable_app_update.js
@@ -42,17 +42,17 @@ add_task(async function test_update_pref
     });
   }
   await new Promise(resolve => setTimeout(resolve));
 
   let updateRadioGroup = prefsDocument.getElementById("updateRadioGroup");
   is(
     updateRadioGroup.hidden,
     true,
-    "Update choices should be diabled when app update is locked by policy"
+    "Update choices should be disabled when app update is locked by policy"
   );
 
   tabmail.closeTab(prefsTabMode.tabs[0]);
 });
 
 add_task(async function test_update_about_ui() {
   let aboutDialog = await waitForAboutDialog();
   let panelId = "policyDisabled";
--- a/mail/components/extensions/parent/ext-mail.js
+++ b/mail/components/extensions/parent/ext-mail.js
@@ -54,17 +54,17 @@ XPCOMUtils.defineLazyModuleGetters(this,
   // points to a moz-extension:// page exposed via web_accessible_content
   ExtensionContent.initExtensionContext = function(extension, window) {
     let context = extension.getContext(window);
     Schemas.exportLazyGetter(window, "messenger", () => context.chromeObj);
 
     return initExtensionContext.apply(ExtensionContent, arguments);
   };
 
-  // This patches priviledged pages such as the background script
+  // This patches privileged pages such as the background script
   ExtensionPageChild.initExtensionContext = function(extension, window) {
     let retval = initPageChildExtensionContext.apply(
       ExtensionPageChild,
       arguments
     );
 
     let windowId = getInnerWindowID(window);
     let context = ExtensionPageChild.extensionContexts.get(windowId);
--- a/mail/components/extensions/schemas/chrome_settings_overrides.json
+++ b/mail/components/extensions/schemas/chrome_settings_overrides.json
@@ -138,33 +138,33 @@
                           "type": "string",
                           "optional": true,
                           "enum": ["purpose", "pref"],
                           "description": "The type of param can be either \"purpose\" or \"pref\"."
                         },
                         "pref": {
                           "type": "string",
                           "optional": true,
-                          "description": "The preference to retreive the value from."
+                          "description": "The preference to retrieve the value from."
                         },
                         "purpose": {
                           "type": "string",
                           "optional": true,
                           "enum": ["contextmenu", "searchbar", "homepage", "keyword", "newtab"],
                           "description": "The context that initiates a search, required if condition is \"purpose\"."
                         },
                         "value": {
                           "type": "string",
                           "optional": true,
                           "description": "A url parameter value.",
                           "preprocess": "localize"
                         }
                       }
                     },
-                    "description": "A list of optional search url parameters. This allows the additon of search url parameters based on how the search is performed in Thunderbird."
+                    "description": "A list of optional search url parameters. This allows the addition of search url parameters based on how the search is performed in Thunderbird."
                   }
                 }
               }
             }
           }
         }
       }
     ]
--- a/mail/extensions/mailviews/content/msgViewPickerOverlay.js
+++ b/mail/extensions/mailviews/content/msgViewPickerOverlay.js
@@ -202,17 +202,17 @@ function RefreshViewPopup(viewPopup) {
     }
   }
 }
 
 /**
  * Refresh the contents of the custom views popup menu/panel.
  * Used for example for appmenu/View/Messages/CustomViews panel.
  *
- * @param {Element} parent        Parent element that will recieve the menu items.
+ * @param {Element} parent        Parent element that will receive the menu items.
  * @param {string} [elementName]  Type of menu items to create (e.g. "menuitem", "toolbarbutton").
  * @param {string} [classes]      Classes to set on the menu items.
  */
 function RefreshCustomViewsPopup(parent, elementName = "menuitem", classes) {
   if (!gMailViewList) {
     gMailViewList = Cc["@mozilla.org/messenger/mailviewlist;1"].getService(
       Ci.nsIMsgMailViewList
     );
@@ -244,17 +244,17 @@ function RefreshCustomViewsPopup(parent,
     parent.appendChild(item);
   }
 }
 
 /**
  * Refresh the contents of the tags popup menu/panel. For example, used for
  * appmenu/View/Messages/Tags.
  *
- * @param {Element} parent        Parent element that will recieve the menu items.
+ * @param {Element} parent        Parent element that will receive the menu items.
  * @param {string} [elementName]  Type of menu items to create (e.g. "menuitem", "toolbarbutton").
  * @param {string} [classes]      Classes to set on the menu items.
  */
 function RefreshTagsPopup(parent, elementName = "menuitem", classes) {
   // Remove all pre-existing menu items.
   while (parent.hasChildNodes()) {
     parent.lastChild.remove();
   }
--- a/mail/test/mozmill/content-tabs/test-content-tab.js
+++ b/mail/test/mozmill/content-tabs/test-content-tab.js
@@ -161,17 +161,17 @@ function test_content_tab_context_menu()
   );
   wait_for_popup_to_open(mailContext);
   assert_not_equals(mailContext.firstElementChild.label, "Click me!");
   assert_element_not_visible("page-menu-separator");
   close_popup(mc, new elementslib.Elem(mailContext));
 }
 
 /*
- // We don't have an UI to test openin content tabs twice anymore.
+ // We don't have an UI to test opening content tabs twice anymore.
 function test_content_tab_open_same() {
   let preCount = mc.tabmail.tabContainer.allTabs.length;
 
   mc.click(new elementslib.Elem(mc.menus.helpMenu.whatsNew));
 
   controller.sleep(0);
 
   if (mc.tabmail.tabContainer.allTabs.length != preCount)
--- a/mail/test/mozmill/shared-modules/WindowHelpers.jsm
+++ b/mail/test/mozmill/shared-modules/WindowHelpers.jsm
@@ -1137,17 +1137,17 @@ var AugmentEverybodyWith = {
           5000,
           50
         );
       }
     },
 
     /**
      * Click through the appmenu. Callers are expected to open the initial
-     * appmenu panelview (e.g. by clicking the appmenu buttton). We wait for it
+     * appmenu panelview (e.g. by clicking the appmenu button). We wait for it
      * to open if it is not open yet. Then we use a recursive style approach
      * with a sequence of event listeners handling "ViewShown" events. The
      * `navTargets` parameter specifies items to click to navigate through the
      * menu. The optional `nonNavTarget` parameter specifies a final item to
      * click to perform a command after navigating through the menu. If this
      * argument is omitted, callers can interact with the last view panel that
      * is returned. Callers will then need to close the appmenu when they are
      * done with it.
--- a/mailnews/addrbook/content/map-list.js
+++ b/mailnews/addrbook/content/map-list.js
@@ -38,17 +38,17 @@
     }
 
     get mapURL() {
       return this._createMapItURL();
     }
 
     /**
      * Initializes the necessary address data from an addressbook card.
-     * @param {nsIAbCard} card   - the card to get the addess data from
+     * @param {nsIAbCard} card   - the card to get the address data from
      * @param {string} addPrefix - card property prefix: "Home" or "Work",
      *                             to make the map use either HomeAddress
      *                             or WorkAddress
      */
     initMapAddressFromCard(card, addrPrefix) {
       let mapItURLFormat = this._getMapURLPref();
       let doNotShowMap = !mapItURLFormat || !addrPrefix || !card;
       this._setWidgetDisabled(doNotShowMap);
--- a/mailnews/base/content/msgSynchronize.js
+++ b/mailnews/base/content/msgSynchronize.js
@@ -101,17 +101,17 @@ function selectOnLoad() {
   gSynchronizeTree = document.getElementById("synchronizeTree");
 
   SortSynchronizePane("folderNameCol", "?folderTreeNameSort");
 }
 
 function SortSynchronizePane(column, sortKey) {
   var node = FindInWindow(window, column);
   if (!node) {
-    dump("Couldnt find sort column\n");
+    dump("Couldn't find sort column\n");
     return;
   }
 
   node.setAttribute("sort", sortKey);
   node.setAttribute("sortDirection", "natural");
   var col = gSynchronizeTree.columns[column];
   gSynchronizeTree.view.cycleHeader(col);
 }
--- a/mailnews/base/util/nsMsgDBFolder.cpp
+++ b/mailnews/base/util/nsMsgDBFolder.cpp
@@ -86,17 +86,17 @@ static PRTime gtimeOfLastPurgeCheck;  //
 #define PREF_MAIL_PURGE_ASK "mail.purge.ask"
 #define PREF_MAIL_WARN_FILTER_CHANGED "mail.warn_filter_changed"
 
 const char *kUseServerRetentionProp = "useServerRetention";
 
 NS_IMPL_ISUPPORTS(nsMsgFolderService, nsIMsgFolderService)
 
 // This method serves the only purpose to re-initialize the
-// folder name strings when UI intialization is done.
+// folder name strings when UI initialization is done.
 // XXX TODO: This can be removed when the localization system gets
 // initialized in M-C code before, for example, the permission manager
 // triggers folder creation during imap: URI creation.
 // In fact, the entire class together with nsMsgDBFolder::FolderNamesReady()
 // can be removed.
 NS_IMETHODIMP nsMsgFolderService::InitializeFolderStrings() {
   nsMsgDBFolder::initializeStrings();
   nsMsgDBFolder::gInitializeStringsDone = true;
--- a/mailnews/base/util/nsMsgUtils.cpp
+++ b/mailnews/base/util/nsMsgUtils.cpp
@@ -1798,17 +1798,17 @@ static bool IsStreamUTF8(nsIInputStream 
     }
   }
 }
 
 NS_MSG_BASE nsresult MsgDetectCharsetFromFile(nsIFile *aFile,
                                               nsACString &aCharset) {
   // We do the detection in this order:
   // Check BOM.
-  // If no BOM, run localized detection (Russian, Ukranian or Japanese).
+  // If no BOM, run localized detection (Russian, Ukrainian or Japanese).
   // We need to run this first, since ISO-2022-JP is 7bit ASCII and would be
   // detected as UTF-8. If ISO-2022-JP not detected, check for UTF-8. If no
   // UTF-8, but detector detected something, use that, otherwise return an
   // error.
   aCharset.Truncate();
 
   nsresult rv;
   nsCOMPtr<nsIInputStream> inputStream;
@@ -1836,17 +1836,17 @@ NS_MSG_BASE nsresult MsgDetectCharsetFro
   if (seekStream) seekStream->Seek(nsISeekableStream::NS_SEEK_SET, 0);
 
   // Use detector.
   nsCOMPtr<nsICharsetDetector> detector;
   mozilla::UniquePtr<mozilla::JapaneseDetector> japaneseDetector;
   nsAutoCString detectorName;
   Preferences::GetLocalizedCString("intl.charset.detector", detectorName);
   if (!detectorName.IsEmpty()) {
-    // We recognize one of the two magic strings for Russian and Ukranian.
+    // We recognize one of the two magic strings for Russian and Ukrainian.
     if (detectorName.EqualsLiteral("ruprob")) {
       detector = new nsRUProbDetector();
     } else if (detectorName.EqualsLiteral("ukprob")) {
       detector = new nsUKProbDetector();
     } else if (detectorName.EqualsLiteral("ja_parallel_state_machine")) {
       japaneseDetector = mozilla::JapaneseDetector::Create(true);
     }
   }
--- a/mailnews/compose/content/askSendFormat.js
+++ b/mailnews/compose/content/askSendFormat.js
@@ -11,17 +11,17 @@ document.addEventListener("dialogaccept"
  * {action: nsIMsgCompSendFormat.AskUser, convertible: nsIMsgCompConvertible.Yes}
  */
 function Startup() {
   gParam = window.arguments[0];
 
   const msgCompSendFormat = Ci.nsIMsgCompSendFormat;
   const msgCompConvertible = Ci.nsIMsgCompConvertible;
 
-  // Select the node that need to be udpated.
+  // Select the node that needs to be updated.
   let mailSendFormatExplanation = document.getElementById(
     "mailSendFormatExplanation"
   );
   let icon = document.getElementById("convertDefault");
 
   let bundle = document.getElementById("askSendFormatStringBundle");
   let convertibleAltering = bundle.getString("convertibleAltering");
   let convertibleNo = bundle.getString("convertibleNo");
--- a/mailnews/extensions/newsblog/content/FeedUtils.jsm
+++ b/mailnews/extensions/newsblog/content/FeedUtils.jsm
@@ -1422,17 +1422,17 @@ var FeedUtils = {
     let exists = feedsFile.exists();
     let ds = new JSONFile({ path: feedsFile.path });
     ds.ensureDataReady();
     if (!this[aServer.serverURI]) {
       this[aServer.serverURI] = {};
     }
     this[aServer.serverURI].FeedsDS = ds;
     if (!exists) {
-      // No feeds.json, so we need to initalise.
+      // No feeds.json, so we need to initialise.
       ds.data = [];
     }
     return ds;
   },
 
   /**
    * Fetch an attribute for a subscribed feed.
    *
--- a/mailnews/extensions/newsblog/test/unit/test_rdfmigration.js
+++ b/mailnews/extensions/newsblog/test/unit/test_rdfmigration.js
@@ -19,17 +19,17 @@ const { OS } = ChromeUtils.import("resou
 async function migrationTest(testDataDir) {
   // Set up an RSS account/server.
   let account = FeedUtils.createRssAccount("rss_migration_test");
   let rootFolder = account.incomingServer.rootMsgFolder.QueryInterface(
     Ci.nsIMsgLocalMailFolder
   );
   // Note, we don't create any folders to hold downloaded feed items,
   // that's OK here, because we're only migrating the config files, not
-  // downloading feeds. The migration doesn't check destFolder existance.
+  // downloading feeds. The migration doesn't check destFolder existence.
   let rootDir = rootFolder.filePath.path;
 
   // Install legacy feeds.rdf/feeditems.rdf
   for (let f of ["feeds.rdf", "feeditems.rdf"]) {
     await OS.File.copy(OS.Path.join(testDataDir, f), OS.Path.join(rootDir, f));
   }
 
   // Perform the migration
--- a/mailnews/imap/src/nsImapServerResponseParser.cpp
+++ b/mailnews/imap/src/nsImapServerResponseParser.cpp
@@ -2666,17 +2666,17 @@ void nsImapServerResponseParser::UseCach
 void nsImapServerResponseParser::ResetCapabilityFlag() {}
 
 /*
    literal ::= "{" number "}" CRLF *CHAR8
    Number represents the number of CHAR8 octets
  */
 
 // Processes a message body, header or message part fetch response. Typically
-// the full message, header or part are proccessed in one call (effectively, one
+// the full message, header or part are processed in one call (effectively, one
 // chunk), and parameter `chunk` is false and `origin` (offset into the
 // response) is 0. But under some conditions and larger messages, multiple calls
 // will occur to process the message in multiple chunks and parameter `chunk`
 // will be true and parameter `origin` will increase by the chunk size from
 // initially 0 with each call. This function returns true if this is the last or
 // only chunk. This signals the caller that the stream should be closed since
 // the message response has been processed.
 bool nsImapServerResponseParser::msg_fetch_literal(bool chunk, int32_t origin) {
--- a/mailnews/mime/jsmime/jsmime.js
+++ b/mailnews/mime/jsmime/jsmime.js
@@ -411,17 +411,17 @@
       // Represents a non-delimiter token.
       function Token(token) {
         // Replace problematic characters so we don't get unexpected behavior
         // down the line. These fall into a few categories:
         // A) "Separator, space" (Zs),
         // B) "Mark, Nonspacing" (Mn)
         // C) "Other, Control" (Cc)
         // D) "Other, Format" (Cf)
-        // Unfortuantely, no support for the needed regexp Unicode property escapes
+        // Unfortunately, no support for the needed regexp Unicode property escapes
         // in our engine. So we need to hand-roll it. Used the regexpu tool for
         // that: https://mothereff.in/regexpu.
         // This should be updated regularly, to take into account new additions
         // to the unicode standard. Last updated July 2019.
         // For a full list of categories, see http://unicode.org/Public//5.0.0/ucd/UCD.html.
 
         // -- case A: /\p{Zs}/u
         // https://www.fileformat.info/info/unicode/category/Zs/list.htm
--- a/mailnews/mime/src/comi18n.cpp
+++ b/mailnews/mime/src/comi18n.cpp
@@ -61,17 +61,17 @@ nsresult MIME_detect_charset(const char 
                              nsACString &aCharset) {
   nsresult rv;
   nsCOMPtr<nsICharsetDetector> detector;
   mozilla::UniquePtr<mozilla::JapaneseDetector> japaneseDetector;
   nsAutoCString detectorName;
   Preferences::GetLocalizedCString("intl.charset.detector", detectorName);
 
   if (!detectorName.IsEmpty()) {
-    // We recognize one of the two magic strings for Russian and Ukranian.
+    // We recognize one of the two magic strings for Russian and Ukrainian.
     if (detectorName.EqualsLiteral("ruprob")) {
       detector = new nsRUProbDetector();
     } else if (detectorName.EqualsLiteral("ukprob")) {
       detector = new nsUKProbDetector();
     } else if (detectorName.EqualsLiteral("ja_parallel_state_machine")) {
       japaneseDetector = mozilla::JapaneseDetector::Create(true);
     }
   }
--- a/mailnews/mime/test/unit/test_smime_decrypt.js
+++ b/mailnews/mime/test/unit/test_smime_decrypt.js
@@ -203,17 +203,17 @@ let smimeHeaderSink = {
  * - sig: If true, we expect a report to signedStatus() that message
  *        is signed.
  * - sig_good: If true, we expect that the reported signature has a
  *             good status.
  *             If false, we expect a report of bad status.
  *             Because of the sequential processing caused by nested
  *             messages, additional calls to signedStatus() might
  *             override an earlier decision.
- *             (An earlier bad status report cannot be overriden by a
+ *             (An earlier bad status report cannot be overridden by a
  *              later report of a good status.)
  * - extra: If set to a number > 0, we expect that nested processing of
  *          MIME parts will trigger the given number of additional
  *          status calls.
  *          (default is 0.)
  * - dave: If true, we expect that the outermost message was done by
  *         Dave's certificate.
  *         (default is false, which means we expect Alice's cert.)
--- a/taskcluster/comm_taskgraph/manifests/thunderbird_candidates.yml
+++ b/taskcluster/comm_taskgraph/manifests/thunderbird_candidates.yml
@@ -5,17 +5,17 @@
 # This file contains exhaustive information about all the release artifacs that
 # are needed within a type of release.
 #
 # Structure
 # --------
 # `s3_bucket_paths`       -- prefix to be used per product to correctly access our S3 buckets
 # `default_locales`       -- list of locales to be used when composing upstream artifacts or the list of
 #                      destinations. If given an empty locale, it uses these locales instead.
-# `tasktype_map`          -- mapping between task reference and task type, particularly usefule when
+# `tasktype_map`          -- mapping between task reference and task type, particularly useful when
 #                      composing the upstreamArtifacts for scriptworker.
 # `platform_names`        -- various platform mappings used in reckoning artifacts or other paths
 # `default`               -- a default entry, which the mappings extend and override in such a way that
 #                      final path full-destinations will be a concatenation of the following:
 #                      `s3_bucket_paths`, `destinations`, `locale_prefix`, `pretty_name`
 # `from`                  -- specifies the dependency(ies) from which to expect the particular artifact
 # `all_locales`           -- boolean argument to specify whether that particular artifact is to be expected
 #                      for all locales or just the default one
--- a/taskcluster/comm_taskgraph/manifests/thunderbird_candidates_checksums.yml
+++ b/taskcluster/comm_taskgraph/manifests/thunderbird_candidates_checksums.yml
@@ -5,17 +5,17 @@
 # This file contains exhaustive information about all the release artifacs that
 # are needed within a type of release.
 #
 # Structure
 # --------
 # `s3_bucket_paths`       -- prefix to be used per product to correctly access our S3 buckets
 # `default_locales`       -- list of locales to be used when composing upstream artifacts or the list of
 #                      destinations. If given an empty locale, it uses these locales instead.
-# `tasktype_map`          -- mapping between task reference and task type, particularly usefule when
+# `tasktype_map`          -- mapping between task reference and task type, particularly useful when
 #                      composing the upstreamArtifacts for scriptworker.
 # `platform_names`        -- various platform mappings used in reckoning artifacts or other paths
 # `default`               -- a default entry, which the mappings extend and override in such a way that
 #                      final path full-destinations will be a concatenation of the following:
 #                      `s3_bucket_paths`, `destinations`, `locale_prefix`, `pretty_name`
 # `from`                  -- specifies the dependency(ies) from which to expect the particular artifact
 # `all_locales`           -- boolean argument to specify whether that particular artifact is to be expected
 #                      for all locales or just the default one
--- a/taskcluster/comm_taskgraph/manifests/thunderbird_nightly.yml
+++ b/taskcluster/comm_taskgraph/manifests/thunderbird_nightly.yml
@@ -5,17 +5,17 @@
 # This file contains exhaustive information about all the release artifacs that
 # are needed within a type of release.
 #
 # Structure
 # --------
 # `s3_bucket_paths`       -- prefix to be used per product to correctly access our S3 buckets
 # `default_locales`       -- list of locales to be used when composing upstream artifacts or the list of
 #                      destinations. If given an empty locale, it uses these locales instead.
-# `tasktype_map`          -- mapping between task reference and task type, particularly usefule when
+# `tasktype_map`          -- mapping between task reference and task type, particularly useful when
 #                      composing the upstreamArtifacts for scriptworker.
 # `platform_names`        -- various platform mappings used in reckoning artifacts or other paths
 # `default`               -- a default entry, which the mappings extend and override in such a way that
 #                      final path full-destinations will be a concatenation of the following:
 #                      `s3_bucket_paths`, `destinations`, `locale_prefix`, `pretty_name`
 # `from`                  -- specifies the dependency(ies) from which to expect the particular artifact
 # `all_locales`           -- boolean argument to specify whether that particular artifact is to be expected
 #                      for all locales or just the default one