Bug 1647104 - Fix typos in chat, common, db, editor, mail, mailnews found with codespell. rs=comment-only,typo-fix r+a=mkmelin
authorJorg K <jorgk@jorgk.com>
Sun, 21 Jun 2020 20:27:10 +0200
changeset 39485 7ae7f4fa2a7b692919bc456453fa491f51444357
parent 39484 fde9f21875e3ae9a6b5d941c195d29f9f5b141c3
child 39486 524b05c44acdd21378e899e949a1bbfb0f08d74e
push id402
push userclokep@gmail.com
push dateMon, 29 Jun 2020 20:48:04 +0000
reviewerscomment-only, typo-fix
bugs1647104
Bug 1647104 - Fix typos in chat, common, db, editor, mail, mailnews found with codespell. rs=comment-only,typo-fix r+a=mkmelin This excludes OpenPGP code in mail/extensions.
.eslintignore
.taskcluster.yml
chat/components/public/imIConversationsService.idl
chat/components/public/imIUserStatusInfo.idl
chat/components/src/imContacts.jsm
chat/content/chat-account-richlistitem.js
chat/modules/OTRUI.jsm
chat/protocols/irc/ircBase.jsm
common/src/ChromeManifest.jsm
db/mork/public/mdb.h
db/mork/src/mork.h
db/mork/src/morkAtom.h
db/mork/src/morkMap.h
db/mork/src/morkStore.cpp
db/mork/src/morkStore.h
editor/ui/composer/content/publishprefs.js
ldap/c-sdk/libraries/libldap/getoption.c
ldap/c-sdk/libraries/libldap/ufn.c
mail/base/content/mailWidgets.js
mail/base/content/msgHdrView.js
mail/base/test/webextensions/browser_extension_update_background_noprompt.js
mail/base/test/webextensions/browser_update_interactive_noprompt.js
mail/components/accountcreation/content/emailWizard.js
mail/components/accountcreation/content/exchangeAutoDiscover.js
mail/components/accountcreation/content/guessConfig.js
mail/components/activity/nsIActivity.idl
mail/components/addrbook/content/abCommon.js
mail/components/addrbook/content/abTrees.js
mail/components/compose/content/MsgComposeCommands.js
mail/components/compose/content/addressingWidgetOverlay.js
mail/components/enterprisepolicies/helpers/ProxyPolicies.jsm
mail/components/extensions/test/browser/browser_ext_menus_replace_menu_context.js
mail/components/im/content/imStatusSelector.js
mail/components/migration/src/nsSeamonkeyProfileMigrator.cpp
mail/components/preferences/cookies.js
mail/components/shell/nsIShellService.idl
mail/test/browser/composition/browser_blockedContent.js
mail/test/browser/composition/browser_focus.js
mail/test/browser/newmailaccount/browser_newmailaccount.js
mail/test/browser/shared-modules/AccountManagerHelpers.jsm
mail/test/browser/shared-modules/FolderDisplayHelpers.jsm
mail/test/browser/shared-modules/SubscribeWindowHelpers.jsm
mail/test/static/browser_parsable_css.js
mail/test/static/browser_parsable_script.js
mail/themes/osx/mail/accountCentral.css
mail/themes/shared/mail/accountCentral.css
mailnews/addrbook/jsaddrbook/CardDAVDirectory.jsm
mailnews/base/content/folderProps.js
mailnews/base/public/nsIMsgAsyncPrompter.idl
mailnews/base/public/nsMsgGroupnameFlags.h
mailnews/base/search/public/nsMsgSearchAdapter.h
mailnews/base/search/src/nsMsgImapSearch.cpp
mailnews/base/search/src/nsMsgLocalSearch.cpp
mailnews/base/src/nsMessenger.cpp
mailnews/base/util/OAuth2.jsm
mailnews/base/util/nsMsgI18N.h
mailnews/base/util/nsMsgProtocol.h
mailnews/compose/public/nsIMsgCompose.idl
mailnews/compose/test/unit/test_sendMessageLater2.js
mailnews/db/gloda/modules/NounMimetype.jsm
mailnews/db/msgdb/src/nsMsgDatabase.cpp
mailnews/extensions/mailviews/src/nsMsgMailViewList.cpp
mailnews/extensions/newsblog/content/Feed.js
mailnews/imap/public/nsIImapMailFolderSink.idl
mailnews/imap/src/nsImapMailFolder.cpp
mailnews/imap/src/nsImapProtocol.cpp
mailnews/imap/src/nsImapProtocol.h
mailnews/imap/src/nsImapServerResponseParser.cpp
mailnews/imap/test/unit/test_fetchCustomAttribute.js
mailnews/jsaccount/modules/JaBaseUrl.jsm
mailnews/jsaccount/src/JaUrl.cpp
mailnews/local/src/nsLocalMailFolder.cpp
mailnews/local/src/nsMailboxProtocol.cpp
mailnews/mapi/mapihook/src/msgMapiHook.cpp
mailnews/mapi/mapihook/src/msgMapiImp.cpp
mailnews/mime/jsmime/test/unit/test_header.js
mailnews/mime/src/mimemult.cpp
mailnews/news/src/nsNNTPProtocol.h
--- a/.eslintignore
+++ b/.eslintignore
@@ -80,10 +80,10 @@ mail/branding/thunderbird/thunderbird-br
 # code as a .jsm (schema.jsm)
 mail/components/enterprisepolicies/schemas/schema.jsm
 mail/components/im/all-im.js
 mail/extensions/am-e2e/prefs/e2e-prefs.js
 mail/locales/en-US/all-l10n.js
 mail/components/compose/texzilla/**
 mail/components/compose/composer.js
 
-# exclude MailConstants.jsm because: #filter subtitution
+# exclude MailConstants.jsm because: #filter substitution
 mail/base/modules/MailConstants.jsm
--- a/.taskcluster.yml
+++ b/.taskcluster.yml
@@ -39,18 +39,18 @@
 #   JSON-e $let statement that produces the context described below, and
 #   installs that as the hook task template.
 #
 #   {
 #     tasks_for: 'action',
 #     push: {owner, pushlog_id, revision},
 #     repository: {url, project, level},
 #     input,
-#     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
 #     clientId:    // clientId that triggered this hook
 #   }
 
 version: 1
 tasks:
     # NOTE: support for actions in ci-admin requires that the `tasks` property be an array *before* JSON-e rendering
--- a/chat/components/public/imIConversationsService.idl
+++ b/chat/components/public/imIConversationsService.idl
@@ -15,17 +15,17 @@ interface imIConversation: prplIConversa
   readonly attribute imIContact contact;
 
   // Write a system message into the conversation.
   // Note: this will not be logged.
   void systemMessage(in AUTF8String aMessage,
                      [optional] in boolean aIsError,
                      [optional] in boolean aNoCollapse);
 
-  // Write a system message into the conversation and trigger the udpate of the
+  // Write a system message into the conversation and trigger the update of the
   // notification counter during an off-the-record authentication request.
   // Note: this will not be logged.
   void notifyVerifyOTR(in AUTF8String aMessage);
 
   attribute prplIConversation target;
 
   // Number of unread messages (all messages, including system
   // messages are counted).
--- a/chat/components/public/imIUserStatusInfo.idl
+++ b/chat/components/public/imIUserStatusInfo.idl
@@ -27,26 +27,26 @@ interface imIUserStatusInfo: nsISupports
    *    STATUS_UNAVAILABLE, STATUS_AWAY, STATUS_AVAILABLE and STATUS_INVISIBLE.
    * @param aMessage the new status message. Ignored when aStatus is STATUS_OFFLINE.
    */
   void setStatus(in short aStatus, in AUTF8String aMessage);
 
   /**
    * Sets the user icon, or removes it if null is passed as a parameter.
    *
-   * Calling this will fire a user-icon-changed notificaton.
+   * Calling this will fire a user-icon-changed notification.
    */
   void setUserIcon(in nsIFile aIconFile);
 
   /**
    * Returns the location of the current user icon, or null if no icon is set.
    */
   nsIFileURL getUserIcon();
 
-  /* The setter will fire a user-display-name-changed notificaton. */
+  /* The setter will fire a user-display-name-changed notification. */
   attribute AUTF8String displayName;
 
   void addObserver(in nsIObserver aObserver);
   void removeObserver(in nsIObserver aObserver);
   /* Observers will receive the following notifications:
    *   status-changed (when either the status type or text has changed)
    *   user-icon-changed
    *   user-display-name-changed
--- a/chat/components/src/imContacts.jsm
+++ b/chat/components/src/imContacts.jsm
@@ -797,17 +797,17 @@ Contact.prototype = {
     let buddy = BuddiesById[aBuddy.id];
     if (buddy.contact.id != this.id) {
       throw Components.Exception("", Cr.NS_ERROR_INVALID_ARG);
     }
     if (buddy.contact._buddies.length == 1) {
       throw Components.Exception("", Cr.NS_ERROR_UNEXPECTED);
     }
 
-    // Save the list of tags, it may be destoyed if the buddy was the last one.
+    // Save the list of tags, it may be destroyed if the buddy was the last one.
     let tags = buddy.contact.getTags();
 
     // Create a new dummy contact and use it for the detached buddy.
     buddy.contact = new Contact();
     buddy.contact._notifyObservers("added");
 
     // The first tag was inherited during the contact setter.
     // This will copy the remaining tags.
--- a/chat/content/chat-account-richlistitem.js
+++ b/chat/content/chat-account-richlistitem.js
@@ -43,17 +43,17 @@
         if (event.button == 0) {
           // If we double clicked on a widget that has already done
           // something with the first click, we should ignore the event
           let localName = event.originalTarget.localName;
           if (localName != "button" && localName != "checkbox") {
             this.proceedDefaultAction();
           }
         }
-        // Prevent from loading an account wizzard
+        // Prevent from loading an account wizard
         event.stopPropagation();
       });
 
       this.appendChild(
         MozXULElement.parseXULToFragment(
           `
           <vbox flex="1">
             <hbox flex="1" align="start">
--- a/chat/modules/OTRUI.jsm
+++ b/chat/modules/OTRUI.jsm
@@ -475,17 +475,17 @@ var OTRUI = {
   askAuth(aObject) {
     let uiConv = OTR.getUIConvFromContext(aObject.context);
     if (!uiConv) {
       return;
     }
 
     let name = uiConv.target.normalizedName;
     let msg = _strArgs("verify-request", { name });
-    // Trigger the udpate of the unread message counter.
+    // Trigger the update of the unread message counter.
     uiConv.notifyVerifyOTR(msg);
     Services.obs.notifyObservers(uiConv, "new-otr-verification-request");
 
     // Trigger the inline notification.
     let window = this.globalDoc.defaultView;
     let buttons = [
       {
         label: _str("finger-verify"),
--- a/chat/protocols/irc/ircBase.jsm
+++ b/chat/protocols/irc/ircBase.jsm
@@ -833,17 +833,17 @@ var ircBase = {
       // :*1<reply> *( " " <reply )"
       // reply = nickname [ "*" ] "=" ( "+" / "-" ) hostname
       // TODO Can tell op / away from this
       return false;
     },
     "303": function(aMessage) {
       // RPL_ISON
       // :*1<nick> *( " " <nick> )"
-      // Set the status of the buddies based the lastest ISON response.
+      // Set the status of the buddies based the latest ISON response.
       let receivedBuddyNames = [];
       // The buddy names as returned by the server.
       if (aMessage.params.length > 1) {
         receivedBuddyNames = aMessage.params[1].trim().split(" ");
       }
 
       // This was received in response to the last ISON message sent.
       for (let buddyName of this.pendingIsOnQueue) {
--- a/common/src/ChromeManifest.jsm
+++ b/common/src/ChromeManifest.jsm
@@ -7,17 +7,17 @@ const EXPORTED_SYMBOLS = ["ChromeManifes
 const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 /**
  * A parser for chrome.manifest files. Implements a subset of
  * https://developer.mozilla.org/en-US/docs/Mozilla/Chrome_Registration
  */
 class ChromeManifest {
   /**
-   * Constucts the chrome.manifest parser
+   * Constructs the chrome.manifest parser
    *
    * @param {Function} loader           An asynchronous function that will load further files, e.g.
    *                                      those included via the |manifest| instruction. The
    *                                      function will take the file as an argument and should
    *                                      resolve with the string contents of that file
    * @param {Object} options            Object describing the current system. The keys are manifest
    *                                      instructions
    */
--- a/db/mork/public/mdb.h
+++ b/db/mork/public/mdb.h
@@ -1367,32 +1367,32 @@ class nsIMdbStore : public nsIMdbPort {
   NS_IMETHOD NewRow(nsIMdbEnv* ev,            // new row with db assigned oid
                     mdb_scope inRowScope,     // row scope for row ids
                     nsIMdbRow** acqRow) = 0;  // create new row
   // Note this row must be added to some table or cell child before the
   // store is closed in order to make this row persist across sessions.
 
   // } ----- end row methods -----
 
-  // { ----- begin inport/export methods -----
+  // { ----- begin import/export methods -----
   NS_IMETHOD ImportContent(         // import content from port
       nsIMdbEnv* ev,                // context
       mdb_scope inRowScope,         // scope for rows (or zero for all?)
       nsIMdbPort* ioPort,           // the port with content to add to store
       nsIMdbThumb** acqThumb) = 0;  // acquire thumb for incremental import
   // Call nsIMdbThumb::DoMore() until done, or until the thumb is broken, and
   // then the import will be finished.
 
   NS_IMETHOD ImportFile(            // import content from port
       nsIMdbEnv* ev,                // context
       nsIMdbFile* ioFile,           // the file with content to add to store
       nsIMdbThumb** acqThumb) = 0;  // acquire thumb for incremental import
   // Call nsIMdbThumb::DoMore() until done, or until the thumb is broken, and
   // then the import will be finished.
-  // } ----- end inport/export methods -----
+  // } ----- end import/export methods -----
 
   // { ----- begin hinting methods -----
   NS_IMETHOD
   ShareAtomColumnsHint(       // advise re shared column content atomizing
       nsIMdbEnv* ev,          // context
       mdb_scope inScopeHint,  // zero, or suggested shared namespace
       const mdbColumnSet* inColumnSet) = 0;  // cols desired tokenized together
 
--- a/db/mork/src/mork.h
+++ b/db/mork/src/mork.h
@@ -67,17 +67,17 @@
 /*| OffsetOf: the unsigned integer offset of a class or struct
 **| field from the beginning of that class or struct.  This is
 **| the same as the similarly named public domain IronDoc macro,
 **| and is also the same as another macro appearing in stdlib.h.
 **| We want these offsets so we can correctly convert pointers
 **| to member slots back into pointers to enclosing objects, and
 **| have this exactly match what the compiler thinks is true.
 **|
-**|| Bascially we are asking the compiler to determine the offset at
+**|| Basically we are asking the compiler to determine the offset at
 **| compile time, and we use the definition of address artithmetic
 **| to do this.  By casting integer zero to a pointer of type obj*,
 **| we can reference the address of a slot in such an object that
 **| is hypothetically physically placed at address zero, but without
 **| actually dereferencing a memory location.  The absolute address
 **| of slot is the same as offset of that slot, when the object is
 **| placed at address zero.
 |*/
--- a/db/mork/src/morkAtom.h
+++ b/db/mork/src/morkAtom.h
@@ -246,17 +246,17 @@ class morkFarBookAtom : public morkBookA
   // mork_u1       mAtom_Size;      // NOT USED IN "BIG" format atoms
 
   // morkAtomSpace* mBookAtom_Space; // mBookAtom_Space->SpaceScope() is scope
   // mork_aid       mBookAtom_Id;    // identity token for this shared atom
 
  public:
   mork_cscode mFarBookAtom_Form;  // charset format encoding
   mork_size mFarBookAtom_Size;    // size of content vector
-  mork_u1* mFarBookAtom_Body;     // bytes are elsewere, out of line
+  mork_u1* mFarBookAtom_Body;     // bytes are elsewhere, out of line
 
  public:  // empty construction does nothing
   morkFarBookAtom() {}
   void InitFarBookAtom(morkEnv* ev, const morkBuf& inBuf, mork_cscode inForm,
                        morkAtomSpace* ioSpace, mork_aid inAid);
 
  private:  // copying is not allowed
   morkFarBookAtom(const morkFarBookAtom& other);
--- a/db/mork/src/morkMap.h
+++ b/db/mork/src/morkMap.h
@@ -243,26 +243,26 @@ class morkMap : public morkNode {
                      // { ===== begin morkMap poly interface =====
   virtual mork_bool  // note: equal(a,b) implies hash(a) == hash(b)
   Equal(morkEnv* ev, const void* inKeyA, const void* inKeyB) const = 0;
 
   virtual mork_u4  // note: equal(a,b) implies hash(a) == hash(b)
   Hash(morkEnv* ev, const void* inKey) const = 0;
   // } ===== end morkMap poly interface =====
 
- public:  // open utitity methods
+ public:  // open utility methods
   mork_bool GoodMapTag() const { return mMap_Tag == morkMap_kTag; }
   mork_bool GoodMap() const { return (IsNode() && GoodMapTag()); }
 
   void NewIterOutOfSyncError(morkEnv* ev);
   void NewBadMapError(morkEnv* ev);
   void NewSlotsUnderflowWarning(morkEnv* ev);
   void InitMap(morkEnv* ev, mork_size inSlots);
 
- protected:  // internal utitity methods
+ protected:  // internal utility methods
   friend class morkMapIter;
   void clear_map(morkEnv* ev, nsIMdbHeap* ioHeap);
 
   void* alloc(morkEnv* ev, mork_size inSize);
   void* clear_alloc(morkEnv* ev, mork_size inSize);
 
   void push_free_assoc(morkAssoc* ioAssoc) {
     ioAssoc->mAssoc_Next = mMap_FreeList;
--- a/db/mork/src/morkStore.cpp
+++ b/db/mork/src/morkStore.cpp
@@ -1816,17 +1816,17 @@ morkStore::NewRow(nsIMdbEnv* mev,       
 
     outErr = ev->AsErr();
   }
   if (acqRow) *acqRow = outRow;
   return outErr;
 }
 // } ----- end row methods -----
 
-// { ----- begin inport/export methods -----
+// { ----- begin import/export methods -----
 NS_IMETHODIMP
 morkStore::ImportContent(    // import content from port
     nsIMdbEnv* mev,          // context
     mdb_scope inRowScope,    // scope for rows (or zero for all?)
     nsIMdbPort* ioPort,      // the port with content to add to store
     nsIMdbThumb** acqThumb)  // acquire thumb for incremental import
 // Call nsIMdbThumb::DoMore() until done, or until the thumb is broken, and
 // then the import will be finished.
@@ -1841,17 +1841,17 @@ morkStore::ImportFile(       // import c
     nsIMdbFile* ioFile,      // the file with content to add to store
     nsIMdbThumb** acqThumb)  // acquire thumb for incremental import
 // Call nsIMdbThumb::DoMore() until done, or until the thumb is broken, and
 // then the import will be finished.
 {
   NS_ASSERTION(false, " not implemented");
   return NS_ERROR_NOT_IMPLEMENTED;
 }
-// } ----- end inport/export methods -----
+// } ----- end import/export methods -----
 
 // { ----- begin hinting methods -----
 NS_IMETHODIMP
 morkStore::ShareAtomColumnsHint(      // advise re shared col content atomizing
     nsIMdbEnv* mev,                   // context
     mdb_scope inScopeHint,            // zero, or suggested shared namespace
     const mdbColumnSet* inColumnSet)  // cols desired tokenized together
 {
--- a/db/mork/src/morkStore.h
+++ b/db/mork/src/morkStore.h
@@ -424,32 +424,32 @@ class morkStore : public morkObject, pub
   NS_IMETHOD NewRow(nsIMdbEnv* ev,         // new row with db assigned oid
                     mdb_scope inRowScope,  // row scope for row ids
                     nsIMdbRow** acqRow) override;  // create new row
   // Note this row must be added to some table or cell child before the
   // store is closed in order to make this row persist across sessions.
 
   // } ----- end row methods -----
 
-  // { ----- begin inport/export methods -----
+  // { ----- begin import/export methods -----
   NS_IMETHOD ImportContent(  // import content from port
       nsIMdbEnv* ev,         // context
       mdb_scope inRowScope,  // scope for rows (or zero for all?)
       nsIMdbPort* ioPort,    // the port with content to add to store
       nsIMdbThumb** acqThumb) override;  // acquire thumb for incremental import
   // Call nsIMdbThumb::DoMore() until done, or until the thumb is broken, and
   // then the import will be finished.
 
   NS_IMETHOD ImportFile(   // import content from port
       nsIMdbEnv* ev,       // context
       nsIMdbFile* ioFile,  // the file with content to add to store
       nsIMdbThumb** acqThumb) override;  // acquire thumb for incremental import
   // Call nsIMdbThumb::DoMore() until done, or until the thumb is broken, and
   // then the import will be finished.
-  // } ----- end inport/export methods -----
+  // } ----- end import/export methods -----
 
   // { ----- begin hinting methods -----
   NS_IMETHOD
   ShareAtomColumnsHint(       // advise re shared column content atomizing
       nsIMdbEnv* ev,          // context
       mdb_scope inScopeHint,  // zero, or suggested shared namespace
       const mdbColumnSet* inColumnSet)
       override;  // cols desired tokenized together
--- a/editor/ui/composer/content/publishprefs.js
+++ b/editor/ui/composer/content/publishprefs.js
@@ -666,17 +666,17 @@ function FindSiteIndexAndDocDir(publishS
   }
   return siteIndex;
 }
 
 // Look for a matching publish url within the document url
 // (We need to look at both "publishUrl" and "browseUrl" in case we are editing
 //  an http: document but using ftp: to publish.)
 // If match is found:
-//    Fill in the filename and subirectory based on the docUrl and
+//    Fill in the filename and subdirectory based on the docUrl and
 //    return the length of the docUrl with username+password stripped out
 function FillInMatchingPublishData(publishData, docUrl)
 {
   if (!publishData || !docUrl)
     return 0;
 
   // Separate docUrl into the base url and filename
   var lastSlash = docUrl.lastIndexOf("\/");
--- a/ldap/c-sdk/libraries/libldap/getoption.c
+++ b/ldap/c-sdk/libraries/libldap/getoption.c
@@ -351,17 +351,17 @@ int LDAP_CALL ldap_get_option(LDAP* ld, 
       rc = -1;
   }
   if (ld != &nsldapi_ld_defaults) LDAP_MUTEX_UNLOCK(ld, LDAP_OPTION_LOCK);
   return (rc);
 }
 
 /*
  * Table of extended API features we support.
- * The first field is the version of the info. strcuture itself; we do not
+ * The first field is the version of the info. structure itself; we do not
  * use the ones from this table so it is okay to leave as zero.
  */
 static LDAPAPIFeatureInfo nsldapi_extensions[] = {
     {0, "SERVER_SIDE_SORT", LDAP_API_FEATURE_SERVER_SIDE_SORT},
     {0, "VIRTUAL_LIST_VIEW", LDAP_API_FEATURE_VIRTUAL_LIST_VIEW},
     {0, "PERSISTENT_SEARCH", LDAP_API_FEATURE_PERSISTENT_SEARCH},
     {0, "PROXY_AUTHORIZATION", LDAP_API_FEATURE_PROXY_AUTHORIZATION},
     {0, "X_LDERRNO", LDAP_API_FEATURE_X_LDERRNO},
--- a/ldap/c-sdk/libraries/libldap/ufn.c
+++ b/ldap/c-sdk/libraries/libldap/ufn.c
@@ -110,17 +110,17 @@ static int ldap_ufn_search_ctx(LDAP* ld,
    * look up ufn components from most to least significant.
    * there are 3 phases.
    *   phase 1  search the root for orgs or countries
    *   phase 2  search for orgs
    *   phase 3  search for a person
    * in phases 1 and 2, we are building a list of candidate DNs,
    * below which we will search for the final component of the ufn.
    * for each component we try the filters listed in the
-   * filterconfig file, first one-level (except the last compoment),
+   * filterconfig file, first one-level (except the last component),
    * then subtree.  if any of them produce any results, we go on to
    * the next component.
    */
 
   *res = NULL;
   candidates = NULL;
   phase = 1;
   for (ncomp--; ncomp != -1; ncomp--) {
--- a/mail/base/content/mailWidgets.js
+++ b/mail/base/content/mailWidgets.js
@@ -2138,17 +2138,17 @@
       // Force the focus on the first available input field if Tab is
       // pressed on the extraRecipientsLabel label.
       document
         .getElementById("extraRecipientsLabel")
         .addEventListener("keypress", event => {
           if (event.key == "Tab" && !event.shiftKey) {
             event.preventDefault();
             let row = this.querySelector(".address-row:not(.hidden)");
-            // If the close label is collpased, focus on the input field.
+            // If the close label is collapsed, focus on the input field.
             if (row.querySelector(".aw-firstColBox > label").collapsed) {
               row
                 .querySelector(`input[is="autocomplete-input"][recipienttype]`)
                 .focus();
               return;
             }
             // Focus on the close label.
             row.querySelector(".aw-firstColBox > label").focus();
--- a/mail/base/content/msgHdrView.js
+++ b/mail/base/content/msgHdrView.js
@@ -32,17 +32,17 @@ var { GlodaUtils } = ChromeUtils.import(
 var { Status: statusUtils } = ChromeUtils.import(
   "resource:///modules/imStatusUtils.jsm"
 );
 
 // Warning: It's critical that the code in here for displaying the message
 // headers for a selected message remain as fast as possible. In particular,
 // right now, we only introduce one reflow per message. i.e. if you click on
 // a message in the thread pane, we batch up all the changes for displaying
-// the header pane (to, cc, attachements button, etc.) and we make a single
+// the header pane (to, cc, attachments button, etc.) and we make a single
 // pass to display them. It's critical that we maintain this one reflow per
 // message view in the message header pane.
 
 var gViewAllHeaders = false;
 var gMinNumberOfHeaders = 0;
 var gDummyHeaderIdIndex = 0;
 var gBuildAttachmentsForCurrentMsg = false;
 var gBuiltExpandedView = false;
--- a/mail/base/test/webextensions/browser_extension_update_background_noprompt.js
+++ b/mail/base/test/webextensions/browser_extension_update_background_noprompt.js
@@ -102,12 +102,12 @@ async function testNoPrompt(origUrl, id)
 
 // Test that an update that adds new non-promptable permissions is just
 // applied without showing a notification dialog.
 add_task(() =>
   testNoPrompt(`${BASE}/browser_webext_update_perms1.xpi`, ID_PERMS)
 );
 
 // Test that an update that narrows origin permissions is just applied without
-// showing a notification promt
+// showing a notification prompt
 add_task(() =>
   testNoPrompt(`${BASE}/browser_webext_update_origins1.xpi`, ID_ORIGINS)
 );
--- a/mail/base/test/webextensions/browser_update_interactive_noprompt.js
+++ b/mail/base/test/webextensions/browser_update_interactive_noprompt.js
@@ -60,15 +60,15 @@ async function testUpdateNoPrompt(
 add_task(() =>
   testUpdateNoPrompt(
     "browser_webext_update_perms1.xpi",
     "update_perms@tests.mozilla.org"
   )
 );
 
 // Test that an update that narrows origin permissions is just applied without
-// showing a notification promt
+// showing a notification prompt
 add_task(() =>
   testUpdateNoPrompt(
     "browser_webext_update_origins1.xpi",
     "update_origins@tests.mozilla.org"
   )
 );
--- a/mail/components/accountcreation/content/emailWizard.js
+++ b/mail/components/accountcreation/content/emailWizard.js
@@ -120,17 +120,17 @@ function _enable(id) {
 }
 
 function _disable(id) {
   e(id).disabled = true;
 }
 
 function setText(id, value) {
   var element = e(id);
-  assert(element, "setText() on non-existant element ID");
+  assert(element, "setText() on non-existent element ID");
 
   if (element.localName == "input" || element.localName == "label") {
     element.value = value;
   } else if (
     element.localName == "description" ||
     element.localName == "hbox"
   ) {
     element.textContent = value;
--- a/mail/components/accountcreation/content/exchangeAutoDiscover.js
+++ b/mail/components/accountcreation/content/exchangeAutoDiscover.js
@@ -595,17 +595,17 @@ function detectStandardProtocols(config,
   if (alts.find(alt => alt.type == "imap" || alt.type == "pop3")) {
     // Autodiscover found an exchange server with advertized IMAP and/or
     // POP3 support. We're done then.
     config.preferStandardProtocols();
     successCallback(config);
     return;
   }
 
-  // Autodiscover is known not to advertize all that it supports. Let's see
+  // Autodiscover is known not to advertise all that it supports. Let's see
   // if there really isn't any IMAP/POP3 support by probing the Exchange
   // server. Use the server hostname already found.
   let config2 = new AccountConfig();
   config2.incoming.hostname = config.incoming.hostname;
   config2.incoming.username = config.incoming.username || "%EMAILADDRESS%";
   // For Exchange 2013+ Kerberos/GSSAPI and NTLM options do not work by
   // default at least for Linux users, even if support is detected.
   config2.incoming.auth = Ci.nsMsgAuthMethod.passwordCleartext;
@@ -624,17 +624,17 @@ function detectStandardProtocols(config,
   guessConfig(
     domain,
     function(type, hostname, port, ssl, done, config) {
       gEmailWizardLogger.info(
         `Probing exchange server ${hostname} for ${type} protocol support.`
       );
     },
     function(probedConfig) {
-      // Probing succeded: found open protocols, yay!
+      // Probing succeeded: found open protocols, yay!
       successCallback(probedConfig);
     },
     function(e, probedConfig) {
       // Probing didn't find any open protocols.
       // Let's use the exchange (only) config that was listed then.
       successCallback(config);
     },
     config2,
--- a/mail/components/accountcreation/content/guessConfig.js
+++ b/mail/components/accountcreation/content/guessConfig.js
@@ -1098,17 +1098,17 @@ SSLErrorHandler.prototype = {
   },
 };
 
 // -----------
 // Socket Util
 
 /**
  * @param hostname {String} The DNS hostname to connect to.
- * @param port {Integer} The numberic port to connect to on the host.
+ * @param port {Integer} The numeric port to connect to on the host.
  * @param ssl {Integer} SSL, TLS or NONE
  * @param commands {Array of String}: protocol commands
  *          to send to the server.
  * @param timeout {Integer} seconds to wait for a server response, then cancel.
  * @param proxy {nsIProxyInfo} The proxy to use (or null to not use any).
  * @param sslErrorHandler {SSLErrorHandler}
  * @param resultCallback {function(wiredata)} This function will
  *            be called with the result string array from the server
--- a/mail/components/activity/nsIActivity.idl
+++ b/mail/components/activity/nsIActivity.idl
@@ -480,13 +480,13 @@ interface nsIActivityListener : nsISuppo
                          in unsigned long aWorkUnitsCompleted,
                          in unsigned long aTotalWorkUnits);
 
   /**
    * Triggered after one of the activity handler is set.
    *
    * This is mostly used to update the UI of the activity when
    * one of the handler is set to null after the operation is completed.
-   * For example after the activity is undoed, to make the undo button
+   * For example after the activity is undone, to make the undo button
    * invisible.
    */
   void onHandlerChanged(in nsIActivity aActivity);
 };
--- a/mail/components/addrbook/content/abCommon.js
+++ b/mail/components/addrbook/content/abCommon.js
@@ -156,17 +156,17 @@ var DirPaneController = {
           }
         });
         return enabled;
       }
       case "cmd_abToggleStartupDir":
         return !!getSelectedDirectoryURI();
       case "cmd_rename":
         let selectedDirectoryURI = getSelectedDirectoryURI();
-        // Prevent the renaming of Personal Address Book, Collected Addressses and All Address Books directories
+        // Prevent the renaming of Personal Address Book, Collected Addresses and All Address Books directories
         if (
           !selectedDirectoryURI ||
           selectedDirectoryURI == kAllDirectoryRoot + "?" ||
           selectedDirectoryURI == kPersonalAddressbookURI ||
           selectedDirectoryURI == kCollectedAddressbookURI
         ) {
           return false;
         }
--- a/mail/components/addrbook/content/abTrees.js
+++ b/mail/components/addrbook/content/abTrees.js
@@ -223,17 +223,17 @@ directoryTreeView.prototype = {
   /**
    * Returns true if the selected directory is inline-editable.
    * @param {int} aRow - the row index of the selected dir/mail list.
    * @param {int} aCol - not used a directories are represented as rows only.
    */
   isEditable(aRow, aCol) {
     let selectedDirectory = this.getDirectoryAtIndex(aRow);
 
-    // Prevent the renaming of Personal Address Book, Collected Addressses
+    // Prevent the renaming of Personal Address Book, Collected Addresses
     // and All Address Books directories.
     if (
       !selectedDirectory ||
       selectedDirectory.URI == kAllDirectoryRoot + "?" ||
       selectedDirectory.URI == kPersonalAddressbookURI ||
       selectedDirectory.URI == kCollectedAddressbookURI
     ) {
       return false;
--- a/mail/components/compose/content/MsgComposeCommands.js
+++ b/mail/components/compose/content/MsgComposeCommands.js
@@ -8000,17 +8000,17 @@ function SetFocusOnPreviousAvailableElem
     if (!element.classList.contains("hidden")) {
       element
         .querySelector(`input[is="autocomplete-input"][recipienttype]`)
         .focus();
       return;
     }
   }
 
-  // If a previous address row is abailable and not hidden,
+  // If a previous address row is available and not hidden,
   // focus on the autocomplete input field.
   let previousRow = element.closest(".address-row").previousElementSibling;
   while (previousRow) {
     if (!previousRow.classList.contains("hidden")) {
       previousRow
         .querySelector(`input[is="autocomplete-input"][recipienttype]`)
         .focus();
       return;
@@ -8024,17 +8024,17 @@ function SetFocusOnPreviousAvailableElem
 
 /**
  * Find the closest visible next element in the list of recipients
  * and move the focus on its autocomplete input field.
  *
  * @param {HTMLElement} element - The currently focused element.
  */
 function SetFocusOnNextAvailableElement(element) {
-  // If a next address row is abailable and not hidden,
+  // If a next address row is available and not hidden,
   // focus on the autocomplete input field.
   let nextRow = element.closest(".address-row").nextElementSibling;
   while (nextRow) {
     if (!nextRow.classList.contains("hidden")) {
       nextRow
         .querySelector(`input[is="autocomplete-input"][recipienttype]`)
         .focus();
       return;
--- a/mail/components/compose/content/addressingWidgetOverlay.js
+++ b/mail/components/compose/content/addressingWidgetOverlay.js
@@ -206,17 +206,17 @@ function CompFields2Recipients(msgCompFi
     if (gCurrentIdentity) {
       addRecipientsToIgnoreList(gCurrentIdentity.fullAddress);
     }
   }
 }
 
 /**
  * Update the recipients area UI to show News related fields and hide
- * Mail releated fields.
+ * Mail related fields.
  */
 function updateUIforNNTPAccount() {
   // Hide the `mail-primary-input` field row if no pills have been created.
   let mailContainer = document
     .querySelector(".mail-primary-input")
     .closest(".address-container");
   if (mailContainer.querySelectorAll("mail-address-pill").length == 0) {
     mailContainer
@@ -258,17 +258,17 @@ function updateUIforNNTPAccount() {
   let extraRecipients = document.querySelector(".address-extra-recipients");
   for (let label of document.querySelectorAll(".news-label")) {
     extraRecipients.prepend(label);
   }
 }
 
 /**
  * Update the recipients area UI to show Mail related fields and hide
- * News releated fields. This method is called only if the UI was previously
+ * News related fields. This method is called only if the UI was previously
  * updated to accommodate a News account type.
  */
 function updateUIforIMAPAccount() {
   // Show the `mail-primary-input` field row if not already visible.
   let mailContainer = document
     .querySelector(".mail-primary-input")
     .closest(".address-row");
   if (mailContainer.classList.contains("hidden")) {
--- a/mail/components/enterprisepolicies/helpers/ProxyPolicies.jsm
+++ b/mail/components/enterprisepolicies/helpers/ProxyPolicies.jsm
@@ -18,17 +18,17 @@ XPCOMUtils.defineLazyGetter(this, "log",
     prefix: "ProxyPolicies.jsm",
     // tip: set maxLogLevel to "debug" and use log.debug() to create detailed
     // messages during development. See LOG_LEVELS in Console.jsm for details.
     maxLogLevel: "error",
     maxLogLevelPref: PREF_LOGLEVEL,
   });
 });
 
-// Don't use const here because this is acessed by
+// Don't use const here because this is accessed by
 // tests through the BackstagePass object.
 var PROXY_TYPES_MAP = new Map([
   ["none", Ci.nsIProtocolProxyService.PROXYCONFIG_DIRECT],
   ["system", Ci.nsIProtocolProxyService.PROXYCONFIG_SYSTEM],
   ["manual", Ci.nsIProtocolProxyService.PROXYCONFIG_MANUAL],
   ["autoDetect", Ci.nsIProtocolProxyService.PROXYCONFIG_WPAD],
   ["autoConfig", Ci.nsIProtocolProxyService.PROXYCONFIG_PAC],
 ]);
--- a/mail/components/extensions/test/browser/browser_ext_menus_replace_menu_context.js
+++ b/mail/components/extensions/test/browser/browser_ext_menus_replace_menu_context.js
@@ -16,17 +16,17 @@ function checkIsDefaultMenuItemVisible(v
     visibleMenuItemIds.includes("mailContext-copylink"),
     `The default 'Copy Link Location' menu item should be in ${visibleMenuItemIds}.`
   );
 }
 
 // Tests that the context of an extension menu can be changed to:
 // - tab
 add_task(async function overrideContext_with_context() {
-  // Background script of the main test extension and the auxilary other extension.
+  // Background script of the main test extension and the auxiliary other extension.
   function background() {
     const HTTP_URL = "http://example.com/?SomeTab";
     browser.test.onMessage.addListener(async (msg, tabId) => {
       browser.test.assertEq(
         "testTabAccess",
         msg,
         `Expected message in ${browser.runtime.id}`
       );
--- a/mail/components/im/content/imStatusSelector.js
+++ b/mail/components/im/content/imStatusSelector.js
@@ -263,17 +263,17 @@ var statusSelector = {
           "value",
           displayName.getAttribute("value")
         );
       }
       displayNameInput.addEventListener("keypress", this.displayNameKeyPress);
       displayNameInput.addEventListener("blur", event => {
         this.finishEditDisplayName(true);
       });
-      // force binding attachmant by forcing layout
+      // force binding attachment by forcing layout
       displayNameInput.getBoundingClientRect();
       displayNameInput.select();
     }
 
     this.displayNameRefreshTimer();
   },
 
   _stopEditDisplayNameTimeout: 0,
--- a/mail/components/migration/src/nsSeamonkeyProfileMigrator.cpp
+++ b/mail/components/migration/src/nsSeamonkeyProfileMigrator.cpp
@@ -384,17 +384,17 @@ nsresult nsSeamonkeyProfileMigrator::Cop
   uint32_t count = aIdentities.Length();
   for (uint32_t i = 0; i < count; ++i) {
     PrefBranchStruct* pref = aIdentities.ElementAt(i);
     nsDependentCString prefName(pref->prefName);
 
     // a partial fix for bug #255043
     // if the user's signature file from seamonkey lives in the
     // seamonkey profile root, we'll copy it over to the new
-    // thunderbird profile root and thenn set the pref to the new value
+    // thunderbird profile root and then set the pref to the new value
     // note, this doesn't work for multiple signatures that live
     // below the seamonkey profile root
     if (StringEndsWith(prefName, nsDependentCString(".sig_file"))) {
       // turn the pref into a nsIFile
       nsCOMPtr<nsIFile> srcSigFile =
           do_CreateInstance(NS_LOCAL_FILE_CONTRACTID);
       rv = srcSigFile->SetPersistentDescriptor(
           nsDependentCString(pref->stringValue));
--- a/mail/components/preferences/cookies.js
+++ b/mail/components/preferences/cookies.js
@@ -159,17 +159,17 @@ var gCookiesWindow = {
   },
 
   _handleCookieAdded(changedCookie, strippedHost) {
     var rowCountImpact = 0;
     var addedHost = { value: 0 };
     this._addCookie(strippedHost, changedCookie, addedHost);
     if (!this._view._filtered) {
       // The Host collection for this cookie already exists, and it's not open,
-      // so don't increment the rowCountImpact becaues the user is not going to
+      // so don't increment the rowCountImpact because the user is not going to
       // see the additional rows as they're hidden.
       if (addedHost.value || this._hosts[strippedHost].open) {
         ++rowCountImpact;
       }
     } else {
       // We're in search mode, and the cookie being added matches
       // the search condition, so add it to the list.
       var c = this._makeCookieObject(strippedHost, changedCookie);
--- a/mail/components/shell/nsIShellService.idl
+++ b/mail/components/shell/nsIShellService.idl
@@ -16,17 +16,17 @@ interface nsIShellService : nsISupports
   const unsigned short NEWS = 0x0002;
   const unsigned short RSS  = 0x0004;
 
   /**
    * Determines whether or not Thunderbird is the "Default Client" for the
    * passed in app type.
    *
    * This is simply whether or not Thunderbid is registered to handle
-   * the url scheme associatd with the app.
+   * the url scheme associated with the app.
    *
    * @param aStartupCheck true if this is the check being performed
    *                      by the first mail window at startup,
    *                      false otherwise.
    * @param aApps the application types being tested (Mail, News, RSS, etc.)
    */
   boolean isDefaultClient(in boolean aStartupCheck, in unsigned short aApps);
 
--- a/mail/test/browser/composition/browser_blockedContent.js
+++ b/mail/test/browser/composition/browser_blockedContent.js
@@ -92,17 +92,17 @@ add_task(function test_paste_file_urls()
     })
     .then(function() {
       tmpFile = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
       tmpFile.initWithPath(dest);
       Assert.ok(tmpFile.exists(), "tmpFile's not there at " + dest);
 
       tmpFileURL = fileHandler.getURLSpecFromFile(tmpFile);
       putHTMLOnClipboard(
-        "<img id='bad-img' src='file://foo/non-existant' alt='bad' /> and " +
+        "<img id='bad-img' src='file://foo/non-existent' alt='bad' /> and " +
           "<img id='tmp-img' src='" +
           tmpFileURL +
           "' alt='tmp' />"
       );
 
       cwc.e("content-frame").focus();
       // Ctrl+V = Paste
       cwc.keypress(null, "v", { shiftKey: false, accelKey: true });
@@ -125,18 +125,18 @@ add_task(function test_paste_file_urls()
   cwc.window.goDoCommand("cmd_sendLater");
   wait_for_window_close();
 
   be_in_folder(gOutboxFolder);
   let outMsg = select_click_row(0);
   let outMsgContent = get_msg_source(outMsg);
 
   Assert.ok(
-    outMsgContent.includes("file://foo/non-existant"),
-    "non-existant file not in content=" + outMsgContent
+    outMsgContent.includes("file://foo/non-existent"),
+    "non-existent file not in content=" + outMsgContent
   );
 
   Assert.ok(
     !outMsgContent.includes(tmpFileURL),
     "tmp file url still in content=" + outMsgContent
   );
 
   Assert.ok(
--- a/mail/test/browser/composition/browser_focus.js
+++ b/mail/test/browser/composition/browser_focus.js
@@ -24,17 +24,17 @@ var { mc } = ChromeUtils.import(
  * @param controller the compose window controller
  * @param attachmentsExpanded true if the attachment pane is expanded
  * @param ctrlTab true if we should use Ctrl+Tab to cycle, false if we should
  *                use F6
  */
 function check_element_cycling(controller, attachmentsExpanded, ctrlTab) {
   // Make sure the accessibility tabfocus is set to 7 to enable normal Tab
   // focus on non-input field elements. This is necessary only for macOS as
-  // the dafault value is 2 instead of the default 7 used on Windows and Linux.
+  // the default value is 2 instead of the default 7 used on Windows and Linux.
   Services.prefs.setIntPref("accessibility.tabfocus", 7);
 
   let addressingElement = controller.e("toAddrInput");
   let subjectElement = controller.e("msgSubject");
   let attachmentElement = controller.e("attachmentBucket");
   let editorElement = controller.e("content-frame");
   let identityElement = controller.e("msgIdentity");
   let extraRecipientsLabel = controller.e("extraRecipientsLabel");
--- a/mail/test/browser/newmailaccount/browser_newmailaccount.js
+++ b/mail/test/browser/newmailaccount/browser_newmailaccount.js
@@ -1174,17 +1174,17 @@ add_task(function test_disabled_fields_w
   open_provisioner_window();
   wait_for_modal_dialog("AccountCreation");
 });
 
 /**
  * Subtest for test_disabled_fields_when_searching. Sets up a fake HTTP server
  * that slowly returns a search suggestion, and then checks to ensure all the
  * right fields are disabled (search input, search button, all check boxes).
- * We also make sure those fields are renabled once the test is completed.
+ * We also make sure those fields are re-enabled once the test is completed.
  */
 function subtest_disabled_fields_when_searching(aController) {
   const kSuggestPath = "/slowSuggest";
   const kSearchMSeconds = 2000;
   let timer;
 
   function slow_results(aRequest, aResponse) {
     aResponse.processAsync();
--- a/mail/test/browser/shared-modules/AccountManagerHelpers.jsm
+++ b/mail/test/browser/shared-modules/AccountManagerHelpers.jsm
@@ -67,17 +67,17 @@ function open_mail_account_setup_wizard(
   wh.plan_for_modal_dialog("mail:autoconfig", callback);
   mc.click(new elib.Elem(mc.menus.menu_File.menu_New.newMailAccountMenuItem));
   return wh.wait_for_modal_dialog("mail:autoconfig", 30000);
 }
 
 /**
  * Click a row in the account settings tree.
  *
- * @param {Object} tab - The account manger tab controller that opened.
+ * @param {Object} tab - The account manager tab controller that opened.
  * @param {Number} rowIndex - The row to click.
  */
 function click_account_tree_row(tab, rowIndex) {
   utils.waitFor(
     () => tab.browser.contentWindow.currentAccount != null,
     "Timeout waiting for currentAccount to become non-null"
   );
 
@@ -158,17 +158,17 @@ function get_account_tree_row(accountKey
   dump("The treerow for account " + accountKey + " was not found!\n");
   return -1;
 }
 
 /**
  * Remove an account via the account manager UI.
  *
  * @param {Object} account - The account to remove.
- * @param {Object} tab - The account manger tab that opened.
+ * @param {Object} tab - The account manager tab that opened.
  * @param {boolean} removeAccount - Remove the account itself.
  * @param {boolean} removeData - Remove the message data of the account.
  */
 function remove_account(
   account,
   tab,
   removeAccount = true,
   removeData = false
--- a/mail/test/browser/shared-modules/FolderDisplayHelpers.jsm
+++ b/mail/test/browser/shared-modules/FolderDisplayHelpers.jsm
@@ -2244,17 +2244,17 @@ function toggle_message_pane() {
   mc.keypress(null, "VK_F8", {});
   if (expectMessageDisplay) {
     wait_for_message_display_completion(mc, true);
   }
 }
 
 /**
  * Make the folder pane visible in order to run tests.
- * This is necessary as the FolderPane is collpased if no account is available.
+ * This is necessary as the FolderPane is collapsed if no account is available.
  */
 function show_folder_pane() {
   mc.e("folderPaneBox").collapsed = false;
 }
 
 /**
  * Helper function for use by assert_selected / assert_selected_and_displayed /
  *  assert_displayed.
--- a/mail/test/browser/shared-modules/SubscribeWindowHelpers.jsm
+++ b/mail/test/browser/shared-modules/SubscribeWindowHelpers.jsm
@@ -25,17 +25,17 @@ var mc = folderDisplayHelper.mc;
 /**
  * Open a subscribe dialog from the context menu.
  *
  * @param aFolder the folder to open the subscribe dialog for
  * @param aFunction Callback that will be invoked with a controller
  *        for the subscribe dialogue as parameter
  */
 function open_subscribe_window_from_context_menu(aFolder, aFunction) {
-  // Make the folder pane visible as it starts collpased when no accounts are
+  // Make the folder pane visible as it starts collapsed when no accounts are
   // available on startup.
   mc.e("folderPaneBox").collapsed = false;
 
   folderDisplayHelper.right_click_on_folder(aFolder);
   let callback = function(controller) {
     // When the "stop button" is disabled, the panel is populated.
     controller.waitFor(() => controller.e("stopButton").disabled);
     aFunction(controller);
--- a/mail/test/static/browser_parsable_css.js
+++ b/mail/test/static/browser_parsable_css.js
@@ -297,17 +297,17 @@ function processCSSRules(sheet) {
     if (!(rule instanceof CSSStyleRule) && !(rule instanceof CSSKeyframeRule)) {
       continue;
     }
 
     // Extract urls from the css text.
     // Note: CSSRule.cssText always has double quotes around URLs even
     //       when the original CSS file didn't.
     let urls = rule.cssText.match(/url\("[^"]*"\)/g);
-    // Extract props by searching all "--" preceeded by "var(" or a non-word
+    // Extract props by searching all "--" preceded by "var(" or a non-word
     // character.
     let props = rule.cssText.match(/(var\(|\W)(--[\w\-]+)/g);
     if (!urls && !props) {
       continue;
     }
 
     for (let url of urls || []) {
       // Remove the url(" prefix and the ") suffix.
--- a/mail/test/static/browser_parsable_script.js
+++ b/mail/test/static/browser_parsable_script.js
@@ -99,17 +99,17 @@ function parsePromise(uri, parseTarget) 
     xhr.send(null);
   });
   return promise;
 }
 
 add_task(async function checkAllTheJS() {
   // In debug builds, even on a fast machine, collecting the file list may take
   // more than 30 seconds, and parsing all files may take four more minutes.
-  // For this reason, this test must be explictly requested in debug builds by
+  // For this reason, this test must be explicitly requested in debug builds by
   // using the "--setpref parse=<filter>" argument to mach.  You can specify:
   //  - A case-sensitive substring of the file name to test (slow).
   //  - A single absolute URI printed out by a previous run (fast).
   //  - An empty string to run the test on all files (slowest).
   let parseRequested = Services.prefs.prefHasUserValue("parse");
   let parseValue = parseRequested && Services.prefs.getCharPref("parse");
   if (SpecialPowers.isDebugBuild) {
     if (!parseRequested) {
--- a/mail/themes/osx/mail/accountCentral.css
+++ b/mail/themes/osx/mail/accountCentral.css
@@ -4,11 +4,11 @@
 
 /* ===== accountCentral.css ==========================================
   == Styles for the Messenger Account Central panel.
   ======================================================================= */
 
 @import url("chrome://messenger/skin/shared/accountCentral.css");
 
 #accountName {
-  /* Prevents UI jumping when dinamically changing the content. */
+  /* Prevents UI jumping when dynamically changing the content. */
   min-height: 17px;
 }
--- a/mail/themes/shared/mail/accountCentral.css
+++ b/mail/themes/shared/mail/accountCentral.css
@@ -151,17 +151,17 @@ aside.settings-btn-container {
 
 #accountName {
   font-size: 1.2em;
   font-weight: 600;
   text-overflow: ellipsis;
   white-space: nowrap;
   overflow: hidden;
   margin-block: 0;
-  /* Prevents UI jumping when dinamically changing the content. */
+  /* Prevents UI jumping when dynamically changing the content. */
   min-height: 21px;
 }
 
 .account-central-version {
   display: flex;
   align-items: center;
   flex-shrink: 0;
   font-size: small;
@@ -211,17 +211,17 @@ aside.settings-btn-container {
   margin-block-start: 20px;
 }
 
 .section-title {
   font-size: larger;
   font-weight: 600;
   color: var(--title-color);
   margin-block: 10px 20px;
-  /* Prevents UI jumping when dinamically changing the content. */
+  /* Prevents UI jumping when dynamically changing the content. */
   min-height: 21px;
 }
 
 .row-container {
   margin-inline: -10px;
   display: flex;
   flex-wrap: wrap;
 }
--- a/mailnews/addrbook/jsaddrbook/CardDAVDirectory.jsm
+++ b/mailnews/addrbook/jsaddrbook/CardDAVDirectory.jsm
@@ -527,17 +527,17 @@ class CardDAVDirectory extends AddrBookD
                 function copyHeader(aHdr) {
                   try {
                     let hdrValue = oldChannel.getRequestHeader(aHdr);
                     if (hdrValue) {
                       newChannel.setRequestHeader(aHdr, hdrValue, false);
                     }
                   } catch (e) {
                     if (e.result != Cr.NS_ERROR_NOT_AVAILABLE) {
-                      // The header could possibly not be availible, ignore that
+                      // The header could possibly not be available, ignore that
                       // case but throw otherwise
                       throw e;
                     }
                   }
                 }
 
                 // Make sure we can get/set headers on both channels.
                 newChannel.QueryInterface(Ci.nsIHttpChannel);
--- a/mailnews/base/content/folderProps.js
+++ b/mailnews/base/content/folderProps.js
@@ -414,17 +414,17 @@ function hideShowControls(serverType) {
         hideForBool = true;
         break;
       }
     }
     control.hidden = hideForBool;
   }
 
   // hide the privileges button if the imap folder doesn't have an admin url
-  // mabye should leave this hidden by default and only show it in this case instead
+  // maybe should leave this hidden by default and only show it in this case instead
   try {
     var imapFolder = gMsgFolder.QueryInterface(Ci.nsIMsgImapMailFolder);
     if (imapFolder) {
       var privilegesButton = document.getElementById("imap.FolderPrivileges");
       if (privilegesButton) {
         if (!imapFolder.hasAdminUrl) {
           privilegesButton.setAttribute("hidden", "true");
         }
--- a/mailnews/base/public/nsIMsgAsyncPrompter.idl
+++ b/mailnews/base/public/nsIMsgAsyncPrompter.idl
@@ -3,17 +3,17 @@
  * 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/. */
 
 #include "nsISupports.idl"
 
 interface nsIMsgAsyncPromptListener;
 
 /**
- * The nsIMsgAsyncPrompter is intended to provide a way to make asynchoronous
+ * The nsIMsgAsyncPrompter is intended to provide a way to make asynchronous
  * message prompts into synchronous ones - so that the user is only prompted
  * with one at a time.
  */
 [scriptable, uuid(15f67d0f-947a-4a1e-8f72-6ab7162b4b9c)]
 interface nsIMsgAsyncPrompter : nsISupports {
   /**
    * Queues an async prompt request. If there are none queued then this will be
    * actioned straight away, otherwise the prompt will be queued for action
--- a/mailnews/base/public/nsMsgGroupnameFlags.h
+++ b/mailnews/base/public/nsMsgGroupnameFlags.h
@@ -18,17 +18,17 @@
 #define MSG_GROUPNAME_FLAG_MODERATED 0x0020
 
 /* Whether this folder represents a subscribed newsgroup. */
 #define MSG_GROUPNAME_FLAG_SUBSCRIBED 0x0040
 
 /* A newsgroup which has just been added by the `Check New Groups` command. */
 #define MSG_GROUPNAME_FLAG_NEW_GROUP 0x0080
 
-/* Whether there are children of this group. Whether those chilren are visible
+/* Whether there are children of this group. Whether those children are visible
    in this list is determined by the above "ELIDED" flag. Setting this to the
    same value as an nsMsgFolderFlags IMAP server, since an IMAP _server_ will
    never appear in the subscribe pane. */
 #define MSG_GROUPNAME_FLAG_HASCHILDREN 0x40000
 
 /* folder is an IMAP personal folder */
 #define MSG_GROUPNAME_FLAG_IMAP_PERSONAL 0x80000
 
--- a/mailnews/base/search/public/nsMsgSearchAdapter.h
+++ b/mailnews/base/search/public/nsMsgSearchAdapter.h
@@ -98,17 +98,17 @@ class nsMsgSearchAdapter : public nsIMsg
 
 //-----------------------------------------------------------------------------
 // Validity checking for attrib/op pairs. We need to know what operations are
 // legal in three places:
 //   1. when the FE brings up the dialog box and needs to know how to build
 //      the menus and enable their items
 //   2. when the FE fires off a search, we need to check their lists for
 //      correctness
-//   3. for on-the-fly capability negotion e.g. with XSEARCH-capable news
+//   3. for on-the-fly capability negotiation e.g. with XSEARCH-capable news
 //      servers
 //-----------------------------------------------------------------------------
 
 class nsMsgSearchValidityTable final : public nsIMsgSearchValidityTable {
  public:
   nsMsgSearchValidityTable();
   NS_DECL_NSIMSGSEARCHVALIDITYTABLE
   NS_DECL_ISUPPORTS
--- a/mailnews/base/search/src/nsMsgImapSearch.cpp
+++ b/mailnews/base/search/src/nsMsgImapSearch.cpp
@@ -106,17 +106,17 @@ nsresult nsMsgSearchOnlineMail::Encode(n
   //    plain "true" in the if().
 
   const char16_t* usAsciiCharSet = u"us-ascii";
   // Get the optional CHARSET parameter, in case we need it.
   char* csname = GetImapCharsetParam(asciiOnly ? usAsciiCharSet : destCharset);
 
   // We do not need "srcCharset" since the search term in always unicode.
   // I just pass destCharset for both src and dest charset instead of removing
-  // srcCharst from the arguemnt.
+  // srcCharst from the argument.
   nsresult err = nsMsgSearchAdapter::EncodeImap(
       getter_Copies(imapTerms), searchTerms,
       asciiOnly ? usAsciiCharSet : destCharset,
       asciiOnly ? usAsciiCharSet : destCharset, false);
   if (NS_SUCCEEDED(err)) {
     pEncoding.AppendLiteral("SEARCH");
     if (csname) pEncoding.Append(csname);
     pEncoding.Append(imapTerms);
--- a/mailnews/base/search/src/nsMsgLocalSearch.cpp
+++ b/mailnews/base/search/src/nsMsgLocalSearch.cpp
@@ -191,17 +191,17 @@ int32_t nsMsgSearchBoolExpression::CalcE
            m_rightChild->CalcEncodeStrSize();
   if (m_boolOp == nsMsgSearchBooleanOp::BooleanAND)
     return sizeOfANDTerm + m_leftChild->CalcEncodeStrSize() +
            m_rightChild->CalcEncodeStrSize();
   return 0;
 }
 
 void nsMsgSearchBoolExpression::GenerateEncodeStr(nsCString* buffer)
-// recurively combine sub expressions to form a single IMAP/NNTP encoded string
+// recursively combine sub expressions to form a single IMAP/NNTP encoded string
 {
   if ((!m_term && (!m_leftChild || !m_rightChild)))  // is expression empty?
     return;
 
   if (m_term)  // are we a leaf expression?
   {
     *buffer += m_encodingStr;
     return;
--- a/mailnews/base/src/nsMessenger.cpp
+++ b/mailnews/base/src/nsMessenger.cpp
@@ -1958,17 +1958,17 @@ NS_IMETHODIMP nsMessenger::OnItemRemoved
   if (msgHdr) {
     nsCOMPtr<nsIMsgFolder> folder;
     msgHdr->GetFolder(getter_AddRefs(folder));
     if (folder) {
       nsCString msgUri;
       nsMsgKey msgKey;
       msgHdr->GetMessageKey(&msgKey);
       folder->GenerateMessageURI(msgKey, msgUri);
-      // need to remove the correspnding folder entry, and
+      // need to remove the corresponding folder entry, and
       // adjust the current history pos.
       size_t uriPos = mLoadedMsgHistory.IndexOf(msgUri);
       if (uriPos != mLoadedMsgHistory.NoIndex) {
         mLoadedMsgHistory.RemoveElementAt(uriPos);
         mLoadedMsgHistory.RemoveElementAt(uriPos);  // and the folder uri entry
         if (mCurHistoryPos >= (int32_t)uriPos) mCurHistoryPos -= 2;
       }
     }
--- a/mailnews/base/util/OAuth2.jsm
+++ b/mailnews/base/util/OAuth2.jsm
@@ -220,17 +220,17 @@ OAuth2.prototype = {
   requestAccessToken(aCode, aRefresh) {
     // @see RFC 6749 section 4.1.3. Access Token Request
     // @see RFC 6749 section 6. Refreshing an Access Token
 
     let data = new URLSearchParams();
     data.append("client_id", this.clientId);
     if (this.consumerSecret !== null) {
       // Section 2.3.1. of RFC 6749 states that empty secrets MAY be omitted
-      // by the client. This OAuth implementation delegates this decission to
+      // by the client. This OAuth implementation delegates this decision to
       // the caller: If the secret is null, it will be omitted.
       data.append("client_secret", this.consumerSecret);
     }
 
     if (aRefresh) {
       this.log.info(
         `Making a refresh request to the token endpoint: ${this.tokenEndpoint}`
       );
--- a/mailnews/base/util/nsMsgI18N.h
+++ b/mailnews/base/util/nsMsgI18N.h
@@ -33,17 +33,17 @@ NS_MSG_BASE char* nsMsgI18NEncodeMimePar
  * Check if given charset is stateful (e.g. ISO-2022-JP).
  *
  * @param charset     [IN] Charset name.
  * @return            True if stateful
  */
 NS_MSG_BASE bool nsMsgI18Nstateful_charset(const char* charset);
 
 /**
- * Check if given charset is multibye (e.g. Shift_JIS, Big5).
+ * Check if given charset is multibyte (e.g. Shift_JIS, Big5).
  *
  * @param charset     [IN] Charset name.
  * @return            True if multibyte
  */
 NS_MSG_BASE bool nsMsgI18Nmultibyte_charset(const char* charset);
 
 /**
  * Check the input (unicode) string is in a range of the given charset after the
--- a/mailnews/base/util/nsMsgProtocol.h
+++ b/mailnews/base/util/nsMsgProtocol.h
@@ -179,17 +179,17 @@ class NS_MSG_BASE nsMsgProtocol : public
                                   nsIPrompt** aPromptDialog);
 
   // if a url isn't going to result in any content then we want to suppress
   // calls to OnStartRequest, OnDataAvailable and OnStopRequest
   bool mSuppressListenerNotifications;
 };
 
 // This is is a subclass of nsMsgProtocol extends the parent class with
-// AsyncWrite support. Protocols like smtp and news want to leverage aysnc
+// AsyncWrite support. Protocols like smtp and news want to leverage async
 // write. We don't want everyone who inherits from nsMsgProtocol to have to pick
 // up the extra overhead.
 class NS_MSG_BASE nsMsgAsyncWriteProtocol : public nsMsgProtocol,
                                             public nsSupportsWeakReference {
  public:
   NS_DECL_ISUPPORTS_INHERITED
 
   NS_IMETHOD Cancel(nsresult status) override;
--- a/mailnews/compose/public/nsIMsgCompose.idl
+++ b/mailnews/compose/public/nsIMsgCompose.idl
@@ -211,17 +211,17 @@ interface nsIMsgCompose : nsIMsgSendList
   readonly attribute boolean composeHTML;
 
   /* ... */
   attribute MSG_ComposeType type;
 
   /* ... */
   readonly attribute long wrapLength;
 
-  /* by reading this value, you can determine if yes or not the message has been mofified
+  /* by reading this value, you can determine if yes or not the message has been modified
      by the user. When you set this value to false, you reset the modification count
      of the body to 0 (clean).
   */
   attribute boolean bodyModified;
 
   /* The body string is stored as a byte string in comp fields, but is converted to
    * UTF16 when fetched by GetBody(). Fetch the body without conversion.
    */
--- a/mailnews/compose/test/unit/test_sendMessageLater2.js
+++ b/mailnews/compose/test/unit/test_sendMessageLater2.js
@@ -1,17 +1,17 @@
 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 /**
  * Complex test for the send message later function - including sending multiple
  * times in the same session.
  *
  * XXX: This test is intended to additionally test sending of multiple messages
  * from one send later instance, however due to the fact we use one connection
  * per message sent, it is very difficult to consistently get the fake server
- * reconected in time for the next connection. Thus, sending of multiple
+ * reconnected in time for the next connection. Thus, sending of multiple
  * messages is currently disabled (but commented out for local testing if
  * required), when we fix bug 136871 we should be able to enable the multiple
  * messages option.
  */
 
 /* import-globals-from ../../../test/resources/logHelper.js */
 /* import-globals-from ../../../test/resources/asyncTestUtils.js */
 load("../../../resources/logHelper.js");
--- a/mailnews/db/gloda/modules/NounMimetype.jsm
+++ b/mailnews/db/gloda/modules/NounMimetype.jsm
@@ -188,17 +188,17 @@ var MimeTypeNoun = {
     if (wildType in this._mimeTypeToCategory) {
       return this._mimeTypeToCategory[wildType][0];
     }
     return this._mimeTypeToCategory["*"][0];
   },
 
   /**
    * In order to allow the gloda query mechanism to avoid hitting the database,
-   *  we need to either define the noun type as cachable and have a super-large
+   *  we need to either define the noun type as cacheable and have a super-large
    *  cache or simply have a collection with every MIME type in it that stays
    *  alive forever.
    * This is that collection.  It is initialized by |_loadMimeTypes|.  As new
    *  MIME types are created, we add them to the collection.
    */
   _universalCollection: null,
 
   /**
--- a/mailnews/db/msgdb/src/nsMsgDatabase.cpp
+++ b/mailnews/db/msgdb/src/nsMsgDatabase.cpp
@@ -4443,17 +4443,17 @@ NS_IMETHODIMP nsMsgDatabase::GetNextPseu
 NS_IMETHODIMP nsMsgDatabase::SetNextPseudoMsgKey(nsMsgKey nextPseudoMsgKey) {
   m_nextPseudoMsgKey = nextPseudoMsgKey;
   return NS_OK;
 }
 
 NS_IMETHODIMP nsMsgDatabase::GetNextFakeOfflineMsgKey(
     nsMsgKey* nextFakeOfflineMsgKey) {
   NS_ENSURE_ARG_POINTER(nextFakeOfflineMsgKey);
-  // iterate over hdrs looking for first non-existant fake offline msg key
+  // iterate over hdrs looking for first non-existent fake offline msg key
   nsMsgKey fakeMsgKey = kIdStartOfFake;
 
   bool containsKey;
   do {
     ContainsKey(fakeMsgKey, &containsKey);
     if (!containsKey) break;
     fakeMsgKey--;
   } while (containsKey);
--- a/mailnews/extensions/mailviews/src/nsMsgMailViewList.cpp
+++ b/mailnews/extensions/mailviews/src/nsMsgMailViewList.cpp
@@ -232,17 +232,17 @@ nsresult nsMsgMailViewList::LoadMailView
 
     // now copy the file over to the profile directory
     defaultMessagesFile->CopyToNative(profileDir, EmptyCString());
   }
   // this is kind of a hack but I think it will be an effective hack. The filter
   // service already knows how to take a nsIFile and parse the contents into
   // filters which are very similar to mail views. Instead of re-writing all of
   // that dirty parsing code, let's just re-use it then convert the results into
-  // a data strcuture we wish to give to our consumers.
+  // a data structure we wish to give to our consumers.
 
   nsCOMPtr<nsIMsgFilterService> filterService =
       do_GetService(NS_MSGFILTERSERVICE_CONTRACTID, &rv);
   nsCOMPtr<nsIMsgFilterList> mfilterList;
 
   rv = filterService->OpenFilterList(file, nullptr, nullptr,
                                      getter_AddRefs(mFilterList));
   NS_ENSURE_SUCCESS(rv, rv);
--- a/mailnews/extensions/newsblog/content/Feed.js
+++ b/mailnews/extensions/newsblog/content/Feed.js
@@ -262,17 +262,17 @@ Feed.prototype = {
             errType +
             ":" +
             errName +
             ":" +
             request.status
         );
         if (errType == "SecurityCertificate") {
           // This is the code for nsINSSErrorsService.ERROR_CLASS_BAD_CERT
-          // overrideable security certificate errors.
+          // overridable security certificate errors.
           error = FeedUtils.kNewsBlogBadCertError;
         }
 
         if (request.status == 401 || request.status == 403) {
           // Unauthorized or Forbidden.
           error = FeedUtils.kNewsBlogNoAuthError;
         }
 
--- a/mailnews/imap/public/nsIImapMailFolderSink.idl
+++ b/mailnews/imap/public/nsIImapMailFolderSink.idl
@@ -54,17 +54,17 @@ interface nsIImapMailFolderSink : nsISup
    */
   attribute boolean folderQuotaCommandIssued;
 
   /**
    * Set FolderQuotaData information
    * @param aAction             Invalidate, store or validate the quota data.
    *                            Remaining params are relevant only for store.
    * @param aFolderQuotaRoot    The IMAP quotaroot and resource names for this
-   *                            folder separted by a slash as obtained from the
+   *                            folder separated by a slash as obtained from the
    *                            GETQUOTAROOT IMAP command response.
    * @param aFolderQuotaUsage   Amount of resourse in use, in KB for STORAGE
    *                            resource.
    * @param aFolderQuotaLimit   Maximum usage allowed for this resource.
    **/
   void setFolderQuotaData(
       in unsigned long aAction, in ACString aFolderQuotaRoot,
       in unsigned long aFolderQuotaUsed, in unsigned long aFolderQuotaLimit);
--- a/mailnews/imap/src/nsImapMailFolder.cpp
+++ b/mailnews/imap/src/nsImapMailFolder.cpp
@@ -8020,17 +8020,17 @@ NS_IMETHODIMP nsImapMailFolder::SetFolde
       break;
     case kStoreQuota:
       // Store folder's quota data to an array. This will occur zero or more
       // times for a folder.
       m_folderQuota.AppendElement(new nsMsgQuota(
           aFolderQuotaRoot, aFolderQuotaUsage, aFolderQuotaLimit));
       break;
     case kValidateQuota:
-      // GETQUOTAROOT command was successful and OK response has occcured. This
+      // GETQUOTAROOT command was successful and OK response has occurred. This
       // indicates that all the untagged QUOTA responses have occurred so mark
       // as valid.
       m_folderQuotaDataIsValid = true;
       break;
     default:
       // Called with undefined aAction parameter.
       NS_ASSERTION(false, "undefined action");
   }
--- a/mailnews/imap/src/nsImapProtocol.cpp
+++ b/mailnews/imap/src/nsImapProtocol.cpp
@@ -6649,17 +6649,17 @@ bool nsImapProtocol::RenameHierarchyByHa
         PR_FREEIF(currentName);
         currentName = serverName;
       }
 
       // calculate the new name and do the rename
       nsCString newChildName(newParentMailboxName);
       newChildName += (currentName + PL_strlen(oldParentMailboxName));
       // Pass in 'nonHierarchicalRename' to determine if we should really
-      // reanme, or just move subscriptions.
+      // rename, or just move subscriptions.
       renameSucceeded = RenameMailboxRespectingSubscriptions(
           currentName, newChildName.get(), nonHierarchicalRename);
       PR_FREEIF(currentName);
     }
 
     delete m_deletableChildren;
     m_deletableChildren = nullptr;
   }
--- a/mailnews/imap/src/nsImapProtocol.h
+++ b/mailnews/imap/src/nsImapProtocol.h
@@ -512,17 +512,17 @@ class nsImapProtocol : public nsIImapPro
   ////////////////////////////////////////////////////////////////////////////////////////
   // Communication methods --> Reading and writing protocol
   ////////////////////////////////////////////////////////////////////////////////////////
 
   // SendData not only writes the NULL terminated data in dataBuffer to our
   // output stream but it also informs the consumer that the data has been
   // written to the stream. aSuppressLogging --> set to true if you wish to
   // suppress logging for this particular command. this is useful for making
-  // sure we don't log authenication information like the user's password (which
+  // sure we don't log authentication information like the user's password (which
   // was encoded anyway), but still we shouldn't add that information to the
   // log.
   nsresult SendData(const char* dataBuffer,
                     bool aSuppressLogging = false) override;
 
   // state ported over from 4.5
   bool m_pseudoInterrupted;
   bool m_active;
--- a/mailnews/imap/src/nsImapServerResponseParser.cpp
+++ b/mailnews/imap/src/nsImapServerResponseParser.cpp
@@ -127,17 +127,17 @@ void nsImapServerResponseParser::Initial
 //           response-data = "*" SP (resp-cond-state / resp-cond-bye /
 //                           mailbox-data / message-data / capability-data) CRLF
 //           continue-req    = "+" SP (resp-text / base64) CRLF
 void nsImapServerResponseParser::ParseIMAPServerResponse(
     const char* aCurrentCommand, bool aIgnoreBadAndNOResponses,
     char* aGreetingWithCapability) {
   NS_ASSERTION(aCurrentCommand && *aCurrentCommand != '\r' &&
                    *aCurrentCommand != '\n' && *aCurrentCommand != ' ',
-               "Invailid command string");
+               "Invalid command string");
   bool sendingIdleDone = !strcmp(aCurrentCommand, "DONE" CRLF);
   if (sendingIdleDone) fWaitingForMoreClientInput = false;
 
   // Reinitialize the parser
   SetConnected(true);
   SetSyntaxError(false);
 
   // Reinitialize our state
--- a/mailnews/imap/test/unit/test_fetchCustomAttribute.js
+++ b/mailnews/imap/test/unit/test_fetchCustomAttribute.js
@@ -61,17 +61,17 @@ function* testFetchCustomValue() {
     msgHdr.messageKey,
     gMsgWindow
   );
   uri.QueryInterface(Ci.nsIMsgMailNewsUrl);
   uri.RegisterListener(fetchCustomValueListener);
   yield false;
 }
 
-// listens for resposne from fetchCustomMsgAttribute request for X-CUSTOM-VALUE
+// listens for response from fetchCustomMsgAttribute request for X-CUSTOM-VALUE
 var fetchCustomValueListener = {
   OnStartRunningUrl(aUrl) {},
 
   OnStopRunningUrl(aUrl, aExitCode) {
     aUrl.QueryInterface(Ci.nsIImapUrl);
     Assert.equal(aUrl.customAttributeResult, gCustomValue);
     async_driver();
   },
--- a/mailnews/jsaccount/modules/JaBaseUrl.jsm
+++ b/mailnews/jsaccount/modules/JaBaseUrl.jsm
@@ -8,17 +8,17 @@ const EXPORTED_SYMBOLS = ["JaBaseUrlProp
 
 const { JSAccountUtils } = ChromeUtils.import(
   "resource:///modules/jsaccount/JSAccountUtils.jsm"
 );
 
 // A partial JavaScript implementation of the base server methods.
 
 const JaBaseUrlProperties = {
-  // The CPP object that delgates to CPP or JS.
+  // The CPP object that delegates to CPP or JS.
   baseContractID: "@mozilla.org/jacppurldelegator;1",
 
   // Interfaces implemented by the base CPP version of this object.
   baseInterfaces: [
     Ci.nsIURI,
     Ci.nsIURL,
     Ci.nsIMsgMailNewsUrl,
     Ci.nsIMsgMessageUrl,
--- a/mailnews/jsaccount/src/JaUrl.cpp
+++ b/mailnews/jsaccount/src/JaUrl.cpp
@@ -112,17 +112,17 @@ NS_IMETHODIMP JaBaseCppUrl::GetNormalize
 
   if (!queryPart.IsEmpty()) spec += NS_LITERAL_CSTRING("?") + queryPart;
 
   aPrincipalSpec.Assign(spec);
   return NS_OK;
 }
 
 NS_IMETHODIMP JaBaseCppUrl::GetMessageHeader(nsIMsgDBHdr** aMessageHeader) {
-  // This routine does a lookup using messenger, assumming that the message URI
+  // This routine does a lookup using messenger, assuming that the message URI
   // has been set in mUri.
   NS_ENSURE_TRUE(!mUri.IsEmpty(), NS_ERROR_NOT_INITIALIZED);
   nsresult rv;
   nsCOMPtr<nsIMessenger> messenger(
       do_CreateInstance(NS_MESSENGER_CONTRACTID, &rv));
   NS_ENSURE_SUCCESS(rv, rv);
   nsCOMPtr<nsIMsgDBHdr> msgHdr;
   rv = messenger->MsgHdrFromURI(mUri, getter_AddRefs(msgHdr));
--- a/mailnews/local/src/nsLocalMailFolder.cpp
+++ b/mailnews/local/src/nsLocalMailFolder.cpp
@@ -2372,17 +2372,17 @@ nsMsgLocalMailFolder::EndMove(bool moveS
   if (!moveSucceeded || mCopyState->m_writeFailed) {
     // Notify that a completion finished.
     nsCOMPtr<nsIMsgFolder> srcFolder =
         do_QueryInterface(mCopyState->m_srcSupport, &rv);
     NS_ENSURE_SUCCESS(rv, rv);
     srcFolder->NotifyFolderEvent(kDeleteOrMoveMsgFailed);
 
     /* passing true because the messages that have been successfully copied have
-       their corressponding hdrs in place. The message that has failed has been
+       their corresponding hdrs in place. The message that has failed has been
        truncated so the msf file and berkeley mailbox are in sync*/
 
     (void)OnCopyCompleted(mCopyState->m_srcSupport, true);
     // enable the dest folder
     EnableNotifications(allMessageCountNotifications, true);
     return NS_OK;
   }
 
--- a/mailnews/local/src/nsMailboxProtocol.cpp
+++ b/mailnews/local/src/nsMailboxProtocol.cpp
@@ -57,17 +57,17 @@ nsresult nsMailboxProtocol::OpenMultiple
 
   nsCOMPtr<nsIInputStream> clonedStream;
   nsCOMPtr<nsIInputStream> replacementStream;
   rv = NS_CloneInputStream(m_multipleMsgMoveCopyStream,
                            getter_AddRefs(clonedStream),
                            getter_AddRefs(replacementStream));
   NS_ENSURE_SUCCESS(rv, rv);
   if (replacementStream) {
-    // If m_multipleMsgMoveCopyStream is not cloneable, NS_CloneInputStream
+    // If m_multipleMsgMoveCopyStream is not clonable, NS_CloneInputStream
     // will clone it using a pipe. In order to keep the copy alive and working,
     // we have to replace the original stream with the replacement.
     m_multipleMsgMoveCopyStream = replacementStream.forget();
   }
   // XXX 64-bit
   // This can be called with size == -1 which means "read as much as we can".
   // We pass this on as UINT64_MAX, which is in fact uint64_t(-1).
   RefPtr<SlicedInputStream> slicedStream = new SlicedInputStream(
@@ -151,17 +151,17 @@ nsresult nsMailboxProtocol::Initialize(n
               // Save the stream for reuse, but only for multiple URLs.
               if (reusable && RunningMultipleMsgUrl()) {
                 nsCOMPtr<nsIInputStream> clonedStream;
                 nsCOMPtr<nsIInputStream> replacementStream;
                 rv = NS_CloneInputStream(stream, getter_AddRefs(clonedStream),
                                          getter_AddRefs(replacementStream));
                 NS_ENSURE_SUCCESS(rv, rv);
                 if (replacementStream) {
-                  // If stream is not cloneable, NS_CloneInputStream
+                  // If stream is not clonable, NS_CloneInputStream
                   // will clone it using a pipe. In order to keep the copy alive
                   // and working, we have to replace the original stream with
                   // the replacement.
                   stream = replacementStream.forget();
                 }
                 // Keep the original and use the clone for the next operation.
                 m_multipleMsgMoveCopyStream = stream;
                 stream = clonedStream;
--- a/mailnews/mapi/mapihook/src/msgMapiHook.cpp
+++ b/mailnews/mapi/mapihook/src/msgMapiHook.cpp
@@ -279,17 +279,17 @@ nsresult nsMapiHook::BlindSendMail(unsig
 
   // Get a hidden window to use for compose.
   AutoHiddenWindow hiddenWindow(rv);
   NS_ENSURE_SUCCESS(rv, rv);
 
   // smtp password and Logged in used IdKey from MapiConfig (session obj)
   nsMAPIConfiguration* pMapiConfig =
       nsMAPIConfiguration::GetMAPIConfiguration();
-  if (!pMapiConfig) return NS_ERROR_FAILURE;  // get the singelton obj
+  if (!pMapiConfig) return NS_ERROR_FAILURE;  // get the singleton obj
   char16_t* password = pMapiConfig->GetPassword(aSession);
 
   // Id key
   nsCString MsgIdKey;
   pMapiConfig->GetIdKey(aSession, MsgIdKey);
 
   // get the MsgIdentity for the above key using AccountManager
   nsCOMPtr<nsIMsgAccountManager> accountManager =
--- a/mailnews/mapi/mapihook/src/msgMapiImp.cpp
+++ b/mailnews/mapi/mapihook/src/msgMapiImp.cpp
@@ -324,17 +324,17 @@ class MsgMapiListContext {
   nsCOMPtr<nsIMsgDatabase> m_db;
   nsCOMPtr<nsISimpleEnumerator> m_msgEnumerator;
 };
 
 LONG CMapiImp::InitContext(unsigned long session,
                            MsgMapiListContext** listContext) {
   nsMAPIConfiguration* pMapiConfig =
       nsMAPIConfiguration::GetMAPIConfiguration();
-  if (!pMapiConfig) return MAPI_E_FAILURE;  // get the singelton obj
+  if (!pMapiConfig) return MAPI_E_FAILURE;  // get the singleton obj
   *listContext = (MsgMapiListContext*)pMapiConfig->GetMapiListContext(session);
   // This is the first message
   if (!*listContext) {
     nsCOMPtr<nsIMsgFolder> inboxFolder;
     nsresult rv = GetDefaultInbox(getter_AddRefs(inboxFolder));
     if (NS_FAILED(rv)) {
       NS_ASSERTION(false, "in init context, no inbox");
       return (MAPI_E_NO_MESSAGES);
@@ -366,17 +366,17 @@ STDMETHODIMP CMapiImp::FindNext(unsigned
   // and we should start the enumeration operation.
   //
 
   *lpszMessageID = '\0';
   nsMAPIConfiguration* pMapiConfig =
       nsMAPIConfiguration::GetMAPIConfiguration();
   if (!pMapiConfig) {
     NS_ASSERTION(false, "failed to get config in findnext");
-    return MAPI_E_FAILURE;  // get the singelton obj
+    return MAPI_E_FAILURE;  // get the singleton obj
   }
   MsgMapiListContext* listContext;
   LONG ret = InitContext(aSession, &listContext);
   if (ret != SUCCESS_SUCCESS) {
     NS_ASSERTION(false, "init context failed");
     return ret;
   }
   NS_ASSERTION(listContext, "initContext returned null context");
--- a/mailnews/mime/jsmime/test/unit/test_header.js
+++ b/mailnews/mime/jsmime/test/unit/test_header.js
@@ -839,30 +839,30 @@ define(function(require) {
               name:
                 '"Claudia Röhschicht" Claudia_Roehschicht@web.de [freecycle-berlin]',
               email: "freecycle-berlin-noreply@yahoogroups.de",
             },
           ],
         ],
         // Collapse multiple consecutive "special" spaces, like zero width space
         // etc.
-        // \u00AD is soft hypen. \u200B is zero width space.
+        // \u00AD is soft hyphen. \u200B is zero width space.
         [
           `invisiblespaceA@friend.example.com B \u200B\u00AD \u200B \u200B A. <foeA@example.com>`,
           [
             {
               name: "invisiblespaceA@friend.example.com B A.",
               email: "foeA@example.com",
             },
           ],
         ],
 
         // Collapse multiple consecutive "special" spaces, like zero width space
         // etc. also when encoded.
-        // \u00AD is soft hypen. \u200B is zero width space.
+        // \u00AD is soft hyphen. \u200B is zero width space.
         // unescape(encodeURIComponent(source)) encodes the JavaScript UTF-16 representation
         // of the string into UTF-8. Example: encodeURIComponent("ö") returns %C3%B6,
         // unescape("%C3%B6") returns the bytes 0xC3B6 which is the UTF-8 encoding of "ö".
         // See bug 1551746 for other ways.
         [
           //"=?UTF-8?B?IMKgIGJsw7YgPGludmlzaWJsZXNwYWNlQGZyaWVuZC5leGFtcGxlLmNvbT4g4oCLIOKAiyDigIsu=?= <foe@example.com>"
           `=?UTF-8?B?${btoa(
             unescape(
--- a/mailnews/mime/src/mimemult.cpp
+++ b/mailnews/mime/src/mimemult.cpp
@@ -426,17 +426,17 @@ static int MimeMultipart_create_child(Mi
   if (obj->options && obj->options->decompose_file_p &&
       obj->options->is_multipart_msg && obj->options->decompose_file_init_fn) {
     if (!mime_typep(obj, (MimeObjectClass*)&mimeMultipartRelatedClass) &&
         !mime_typep(obj, (MimeObjectClass*)&mimeMultipartAlternativeClass) &&
         !mime_typep(obj, (MimeObjectClass*)&mimeMultipartSignedClass) &&
         /* bug 21869 -- due to the fact that we are not generating the
            correct mime class object for content-typ multipart/signed part
            the above check failed. to solve the problem in general and not
-           to cause early temination when parsing message for opening as
+           to cause early termination when parsing message for opening as
            draft we can simply make sure that the child is not a multipart
            mime object. this way we could have a proper decomposing message
            part functions set correctly */
         !mime_typep(body, (MimeObjectClass*)&mimeMultipartClass) &&
         !((mime_typep(body, (MimeObjectClass*)&mimeExternalObjectClass) ||
            mime_typep(body, (MimeObjectClass*)&mimeSuppressedCryptoClass)) &&
           !strcmp(body->content_type, "text/x-vcard"))) {
       status = obj->options->decompose_file_init_fn(
@@ -515,17 +515,17 @@ static int MimeMultipart_close_child(Mim
           object->options->decompose_file_close_fn) {
         // clang-format off
         if (!mime_typep(object, (MimeObjectClass *)&mimeMultipartRelatedClass) &&
             !mime_typep(object, (MimeObjectClass *)&mimeMultipartAlternativeClass) &&
             !mime_typep(object, (MimeObjectClass *)&mimeMultipartSignedClass) &&
             /* bug 21869 -- due to the fact that we are not generating the
                correct mime class object for content-typ multipart/signed part
                the above check failed. to solve the problem in general and not
-               to cause early temination when parsing message for opening as
+               to cause early termination when parsing message for opening as
                draft we can simply make sure that the child is not a multipart
                mime object. this way we could have a proper decomposing message
                part functions set correctly */
             !mime_typep(kid, (MimeObjectClass *)&mimeMultipartClass) &&
             !((mime_typep(kid, (MimeObjectClass *)&mimeExternalObjectClass) ||
                mime_typep(kid, (MimeObjectClass *)&mimeSuppressedCryptoClass)) &&
               !strcmp(kid->content_type, "text/x-vcard"))) {
           status = object->options->decompose_file_close_fn(
@@ -558,17 +558,17 @@ static int MimeMultipart_parse_child_lin
       obj->options->is_multipart_msg &&
       obj->options->decompose_file_output_fn) {
     if (!mime_typep(obj, (MimeObjectClass*)&mimeMultipartAlternativeClass) &&
         !mime_typep(obj, (MimeObjectClass*)&mimeMultipartRelatedClass) &&
         !mime_typep(obj, (MimeObjectClass*)&mimeMultipartSignedClass) &&
         /* bug 21869 -- due to the fact that we are not generating the
            correct mime class object for content-typ multipart/signed part
            the above check failed. to solve the problem in general and not
-           to cause early temination when parsing message for opening as
+           to cause early termination when parsing message for opening as
            draft we can simply make sure that the child is not a multipart
            mime object. this way we could have a proper decomposing message
            part functions set correctly */
         !mime_typep(kid, (MimeObjectClass*)&mimeMultipartClass) &&
         !((mime_typep(kid, (MimeObjectClass*)&mimeExternalObjectClass) ||
            mime_typep(kid, (MimeObjectClass*)&mimeSuppressedCryptoClass)) &&
           !strcmp(kid->content_type, "text/x-vcard")))
       return obj->options->decompose_file_output_fn(
--- a/mailnews/news/src/nsNNTPProtocol.h
+++ b/mailnews/news/src/nsNNTPProtocol.h
@@ -240,18 +240,18 @@ class nsNNTPProtocol : public nsMsgProto
   int32_t m_firstPossibleArticle;
   int32_t m_lastPossibleArticle;
 
   int32_t m_numArticlesLoaded; /* How many articles we got XOVER lines for. */
   int32_t m_numArticlesWanted; /* How many articles we wanted to get XOVER lines
                                   for. */
   int32_t m_maxArticles;       /* max articles to get during an XOVER */
 
-  // Cancelation specific state. In particular, the headers that should be
-  // used for the cancelation message.
+  // Cancellation specific state. In particular, the headers that should be
+  // used for the cancellation message.
   nsCString m_cancelFromHdr;
   nsCString m_cancelNewsgroups;
   nsCString m_cancelDistribution;
   nsCString m_cancelID;
   int32_t m_cancelStatus;
 
   // variable for ReadNewsList
   int32_t m_readNewsListCount;