Browse Source

comm-esr60 removed because aligned with 2.53.x

Frank-Rainer Grahl 4 years ago
parent
commit
0acdc21982
100 changed files with 0 additions and 61932 deletions
  1. 0 532
      comm-esr60/comm-esr60/patches/1048658-66a1.patch
  2. 0 351
      comm-esr60/comm-esr60/patches/1209626-PermissionsManagerFix.patch
  3. 0 30
      comm-esr60/comm-esr60/patches/1222046-73a1.patch
  4. 0 106
      comm-esr60/comm-esr60/patches/1234651-medianoscripts.patch
  5. 0 144
      comm-esr60/comm-esr60/patches/1238874-63.patch
  6. 0 152
      comm-esr60/comm-esr60/patches/1242294-firefoxstrict-v1_2-257.patch
  7. 0 54
      comm-esr60/comm-esr60/patches/1242294-help-useragent-257.patch
  8. 0 30
      comm-esr60/comm-esr60/patches/1268008-help-certificate-257.patch
  9. 0 28
      comm-esr60/comm-esr60/patches/1270578-help-space-257.patch
  10. 0 547
      comm-esr60/comm-esr60/patches/1300198-centralise-v1_1-257.patch
  11. 0 270
      comm-esr60/comm-esr60/patches/1300198-move-to-json-v1_1-257.patch
  12. 0 27
      comm-esr60/comm-esr60/patches/1305902-enable_pinning.patch
  13. 0 109
      comm-esr60/comm-esr60/patches/1306060-breaks-257.patch
  14. 0 69
      comm-esr60/comm-esr60/patches/1346622-help-troubleshooting-url-v1.1-257.patch
  15. 0 303
      comm-esr60/comm-esr60/patches/1374094-debugQA.patch
  16. 0 107
      comm-esr60/comm-esr60/patches/1376189-71a1.patch
  17. 0 50
      comm-esr60/comm-esr60/patches/1378089-followup-257.patch
  18. 0 2225
      comm-esr60/comm-esr60/patches/1399756-22-61a1.patch
  19. 0 171
      comm-esr60/comm-esr60/patches/1399756-23-61a1.patch
  20. 0 892
      comm-esr60/comm-esr60/patches/1399756-28-61a1.patch
  21. 0 167
      comm-esr60/comm-esr60/patches/1399756-29-61a1.patch
  22. 0 127
      comm-esr60/comm-esr60/patches/1399756-30-61a1.patch
  23. 0 457
      comm-esr60/comm-esr60/patches/1399756-31-61a1.patch
  24. 0 63
      comm-esr60/comm-esr60/patches/1399756-33-61a1.patch
  25. 0 36365
      comm-esr60/comm-esr60/patches/1410739-instantbird-62a1.patch
  26. 0 242
      comm-esr60/comm-esr60/patches/1412574-63.patch
  27. 0 73
      comm-esr60/comm-esr60/patches/1430023-cc-62a1.patch
  28. 0 133
      comm-esr60/comm-esr60/patches/1436662-mail-61a1.patch
  29. 0 332
      comm-esr60/comm-esr60/patches/1441668-editmenuoverlay-V1_1-257.patch
  30. 0 271
      comm-esr60/comm-esr60/patches/1442886-257.patch
  31. 0 120
      comm-esr60/comm-esr60/patches/1442925-257.patch
  32. 0 1334
      comm-esr60/comm-esr60/patches/1442985-62.patch
  33. 0 199
      comm-esr60/comm-esr60/patches/1444379-1-64a1.patch
  34. 0 64
      comm-esr60/comm-esr60/patches/1444379-2-64a1.patch
  35. 0 698
      comm-esr60/comm-esr60/patches/1444740-2-moz-border.patch
  36. 0 2267
      comm-esr60/comm-esr60/patches/1444740-3-moz-border-modern.patch
  37. 0 82
      comm-esr60/comm-esr60/patches/1447907-1-61a1.patch
  38. 0 132
      comm-esr60/comm-esr60/patches/1452058-decouple-quote-61.patch
  39. 0 522
      comm-esr60/comm-esr60/patches/1454023-v1_1-257.patch
  40. 0 68
      comm-esr60/comm-esr60/patches/1454082-61.patch
  41. 0 534
      comm-esr60/comm-esr60/patches/1455536-1only-61.patch
  42. 0 37
      comm-esr60/comm-esr60/patches/1457713-4only-62.patch
  43. 0 1709
      comm-esr60/comm-esr60/patches/1459470-61a1.patch
  44. 0 46
      comm-esr60/comm-esr60/patches/1459508-61.patch
  45. 0 126
      comm-esr60/comm-esr60/patches/1470716-cc-63a1.patch
  46. 0 30
      comm-esr60/comm-esr60/patches/1476662-bookmarksui-257.patch
  47. 0 203
      comm-esr60/comm-esr60/patches/1477613-63.patch
  48. 0 112
      comm-esr60/comm-esr60/patches/1479787-cc.patch
  49. 0 988
      comm-esr60/comm-esr60/patches/1481326-1-63a1.patch
  50. 0 29
      comm-esr60/comm-esr60/patches/1481326-2-63a1.patch
  51. 0 23
      comm-esr60/comm-esr60/patches/1481417-1-63a1.patch
  52. 0 24
      comm-esr60/comm-esr60/patches/1481417-2-63a1.patch
  53. 0 188
      comm-esr60/comm-esr60/patches/1481417-3-63a1.patch
  54. 0 159
      comm-esr60/comm-esr60/patches/1481417-4-63a1.patch
  55. 0 133
      comm-esr60/comm-esr60/patches/1481417-5-63a1.patch
  56. 0 31
      comm-esr60/comm-esr60/patches/1482248-63a1.patch
  57. 0 77
      comm-esr60/comm-esr60/patches/1484388-63a1.patch
  58. 0 90
      comm-esr60/comm-esr60/patches/1484499-checknewmail.patch
  59. 0 929
      comm-esr60/comm-esr60/patches/1488557-instantbird2-62a1.patch
  60. 0 377
      comm-esr60/comm-esr60/patches/1493513-64a1.patch
  61. 0 62
      comm-esr60/comm-esr60/patches/1497795-67a1.patch
  62. 0 30
      comm-esr60/comm-esr60/patches/1498483-64a1.patch
  63. 0 129
      comm-esr60/comm-esr60/patches/1507754-2-67a1.patch
  64. 0 37
      comm-esr60/comm-esr60/patches/1507754-3-67a1.patch
  65. 0 70
      comm-esr60/comm-esr60/patches/1507754-4-67a1.patch
  66. 0 238
      comm-esr60/comm-esr60/patches/1510028-64a1.patch
  67. 0 113
      comm-esr60/comm-esr60/patches/1512557-65a1.patch
  68. 0 32
      comm-esr60/comm-esr60/patches/1519093-3-67a1.patch
  69. 0 112
      comm-esr60/comm-esr60/patches/1522761-cxx-mail-60.patch
  70. 0 89
      comm-esr60/comm-esr60/patches/1529228-67a1.patch
  71. 0 25
      comm-esr60/comm-esr60/patches/1533062-oslibs-mail.patch
  72. 0 52
      comm-esr60/comm-esr60/patches/1535846-sse2-mail-68a1.patch
  73. 0 52
      comm-esr60/comm-esr60/patches/1536477-71a1.patch
  74. 0 234
      comm-esr60/comm-esr60/patches/1541006-flatten.patch
  75. 0 67
      comm-esr60/comm-esr60/patches/1542484-68a1.patch
  76. 0 15
      comm-esr60/comm-esr60/patches/1542641-eslintfix.patch
  77. 0 27
      comm-esr60/comm-esr60/patches/1543711-getfiledisplayname.patch
  78. 0 285
      comm-esr60/comm-esr60/patches/1544222-67a1.patch
  79. 0 46
      comm-esr60/comm-esr60/patches/1546747-cookiesession-68a1.patch
  80. 0 726
      comm-esr60/comm-esr60/patches/1547041-1-prefapptidy.patch
  81. 0 414
      comm-esr60/comm-esr60/patches/1547041-2-prefapptidy.patch
  82. 0 297
      comm-esr60/comm-esr60/patches/1547041-3-prefapptidy.patch
  83. 0 51
      comm-esr60/comm-esr60/patches/1549391-expirecheck.patch
  84. 0 57
      comm-esr60/comm-esr60/patches/1550780-distribution.patch
  85. 0 29
      comm-esr60/comm-esr60/patches/1550780-shipped-locales.patch
  86. 0 29
      comm-esr60/comm-esr60/patches/1552666-68a1.patch
  87. 0 29
      comm-esr60/comm-esr60/patches/1554929-bookmarksincfix.patch
  88. 0 64
      comm-esr60/comm-esr60/patches/1558596-middleclick_tab_close.patch
  89. 0 886
      comm-esr60/comm-esr60/patches/1560550-25x.patch
  90. 0 204
      comm-esr60/comm-esr60/patches/1561782-1-67a1.patch
  91. 0 58
      comm-esr60/comm-esr60/patches/1561782-2-67a1.patch
  92. 0 33
      comm-esr60/comm-esr60/patches/1562537-fixlinks.patch
  93. 0 94
      comm-esr60/comm-esr60/patches/1568473-1-72a1.patch
  94. 0 30
      comm-esr60/comm-esr60/patches/1568473-2-72a1.patch
  95. 0 28
      comm-esr60/comm-esr60/patches/1570453-typofix-257.patch
  96. 0 88
      comm-esr60/comm-esr60/patches/1571287-add-isShowingJunkNotification.patch
  97. 0 876
      comm-esr60/comm-esr60/patches/1572129-perms-v1_3.patch
  98. 0 31
      comm-esr60/comm-esr60/patches/1572293-caldavauth.patch
  99. 0 238
      comm-esr60/comm-esr60/patches/1572976-use-treeUtils-v1_1.patch
  100. 0 197
      comm-esr60/comm-esr60/patches/1573526-pageinfo_gtreeutils.patch

+ 0 - 532
comm-esr60/comm-esr60/patches/1048658-66a1.patch

@@ -1,532 +0,0 @@
-# HG changeset patch
-# User Mike Kaganski <mikekaganski@gmail.com>
-# Date 1547735880 -3600
-# Node ID aaf39a9bd368a7fec19e61ccfadb5179d7fb90e8
-# Parent  e766e150d27c48c795c60ad8fb4ea7460c1f73f6
-Bug 1048658 - Implement MAPISendMailW(). r=jorgk
-
-diff --git a/mailnews/mapi/mapiDll/Mapi32.DEF b/mailnews/mapi/mapiDll/Mapi32.DEF
---- a/mailnews/mapi/mapiDll/Mapi32.DEF
-+++ b/mailnews/mapi/mapiDll/Mapi32.DEF
-@@ -12,10 +12,11 @@ EXPORTS
-         MAPIFindNext
-         MAPIReadMail
-         MAPISaveMail
-         MAPIDeleteMail
-         MAPIAddress
-         MAPIDetails
-         MAPIResolveName
-         MAPIFreeBuffer
-+        MAPISendMailW
-         GetMapiDllVersion
- 
-diff --git a/mailnews/mapi/mapiDll/MapiDll.cpp b/mailnews/mapi/mapiDll/MapiDll.cpp
---- a/mailnews/mapi/mapiDll/MapiDll.cpp
-+++ b/mailnews/mapi/mapiDll/MapiDll.cpp
-@@ -187,16 +187,61 @@ ULONG FAR PASCAL MAPISendMail (LHANDLE l
-         hr = SUCCESS_SUCCESS;
- 
-     if (bTempSession)
-         MAPILogoff (lhSession, ulUIParam, 0,0) ;
- 
-     return hr ;
- }
- 
-+ULONG FAR PASCAL MAPISendMailW(LHANDLE lhSession, ULONG ulUIParam, nsMapiMessageW *lpMessage,
-+                               FLAGS flFlags, ULONG ulReserved)
-+{
-+    HRESULT hr = 0;
-+    BOOL bTempSession = FALSE;
-+    nsIMapi *pNsMapi = nullptr;
-+
-+    if (!InitMozillaReference(&pNsMapi))
-+      return MAPI_E_FAILURE;
-+
-+    if (lpMessage->nRecipCount > MAX_RECIPS)
-+      return MAPI_E_TOO_MANY_RECIPIENTS;
-+
-+    if (lpMessage->nFileCount > MAX_FILES)
-+      return MAPI_E_TOO_MANY_FILES;
-+
-+    if ((!(flFlags & MAPI_DIALOG)) && (lpMessage->lpRecips == nullptr))
-+      return MAPI_E_UNKNOWN_RECIPIENT;
-+
-+    if (!lhSession || pNsMapi->IsValidSession(lhSession) != S_OK)
-+    {
-+      FLAGS LoginFlag = 0;
-+      if ((flFlags & MAPI_LOGON_UI) && (flFlags & MAPI_NEW_SESSION))
-+        LoginFlag = MAPI_LOGON_UI | MAPI_NEW_SESSION;
-+      else if (flFlags & MAPI_LOGON_UI)
-+        LoginFlag = MAPI_LOGON_UI;
-+
-+      hr = MAPILogon(ulUIParam, (LPTSTR)NULL, (LPTSTR)NULL, LoginFlag, 0, &lhSession);
-+      if (hr != SUCCESS_SUCCESS)
-+        return MAPI_E_LOGIN_FAILURE;
-+      bTempSession = TRUE;
-+    }
-+
-+    hr = pNsMapi->SendMailW(lhSession, lpMessage, flFlags, ulReserved);
-+
-+    // we are seeing a problem when using Word, although we return success from the MAPI support
-+    // MS COM interface in mozilla, we are getting this error here. This is a temporary hack !!
-+    if (hr == 0x800703e6)
-+      hr = SUCCESS_SUCCESS;
-+
-+    if (bTempSession)
-+      MAPILogoff(lhSession, ulUIParam, 0, 0);
-+
-+    return hr;
-+}
- 
- ULONG FAR PASCAL MAPISendDocuments(ULONG ulUIParam, LPSTR lpszDelimChar, LPSTR lpszFilePaths,
-                                    LPSTR lpszFileNames, ULONG ulReserved)
- {
-     LHANDLE lhSession ;
-     nsIMapi *pNsMapi = NULL;
- 
-     if (!InitMozillaReference(&pNsMapi))
-diff --git a/mailnews/mapi/mapihook/build/msgMapi.idl b/mailnews/mapi/mapihook/build/msgMapi.idl
---- a/mailnews/mapi/mapihook/build/msgMapi.idl
-+++ b/mailnews/mapi/mapihook/build/msgMapi.idl
-@@ -39,16 +39,52 @@ typedef struct
-     unsigned long     flFlags;                          /* unread,return receipt */
-     lpnsMapiRecipDesc lpOriginator;                     /* Originator descriptor  */
-     unsigned long     nRecipCount;                      /* Number of recipients   */
-     [size_is (nRecipCount)] lpnsMapiRecipDesc lpRecips; /* Recipient descriptors  */
-     unsigned long     nFileCount;                       /* # of file attachments  */
-     [size_is (nFileCount)] lpnsMapiFileDesc lpFiles;    /* Attachment descriptors */
- } nsMapiMessage, * lpnsMapiMessage;
- 
-+typedef struct
-+{
-+    unsigned long     ulReserved;
-+    unsigned long     flFlags;               /* Flags */
-+    unsigned long     nPosition_NotUsed;     /* character in text to be replaced by attachment */
-+    LPWSTR            lpszPathName;          /* Full path name including file name */
-+    LPWSTR            lpszFileName;          /* Real (original) file name */
-+    unsigned char*    lpFileType_NotUsed;
-+} nsMapiFileDescW, *lpnsMapiFileDescW;
-+
-+typedef struct
-+{
-+    unsigned long      ulReserved;
-+    unsigned long      ulRecipClass;  /* MAPI_TO, MAPI_CC, MAPI_BCC, MAPI_ORIG    */
-+    LPWSTR             lpszName;      /* Recipient name to display */
-+    LPWSTR             lpszAddress;   /* Recipient email address */
-+    unsigned long      ulEIDSize_NotUsed;
-+    unsigned char*     lpEntryID_NotUsed;
-+} nsMapiRecipDescW, *lpnsMapiRecipDescW;
-+
-+typedef struct
-+{
-+    unsigned long           ulReserved;
-+    LPWSTR                  lpszSubject;                 /* Message Subject */
-+    LPWSTR                  lpszNoteText;                /* Message Text */
-+    LPWSTR                  lpszMessageType;
-+    LPWSTR                  lpszDateReceived;            /* in YYYY/MM/DD HH:MM format */
-+    LPWSTR                  lpszConversationID_NotUsed;  /* conversation thread ID */
-+    unsigned long           flFlags;                     /* unread,return receipt */
-+    lpnsMapiRecipDescW      lpOriginator;                /* Originator descriptor  */
-+    unsigned long           nRecipCount;                 /* Number of recipients   */
-+    [size_is (nRecipCount)] lpnsMapiRecipDescW lpRecips; /* Recipient descriptors  */
-+    unsigned long           nFileCount;                  /* # of file attachments  */
-+    [size_is (nFileCount)]  lpnsMapiFileDescW lpFiles;   /* Attachment descriptors */
-+} nsMapiMessageW, *lpnsMapiMessageW;
-+
- [
-     object,
-     uuid(6EDCD38E-8861-11d5-A3DD-00B0D0F3BAA7),
-     helpstring("nsIMapi Interface"),
-     pointer_default(unique)
- ]
- 
- interface nsIMapi : IUnknown
-@@ -76,14 +112,17 @@ interface nsIMapi : IUnknown
-                      [in] ULONG flFlags, [in] ULONG ulReserved, [out] lpnsMapiMessage *lppMessage);
- 
-     HRESULT DeleteMail([in] unsigned long lhSession, [in] ULONG ulUIParam, [in, unique] LPSTR lpszMessageID,
-                        [in] ULONG flFlags, [in] ULONG ulReserved);
- 
-     HRESULT SaveMail([in] unsigned long lhSession, [in] ULONG ulUIParam, [in, unique] lpnsMapiMessage lppMessage,
-                      [in] ULONG flFlags, [in] ULONG ulReserved, [in, unique] LPSTR lpszMessageID);
- 
-+    HRESULT SendMailW([in] unsigned long aSession, [in, unique] lpnsMapiMessageW aMessage,
-+                      [in] unsigned long aFlags, [in] unsigned long aReserved);
-+
-     HRESULT Logoff(unsigned long aSession);
-     HRESULT CleanUp();
- };
- 
- 
- 
-diff --git a/mailnews/mapi/mapihook/src/msgMapiHook.cpp b/mailnews/mapi/mapihook/src/msgMapiHook.cpp
---- a/mailnews/mapi/mapihook/src/msgMapiHook.cpp
-+++ b/mailnews/mapi/mapihook/src/msgMapiHook.cpp
-@@ -461,16 +461,126 @@ nsresult nsMapiHook::HandleAttachments (
-             if (NS_FAILED(rv))
-               MOZ_LOG(MAPI, mozilla::LogLevel::Debug, ("nsMapiHook::HandleAttachments: AddAttachment rv =  %lx\n", rv));
-         }
-     }
-     return rv ;
- }
- 
- 
-+nsresult nsMapiHook::HandleAttachmentsW(nsIMsgCompFields* aCompFields, int32_t aFileCount,
-+                                        lpnsMapiFileDescW aFiles)
-+{
-+  nsresult rv = NS_OK ;
-+  // Do nothing if there are no files to process.
-+  if (!aFiles || aFileCount <= 0)
-+      return NS_OK;
-+
-+  nsAutoCString Attachments ;
-+  nsAutoCString TempFiles ;
-+
-+  nsCOMPtr <nsIFile> pFile = do_CreateInstance(NS_LOCAL_FILE_CONTRACTID, &rv) ;
-+  if (NS_FAILED(rv) || (!pFile)) return rv ;
-+  nsCOMPtr <nsIFile> pTempDir = do_CreateInstance(NS_LOCAL_FILE_CONTRACTID, &rv) ;
-+  if (NS_FAILED(rv) || (!pTempDir)) return rv ;
-+
-+  for (int i=0 ; i < aFileCount ; i++)
-+  {
-+    if (aFiles[i].lpszPathName)
-+    {
-+      // Check if attachment exists.
-+      pFile->InitWithPath (nsDependentString(aFiles[i].lpszPathName));
-+
-+      bool bExist ;
-+      rv = pFile->Exists(&bExist) ;
-+      MOZ_LOG(MAPI, mozilla::LogLevel::Debug,
-+        ("nsMapiHook::HandleAttachmentsW: filename: %s path: %s exists = %s \n",
-+         NS_ConvertUTF16toUTF8(aFiles[i].lpszFileName).get(),
-+         NS_ConvertUTF16toUTF8(aFiles[i].lpszPathName).get(),
-+         bExist ? "true" : "false"));
-+      if (NS_FAILED(rv) || (!bExist)) return NS_ERROR_FILE_TARGET_DOES_NOT_EXIST ;
-+
-+      // Temp Directory.
-+      nsCOMPtr <nsIFile> pTempDir;
-+      NS_GetSpecialDirectory(NS_OS_TEMP_DIR, getter_AddRefs(pTempDir));
-+
-+      // Create a new sub directory called moz_mapi underneath the temp directory.
-+      pTempDir->AppendRelativePath(NS_LITERAL_STRING("moz_mapi"));
-+      pTempDir->Exists(&bExist) ;
-+      if (!bExist)
-+      {
-+        rv = pTempDir->Create(nsIFile::DIRECTORY_TYPE, 777) ;
-+        if (NS_FAILED(rv)) return rv ;
-+      }
-+
-+      // Rename or copy the existing temp file with the real file name.
-+
-+      nsAutoString leafName ;
-+      // leafName already contains a unicode leafName from lpszPathName. If we were given
-+      // a value for lpszFileName, use it. Otherwise stick with leafName.
-+      if (aFiles[i].lpszFileName)
-+      {
-+        nsAutoString wholeFileName(aFiles[i].lpszFileName);
-+        // Need to find the last '\' and find the leafname from that.
-+        int32_t lastSlash = wholeFileName.RFindChar(char16_t('\\'));
-+        if (lastSlash != kNotFound)
-+          leafName.Assign(Substring(wholeFileName, lastSlash + 1));
-+        else
-+          leafName.Assign(wholeFileName);
-+      }
-+      else
-+        pFile->GetLeafName(leafName);
-+
-+      nsCOMPtr<nsIMsgAttachment> attachment = do_CreateInstance(NS_MSGATTACHMENT_CONTRACTID, &rv);
-+      NS_ENSURE_SUCCESS(rv, rv);
-+      attachment->SetName(leafName);
-+
-+      nsCOMPtr<nsIFile> pTempFile;
-+      rv = pTempDir->Clone(getter_AddRefs(pTempFile));
-+      if (NS_FAILED(rv) || !pTempFile)
-+        return rv;
-+
-+      pTempFile->Append(leafName);
-+      pTempFile->Exists(&bExist);
-+      if (bExist)
-+      {
-+        rv = pTempFile->CreateUnique(nsIFile::NORMAL_FILE_TYPE, 0777);
-+        NS_ENSURE_SUCCESS(rv, rv);
-+        pTempFile->Remove(false); // remove so we can copy over it.
-+        pTempFile->GetLeafName(leafName);
-+      }
-+      // Copy the file to its new location and file name.
-+      pFile->CopyTo(pTempDir, leafName);
-+      // Point pFile to the new location of the attachment.
-+      pFile->InitWithFile(pTempDir);
-+      pFile->Append(leafName);
-+
-+      // Create MsgCompose attachment object.
-+      attachment->SetTemporary(true);  // this one is a temp file so set the flag for MsgCompose
-+
-+      // Now set the attachment object.
-+      nsAutoCString pURL ;
-+      NS_GetURLSpecFromFile(pFile, pURL);
-+      attachment->SetUrl(pURL);
-+
-+      // Set the file size.
-+      int64_t fileSize;
-+      pFile->GetFileSize(&fileSize);
-+      attachment->SetSize(fileSize);
-+
-+      // Add the attachment.
-+      rv = aCompFields->AddAttachment (attachment);
-+      if (NS_FAILED(rv))
-+        MOZ_LOG(MAPI, mozilla::LogLevel::Debug,
-+          ("nsMapiHook::HandleAttachmentsW: AddAttachment rv =  %lx\n", rv));
-+    }
-+  }
-+  return rv ;
-+}
-+
- // this is used to convert non Unicode data and then populate comp fields
- nsresult nsMapiHook::PopulateCompFieldsWithConversion(lpnsMapiMessage aMessage,
-                                     nsIMsgCompFields * aCompFields)
- {
-   nsresult rv = NS_OK;
-   bool isUTF8 = aMessage->ulReserved == CP_UTF8;
- 
-   if (aMessage->lpOriginator)
-@@ -581,16 +691,99 @@ nsresult nsMapiHook::PopulateCompFieldsW
-   printf ("To : %S \n", To.get()) ;
-   printf ("CC : %S \n", Cc.get() ) ;
-   printf ("BCC : %S \n", Bcc.get() ) ;
- #endif
- 
-   return rv ;
- }
- 
-+// This is used to populate comp fields with UTF-16 data from MAPISendMailW function.
-+nsresult nsMapiHook::PopulateCompFieldsW(lpnsMapiMessageW aMessage,
-+                                         nsIMsgCompFields* aCompFields)
-+{
-+  nsresult rv = NS_OK;
-+
-+  if (aMessage->lpOriginator)
-+    aCompFields->SetFrom(nsDependentString(aMessage->lpOriginator->lpszAddress));
-+
-+  nsAutoString To;
-+  nsAutoString Cc;
-+  nsAutoString Bcc;
-+
-+  NS_NAMED_LITERAL_STRING(Comma, ",");
-+
-+  if (aMessage->lpRecips)
-+  {
-+    for (int i=0 ; i < (int)aMessage->nRecipCount ; i++)
-+    {
-+      if (aMessage->lpRecips[i].lpszAddress || aMessage->lpRecips[i].lpszName)
-+      {
-+        const wchar_t *addressWithoutType = (aMessage->lpRecips[i].lpszAddress)
-+          ? aMessage->lpRecips[i].lpszAddress : aMessage->lpRecips[i].lpszName;
-+        if (nsDependentString(addressWithoutType, 5).EqualsASCII("SMTP:") == 0)
-+          addressWithoutType += 5;
-+        switch (aMessage->lpRecips[i].ulRecipClass)
-+        {
-+        case MAPI_TO :
-+          if (!To.IsEmpty())
-+            To += Comma;
-+          To.Append(nsDependentString(addressWithoutType));
-+          break;
-+
-+        case MAPI_CC :
-+          if (!Cc.IsEmpty())
-+            Cc += Comma;
-+          Cc.Append(nsDependentString(addressWithoutType));
-+          break;
-+
-+        case MAPI_BCC :
-+          if (!Bcc.IsEmpty())
-+            Bcc += Comma;
-+          Bcc.Append(nsDependentString(addressWithoutType));
-+          break;
-+        }
-+      }
-+    }
-+  }
-+
-+  MOZ_LOG(MAPI, mozilla::LogLevel::Debug,
-+    ("to: %s cc: %s bcc: %s \n", NS_ConvertUTF16toUTF8(To).get(),
-+                                 NS_ConvertUTF16toUTF8(Cc).get(),
-+                                 NS_ConvertUTF16toUTF8(Bcc).get()));
-+  // set To, Cc, Bcc
-+  aCompFields->SetTo(To);
-+  aCompFields->SetCc(Cc);
-+  aCompFields->SetBcc(Bcc);
-+
-+  // Set subject.
-+  if (aMessage->lpszSubject)
-+    aCompFields->SetSubject(nsDependentString(aMessage->lpszSubject));
-+
-+  // handle attachments as File URL
-+  rv = HandleAttachmentsW(aCompFields, aMessage->nFileCount, aMessage->lpFiles);
-+  if (NS_FAILED(rv)) return rv;
-+
-+  // Set body.
-+  if (aMessage->lpszNoteText)
-+  {
-+    nsString Body(aMessage->lpszNoteText);
-+    if (Body.IsEmpty() || Body.Last() != '\n')
-+      Body.AppendLiteral(CRLF);
-+
-+    // This is needed when Simple MAPI is used without a compose window.
-+    // See bug 1366196.
-+    if (Body.Find("<html>") == kNotFound)
-+      aCompFields->SetForcePlainText(true);
-+
-+    rv = aCompFields->SetBody(Body);
-+  }
-+  return rv;
-+}
-+
- // this is used to populate the docs as attachments in the Comp fields for Send Documents
- nsresult nsMapiHook::PopulateCompFieldsForSendDocs(nsIMsgCompFields * aCompFields, ULONG aFlags,
-                                                    LPSTR aDelimChar, LPSTR aFilePaths)
- {
-   nsAutoCString strDelimChars;
-   nsAutoCString strFilePaths;
-   nsresult rv = NS_OK ;
-   bool bExist ;
-diff --git a/mailnews/mapi/mapihook/src/msgMapiHook.h b/mailnews/mapi/mapihook/src/msgMapiHook.h
---- a/mailnews/mapi/mapihook/src/msgMapiHook.h
-+++ b/mailnews/mapi/mapihook/src/msgMapiHook.h
-@@ -15,18 +15,21 @@ class nsMapiHook
-                         char16_t **aPassword);
-         static bool VerifyUserName(const nsCString& aUsername, nsCString& aIdKey);
- 
-         static bool IsBlindSendAllowed () ;
-         static nsresult BlindSendMail (unsigned long aSession, nsIMsgCompFields * aCompFields) ;
-         static nsresult ShowComposerWindow (unsigned long aSession, nsIMsgCompFields * aCompFields) ;
-         static nsresult PopulateCompFieldsWithConversion(lpnsMapiMessage aMessage,
-                                         nsIMsgCompFields * aCompFields) ;
-+        static nsresult PopulateCompFieldsW(lpnsMapiMessageW aMessage, nsIMsgCompFields *aCompFields);
-         static nsresult PopulateCompFieldsForSendDocs(nsIMsgCompFields * aCompFields,
-                                         ULONG aFlags, LPSTR aDelimChar, LPSTR aFilePaths);
-         static nsresult HandleAttachments(nsIMsgCompFields *aCompFields, int32_t aFileCount,
-                                           lpnsMapiFileDesc aFiles, bool aIsUTF8);
-+        static nsresult HandleAttachmentsW(nsIMsgCompFields *aCompFields, int32_t aFileCount,
-+                                           lpnsMapiFileDescW aFiles);
-         static void CleanUp();
- 
-         static bool isMapiService;
- };
- 
- #endif  // MSG_MAPI_HOOK_H_
-diff --git a/mailnews/mapi/mapihook/src/msgMapiImp.cpp b/mailnews/mapi/mapihook/src/msgMapiImp.cpp
---- a/mailnews/mapi/mapihook/src/msgMapiImp.cpp
-+++ b/mailnews/mapi/mapihook/src/msgMapiImp.cpp
-@@ -1,15 +1,15 @@
- /* This Source Code Form is subject to the terms of the Mozilla Public
-  * License, v. 2.0. If a copy of the MPL was not distributed with this
-  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
- 
- #include <mapidefs.h>
- #include <mapi.h>
--#include "msgMapi.h"
-+#include <winstring.h>
- #include "msgMapiImp.h"
- #include "msgMapiFactory.h"
- #include "msgMapiMain.h"
- 
- #include "nsIMsgCompFields.h"
- #include "msgMapiHook.h"
- #include "nsString.h"
- #include "nsCOMPtr.h"
-@@ -231,16 +231,54 @@ STDMETHODIMP CMapiImp::SendMail( unsigne
-         {
-             rv = nsMapiHook::ShowComposerWindow(aSession, pCompFields);
-         }
-     }
- 
-     return nsMAPIConfiguration::GetMAPIErrorFromNSError (rv) ;
- }
- 
-+STDMETHODIMP CMapiImp::SendMailW(unsigned long aSession, lpnsMapiMessageW aMessage,
-+                                 unsigned long aFlags, unsigned long aReserved)
-+{
-+    nsresult rv = NS_OK;
-+
-+    MOZ_LOG(MAPI, mozilla::LogLevel::Debug, ("CMapiImp::SendMailW using flags %d\n", aFlags));
-+
-+    // Handle possible nullptr argument.
-+    nsMapiMessageW Message{};
-+    if (!aMessage)
-+      aMessage = &Message;
-+
-+    MOZ_LOG(MAPI, mozilla::LogLevel::Debug, ("CMapiImp::SendMailW flags=%x subject: %s sender: %s\n",
-+            aFlags,
-+            NS_ConvertUTF16toUTF8(aMessage->lpszSubject).get(),
-+            NS_ConvertUTF16toUTF8((aMessage->lpOriginator) ? aMessage->lpOriginator->lpszAddress : L"").get()));
-+
-+    // Create nsIMsgCompFields obj and populate it.
-+    nsCOMPtr<nsIMsgCompFields> pCompFields = do_CreateInstance(NS_MSGCOMPFIELDS_CONTRACTID, &rv);
-+    if (NS_FAILED(rv) || !pCompFields) return MAPI_E_INSUFFICIENT_MEMORY;
-+
-+    rv = nsMapiHook::PopulateCompFieldsW(aMessage, pCompFields);
-+
-+    if (NS_SUCCEEDED (rv))
-+    {
-+      // Check flag to see if UI needs to be brought up.
-+      if (!(aFlags & MAPI_DIALOG))
-+      {
-+        rv = nsMapiHook::BlindSendMail(aSession, pCompFields);
-+      }
-+      else
-+      {
-+        rv = nsMapiHook::ShowComposerWindow(aSession, pCompFields);
-+      }
-+    }
-+
-+    return nsMAPIConfiguration::GetMAPIErrorFromNSError(rv);
-+}
- 
- STDMETHODIMP CMapiImp::SendDocuments(unsigned long aSession, LPSTR aDelimChar,
-                                      LPSTR aFilePaths, LPSTR aFileNames, ULONG aFlags)
- {
-     nsresult rv = NS_OK ;
- 
-     MOZ_LOG(MAPI, mozilla::LogLevel::Debug, ("CMapiImp::SendDocument using flags %d\n", aFlags));
-     /** create nsIMsgCompFields obj and populate it **/
-diff --git a/mailnews/mapi/mapihook/src/msgMapiImp.h b/mailnews/mapi/mapihook/src/msgMapiImp.h
---- a/mailnews/mapi/mapihook/src/msgMapiImp.h
-+++ b/mailnews/mapi/mapihook/src/msgMapiImp.h
-@@ -1,17 +1,15 @@
- /* This Source Code Form is subject to the terms of the Mozilla Public
-  * License, v. 2.0. If a copy of the MPL was not distributed with this
-  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
- 
- #ifndef MSG_MAPI_IMP_H
- #define MSG_MAPI_IMP_H
- 
--#include <windows.h>
--#include <mapi.h>
- #include "msgMapi.h"
- #include "nspr.h"
- #include "nscore.h"
- #include "nsISupportsImpl.h" // ThreadSafeAutoRefCnt
- 
- class nsIMsgFolder;
- class MsgMapiListContext;
- 
-@@ -53,16 +51,19 @@ public :
-                           unsigned long flFlags, unsigned long ulReserved);
-   STDMETHODIMP SaveMail(unsigned long lhSession, unsigned long ulUIParam, lpnsMapiMessage lppMessage,
-                         unsigned long flFlags, unsigned long ulReserved, LPSTR lpszMessageID);
- 
-   STDMETHODIMP Initialize();
-   STDMETHODIMP IsValid();
-   STDMETHODIMP IsValidSession(unsigned long aSession);
- 
-+  STDMETHODIMP SendMailW(unsigned long aSession, lpnsMapiMessageW aMessage,
-+                         unsigned long aFlags, unsigned long aReserved);
-+
-   STDMETHODIMP Logoff (unsigned long aSession);
-   STDMETHODIMP CleanUp();
- 
-   CMapiImp();
-   ~CMapiImp();
- 
-   LONG InitContext(unsigned long session, MsgMapiListContext **listContext);
-   nsresult GetDefaultInbox(nsIMsgFolder **inboxFolder);

+ 0 - 351
comm-esr60/comm-esr60/patches/1209626-PermissionsManagerFix.patch

@@ -1,351 +0,0 @@
-# HG changeset patch
-# User Frank-Rainer Grahl <frgrahl@gmx.net>
-# Parent  e68f7afb41794ef768be71c5698c03d6ee9795b2
-Bug 1209626 - Stand alone (popup-) Permissions Manager does not show web pages' domain names
-
-diff --git a/suite/components/permissions/content/permissionsManager.js b/suite/components/permissions/content/permissionsManager.js
---- a/suite/components/permissions/content/permissionsManager.js
-+++ b/suite/components/permissions/content/permissionsManager.js
-@@ -1,31 +1,31 @@
- /* This Source Code Form is subject to the terms of the Mozilla Public
-  * License, v. 2.0. If a copy of the MPL was not distributed with this
-  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
- 
- Cu.import("resource://gre/modules/Services.jsm");
- 
--var additions = [];
-+var permissions = [];
- var removals = [];
- 
- var sortColumn;
- var sortAscending;
- 
- var permissionsTreeView = {
-     rowCount: 0,
-     setTree: function(tree) {},
-     getImageSrc: function(row, column) {},
-     getProgressMode: function(row, column) {},
-     getCellValue: function(row, column) {},
-     getCellText: function(row, column) {
-       if (column.id == "siteCol")
--        return additions[row].rawHost;
-+        return permissions[row].rawHost;
-       else if (column.id == "statusCol")
--        return additions[row].capability;
-+        return permissions[row].capability;
-       return "";
-     },
-     isSeparator: function(index) { return false; },
-     isSorted: function() { return false; },
-     isContainer: function(index) { return false; },
-     cycleHeader: function(column) {},
-     getRowProperties: function(row, column) { return ""; },
-     getColumnProperties: function(column) { return ""; },
-@@ -43,28 +43,35 @@ function Startup() {
- 
-   permissionsTree = document.getElementById("permissionsTree");
- 
-   permissionsBundle = document.getElementById("permissionsBundle");
- 
-   sortAscending = (permissionsTree.getAttribute("sortAscending") == "true");
-   sortColumn = permissionsTree.getAttribute("sortColumn");
- 
-+  var params = { blockVisible   : true,
-+                 sessionVisible : true,
-+                 allowVisible   : true,
-+                 manageCapability : true
-+               };
-+
-   if (window.arguments && window.arguments[0]) {
--    var params = window.arguments[0];
--    document.getElementById("btnBlock").hidden = !params.blockVisible;
--    document.getElementById("btnSession").hidden = !params.sessionVisible;
--    document.getElementById("btnAllow").hidden = !params.allowVisible;
-+    params = window.arguments[0];
-     setHost(params.prefilledHost);
-     permissionType = params.permissionType;
-     gManageCapability = params.manageCapability;
-     introText = params.introText;
-     windowTitle = params.windowTitle;
-   }
- 
-+  document.getElementById("btnBlock").hidden = !params.blockVisible;
-+  document.getElementById("btnSession").hidden = !params.sessionVisible;
-+  document.getElementById("btnAllow").hidden = !params.allowVisible;
-+
-   document.getElementById("permissionsText").textContent = introText ||
-       permissionsBundle.getString(permissionType + "permissionstext");
- 
-   document.title = windowTitle ||
-       permissionsBundle.getString(permissionType + "permissionstitle");
- 
-   var dialogElement = document.getElementById("permissionsManager");
-   dialogElement.setAttribute("windowtype", "permissions-" + permissionType);
-@@ -77,31 +84,47 @@ function Startup() {
-   document.getElementById("urlLabel").hidden = !urlFieldVisible;
- 
-   handleHostInput(document.getElementById("url"));
-   loadPermissions();
- }
- 
- function onAccept() {
-   finalizeChanges();
-+  reInitialize();
- 
--  permissionsTree.setAttribute("sortAscending", !sortAscending);
--  permissionsTree.setAttribute("sortColumn", sortColumn);
-+  // Don't close the window.
-+  return false;
-+}
-+
-+function onCancel() {
-+  reInitialize();
- 
--  return true;
-+  // Don't close the window.
-+  return false;
- }
- 
-+function reInitialize() {
-+  permissions = [];
-+  removals = [];
-+
-+  // Reload permissions tree.
-+  loadPermissions();
-+}
-+
-+
- function setHost(aHost) {
-   document.getElementById("url").value = aHost;
- }
- 
--function Permission(id, host, rawHost, type, capability, perm) {
-+function Permission(id, principal, host, type, capability, perm) {
-   this.id = id;
-+  this.principal = principal;
-   this.host = host;
--  this.rawHost = rawHost;
-+  this.rawHost = host.replace(/^\./, "");
-   this.type = type;
-   this.capability = capability;
-   this.perm = perm;
- }
- 
- function handleHostInput(aSiteField) {
-   // trim any leading and trailing spaces and scheme
-   // and set buttons appropiately
-@@ -124,31 +147,37 @@ function loadPermissions() {
-   var enumerator = Services.perms.enumerator;
-   var count = 0;
-   var permission;
- 
-   try {
-     while (enumerator.hasMoreElements()) {
-       permission = enumerator.getNext().QueryInterface(Ci.nsIPermission);
-       if (permission.type == permissionType &&
--          (!gManageCapability || permission.capability == gManageCapability))
--        permissionPush(count++, permission.host, permission.type,
--                       capabilityString(permission.capability), permission.capability);
-+          (!gManageCapability || permission.capability == gManageCapability)) {
-+        permissions.push(new Permission(count++,
-+                                        permission.principal,
-+                                        permission.principal.URI.host,
-+                                        permission.type,
-+                                        capabilityString(permission.capability),
-+                                        permission.capability));
-+      }
-     }
-   } catch(ex) {
-   }
- 
--  permissionsTreeView.rowCount = additions.length;
-+  permissionsTreeView.rowCount = permissions.length;
- 
-   // sort and display the table
-   permissionsTree.view = permissionsTreeView;
-   permissionColumnSort(sortColumn, false);
- 
-   // disable "remove all" button if there are none
--  document.getElementById("removeAllPermissions").disabled = additions.length == 0;
-+  document.getElementById("removeAllPermissions").disabled =
-+    permissions.length == 0;
- }
- 
- function capabilityString(aCapability) {
-   var capability = null;
-   switch (aCapability) {
-     case Ci.nsIPermissionManager.ALLOW_ACTION:
-       capability = "can";
-       break;
-@@ -160,118 +189,123 @@ function capabilityString(aCapability) {
-       capability = "canSession";
-       break;
-     default:
-       break;
-   }
-   return permissionsBundle.getString(capability);
- }
- 
--function permissionPush(aId, aHost, aType, aString, aCapability) {
--  var rawHost = (aHost.charAt(0) == ".") ? aHost.substring(1, aHost.length) : aHost;
--  var p = new Permission(aId, aHost, rawHost, aType, aString, aCapability);
--  additions.push(p);
--}
--
- function permissionColumnSort(aColumn, aUpdateSelection) {
-   sortAscending =
--    SortTree(permissionsTree, permissionsTreeView, additions,
-+    SortTree(permissionsTree, permissionsTreeView, permissions,
-              aColumn, sortColumn, sortAscending, aUpdateSelection);
-   sortColumn = aColumn;
- }
- 
- function permissionSelected() {
-   if (Services.perms) {
-     var selections = GetTreeSelections(permissionsTree);
-     document.getElementById("removePermission").disabled = (selections.length < 1);
-   }
- }
- 
- function deletePermissions() {
--  DeleteSelectedItemFromTree(permissionsTree, permissionsTreeView, additions, removals,
-+  DeleteSelectedItemFromTree(permissionsTree, permissionsTreeView,
-+                             permissions, removals,
-                              "removePermission", "removeAllPermissions");
- }
- 
- function deleteAllPermissions() {
--  DeleteAllFromTree(permissionsTree, permissionsTreeView, additions, removals,
--                    "removePermission", "removeAllPermissions");
-+  DeleteAllFromTree(permissionsTree, permissionsTreeView, permissions,
-+                    removals, "removePermission", "removeAllPermissions");
- }
- 
- function finalizeChanges() {
--  var i, p;
-+  let p;
- 
--  for (i in removals) {
--    p = removals[i];
-+  for (let i in permissions) {
-+    p = permissions[i];
-     try {
--      Services.perms.remove(p.host, p.type);
-+      // Principal is null so a permission we just added in this session.
-+      if (p.principal == null) {
-+        let uri = Services.io.newURI("https://" + p.host);
-+        Services.perms.add(uri, p.type, p.perm);
-+      }
-     } catch(ex) {
-     }
-   }
- 
--  for (i in additions) {
--    p = additions[i];
-+  for (let i in removals) {
-+    p = removals[i];
-     try {
--      var uri = Services.io.newURI("http://" + p.host);
--      Services.perms.add(uri, p.type, p.perm);
-+      // Principal is not null so not a permission we just added in this
-+      // session.
-+      if (p.principal) {
-+        Services.perms.removeFromPrincipal(p.principal,
-+                                           p.type);
-+      }
-     } catch(ex) {
-     }
-   }
- }
- 
- function handlePermissionKeyPress(e) {
-   if (e.keyCode == 46) {
-     deletePermissions();
-   }
- }
- 
- function addPermission(aPermission) {
-   var textbox = document.getElementById("url");
-   // trim any leading and trailing spaces and scheme
-   var host = trimSpacesAndScheme(textbox.value);
-   try {
--    var uri = Services.io.newURI("http://" + host);
-+    let uri = Services.io.newURI("https://" + host);
-     host = uri.host;
-   } catch(ex) {
-     var message = permissionsBundle.getFormattedString("alertInvalid", [host]);
-     var title = permissionsBundle.getString("alertInvalidTitle");
-     Services.prompt.alert(window, title, message);
-     textbox.value = "";
-     textbox.focus();
-     handleHostInput(textbox);
-     return;
-   }
- 
-   // we need this whether the perm exists or not
-   var stringCapability = capabilityString(aPermission);
- 
-   // check whether the permission already exists, if not, add it
-   var exists = false;
--  for (var i in additions) {
--    if (additions[i].rawHost == host) {
-+  for (var i in permissions) {
-+    if (permissions[i].rawHost == host) {
-       // Avoid calling the permission manager if the capability settings are
-       // the same. Otherwise allow the call to the permissions manager to
-       // update the listbox for us.
--      exists = additions[i].perm == aPermission;
-+      exists = permissions[i].perm == aPermission;
-       break;
-     }
-   }
- 
-   if (!exists) {
--    permissionPush(additions.length, host, permissionType, stringCapability, aPermission);
-+    permissions.push(new Permission(permissions.length, null, host,
-+                                    permissionType, stringCapability,
-+                                    aPermission));
- 
--    permissionsTreeView.rowCount = additions.length;
--    permissionsTree.treeBoxObject.rowCountChanged(additions.length - 1, 1);
--    permissionsTree.treeBoxObject.ensureRowIsVisible(additions.length - 1);
-+    permissionsTreeView.rowCount = permissions.length;
-+    permissionsTree.treeBoxObject.rowCountChanged(permissions.length - 1, 1);
-+    permissionsTree.treeBoxObject.ensureRowIsVisible(permissions.length - 1);
-   }
-   textbox.value = "";
-   textbox.focus();
- 
-   // covers a case where the site exists already, so the buttons don't disable
-   handleHostInput(textbox);
- 
-   // enable "remove all" button as needed
--  document.getElementById("removeAllPermissions").disabled = additions.length == 0;
-+  document.getElementById("removeAllPermissions").disabled = permissions.length == 0;
- }
- 
- function doHelpButton() {
-   openHelp(permissionsBundle.getString(permissionType + "permissionshelp"), "chrome://communicator/locale/help/suitehelp.rdf");
-   return true;
- }
-diff --git a/suite/components/permissions/content/permissionsManager.xul b/suite/components/permissions/content/permissionsManager.xul
---- a/suite/components/permissions/content/permissionsManager.xul
-+++ b/suite/components/permissions/content/permissionsManager.xul
-@@ -12,16 +12,17 @@
-         buttons="accept,cancel,help"
-         windowtype="exceptions"
-         title="&windowtitle.label;"
-         xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-         style="width:32em; height:42em;"
-         persist="width height screenX screenY"
-         onload="Startup();"
-         ondialogaccept="return onAccept();"
-+        ondialogcancel="return onCancel();"
-         ondialoghelp="return doHelpButton();">
- 
-   <script type="application/javascript" src="chrome://communicator/content/permissions/permissionsManager.js"/>
-   <script type="application/javascript" src="chrome://communicator/content/permissions/treeUtils.js"/>
-   <script type="application/javascript" src="chrome://help/content/contextHelp.js"/>
- 
-   <stringbundle id="permissionsBundle"
-                 src="chrome://communicator/locale/permissions/permissionsManager.properties"/>

+ 0 - 30
comm-esr60/comm-esr60/patches/1222046-73a1.patch

@@ -1,30 +0,0 @@
-# HG changeset patch
-# User Gene Smith <gds@chartertn.net>
-# Date 1576589875 -7200
-# Node ID 680552a461aa0285eb83fe9d9ef2ffa9ddae471c
-# Parent  c98adb71f9ab43fec5f0507bf12188adc314a720
-Bug 1222046 - Fix SMTP server responding with timeout due to missing CRLF at end of forwarded HTML message. r=mkmelin
-
-diff --git a/mailnews/compose/src/nsMsgCompose.cpp b/mailnews/compose/src/nsMsgCompose.cpp
---- a/mailnews/compose/src/nsMsgCompose.cpp
-+++ b/mailnews/compose/src/nsMsgCompose.cpp
-@@ -1337,16 +1337,19 @@ NS_IMETHODIMP nsMsgCompose::SendMsg(MSG_
-     NS_ENSURE_SUCCESS(rv, rv);
-   }
-   else
-   {
-     m_compFields->GetBody(msgBody);
-   }
-   if (!msgBody.IsEmpty())
-   {
-+    // Ensure body ends in <CRLF> to avoid SMTP server timeout when sent.
-+    if (!StringEndsWith(msgBody, NS_LITERAL_STRING("\r\n")))
-+      msgBody.AppendLiteral("\r\n");
-     bool isAsciiOnly = NS_IsAscii(static_cast<const char16_t*>(msgBody.get()));
-     // Convert body to mail charset
-     nsCString outCString;
-     rv = nsMsgI18NConvertFromUnicode(charset ? nsDependentCString(charset) : EmptyCString(),
-                                      msgBody, outCString, true);
-     if (m_compFields->GetForceMsgEncoding())
-       isAsciiOnly = false;
-     if (NS_SUCCEEDED(rv) && !outCString.IsEmpty())

+ 0 - 106
comm-esr60/comm-esr60/patches/1234651-medianoscripts.patch

@@ -1,106 +0,0 @@
-# HG changeset patch
-# User Frank-Rainer Grahl <frgrahl@gmx.net>
-# Parent  9cfbd31f4eb00a6bbcf0ab5cb105729b323da129
-Bug 1234651 - Check view targets for possible unsafe content. r=IanN a=IanN
-
-diff --git a/suite/base/content/nsContextMenu.js b/suite/base/content/nsContextMenu.js
---- a/suite/base/content/nsContextMenu.js
-+++ b/suite/base/content/nsContextMenu.js
-@@ -919,38 +919,44 @@ nsContextMenu.prototype = {
-   },
- 
-   toggleImageSize: function() {
-     content.document.toggleImageSize();
-   },
- 
-   // Reload image
-   reloadImage: function() {
--    urlSecurityCheck(this.mediaURL, this.target.nodePrincipal,
--                     Ci.nsIScriptSecurityManager.ALLOW_CHROME);
-+    urlSecurityCheck(this.mediaURL,
-+                     this.target.nodePrincipal,
-+                     Ci.nsIScriptSecurityManager.DISALLOW_SCRIPT);
-     if (this.target instanceof Ci.nsIImageLoadingContent)
-       this.target.forceReload();
-   },
- 
-   // Change current window to the URL of the image, video, or audio.
--  viewMedia: function(aEvent) {
--    var viewURL;
--    if (this.onCanvas)
--      viewURL = this.target.toDataURL();
--    else {
--      viewURL = this.mediaURL;
--      urlSecurityCheck(viewURL, this.target.nodePrincipal,
--                       Ci.nsIScriptSecurityManager.ALLOW_CHROME);
-+  viewMedia(e) {
-+    let doc = this.target.ownerDocument;
-+    let where = whereToOpenLink(e);
-+    if (this.onCanvas) {
-+      let blobUrl = URL.createObjectURL(this.target);
-+      let systemPrincipal = Services.scriptSecurityManager
-+                                    .getSystemPrincipal();
-+      openUILinkIn(blobUrl, where,
-+                   { referrerURI: doc.documentURIObject,
-+                     triggeringPrincipal: systemPrincipal,
-+                   });
-+    } else {
-+      urlSecurityCheck(this.mediaURL,
-+                       this.target.nodePrincipal,
-+                       Ci.nsIScriptSecurityManager.DISALLOW_SCRIPT);
-+      openUILinkIn(this.mediaURL, where,
-+                   { referrerURI: doc.documentURIObject,
-+                     triggeringPrincipal: this.target.nodePrincipal,
-+                   });
-     }
--    var doc = this.target.ownerDocument;
--    var where = whereToOpenLink(aEvent);
--    if (where == "current")
--      openTopWin(viewURL, doc.defaultView);
--    else
--      openUILinkIn(viewURL, where, null, null, doc.documentURIObject);
-   },
- 
-   saveVideoFrameAsImage: function () {
-     urlSecurityCheck(this.mediaURL, this.browser.contentPrincipal,
-                      Ci.nsIScriptSecurityManager.DISALLOW_SCRIPT);
-     var name = "snapshot.jpg";
-     try {
-       let uri = makeURI(this.mediaURL);
-@@ -975,25 +981,27 @@ nsContextMenu.prototype = {
-     var isPaused = this.target.paused && this.target.currentTime > 0;
-     this.target.pause();
- 
-     openDialog("chrome://communicator/content/fullscreen-video.xhtml",
-                "", "chrome,centerscreen,dialog=no", this.target, isPaused);
-   },
- 
-   // Change current window to the URL of the background image.
--  viewBGImage: function(aEvent) {
--    urlSecurityCheck(this.bgImageURL, this.target.nodePrincipal,
--                     Ci.nsIScriptSecurityManager.ALLOW_CHROME);
--    var doc = this.target.ownerDocument;
--    var where = whereToOpenLink(aEvent);
--    if (where == "current")
--      openTopWin(this.bgImageURL, doc.defaultView);
--    else
--      openUILinkIn(this.bgImageURL, where, null, null, doc.documentURIObject);
-+  viewBGImage(e) {
-+    urlSecurityCheck(this.bgImageURL,
-+                     this.target.nodePrincipal,
-+                     Ci.nsIScriptSecurityManager.DISALLOW_SCRIPT);
-+
-+    let doc = this.target.ownerDocument;
-+    let where = whereToOpenLink(e);
-+    openUILinkIn(this.bgImageURL, where,
-+                 { referrerURI: doc.documentURIObject,
-+                   triggeringPrincipal: this.target.nodePrincipal,
-+                 });
-   },
- 
-   setDesktopBackground: function() {
-     let url = (new URL(this.target.ownerDocument.location.href)).pathname;
-     let imageName = url.substr(url.lastIndexOf("/") + 1);
-     openDialog("chrome://communicator/content/setDesktopBackground.xul",
-                "_blank", "chrome,modal,titlebar,centerscreen", this.target,
-                imageName);

+ 0 - 144
comm-esr60/comm-esr60/patches/1238874-63.patch

@@ -1,144 +0,0 @@
-# HG changeset patch
-# User MakeMyDay <makemyday@gmx-topmail.de>
-# Date 1530704207 -7200
-#      Mi Jul 04 13:36:47 2018 +0200
-# Node ID 9edb2b29454bf76de263491e8635d65d955b7fdf
-# Parent  79f02a9229408fd7fbba4f336ab53768b9998fd8
-Bug 1238874 - Streamline email subject strings for imip transport. r=philipp
-
-diff --git a/calendar/itip/calItipEmailTransport.js b/calendar/itip/calItipEmailTransport.js
---- a/calendar/itip/calItipEmailTransport.js
-+++ b/calendar/itip/calItipEmailTransport.js
-@@ -65,30 +65,30 @@ calItipEmailTransport.prototype = {
-             case "REQUEST": {
-                 let usePrefixes = Preferences.get(
-                     "calendar.itip.useInvitationSubjectPrefixes",
-                     true
-                 );
-                 if (usePrefixes) {
-                     let seq = item.getProperty("SEQUENCE");
-                     let subjectKey = seq && seq > 0
--                        ? "itipRequestUpdatedSubject"
--                        : "itipRequestSubject";
-+                        ? "itipRequestUpdatedSubject2"
-+                        : "itipRequestSubject2";
-                     subject = cal.l10n.getLtnString(subjectKey, [summary]);
-                 } else {
-                     subject = summary;
-                 }
-                 body = cal.l10n.getLtnString(
-                     "itipRequestBody",
-                     [item.organizer ? item.organizer.toString() : "", summary]
-                 );
-                 break;
-             }
-             case "CANCEL": {
--                subject = cal.l10n.getLtnString("itipCancelSubject", [summary]);
-+                subject = cal.l10n.getLtnString("itipCancelSubject2", [summary]);
-                 body = cal.l10n.getLtnString(
-                     "itipCancelBody",
-                     [item.organizer ? item.organizer.toString() : "", summary]
-                 );
-                 break;
-             }
-             case "DECLINECOUNTER": {
-                 subject = cal.l10n.getLtnString("itipDeclineCounterSubject", [summary]);
-@@ -112,29 +112,29 @@ calItipEmailTransport.prototype = {
-                 aItipItem.setAttendeeStatus(att.id, att.participationStatus);
-                 let myPartStat = att.participationStatus;
-                 let name = att.toString();
- 
-                 // Generate proper body from my participation status
-                 let subjectKey, bodyKey;
-                 switch (myPartStat) {
-                     case "ACCEPTED":
--                        subjectKey = "itipReplySubjectAccept";
-+                        subjectKey = "itipReplySubjectAccept2";
-                         bodyKey = "itipReplyBodyAccept";
-                         break;
-                     case "TENTATIVE":
--                        subjectKey = "itipReplySubjectTentative";
-+                        subjectKey = "itipReplySubjectTentative2";
-                         bodyKey = "itipReplyBodyAccept";
-                         break;
-                     case "DECLINED":
--                        subjectKey = "itipReplySubjectDecline";
-+                        subjectKey = "itipReplySubjectDecline2";
-                         bodyKey = "itipReplyBodyDecline";
-                         break;
-                     default:
--                        subjectKey = "itipReplySubject";
-+                        subjectKey = "itipReplySubject2";
-                         bodyKey = "itipReplyBodyAccept";
-                         break;
-                 }
-                 subject = cal.l10n.getLtnString(subjectKey, [summary]);
-                 body = cal.l10n.getLtnString(bodyKey, [name]);
-                 break;
-             }
-         }
-diff --git a/calendar/locales/en-US/chrome/lightning/lightning.properties b/calendar/locales/en-US/chrome/lightning/lightning.properties
---- a/calendar/locales/en-US/chrome/lightning/lightning.properties
-+++ b/calendar/locales/en-US/chrome/lightning/lightning.properties
-@@ -143,26 +143,26 @@ imipBarReplyToRecentlyRemovedItem=This m
- imipBarUnsupportedText=This message contains an event that this version of Lightning cannot process.
- imipBarProcessingFailed=Processing message failed. Status: %1$S.
- imipBarNotWritable=No writable calendars are configured for invitations, please check the calendar properties.
- imipSendMail.title=E-Mail Notification
- imipSendMail.text=Would you like to send out notification E-Mail now?
- imipNoIdentity=None
- imipNoCalendarAvailable=There are no writable calendars available.
- 
--itipReplySubject=Event Invitation Reply: %1$S
-+itipReplySubject2=Invitation Reply: %1$S
- itipReplyBodyAccept=%1$S has accepted your event invitation.
- itipReplyBodyDecline=%1$S has declined your event invitation.
--itipReplySubjectAccept=Event Invitation Reply (Accepted): %1$S
--itipReplySubjectDecline=Event Invitation Reply (Declined): %1$S
--itipReplySubjectTentative=Event Invitation Reply (Tentative): %1$S
--itipRequestSubject=Event Invitation: %1$S
--itipRequestUpdatedSubject=Updated Event Invitation: %1$S
-+itipReplySubjectAccept2=Accepted: %1$S
-+itipReplySubjectDecline2=Invitation Declined: %1$S
-+itipReplySubjectTentative2=Tentative: %1$S
-+itipRequestSubject2=Invitation: %1$S
-+itipRequestUpdatedSubject2=Updated: %1$S
- itipRequestBody=%1$S has invited you to %2$S
--itipCancelSubject=Event Canceled: %1$S
-+itipCancelSubject2=Canceled: %1$S
- itipCancelBody=%1$S has canceled this event: %2$S
- itipCounterBody=%1$S has made a counterproposal for "%2$S":
- itipDeclineCounterBody=%1$S has declined your counterproposal for "%2$S".
- itipDeclineCounterSubject=Counterproposal Declined: %1$S
- 
- confirmProcessInvitation=You have recently deleted this item, are you sure you want to process this invitation?
- confirmProcessInvitationTitle=Process Invitation?
- 
-diff --git a/calendar/test/unit/test_imip.js b/calendar/test/unit/test_imip.js
---- a/calendar/test/unit/test_imip.js
-+++ b/calendar/test/unit/test_imip.js
-@@ -31,22 +31,22 @@ add_task(function test_title_in_subject(
-     Preferences.set("calendar.itip.useInvitationSubjectPrefixes", false);
-     let items = transport._prepareItems(itipItemForTest("foo"));
-     equal(items.subject, "foo");
- });
- 
- add_task(function test_title_in_summary() {
-     Preferences.set("calendar.itip.useInvitationSubjectPrefixes", true);
-     let items = transport._prepareItems(itipItemForTest("bar"));
--    equal(items.subject, "Event Invitation: bar");
-+    equal(items.subject, "Invitation: bar");
- });
- 
- add_task(function test_updated_title_in_subject() {
-     Preferences.set("calendar.itip.useInvitationSubjectPrefixes", false);
-     let items = transport._prepareItems(itipItemForTest("foo", 2));
-     equal(items.subject, "foo");
- });
- 
- add_task(function test_updated_title_in_summary() {
-     Preferences.set("calendar.itip.useInvitationSubjectPrefixes", true);
-     let items = transport._prepareItems(itipItemForTest("bar", 2));
--    equal(items.subject, "Updated Event Invitation: bar");
-+    equal(items.subject, "Updated: bar");
- });

+ 0 - 152
comm-esr60/comm-esr60/patches/1242294-firefoxstrict-v1_2-257.patch

@@ -1,152 +0,0 @@
-# HG changeset patch
-# User Ian Neal <iann_cvs@blueyonder.co.uk>
-# Date 1587890601 -3600
-# Parent  24688033662a55ea615967ebf9b15682fb6a1075
-Bug 1242294 - Update how Firefox compatibility is advertised - comm part. r=frg a=frg
-
-diff --git a/suite/app/profile/suite-prefs.js b/suite/app/profile/suite-prefs.js
---- a/suite/app/profile/suite-prefs.js
-+++ b/suite/app/profile/suite-prefs.js
-@@ -35,16 +35,18 @@ pref("general.startup.addressbook",     
- pref("general.open_location.last_url",      "");
- pref("general.open_location.last_window_choice", 0);
- pref("browser.urlbar.historyEnabled",       true);
- 
- pref("general.smoothScroll", false);
- pref("general.autoScroll", true);
- 
- pref("general.useragent.compatMode.firefox", true);
-+// See bug 1242294 for how to make this work.
-+pref("general.useragent.compatMode.strict-firefox", false);
- 
- // 0 = blank, 1 = home (browser.startup.homepage), 2 = last visited page, 3 = resume previous browser session
- pref("browser.startup.page", 1);
- pref("browser.startup.homepage", "chrome://navigator-region/locale/region.properties");
- pref("browser.startup.homepage.count", 1);
- 
- pref("browser.warnOnQuit", true);
- pref("browser.warnOnRestart", true);
-diff --git a/suite/components/pref/content/pref-http.js b/suite/components/pref/content/pref-http.js
---- a/suite/components/pref/content/pref-http.js
-+++ b/suite/components/pref/content/pref-http.js
-@@ -1,8 +1,42 @@
- /* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
- /* This Source Code Form is subject to the terms of the Mozilla Public
-  * License, v. 2.0. If a copy of the MPL was not distributed with this
-  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
- 
- function Startup() {
--  // Go away! Currently nothing here to see.
-+  let compatMode = document.getElementById("uaFirefoxCompat");
-+  let modeFirefox =
-+    document.getElementById("general.useragent.compatMode.firefox");
-+  let modeStrict =
-+    document.getElementById("general.useragent.compatMode.strict-firefox");
-+
-+  if (modeStrict.value)
-+    compatMode.value = "strict";
-+  else if (modeFirefox.value)
-+    compatMode.value = "compat";
-+  else
-+    compatMode.value = "none";
- }
-+
-+function updateUAPrefs(aCompatMode) {
-+  let modeFirefox =
-+    document.getElementById("general.useragent.compatMode.firefox");
-+  // The strict option will only work in builds compiled from a SeaMonkey
-+  // release branch. Additional code needs to be added to the mozilla sources.
-+  // See Bug 1242294 for the needed changes.
-+  let modeStrict =
-+    document.getElementById("general.useragent.compatMode.strict-firefox");
-+  switch (aCompatMode.value) {
-+    case "strict":
-+      modeStrict.value = true;
-+      modeFirefox.value = false;
-+      break;
-+    case "compat":
-+      modeStrict.value = false;
-+      modeFirefox.value = true;
-+      break;
-+    case "none":
-+      modeStrict.value = false;
-+      modeFirefox.value = false;
-+  }
-+}
-diff --git a/suite/components/pref/content/pref-http.xul b/suite/components/pref/content/pref-http.xul
---- a/suite/components/pref/content/pref-http.xul
-+++ b/suite/components/pref/content/pref-http.xul
-@@ -14,16 +14,19 @@
-                   name="network.http.version"
-                   type="string"/>
-       <preference id="network.http.proxy.version"
-                   name="network.http.proxy.version"
-                   type="string"/>
-       <preference id="general.useragent.compatMode.firefox"
-                   name="general.useragent.compatMode.firefox"
-                   type="bool"/>
-+      <preference id="general.useragent.compatMode.strict-firefox"
-+                  name="general.useragent.compatMode.strict-firefox"
-+                  type="bool"/>
-     </preferences>
- 
-     <description>&prefPara;</description>
- 
-     <hbox align="start">
-       <groupbox flex="1">
-         <caption label="&prefDirect.label;"/>
-         <vbox class="indent" align="start">
-@@ -54,18 +57,26 @@
-         </vbox>
-       </groupbox>
-     </hbox>
- 
-     <separator class="thin"/>
- 
-     <groupbox>
-       <caption label="&prefUseragent.label;"/>
--      <checkbox id="uaFirefoxCompat"
--                label="&prefFirefoxCompat.label;"
--                accesskey="&prefFirefoxCompat.accesskey;"
--                preference="general.useragent.compatMode.firefox"/>
-+      <radiogroup id="uaFirefoxCompat"
-+                  oncommand="updateUAPrefs(this);">
-+        <radio value="strict"
-+               label="&prefFirefoxStrict.label;"
-+               accesskey="&prefFirefoxStrict.accesskey;"/>
-+        <radio value="none"
-+               label="&prefFirefoxNone.label;"
-+               accesskey="&prefFirefoxNone.accesskey;"/>
-+        <radio value="compat"
-+               label="&prefFirefoxCompat2.label;"
-+               accesskey="&prefFirefoxCompat2.accesskey;"/>
-+      </radiogroup>
-     </groupbox>
- 
--    <description>&prefCompatWarning;</description>
-+    <description>&prefCompatWarning2.desc;</description>
-   </prefpane>
- 
- </overlay>
-diff --git a/suite/locales/en-US/chrome/common/pref/pref-http.dtd b/suite/locales/en-US/chrome/common/pref/pref-http.dtd
---- a/suite/locales/en-US/chrome/common/pref/pref-http.dtd
-+++ b/suite/locales/en-US/chrome/common/pref/pref-http.dtd
-@@ -10,11 +10,15 @@
- <!ENTITY prefEnableHTTP10.label              "Use HTTP 1.0">
- <!ENTITY prefEnableHTTP10.accesskey          "U">
- <!ENTITY prefEnableHTTP10Proxy.accesskey     "S">
- <!ENTITY prefEnableHTTP11.label              "Use HTTP 1.1">
- <!ENTITY prefEnableHTTP11.accesskey          "E">
- <!ENTITY prefEnableHTTP11Proxy.accesskey     "T">
- <!ENTITY prefPara                            "HTTP connections may be fine-tuned using these options to enhance either performance or compatibility. Some proxy servers, for example, are known to require HTTP/1.0 (see the release notes for details).">
- <!ENTITY prefUseragent.label                 "User Agent String">
--<!ENTITY prefFirefoxCompat.label             "Advertise Firefox compatibility">
--<!ENTITY prefFirefoxCompat.accesskey         "F">
--<!ENTITY prefCompatWarning                   "WARNING: disabling these settings may result in websites or services not working properly.">
-+<!ENTITY prefFirefoxStrict.label             "Identify as Firefox">
-+<!ENTITY prefFirefoxStrict.accesskey         "I">
-+<!ENTITY prefFirefoxNone.label               "Identify as SeaMonkey">
-+<!ENTITY prefFirefoxNone.accesskey           "M">
-+<!ENTITY prefFirefoxCompat2.label            "Identify as SeaMonkey and advertise Firefox compatibility">
-+<!ENTITY prefFirefoxCompat2.accesskey        "F">
-+<!ENTITY prefCompatWarning2.desc             "WARNING: changing this setting may result in websites or services not working properly.">

+ 0 - 54
comm-esr60/comm-esr60/patches/1242294-help-useragent-257.patch

@@ -1,54 +0,0 @@
-# HG changeset patch
-# User Nuno Silva <nunojsg@gmail.com>
-# Date 1588395636 -3600
-#      Sat May 02 06:00:36 2020 +0100
-# Node ID 9aeb990c0dd3d1a34241f21dccadb6d5c68d9b7c
-# Parent  0d3a6340ba4332cf2f863c9747b47d5f83b6b849
-Bug 1242294 - Update help text for User-Agent preferences. r=IanN a=IanN
-
-diff --git a/suite/locales/en-US/chrome/common/help/cs_nav_prefs_advanced.xhtml b/suite/locales/en-US/chrome/common/help/cs_nav_prefs_advanced.xhtml
---- a/suite/locales/en-US/chrome/common/help/cs_nav_prefs_advanced.xhtml
-+++ b/suite/locales/en-US/chrome/common/help/cs_nav_prefs_advanced.xhtml
-@@ -493,28 +493,31 @@
-         use of HTTP connections, better support for client-side caching, and
-         more refined control over cache expiration and replacement policies.</li>
-     </ul>
-   </li>
-   <li><strong>User Agent String</strong>:
-     The identifier sent by &brandShortName; to all websites is used for
-     statistics about website usage but also sometimes to expose certain features
-     only to known browsers (a practice known as "sniffing"). Consequently,
--    unchecking any of these boxes may result in websites or remote calendar
--    services not working properly.
-+    changing this option may result in websites not working properly.
-+    &brandShortName; can:
-     <ul>
--      <li><strong>Advertise Firefox compatibility</strong>: If this is enabled,
--        &brandShortName; will identify itself as both &brandShortName; and also
--        compatible with Firefox. This allows websites that check for certain
--        browsers rather than certain functionality to work with &brandShortName;.</li>
--      <li><strong>Advertise Lightning installation</strong>: This option is
--        only available when the Lightning calendar extension is installed and
--        activated. If this is enabled, &brandShortName; will add information on
--        Lightning being installed and which version, thus calendaring websites
--        and/or remote calendar services can customize their communication.</li>
-+      <li><strong>Identify as Firefox</strong>: Do not mention &brandShortName;,
-+        send a Firefox identifier instead. This might be needed for websites
-+        which refuse to work when &brandShortName; is mentioned in the
-+        identifier.</li>
-+      <li><strong>Identify as &brandShortName;</strong>: &brandShortName; will
-+        identify itself as &brandShortName;, without mentioning Firefox.</li>
-+      <li><strong>Identify as &brandShortName; and advertise Firefox
-+        compatibility</strong>: &brandShortName; will identify itself as both
-+        &brandShortName; and also compatible with Firefox. This allows websites
-+        that check for certain browsers rather than certain functionality to
-+        work with &brandShortName;, while still appearing as &brandShortName; in
-+        website statistics.</li>
-     </ul>
-   </li>
- </ul>
- 
- <p>[<a href="#advanced_preferences">Return to beginning of section</a>]</p>
- 
- <h2 id="software_installation">Advanced Preferences - Software
-   Installation</h2>

+ 0 - 30
comm-esr60/comm-esr60/patches/1268008-help-certificate-257.patch

@@ -1,30 +0,0 @@
-# HG changeset patch
-# User Nuno Silva <nunojsg@gmail.com>
-# Date 1588463114 -3600
-#      Sun May 03 00:45:14 2020 +0100
-# Node ID ee59b281491fda29e3d3611b0e74b354a1741844
-# Parent  ac5bf38a5c0b0db3acb63e774a5d26fe4d9064cf
-Bug 1268008 - Correct typo "certifiate" in certs_help.xhtml. r=IanN a=IanN
-
-diff --git a/suite/locales/en-US/chrome/common/help/certs_help.xhtml b/suite/locales/en-US/chrome/common/help/certs_help.xhtml
---- a/suite/locales/en-US/chrome/common/help/certs_help.xhtml
-+++ b/suite/locales/en-US/chrome/common/help/certs_help.xhtml
-@@ -232,17 +232,17 @@
-     to locate the file that contains the certificate(s).</li>
-   <li><strong>Export</strong>: Export the selected certificates. You can
-     choose among various formats.</li>
-   <li><strong>Delete or Distrust</strong>: Delete the selected certificates.</li>
- </ul>
- 
- <p>To ensure that an entire
-   <a href="glossary.xhtml#certificate_chain">certificate chain</a> of CAs are
--  all trusted, you need to edit the root CA certifiate only.</p>
-+  all trusted, you need to edit the root CA certificate only.</p>
- 
- <p>To import the chain, you click a link on a web page provided by the CA. You
-   can then use the authorities tab to locate the root certificate and edit its
-   trust settings.</p>
- 
- <p>The root and intermediate CAs all appear under the same organization. The
-   root certificate is the one that lists itself as the issuer.</p>
- 

+ 0 - 28
comm-esr60/comm-esr60/patches/1270578-help-space-257.patch

@@ -1,28 +0,0 @@
-# HG changeset patch
-# User Nuno Silva <nunojsg@gmail.com>
-# Date 1588608359 -3600
-# Parent  9a481d8b02a4f13f3d8ca53f67ea5e116cfc7706
-Bug 1270578 - Add missing space ("editmenu"->"edit menu"). r=IanN a=IanN
-
-diff --git a/suite/locales/en-US/chrome/common/help/cs_nav_prefs_navigator.xhtml b/suite/locales/en-US/chrome/common/help/cs_nav_prefs_navigator.xhtml
---- a/suite/locales/en-US/chrome/common/help/cs_nav_prefs_navigator.xhtml
-+++ b/suite/locales/en-US/chrome/common/help/cs_nav_prefs_navigator.xhtml
-@@ -140,17 +140,17 @@
- 
- <h2 id="history">Browser Preferences - History</h2>
- 
- <p>This section describes how to use the History preferences panel. If
-   you&apos;re not already viewing it, follow these steps:</p>
- 
- <ol>
-   <li>Open the <span class="mac">&brandShortName;</span>
--    <span class="noMac">Edit</span>menu and choose Preferences.</li>
-+    <span class="noMac">Edit</span> menu and choose Preferences.</li>
-   <li>Under the Browser category, click History. (If no subcategories are
-     visible, double-click Browser to expand the list.)</li>
- </ol>
- 
- <p>The History preferences panel allows you to configure the history settings
-   for the browser.</p>
- 
- <ul>

File diff suppressed because it is too large
+ 0 - 547
comm-esr60/comm-esr60/patches/1300198-centralise-v1_1-257.patch


+ 0 - 270
comm-esr60/comm-esr60/patches/1300198-move-to-json-v1_1-257.patch

@@ -1,270 +0,0 @@
-# HG changeset patch
-# User Ian Neal <iann_cvs@blueyonder.co.uk>
-# Date 1587137193 -3600
-# Parent  1f79afe9174149ef2bf42766b8235b59e36213d8
-Bug 1300198 - Move list.txt over to JSON once bug 1276739 is in and port |Bug 1309304 - Move search python files to a central location| and |Bug 1328713 - add regionOverrides to search/list.json| to SeaMonkey. r=frg a=frg
-
-diff --git a/suite/locales/Makefile.in b/suite/locales/Makefile.in
---- a/suite/locales/Makefile.in
-+++ b/suite/locales/Makefile.in
-@@ -47,46 +47,44 @@ MOZ_SFX_PACKAGE=$(topsrcdir)/comm/other-
- NON_OMNIJAR_FILES = \
- 	defaults/messenger/mailViews.dat \
- 	defaults/profile/panels.rdf \
- 	defaults/profile/mimeTypes.rdf \
- 	defaults/profile/chrome/userChrome-example.css \
- 	defaults/profile/chrome/userContent-example.css \
- 	$(NULL)
- 
--SEARCHPLUGINS_NAMES = $(shell cat $(call MERGE_FILE,searchplugins/list.txt))
--SEARCHPLUGINS_FILENAMES = $(subst :hidden,,$(SEARCHPLUGINS_NAMES))
-+SEARCHPLUGINS_FILENAMES := $(shell $(call py_action,output_searchplugins_list,$(srcdir)/search/list.json $(AB_CD)))
- SEARCHPLUGINS_PATH := .deps/generated_$(AB_CD)
- SEARCHPLUGINS_TARGET := libs searchplugins
- SEARCHPLUGINS := $(foreach plugin,$(addsuffix .xml,$(SEARCHPLUGINS_FILENAMES)),$(or $(wildcard $(call EN_US_OR_L10N_FILE,searchplugins/$(plugin))),$(info Missing searchplugin: $(plugin))))
- # Some locale-specific search plugins may have preprocessor directives, but the
- # default en-US ones do not.
- SEARCHPLUGINS_FLAGS := --silence-missing-directive-warnings
- PP_TARGETS += SEARCHPLUGINS
- 
--list-txt = $(SEARCHPLUGINS_PATH)/list.txt
--GARBAGE += $(list-txt)
-+list-json = $(SEARCHPLUGINS_PATH)/list.json
-+GARBAGE += $(list-json)
- 
- libs:: searchplugins
- 
- # Required for l10n.mk - defines a list of app sub dirs that should
- # be included in langpack xpis.
- # Currently not set in SeaMonkey.
- DIST_SUBDIRS = $(DIST_SUBDIR)
- 
- include $(topsrcdir)/config/rules.mk
- 
- COMPARE_LOCALES_DEFINES += -Dmozilla=..
- 
- include $(topsrcdir)/toolkit/locales/l10n.mk
- 
--$(list-txt): $(call mkdir_deps,$(SEARCHPLUGINS_PATH)) $(if $(IS_LANGUAGE_REPACK),FORCE)
--	$(RM) $(list-txt)
--	$(foreach plugin,$(SEARCHPLUGINS_NAMES),printf '$(plugin)\n' >> $(list-txt);)
--searchplugins:: $(list-txt)
-+$(list-json): $(call mkdir_deps,$(SEARCHPLUGINS_PATH)) $(if $(IS_LANGUAGE_REPACK),FORCE)
-+	$(call py_action,generate_searchjson,$(srcdir)/search/list.json $(AB_CD) $(list-json))
-+searchplugins:: $(list-json)
- 
- $(DIST)/branding:
- 	$(NSINSTALL) -D $@
- 
- PROFILE_CHROME = userChrome-example.css userContent-example.css
- 
- NO_JA_JP_MAC_AB_CD := $(if $(filter ja-JP-mac, $(AB_CD)),ja,$(AB_CD))
- 
-diff --git a/suite/locales/en-US/searchplugins/list.txt b/suite/locales/en-US/searchplugins/list.txt
-deleted file mode 100644
---- a/suite/locales/en-US/searchplugins/list.txt
-+++ /dev/null
-@@ -1,4 +0,0 @@
--duckduckgo
--google
--wikipedia
--yahoo
-diff --git a/suite/locales/jar.mn b/suite/locales/jar.mn
---- a/suite/locales/jar.mn
-+++ b/suite/locales/jar.mn
-@@ -194,18 +194,18 @@
-   locale/@AB_CD@/communicator/profile/profileSelection.dtd                  (%chrome/common/profile/profileSelection.dtd)
-   locale/@AB_CD@/communicator/profile/profileSelection.properties           (%chrome/common/profile/profileSelection.properties)
-   locale/@AB_CD@/communicator/safeMode.dtd                                  (%chrome/common/safeMode.dtd)
-   locale/@AB_CD@/communicator/search/engineManager.dtd                      (%chrome/common/search/engineManager.dtd)
-   locale/@AB_CD@/communicator/search/engineManager.properties               (%chrome/common/search/engineManager.properties)
-   locale/@AB_CD@/communicator/search/search.properties                      (%chrome/common/search/search.properties)
-   locale/@AB_CD@/communicator/search/searchbar.dtd                          (%chrome/common/search/searchbar.dtd)
-   locale/@AB_CD@/communicator/search/search-panel.dtd                       (%chrome/common/search/search-panel.dtd)
--  locale/@AB_CD@/communicator/searchplugins/list.txt                        (.deps/generated_@AB_CD@/list.txt)
-   locale/@AB_CD@/communicator/searchplugins/                                (.deps/generated_@AB_CD@/*.xml)
-+  locale/@AB_CD@/communicator/searchplugins/list.json                       (.deps/generated_@AB_CD@/list.json)
-   locale/@AB_CD@/communicator/sidebar/customize.dtd                         (%chrome/common/sidebar/customize.dtd)
-   locale/@AB_CD@/communicator/sidebar/preview.dtd                           (%chrome/common/sidebar/preview.dtd)
-   locale/@AB_CD@/communicator/sidebar/sidebar.properties                    (%chrome/common/sidebar/sidebar.properties)
-   locale/@AB_CD@/communicator/sidebar/sidebarOverlay.dtd                    (%chrome/common/sidebar/sidebarOverlay.dtd)
-   locale/@AB_CD@/communicator-region/region.properties                      (%chrome/common/region.properties)
-   locale/@AB_CD@/messenger/AccountManager.dtd                               (%chrome/mailnews/pref/AccountManager.dtd)
-   locale/@AB_CD@/messenger/AccountWizard.dtd                                (%chrome/mailnews/pref/AccountWizard.dtd)
-   locale/@AB_CD@/messenger/addressbook/abAddressBookNameDialog.dtd          (%chrome/mailnews/addressbook/abAddressBookNameDialog.dtd)
-diff --git a/suite/locales/search/list.json b/suite/locales/search/list.json
-new file mode 100644
---- /dev/null
-+++ b/suite/locales/search/list.json
-@@ -0,0 +1,171 @@
-+{
-+  "default": {
-+    "visibleDefaultEngines": [
-+      "duckduckgo", "google", "wikipedia", "yahoo"
-+    ]
-+  },
-+  "regionOverrides": {},
-+  "locales": {
-+    "en-US": {
-+      "default": {
-+        "visibleDefaultEngines": [
-+          "duckduckgo", "google", "wikipedia", "yahoo"
-+        ]
-+      }
-+    },
-+    "cs": {
-+      "default": {
-+        "visibleDefaultEngines": [
-+          "google", "seznam-cz", "duckduckgo-cz", "heureka-cz", "mapy-cz", "wikipedia-cz"
-+        ]
-+      }
-+    },
-+    "de": {
-+      "default": {
-+        "visibleDefaultEngines": [
-+          "duckduckgo", "google", "wikipedia-de", "yahoo"
-+        ]
-+      }
-+    },
-+    "en-GB": {
-+      "default": {
-+        "visibleDefaultEngines": [
-+          "duckduckgo", "google", "wikipedia", "yahoo-en-GB"
-+        ]
-+      }
-+    },
-+    "es-AR": {
-+      "default": {
-+        "visibleDefaultEngines": [
-+          "duckduckgo", "google", "yahoo", "wikipedia"
-+        ]
-+      }
-+    },
-+    "es-ES": {
-+      "default": {
-+        "visibleDefaultEngines": [
-+          "drae", "duckduckgo", "google", "wikipedia-es", "yahoo"
-+        ]
-+      }
-+    },
-+    "fi": {
-+      "default": {
-+        "visibleDefaultEngines": [
-+          "bookplus-fi", "duckduckgo", "huuto-fi", "google", "wikipedia-fi", "yahoo-fi"
-+        ]
-+      }
-+    },
-+    "fr": {
-+      "default": {
-+        "visibleDefaultEngines": [
-+          "cnrtl-tlfi-fr", "duckduckgo", "google", "wikipedia-fr", "yahoo-france"
-+        ]
-+      }
-+    },
-+    "hu": {
-+      "default": {
-+        "visibleDefaultEngines": [
-+          "duckduckgo", "google", "sztaki-en-hu", "vatera", "wikipedia-hu"
-+        ]
-+      }
-+    },
-+    "it": {
-+      "default": {
-+        "visibleDefaultEngines": [
-+          "google", "hoepli", "wikipedia-it", "yahoo-it", "duckduckgo"
-+        ]
-+      }
-+    },
-+    "ja-JP-mac": {
-+      "default": {
-+        "visibleDefaultEngines": [
-+          "google-jp", "yahoo-jp", "amazon-jp", "wikipedia-ja", "duckduckgo"
-+        ]
-+      }
-+    },
-+    "ja": {
-+      "default": {
-+        "visibleDefaultEngines": [
-+          "google-jp", "yahoo-jp", "amazon-jp", "wikipedia-ja", "duckduckgo"
-+        ]
-+      }
-+    },
-+    "ka": {
-+      "default": {
-+        "visibleDefaultEngines": [
-+          "google", "duckduckgo", "wikipedia-ka"
-+        ]
-+      }
-+    },
-+    "nb-NO": {
-+      "default": {
-+        "visibleDefaultEngines": [
-+          "duckduckgo", "google", "wikipedia-NO", "yahoo"
-+        ]
-+      }
-+    },
-+    "nl": {
-+      "default": {
-+        "visibleDefaultEngines": [
-+          "google", "duckduckgo", "bolcom-nl", "wikipedia-nl", "marktplaats-nl", "yahoo"
-+        ]
-+      }
-+    },
-+    "pl": {
-+      "default": {
-+        "visibleDefaultEngines": [
-+          "allegro-pl", "ddg-pl", "google", "pwn-pl", "startpage-pl", "wikipedia-pl", "wolnelektury-pl"
-+        ]
-+      }
-+    },
-+    "pt-BR": {
-+      "default": {
-+        "visibleDefaultEngines": [
-+          "google", "duckduckgo"
-+        ]
-+      }
-+    },
-+    "pt-PT": {
-+      "default": {
-+        "visibleDefaultEngines": [
-+          "duckduckgo", "google", "sapo", "priberam", "wikipedia-ptpt"
-+        ]
-+      }
-+    },
-+    "ru": {
-+      "default": {
-+        "visibleDefaultEngines": [
-+          "duckduckgo-ru", "google", "wikipedia-ru"
-+        ]
-+      }
-+    },
-+    "sk": {
-+      "default": {
-+        "visibleDefaultEngines": [
-+          "google", "azet-sk", "atlas-sk", "slovnik-sk", "zoznam-sk", "wikipedia-sk", "duckduckgo"
-+        ]
-+      }
-+    },
-+    "sv-SE": {
-+      "default": {
-+        "visibleDefaultEngines": [
-+          "duckduckgo-sv-se", "google", "prisjakt-sv-SE", "tyda-sv-SE", "wikipedia-sv-SE", "yahoo-sv-SE"
-+        ]
-+      }
-+    },
-+    "zh-CN": {
-+      "default": {
-+        "visibleDefaultEngines": [
-+          "google", "duckduckgo", "wikipedia", "yahoo"
-+        ]
-+      }
-+    },
-+    "zh-TW": {
-+      "default": {
-+        "visibleDefaultEngines": [
-+          "yahoo-zh-TW", "google", "duckduckgo", "yahoo-bid-zh-TW", "chunghwapost-zh-TW", "wikipedia-zh-TW"
-+        ]
-+      }
-+    }
-+  }
-+}

+ 0 - 27
comm-esr60/comm-esr60/patches/1305902-enable_pinning.patch

@@ -1,27 +0,0 @@
-# HG changeset patch
-# User Ian Neal <iann_cvs@blueyonder.co.uk>
-# Parent  ff4292e90b3da9990063e7769f5d9cd36223b5b5
-Bug 1305902 - Enable public key pinning in Seamonkey. r=frg a=frg
-
-diff --git a/suite/browser/browser-prefs.js b/suite/browser/browser-prefs.js
---- a/suite/browser/browser-prefs.js
-+++ b/suite/browser/browser-prefs.js
-@@ -853,16 +853,18 @@ pref("security.warn_leaving_secure", fal
- pref("security.warn_submit_insecure", false);
- pref("security.warn_viewing_mixed", false);
- pref("security.warn_mixed_active_content", true);
- pref("security.warn_mixed_display_content", true);
- // Block insecure active content on https pages
- pref("security.mixed_content.block_active_content", true);
- // Turn on the CSP 1.0 parser for Content Security Policy headers
- pref("security.csp.speccompliant", true);
-+// 1 = allow MITM for certificate pinning checks.
-+pref("security.cert_pinning.enforcement_level", 1);
- 
- pref("geo.wifi.uri", "https://www.googleapis.com/geolocation/v1/geolocate?key=%GOOGLE_LOCATION_SERVICE_API_KEY%");
- 
- // Some of these prefs are specified even though they may be redundant; they are given
- // here for clarity and end-user experiments with platform-provided geolocation.
- #ifdef XP_MACOSX
- pref("geo.provider.use_corelocation", false);
- #endif

+ 0 - 109
comm-esr60/comm-esr60/patches/1306060-breaks-257.patch

@@ -1,109 +0,0 @@
-# HG changeset patch
-# User Frank-Rainer Grahl <frgrahl@gmx.net>
-# Date 1585823442 -7200
-# Parent  7421c7e08cf520a15043d36fe67791691352ddff
-Bug 1306060 - Fix invalid checks for <br> and clean up formatting in composer code. r=IanN a=IanN
-
-diff --git a/editor/ui/dialogs/content/EdDialogCommon.js b/editor/ui/dialogs/content/EdDialogCommon.js
---- a/editor/ui/dialogs/content/EdDialogCommon.js
-+++ b/editor/ui/dialogs/content/EdDialogCommon.js
-@@ -685,18 +685,17 @@ var NotAnInlineParent = [
-   "tfoot",
-   "thead",
-   "tr",
-   "ul",
- ];
- 
- function nodeIsBreak(editor, node)
- {
--  // XXX This doesn't work because .localName is lowercase (see bug 1306060).
--  return !node || node.localName == 'BR' || editor.nodeIsBlock(node);
-+  return !node || node.localName == "br" || editor.nodeIsBlock(node);
- }
- 
- function InsertElementAroundSelection(element)
- {
-   var editor = GetCurrentEditor();
-   editor.beginTransaction();
- 
-   try {
-@@ -710,41 +709,47 @@ function InsertElementAroundSelection(el
-       range = editor.document.createRange();
-       start = editor.selection.getRangeAt(0)
-       range.setStart(start.startContainer, start.startOffset);
-       end = editor.selection.getRangeAt(--count);
-       range.setEnd(end.endContainer, end.endOffset);
-     }
- 
-     // Flatten the selection to child nodes of the common ancestor
--    while (range.startContainer != range.commonAncestorContainer)
-+    while (range.startContainer != range.commonAncestorContainer) {
-       range.setStartBefore(range.startContainer);
--    while (range.endContainer != range.commonAncestorContainer)
-+    }
-+    while (range.endContainer != range.commonAncestorContainer) {
-       range.setEndAfter(range.endContainer);
-+    }
- 
--    if (editor.nodeIsBlock(element))
-+    if (editor.nodeIsBlock(element)) {
-       // Block element parent must be a valid block
--      while (!IsBlockParent.includes(range.commonAncestorContainer.localName))
-+      while (!IsBlockParent.includes(range.commonAncestorContainer.localName)) {
-         range.selectNode(range.commonAncestorContainer);
--    else
--    {
-+      }
-+    } else {
-       // Fail if we're not inserting a block (use setInlineProperty instead)
-       if (!nodeIsBreak(editor, range.commonAncestorContainer))
-         return false;
--      else if (NotAnInlineParent.includes(range.commonAncestorContainer.localName))
-+
-+      if (NotAnInlineParent.includes(range.commonAncestorContainer.localName)) {
-         // Inline element parent must not be an invalid block
--        do range.selectNode(range.commonAncestorContainer);
--        while (NotAnInlineParent.includes(range.commonAncestorContainer.localName));
--      else
-+        do {
-+          range.selectNode(range.commonAncestorContainer);
-+        } while (NotAnInlineParent.includes(range.commonAncestorContainer.localName));
-+      } else {
-         // Further insert block check
--        for (var i = range.startOffset; ; i++)
-+        for (var i = range.startOffset; ; i++) {
-           if (i == range.endOffset)
-             return false;
--          else if (nodeIsBreak(editor, range.commonAncestorContainer.childNodes[i]))
-+          if (nodeIsBreak(editor, range.commonAncestorContainer.childNodes[i]))
-             break;
-+        }
-+      }
-     }
- 
-     // The range may be contained by body text, which should all be selected.
-     offset = range.startOffset;
-     start = range.startContainer.childNodes[offset];
-     if (!nodeIsBreak(editor, start))
-     {
-       while (!nodeIsBreak(editor, start.previousSibling))
-@@ -776,18 +781,17 @@ function InsertElementAroundSelection(el
-       empty = false;
-       start = next;
-     }
-     if (!editor.nodeIsBlock(element))
-       editor.setShouldTxnSetSelection(true);
-     else
-     {
-       // Also move a trailing <br>
--      // XXX This doesn't work because .localName is lowercase (see bug 1306060).
--      if (start && start.localName == 'BR')
-+      if (start && start.localName == "br")
-       {
-         editor.deleteNode(start);
-         editor.insertNode(start, element, element.childNodes.length);
-         empty = false;
-       }
-       // Still nothing? Insert a <br> so the node is not empty
-       if (empty)
-         editor.insertNode(editor.createElementWithDefaults("br"), element, element.childNodes.length);

+ 0 - 69
comm-esr60/comm-esr60/patches/1346622-help-troubleshooting-url-v1.1-257.patch

@@ -1,69 +0,0 @@
-# HG changeset patch
-# User Nuno Silva <nunojsg@gmail.com>
-# Date 1588454709 -3600
-#      Sat May 02 22:25:09 2020 +0100
-# Node ID 8dab310a3a2eddbf2a726f2162bf10c3632a8c1a
-# Parent  093d213ef35c145b48a0b18635ec0e6441a6ae87
-Bug 1346622 - Add a preference for the "troubleshooting" URL and use it in the help. r=IanN a=IanN
-
-With this, the link in the help welcome page can point to the
-version-specific troubleshooting information directly, instead of
-relying on the /doc/troubleshooting server-side redirect.
-
-diff --git a/suite/app/profile/suite-prefs.js b/suite/app/profile/suite-prefs.js
---- a/suite/app/profile/suite-prefs.js
-+++ b/suite/app/profile/suite-prefs.js
-@@ -484,16 +484,17 @@ pref("browser.sessionstore.max_windows_u
- pref("browser.sessionstore.max_concurrent_tabs", 3);
- 
- pref("shell.checkDefaultClient", true);
- // We want to check if we are the default client for browser and mail. See
- // suite/shell/public/nsIShellService.idl for the possible constants you can use
- pref("shell.checkDefaultApps", 3);
- 
- pref("app.releaseNotesURL", "chrome://branding/locale/brand.properties");
-+pref("app.troubleshootingURL", "chrome://branding/locale/brand.properties");
- pref("app.vendorURL", "chrome://branding/locale/brand.properties");
- 
- // Base URL for web-based support pages.
- pref("app.support.baseURL", "http://www.seamonkey-project.org/doc/");
- 
- // App-specific update preferences
- 
- // Whether or not app updates are enabled
-diff --git a/suite/branding/seamonkey/locales/en-US/brand.properties b/suite/branding/seamonkey/locales/en-US/brand.properties
---- a/suite/branding/seamonkey/locales/en-US/brand.properties
-+++ b/suite/branding/seamonkey/locales/en-US/brand.properties
-@@ -3,9 +3,10 @@
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
- brandFullName=SeaMonkey
- brandShortName=SeaMonkey
- brandShorterName=SeaMonkey
- vendorShortName=SeaMonkey e.V.
- sidebarName=Sidebar
- app.releaseNotesURL=https://www.seamonkey-project.org/releases/seamonkey%VERSION%/
-+app.troubleshootingURL=https://www.seamonkey-project.org/releases/seamonkey%VERSION%/#troubleshooting
- app.vendorURL=https://www.seamonkey-project.org/
-diff --git a/suite/locales/en-US/chrome/common/help/welcome_help.xhtml b/suite/locales/en-US/chrome/common/help/welcome_help.xhtml
---- a/suite/locales/en-US/chrome/common/help/welcome_help.xhtml
-+++ b/suite/locales/en-US/chrome/common/help/welcome_help.xhtml
-@@ -43,17 +43,17 @@
- 
-       <p>The oldest community website around, providing news flashes, polls, and
-         Web forums.</p>
-     </td>
-   </tr>
- 
-   <tr valign="top">
-     <td>
--      <p><strong><a href="http://www.seamonkey-project.org/doc/troubleshooting">Troubleshooting</a></strong></p>
-+      <p><strong><a href="x-moz-url-link:app.troubleshootingURL">Troubleshooting</a></strong></p>
- 
-       <p>Answers to some of the most frequently encountered problems.</p>
-     </td>
-     <td>&nbsp;</td>
-   </tr>
- 
-   <tr valign="top">
-     <td>

+ 0 - 303
comm-esr60/comm-esr60/patches/1374094-debugQA.patch

@@ -1,303 +0,0 @@
-# HG changeset patch
-# User Frank-Rainer Grahl <frgrahl@gmx.net>
-# Parent  6bb72042e1eb6e622b627756bde8ba328732d0b1
-Bug 1374094 - Clean up debugQA.
-
-diff --git a/suite/extensions/debugQA/content/debugQAMenuOverlay.xul b/suite/extensions/debugQA/content/debugQAMenuOverlay.xul
---- a/suite/extensions/debugQA/content/debugQAMenuOverlay.xul
-+++ b/suite/extensions/debugQA/content/debugQAMenuOverlay.xul
-@@ -15,136 +15,134 @@
-     <!-- Menu for testing. -->
-     <menu id="debugMenu" accesskey="U" label="Debug" insertbefore="menu_Help">
-       <menupopup id="menu_Debug_Popup">
-         <menu label="Verification">
-           <menupopup>
-             <menu label="Images and Media">
-               <menupopup>
-                 <menuitem label="GIF Images"
--                          oncommand="openTopWin('http://www-archive.mozilla.org/quality/browser/debugtc/bft_browser_imagemap.html');"/>
-+                          oncommand="openTopWin('https://www-archive.mozilla.org/quality/browser/debugtc/bft_browser_imagemap.html');"/>
-                 <menuitem label="PNG Images"
-                           oncommand="openTopWin('http://www.libpng.org/pub/png/png-MagnoliaAlpha.html');"/>
--                <menuitem label="Animated PNG demos"
--                          oncommand="openTopWin('https://people.mozilla.org/~dolske/apng/demo.html');"/>
-               </menupopup>
-             </menu>
-             <menu label="General Page Rendering">
-               <menupopup>
-                 <menuitem label="Larger page"
--                          oncommand="openTopWin('http://www-archive.mozilla.org/quality/browser/debugtc/bft_browser_html_mix3.html');"/>
-+                          oncommand="openTopWin('https://www-archive.mozilla.org/quality/browser/debugtc/bft_browser_html_mix3.html');"/>
-                 <menuitem label="Smaller page"
--                          oncommand="openTopWin('http://www-archive.mozilla.org/quality/browser/debugtc/bft_browser_link.html');"/>
-+                          oncommand="openTopWin('https://www-archive.mozilla.org/quality/browser/debugtc/bft_browser_link.html');"/>
-               </menupopup>
-             </menu>
-             <menu label="Safe Browsing">
-               <menupopup>
-                 <menuitem label="How does built-in Phishing and Malware Protection work?"
-                           oncommand="openTopWin('https://support.mozilla.org/kb/how-does-phishing-and-malware-protection-work');"/>
-                 <menuitem label="Deceptive Site!"
--                          oncommand="openTopWin('http://itisatrap.org/firefox/its-a-trap.html');"/>
-+                          oncommand="openTopWin('https://itisatrap.org/firefox/its-a-trap.html');"/>
-                 <menuitem label="Reported Attack Page!"
--                          oncommand="openTopWin('http://itisatrap.org/firefox/its-an-attack.html');"/>
-+                          oncommand="openTopWin('https://itisatrap.org/firefox/its-an-attack.html');"/>
-                 <menuitem label="Reported Unwanted Software Page!"
--                          oncommand="openTopWin('http://itisatrap.org/firefox/unwanted.html');"/>
-+                          oncommand="openTopWin('https://itisatrap.org/firefox/unwanted.html');"/>
-                 <menuitem label="Potentially Harmful Site!"
-                           oncommand="openTopWin('https://itisatrap.org/firefox/harmful.html');"/>
-               </menupopup>
-             </menu>
-             <menu label="Permissions">
-               <menupopup>
-                 <menuitem label="Popup Killing"
-                           oncommand="openTopWin('http://www.popuptest.com/');"/>
-               </menupopup>
-             </menu>
-             <menu label="Popular Sites">
-               <menupopup>
-               <menuitem label="SeaMonkey"
--                        oncommand="openTopWin('http://www.seamonkey-project.org');"/>
--              <menuitem label="Mozilla"
--                        oncommand="openTopWin('http://www.mozilla.org');"/>
-+                        oncommand="openTopWin('https://www.seamonkey-project.org');"/>
-+              <menuitem label="Thunderbird"
-+                        oncommand="openTopWin('https://www.thunderbird.net');"/>
-               <menuitem label="Youtube"
--                        oncommand="openTopWin('http://www.youtube.com');"/>
-+                        oncommand="openTopWin('https://www.youtube.com');"/>
-               <menuitem label="Yahoo"
--                        oncommand="openTopWin('http://www.yahoo.com');"/>
-+                        oncommand="openTopWin('https://www.yahoo.com');"/>
-               <menuitem label="The Register"
--                        oncommand="openTopWin('http://www.theregister.co.uk');"/>
--              <menuitem label="Time"
--                        oncommand="openTopWin('http://www.time.com');"/>
-+                        oncommand="openTopWin('https://www.theregister.co.uk');"/>
-+              <menuitem label="reddit"
-+                        oncommand="openTopWin('https://www.reddit.com');"/>
-               <menuitem label="Hotwired"
--                        oncommand="openTopWin('http://www.wired.com');"/>
-+                        oncommand="openTopWin('https://www.wired.com');"/>
-               <menuitem label="CNN"
--                        oncommand="openTopWin('http://www.cnn.com');"/>
-+                        oncommand="openTopWin('https://www.cnn.com');"/>
-               <menuitem label="USA Today"
--                        oncommand="openTopWin('http://www.usatoday.com');"/>
-+                        oncommand="openTopWin('https://www.usatoday.com');"/>
-               <menuitem label="Disney"
--                        oncommand="openTopWin('http://www.disney.com');"/>
-+                        oncommand="openTopWin('https://www.disney.com');"/>
-               <menuitem label="Microsoft"
--                        oncommand="openTopWin('http://www.microsoft.com');"/>
-+                        oncommand="openTopWin('https://www.microsoft.com');"/>
-               <menuitem label="Warner Bros."
--                        oncommand="openTopWin('http://www.warnerbros.com');"/>
-+                        oncommand="openTopWin('https://www.warnerbros.com');"/>
-               </menupopup>
-             </menu>
-           </menupopup>
-         </menu>
- 
-         <menu label="Viewer Demos">
-           <menupopup>
-             <menuitem label="#0 Basic Styles"
--                      oncommand="openTopWin('http://www-archive.mozilla.org/newlayout/samples/test0.html');"/>
-+                      oncommand="openTopWin('https://www-archive.mozilla.org/newlayout/samples/test0.html');"/>
-             <menuitem label="#1 CSS Styles"
--                      oncommand="openTopWin('http://www-archive.mozilla.org/newlayout/samples/test1.html');"/>
-+                      oncommand="openTopWin('https://www-archive.mozilla.org/newlayout/samples/test1.html');"/>
-             <menuitem label="#2 Images"
--                      oncommand="openTopWin('http://www-archive.mozilla.org/newlayout/samples/test2.html');"/>
-+                      oncommand="openTopWin('https://www-archive.mozilla.org/newlayout/samples/test2.html');"/>
-             <menuitem label="#3 Basic Tables"
--                      oncommand="openTopWin('http://www-archive.mozilla.org/newlayout/samples/test3.html');"/>
-+                      oncommand="openTopWin('https://www-archive.mozilla.org/newlayout/samples/test3.html');"/>
-             <menuitem label="#4 Simple Tables"
--                      oncommand="openTopWin('http://www-archive.mozilla.org/newlayout/samples/test4.html');"/>
-+                      oncommand="openTopWin('https://www-archive.mozilla.org/newlayout/samples/test4.html');"/>
-             <menuitem label="#5 More Styles"
--                      oncommand="openTopWin('http://www-archive.mozilla.org/newlayout/samples/test5.html');"/>
-+                      oncommand="openTopWin('https://www-archive.mozilla.org/newlayout/samples/test5.html');"/>
-             <menuitem label="#6 Deeply Nested Tables"
--                      oncommand="openTopWin('http://www-archive.mozilla.org/newlayout/samples/test6.html');"/>
-+                      oncommand="openTopWin('https://www-archive.mozilla.org/newlayout/samples/test6.html');"/>
-             <menuitem label="#7 Scaled Anim Image"
--                      oncommand="openTopWin('http://www-archive.mozilla.org/newlayout/samples/test7.html');"/>
-+                      oncommand="openTopWin('https://www-archive.mozilla.org/newlayout/samples/test7.html');"/>
-             <menuitem label="#8 Form"
--                      oncommand="openTopWin('http://www-archive.mozilla.org/newlayout/samples/test8.html');"/>
-+                      oncommand="openTopWin('https://www-archive.mozilla.org/newlayout/samples/test8.html');"/>
-             <menuitem label="#9 Frames"
--                      oncommand="openTopWin('http://www-archive.mozilla.org/newlayout/samples/test9.html');"/>
-+                      oncommand="openTopWin('https://www-archive.mozilla.org/newlayout/samples/test9.html');"/>
-             <menuitem label="#10 Anim Images"
--                      oncommand="openTopWin('http://www-archive.mozilla.org/newlayout/samples/test10.html');"/>
-+                      oncommand="openTopWin('https://www-archive.mozilla.org/newlayout/samples/test10.html');"/>
-             <menuitem label="#11 Fixed Positioning"
--                      oncommand="openTopWin('http://www-archive.mozilla.org/newlayout/samples/test11.html');"/>
-+                      oncommand="openTopWin('https://www-archive.mozilla.org/newlayout/samples/test11.html');"/>
-             <menuitem label="#12 More Fixed Pos"
--                      oncommand="openTopWin('http://www-archive.mozilla.org/newlayout/samples/test12.html');"/>
-+                      oncommand="openTopWin('https://www-archive.mozilla.org/newlayout/samples/test12.html');"/>
-             <menuitem label="#13 DHTML"
--                      oncommand="openTopWin('http://www-archive.mozilla.org/newlayout/samples/test13.html');"/>
-+                      oncommand="openTopWin('https://www-archive.mozilla.org/newlayout/samples/test13.html');"/>
-             <menuitem label="#14 XML Sorting"
--                      oncommand="openTopWin('http://www-archive.mozilla.org/newlayout/samples/test14.html');"/>
-+                      oncommand="openTopWin('https://www-archive.mozilla.org/newlayout/samples/test14.html');"/>
-             <menuitem label="#15 XML IRS"
--                      oncommand="openTopWin('http://www-archive.mozilla.org/newlayout/samples/test15.html');"/>
-+                      oncommand="openTopWin('https://www-archive.mozilla.org/newlayout/samples/test15.html');"/>
-             <menuitem label="#16 Gfx Widgets"
--                      oncommand="openTopWin('http://www-archive.mozilla.org/newlayout/samples/test16.html');"/>
-+                      oncommand="openTopWin('https://www-archive.mozilla.org/newlayout/samples/test16.html');"/>
-           </menupopup>
-         </menu>
- 
-         <!-- XBL Test Suite all broken -->
-         <menu label="XBL Test Suite" hidden="true" disabled="true">
-           <menupopup>
-             <menuitem label="#0 Remote XBL"
--                      oncommand="openTopWin('http://www-archive.mozilla.org/projects/xbl/test0/test.xul');"/>
-+                      oncommand="openTopWin('https://www-archive.mozilla.org/projects/xbl/test0/test.xul');"/>
-             <menuitem label="#1 Technicolor DIV"
--                      oncommand="openTopWin('http://www-archive.mozilla.org/projects/xbl/test1/test.html');"/>
-+                      oncommand="openTopWin('https://www-archive.mozilla.org/projects/xbl/test1/test.html');"/>
-             <menuitem label="#2 Rollover Madness"
--                      oncommand="openTopWin('http://www-archive.mozilla.org/projects/xbl/test2/test.html');"/>
-+                      oncommand="openTopWin('https://www-archive.mozilla.org/projects/xbl/test2/test.html');"/>
-             <menuitem label="#3 Popups in HTML"
--                      oncommand="openTopWin('http://www-archive.mozilla.org/projects/xbl/test3/test.html');"/>
-+                      oncommand="openTopWin('https://www-archive.mozilla.org/projects/xbl/test3/test.html');"/>
-             <menuitem label="#4 Partition Magic"
--                      oncommand="openTopWin('http://www-archive.mozilla.org/projects/xbl/test4/test.html');"/>
-+                      oncommand="openTopWin('https://www-archive.mozilla.org/projects/xbl/test4/test.html');"/>
-             <menuitem label="#5 Sticky Notes"
--                      oncommand="openTopWin('http://www-archive.mozilla.org/projects/xbl/test5/test.html');"/>
-+                      oncommand="openTopWin('https://www-archive.mozilla.org/projects/xbl/test5/test.html');"/>
-           </menupopup>
-         </menu>
- 
-         <menu label="Internal Pages">
-           <menupopup>
-             <menuitem label="Support Page"
-                       oncommand="openTopWin('about:support');"/>
-             <menuitem label="Networking Status"
-@@ -166,21 +164,19 @@
-                   oncommand="openTopWin('about:buildconfig');"/>
- 
-       </menupopup>
-     </menu>
- 
-     <menu id="qaMenu" accesskey="Q" label="QA" insertbefore="menu_Help">
-       <menupopup id="qaMenuPopup">
-         <menuitem label="Getting Involved"
--                  oncommand="openTopWin('http://www.seamonkey-project.org/start/');"/>
-+                  oncommand="openTopWin('https://www.seamonkey-project.org/start/');"/>
-         <menuitem label="SeaMonkey QA"
-                   oncommand="openTopWin('https://wiki.mozilla.org/SeaMonkey:QA');"/>
--        <menuitem label="Mozilla Quality Assurance"
--                  oncommand="openTopWin('https://quality.mozilla.org');"/>
- 
-         <menuseparator/>
- 
-         <menuitem label="Frequently Reported Bugs"
-                   oncommand="openTopWin('https://bugzilla.mozilla.org/duplicates.cgi');"/>
-         <menuitem label="Bug Writing Guidelines"
-                   oncommand="openTopWin('https://developer.mozilla.org/docs/Mozilla/QA/Bug_writing_guidelines');"/>
-         <menuitem label="File a Bug"
-@@ -189,23 +185,22 @@
-         <menuseparator/>
- 
-         <menuitem label="Bugs Filed Today"
-                   oncommand="openTopWin('https://bugzilla.mozilla.org/buglist.cgi?product=Core&amp;product=MailNews+Core&amp;product=SeaMonkey&amp;chfieldfrom=0d&amp;chfieldto=Now&amp;chfield=%5BBug+creation%5D');"/>
-         <menuitem label="Recent comm-central Checkins"
-                   oncommand="openTopWin('https://hg.mozilla.org/comm-central/pushloghtml?startdate=24+hours+ago&amp;enddate=now');"/>
-         <menuitem label="Recent mozilla-central Checkins"
-                   oncommand="openTopWin('https://hg.mozilla.org/mozilla-central/pushloghtml?startdate=24+hours+ago&amp;enddate=now');"/>
--        <menuitem label="Tree Status"
--                  oncommand="openTopWin('https://api.pub.build.mozilla.org/treestatus/');"/>
--
--        <menuseparator/>
--
--        <menuitem label="Smoke Tests"
--                  oncommand="openTopWin('https://moztrap.mozilla.org/results/runs/');"/>
-+        <menuitem label="Recent comm-esr60 Checkins"
-+                  oncommand="openTopWin('https://hg.mozilla.org/releases/comm-esr60/pushloghtml?startdate=96+hours+ago&amp;enddate=now');"/>
-+        <menuitem label="Recent mozilla-esr60 Checkins"
-+                  oncommand="openTopWin('https://hg.mozilla.org/releases/mozilla-esr60/pushloghtml?startdate=96+hours+ago&amp;enddate=now');"/>
-+       <menuitem label="Tree Status"
-+                  oncommand="openTopWin('https://treestatus.mozilla.org/');"/>
- 
-         <menuseparator/>
- 
-         <menuitem label="Latest Builds"
-                   oncommand="openTopWin('https://archive.mozilla.org/pub/seamonkey/nightly/latest-comm-central-trunk/');"/>
-       </menupopup>
-     </menu>
-   </menubar>
-diff --git a/suite/extensions/debugQA/content/debugQATextEditorShell.xul b/suite/extensions/debugQA/content/debugQATextEditorShell.xul
---- a/suite/extensions/debugQA/content/debugQATextEditorShell.xul
-+++ b/suite/extensions/debugQA/content/debugQATextEditorShell.xul
-@@ -40,23 +40,26 @@
-         lightweightthemesfooter="status-bar"
-         windowtype="composer:text"
-         macanimationtype="document"
-         drawtitle="true"
-         width="640" height="480"
-         screenX="10" screenY="10"
-         persist="screenX screenY width height sizemode">
- 
--  <script type="application/javascript" src="chrome://editor/content/editor.js"/>
--  <script type="application/javascript" src="chrome://editor/content/ComposerCommands.js"/>
-+  <script type="application/javascript" 
-+          src="chrome://editor/content/editor.js"/>
-+  <script type="application/javascript"
-+          src="chrome://editor/content/ComposerCommands.js"/>
-   <script type="application/javascript"
-           src="chrome://communicator/content/contentAreaClick.js"/>
-   <script type="application/javascript"
-           src="chrome://global/content/printUtils.js"/>
--  <script type="application/javascript" src="chrome://global/content/nsDragAndDrop.js"/>
-+  <script type="application/javascript" 
-+          src="chrome://global/content/nsDragAndDrop.js"/>
- 
-   <commandset id="editorCommands">
-     <commandset id="commonEditorMenuItems"/>
-     <commandset id="composerEditMenuItems"/>
-     <commandset id="composerSaveMenuItems"/>
-     <commandset id="composerMenuItems"/>
-     <commandset id="tasksCommands"/>
-   </commandset>
-diff --git a/suite/extensions/debugQA/install.rdf.in b/suite/extensions/debugQA/install.rdf.in
---- a/suite/extensions/debugQA/install.rdf.in
-+++ b/suite/extensions/debugQA/install.rdf.in
-@@ -5,23 +5,23 @@
- 
- 
- #filter substitution
- 
- <RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-      xmlns:em="http://www.mozilla.org/2004/em-rdf#">
-   <Description about="urn:mozilla:install-manifest">
-     <em:id>debugQA@mozilla.org</em:id>
--    <em:version>2.0.3</em:version>
-+    <em:version>2.0.4</em:version>
- 
-     <em:targetApplication>
-       <!-- Suite -->
-       <Description>
-         <em:id>{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}</em:id>
--        <em:minVersion>2.45</em:minVersion>
-+        <em:minVersion>2.53</em:minVersion>
-         <em:maxVersion>@MOZ_APP_MAXVERSION@</em:maxVersion>
-       </Description>
-     </em:targetApplication>
- 
-     <!-- EXTENSION AUTHORS!
-          DO NOT COPY THIS PROPERTY INTO YOUR INSTALL RDF FILES
-          It will cause users not to be informed of incompatibilities
-          with your extension when they are updated with Software Update

+ 0 - 107
comm-esr60/comm-esr60/patches/1376189-71a1.patch

@@ -1,107 +0,0 @@
-# HG changeset patch
-# User Jorg K <jorgk@jorgk.com>
-# Date 1569174431 -7200
-# Node ID 9e2a8322e4068b2040b9483ff26849c2d0a86752
-# Parent  567dc41aaeeebdba7a9df8f777ffda1bc5d3219b
-Bug 1376189 - Make VCFullNameProp a field so VCQuotedPrintableProp can be stored with it. r=aceman a=frg
-
-diff --git a/mailnews/addrbook/src/nsAbCardProperty.cpp b/mailnews/addrbook/src/nsAbCardProperty.cpp
---- a/mailnews/addrbook/src/nsAbCardProperty.cpp
-+++ b/mailnews/addrbook/src/nsAbCardProperty.cpp
-@@ -523,17 +523,20 @@ nsresult nsAbCardProperty::ConvertToEsca
-     // has multiple values. This implementation is not pretty. I can hear my algos prof
-     // yelling from here.....I have to do a linear search through my attributes array for
-     // EACH vcard property we want to set. *sigh* One day I will have time to come back
-     // to this function and remedy this O(m*n) function where n = # attribute values and
-     // m = # of vcard properties....
- 
-     (void)GetDisplayName(str);
-     if (!str.IsEmpty()) {
--        myAddPropValue(vObj, VCFullNameProp, str.get(), &vCardHasData);
-+      // Full name is a field with the same name.
-+      t = isAPropertyOf(vObj, VCFullNameProp);
-+      if (!t) t = addProp(vObj, VCFullNameProp);
-+      myAddPropValue(t, VCFullNameProp, str.get(), &vCardHasData);
-     }
- 
-     (void)GetLastName(str);
-     if (!str.IsEmpty()) {
-         t = isAPropertyOf(vObj, VCNameProp);
-         if (!t)
-             t = addProp(vObj, VCNameProp);
-         myAddPropValue(t, VCFamilyNameProp, str.get(), &vCardHasData);
-diff --git a/mailnews/addrbook/src/nsVCardObj.cpp b/mailnews/addrbook/src/nsVCardObj.cpp
---- a/mailnews/addrbook/src/nsVCardObj.cpp
-+++ b/mailnews/addrbook/src/nsVCardObj.cpp
-@@ -579,16 +579,23 @@ static const char *nameFields[] = {
-   VCFamilyNameProp,
-   VCGivenNameProp,
-   VCAdditionalNamesProp,
-   VCNamePrefixesProp,
-   VCNameSuffixesProp,
-   NULL
- };
- 
-+// VCFullNameProp needs to be a field so VCQuotedPrintableProp can be stored
-+// with it.
-+static const char *fnFields[] = {
-+  VCFullNameProp,
-+  NULL
-+};
-+
- static const char *orgFields[] = {
-   VCOrgNameProp,
-   VCOrgUnitProp,
-   VCOrgUnit2Prop,
-   VCOrgUnit3Prop,
-   VCOrgUnit4Prop,
-   NULL
- };
-@@ -690,17 +697,17 @@ static struct PreDefProp propNames[] = {
-   { VCEventProp, 0, 0, PD_BEGIN },
-   { VCEWorldProp, 0, 0, 0 },
-   { VCExNumProp, 0, 0, 0 },
-   { VCExpDateProp, 0, 0, 0 },
-   { VCExpectProp, 0, 0, 0 },
-   { VCExtAddressProp, 0, 0, 0 },
-   { VCFamilyNameProp, 0, 0, 0 },
-   { VCFaxProp, 0, 0, 0 },
--  { VCFullNameProp, 0, 0, 0 },
-+  { VCFullNameProp, 0, fnFields, 0 },
-   { VCGeoLocationProp, 0, 0, 0 },
-   { VCGeoProp, 0, 0, 0 },
-   { VCGIFProp, 0, 0, 0 },
-   { VCGivenNameProp, 0, 0, 0 },
-   { VCGroupingProp, 0, 0, 0 },
-   { VCHomeProp, 0, 0, 0 },
-   { VCIBMMailProp, 0, 0, 0 },
-   { VCInlineProp, 0, 0, 0 },
-diff --git a/mailnews/mime/cthandlers/vcard/mimevcrd.cpp b/mailnews/mime/cthandlers/vcard/mimevcrd.cpp
---- a/mailnews/mime/cthandlers/vcard/mimevcrd.cpp
-+++ b/mailnews/mime/cthandlers/vcard/mimevcrd.cpp
-@@ -278,20 +278,22 @@ static int OutputBasicVcard(MimeObject *
-   nsAutoCString urlstring;
-   nsAutoCString namestring;
-   nsAutoCString emailstring;
- 
-   nsCOMPtr<nsIMsgVCardService> vCardService =  do_GetService(MSGVCARDSERVICE_CONTRACT_ID);
-   if (!vCardService)
-       return -1;
- 
--  /* get the name and email */
-+  // Get the name and email, the full name is stored as a field.
-   prop = vCardService->IsAPropertyOf(aVcard, VCFullNameProp);
--  if (prop)
--  {
-+  if (prop) {
-+    prop = vCardService->IsAPropertyOf(prop, VCFullNameProp);
-+  }
-+  if (prop) {
-     if (VALUE_TYPE(prop))
-     {
-       if (VALUE_TYPE(prop) != VCVT_RAW)
-         namestring.Adopt(vCardService->FakeCString(prop));
-       else
-         namestring.Adopt(vCardService->VObjectAnyValue(prop));
- 
-       if (!namestring.IsEmpty())

+ 0 - 50
comm-esr60/comm-esr60/patches/1378089-followup-257.patch

@@ -1,50 +0,0 @@
-# HG changeset patch
-# User Frank-Rainer Grahl <frgrahl@gmx.net>
-# Date 1586965558 -7200
-# Parent  6180bfae7de5d57c6448d75f4455474d787a3e6c
-Bug 1378089 - Follow-Up. Fix bad search placeholder names in sidebar panel. r=me a=me
-
-diff --git a/suite/components/places/content/bookmarksPanel.xul b/suite/components/places/content/bookmarksPanel.xul
---- a/suite/components/places/content/bookmarksPanel.xul
-+++ b/suite/components/places/content/bookmarksPanel.xul
-@@ -28,17 +28,17 @@
- #include ../../../../../toolkit/content/editMenuCommands.inc.xul
-   <menupopup id="placesContext"/>
- 
-   <!-- Bookmarks and history tooltip -->
-   <tooltip id="bhTooltip"/>
- 
-   <hbox id="sidebar-search-container" align="center">
-     <textbox id="search-box" flex="1" type="search"
--             placeholder="&bookmarksSearch.placeholder;"
-+             placeholder="&search.placeholder;"
-              aria-controls="bookmarks-view"
-              oncommand="searchBookmarks(this.value);"/>
-   </hbox>
- 
-   <tree id="bookmarks-view" class="sidebar-placesTree" type="places"
-         flex="1"
-         hidecolumnpicker="true"
-         treelines="true"
-diff --git a/suite/components/places/content/history-panel.xul b/suite/components/places/content/history-panel.xul
---- a/suite/components/places/content/history-panel.xul
-+++ b/suite/components/places/content/history-panel.xul
-@@ -39,17 +39,17 @@
-   <!-- required to overlay the context menu -->
-   <menupopup id="placesContext"/>
- 
-   <!-- Bookmarks and history tooltip -->
-   <tooltip id="bhTooltip"/>
- 
-   <hbox id="sidebar-search-container">
-     <textbox id="search-box" flex="1" type="search"
--             placeholder="&historySearch.placeholder;"
-+             placeholder="&search.placeholder;"
-              aria-controls="historyTree"
-              oncommand="searchHistory(this.value);"/>
-     <button id="viewButton" style="min-width:0px !important;" type="menu"
-             label="&view.label;" accesskey="&view.accesskey;" selectedsort="day"
-             persist="selectedsort">
-       <menupopup>
-         <menuitem id="bydayandsite" label="&byDayAndSite.label;"
-                   accesskey="&byDayAndSite.accesskey;" type="radio"

+ 0 - 2225
comm-esr60/comm-esr60/patches/1399756-22-61a1.patch

@@ -1,2225 +0,0 @@
-# HG changeset patch
-# User Jorg K <jorgk@jorgk.com>
-# Date 1521301069 -3600
-# Node ID 4d1bcb81b2f6d604a3458ac02edced8918d5c3cc
-# Parent  32c5c14b4085c6430557e9c6450cb0ba8ec48d3c
-Bug 1399756 - remove trailing spaces in mailnews/ (.xul, .xml, .css, .mm, .cpp). rs=white-space-only
-[skip-blame]
-
-diff --git a/mailnews/addrbook/content/abAddressBookNameDialog.xul b/mailnews/addrbook/content/abAddressBookNameDialog.xul
---- a/mailnews/addrbook/content/abAddressBookNameDialog.xul
-+++ b/mailnews/addrbook/content/abAddressBookNameDialog.xul
-@@ -1,9 +1,9 @@
--<?xml version="1.0"?> 
-+<?xml version="1.0"?>
- <!-- This Source Code Form is subject to the terms of the Mozilla Public
-    - License, v. 2.0. If a copy of the MPL was not distributed with this
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
- <?xml-stylesheet href="chrome://messenger/skin/dialogs.css" type="text/css"?>
- 
- <!DOCTYPE dialog SYSTEM "chrome://messenger/locale/addressbook/abAddressBookNameDialog.dtd">
- 
-diff --git a/mailnews/addrbook/content/abEditCardDialog.xul b/mailnews/addrbook/content/abEditCardDialog.xul
---- a/mailnews/addrbook/content/abEditCardDialog.xul
-+++ b/mailnews/addrbook/content/abEditCardDialog.xul
-@@ -1,9 +1,9 @@
--<?xml version="1.0"?> 
-+<?xml version="1.0"?>
- <!-- This Source Code Form is subject to the terms of the Mozilla Public
-    - License, v. 2.0. If a copy of the MPL was not distributed with this
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
- <?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?>
- 
- <?xul-overlay href="chrome://messenger/content/addressbook/abCardOverlay.xul"?>
- 
-diff --git a/mailnews/addrbook/content/abNewCardDialog.xul b/mailnews/addrbook/content/abNewCardDialog.xul
---- a/mailnews/addrbook/content/abNewCardDialog.xul
-+++ b/mailnews/addrbook/content/abNewCardDialog.xul
-@@ -1,9 +1,9 @@
--<?xml version="1.0"?> 
-+<?xml version="1.0"?>
- <!-- This Source Code Form is subject to the terms of the Mozilla Public
-    - License, v. 2.0. If a copy of the MPL was not distributed with this
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
- <?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?>
- 
- <?xul-overlay href="chrome://messenger/content/addressbook/abCardOverlay.xul"?>
- 
-diff --git a/mailnews/addrbook/content/print.css b/mailnews/addrbook/content/print.css
---- a/mailnews/addrbook/content/print.css
-+++ b/mailnews/addrbook/content/print.css
-@@ -2,63 +2,63 @@
-  * 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/. */
- 
- directory {
-   display: block;
- }
- 
- section {
--  display:block; 
-+  display:block;
-   margin: 15px 20px;
- }
- 
- sectiontitle {
--  display:block; 
--  font-weight:bold; 
--  font-family:verdana; 
-+  display:block;
-+  font-weight:bold;
-+  font-family:verdana;
-   font-size:small;
- }
- 
- labelrow {
-   display:block;
- }
- 
- label {
--  display:inline; 
--  font-family:verdana; 
-+  display:inline;
-+  font-family:verdana;
-   font-size:small;
- }
- 
- GeneratedName {
--  display:block; 
--  font-weight:bold; 
--  font-family:verdana; 
-+  display:block;
-+  font-weight:bold;
-+  font-family:verdana;
-   margin-top: 20px;
-   margin-bottom: 3px;
-   margin-inline-end: 10px;
-   margin-inline-start: 10px;
- }
- 
--FirstName, LastName, 
-+FirstName, LastName,
- HomeAddress, HomeAddress2, HomeCountry,
- WorkAddress, WorkAddress2, WorkCountry,
- JobTitle, Department, Company, Notes {
--  display: block; 
--  font-family: verdana; 
-+  display: block;
-+  font-family: verdana;
-   font-size: small;
- }
- 
- DisplayName, NickName,
- WorkPhone, HomePhone, FaxNumber, PagerNumber, CellularNumber,
- HomeCity, HomeState, HomeZipCode,
--WorkCity, WorkState, WorkZipCode, 
-+WorkCity, WorkState, WorkZipCode,
- Custom1, Custom2, Custom3, Custom4 {
--  display: inline; 
--  font-family: verdana; 
-+  display: inline;
-+  font-family: verdana;
-   font-size: small;
- }
- 
- PrimaryEmail, SecondEmail,
- WebPage1, WebPage2 {
-   display: block;
-   font-family: verdana;
-   font-size: small;
-@@ -79,16 +79,16 @@ table {
-   display: table;
- }
- 
- tr {
-   display: table-row;
- }
- 
- td {
--  display: table-cell; 
-+  display: table-cell;
-   vertical-align: top;
- }
- 
- PreferMailFormat {
-   display: none;
- }
- 
-diff --git a/mailnews/addrbook/prefs/content/pref-directory-add.xul b/mailnews/addrbook/prefs/content/pref-directory-add.xul
---- a/mailnews/addrbook/prefs/content/pref-directory-add.xul
-+++ b/mailnews/addrbook/prefs/content/pref-directory-add.xul
-@@ -24,47 +24,47 @@
-   <vbox id="editDirectory">
- 
-     <tabbox style="margin:5px">
-       <tabs id="directoryTabBox">
-         <tab label="&General.tab;"/>
-         <tab label="&Offline.tab;"/>
-         <tab label="&Advanced.tab;"/>
-       </tabs>
--   
-+
-       <tabpanels id="directoryTabPanels" flex="1">
-           <vbox>
-              <grid flex="1">
-                  <columns>
-                      <column/>
-                      <column flex="1"/>
-                      <column/>
-                  </columns>
- 
-                  <rows>
-                      <row align="center">
--                         <label value="&directoryName.label;" accesskey="&directoryName.accesskey;" 
-+                         <label value="&directoryName.label;" accesskey="&directoryName.accesskey;"
-                                 control="description"/>
-                          <textbox id="description" flex="1"/>
-                          <spacer flex="1"/>
-                      </row>
-                      <row align="center">
-                          <label value="&directoryHostname.label;" accesskey="&directoryHostname.accesskey;"
-                                 control="hostname"/>
-                          <textbox id="hostname" flex="1" disableiflocked="true" class="uri-element"/>
-                          <spacer flex="1"/>
-                      </row>
-                      <row align="center">
--                         <label value="&directoryBaseDN.label;" 
-+                         <label value="&directoryBaseDN.label;"
-                                 accesskey="&directoryBaseDN.accesskey;"
-                                 control="basedn"/>
-                          <vbox>
-                            <textbox id="basedn" disableiflocked="true" class="uri-element"/>
-                          </vbox>
--                         <button label="&findButton.label;" 
-+                         <button label="&findButton.label;"
-                                  accesskey="&findButton.accesskey;" disabled="true"/>
-                      </row>
-                      <row align="center">
-                          <label value="&portNumber.label;"
-                                 accesskey="&portNumber.accesskey;"
-                                 control="port"/>
-                          <hbox>
-                              <textbox id="port" type="number" size="5" min="1"
-@@ -89,17 +89,17 @@
-               <description>&offlineText.label;</description>
-               <separator/>
-               <hbox>
-                   <button id="download" oncommand="DownloadNow();"/>
-                   <spacer flex="1"/>
-               </hbox>
-               <description id="downloadWarningMsg" hidden="true" class="error"/>
-               <description id="replicationProgressText" hidden="true"/>
--              
-+
-               <progressmeter id="replicationProgressMeter" mode="normal" value="0" hidden="true"/>
-           </vbox>
-           <grid>
-              <columns>
-                <column/>
-                <column flex="1"/>
-              </columns>
- 
-@@ -128,25 +128,25 @@
-                         accesskey="&searchFilter.accesskey;"
-                         control="search"/>
-                  <textbox id="search" multiline="true" flex="1" disableiflocked="true"/>
-               </row>
-               <row align="center">
-                 <label value="&saslMechanism.label;" control="saslMechanism" accesskey="&saslMechanism.accesskey;"/>
-                 <menulist id="saslMechanism">
-                   <menupopup>
--                    <menuitem id="Simple" value="" 
-+                    <menuitem id="Simple" value=""
-                               label="&saslOff.label;"
-                               accesskey="&saslOff.accesskey;"/>
--                    <menuitem id="GSSAPI" value="GSSAPI" 
-+                    <menuitem id="GSSAPI" value="GSSAPI"
-                               label="&saslGSSAPI.label;"
-                               accesskey="&saslGSSAPI.accesskey;"/>
-                   </menupopup>
-                 </menulist>
-               </row>
-             </rows>
-           </grid>
-       </tabpanels>
-     </tabbox>
-   </vbox>
--  
-+
- </dialog>
--        
-+
-diff --git a/mailnews/addrbook/prefs/content/pref-editdirectories.xul b/mailnews/addrbook/prefs/content/pref-editdirectories.xul
---- a/mailnews/addrbook/prefs/content/pref-editdirectories.xul
-+++ b/mailnews/addrbook/prefs/content/pref-editdirectories.xul
-@@ -1,9 +1,9 @@
--<?xml version="1.0"?> 
-+<?xml version="1.0"?>
- <!-- This Source Code Form is subject to the terms of the Mozilla Public
-    - License, v. 2.0. If a copy of the MPL was not distributed with this
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
- <?xml-stylesheet href="chrome://messenger/skin/" type="text/css"?>
- 
- <!DOCTYPE dialog SYSTEM "chrome://messenger/locale/addressbook/pref-directory.dtd">
- 
-diff --git a/mailnews/addrbook/src/nsAbOSXCard.mm b/mailnews/addrbook/src/nsAbOSXCard.mm
---- a/mailnews/addrbook/src/nsAbOSXCard.mm
-+++ b/mailnews/addrbook/src/nsAbOSXCard.mm
-@@ -67,39 +67,39 @@ SetStringProperty(nsAbOSXCard *aCard, NS
- static void
- MapStringProperty(nsAbOSXCard *aCard, ABRecord *aOSXCard, NSString *aProperty,
-                   const char *aMemberName, bool aNotify,
-                   nsIAbManager *aAbManager)
- {
-   NS_ASSERTION(aProperty, "This is bad! You asked for an unresolved symbol.");
-   NS_ASSERTION(GetPropertType(aOSXCard, aProperty) == kABStringProperty,
-                "Wrong type!");
--  
-+
-   SetStringProperty(aCard, [aOSXCard valueForProperty:aProperty], aMemberName,
-                     aNotify, aAbManager);
- }
- 
- static ABMutableMultiValue*
- GetMultiValue(ABRecord *aCard, NSString *aProperty)
- {
-   NS_ASSERTION(aProperty, "This is bad! You asked for an unresolved symbol.");
-   NS_ASSERTION(GetPropertType(aCard, aProperty) & kABMultiValueMask,
-                "Wrong type!");
--  
-+
-   return [aCard valueForProperty:aProperty];
- }
- 
- static void
- MapDate(nsAbOSXCard *aCard, NSDate *aDate, const char *aYearPropName,
-         const char *aMonthPropName, const char *aDayPropName, bool aNotify,
-         nsIAbManager *aAbManager)
- {
-   // XXX Should we pass a format and timezone?
-   NSCalendarDate *date = [aDate dateWithCalendarFormat:nil timeZone:nil];
--  
-+
-   nsAutoString value;
-   value.AppendInt(static_cast<int32_t>([date yearOfCommonEra]));
-   SetStringProperty(aCard, value, aYearPropName, aNotify, aAbManager);
-   value.Truncate();
-   value.AppendInt(static_cast<int32_t>([date monthOfYear]));
-   SetStringProperty(aCard, value, aMonthPropName, aNotify, aAbManager);
-   value.Truncate();
-   value.AppendInt(static_cast<int32_t>([date dayOfMonth]));
-@@ -115,28 +115,28 @@ MapMultiValue(nsAbOSXCard *aCard, ABReco
-   if (value) {
-     unsigned int j;
-     unsigned int count = [value count];
-     for (j = 0; j < count; ++j) {
-       if ([[value labelAtIndex:j] isEqualToString:aMap.mOSXLabel]) {
-         NSString *stringValue = (aMap.mOSXKey)
-           ? [[value valueAtIndex:j] objectForKey:aMap.mOSXKey]
-           : [value valueAtIndex:j];
--        
-+
-         SetStringProperty(aCard, stringValue, aMap.mPropertyName, aNotify,
-                           aAbManager);
--        
-+
-         return true;
-       }
-     }
-   }
-   // String wasn't found, set value of card to empty if it was set previously
-   SetStringProperty(aCard, EmptyString(), aMap.mPropertyName, aNotify,
-                     aAbManager);
--  
-+
-   return false;
- }
- 
- // Maps Address Book's instant messenger name to the corresponding nsIAbCard field name.
- static const char*
- InstantMessengerFieldName(NSString* aInstantMessengerName)
- {
-   if ([aInstantMessengerName isEqualToString:@"AIMInstant"]) {
-@@ -217,62 +217,62 @@ nsAbOSXCard::Update(bool aNotify)
-     m_MailListURI.Append(uid);
-     MapStringProperty(this, card, kABGroupNameProperty, "DisplayName", aNotify,
-                       abManager);
-     MapStringProperty(this, card, kABGroupNameProperty, "LastName", aNotify,
-                       abManager);
- 
-     return NS_OK;
-   }
--  
-+
-   bool foundHome = false, foundWork = false;
--  
-+
-   uint32_t i;
-   for (i = 0; i < nsAbOSXUtils::kPropertyMapSize; ++i) {
-     const nsAbOSXPropertyMap &propertyMap = nsAbOSXUtils::kPropertyMap[i];
-     if (!propertyMap.mOSXProperty)
-       continue;
--    
-+
-     if (propertyMap.mOSXLabel) {
-       if (MapMultiValue(this, card, propertyMap, aNotify,
-                         abManager) && propertyMap.mOSXProperty == kABAddressProperty) {
--        if (propertyMap.mOSXLabel == kABAddressHomeLabel) 
-+        if (propertyMap.mOSXLabel == kABAddressHomeLabel)
-           foundHome = true;
-         else
-           foundWork = true;
-       }
-     }
-     else {
-       MapStringProperty(this, card, propertyMap.mOSXProperty,
-                         propertyMap.mPropertyName, aNotify, abManager);
-     }
-   }
--  
-+
-   int flags = 0;
-   if (kABPersonFlags)
-     flags = [[card valueForProperty:kABPersonFlags] intValue];
--  
-+
- #define SET_STRING(_value, _name, _notify, _session) \
-   SetStringProperty(this, _value, #_name, _notify, _session)
--    
-+
-     // If kABShowAsCompany is set we use the company name as display name.
-     if (kABPersonFlags && (flags & kABShowAsCompany)) {
-       nsString company;
-       nsresult rv = GetPropertyAsAString(kCompanyProperty, company);
-       if (NS_FAILED(rv))
-         company.Truncate();
-       SET_STRING(company, DisplayName, aNotify, abManager);
-     }
-   else {
-     // Use the order used in the OS X address book to set DisplayName.
-     int order = kABPersonFlags && (flags & kABNameOrderingMask);
-     if (kABPersonFlags && (order == kABDefaultNameOrdering)) {
-       order = [addressBook defaultNameOrdering];
-     }
--    
-+
-     nsAutoString displayName, tempName;
-     if (kABPersonFlags && (order == kABFirstNameFirst)) {
-       GetFirstName(tempName);
-       displayName.Append(tempName);
- 
-       GetLastName(tempName);
- 
-       // Only append a space if the last name and the first name are not empty
-@@ -290,46 +290,46 @@ nsAbOSXCard::Update(bool aNotify)
-       // Only append a space if the last name and the first name are not empty
-       if (!tempName.IsEmpty() && !displayName.IsEmpty())
-         displayName.Append(' ');
- 
-       displayName.Append(tempName);
-     }
-     SET_STRING(displayName, DisplayName, aNotify, abManager);
-   }
--  
-+
-   ABMultiValue *value = GetMultiValue(card, kABEmailProperty);
-   if (value) {
-     unsigned int count = [value count];
-     if (count > 0) {
-       unsigned int j = [value indexForIdentifier:[value primaryIdentifier]];
--      
-+
-       if (j < count)
-         SET_STRING([value valueAtIndex:j], PrimaryEmail, aNotify,
-                    abManager);
--      
-+
-       // If j is 0 (first in the list) we want the second in the list
-       // (index 1), if j is anything else we want the first in the list
-       // (index 0).
-       j = (j == 0);
-       if (j < count)
-         SET_STRING([value valueAtIndex:j], SecondEmail, aNotify,
-                    abManager);
-     }
-   }
--  
-+
-   // We map the first home address we can find and the first work address
-   // we can find. If we find none, we map the primary address to the home
-   // address.
-   if (!foundHome && !foundWork) {
-     value = GetMultiValue(card, kABAddressProperty);
-     if (value) {
-       unsigned int count = [value count];
-       unsigned int j = [value indexForIdentifier:[value primaryIdentifier]];
--      
-+
-       if (j < count) {
-         NSDictionary *address = [value valueAtIndex:j];
-         if (address) {
-           SET_STRING([address objectForKey:kABAddressStreetKey],
-                      HomeAddress, aNotify, abManager);
-           SET_STRING([address objectForKey:kABAddressCityKey],
-                      HomeCity, aNotify, abManager);
-           SET_STRING([address objectForKey:kABAddressStateKey],
-@@ -356,46 +356,46 @@ nsAbOSXCard::Update(bool aNotify)
-       } else if ([imValue isKindOfClass:[NSDictionary class]]) {
-         NSString* instantMessageService = [imValue objectForKey:@"InstantMessageService"];
-         const char* fieldName = InstantMessengerFieldName(instantMessageService);
-         NSString* userName = [imValue objectForKey:@"InstantMessageUsername"];
-         SetStringProperty(this, userName, fieldName, aNotify, abManager);
-       }
-     }
-   }
--  
-+
- #define MAP_DATE(_date, _name, _notify, _session) \
-   MapDate(this, _date, #_name"Year", #_name"Month", #_name"Day", _notify, \
-   _session)
--    
-+
-     NSDate *date = [card valueForProperty:kABBirthdayProperty];
-   if (date)
-     MAP_DATE(date, Birth, aNotify, abManager);
--  
-+
-   if (kABOtherDatesProperty) {
-     value = GetMultiValue(card, kABOtherDatesProperty);
-     if (value) {
-       unsigned int j, count = [value count];
-       for (j = 0; j < count; ++j) {
-         if ([[value labelAtIndex:j] isEqualToString:kABAnniversaryLabel]) {
-           date = [value valueAtIndex:j];
-           if (date) {
-             MAP_DATE(date, Anniversary, aNotify, abManager);
--            
-+
-             break;
-           }
-         }
-       }
-     }
-   }
- #undef MAP_DATE
- #undef SET_STRING
--  
-+
-   date = [card valueForProperty:kABModificationDateProperty];
--  if (date) 
-+  if (date)
-     SetPropertyAsUint32("LastModifiedDate",
-                         uint32_t([date timeIntervalSince1970]));
-     // XXX No way to notify about this?
- 
-   return NS_OK;
- 
-   NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT;
- }
-diff --git a/mailnews/addrbook/src/nsAbOSXDirectory.mm b/mailnews/addrbook/src/nsAbOSXDirectory.mm
---- a/mailnews/addrbook/src/nsAbOSXDirectory.mm
-+++ b/mailnews/addrbook/src/nsAbOSXDirectory.mm
-@@ -109,17 +109,17 @@ Sync(NSString *aUid)
-   ABAddressBook *addressBook = [ABAddressBook sharedAddressBook];
-   ABRecord *card = [addressBook recordForUniqueId:aUid];
-   if ([card isKindOfClass:[ABGroup class]])
-   {
-     nsCOMPtr<nsIAbDirectory> directory;
-     GetOrCreateGroup(aUid, getter_AddRefs(directory));
-     nsCOMPtr<nsIAbOSXDirectory> osxDirectory =
-       do_QueryInterface(directory);
--    
-+
-     if (osxDirectory) {
-       osxDirectory->Update();
-     }
-   }
-   else {
-     nsCOMPtr<nsIAbCard> abCard;
-     nsresult rv;
- 
-@@ -149,17 +149,17 @@ Sync(NSString *aUid)
- @interface ABChangedMonitor : NSObject
- -(void)ABChanged:(NSNotification *)aNotification;
- @end
- 
- @implementation ABChangedMonitor
- -(void)ABChanged:(NSNotification *)aNotification
- {
-   NSDictionary *changes = [aNotification userInfo];
--  
-+
-   nsresult rv;
-   NSArray *inserted = [changes objectForKey:kABInsertedRecords];
- 
-   if (inserted) {
-     nsCOMPtr<nsIAbManager> abManager = do_GetService(NS_ABMANAGER_CONTRACTID, &rv);
-     NS_ENSURE_SUCCESS_VOID(rv);
- 
-     nsCOMPtr<nsIAbDirectory> directory;
-@@ -190,26 +190,26 @@ Sync(NSString *aUid)
-         // Construct a card
-         nsresult rv = CreateCard(card, getter_AddRefs(abCard));
-         NS_ENSURE_SUCCESS_VOID(rv);
-         rv = osxDirectory->AssertCard(abManager, abCard);
-         NS_ENSURE_SUCCESS_VOID(rv);
-       }
-     }
-   }
--  
-+
-   NSArray *updated = [changes objectForKey:kABUpdatedRecords];
-   if (updated) {
-     unsigned int i, count = [updated count];
-     for (i = 0; i < count; ++i) {
-       NSString *uid = [updated objectAtIndex:i];
-       Sync(uid);
-     }
-   }
--  
-+
-   NSArray *deleted = [changes objectForKey:kABDeletedRecords];
-   if (deleted) {
- 
-     nsCOMPtr<nsIAbManager> abManager = do_GetService(NS_ABMANAGER_CONTRACTID, &rv);
-     NS_ENSURE_SUCCESS_VOID(rv);
- 
-     nsCOMPtr<nsIAbDirectory> directory;
-     rv = abManager->GetDirectory(NS_LITERAL_CSTRING(NS_ABOSXDIRECTORY_URI_PREFIX"/"),
-@@ -226,34 +226,34 @@ Sync(NSString *aUid)
- 
-       nsAutoCString uid;
-       AppendToCString(deletedUid, uid);
- 
-       rv = osxDirectory->DeleteUid(uid);
-       NS_ENSURE_SUCCESS_VOID(rv);
-     }
-   }
--  
-+
-   if (!inserted && !updated && !deleted) {
-     // XXX This is supposed to mean "everything was updated", but we get
-     //     this whenever something has changed, so not sure what to do.
-   }
- }
- @end
- 
- static nsresult
- MapConditionString(nsIAbBooleanConditionString *aCondition, bool aNegate,
-                    bool &aCanHandle, ABSearchElement **aResult)
- {
-   aCanHandle = false;
--  
-+
-   nsAbBooleanConditionType conditionType = 0;
-   nsresult rv = aCondition->GetCondition(&conditionType);
-   NS_ENSURE_SUCCESS(rv, rv);
--  
-+
-   ABSearchComparison comparison;
-   switch (conditionType) {
-     case nsIAbBooleanConditionTypes::Contains:
-     {
-       if (!aNegate) {
-         comparison = kABContainsSubString;
-         aCanHandle = true;
-       }
-@@ -300,44 +300,44 @@ MapConditionString(nsIAbBooleanCondition
-     }
-     case nsIAbBooleanConditionTypes::GreaterThan:
-     {
-       comparison = aNegate ? kABLessThanOrEqual : kABGreaterThan;
-       aCanHandle = true;
-       break;
-     }
-   }
--  
-+
-   if (!aCanHandle)
-     return NS_OK;
--  
-+
-   nsCString name;
-   rv = aCondition->GetName(getter_Copies(name));
-   NS_ENSURE_SUCCESS(rv, rv);
--  
-+
-   nsString value;
-   rv = aCondition->GetValue(getter_Copies(value));
-   NS_ENSURE_SUCCESS(rv, rv);
--  
-+
-   uint32_t length = value.Length();
--  
-+
-   uint32_t i;
-   for (i = 0; i < nsAbOSXUtils::kPropertyMapSize; ++i) {
-     if (name.Equals(nsAbOSXUtils::kPropertyMap[i].mPropertyName)) {
-       *aResult =
-       [ABPerson searchElementForProperty:nsAbOSXUtils::kPropertyMap[i].mOSXProperty
-                                    label:nsAbOSXUtils::kPropertyMap[i].mOSXLabel
-                                      key:nsAbOSXUtils::kPropertyMap[i].mOSXKey
-                                    value:[NSString stringWithCharacters:reinterpret_cast<const unichar*>(value.get()) length:length]
-                               comparison:comparison];
--      
-+
-       return NS_OK;
-     }
-   }
--  
-+
-   if (name.EqualsLiteral("DisplayName") && comparison == kABContainsSubString) {
-     ABSearchElement *first =
-     [ABPerson searchElementForProperty:kABFirstNameProperty
-                                  label:nil
-                                    key:nil
-                                  value:[NSString stringWithCharacters:reinterpret_cast<const unichar*>(value.get()) length:length]
-                             comparison:comparison];
-     ABSearchElement *second =
-@@ -347,107 +347,107 @@ MapConditionString(nsIAbBooleanCondition
-                                    value:[NSString stringWithCharacters:reinterpret_cast<const unichar*>(value.get()) length:length]
-                               comparison:comparison];
-     ABSearchElement *third =
-       [ABGroup searchElementForProperty:kABGroupNameProperty
-                                   label:nil
-                                     key:nil
-                                   value:[NSString stringWithCharacters:reinterpret_cast<const unichar*>(value.get()) length:length]
-                              comparison:comparison];
--    
-+
-     *aResult = [ABSearchElement searchElementForConjunction:kABSearchOr children:[NSArray arrayWithObjects:first, second, third, nil]];
--    
-+
-     return NS_OK;
-   }
--  
-+
-   aCanHandle = false;
--  
-+
-   return NS_OK;
- }
- 
- static nsresult
- BuildSearchElements(nsIAbBooleanExpression *aExpression,
-                     bool &aCanHandle,
-                     ABSearchElement **aResult)
- {
-   aCanHandle = true;
--  
-+
-   nsCOMPtr<nsIArray> expressions;
-   nsresult rv = aExpression->GetExpressions(getter_AddRefs(expressions));
-   NS_ENSURE_SUCCESS(rv, rv);
--  
-+
-   nsAbBooleanOperationType operation;
-   rv = aExpression->GetOperation(&operation);
-   NS_ENSURE_SUCCESS(rv, rv);
--  
-+
-   uint32_t count;
-   rv = expressions->GetLength(&count);
-   NS_ENSURE_SUCCESS(rv, rv);
--  
-+
-   NS_ASSERTION(count > 1 && operation != nsIAbBooleanOperationTypes::NOT,
-                "This doesn't make sense!");
--  
-+
-   NSMutableArray *array = nullptr;
-   if (count > 1)
-     array = [[NSMutableArray alloc] init];
--  
-+
-   uint32_t i;
-   nsCOMPtr<nsIAbBooleanConditionString> condition;
-   nsCOMPtr<nsIAbBooleanExpression> subExpression;
-   for (i = 0; i < count; ++i) {
-     ABSearchElement *element = nullptr;
--    
-+
-     condition = do_QueryElementAt(expressions, i);
-     if (condition) {
-       rv = MapConditionString(condition, operation == nsIAbBooleanOperationTypes::NOT, aCanHandle, &element);
-       if (NS_FAILED(rv))
-         break;
-     }
-     else {
-       subExpression = do_QueryElementAt(expressions, i);
-       if (subExpression) {
-         rv = BuildSearchElements(subExpression, aCanHandle, &element);
-         if (NS_FAILED(rv))
-           break;
-       }
-     }
--    
-+
-     if (!aCanHandle) {
-       // remember to free the array when returning early
-       [array release];
-       return NS_OK;
-     }
--    
-+
-     if (element) {
-       if (array)
-         [array addObject:element];
--      else 
-+      else
-         *aResult = element;
-     }
-   }
--  
-+
-   if (array) {
-     if (NS_SUCCEEDED(rv)) {
-       ABSearchConjunction conjunction = operation == nsIAbBooleanOperationTypes::AND ? kABSearchAnd : kABSearchOr;
-       *aResult = [ABSearchElement searchElementForConjunction:conjunction children:array];
-     }
-     [array release];
-   }
--  
-+
-   return rv;
- }
- 
- static bool
- Search(nsIAbBooleanExpression *aExpression, NSArray **aResult)
- {
-   bool canHandle = false;
-   ABSearchElement *searchElement;
-   nsresult rv = BuildSearchElements(aExpression, canHandle, &searchElement);
-   NS_ENSURE_SUCCESS(rv, false);
--  
-+
-   if (canHandle)
-     *aResult = [[ABAddressBook sharedAddressBook] recordsMatchingSearchElement:searchElement];
- 
-   return canHandle;
- }
- 
- static uint32_t sObserverCount = 0;
- static ABChangedMonitor *sObserver = nullptr;
-@@ -600,30 +600,30 @@ CheckRedundantCards(nsIAbManager *aManag
-   nsresult rv;
-   nsCOMPtr<nsIAbOSXCard> osxCard = do_QueryInterface(aCard, &rv);
-   NS_ENSURE_SUCCESS(rv, false);
- 
-   nsAutoCString uri;
-   rv = osxCard->GetURI(uri);
-   NS_ENSURE_SUCCESS(rv, false);
-   NSString *uid = [NSString stringWithUTF8String:(uri.get() + 21)];
--  
-+
-   unsigned int i, count = [aCardList count];
-   for (i = 0; i < count; ++i) {
-     if ([[[aCardList objectAtIndex:i] uniqueId] isEqualToString:uid]) {
-       [aCardList removeObjectAtIndex:i];
-       break;
-     }
-   }
- 
-   if (i == count) {
-     aManager->NotifyDirectoryItemDeleted(aDirectory, aCard);
-     return true;
-   }
--  
-+
-   return false;
- }
- 
- nsresult
- nsAbOSXDirectory::GetRootOSXDirectory(nsIAbOSXDirectory **aResult)
- {
-   if (!mCacheTopLevelOSXAb)
-   {
-@@ -650,21 +650,21 @@ nsAbOSXDirectory::GetRootOSXDirectory(ns
- nsresult
- nsAbOSXDirectory::Update()
- {
-   NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT;
- 
-   nsresult rv;
-   nsCOMPtr<nsIAbManager> abManager = do_GetService(NS_ABMANAGER_CONTRACTID, &rv);
-   NS_ENSURE_SUCCESS(rv, rv);
--  
-+
-   if (mIsQueryURI) {
-     return NS_OK;
-   }
--  
-+
-   ABAddressBook *addressBook = [ABAddressBook sharedAddressBook];
-   // Due to the horrible way the address book code works wrt mailing lists
-   // we have to use a different list depending on what we are. This pointer
-   // holds a reference to that list.
-   nsIMutableArray* cardList;
-   NSArray *groups, *cards;
-   if (m_IsMailList) {
-     ABGroup *group = (ABGroup*)[addressBook recordForUniqueId:[NSString stringWithUTF8String:nsAutoCString(Substring(mURINoQuery, 21)).get()]];
-@@ -686,60 +686,60 @@ nsAbOSXDirectory::Update()
-     if (!mCardList)
-     {
-       mCardList = do_CreateInstance(NS_ARRAY_CONTRACTID, &rv);
-       NS_ENSURE_SUCCESS(rv, rv);
-     }
-     // For directories, store the cards in mCardList
-     cardList = mCardList;
-   }
--  
-+
-   NSMutableArray *mutableArray = [NSMutableArray arrayWithArray:cards];
-   uint32_t addressCount;
-   rv = cardList->GetLength(&addressCount);
-   NS_ENSURE_SUCCESS(rv, rv);
- 
-   while (addressCount--)
-   {
-     nsCOMPtr<nsIAbCard> card(do_QueryElementAt(cardList, addressCount, &rv));
-     if (NS_FAILED(rv))
-       break;
- 
-     if (CheckRedundantCards(abManager, this, card, mutableArray))
-       cardList->RemoveElementAt(addressCount);
-   }
--  
-+
-   NSEnumerator *enumerator = [mutableArray objectEnumerator];
-   ABRecord *card;
-   nsCOMPtr<nsIAbCard> abCard;
-   nsCOMPtr<nsIAbOSXDirectory> rootOSXDirectory;
-   rv = GetRootOSXDirectory(getter_AddRefs(rootOSXDirectory));
-   NS_ENSURE_SUCCESS(rv, rv);
- 
-   while ((card = [enumerator nextObject]))
-   {
-     rv = GetCard(card, getter_AddRefs(abCard), rootOSXDirectory);
-     if (NS_FAILED(rv))
-       rv = CreateCard(card, getter_AddRefs(abCard));
-     NS_ENSURE_SUCCESS(rv, rv);
-     AssertCard(abManager, abCard);
-   }
--  
-+
-   card = (ABRecord*)[addressBook recordForUniqueId:[NSString stringWithUTF8String:nsAutoCString(Substring(mURINoQuery, 21)).get()]];
-   NSString * stringValue = [card valueForProperty:kABGroupNameProperty];
-   if (![stringValue isEqualToString:WrapString(m_ListDirName)])
-   {
-     nsAutoString oldValue(m_ListDirName);
-     AssignToString(stringValue, m_ListDirName);
-     nsCOMPtr<nsISupports> supports = do_QueryInterface(static_cast<nsIAbDirectory *>(this), &rv);
-     NS_ENSURE_SUCCESS(rv, rv);
-     abManager->NotifyItemPropertyChanged(supports, "DirName",
-                                          oldValue.get(), m_ListDirName.get());
-   }
--  
-+
-   if (groups)
-   {
-     mutableArray = [NSMutableArray arrayWithArray:groups];
-     nsCOMPtr<nsIAbDirectory> directory;
-     // It is ok to use m_AddressList here as only top-level directories have
-     // groups, and they will be in m_AddressList
-     if (m_AddressList)
-     {
-@@ -751,79 +751,79 @@ nsAbOSXDirectory::Update()
-         directory = do_QueryElementAt(m_AddressList, addressCount, &rv);
-         if (NS_FAILED(rv))
-           continue;
- 
-         nsAutoCString uri;
-         directory->GetURI(uri);
-         uri.Cut(0, 21);
-         NSString *uid = [NSString stringWithUTF8String:uri.get()];
--        
-+
-         unsigned int j, arrayCount = [mutableArray count];
-         for (j = 0; j < arrayCount; ++j) {
-           if ([[[mutableArray objectAtIndex:j] uniqueId] isEqualToString:uid]) {
-             [mutableArray removeObjectAtIndex:j];
-             break;
-           }
-         }
--        
-+
-         if (j == arrayCount) {
-           UnassertDirectory(abManager, directory);
-         }
-       }
-     }
--    
-+
-     enumerator = [mutableArray objectEnumerator];
-     while ((card = [enumerator nextObject])) {
-       rv = GetOrCreateGroup([card uniqueId], getter_AddRefs(directory));
-       NS_ENSURE_SUCCESS(rv, rv);
--      
-+
-       AssertDirectory(abManager, directory);
-     }
-   }
--  
-+
-   return NS_OK;
- 
-   NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT;
- }
- 
- nsresult
- nsAbOSXDirectory::AssertChildNodes()
- {
-   NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT;
- 
-   // Queries and mailing lists can't have childnodes.
-   if (mIsQueryURI || m_IsMailList) {
-     return NS_OK;
-   }
--  
-+
-   nsresult rv;
-   nsCOMPtr<nsIAbManager> abManager =
-     do_GetService(NS_ABMANAGER_CONTRACTID, &rv);
-   NS_ENSURE_SUCCESS(rv, rv);
--  
-+
-   NSArray *groups = [[ABAddressBook sharedAddressBook] groups];
--  
-+
-   unsigned int i, count = [groups count];
--  
-+
-   if (count > 0 && !m_AddressList) {
-     m_AddressList = do_CreateInstance(NS_ARRAY_CONTRACTID, &rv);
-     NS_ENSURE_SUCCESS(rv, rv);
-   }
--  
-+
-   nsCOMPtr<nsIAbDirectory> directory;
-   for (i = 0; i < count; ++i) {
-     rv = GetOrCreateGroup([[groups objectAtIndex:i] uniqueId],
-                           getter_AddRefs(directory));
-     NS_ENSURE_SUCCESS(rv, rv);
--    
-+
-     rv = AssertDirectory(abManager, directory);
-     NS_ENSURE_SUCCESS(rv, rv);
-   }
--  
-+
-   return NS_OK;
- 
-   NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT;
- }
- 
- nsresult
- nsAbOSXDirectory::AssertDirectory(nsIAbManager *aManager,
-                                   nsIAbDirectory *aDirectory)
-@@ -834,17 +834,17 @@ nsAbOSXDirectory::AssertDirectory(nsIAbM
-     // We already have this directory, so no point in adding it again.
-     return NS_OK;
- 
-   nsresult rv;
-   if (!m_AddressList) {
-     m_AddressList = do_CreateInstance(NS_ARRAY_CONTRACTID, &rv);
-     NS_ENSURE_SUCCESS(rv, rv);
-   }
--  
-+
-   rv = m_AddressList->AppendElement(aDirectory);
-   NS_ENSURE_SUCCESS(rv, rv);
- 
-   return aManager->NotifyDirectoryItemAdded(this, aDirectory);
- }
- 
- nsresult
- nsAbOSXDirectory::AssertCard(nsIAbManager *aManager,
-@@ -874,17 +874,17 @@ nsAbOSXDirectory::AssertCard(nsIAbManage
- 
- nsresult
- nsAbOSXDirectory::UnassertCard(nsIAbManager *aManager,
-                                nsIAbCard *aCard,
-                                nsIMutableArray *aCardList)
- {
-   nsresult rv;
-   uint32_t pos;
--  
-+
-   if (NS_SUCCEEDED(aCardList->IndexOf(0, aCard, &pos)))
-     rv = aCardList->RemoveElementAt(pos);
- 
-   return aManager->NotifyDirectoryItemDeleted(this, aCard);
- }
- 
- nsresult
- nsAbOSXDirectory::UnassertDirectory(nsIAbManager *aManager,
-@@ -901,57 +901,57 @@ nsAbOSXDirectory::UnassertDirectory(nsIA
- 
-   return aManager->NotifyDirectoryItemDeleted(this, aDirectory);
- }
- 
- NS_IMETHODIMP
- nsAbOSXDirectory::GetChildNodes(nsISimpleEnumerator **aNodes)
- {
-   NS_ENSURE_ARG_POINTER(aNodes);
--  
-+
-   // Queries don't have childnodes.
-   if (mIsQueryURI || m_IsMailList || !m_AddressList)
-     return NS_NewEmptyEnumerator(aNodes);
--  
-+
-   return NS_NewArrayEnumerator(aNodes, m_AddressList);
- }
- 
- NS_IMETHODIMP
- nsAbOSXDirectory::GetChildCards(nsISimpleEnumerator **aCards)
- {
-   NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT;
- 
-   NS_ENSURE_ARG_POINTER(aCards);
--  
-+
-   nsresult rv;
-   NSArray *cards;
-   if (mIsQueryURI)
-   {
-     nsCOMPtr<nsIAbBooleanExpression> expression;
-     rv = nsAbQueryStringToExpression::Convert(mQueryString,
-                                               getter_AddRefs(expression));
-     NS_ENSURE_SUCCESS(rv, rv);
--    
-+
-     bool canHandle = !m_IsMailList && Search(expression, &cards);
-     if (!canHandle)
-       return FallbackSearch(expression, aCards);
- 
-     if (!mCardList)
-       mCardList = do_CreateInstance(NS_ARRAY_CONTRACTID, &rv);
-     else
-       mCardList->Clear();
-     NS_ENSURE_SUCCESS(rv, rv);
--  
-+
-     // The uuid for initializing cards
-     nsAutoCString ourUuid;
-     GetUuid(ourUuid);
- 
-     // Fill the results array and update the card list
-     unsigned int nbCards = [cards count];
--  
-+
-     unsigned int i;
-     nsCOMPtr<nsIAbCard> card;
-     nsCOMPtr<nsIAbOSXDirectory> rootOSXDirectory;
-     rv = GetRootOSXDirectory(getter_AddRefs(rootOSXDirectory));
-     NS_ENSURE_SUCCESS(rv, rv);
- 
-     for (i = 0; i < nbCards; ++i)
-     {
-@@ -1174,17 +1174,17 @@ nsAbOSXDirectory::HasCard(nsIAbCard *aCa
- }
- 
- NS_IMETHODIMP
- nsAbOSXDirectory::HasDirectory(nsIAbDirectory *aDirectory,
-                                bool *aHasDirectory)
- {
-   NS_ENSURE_ARG_POINTER(aDirectory);
-   NS_ENSURE_ARG_POINTER(aHasDirectory);
--  
-+
-   *aHasDirectory = false;
- 
-   uint32_t pos;
-   if (m_AddressList && NS_SUCCEEDED(m_AddressList->IndexOf(0, aDirectory, &pos)))
-     *aHasDirectory = true;
- 
-   return NS_OK;
- }
-@@ -1198,90 +1198,90 @@ nsAbOSXDirectory::OnSearchFinished(int32
- NS_IMETHODIMP
- nsAbOSXDirectory::OnSearchFoundCard(nsIAbCard *aCard)
- {
-   nsresult rv;
-   if (!m_AddressList) {
-     m_AddressList = do_CreateInstance(NS_ARRAY_CONTRACTID, &rv);
-     NS_ENSURE_SUCCESS(rv, rv);
-   }
--  
-+
-   if (!mCardList) {
-     mCardList = do_CreateInstance(NS_ARRAY_CONTRACTID, &rv);
-     NS_ENSURE_SUCCESS(rv, rv);
-   }
- 
-   rv = m_AddressList->AppendElement(aCard);
-   NS_ENSURE_SUCCESS(rv, rv);
--  
-+
-   rv = mCardList->AppendElement(aCard);
-   NS_ENSURE_SUCCESS(rv, rv);
- 
-   nsAutoCString ourUuid;
-   GetUuid(ourUuid);
-   aCard->SetDirectoryId(ourUuid);
--  
-+
-   return NS_OK;
- }
- 
- nsresult
- nsAbOSXDirectory::FallbackSearch(nsIAbBooleanExpression *aExpression,
-                                  nsISimpleEnumerator **aCards)
- {
-   nsresult rv;
--  
-+
-   if (mCardList)
-     rv = mCardList->Clear();
-   else
-     mCardList = do_CreateInstance(NS_ARRAY_CONTRACTID, &rv);
-   NS_ENSURE_SUCCESS(rv, rv);
--  
-+
-   if (m_AddressList) {
-     m_AddressList->Clear();
-   }
-   else {
-     m_AddressList = do_CreateInstance(NS_ARRAY_CONTRACTID, &rv);
-     NS_ENSURE_SUCCESS(rv, rv);
-   }
--  
-+
-   nsCOMPtr<nsIAbDirectoryQueryArguments> arguments =
-     do_CreateInstance(NS_ABDIRECTORYQUERYARGUMENTS_CONTRACTID, &rv);
-   NS_ENSURE_SUCCESS(rv, rv);
--  
-+
-   rv = arguments->SetExpression(aExpression);
-   NS_ENSURE_SUCCESS(rv, rv);
--  
-+
-   // Don't search the subdirectories. If the current directory is a mailing
-   // list, it won't have any subdirectories. If the current directory is an
-   // addressbook, searching both it and the subdirectories (the mailing
-   // lists), will yield duplicate results because every entry in a mailing
-   // list will be an entry in the parent addressbook.
-   rv = arguments->SetQuerySubDirectories(false);
-   NS_ENSURE_SUCCESS(rv, rv);
--  
-+
-   // Get the directory without the query
-   nsCOMPtr<nsIAbManager> abManager = do_GetService(NS_ABMANAGER_CONTRACTID, &rv);
-   NS_ENSURE_SUCCESS(rv, rv);
- 
-   nsCOMPtr<nsIAbDirectory> directory;
-   rv = abManager->GetDirectory(mURINoQuery, getter_AddRefs(directory));
-   NS_ENSURE_SUCCESS(rv, rv);
- 
-   // Initiate the proxy query with the no query directory
--  nsCOMPtr<nsIAbDirectoryQueryProxy> queryProxy = 
-+  nsCOMPtr<nsIAbDirectoryQueryProxy> queryProxy =
-     do_CreateInstance(NS_ABDIRECTORYQUERYPROXY_CONTRACTID, &rv);
-   NS_ENSURE_SUCCESS(rv, rv);
--  
-+
-   rv = queryProxy->Initiate();
-   NS_ENSURE_SUCCESS(rv, rv);
--  
-+
-   int32_t context = 0;
-   rv = queryProxy->DoQuery(directory, arguments, this, -1, 0, &context);
-   NS_ENSURE_SUCCESS(rv, rv);
--  
-+
-   return NS_NewArrayEnumerator(aCards, m_AddressList);
- }
- 
- nsresult nsAbOSXDirectory::DeleteUid(const nsACString &aUid)
- {
-   if (!m_AddressList)
-     return NS_ERROR_NULL_POINTER;
- 
-diff --git a/mailnews/base/content/folderWidgets.xml b/mailnews/base/content/folderWidgets.xml
---- a/mailnews/base/content/folderWidgets.xml
-+++ b/mailnews/base/content/folderWidgets.xml
-@@ -209,17 +209,17 @@
-           if (!(aItem instanceof Ci.nsIMsgFolder))
-             return;
-           if (this._filterFunction && !this._filterFunction(aItem)) {
-             return;
-           }
-           //xxx we can optimize this later
-           this._clearMenu(this._menu);
-         },
--  
-+ 
-         OnItemRemoved: function act_remove(aRDFParentItem, aItem) {
-           if (!(aItem instanceof Ci.nsIMsgFolder))
-             return;
-           if (this._filterFunction && !this._filterFunction(aItem)) {
-             return;
-           }
-           //xxx we can optimize this later
-           this._clearMenu(this._menu);
-diff --git a/mailnews/base/content/junkMailInfo.xul b/mailnews/base/content/junkMailInfo.xul
---- a/mailnews/base/content/junkMailInfo.xul
-+++ b/mailnews/base/content/junkMailInfo.xul
-@@ -7,17 +7,17 @@
- <!DOCTYPE dialog [
- <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd" >
- %brandDTD;
- <!ENTITY % junkMailInfoDTD SYSTEM "chrome://messenger/locale/junkMailInfo.dtd" >
- %junkMailInfoDTD;
- ]>
- 
- <?xml-stylesheet href="chrome://messenger/skin/messenger.css" type="text/css"?>
--<?xml-stylesheet href="chrome://messenger/skin/primaryToolbar.css" type="text/css"?> 
-+<?xml-stylesheet href="chrome://messenger/skin/primaryToolbar.css" type="text/css"?>
- 
- <dialog id="junkMailInfo"
-         xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-         title="&window.title;"
-         windowtype="mailnews:junkmailinfo"
-         buttons="accept">
- 
-   <vbox flex="1" width="&window.width;">
-diff --git a/mailnews/base/content/msgAccountCentral.xul b/mailnews/base/content/msgAccountCentral.xul
---- a/mailnews/base/content/msgAccountCentral.xul
-+++ b/mailnews/base/content/msgAccountCentral.xul
-@@ -1,9 +1,9 @@
--<?xml version="1.0"?> 
-+<?xml version="1.0"?>
- <!-- This Source Code Form is subject to the terms of the Mozilla Public
-    - License, v. 2.0. If a copy of the MPL was not distributed with this
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
- <?xml-stylesheet href="chrome://messenger/skin/accountCentral.css" type="text/css"?>
- 
- <!DOCTYPE page [
-   <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd">
-diff --git a/mailnews/base/content/shutdownWindow.xul b/mailnews/base/content/shutdownWindow.xul
---- a/mailnews/base/content/shutdownWindow.xul
-+++ b/mailnews/base/content/shutdownWindow.xul
-@@ -10,22 +10,22 @@
- <dialog xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-         style="padding: 20px; width: 350px"
-         onload="onLoad()"
-         buttons="cancel"
-         ondialogcancel="return onCancel();">
- 
-   <script type="application/javascript" src="chrome://messenger/content/shutdownWindow.js"/>
-   <stringbundle id="bundle_shutdown" src="chrome://messenger/locale/shutdownWindow.properties"/>
--  
-+
-   <vbox align="center">
-     <label id="shutdownStatus_label" value="" />
-     <separator class="thin" />
-   </vbox>
--  
-+
-   <progressmeter id="shutdown_progressmeter" mode="determined" />
--  
-+
-   <vbox align="center">
-     <label id="shutdownTask_label" value="" />
-     <separator class="thick" />
-   </vbox>
--  
-+
- </dialog>
-diff --git a/mailnews/base/prefs/content/AccountWizard.xul b/mailnews/base/prefs/content/AccountWizard.xul
---- a/mailnews/base/prefs/content/AccountWizard.xul
-+++ b/mailnews/base/prefs/content/AccountWizard.xul
-@@ -57,17 +57,17 @@
-         <radio id="movemailaccount" label="&accountTypeMovemail.label;"
-                accesskey="&accountTypeMovemail.accesskey;"
-                value="movemail" />
- #endif
- #ifndef MOZ_THUNDERBIRD
-         <radio id="rssaccount" value="rss" label="&feeds.wizardLongName;"
-                accesskey="&feeds.wizardLongName.accesskey;"/>
- #endif
--        <vbox datasources="rdf:ispdefaults" 
-+        <vbox datasources="rdf:ispdefaults"
-               containment="http://home.netscape.com/NC-rdf#providers"
-               id="ispBox"
-               ref="NC:ispinfo">
-           <template>
-             <rule nc:wizardShow="true">
-               <radio uri="..."
-                      value="rdf:http://home.netscape.com/NC-rdf#wizardShortName"
-                      label="rdf:http://home.netscape.com/NC-rdf#wizardLongName"
-@@ -91,24 +91,24 @@
-       <separator/>
-       <description>&fullnameDesc.label; &fullnameExample.label;</description>
-       <separator class="thin"/>
-       <hbox align="center">
-         <label class="awIdentityLabel" value="&fullnameLabel.label;"
-                accesskey="&fullnameLabel.accesskey;" control="fullName"/>
-         <textbox mailtype="identity" wsm_persist="true" name="fullName" id="fullName" flex="1" oninput="identityPageValidate();"/>
-       </hbox>
--      <separator/>  
-+      <separator/>
-       <grid>
-         <columns>
-           <column flex="1"/>
-         </columns>
-         <rows>
-           <row>
--            <description id="emailDescText"/> 
-+            <description id="emailDescText"/>
-           </row>
-           <separator class="thin"/>
-           <row>
-             <hbox align="center">
-               <label class="awIdentityLabel" id="emailFieldLabel" value="&emailLabel.label;"
-                      accesskey="&emailLabel.accesskey;" control="email"/>
-               <hbox class="uri-element" align="center" flex="1">
-                 <textbox wsm_persist="true" mailtype="identity" name="email"
-@@ -133,22 +133,22 @@
-               onpageadvanced="return incomingPageUnload();">
-     <vbox flex="1">
-         <vbox id="serverTypeBox">
-         <label control="servertype">&incomingServerTypeDesc.label;</label>
-           <separator class="thin"/>
-           <hbox align="center" class="serverDataBox">
-             <!-- The initial value for the servertype radiogroup is set in onInit() -->
-             <radiogroup id="servertype" wsm_persist="true" orient="horizontal">
--                <radio group="servertype" value="pop3" id="pop3" label="&popType.label;" 
-+                <radio group="servertype" value="pop3" id="pop3" label="&popType.label;"
-                        wsm_persist="true" oncommand="setServerType();" accesskey="&popType.accesskey;"/>
-                 <radio group="servertype" value="imap" id="imap" label="&imapType.label;"
-                        wsm_persist="true" oncommand="setServerType();" accesskey="&imapType.accesskey;"/>
-             </radiogroup>
--            <label id="serverPortLabel" control="serverPort" 
-+            <label id="serverPortLabel" control="serverPort"
-                    accesskey="&portNum.accesskey;"
-                    value="&portNum.label;"/>
-             <textbox id="serverPort" type="number" size="3" max="65535"/>
-             <label id="defaultPortLabel" value="&defaultPortLabel.label;"/>
-             <label id="defaultPortValue" value="&defaultPortValue.label;"/>
-           </hbox>
-           <separator/>
-         </vbox>
-@@ -277,33 +277,33 @@
-                  class="uri-element"
-                  oninput="incomingPageValidate();"/>
-       </hbox>
-     </vbox>
-   </wizardpage>
- 
-   <!-- Account name page : User gets a choice to enter a pretty name for the account -->
-   <!-- Defaults : Mail account -> Email address, Newsgroup account -> Newsgroup server name -->
--  <wizardpage id="accnamepage" pageid="accnamepage" 
-+  <wizardpage id="accnamepage" pageid="accnamepage"
-               label="&accnameTitle.label;"
-               onpageshow="return acctNamePageInit();"
-               onpageadvanced="return acctNamePageUnload();">
-     <vbox flex="1">
-       <description>&accnameDesc.label;</description>
-       <separator class="thin"/>
-       <hbox align="center">
-         <label class="label" value="&accnameLabel.label;" style="width: 8em;"
-                accesskey="&accnameLabel.accesskey;" control="prettyName"/>
-         <textbox id="prettyName" size="40" wsm_persist="true" flex="1" oninput="acctNamePageValidate();"/>
-       </hbox>
-     </vbox>
-   </wizardpage>
- 
-   <!-- Done page : this page summarizes information collected to create a mail/news account -->
--  <wizardpage id="done" pageid="done" 
-+  <wizardpage id="done" pageid="done"
-               label="&completionTitle.label;"
-               onpageshow="return donePageInit();">
-     <vbox flex="1">
-       <description>&completionText.label;</description>
-       <separator class="thin"/>
-       <grid>
-         <columns>
-           <column/>
-diff --git a/mailnews/base/prefs/content/am-offline.xul b/mailnews/base/prefs/content/am-offline.xul
---- a/mailnews/base/prefs/content/am-offline.xul
-+++ b/mailnews/base/prefs/content/am-offline.xul
-@@ -6,23 +6,23 @@
- <?xml-stylesheet href="chrome://messenger/skin/accountManage.css" type="text/css"?>
- 
- <!DOCTYPE page SYSTEM "chrome://messenger/locale/am-offline.dtd">
- 
- <page xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-       onload="parent.onPanelLoaded('am-offline.xul');">
- 
-   <vbox flex="1" style="overflow: auto;">
--    <stringbundle id="bundle_prefs" src="chrome://messenger/locale/prefs.properties"/> 
-+    <stringbundle id="bundle_prefs" src="chrome://messenger/locale/prefs.properties"/>
- 
-     <script type="application/javascript" src="chrome://messenger/content/AccountManager.js"/>
-     <script type="application/javascript" src="chrome://messenger/content/retention.js"/>
-     <script type="application/javascript" src="chrome://messenger/content/am-offline.js"/>
- 
--    <label hidden="true" wsm_persist="true" id="server.type"/>  
-+    <label hidden="true" wsm_persist="true" id="server.type"/>
-     <label id="imap.autoSyncMaxAgeDays" hidden="true"
-            wsm_persist="true" preftype="int"
-            prefstring="mail.server.%serverkey%.autosync_max_age_days"/>
- 
-     <dialogheader id="headertitle"/>
- 
-     <groupbox id="offline.titlebox" hidefor="movemail,pop3,none,rss">
-       <caption label="&syncGroupTitle.label;"/>
-diff --git a/mailnews/base/src/nsMessengerOSXIntegration.mm b/mailnews/base/src/nsMessengerOSXIntegration.mm
---- a/mailnews/base/src/nsMessengerOSXIntegration.mm
-+++ b/mailnews/base/src/nsMessengerOSXIntegration.mm
-@@ -113,17 +113,17 @@ static void openMailWindow(const nsCStri
-         wwatch->OpenWindow(0, "chrome://messenger/content/messageWindow.xul",
-                            "_blank", "all,chrome,dialog=no,status,toolbar", msgUri,
-                            getter_AddRefs(newWindow));
- #else
-         nsCOMPtr<nsIMessenger> messenger(do_CreateInstance(NS_MESSENGER_CONTRACTID, &rv));
-         if (NS_FAILED(rv))
-           return;
- 
--        nsCOMPtr<nsIMsgDBHdr> msgHdr; 
-+        nsCOMPtr<nsIMsgDBHdr> msgHdr;
-         messenger->MsgHdrFromURI(aUri, getter_AddRefs(msgHdr));
-         if (msgHdr)
-         {
-           nsCOMPtr<mozIDOMWindowProxy> newWindow;
-           wwatch->OpenWindow(0, "chrome://messenger/content/messageWindow.xul",
-                              "_blank", "all,chrome,dialog=no,status,toolbar", msgHdr,
-                              getter_AddRefs(newWindow));
-         }
-@@ -216,17 +216,17 @@ nsMessengerOSXIntegration::Observe(nsISu
-   if (!strcmp(aTopic, "alertfinished"))
-     return OnAlertFinished();
- 
-   if (!strcmp(aTopic, "alertclickcallback"))
-     return OnAlertClicked(aData);
- 
- #ifdef MOZ_SUITE
-   // SeaMonkey does most of the GUI work in JS code when clicking on a mail
--  // notification, so it needs an extra function here 
-+  // notification, so it needs an extra function here
-   if (!strcmp(aTopic, "alertclicksimplecallback"))
-     return OnAlertClickedSimple();
- #endif
- 
-   if (!strcmp(aTopic, "mail-startup-done")) {
-     nsresult rv;
-     nsCOMPtr<nsIObserverService> observerService = do_GetService("@mozilla.org/observer-service;1", &rv);
-     if (NS_SUCCEEDED(rv)) {
-diff --git a/mailnews/build/nsMailModule.cpp b/mailnews/build/nsMailModule.cpp
---- a/mailnews/build/nsMailModule.cpp
-+++ b/mailnews/build/nsMailModule.cpp
-@@ -1,36 +1,36 @@
- /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
- /* This Source Code Form is subject to the terms of the Mozilla Public
-  * License, v. 2.0. If a copy of the MPL was not distributed with this
-  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
- 
- /* ****************************************************************************
-  * ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION!
-  * ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION!
-- * 
-+ *
-  * ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION!
-  * ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION!
-- * 
-+ *
-  * Dear Mortals,
-- * 
-+ *
-  * Please be advised that if you are adding something here, you should also
-  * strongly consider adding it to the other place it goes too!  These can be
-  * found in paths like so: mailnews/.../build/WhateverFactory.cpp
-- * 
-+ *
-  * If you do not, your (static) release builds will be quite pleasant, but
-  * (dynamic) debug builds will disappoint you by not having your component in
-  * them.
-- * 
-+ *
-  * Yours truly,
-  * The ghost that haunts the MailNews codebase.
-- * 
-+ *
-  * ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION!
-  * ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION!
-- * 
-+ *
-  * ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION!
-  * ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION!
-  * ****************************************************************************/
- 
- 
- ////////////////////////////////////////////////////////////////////////////////
- // Core Module Include Files
- ////////////////////////////////////////////////////////////////////////////////
-diff --git a/mailnews/compose/content/sendProgress.xul b/mailnews/compose/content/sendProgress.xul
---- a/mailnews/compose/content/sendProgress.xul
-+++ b/mailnews/compose/content/sendProgress.xul
-@@ -1,9 +1,9 @@
--<?xml version="1.0"?> 
-+<?xml version="1.0"?>
- 
- <!-- This Source Code Form is subject to the terms of the Mozilla Public
-    - License, v. 2.0. If a copy of the MPL was not distributed with this
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
- <?xml-stylesheet href="chrome://messenger/skin/dialogs.css" type="text/css"?>
- 
- <!DOCTYPE dialog SYSTEM "chrome://messenger/locale/messengercompose/sendProgress.dtd">
-diff --git a/mailnews/db/gloda/content/glodacomplete.xml b/mailnews/db/gloda/content/glodacomplete.xml
---- a/mailnews/db/gloda/content/glodacomplete.xml
-+++ b/mailnews/db/gloda/content/glodacomplete.xml
-@@ -300,25 +300,25 @@
-     <implementation implements="nsIDOMXULSelectControlItemElement">
-       <constructor>
-         <![CDATA[
-             this._explanation = document.getAnonymousElementByAttribute(this, "anonid", "explanation");
- 
-             this._adjustAcItem();
-           ]]>
-       </constructor>
--      
-+
-       <property name="label" readonly="true">
-         <getter>
-           <![CDATA[
-             return "tag " + this.row.item.tag;
-           ]]>
-         </getter>
-       </property>
--      
-+
-       <method name="_adjustAcItem">
-         <body>
-           <![CDATA[
-             let label = gGlodaCompleteStrings.get("glodaComplete.messagesTagged.label");
-             this._explanation.value = label.replace("#1", this.row.item.tag);
-           ]]>
-         </body>
-       </method>
-@@ -334,25 +334,25 @@
-     <implementation implements="nsIDOMXULSelectControlItemElement">
-       <constructor>
-         <![CDATA[
-             this._explanation = document.getAnonymousElementByAttribute(this, "anonid", "explanation");
- 
-             this._adjustAcItem();
-           ]]>
-       </constructor>
--      
-+
-       <property name="label" readonly="true">
-         <getter>
-           <![CDATA[
-             return "full text search: " + this.row.item;
-           ]]>
-         </getter>
-       </property>
--      
-+
-       <method name="_adjustAcItem">
-         <body>
-           <![CDATA[
-             let label = gGlodaCompleteStrings.get("glodaComplete.messagesMentioning.label");
-             this._explanation.value = label.replace("#1", this.row.item);
-           ]]>
-         </body>
-       </method>
-@@ -365,25 +365,25 @@
-     </content>
-     <implementation implements="nsIDOMXULSelectControlItemElement">
-       <constructor>
-         <![CDATA[
-             this._explanation = document.getAnonymousElementByAttribute(this, "anonid", "explanation");
-             this._adjustAcItem();
-           ]]>
-       </constructor>
--      
-+
-       <property name="label" readonly="true">
-         <getter>
-           <![CDATA[
-             return "full text search: " + this.row.item; // what is this for? l10n?
-           ]]>
-         </getter>
-       </property>
--      
-+
-       <method name="_adjustAcItem">
-         <body>
-           <![CDATA[
-           let label = gGlodaCompleteStrings.get("glodaComplete.messagesMentioningMany.label");
-           this._explanation.value = label.replace("#1", this.row.words.join(", "));
-           ]]>
-         </body>
-       </method>
-@@ -436,43 +436,43 @@
- 
-             this._typeImage = document.getAnonymousElementByAttribute(this, "anonid", "type-image");
- 
-             this._identityBox = document.getAnonymousElementByAttribute(this, "anonid", "identity-box");
-             this._identity = document.getAnonymousElementByAttribute(this, "anonid", "identity");
- 
-             this._nameBox = document.getAnonymousElementByAttribute(this, "anonid", "name-box");
-             this._name = document.getAnonymousElementByAttribute(this, "anonid", "name");
--            
-+
-             this._picture = document.getAnonymousElementByAttribute(this, "anonid", "picture");
- 
-             this._adjustAcItem();
-           ]]>
-       </constructor>
--      
-+
-       <property name="label" readonly="true">
-         <getter>
-           <![CDATA[
-             var identity = this.row.item;
-             return identity.accessibleLabel;
-           ]]>
-         </getter>
-       </property>
--      
-+
-       <method name="_adjustAcItem">
-         <body>
-           <![CDATA[
-           var identity = this.row.item;
--          
-+
-           if (identity == null)
-             return;
--          
-+
-           // I guess we should get the picture size from CSS or something?
-           this._picture.src = identity.pictureURL(32);
--          
-+
-           // Emphasize the matching search terms for the description
-           this._setUpDescription(this._name, identity.contact.name);
-           this._setUpDescription(this._identity, identity.value);
- 
-           // Set up overflow on a timeout because the contents of the box
-           // might not have a width yet even though we just changed them
-           setTimeout(this._setUpOverflow, 0, this._nameBox, this._nameOverflowEllipsis);
-           setTimeout(this._setUpOverflow, 0, this._identityBox, this._identityOverflowEllipsis);
-@@ -526,45 +526,45 @@
- 
-             this._typeImage = document.getAnonymousElementByAttribute(this, "anonid", "type-image");
- 
-             this._identityBox = document.getAnonymousElementByAttribute(this, "anonid", "identity-box");
-             this._identity = document.getAnonymousElementByAttribute(this, "anonid", "identity");
- 
-             this._nameBox = document.getAnonymousElementByAttribute(this, "anonid", "name-box");
-             this._name = document.getAnonymousElementByAttribute(this, "anonid", "name");
--            
-+
-             this._picture = document.getAnonymousElementByAttribute(this, "anonid", "picture");
- 
-             this._adjustAcItem();
-           ]]>
-       </constructor>
--      
-+
-       <property name="label" readonly="true">
-         <getter>
-           <![CDATA[
-             var identity = this.obj;
-             return identity.accessibleLabel;
-           ]]>
-         </getter>
-       </property>
--      
-+
-       <method name="_adjustAcItem">
-         <body>
-           <![CDATA[
-           var contact = this.obj;
--          
-+
-           if (contact == null)
-             return;
--          
-+
-           var identity = contact.identities[0];
--          
-+
-           // I guess we should get the picture size from CSS or something?
-           this._picture.src = identity.pictureURL(32);
--          
-+
-           // Emphasize the matching search terms for the description
-           this._setUpDescription(this._name, contact.name);
-           this._setUpDescription(this._identity, identity.value);
- 
-           // Set up overflow on a timeout because the contents of the box
-           // might not have a width yet even though we just changed them
-           setTimeout(this._setUpOverflow, 0, this._nameBox, this._nameOverflowEllipsis);
-           setTimeout(this._setUpOverflow, 0, this._identityBox, this._identityOverflowEllipsis);
-@@ -584,54 +584,54 @@
-       <constructor>
-         <![CDATA[
-             this._explanation = document.getAnonymousElementByAttribute(this, "anonid", "explanation");
-             this._identityHolder = document.getAnonymousElementByAttribute(this, "anonid", "identity-holder");
- 
-             this._adjustAcItem();
-           ]]>
-       </constructor>
--      
-+
-       <property name="label" readonly="true">
-         <getter>
-           <![CDATA[
-             return this._explanation.value;
-           ]]>
-         </getter>
-       </property>
--      
-+
-       <method name="renderItem">
-         <parameter name="aObj"/>
-         <body>
-           var node = document.createElementNS(
-             "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul",
-             "richlistitem");
--          
-+
-           node.obj = aObj;
-           node.setAttribute("type",
-                             "gloda-" + this.row.nounDef.name + "-chunk");
--          
-+
-           this._identityHolder.appendChild(node);
-         </body>
-       </method>
--      
-+
-       <method name="_adjustAcItem">
-         <body>
-           <![CDATA[
-           // clear out any lingering children
-           while (this._identityHolder.hasChildNodes())
-             this._identityHolder.lastChild.remove();
--          
-+
-           var row = this.row;
-           if (row == null)
-             return;
--          
-+
-           this._explanation.value = row.nounDef.name + "s " +
-             row.criteriaType + "ed " + row.criteria;
--          
-+
-           // render anyone already in there
-           for (let item of row.collection.items) {
-             this.renderItem(item);
-           }
-           // listen up, yo.
-           row.renderer = this;
-           ]]>
-         </body>
-diff --git a/mailnews/extensions/dsn/content/am-dsn.xul b/mailnews/extensions/dsn/content/am-dsn.xul
---- a/mailnews/extensions/dsn/content/am-dsn.xul
-+++ b/mailnews/extensions/dsn/content/am-dsn.xul
-@@ -5,42 +5,42 @@
-  This Source Code Form is subject to the terms of the Mozilla Public
-    - License, v. 2.0. If a copy of the MPL was not distributed with this
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
- <?xml-stylesheet href="chrome://messenger/skin/accountManage.css" type="text/css"?>
- 
- <!DOCTYPE page SYSTEM "chrome://messenger/locale/am-dsn.dtd">
- 
--<page xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" 
-+<page xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-       onload="parent.onPanelLoaded('am-dsn.xul');">
- 
--  <stringbundle id="bundle_smime" src="chrome://messenger/locale/am-dsn.properties"/> 
-+  <stringbundle id="bundle_smime" src="chrome://messenger/locale/am-dsn.properties"/>
-   <script type="application/javascript" src="chrome://messenger/content/AccountManager.js"/>
-   <script type="application/javascript" src="chrome://messenger/content/am-dsn.js"/>
--  
-+
-   <dialogheader title="&pane.title;"/>
- 
-   <groupbox>
- 
-     <caption label="&pane.title;"/>
- 
-     <hbox id="prefChoices" align="center">
-       <radiogroup id="identity.dsn_use_custom_prefs"
-                   wsm_persist="true"
--                  genericattr="true" 
-+                  genericattr="true"
-                   preftype="bool"
--                  prefstring="mail.identity.%identitykey%.dsn_use_custom_prefs" 
-+                  prefstring="mail.identity.%identitykey%.dsn_use_custom_prefs"
-                   oncommand="EnableDisableCustomSettings();">
--    
-+
-         <radio id="identity.select_global_prefs"
-                value="false"
-                label="&useGlobalPrefs.label;"
-                accesskey="&useGlobalPrefs.accesskey;"/>
--    
-+
-         <radio id="identity.select_custom_prefs"
-                value="true"
-                label="&useCustomPrefs.label;"
-                accesskey="&useCustomPrefs.accesskey;"/>
-       </radiogroup>
-     </hbox>
- 
-     <vbox id="dsnSettings" class="indent" align="start">
-diff --git a/mailnews/extensions/smime/content/certFetchingStatus.xul b/mailnews/extensions/smime/content/certFetchingStatus.xul
---- a/mailnews/extensions/smime/content/certFetchingStatus.xul
-+++ b/mailnews/extensions/smime/content/certFetchingStatus.xul
-@@ -4,17 +4,17 @@
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
- <?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
- <?xml-stylesheet href="chrome://messenger/skin/smime/certFetchingStatus.css" type="text/css"?>
- 
- <!DOCTYPE dialog SYSTEM "chrome://messenger-smime/locale/certFetchingStatus.dtd">
- 
- <dialog id="certFetchingStatus" title="&title.label;"
--  xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"      
-+  xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-   style="width: 50em;"
-   buttons="cancel"
-   buttonlabelcancel="&stop.label;"
-   ondialogcancel="return stopFetching();"
-   onload="onLoad();">
- 
-   <stringbundle id="bundle_ldap" src="chrome://mozldap/locale/ldap.properties"/>
- <script type="application/javascript" src="chrome://messenger-smime/content/certFetchingStatus.js"/>
-diff --git a/mailnews/extensions/smime/content/msgCompSecurityInfo.xul b/mailnews/extensions/smime/content/msgCompSecurityInfo.xul
---- a/mailnews/extensions/smime/content/msgCompSecurityInfo.xul
-+++ b/mailnews/extensions/smime/content/msgCompSecurityInfo.xul
-@@ -4,25 +4,25 @@
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
- <?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
- <?xml-stylesheet href="chrome://messenger/skin/smime/msgCompSecurityInfo.css" type="text/css"?>
- 
- <!DOCTYPE dialog SYSTEM "chrome://messenger-smime/locale/msgCompSecurityInfo.dtd">
- 
- <dialog id="msgCompSecurityInfo" title="&title.label;"
--  xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"      
-+  xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-   style="width: 50em;"
-   persist="width height"
-   buttons="accept"
-   onload="onLoad();">
- 
-   <script type="application/javascript" src="chrome://messenger-smime/content/msgCompSecurityInfo.js"/>
- 
--  <stringbundle id="bundle_smime_comp_info" src="chrome://messenger-smime/locale/msgCompSecurityInfo.properties"/> 
-+  <stringbundle id="bundle_smime_comp_info" src="chrome://messenger-smime/locale/msgCompSecurityInfo.properties"/>
- 
-   <description>&subject.plaintextWarning;</description>
-   <separator class="thin"/>
-   <description>&status.heading;</description>
-   <grid>
-     <columns>
-       <column/>
-       <column/>
-diff --git a/mailnews/extensions/smime/content/msgHdrViewSMIMEOverlay.xul b/mailnews/extensions/smime/content/msgHdrViewSMIMEOverlay.xul
---- a/mailnews/extensions/smime/content/msgHdrViewSMIMEOverlay.xul
-+++ b/mailnews/extensions/smime/content/msgHdrViewSMIMEOverlay.xul
-@@ -1,14 +1,14 @@
--<?xml version="1.0"?> 
-+<?xml version="1.0"?>
- <!-- This Source Code Form is subject to the terms of the Mozilla Public
-    - License, v. 2.0. If a copy of the MPL was not distributed with this
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
--<?xml-stylesheet href="chrome://messenger/skin/smime/msgHdrViewSMIMEOverlay.css" type="text/css"?> 
-+<?xml-stylesheet href="chrome://messenger/skin/smime/msgHdrViewSMIMEOverlay.css" type="text/css"?>
- 
- <overlay xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
- 
-   <script type="application/javascript" src="chrome://messenger-smime/content/msgHdrViewSMIMEOverlay.js"/>
- <!-- These stringbundles are already defined in msgReadSMIMEOverlay.xul!
-   <stringbundleset id="stringbundleset">
-     <stringbundle id="bundle_read_smime" src="chrome://messenger-smime/locale/msgReadSMIMEOverlay.properties"/>
-     <stringbundle id="bundle_brand" src="chrome://branding/locale/brand.properties"/>
-diff --git a/mailnews/extensions/smime/content/msgReadSMIMEOverlay.xul b/mailnews/extensions/smime/content/msgReadSMIMEOverlay.xul
---- a/mailnews/extensions/smime/content/msgReadSMIMEOverlay.xul
-+++ b/mailnews/extensions/smime/content/msgReadSMIMEOverlay.xul
-@@ -1,9 +1,9 @@
--<?xml version="1.0"?> 
-+<?xml version="1.0"?>
- <!-- This Source Code Form is subject to the terms of the Mozilla Public
-    - License, v. 2.0. If a copy of the MPL was not distributed with this
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
- <?xml-stylesheet href="chrome://messenger/skin/smime/msgReadSMIMEOverlay.css" type="text/css"?>
- 
- <!DOCTYPE overlay SYSTEM "chrome://messenger-smime/locale/msgReadSMIMEOverlay.dtd">
- 
-diff --git a/mailnews/extensions/smime/content/msgReadSecurityInfo.xul b/mailnews/extensions/smime/content/msgReadSecurityInfo.xul
---- a/mailnews/extensions/smime/content/msgReadSecurityInfo.xul
-+++ b/mailnews/extensions/smime/content/msgReadSecurityInfo.xul
-@@ -1,27 +1,27 @@
- <?xml version="1.0"?>
- <!-- This Source Code Form is subject to the terms of the Mozilla Public
-    - License, v. 2.0. If a copy of the MPL was not distributed with this
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
- <?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
--<?xml-stylesheet href="chrome://messenger/skin/smime/msgReadSecurityInfo.css" type="text/css"?> 
-+<?xml-stylesheet href="chrome://messenger/skin/smime/msgReadSecurityInfo.css" type="text/css"?>
- 
- <!DOCTYPE dialog SYSTEM "chrome://messenger-smime/locale/msgReadSecurityInfo.dtd">
- 
- <dialog id="msgReadSecurityInfo" title="&status.label;"
--  xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"      
-+  xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-   style="width: 40em;"
-   buttons="accept"
-   onload="onLoad();">
- 
-   <script type="application/javascript" src="chrome://messenger-smime/content/msgReadSecurityInfo.js"/>
- 
--  <stringbundle id="bundle_smime_read_info" src="chrome://messenger-smime/locale/msgSecurityInfo.properties"/> 
-+  <stringbundle id="bundle_smime_read_info" src="chrome://messenger-smime/locale/msgSecurityInfo.properties"/>
- 
-   <vbox flex="1">
-     <label id="signatureLabel"/>
-     <label id="signatureHeader" collapsed="true"/>
-     <description id="signatureExplanation"/>
-     <vbox id="signatureCert" collapsed="true">
-       <hbox>
-         <label id="signedByLabel">&signer.name;</label>
-diff --git a/mailnews/import/applemail/src/nsEmlxHelperUtils.mm b/mailnews/import/applemail/src/nsEmlxHelperUtils.mm
---- a/mailnews/import/applemail/src/nsEmlxHelperUtils.mm
-+++ b/mailnews/import/applemail/src/nsEmlxHelperUtils.mm
-@@ -16,22 +16,22 @@
- #include "nsTArray.h"
- #include "nsAppleMailImport.h"
- #include "prprf.h"
- #include "nsIFile.h"
- 
- #import <Cocoa/Cocoa.h>
- 
- 
--nsresult nsEmlxHelperUtils::ConvertToMozillaStatusFlags(const char *aXMLBufferStart, 
--                                                        const char *aXMLBufferEnd, 
-+nsresult nsEmlxHelperUtils::ConvertToMozillaStatusFlags(const char *aXMLBufferStart,
-+                                                        const char *aXMLBufferEnd,
-                                                         uint32_t *aMozillaStatusFlags)
- {
-   // create a NSData wrapper around the buffer, so we can use the Cocoa call below
--  NSData *metadata = 
-+  NSData *metadata =
-     [[[NSData alloc] initWithBytesNoCopy:(void *)aXMLBufferStart length:(aXMLBufferEnd-aXMLBufferStart) freeWhenDone:NO] autorelease];
- 
-   // get the XML data as a dictionary
-   NSPropertyListFormat format;
-   id plist = [NSPropertyListSerialization propertyListWithData:metadata
-                                               options:NSPropertyListImmutable
-                                                         format:&format
-                                               error:NULL];
-@@ -40,17 +40,17 @@ nsresult nsEmlxHelperUtils::ConvertToMoz
-     return NS_ERROR_FAILURE;
- 
-   // find the <flags>...</flags> value and convert to int
-   const uint32_t emlxMessageFlags = [[(NSDictionary *)plist objectForKey:@"flags"] intValue];
- 
-   if (emlxMessageFlags == 0)
-     return NS_ERROR_FAILURE;
- 
--  if (emlxMessageFlags & nsEmlxHelperUtils::kRead) 
-+  if (emlxMessageFlags & nsEmlxHelperUtils::kRead)
-     *aMozillaStatusFlags |= nsMsgMessageFlags::Read;
-   if (emlxMessageFlags & nsEmlxHelperUtils::kForwarded)
-     *aMozillaStatusFlags |= nsMsgMessageFlags::Forwarded;
-   if (emlxMessageFlags & nsEmlxHelperUtils::kAnswered)
-     *aMozillaStatusFlags |= nsMsgMessageFlags::Replied;
-   if (emlxMessageFlags & nsEmlxHelperUtils::kFlagged)
-     *aMozillaStatusFlags |= nsMsgMessageFlags::Marked;
- 
-@@ -62,17 +62,17 @@ nsresult nsEmlxHelperUtils::ConvertToMbo
-   nsTArray<const char *> foundFromLines;
- 
-   const char *cur = aMessageBufferStart;
-   while (cur < aMessageBufferEnd) {
- 
-     const char *foundFromStr = strnstr(cur, "From ", aMessageBufferEnd-cur);
- 
-     if (foundFromStr) {
--      // skip all prepending '>' chars 
-+      // skip all prepending '>' chars
-       const char *fromLineStart = foundFromStr;
-       while (fromLineStart-- >= aMessageBufferStart) {
-         if (*fromLineStart == '\n' || fromLineStart == aMessageBufferStart) {
-           if (fromLineStart > aMessageBufferStart)
-             fromLineStart++;
-           foundFromLines.AppendElement(fromLineStart);
-           break;
-         }
-@@ -80,17 +80,17 @@ nsresult nsEmlxHelperUtils::ConvertToMbo
-           break;
-       }
- 
-       // advance past the last found From string.
-       cur = foundFromStr + 5;
- 
-       // look for more From lines.
-       continue;
--    } 
-+    }
- 
-     break;
-   }
- 
-   // go through foundFromLines
-   if (foundFromLines.Length()) {
- 
-     const char *chunkStart = aMessageBufferStart;
-@@ -114,17 +114,17 @@ nsresult nsEmlxHelperUtils::AddEmlxMessa
-   // in a C++ environment where the main event loop has no autorelease pool (e.g on a XPCOM thread)
-   NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- 
-   nsresult rv = NS_ERROR_FAILURE;
- 
-   nsAutoCString path;
-   aMessage->GetNativePath(path);
- 
--  NSData *data = [NSData dataWithContentsOfFile:[NSString stringWithUTF8String:path.get()]]; 
-+  NSData *data = [NSData dataWithContentsOfFile:[NSString stringWithUTF8String:path.get()]];
-   if (!data) {
-     [pool release];
-     return NS_ERROR_FAILURE;
-   }
- 
-   char *startOfMessageData = NULL;
-   uint32_t actualBytesWritten = 0;
- 
-@@ -132,27 +132,27 @@ nsresult nsEmlxHelperUtils::AddEmlxMessa
-   //
-   // -------------------------------
-   // < A number describing how many bytes ahead there is message data >
-   // < Message data >
-   // < XML metadata for this message >
-   // -------------------------------
- 
-   // read the first line of the emlx file, which is a number of how many bytes ahead the actual
--  // message data is. 
-+  // message data is.
-   uint64_t numberOfBytesToRead = strtol((char *)[data bytes], &startOfMessageData, 10);
-   if (numberOfBytesToRead <= 0 || !startOfMessageData) {
-     [pool release];
-     return NS_ERROR_FAILURE;
-   }
- 
-   // skip whitespace
--  while (*startOfMessageData == ' '  || 
--         *startOfMessageData == '\n' || 
--         *startOfMessageData == '\r' || 
-+  while (*startOfMessageData == ' '  ||
-+         *startOfMessageData == '\n' ||
-+         *startOfMessageData == '\r' ||
-          *startOfMessageData == '\t')
-     ++startOfMessageData;
- 
-   NS_NAMED_LITERAL_CSTRING(kBogusFromLine, "From \n");
-   NS_NAMED_LITERAL_CSTRING(kEndOfMessage, "\n\n");
- 
-   // write the bogus "From " line which is a magic separator in the mbox format
-   rv = aOut->Write(kBogusFromLine.get(), kBogusFromLine.Length(), &actualBytesWritten);
-@@ -177,39 +177,39 @@ nsresult nsEmlxHelperUtils::AddEmlxMessa
-     return rv;
-   }
- 
-   rv = aOut->Write(buf.get(), buf.Length(), &dummyRv);
-   if (NS_FAILED(rv)) {
-     [pool release];
-     return rv;
-   }
--  
--  // write out X-Mozilla-Keywords header as well to reserve some space for it 
-+
-+  // write out X-Mozilla-Keywords header as well to reserve some space for it
-   // in the mbox file.
-   rv = aOut->Write(X_MOZILLA_KEYWORDS, X_MOZILLA_KEYWORDS_LEN, &dummyRv);
-   if (NS_FAILED(rv)) {
-     [pool release];
-     return rv;
-   }
--  
-+
-   // write out empty X-Mozilla_status2 header
-   buf.Adopt(PR_smprintf(X_MOZILLA_STATUS2_FORMAT MSG_LINEBREAK, 0));
-   NS_ASSERTION(!buf.IsEmpty(), "printf error with X-Mozilla-Status2 header");
-   if (buf.IsEmpty()) {
-     [pool release];
-     return NS_ERROR_OUT_OF_MEMORY;
-   }
- 
-   rv = aOut->Write(buf.get(), buf.Length(), &dummyRv);
-   if (NS_FAILED(rv)) {
-     [pool release];
-     return rv;
-   }
--  
-+
-   // do any conversion needed for the mbox data to be valid mboxrd.
-   nsCString convertedData;
-   rv = ConvertToMboxRD(startOfMessageData, (startOfMessageData + numberOfBytesToRead), convertedData);
-   if (NS_FAILED(rv)) {
-     [pool release];
-     return rv;
-   }
- 
-diff --git a/mailnews/import/content/fieldMapImport.xul b/mailnews/import/content/fieldMapImport.xul
---- a/mailnews/import/content/fieldMapImport.xul
-+++ b/mailnews/import/content/fieldMapImport.xul
-@@ -1,14 +1,14 @@
--<?xml version="1.0"?> 
-+<?xml version="1.0"?>
- <!-- This Source Code Form is subject to the terms of the Mozilla Public
-    - License, v. 2.0. If a copy of the MPL was not distributed with this
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
--<?xml-stylesheet href="chrome://communicator/skin/" type="text/css"?> 
-+<?xml-stylesheet href="chrome://communicator/skin/" type="text/css"?>
- 
- <!DOCTYPE dialog SYSTEM "chrome://messenger/locale/fieldMapImport.dtd">
- 
- <dialog xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-         buttons="accept,cancel"
-         title="&fieldMapImport.title;"
-         style="&fieldMapImport.size;"
-         ondialogaccept="FieldImportOKButton();"
-@@ -18,19 +18,19 @@
- 
-   <hbox align="center">
-     <label value="&fieldMapImport.recordNumber;"/>
-     <label id="recordNumber"/>
-     <spacer flex="1"/>
-     <button id="previous" oncommand="Browse(-1);"
-             label="&fieldMapImport.previous.label;"
-             accesskey="&fieldMapImport.previous.accesskey;"/>
--    <button id="next" oncommand="Browse(1);" 
-+    <button id="next" oncommand="Browse(1);"
-             label="&fieldMapImport.next.label;"
--            accesskey="&fieldMapImport.next.accesskey;"/>      
-+            accesskey="&fieldMapImport.next.accesskey;"/>
-   </hbox>
- 
-   <hbox align="center">
-     <checkbox id="skipFirstRecord"
-               label="&fieldMapImport.skipFirstRecord.label;"
-               accesskey="&fieldMapImport.skipFirstRecord.accessKey;"/>
-   </hbox>
- 

+ 0 - 171
comm-esr60/comm-esr60/patches/1399756-23-61a1.patch

@@ -1,171 +0,0 @@
-# HG changeset patch
-# User Jorg K <jorgk@jorgk.com>
-# Date 1521301300 -3600
-# Node ID cb4a952a64c3622866c490eb2c6c04f96951d624
-# Parent  4d1bcb81b2f6d604a3458ac02edced8918d5c3cc
-Bug 1399756 - convert line endings in feedAccountWizard.xul. rs=white-space-only
-[skip-blame]
-
-diff --git a/mailnews/extensions/newsblog/content/feedAccountWizard.xul b/mailnews/extensions/newsblog/content/feedAccountWizard.xul
---- a/mailnews/extensions/newsblog/content/feedAccountWizard.xul
-+++ b/mailnews/extensions/newsblog/content/feedAccountWizard.xul
-@@ -1,79 +1,79 @@
--<?xml version="1.0"?>
--<!-- This Source Code Form is subject to the terms of the Mozilla Public
--   - License, v. 2.0. If a copy of the MPL was not distributed with this
--   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
--
--<?xml-stylesheet href="chrome://messenger/skin/accountWizard.css" type="text/css"?>
--
--<!DOCTYPE wizard [
--  <!ENTITY %  accountDTD SYSTEM "chrome://messenger/locale/AccountWizard.dtd">
--  %accountDTD;
--  <!ENTITY % newsblogDTD SYSTEM "chrome://messenger-newsblog/locale/am-newsblog.dtd" >
--  %newsblogDTD;
--  <!ENTITY %       imDTD SYSTEM "chrome://messenger/locale/imAccountWizard.dtd" >
--  %imDTD;
--]>
--
--<wizard id="FeedAccountWizard"
--        title="&feedWindowTitle.label;"
--        onwizardcancel="return FeedAccountWizard.onCancel();"
--        onwizardfinish="return FeedAccountWizard.onFinish();"
--        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
--
--  <script type="application/javascript"
--          src="chrome://messenger-newsblog/content/feedAccountWizard.js"/>
--
--  <!-- Account setup page : User gets a choice to enter a name for the account -->
--  <!-- Defaults : Feed account name -> default string -->
--  <wizardpage id="accountsetuppage"
--              pageid="accountsetuppage"
--              label="&accnameTitle.label;"
--              onpageshow="return FeedAccountWizard.accountSetupPageInit();"
--              onpageadvanced="return FeedAccountWizard.accountSetupPageUnload();">
--    <vbox flex="1">
--      <description>&accnameDesc.label;</description>
--      <separator class="thin"/>
--      <hbox align="center">
--        <label class="label"
--               value="&accnameLabel.label;"
--               accesskey="&accnameLabel.accesskey;"
--               control="prettyName"/>
--        <textbox id="prettyName"
--                 flex="1"
--                 value="&feeds.accountName;"
--                 oninput="FeedAccountWizard.accountSetupPageValidate();"/>
--      </hbox>
--    </vbox>
--  </wizardpage>
--
--  <!-- Done page : Summarizes information collected to create a feed account -->
--  <wizardpage id="done"
--              pageid="done"
--              label="&accountSummaryTitle.label;"
--              onpageshow="return FeedAccountWizard.donePageInit();">
--    <vbox flex="1">
--      <description>&accountSummaryInfo.label;</description>
--      <separator class="thin"/>
--      <grid>
--        <columns>
--          <column/>
--          <column flex="1"/>
--        </columns>
--        <rows>
--          <row id="account.name"
--               align="center">
--            <label id="account.name.label"
--                   class="label"
--                   flex="1"
--                   value="&accnameLabel.label;"/>
--            <label id="account.name.text"
--                   class="label"/>
--          </row>
--        </rows>
--      </grid>
--      <separator/>
--      <spacer flex="1"/>
--    </vbox>
--  </wizardpage>
--
--</wizard>
-+<?xml version="1.0"?>
-+<!-- This Source Code Form is subject to the terms of the Mozilla Public
-+   - License, v. 2.0. If a copy of the MPL was not distributed with this
-+   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-+
-+<?xml-stylesheet href="chrome://messenger/skin/accountWizard.css" type="text/css"?>
-+
-+<!DOCTYPE wizard [
-+  <!ENTITY %  accountDTD SYSTEM "chrome://messenger/locale/AccountWizard.dtd">
-+  %accountDTD;
-+  <!ENTITY % newsblogDTD SYSTEM "chrome://messenger-newsblog/locale/am-newsblog.dtd" >
-+  %newsblogDTD;
-+  <!ENTITY %       imDTD SYSTEM "chrome://messenger/locale/imAccountWizard.dtd" >
-+  %imDTD;
-+]>
-+
-+<wizard id="FeedAccountWizard"
-+        title="&feedWindowTitle.label;"
-+        onwizardcancel="return FeedAccountWizard.onCancel();"
-+        onwizardfinish="return FeedAccountWizard.onFinish();"
-+        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
-+
-+  <script type="application/javascript"
-+          src="chrome://messenger-newsblog/content/feedAccountWizard.js"/>
-+
-+  <!-- Account setup page : User gets a choice to enter a name for the account -->
-+  <!-- Defaults : Feed account name -> default string -->
-+  <wizardpage id="accountsetuppage"
-+              pageid="accountsetuppage"
-+              label="&accnameTitle.label;"
-+              onpageshow="return FeedAccountWizard.accountSetupPageInit();"
-+              onpageadvanced="return FeedAccountWizard.accountSetupPageUnload();">
-+    <vbox flex="1">
-+      <description>&accnameDesc.label;</description>
-+      <separator class="thin"/>
-+      <hbox align="center">
-+        <label class="label"
-+               value="&accnameLabel.label;"
-+               accesskey="&accnameLabel.accesskey;"
-+               control="prettyName"/>
-+        <textbox id="prettyName"
-+                 flex="1"
-+                 value="&feeds.accountName;"
-+                 oninput="FeedAccountWizard.accountSetupPageValidate();"/>
-+      </hbox>
-+    </vbox>
-+  </wizardpage>
-+
-+  <!-- Done page : Summarizes information collected to create a feed account -->
-+  <wizardpage id="done"
-+              pageid="done"
-+              label="&accountSummaryTitle.label;"
-+              onpageshow="return FeedAccountWizard.donePageInit();">
-+    <vbox flex="1">
-+      <description>&accountSummaryInfo.label;</description>
-+      <separator class="thin"/>
-+      <grid>
-+        <columns>
-+          <column/>
-+          <column flex="1"/>
-+        </columns>
-+        <rows>
-+          <row id="account.name"
-+               align="center">
-+            <label id="account.name.label"
-+                   class="label"
-+                   flex="1"
-+                   value="&accnameLabel.label;"/>
-+            <label id="account.name.text"
-+                   class="label"/>
-+          </row>
-+        </rows>
-+      </grid>
-+      <separator/>
-+      <spacer flex="1"/>
-+    </vbox>
-+  </wizardpage>
-+
-+</wizard>
-

+ 0 - 892
comm-esr60/comm-esr60/patches/1399756-28-61a1.patch

@@ -1,892 +0,0 @@
-# HG changeset patch
-# User Jorg K <jorgk@jorgk.com>
-# Date 1521624369 -3600
-# Node ID 2daea21a0ede6ae5016c2faf87d23c60ca8ac21f
-# Parent  5bad3a176144a11d906a4421ce370f7b76ace806
-Bug 1399756 - remove trailing spaces in mail/ (.css, .dtd, .properties). rs=white-space-only
-[skip-blame]
-
-diff --git a/mail/components/im/messages/papersheets/Variants/White.css b/mail/components/im/messages/papersheets/Variants/White.css
---- a/mail/components/im/messages/papersheets/Variants/White.css
-+++ b/mail/components/im/messages/papersheets/Variants/White.css
-@@ -1,17 +1,17 @@
- /* This Source Code Form is subject to the terms of the Mozilla Public
-  * License, v. 2.0. If a copy of the MPL was not distributed with this
-  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
- 
--div.outgoing { 
-+div.outgoing {
-   background: -moz-linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.1) 15px, rgba(255, 255, 255, 1) 15px, rgba(255, 255, 255, 1)) !important;
- }
- 
--div.incoming { 
-+div.incoming {
-   background: -moz-linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.1) 15px, rgba(255, 255, 255, 1) 15px, rgba(255, 255, 255, 1)) !important;
- }
- 
- 
- 
- /* used by javascript */
- .outgoing-color {
-   background-color: rgb(255, 255, 255);
-diff --git a/mail/locales/en-US/chrome/messenger-mapi/mapi.properties b/mail/locales/en-US/chrome/messenger-mapi/mapi.properties
---- a/mail/locales/en-US/chrome/messenger-mapi/mapi.properties
-+++ b/mail/locales/en-US/chrome/messenger-mapi/mapi.properties
-@@ -1,28 +1,28 @@
- # This Source Code Form is subject to the terms of the Mozilla Public
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
- # Mail Integration Dialog
- dialogTitle=%S
--dialogText=Do you want to use %S as the default mail application? 
-+dialogText=Do you want to use %S as the default mail application?
- newsDialogText=Do you want to use %S as the default news application?
- feedDialogText=Do you want to use %S as the default feed aggregator?
- checkboxText=Do not display this dialog again
- setDefaultMail=%S is not currently set as your default mail application.  Would you like to make it your default mail application?
- setDefaultNews=%S is not currently set as your default news application.  Would you like to make it your default news application?
- setDefaultFeed=%S is not currently set as your default feed aggregator.  Would you like to make it your default feed aggregator?
- alreadyDefaultMail=%S is already set as your default mail application.
- alreadyDefaultNews=%S is already set as your default news application.
- alreadyDefaultFeed=%S is already set as your default feed aggregator.
- 
- # MAPI Messages
- loginText=Please enter your password for %S:
--loginTextwithName=Please enter your username and password 
-+loginTextwithName=Please enter your username and password
- loginTitle=%S
- PasswordTitle=%S
- 
- # MAPI Error Messages
- errorMessage=%S could not be set as the default mail application because a registry key could not be updated. Verify with your system administrator that you have write access to your system registry, and then try again.
- errorMessageNews=%S could not be set as the default news application because a registry key could not be updated. Verify with your system administrator that you have write access to your system registry, and then try again.
- errorMessageTitle=%S
- 
-diff --git a/mail/locales/en-US/chrome/messenger-smime/msgReadSMIMEOverlay.properties b/mail/locales/en-US/chrome/messenger-smime/msgReadSMIMEOverlay.properties
---- a/mail/locales/en-US/chrome/messenger-smime/msgReadSMIMEOverlay.properties
-+++ b/mail/locales/en-US/chrome/messenger-smime/msgReadSMIMEOverlay.properties
-@@ -3,9 +3,9 @@
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
- ImapOnDemand=The displayed message has been digitally signed, but not all its attachments have been downloaded yet. Therefore, the signature cannot be validated. Click OK to download the complete message and validate the signature.
- #
- #NOTE To translator, anything between %..% and <..> should not be translated.
- # the former will be replaced by java script, and the latter is HTML formatting.
- #
- CantDecryptTitle=%brand% cannot decrypt this message
--CantDecryptBody=The sender encrypted this message to you using one of your digital certificates, however %brand% was not able to find this certificate and corresponding private key. <br> Possible solutions: <br><ul><li>If you have a smartcard, please insert it now. <li>If you are using a new machine, or if you are using a new %brand% profile, you will need to restore your certificate and private key from a backup. Certificate backups usually end in ".p12".</ul> 
-+CantDecryptBody=The sender encrypted this message to you using one of your digital certificates, however %brand% was not able to find this certificate and corresponding private key. <br> Possible solutions: <br><ul><li>If you have a smartcard, please insert it now. <li>If you are using a new machine, or if you are using a new %brand% profile, you will need to restore your certificate and private key from a backup. Certificate backups usually end in ".p12".</ul>
-diff --git a/mail/locales/en-US/chrome/messenger/FilterListDialog.dtd b/mail/locales/en-US/chrome/messenger/FilterListDialog.dtd
---- a/mail/locales/en-US/chrome/messenger/FilterListDialog.dtd
-+++ b/mail/locales/en-US/chrome/messenger/FilterListDialog.dtd
-@@ -31,13 +31,13 @@
- <!ENTITY runFilters.label "Run Now">
- <!ENTITY runFilters.accesskey "R">
- <!ENTITY stopFilters.label "Stop">
- <!ENTITY stopFilters.accesskey "S">
- <!ENTITY folderPickerPrefix.label "Run selected filter(s) on:">
- <!ENTITY folderPickerPrefix.accesskey "c">
- <!ENTITY helpButton.label "Help">
- <!ENTITY helpButton.accesskey "H">
--<!ENTITY closeCmd.key "W"> 
-+<!ENTITY closeCmd.key "W">
- <!ENTITY searchBox.emptyText "Search filters by name…">
- 
- 
- 
-diff --git a/mail/locales/en-US/chrome/messenger/SearchDialog.dtd b/mail/locales/en-US/chrome/messenger/SearchDialog.dtd
---- a/mail/locales/en-US/chrome/messenger/SearchDialog.dtd
-+++ b/mail/locales/en-US/chrome/messenger/SearchDialog.dtd
-@@ -14,17 +14,17 @@
- <!ENTITY openButton.label            "Open">
- <!ENTITY openButton.accesskey        "n">
- <!ENTITY deleteButton.label          "Delete">
- <!ENTITY deleteButton.accesskey      "D">
- <!ENTITY searchDialogTitle.label     "Search Messages">
- <!ENTITY results.label               "Results">
- <!ENTITY moveButton.label            "Move To">
- <!ENTITY moveButton.accesskey        "T">
--<!ENTITY closeCmd.key                "W"> 
-+<!ENTITY closeCmd.key                "W">
- <!ENTITY openInFolder.label          "Open in Folder">
- <!ENTITY openInFolder.accesskey      "r">
- <!ENTITY saveAsVFButton.label        "Save as Search Folder">
- <!ENTITY saveAsVFButton.accesskey    "v">
- 
- <!-- for ABSearchDialog.xul -->
- <!ENTITY abSearchHeading.label       "Search in:">
- <!ENTITY abSearchHeading.accesskey   "h">
-diff --git a/mail/locales/en-US/chrome/messenger/addressbook/addressBook.properties b/mail/locales/en-US/chrome/messenger/addressbook/addressBook.properties
---- a/mail/locales/en-US/chrome/messenger/addressbook/addressBook.properties
-+++ b/mail/locales/en-US/chrome/messenger/addressbook/addressBook.properties
-@@ -139,23 +139,23 @@ propertyAIM=AIM
- propertyYahoo=Yahoo!
- propertySkype=Skype
- propertyQQ=QQ
- propertyMSN=MSN
- propertyICQ=ICQ
- propertyXMPP=Jabber ID
- propertyIRC=IRC Nick
- 
--## LOCALIZATION NOTE (cityAndStateAndZip): 
-+## LOCALIZATION NOTE (cityAndStateAndZip):
- ## %1$S is city, %2$S is state, %3$S is zip
- cityAndStateAndZip=%1$S, %2$S %3$S
--## LOCALIZATION NOTE (cityAndStateNoZip): 
-+## LOCALIZATION NOTE (cityAndStateNoZip):
- ## %1$S is city, %2$S is state
- cityAndStateNoZip=%1$S, %2$S
--## LOCALIZATION NOTE (cityOrStateAndZip): 
-+## LOCALIZATION NOTE (cityOrStateAndZip):
- ## %1$S is city or state, %2$S is zip
- cityOrStateAndZip=%1$S %2$S
- 
- stateZipSeparator=
- 
- prefixTo=To
- prefixCc=Cc
- prefixBcc=Bcc
-diff --git a/mail/locales/en-US/chrome/messenger/addressbook/ldapAutoCompErrs.properties b/mail/locales/en-US/chrome/messenger/addressbook/ldapAutoCompErrs.properties
---- a/mail/locales/en-US/chrome/messenger/addressbook/ldapAutoCompErrs.properties
-+++ b/mail/locales/en-US/chrome/messenger/addressbook/ldapAutoCompErrs.properties
-@@ -1,15 +1,15 @@
- # This Source Code Form is subject to the terms of the Mozilla Public
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
- # These are error strings for problems that happen while in the
- # various states declared in nsILDAPAutoCompFormatter.idl.  Note that
--# the number that indexes each error state is the same as the number 
-+# the number that indexes each error state is the same as the number
- # corresponding to that state in nsILDAPAutoCompFormatter.idl.
- 
- ## @name ERR_STATE_UNBOUND
- ## @loc none
- 0=LDAP initialization problem
- 
- ## @name ERR_STATE_INITIALIZING
- ## @loc none
-@@ -26,17 +26,17 @@ 3=LDAP server communications problem
- ## @name ERR_STATE_SEARCHING
- ## @loc none
- 4=LDAP server search problem
- 
- 
- # The format of the alert dialog itself
- #
- ## @name ALERT_FORMAT
--## @loc None of %1$S, %2$S and %3$S should be localized. 
-+## @loc None of %1$S, %2$S and %3$S should be localized.
- ##      %1$S is the error code itself, %2$S is an LDAP SDK error message from
- ##      chrome://mozldap/locale/ldap.properties, and %3$S is a hint relating
- ##      to that specific error, found in this file.
- errorAlertFormat=Error code %1$S: %2$S\n\n %3$S
- 
- ## The following errors are for error codes other than LDAP-specific ones.
- ## Someday mozilla will actually have a system for mapping nsresults to
- ## error strings that's actually widely used, unlike nsIErrorService.  But
-diff --git a/mail/locales/en-US/chrome/messenger/addressbook/pref-directory-add.dtd b/mail/locales/en-US/chrome/messenger/addressbook/pref-directory-add.dtd
---- a/mail/locales/en-US/chrome/messenger/addressbook/pref-directory-add.dtd
-+++ b/mail/locales/en-US/chrome/messenger/addressbook/pref-directory-add.dtd
-@@ -33,13 +33,13 @@
- <!ENTITY offlineText.label                 "You can download a local copy of this directory so that it is available for use when you are working offline.">
- <!ENTITY saslMechanism.label               "Login method: ">
- <!ENTITY saslMechanism.accesskey           "m">
- <!ENTITY saslOff.label                     "Simple">
- <!ENTITY saslOff.accesskey                 "l">
- <!ENTITY saslGSSAPI.label                  "Kerberos (GSSAPI)">
- <!ENTITY saslGSSAPI.accesskey              "K">
- 
--<!-- Localization note: this is here because the width of the dialog 
-+<!-- Localization note: this is here because the width of the dialog
-      is determined by the width of the base DN box; and that is likely
-      to vary somewhat with the language.
- -->
- <!ENTITY newDirectoryWidth                 "36em">
-diff --git a/mail/locales/en-US/chrome/messenger/charsetTitles.properties b/mail/locales/en-US/chrome/messenger/charsetTitles.properties
---- a/mail/locales/en-US/chrome/messenger/charsetTitles.properties
-+++ b/mail/locales/en-US/chrome/messenger/charsetTitles.properties
-@@ -2,17 +2,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/.
- 
- ## Rule of this file:
- ## 1. key should always be in lower case ascii so we can do case insensitive
- ##    comparison in the code faster.
- 
- ## Format of this file:
--## charset_name.title = a_title  -  specifies the human readable title for 
-+## charset_name.title = a_title  -  specifies the human readable title for
- ## this charset
- 
- iso-8859-1.title    = Western (ISO-8859-1)
- iso-8859-2.title    = Central European (ISO-8859-2)
- iso-8859-3.title    = South European (ISO-8859-3)
- iso-8859-4.title    = Baltic (ISO-8859-4)
- iso-8859-10.title   = Nordic (ISO-8859-10)
- iso-8859-13.title   = Baltic (ISO-8859-13)
-diff --git a/mail/locales/en-US/chrome/messenger/configEditorOverlay.dtd b/mail/locales/en-US/chrome/messenger/configEditorOverlay.dtd
---- a/mail/locales/en-US/chrome/messenger/configEditorOverlay.dtd
-+++ b/mail/locales/en-US/chrome/messenger/configEditorOverlay.dtd
-@@ -1,5 +1,5 @@
- <!-- This Source Code Form is subject to the terms of the Mozilla Public
-    - License, v. 2.0. If a copy of the MPL was not distributed with this
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
--<!ENTITY closeCmd.key "W">
-+<!ENTITY closeCmd.key "W">
-diff --git a/mail/locales/en-US/chrome/messenger/filter.properties b/mail/locales/en-US/chrome/messenger/filter.properties
---- a/mail/locales/en-US/chrome/messenger/filter.properties
-+++ b/mail/locales/en-US/chrome/messenger/filter.properties
-@@ -44,17 +44,17 @@ filterActionOrderExplanation=When a mess
- filterActionOrderTitle=Real action order
- ## LOCALIZATION NOTE(filterActionItem):
- # %1$S=sequence number of the action, %2$S=action text, %3$S=action argument
- filterActionItem=%1$S. %2$S %3$S\n
- 
- ## LOCALIZATION NOTE(filterCountVisibleOfTotal):
- # %1$S=number of matching filters, %2$S=total number of filters
- filterCountVisibleOfTotal=%1$S of %2$S
--## LOCALIZATION NOTE(filterCountItems): 
-+## LOCALIZATION NOTE(filterCountItems):
- ## Semicolon-separated list of singular and plural forms.
- ## See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
- ## #1 is the count of items in the list.
- filterCountItems=#1 item; #1 items
- # for junk mail logging / mail filter logging
- # LOCALIZATION NOTE(junkLogDetectStr)
- # %1$S=author, %2$S=subject, %3$S=date
- junkLogDetectStr=Detected junk message from %1$S - %2$S at %3$S
-diff --git a/mail/locales/en-US/chrome/messenger/folderpane.dtd b/mail/locales/en-US/chrome/messenger/folderpane.dtd
---- a/mail/locales/en-US/chrome/messenger/folderpane.dtd
-+++ b/mail/locales/en-US/chrome/messenger/folderpane.dtd
-@@ -1,7 +1,7 @@
- <!-- This Source Code Form is subject to the terms of the Mozilla Public
-    - License, v. 2.0. If a copy of the MPL was not distributed with this
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
--<!ENTITY nameColumn.label   "Name"> 
--<!ENTITY unreadColumn.label "Unread"> 
--<!ENTITY totalColumn.label "Total"> 
--<!ENTITY folderSizeColumn.label "Size"> 
-+<!ENTITY nameColumn.label   "Name">
-+<!ENTITY unreadColumn.label "Unread">
-+<!ENTITY totalColumn.label "Total">
-+<!ENTITY folderSizeColumn.label "Size">
-diff --git a/mail/locales/en-US/chrome/messenger/imapMsgs.properties b/mail/locales/en-US/chrome/messenger/imapMsgs.properties
---- a/mail/locales/en-US/chrome/messenger/imapMsgs.properties
-+++ b/mail/locales/en-US/chrome/messenger/imapMsgs.properties
-@@ -138,22 +138,22 @@ imapEnterPasswordPromptTitle=Mail Server
- 
- imapUnknownHostError=Failed to connect to server %S.
- imapOAuth2Error=Authentication failure while connecting to server %S.
- 
- imapConnectionRefusedError=Could not connect to mail server %S; the connection was refused.
- 
- imapNetTimeoutError=Connection to server %S timed out.
- 
--# Status - no messages to download 
-+# Status - no messages to download
- imapNoNewMessages=There are no new messages on the server.
- 
- imapDefaultAccountName=Mail for %S
- 
--imapSpecialChar2=The %S character is reserved on this imap server. Please choose another name. 
-+imapSpecialChar2=The %S character is reserved on this imap server. Please choose another name.
- 
- imapPersonalSharedFolderTypeName=Personal Folder
- 
- imapPublicFolderTypeName=Public Folder
- 
- imapOtherUsersFolderTypeName=Other User's Folder
- 
- imapPersonalFolderTypeDescription=This is a personal mail folder.  It is not shared.
-@@ -234,20 +234,20 @@ imapAuthChangePlainToEncrypt=The IMAP se
- imapAuthChangeEncryptToPlainNoSSL=The IMAP server %S does not seem to support encrypted passwords. If you just set up the account, please try changing to 'Password, transmitted insecurely' as the 'Authentication method' in the 'Account Settings | Server settings'. If it used to work and now suddenly fails, this is a common scenario how someone could steal your password.
- 
- # LOCALIZATION NOTE (imapAuthMechNotSupported): %S is the server hostname
- imapAuthMechNotSupported=The IMAP server %S does not support the selected authentication method. Please change the 'Authentication method' in the 'Account Settings | Server settings'.
- 
- # LOCALIZATION NOTE (imapAuthGssapiFailed): %S is the server hostname
- imapAuthGssapiFailed=The Kerberos/GSSAPI ticket was not accepted by the IMAP server %S. Please check that you are logged in to the Kerberos/GSSAPI realm.
- 
--# LOCALIZATION NOTE (imapServerCommandFailed): 
-+# LOCALIZATION NOTE (imapServerCommandFailed):
- # Place the word %1$S in your translation where the name of the account name should appear.
- # Place the word %2$S in your translation where the server response should appear.
--imapServerCommandFailed=The current command did not succeed. The mail server for account %1$S responded: %2$S 
-+imapServerCommandFailed=The current command did not succeed. The mail server for account %1$S responded: %2$S
- 
- # LOCALIZATION NOTE (imapFolderCommandFailed): Do not translate the word %S below.
- # Place the word %1$S in your translation where the name of the account should appear.
- # Place the word %2$S in your translation where the name of the folder should appear.
- # Place the word %3$S in your translation where the server response should appear.
- imapFolderCommandFailed=The current operation on '%2$S' did not succeed. The mail server for account %1$S responded: %3$S
- 
- # LOCALIZATION NOTE (imapServerAlert):
-diff --git a/mail/locales/en-US/chrome/messenger/importDialog.dtd b/mail/locales/en-US/chrome/messenger/importDialog.dtd
---- a/mail/locales/en-US/chrome/messenger/importDialog.dtd
-+++ b/mail/locales/en-US/chrome/messenger/importDialog.dtd
-@@ -1,17 +1,17 @@
- <!-- This Source Code Form is subject to the terms of the Mozilla Public
-    - License, v. 2.0. If a copy of the MPL was not distributed with this
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
- <!--
--LOCALIZATION NOTE : 'Communicator 4.x' is the used for previous versions of 
--Netscape Communicator, Please translate using the brandname in respective 
-+LOCALIZATION NOTE : 'Communicator 4.x' is the used for previous versions of
-+Netscape Communicator, Please translate using the brandname in respective
- languages for Netscape Communicator 4 releases.
--LOCALIZATION NOTE : Do not translate any of the occurrences of the word 
-+LOCALIZATION NOTE : Do not translate any of the occurrences of the word
- "&brandShortName;" below.
- -->
- 
- <!ENTITY importDialog.windowTitle "Import">
- <!ENTITY importAll.label          "Import Everything">
- <!ENTITY importAll.accesskey      "E">
- <!ENTITY importMail.label         "Mail">
- <!ENTITY importMail.accesskey     "M">
-diff --git a/mail/locales/en-US/chrome/messenger/importMsgs.properties b/mail/locales/en-US/chrome/messenger/importMsgs.properties
---- a/mail/locales/en-US/chrome/messenger/importMsgs.properties
-+++ b/mail/locales/en-US/chrome/messenger/importMsgs.properties
-@@ -1,13 +1,13 @@
- # This Source Code Form is subject to the terms of the Mozilla Public
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
--# The following are used by the import code to display status/error 
-+# The following are used by the import code to display status/error
- # and informational messages
- 
- # Success message when no address books are found to import
- ## @name IMPORT_NO_ADDRBOOKS
- ## @loc None
- 2000=No address books were found to import.
- 
- # Error: Address book import not initialized		
-diff --git a/mail/locales/en-US/chrome/messenger/localMsgs.properties b/mail/locales/en-US/chrome/messenger/localMsgs.properties
---- a/mail/locales/en-US/chrome/messenger/localMsgs.properties
-+++ b/mail/locales/en-US/chrome/messenger/localMsgs.properties
-@@ -61,33 +61,33 @@ pop3UsernameFailure=Sending of username 
- pop3PasswordFailed=Sending of password for user %1$S did not succeed.
- 
- # Status - write error occurred
- pop3MessageWriteError=Unable to write the email to the mailbox. Make sure the file system allows you write privileges, and you have enough disk space to copy the mailbox.
- 
- # Status - retr failure from the server
- pop3RetrFailure=The RETR command did not succeed. Error retrieving a message.
- 
--# Status - password undefined 
-+# Status - password undefined
- pop3PasswordUndefined=Error getting mail password.
- 
--# Status - username undefined 
-+# Status - username undefined
- pop3UsernameUndefined=You have not supplied a username for this server.  Please provide one in the account setup menu and try again.
- 
- # Status - list failure
- pop3ListFailure=The LIST command did not succeed. Error getting the ID and size of a message.
- 
--# Status - delete error 
-+# Status - delete error
- pop3DeleFailure=The DELE command did not succeed. Error marking a message as deleted.
- 
- # Status - stat failed
- pop3StatFail=The STAT command did not succeed. Error getting message number and sizes.
- 
- #LOCALIZATION NOTE (pop3ServerSaid): Do not remove the leading space during translation.
--pop3ServerSaid= Mail server %S responded: 
-+pop3ServerSaid= Mail server %S responded:
- 
- copyingMessagesStatus=Copying %S of %S messages to %S
- 
- movingMessagesStatus=Moving %S of %S messages to %S
- 
- # Status - pop3 server or folder busy
- # LOCALIZATION NOTE (pop3ServerBusy): Do not translate the word "%S" below.
- # Place %S where the account name should appear.
-diff --git a/mail/locales/en-US/chrome/messenger/mailOverlay.dtd b/mail/locales/en-US/chrome/messenger/mailOverlay.dtd
---- a/mail/locales/en-US/chrome/messenger/mailOverlay.dtd
-+++ b/mail/locales/en-US/chrome/messenger/mailOverlay.dtd
-@@ -1,11 +1,11 @@
- <!-- This Source Code Form is subject to the terms of the Mozilla Public
-    - License, v. 2.0. If a copy of the MPL was not distributed with this
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
- <!ENTITY  newMessageCmd2.key              "N">
- <!ENTITY  newMessageCmd.key               "M">
- <!ENTITY  newMessageCmd.label             "Message">
- <!ENTITY  newMessageCmd.accesskey         "m">
-- 
-+
- <!ENTITY  newContactCmd.label             "Address Book Contact…">
- <!ENTITY  newContactCmd.accesskey         "C">
-diff --git a/mail/locales/en-US/chrome/messenger/messengercompose/addressingWidgetOverlay.dtd b/mail/locales/en-US/chrome/messenger/messengercompose/addressingWidgetOverlay.dtd
---- a/mail/locales/en-US/chrome/messenger/messengercompose/addressingWidgetOverlay.dtd
-+++ b/mail/locales/en-US/chrome/messenger/messengercompose/addressingWidgetOverlay.dtd
-@@ -1,13 +1,13 @@
- <!-- This Source Code Form is subject to the terms of the Mozilla Public
-    - License, v. 2.0. If a copy of the MPL was not distributed with this
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
- <!-- address labels -->
- <!--LOCALIZATION NOTE addressingWidgetOverlay.dtd The basic mail/news composition headers as they are seen in UI -->
--<!ENTITY toAddr.label   "To:"> 
--<!ENTITY ccAddr.label   "Cc:"> 
--<!ENTITY bccAddr.label  "Bcc:"> 
--<!ENTITY replyAddr.label   "Reply-To:"> 
--<!ENTITY newsgroupsAddr.label   "Newsgroup:"> 
--<!ENTITY followupAddr.label   "Followup-To:"> 
-+<!ENTITY toAddr.label   "To:">
-+<!ENTITY ccAddr.label   "Cc:">
-+<!ENTITY bccAddr.label  "Bcc:">
-+<!ENTITY replyAddr.label   "Reply-To:">
-+<!ENTITY newsgroupsAddr.label   "Newsgroup:">
-+<!ENTITY followupAddr.label   "Followup-To:">
- 
-diff --git a/mail/locales/en-US/chrome/messenger/messengercompose/askSendFormat.properties b/mail/locales/en-US/chrome/messenger/messengercompose/askSendFormat.properties
---- a/mail/locales/en-US/chrome/messenger/messengercompose/askSendFormat.properties
-+++ b/mail/locales/en-US/chrome/messenger/messengercompose/askSendFormat.properties
-@@ -1,8 +1,8 @@
- # This Source Code Form is subject to the terms of the Mozilla Public
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
--convertibleYes=Your message can be converted to plain text without losing information.
--convertibleAltering=Your message can be converted to plain text without losing important information. However, the plain text version might look different from what you saw in the composer.
--convertibleNo=However, you used formatting (e.g. colors) that will not be converted to plain text.
--recommended=(recommended)
-+convertibleYes=Your message can be converted to plain text without losing information.
-+convertibleAltering=Your message can be converted to plain text without losing important information. However, the plain text version might look different from what you saw in the composer.
-+convertibleNo=However, you used formatting (e.g. colors) that will not be converted to plain text.
-+recommended=(recommended)
-diff --git a/mail/locales/en-US/chrome/messenger/mime.properties b/mail/locales/en-US/chrome/messenger/mime.properties
---- a/mail/locales/en-US/chrome/messenger/mime.properties
-+++ b/mail/locales/en-US/chrome/messenger/mime.properties
-@@ -8,129 +8,129 @@
- 
- # Mail subject
- ## @name MIME_MHTML_SUBJECT
- ## @loc None
- 1000=Subject
- 
- # Resent-Comments
- ## @name MIME_MHTML_RESENT_COMMENTS
--## @loc 
-+## @loc
- 1001=Resent-Comments
- 
- # Resent-Date
- ## @name MIME_MHTML_RESENT_DATE
--## @loc 
-+## @loc
- 1002=Resent-Date
- 
- # Resent-Sender
- ## @name MIME_MHTML_RESENT_SENDER
--## @loc 
-+## @loc
- 1003=Resent-Sender
- 
- # Resent-From
- ## @name MIME_MHTML_RESENT_FROM
--## @loc 
-+## @loc
- 1004=Resent-From
- 
- # Resent-To
- ## @name MIME_MHTML_RESENT_TO
--## @loc 
-+## @loc
- 1005=Resent-To
- 
- # Resent-CC
- ## @name MIME_MHTML_RESENT_CC
--## @loc 
-+## @loc
- 1006=Resent-CC
- 
- # Date
- ## @name MIME_MHTML_DATE
--## @loc 
-+## @loc
- 1007=Date
- 
- # Sender
- ## @name MIME_MHTML_SENDER
--## @loc 
-+## @loc
- 1008=Sender
- 
- # From
- ## @name MIME_MHTML_FROM
--## @loc 
-+## @loc
- 1009=From
- 
- # Reply-To
- ## @name MIME_MHTML_REPLY_TO
--## @loc 
-+## @loc
- 1010=Reply-To
- 
- # Organization
- ## @name MIME_MHTML_ORGANIZATION
--## @loc 
-+## @loc
- 1011=Organization
- 
- # To
- ## @name MIME_MHTML_TO
--## @loc 
-+## @loc
- 1012=To
- 
- # CC
- ## @name MIME_MHTML_CC
--## @loc 
-+## @loc
- 1013=CC
- 
- # Newsgroups
- ## @name MIME_MHTML_NEWSGROUPS
--## @loc 
-+## @loc
- 1014=Newsgroups
- 
- # Followup-To
- ## @name MIME_MHTML_FOLLOWUP_TO
--## @loc 
-+## @loc
- 1015=Followup-To
- 
- # References
- ## @name MIME_MHTML_REFERENCES
--## @loc 
-+## @loc
- 1016=References
- 
- # Message ID
- ## @name MIME_MHTML_MESSAGE_ID
--## @loc 
-+## @loc
- 1021=Message-ID
- 
- # BCC
- ## @name MIME_MHTML_BCC
--## @loc 
-+## @loc
- 1023=BCC
- 
- # Link to doc
- ## @name MIME_MSG_LINK_TO_DOCUMENT
--## @loc 
-+## @loc
- 1026=Link to Document
- 
- # Get Doc info
- ## @name MIME_MSG_DOCUMENT_INFO
--## @loc 
-+## @loc
- 1027=<B>Document Info:</B>
- 
- # Msg Attachment
- ## @name MIME_MSG_ATTACHMENT
--## @loc 
-+## @loc
- 1028=Attachment
- 
- # default attachment name
- ## @name MIME_MSG_DEFAULT_ATTACHMENT_NAME
--## @loc 
-+## @loc
- # LOCALIZATION NOTE (1040): Do not translate "%s" below.
- # Place the %s where you wish the part number of the attachment to appear
- 1040=Part %s
- 
- # default forwarded message prefix
- ## @name MIME_FORWARDED_MESSAGE_HTML_USER_WROTE
--## @loc 
-+## @loc
- 1041=-------- Original Message --------
- 
- # Partial Message Truncated
- ## @name MIME_MSG_PARTIAL_TRUNCATED
- ## @loc
- MIME_MSG_PARTIAL_TRUNCATED=Truncated!
- 
- # Partial Message Truncated Explanation
-diff --git a/mail/locales/en-US/chrome/messenger/newFolderDialog.dtd b/mail/locales/en-US/chrome/messenger/newFolderDialog.dtd
---- a/mail/locales/en-US/chrome/messenger/newFolderDialog.dtd
-+++ b/mail/locales/en-US/chrome/messenger/newFolderDialog.dtd
-@@ -1,12 +1,12 @@
- <!-- This Source Code Form is subject to the terms of the Mozilla Public
-    - License, v. 2.0. If a copy of the MPL was not distributed with this
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
--   
-+
- <!-- Labels -->
- <!ENTITY newFolderDialog.title      "New Folder">
- <!ENTITY name.label                 "Name:">
- <!ENTITY name.accesskey             "n">
- <!ENTITY description.label          "Create as a subfolder of:">
- <!ENTITY description.accesskey      "c">
- <!ENTITY folderRestriction1.label   "This server restricts folders to two special kinds.">
- <!ENTITY folderRestriction2.label   "Allow your new folder to contain:">
-diff --git a/mail/locales/en-US/chrome/messenger/news.properties b/mail/locales/en-US/chrome/messenger/news.properties
---- a/mail/locales/en-US/chrome/messenger/news.properties
-+++ b/mail/locales/en-US/chrome/messenger/news.properties
-@@ -33,17 +33,17 @@ autoUnsubscribeText=The newsgroup %1$S d
- 
- # LOCALIZATION NOTE (autoSubscribeText): %1$S is the newsgroup.
- autoSubscribeText=Would you like to subscribe to %1$S?
- 
- # LOCALIZATION NOTE (Error -304): In the following item, don't translate "NNTP"
- # Error - server error
- ## @name NNTP_ERROR_MESSAGE
- ## @loc None
---304=A News (NNTP) error occurred:  
-+-304=A News (NNTP) error occurred:
- 
- # Error - newsgroup scan error
- ## @name NNTP_NEWSGROUP_SCAN_ERROR
- ## @loc None
- -305=A News error occurred.  The scan of all newsgroups is incomplete.  Try to View All Newsgroups again
- 
- # Error - NNTP authinfo failure
- ## @name NNTP_AUTH_FAILED
-diff --git a/mail/locales/en-US/chrome/messenger/oeImportMsgs.properties b/mail/locales/en-US/chrome/messenger/oeImportMsgs.properties
---- a/mail/locales/en-US/chrome/messenger/oeImportMsgs.properties
-+++ b/mail/locales/en-US/chrome/messenger/oeImportMsgs.properties
-@@ -1,14 +1,14 @@
- # This Source Code Form is subject to the terms of the Mozilla Public
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
- #
--# The following are used by the outlook express import code to display status/error 
-+# The following are used by the outlook express import code to display status/error
- # and informational messages
- #
- 
- # Short name of import module
- ## @name OEIMPORT_NAME
- ## @loc None
- ## LOCALIZATION NOTE (2000): DONT_TRANSLATE
- 2000=Outlook Express
-diff --git a/mail/locales/en-US/chrome/messenger/outlookImportMsgs.properties b/mail/locales/en-US/chrome/messenger/outlookImportMsgs.properties
---- a/mail/locales/en-US/chrome/messenger/outlookImportMsgs.properties
-+++ b/mail/locales/en-US/chrome/messenger/outlookImportMsgs.properties
-@@ -1,14 +1,14 @@
- # This Source Code Form is subject to the terms of the Mozilla Public
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
- #
--# The following are used by the outlook express import code to display status/error 
-+# The following are used by the outlook express import code to display status/error
- # and informational messages
- #
- 
- # Short name of import module
- ## @name OUTLOOKIMPORT_NAME
- ## @loc None
- ## LOCALIZATION NOTE (2000): DONT_TRANSLATE
- 2000=Outlook
-diff --git a/mail/locales/en-US/chrome/messenger/prefs.properties b/mail/locales/en-US/chrome/messenger/prefs.properties
---- a/mail/locales/en-US/chrome/messenger/prefs.properties
-+++ b/mail/locales/en-US/chrome/messenger/prefs.properties
-@@ -40,19 +40,19 @@ confirmDeferAccountTitle=Defer Account?
- directoryAlreadyUsedByOtherAccount=The directory specified in the Local Directory setting is already used by the "%S" account. Please pick a different directory.
- directoryParentUsedByOtherAccount=A parent directory of the directory specified in the Local Directory setting is already used by the "%S" account. Please pick a different directory.
- directoryChildUsedByOtherAccount=A subdirectory of the directory specified in the Local Directory setting is already used by the "%S" account. Please pick a different directory.
- #Provide default example values for sample email address
- exampleEmailUserName=user
- exampleEmailDomain=example.net
- emailFieldText=Email Address:
- #LOCALIZATION NOTE: defaultEmailText: %1$S is user name, %2$S is domain
--defaultEmailText=Enter your email address. This is the address others will use to send email to you (for example, "%1$S@%2$S"). 
-+defaultEmailText=Enter your email address. This is the address others will use to send email to you (for example, "%1$S@%2$S").
- #LOCALIZATION NOTE: customizedEmailText: %1$S is provider, %2$S is email username, %3$S is sample email, %4$S is sample username
--customizedEmailText=Enter your %1$S %2$S (for example, if your %1$S email address is "%3$S", your %2$S is "%4$S"). 
-+customizedEmailText=Enter your %1$S %2$S (for example, if your %1$S email address is "%3$S", your %2$S is "%4$S").
- 
- # account manager stuff
- prefPanel-server=Server Settings
- prefPanel-copies=Copies & Folders
- prefPanel-synchronization=Synchronization & Storage
- prefPanel-diskspace=Disk Space
- prefPanel-addressing=Composition & Addressing
- prefPanel-junk=Junk Settings
-diff --git a/mail/locales/en-US/chrome/messenger/renameFolderDialog.dtd b/mail/locales/en-US/chrome/messenger/renameFolderDialog.dtd
---- a/mail/locales/en-US/chrome/messenger/renameFolderDialog.dtd
-+++ b/mail/locales/en-US/chrome/messenger/renameFolderDialog.dtd
-@@ -1,9 +1,9 @@
- <!-- This Source Code Form is subject to the terms of the Mozilla Public
-    - License, v. 2.0. If a copy of the MPL was not distributed with this
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
--   
-+
- <!ENTITY renameFolderDialog.title          "Rename Folder">
- <!ENTITY rename.label                      "Enter the new name for your folder:">
- <!ENTITY rename.accesskey                  "E">
- <!ENTITY accept.label                      "Rename">
- <!ENTITY accept.accesskey                  "R">
-diff --git a/mail/locales/en-US/chrome/messenger/search-operators.properties b/mail/locales/en-US/chrome/messenger/search-operators.properties
---- a/mail/locales/en-US/chrome/messenger/search-operators.properties
-+++ b/mail/locales/en-US/chrome/messenger/search-operators.properties
-@@ -5,17 +5,17 @@
- 0=contains
- 1=doesn't contain
- 2=is
- 3=isn't
- 4=is empty
- 
- 5=is before
- 6=is after
--    
-+  
- 7=is higher than
- 8=is lower than
- 
- 9=begins with
- 10=ends with
- 
- 11=sounds like
- 12=LdapDwim
-diff --git a/mail/locales/en-US/chrome/messenger/shutdownWindow.properties b/mail/locales/en-US/chrome/messenger/shutdownWindow.properties
---- a/mail/locales/en-US/chrome/messenger/shutdownWindow.properties
-+++ b/mail/locales/en-US/chrome/messenger/shutdownWindow.properties
-@@ -1,10 +1,10 @@
- # This Source Code Form is subject to the terms of the Mozilla Public
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
- 
- # These strings are loaded and represented by the XUL dialog.
- shutdownDialogTitle=Shutdown Progress Window
--taskProgress=Processing %1$S of %2$S Tasks 
-+taskProgress=Processing %1$S of %2$S Tasks
- 
- # These strings are loaded by the individual shutdown tasks.
-diff --git a/mail/locales/en-US/chrome/messenger/smime.properties b/mail/locales/en-US/chrome/messenger/smime.properties
---- a/mail/locales/en-US/chrome/messenger/smime.properties
-+++ b/mail/locales/en-US/chrome/messenger/smime.properties
-@@ -2,12 +2,12 @@
- # 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/.
- 
- #
- # The following are used by the smime content type handler
- #
- 
- ## @name NS_MSG_UNABLE_TO_OPEN_FILE
--## LOCALIZATION NOTE: the text can contain HTML tags. 
-+## LOCALIZATION NOTE: the text can contain HTML tags.
- 1000=This is an <B>ENCRYPTED</B> or <B>SIGNED</B> message.<br> This Mail application does not support encrypted or signed mail.
- 
- 
-diff --git a/mail/locales/en-US/chrome/messenger/subscribe.dtd b/mail/locales/en-US/chrome/messenger/subscribe.dtd
---- a/mail/locales/en-US/chrome/messenger/subscribe.dtd
-+++ b/mail/locales/en-US/chrome/messenger/subscribe.dtd
-@@ -11,12 +11,12 @@
- <!ENTITY newGroupsTab.accesskey       "N">
- <!ENTITY refreshButton.label          "Refresh">
- <!ENTITY refreshButton.accesskey      "R">
- <!ENTITY stopButton.label             "Stop">
- <!ENTITY stopButton.accesskey         "T">
- <!ENTITY server.label                 "Account:">
- <!ENTITY server.accesskey             "A">
- <!ENTITY subscribedHeader.label       "Subscribe">
--<!-- commenting out until bug 38906 is fixed 
-+<!-- commenting out until bug 38906 is fixed
- <!ENTITY messagesHeader.label         "Messages"> -->
- <!ENTITY namefield.label              "Show items that contain:">
- <!ENTITY namefield.accesskey          "O">
-diff --git a/mail/locales/en-US/chrome/messenger/textImportMsgs.properties b/mail/locales/en-US/chrome/messenger/textImportMsgs.properties
---- a/mail/locales/en-US/chrome/messenger/textImportMsgs.properties
-+++ b/mail/locales/en-US/chrome/messenger/textImportMsgs.properties
-@@ -1,14 +1,14 @@
- # This Source Code Form is subject to the terms of the Mozilla Public
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
- #
--# The following are used by the outlook express import code to display status/error 
-+# The following are used by the outlook express import code to display status/error
- # and informational messages
- #
- 
- # Short name of import module
- ## @name TEXTIMPORT_NAME
- ## @loc None
- 2000=Text file (LDIF, .tab, .csv, .txt)
- 
-diff --git a/mail/locales/en-US/chrome/mozldap/ldap.properties b/mail/locales/en-US/chrome/mozldap/ldap.properties
---- a/mail/locales/en-US/chrome/mozldap/ldap.properties
-+++ b/mail/locales/en-US/chrome/mozldap/ldap.properties
-@@ -1,9 +1,9 @@
--# 
-+#
- # This Source Code Form is subject to the terms of the Mozilla Public
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
- # The following two strings are used when prompting the user for authentication
- # information:
- 
- ## @name AUTH_PROMPT_TITLE
-@@ -11,17 +11,17 @@
- authPromptTitle=LDAP Server Password Required
- 
- ## @name AUTH_PROMPT_TEXT
- ## @loc %1$S should not be localized.  It is the hostname of the LDAP server.
- authPromptText=Please enter your password for %1$S.
- 
- # These are string versions of all the errors defined in
- # nsILDAPErrors.idl, as well as the nsresult codes based on those
--# errors.  See that file for the genesis of these codes, as well as 
-+# errors.  See that file for the genesis of these codes, as well as
- # for info about how to get documentation about their precise
- # meanings.
- 
- ## @name OPERATIONS_ERROR
- ## @loc none
- 1=Operations error
- 
- ## @name PROTOCOL_ERROR
-diff --git a/mail/test/resources/mozmill/mozmill/extension/locale/en-US/mozmill.dtd b/mail/test/resources/mozmill/mozmill/extension/locale/en-US/mozmill.dtd
---- a/mail/test/resources/mozmill/mozmill/extension/locale/en-US/mozmill.dtd
-+++ b/mail/test/resources/mozmill/mozmill/extension/locale/en-US/mozmill.dtd
-@@ -1,3 +1,3 @@
--<!ENTITY title.label "MozMill IDE">
--<!ENTITY separate.label "This is a separate window!">
-+<!ENTITY title.label "MozMill IDE">
-+<!ENTITY separate.label "This is a separate window!">
- <!ENTITY close.label "Close">
-\ No newline at end of file
-diff --git a/mail/themes/osx/mail/customizeToolbar.css b/mail/themes/osx/mail/customizeToolbar.css
---- a/mail/themes/osx/mail/customizeToolbar.css
-+++ b/mail/themes/osx/mail/customizeToolbar.css
-@@ -15,17 +15,17 @@
- 
- #main-box {
-   padding: 12px;
- }
- 
- #main-box > separator {
-   -moz-appearance: none;
-   border-bottom: none;
--} 
-+}
- 
- #instructions {
-   font: menu;
-   font-weight: bold;
-   line-height: 16pt;
- }
- 
- hbox button {
-

+ 0 - 167
comm-esr60/comm-esr60/patches/1399756-29-61a1.patch

@@ -1,167 +0,0 @@
-# HG changeset patch
-# User Onno Ekker <o.e.ekker@gmail.com>
-# Date 1522804620 -7200
-# Node ID c75dc9554a4f39635e79e540cd06180d9bb80fa9
-# Parent  be4b8df49597edf9f8a9533d28702d5632610e4c
-Bug 1399756 - Remove some trailing empty lines in .properties and .dtd files in mail/. r=jorgk
-
-diff --git a/mail/locales/en-US/chrome/messenger-mapi/mapi.properties b/mail/locales/en-US/chrome/messenger-mapi/mapi.properties
---- a/mail/locales/en-US/chrome/messenger-mapi/mapi.properties
-+++ b/mail/locales/en-US/chrome/messenger-mapi/mapi.properties
-@@ -28,9 +28,8 @@ errorMessageTitle=%S
- 
- # MAPI Security Messages
- mapiBlindSendWarning=Another application is attempting to send mail using your user profile. Are you sure you want to send mail?
- mapiBlindSendDontShowAgain=Warn me whenever other applications try to send mail from me
- 
- #Default Mail Display String
- # localization note, %S is the vendor name
- defaultMailDisplayTitle=%S
--
-diff --git a/mail/locales/en-US/chrome/messenger/FilterListDialog.dtd b/mail/locales/en-US/chrome/messenger/FilterListDialog.dtd
---- a/mail/locales/en-US/chrome/messenger/FilterListDialog.dtd
-+++ b/mail/locales/en-US/chrome/messenger/FilterListDialog.dtd
-@@ -33,11 +33,8 @@
- <!ENTITY stopFilters.label "Stop">
- <!ENTITY stopFilters.accesskey "S">
- <!ENTITY folderPickerPrefix.label "Run selected filter(s) on:">
- <!ENTITY folderPickerPrefix.accesskey "c">
- <!ENTITY helpButton.label "Help">
- <!ENTITY helpButton.accesskey "H">
- <!ENTITY closeCmd.key "W">
- <!ENTITY searchBox.emptyText "Search filters by name…">
--
--
--
-diff --git a/mail/locales/en-US/chrome/messenger/addressbook/abMailListDialog.dtd b/mail/locales/en-US/chrome/messenger/addressbook/abMailListDialog.dtd
---- a/mail/locales/en-US/chrome/messenger/addressbook/abMailListDialog.dtd
-+++ b/mail/locales/en-US/chrome/messenger/addressbook/abMailListDialog.dtd
-@@ -14,9 +14,8 @@
- <!ENTITY ListNickName.accesskey         "N">
- <!ENTITY ListDescription.label          "Description: ">
- <!ENTITY ListDescription.accesskey      "D">
- <!-- See bug 58485, when we implement drag and drop, add 'or drag addresses' back in -->
- <!ENTITY AddressTitle.label             "Type email addresses to add them to the mailing list:">
- <!ENTITY AddressTitle.accesskey         "m">
- <!ENTITY UpButton.label                 "Move Up">
- <!ENTITY DownButton.label               "Move Down">
--
-diff --git a/mail/locales/en-US/chrome/messenger/appleMailImportMsgs.properties b/mail/locales/en-US/chrome/messenger/appleMailImportMsgs.properties
---- a/mail/locales/en-US/chrome/messenger/appleMailImportMsgs.properties
-+++ b/mail/locales/en-US/chrome/messenger/appleMailImportMsgs.properties
-@@ -13,9 +13,8 @@ ApplemailImportDescription=Import Local 
- ApplemailImportMailboxSuccess=Local messages were successfully imported from %S
- 
- # Error Message
- ApplemailImportMailboxBadparam=An internal error occurred. Importing failed. Try importing again.
- 
- # Error message
- # LOCALIZATION NOTE(ApplemailImportMailboxConverterror): Do not translate the word "%S" below.
- ApplemailImportMailboxConverterror=An error occurred while importing messages from %S. Messages were not imported.
--
-diff --git a/mail/locales/en-US/chrome/messenger/glodaFacetView.properties b/mail/locales/en-US/chrome/messenger/glodaFacetView.properties
---- a/mail/locales/en-US/chrome/messenger/glodaFacetView.properties
-+++ b/mail/locales/en-US/chrome/messenger/glodaFacetView.properties
-@@ -174,9 +174,8 @@ glodaFacetView.results.message.recipient
- # When a message has too many recipients, we only show the first few and then
- # display this label to express how many are not displayed.  So if a message
- # has 5 recipients, we might only show the first 3, and then use this label
- # to indicate that there are 2 that are not displayed.  This string can be
- # pluralized; see https://developer.mozilla.org/en/Localization_and_Plurals
- # for details on how to do that. Note that in English, we use the "serial
- # comma", but other languages may not need a leading separator there.
- glodaFacetView.results.message.andOthers=, and #1 other;, and #1 others
--
-diff --git a/mail/locales/en-US/chrome/messenger/mailViewList.dtd b/mail/locales/en-US/chrome/messenger/mailViewList.dtd
---- a/mail/locales/en-US/chrome/messenger/mailViewList.dtd
-+++ b/mail/locales/en-US/chrome/messenger/mailViewList.dtd
-@@ -1,9 +1,8 @@
- <!-- This Source Code Form is subject to the terms of the Mozilla Public
-    - License, v. 2.0. If a copy of the MPL was not distributed with this
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
- <!--LOCALIZATION NOTE msgViewPickerOverlay.dtd UI for showing various views on a folder -->
- 
- <!ENTITY mailViewListTitle.label "Customize Message Views">
- <!ENTITY viewName.label "View Name">
--
-diff --git a/mail/locales/en-US/chrome/messenger/mailViewSetup.dtd b/mail/locales/en-US/chrome/messenger/mailViewSetup.dtd
---- a/mail/locales/en-US/chrome/messenger/mailViewSetup.dtd
-+++ b/mail/locales/en-US/chrome/messenger/mailViewSetup.dtd
-@@ -3,9 +3,8 @@
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
- <!--LOCALIZATION NOTE msgViewPickerOverlay.dtd UI for showing various views on a folder -->
- 
- <!ENTITY mailViewSetupTitle.label "Message View Setup">
- <!ENTITY mailViewHeading.label "Message view name:">
- <!ENTITY mailViewHeading.accesskey "e">
- <!ENTITY searchTermCaption.label "When this view is selected, display only messages that:">
--
-diff --git a/mail/locales/en-US/chrome/messenger/messengercompose/addressingWidgetOverlay.dtd b/mail/locales/en-US/chrome/messenger/messengercompose/addressingWidgetOverlay.dtd
---- a/mail/locales/en-US/chrome/messenger/messengercompose/addressingWidgetOverlay.dtd
-+++ b/mail/locales/en-US/chrome/messenger/messengercompose/addressingWidgetOverlay.dtd
-@@ -5,9 +5,8 @@
- <!-- address labels -->
- <!--LOCALIZATION NOTE addressingWidgetOverlay.dtd The basic mail/news composition headers as they are seen in UI -->
- <!ENTITY toAddr.label   "To:">
- <!ENTITY ccAddr.label   "Cc:">
- <!ENTITY bccAddr.label  "Bcc:">
- <!ENTITY replyAddr.label   "Reply-To:">
- <!ENTITY newsgroupsAddr.label   "Newsgroup:">
- <!ENTITY followupAddr.label   "Followup-To:">
--
-diff --git a/mail/locales/en-US/chrome/messenger/pgpmime.properties b/mail/locales/en-US/chrome/messenger/pgpmime.properties
---- a/mail/locales/en-US/chrome/messenger/pgpmime.properties
-+++ b/mail/locales/en-US/chrome/messenger/pgpmime.properties
-@@ -4,9 +4,8 @@
- 
- #
- # The following are used by the pgpmime content type handler
- #
- 
- # LOCALIZATION NOTE(pgpMimeNeedsAddon): The text can contain HTML tags.
- # %S is the url to Enigmail on AMO supplied from preferences.
- pgpMimeNeedsAddon=This is an encrypted OpenPGP message.<br>In order to decrypt this mail, you need to install an <a href="%S">OpenPGP add-on</a>.
--
-diff --git a/mail/locales/en-US/chrome/messenger/preferences/security.dtd b/mail/locales/en-US/chrome/messenger/preferences/security.dtd
---- a/mail/locales/en-US/chrome/messenger/preferences/security.dtd
-+++ b/mail/locales/en-US/chrome/messenger/preferences/security.dtd
-@@ -40,9 +40,8 @@
- <!ENTITY changeMasterPassword.accesskey "C">
- <!ENTITY savedPasswords.label           "Saved Passwords…">
- <!ENTITY savedPasswords.accesskey       "S">
- 
- <!-- Anti Virus -->
- <!ENTITY antiVirus.intro      "&brandShortName; can make it easy for antivirus software to analyze incoming mail messages for viruses before they are stored locally.">
- <!ENTITY antiVirus.label      "Allow antivirus clients to quarantine individual incoming messages">
- <!ENTITY antiVirus.accesskey  "A">
--
-diff --git a/mail/locales/en-US/chrome/messenger/smime.properties b/mail/locales/en-US/chrome/messenger/smime.properties
---- a/mail/locales/en-US/chrome/messenger/smime.properties
-+++ b/mail/locales/en-US/chrome/messenger/smime.properties
-@@ -4,10 +4,8 @@
- 
- #
- # The following are used by the smime content type handler
- #
- 
- ## @name NS_MSG_UNABLE_TO_OPEN_FILE
- ## LOCALIZATION NOTE: the text can contain HTML tags.
- 1000=This is an <B>ENCRYPTED</B> or <B>SIGNED</B> message.<br> This Mail application does not support encrypted or signed mail.
--
--
-diff --git a/mail/locales/en-US/chrome/messenger/viewSource.dtd b/mail/locales/en-US/chrome/messenger/viewSource.dtd
---- a/mail/locales/en-US/chrome/messenger/viewSource.dtd
-+++ b/mail/locales/en-US/chrome/messenger/viewSource.dtd
-@@ -79,9 +79,8 @@ you can use these alternative items. Oth
- <!ENTITY forwardCmd.accesskey "F">
- <!ENTITY goBackCmd.commandKey "[">
- <!ENTITY goForwardCmd.commandKey "]">
- 
- <!ENTITY copyLinkCmd.label "Copy Link Location">
- <!ENTITY copyLinkCmd.accesskey "L">
- <!ENTITY copyEmailCmd.label "Copy Email Address">
- <!ENTITY copyEmailCmd.accesskey "E">
--
-

+ 0 - 127
comm-esr60/comm-esr60/patches/1399756-30-61a1.patch

@@ -1,127 +0,0 @@
-# HG changeset patch
-# User Onno Ekker <o.e.ekker@gmail.com>
-# Date 1522803960 -7200
-# Node ID 5e66a21a7abacdcdf32cf4274dbf919b1c1ec914
-# Parent  bc2100db6ce02b55cef11493a659b31143d30901
-Bug 1399756 - Fix some white-space issues in .properties and .dtd files in mail/. r=jorgk
-
-diff --git a/mail/locales/en-US/chrome/messenger/am-server-advanced.dtd b/mail/locales/en-US/chrome/messenger/am-server-advanced.dtd
---- a/mail/locales/en-US/chrome/messenger/am-server-advanced.dtd
-+++ b/mail/locales/en-US/chrome/messenger/am-server-advanced.dtd
-@@ -17,15 +17,15 @@
- <!ENTITY personalNamespace.label "Personal namespace:">
- <!ENTITY personalNamespace.accesskey "P">
- <!ENTITY publicNamespace.label "Public (shared):">
- <!ENTITY publicNamespace.accesskey "u">
- <!ENTITY otherUsersNamespace.label "Other Users:">
- <!ENTITY otherUsersNamespace.accesskey "O">
- <!ENTITY overrideNamespaces.label "Allow server to override these namespaces">
- <!ENTITY overrideNamespaces.accesskey "A">
--<!ENTITY pop3DeferringDesc.label "When downloading mail from this account's server, use the following folder to store new messages:" >
-+<!ENTITY pop3DeferringDesc.label "When downloading mail from this account's server, use the following folder to store new messages:">
- <!ENTITY accountInbox.label "Inbox for this account">
- <!ENTITY accountInbox.accesskey "s">
- <!ENTITY deferToServer.label "Inbox for different account">
- <!ENTITY deferToServer.accesskey "d">
- <!ENTITY deferGetNewMail.label "Include this server when getting new mail">
- <!ENTITY deferGetNewMail.accesskey "I">
-diff --git a/mail/locales/en-US/chrome/messenger/am-server-top.dtd b/mail/locales/en-US/chrome/messenger/am-server-top.dtd
---- a/mail/locales/en-US/chrome/messenger/am-server-top.dtd
-+++ b/mail/locales/en-US/chrome/messenger/am-server-top.dtd
-@@ -56,17 +56,17 @@
- <!ENTITY expungeOnExit.label "Clean up (&quot;Expunge&quot;) Inbox on Exit">
- <!ENTITY expungeOnExit.accesskey "E">
- <!ENTITY emptyTrashOnExit.label "Empty Trash on Exit">
- <!ENTITY emptyTrashOnExit.accesskey "x">
- <!ENTITY loginAtStartup.label "Check for new messages at startup">
- <!ENTITY loginAtStartup.accesskey "C">
- <!-- LOCALIZATION NOTE (maxMessagesStart.label) : translate below 2 lines with grammar dependency
-     maxMessengerStart.label will be followed by maxMessagesEnd.label with the number
--   of messages between them
-+    of messages between them
- -->
- <!ENTITY maxMessagesStart.label "Ask me before downloading more than">
- <!ENTITY maxMessagesStart.accesskey "m">
- <!-- LOCALIZATION NOTE (maxMessagesEnd.label) : see note for maxMessagesStart.label -->
- <!ENTITY maxMessagesEnd.label "messages">
- <!ENTITY alwaysAuthenticate.label "Always request authentication when connecting to this server">
- <!ENTITY alwaysAuthenticate.accesskey "w">
- <!ENTITY newsrcFilePath.label "newsrc file:">
-diff --git a/mail/locales/en-US/chrome/messenger/converterDialog.properties b/mail/locales/en-US/chrome/messenger/converterDialog.properties
---- a/mail/locales/en-US/chrome/messenger/converterDialog.properties
-+++ b/mail/locales/en-US/chrome/messenger/converterDialog.properties
-@@ -33,9 +33,9 @@ converterDialog.warningForDeferredToAcco
- 
- # LOCALIZATION NOTE (converterDialog.messageForDeferredAccount):
- # %1$S will be replaced by a comma separated list of names of accounts which are being converted.
- # %2$S will be replaced by the format into which the accounts will be converted.
- converterDialog.messageForDeferredAccount=Converting the accounts %1$S to %2$S…
- 
- # LOCALIZATION NOTE (converterDialog.percentDone):
- # %1$S will be replaced by the percentage of conversion that is complete.
--converterDialog.percentDone=%1$S%% done
-\ No newline at end of file
-+converterDialog.percentDone=%1$S%% done
-diff --git a/mail/locales/en-US/chrome/messenger/downloadheaders.dtd b/mail/locales/en-US/chrome/messenger/downloadheaders.dtd
---- a/mail/locales/en-US/chrome/messenger/downloadheaders.dtd
-+++ b/mail/locales/en-US/chrome/messenger/downloadheaders.dtd
-@@ -1,19 +1,19 @@
- <!-- This Source Code Form is subject to the terms of the Mozilla Public
-    - License, v. 2.0. If a copy of the MPL was not distributed with this
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
- <!ENTITY all.label          "Download all headers">
- <!ENTITY all.accesskey      "D">
- <!--LOCALIZATION NOTE (download.label):
-     consider the download.label and headers.label as a single sentence
--   with the number of headers to be downloaded inserted between them:
--   EXAMPLE: "Download" <some number> "headers"
--   Either label could be set to null ("") if required grammatically.
-+    with the number of headers to be downloaded inserted between them:
-+    EXAMPLE: "Download" <some number> "headers"
-+    Either label could be set to null ("") if required grammatically.
- -->
- 
- <!ENTITY download.label     "Download">
- <!ENTITY download.accesskey "o">
- <!--LOCALIZATION NOTE (headers.label): see note for download.label -->
- <!ENTITY headers.label      "headers">
- <!ENTITY headers.accesskey  "h">
- <!ENTITY mark.label         "Mark remaining headers as read">
-diff --git a/mail/locales/en-US/chrome/messenger/messenger.dtd b/mail/locales/en-US/chrome/messenger/messenger.dtd
---- a/mail/locales/en-US/chrome/messenger/messenger.dtd
-+++ b/mail/locales/en-US/chrome/messenger/messenger.dtd
-@@ -866,17 +866,17 @@
- 
- <!-- Quick Search Bar -->
- <!-- LOCALIZATION NOTE (quickSearchCmd.key):
-      This is actually the key used for the global message search box; we have
-      not changed
-   -->
- <!ENTITY quickSearchCmd.key "k">
- <!-- LOCALIZATION NOTE (search.label.base1):
--      This is the base of the empty text for the global search box. We replace
-+     This is the base of the empty text for the global search box. We replace
-      #1 with the contents of the appropriate search.keyLabel.* value for the
-      platform.
-      The goal is to convey to the user that typing in the box will allow them
-      to search for messages globally and that there is a hotkey they can press
-      to get to the box faster. If the global indexer is disabled, the search
-      box will be collapsed and the user will never see this message.
-   -->
- <!ENTITY search.label.base1 "Search #1">
-diff --git a/mail/locales/en-US/chrome/messenger/msgSynchronize.dtd b/mail/locales/en-US/chrome/messenger/msgSynchronize.dtd
---- a/mail/locales/en-US/chrome/messenger/msgSynchronize.dtd
-+++ b/mail/locales/en-US/chrome/messenger/msgSynchronize.dtd
-@@ -15,9 +15,9 @@
- <!ENTITY sendMessage.label "Send Unsent messages">
- <!ENTITY sendMessage.accesskey "S">
- <!ENTITY workOffline.label "Work offline once download and/or sync is complete">
- <!ENTITY workOffline.accesskey "W">
- <!ENTITY selectButton.label "Select…">
- <!ENTITY selectButton.accesskey "E">
- <!ENTITY MsgSelectDesc.label "Choose mail folders and newsgroups for offline use.">
- <!ENTITY MsgSelectInd.label "Download">
--<!ENTITY MsgSelectItems.label "Folders and Newsgroups">
-\ No newline at end of file
-+<!ENTITY MsgSelectItems.label "Folders and Newsgroups">

+ 0 - 457
comm-esr60/comm-esr60/patches/1399756-31-61a1.patch

@@ -1,457 +0,0 @@
-# HG changeset patch
-# User Jorg K <jorgk@jorgk.com>
-# Date 1521519660 -3600
-# Node ID 2e84d388d2c6fcd28b0dd03152fcf6945713c502
-# Parent  a2a82eb523f6a34b0fe946714e7fc6c9d726b6aa
-Bug 1399756 - fix typos in chat/ using codespell. r=florian
-[skip-blame]
-
-diff --git a/chat/components/src/imAccounts.js b/chat/components/src/imAccounts.js
---- a/chat/components/src/imAccounts.js
-+++ b/chat/components/src/imAccounts.js
-@@ -369,17 +369,17 @@ imAccount.prototype = {
-   _reconnectTimer: null,
-   _startReconnectTimer: function() {
-     if (Services.io.offline) {
-       Cu.reportError("_startReconnectTimer called while offline");
-       return;
-     }
- 
-     /* If the last successful connection is older than 10 seconds, reset the
--       number of reconnection attemps. */
-+       number of reconnection attempts. */
-     const kTimeBeforeSuccessfulConnection = 10;
-     if (this.timeOfLastConnect &&
-         this.timeOfLastConnect + kTimeBeforeSuccessfulConnection * 1000 < Date.now()) {
-       delete this.reconnectAttempt;
-       delete this.timeOfLastConnect;
-     }
- 
-     let timers =
-diff --git a/chat/components/src/imContacts.js b/chat/components/src/imContacts.js
---- a/chat/components/src/imContacts.js
-+++ b/chat/components/src/imContacts.js
-@@ -87,17 +87,17 @@ function getDBConnection()
-     "CREATE INDEX IF NOT EXISTS account_buddy_buddyindex " +
-       "ON account_buddy (buddy_id)"
-   ].forEach(conn.executeSimpleSQL);
- 
-   return conn;
- }
- 
- // Wrap all the usage of DBConn inside a transaction that will be
--// commited automatically at the end of the event loop spin so that
-+// committed automatically at the end of the event loop spin so that
- // we flush buddy list data to disk only once per event loop spin.
- var gDBConnWithPendingTransaction = null;
- Object.defineProperty(this, "DBConn", {
-   configurable: true,
-   enumerable: true,
- 
-   get() {
-     if (gDBConnWithPendingTransaction)
-@@ -1510,17 +1510,17 @@ ContactsService.prototype = {
-       DBConn.createStatement("DELETE FROM accounts WHERE id = :accountId");
-     try {
-       statement.params.accountId = aId;
-       statement.execute();
-     } finally {
-       statement.finalize();
-     }
- 
--    // removing the account from the accounts table is not enought,
-+    // removing the account from the accounts table is not enough,
-     // we need to remove all the associated account_buddy entries too
-     statement = DBConn.createStatement("DELETE FROM account_buddy " +
-                                        "WHERE account_id = :accountId");
-     try {
-       statement.params.accountId = aId;
-       statement.execute();
-     } finally {
-       statement.finalize();
-diff --git a/chat/components/src/test/test_commands.js b/chat/components/src/test/test_commands.js
---- a/chat/components/src/test/test_commands.js
-+++ b/chat/components/src/test/test_commands.js
-@@ -68,17 +68,17 @@ function run_test() {
- 
-   // We test an array of different possible conversations.
-   // cmdlist lists all the available commands for the given conversation.
-   // results is an array which for each testCmd provides an array containing
-   // data with which the return value of _findCommands can be checked. In
-   // particular, the name of the command and whether the first (i.e. preferred)
-   // entry in the returned array of commands is a prpl command. (If the latter
-   // boolean is not given, false is assumed, if the name is not given, that
--  // corresponds to no commmands being returned.)
-+  // corresponds to no commands being returned.)
-   let testData = [
-     {
-       desc: "No conversation argument.",
-       cmdlist: "away, back, busy, dnd, help, offline, raw, say",
-       results: [[], [], ["back"], [], ["back"], ["help"], ["help"], ["offline"], ["offline"]]
-     },
-     {
-       desc: "Disconnected conversation with fakeAccount.",
-diff --git a/chat/content/convbrowser.xml b/chat/content/convbrowser.xml
---- a/chat/content/convbrowser.xml
-+++ b/chat/content/convbrowser.xml
-@@ -754,17 +754,17 @@
-         </body>
-       </method>
- 
-       <method name="browserScroll">
-         <parameter name="event"/>
-         <body>
-           <![CDATA[
-             if (this._scrollingIntoView) {
--              // We have explicitely requested a scrollIntoView, ignore the event
-+              // We have explicitly requested a scrollIntoView, ignore the event.
-               this._scrollingIntoView = false;
-               this._lastScrollHeight = this.scrollHeight;
-               this._lastScrollWidth = this.scrollWidth;
-               return;
-             }
- 
-             if (!("_lastScrollHeight" in this) ||
-                 this._lastScrollHeight != this.scrollHeight ||
-diff --git a/chat/locales/en-US/twitter.properties b/chat/locales/en-US/twitter.properties
---- a/chat/locales/en-US/twitter.properties
-+++ b/chat/locales/en-US/twitter.properties
-@@ -12,18 +12,18 @@ error.tooLong=Status is over 140 charact
- # LOCALIZATION NOTE (error.general, error.retweet, error.delete):
- #   %1$S will be either the error string returned by the twitter server,
- #   in English, inside parenthesis, or the empty string if we have no specific
- #   message for the error.
- #   %2$S is the message that caused the error.
- error.general=An error %1$S occurred while sending: %2$S
- error.retweet=An error %1$S occurred while retweeting: %2$S
- error.delete=An error %1$S occurred while deleting: %2$S
--error.like=An error %1$S occured while liking: %2$S
--error.unlike=An error %1$S occured while unliking: %2$S
-+error.like=An error %1$S occurred while liking: %2$S
-+error.unlike=An error %1$S occurred while unliking: %2$S
- # LOCALIZATION NOTE (error.descriptionTooLong)
- #   %S is the truncated string that was sent to the server.
- error.descriptionTooLong=Description is over the maximum length (160 characters), it was automatically truncated to: %S.
- 
- # LOCALIZATION NOTE (timeline):
- #   This is the title of the conversation tab, %S will be replaced by
- #   @<username>.
- timeline=%S timeline
-diff --git a/chat/modules/imContentSink.jsm b/chat/modules/imContentSink.jsm
---- a/chat/modules/imContentSink.jsm
-+++ b/chat/modules/imContentSink.jsm
-@@ -6,17 +6,17 @@ ChromeUtils.import("resource:///modules/
- 
- this.EXPORTED_SYMBOLS = [
-   "cleanupImMarkup", // used to clean up incoming IMs.
-                      // This will use the global ruleset of acceptable stuff
-                      // except if another (custom one) is provided
-   "createDerivedRuleset", // used to create a ruleset that inherits from the
-                           // default one
-                           // useful if you want to allow or forbid
--                          // an additionnal thing in a specific
-+                          // an additional thing in a specific
-                           // conversation but take into account all
-                           // the other global settings.
-   "addGlobalAllowedTag",
-   "removeGlobalAllowedTag",
-   "addGlobalAllowedAttribute",
-   "removeGlobalAllowedAttribute",
-   "addGlobalAllowedStyleRule",
-   "removeGlobalAllowedStyleRule"
-@@ -271,17 +271,17 @@ function cleanupNode(aNode, aRules, aTex
-       }
- 
-       // we are going to keep this child node, clean up its children
-       cleanupNode(node, aRules, aTextModifiers);
- 
-       // cleanup attributes
-       let attrs = node.attributes;
-       let acceptFunction = function(aAttrRules, aAttr) {
--        // an attribute is always accepted if its rule is true, or conditionnaly
-+        // an attribute is always accepted if its rule is true, or conditionally
-         // accepted if its rule is a function that evaluates to true
-         // if its rule does not exist, it is refused
-           let localName = aAttr.localName;
-           let rule = localName in aAttrRules && aAttrRules[localName];
-           return (rule === true ||
-                   (typeof rule == "function" && rule(aAttr.value)));
-       };
-       for (let j = 0; j < attrs.length; ++j) {
-diff --git a/chat/modules/imSmileys.jsm b/chat/modules/imSmileys.jsm
---- a/chat/modules/imSmileys.jsm
-+++ b/chat/modules/imSmileys.jsm
-@@ -11,17 +11,17 @@ XPCOMUtils.defineLazyGetter(this, "gText
- 
- ChromeUtils.defineModuleGetter(this, "NetUtil",
-                                "resource://gre/modules/NetUtil.jsm");
- 
- this.EXPORTED_SYMBOLS = [
-   "smileImMarkup", // used to add smile:// img tags into IM markup.
-   "smileTextNode", // used to add smile:// img tags to the content of a textnode
-   "smileString", // used to add smile:// img tags into a string without parsing it as HTML. Be sure the string doesn't contain HTML tags.
--  "getSmileRealURI", // used to retrive the chrome URI for a smile:// URI
-+  "getSmileRealURI", // used to retrieve the chrome URI for a smile:// URI
-   "getSmileyList" // used to display a list of smileys in the UI
- ];
- 
- var kEmoticonsThemePref = "messenger.options.emoticonsTheme";
- var kThemeFile = "theme.js";
- 
- Object.defineProperty(this, "gTheme", {
-   configurable: true,
-diff --git a/chat/protocols/irc/ircCommands.jsm b/chat/protocols/irc/ircCommands.jsm
---- a/chat/protocols/irc/ircCommands.jsm
-+++ b/chat/protocols/irc/ircCommands.jsm
-@@ -140,17 +140,17 @@ function simpleCommand(aConv, aCommand, 
-   if (!aParams || !aParams.length)
-     getAccount(aConv).sendMessage(aCommand);
-   else
-     getAccount(aConv).sendMessage(aCommand, aParams);
-   return true;
- }
- 
- // Sends a CTCP message to aTarget using the CTCP command aCommand and aMsg as
--// a CTCP paramter.
-+// a CTCP parameter.
- function ctcpCommand(aConv, aTarget, aCommand, aParams) {
-   return getAccount(aConv).sendCTCPMessage(aTarget, false, aCommand, aParams);
- }
- 
- // Replace the command name in the help string so translators do not attempt to
- // translate it.
- var commands = [
-   {
-diff --git a/chat/protocols/irc/ircDCC.jsm b/chat/protocols/irc/ircDCC.jsm
---- a/chat/protocols/irc/ircDCC.jsm
-+++ b/chat/protocols/irc/ircDCC.jsm
-@@ -24,17 +24,17 @@ function DCCMessage(aMessage, aAccount) 
-   if (params.length < 4) {
-     aAccount.ERROR("Not enough DCC parameters:\n" + JSON.stringify(aMessage));
-     return null;
-   }
- 
-   try {
-     // Address, port and size should be treated as unsigned long, unsigned short
-     // and unsigned long, respectively. The protocol is designed to handle
--    // further arguements, if necessary.
-+    // further arguments, if necessary.
-     message.ctcp.dcc = {
-       type: params[0],
-       argument: params[1],
-       address: Number(params[2]),
-       port: Number(params[3]),
-       size: params.length == 5 ? Number(params[4]) : null,
-       furtherArguments: params.length > 5 ? params.slice(5) : []
-     };
-diff --git a/chat/protocols/irc/ircISUPPORT.jsm b/chat/protocols/irc/ircISUPPORT.jsm
---- a/chat/protocols/irc/ircISUPPORT.jsm
-+++ b/chat/protocols/irc/ircISUPPORT.jsm
-@@ -22,17 +22,17 @@ ChromeUtils.import("resource:///modules/
-  *   <parameter>=<value> or -<value>
-  * The isupport field is added to the message and it has the following fields:
-  *   parameter  What is being configured by this ISUPPORT token.
-  *   useDefault Whether this parameter should be reset to the default value, as
-  *              defined by the RFC.
-  *   value      The new value for the parameter.
-  */
- function isupportMessage(aMessage) {
--  // Seperate the ISUPPORT parameters.
-+  // Separate the ISUPPORT parameters.
-   let tokens = aMessage.params.slice(1, -1);
- 
-   let message = aMessage;
-   message.isupport = {};
- 
-   return tokens.map(function(aToken) {
-     let newMessage = JSON.parse(JSON.stringify(message));
-     newMessage.isupport.useDefault = aToken[0] == "-";
-diff --git a/chat/protocols/irc/ircNonStandard.jsm b/chat/protocols/irc/ircNonStandard.jsm
---- a/chat/protocols/irc/ircNonStandard.jsm
-+++ b/chat/protocols/irc/ircNonStandard.jsm
-@@ -63,17 +63,17 @@ var ircNonStandard = {
-                                _("connection.error.passwordRequired"));
-         }
- 
-         // All done for ZNC.
-         return true;
-       }
- 
-       // Some servers, e.g. irc.umich.edu, use NOTICE during connection
--      // negotation to give directions to users, these MUST be shown to the
-+      // negotiation to give directions to users, these MUST be shown to the
-       // user. If the message starts with ***, we assume it is probably an AUTH
-       // message, which falls through to normal NOTICE processing.
-       // Note that if the user's nick is auth this COULD be a notice directed at
-       // them. For reference: moznet sends Auth (previously sent AUTH), freenode
-       // sends *.
-       let isAuth = target == "auth" && this._nickname.toLowerCase() != "auth";
-       if (!aMessage.params[1].startsWith("***") && !isAuth) {
-         this.getConversation(aMessage.origin)
-diff --git a/chat/protocols/irc/ircUtils.jsm b/chat/protocols/irc/ircUtils.jsm
---- a/chat/protocols/irc/ircUtils.jsm
-+++ b/chat/protocols/irc/ircUtils.jsm
-@@ -227,17 +227,17 @@ function conversationErrorMessage(aAccou
-   let conv = aAccount.getConversation(aMessage.params[1]);
-   conv.writeMessage(aMessage.origin, _(aError, aMessage.params[1],
-                                        aMessage.params[2] || undefined),
-                     {error: true, system: true});
-   delete conv._pendingMessage;
- 
-   // Channels have a couple extra things that can be done to them.
-   if (aAccount.isMUCName(aMessage.params[1])) {
--    // If a value for joining is explictly given, mark it.
-+    // If a value for joining is explicitly given, mark it.
-     if (aJoinFailed)
-       conv.joining = false;
-     // If the conversation cannot be rejoined automatically, delete
-     // chatRoomFields.
-     if (!aRejoinable)
-       delete conv.chatRoomFields;
-   }
- 
-diff --git a/chat/protocols/skype/skype.js b/chat/protocols/skype/skype.js
---- a/chat/protocols/skype/skype.js
-+++ b/chat/protocols/skype/skype.js
-@@ -414,17 +414,17 @@ SkypeAccount.prototype = {
-     if (!refreshToken) {
-       this.ERROR("skypetoken value not found.")
-       this._disconnectWithAuthFailure();
-       return;
-     }
- 
-     // All done!
-     this._skypeToken = refreshToken;
--    this.LOG("Recevied Skype token: " + this._skypeToken);
-+    this.LOG("Received Skype token: " + this._skypeToken);
- 
-     if (this._registrationToken) {
-       // Subscribe to receive particular events.
-       this._subscribe();
-       return;
-     }
- 
-     this.reportConnecting(_("connecting.registrationToken"));
-diff --git a/chat/protocols/twitter/twitter.js b/chat/protocols/twitter/twitter.js
---- a/chat/protocols/twitter/twitter.js
-+++ b/chat/protocols/twitter/twitter.js
-@@ -147,17 +147,17 @@ var GenericTwitterConversation = {
-     let flags = {system: true};
-     if (aIsError)
-       flags.error = true;
-     if (aDate)
-       flags.time = aDate;
-     this.writeMessage("twitter.com", aMessage, flags);
-   },
-   onSentCallback: function(aMsg, aData) {
--    // The conversation may have been unitialized in the time it takes for
-+    // The conversation may have been uninitialized in the time it takes for
-     // the async callback to fire.  Use `_observers` as a proxy for uninit'd.
-     if (!this._observers)
-       return;
- 
-     let tweet = JSON.parse(aData);
-     // The OTR extension requires that the protocol not modify the message
-     // (see the notes at `imIOutgoingMessage`).  That's the contract we made.
-     // Unfortunately, Twitter trims tweets and substitutes links.
-diff --git a/chat/protocols/xmpp/xmpp-authmechs.jsm b/chat/protocols/xmpp/xmpp-authmechs.jsm
---- a/chat/protocols/xmpp/xmpp-authmechs.jsm
-+++ b/chat/protocols/xmpp/xmpp-authmechs.jsm
-@@ -230,17 +230,17 @@ const RFC3454 = {
- [\u{1d552}-\u{1d6a3}]|[\u{1d6a8}-\u{1d7c9}]|[\u{20000}-\u{2a6d6}]|\
- [\u{2f800}-\u{2fa1d}]|[\u{f0000}-\u{ffffd}]|[\u{100000}-\u{10fffd}]"
- };
- 
- // Generates a random nonce and returns a base64 encoded string.
- // aLength in bytes.
- function createNonce(aLength) {
-   // RFC 5802 (5.1): Printable ASCII except ",".
--  // We guarantee a vaild nonce value using base64 encoding.
-+  // We guarantee a valid nonce value using base64 encoding.
-   return btoa(CryptoUtils.generateRandomBytes(aLength));
- }
- 
- // Parses the string of server's response (aChallenge) into an object.
- function parseChallenge(aChallenge) {
-   let attributes = {};
-   aChallenge.split(",").forEach(value => {
-     let match =  /^(\w)=([\s\S]*)$/.exec(value);
-diff --git a/chat/protocols/xmpp/xmpp.jsm b/chat/protocols/xmpp/xmpp.jsm
---- a/chat/protocols/xmpp/xmpp.jsm
-+++ b/chat/protocols/xmpp/xmpp.jsm
-@@ -417,17 +417,17 @@ var XMPPMUCConversationPrototype = {
-       }
-     }
-     else {
-       this._participants.get(nick).onPresenceStanza(aStanza);
-       this.notifyObservers(this._participants.get(nick), "chat-buddy-update");
-     }
-   },
- 
--  /* Called by the account when a messsage is received for this muc */
-+  /* Called by the account when a message is received for this muc */
-   incomingMessage: function(aMsg, aStanza, aDate) {
-     let from = this._account._parseJID(aStanza.attributes["from"]).resource;
-     let id = aStanza.attributes["id"];
-     let flags = {};
-     if (!from) {
-       flags.system = true;
-       from = this.name;
-     }
-@@ -752,17 +752,17 @@ var XMPPConversationPrototype = {
-   /* Perform entity escaping before displaying the message. We assume incoming
-      messages have already been escaped, and will otherwise be filtered. */
-   prepareForDisplaying: function(aMsg) {
-     if (aMsg.outgoing && !aMsg.system)
-       aMsg.displayMessage = TXTToHTML(aMsg.displayMessage);
-     GenericConversationPrototype.prepareForDisplaying.apply(this, arguments);
-   },
- 
--  /* Called by the account when a messsage is received from the buddy */
-+  /* Called by the account when a message is received from the buddy */
-   incomingMessage: function(aMsg, aStanza, aDate) {
-     let from = aStanza.attributes["from"];
-     this._targetResource = this._account._parseJID(from).resource;
-     let flags = {};
-     let error = this._account.parseError(aStanza);
-     if (error) {
-       let norm = this._account.normalize(from);
-       let muc = this._account._mucs.get(norm);
-@@ -2290,17 +2290,17 @@ var XMPPAccountPrototype = {
-     return this._setJID(result.domain, result.node, result.resource);
-   },
- 
-   // Constructs jid as an object from domain, node and resource parts.
-   // The object has properties (node, domain, resource and jid).
-   // aDomain is required, but aNode and aResource are optional.
-   _setJID: function(aDomain, aNode = null, aResource = null) {
-     if (!aDomain)
--      throw "aDomain must have a vaule";
-+      throw "aDomain must have a value";
- 
-     let result = {
-       node: aNode,
-       domain: aDomain.toLowerCase(),
-       resource: aResource
-     };
-     let jid = result.domain;
-     if (result.node) {
-@@ -2659,17 +2659,17 @@ var XMPPAccountPrototype = {
-   _sendVCard: function() {
-     if (!this._connection)
-       return;
- 
-     // We have to download the user's existing vCard before updating it.
-     // This lets us preserve the fields that we don't change or don't know.
-     // Some servers may reject a new vCard if we don't do this first.
-     if (!this.hasOwnProperty("_userVCard")) {
--      // The download of the vCard is asyncronous and will call _sendVCard back
-+      // The download of the vCard is asynchronous and will call _sendVCard back
-       // when the user's vCard has been received.
-       this._downloadUserVCard();
-       return;
-     }
- 
-     // Read the local user icon asynchronously from the disk.
-     // _cacheUserIcon will call _sendVCard back once the icon is ready.
-     if (!this.hasOwnProperty("_cachedUserIcon")) {

+ 0 - 63
comm-esr60/comm-esr60/patches/1399756-33-61a1.patch

@@ -1,63 +0,0 @@
-# HG changeset patch
-# User Onno Ekker <o.e.ekker@gmail.com>
-# Date 1522892580 -7200
-# Node ID 9852dfc1567514e130c4167d93c004fc21019809
-# Parent  4f7a3fd027b128b5d64dceb3d658b3f14650549e
-Bug 1399756 - remove trailing empty lines in editor/. r=jorgk
-
-diff --git a/editor/ui/locales/en-US/chrome/composer/editorSmileyOverlay.dtd b/editor/ui/locales/en-US/chrome/composer/editorSmileyOverlay.dtd
---- a/editor/ui/locales/en-US/chrome/composer/editorSmileyOverlay.dtd
-+++ b/editor/ui/locales/en-US/chrome/composer/editorSmileyOverlay.dtd
-@@ -50,9 +50,8 @@
- <!ENTITY smiley14Cmd.tooltip "Insert an innocent face">
- <!ENTITY smiley15Cmd.label "Cry">
- <!ENTITY smiley15Cmd.accesskey "r">
- <!ENTITY smiley15Cmd.tooltip "Insert a crying face">
- <!ENTITY smiley16Cmd.label "Lips-are-Sealed">
- <!ENTITY smiley16Cmd.accesskey "a">
- <!ENTITY smiley16Cmd.tooltip "Insert a lips-are-sealed face">
- <!ENTITY SmileButton.tooltip "Insert a smiley face">
--
-diff --git a/editor/ui/locales/en-US/chrome/composer/pref-editing.dtd b/editor/ui/locales/en-US/chrome/composer/pref-editing.dtd
---- a/editor/ui/locales/en-US/chrome/composer/pref-editing.dtd
-+++ b/editor/ui/locales/en-US/chrome/composer/pref-editing.dtd
-@@ -24,9 +24,8 @@
- <!ENTITY background.label           "Background:">
- <!ENTITY background.accesskey       "B">
- <!ENTITY colon.character            ":">
- 
- <!ENTITY backgroundImage.label      "Background image:">
- <!ENTITY backgroundImage.accesskey  "m">
- <!ENTITY chooseFile.label           "Choose File…">
- <!ENTITY chooseFile.accesskey       "o">
--
-diff --git a/editor/ui/locales/en-US/chrome/dialogs/EdNamedAnchorProperties.dtd b/editor/ui/locales/en-US/chrome/dialogs/EdNamedAnchorProperties.dtd
---- a/editor/ui/locales/en-US/chrome/dialogs/EdNamedAnchorProperties.dtd
-+++ b/editor/ui/locales/en-US/chrome/dialogs/EdNamedAnchorProperties.dtd
-@@ -1,10 +1,8 @@
- <!-- This Source Code Form is subject to the terms of the Mozilla Public
-    - License, v. 2.0. If a copy of the MPL was not distributed with this
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
- <!ENTITY windowTitle.label "Named Anchor Properties">
- <!ENTITY anchorNameEditField.label "Anchor Name:">
- <!ENTITY anchorNameEditField.accessKey "N">
- <!ENTITY nameInput.tooltip "Enter a unique name for this named anchor (target)">
--
--
-diff --git a/editor/ui/locales/en-US/chrome/dialogs/EditorSaveAsCharset.dtd b/editor/ui/locales/en-US/chrome/dialogs/EditorSaveAsCharset.dtd
---- a/editor/ui/locales/en-US/chrome/dialogs/EditorSaveAsCharset.dtd
-+++ b/editor/ui/locales/en-US/chrome/dialogs/EditorSaveAsCharset.dtd
-@@ -7,11 +7,8 @@
- <!-- This button is for the progressive disclosure of additional editing functionality -->
- 
- <!-- These strings are for use specifically in the editor's link dialog. -->
- <!ENTITY windowTitle2.label "Save And Change Text Encoding">
- <!ENTITY documentTitleTitle.label "Page Title">
- <!ENTITY documentCharsetTitle2.label "Text Encoding">
- <!ENTITY documentCharsetDesc2.label "Select the text encoding you want to save a document in:">
- <!ENTITY documentExportToText.label "Export to Text">
--
--
--
-

File diff suppressed because it is too large
+ 0 - 36365
comm-esr60/comm-esr60/patches/1410739-instantbird-62a1.patch


+ 0 - 242
comm-esr60/comm-esr60/patches/1412574-63.patch

@@ -1,242 +0,0 @@
-# HG changeset patch
-# User aceman <acelists@atlas.sk>
-# Date 1509233760 -7200
-#      So Okt 29 01:36:00 2017 +0200
-# Node ID 3bcadb80b56798587d199b6cbd4d80807c0ad619
-# Parent  8b7831eb293e2b86556bf5a670cd3952a8bdf0d9
-Bug 1412574 - remove unused charset argument of encodeMimePartIIStr_UTF8. r=jorgk
-
-diff --git a/calendar/lightning/modules/ltnInvitationUtils.jsm b/calendar/lightning/modules/ltnInvitationUtils.jsm
---- a/calendar/lightning/modules/ltnInvitationUtils.jsm
-+++ b/calendar/lightning/modules/ltnInvitationUtils.jsm
-@@ -509,17 +509,16 @@ ltn.invitation = {
-      *                             converted - default value is false
-      * @return {String}            the encoded string
-      */
-     encodeMimeHeader: function(aHeader, aIsEmail = false) {
-         let fieldNameLen = aHeader.indexOf(": ") + 2;
-         return MailServices.mimeConverter
-                            .encodeMimePartIIStr_UTF8(aHeader,
-                                                      aIsEmail,
--                                                     "UTF-8",
-                                                      fieldNameLen,
-                                                      Components.interfaces
-                                                                .nsIMimeConverter
-                                                                .MIME_ENCODED_WORD_SIZE);
-     },
- 
-     /**
-      * Parses a counterproposal to extract differences to the existing event
-diff --git a/mailnews/base/util/nsMsgI18N.cpp b/mailnews/base/util/nsMsgI18N.cpp
---- a/mailnews/base/util/nsMsgI18N.cpp
-+++ b/mailnews/base/util/nsMsgI18N.cpp
-@@ -173,20 +173,21 @@ char * nsMsgI18NEncodeMimePartIIStr(cons
-       return PL_strdup(convertedStr.get());
-     else
-       return PL_strdup(header);
-   }
- 
-   nsAutoCString encodedString;
-   nsresult res;
-   nsCOMPtr<nsIMimeConverter> converter = do_GetService(NS_MIME_CONVERTER_CONTRACTID, &res);
--  if (NS_SUCCEEDED(res) && nullptr != converter)
-+  if (NS_SUCCEEDED(res) && nullptr != converter) {
-     res = converter->EncodeMimePartIIStr_UTF8(nsDependentCString(header),
--      structured, "UTF-8", fieldnamelen,
-+      structured, fieldnamelen,
-       nsIMimeConverter::MIME_ENCODED_WORD_SIZE, encodedString);
-+  }
- 
-   return NS_SUCCEEDED(res) ? PL_strdup(encodedString.get()) : nullptr;
- }
- 
- // Return True if a charset is stateful (e.g. JIS).
- bool nsMsgI18Nstateful_charset(const char *charset)
- {
-   //TODO: use charset manager's service
-diff --git a/mailnews/base/util/nsMsgUtils.cpp b/mailnews/base/util/nsMsgUtils.cpp
---- a/mailnews/base/util/nsMsgUtils.cpp
-+++ b/mailnews/base/util/nsMsgUtils.cpp
-@@ -665,17 +665,17 @@ AGAIN:
-   if (decodedString.IsEmpty()) {
-     // We didn't decode anything, so just return a new string.
-     modifiedSubject.Assign(s);
-     return true;
-   }
- 
-   // We decoded the string, so we need to encode it again. We always encode in UTF-8.
-   mimeConverter->EncodeMimePartIIStr_UTF8(nsDependentCString(s),
--    false, "UTF-8", sizeof("Subject:"),
-+    false, sizeof("Subject:"),
-     nsIMimeConverter::MIME_ENCODED_WORD_SIZE, modifiedSubject);
-   return true;
- }
- 
- /*  Very similar to strdup except it free's too
-  */
- char * NS_MsgSACopy (char **destination, const char *source)
- {
-diff --git a/mailnews/compose/test/unit/test_autoReply.js b/mailnews/compose/test/unit/test_autoReply.js
---- a/mailnews/compose/test/unit/test_autoReply.js
-+++ b/mailnews/compose/test/unit/test_autoReply.js
-@@ -30,19 +30,16 @@ var gServer;
- function run_test() {
-   localAccountUtils.loadLocalMailAccount();
-   gTemplateFolder = localAccountUtils.rootFolder
-                                      .createLocalSubfolder("Templates");
- 
-   gServer = setupServerDaemon();
-   gServer.start();
- 
--  // encodeMimePartIIStr_UTF8 complains about latin1 encoding...
--  Services.prefs.setBoolPref("devtools.errorconsole.deprecation_warnings", false);
--
-   run_next_test();
- }
- 
- add_task(function* copy_gIncomingMailFile() {
-   let promiseCopyListener = new PromiseTestUtils.PromiseCopyListener();
-   // Copy gIncomingMailFile into the Inbox.
-   MailServices.copy.CopyFileMessage(gIncomingMailFile,
-     localAccountUtils.inboxFolder, null, false, 0, "",
-diff --git a/mailnews/extensions/newsblog/content/FeedItem.js b/mailnews/extensions/newsblog/content/FeedItem.js
---- a/mailnews/extensions/newsblog/content/FeedItem.js
-+++ b/mailnews/extensions/newsblog/content/FeedItem.js
-@@ -222,18 +222,17 @@ FeedItem.prototype =
-   mimeEncodeSubject: function(aSubject)
-   {
-     // This routine sometimes throws exceptions for mis-encoded data so
-     // wrap it with a try catch for now.
-     let newSubject;
-     try
-     {
-       newSubject = mailServices.mimeConverter.encodeMimePartIIStr_UTF8(aSubject,
--                     false,
--                     "UTF-8", 9, 72);
-+                     false, 9, 72);
-     }
-     catch (ex)
-     {
-       newSubject = aSubject;
-     }
- 
-     return newSubject;
-   },
-diff --git a/mailnews/extensions/smime/src/nsMsgComposeSecure.cpp b/mailnews/extensions/smime/src/nsMsgComposeSecure.cpp
---- a/mailnews/extensions/smime/src/nsMsgComposeSecure.cpp
-+++ b/mailnews/extensions/smime/src/nsMsgComposeSecure.cpp
-@@ -561,17 +561,17 @@ nsresult nsMsgComposeSecure::MimeInitEnc
-   sMIMEBundle->GetStringFromName("mime_smimeEncryptedContentDesc",
-                                  mime_smime_enc_content_desc);
-   NS_ConvertUTF16toUTF8 enc_content_desc_utf8(mime_smime_enc_content_desc);
- 
-   nsCOMPtr<nsIMimeConverter> mimeConverter =
-      do_GetService(NS_MIME_CONVERTER_CONTRACTID, &rv);
-   NS_ENSURE_SUCCESS(rv, rv);
-   nsCString encodedContentDescription;
--  mimeConverter->EncodeMimePartIIStr_UTF8(enc_content_desc_utf8, false, "UTF-8",
-+  mimeConverter->EncodeMimePartIIStr_UTF8(enc_content_desc_utf8, false,
-       sizeof("Content-Description: "),
-       nsIMimeConverter::MIME_ENCODED_WORD_SIZE,
-       encodedContentDescription);
- 
-   /* First, construct and write out the opaque-crypto-blob MIME header data.
-    */
- 
-   char *s =
-diff --git a/mailnews/mime/public/nsIMimeConverter.idl b/mailnews/mime/public/nsIMimeConverter.idl
---- a/mailnews/mime/public/nsIMimeConverter.idl
-+++ b/mailnews/mime/public/nsIMimeConverter.idl
-@@ -15,31 +15,26 @@ interface nsIMimeConverter : nsISupports
-    */
-   const long MIME_ENCODED_WORD_SIZE = 72;
-   const long MAX_CHARSET_NAME_LENGTH = 64;
- 
-   /**
-    * Encode a UTF-8 string into a form containing only ASCII characters using
-    * RFC 2047 encoded words where necessary.
-    *
--   * Note that, although allowed for the present time, encoding to charsets
--   * other than UTF-8 is considered deprecated.
--   *
-    * @param aHeader           UTF-8 header to encode.
-    * @param aAddressingHeader Is the header a list of email addresses?
--   * @param aMailCharset      Charset to use when encoding (see above for note).
-    * @param aFieldNameLen     Header field name length (ex: "From: " = 6)
-    * @param aMaxLineLen       Maximum length of an individual line. Use
-    *                          MIME_ENCODED_WORD_SIZE for best results.
-    *
-    * @return                  The encoded header.
-    */
-   AUTF8String encodeMimePartIIStr_UTF8(in AUTF8String aHeader,
-                                        in boolean     aAddressingHeader,
--                                       in string      aMailCharset,
-                                        in long        aFieldNameLen,
-                                        in long        aMaxLineLen);
- 
-   /**
-    * Decode a MIME header to UTF-8 if conversion is required.  Marked as
-    * noscript because the return value may contain non-ASCII characters.
-    *
-    * @param header A (possibly encoded) header to decode.
-diff --git a/mailnews/mime/src/mimeJSComponents.js b/mailnews/mime/src/mimeJSComponents.js
---- a/mailnews/mime/src/mimeJSComponents.js
-+++ b/mailnews/mime/src/mimeJSComponents.js
-@@ -1,13 +1,12 @@
- /* This Source Code Form is subject to the terms of the Mozilla Public
-  * License, v. 2.0. If a copy of the MPL was not distributed with this
-  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
- 
--Cu.import("resource://gre/modules/Deprecated.jsm");
- Cu.import("resource:///modules/jsmime.jsm");
- Cu.import("resource:///modules/mimeParser.jsm");
- Cu.import("resource://gre/modules/XPCOMUtils.jsm");
- 
- function HeaderHandler() {
-   this.value = "";
-   this.deliverData = function (str) { this.value += str; };
-   this.deliverEOF = function () {};
-@@ -438,25 +437,18 @@ MimeAddressParser.prototype = {
- };
- 
- function MimeConverter() {
- }
- MimeConverter.prototype = {
-   classID: Components.ID("93f8c049-80ed-4dda-9000-94ad8daba44c"),
-   QueryInterface: XPCOMUtils.generateQI([Ci.nsIMimeConverter]),
- 
--  encodeMimePartIIStr_UTF8: function (aHeader, aStructured, aCharset,
-+  encodeMimePartIIStr_UTF8: function (aHeader, aStructured,
-       aFieldNameLen, aLineLength) {
--    // The JSMime encoder only works in UTF-8, so if someone requests to not do
--    // it, they need to change their code.
--    if (aCharset.toLowerCase() != "utf-8") {
--      Deprecated.warning("Encoding to non-UTF-8 values is obsolete",
--        "http://bugzilla.mozilla.org/show_bug.cgi?id=790855");
--    }
--
-     // Compute the encoding options. The way our API is structured in this
-     // method is really horrendous and does not align with the way that JSMime
-     // handles it. Instead, we'll need to create a fake header to take into
-     // account the aFieldNameLen parameter.
-     let fakeHeader = '-'.repeat(aFieldNameLen);
-     let options = {
-       softMargin: aLineLength,
-       useASCII: true,
-diff --git a/mailnews/mime/test/unit/test_EncodeMimePartIIStr_UTF8.js b/mailnews/mime/test/unit/test_EncodeMimePartIIStr_UTF8.js
---- a/mailnews/mime/test/unit/test_EncodeMimePartIIStr_UTF8.js
-+++ b/mailnews/mime/test/unit/test_EncodeMimePartIIStr_UTF8.js
-@@ -19,12 +19,12 @@ function run_test() {
-     ["MXR now displays links to Github log & Blame for\r\n Gaia/Rust/Servo", false,
-      "MXR now displays links to Github log & Blame for\r\n Gaia/Rust/Servo"],
-     ["-----------------------:", false, "-----------------------:"],
-   ];
- 
-   for (i = 0; i < checks.length; ++i)
-   {
-     do_check_eq(
--      MailServices.mimeConverter.encodeMimePartIIStr_UTF8(checks[i][0], checks[i][1], "UTF-8", "Subject".length, 72),
-+      MailServices.mimeConverter.encodeMimePartIIStr_UTF8(checks[i][0], checks[i][1], "Subject".length, 72),
-       checks[i][2]);
-   }
- }

+ 0 - 73
comm-esr60/comm-esr60/patches/1430023-cc-62a1.patch

@@ -1,73 +0,0 @@
-# HG changeset patch
-# User Marco Bonardo <mbonardo@mozilla.com>
-# Date 1525860495 -7200
-#      Wed May 09 12:08:15 2018 +0200
-# Node ID 28e92601fda22ec68f7ee8e1fd26d41a703cc83b
-# Parent  b3340498fbbac11043a8e632e7be205a235e5b52
-Bug 1430023 - Stop using LStoreS in comm-central. r=jorgk a=frg
-
-diff --git a/mail/base/content/safeMode.js b/mail/base/content/safeMode.js
---- a/mail/base/content/safeMode.js
-+++ b/mail/base/content/safeMode.js
-@@ -6,23 +6,21 @@
- Cu.import("resource://gre/modules/AddonManager.jsm");
- Cu.import("resource://gre/modules/Services.jsm");
- 
- function restartApp() {
-   Services.startup.quit(Services.startup.eForceQuit | Services.startup.eRestart);
- }
- 
- function deleteLocalstore() {
--  var localstoreFile = Services.dirsvc.get("LStoreS", Ci.nsIFile);
--  if (localstoreFile.exists())
--    localstoreFile.remove(false);
--  // Delete the new xulstore file.
--  localstoreFile.leafName = "xulstore.json";
--  if (localstoreFile.exists())
--    localstoreFile.remove(false);
-+  // Delete the xulstore file.
-+  let xulstoreFile = Services.dirsvc.get("ProfD", Ci.nsIFile);
-+  xulstoreFile.append("xulstore.json");
-+  if (xulstoreFile.exists())
-+    xulstoreFile.remove(false);
- }
- 
- function disableAddons() {
-   AddonManager.getAllAddons(function(aAddons) {
-     aAddons.forEach(function(aAddon) {
-       if (aAddon.type == "theme") {
-         // Setting userDisabled to false on the default theme activates it,
-         // disables all other themes and deactivates the applied persona, if
-diff --git a/suite/base/content/safeMode.js b/suite/base/content/safeMode.js
---- a/suite/base/content/safeMode.js
-+++ b/suite/base/content/safeMode.js
-@@ -23,24 +23,21 @@ function clearAllPrefs() {
-   }
- }
- 
- function restoreDefaultBookmarks() {
-   Services.prefs.setBoolPref("browser.bookmarks.restore_default_bookmarks", true);
- }
- 
- function deleteLocalstore() {
--  // Delete the old localstore otherwise it will get imported.
--  var localstoreFile = Services.dirsvc.get("LStoreS", Ci.nsIFile);
--  if (localstoreFile.exists())
--    localstoreFile.remove(false);
--  // Delete the new xulstore file.
--  localstoreFile.leafName = "xulstore.json";
--  if (localstoreFile.exists())
--    localstoreFile.remove(false);
-+  // Delete the xulstore file.
-+  let xulstoreFile = Services.dirsvc.get("ProfD", Ci.nsIFile);
-+  xulstoreFile.append("xulstore.json");
-+  if (xulstoreFile.exists())
-+    xulstoreFile.remove(false);
- }
- 
- function disableAddons() {
-   AddonManager.getAllAddons(function(aAddons) {
-     aAddons.forEach(function(aAddon) {
-       if (aAddon.type == "theme") {
-         // Setting userDisabled to false on the default theme activates it,
-         // disables all other themes and deactivates the applied persona, if

+ 0 - 133
comm-esr60/comm-esr60/patches/1436662-mail-61a1.patch

@@ -1,133 +0,0 @@
-# HG changeset patch
-# User Tom Prince <mozilla@hocat.ca>
-# Date 1524079610 21600
-# Node ID 5944ef6d61655e4180c1baba49f203fecf9fad31
-# Parent  e3a9fbc3de6f859dc8df5cc6323d1439e9f31c82
-Port Bug 1436662: Package translated uninstaller; r=me CLOSED TREE DONTBUILD
-
-diff --git a/mail/build.mk b/mail/build.mk
---- a/mail/build.mk
-+++ b/mail/build.mk
-@@ -1,16 +1,13 @@
- # This Source Code Form is subject to the terms of the Mozilla Public
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
- ifndef COMM_BUILD
--installer:
--	@$(MAKE) -C mail/installer installer
--
- package:
- 	@$(MAKE) -C mail/installer
- 
- package-compare:
- 	@$(MAKE) -C mail/installer package-compare
- 
- stage-package:
- 	@$(MAKE) -C mail/installer stage-package
-diff --git a/mail/installer/Makefile.in b/mail/installer/Makefile.in
---- a/mail/installer/Makefile.in
-+++ b/mail/installer/Makefile.in
-@@ -185,18 +185,13 @@ endif
- package-compare:: $(MOZ_PKG_MANIFEST)
- ifdef MOZ_PKG_MANIFEST_P
- 	cd $(DIST); find $(PKGCOMP_FIND_OPTS) $(FINDPATH) -type f | sort > bin-list.txt
- 	grep '^$(BINPATH)' $(MOZ_PKG_MANIFEST) | sed -e 's/^\///' | sort > $(DIST)/pack-list.txt
- 	-diff -u $(DIST)/pack-list.txt $(DIST)/bin-list.txt
- 	rm -f $(DIST)/pack-list.txt $(DIST)/bin-list.txt
- endif
- 
--installer::
--ifdef INSTALLER_DIR
--	$(MAKE) -C $(INSTALLER_DIR)
--endif
--
- # The comm-* source stamp is already there.
- PLATFORM_SOURCE_STAMP = $(firstword $(shell hg -R "$(MOZILLA_SRCDIR)" parent --template="{node}\n" 2>/dev/null))
- PLATFORM_SOURCE_REPO = $(shell hg -R "$(MOZILLA_SRCDIR)" showconfig paths.default 2>/dev/null | sed -e "s/^ssh:/https:/")
- make-sourcestamp-file::
- 	@echo "$(PLATFORM_SOURCE_REPO)/rev/$(PLATFORM_SOURCE_STAMP)" >> $(MOZ_SOURCESTAMP_FILE)
-diff --git a/mail/installer/windows/Makefile.in b/mail/installer/windows/Makefile.in
---- a/mail/installer/windows/Makefile.in
-+++ b/mail/installer/windows/Makefile.in
-@@ -49,33 +49,16 @@ PPL_LOCALE_ARGS = \
-   --l10n-dir=$(REAL_LOCALE_MERGEDIR)/mail/installer \
-   --l10n-dir=$(call EXPAND_LOCALE_SRCDIR,mail/locales)/installer \
-   --l10n-dir=$(topsrcdir)/mail/locales/en-US/installer \
-   $(NULL)
- else
- PPL_LOCALE_ARGS=$(call EXPAND_LOCALE_SRCDIR,mail/locales)/installer
- endif
- 
--OVERRIDE_DEFAULT_GOAL := installer
--installer::
--	$(MAKE) -C .. installer-stage
--	$(MAKE) $(CONFIG_DIR)/setup.exe
--
--# For building the uninstaller during the application build so it can be
--# included for mar file generation.
--uninstaller::
--	$(RM) -r $(CONFIG_DIR) && mkdir $(CONFIG_DIR)
--	$(INSTALL) $(addprefix $(srcdir)/,$(INSTALLER_FILES)) $(CONFIG_DIR)
--	$(INSTALL) $(addprefix $(DIST)/branding/,$(BRANDING_FILES)) $(CONFIG_DIR)
--	$(call py_action,preprocessor,-Fsubstitution $(DEFINES) $(ACDEFINES) \
--	  $(srcdir)/nsis/defines.nsi.in -o $(CONFIG_DIR)/defines.nsi)
--	$(PYTHON) $(MOZILLA_SRCDIR)/toolkit/mozapps/installer/windows/nsis/preprocess-locale.py \
--	  --preprocess-locale $(MOZILLA_SRCDIR) \
--	  $(PPL_LOCALE_ARGS) $(AB_CD) $(CONFIG_DIR)
--
- # For building the maintenanceservice installer
- ifdef MOZ_MAINTENANCE_SERVICE
- maintenanceservice_installer::
- 	$(INSTALL) $(addprefix $(srcdir)/,$(INSTALLER_FILES)) $(CONFIG_DIR)
- 	$(call py_action,preprocessor,-Fsubstitution $(DEFINES) $(ACDEFINES) \
- 	  $(srcdir)/nsis/defines.nsi.in -o $(CONFIG_DIR)/defines.nsi)
- 	$(PYTHON) $(MOZILLA_SRCDIR)/toolkit/mozapps/installer/windows/nsis/preprocess-locale.py \
- 	  --preprocess-locale $(MOZILLA_SRCDIR) \
-diff --git a/mail/locales/Makefile.in b/mail/locales/Makefile.in
---- a/mail/locales/Makefile.in
-+++ b/mail/locales/Makefile.in
-@@ -84,29 +84,18 @@ libs-%:
- 	@$(MAKE) -C ../../editor/ui/locales AB_CD=$* XPI_NAME=locale-$*
- 	@$(MAKE) -C ../../calendar/locales AB_CD=$* XPI_NAME=locale-$*
- 	@$(MAKE) -C $(DEPTH)/extensions/spellcheck/locales AB_CD=$* XPI_NAME=locale-$*
- 	@$(MAKE) -C $(DEPTH)/intl/locales AB_CD=$* XPI_NAME=locale-$*
- 	@$(MAKE) -B searchplugins AB_CD=$* XPI_NAME=locale-$*
- 	@$(MAKE) libs AB_CD=$* XPI_NAME=locale-$* PREF_DIR=defaults/pref
- 	@$(MAKE) -C $(DEPTH)/$(MOZ_BRANDING_DIRECTORY)/locales AB_CD=$* XPI_NAME=locale-$*
- 
--package-win32-installer: WIN32_INSTALLER_OUT=$(ABS_DIST)/$(PKG_INST_PATH)$(PKG_INST_BASENAME).exe
- package-win32-installer: $(SUBMAKEFILES)
--	@echo 'Packaging $(WIN32_INSTALLER_OUT).'
--	$(MAKE) -C ../installer/windows CONFIG_DIR=l10ngen l10ngen/setup.exe l10ngen/7zSD.sfx
--	$(RM) -r $(STAGEDIST)/uninstall; \
--	$(NSINSTALL) -D $(STAGEDIST)/uninstall; \
--	cp ../installer/windows/l10ngen/helper.exe $(STAGEDIST)/uninstall; \
--	$(RM) $(ABS_DIST)/l10n-stage/setup.exe; \
--	cp ../installer/windows/l10ngen/setup.exe $(ABS_DIST)/l10n-stage; \
--	(cd $(DIST)/l10n-stage; \
--	  $(MAKE_PACKAGE)
--	mv -f '$(DIST)/l10n-stage/$(PACKAGE)' '$(WIN32_INSTALLER_OUT)'
--	if test -f '$(DIST)/l10n-stage/$(PACKAGE).asc'; then mv -f '$(DIST)/l10n-stage/$(PACKAGE).asc' '$(WIN32_INSTALLER_OUT).asc'; fi
-+	$(MAKE) -C ../installer/windows CONFIG_DIR=l10ngen ZIP_IN='$(ZIP_OUT)' installer
- 
- langpack: langpack-$(AB_CD)
- 
- ifdef MOZ_UPDATER
- libs:: $(call MERGE_FILE,updater/updater.ini) $(call mkdir_deps,$(DIST)/bin)
- ifeq ($(OS_ARCH),WINNT)
- 	cat $< $(srcdir)/../installer/windows/nsis/updater_append.ini | \
- 	  sed -e 's/^InfoText=/Info=/' -e 's/^TitleText=/Title=/' | \
-@@ -178,11 +167,11 @@ l10n-check::
- # tinderbox scripts. Alter it with caution.
- installers-%: IS_LANGUAGE_REPACK=1
- installers-%:
- 	@$(MAKE) clobber-$*
- 	@$(MAKE) libs-$*
- 	@$(MAKE) package-langpack-$*
- 	@$(MAKE) repackage-zip-$*
- ifeq (WINNT,$(OS_ARCH))
--	@$(MAKE) package-win32-installer AB_CD=$* MOZ_PKG_FORMAT=SFX7Z
-+	@$(MAKE) package-win32-installer AB_CD=$*
- endif
- 	@echo 'repackaging done'

+ 0 - 332
comm-esr60/comm-esr60/patches/1441668-editmenuoverlay-V1_1-257.patch

@@ -1,332 +0,0 @@
-# HG changeset patch
-# User Frank-Rainer Grahl <frgrahl@gmx.net>
-# Date 1586887144 -7200
-# Parent  cfe945bd67c70ad45652367b2ac663c01b90af0a
-Bug 1441668 - Replace editMenuOverlay.xul in SeaMonkey with preprocessed includes. r=IanN a=IanN
-Port Bug 1439766 "Remove editMenuOverlay.xul".
-
-diff --git a/suite/components/console/content/console.xul b/suite/components/console/content/console.xul
---- a/suite/components/console/content/console.xul
-+++ b/suite/components/console/content/console.xul
-@@ -3,23 +3,20 @@
- <!-- This Source Code Form is subject to the terms of the Mozilla Public
-    - License, v. 2.0. If a copy of the MPL was not distributed with this
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
- <?xml-stylesheet href="chrome://communicator/skin/" type="text/css"?>
- <?xml-stylesheet href="chrome://communicator/skin/console/console.css" type="text/css"?>
- <?xml-stylesheet href="chrome://communicator/content/console/console.css" type="text/css"?>
- 
--<?xul-overlay href="chrome://global/content/editMenuOverlay.xul"?>
- <?xul-overlay href="chrome://communicator/content/utilityOverlay.xul"?>
- <?xul-overlay href="chrome://communicator/content/tasksOverlay.xul"?>
- 
--<!DOCTYPE window [
--  <!ENTITY % console SYSTEM "chrome://communicator/locale/console/console.dtd"> %console;
--]>
-+<!DOCTYPE window SYSTEM "chrome://communicator/locale/console/console.dtd" >
- 
- <window id="JSConsoleWindow"
-         xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-         title="&errorConsole.title;"
-         windowtype="suite:console"
-         width="640"
-         height="480"
-         screenX="10"
-@@ -28,17 +25,17 @@
-         onclose="return closeWindow(false);">
- 
-   <script type="application/javascript" src="chrome://global/content/globalOverlay.js"/>
-   <script type="application/javascript" src="chrome://communicator/content/console/console.js"/>
-   <script type="application/javascript" src="chrome://global/content/viewSourceUtils.js"/>
- 
-   <stringbundle id="ConsoleBundle" src="chrome://communicator/locale/console/console.properties"/>
- 
--  <commandset id="editMenuCommands"/>
-+#include ../../../../../toolkit/content/editMenuCommands.inc.xul
- 
-   <commandset id="consoleCommands">
-     <commandset id="tasksCommands"/>
-     <command id="cmd_close" oncommand="closeWindow(true);"/>
-   </commandset>
- 
-   <keyset id="consoleKeys">
-     <keyset id="tasksKeys"/>
-diff --git a/suite/components/console/jar.mn b/suite/components/console/jar.mn
---- a/suite/components/console/jar.mn
-+++ b/suite/components/console/jar.mn
-@@ -1,9 +1,9 @@
- # This Source Code Form is subject to the terms of the Mozilla Public
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
- comm.jar:
-    content/communicator/console/consoleBindings.xml                 (content/consoleBindings.xml)
-    content/communicator/console/console.css                         (content/console.css)
-    content/communicator/console/console.js                          (content/console.js)
--   content/communicator/console/console.xul                         (content/console.xul)
-+*  content/communicator/console/console.xul                         (content/console.xul)
-diff --git a/suite/components/downloads/content/downloadmanager.xul b/suite/components/downloads/content/downloadmanager.xul
---- a/suite/components/downloads/content/downloadmanager.xul
-+++ b/suite/components/downloads/content/downloadmanager.xul
-@@ -3,23 +3,20 @@
-    - License, v. 2.0. If a copy of the MPL was not distributed with this
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
- <?xml-stylesheet href="chrome://communicator/skin/" type="text/css"?>
- <?xml-stylesheet href="chrome://communicator/skin/downloads/downloadmanager.css" type="text/css"?>
- 
- <?xul-overlay href="chrome://communicator/content/tasksOverlay.xul"?>
- <?xul-overlay href="chrome://communicator/content/utilityOverlay.xul"?>
--<?xul-overlay href="chrome://global/content/editMenuOverlay.xul"?>
- 
- <!DOCTYPE window [
- <!ENTITY % downloadsDTD SYSTEM "chrome://communicator/locale/downloads/downloadmanager.dtd">
- %downloadsDTD;
--<!ENTITY % editMenuOverlayDTD SYSTEM "chrome://global/locale/editMenuOverlay.dtd">
--%editMenuOverlayDTD;
- <!ENTITY % globalDTD SYSTEM "chrome://global/locale/global.dtd">
- %globalDTD;
- ]>
- 
- <window id="downloadManager"
-         title="&downloadManager.title;" statictitle="&downloadManager.title;"
-         onload="dmStartup();" onunload="dmShutdown();"
-         xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-@@ -48,17 +45,17 @@
-   <commandset id="dlWinCommands">
-     <commandset id="tasksCommands">
-       <!-- File Menu -->
-       <command id="cmd_close" oncommand="window.close()"/>
-       <!-- Search Box -->
-       <command id="cmd_search_focus"
-                oncommand="gSearchBox.focus();"/>
-     </commandset>
--    <commandset id="editMenuCommands"/>
-+#include ../../../../../toolkit/content/editMenuCommands.inc.xul
-     <commandset id="commandUpdate_Downloads"
-                 commandupdater="true"
-                 events="focus,tree-select"
-                 oncommandupdate="dlTreeController.onCommandUpdate()"/>
- 
-     <commandset id="downloadCommands">
-       <command id="cmd_play"
-                oncommand="goDoCommand('cmd_play');"/>
-@@ -153,17 +150,17 @@
-                 label="&cmd.copyDownloadLink.label;"
-                 accesskey="&cmd.copyDownloadLink.accesskey;"
-                 command="cmd_copyLocation"/>
-       <menuitem id="dlContext-properties"
-                 label="&cmd.properties.label;"
-                 accesskey="&cmd.properties.accesskey;"
-                 command="cmd_properties"/>
-       <menuseparator/>
--      <menuitem id="cMenu_selectAll"/>
-+      <menuitem id="context-selectall"/>
-     </menupopup>
-   </popupset>
- 
-   <vbox id="titlebar"/>
- 
-   <toolbox id="download-toolbox">
-     <menubar id="download-menubar"
-              grippytooltiptext="&menuBar.tooltip;">
-diff --git a/suite/components/downloads/jar.mn b/suite/components/downloads/jar.mn
---- a/suite/components/downloads/jar.mn
-+++ b/suite/components/downloads/jar.mn
-@@ -1,14 +1,14 @@
- # This Source Code Form is subject to the terms of the Mozilla Public
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
- comm.jar:
- % content communicator %content/communicator/ contentaccessible=yes
-    content/communicator/downloads/downloadmanager.js                (content/downloadmanager.js)
--   content/communicator/downloads/downloadmanager.xul               (content/downloadmanager.xul)
-+*  content/communicator/downloads/downloadmanager.xul               (content/downloadmanager.xul)
-    content/communicator/downloads/DownloadProgressListener.js       (content/DownloadProgressListener.js)
-    content/communicator/downloads/progressDialog.xul                (content/progressDialog.xul)
-    content/communicator/downloads/progressDialog.js                 (content/progressDialog.js)
-    content/communicator/downloads/uploadProgress.xul                (content/uploadProgress.xul)
-    content/communicator/downloads/uploadProgress.js                 (content/uploadProgress.js)
-    content/communicator/downloads/treeView.js                       (content/treeView.js)
-diff --git a/suite/components/places/content/bookmarksPanel.xul b/suite/components/places/content/bookmarksPanel.xul
---- a/suite/components/places/content/bookmarksPanel.xul
-+++ b/suite/components/places/content/bookmarksPanel.xul
-@@ -3,17 +3,16 @@
-    - License, v. 2.0. If a copy of the MPL was not distributed with this
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
- <?xml-stylesheet href="chrome://communicator/skin/" type="text/css"?>
- <?xml-stylesheet href="chrome://communicator/skin/sidebar/sidebarListView.css" type="text/css"?>
- <?xml-stylesheet href="chrome://communicator/content/places/places.css"?>
- <?xml-stylesheet href="chrome://communicator/skin/places/bookmarks.css"?>
- 
--<?xul-overlay href="chrome://global/content/editMenuOverlay.xul"?>
- <?xul-overlay href="chrome://communicator/content/places/placesOverlay.xul"?>
- <?xul-overlay href="chrome://communicator/content/utilityOverlay.xul"?>
- 
- <!DOCTYPE page SYSTEM "chrome://communicator/locale/places/places.dtd">
- 
- <page id="bookmarksPanel"
-       xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-       xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-@@ -21,17 +20,17 @@
-       onunload="SidebarUtils.setMouseoverURL('');">
- 
-   <script type="application/javascript"
-           src="chrome://communicator/content/bookmarks/sidebarUtils.js"/>
-   <script type="application/javascript"
-           src="chrome://communicator/content/bookmarks/bookmarksPanel.js"/>
- 
-   <commandset id="placesCommands"/>
--  <commandset id="editMenuCommands"/>
-+#include ../../../../../toolkit/content/editMenuCommands.inc.xul
-   <menupopup id="placesContext"/>
- 
-   <!-- Bookmarks and history tooltip -->
-   <tooltip id="bhTooltip"/>
- 
-   <hbox id="sidebar-search-container" align="center">
-     <textbox id="search-box" flex="1" type="search"
-              placeholder="&bookmarksSearch.placeholder;"
-diff --git a/suite/components/places/content/history-panel.xul b/suite/components/places/content/history-panel.xul
---- a/suite/components/places/content/history-panel.xul
-+++ b/suite/components/places/content/history-panel.xul
-@@ -3,46 +3,48 @@
-    - License, v. 2.0. If a copy of the MPL was not distributed with this
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
- <?xml-stylesheet href="chrome://communicator/skin/" type="text/css"?>
- <?xml-stylesheet href="chrome://communicator/skin/sidebar/sidebarListView.css" type="text/css"?>
- <?xml-stylesheet href="chrome://communicator/content/places/places.css"?>
- <?xml-stylesheet href="chrome://communicator/skin/places/bookmarks.css"?>
- 
--<?xul-overlay href="chrome://global/content/editMenuOverlay.xul"?>
- <?xul-overlay href="chrome://communicator/content/places/placesOverlay.xul"?>
- <?xul-overlay href="chrome://communicator/content/utilityOverlay.xul"?>
- 
- <!DOCTYPE page [
- <!ENTITY % placesDTD SYSTEM "chrome://communicator/locale/places/places.dtd">
- %placesDTD;
-+<!ENTITY % editMenuOverlayDTD SYSTEM "chrome://global/locale/editMenuOverlay.dtd">
-+%editMenuOverlayDTD;
- ]>
- 
- <!-- we need to keep id="history-panel" for upgrade and switching
-      between versions of the browser -->
- 
- <page id="history-panel" orient="vertical"
-       xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-       onload="HistorySidebarInit();"
-       onunload="SidebarUtils.setMouseoverURL('');">
- 
-   <script type="application/javascript"
-           src="chrome://communicator/content/bookmarks/sidebarUtils.js"/>
-   <script type="application/javascript"
-           src="chrome://communicator/content/places/history-panel.js"/>
- 
--  <commandset id="editMenuCommands"/>
-+#include ../../../../../toolkit/content/editMenuCommands.inc.xul
-   <commandset id="placesCommands"/>
- 
--  <keyset id="editMenuKeys">
-+#include ../../../../../toolkit/content/editMenuKeys.inc.xul
- #ifdef XP_MACOSX
-+  <keyset id="editMenuKeysExtra">
-     <key id="key_delete2" keycode="VK_BACK" command="cmd_delete"/>
-+  </keyset>
- #endif
--  </keyset>
- 
-   <!-- required to overlay the context menu -->
-   <menupopup id="placesContext"/>
- 
-   <!-- Bookmarks and history tooltip -->
-   <tooltip id="bhTooltip"/>
- 
-   <hbox id="sidebar-search-container">
-diff --git a/suite/components/places/content/places.xul b/suite/components/places/content/places.xul
---- a/suite/components/places/content/places.xul
-+++ b/suite/components/places/content/places.xul
-@@ -10,17 +10,16 @@
- <?xml-stylesheet href="chrome://communicator/skin/"?>
- <?xml-stylesheet href="chrome://communicator/skin/places/bookmarks.css"?>
- <?xml-stylesheet href="chrome://communicator/skin/places/organizer.css"?>
- 
- <?xul-overlay href="chrome://communicator/content/places/editBookmarkOverlay.xul"?>
- 
- <?xul-overlay href="chrome://communicator/content/utilityOverlay.xul"?>
- <?xul-overlay href="chrome://communicator/content/tasksOverlay.xul"?>
--<?xul-overlay href="chrome://global/content/editMenuOverlay.xul"?>
- <?xul-overlay href="chrome://communicator/content/places/placesOverlay.xul"?>
- 
- <!DOCTYPE window [
- <!ENTITY % placesDTD SYSTEM "chrome://communicator/locale/places/places.dtd">
- %placesDTD;
- <!ENTITY % editMenuOverlayDTD SYSTEM "chrome://global/locale/editMenuOverlay.dtd">
- %editMenuOverlayDTD;
- <!ENTITY % navDTD SYSTEM "chrome://navigator/locale/navigator.dtd">
-@@ -43,17 +42,17 @@
-           src="chrome://communicator/content/places/places.js"/>
-   <script type="application/javascript"
-           src="chrome://communicator/content/places/editBookmarkOverlay.js"/>
- 
-   <stringbundleset id="placesStringSet">
-     <stringbundle id="brandStrings" src="chrome://branding/locale/brand.properties"/>
-   </stringbundleset>
- 
--  <commandset id="editMenuCommands"/>
-+#include ../../../../../toolkit/content/editMenuCommands.inc.xul
-   <commandset id="placesCommands"/>
-   <commandset id="tasksCommands"/>
- 
-   <commandset id="organizerCommandSet">
-     <command id="OrganizerCommand_find:all"
-              oncommand="PlacesSearchBox.findAll();"/>
-     <command id="OrganizerCommand_export"
-              oncommand="PlacesOrganizer.exportBookmarks();"/>
-@@ -90,21 +89,23 @@
-          command="OrganizerCommand:Back"
-          modifiers="accel"/>
-     <key id="placesKey_goForwardKb"
-          keycode="VK_RIGHT"
-          command="OrganizerCommand:Forward"
-          modifiers="accel"/>
-   </keyset>
- 
--  <keyset id="editMenuKeys">
-+#include ../../../../../toolkit/content/editMenuKeys.inc.xul
- #ifdef XP_MACOSX
-+  <keyset id="editMenuKeysExtra">
-     <key id="key_delete2" keycode="VK_BACK" command="cmd_delete"/>
-+  </keyset>
- #endif
--  </keyset>
-+
-   <keyset id="tasksKeys">
-     <key id="key_close2" disabled="true"/>
-   </keyset>
- 
-   <popupset id="placesPopupset">
-     <menupopup id="placesContext"/>
-     <menupopup id="placesColumnsContext"
-                onpopupshowing="ViewMenu.fillWithColumns(event, null, null, 'checkbox', null);"
-diff --git a/suite/components/places/jar.mn b/suite/components/places/jar.mn
---- a/suite/components/places/jar.mn
-+++ b/suite/components/places/jar.mn
-@@ -18,13 +18,13 @@ comm.jar:
-     content/communicator/places/controller.js                 (content/controller.js)
-     content/communicator/places/treeView.js                   (content/treeView.js)
-     content/communicator/places/browserPlacesViews.js         (content/browserPlacesViews.js)
- # keep the Places version of the history sidebar at history/history-panel.xul
- # to prevent having to worry about between versions of the browser
- *   content/communicator/history/history-panel.xul            (content/history-panel.xul)
-     content/communicator/places/history-panel.js              (content/history-panel.js)
- # ditto for the bookmarks sidebar
--    content/communicator/bookmarks/bookmarksPanel.xul         (content/bookmarksPanel.xul)
-+*   content/communicator/bookmarks/bookmarksPanel.xul         (content/bookmarksPanel.xul)
-     content/communicator/bookmarks/bookmarksPanel.js          (content/bookmarksPanel.js)
-     content/communicator/bookmarks/sidebarUtils.js            (content/sidebarUtils.js)
-     content/communicator/places/editBookmarkOverlay.xul       (content/editBookmarkOverlay.xul)
-     content/communicator/places/editBookmarkOverlay.js        (content/editBookmarkOverlay.js)

+ 0 - 271
comm-esr60/comm-esr60/patches/1442886-257.patch

@@ -1,271 +0,0 @@
-# HG changeset patch
-# User Bill Gianopoulos <wgianopoulos@gmail.com>
-# Date 1519746280 18000
-# Node ID b8857d30de31c633f98e92d3401bc65172235720
-# Parent  29c3e55046fd89aae504cf0771f1356797666d5b
-Bug 1442886 - Replace Services.intl.createDateTimeFormat with Services.intl.DateTimeFormat in SeaMonkey. r=frg
-Port Bug 1428172 [Align mozIntl with Intl when working with constructors].
-
-diff --git a/suite/browser/pageinfo/pageInfo.js b/suite/browser/pageinfo/pageInfo.js
---- a/suite/browser/pageinfo/pageInfo.js
-+++ b/suite/browser/pageinfo/pageInfo.js
-@@ -1079,17 +1079,17 @@ function formatNumber(number)
- }
- 
- function formatDate(datestr, unknown)
- {
-   var date = new Date(datestr);
-   if (!date.valueOf())
-     return unknown;
- 
--  const dateTimeFormatter = Services.intl.createDateTimeFormat(undefined, {
-+  const dateTimeFormatter = new Services.intl.DateTimeFormat(undefined, {
-                             dateStyle: "full", timeStyle: "long"});
-   return dateTimeFormatter.format(date);
- }
- 
- function getSelectedItems(linksMode)
- {
-   // linksMode is a boolean that is used to determine
-   // whether the getSelectedItems() function needs to
-diff --git a/suite/components/console/content/consoleBindings.xml b/suite/components/console/content/consoleBindings.xml
---- a/suite/components/console/content/consoleBindings.xml
-+++ b/suite/components/console/content/consoleBindings.xml
-@@ -272,17 +272,17 @@
-           Services.console.logStringMessage(null);
-           Services.console.reset();
-         ]]></body>
-       </method>
- 
-       <method name="properFormatTime">
-         <parameter name="aTime"/>
-         <body><![CDATA[
--          const dateServ = Services.intl.createDateTimeFormat(undefined, {
-+          const dateServ = new Services.intl.DateTimeFormat(undefined, {
-             dateStyle: "short", timeStyle: "long"
-           });
-           return dateServ.format(aTime);
-         ]]></body>
-       </method>
- 
-       <method name="copySelectedItem">
-         <body><![CDATA[
-diff --git a/suite/components/dataman/content/dataman.js b/suite/components/dataman/content/dataman.js
---- a/suite/components/dataman/content/dataman.js
-+++ b/suite/components/dataman/content/dataman.js
-@@ -980,17 +980,17 @@ var gCookies = {
-     if (aExpires) {
-       let date = new Date(1000 * aExpires);
- 
-       // If a server manages to set a really long-lived cookie, the dateservice
-       // can't cope with it properly, so we'll just return a blank string.
-       // See bug 238045 for details.
-       let expiry = "";
-       try {
--        const dateTimeFormatter = Services.intl.createDateTimeFormat(undefined, {
-+        const dateTimeFormatter = new Services.intl.DateTimeFormat(undefined, {
-                                   dateStyle: "full", timeStyle: "long" });
-         expiry = dateTimeFormatter.format(date);
-       }
-       catch (e) {}
-       return expiry;
-     }
-     return gDataman.bundle.getString("cookies.expireAtEndOfSession");
-   },
-@@ -2858,17 +2858,17 @@ var gFormdata = {
-     if (aTimestamp) {
-       let date = new Date(aTimestamp / 1000);
- 
-       // If a date has an extreme value, the dateservice can't cope with it
-       // properly, so we'll just return a blank string.
-       // See bug 238045 for details.
-       let dtString = "";
-       try {
--        const dateTimeFormatter = Services.intl.createDateTimeFormat(undefined, {
-+        const dateTimeFormatter = new Services.intl.DateTimeFormat(undefined, {
-                                   dateStyle: "full", timeStyle: "long" });
-         dtString = dateTimeFormatter.format(date);
-       }
-       catch (e) {}
-       return dtString;
-     }
-     return "";
-   },
-diff --git a/suite/components/downloads/content/treeView.js b/suite/components/downloads/content/treeView.js
---- a/suite/components/downloads/content/treeView.js
-+++ b/suite/components/downloads/content/treeView.js
-@@ -11,19 +11,19 @@ XPCOMUtils.defineLazyModuleGetter(this, 
- 
- XPCOMUtils.defineLazyModuleGetter(this, "DownloadHistory",
-                                   "resource://gre/modules/DownloadHistory.jsm");
- 
- function DownloadTreeView() {
-   this._dlList = [];
-   this._searchTerms = [];
-   this.dateTimeFormatter =
--    Services.intl.createDateTimeFormat(undefined,
--                                       {dateStyle: "short",
--                                        timeStyle: "long"});
-+    new Services.intl.DateTimeFormat(undefined,
-+                                     {dateStyle: "short",
-+                                      timeStyle: "long"});
- }
- 
- DownloadTreeView.prototype = {
-   QueryInterface: XPCOMUtils.generateQI([Ci.nsITreeView]),
- 
-   // ***** nsITreeView attributes and methods *****
-   get rowCount() {
-     return this._dlList.length;
-diff --git a/suite/components/feeds/FeedWriter.js b/suite/components/feeds/FeedWriter.js
---- a/suite/components/feeds/FeedWriter.js
-+++ b/suite/components/feeds/FeedWriter.js
-@@ -267,17 +267,17 @@ FeedWriter.prototype = {
- 
-     return this._dateFormatter.format(dateObj);
-   },
- 
-   __dateFormatter: null,
-   get _dateFormatter() {
-     if (!this.__dateFormatter) {
-       const dtOptions = { timeStyle: "short", dateStyle: "long" };
--      this.__dateFormatter = Services.intl.createDateTimeFormat(undefined, dtOptions);
-+      this.__dateFormatter = new Services.intl.DateTimeFormat(undefined, dtOptions);
-     }
-     return this.__dateFormatter;
-   },
- 
-   /**
-    * Returns the feed type.
-    */
-   __feedType: null,
-diff --git a/suite/components/permissions/content/cookieViewer.js b/suite/components/permissions/content/cookieViewer.js
---- a/suite/components/permissions/content/cookieViewer.js
-+++ b/suite/components/permissions/content/cookieViewer.js
-@@ -150,17 +150,17 @@ function GetExpiresString(expires) {
-   if (expires) {
-     var date = new Date(1000*expires);
- 
-     // if a server manages to set a really long-lived cookie, the dateservice
-     // can't cope with it properly, so we'll just return a blank string
-     // see bug 238045 for details
-     var expiry = "";
-     try {
--      const dateTimeFormatter = Services.intl.createDateTimeFormat(undefined, {
-+      const dateTimeFormatter = new Services.intl.DateTimeFormat(undefined, {
-                                 dateStyle: "full", timeStyle: "long" });
-       expiry = dateTimeFormatter.format(date);
-     } catch(ex) {
-       // do nothing
-     }
-     return expiry;
-   }
-   return cookieBundle.getString("expireAtEndOfSession");
-diff --git a/suite/components/places/content/places.js b/suite/components/places/content/places.js
---- a/suite/components/places/content/places.js
-+++ b/suite/components/places/content/places.js
-@@ -391,17 +391,17 @@ var PlacesOrganizer = {
-    * Populates the restore menu with the dates of the backups available.
-    */
-   populateRestoreMenu: function PO_populateRestoreMenu() {
-     let restorePopup = document.getElementById("fileRestorePopup");
- 
-     const dtOptions = {
-       dateStyle: "long"
-     };
--    let dateFormatter = Services.intl.createDateTimeFormat(undefined, dtOptions);
-+    let dateFormatter = new Services.intl.DateTimeFormat(undefined, dtOptions);
- 
-     // Remove existing menu items.  Last item is the restoreFromFile item.
-     while (restorePopup.childNodes.length > 1)
-       restorePopup.firstChild.remove();
- 
-     (async function() {
-       let backupFiles = await PlacesBackups.getBackupFiles();
-       if (backupFiles.length == 0)
-diff --git a/suite/components/places/content/treeView.js b/suite/components/places/content/treeView.js
---- a/suite/components/places/content/treeView.js
-+++ b/suite/components/places/content/treeView.js
-@@ -551,29 +551,29 @@ PlacesTreeView.prototype = {
-   },
- 
-   // We use a different formatter for times within the current day,
-   // so we cache both a "today" formatter and a general date formatter.
-   __todayFormatter: null,
-   get _todayFormatter() {
-     if (!this.__todayFormatter) {
-       const dtOptions = { timeStyle: "short" };
--      this.__todayFormatter = Services.intl.createDateTimeFormat(undefined, dtOptions);
-+      this.__todayFormatter = new Services.intl.DateTimeFormat(undefined, dtOptions);
-     }
-     return this.__todayFormatter;
-   },
- 
-   __dateFormatter: null,
-   get _dateFormatter() {
-     if (!this.__dateFormatter) {
-       const dtOptions = {
-         dateStyle: "short",
-         timeStyle: "short"
-       };
--      this.__dateFormatter = Services.intl.createDateTimeFormat(undefined, dtOptions);
-+      this.__dateFormatter = new Services.intl.DateTimeFormat(undefined, dtOptions);
-     }
-     return this.__dateFormatter;
-   },
- 
-   COLUMN_TYPE_UNKNOWN: 0,
-   COLUMN_TYPE_TITLE: 1,
-   COLUMN_TYPE_URI: 2,
-   COLUMN_TYPE_DATE: 3,
-diff --git a/suite/components/places/tests/chrome/test_treeview_date.xul b/suite/components/places/tests/chrome/test_treeview_date.xul
---- a/suite/components/places/tests/chrome/test_treeview_date.xul
-+++ b/suite/components/places/tests/chrome/test_treeview_date.xul
-@@ -126,17 +126,17 @@
-                 if (node.uri == "http://at.midnight.com/" ||
-                     node.uri == "http://after.midnight.com/") {
-                   dtOptions.dateStyle = undefined;
-                 } else if (node.uri != "http://before.midnight.com/") {
-                   // Avoid to test spurious uris, due to how the test works
-                   // a redirecting uri could be put in the tree while we test.
-                   break;
-                 }
--                let timeStr = Services.intl.createDateTimeFormat(undefined, dtOptions).format(timeObj);
-+                let timeStr = new Services.intl.DateTimeFormat(undefined, dtOptions).format(timeObj);
-                 is(text, timeStr, "Date format is correct");
-                 break;
-               case "visitCount":
-                 is(text, 1, "Visit count is correct");
-                 break;
-             }
-           }
-         }
-diff --git a/suite/mailnews/components/addrbook/content/abCardViewOverlay.js b/suite/mailnews/components/addrbook/content/abCardViewOverlay.js
---- a/suite/mailnews/components/addrbook/content/abCardViewOverlay.js
-+++ b/suite/mailnews/components/addrbook/content/abCardViewOverlay.js
-@@ -246,23 +246,23 @@ function DisplayCardViewPane(realCard)
-     if (day > 0 && day < 32 && month > 0 && month < 13) {
-       var date;
-       var formatter;
-       if (year) {
-         // use UTC-based calculations to avoid off-by-one day
-         // due to time zone/dst discontinuity
-         date = new Date(Date.UTC(year, month - 1, day));
-         date.setUTCFullYear(year); // to handle two-digit years properly
--        formatter = Services.intl.createDateTimeFormat(undefined,
-+        formatter = new Services.intl.DateTimeFormat(undefined,
-                        { dateStyle: "long", timeZone: "UTC" });
-       }
-       // if the year doesn't exist, display Month DD (ex. January 1)
-       else {
-         date = new Date(Date.UTC(saneBirthYear(year), month - 1, day));
--        formatter = Services.intl.createDateTimeFormat(undefined,
-+        formatter = new Services.intl.DateTimeFormat(undefined,
-                       { month: "long", day: "numeric", timeZone: "UTC" });
-       }
-       dateStr = formatter.format(date);
-     }
-     else if (year)
-       dateStr = year;
-     visible = cvSetNodeWithLabel(data.cvBirthday, zBirthday, dateStr);
- 

+ 0 - 120
comm-esr60/comm-esr60/patches/1442925-257.patch

@@ -1,120 +0,0 @@
-# HG changeset patch
-# User Frank-Rainer Grahl <frgrahl@gmx.net>
-# Date 1520775649 -3600
-# Node ID 1cb55e399e917d4f48c2f73a001cd6d1653670f5
-# Parent  e59cc8b3e0c935f4111062e874aed3b604477cf5
-Bug 1442925 - Fix TypeError: this._textbox.FormHistory in Searchbar. r=IanN a=frg
-
-diff --git a/suite/components/search/content/search.xml b/suite/components/search/content/search.xml
---- a/suite/components/search/content/search.xml
-+++ b/suite/components/search/content/search.xml
-@@ -74,27 +74,23 @@
-       <constructor><![CDATA[
-         if (this.parentNode.parentNode.localName == "toolbarpaletteitem")
-           return;
- 
-         if (this.usePrivateBrowsing)
-           this._textbox.searchParam += "|private";
- 
-         this.searchService.init(this);
--        var os = Cc["@mozilla.org/observer-service;1"]
--                   .getService(Ci.nsIObserverService);
--        os.addObserver(this, "browser-search-engine-modified", false);
-+        Services.obs.addObserver(this, "browser-search-engine-modified");
-         this._addedObserver = true;
-       ]]></constructor>
- 
-       <destructor><![CDATA[
-         if (this._addedObserver) {
--          var os = Cc["@mozilla.org/observer-service;1"]
--                     .getService(Ci.nsIObserverService);
--          os.removeObserver(this, "browser-search-engine-modified");
-+          Services.obs.removeObserver(this, "browser-search-engine-modified");
-           this._addedObserver = false;
-         }
- 
-         // Make sure to break the cycle from _textbox to us. Otherwise we leak
-         // the world. But make sure it's actually pointing to us.
-         // Also make sure the textbox has ever been constructed, otherwise the
-         // _textbox getter will cause the textbox constructor to run, add an
-         // observer, and leak the world too.
-@@ -119,17 +115,21 @@
-         window.QueryInterface(Ci.nsIInterfaceRequestor)
-               .getInterface(Ci.nsIWebNavigation)
-               .QueryInterface(Ci.nsILoadContext)
-               .usePrivateBrowsing;
-       </field>
-       <field name="_addedObserver">false</field>
-       <field name="_engines">null</field>
-       <field name="_needToBuildPopup">true</field>
--
-+      <field name="FormHistory" readonly="true"><![CDATA[
-+        (ChromeUtils.import("resource://gre/modules/FormHistory.jsm", {}))
-+                    .FormHistory;
-+        ]]>
-+      </field>
-       <property name="engines" readonly="true">
-         <getter><![CDATA[
-           if (!this._engines)
-             this._engines = this.searchService.getVisibleEngines();
-           return this._engines;
-         ]]></getter>
-       </property>
- 
-@@ -458,27 +458,27 @@
-           this.doSearch(textValue, where);
-         ]]></body>
-       </method>
- 
-       <method name="doSearch">
-         <parameter name="aData"/>
-         <parameter name="aWhere"/>
-         <body><![CDATA[
-+          var textBox = this._textbox;
-+
-           // Save the current value in the form history.
--          if (aData && !this.usePrivateBrowsing) {
--            this._textbox.FormHistory.update({
--              op : "bump",
--              fieldname : "searchbar-history",
--              value : aData
--            }, {
--              handleError : function(aError) {
--                Cu.reportError("Saving search to form history failed: " + aError.message);
--              }
--            });
-+          if (aData && !this.usePrivateBrowsing && this.FormHistory.enabled) {
-+            this.FormHistory.update(
-+              { op: "bump",
-+                fieldname: textBox.getAttribute("autocompletesearchparam"),
-+                value: aData },
-+              { handleError(aError) {
-+                  Cu.reportError("Saving search to form history failed: " + aError.message);
-+              }});
-           }
- 
-           // null parameter below specifies HTML response for search
-           var submission = this.currentEngine.getSubmission(aData);
-           openUILinkIn(submission.uri.spec, aWhere, null, submission.postData);
-         ]]></body>
-       </method>
-     </implementation>
-@@ -533,18 +533,16 @@
-         // Add items to context menu and attach controller to handle them
-         this.controllers.appendController(this.searchbarController);
-         document.getBindingParent(this)._textboxInitialized = true;
- 
-         // Add observer for suggest preference
-         this._prefBranch.addObserver("browser.search.suggest.enabled", this, false);
- 
-         this._inputBox.setAttribute("suggestchecked", this._suggestEnabled);
--
--        ChromeUtils.import("resource://gre/modules/FormHistory.jsm", this);
-       ]]></constructor>
- 
-       <destructor><![CDATA[
-           this._prefBranch.removeObserver("browser.search.suggest.enabled", this);
- 
-         // Because XBL and the customize toolbar code interacts poorly,
-         // there may not be anything to remove here
-         try {

+ 0 - 1334
comm-esr60/comm-esr60/patches/1442985-62.patch

@@ -1,1334 +0,0 @@
-# HG changeset patch
-# User eslint <eslint@bugzilla.kewis.ch>
-# Date 1525077138 -7200
-#      Mo Apr 30 10:32:18 2018 +0200
-# Node ID 0698244578e94f305e64cb31e484eb969b79c3cf
-# Parent  de0531a8e1c123454b28d123330a8cb44fb7044c
-Bug 1442985 - Extend eslint coverage for calendar. r=philipp
-
-This patch was created by makemyday@gmx-topmail.de - I just borrowed
-Philipp's eslint user for more transparency when using blame
-
-diff --git a/.eslintignore b/.eslintignore
---- a/.eslintignore
-+++ b/.eslintignore
-@@ -31,12 +31,8 @@ suite/**
- # calendar/ exclusions
- 
- # prefs files
- calendar/lightning/content/lightning.js
- calendar/locales/en-US/lightning-l10n.js
- 
- # third party library
- calendar/base/modules/ical.js
--
--# preprocessed files
--calendar/base/content/dialogs/calendar-migration-dialog.js
--calendar/base/content/calendar-dnd-listener.js
-diff --git a/calendar/base/content/calendar-dnd-listener.js b/calendar/base/content/calendar-dnd-listener.js
---- a/calendar/base/content/calendar-dnd-listener.js
-+++ b/calendar/base/content/calendar-dnd-listener.js
-@@ -3,38 +3,43 @@
-  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
- 
- ChromeUtils.import("resource://calendar/modules/calUtils.jsm");
- ChromeUtils.import("resource://gre/modules/Services.jsm");
- ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
- ChromeUtils.import("resource://gre/modules/Preferences.jsm");
- ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
- 
-+/* exported invokeEventDragSession, calendarViewDNDObserver,
-+ *          calendarMailButtonDNDObserver, calendarCalendarButtonDNDObserver,
-+ *          calendarTaskButtonDNDObserver
-+ */
-+
- var itemConversion = {
- 
-     /**
-      * Converts an email message to a calendar item.
-      *
-      * @param aItem     The target calIItemBase.
-      * @param aMessage  The nsIMsgHdr to convert from.
-      */
--    calendarItemFromMessage: function iC_calendarItemFromMessage(aItem, aMsgHdr) {
-+    calendarItemFromMessage: function(aItem, aMsgHdr) {
-         let msgFolder = aMsgHdr.folder;
-         let msgUri = msgFolder.getUriForMsg(aMsgHdr);
- 
-         aItem.calendar = getSelectedCalendar();
-         aItem.title = aMsgHdr.mime2DecodedSubject;
- 
-         cal.dtz.setDefaultStartEndHour(aItem);
-         cal.alarms.setDefaultValues(aItem);
- 
--        let messenger = Components.classes["@mozilla.org/messenger;1"]
--                                  .createInstance(Components.interfaces.nsIMessenger);
--        let streamListener = Components.classes["@mozilla.org/network/sync-stream-listener;1"]
--                                       .createInstance(Components.interfaces.nsISyncStreamListener);
-+        let messenger = Cc["@mozilla.org/messenger;1"]
-+                        .createInstance(Ci.nsIMessenger);
-+        let streamListener = Cc["@mozilla.org/network/sync-stream-listener;1"]
-+                             .createInstance(Ci.nsISyncStreamListener);
-         messenger.messageServiceFromURI(msgUri).streamMessage(msgUri,
-                                                               streamListener,
-                                                               null,
-                                                               null,
-                                                               false,
-                                                               "",
-                                                               false);
- 
-@@ -52,32 +57,33 @@ var itemConversion = {
-     /**
-      * Copy base item properties from aItem to aTarget. This includes properties
-      * like title, location, description, priority, transparency,
-      * attendees, categories, calendar, recurrence and possibly more.
-      *
-      * @param aItem     The item to copy from.
-      * @param aTarget   the item to copy to.
-      */
--    copyItemBase: function iC_copyItemBase(aItem, aTarget) {
--        const copyProps = ["SUMMARY", "LOCATION", "DESCRIPTION",
--                           "URL", "CLASS", "PRIORITY"];
-+    copyItemBase: function(aItem, aTarget) {
-+        const copyProps = [
-+            "SUMMARY", "LOCATION", "DESCRIPTION", "URL", "CLASS", "PRIORITY"
-+        ];
- 
--        for (var prop of copyProps) {
-+        for (let prop of copyProps) {
-             aTarget.setProperty(prop, aItem.getProperty(prop));
-         }
- 
-         // Attendees
--        var attendees = aItem.getAttendees({});
--        for (var attendee of attendees) {
-+        let attendees = aItem.getAttendees({});
-+        for (let attendee of attendees) {
-             aTarget.addAttendee(attendee.clone());
-         }
- 
-         // Categories
--        var categories = aItem.getCategories({});
-+        let categories = aItem.getCategories({});
-         aTarget.setCategories(categories.length, categories);
- 
-         // Organizer
-         aTarget.organizer = (aItem.organizer ? aItem.organizer.clone() : null);
- 
-         // Calendar
-         aTarget.calendar = getSelectedCalendar();
- 
-@@ -90,57 +96,57 @@ var itemConversion = {
- 
-     /**
-      * Creates a task from the passed event. This function copies the base item
-      * and a few event specific properties (dates, alarms, ...).
-      *
-      * @param aEvent    The event to copy from.
-      * @return          The resulting task.
-      */
--    taskFromEvent: function iC_taskFromEvent(aEvent) {
-+    taskFromEvent: function(aEvent) {
-         let item = cal.createTodo();
- 
-         this.copyItemBase(aEvent, item);
- 
-         // Dates and alarms
-         if (!aEvent.startDate.isDate && !aEvent.endDate.isDate) {
-             // Dates
-             item.entryDate = aEvent.startDate.clone();
-             item.dueDate = aEvent.endDate.clone();
- 
-             // Alarms
-             for (let alarm of aEvent.getAlarms({})) {
-                 item.addAlarm(alarm.clone());
-             }
--            item.alarmLastAck = (aEvent.alarmLastAck ?
--                                 aEvent.alarmLastAck.clone() :
--                                 null);
-+            item.alarmLastAck = aEvent.alarmLastAck
-+                                ? aEvent.alarmLastAck.clone()
-+                                : null;
-         }
- 
-         // Map Status values
-         let statusMap = {
--            "TENTATIVE": "NEEDS-ACTION",
--            "CONFIRMED": "IN-PROCESS",
--            "CANCELLED": "CANCELLED"
-+            TENTATIVE: "NEEDS-ACTION",
-+            CONFIRMED: "IN-PROCESS",
-+            CANCELLED: "CANCELLED"
-         };
-         if (aEvent.getProperty("STATUS") in statusMap) {
-             item.setProperty("STATUS", statusMap[aEvent.getProperty("STATUS")]);
-         }
-         return item;
-     },
- 
-     /**
-      * Creates an event from the passed task. This function copies the base item
-      * and a few task specific properties (dates, alarms, ...). If the task has
-      * no due date, the default event length is used.
-      *
-      * @param aTask     The task to copy from.
-      * @return          The resulting event.
-      */
--    eventFromTask: function iC_eventFromTask(aTask) {
-+    eventFromTask: function(aTask) {
-         let item = cal.createEvent();
- 
-         this.copyItemBase(aTask, item);
- 
-         // Dates and alarms
-         item.startDate = aTask.entryDate;
-         if (!item.startDate) {
-             if (aTask.dueDate) {
-@@ -158,19 +164,19 @@ var itemConversion = {
-             item.endDate = item.startDate.clone();
-             item.endDate.minute += Preferences.get("calendar.event.defaultlength", 60);
-         }
- 
-         // Alarms
-         for (let alarm of aTask.getAlarms({})) {
-             item.addAlarm(alarm.clone());
-         }
--        item.alarmLastAck = (aTask.alarmLastAck ?
--                             aTask.alarmLastAck.clone() :
--                             null);
-+        item.alarmLastAck = aTask.alarmLastAck
-+                            ? aTask.alarmLastAck.clone()
-+                            : null;
- 
-         // Map Status values
-         let statusMap = {
-             "NEEDS-ACTION": "TENTATIVE",
-             "COMPLETED": "CONFIRMED",
-             "IN-PROCESS": "CONFIRMED",
-             "CANCELLED": "CANCELLED"
-         };
-@@ -186,174 +192,180 @@ var itemConversion = {
-  * @class calDNDBaseObserver
-  */
- function calDNDBaseObserver() {
-     cal.ASSERT(false, "Inheriting objects call calDNDBaseObserver!");
- }
- 
- calDNDBaseObserver.prototype = {
-     // initialize this class's members
--    initBase: function calDNDInitBase() {
-+    initBase: function() {
-     },
- 
--    getSupportedFlavours: function calDNDGetFlavors() {
--        var flavourSet = new FlavourSet();
-+    getSupportedFlavours: function() {
-+        let flavourSet = new FlavourSet();
-         flavourSet.appendFlavour("text/calendar");
-         flavourSet.appendFlavour("text/x-moz-url");
-         flavourSet.appendFlavour("text/x-moz-message");
-         flavourSet.appendFlavour("text/unicode");
-         flavourSet.appendFlavour("application/x-moz-file");
-         return flavourSet;
-     },
- 
-     /**
-      * Action to take when dropping the event.
-      */
- 
--    onDrop: function calDNDDrop(aEvent, aTransferData, aDragSession) {
--        var transferable = Components.classes["@mozilla.org/widget/transferable;1"]
--                           .createInstance(Components.interfaces.nsITransferable);
-+    onDrop: function(aEvent, aTransferData, aDragSession) {
-+        let transferable = Cc["@mozilla.org/widget/transferable;1"]
-+                           .createInstance(Ci.nsITransferable);
-         transferable.init(null);
-         transferable.addDataFlavor("text/calendar");
-         transferable.addDataFlavor("text/x-moz-url");
-         transferable.addDataFlavor("text/x-moz-message");
-         transferable.addDataFlavor("text/unicode");
-         transferable.addDataFlavor("application/x-moz-file");
- 
-         aDragSession.getData(transferable, 0);
- 
--        var data = new Object();
--        var bestFlavor = new Object();
--        var length = new Object();
-+        let data = new Object();
-+        let bestFlavor = new Object();
-+        let length = new Object();
-         transferable.getAnyTransferData(bestFlavor, data, length);
- 
-         try {
--            data = data.value.QueryInterface(Components.interfaces.nsISupportsString);
-+            data = data.value.QueryInterface(Ci.nsISupportsString);
-         } catch (exc) {
-             // we currently only supports strings:
-             return;
-         }
- 
-         // Treat unicode data with VEVENT in it as text/calendar
--        if (bestFlavor.value == "text/unicode" && data.toString().includes("VEVENT")) {
-+        if (bestFlavor.value == "text/unicode" &&
-+            data.toString().includes("VEVENT")) {
-             bestFlavor.value = "text/calendar";
-         }
- 
--        var destCal = getSelectedCalendar();
--        switch (bestFlavor.value) {
--            case "text/calendar":
-+         switch (bestFlavor.value) {
-+            case "text/calendar": {
-                 if (AppConstants.platform == "macosx") {
-                     // Mac likes to convert all \r to \n, we need to reverse this.
-                     data = data.data.replace(/\n\n/g, "\r\n");
-                 }
--                var parser = Components.classes["@mozilla.org/calendar/ics-parser;1"]
-+                let parser = Cc["@mozilla.org/calendar/ics-parser;1"]
-                              .createInstance(Components.interfaces.calIIcsParser);
-                 parser.parseString(data);
--                this.onDropItems(parser.getItems({}).concat(parser.getParentlessItems({})));
-+                this.onDropItems(
-+                    parser.getItems({}).concat(parser.getParentlessItems({}))
-+                );
-                 break;
--            case "text/unicode":
--                var droppedUrl = this.retrieveURLFromData(data, bestFlavor.value);
--                if (!droppedUrl)
-+            }
-+            case "text/unicode": {
-+                let droppedUrl = this.retrieveURLFromData(data, bestFlavor.value);
-+                if (!droppedUrl) {
-                     return;
--
--                var url = Services.io.newURI(droppedUrl);
-+                }
- 
--                var localFileInstance = Components.classes["@mozilla.org/file/local;1"]
--                                        .createInstance(Components.interfaces.nsILocalFile);
-+                let url = Services.io.newURI(droppedUrl);
-+
-+                let localFileInstance = Cc["@mozilla.org/file/local;1"]
-+                                        .createInstance(Ci.nsILocalFile);
-                 localFileInstance.initWithPath(url.path);
- 
--                var inputStream = Components.classes["@mozilla.org/network/file-input-stream;1"]
--                                  .createInstance(Components.interfaces.nsIFileInputStream);
-+                let inputStream = Cc["@mozilla.org/network/file-input-stream;1"]
-+                                  .createInstance(Ci.nsIFileInputStream);
-                 inputStream.init(localFileInstance,
-                                  MODE_RDONLY,
-                                  parseInt("0444", 8),
-                                  {});
- 
-                 try {
--                    //XXX support csv
--                    var importer = Components.classes["@mozilla.org/calendar/import;1?type=ics"]
--                                   .getService(Components.interfaces.calIImporter);
--                    var items = importer.importFromStream(inputStream, {});
-+                    // XXX support csv
-+                    let importer = Cc["@mozilla.org/calendar/import;1?type=ics"]
-+                                   .getService(Ci.calIImporter);
-+                    let items = importer.importFromStream(inputStream, {});
-                     this.onDropItems(items);
-                 }
-                 finally {
-                     inputStream.close();
-                 }
- 
-                 break;
-+            }
-             case "application/x-moz-file-promise":
--            case "text/x-moz-url":
--                var uri = Services.io.newURI(data.toString());
--                var loader = Components.classes["@mozilla.org/network/unichar-stream-loader;1"]
--                             .createInstance(Components.interfaces.nsIUnicharStreamLoader);
--                var channel = Services.io.newChannelFromURI2(uri,
-+            case "text/x-moz-url": {
-+                let uri = Services.io.newURI(data.toString());
-+                let loader = Cc["@mozilla.org/network/unichar-stream-loader;1"]
-+                             .createInstance(Ci.nsIUnicharStreamLoader);
-+                let channel = Services.io.newChannelFromURI2(uri,
-                                                              null,
-                                                              Services.scriptSecurityManager.getSystemPrincipal(),
-                                                              null,
--                                                             Components.interfaces.nsILoadInfo.SEC_ALLOW_CROSS_ORIGIN_DATA_IS_NULL,
--                                                             Components.interfaces.nsIContentPolicy.TYPE_OTHER);
--                channel.loadFlags |= Components.interfaces.nsIRequest.LOAD_BYPASS_CACHE;
-+                                                             Ci.nsILoadInfo.SEC_ALLOW_CROSS_ORIGIN_DATA_IS_NULL,
-+                                                             Ci.nsIContentPolicy.TYPE_OTHER);
-+                channel.loadFlags |= Ci.nsIRequest.LOAD_BYPASS_CACHE;
- 
--                var self = this;
--
--                var listener = {
-+                let self = this;
-+                let listener = {
- 
-                     // nsIUnicharStreamLoaderObserver:
-                     onDetermineCharset: function(loader, context, firstSegment, length) {
--                        var charset = null;
-+                        let charset = null;
-                         if (loader && loader.channel) {
-                             charset = channel.contentCharset;
-                         }
-                         if (!charset || charset.length == 0) {
-                             charset = "UTF-8";
-                         }
-                         return charset;
-                     },
- 
-                     onStreamComplete: function(loader, context, status, unicharString) {
--                        var parser = Components.classes["@mozilla.org/calendar/ics-parser;1"]
--                                     .createInstance(Components.interfaces.calIIcsParser);
-+                        let parser = Cc["@mozilla.org/calendar/ics-parser;1"]
-+                                     .createInstance(Ci.calIIcsParser);
-                         parser.parseString(unicharString);
-                         self.onDropItems(parser.getItems({}).concat(parser.getParentlessItems({})));
-                     }
-                 };
- 
-                 try {
--                    loader.init(listener, Components.interfaces.nsIUnicharStreamLoader.DEFAULT_SEGMENT_SIZE);
-+                    loader.init(listener, Ci.nsIUnicharStreamLoader.DEFAULT_SEGMENT_SIZE);
-                     channel.asyncOpen(loader, null);
-                 } catch(e) {
--                    Components.utils.reportError(e)
-+                    cal.ERROR(e);
-                 }
-                 break;
-+            }
-             case "text/x-moz-message":
-                 this.onDropMessage(messenger.msgHdrFromURI(data));
-                 break;
-             default:
--                cal.ASSERT(false, "unknown data flavour:" + bestFlavor.value+'\n');
-+                cal.ASSERT(false, "unknown data flavour:" + bestFlavor.value+"\n");
-                 break;
-         }
-     },
- 
--    onDragStart: function calDNDStart(aEvent, aTransferData, aDragAction) {},
--    onDragOver: function calDNDOver(aEvent, aFlavor, aDragSession) {},
--    onDragExit: function calDNDExit(aEvent, aDragSession) {},
-+    onDragStart: function(aEvent, aTransferData, aDragAction) {},
-+    onDragOver: function(aEvent, aFlavor, aDragSession) {},
-+    onDragExit: function(aEvent, aDragSession) {},
- 
--    onDropItems: function calDNDDropItems(aItems) {},
--    onDropMessage: function calDNDDropMessage(aMessage) {},
-+    onDropItems: function(aItems) {},
-+    onDropMessage: function(aMessage) {},
- 
- 
--    retrieveURLFromData: function calDNDRetrieveURL(aData, aFlavor) {
--        var data;
-+    retrieveURLFromData: function(aData, aFlavor) {
-         switch (aFlavor) {
--            case "text/unicode":
--                data = aData.toString();
--                var separator = data.indexOf("\n");
--                if (separator != -1)
-+            case "text/unicode": {
-+                let data = aData.toString();
-+                let separator = data.indexOf("\n");
-+                if (separator != -1) {
-                     data = data.substr(0, separator);
-+                }
-                 return data;
-+            }
-             case "application/x-moz-file":
-                 return aData.URL;
-             default:
-                 return null;
-         }
-     }
- };
- 
-@@ -383,18 +395,17 @@ calViewDNDObserver.prototype = {
-         startBatchTransaction();
-         // we fall back explicitely to the popup to ask whether to send a
-         // notification to partticipants if required
-         let extResp = { responseMode: Ci.calIItipItem.USER };
-         try {
-             for (let item of aItems) {
-                 doTransaction("add", item, destCal, null, null, extResp);
-             }
--        }
--        finally {
-+        } finally {
-             endBatchTransaction();
-         }
-     }
- };
- 
- /**
-  * calMailButtonDNDObserver::calMailButtonDNDObserver
-  *
-@@ -456,18 +467,18 @@ calCalendarButtonDNDObserver.prototype =
-      * calCalendarButtonDNDObserver::onDropItems
-      *
-      * Gets called in case we're dropping an array of items
-      * on the 'calendar mode'-button.
-      *
-      * @param aItems        An array of items to handle.
-      */
-     onDropItems: function(aItems) {
--        for (var item of aItems) {
--            var newItem = item;
-+        for (let item of aItems) {
-+            let newItem = item;
-             if (cal.item.isToDo(item)) {
-                 newItem = itemConversion.eventFromTask(item);
-             }
-             createEventWithDialog(null, null, null, null, newItem);
-         }
-     },
- 
-     /**
-@@ -476,17 +487,17 @@ calCalendarButtonDNDObserver.prototype =
-      * Gets called in case we're dropping a message on the
-      * 'calendar mode'-button. In this case we create a new
-      * event from the mail. We open the default event dialog
-      * and just use the subject of the message as the event title.
-      *
-      * @param aMessage     The message to handle.
-      */
-     onDropMessage: function(aMessage) {
--        var newItem = cal.createEvent();
-+        let newItem = cal.createEvent();
-         itemConversion.calendarItemFromMessage(newItem, aMessage);
-         createEventWithDialog(null, null, null, null, newItem);
-     }
- };
- 
- /**
-  * calTaskButtonDNDObserver::calTaskButtonDNDObserver
-  *
-@@ -505,90 +516,90 @@ calTaskButtonDNDObserver.prototype = {
-      * calTaskButtonDNDObserver::onDropItems
-      *
-      * Gets called in case we're dropping an array of items
-      * on the 'task mode'-button.
-      *
-      * @param aItems        An array of items to handle.
-      */
-     onDropItems: function(aItems) {
--        for (var item of aItems) {
--            var newItem = item;
-+        for (let item of aItems) {
-+            let newItem = item;
-             if (cal.item.isEvent(item)) {
-                 newItem = itemConversion.taskFromEvent(item);
-             }
-             createTodoWithDialog(null, null, null, newItem);
-         }
-     },
- 
-     /**
-      * calTaskButtonDNDObserver::onDropMessage
-      *
-      * Gets called in case we're dropping a message
-      * on the 'task mode'-button.
-      *
-      * @param aMessage     The message to handle.
-      */
-     onDropMessage: function(aMessage) {
--        var todo = cal.createTodo();
-+        let todo = cal.createTodo();
-         itemConversion.calendarItemFromMessage(todo, aMessage);
-         createTodoWithDialog(null, null, null, todo);
-     }
- };
- 
- /**
-  * Invoke a drag session for the passed item. The passed box will be used as a
-  * source.
-  *
-  * @param aItem     The item to drag.
-  * @param aXULBox   The XUL box to invoke the drag session from.
-  */
- function invokeEventDragSession(aItem, aXULBox) {
--    let transfer = Components.classes["@mozilla.org/widget/transferable;1"]
--                   .createInstance(Components.interfaces.nsITransferable);
-+    let transfer = Cc["@mozilla.org/widget/transferable;1"]
-+                   .createInstance(Ci.nsITransferable);
-     transfer.init(null);
-     transfer.addDataFlavor("text/calendar");
- 
-     let flavourProvider = {
--        QueryInterface: XPCOMUtils.generateQI([Components.interfaces.nsIFlavorDataProvider]),
-+        QueryInterface: XPCOMUtils.generateQI([Ci.nsIFlavorDataProvider]),
- 
-         item: aItem,
-         getFlavorData: function(aInTransferable, aInFlavor, aOutData, aOutDataLen) {
-             if ((aInFlavor == "application/vnd.x-moz-cal-event") ||
-                 (aInFlavor == "application/vnd.x-moz-cal-task")) {
-                 aOutData.value = aItem;
-                 aOutDataLen.value = 1;
-             } else {
-                 cal.ASSERT(false, "error:" + aInFlavor);
-             }
-         }
-     };
- 
-     if (cal.item.isEvent(aItem)) {
--      transfer.addDataFlavor("application/vnd.x-moz-cal-event");
--      transfer.setTransferData("application/vnd.x-moz-cal-event", flavourProvider, 0);
-+        transfer.addDataFlavor("application/vnd.x-moz-cal-event");
-+        transfer.setTransferData("application/vnd.x-moz-cal-event", flavourProvider, 0);
-     } else if (cal.item.isToDo(aItem)) {
--      transfer.addDataFlavor("application/vnd.x-moz-cal-task");
--      transfer.setTransferData("application/vnd.x-moz-cal-task", flavourProvider, 0);
-+        transfer.addDataFlavor("application/vnd.x-moz-cal-task");
-+        transfer.setTransferData("application/vnd.x-moz-cal-task", flavourProvider, 0);
-     }
- 
-     // Also set some normal data-types, in case we drag into another app
--    let serializer = Components.classes["@mozilla.org/calendar/ics-serializer;1"]
--                               .createInstance(Components.interfaces.calIIcsSerializer);
-+    let serializer = Cc["@mozilla.org/calendar/ics-serializer;1"]
-+                     .createInstance(Ci.calIIcsSerializer);
-     serializer.addItems([aItem], 1);
- 
--    let supportsString = Components.classes["@mozilla.org/supports-string;1"]
--                         .createInstance(Components.interfaces.nsISupportsString);
-+    let supportsString = Cc["@mozilla.org/supports-string;1"]
-+                         .createInstance(Ci.nsISupportsString);
-     supportsString.data = serializer.serializeToString();
-     transfer.setTransferData("text/calendar", supportsString, supportsString.data.length * 2);
-     transfer.setTransferData("text/unicode", supportsString, supportsString.data.length * 2);
- 
--    let action = Components.interfaces.nsIDragService.DRAGDROP_ACTION_MOVE;
--    let mutArray = Components.classes["@mozilla.org/array;1"]
--                   .createInstance(Components.interfaces.nsIMutableArray);
-+    let action = Ci.nsIDragService.DRAGDROP_ACTION_MOVE;
-+    let mutArray = Cc["@mozilla.org/array;1"]
-+                   .createInstance(Ci.nsIMutableArray);
-     mutArray.appendElement(transfer);
-     aXULBox.sourceObject = aItem;
-     try {
-         cal.getDragService().invokeDragSession(aXULBox, mutArray, null, action);
-     } catch (error) {
-         // Nothing done here because we only have to catch an exception that occurs when dragging
-         // is cancelled with ESC. This is an odd behaviour of the nativeDragService which we have
-         // have to cover.
-diff --git a/calendar/base/content/dialogs/calendar-migration-dialog.js b/calendar/base/content/dialogs/calendar-migration-dialog.js
---- a/calendar/base/content/dialogs/calendar-migration-dialog.js
-+++ b/calendar/base/content/dialogs/calendar-migration-dialog.js
-@@ -1,13 +1,12 @@
- /* This Source Code Form is subject to the terms of the Mozilla Public
-  * License, v. 2.0. If a copy of the MPL was not distributed with this
-  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
- 
--var SUNBIRD_UID = "{718e30fb-e89b-41dd-9da7-e25a45638b28}";
- var FIREFOX_UID = "{ec8030f7-c20a-464f-9b0e-13a3a9e97384}";
- 
- ChromeUtils.import("resource://calendar/modules/calUtils.jsm");
- ChromeUtils.import("resource://gre/modules/Services.jsm");
- ChromeUtils.import("resource://gre/modules/Preferences.jsm");
- ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
- 
- Components.utils.importGlobalProperties(["XMLHttpRequest"]);
-@@ -16,117 +15,116 @@ Components.utils.importGlobalProperties(
- // The front-end wizard bits.
- //
- var gMigrateWizard = {
-     /**
-      * Called from onload of the migrator window.  Takes all of the migrators
-      * that were passed in via window.arguments and adds them to checklist. The
-      * user can then check these off to migrate the data from those sources.
-      */
--    loadMigrators: function gmw_load() {
--        var listbox = document.getElementById("datasource-list");
-+    loadMigrators: function() {
-+        let listbox = document.getElementById("datasource-list");
- 
-         //XXX Once we have branding for lightning, this hack can go away
--        var props = Services.strings.createBundle("chrome://calendar/locale/migration.properties");
-+        let props = Services.strings.createBundle("chrome://calendar/locale/migration.properties");
- 
--        var wizard = document.getElementById("migration-wizard");
--        var desc = document.getElementById("wizard-desc");
-+        let wizard = document.getElementById("migration-wizard");
-+        let desc = document.getElementById("wizard-desc");
-         // Since we don't translate "Lightning"...
-         wizard.title = props.formatStringFromName("migrationTitle",
-                                                   ["Lightning"],
-                                                   1);
-         desc.textContent = props.formatStringFromName("migrationDescription",
-                                                       ["Lightning"],
-                                                       1);
- 
-         migLOG("migrators: " + window.arguments.length);
--        for (var migrator of window.arguments[0]) {
--            var listItem = document.createElement("listitem");
-+        for (let migrator of window.arguments[0]) {
-+            let listItem = document.createElement("listitem");
-             listItem.setAttribute("type", "checkbox");
-             listItem.setAttribute("checked", true);
-             listItem.setAttribute("label", migrator.title);
-             listItem.migrator = migrator;
-             listbox.appendChild(listItem);
-         }
-     },
- 
-     /**
-      * Called from the second page of the wizard.  Finds all of the migrators
-      * that were checked and begins migrating their data.  Also controls the
-      * progress dialog so the user can see what is happening. (somewhat)
-      */
--    migrateChecked: function gmw_migrate() {
--        var migrators = [];
-+    migrateChecked: function() {
-+        let migrators = [];
- 
-         // Get all the checked migrators into an array
--        var listbox = document.getElementById("datasource-list");
--        for (var i = listbox.childNodes.length-1; i >= 0; i--) {
-+        let listbox = document.getElementById("datasource-list");
-+        for (let i = listbox.childNodes.length-1; i >= 0; i--) {
-             if (listbox.childNodes[i].getAttribute("checked")) {
-                 migrators.push(listbox.childNodes[i].migrator);
-             }
-         }
- 
-         // If no migrators were checked, then we're done
-         if (migrators.length == 0) {
-             window.close();
-         }
- 
-         // Don't let the user get away while we're migrating
--        //XXX may want to wire this into the 'cancel' function once that's
-+        // XXX may want to wire this into the 'cancel' function once that's
-         //    written
--        var wizard = document.getElementById("migration-wizard");
-+        let wizard = document.getElementById("migration-wizard");
-         wizard.canAdvance = false;
-         wizard.canRewind = false;
- 
-         // We're going to need this for the progress meter's description
--        var props = Services.strings.createBundle("chrome://calendar/locale/migration.properties");
--        var label = document.getElementById("progress-label");
--        var meter = document.getElementById("migrate-progressmeter");
-+        let props = Services.strings.createBundle("chrome://calendar/locale/migration.properties");
-+        let label = document.getElementById("progress-label");
-+        let meter = document.getElementById("migrate-progressmeter");
- 
--        var i = 0;
-+        let i = 0;
-         // Because some of our migrators involve async code, we need this
-         // call-back function so we know when to start the next migrator.
-         function getNextMigrator() {
-             if (migrators[i]) {
--                var mig = migrators[i];
-+                let mig = migrators[i];
- 
-                 // Increment i to point to the next migrator
-                 i++;
-                 migLOG("starting migrator: " + mig.title);
-                 label.value = props.formatStringFromName("migratingApp",
--                                                         [mig.title],
--                                                         1);
-+                                                         [mig.title], 1);
-                 meter.value = (i-1)/migrators.length*100;
-                 mig.args.push(getNextMigrator);
- 
-                 try {
--                    mig.migrate.apply(mig, mig.args);
-+                    mig.migrate.apply(...mig.args);
-                 } catch (e) {
-                     migLOG("Failed to migrate: " + mig.title);
-                     migLOG(e);
-                     getNextMigrator();
-                 }
-             } else {
-                 migLOG("migration done");
-                 wizard.canAdvance = true;
-                 label.value = props.GetStringFromName("finished");
-                 meter.value = 100;
-                 gMigrateWizard.setCanRewindFalse();
-             }
--         }
-+        }
- 
-         // And get the first migrator
-         getNextMigrator();
--   },
-+    },
- 
-     /**
-      * Makes sure the wizard "back" button can not be pressed.
-      */
--    setCanRewindFalse: function gmw_finish() {
--        document.getElementById('migration-wizard').canRewind = false;
-+    setCanRewindFalse: function() {
-+        document.getElementById("migration-wizard").canRewind = false;
-     }
- };
- 
- //
- // The more back-end data detection bits
- //
- 
- 
-@@ -162,312 +160,310 @@ var gDataMigrator = {
- 
-     /**
-      * Call to do a general data migration (for a clean profile)  Will run
-      * through all of the known migrator-checkers.  These checkers will return
-      * an array of valid dataMigrator objects, for each kind of data they find.
-      * If there is at least one valid migrator, we'll pop open the migration
-      * wizard, otherwise, we'll return silently.
-      */
--    checkAndMigrate: function gdm_migrate() {
-+    checkAndMigrate: function() {
-         if (Services.appinfo.ID == FIREFOX_UID) {
-             this.mIsInFirefox = true;
-             // We can't handle Firefox Lightning yet
-             migLOG("Holy cow, you're Firefox-Lightning! sorry, can't help.");
-             return;
-         }
- 
-         this.mPlatform = Services.appinfo.OS.toLowerCase();
- 
-         migLOG("mPlatform is: " + this.mPlatform);
- 
--        var DMs = [];
--        var migrators = [this.checkOldCal,
--                         this.checkEvolution,
--                         this.checkWindowsMail,
--                         this.checkIcal];
-+        let DMs = [];
-+        let migrators = [
-+          this.checkOldCal, this.checkEvolution,
-+          this.checkWindowsMail, this.checkIcal
-+        ];
-         // XXX also define a category and an interface here for pluggability
--        for (var migrator of migrators) {
--            var migs = migrator.call(this);
--            for (var dm of migs) {
--                DMs.push(dm);
-+        for (let migrator of migrators) {
-+            let migs = migrator.call(this);
-+            for (let mig of migs) {
-+                DMs.push(mig);
-             }
-         }
- 
-         if (DMs.length == 0) {
-             // No migration available
-             return;
-         }
-         migLOG("DMs: " + DMs.length);
- 
--        var url = "chrome://calendar/content/calendar-migration-dialog.xul";
-+        let url = "chrome://calendar/content/calendar-migration-dialog.xul";
-         if (AppConstants.platform == "macosx") {
--            var win = Services.wm.getMostRecentWindow("Calendar:MigrationWizard");
-+            let win = Services.wm.getMostRecentWindow("Calendar:MigrationWizard");
-             if (win) {
-                 win.focus();
-             } else {
-                 openDialog(url, "migration", "centerscreen,chrome,resizable=no,width=500,height=400", DMs);
-             }
-         } else {
-             openDialog(url, "migration", "modal,centerscreen,chrome,resizable=no,width=500,height=400", DMs);
-         }
-     },
- 
-     /**
-      * Checks to see if we can find any traces of an older moz-cal program.
-      * This could be either the old calendar-extension, or Sunbird 0.2.  If so,
-      * it offers to move that data into our new storage format.
-      */
--    checkOldCal: function gdm_calold() {
-+    checkOldCal: function() {
-         migLOG("Checking for the old calendar extension/app");
- 
-         // This is the function that the migration wizard will call to actually
-         // migrate the data.  It's defined here because we may use it multiple
-         // times (with different aProfileDirs), for instance if there is both
-         // a Thunderbird and Firefox cal-extension
-         function extMigrator(aProfileDir, aCallback) {
-             // Get the old datasource
--            var dataSource = aProfileDir.clone();
-+            let dataSource = aProfileDir.clone();
-             dataSource.append("CalendarManager.rdf");
-             if (!dataSource.exists()) {
-                 return;
-             }
- 
-             // Let this be a lesson to anyone designing APIs. The RDF API is so
-             // impossibly confusing that it's actually simpler/cleaner/shorter
-             // to simply parse as XML and use the better DOM APIs.
--            var req = new XMLHttpRequest();
--            req.open('GET', "file://" + dataSource.path, true);
--            req.onreadystatechange = function calext_onreadychange() {
-+            let req = new XMLHttpRequest();
-+            req.open("GET", "file://" + dataSource.path, true);
-+            req.onreadystatechange = function() {
-                 if (req.readyState == 4) {
-                     migLOG(req.responseText);
--                    parseAndMigrate(req.responseXML, aCallback)
-+                    parseAndMigrate(req.responseXML, aCallback);
-                 }
-             };
-             req.send(null);
-         }
- 
-         // Callback from the XHR above.  Parses CalendarManager.rdf and imports
-         // the data describe therein.
-         function parseAndMigrate(aDoc, aCallback) {
--            // For duplicate detection
--            var calManager = cal.getCalendarManager();
--            var uris = [];
--            for (var oldCal of calManager.getCalendars({})) {
--                uris.push(oldCal.uri);
--            }
--
-             function getRDFAttr(aNode, aAttr) {
-                 return aNode.getAttributeNS("http://home.netscape.com/NC-rdf#",
-                                             aAttr);
-             }
- 
-+            // For duplicate detection
-+            let calManager = cal.getCalendarManager();
-+            let uris = [];
-+            for (let oldCal of calManager.getCalendars({})) {
-+                uris.push(oldCal.uri);
-+            }
-+
-             const RDFNS = "http://www.w3.org/1999/02/22-rdf-syntax-ns#";
--            var nodes = aDoc.getElementsByTagNameNS(RDFNS, "Description");
-+            let nodes = aDoc.getElementsByTagNameNS(RDFNS, "Description");
-             migLOG("nodes: " + nodes.length);
--            for (var i = 0; i < nodes.length; i++) {
-+            for (let i = 0; i < nodes.length; i++) {
-                 migLOG("Beginning calendar node");
--                var calendar;
--                var node = nodes[i];
-+                let calendar;
-+                let node = nodes[i];
-                 if (getRDFAttr(node, "remote") == "false") {
-                     migLOG("not remote");
--                    var localFile = Components.classes["@mozilla.org/file/local;1"]
--                                    .createInstance(Components.interfaces.nsILocalFile);
-+                    let localFile = Cc["@mozilla.org/file/local;1"]
-+                                    .createInstance(Ci.nsIFile);
-                     localFile.initWithPath(getRDFAttr(node, "path"));
-                     calendar = gDataMigrator.importICSToStorage(localFile);
-                 } else {
-                     // Remote subscription
-                     // XXX check for duplicates
--                    var url = Services.io.newURI(getRDFAttr(node, "remotePath"));
-+                    let url = Services.io.newURI(getRDFAttr(node, "remotePath"));
-                     calendar = calManager.createCalendar("ics", url);
-                 }
-                 calendar.name = getRDFAttr(node, "name");
-                 calendar.setProperty("color", getRDFAttr(node, "color"));
-                 calManager.registerCalendar(calendar);
-                 cal.view.getCompositeCalendar(window).addCalendar(calendar);
-             }
-             aCallback();
-         }
- 
--        var migrators = [];
-+        migLOG("Checking for the old calendar extension/app");
-+        let migrators = [];
- 
-         // Look in our current profile directory, in case we're upgrading in
-         // place
--        var profileDir = this.dirService.get("ProfD", Components.interfaces.nsILocalFile);
-+        let profileDir = this.dirService.get("ProfD", Components.interfaces.nsILocalFile);
-         profileDir.append("Calendar");
-         if (profileDir.exists()) {
-             migLOG("Found old extension directory in current app");
-             let title = "Mozilla Calendar Extension";
-             migrators.push(new dataMigrator(title, extMigrator, [profileDir]));
-         }
- 
-         // Check the profiles of the various other moz-apps for calendar data
--        var profiles = [];
-+        let profiles = [];
- 
-         // Do they use Firefox?
--        var ffProf, sbProf, tbProf;
-+        let ffProf, sbProf, tbProf;
-         if ((ffProf = this.getFirefoxProfile())) {
-             profiles.push(ffProf);
-         }
- 
-         // We're lightning, check Sunbird
-         if ((sbProf = this.getSunbirdProfile())) {
-             profiles.push(sbProf);
-         }
- 
-         // Now check all of the profiles in each of these folders for data
--        for (var prof of profiles) {
--            var dirEnum = prof.directoryEntries;
-+        for (let prof of profiles) {
-+            let dirEnum = prof.directoryEntries;
-             while (dirEnum.hasMoreElements()) {
--                var profile = dirEnum.getNext().QueryInterface(Components.interfaces.nsIFile);
-+                let profile = dirEnum.getNext().QueryInterface(Ci.nsIFile);
-                 if (profile.isFile()) {
-                     continue;
-                 } else {
-                     profile.append("Calendar");
-                     if (profile.exists()) {
-                         migLOG("Found old extension directory at" + profile.path);
--                        var title = "Mozilla Calendar";
-+                        let title = "Mozilla Calendar";
-                         migrators.push(new dataMigrator(title, extMigrator, [profile]));
-                     }
-                 }
-             }
-         }
- 
-         return migrators;
-     },
- 
-     /**
-      * Checks to see if Apple's iCal is installed and offers to migrate any data
-      * the user has created in it.
-      */
--    checkIcal: function gdm_ical() {
--        migLOG("Checking for ical data");
--
-+    checkIcal: function() {
-         function icalMigrate(aDataDir, aCallback) {
-             aDataDir.append("Sources");
--            var dirs = aDataDir.directoryEntries;
--            var calManager = cal.getCalendarManager();
-+            let dirs = aDataDir.directoryEntries;
-+            let calManager = cal.getCalendarManager();
- 
--            var i = 1;
-+            let i = 1;
-             while(dirs.hasMoreElements()) {
--                var dataDir = dirs.getNext().QueryInterface(Components.interfaces.nsIFile);
--                var dataStore = dataDir.clone();
-+                let dataDir = dirs.getNext().QueryInterface(Ci.nsIFile);
-+                let dataStore = dataDir.clone();
-                 dataStore.append("corestorage.ics");
-                 if (!dataStore.exists()) {
-                     continue;
-                 }
- 
--                var chars = [];
--                var fileStream = Components.classes["@mozilla.org/network/file-input-stream;1"]
--                                 .createInstance(Components.interfaces.nsIFileInputStream);
-+                let chars = [];
-+                let fileStream = Cc["@mozilla.org/network/file-input-stream;1"]
-+                                 .createInstance(Ci.nsIFileInputStream);
- 
-                 fileStream.init(dataStore, 0x01, parseInt("0444", 8), {});
--                var convStream = Components.classes["@mozilla.org/intl/converter-input-stream;1"]
--                                 .getService(Components.interfaces.nsIConverterInputStream);
--                                 convStream.init(fileStream, 'UTF-8', 0, 0x0000);
--                var tmpStr = {};
--                var str = "";
--                while (convStream.readString(-1, tmpStr)) {
-+                let convIStream = Cc["@mozilla.org/intl/converter-input-stream;1"]
-+                                  .getService(Ci.nsIConverterInputStream);
-+                convIStream.init(fileStream, 'UTF-8', 0, 0x0000);
-+                let tmpStr = {};
-+                let str = "";
-+                while (convIStream.readString(-1, tmpStr)) {
-                     str += tmpStr.value;
-                 }
- 
-                 // Strip out the timezone definitions, since it makes the file
-                 // invalid otherwise
--                var index = str.indexOf(";TZID=");
-+                let index = str.indexOf(";TZID=");
-                 while (index != -1) {
--                    var endIndex = str.indexOf(':', index);
--                    var otherEnd = str.indexOf(';', index+2);
-+                    let endIndex = str.indexOf(':', index);
-+                    let otherEnd = str.indexOf(';', index+2);
-                     if (otherEnd < endIndex) {
-                         endIndex = otherEnd;
-                     }
--                    var sub = str.substring(index, endIndex);
-+                    let sub = str.substring(index, endIndex);
-                     str = str.split(sub).join("");
-                     index = str.indexOf(";TZID=");
-                 }
--                var tempFile = gDataMigrator.dirService.get("TmpD", Components.interfaces.nsIFile);
-+                let tempFile = gDataMigrator.dirService.get("TmpD", Ci.nsIFile);
-                 tempFile.append("icalTemp.ics");
--                tempFile.createUnique(Components.interfaces.nsIFile.NORMAL_FILE_TYPE,
-+                tempFile.createUnique(Ci.nsIFile.NORMAL_FILE_TYPE,
-                                       parseInt("0600", 8));
--                var tempUri = Services.io.newFileURI(tempFile);
-+                let tempUri = Services.io.newFileURI(tempFile);
- 
--                var stream = Components.classes["@mozilla.org/network/file-output-stream;1"]
--                             .createInstance(Components.interfaces.nsIFileOutputStream);
-+                let stream = Cc["@mozilla.org/network/file-output-stream;1"]
-+                             .createInstance(Ci.nsIFileOutputStream);
-                 stream.init(tempFile, 0x2A, parseInt("0600", 8), 0);
--                var convStream = Components.classes["@mozilla.org/intl/converter-output-stream;1"]
--                                .createInstance(Components.interfaces.nsIConverterOutputStream);
--                convStream.init(stream, 'UTF-8');
--                convStream.writeString(str);
-+                let convOStream = Cc["@mozilla.org/intl/converter-output-stream;1"]
-+                                 .createInstance(Ci.nsIConverterOutputStream);
-+                convOStream.init(stream, 'UTF-8');
-+                convOStream.writeString(str);
- 
--                var calendar = gDataMigrator.importICSToStorage(tempFile);
-+                let calendar = gDataMigrator.importICSToStorage(tempFile);
-                 calendar.name = "iCalendar"+i;
-                 i++;
-                 calManager.registerCalendar(calendar);
-                 cal.view.getCompositeCalendar(window).addCalendar(calendar);
-             }
-             migLOG("icalMig making callback");
-             aCallback();
-         }
--        var profileDir = this.dirService.get("ProfD", Components.interfaces.nsILocalFile);
--        var icalSpec = profileDir.path;
--        var diverge = icalSpec.indexOf("Thunderbird");
-+        let profileDir = this.dirService.get("ProfD", Ci.nsIFile);
-+        let icalSpec = profileDir.path;
-+        let diverge = icalSpec.indexOf("Thunderbird");
-         if (diverge == -1) {
-             return [];
-         }
-         icalSpec = icalSpec.substr(0, diverge);
--        var icalFile = Components.classes["@mozilla.org/file/local;1"]
--                   .createInstance(Components.interfaces.nsILocalFile);
-+        let icalFile = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
-         icalFile.initWithPath(icalSpec);
-         icalFile.append("Application Support");
- 
-         icalFile.append("iCal");
-         if (icalFile.exists()) {
-             return [new dataMigrator("Apple iCal", icalMigrate, [icalFile])];
-         }
- 
-         return [];
-     },
- 
-     /**
-      * Checks to see if Evolution is installed and offers to migrate any data
-      * stored there.
-      */
--    checkEvolution: function gdm_evolution() {
-+    checkEvolution: function() {
-         function evoMigrate(aDataDir, aCallback) {
--            var i = 1;
--            function evoDataMigrate(dataStore) {
-+            let i = 1;
-+            let evoDataMigrate = function(dataStore) {
-                 migLOG("Migrating evolution data file in " + dataStore.path);
-                 if (dataStore.exists()) {
--                    var calendar = gDataMigrator.importICSToStorage(dataStore);
-+                    let calendar = gDataMigrator.importICSToStorage(dataStore);
-                     calendar.name = "Evolution " + (i++);
-                     calManager.registerCalendar(calendar);
-                     cal.view.getCompositeCalendar(window).addCalendar(calendar);
-                 }
-                 return dataStore.exists();
--            }
-+            };
- 
--            var calManager = cal.getCalendarManager();
--            var dirs = aDataDir.directoryEntries;
-+            let calManager = cal.getCalendarManager();
-+            let dirs = aDataDir.directoryEntries;
-             while (dirs.hasMoreElements()) {
--                var dataDir = dirs.getNext().QueryInterface(Components.interfaces.nsIFile);
--                var dataStore = dataDir.clone();
-+                let dataDir = dirs.getNext().QueryInterface(Ci.nsIFile);
-+                let dataStore = dataDir.clone();
-                 dataStore.append("calendar.ics");
-                 evoDataMigrate(dataStore);
-             }
- 
-             aCallback();
-         }
- 
--        var evoDir = this.dirService.get("Home", Components.interfaces.nsILocalFile);
-+        let evoDir = this.dirService.get("Home", Ci.nsIFile);
-         evoDir.append(".evolution");
-         evoDir.append("calendar");
-         evoDir.append("local");
-         return (evoDir.exists() ? [new dataMigrator("Evolution", evoMigrate, [evoDir])] : []);
-     },
- 
--    checkWindowsMail: function gdm_windowsMail() {
-+    checkWindowsMail: function() {
-         function doMigrate(aCalendarNodes, aMailDir, aCallback) {
-             let calManager = cal.getCalendarManager();
- 
-             for (let node of aCalendarNodes) {
-                 let name = node.getElementsByTagName("Name")[0].textContent;
-                 let color = node.getElementsByTagName("Color")[0].textContent;
-                 let enabled = node.getElementsByTagName("Enabled")[0].textContent == "True";
- 
-@@ -476,17 +472,17 @@ var gDataMigrator = {
-                 // color part.
-                 name = name.replace(/(^'|'$)/g, "");
-                 color = color.replace(/0x[0-9a-fA-F]{2}([0-9a-fA-F]{4})/, "#$1");
- 
-                 let calfile = aMailDir.clone();
-                 calfile.append(name + ".ics");
- 
-                 if (calfile.exists()) {
--                    let storage = gDataMigrator.importICSToStorage(calfile)
-+                    let storage = gDataMigrator.importICSToStorage(calfile);
-                     storage.name = name;
- 
-                     if (color) {
-                         storage.setProperty("color", color);
-                     }
-                     calManager.registerCalendar(storage);
- 
-                     if (enabled) {
-@@ -497,18 +493,17 @@ var gDataMigrator = {
-             aCallback();
-         }
- 
-         if (!this.dirService.has("LocalAppData")) {
-             // We are probably not on windows
-             return [];
-         }
- 
--        let maildir = this.dirService.get("LocalAppData",
--                                          Components.interfaces.nsILocalFile);
-+        let maildir = this.dirService.get("LocalAppData", Ci.nsIFile);
- 
-         maildir.append("Microsoft");
-         maildir.append("Windows Calendar");
-         maildir.append("Calendars");
- 
-         let settingsxml = maildir.clone();
-         settingsxml.append("Settings.xml");
- 
-@@ -517,58 +512,60 @@ var gDataMigrator = {
-             let settingsXmlUri = Services.io.newFileURI(settingsxml);
- 
-             let req = new XMLHttpRequest();
-             req.open("GET", settingsXmlUri.spec, false);
-             req.send(null);
-             if (req.status == 0) {
-                 // The file was found, it seems we are on windows vista.
-                 let doc = req.responseXML;
--                let root = doc.documentElement;
- 
-                 // Get all calendar property tags and return the migrator.
-                 let calendars = doc.getElementsByTagName("VCalendar");
-                 if (calendars.length > 0) {
-                     migrators = [new dataMigrator("Windows Calendar", doMigrate.bind(null, calendars, maildir))];
-                 }
-             }
-         }
-         return migrators;
-     },
- 
-     /**
-      * Creates and registers a storage calendar and imports the given ics file into it.
-      *
-      * @param icsFile     The nsI(Local)File to import.
-      */
--    importICSToStorage: function migrateIcsStorage(icsFile) {
--        const uri = 'moz-storage-calendar://';
--        let calendar = cal.getCalendarManager().createCalendar("storage", Services.io.newURI(uri));
--        let icsImporter = Components.classes["@mozilla.org/calendar/import;1?type=ics"]
--                                    .getService(Components.interfaces.calIImporter);
-+    importICSToStorage: function(icsFile) {
-+        const uri = "moz-storage-calendar://";
-+        let calendar = cal.getCalendarManager().createCalendar(
-+            "storage",
-+            Services.io.newURI(uri)
-+        );
-+        let icsImporter = Cc["@mozilla.org/calendar/import;1?type=ics"]
-+                          .getService(Ci.calIImporter);
- 
--        let inputStream = Components.classes["@mozilla.org/network/file-input-stream;1"]
--                                    .createInstance(Components.interfaces.nsIFileInputStream);
-+        let inputStream = Cc["@mozilla.org/network/file-input-stream;1"]
-+                          .createInstance(Ci.nsIFileInputStream);
-         let items = [];
- 
-         calendar.id = cal.getUUID();
- 
-         try {
-             inputStream.init(icsFile, MODE_RDONLY, parseInt("0444", 8), {});
-             items = icsImporter.importFromStream(inputStream, {});
--        } catch(ex) {
-+        } catch (ex) {
-             switch (ex.result) {
--                case Components.interfaces.calIErrors.INVALID_TIMEZONE:
-+                case Ci.calIErrors.INVALID_TIMEZONE:
-                     cal.showError(cal.l10n.getCalString("timezoneError", [icsFile.path]), window);
-                     break;
-                 default:
-                     cal.showError(cal.l10n.getCalString("unableToRead") + icsFile.path + "\n"+ ex, window);
-             }
-         } finally {
--           inputStream.close();
-+            inputStream.close();
-         }
- 
-         // Defined in import-export.js
-         putItemsIntoCal(calendar, items, icsFile.leafName);
- 
-         return calendar;
-     },
- 
-@@ -589,43 +586,43 @@ var gDataMigrator = {
-      * Thunderbird:
-      *     Unix:     ~jdoe/.thunderbird/
-      *     Windows:  %APPDATA%\Thunderbird\Profiles
-      *     Mac OS X: ~jdoe/Library/Thunderbird/Profiles
-      *
-      * Notice that Firefox and Sunbird follow essentially the same pattern, so
-      * we group them with getNormalProfile
-      */
--    getFirefoxProfile: function gdm_getFF() {
-+    getFirefoxProfile: function() {
-         return this.getNormalProfile("Firefox");
-     },
- 
-     /**
-      * @see getFirefoxProfile
-      */
--    getThunderbirdProfile: function gdm_getTB() {
--        let profileRoot = this.dirService.get("DefProfRt", Components.interfaces.nsILocalFile);
-+    getThunderbirdProfile: function() {
-+        let profileRoot = this.dirService.get("DefProfRt", Ci.nsIFile);
-         migLOG("searching for Thunderbird in " + profileRoot.path);
-         return profileRoot.exists() ? profileRoot : null;
-     },
- 
-     /**
-      * @see getFirefoxProfile
-      */
--    getSunbirdProfile: function gdm_getSB() {
-+    getSunbirdProfile: function() {
-         return this.getNormalProfile("Sunbird");
-     },
- 
-     /**
-      * Common function to retrieve the profile directory for a given app.
-      * @see getFirefoxProfile
-      */
--    getNormalProfile: function gdm_getNorm(aAppName) {
--        var localFile;
--        var profileRoot = this.dirService.get("DefProfRt", Components.interfaces.nsILocalFile);
-+    getNormalProfile: function(aAppName) {
-+        let localFile;
-+        let profileRoot = this.dirService.get("DefProfRt", Ci.nsIFile);
-         migLOG("profileRoot = " + profileRoot.path);
- 
-         switch (this.mPlatform) {
-             case "darwin": // Mac OS X
-                 localFile = profileRoot.parent.parent;
-                 localFile.append("Application Support");
-                 localFile.append(aAppName);
-                 localFile.append("Profiles");

+ 0 - 199
comm-esr60/comm-esr60/patches/1444379-1-64a1.patch

@@ -1,199 +0,0 @@
-# HG changeset patch
-# User Magnus Melin <mkmelin+mozilla@iki.fi>
-# Date 1538138549 -10800
-# Node ID 42792e593b1acf771d6a8ef560663d6a60162d3d
-# Parent  d4a76586b403a4951a4a6892257cc8992ce7a035
-Bug 1444379 - add error checking to call sites of GetDefaultPrompt() to avoid crash in nsMsgComposeAndSend::NotifyListenerOnStopCopy() and elsewhere. r=jorgk
-
-Especially for the shutdown case, it may not be possible to get a prompt
-
-diff --git a/mailnews/compose/src/nsMsgSend.cpp b/mailnews/compose/src/nsMsgSend.cpp
---- a/mailnews/compose/src/nsMsgSend.cpp
-+++ b/mailnews/compose/src/nsMsgSend.cpp
-@@ -458,24 +458,21 @@ nsMsgComposeAndSend::GatherMimeAttachmen
-   nsMsgSendPart* plainpart = nullptr;    // If we converted HTML into plaintext,
-                       // the message or child containing the plaintext
-                       // goes here. (Need to use this to determine
-                       // what headers to append/set to the main
-                       // message body.)
- 
-   uint32_t multipartRelatedCount = GetMultipartRelatedCount(); // The number of related part we will have to generate
- 
--  nsCOMPtr<nsIPrompt> promptObject; // only used if we have to show an alert here....
--  GetDefaultPrompt(getter_AddRefs(promptObject));
--
-   char *hdrs = 0;
-   bool maincontainerISrelatedpart = false;
-   const char * toppart_type = nullptr;
--
-   status = m_status;
-+
-   if (NS_FAILED(status))
-     goto FAIL;
- 
-   if (!m_attachment1_type) {
-     m_attachment1_type = PL_strdup(TEXT_PLAIN);
-     if (!m_attachment1_type)
-       goto FAILMEM;
-   }
-@@ -3251,17 +3248,18 @@ nsMsgComposeAndSend::DeliverMessage()
-     FormatFileSize(fileSize, true, formattedFileSize);
-     const char16_t* params[] = { formattedFileSize.get() };
-     mComposeBundle->FormatStringFromName("largeMessageSendWarning",
-                                          params, 1, msg);
- 
-     if (!msg.IsEmpty())
-     {
-       nsCOMPtr<nsIPrompt> prompt;
--      GetDefaultPrompt(getter_AddRefs(prompt));
-+      rv = GetDefaultPrompt(getter_AddRefs(prompt));
-+      NS_ENSURE_SUCCESS(rv, rv);
-       nsMsgAskBooleanQuestionByString(prompt, msg.get(), &abortTheSend);
-       if (!abortTheSend)
-       {
-         nsresult ignoreMe;
-         Fail(NS_ERROR_BUT_DONT_SHOW_ALERT, msg.get(), &ignoreMe);
-         return NS_ERROR_FAILURE;
-       }
-     }
-@@ -3289,19 +3287,16 @@ nsMsgComposeAndSend::DeliverFileAsMail()
-   buf = (char *) PR_Malloc ((mCompFields->GetTo() ? PL_strlen (mCompFields->GetTo())  + 10 : 0) +
-                (mCompFields->GetCc() ? PL_strlen (mCompFields->GetCc())  + 10 : 0) +
-                (mCompFields->GetBcc() ? PL_strlen (mCompFields->GetBcc()) + 10 : 0) +
-                10);
- 
-   if (mSendReport)
-     mSendReport->SetCurrentProcess(nsIMsgSendReport::process_SMTP);
- 
--  nsCOMPtr<nsIPrompt> promptObject;
--  GetDefaultPrompt(getter_AddRefs(promptObject));
--
-   if (!buf)
-   {
-     nsresult ignoreMe;
-     Fail(NS_ERROR_OUT_OF_MEMORY, nullptr, &ignoreMe);
-     NotifyListenerOnStopSending(nullptr, NS_ERROR_OUT_OF_MEMORY, nullptr, nullptr);
-     return NS_ERROR_OUT_OF_MEMORY;
-   }
- 
-@@ -3440,19 +3435,16 @@ nsMsgComposeAndSend::DeliverFileAsNews()
- {
-   nsresult rv = NS_OK;
-   if (!(mCompFields->GetNewsgroups()))
-     return rv;
- 
-   if (mSendReport)
-     mSendReport->SetCurrentProcess(nsIMsgSendReport::process_NNTP);
- 
--  nsCOMPtr<nsIPrompt> promptObject;
--  GetDefaultPrompt(getter_AddRefs(promptObject));
--
-   nsCOMPtr<nsINntpService> nntpService(do_GetService(NS_NNTPSERVICE_CONTRACTID, &rv));
- 
-   if (NS_SUCCEEDED(rv) && nntpService)
-   {
-     MsgDeliveryListener *deliveryListener = new MsgDeliveryListener(this, true);
-     if (!deliveryListener)
-       return NS_ERROR_OUT_OF_MEMORY;
- 
-@@ -3485,17 +3477,18 @@ nsMsgComposeAndSend::Fail(nsresult aFail
-                           nsresult *aResult)
- {
-   NS_ENSURE_ARG_POINTER(aResult);
-   *aResult = aFailureCode;
- 
-   if (NS_FAILED(aFailureCode))
-   {
-     nsCOMPtr<nsIPrompt> prompt;
--    GetDefaultPrompt(getter_AddRefs(prompt));
-+    nsresult rv = GetDefaultPrompt(getter_AddRefs(prompt));
-+    NS_ENSURE_SUCCESS(rv, rv);
- 
-     if (mSendReport)
-     {
-       int32_t process;
-       if (NS_SUCCEEDED(mSendReport->GetCurrentProcess(&process)) && process == nsIMsgSendReport::process_Current)
-       {
-         // currentProcess isn't set yet, so we need another value.
-         mSendReport->SetCurrentProcess(nsIMsgSendReport::process_BuildMessage);
-@@ -3835,21 +3828,21 @@ nsMsgComposeAndSend::NotifyListenerOnSto
-   nsString msg;
-   if (NS_SUCCEEDED(aStatus))
-     mComposeBundle->GetStringFromName("copyMessageComplete", msg);
-   else
-     mComposeBundle->GetStringFromName("copyMessageFailed", msg);
- 
-   SetStatusMessage(msg);
-   nsCOMPtr<nsIPrompt> prompt;
--  GetDefaultPrompt(getter_AddRefs(prompt));
-+  nsresult rv = GetDefaultPrompt(getter_AddRefs(prompt));
-+  NS_ENSURE_SUCCESS(rv, rv);
- 
-   if (NS_FAILED(aStatus))
-   {
--    nsresult rv;
-     nsCOMPtr<nsIStringBundleService> bundleService =
-       mozilla::services::GetStringBundleService();
-     NS_ENSURE_TRUE(bundleService, NS_ERROR_UNEXPECTED);
-     nsCOMPtr<nsIStringBundle> bundle;
-     rv = bundleService->CreateBundle("chrome://messenger/locale/messengercompose/composeMsgs.properties", getter_AddRefs(bundle));
-     NS_ENSURE_SUCCESS(rv, rv);
- 
-     // Obtain account name for local folders.
-@@ -3945,33 +3938,34 @@ nsMsgComposeAndSend::NotifyListenerOnSto
-                      mCompFields->GetBcc(),
-                      nullptr,
-                      mCompFields->GetNewspostUrl());
- 
-       if (NS_FAILED(rv))
-       {
-         // Save to Local Folders failed. Inform the user.
-         nsCOMPtr<nsIPrompt> prompt;
--        GetDefaultPrompt(getter_AddRefs(prompt));
-+        rv = GetDefaultPrompt(getter_AddRefs(prompt));
-+        NS_ENSURE_SUCCESS(rv, rv);
-         nsMsgDisplayMessageByName(prompt, "saveToLocalFoldersFailed");
-       }
-     }
- 
-     // Failure detected when user saved to default folder and the user did not
-     // retry; instead the user saved to Local Folders or canceled the save. So
-     // just call Fail() with a success code so that it doesn't prompt the user
-     // again since the user already knows about the failure and has reacted.
-     Fail(NS_OK, nullptr, &aStatus);
-   }
- 
-   if (NS_SUCCEEDED(aStatus) &&
-       !mPerformingSecondFCC && m_messageKey != nsMsgKey_None &&
-       (m_deliver_mode == nsMsgDeliverNow || m_deliver_mode == nsMsgSendUnsent))
-   {
--    nsresult rv = FilterSentMessage();
-+    rv = FilterSentMessage();
-     if (NS_FAILED(rv))
-       OnStopOperation(rv);
-     return rv;
-   }
- 
-   return MaybePerformSecondFCC(aStatus);
- }
- 
-@@ -4023,17 +4017,18 @@ nsMsgComposeAndSend::OnStopOperation(nsr
-   SetStatusMessage(msg);
- 
-   if (NS_FAILED(aStatus))
-   {
-     nsresult rv = mComposeBundle->GetStringFromName("errorFilteringMsg", msg);
-     if (NS_SUCCEEDED(rv))
-     {
-       nsCOMPtr<nsIPrompt> prompt;
--      GetDefaultPrompt(getter_AddRefs(prompt));
-+      rv = GetDefaultPrompt(getter_AddRefs(prompt));
-+      NS_ENSURE_SUCCESS(rv, rv);
-       nsMsgDisplayMessageByString(prompt, msg.get(), nullptr);
-     }
- 
-     // We failed, however, give Fail a success code so that it doesn't prompt
-     // the user a second time as they already know about the failure.
-     Fail(NS_OK, nullptr, &aStatus);
-   }
- 

+ 0 - 64
comm-esr60/comm-esr60/patches/1444379-2-64a1.patch

@@ -1,64 +0,0 @@
-# HG changeset patch
-# User Jorg K <jorgk@jorgk.com>
-# Date 1538301022 -7200
-# Node ID d55e51bddfae74108d4a6b78d6fb59920bc3ae8e
-# Parent  239afbc703640ac9159b5699ddf0e824fe4dc829
-Bug 1444379 - Follow-up: move prompt retrieval to where prompt is used. r=aceman DONTBUILD
-
-diff --git a/mailnews/compose/src/nsMsgSend.cpp b/mailnews/compose/src/nsMsgSend.cpp
---- a/mailnews/compose/src/nsMsgSend.cpp
-+++ b/mailnews/compose/src/nsMsgSend.cpp
-@@ -3816,30 +3816,29 @@ nsMsgComposeAndSend::GetMessageId(nsACSt
-   else
-     rv = NS_ERROR_NULL_POINTER;
-   return rv;
- }
- 
- NS_IMETHODIMP
- nsMsgComposeAndSend::NotifyListenerOnStopCopy(nsresult aStatus)
- {
-+  nsresult rv;
-+
-   // This is one per copy so make sure we clean this up first.
-   mCopyObj = nullptr;
- 
-   // Set a status message...
-   nsString msg;
-   if (NS_SUCCEEDED(aStatus))
-     mComposeBundle->GetStringFromName("copyMessageComplete", msg);
-   else
-     mComposeBundle->GetStringFromName("copyMessageFailed", msg);
- 
-   SetStatusMessage(msg);
--  nsCOMPtr<nsIPrompt> prompt;
--  nsresult rv = GetDefaultPrompt(getter_AddRefs(prompt));
--  NS_ENSURE_SUCCESS(rv, rv);
- 
-   if (NS_FAILED(aStatus))
-   {
-     nsCOMPtr<nsIStringBundleService> bundleService =
-       mozilla::services::GetStringBundleService();
-     NS_ENSURE_TRUE(bundleService, NS_ERROR_UNEXPECTED);
-     nsCOMPtr<nsIStringBundle> bundle;
-     rv = bundleService->CreateBundle("chrome://messenger/locale/messengercompose/composeMsgs.properties", getter_AddRefs(bundle));
-@@ -3911,16 +3910,20 @@ nsMsgComposeAndSend::NotifyListenerOnSto
-     int32_t buttonPressed = 0;
-     bool showCheckBox = false;
-     uint32_t buttonFlags = (nsIPrompt::BUTTON_POS_0 * nsIPrompt::BUTTON_TITLE_IS_STRING) +
-                            (nsIPrompt::BUTTON_POS_1 * nsIPrompt::BUTTON_TITLE_DONT_SAVE) +
-                            (nsIPrompt::BUTTON_POS_2 * nsIPrompt::BUTTON_TITLE_SAVE);
-     nsString dialogTitle, buttonLabelRetry;
-     bundle->GetStringFromName("SaveDialogTitle", dialogTitle);
-     bundle->GetStringFromName("buttonLabelRetry2", buttonLabelRetry);
-+
-+    nsCOMPtr<nsIPrompt> prompt;
-+    rv = GetDefaultPrompt(getter_AddRefs(prompt));
-+    NS_ENSURE_SUCCESS(rv, rv);
-     prompt->ConfirmEx(dialogTitle.get(), msg.get(), buttonFlags, buttonLabelRetry.get(),
-                       nullptr, nullptr, nullptr, &showCheckBox, &buttonPressed);
-     if (buttonPressed == 0)
-     {
-       // retry button clicked
-       mSendProgress = nullptr; // this was canceled, so we need to clear it.
-       return SendToMagicFolder(m_deliver_mode);
-     }

+ 0 - 698
comm-esr60/comm-esr60/patches/1444740-2-moz-border.patch

@@ -1,698 +0,0 @@
-# HG changeset patch
-# User Bill Gianopoulos <wgianopoulos@gmail.com>
-# Date 1580673363 -3600
-# Parent  d96879fee1c9aa28380bac44d1a1f59644159823
-Bug 1444740 - Part 2. Replace obsolete moz-border css styles in SeaMonkey Linux/Windows classic theme. r=IanN a=IanN
-
-diff --git a/suite/themes/classic/communicator/button.css b/suite/themes/classic/communicator/button.css
---- a/suite/themes/classic/communicator/button.css
-+++ b/suite/themes/classic/communicator/button.css
-@@ -152,34 +152,35 @@ toolbar[labelalign="end"] .toolbarbutton
- .button-toolbar > .button-box > .button-icon[src],
- .button-toolbar > .button-box > .button-text {
-   margin-inline-end: 2px;
- }  
- 
- .button-toolbar, 
- .button-toolbar[disabled="true"]:hover,
- .button-toolbar[disabled="true"]:hover:active {
--  -moz-border-top-colors: transparent ThreeDHighlight;
--  -moz-border-right-colors: transparent ThreeDShadow;
--  -moz-border-bottom-colors: transparent ThreeDShadow;
--  -moz-border-left-colors: transparent ThreeDHighlight;
-+  padding: 1px;
-+  border-top-color: ThreeDHighlight;
-+  border-right-color: ThreeDShadow;
-+  border-bottom-color: ThreeDShadow;
-+  border-left-color: ThreeDHighlight;
- }
-   
- .button-toolbar:hover {
--  -moz-border-top-colors: ThreeDDarkShadow ThreeDHighlight;
--  -moz-border-right-colors: ThreeDDarkShadow ThreeDShadow;
--  -moz-border-bottom-colors: ThreeDDarkShadow ThreeDShadow;
--  -moz-border-left-colors: ThreeDDarkShadow ThreeDHighlight;
-+  border-top-color: ThreeDDarkShadow;
-+  border-right-color: ThreeDDarkShadow;
-+  border-bottom-color: ThreeDDarkShadow;
-+  border-left-color: ThreeDDarkShadow;
- }
- 
- .button-toolbar:hover:active {
--  -moz-border-top-colors: ThreeDDarkShadow ThreeDShadow;
--  -moz-border-right-colors: ThreeDDarkShadow ThreeDHighlight;
--  -moz-border-bottom-colors: ThreeDDarkShadow ThreeDHighlight;
--  -moz-border-left-colors: ThreeDDarkShadow ThreeDShadow;
-+  border-top-color: ThreeDDarkShadow;
-+  border-right-color: ThreeDDarkShadow;
-+  border-bottom-color: ThreeDDarkShadow;
-+  border-left-color: ThreeDDarkShadow;
- }
- 
- /* ::::: taskbuttons ::::: */
- 
- .taskbutton {
-   padding: 1px;
- }
- 
-@@ -202,33 +203,33 @@ toolbar[labelalign="end"] .toolbarbutton
-  * Not used in Firefox but used elsewhere,
-  **/
- 
- @media (-moz-windows-classic) {
- 
-   .toolbarbutton-menubutton-dropmarker {
-     border: 1px solid;
-     padding: 2px;
--    -moz-border-top-colors: transparent;
--    -moz-border-right-colors: transparent;
--    -moz-border-bottom-colors: transparent;
--    -moz-border-left-colors: transparent;
-+    border-top-color: transparent;
-+    border-right-color: transparent;
-+    border-bottom-color: transparent;
-+    border-left-color: transparent;
-   }
- 
-   toolbarbutton[type="menu-button"]:hover > .toolbarbutton-menubutton-dropmarker:not([disabled="true"]) {
--    -moz-border-top-colors: ThreeDHighlight;
--    -moz-border-right-colors: ThreeDShadow;
--    -moz-border-bottom-colors: ThreeDShadow;
--    -moz-border-left-colors: ThreeDHighlight;
-+    border-top-color: ThreeDHighlight;
-+    border-right-color: ThreeDShadow;
-+    border-bottom-color: ThreeDShadow;
-+    border-left-color: ThreeDHighlight;
-   }
- 
-   toolbarbutton[type="menu-button"]:hover:active > .toolbarbutton-menubutton-dropmarker:not([disabled="true"]),
-   toolbarbutton[type="menu-button"][open="true"] > .toolbarbutton-menubutton-dropmarker:not([disabled="true"]) {
--    -moz-border-top-colors: ThreeDShadow;
--    -moz-border-right-colors: ThreeDHighlight;
--    -moz-border-bottom-colors: ThreeDHighlight;
--    -moz-border-left-colors: ThreeDShadow;
-+    border-top-color: ThreeDShadow;
-+    border-right-color: ThreeDHighlight;
-+    border-bottom-color: ThreeDHighlight;
-+    border-left-color: ThreeDShadow;
-     padding-top: 3px;
-     padding-bottom: 1px;
-     padding-inline-start: 3px;
-     padding-inline-end: 1px;
-   }
- }
-diff --git a/suite/themes/classic/communicator/communicator.css b/suite/themes/classic/communicator/communicator.css
---- a/suite/themes/classic/communicator/communicator.css
-+++ b/suite/themes/classic/communicator/communicator.css
-@@ -231,21 +231,21 @@ treecols:-moz-lwtheme {
-     border-width: 1px !important;
-   }
- }
- 
- /* ::::: dialog header ::::: */
- 
- dialogheader {
-   margin: 0px 5px 5px 5px;
--  border: 2px solid;
--  -moz-border-top-colors: ThreeDShadow ThreeDDarkShadow;
--  -moz-border-right-colors: ThreeDHighlight ThreeDDarkShadow;
--  -moz-border-bottom-colors: ThreeDHighlight ThreeDDarkShadow;
--  -moz-border-left-colors: ThreeDShadow ThreeDDarkShadow;
-+  border: 1px solid;
-+  border-top-color: ThreeDDarkShadow;
-+  border-right-color: ThreeDDarkShadow;
-+  border-bottom-color: ThreeDDarkShadow;
-+  border-left-color: ThreeDDarkShadow;
-   padding: 5px 8px;
-   background-color: Highlight;
-   color: HighlightText;
- }
- 
- .dialogheader-title {
-   margin: 0px !important;
-   font-size: larger;
-diff --git a/suite/themes/classic/communicator/helpviewer/help.css b/suite/themes/classic/communicator/helpviewer/help.css
---- a/suite/themes/classic/communicator/helpviewer/help.css
-+++ b/suite/themes/classic/communicator/helpviewer/help.css
-@@ -122,15 +122,15 @@
- 
- /* make findbar appear above content */
- #appcontent {
-   -moz-box-direction: reverse;
- }
- 
- /* style findbar for being on top */
- #FindToolbar {
--  -moz-border-top-colors: ThreeDHighlight;
-+  border-top-color: ThreeDHighlight;
-   border-top-width: 1px;
--  border-bottom: 2px solid;
--  -moz-border-bottom-colors: ThreeDShadow ThreeDHighlight;
-+  border-bottom: 1px solid;
-+  border-bottom-color: ThreeDShadow;
-   padding-top: 1px;
-   padding-bottom: 0px;
- }
-diff --git a/suite/themes/classic/communicator/places/bookmarksToolbar.css b/suite/themes/classic/communicator/places/bookmarksToolbar.css
---- a/suite/themes/classic/communicator/places/bookmarksToolbar.css
-+++ b/suite/themes/classic/communicator/places/bookmarksToolbar.css
-@@ -28,20 +28,20 @@ toolbarbutton.bookmark-item:not([contain
- toolbarbutton.bookmark-item:not([container="true"]):not([disabled="true"]):hover {
-   text-decoration: underline;
-   color: #0000FF;
- }
- 
- toolbarbutton.bookmark-item[disabled="true"],
- toolbarbutton.bookmark-item:not([container="true"]):hover,
- toolbarbutton.bookmark-item:not([container="true"]):hover:active {
--  -moz-border-top-colors: transparent !important;
--  -moz-border-right-colors: transparent !important;
--  -moz-border-bottom-colors: transparent !important;
--  -moz-border-left-colors: transparent !important;
-+  border-top-color: transparent !important;
-+  border-right-color: transparent !important;
-+  border-bottom-color: transparent !important;
-+  border-left-color: transparent !important;
-   background: transparent !important;
- }
- 
- toolbarbutton.bookmark-item[disabled="true"] {
-   list-style-image: url("chrome://communicator/skin/places/bookmark-item-dis.png") !important;
- }
- 
- toolbarbutton.bookmark-item[disabled="true"][container="true"] {
-diff --git a/suite/themes/classic/communicator/profile/profile.css b/suite/themes/classic/communicator/profile/profile.css
---- a/suite/themes/classic/communicator/profile/profile.css
-+++ b/suite/themes/classic/communicator/profile/profile.css
-@@ -28,17 +28,17 @@ hbox.wizard-box {
-   -moz-box-orient: vertical;
-   margin-top: -8px;
-   margin-bottom: 0;
-   margin-inline-start: -8px;
-   margin-inline-end: -10px;
-   border-left: none;
-   border-right: none;
-   border-top: none;
--  -moz-border-bottom-colors: ThreeDHighlight ThreeDShadow;
-+  border-bottom-color: ThreeDShadow;
-   padding-top: 12px;
-   padding-bottom: 12px;
-   padding-inline-start: 25px;
-   padding-inline-end: 5px;
-   background-color: Window;
-   color: WindowText;
- }
- 
-diff --git a/suite/themes/classic/communicator/sidebar/sidebar.css b/suite/themes/classic/communicator/sidebar/sidebar.css
---- a/suite/themes/classic/communicator/sidebar/sidebar.css
-+++ b/suite/themes/classic/communicator/sidebar/sidebar.css
-@@ -105,37 +105,37 @@
- .box-texttab:-moz-lwtheme {
-   text-shadow: none;
- }
- 
- .box-texttab,
- .box-texttab[selected="true"],
- .box-texttab[selected="true"]:hover,
- .box-texttab[selected="true"]:hover:active {
--  border: 2px solid;
--  -moz-border-top-colors: ThreeDHighlight ThreeDLightShadow;
--  -moz-border-right-colors: ThreeDShadow ThreeDLightShadow;
--  -moz-border-bottom-colors: ThreeDShadow  ThreeDLightShadow;
--  -moz-border-left-colors: ThreeDHighlight ThreeDLightShadow;
-+  border: 1px solid;
-+  border-top-color: ThreeDLightShadow;
-+  border-right-color: ThreeDShadow;
-+  border-bottom-color: ThreeDShadow;
-+  border-left-color: ThreeDLightShadow;
-   padding-top: 2px;
-   padding-bottom: 2px;
-   padding-inline-start: 0px;
-   padding-inline-end: 1px;
- }
- 
- .box-texttab:hover {
--  -moz-border-right-colors: ThreeDDarkShadow ThreeDShadow;
--  -moz-border-bottom-colors: ThreeDDarkShadow  ThreeDShadow;
-+  border-right-color: ThreeDDarkShadow;
-+  border-bottom-color: ThreeDDarkShadow;
- }
- 
- .box-texttab:hover:active {
--  -moz-border-top-colors: ThreeDShadow ThreeDLightShadow;
--  -moz-border-right-colors: ThreeDShadow ThreeDLightShadow;
--  -moz-border-bottom-colors: ThreeDShadow  ThreeDLightShadow;
--  -moz-border-left-colors: ThreeDShadow ThreeDLightShadow;
-+  border-top-color: ThreeDShadow;
-+  border-right-color: ThreeDShadow;
-+  border-bottom-color: ThreeDShadow;
-+  border-left-color: ThreeDShadow;
- }
- 
- .sbtab-label {
-   margin: 0px !important;
- }
- 
- .sbtab-twisty {
-   margin: 0px 7px;
-diff --git a/suite/themes/classic/communicator/toolbar.css b/suite/themes/classic/communicator/toolbar.css
---- a/suite/themes/classic/communicator/toolbar.css
-+++ b/suite/themes/classic/communicator/toolbar.css
-@@ -11,18 +11,18 @@
- /* Restore Windows Classic fallbacks removed by bug 1343196 */
- 
- @media (-moz-windows-classic) {
- 
-   /* ::::: toolbox ::::: */
- 
-   toolbox {
-     background-color: -moz-Dialog;
--    border-top: 2px solid;
--    -moz-border-top-colors: ThreeDShadow ThreeDHighlight;
-+    border-top: 1px solid;
-+    border-top-color: ThreeDShadow;
-   }
- 
-   /* ::::: toolbar & menubar ::::: */
- 
-   toolbar {
-     border-top: 1px solid ThreeDHighlight;
-     border-bottom: 1px solid ThreeDShadow;
-   }
-@@ -39,22 +39,21 @@
-   toolbar:-moz-lwtheme {
-     background: none;
-     border-color: transparent;
-   }
- 
-   /* ::::: toolbar decorations ::::: */
- 
-   toolbarseparator {
--    border-top: 2px solid transparent;
--    border-bottom: 2px solid transparent;
--    border-left: 3px solid transparent;
--    border-right: 3px solid transparent;
--    -moz-border-left-colors  : transparent transparent ThreeDShadow;
--    -moz-border-right-colors : transparent transparent ThreeDHighlight;
-+    padding: 2px;
-+    border-left: 1px solid;
-+    border-right: 1px solid;
-+    border-left-color  : ThreeDShadow;
-+    border-right-color : ThreeDHighlight;
-   }
- }
- 
- /* End restore Windows Classic fallbacks removed by bug 1343196 */
- 
- @media (-moz-menubar-drag) {
-   toolbar[type="menubar"]:not([autohide="true"]):not([xpfe="false"]):not(:-moz-lwtheme) {
-     -moz-binding: url("chrome://communicator/content/bindings/toolbar-xpfe.xml#grippytoolbar-drag");
-diff --git a/suite/themes/classic/communicator/viewSourceOverlay.css b/suite/themes/classic/communicator/viewSourceOverlay.css
---- a/suite/themes/classic/communicator/viewSourceOverlay.css
-+++ b/suite/themes/classic/communicator/viewSourceOverlay.css
-@@ -4,15 +4,15 @@
- 
- /* make findbar appear above content */
- #appcontent {
-   -moz-box-direction: reverse;
- }
- 
- /* style findbar for being on top */
- #FindToolbar {
--  -moz-border-top-colors: ThreeDHighlight;
-+  border-top-color: ThreeDHighlight;
-   border-top-width: 1px;
--  border-bottom: 2px solid;
--  -moz-border-bottom-colors: ThreeDShadow ThreeDHighlight;
-+  border-bottom: 1px solid;
-+  border-bottom-color: ThreeDShadow;
-   padding-top: 1px;
-   padding-bottom: 0px;
- }
-diff --git a/suite/themes/classic/editor/editorModeToolbar.css b/suite/themes/classic/editor/editorModeToolbar.css
---- a/suite/themes/classic/editor/editorModeToolbar.css
-+++ b/suite/themes/classic/editor/editorModeToolbar.css
-@@ -11,19 +11,19 @@
-   border-left: 1px solid ThreeDDarkShadow;
-   border-right: 1px solid ThreeDLightShadow;
-   padding: 0px 2px 2px;
-   min-width: 1px;
- }
- 
- .tab-bottom[selected="true"] {
-   color: -moz-FieldText;
--  -moz-border-top-colors: -moz-Field;
--  -moz-border-bottom-colors: ThreeDShadow -moz-Field;
--  -moz-border-left-colors: ThreeDHighlight -moz-Field;
-+  border-top-color: -moz-Field;
-+  border-bottom-color: ThreeDShadow;
-+  border-left-color: ThreeDHighlight;
- }
- 
- #NormalModeButton {
-   list-style-image: url("chrome://editor/skin/icons/editmode-normal.gif");
- }
- 
- #TagModeButton {
-   list-style-image: url("chrome://editor/skin/icons/editmode-tags.gif");
-diff --git a/suite/themes/classic/linux/communicator/scrollbars.css b/suite/themes/classic/linux/communicator/scrollbars.css
---- a/suite/themes/classic/linux/communicator/scrollbars.css
-+++ b/suite/themes/classic/linux/communicator/scrollbars.css
-@@ -136,21 +136,21 @@ scrollbar[orient="vertical"] > scrollbar
-   {
-      -moz-appearance: scrollbar-vertical;
-   }
- 
-   /* ::::: borders for thumb and buttons ::::: */
- 
-   html|div thumb,
-   html|div scrollbarbutton {
--    border: 2px solid;
--    -moz-border-top-colors: ThreeDLightShadow ThreeDHighlight;
--    -moz-border-right-colors: ThreeDDarkShadow ThreeDShadow;
--    -moz-border-bottom-colors: ThreeDDarkShadow ThreeDShadow;
--    -moz-border-left-colors: ThreeDLightShadow ThreeDHighlight;
-+    border: 1px solid;
-+    border-top-color: ThreeDLightShadow;
-+    border-right-color: ThreeDDarkShadow;
-+    border-bottom-color: ThreeDDarkShadow;
-+    border-left-color: ThreeDLightShadow;
-     background-color: -moz-Dialog;
-   }
- 
-   /* ::::: thumb (horizontal) ::::: */
- 
-   html|div thumb {
-     -moz-appearance: scrollbarthumb-vertical;
-     min-height: 8px;
-@@ -165,20 +165,20 @@ scrollbar[orient="vertical"] > scrollbar
- 
-   html|div scrollbarbutton {
-     background: -moz-Dialog no-repeat 50% 50%;
-     min-width: 16px;
-     min-height: 16px;
-   }
- 
-   html|div scrollbarbutton:hover:active, html|div scrollbarbutton[active="true"] {
--    -moz-border-top-colors: ThreeDShadow -moz-Dialog;
--    -moz-border-right-colors: ThreeDShadow -moz-Dialog;
--    -moz-border-bottom-colors: ThreeDShadow -moz-Dialog;
--    -moz-border-left-colors: ThreeDShadow -moz-Dialog;
-+    border-top-color: -moz-Dialog;
-+    border-right-color: -moz-Dialog;
-+    border-bottom-color: -moz-Dialog;
-+    border-left-color: -moz-Dialog;
-     background-position: 60% 60%;
-   }
- 
-   /* ..... increment .... */
- 
-   html|div scrollbarbutton[type="increment"] {
-     -moz-appearance: scrollbarbutton-right;
-     background-image: url("chrome://global/skin/arrow/arrow-rit.gif")
-diff --git a/suite/themes/classic/messenger/mailWindow1.css b/suite/themes/classic/messenger/mailWindow1.css
---- a/suite/themes/classic/messenger/mailWindow1.css
-+++ b/suite/themes/classic/messenger/mailWindow1.css
-@@ -61,43 +61,43 @@
- #threadpane-splitter[state="collapsed"] {
-   border-bottom: 2px solid;
- }
- 
- /* ..... tree adjustments ..... */
- 
- #folderTree {
-   border-right: 1px solid;
--  -moz-border-right-colors: ThreeDShadow;
-+  border-right-color: ThreeDShadow;
-   min-width: 1px;
- }
- 
- #threadTree {
--  border-bottom: 2px solid;
--  -moz-border-bottom-colors: ThreeDHighlight ThreeDLightShadow;
-+  border-bottom: 1px solid;
-+  border-bottom-color: ThreeDLightShadow;
-   min-width: 1px;
- }
- 
- #threadTree,
- #accountCentralBox {
--  border-left: 2px solid;
--  -moz-border-left-colors: ThreeDShadow ThreeDDarkShadow;
-+  border-left: 1px solid;
-+  border-left-color: ThreeDDarkShadow;
- }
- 
- #locationIcon {
-   list-style-image: none;
- }
- 
- /* ..... message pane adjustments ..... */
- 
- #messagepanebox {
-- border-top: 2px solid;
-- border-left: 2px solid;
-- -moz-border-top-colors: ThreeDShadow ThreeDDarkShadow;
-- -moz-border-left-colors: ThreeDShadow ThreeDDarkShadow;
-+ border-top: 1px solid;
-+ border-left: 1px solid;
-+ border-top-color: ThreeDDarkShadow;
-+ border-left-color: ThreeDDarkShadow;
- }
- 
- #msgHeaderView {
-   border-left: none !important;
- }
- 
- #messagepane {
-   border: 1px solid -moz-Field;
-diff --git a/suite/themes/classic/messenger/messengercompose/messengercompose.css b/suite/themes/classic/messenger/messengercompose/messengercompose.css
---- a/suite/themes/classic/messenger/messengercompose/messengercompose.css
-+++ b/suite/themes/classic/messenger/messengercompose/messengercompose.css
-@@ -205,17 +205,17 @@ toolbar[iconsize="small"] > #button-save
-   border-top: none;
-   border-bottom: none;
- }
- 
- #compose-toolbar-sizer {
-   border-top-width: 1px;
-   border-left: none;
-   border-right: none;
--  -moz-border-top-colors: ThreeDHighlight;
-+  border-top-color: ThreeDHighlight;
- }
- 
- #msgSubject {
-   margin-top: 0px;
-   margin-bottom: 4px;
- }
- 
- #MsgHeadersToolbar {
-@@ -265,31 +265,31 @@ treechildren::-moz-tree-image(subscribed
- /* ::::: compact menulists ::::: */
- 
- .menulist-compact {
-   -moz-binding: url("chrome://messenger/content/messengercompose/menulistCompactBindings.xml#menulist-compact");
-   -moz-appearance: none;
-   -moz-box-align: center;
-   -moz-box-pack: center;
-   margin: 0;
--  border: 2px solid;
--  -moz-border-top-colors: ThreeDHighlight ThreeDLightShadow;
--  -moz-border-right-colors: ThreeDDarkShadow ThreeDShadow;
--  -moz-border-bottom-colors: ThreeDDarkShadow ThreeDShadow;
--  -moz-border-left-colors: ThreeDHighlight ThreeDLightShadow;
-+  border: 1px solid;
-+  border-top-color: ThreeDLightShadow;
-+  border-right-color: ThreeDDarkShadow;
-+  border-bottom-color: ThreeDDarkShadow;
-+  border-left-color: ThreeDLightShadow;
-   background-color: ThreeDFace;
-   color: ButtonText;
-   list-style-image: url("chrome://global/skin/arrow/arrow-dn.gif");
- }
- 
- .menulist-compact[open="true"] {
--  -moz-border-top-colors: ThreeDDarkShadow ThreeDShadow;
--  -moz-border-right-colors: ThreeDDarkShadow ThreeDHighlight;
--  -moz-border-bottom-colors: ThreeDDarkShadow ThreeDHighlight;
--  -moz-border-left-colors: ThreeDDarkShadow ThreeDShadow;
-+  border-top-color: ThreeDDarkShadow;
-+  border-right-color: ThreeDDarkShadow;
-+  border-bottom-color: ThreeDDarkShadow;
-+  border-left-color: ThreeDDarkShadow;
- }
- 
- .menulist-compact[disabled="true"] {
-   list-style-image: url("chrome://global/skin/arrow/arrow-dn-dis.gif");
- }
- 
- .menulist-compact > .menulist-label-box > .menulist-label {
-   margin: 0 3px !important;
-diff --git a/suite/themes/classic/messenger/primaryToolbar.css b/suite/themes/classic/messenger/primaryToolbar.css
---- a/suite/themes/classic/messenger/primaryToolbar.css
-+++ b/suite/themes/classic/messenger/primaryToolbar.css
-@@ -540,17 +540,17 @@ toolbar[iconsize="small"] > #extractTask
- #extractTaskButton[disabled="true"] > .box-inherit > .toolbarbutton-icon {
-   opacity: 0.3;
- }
- 
- /* ::::: message notification bar style rules ::::: */
- 
- .msgNotificationBar {
-   border-bottom: 1px solid;
--  -moz-border-bottom-colors: #000000;
-+  border-bottom-color: #000000;
-   -moz-appearance: toolbox;
-   background-color: #C7BC8F;
-   color: black;
- }
- 
- .msgNotificationBar:-moz-lwtheme {
-   text-shadow: none;
- }
-diff --git a/suite/themes/classic/navigator/navigator.css b/suite/themes/classic/navigator/navigator.css
---- a/suite/themes/classic/navigator/navigator.css
-+++ b/suite/themes/classic/navigator/navigator.css
-@@ -201,39 +201,39 @@ toolbar[iconsize="small"] > #sync-button
- }
- 
- toolbar[iconsize="small"] > toolbarpaletteitem > #sync-button[status=active],
- toolbar[iconsize="small"] > #sync-button[status=active] {
-   list-style-image: url("chrome://communicator/skin/sync/sync-16-throbber.png");
- }
- 
- #FindToolbar {
--  -moz-border-top-colors: ThreeDHighlight;
-+  border-top-color: ThreeDHighlight;
-   border-top-width: 1px;
--  border-bottom: 2px solid;
--  -moz-border-bottom-colors: ThreeDShadow ThreeDHighlight;
-+  border-bottom: 1px solid;
-+  border-bottom-color: ThreeDShadow;
-   padding-top: 1px;
-   padding-bottom: 0px;
- }
- 
- #FindToolbar:-moz-lwtheme {
--  -moz-border-top-colors: transparent;
--  -moz-border-bottom-colors: transparent;
-+  border-top-color: transparent;
-+  border-bottom-color: transparent;
- }
- 
- /* ::::: fullscreen window controls ::::: */
- 
- #window-controls {
-   -moz-box-align: center;
-   padding-top: 0px;
-   padding-bottom: 0px;
-   padding-inline-start: 4px;
-   padding-inline-end: 2px;
--  border-left: 2px solid;
--  -moz-border-left-colors: ThreeDHighlight ThreeDShadow;
-+  border-left: 1px solid;
-+  border-left-color: ThreeDShadow;
-   background-color: -moz-Dialog;
- }
- 
- toolbar[mode="text"] > #window-controls > toolbarbutton > .toolbarbutton-icon {
-   display: -moz-box;
- }
- 
- #minimize-button {
-@@ -530,18 +530,18 @@ toolbar[mode="text"] > #window-controls 
- #PopupAutoComplete > richlistbox {
-   padding: 0;
- }
- 
- .autocomplete-history-dropmarker {
-   min-width: 2em; /* Fix to show the menulist-dropmarker under newer GTK3 versions */
-   border-right-width: 1px;
-   border-bottom-width: 1px;
--  -moz-border-right-colors: ThreeDShadow;
--  -moz-border-bottom-colors: ThreeDShadow;
-+  border-right-color: ThreeDShadow;
-+  border-bottom-color: ThreeDShadow;
- }
- 
- .autocomplete-treebody::-moz-tree-cell-text(value) {
-   padding-inline-start: 15px;
- }
- 
- .autocomplete-search-box {
-   border-top: 2px groove -moz-Dialog;
-diff --git a/suite/themes/classic/navigator/tabbrowser.css b/suite/themes/classic/navigator/tabbrowser.css
---- a/suite/themes/classic/navigator/tabbrowser.css
-+++ b/suite/themes/classic/navigator/tabbrowser.css
-@@ -46,18 +46,18 @@ tabpanels {
-   list-style-image: url("chrome://communicator/skin/icons/loading.gif");
- }
- 
- .tabbrowser-tab[selected="true"] {
-   margin-bottom: 0px;
-   padding-top: 2px; /* compensates the top margin of background tabs */
-   padding-bottom: 3px; /* compensates the bottom margin of background tabs */
-   background-color: -moz-dialog;
--  -moz-border-top-colors: unset;
--  -moz-border-right-colors: unset;
-+  border-top-color: unset;
-+  border-right-color: unset;
-   color: -moz-dialogtext;
-   border: 1px solid Gray;
-   border-top: 2px solid RoyalBlue;
-   border-bottom: 0px none;
-   -moz-appearance: none;
- }
- 
- .tabbrowser-tab:-moz-lwtheme {
-@@ -72,41 +72,41 @@ tabpanels {
- 
- /* ::::: Tab scrollbox arrow, and all-tabs buttons ::::: */
- 
- .scrollbutton-up,
- .scrollbutton-down {
-   -moz-appearance: tab;
-   margin: 2px 0px 1px;
-   padding: 0px;
--  border-top: 2px solid;
--  border-right: 2px solid;
--  border-left: 2px solid;
-+  border-top: 1px solid;
-+  border-right: 1px solid;
-+  border-left: 1px solid;
-   border-bottom: 1px solid ThreeDHighlight;
--  -moz-border-top-colors: ThreeDHighlight ThreeDLightShadow;
--  -moz-border-right-colors: ThreeDDarkShadow ThreeDShadow;
--  -moz-border-left-colors: ThreeDHighlight ThreeDLightShadow;
-+  border-top-color: ThreeDLightShadow;
-+  border-right-color: ThreeDDarkShadow;
-+  border-left-color: ThreeDLightShadow;
-   border-radius: 2px 2px 0px 0px;
- }
- 
- @media (-moz-windows-theme: aero) {
-   .scrollbutton-up,
-   .scrollbutton-down {
-     padding: 0px 2px;
-   }
- }
- 
- .scrollbutton-up:-moz-locale-dir(rtl),
- .scrollbutton-down:-moz-locale-dir(ltr) {
--  -moz-border-right-colors: ThreeDHighlight ThreeDShadow;
-+  border-right-color: ThreeDShadow;
- }
- 
- .scrollbutton-up:-moz-locale-dir(ltr),
- .scrollbutton-down:-moz-locale-dir(rtl) {
--  -moz-border-left-colors: ThreeDHighlight ThreeDShadow;
-+  border-left-color: ThreeDShadow;
- }
- 
- .scrollbutton-up,
- .scrollbutton-down:-moz-locale-dir(rtl) {
-   list-style-image: url("chrome://navigator/skin/icons/tab-arrow-left.gif");
- }
- 
- .scrollbutton-down,

+ 0 - 2267
comm-esr60/comm-esr60/patches/1444740-3-moz-border-modern.patch

@@ -1,2267 +0,0 @@
-# HG changeset patch
-# User Bill Gianopoulos <wgianopoulos@gmail.com>
-# Date 1580673369 -3600
-# Parent  8137d93cdbabc0a2237395616b5d02a5ff0ae578
-Bug 1444740 - Part 3. Replace obsolete moz-border css styles in SeaMonkey Modern theme. r=IanN a=IanN
-
-diff --git a/suite/themes/modern/communicator/communicator.css b/suite/themes/modern/communicator/communicator.css
---- a/suite/themes/modern/communicator/communicator.css
-+++ b/suite/themes/modern/communicator/communicator.css
-@@ -184,21 +184,17 @@ toolbar[iconsize="small"] > #print-butto
- .messageImage[value="MixedDisplayContentMessage"] {
-   list-style-image: url("chrome://communicator/skin/icons/lock-broken-16.png");
- }
- 
- /* ::::: dialog header ::::: */
- 
- dialogheader {
-   margin: 0px 5px 5px;
--  border: 2px solid;
--  -moz-border-top-colors: #858B97 #2D3B49;
--  -moz-border-right-colors: #ECEFF2 #2D3B49;
--  -moz-border-bottom-colors: #ECEFF2 #2D3B49;
--  -moz-border-left-colors: #858B97 #2D3B49;
-+  border: 1px solid #2D3B49;
-   padding: 5px 8px;
-   background-color: #90A1B3;
-   color: #000000;
- }
- 
- .dialogheader-title {
-   margin: 0px !important;
-   font-size: 120%;
-diff --git a/suite/themes/modern/communicator/customizeToolbar.css b/suite/themes/modern/communicator/customizeToolbar.css
---- a/suite/themes/modern/communicator/customizeToolbar.css
-+++ b/suite/themes/modern/communicator/customizeToolbar.css
-@@ -9,15 +9,12 @@ dialog {
- 
- #instructions {
-   font-weight: bold;
-   font-size: 120%;
- }
- 
- #CustomizeToolbarWindow > #main-box {
-   border-top: none;
--  border-left: 2px solid;
--  border-right: 2px solid;
--  border-bottom: 3px solid;
--  -moz-border-right-colors: #F8FAFE #5D616E;
--  -moz-border-bottom-colors: #5D616E #5D616E #BEC3D3;
--  -moz-border-left-colors: #5D616E #F8FAFE;
-+  border-left: 1px solid #5D616E;
-+  border-right: 1px solid #5D616E;
-+  border-bottom: 2px solid #5D616E;
- }
-diff --git a/suite/themes/modern/communicator/datetimepicker.css b/suite/themes/modern/communicator/datetimepicker.css
---- a/suite/themes/modern/communicator/datetimepicker.css
-+++ b/suite/themes/modern/communicator/datetimepicker.css
-@@ -11,21 +11,17 @@
- 
- datepicker, timepicker {
-   margin: 2px 4px;
-   font: inherit;
-   cursor: default;
- }
- 
- .datetimepicker-input-box {
--  border: 2px solid;
--  -moz-border-top-colors: #BEC3D3 #5D616E;
--  -moz-border-right-colors: #F8FAFE #5D616E;
--  -moz-border-bottom-colors: #F8FAFE #5D616E;
--  -moz-border-left-colors: #BEC3D3 #5D616E;
-+  border: 1px solid #5D616E;
-   padding: 1px;
-   background-color: #FFFFFF;
-   color: #000000;
- }
- 
- html|*.datetimepicker-input {
-   text-align: right;
-   width: 1.6em;
-diff --git a/suite/themes/modern/communicator/profile/profile.css b/suite/themes/modern/communicator/profile/profile.css
---- a/suite/themes/modern/communicator/profile/profile.css
-+++ b/suite/themes/modern/communicator/profile/profile.css
-@@ -31,17 +31,17 @@ hbox.wizard-box {
-   margin-top: -7px;
-   margin-bottom: 5px;
-   margin-inline-start: -7px;
-   margin-inline-end: -5px;
-   border-left: none;
-   border-right: none;
-   border-top: none;
-   border-bottom-width: 1px;
--  -moz-border-bottom-colors: #000000;
-+  border-bottom-color: #000000;
-   padding-top: 12px;
-   padding-bottom: 12px;
-   padding-inline-start: 25px;
-   padding-inline-end: 5px;
-   background-color: #90A1B3;
-   color: #000000;
- }
- 
-diff --git a/suite/themes/modern/communicator/sidebar/sidebar.css b/suite/themes/modern/communicator/sidebar/sidebar.css
---- a/suite/themes/modern/communicator/sidebar/sidebar.css
-+++ b/suite/themes/modern/communicator/sidebar/sidebar.css
-@@ -76,24 +76,24 @@
- .image-panel-loading {
-   margin: 5px;
-   list-style-image: url("chrome://communicator/skin/icons/loading.gif");
- }
- 
- /* ::::: sidebar panel ::::: */
- 
- .iframe-panel {
--  border-bottom: 6px solid;
--  -moz-border-bottom-colors: #B9C4D0 #B9C4D0 #B9C4D0 #B9C4D0 #DAE3ED #96A7B8;
-+  border-bottom: 1px solid;
-+  border-bottom-color: #96A7B8;
- }
- 
- .browser-sidebar {
-   -moz-binding: url("chrome://global/skin/globalBindings.xml#browser-miniscroll") !important;
--  border-bottom: 6px solid;
--  -moz-border-bottom-colors: #B9C4D0 #B9C4D0 #B9C4D0 #B9C4D0 #DAE3ED #96A7B8;  
-+  border-bottom: 1px solid;
-+  border-bottom-color: #96A7B8;  
- }
- 
- 
- /* ::::: sidebar tabs ::::: */
- 
- /* ..... normal tabs ..... */
-  
- .box-texttab {
-@@ -103,19 +103,19 @@
- }
- 
- .sidebar-tab-left-box,
- .sidebar-tab-right-box {
-   margin-bottom: 3px;
- }
- 
- .sidebar-tab-left-box {
--  border-top: 2px solid;
-+  border-top: 1px solid;
-   border-bottom: 2px solid #B9C4D0;
--  -moz-border-top-colors: #8A9DAF #D4E1EA;
-+  border-top-color: #8A9DAF;
-   min-width: 90px;
- }
- 
- .sidebar-tab-left {
-   width: 10px;
-   background: url("chrome://communicator/skin/sidebar/sbtab-lft.gif") no-repeat;
- }
- 
-@@ -130,25 +130,25 @@
-   list-style-image: url("chrome://communicator/skin/sidebar/sbtab-rit-top.gif");
- }
- 
- .sidebar-tab-right-btm {
-   min-height: 5px;
- }
- 
- .sidebar-tab-right-line {
--  border-bottom: 2px solid;
--  -moz-border-bottom-colors: #DAE3ED #96A7B8;
-+  border-bottom: 1px solid;
-+  border-bottom-color: #96A7B8;
- }
- 
- /* ..... hover state ..... */
- 
- .box-texttab:hover > .sidebar-tab-left-box {
--  border-bottom: 2px solid;
--  -moz-border-bottom-colors: #CCD7E2 #9CADBB;
-+  border-bottom: 1px solid;
-+  border-bottom-color: #9CADBB;
- }
- 
- .box-texttab:hover > .sidebar-tab-right-box > .sidebar-tab-right-top-box 
-     > .sidebar-tab-right-img 
- {
-   list-style-image: url("chrome://communicator/skin/sidebar/sbtab-rit-top-hov.gif");
- }
- 
-@@ -159,20 +159,20 @@
- /* ..... active state ..... */
- 
- .box-texttab:hover:active {
-   border-left: none;
-   color: #FFFFFF;
- }
- 
- .box-texttab:hover:active > .sidebar-tab-left-box {
--  border-left: 2px solid;
--  -moz-border-bottom-colors: #D8E2EC #A1B1BE	;
--  -moz-border-top-colors: #8A9DAF #748490;
--  -moz-border-left-colors: #737E8A #90A0AD;
-+  border-left: 1px solid;
-+  border-bottom-color: #A1B1BE	;
-+  border-top-color: #748490;
-+  border-left-color: #737E8A;
-   background-color: #A1B1BE;
- }
- 
- .box-texttab:hover:active > .sidebar-tab-left-box > .sidebar-tab-left {
-   background-image: url("chrome://communicator/skin/sidebar/sbtab-lft-act.gif");
- }
- 
- .box-texttab:hover:active > .sidebar-tab-left-box > .sidebar-tab-text {
-@@ -195,17 +195,17 @@
-   border-left: 1px solid #E8EEF5 !important;
-   border-bottom: 1px solid #CBD5E0 !important;
-   color: #000000 !important;
- }
- 
- .box-texttab[selected] > .sidebar-tab-left-box {
-   border-bottom: none !important;
-   border-left: none !important;
--  -moz-border-top-colors: #8A9DAF #DFEBF2 !important;
-+  border-top-color: #8A9DAF !important;
-   background-color: #CBD5E0 !important;
- }
- 
- .box-texttab[selected] > .sidebar-tab-left-box,
- .box-texttab[selected] > .sidebar-tab-right-box {
-   margin-bottom: 0 !important;
- }
- 
-@@ -224,17 +224,17 @@
- }
- 
- .box-texttab[selected] > .sidebar-tab-right-box > .sidebar-tab-right-btm {
-   background: #CBD5E0 !important;
- }
- 
- .box-texttab[selected] > .sidebar-tab-right-box > .sidebar-tab-right-top-box > .sidebar-tab-right-line 
- {
--  -moz-border-bottom-colors: #E2EAF4 #8CA2B3 !important;
-+  border-bottom-color: #8CA2B3 !important;
- }
- 
- /* ::::: sidebar navigation buttons ::::: */
- 
- .sidebar-nav-button {
-   padding: 5px 0px 5px 0px;
- }
- 
-diff --git a/suite/themes/modern/communicator/spinbuttons.css b/suite/themes/modern/communicator/spinbuttons.css
---- a/suite/themes/modern/communicator/spinbuttons.css
-+++ b/suite/themes/modern/communicator/spinbuttons.css
-@@ -2,44 +2,47 @@
-  * 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/. */
- 
- spinbuttons {
-   height: 16px;
- }
- 
- .spinbuttons-button {
--  border: 2px solid;
--  -moz-border-top-colors: #5D616E #B1BBC9;
--  -moz-border-right-colors: #2D3B49 #A7B4C1;
--  -moz-border-bottom-colors: #2D3B49 #9DAAB9;
--  -moz-border-left-colors: #5D616E #B1BBC9;
-+  border: 1px solid;
-+  padding: 1px;
-+  border-top-color: #5D616E;
-+  border-right-color: #2D3B49;
-+  border-bottom-color: #2D3B49;
-+  border-left-color: #5D616E;
-   border-radius: 0;
-   background: #B1BBC5 50% 50% no-repeat;
-   width: 13px;
-   min-width: 13px;
-   margin: 0;
-   -moz-box-flex: 1;
- }
- 
- .spinbuttons-button:hover:active {
--  -moz-border-top-colors: #8290A5 #899AAC;
--  -moz-border-right-colors: #8290A5 #899AAC;
--  -moz-border-bottom-colors: #8290A5 #899AAC;
--  -moz-border-left-colors: #8290A5 #899AAC;
-+  border-color: #8290A5;
-+  border-top-color: #8290A5;
-+  border-right-color: #8290A5;
-+  border-bottom-color: #8290A5;
-+  border-left-color: #8290A5;
-   background-color: #90A1B3;
- }
- 
- .spinbuttons-button[disabled="true"] {
-   background-color: #B7BFCB;
--  border: 2px solid !important;
--  -moz-border-top-colors: #8290A5 #C6CDD7 !important;
--  -moz-border-right-colors: #8290A5 #A9B5C1 !important;
--  -moz-border-bottom-colors: #8290A5 #A9B5C1 !important;
--  -moz-border-left-colors: #8290A5 #C6CDD7 !important;
-+  border: 1px solid !important;
-+  padding: 1px !important;
-+  border-top-color: #8290A5 !important;
-+  border-right-color: #8290A5 !important;
-+  border-bottom-color: #8290A5 !important;
-+  border-left-color: #8290A5 !important;
- }
- 
- .spinbuttons-up {
-   list-style-image: url("chrome://global/skin/scrollbar/mini-btn-up.gif");
- }
- 
- .spinbuttons-down {
-   list-style-image: url("chrome://global/skin/scrollbar/mini-btn-dn.gif");
-diff --git a/suite/themes/modern/global/autocomplete.css b/suite/themes/modern/global/autocomplete.css
---- a/suite/themes/modern/global/autocomplete.css
-+++ b/suite/themes/modern/global/autocomplete.css
-@@ -41,20 +41,17 @@ textbox[nomatch="true"][highlightnonmatc
- 
- /* ::::: autocomplete popups ::::: */
- 
- panel[type="autocomplete"],
- panel[type="autocomplete-richlistbox"],
- .autocomplete-history-popup {
-   -moz-appearance: none;
-   border: 1px solid;
--  -moz-border-top-colors: #6B747E;
--  -moz-border-right-colors: #6B747E;
--  -moz-border-bottom-colors: #6B747E;
--  -moz-border-left-colors: #6B747E;
-+  border-color: #6B747E;
-   background-color: #FFFFFF;
- }
- 
- .autocomplete-history-popup {
-   max-height: 180px;
- }
- 
- /* ::::: tree ::::: */
-diff --git a/suite/themes/modern/global/button.css b/suite/themes/modern/global/button.css
---- a/suite/themes/modern/global/button.css
-+++ b/suite/themes/modern/global/button.css
-@@ -5,22 +5,20 @@
- /* ===== button.css =====================================================
-   == Styles used by the XUL (and XHTML in netError.xhtml) button element.
-   ======================================================================= */
- 
- /* :::::::::: button :::::::::: */
- 
- button {
-   margin: 2px;
--  border: 6px solid;
--  -moz-border-top-colors: transparent transparent transparent #000000 #BBC6D1 #B1BBC9;
--  -moz-border-right-colors: transparent transparent transparent #000000 #A2AEBB #A7B4C1;
--  -moz-border-bottom-colors: transparent transparent transparent #000000 #97A6B6 #9DAAB9;
--  -moz-border-left-colors: transparent transparent transparent #000000 #BBC6D1 #B1BBC9;
--  border-radius: 5px;
-+  border: 1px solid;
-+  padding: 3px;
-+  border-color: #5F5F5F;
-+  border-radius: 2px;
-   min-width: 6em;
-   background-color: #AAB6C4;
-   background-clip: padding-box;
-   color: #000000;
-   font: menu;
- }
- 
- .button-icon {
-@@ -33,84 +31,61 @@ button {
-   margin-inline-start: 4px !important;
-   margin-inline-end: 6px !important;
-   text-align: center;
- }
- 
- /* .......... focused state .......... */
- 
- button:focus {
--  -moz-border-top-colors: transparent #98A5B2 #98A5B2 #000000 #BBC6D1 #B1BBC9;
--  -moz-border-right-colors: transparent #98A5B2 #98A5B2 #000000 #A2AEBB #A7B4C1;
--  -moz-border-bottom-colors: transparent #98A5B2 #98A5B2 #000000 #97A6B6 #9DAAB9;
--  -moz-border-left-colors: transparent #98A5B2 #98A5B2 #000000 #BBC6D1 #B1BBC9;
-+  border-color: #000000;
- }
- 
- /* .......... active/open/checked state .......... */
- 
- button:hover:active,
- button[checked="true"],
- button[open="true"] {
--  -moz-border-top-colors: transparent transparent transparent #000000 #8290A5 #899AAC;
--  -moz-border-right-colors: transparent transparent transparent #000000 #8290A5 #899AAC;
--  -moz-border-bottom-colors: transparent transparent transparent #000000 #8290A5 #899AAC;
--  -moz-border-left-colors: transparent transparent transparent #000000 #8290A5 #899AAC;
-+  border-color: #000000;
-   background-color: #90A1B3;
-   color: #FFFFFF;
- }
- 
- button:hover:active:focus,
- button[checked="true"]:focus,
- button[open="true"]:focus {
--  -moz-border-top-colors: transparent #98A5B2 #98A5B2 #000000 #8290A5 #899AAC;
--  -moz-border-right-colors: transparent #98A5B2 #98A5B2 #000000 #8290A5 #899AAC;
--  -moz-border-bottom-colors: transparent #98A5B2 #98A5B2 #000000 #8290A5 #899AAC;
--  -moz-border-left-colors: transparent #98A5B2 #98A5B2 #000000 #8290A5 #899AAC;
-+  border: 2px solid;
-+  border-color: #000000;
- }
- 
- /* .......... disabled state .......... */
- 
- button[disabled="true"] {
--  -moz-border-top-colors: transparent transparent transparent #8290A5 #C6CDD7 #BCC5D1 !important;
--  -moz-border-right-colors: transparent transparent transparent #8290A5 #A9B5C1 #B2BAC7 !important;
--  -moz-border-bottom-colors: transparent transparent transparent #8290A5 #A9B5C1 #B2BAC7 !important;
--  -moz-border-left-colors: transparent transparent transparent #8290A5 #C6CDD7 #BCC5D1 !important;
-+  border-color: #8290A5 !important;
-   background-color: #B7BFCB !important;
-   color: #8C99AB !important;
- }
-   
- /* .......... default state .......... */
- 
- button[default="true"] {
--  -moz-border-top-colors: transparent transparent #000000 #000000 #BBC6D1 #B1BBC9;
--  -moz-border-right-colors: transparent transparent #000000 #000000 #A2AEBB #A7B4C1;
--  -moz-border-bottom-colors: transparent transparent #000000 #000000 #97A6B6 #9DAAB9;
--  -moz-border-left-colors: transparent transparent #000000 #000000 #BBC6D1 #B1BBC9;
-+  border-color: #000000;
- }
- 
- button[default="true"]:hover:active {
--  -moz-border-top-colors: transparent transparent #000000 #000000 #8290A5 #899AAC;
--  -moz-border-right-colors: transparent transparent #000000 #000000 #8290A5 #899AAC;
--  -moz-border-bottom-colors: transparent transparent #000000 #000000 #8290A5 #899AAC;
--  -moz-border-left-colors: transparent transparent #000000 #000000 #8290A5 #899AAC;
--  border-radius: 4px;
-+  border-color: #000000;
-+  border-radius: 2px;
- }
- 
- button[default="true"]:hover:active:focus {
--  -moz-border-top-colors: #98A5B2 #98A5B2 #000000 #000000 #8290A5 #899AAC;
--  -moz-border-right-colors: #98A5B2 #98A5B2 #000000 #000000 #8290A5 #899AAC;
--  -moz-border-bottom-colors: #98A5B2 #98A5B2 #000000 #000000 #8290A5 #899AAC;
--  -moz-border-left-colors: #98A5B2 #98A5B2 #000000 #000000 #8290A5 #899AAC;
-+  border-color: #000000;
- }
- 
- button[default="true"]:focus {
--  -moz-border-top-colors: #98A5B2 #98A5B2 #000000 #000000 #BBC6D1 #B1BBC9;
--  -moz-border-right-colors: #98A5B2 #98A5B2 #000000 #000000 #A2AEBB #A7B4C1;
--  -moz-border-bottom-colors: #98A5B2 #98A5B2 #000000 #000000 #97A6B6 #9DAAB9;
--  -moz-border-left-colors: #98A5B2 #98A5B2 #000000 #000000 #BBC6D1 #B1BBC9;
-+  border-color: #000000;
- }
- 
- /* ::::: menu/menu-button buttons ::::: */
- 
- button[type="menu-button"] {
-   border: none;
-   background: transparent !important;
- }
-diff --git a/suite/themes/modern/global/colorpicker.css b/suite/themes/modern/global/colorpicker.css
---- a/suite/themes/modern/global/colorpicker.css
-+++ b/suite/themes/modern/global/colorpicker.css
-@@ -8,49 +8,36 @@
- 
- @namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
- 
- /* ::::: colorpicker button ::::: */
-  
- colorpicker[type="button"] {
-   width: 38px;
-   height: 24px;
--  border: 4px solid;
--  -moz-border-top-colors: transparent transparent #97A4B2 #DFE5EF;
--  -moz-border-right-colors: transparent transparent #3B414F #AAB4BF;
--  -moz-border-bottom-colors: transparent transparent #3B414F #AAB4BF;
--  -moz-border-left-colors: transparent transparent #97A4B2 #DFE5EF;
-+  border: 4px solid transparent;
-   background-color: #C7D0D9;
-   padding: 3px;
- }
- 
- .colorpicker-button-colorbox {
-   border: 1px solid #000000;
- }
- 
- colorpicker[type="button"][open="true"] {
--  -moz-border-top-colors: transparent transparent #3B414F #A6B3C0;
--  -moz-border-right-colors: transparent transparent #3B414F #A6B3C0;
--  -moz-border-bottom-colors: transparent transparent #3B414F #A6B3C0;
--  -moz-border-left-colors: transparent transparent #3B414F #A6B3C0;
-+  border-color: #3B414F;
-   background-color: #A6B3C0;
- }
- 
- colorpicker[type="button"]:focus {
--  -moz-border-top-colors: #98A5B2 #98A5B2 #97A4B2 #DFE5EF;
--  -moz-border-right-colors: #98A5B2 #98A5B2 #3B414F #AAB4BF;
--  -moz-border-bottom-colors: #98A5B2 #98A5B2 #3B414F #AAB4BF;
--  -moz-border-left-colors: #98A5B2 #98A5B2 #97A4B2 #DFE5EF;
-+  border-color: #98A5B2;
- }
- 
- colorpicker[type="button"][open="true"]:focus {
--  -moz-border-top-colors: #98A5B2 #98A5B2 #3B414F #A6B3C0;
--  -moz-border-right-colors: #98A5B2 #98A5B2 #3B414F #A6B3C0;
--  -moz-border-bottom-colors: #98A5B2 #98A5B2 #3B414F #A6B3C0;
--  -moz-border-left-colors: #98A5B2 #98A5B2 #3B414F #A6B3C0;
-+  border-color: #98A5B2;
- }
- 
- /* ::::: colorpicker tiles ::::: */
- 
- .colorpickertile {
-   width: 20px;
-   height: 20px;
-   margin: 1px;
-diff --git a/suite/themes/modern/global/dropmarker.css b/suite/themes/modern/global/dropmarker.css
---- a/suite/themes/modern/global/dropmarker.css
-+++ b/suite/themes/modern/global/dropmarker.css
-@@ -1,27 +1,24 @@
- /* This Source Code Form is subject to the terms of the Mozilla Public
-  * License, v. 2.0. If a copy of the MPL was not distributed with this
-  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
- 
- dropmarker {
-   -moz-box-align: center;
-   -moz-box-pack: center;
-   border: 3px solid;
--  -moz-border-top-colors: #000000 #BBC4D1 #B3BBC9;
--  -moz-border-bottom-colors: #000000 #99A7B7 #9EACBB;
--  -moz-border-right-colors: #000000 #99A7B7 #9EACBB;
--  -moz-border-left-colors: #000000 #BBC4D1 #B3BBC9;
-+  border-top-color: #BBC4D1;
-+  border-right-color: #99A7B7;
-+  border-bottom-color: #99A7B7;
-+  border-left-color: #BBC4D1;
-   border-radius: 2px;
-   padding-top: 3px;
-   padding-bottom: 2px;
-   background-color: #A6B3C0;
-   list-style-image: url("chrome://global/skin/menulist/mlist-arrow.gif");
- }
- 
- dropmarker[disabled="true"] {
--  -moz-border-top-colors: #727D8E #D0D6DF #BDC6D2 !important;
--  -moz-border-right-colors: #727D8E #AAB5C2 #B3BBC8 !important;
--  -moz-border-top-colors: #727D8E #D0D6DF #BDC6D2 !important;
--  -moz-border-bottom-colors: #727D8E #AAB5C2 #B3BBC8 !important;
-+  border-color: #727D8E !important;
-   background-color: #B7BFCB !important;
-   list-style-image: url("chrome://global/skin/menulist/mlist-dis-arrow.gif") !important;
- }
-diff --git a/suite/themes/modern/global/filefield.css b/suite/themes/modern/global/filefield.css
---- a/suite/themes/modern/global/filefield.css
-+++ b/suite/themes/modern/global/filefield.css
-@@ -2,32 +2,25 @@
-  * 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/. */
- 
- @namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
- 
- /* File Field Widget */
- filefield {
-   margin: 2px 4px;
--  border: 2px solid;
--  -moz-border-top-colors: #BEC3D3 #5D616E;
--  -moz-border-right-colors: #F8FAFE #5D616E;
--  -moz-border-bottom-colors: #F8FAFE #5D616E;
--  -moz-border-left-colors: #BEC3D3 #5D616E;
-+  border: 1px solid #5D616E;
- }
- 
- .fileFieldContentBox {
-   background-color: #C7D0D9;
- }
- 
- filefield[disabled="true"] {
--  -moz-border-top-colors: #BEC3D3 #98A5B2;
--  -moz-border-right-colors: #F8FAFE #98A5B2;
--  -moz-border-bottom-colors: #F8FAFE #98A5B2;
--  -moz-border-left-colors: #BEC3D3 #98A5B2;
-+  border-color: #98A5B2;
- }
- 
- .fileFieldIcon[disabled="true"] {
-  opacity: 0.4;
- }
- 
- .fileFieldIcon {
-   width: 16px;
-diff --git a/suite/themes/modern/global/groupbox.css b/suite/themes/modern/global/groupbox.css
---- a/suite/themes/modern/global/groupbox.css
-+++ b/suite/themes/modern/global/groupbox.css
-@@ -7,21 +7,17 @@
-   ======================================================================= */
- 
- @namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
- 
- /* ::::: groupbox ::::: */
- 
- groupbox {
-   margin: 5px;
--  border: 2px solid;
--  -moz-border-top-colors: #858B97 #ECEFF2;
--  -moz-border-right-colors: #ECEFF2 #858B97;
--  -moz-border-bottom-colors: #ECEFF2 #858B97;
--  -moz-border-left-colors: #858B97 #ECEFF2;
-+  border: 1px solid #858B97;
-   padding: 5px;
- }
- 
- .groupbox-body {
-   padding: inherit;
- }
- 
- caption {
-diff --git a/suite/themes/modern/global/listbox.css b/suite/themes/modern/global/listbox.css
---- a/suite/themes/modern/global/listbox.css
-+++ b/suite/themes/modern/global/listbox.css
-@@ -7,21 +7,17 @@
-   ======================================================================= */
- 
- @namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
- 
- /* ::::: listbox ::::: */
- 
- listbox {
-   margin: 2px 4px;
--  border: 2px solid;
--  -moz-border-top-colors: #BEC3D3 #5D616E;
--  -moz-border-right-colors: #F8FAFE #5D616E;
--  -moz-border-bottom-colors: #F8FAFE #5D616E;
--  -moz-border-left-colors: #BEC3D3 #5D616E;
-+  border: 1px solid #5D616E;
-   background-color: #FFFFFF;
-   color: #000000;
- }
- 
- listbox[disabled="true"] {
-   color: #999999;
- }
- 
-@@ -73,35 +69,31 @@ listcell {
- .listcell-check[disabled="true"][checked="true"] {
-   list-style-image: url("chrome://global/skin/checkbox/cbox-dis-check.gif");
- }
- 
- /* ::::: listheader ::::: */
- 
- listheader {
-   -moz-box-align: center;
--  border: 2px solid;
--  -moz-border-top-colors: #EEF0F3 #C7D0D9;
--  -moz-border-right-colors: #63676B #A5ABB0;
--  -moz-border-bottom-colors: #63676B #A5ABB0;
--  -moz-border-left-colors: #EEF0F3 #C7D0D9;
-+  border: 1px solid;
-+  border-top-color: #C7D0D9;
-+  border-right-color: #63676B;
-+  border-bottom-color: #63676B;
-+  border-left-color: #C7D0D9;
-   padding: 0 4px;
-   background-color: #C7D0D9;
-   color: #000000;
- }
- 
- listheader[sortable="true"]:hover:active {
--  border-top: 2px solid;
--  border-right: 1px solid;
--  border-bottom: 1px solid;
--  border-left: 2px solid;
--  -moz-border-top-colors: #A5ABB0 #C7D0D9;
--  -moz-border-right-colors: #A5ABB0;
--  -moz-border-bottom-colors: #A5ABB0;
--  -moz-border-left-colors: #A5ABB0 #C7D0D9;
-+  border-top: 1px solid #A5ABB0;
-+  border-right: 1px solid #A5ABB0;
-+  border-bottom: 1px solid #A5ABB0;
-+  border-left: 1px solid #A5ABB0;
-   padding-top: 1px;
-   padding-bottom: 0px;
-   padding-inline-start: 5px;
-   padding-inline-end: 4px;
- }
- 
- .listheader-icon {
-   margin-inline-end: 2px;
-diff --git a/suite/themes/modern/global/menulist.css b/suite/themes/modern/global/menulist.css
---- a/suite/themes/modern/global/menulist.css
-+++ b/suite/themes/modern/global/menulist.css
-@@ -34,31 +34,28 @@ menulist {
- 
- .menulist-icon {
-   margin-inline-end: 2px;
- }
- 
- .menulist-label-box {
-   -moz-box-align: center;
-   -moz-box-pack: center;
--  border-top: 3px solid;
--  border-bottom: 3px solid;
--  border-left: 3px solid;
--  -moz-border-top-colors: #000000 #BBC4D1 #B3BBC9;
--  -moz-border-bottom-colors: #000000 #99A7B7 #9EACBB;
--  -moz-border-left-colors: #000000 #BBC4D1 #B3BBC9;
-+  padding: 2px;
-+  border: 1px solid #000000;
-+  border-right: 1px solid transparent;
-   border-top-left-radius: 2px;
-   border-bottom-left-radius: 2px;
-   background-color: #A6B3C0;
-   padding-inline-start: 8px;
- }
- 
- .menulist-dropmarker {
--  border-left: 2px solid;
--  -moz-border-left-colors: #6D7C8F #C1CBD9;
-+  border: 1px solid black;
-+  border-left: 1px solid #6D7C8F;
-   border-top-left-radius: 0px;
-   border-bottom-left-radius: 0px;
- }
- 
- .menulist-dropmarker > .dropmarker-icon {
-   margin: 1px 2px 0px;
- }
- 
-@@ -72,44 +69,44 @@ menulist:focus {
- 
- /* ..... active state ..... */
-   
- menulist[open="true"] {
-   color: #FFFFFF;
- }
-   
- menulist[open="true"] > .menulist-label-box {
--  -moz-border-top-colors: #313948 #8393A7 #8C9DAF;
--  -moz-border-bottom-colors: #313948 #8393A7 #8C9DAF;
--  -moz-border-left-colors: #313948 #8393A7 #8C9DAF;
-+  border-top-color: #313948;
-+  border-bottom-color: #313948;
-+  border-left-color: #313948;
-   background-color: #91A2B4;
- }
- 
- menulist[open="true"] > .menulist-dropmarker {
-   list-style-image: url("chrome://global/skin/menulist/mlist-act-arrow.gif");
- }
- 
- /* ..... disabled state ..... */
- 
- menulist[disabled="true"] {
-   color: #8C99AB !important;
- }
-   
- menulist[disabled="true"] > .menulist-label-box {
--  -moz-border-top-colors: #727D8E #D0D6DF #BDC6D2 !important;
--  -moz-border-bottom-colors: #727D8E #AAB5C2 #B3BBC8 !important;
-+  border-top-color: #727D8E !important;
-+  border-bottom-color: #727D8E !important;
-   background-color: #B7BFCB !important;
- }
- 
- menulist[disabled="true"] > .menulist-label-box {
--  -moz-border-left-colors: #727D8E #C9D0D9 #BDC6D2 !important;
-+  border-left-color: #727D8E !important;
- }
- 
- menulist[disabled="true"] > .menulist-dropmarker {
--  -moz-border-left-colors: #95A1AD #C7D0DC !important;
-+  border-left-color: #95A1AD !important;
- }
- 
- /* ::::: editable menulists ::::: */
- 
- .menulist-editable-box {
-   border: 1px solid #000000;
-   border-right: none;
-   background-color: #FFFFFF;
-@@ -135,21 +132,21 @@ menulist[focused="true"] {
- }
- 
- /* ::::: compact menulists ::::: */
- 
- .menulist-compact {
-   -moz-box-align: center;
-   -moz-box-pack: center;
-   margin: 0;
--  border: 2px solid;
--  -moz-border-top-colors: #CED5DD #A6B3C0;
--  -moz-border-right-colors: #5D616E #99A9BA;
--  -moz-border-bottom-colors: #5D616E #99A9BA;
--  -moz-border-left-colors: #CED5DD #A6B3C0;
-+  border: 1px solid;
-+  border-top-color: #A6B3C0;
-+  border-right-color: #5D616E;
-+  border-bottom-color: #5D616E;
-+  border-left-color: #A6B3C0;
-   border-radius: 0;
-   padding: 1px;
-   min-height: 0px;
-   background-color: #A6B3C0;
-   color: #000000;
- }
- 
- .menulist-compact > .menulist-label {
-@@ -170,14 +167,14 @@ menulist[focused="true"] {
-   list-style-image: url("chrome://global/skin/menulist/mlist-compact-arrow.gif");
- }
- 
- .menulist-compact:focus {
-   border-radius: 0;
- }
-       
- .menulist-compact[open="true"] {
--  -moz-border-top-colors: #788797 #91A2B4;
--  -moz-border-right-colors: #5D616E #788797;
--  -moz-border-bottom-colors: #5D616E #788797;
--  -moz-border-left-colors: #788797 #91A2B4;
-+  border-top-color: #788797;
-+  border-right-color: #5D616E;
-+  border-bottom-color: #5D616E;
-+  border-left-color: #788797;
-   background-color: #91A2B4;
- }
-diff --git a/suite/themes/modern/global/popup.css b/suite/themes/modern/global/popup.css
---- a/suite/themes/modern/global/popup.css
-+++ b/suite/themes/modern/global/popup.css
-@@ -10,21 +10,17 @@
- 
- /* ::::: popup/menupopup ::::: */
- 
- .panel-arrowcontent,
- panel:not([type="arrow"]),
- menupopup,
- popup {
-   cursor: default;
--  border: 2px solid;
--  -moz-border-top-colors: #7F8893 #EEF4FC;
--  -moz-border-right-colors: #7F8893 #B9BFC7;
--  -moz-border-bottom-colors: #7F8893 #B9BFC7;
--  -moz-border-left-colors: #7F8893 #EEF4FC;
-+  border: 1px solid #7F8893;
-   min-width: 1px;
-   background-color: #DDE3EB;
-   color: #22262F;
- }
- 
- menupopup > menu > menupopup,
- popup > menu > menupopup {
-   margin: -2px;
-@@ -47,32 +43,32 @@ panel[type="arrow"][side="right"] {
- /* The arrow is empty, but it has equal triangular borders on all four sides.
-    We just have to turn on the border on the side touching the content. */
- .panel-arrow {
-   border: 16px solid transparent;
- }
- 
- .panel-arrow[side="top"] {
-   border-top-style: none;
--  -moz-border-bottom-colors: #7F8893;
-+  border-bottom-color: #7F8893;
- }
- 
- .panel-arrow[side="bottom"] {
-   border-bottom-style: none;
--  -moz-border-top-colors: #7F8893;
-+  border-top-color: #7F8893;
- }
- 
- .panel-arrow[side="left"] {
-   border-left-style: none;
--  -moz-border-right-colors: #7F8893;
-+  border-right-color: #7F8893;
- }
- 
- .panel-arrow[side="right"] {
-   border-right-style: none;
--  -moz-border-left-colors: #7F8893;
-+  border-left-color: #7F8893;
- }
- 
- /* ::::: tooltip ::::: */
- 
- tooltip {
-   margin-top: 21px;
-   border: 1px solid #000000;
-   padding: 2px 3px;
-@@ -92,20 +88,17 @@ tooltip[titletip="true"] {
-   max-width: none;
- }
- 
- /* ::::: menulist popup :::::: */
- 
- menulist > menupopup,
- .menulist-menupopup {
-   border-width: 1px;
--  -moz-border-top-colors: #000000;
--  -moz-border-right-colors: #000000;
--  -moz-border-bottom-colors: #000000;
--  -moz-border-left-colors: #000000;
-+  border-color: #000000;
-   padding: 0px;
-   min-width: 0px;
- }
- 
- menupopup > menu > .menulist-menupopup,
- popup > menu > .menulist-menupopup {
-   margin: -1px;
- }
-diff --git a/suite/themes/modern/global/preferences.css b/suite/themes/modern/global/preferences.css
---- a/suite/themes/modern/global/preferences.css
-+++ b/suite/themes/modern/global/preferences.css
-@@ -47,18 +47,17 @@ radio[pane][selected="true"] {
- }
- 
- radio[pane]:hover:active {
-   background-color: #90A1B3;
-   color: #FFFFFF;
- }
- 
- .paneSelector {
--  border-bottom: 2px solid;
--  -moz-border-bottom-colors: #ECEFF2 #2D3B49;
-+  border-bottom: 1px solid #2D3B49;
-   margin: 0px;
-   padding-inline-start: 10px;
-   background-color: #FFFFFF;
-   color: #000000;
- }
- 
- .paneButtonIcon {
-   width: 32px;
-diff --git a/suite/themes/modern/global/progressmeter.css b/suite/themes/modern/global/progressmeter.css
---- a/suite/themes/modern/global/progressmeter.css
-+++ b/suite/themes/modern/global/progressmeter.css
-@@ -7,21 +7,21 @@
-   ======================================================================= */
- 
- @namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
- 
- /* ::::: progressmeter ::::: */
- 
- progressmeter {
-   margin: 2px 4px;
--  border: 2px solid;
--  -moz-border-top-colors: #8997A1 #C7D0D9;
--  -moz-border-right-colors: #E0ECF6 #C7D0D9;
--  -moz-border-bottom-colors: #E0ECF6 #C7D0D9;
--  -moz-border-left-colors: #8997A1 #C7D0D9;
-+  border: 1px solid;
-+  border-top-color: #8997A1;
-+  border-right-color: #C7D0D9;
-+  border-bottom-color: #C7D0D9;
-+  border-left-color: #8997A1;
-   min-width: 128px;
-   height: 14px;
- }
- 
- progressmeter[mode="undetermined"] {
-   background: url("chrome://global/skin/progressmeter/progress-busy.gif");
- }
- 
-@@ -34,14 +34,14 @@ progressmeter[mode="undetermined"] {
- .progress-remainder[mode="undetermined"] {
-   visibility: hidden;
- }
- 
- /* ::::: statusbar progressmeter ::::: */
- 
- .progressmeter-statusbar {
-   margin: 0;
--  -moz-border-bottom-colors: transparent transparent;
--  -moz-border-top-colors: #E0ECF6 #C7D0D9;
--  -moz-border-right-colors: #8997A1 #C7D0D9;
--  -moz-border-left-colors: #E0ECF6 #C7D0D9;
-+  border-bottom-color: transparent;
-+  border-top-color: #C7D0D9;
-+  border-right-color: #8997A1;
-+  border-left-color: #C7D0D9;
- }
- 
-diff --git a/suite/themes/modern/global/richlistbox.css b/suite/themes/modern/global/richlistbox.css
---- a/suite/themes/modern/global/richlistbox.css
-+++ b/suite/themes/modern/global/richlistbox.css
-@@ -9,21 +9,17 @@
- @namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
- 
- /* ::::: richlistbox ::::: */
- 
- richlistbox {
-   /* -moz-appearance needed to override xul.css */
-   -moz-appearance: none !important;
-   margin: 2px 4px;
--  border: 2px solid;
--  -moz-border-top-colors: #BEC3D3 #5D616E;
--  -moz-border-right-colors: #F8FAFE #5D616E;
--  -moz-border-bottom-colors: #F8FAFE #5D616E;
--  -moz-border-left-colors: #BEC3D3 #5D616E;
-+  border: 1px solid #5D616E;
-   background-color: #FFFFFF;
-   color: #000000;
- }
- 
- richlistbox[disabled="true"] {
-   color: #8C99AB;
- }
- 
-diff --git a/suite/themes/modern/global/scale.css b/suite/themes/modern/global/scale.css
---- a/suite/themes/modern/global/scale.css
-+++ b/suite/themes/modern/global/scale.css
-@@ -29,30 +29,23 @@
-   margin: 4px 2px;
-   width: 15px;
-   height: 100px;
- }
- 
- /* ::::: scale thumb ::::: */
- 
- .scale-thumb {
--  border: 3px solid;
--  -moz-border-top-colors: #000000 #E4EBF2 #C3CAD2;
--  -moz-border-right-colors: #000000 #8F9DAD #A4AFBB;
--  -moz-border-bottom-colors: #000000 #8F9DAD #A4AFBB;
--  -moz-border-left-colors: #000000 #E4EBF2 #C3CAD2;
-+  border: 1px solid #000000;
-   background-image: url("chrome://global/skin/scrollbar/thumb-hrz-grip.gif");
-   min-width: 18px;
- }
- 
- .scale-thumb[orient="vertical"] {
-   background-image: url("chrome://global/skin/scrollbar/thumb-vrt-grip.gif");
-   min-height: 18px;
-   min-width: 0px;
- }
- 
- .scale-thumb[disabled="true"] {
--  -moz-border-top-colors: #000000 #708092 #939FAD;
--  -moz-border-right-colors: #000000 #718193 #9EA9B5;
--  -moz-border-bottom-colors: #000000 #8795A4 #929EAC;
--  -moz-border-left-colors: #000000 #ADB6C0 #9EA9B5;
-+  border-color: #000000;
-   background: #9CA8B4;
- }
-diff --git a/suite/themes/modern/global/scrollbars-mini.css b/suite/themes/modern/global/scrollbars-mini.css
---- a/suite/themes/modern/global/scrollbars-mini.css
-+++ b/suite/themes/modern/global/scrollbars-mini.css
-@@ -35,30 +35,24 @@ slider {
- slider[orient="vertical"] {
-   background: url("chrome://global/skin/scrollbar/mini-slider-vrt.gif") repeat-y;
- }
- 
- /* ::::: borders for thumb and buttons ::::: */
- 
- thumb,
- scrollbarbutton {
--  border: 3px solid;
--  -moz-border-top-colors: #000000 #E4EBF2 #C3CAD2;
--  -moz-border-right-colors: #000000 #8F9DAD #A4AFBB;
--  -moz-border-bottom-colors: #000000 #8F9DAD #A4AFBB;
--  -moz-border-left-colors: #000000 #E4EBF2 #C3CAD2;
-+  border: 1px solid;
-+  border-color: #000000;
-   background: #B1BBC5 50% 50% no-repeat;
- }
- 
- thumb:active {
-   background-color: #C2CCD6;
--  -moz-border-top-colors: #111111 #F5FCF3 #D4DBE3;
--  -moz-border-right-colors: #111111 #9FAEBE #B5BFCC;
--  -moz-border-bottom-colors: #111111 #9FAEBE #B5BFCC;
--  -moz-border-left-colors: #111111 #D5FCF3 #D4DBE3;
-+  border-color: #111111;
- }
- 
- /* ::::: thumb (horizontal) ::::: */
- 
- thumb {
-   background-image: url("chrome://global/skin/scrollbar/thumb-vrt-grip.gif");
- }
- 
-@@ -81,22 +75,19 @@ scrollbar[orient="horizontal"] > scrollb
-   height: 11px;
-   max-width: 14px;
-   max-height: 11px;
- }
- 
- scrollbarbutton[disabled="true"],
- scrollbarbutton[active="true"],
- scrollbarbutton:hover:active {
--  border-left-width: 2px;
--  border-right-width: 2px;
--  -moz-border-top-colors: #000000 #708092 #939FAD;
--  -moz-border-right-colors: #000000 #718193 #9EA9B5;
--  -moz-border-bottom-colors: #000000 #8795A4 #929EAC;
--  -moz-border-left-colors: #000000 #ADB6C0 #9EA9B5;
-+  border-left-width: 1px;
-+  border-right-width: 1px;
-+  border-color: #000000;
-   background-color: #9CA8B4;
- }
- 
- /* ..... increment .... */
- 
- scrollbarbutton[type="increment"] {
-   background-image: url("chrome://global/skin/scrollbar/mini-btn-rit.gif")
- }
-diff --git a/suite/themes/modern/global/scrollbars.css b/suite/themes/modern/global/scrollbars.css
---- a/suite/themes/modern/global/scrollbars.css
-+++ b/suite/themes/modern/global/scrollbars.css
-@@ -27,30 +27,24 @@ slider {
- slider[orient="vertical"] {
-   background: url("chrome://global/skin/scrollbar/slider-vrt.gif") repeat-y;
- }
- 
- /* ::::: borders for thumb and buttons ::::: */
- 
- thumb,
- scrollbarbutton {
--  border: 3px solid;
--  -moz-border-top-colors: #000000 #E4EBF2 #C3CAD2;
--  -moz-border-right-colors: #000000 #8F9DAD #A4AFBB;
--  -moz-border-bottom-colors: #000000 #8F9DAD #A4AFBB;
--  -moz-border-left-colors: #000000 #E4EBF2 #C3CAD2;
-+  border: 1px solid;
-+  border-color: #000000;
-   background: #B1BBC5 50% 50% no-repeat;
- }
- 
- thumb:active {
-   background-color: #C2CCD6;
--  -moz-border-top-colors: #111111 #F5FCF3 #D4DBE3;
--  -moz-border-right-colors: #111111 #9FAEBE #B5BFCC;
--  -moz-border-bottom-colors: #111111 #9FAEBE #B5BFCC;
--  -moz-border-left-colors: #111111 #D5FCF3 #D4DBE3;
-+  border-color: #111111;
- }
- 
- %ifdef MOZ_WIDGET_GTK
- scrollbarbutton[sbattr="scrollbar-up-bottom"],
- scrollbarbutton[sbattr="scrollbar-down-top"] {
-   display: none;
- }
- 
-@@ -80,22 +74,17 @@ scrollbarbutton {
-   max-width: 15px;
-   max-height: 15px;
-   -moz-box-flex: 1;
- }
- 
- scrollbarbutton[disabled="true"],
- scrollbarbutton[active="true"],
- scrollbarbutton:hover:active {
--  border-left-width: 2px;
--  border-right-width: 2px;
--  -moz-border-top-colors: #000000 #708092 #939FAD;
--  -moz-border-right-colors: #000000 #718193 #9EA9B5;
--  -moz-border-bottom-colors: #000000 #8795A4 #929EAC;
--  -moz-border-left-colors: #000000 #ADB6C0 #9EA9B5;
-+  border-color: #000000;
-   background-color: #9CA8B4;
- }
- 
- /* ::::: square at the corner of two scrollbars ::::: */
- 
- scrollcorner { 
-   -moz-binding: url("chrome://global/content/bindings/scrollbar.xml#scrollbar-base");
-   width: 15px;
-@@ -139,30 +128,24 @@ scrollbar[orient="vertical"] > scrollbar
-     width: 15px;
-     background: url("chrome://global/skin/scrollbar/slider-vrt.gif") repeat-y;
-   }
- 
-   /* ::::: borders for thumb and buttons ::::: */
- 
-   html|div thumb,
-   html|div scrollbarbutton {
--    border: 3px solid;
--    -moz-border-top-colors: #000000 #E4EBF2 #C3CAD2;
--    -moz-border-right-colors: #000000 #8F9DAD #A4AFBB;
--    -moz-border-bottom-colors: #000000 #8F9DAD #A4AFBB;
--    -moz-border-left-colors: #000000 #E4EBF2 #C3CAD2;
-+    border: 1px solid;
-+    border-color: #000000;
-     background: #B1BBC5 50% 50% no-repeat;
-   }
- 
-   html|div thumb:active {
-     background-color: #C2CCD6;
--    -moz-border-top-colors: #111111 #F5FCF3 #D4DBE3;
--    -moz-border-right-colors: #111111 #9FAEBE #B5BFCC;
--    -moz-border-bottom-colors: #111111 #9FAEBE #B5BFCC;
--    -moz-border-left-colors: #111111 #D5FCF3 #D4DBE3;
-+    border-color: #111111;
-   }
- 
-   /* ::::: thumb (horizontal) ::::: */
- 
-   html|div thumb {
-     min-height: 18px;
-     background-image: url("chrome://global/skin/scrollbar/thumb-vrt-grip.gif");
-   }
-@@ -177,22 +160,17 @@ scrollbar[orient="vertical"] > scrollbar
-   html|div scrollbarbutton {
-     width: 15px;
-     height: 15px;
-   }
- 
-   html|div scrollbarbutton[disabled="true"],
-   html|div scrollbarbutton[active="true"],   
-   html|div scrollbarbutton:hover:active {
--    border-left-width: 2px;
--    border-right-width: 2px;
--    -moz-border-top-colors: #000000 #708092 #939FAD;
--    -moz-border-right-colors: #000000 #718193 #9EA9B5;
--    -moz-border-bottom-colors: #000000 #8795A4 #929EAC;
--    -moz-border-left-colors: #000000 #ADB6C0 #9EA9B5;
-+    border-color: #000000;
-     background-color: #9CA8B4;
-   }
- 
-   /* ..... increment .... */
- 
-   html|div scrollbarbutton[type="increment"] {
-     background-image: url("chrome://global/skin/scrollbar/btn-rit.gif")
-   }
-diff --git a/suite/themes/modern/global/splitter.css b/suite/themes/modern/global/splitter.css
---- a/suite/themes/modern/global/splitter.css
-+++ b/suite/themes/modern/global/splitter.css
-@@ -9,24 +9,20 @@
- @namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
- 
- /* ::::: splitter (vertical) ::::: */
- 
- splitter {
-   -moz-box-align: center;
-   -moz-box-pack: center;
-   cursor: ew-resize;
--  border-top: 1px solid;
--  border-right: 2px solid;
--  border-bottom: 1px solid;
--  border-left: 2px solid;
--  -moz-border-top-colors: #DFE5EF;
--  -moz-border-right-colors: #3B414F #AAB4BF;
--  -moz-border-bottom-colors: #AAB4BF;
--  -moz-border-left-colors: #97A4B2 #DFE5EF;
-+  border-top: 1px solid #DFE5EF;
-+  border-right: 1px solid #3B414F;
-+  border-bottom: 1px solid #AAB4BF;
-+  border-left: 1px solid #97A4B2;
-   min-width: 5px;
-   background-color: #C1CBD5;
- }
- 
- splitter[state="collapsed"][collapse="before"],
- splitter[state="collapsed"][substate="before"],
- splitter[state="collapsed"][collapse="after"]:-moz-locale-dir(rtl),
- splitter[state="collapsed"][substate="after"]:-moz-locale-dir(rtl) {
-@@ -39,24 +35,20 @@ splitter[state="collapsed"][collapse="be
- splitter[state="collapsed"][substate="before"]:-moz-locale-dir(rtl) {
-   cursor: w-resize;
- }
- 
- /* ::::: splitter (horizontal) ::::: */
- 
- splitter[orient="vertical"] {
-   cursor: ns-resize;
--  border-top: 2px solid;
--  border-right: 1px solid;
--  border-bottom: 2px solid;
--  border-left: 1px solid;
--  -moz-border-top-colors: #97A4B2 #DFE5EF;
--  -moz-border-right-colors: #AAB4BF;
--  -moz-border-bottom-colors: #3B414F #AAB4BF;
--  -moz-border-left-colors: #DFE5EF;
-+  border-top: 1px solid #97A4B2;
-+  border-right: 1px solid #AAB4BF;
-+  border-bottom: 1px solid #3B414F;
-+  border-left: 1px solid #DFE5EF;
-   min-width: 0;
-   min-height: 5px;
- }
- 
- splitter[orient="vertical"][state="collapsed"][collapse="before"],
- splitter[orient="vertical"][state="collapsed"][substate="before"] {
-   cursor: s-resize;
- }
-diff --git a/suite/themes/modern/global/tabbox.css b/suite/themes/modern/global/tabbox.css
---- a/suite/themes/modern/global/tabbox.css
-+++ b/suite/themes/modern/global/tabbox.css
-@@ -17,36 +17,29 @@ tabs {
- .tabs-left,
- .tabs-right {
-   border-bottom: 1px solid #000000;
- }
- 
- /* ::::: tabpanels ::::: */
- 
- tabpanels {
--  border-right: 3px solid;
--  border-left: 3px solid;
--  border-bottom: 3px solid;
--  -moz-border-right-colors: #000000 #BAC2CD #C1C9D3;
--  -moz-border-bottom-colors: #000000 #BAC2CD #C1C9D3;
--  -moz-border-left-colors: #000000 #DFE2E6 #D0D7DD;
-+  border-right: 1px solid #000000;
-+  border-left: 1px solid #000000;
-+  border-bottom: 1px solid #000000;
-   padding: 5px;
-   background-color: #C7D0D9;
- }
- 
- /* ::::: tab ::::: */
- 
- tab {
-   margin: 0px;
--  border: 3px solid;
--  border-bottom-width: 3px;
--  -moz-border-top-colors: #000000 #90A0B0 #98A7B5;
--  -moz-border-right-colors: #000000 #90A0B0 #98A7B5;
--  -moz-border-bottom-colors: #000000 #98A7B5;
--  -moz-border-left-colors: #000000 #90A0B0 #98A7B5;
-+  border: 1px solid #000000;
-+  border-bottom-width: 1px;
-   border-top-left-radius: 3px;
-   border-top-right-radius: 3px;
-   padding: 1px 3px;
-   /*background-color: #8C9DAF;*/
-   background-color: #9CABBA;
-   color: #000000;
-   font: menu;
- }
-@@ -57,64 +50,64 @@ tab {
- 
- .tab-image {
-   list-style-image: inherit;
- }
- 
- /* ..... active state ..... */
- 
- tab:hover:active {
--  -moz-border-top-colors: transparent #8190A5 #899AAC;
--  -moz-border-right-colors: transparent #8190A5 #899AAC;
--  -moz-border-left-colors: transparent #8190A5 #899AAC;
-+  border-top-color: #8190A5;
-+  border-right-color: #8190A5;
-+  border-left-color: #8190A5;
-   background-color: #8B9AAD;
-   color: #FFFFFF;
- }
- 
- /* ..... selected state ..... */
- 
- tab[selected="true"],
- tab[selected="true"]:hover:active {
--  -moz-border-top-colors: #000000 #DFE2E6 #D0D7DD;
--  -moz-border-right-colors: #000000 #BAC2CD #C1C9D3;
--  -moz-border-bottom-colors: transparent;
--  -moz-border-left-colors: #000000 #DFE2E6 #D0D7DD;
-+  border-top-color: #000000;
-+  border-right-color: #000000;
-+  border-bottom-color: transparent;
-+  border-left-color: #000000;
-   background-color: #C7D0D9;
-   color: #000000;
- }
- 
- /* ::::: tab-bottom ::::::::::
-    :: Tabs that are attached to the bottom of a panel, but not necessarily
-    :: a tabpanels.
-    ::::: */
- 
- .tab-bottom {
--  -moz-border-top-colors: #000000 #8C9DAF #8C9DAF;
--  -moz-border-bottom-colors: #000000 #8190A5 #899AAC #8D9EB0;
-+  border-top-color: #000000;
-+  border-bottom-color: #000000;
-   border-top-left-radius: 0;
-   border-top-right-radius: 0;
-   border-bottom-right-radius: 3px;
-   border-bottom-left-radius: 3px;
- }
- 
- .tab-bottom:hover:active {
--  -moz-border-top-colors: #000000 #8C9DAF #8C9DAF;
--  -moz-border-bottom-colors: transparent #8190A5 #899AAC #8D9EB0;
-+  border-top-color: #000000;
-+  border-bottom-color: transparent;
- }
-    
- .tab-bottom[selected="true"] {
--  -moz-border-top-colors: transparent !important;
--  -moz-border-bottom-colors: #000000 #DFE2E6 #D0D7DD transparent !important;
-+  border-top-color: transparent !important;
-+  border-bottom-color: #000000 !important;
- }
- 
- tab:focus {
--  -moz-border-top-colors: #000000 #8C9DAF #8C9DAF;
--  -moz-border-left-colors: #000000 #8C9DAF #8C9DAF;
--  -moz-border-right-colors: #000000 #8C9DAF #8C9DAF;
--  -moz-border-bottom-colors: #8190A5 #8190A5 #899AAC;
-+  border-top-color: #000000;
-+  border-left-color: #000000;
-+  border-right-color: #000000;
-+  border-bottom-color: #8190A5;
- }
- 
- .tab-bottom > .tab-text {
-   font: message-box;
-   font-weight: bold;
- }
-    
- /* ::::: tabs-bottom ::::: */
-diff --git a/suite/themes/modern/global/textbox.css b/suite/themes/modern/global/textbox.css
---- a/suite/themes/modern/global/textbox.css
-+++ b/suite/themes/modern/global/textbox.css
-@@ -10,17 +10,17 @@
- 
- @namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
- @namespace html url("http://www.w3.org/1999/xhtml"); /* namespace for HTML elements */
- 
- /* ::::: textbox ::::: */
- 
- textbox {
-   margin: 2px 4px;
--  border: 2px solid;
-+  border: 1px solid;
-   padding-top: 1px;
-   padding-bottom: 1px;
-   padding-inline-start: 2px;
-   padding-inline-end: 0px;
-   background-color: #FFFFFF;
-   color: #000000;
-   font: inherit;
- }
-@@ -28,49 +28,43 @@ textbox {
- html|*.textbox-input::placeholder,
- html|*.textbox-textarea::placeholder {
-   color: #999999;
-   opacity: 1.0;
- }
- 
- textbox,
- textbox[readonly="true"][focused="true"] {
--  -moz-border-top-colors: #BEC3D3 #5D616E;
--  -moz-border-right-colors: #F8FAFE #5D616E;
--  -moz-border-bottom-colors: #F8FAFE #5D616E;
--  -moz-border-left-colors: #BEC3D3 #5D616E;
-+  border-color: #5D616E;
- }
- 
- html|*.textbox-input,
- html|*.textbox-textarea {
-   cursor: text;
-   margin: 0px !important;
-   border: none !important;
-   padding: 0px !important;
-   background-color: inherit;
-   color: inherit;
-   font: inherit;
- }
- 
- /* ..... focused state ..... */
- 
- textbox[focused="true"] {
--  -moz-border-top-colors: #98A5B2 #000000;
--  -moz-border-right-colors: #98A5B2 #000000;
--  -moz-border-bottom-colors: #98A5B2 #000000;
--  -moz-border-left-colors: #98A5B2 #000000;
-+  border-color: #000000;
- }
- 
- /* ..... disabled state ..... */
- 
- textbox[disabled="true"] {
--  -moz-border-top-colors: #BEC3D3 #98A5B2;
--  -moz-border-right-colors: #F8FAFE #98A5B2;
--  -moz-border-bottom-colors: #F8FAFE #98A5B2;
--  -moz-border-left-colors: #BEC3D3 #98A5B2;
-+  border-top-color: #98A5B2;
-+  border-right-color: #F8FAFE;
-+  border-bottom-color: #F8FAFE;
-+  border-left-color: #BEC3D3;
-   background-color: #C7D0D9;
-   color: #999999;
-   cursor: default !important;
- }
- 
- /* ..... readonly state ..... */
- 
- textbox[readonly="true"] {
-diff --git a/suite/themes/modern/global/tree.css b/suite/themes/modern/global/tree.css
---- a/suite/themes/modern/global/tree.css
-+++ b/suite/themes/modern/global/tree.css
-@@ -7,21 +7,17 @@
-   ======================================================================= */
- 
- @namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
- 
- /* ::::: tree ::::: */
- 
- tree {
-   margin: 0px 4px;
--  border: 2px solid;
--  -moz-border-top-colors: #BEC3D3 #5D616E;
--  -moz-border-right-colors: #F8FAFE #5D616E;
--  -moz-border-bottom-colors: #F8FAFE #5D616E;
--  -moz-border-left-colors: #BEC3D3 #5D616E;
-+  border: 1px solid #5D616E;
-   background-color: #FFFFFF;
-   color: #000000;
- }
- 
- /* ::::: tree focusring ::::: */
- 
- .focusring > .tree-stack > .tree-rows > .tree-bodybox {
-   border: 1px solid transparent;  
-@@ -171,21 +167,21 @@ treechildren::-moz-tree-checkbox {
- treechildren::-moz-tree-checkbox(checked) {
-   list-style-image: url("chrome://global/skin/tree/checkbox-checked.gif");
- }
- 
- /* ::::: tree progress meter ::::: */
- 
- treechildren::-moz-tree-progressmeter {
-   margin: 2px 4px;
--  border: 2px solid;
--  -moz-border-top-colors: #8997A1 #C7D0D9;
--  -moz-border-right-colors: #E0ECF6 #C7D0D9;
--  -moz-border-bottom-colors: #E0ECF6 #C7D0D9;
--  -moz-border-left-colors: #8997A1 #C7D0D9;
-+  border: 1px solid;
-+  border-top-color: #8997A1;
-+  border-right-color: #C7D0D9;
-+  border-bottom-color: #C7D0D9;
-+  border-left-color: #8997A1;
-   color: #6B7B8D;
- }
- 
- treechildren::-moz-tree-progressmeter(progressUndetermined) {
-   list-style-image: url("chrome://global/skin/progressmeter/progress-busy.gif");
- }
- 
- treechildren::-moz-tree-cell-text(progressmeter) {
-@@ -193,21 +189,21 @@ treechildren::-moz-tree-cell-text(progre
-  }
- 
- /* ::::: tree columns ::::: */
- 
- treecol,
- treecolpicker {
-   -moz-box-align: center;
-   -moz-box-pack: center;
--  border: 2px solid;
--  -moz-border-top-colors: #EEF0F3 #C7D0D9;
--  -moz-border-right-colors: #63676B #A5ABB0;
--  -moz-border-bottom-colors: #63676B #A5ABB0;
--  -moz-border-left-colors: #EEF0F3 #C7D0D9;
-+  border: 1px solid;
-+  border-top-color: #C7D0D9;
-+  border-right-color: #63676B;
-+  border-bottom-color: #63676B;
-+  border-left-color: #C7D0D9;
-   background-color: #C7D0D9;
-   color: #000000;
-   padding: 0px 4px;
-   min-width: 19px;
- }
- 
- .treecol-image {
-   padding: 0px 1px;
-@@ -221,56 +217,53 @@ treecol[hideheader="true"] {
-   border: none;
-   padding: 0;
- }
- 
- /* ..... internal box ..... */
- 
- treecol:hover:active,
- treecolpicker:hover:active {
--  border-top: 2px solid;
-+  border-top: 1px solid;
-   border-right: 1px solid;
-   border-bottom: 1px solid;
-   border-left: 2px solid;
--  -moz-border-top-colors: #A5ABB0 #C7D0D9;
--  -moz-border-right-colors: #A5ABB0;
--  -moz-border-bottom-colors: #A5ABB0;
--  -moz-border-left-colors: #A5ABB0 #C7D0D9;
-+  border-color: #A5ABB0;
-   padding-top: 1px;
-   padding-bottom: 0px;
-   padding-inline-start: 5px;
-   padding-inline-end: 4px;
- }
- 
- .treecol-image:hover:active {
-   padding-top: 1px;
-   padding-bottom: 0px;
-   padding-inline-start: 2px;
-   padding-inline-end: 1px;
- }
- 
- /* ::::: column drag and drop styles ::::: */
- 
- treecol[dragging="true"] {
--  -moz-border-top-colors: #000000 #90A1B3 !important;
--  -moz-border-right-colors: #000000 #90A1B3 !important;
--  -moz-border-bottom-colors: #000000 #90A1B3 !important;
--  -moz-border-left-colors: #000000 #90A1B3 !important;
-+  border-top-color: #000000 !important;
-+  border-right-color: #000000 !important;
-+  border-bottom-color: #000000 !important;
-+  border-left-color: #000000 !important;
-   background-color: #90A1B3 !important;
-   color: #FFFFFF !important;
- }
- 
- treecol[insertafter="true"]:-moz-locale-dir(ltr),
- treecol[insertbefore="true"]:-moz-locale-dir(rtl) {
--  -moz-border-right-colors: #000000 #666666;
-+  border-right-color: #000000;
- }
- 
- treecol[insertafter="true"]:-moz-locale-dir(rtl),
- treecol[insertbefore="true"]:-moz-locale-dir(ltr) {
--  -moz-border-left-colors: #000000 #666666;
-+  border-left-color: #000000;
- }
- 
- treechildren::-moz-tree-column(insertbefore) {
-   border-inline-start: 1px solid #AAAAAA;
- }
- 
- treechildren::-moz-tree-column(insertafter) {
-   border-inline-end: 1px solid #AAAAAA;
-@@ -331,19 +324,19 @@ treechildren::-moz-tree-row(selected, ed
- }
- 
- treechildren::-moz-tree-cell-text(selected, editing) {
-   color: inherit;
- }
- 
- .tree-input {
-   -moz-appearance: none;
-+  border-top-color: #C7D0D9;
-+  border-bottom-color: #C7D0D9;
-+  border-left-color: #C7D0D9;
-+  border-right-color: #C7D0D9;
-   border: 1px solid #C7D0D9;
--  -moz-border-top-colors: #C7D0D9;
--  -moz-border-bottom-colors: #C7D0D9;
--  -moz-border-left-colors: #C7D0D9;
--  -moz-border-right-colors: #C7D0D9;
-   margin-top: 0px;
-   margin-bottom: 0px;
-   margin-inline-start: -4px;
-   margin-inline-end: 0px;
-   padding: 1px;
- }
-diff --git a/suite/themes/modern/messenger/mailWindow1.css b/suite/themes/modern/messenger/mailWindow1.css
---- a/suite/themes/modern/messenger/mailWindow1.css
-+++ b/suite/themes/modern/messenger/mailWindow1.css
-@@ -58,32 +58,29 @@
- 
- #threadpane-splitter[state="collapsed"] {
-   border-bottom: 2px solid;
- }
- 
- /* ..... tree adjustments ..... */
- 
- #folderTree {
--  border-right: 2px solid;
--  -moz-border-right-colors: #DFE5EF #97A4B2;
-+  border-right: 1px solid #97A4B2;
-   min-width: 1px;
- }
- 
- #threadTree {
--  border-bottom: 2px solid;
--  -moz-border-bottom-colors: #DFE5EF #97A4B2;
-+  border-bottom: 1px solid #97A4B2;
-   min-width: 1px;
- }
- 
- #threadTree,
- #accountCentralBox,
- #messagepanebox {
--  border-left: 2px solid;
--  -moz-border-left-colors: #AAB4BF #3B414F;
-+  border-left: 1px solid #3B414F;
- }
- 
- /* ::::: search toolbar ::::: */
- 
- #searchToolbar {
-   background: url("chrome://global/skin/toolbar/tb-mid.gif") #C7D0D9 repeat-x top;
- }
- 
-@@ -103,18 +100,17 @@
- 
- #locationIcon {
-   list-style-image: none;
- }
- 
- /* ..... message pane adjustments ..... */
- 
- #messagepanebox {
-- border-top: 2px solid;
-- -moz-border-top-colors: #AAB4BF #3B414F;
-+ border-top: 1px solid #3B414F;
- }
- 
- #msgHeaderView {
-   border-left: none !important;
- }
- 
- #messagepane {
-   border: 1px solid #FFFFFF;
-diff --git a/suite/themes/modern/messenger/messengercompose/messengercompose.css b/suite/themes/modern/messenger/messengercompose/messengercompose.css
---- a/suite/themes/modern/messenger/messengercompose/messengercompose.css
-+++ b/suite/themes/modern/messenger/messengercompose/messengercompose.css
-@@ -158,17 +158,17 @@ toolbar[iconsize="small"] > #print-butto
- #attachmentbucket-sizer {
-   border-top: none;
-   border-bottom: none;
-   background-color: #B1BDC9;
- }
- 
- #compose-toolbar-sizer {
-   border-top-width: 1px;
--  -moz-border-top-colors: #EEF0F3;
-+  border-top-color: #EEF0F3;
- }
- 
- #FontFaceSelect {
-   max-width: 35ch;
- }
- 
- /* ::::: autocomplete icons ::::: */
- 
-diff --git a/suite/themes/modern/messenger/primaryToolbar.css b/suite/themes/modern/messenger/primaryToolbar.css
---- a/suite/themes/modern/messenger/primaryToolbar.css
-+++ b/suite/themes/modern/messenger/primaryToolbar.css
-@@ -356,18 +356,17 @@ toolbar[iconsize="small"] > #sync-button
- #extractEventButton[disabled="true"] .toolbarbutton-icon,
- #extractTaskButton[disabled="true"] .toolbarbutton-icon {
-   opacity: 0.3;
- }
- 
- /* ::::: message notification bar style rules ::::: */
- 
- .msgNotificationBar {
--  border-bottom: 1px solid;
--  -moz-border-bottom-colors: #000000;
-+  border-bottom: 1px solid #000000;
-   -moz-appearance: toolbox;
-   background-color: #C7BC8F;
-   color: black;
- }
- 
- .messageImage[value="remoteContent"] {
-   list-style-image: url("chrome://messenger/skin/icons/remote-blocked.png");
- }
-diff --git a/suite/themes/modern/mozapps/aboutNetworking.css b/suite/themes/modern/mozapps/aboutNetworking.css
---- a/suite/themes/modern/mozapps/aboutNetworking.css
-+++ b/suite/themes/modern/mozapps/aboutNetworking.css
-@@ -31,22 +31,20 @@ body {
- /** Categories **/
- 
- #categories > .category
- {
-   -moz-appearance: button;
-   display: inline-block;
- 
-   margin: 2px;
--  border: 6px solid;
--  -moz-border-top-colors: transparent transparent transparent #000000 #BBC6D1 #B1BBC9;
--  -moz-border-right-colors: transparent transparent transparent #000000 #A2AEBB #A7B4C1;
--  -moz-border-bottom-colors: transparent transparent transparent #000000 #97A6B6 #9DAAB9;
--  -moz-border-left-colors: transparent transparent transparent #000000 #BBC6D1 #B1BBC9;
--  border-radius: 5px;
-+  border: 1px solid;
-+  padding: 3px;
-+  border-color: #000000;
-+  border-radius: 2px;
-   min-width: 6em;
-   background-color: #AAB6C4;
-   background-clip: padding-box;
-   color: #000000;
-   font: menu;
- }
- 
- .category {
-diff --git a/suite/themes/modern/mozapps/downloads/downloads.css b/suite/themes/modern/mozapps/downloads/downloads.css
---- a/suite/themes/modern/mozapps/downloads/downloads.css
-+++ b/suite/themes/modern/mozapps/downloads/downloads.css
-@@ -53,30 +53,23 @@ richlistitem[type="download"]:not([selec
- .mini-button {
-   min-width: 0;
-   min-height: 0;
-   color: #000000 !important;
-   background-color: transparent !important;
-   list-style-image: url("chrome://communicator/skin/downloads/downloadButtons.png");
-   -moz-image-region: rect(0px, 48px, 16px, 32px);
-   margin: 0;
--  border: 1px dotted !important;
--  -moz-border-top-colors: transparent !important;
--  -moz-border-right-colors: transparent !important;
--  -moz-border-bottom-colors: transparent !important;
--  -moz-border-left-colors: transparent !important;
-+  border: 1px dotted transparent !important;
-   border-radius: 0 !important;
-   outline: none !important;
- }
- 
- .mini-button:focus {
--  -moz-border-top-colors: #000000 !important;
--  -moz-border-right-colors: #000000 !important;
--  -moz-border-bottom-colors: #000000 !important;
--  -moz-border-left-colors: #000000 !important;
-+  border-color: #000000 !important;
- }
- 
- .cancel {
-   -moz-image-region: rect(0px, 32px, 16px, 16px);
- }
- 
- .retry {
-   -moz-image-region: rect(0px, 64px, 16px, 48px);
-diff --git a/suite/themes/modern/mozapps/extensions/extensions.css b/suite/themes/modern/mozapps/extensions/extensions.css
---- a/suite/themes/modern/mozapps/extensions/extensions.css
-+++ b/suite/themes/modern/mozapps/extensions/extensions.css
-@@ -10,17 +10,17 @@
- 
- #view-port-container {
-   /* Needed to allow the radius to clip the inner content, see bug 595656 */
-   /* Disabled because of bug 623615
-   overflow: hidden;
-   */
-   background-color: #C7D0D9;
-   border: 1px solid #494F5D;
--  border-radius: 5px;
-+  border-radius: 2px;
- }
- 
- .nav-button {
-   list-style-image: url(chrome://mozapps/skin/extensions/navigation.png);
- }
- 
- #forward-btn {
-   border-inline-start: none;
-@@ -375,34 +375,34 @@
-   -moz-appearance: none;
-   margin: 0;
-   border: none;
-   background-color: transparent;
- }
- 
- .addon {
-   color: black;
--  border-top: 2px solid;
--  -moz-border-top-colors: rgba(0, 0, 0, 0.1) rgba(255, 255, 255, 0.1);
-+  border-top: 1px solid;
-+  border-top-color: rgba(0, 0, 0, 0.1);
-   border-bottom: 1px solid;
--  -moz-border-bottom-colors: rgba(255, 255, 255, 0.1);
-+  border-bottom-color: rgba(255, 255, 255, 0.1);
-   padding: 5px;
-   background-origin: border-box;
- }
- 
- .view-pane:not(#search-view) .addon:first-of-type,
- #search-view .addon[first] {
-   border-top-width: 1px;
--  -moz-border-top-colors: rgba(255, 255, 255, 0.1);
-+  border-top-color: rgba(255, 255, 255, 0.1);
- }
- 
- .view-pane:not(#search-view) .addon:last-of-type,
- #search-view .addon[last] {
--  border-bottom-width: 2px;
--  -moz-border-bottom-colors: rgba(0, 0, 0, 0.1) rgba(255, 255, 255, 0.1);
-+  border-bottom-width: 1px;
-+  border-bottom-color: rgba(0, 0, 0, 0.1);
- }
- 
- .details {
-   cursor: pointer;
-   margin: 0;
-   margin-inline-start: 10px;
- }
- 
-@@ -803,18 +803,18 @@
- 
- .detail-row[first-row="true"],
- .detail-row-complex[first-row="true"] {
-   border-top: none;
- }
- 
- .detail-row,
- .detail-row-complex {
--  border-top: 2px solid;
--  -moz-border-top-colors: rgba(28, 31, 37, 0.1) rgba(255, 255, 255, 0.1);
-+  border-top: 1px solid;
-+  border-top-color: rgba(28, 31, 37, 0.1);
-   -moz-box-align: center;
- }
- 
- .detail-row-value {
-   margin-inline-start: 0;
- }
- 
- #detail-controls {
-@@ -1031,61 +1031,47 @@
- }
- 
- .button-link[visited="true"] {
-   color: purple;
- }
- 
- .header-button {
-   margin: 2px;
--  border: 6px solid;
--  -moz-border-top-colors: transparent transparent transparent #000000 #BBC6D1 #B1BBC9;
--  -moz-border-right-colors: transparent transparent transparent #000000 #A2AEBB #A7B4C1;
--  -moz-border-bottom-colors: transparent transparent transparent #000000 #97A6B6 #9DAAB9;
--  -moz-border-left-colors: transparent transparent transparent #000000 #BBC6D1 #B1BBC9;
--  border-radius: 5px;
-+  border: 1px solid;
-+  padding: 3px;
-+  border-color: #000000;
-+  border-radius: 2px;
-   background-color: #AAB6C4;
-   background-clip: padding-box;
-   color: #000000;
-   font: menu;
- }
- 
- .header-button:focus {
--  -moz-border-top-colors: transparent #98A5B2 #98A5B2 #000000 #BBC6D1 #B1BBC9;
--  -moz-border-right-colors: transparent #98A5B2 #98A5B2 #000000 #A2AEBB #A7B4C1;
--  -moz-border-bottom-colors: transparent #98A5B2 #98A5B2 #000000 #97A6B6 #9DAAB9;
--  -moz-border-left-colors: transparent #98A5B2 #98A5B2 #000000 #BBC6D1 #B1BBC9;
-+  border-color: #98A5B2;
- }
- 
- .header-button[disabled="true"] {
--  -moz-border-top-colors: transparent transparent transparent #8290A5 #C6CDD7 #BCC5D1 !important;
--  -moz-border-right-colors: transparent transparent transparent #8290A5 #A9B5C1 #B2BAC7 !important;
--  -moz-border-bottom-colors: transparent transparent transparent #8290A5 #A9B5C1 #B2BAC7 !important;
--  -moz-border-left-colors: transparent transparent transparent #8290A5 #C6CDD7 #BCC5D1 !important;
-+  border-color: #8290A5 !important;
-   background-color: #B7BFCB !important;
-   color: #8C99AB !important;
- }
- 
- .header-button[disabled="true"] > .toolbarbutton-icon {
-   opacity: 0.4;
- }
- 
- .header-button:not([disabled="true"]):active:hover,
- .header-button[open="true"] {
--  -moz-border-top-colors: transparent transparent transparent #000000 #8290A5 #899AAC;
--  -moz-border-right-colors: transparent transparent transparent #000000 #8290A5 #899AAC;
--  -moz-border-bottom-colors: transparent transparent transparent #000000 #8290A5 #899AAC;
--  -moz-border-left-colors: transparent transparent transparent #000000 #8290A5 #899AAC;
-+  border-color: #000000;
-   background-color: #90A1B3;
-   color: #FFFFFF;
- }
- 
- .header-button:not([disabled="true"]):active:hover:focus,
- .header-button[open="true"]:focus {
--  -moz-border-top-colors: transparent #98A5B2 #98A5B2 #000000 #8290A5 #899AAC;
--  -moz-border-right-colors: transparent #98A5B2 #98A5B2 #000000 #8290A5 #899AAC;
--  -moz-border-bottom-colors: transparent #98A5B2 #98A5B2 #000000 #8290A5 #899AAC;
--  -moz-border-left-colors: transparent #98A5B2 #98A5B2 #000000 #8290A5 #899AAC;
-+  border-color: #98A5B2;
- }
- 
- .header-button > .toolbarbutton-text {
-   display: none;
- }
-diff --git a/suite/themes/modern/mozapps/plugins/pluginInstallerWizard.css b/suite/themes/modern/mozapps/plugins/pluginInstallerWizard.css
---- a/suite/themes/modern/mozapps/plugins/pluginInstallerWizard.css
-+++ b/suite/themes/modern/mozapps/plugins/pluginInstallerWizard.css
-@@ -1,14 +1,10 @@
- /* This Source Code Form is subject to the terms of the Mozilla Public
-  * License, v. 2.0. If a copy of the MPL was not distributed with this
-  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
- 
- #licenseContainer, #pluginList {
-   margin: 2px 4px;
--  border: 2px solid;
--  -moz-border-top-colors: #BEC3D3 #5D616E;
--  -moz-border-right-colors: #F8FAFE #5D616E;
--  -moz-border-bottom-colors: #F8FAFE #5D616E;
--  -moz-border-left-colors: #BEC3D3 #5D616E;
-+  border: 1px solid #5D616E;
-   background-color: #FFFFFF;
-   color: #000000;
- }
-diff --git a/suite/themes/modern/mozapps/update/updates.css b/suite/themes/modern/mozapps/update/updates.css
---- a/suite/themes/modern/mozapps/update/updates.css
-+++ b/suite/themes/modern/mozapps/update/updates.css
-@@ -53,21 +53,17 @@ wizardpage {
- #updateName, #updateFinishedName {
-   font-weight: bold;
-   font-size: 120%;
- }
- 
- /* License Page */
- #licenseContent {
-   margin: 2px 4px;
--  border: 2px solid;
--  -moz-border-top-colors: #BEC3D3 #5D616E;
--  -moz-border-right-colors: #F8FAFE #5D616E;
--  -moz-border-bottom-colors: #F8FAFE #5D616E;
--  -moz-border-left-colors: #BEC3D3 #5D616E;
-+  border: 1px solid #5D616E;
-   background-color: #FFFFFF;
-   color: #000000;
- }
- 
- /**
-  * Downloading Page
-  */
- #downloadStatusLine {
-@@ -95,30 +91,27 @@ wizardpage {
-   min-width: 0;
-   min-height: 0;
-   color: #000000 !important;
-   background-color: transparent !important;
-   list-style-image: url("chrome://mozapps/skin/icons/buttons.png");
-   -moz-image-region: rect(0px, 48px, 16px, 32px);
-   margin: 0;
-   border: 1px solid !important;
--  -moz-border-top-colors: transparent !important;
--  -moz-border-right-colors: transparent !important;
--  -moz-border-bottom-colors: transparent !important;
--  -moz-border-left-colors: transparent !important;
-+  border-top-colors: transparent !important;
-+  border-right-colors: transparent !important;
-+  border-bottom-colors: transparent !important;
-+  border-left-colors: transparent !important;
-   border-radius: 0 !important;
-   outline: none !important;
- }
- 
- #pauseButton:focus {
-   border-style: dotted !important;
--  -moz-border-top-colors: #000000 !important;
--  -moz-border-right-colors: #000000 !important;
--  -moz-border-bottom-colors: #000000 !important;
--  -moz-border-left-colors: #000000 !important;
-+  border-color: #000000 !important;
- }
- 
- #pauseButton[disabled="true"] {
-   -moz-image-region: rect(16px, 48px, 32px, 32px);
- }
- 
- #pauseButton[paused="true"] {
-   -moz-image-region: rect(0px, 16px, 16px, 0px);
-@@ -162,18 +155,14 @@ update {
- .update-type {
-   font-weight: bold;
-   color: #990000;
- }
- 
- #historyItems {
-   height: 200px;
-   margin: 1px 5px 4px;
--  border: 2px solid;
--  -moz-border-top-colors: #BEC3D3 #5D616E;
--  -moz-border-right-colors: #F8FAFE #5D616E;
--  -moz-border-bottom-colors: #F8FAFE #5D616E;
--  -moz-border-left-colors: #BEC3D3 #5D616E;
-+  border: 1px solid #5D616E;
- }
- 
- #historyItems > scrollbox {
-   margin-bottom: 1px;
- }
-diff --git a/suite/themes/modern/mozapps/xpinstall/xpinstallConfirm.css b/suite/themes/modern/mozapps/xpinstall/xpinstallConfirm.css
---- a/suite/themes/modern/mozapps/xpinstall/xpinstallConfirm.css
-+++ b/suite/themes/modern/mozapps/xpinstall/xpinstallConfirm.css
-@@ -5,21 +5,17 @@
- #xpinstallheader {
-   margin-bottom: 2em;
- }
- 
- #itemList {
-   margin-top: 2px;
-   margin-bottom: 10px;
-   height: 14em;
--  border: 2px solid;
--  -moz-border-top-colors: #BEC3D3 #5D616E;
--  -moz-border-right-colors: #F8FAFE #5D616E;
--  -moz-border-bottom-colors: #F8FAFE #5D616E;
--  -moz-border-left-colors: #BEC3D3 #5D616E;
-+  border: 1px solid #5D616E;
-   background-color: #FFFFFF;
-   color: #000000;
- }
- 
- #itemWarningIntro {
-   margin-inline-start: 8px;
- }
- 
-diff --git a/suite/themes/modern/navigator/navigator.css b/suite/themes/modern/navigator/navigator.css
---- a/suite/themes/modern/navigator/navigator.css
-+++ b/suite/themes/modern/navigator/navigator.css
-@@ -240,18 +240,17 @@ toolbar[iconsize="small"] > #sync-button
- 
- #window-controls {
-   -moz-box-align: center;
-   padding-top: 0px;
-   padding-bottom: 0px;
-   padding-inline-start: 4px;
-   padding-inline-end: 2px;
-   background-color: #A9B2BD;
--  border-left: 2px solid;
--  -moz-border-left-colors: #B6BEC5 #DDE3E8;
-+  border-left: 1px solid #B6BEC5;
- }
- 
- #window-controls > toolbarbutton {
-   list-style-image: url("chrome://navigator/skin/icons/windowcontrols.png");
-   min-width: 0;
-   border: none;
- }
- 
-@@ -380,37 +379,37 @@ toolbar[iconsize=small][mode="icons"] #p
- }
- 
- /* ::::: the grooved area around the urlbar and associated buttons ::::: */
- 
- .nav-bar-class {
-   -moz-box-align: center;
-   margin-top: 7px;
-   margin-bottom: 3px;
--  border-top: 2px solid;
--  border-bottom: 2px solid;
--  -moz-border-top-colors: #A2AFBD #EBF4FF;
--  -moz-border-right-colors: #D1D9E0 #A2AFBD;
--  -moz-border-bottom-colors: #CFD7DE #939EAA;
--  -moz-border-left-colors: #9FABB9 #D2DAE1;
-+  border-top: 1px solid;
-+  border-bottom: 1px solid;
-+  border-top-color: #A2AFBD;
-+  border-right-color: #A2AFBD;
-+  border-bottom-color: #939EAA;
-+  border-left-color: #9FABB9;
-   padding: 0px;
-   min-width: 0px;
- }
- 
- .nav-bar-first,
- toolbarpaletteitem > .nav-bar-class {
-   margin-inline-start: 5px;
--  border-inline-start: 2px solid;
-+  border-inline-start: 2px solid #D2DAE1;
-   padding-inline-start: 3px;
- }
- 
- .nav-bar-last,
- toolbarpaletteitem > .nav-bar-class {
-   margin-inline-end: 0px;
--  border-inline-end: 2px solid;
-+  border-inline-end: 2px solid #A2AFBD;
-   padding-inline-end: 3px;
- }
- 
- .nav-bar-last:-moz-locale-dir(rtl),
- .nav-bar-first:-moz-locale-dir(ltr),
- toolbarpaletteitem > .nav-bar-class:-moz-locale-dir(rtl),
- toolbarpaletteitem > .nav-bar-class:-moz-locale-dir(ltr) {
-   border-bottom-left-radius: 3px;
-@@ -457,21 +456,18 @@ toolbar[mode="icons"] #search-button > .
- /* ::::: urlbar - the url textbox ::::: */
- 
- .searchbar-textbox,
- #urlbar {
-   margin-top: 2px;
-   margin-bottom: 2px;
-   margin-inline-start: 3px;
-   margin-inline-end: 6px;
--  border: 3px solid;
--  -moz-border-top-colors: #A2AFBD #000000 #A7BACA;
--  -moz-border-right-colors: #D2DAE1 #000000 #768C9F;
--  -moz-border-bottom-colors: #D2DAE1 #000000 #768C9F;
--  -moz-border-left-colors: #A5ACB5 #000000 #A7BACA;
-+  padding: 3px;
-+  border: 1px solid #000000;
-   background-color: #EDF5F7;
-   box-shadow: inset 0px -2px #E9F3F6;
- }
- 
- #urlbar[level="high"] {
-   background-color: #E8DB99;
-   box-shadow: none;
- }
-diff --git a/suite/themes/modern/navigator/tabbrowser.css b/suite/themes/modern/navigator/tabbrowser.css
---- a/suite/themes/modern/navigator/tabbrowser.css
-+++ b/suite/themes/modern/navigator/tabbrowser.css
-@@ -3,18 +3,17 @@
-  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
- 
- @namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
- 
- /* ::::: tabs ::::: */
- 
- .tabbrowser-strip {
-   padding-bottom: 3px;
--  border-bottom: 2px solid;
--  -moz-border-bottom-colors: #000000 #BAC2CD;
-+  border-bottom: 1px solid #000000;
- }
- 
- .tabbrowser-tabs {
-   padding-top: 1px;
- }
- 
- .tabs-left {
-   width: 3px;
-@@ -36,30 +35,27 @@ tab[busy] {
- }
- 
- /* ::::: Tab scrollbox arrow, and all-tabs buttons ::::: */
- 
- .scrollbutton-up,
- .scrollbutton-down,
- .tabs-alltabs-button {
-   margin: 0px;
--  border-bottom: 2px solid;
--  -moz-border-bottom-colors: #000000 transparent;
-+  border-bottom: 1px solid #000000;
- }
- 
- .scrollbutton-up:not([disabled="true"]):-moz-locale-dir(ltr),
- .scrollbutton-down:not([disabled="true"]):-moz-locale-dir(rtl) {
--  border-right: 2px solid;
--  -moz-border-right-colors: #000000 transparent;
-+  border-right: 1px solid #000000;
- }
- 
- .scrollbutton-up:not([disabled="true"]):-moz-locale-dir(rtl),
- .scrollbutton-down:not([disabled="true"]):-moz-locale-dir(ltr) {
--  border-left: 2px solid;
--  -moz-border-left-colors: #000000 transparent;
-+  border-left: 1px solid #000000;
- }
- 
- .scrollbutton-down {
-   transition: background-color 1s ease-out;
- }
- 
- .scrollbutton-down:hover,
- .scrollbutton-down[notifybgtab="true"],

+ 0 - 82
comm-esr60/comm-esr60/patches/1447907-1-61a1.patch

@@ -1,82 +0,0 @@
-# HG changeset patch
-# User Philipp Kewisch <philipp@bugzilla.kewis.ch>
-# Date 1521730439 -3600
-# Node ID f44cfb13e72d37bbe96ea2b5f82514e34150f543
-# Parent  5e1cd8191d43ee71693dc35cee3e1496f633f07e
-Bug 1447907 - Port bug 1429875 to TB: re-write linkage logic in moz.build. rs=bustage-fix DONTBUILD CLOSED TREE
-
-diff --git a/calendar/libical/src/libical/Makefile.in b/calendar/libical/src/libical/Makefile.in
---- a/calendar/libical/src/libical/Makefile.in
-+++ b/calendar/libical/src/libical/Makefile.in
-@@ -37,28 +37,16 @@
- 
- DEFINES += -DHAVE_CONFIG_H
- DEFINES += -DHAVE_SNPRINTF
- 
- ifneq (,$(filter BeOS Darwin OpenVMS NetBSD FreeBSD,$(OS_ARCH)))
- DEFINES	+= -D__USE_BSD=1
- endif
- 
--INSTALL_TARGETS += ical
--ical_FILES := ical.h
--ical_DEST = $(DIST)/include
--ical_TARGET := export
--
--CSRCS += \
--	icalderivedparameter.c \
--	icalderivedproperty.c \
--	icalderivedvalue.c \
--	icalrestriction.c \
--	$(NULL)
--
- include $(moztopsrcdir)/config/rules.mk
- 
- ######################################################################
- #
- # Generate files that are automatically generated (*.h.in and *.c.in)
- # and ical.h
- #
- 
-diff --git a/calendar/libical/src/libical/moz.build b/calendar/libical/src/libical/moz.build
---- a/calendar/libical/src/libical/moz.build
-+++ b/calendar/libical/src/libical/moz.build
-@@ -23,16 +23,38 @@ UNIFIED_SOURCES += [
-     'icaltimezone.c',
-     'icaltypes.c',
-     'icalvalue.c',
-     'pvl.c',
-     'sspm.c',
-     'vsnprintf.c',
- ]
- 
-+SOURCES += [
-+    '!icalderivedparameter.c',
-+    '!icalderivedproperty.c',
-+    '!icalderivedvalue.c',
-+    '!icalrestriction.c',
-+]
-+
-+GENERATED_FILES += [
-+    'ical.h',
-+    'icalderivedparameter.c',
-+    'icalderivedparameter.h',
-+    'icalderivedproperty.c',
-+    'icalderivedproperty.h',
-+    'icalderivedvalue.c',
-+    'icalderivedvalue.h',
-+    'icalrestriction.c',
-+]
-+
-+EXPORTS += [
-+    '!ical.h'
-+]
-+
- # We allow warnings for third-party code that can be updated from upstream.
- AllowCompilerWarnings()
- 
- FINAL_LIBRARY = 'xul'
- 
- LOCAL_INCLUDES += [
-     '../..'
- ]
-

+ 0 - 132
comm-esr60/comm-esr60/patches/1452058-decouple-quote-61.patch

@@ -1,132 +0,0 @@
-# HG changeset patch
-# User aceman <acelists@atlas.sk>
-# Date 1523706480 -7200
-# Node ID 96e865ba8e394265d3688006c12120ec00c69af0
-# Parent  6b8b0b23cf107915fc8ddc0e1184c2d3ff31dd2a
-Bug 1452058 - decouple quote placement option from the auto-quote option in account manager. ui-r=Paenglab, r=jorgk,IanN
-
-diff --git a/mail/locales/en-US/chrome/messenger/am-addressing.dtd b/mail/locales/en-US/chrome/messenger/am-addressing.dtd
---- a/mail/locales/en-US/chrome/messenger/am-addressing.dtd
-+++ b/mail/locales/en-US/chrome/messenger/am-addressing.dtd
-@@ -20,19 +20,19 @@
- <!-- am-addressing.xul -->
- 
- <!ENTITY compositionGroupTitle.label          "Composition">
- <!-- LOCALIZATION NOTE (useHtml.label) : do not translate "html" in below line -->
- <!ENTITY useHtml.label                        "Compose messages in HTML format">
- <!ENTITY useHtml.accesskey                    "C">
- <!ENTITY autoQuote.label                      "Automatically quote the original message when replying">
- <!ENTITY autoQuote.accesskey                  "m">
--<!-- LOCALIZATION NOTE (then.label): This will concatenate with the 4 strings that follow. -->
--<!ENTITY then.label                           "Then,">
--<!ENTITY then.accesskey                       "T">
-+<!-- LOCALIZATION NOTE (quoting.label): This will concatenate with the 4 strings that follow. -->
-+<!ENTITY quoting.label                        "When quoting,">
-+<!ENTITY quoting.accesskey                    "q">
- <!ENTITY aboveQuote.label                     "start my reply above the quote">
- <!ENTITY belowQuote.label                     "start my reply below the quote">
- <!ENTITY selectAndQuote.label                 "select the quote">
- <!ENTITY place.label                          "and place my signature">
- <!ENTITY place.accesskey                      "s">
- <!ENTITY belowText.label                      "below the quote (recommended)">
- <!ENTITY aboveText.label                      "below my reply (above the quote)">
- <!ENTITY includeSigOnReply.label              "Include signature for replies">
-diff --git a/mailnews/base/prefs/content/am-addressing.js b/mailnews/base/prefs/content/am-addressing.js
---- a/mailnews/base/prefs/content/am-addressing.js
-+++ b/mailnews/base/prefs/content/am-addressing.js
-@@ -34,37 +34,26 @@ function onPreInit(account, accountValue
- function LDAPenabling()
- {
-   onCheckItem("identity.directoryServer", ["directories"]);
-   onCheckItem("editButton", ["directories"]);
- }
- 
- function quoteEnabling()
- {
--  var quotebox = document.getElementById("thenBox");
-   var placebox = document.getElementById("placeBox");
--  var quotecheck = document.getElementById("identity.autoQuote");
- 
--  if (quotecheck.checked && !quotecheck.disabled &&
--      (document.getElementById("identity.replyOnTop").value == 1)) {
-+  if (document.getElementById("identity.replyOnTop").value == "1") {
-     placebox.firstChild.removeAttribute("disabled");
-     placebox.lastChild.removeAttribute("disabled");
-   }
-   else {
-     placebox.firstChild.setAttribute("disabled", "true");
-     placebox.lastChild.setAttribute("disabled", "true");
-   }
--  if (quotecheck.checked && !quotecheck.disabled) {
--    quotebox.firstChild.removeAttribute("disabled");
--    quotebox.lastChild.removeAttribute("disabled");
--  }
--  else {
--    quotebox.firstChild.setAttribute("disabled", "true");
--    quotebox.lastChild.setAttribute("disabled", "true");
--  }
- }
- 
- /**
-  * Open the Preferences dialog on the tab with Addressing options.
-  */
- function showGlobalAddressingPrefs()
- {
-   openPrefsFromAccountManager("paneCompose", "addressingTab", null, "addressing_pane");
-diff --git a/mailnews/base/prefs/content/am-addressingOverlay.xul b/mailnews/base/prefs/content/am-addressingOverlay.xul
---- a/mailnews/base/prefs/content/am-addressingOverlay.xul
-+++ b/mailnews/base/prefs/content/am-addressingOverlay.xul
-@@ -27,22 +27,24 @@
-                   prefattribute="value"
-                   prefstring="mail.identity.%identitykey%.compose_html"/>
-       </hbox>
- 
-       <separator class="thin"/>
- 
-       <hbox align="center">
-         <checkbox wsm_persist="true" id="identity.autoQuote" label="&autoQuote.label;"
--                  oncommand="quoteEnabling();" accesskey="&autoQuote.accesskey;"
-+                  accesskey="&autoQuote.accesskey;"
-                   pref="true" preftype="bool" prefattribute="value"
-                   prefstring="mail.identity.%identitykey%.auto_quote"/>
-       </hbox>
--      <hbox class="indent" align="center" id="thenBox">
--        <label value="&then.label;" accesskey="&then.accesskey;" control="identity.replyOnTop"/>
-+      <hbox align="center">
-+        <label value="&quoting.label;"
-+               accesskey="&quoting.accesskey;"
-+               control="identity.replyOnTop"/>
-         <menulist wsm_persist="true" id="identity.replyOnTop" oncommand="quoteEnabling();"
-                   pref="true" preftype="int" prefattribute="value"
-                   prefstring="mail.identity.%identitykey%.reply_on_top">
-           <menupopup>
-             <menuitem value="1" label="&aboveQuote.label;"/>
-             <menuitem value="0" label="&belowQuote.label;"/>
-             <menuitem value="2" label="&selectAndQuote.label;"/>
-           </menupopup>
-diff --git a/suite/locales/en-US/chrome/mailnews/pref/am-addressing.dtd b/suite/locales/en-US/chrome/mailnews/pref/am-addressing.dtd
---- a/suite/locales/en-US/chrome/mailnews/pref/am-addressing.dtd
-+++ b/suite/locales/en-US/chrome/mailnews/pref/am-addressing.dtd
-@@ -22,19 +22,19 @@
- <!-- am-addressing.xul -->
- 
- <!ENTITY compositionGroupTitle.label          "Composition">
- <!-- LOCALIZATION NOTE (useHtml.label) : do not translate "html" in below line -->
- <!ENTITY useHtml.label                        "Compose messages in HTML format">
- <!ENTITY useHtml.accesskey                    "C">
- <!ENTITY autoQuote.label                      "Automatically quote the original message when replying">
- <!ENTITY autoQuote.accesskey                  "m">
--<!-- LOCALIZATION NOTE (then.label): This will concatenate with the 4 strings that follow. -->
--<!ENTITY then.label                           "Then,">
--<!ENTITY then.accesskey                       "T">
-+<!-- LOCALIZATION NOTE (quoting.label): This will concatenate with the 4 strings that follow. -->
-+<!ENTITY quoting.label                        "When quoting,">
-+<!ENTITY quoting.accesskey                    "q">
- <!ENTITY aboveQuote.label                     "start my reply above the quote">
- <!ENTITY belowQuote.label                     "start my reply below the quote">
- <!ENTITY selectAndQuote.label                 "select the quote">
- <!ENTITY place.label                          "and place my signature">
- <!ENTITY place.accesskey                      "s">
- <!ENTITY belowText.label                      "below the quote (recommended)">
- <!ENTITY aboveText.label                      "below my reply (above the quote)">
- <!ENTITY includeSigOnReply.label              "Include signature for replies">

+ 0 - 522
comm-esr60/comm-esr60/patches/1454023-v1_1-257.patch

@@ -1,522 +0,0 @@
-# HG changeset patch
-# User Ian Neal <iann_cvs@blueyonder.co.uk>
-# Date 1581003538 -3600
-# Parent  6f77d6f7542076ecfdef029a3eb087ab9bce1aaf
-Bug 1454023 - Port |Bug 1431050 - "remove NS_ASSERT / debug.js"| to SeaMonkey 2.57. r=frg a=frg
-
-diff --git a/suite/components/feeds/FeedConverter.js b/suite/components/feeds/FeedConverter.js
---- a/suite/components/feeds/FeedConverter.js
-+++ b/suite/components/feeds/FeedConverter.js
-@@ -1,16 +1,15 @@
- /* -*- Mode: Javascript; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
- /* This Source Code Form is subject to the terms of the Mozilla Public
-  * License, v. 2.0. If a copy of the MPL was not distributed with this
-  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
- 
- ChromeUtils.import("resource://gre/modules/Services.jsm");
- ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
--ChromeUtils.import("resource://gre/modules/debug.js");
- 
- const TYPE_MAYBE_FEED = "application/vnd.mozilla.maybe.feed";
- const TYPE_MAYBE_VIDEO_FEED = "application/vnd.mozilla.maybe.video.feed";
- const TYPE_MAYBE_AUDIO_FEED = "application/vnd.mozilla.maybe.audio.feed";
- const TYPE_ANY = "*/*";
- 
- const FEEDHANDLER_URI = "about:feeds";
- 
-@@ -412,42 +411,46 @@ FeedResultService.prototype = {
- 
-     }
-   },
- 
-   /**
-    * See nsIFeedResultService.idl
-    */
-   addFeedResult: function addFeedResult(feedResult) {
--    NS_ASSERT(feedResult != null, "null feedResult!");
--    NS_ASSERT(feedResult.uri != null, "null URI!");
-+    if (feedResult == null)
-+      throw new Error("null feedResult!");
-+    if (feedResult.uri == null)
-+      throw new Error("null URI!");
-     var spec = feedResult.uri.spec;
-     if (!this._results[spec])
-       this._results[spec] = [];
-     this._results[spec].push(feedResult);
-   },
- 
-   /**
-    * See nsIFeedResultService.idl
-    */
-   getFeedResult: function getFeedResult(uri) {
--    NS_ASSERT(uri != null, "null URI!");
-+    if (uri == null)
-+      throw new Error("null URI!");
-     var resultList = this._results[uri.spec];
-     for (let i = 0; i < resultList.length; ++i) {
-       if (resultList[i].uri == uri)
-         return resultList[i];
-     }
-     return null;
-   },
- 
-   /**
-    * See nsIFeedResultService.idl
-    */
-   removeFeedResult: function removeFeedResult(uri) {
--    NS_ASSERT(uri != null, "null URI!");
-+    if (uri == null)
-+      throw new Error("null URI!");
-     var resultList = this._results[uri.spec];
-     if (!resultList)
-       return;
-     var deletions = 0;
-     for (let i = 0; i < resultList.length; ++i) {
-       if (resultList[i].uri == uri) {
-         delete resultList[i];
-         ++deletions;
-diff --git a/suite/components/places/content/bookmarkProperties.js b/suite/components/places/content/bookmarkProperties.js
---- a/suite/components/places/content/bookmarkProperties.js
-+++ b/suite/components/places/content/bookmarkProperties.js
-@@ -127,17 +127,18 @@ var BookmarkPropertiesPanel = {
-   _getDialogTitle: function BPP__getDialogTitle() {
-     if (this._action == ACTION_ADD) {
-       if (this._itemType == BOOKMARK_ITEM)
-         return this._strings.getString("dialogTitleAddBookmark");
-       if (this._itemType == LIVEMARK_CONTAINER)
-         return this._strings.getString("dialogTitleAddLivemark");
- 
-       // add folder
--      NS_ASSERT(this._itemType == BOOKMARK_FOLDER, "Unknown item type");
-+      if (this._itemType != BOOKMARK_FOLDER)
-+        throw new Error("Unknown item type");
-       if (this._URIs.length)
-         return this._strings.getString("dialogTitleAddMulti");
- 
-       return this._strings.getString("dialogTitleAddFolder");
-     }
-     if (this._action == ACTION_EDIT) {
-       return this._strings.getFormattedString("dialogTitleEdit", [this._title]);
-     }
-@@ -147,17 +148,18 @@ var BookmarkPropertiesPanel = {
-   /**
-    * Determines the initial data for the item edited or added by this dialog
-    */
-   async _determineItemInfo() {
-     let dialogInfo = window.arguments[0];
-     this._action = dialogInfo.action == "add" ? ACTION_ADD : ACTION_EDIT;
-     this._hiddenRows = dialogInfo.hiddenRows ? dialogInfo.hiddenRows : [];
-     if (this._action == ACTION_ADD) {
--      NS_ASSERT("type" in dialogInfo, "missing type property for add action");
-+      if (!("type" in dialogInfo))
-+        throw new Error("missing type property for add action");
- 
-       if ("title" in dialogInfo)
-         this._title = dialogInfo.title;
- 
-       if ("defaultInsertionPoint" in dialogInfo) {
-         this._defaultInsertionPoint = dialogInfo.defaultInsertionPoint;
-       } else {
-         this._defaultInsertionPoint =
-@@ -166,18 +168,18 @@ var BookmarkPropertiesPanel = {
-             parentGuid: PlacesUtils.bookmarks.menuGuid
-           });
-       }
- 
-       switch (dialogInfo.type) {
-         case "bookmark":
-           this._itemType = BOOKMARK_ITEM;
-           if ("uri" in dialogInfo) {
--            NS_ASSERT(dialogInfo.uri instanceof Ci.nsIURI,
--                      "uri property should be a uri object");
-+            if (!(dialogInfo.uri instanceof Ci.nsIURI))
-+              throw new Error("uri property should be a uri object");
-             this._uri = dialogInfo.uri;
-             if (typeof(this._title) != "string") {
-               this._title = await PlacesUtils.history.fetch(this._uri) ||
-                             this._uri.spec;
-             }
-           } else {
-             this._uri = Services.io.newURI("about:blank");
-             this._title = this._strings.getString("newBookmarkDefault");
-diff --git a/suite/components/places/content/controller.js b/suite/components/places/content/controller.js
---- a/suite/components/places/content/controller.js
-+++ b/suite/components/places/content/controller.js
-@@ -646,25 +646,16 @@ PlacesController.prototype = {
- 
-     PlacesUIUtils.showBookmarkDialog({ action: "edit",
-                                        node,
-                                        hiddenRows: [ "folderPicker" ]
-                                      }, window.top);
-   },
- 
-   /**
--   * This method can be run on a URI parameter to ensure that it didn't
--   * receive a string instead of an nsIURI object.
--   */
--  _assertURINotString: function PC__assertURINotString(value) {
--    NS_ASSERT((typeof(value) == "object") && !(value instanceof String),
--           "This method should be passed a URI as a nsIURI object, not as a string.");
--  },
--
--  /**
-    * Reloads the selected livemark if any.
-    */
-   reloadSelectedLivemark: function PC_reloadSelectedLivemark() {
-     var selectedNode = this._view.selectedNode;
-     if (selectedNode) {
-       let itemId = selectedNode.itemId;
-       PlacesUtils.livemarks.getLivemark({ id: itemId })
-         .then(aLivemark => {
-@@ -786,17 +777,18 @@ PlacesController.prototype = {
-    *          An array of nodes to remove. Should all be adjacent.
-    * @param   [out] transactions
-    *          An array of transactions.
-    * @param   [optional] removedFolders
-    *          An array of folder nodes that have already been removed.
-    * @return {Integer} The total number of items affected.
-    */
-   async _removeRange(range, transactions, removedFolders) {
--    NS_ASSERT(transactions instanceof Array, "Must pass a transactions array");
-+    if (!(transactions instanceof Array))
-+      throw new Error("Must pass a transactions array");
-     if (!removedFolders)
-       removedFolders = [];
- 
-     let bmGuidsToRemove = [];
-     let totalItems = 0;
- 
-     for (var i = 0; i < range.length; ++i) {
-       var node = range[i];
-@@ -854,22 +846,17 @@ PlacesController.prototype = {
-       }
-     }
-     if (bmGuidsToRemove.length) {
-       transactions.push(PlacesTransactions.Remove({ guids: bmGuidsToRemove }));
-     }
-     return totalItems;
-   },
- 
--  /**
--   * Removes the set of selected ranges from bookmarks.
--   * @param   txnName
--   *          See |remove|.
--   */
--  async _removeRowsFromBookmarks(txnName) {
-+  async _removeRowsFromBookmarks() {
-     let ranges = this._view.removableSelectionRanges;
-     let transactions = [];
-     let removedFolders = [];
-     let totalItems = 0;
- 
-     for (let range of ranges) {
-       totalItems += await this._removeRange(range, transactions, removedFolders);
-     }
-@@ -914,53 +901,48 @@ PlacesController.prototype = {
-     if (PlacesUtils.nodeIsHost(aContainerNode)) {
-       // Site container.
-       PlacesUtils.history.removePagesFromHost(aContainerNode.title, true);
-     } else if (PlacesUtils.nodeIsDay(aContainerNode)) {
-       // Day container.
-       let query = aContainerNode.getQueries()[0];
-       let beginTime = query.beginTime;
-       let endTime = query.endTime;
--      NS_ASSERT(query && beginTime && endTime,
--                "A valid date container query should exist!");
-+      if (!query || !beginTime || !endTime)
-+        throw new Error("A valid date container query should exist!");
-       // We want to exclude beginTime from the removal because
-       // removePagesByTimeframe includes both extremes, while date containers
-       // exclude the lower extreme.  So, if we would not exclude it, we would
-       // end up removing more history than requested.
-       PlacesUtils.history.removePagesByTimeframe(beginTime + 1, endTime);
-     }
-   },
- 
-   /**
-    * Removes the selection
--   * @param   aTxnName
--   *          A name for the transaction if this is being performed
--   *          as part of another operation.
-    */
--  async remove(aTxnName) {
-+  async remove() {
-     if (!this._hasRemovableSelection())
-       return;
- 
--    NS_ASSERT(aTxnName !== undefined, "Must supply Transaction Name");
--
-     var root = this._view.result.root;
- 
-     if (PlacesUtils.nodeIsFolder(root)) {
--      await this._removeRowsFromBookmarks(aTxnName);
-+      await this._removeRowsFromBookmarks();
-     } else if (PlacesUtils.nodeIsQuery(root)) {
-       var queryType = PlacesUtils.asQuery(root).queryOptions.queryType;
-       if (queryType == Ci.nsINavHistoryQueryOptions.QUERY_TYPE_BOOKMARKS) {
--        await this._removeRowsFromBookmarks(aTxnName);
-+        await this._removeRowsFromBookmarks();
-       } else if (queryType == Ci.nsINavHistoryQueryOptions.QUERY_TYPE_HISTORY) {
-         this._removeRowsFromHistory();
-       } else {
--        NS_ASSERT(false, "implement support for QUERY_TYPE_UNIFIED");
-+        throw new Error("implement support for QUERY_TYPE_UNIFIED");
-       }
-     } else
--      NS_ASSERT(false, "unexpected root");
-+      throw new Error("unexpected root");
-   },
- 
-   /**
-    * Fills a DataTransfer object with the content of the selection that can be
-    * dropped elsewhere.
-    * @param   aEvent
-    *          The dragstart event.
-    */
-@@ -1246,17 +1228,18 @@ PlacesController.prototype = {
-   },
- 
-   /**
-    * Checks if we can insert into a container.
-    * @param   container
-    *          The container were we are want to drop
-    */
-   disallowInsertion(container) {
--    NS_ASSERT(container, "empty container");
-+    if (!container)
-+      throw new Error("empty container");
-     // Allow dropping into Tag containers and editable folders.
-     return !PlacesUtils.nodeIsTagQuery(container) &&
-            (!PlacesUtils.nodeIsFolder(container) ||
-             PlacesUIUtils.isFolderReadOnly(container, this._view));
-   },
- 
-   /**
-    * Determines if a node can be moved.
-diff --git a/suite/components/places/content/places.js b/suite/components/places/content/places.js
---- a/suite/components/places/content/places.js
-+++ b/suite/components/places/content/places.js
-@@ -961,31 +961,31 @@ var ViewMenu = {
-    *          item only.
-    *          Must be contained by popup. Can be null (in which case all
-    *          items until the end of the popup will be removed). Ignored
-    *          if startID is null.
-    * @returns The element for the caller to insert new items before,
-    *          null if the caller should just append to the popup.
-    */
-   _clean: function VM__clean(popup, startID, endID) {
--    if (endID)
--      NS_ASSERT(startID, "meaningless to have valid endID and null startID");
-+    if (endID && !startID)
-+      throw new Error("meaningless to have valid endID and null startID");
-     if (startID) {
-       var startElement = document.getElementById(startID);
--      NS_ASSERT(startElement.parentNode ==
--                popup, "startElement is not in popup");
--      NS_ASSERT(startElement,
--                "startID does not correspond to an existing element");
-+      if (!startElement)
-+        throw new Error("startID does not correspond to an existing element");
-+      if (startElement.parentNode != popup)
-+        throw new Error("startElement is not in popup");
-       var endElement = null;
-       if (endID) {
-         endElement = document.getElementById(endID);
--        NS_ASSERT(endElement.parentNode == popup,
--                  "endElement is not in popup");
--        NS_ASSERT(endElement,
--                  "endID does not correspond to an existing element");
-+        if (!endElement)
-+          throw new Error("endID does not correspond to an existing element");
-+        if (endElement.parentNode != popup)
-+          throw new Error("endElement is not in popup");
-       }
-       while (startElement.nextSibling != endElement)
-         popup.removeChild(startElement.nextSibling);
-       return endElement;
-     }
-     while (popup.hasChildNodes()) {
-       popup.firstChild.remove();
-     }
-diff --git a/suite/components/places/content/tree.xml b/suite/components/places/content/tree.xml
---- a/suite/components/places/content/tree.xml
-+++ b/suite/components/places/content/tree.xml
-@@ -198,17 +198,17 @@
- 
-             if (!wasOpen)
-               container.containerOpen = false;
- 
-             return null;
-           }
- 
-           var container = this.result.root;
--          NS_ASSERT(container, "No result, cannot select place URI!");
-+          console.assert(container, "No result, cannot select place URI!");
-           if (!container)
-             return;
- 
-           var child = findNode(container, []);
-           if (child)
-             this.selectNode(child);
-           else {
-             // If the specified child could not be located, clear the selection
-@@ -468,17 +468,17 @@
-       <method name="_getInsertionPoint">
-         <parameter name="index"/>
-         <parameter name="orientation"/>
-         <body><![CDATA[
-           var result = this.result;
-           var resultview = this.view;
-           var container = result.root;
-           var dropNearNode = null;
--          NS_ASSERT(container, "null container");
-+          console.assert(container, "null container");
-           // When there's no selection, assume the container is the container
-           // the view is populated from (i.e. the result's itemId).
-           if (index != -1) {
-             var lastSelected = resultview.nodeForTreeIndex(index);
-             if (resultview.isContainer(index) && orientation == Ci.nsITreeView.DROP_ON) {
-               // If the last selected item is an open container, append _into_
-               // it, rather than insert adjacent to it.
-               container = lastSelected;
-diff --git a/suite/components/places/content/treeView.js b/suite/components/places/content/treeView.js
---- a/suite/components/places/content/treeView.js
-+++ b/suite/components/places/content/treeView.js
-@@ -646,17 +646,17 @@ PlacesTreeView.prototype = {
-       case Ci.nsINavHistoryQueryOptions.SORT_BY_TAGS_DESCENDING:
-         return [this.COLUMN_TYPE_TAGS, true];
-     }
-     return [this.COLUMN_TYPE_UNKNOWN, false];
-   },
- 
-   // nsINavHistoryResultObserver
-   nodeInserted: function PTV_nodeInserted(aParentNode, aNode, aNewIndex) {
--    NS_ASSERT(this._result, "Got a notification but have no result!");
-+    console.assert(this._result, "Got a notification but have no result!");
-     if (!this._tree || !this._result)
-       return;
- 
-     // Bail out for hidden separators.
-     if (PlacesUtils.nodeIsSeparator(aNode) && this.isSorted())
-       return;
- 
-     let parentRow;
-@@ -720,17 +720,17 @@ PlacesTreeView.prototype = {
-    * removed but the node it is collapsed with is not being removed (this then
-    * just swap out the removee with its collapsing partner). The only time
-    * when we really remove things is when deleting URIs, which will apply to
-    * all collapsees. This function is called sometimes when resorting items.
-    * However, we won't do this when sorted by date because dates will never
-    * change for visits, and date sorting is the only time things are collapsed.
-    */
-   nodeRemoved: function PTV_nodeRemoved(aParentNode, aNode, aOldIndex) {
--    NS_ASSERT(this._result, "Got a notification but have no result!");
-+    console.assert(this._result, "Got a notification but have no result!");
-     if (!this._tree || !this._result)
-       return;
- 
-     // XXX bug 517701: We don't know what to do when the root node is removed.
-     if (aNode == this._rootNode)
-       throw Cr.NS_ERROR_NOT_IMPLEMENTED;
- 
-     // Bail out for hidden separators.
-@@ -775,17 +775,17 @@ PlacesTreeView.prototype = {
-     // Restore selection.
-     let rowToSelect = Math.min(oldRow, this._rows.length - 1);
-     if (rowToSelect != -1)
-       this.selection.rangedSelect(rowToSelect, rowToSelect, true);
-   },
- 
-   nodeMoved:
-   function PTV_nodeMoved(aNode, aOldParent, aOldIndex, aNewParent, aNewIndex) {
--    NS_ASSERT(this._result, "Got a notification but have no result!");
-+    console.assert(this._result, "Got a notification but have no result!");
-     if (!this._tree || !this._result)
-       return;
- 
-     // Bail out for hidden separators.
-     if (PlacesUtils.nodeIsSeparator(aNode) && this.isSorted())
-       return;
- 
-     // Note that at this point the node has already been moved by the backend,
-@@ -824,17 +824,17 @@ PlacesTreeView.prototype = {
-     if (nodesToReselect.length > 0) {
-       this._restoreSelection(nodesToReselect, aNewParent);
-       this.selection.selectEventsSuppressed = false;
-     }
-   },
- 
-   _invalidateCellValue: function PTV__invalidateCellValue(aNode,
-                                                           aColumnType) {
--    NS_ASSERT(this._result, "Got a notification but have no result!");
-+    console.assert(this._result, "Got a notification but have no result!");
-     if (!this._tree || !this._result)
-       return;
- 
-     // Nothing to do for the root node.
-     if (aNode == this._rootNode)
-       return;
- 
-     let row = this._getRowForNode(aNode);
-@@ -971,17 +971,17 @@ PlacesTreeView.prototype = {
-               aLivemark.unregisterForUpdates(aNode);
-             }
-           }, () => undefined);
-       }
-     }
-   },
- 
-   invalidateContainer: function PTV_invalidateContainer(aContainer) {
--    NS_ASSERT(this._result, "Need to have a result to update");
-+    console.assert(this._result, "Need to have a result to update");
-     if (!this._tree)
-       return;
- 
-     // If we are currently editing, don't invalidate the container until we
-     // finish.
-     if (this._tree.element.getAttribute("editing")) {
-       if (!this._editingObservers) {
-         this._editingObservers = new Map();
-diff --git a/suite/components/sessionstore/nsSessionStore.js b/suite/components/sessionstore/nsSessionStore.js
---- a/suite/components/sessionstore/nsSessionStore.js
-+++ b/suite/components/sessionstore/nsSessionStore.js
-@@ -75,18 +75,16 @@ const CAPABILITIES = [
- ];
- 
- // These are tab events that we listen to.
- const TAB_EVENTS = ["TabOpen", "TabClose", "TabSelect", "TabShow", "TabHide"];
- 
- ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
- ChromeUtils.import("resource://gre/modules/Services.jsm");
- ChromeUtils.import("resource://gre/modules/NetUtil.jsm");
--// debug.js adds NS_ASSERT. cf. bug 669196
--ChromeUtils.import("resource://gre/modules/debug.js");
- 
- XPCOMUtils.defineLazyServiceGetter(this, "SecMan",
-   "@mozilla.org/scriptsecuritymanager;1", "nsIScriptSecurityManager");
- XPCOMUtils.defineLazyServiceGetter(this, "gScreenManager",
-   "@mozilla.org/gfx/screenmanager;1", "nsIScreenManager");
- XPCOMUtils.defineLazyServiceGetter(this, "uuidGenerator",
-   "@mozilla.org/uuid-generator;1", "nsIUUIDGenerator");
- 
-@@ -1471,18 +1469,18 @@ SessionStoreService.prototype = {
-         // try-catch, we'll update history to where it breaks, assert for
-         // non-release builds, and still save sessionstore.js. We'll track if
-         // we've shown the assert for this tab so we only show it once.
-         // cf. bug 669196.
-         if (!aTab.__SS_broken_history) {
-           // First Focus the window & tab we're having trouble with.
-           aTab.ownerDocument.defaultView.focus();
-           aTab.ownerDocument.defaultView.getBrowser().selectedTab = aTab;
--          NS_ASSERT(false, "SessionStore failed gathering complete history " +
--                           "for the focused window/tab. See bug 669196.");
-+          debug("SessionStore failed gathering complete history " +
-+                "for the focused window/tab. See bug 669196.");
-           aTab.__SS_broken_history = true;
-         }
-       }
-       tabData.index = history.index + 1;
- 
-       // make sure not to cache privacy sensitive data which shouldn't get out
-       if (!aFullData)
-         browser.__SS_data = tabData;

+ 0 - 68
comm-esr60/comm-esr60/patches/1454082-61.patch

@@ -1,68 +0,0 @@
-# HG changeset patch
-# User Philipp Kewisch <mozilla@kewis.ch>
-# Date 1520380916 -3600
-#      Mi Mrz 07 01:01:56 2018 +0100
-# Node ID 8b6f99fff5f0292902c491fa28299a57001a9187
-# Parent  46d545376f8473184767d209832d3d22f887761d
-Bug 1454082 - Add a LOGverbose method and hook it up to the calendar console. r=MakeMyDay
-
-MozReview-Commit-ID: 5qpcQJsIAop
-
-diff --git a/calendar/base/modules/calUtils.jsm b/calendar/base/modules/calUtils.jsm
---- a/calendar/base/modules/calUtils.jsm
-+++ b/calendar/base/modules/calUtils.jsm
-@@ -85,16 +85,17 @@ var cal = {
-      */
-     console: gCalendarConsole,
- 
-     /**
-      * Logs a calendar message to the console. Needs calendar.debug.log enabled to show messages.
-      * Shortcut to cal.console.log()
-      */
-     LOG: gCalendarConsole.log,
-+    LOGverbose: gCalendarConsole.debug,
- 
-     /**
-      * Logs a calendar warning to the console. Shortcut to cal.console.warn()
-      */
-     WARN: gCalendarConsole.warn,
- 
-     /**
-      * Logs a calendar error to the console. Shortcut to cal.console.error()
-@@ -387,20 +388,33 @@ var cal = {
-      *
-      * @param obj    object
-      * @param prop   property to be deleted on shutdown
-      *               (if null, |object| will be deleted)
-      */
-     registerForShutdownCleanup: shutdownCleanup
- };
- 
-+/**
-+ * Update the logging preferences for the calendar console based on the sate of verbose logging and
-+ * normal calendar logging.
-+ */
-+function updateLogPreferences() {
-+    if (cal.verboseLogEnabled) {
-+        gCalendarConsole.maxLogLevel = "all";
-+    } else if (cal.debugLogEnabled) {
-+        gCalendarConsole.maxLogLevel = "log";
-+    } else {
-+        gCalendarConsole.maxLogLevel = "warn";
-+    }
-+}
-+
- // Preferences
--XPCOMUtils.defineLazyPreferenceGetter(cal, "debugLogEnabled", "calendar.debug.log", false, (pref, prev, value) => {
--    gCalendarConsole.maxLogLevel = value ? "all" : "warn";
--});
-+XPCOMUtils.defineLazyPreferenceGetter(cal, "debugLogEnabled", "calendar.debug.log", false, updateLogPreferences);
-+XPCOMUtils.defineLazyPreferenceGetter(cal, "verboseLogEnabled", "calendar.debug.log.verbose", false, updateLogPreferences);
- XPCOMUtils.defineLazyPreferenceGetter(cal, "threadingEnabled", "calendar.threading.disabled", false);
- 
- // Sub-modules for calUtils
- XPCOMUtils.defineLazyModuleGetter(cal, "acl", "resource://calendar/modules/calACLUtils.jsm", "calacl");
- XPCOMUtils.defineLazyModuleGetter(cal, "category", "resource://calendar/modules/calCategoryUtils.jsm", "calcategory");
- XPCOMUtils.defineLazyModuleGetter(cal, "data", "resource://calendar/modules/calDataUtils.jsm", "caldata");
- XPCOMUtils.defineLazyModuleGetter(cal, "dtz", "resource://calendar/modules/calDateTimeUtils.jsm", "caldtz");
- XPCOMUtils.defineLazyModuleGetter(cal, "email", "resource://calendar/modules/calEmailUtils.jsm", "calemail");

+ 0 - 534
comm-esr60/comm-esr60/patches/1455536-1only-61.patch

@@ -1,534 +0,0 @@
-# HG changeset patch
-# User Jorg K <jorgk@jorgk.com>
-# Date 1524220720 -7200
-# Node ID bfc6cf2ec5b3b8a8782ccfaee0ae27e1790f2e7e
-# Parent  c5068dc7ac72f366b861babf9fbe1656857f1fe4
-Bug 1455536 - Port bug 1453881: add_task() doesn't accept generators any more (calendar part). rs=bustage-fix
-
-diff --git a/calendar/test/unit/test_alarmutils.js b/calendar/test/unit/test_alarmutils.js
---- a/calendar/test/unit/test_alarmutils.js
-+++ b/calendar/test/unit/test_alarmutils.js
-@@ -4,17 +4,17 @@
- 
- ChromeUtils.import("resource://gre/modules/Preferences.jsm");
- ChromeUtils.import("resource://calendar/modules/calUtils.jsm");
- 
- function run_test() {
-     do_calendar_startup(run_next_test);
- }
- 
--add_task(function* test_setDefaultValues_events() {
-+add_task(async function test_setDefaultValues_events() {
-     let item, alarm;
- 
-     Preferences.set("calendar.alarms.onforevents", 1);
-     Preferences.set("calendar.alarms.eventalarmunit", "hours");
-     Preferences.set("calendar.alarms.eventalarmlen", 60);
-     item = cal.createEvent();
-     cal.alarms.setDefaultValues(item);
-     alarm = item.getAlarms({})[0];
-@@ -57,17 +57,17 @@ add_task(function* test_setDefaultValues
-     equal(alarm.action, "SHOUT");
-     equal(alarm.offset.icalString, "-P2DT12H");
- 
-     Preferences.reset("calendar.alarms.onforevents");
-     Preferences.reset("calendar.alarms.eventalarmunit");
-     Preferences.reset("calendar.alarms.eventalarmlen");
- });
- 
--add_task(function* test_setDefaultValues_tasks() {
-+add_task(async function test_setDefaultValues_tasks() {
-     let item, alarm;
-     let calnow = cal.dtz.now;
-     let nowDate = cal.createDateTime("20150815T120000");
-     cal.dtz.now = function() {
-         return nowDate;
-     };
- 
-     Preferences.set("calendar.alarms.onfortodos", 1);
-@@ -118,17 +118,17 @@ add_task(function* test_setDefaultValues
-     equal(alarm.offset.icalString, "-P2DT12H");
- 
-     Preferences.reset("calendar.alarms.onfortodos");
-     Preferences.reset("calendar.alarms.todoalarmunit");
-     Preferences.reset("calendar.alarms.todoalarmlen");
-     cal.dtz.now = calnow;
- });
- 
--add_task(function* test_calculateAlarmDate() {
-+add_task(async function test_calculateAlarmDate() {
-     let item = cal.createEvent();
-     item.startDate = cal.createDateTime("20150815T120000");
-     item.endDate = cal.createDateTime("20150815T130000");
- 
-     let calculateAlarmDate = cal.alarms.calculateAlarmDate.bind(cal.alarms, item);
- 
-     let alarm = cal.createAlarm();
-     alarm.related = alarm.ALARM_RELATED_ABSOLUTE;
-@@ -159,17 +159,17 @@ add_task(function* test_calculateAlarmDa
-     equal(calculateAlarmDate(alarm).icalString, "20150814T220000");
-     item.endDate.isDate = false;
- 
-     alarm = cal.createAlarm();
-     alarm.related = alarm.ALARM_RELATED_END;
-     equal(calculateAlarmDate(alarm), null);
- });
- 
--add_task(function* test_calculateAlarmOffset() {
-+add_task(async function test_calculateAlarmOffset() {
-     let item = cal.createEvent();
-     item.startDate = cal.createDateTime("20150815T120000");
-     item.endDate = cal.createDateTime("20150815T130000");
- 
-     let calculateAlarmOffset = cal.alarms.calculateAlarmOffset.bind(cal.alarms, item);
- 
-     let alarm = cal.createAlarm();
-     alarm.related = alarm.ALARM_RELATED_ABSOLUTE;
-@@ -184,17 +184,17 @@ add_task(function* test_calculateAlarmOf
-     equal(calculateAlarmOffset(alarm).icalString, "-PT1H");
- 
-     alarm = cal.createAlarm();
-     alarm.related = alarm.ALARM_RELATED_END;
-     alarm.offset = cal.createDuration("-PT1H");
-     equal(calculateAlarmOffset(alarm).icalString, "-PT1H");
- });
- 
--add_task(function* test_addReminderImages() {
-+add_task(async function test_addReminderImages() {
-     function createReminders(actions) {
-         let reminders = [];
-         for (let action of actions) {
-             let reminder = cal.createAlarm();
-             reminder.action = action;
-             reminders.push(reminder);
-         }
-         return reminders;
-diff --git a/calendar/test/unit/test_datetimeformatter.js b/calendar/test/unit/test_datetimeformatter.js
---- a/calendar/test/unit/test_datetimeformatter.js
-+++ b/calendar/test/unit/test_datetimeformatter.js
-@@ -10,17 +10,17 @@ function run_test() {
- 
- // This test assumes the timezone of your system is not set to Pacific/Fakaofo or equivalent.
- 
- // Time format is platform dependent, so we use alternative result sets here in 'expected'.
- // The first two meet configurations running for automated tests,
- // the first one is for Windows, the second one for Linux and Mac, unless otherwise noted.
- // If you get a failure for this test, add your pattern here.
- 
--add_task(function* formatDate_test() {
-+add_task(async function formatDate_test() {
-     let data = [{
-         input: {
-             datetime: "20170401T180000",
-             timezone: "Pacific/Fakaofo",
-             dateformat: 0 // long
-         },
-         expected: ["Saturday, April 01, 2017", "Saturday, April 1, 2017"]
-     }, {
-@@ -54,17 +54,17 @@ add_task(function* formatDate_test() {
-             "(test #" + i + ": result '" + formatted + "', expected '" + test.expected + "')"
-         );
-     }
-     // let's reset the preferences
-     Preferences.set("calendar.timezone.local", tzlocal);
-     Preferences.set("calendar.date.format", dateformat);
- });
- 
--add_task(function* formatDateShort_test() {
-+add_task(async function formatDateShort_test() {
-     let data = [{
-         input: {
-             datetime: "20170401T180000",
-             timezone: "Pacific/Fakaofo"
-         },
-         expected: ["4/1/2017", "4/1/17"]
-     }, {
-         input: {
-@@ -134,17 +134,17 @@ add_task(function* formatDateShort_test(
-             "(test #" + i + ": result '" + formatted + "', expected '" + test.expected + "')"
-         );
-     }
-     // let's reset the preferences
-     Preferences.set("calendar.timezone.local", tzlocal);
-     Preferences.set("calendar.date.format", dateformat);
- });
- 
--add_task(function* formatDateLong_test() {
-+add_task(async function formatDateLong_test() {
-     let data = [{
-         input: {
-             datetime: "20170401T180000",
-             timezone: "Pacific/Fakaofo"
-         },
-         expected: ["Saturday, April 01, 2017", "Saturday, April 1, 2017"]
-     }, {
-         input: {
-@@ -214,17 +214,17 @@ add_task(function* formatDateLong_test()
-             "(test #" + i + ": result '" + formatted + "', expected '" + test.expected + "')"
-         );
-     }
-     // let's reset the preferences
-     Preferences.set("calendar.timezone.local", tzlocal);
-     Preferences.set("calendar.date.format", dateformat);
- });
- 
--add_task(function* formatDateWithoutYear_test() {
-+add_task(async function formatDateWithoutYear_test() {
-     let data = [{
-         input: {
-             datetime: "20170401T180000",
-             timezone: "Pacific/Fakaofo"
-         },
-         expected: "Apr 1"
-     }, {
-         input: {
-@@ -290,17 +290,17 @@ add_task(function* formatDateWithoutYear
- 
-         equal(dtFormatter.formatDateWithoutYear(date), test.expected, "(test #" + i + ")");
-     }
-     // let's reset the preferences
-     Preferences.set("calendar.timezone.local", tzlocal);
-     Preferences.set("calendar.date.format", dateformat);
- });
- 
--add_task(function* formatTime_test() {
-+add_task(async function formatTime_test() {
-     let data = [{
-         input: {
-             datetime: "20170401T090000",
-             timezone: "Pacific/Fakaofo"
-         },
-         expected: ["9:00 AM", "09:00"] // Windows+Mac, Linux.
-     }, {
-         input: {
-diff --git a/calendar/test/unit/test_deleted_items.js b/calendar/test/unit/test_deleted_items.js
---- a/calendar/test/unit/test_deleted_items.js
-+++ b/calendar/test/unit/test_deleted_items.js
-@@ -17,78 +17,78 @@ function check_delmgr_call(aFunc) {
-             } else {
-                 reject(aReason);
-             }
-         };
-         aFunc();
-     });
- }
- 
--add_task(function* test_deleted_items() {
-+add_task(async function test_deleted_items() {
-     let calmgr = cal.getCalendarManager();
-     let delmgr = Components.classes["@mozilla.org/calendar/deleted-items-manager;1"]
-                            .getService(Components.interfaces.calIDeletedItems);
-     // No items have been deleted, retrieving one should return null.
-     equal(delmgr.getDeletedDate("random"), null);
-     equal(delmgr.getDeletedDate("random", "random"), null);
- 
-     // Make sure the cache is initially flushed and that this doesn't throw an
-     // error.
--    yield check_delmgr_call(() => delmgr.flush());
-+    await check_delmgr_call(() => delmgr.flush());
- 
-     let memory = calmgr.createCalendar("memory", Services.io.newURI("moz-storage-calendar://"));
-     calmgr.registerCalendar(memory);
- 
-     let item = cal.createEvent();
-     item.id = "test-item-1";
-     item.startDate = cal.dtz.now();
-     item.endDate = cal.dtz.now();
- 
-     // Add the item, it still shouldn't be in the deleted database.
--    yield check_delmgr_call(() => memory.addItem(item, null));
-+    await check_delmgr_call(() => memory.addItem(item, null));
-     equal(delmgr.getDeletedDate(item.id), null);
-     equal(delmgr.getDeletedDate(item.id, memory.id), null);
- 
-     // We need to stop time so we have something to compare with.
-     let referenceDate = cal.createDateTime("20120726T112045"); referenceDate.timezone = cal.dtz.defaultTimezone;
-     let futureDate = cal.createDateTime("20380101T000000"); futureDate.timezone = cal.dtz.defaultTimezone;
-     let useFutureDate = false;
-     let oldNowFunction = cal.dtz.now;
-     cal.dtz.now = function() {
-         return (useFutureDate ? futureDate : referenceDate).clone();
-     };
- 
-     // Deleting an item should trigger it being marked for deletion.
--    yield check_delmgr_call(() => memory.deleteItem(item, null));
-+    await check_delmgr_call(() => memory.deleteItem(item, null));
- 
-     // Now check if it was deleted at our reference date.
-     let deltime = delmgr.getDeletedDate(item.id);
-     notEqual(deltime, null);
-     equal(deltime.compare(referenceDate), 0);
- 
-     // The same with the calendar.
-     deltime = delmgr.getDeletedDate(item.id, memory.id);
-     notEqual(deltime, null);
-     equal(deltime.compare(referenceDate), 0);
- 
-     // Item should not be found in other calendars.
-     equal(delmgr.getDeletedDate(item.id, "random"), null);
- 
-     // Check if flushing works, we need to travel time for that.
-     useFutureDate = true;
--    yield check_delmgr_call(() => delmgr.flush());
-+    await check_delmgr_call(() => delmgr.flush());
-     equal(delmgr.getDeletedDate(item.id), null);
-     equal(delmgr.getDeletedDate(item.id, memory.id), null);
- 
-     // Start over with our past time.
-     useFutureDate = false;
- 
-     // Add, delete, add. Item should no longer be deleted.
--    yield check_delmgr_call(() => memory.addItem(item, null));
-+    await check_delmgr_call(() => memory.addItem(item, null));
-     equal(delmgr.getDeletedDate(item.id), null);
--    yield check_delmgr_call(() => memory.deleteItem(item, null));
-+    await check_delmgr_call(() => memory.deleteItem(item, null));
-     equal(delmgr.getDeletedDate(item.id).compare(referenceDate), 0);
--    yield check_delmgr_call(() => memory.addItem(item, null));
-+    await check_delmgr_call(() => memory.addItem(item, null));
-     equal(delmgr.getDeletedDate(item.id), null);
- 
-     // Revert now function, in case more tests are written.
-     cal.dtz.now = oldNowFunction;
- });
-diff --git a/calendar/test/unit/test_ltninvitationutils.js b/calendar/test/unit/test_ltninvitationutils.js
---- a/calendar/test/unit/test_ltninvitationutils.js
-+++ b/calendar/test/unit/test_ltninvitationutils.js
-@@ -56,17 +56,17 @@ function getIcs(aAsArray=false) {
-         "END:VEVENT",
-         "END:VCALENDAR"];
-     if (!aAsArray) {
-         item = item.join("\r\n");
-     }
-     return item;
- }
- 
--add_task(function* getItipHeader_test() {
-+add_task(async function getItipHeader_test() {
-     let data = [{
-         input: {
-             method: "METHOD:REQUEST\r\n",
-             attendees: [null]
-         },
-         expected: "Organizer has invited you to Test Event"
-     }, {
-         input: {
-@@ -154,17 +154,17 @@ add_task(function* getItipHeader_test() 
-         itipItem.init(item);
-         if (sender) {
-             itipItem.sender = sender.id;
-         }
-         equal(ltn.invitation.getItipHeader(itipItem), test.expected, "(test #" + i + ")");
-     }
- });
- 
--add_task(function* createInvitationOverlay_test() {
-+add_task(async function createInvitationOverlay_test() {
-     let data = [{
-         input: { description: "DESCRIPTION:Go to https://www.example.net if you can.\r\n" },
-         expected: {
-             node: "imipHtml-description-content",
-             value: "Go to <a xmlns=\"http://www.w3.org/1999/xhtml\" class=\"moz-txt-link-freetext" +
-                    "\" href=\"https://www.example.net\">https://www.example.net</a> if you can."
-         }
-     }, {
-@@ -381,17 +381,17 @@ add_task(function* createInvitationOverl
-         // above more comprehensive
-         if (test.expected.node.endsWith("-table")) {
-             observed = observed.replace(/(?:\n|\r\n|\r)[ ]{2,}/g, "");
-         }
-         equal(observed, test.expected.value, "(test #" + i + ")");
-     }
- });
- 
--add_task(function* compareInvitationOverlay_test() {
-+add_task(async function compareInvitationOverlay_test() {
-     // eventually it would make sense to set local timezone to Europe/Berlin to avoid test
-     // failures when executing in a different timezone
-     function getDom(aInput) {
-         let item = getIcs();
-         let props = ["attendee", "organizer", "dtstart", "dtend", "summary", "location"];
-         for (let prop of props) {
-             if (Object.keys(aInput).includes(prop)) {
-                 let regex = prop.toUpperCase() +
-@@ -546,17 +546,17 @@ add_task(function* compareInvitationOver
-                   "(test #" + i + "): completeness check " + test.expected.node);
-         }
-     }
-     // let's reset setting
-     Preferences.set("calendar.date.format", dateformat);
-     Preferences.set("calendar.timezone.local", tzlocal);
- });
- 
--add_task(function* getHeaderSection_test() {
-+add_task(async function getHeaderSection_test() {
-     let data = [{
-         input: {
-             toList: "recipient@example.net",
-             subject: "Invitation: test subject",
-             identity: {
-                 fullName: "Invitation sender",
-                 email: "sender@example.net",
-                 replyTo: "no-reply@example.net",
-@@ -654,17 +654,17 @@ add_task(function* getHeaderSection_test
-         equal(header.replace(/Date:.+(?:\n|\r\n|\r)/, "")
-                     .replace(/Message-ID:.+(?:\n|\r\n|\r)/, ""),
-               test.expected.replace(/Date:.+(?:\n|\r\n|\r)/, "")
-                            .replace(/Message-ID:.+(?:\n|\r\n|\r)/, ""),
-               "(test #" + i + "): all headers");
-     }
- });
- 
--add_task(function* convertFromUnicode_test() {
-+add_task(async function convertFromUnicode_test() {
-     let data = [{
-         input: {
-             charset: "UTF-8",
-             text: "müller"
-         },
-         expected: "müller"
-     }, {
-         input: {
-@@ -688,17 +688,17 @@ add_task(function* convertFromUnicode_te
-     let i = 0;
-     for (let test of data) {
-         i++;
-         equal(ltn.invitation.convertFromUnicode(test.input.charset, test.input.text), test.expected,
-               "(test #" + i + ")");
-     }
- });
- 
--add_task(function* encodeUTF8_test() {
-+add_task(async function encodeUTF8_test() {
-     let data = [{
-         input: "müller",
-         expected: "müller"
-     }, {
-         input: "muller",
-         expected: "muller"
-     }, {
-         input: "müller\nmüller",
-@@ -713,17 +713,17 @@ add_task(function* encodeUTF8_test() {
-     let i = 0;
-     for (let test of data) {
-         i++;
-         equal(ltn.invitation.encodeUTF8(test.input), test.expected,
-               "(test #" + i + ")");
-     }
- });
- 
--add_task(function* encodeMimeHeader_test() {
-+add_task(async function encodeMimeHeader_test() {
-     let data = [{
-         input: {
-             header: "Max Müller <m.mueller@example.net>",
-             isEmail: true
-         },
-         expected: "=?UTF-8?Q?Max_M=c3=bcller?= <m.mueller@example.net>"
-     }, {
-         input: {
-@@ -742,17 +742,17 @@ add_task(function* encodeMimeHeader_test
-     let i = 0;
-     for (let test of data) {
-         i++;
-         equal(ltn.invitation.encodeMimeHeader(test.input.header, test.input.isEmail), test.expected,
-               "(test #" + i + ")");
-     }
- });
- 
--add_task(function* getRfc5322FormattedDate_test() {
-+add_task(async function getRfc5322FormattedDate_test() {
-     let data = {
-         input: [{
-             date: null,
-             timezone: "America/New_York"
-         }, {
-             date: "Sat, 24 Jan 2015 09:24:49 +0100",
-             timezone: "America/New_York"
-         }, {
-@@ -788,17 +788,17 @@ add_task(function* getRfc5322FormattedDa
-         }
-         let date = test.date ? new Date(test.date) : null;
-         let re = new RegExp(data.expected);
-         ok(re.test(ltn.invitation.getRfc5322FormattedDate(date)), "(test #" + i + ")");
-     }
-     Preferences.set("calendar.timezone.local", timezone);
- });
- 
--add_task(function* parseCounter_test() {
-+add_task(async function parseCounter_test() {
-     // We are disabling this rule for a more consistent display of this data
-     /* eslint-disable object-curly-newline */
-     let data = [{
-         // #1: basic test to check all currently supported properties
-         input: {
-             existing: [],
-             proposed: [
-                 {
-diff --git a/calendar/test/unit/test_timezone_definition.js b/calendar/test/unit/test_timezone_definition.js
---- a/calendar/test/unit/test_timezone_definition.js
-+++ b/calendar/test/unit/test_timezone_definition.js
-@@ -11,23 +11,23 @@ function run_test() {
-  * @param    {String}         aVersionString
-  * @returns  {boolean}
-  */
- function valid_tz_version(aVersionString) {
-     return aVersionString.match(/^2\.(\d{4})(z*[a-z])$/);
- }
- 
- // check tz database version
--add_task(function* version_test() {
-+add_task(async function version_test() {
-     let tzs = cal.getTimezoneService();
-     ok(valid_tz_version(tzs.version), "timezone version");
- });
- 
- // check whether all tz definitions have all properties
--add_task(function* zone_test() {
-+add_task(async function zone_test() {
-     function resolveZone(aZoneId) {
-         let timezone = tzs.getTimezone(aZoneId);
-         equal(aZoneId, timezone.tzid, "Zone test " + aZoneId);
-         ok(timezone.icalComponent.serializeToICS().startsWith("BEGIN:VTIMEZONE"),
-            "VTIMEZONE test " + aZoneId);
-         ok(timezone.latitude && !!timezone.latitude.match(/^[+-]\d{7}$/), "Latitude test " + aZoneId);
-         ok(timezone.longitude && !!timezone.longitude.match(/^[+-]\d{7}$/), "Longitude test " + aZoneId);
-     }
-@@ -39,17 +39,17 @@ add_task(function* zone_test() {
-         foundZone = true;
-         resolveZone(zones.getNext());
-     }
- 
-     ok(foundZone, "There is at least one timezone");
- });
- 
- // check whether all tz aliases resolve to a tz definition
--add_task(function* alias_test() {
-+add_task(async function alias_test() {
-     function resolveAlias(aAliasId) {
-         let timezone = tzs.getTimezone(aAliasId);
-         let tzid = timezone && timezone.tzid ? timezone.tzid : "";
-         notEqual(tzid, "", "Alias resolution " + aAliasId + " -> " + tzid);
-     }
- 
-     let tzs = cal.getTimezoneService();
-     let aliases = tzs.aliasIds;
-@@ -60,17 +60,17 @@ add_task(function* alias_test() {
-     }
- 
-     ok(foundAlias, "There is at least one alias");
- });
- 
- // Check completeness to avoid unintended removing of zones/aliases when updating zones.json
- // removed zones should at least remain as alias to not break UI like in bug 1210723.
- // previous.json is generated automatically by executing update-zones.py script
--add_task(function* completeness_test() {
-+add_task(async function completeness_test() {
-     let jsonFile = do_get_file("data/previous.json");
-     let test = readJSONFile(jsonFile);
-     ok(test, "previous.json was loaded for completeness test");
- 
-     if (test) {
-         // we check for valid version number of test data only - version number of tzs.version was
-         // already checked in a separate test
-         ok(valid_tz_version(test.version), "test data version.");

+ 0 - 37
comm-esr60/comm-esr60/patches/1457713-4only-62.patch

@@ -1,37 +0,0 @@
-# HG changeset patch
-# User aceman <acelists@atlas.sk>
-# Date 1525140780 -7200
-#      Di Mai 01 04:13:00 2018 +0200
-# Node ID 25cf4e4c34f5171be4687e88bb9d6c76d99ba8d0
-# Parent  58ef06d5ad9bfb5df35ffd0f4bb2e1242086468b
-Bug 1457713 - replace 'QueryInterface: function()' with 'XPCOMUtils.generateQI()' - calendar. r=philipp
-
-diff --git a/calendar/base/content/calendar-views.js b/calendar/base/content/calendar-views.js
---- a/calendar/base/content/calendar-views.js
-+++ b/calendar/base/content/calendar-views.js
-@@ -14,24 +14,17 @@ ChromeUtils.import("resource://gre/modul
- ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
- ChromeUtils.import("resource://gre/modules/Preferences.jsm");
- 
- /**
-  * Controller for the views
-  * @see calIcalendarViewController
-  */
- var calendarViewController = {
--    QueryInterface: function(aIID) {
--        if (!aIID.equals(Components.interfaces.calICalendarViewController) &&
--            !aIID.equals(Components.interfaces.nsISupports)) {
--            throw Components.results.NS_ERROR_NO_INTERFACE;
--        }
--
--        return this;
--    },
-+    QueryInterface: XPCOMUtils.generateQI([Ci.calICalendarViewController]),
- 
-     /**
-      * Creates a new event
-      * @see calICalendarViewController
-      */
-     createNewEvent: function(aCalendar, aStartTime, aEndTime, aForceAllday) {
-         // if we're given both times, skip the dialog
-         if (aStartTime && aEndTime && !aStartTime.isDate && !aEndTime.isDate) {

+ 0 - 1709
comm-esr60/comm-esr60/patches/1459470-61a1.patch

@@ -1,1709 +0,0 @@
-# HG changeset patch
-# User Jorg K <jorgk@jorgk.com>
-# Date 1525646631 -7200
-# Node ID 58409b0e66408fefc8cbf30d397be1842ff97cc9
-# Parent  971031b22a06d41537998e4e62301f3889091837
-Bug 1459470 - Replace NS_PRECONDITION with NS_ASSERTION after removal in bug 1457813. r=aceman
-
-diff --git a/ldap/xpcom/src/nsLDAPOperation.cpp b/ldap/xpcom/src/nsLDAPOperation.cpp
---- a/ldap/xpcom/src/nsLDAPOperation.cpp
-+++ b/ldap/xpcom/src/nsLDAPOperation.cpp
-@@ -269,17 +269,17 @@ nsLDAPOperation::SimpleBind(const nsACSt
-     // Then, if we get called again w/o a password, use the
-     // saved one. Getting called again means we're trying to
-     // fall back to VERSION2.
-     // Since LDAP operations are thrown away when done, it won't stay
-     // around in memory.
-     if (!passwd.IsEmpty())
-       mSavePassword = passwd;
- 
--    NS_PRECONDITION(mMessageListener, "MessageListener not set");
-+    NS_ASSERTION(mMessageListener, "MessageListener not set");
- 
-     rv = connection->GetBindName(bindName);
-     if (NS_FAILED(rv))
-         return rv;
- 
-     MOZ_LOG(gLDAPLogModule, mozilla::LogLevel::Debug,
-            ("nsLDAPOperation::SimpleBind(): called; bindName = '%s'; ",
-             bindName.get()));
-diff --git a/mailnews/base/src/nsMsgContentPolicy.cpp b/mailnews/base/src/nsMsgContentPolicy.cpp
---- a/mailnews/base/src/nsMsgContentPolicy.cpp
-+++ b/mailnews/base/src/nsMsgContentPolicy.cpp
-@@ -632,18 +632,18 @@ nsMsgContentPolicy::NotifyContentWasBloc
-  * See ShouldAcceptRemoteContentForMsgHdr for the actual decisions that
-  * determine if we are going to allow remote content.
-  */
- void
- nsMsgContentPolicy::ShouldAcceptContentForPotentialMsg(nsIURI *aOriginatorLocation,
-                                                        nsIURI *aContentLocation,
-                                                        int16_t *aDecision)
- {
--  NS_PRECONDITION(*aDecision == nsIContentPolicy::REJECT_REQUEST,
--                  "AllowContentForPotentialMessage expects default decision to be reject!");
-+  NS_ASSERTION(*aDecision == nsIContentPolicy::REJECT_REQUEST,
-+               "AllowContentForPotentialMessage expects default decision to be reject!");
- 
-   // Is it a mailnews url?
-   nsresult rv;
-   nsCOMPtr<nsIMsgMessageUrl> msgUrl(do_QueryInterface(aOriginatorLocation,
-                                                       &rv));
-   if (NS_FAILED(rv))
-   {
-     // It isn't a mailnews url - so we accept the load here, and let other
-@@ -703,18 +703,18 @@ nsMsgContentPolicy::ShouldAcceptContentF
-  * Content policy logic for compose windows
-  *
-  */
- void nsMsgContentPolicy::ComposeShouldLoad(nsIMsgCompose *aMsgCompose,
-                                            nsISupports *aRequestingContext,
-                                            nsIURI *aContentLocation,
-                                            int16_t *aDecision)
- {
--  NS_PRECONDITION(*aDecision == nsIContentPolicy::REJECT_REQUEST,
--                  "ComposeShouldLoad expects default decision to be reject!");
-+  NS_ASSERTION(*aDecision == nsIContentPolicy::REJECT_REQUEST,
-+               "ComposeShouldLoad expects default decision to be reject!");
- 
-   nsCString originalMsgURI;
-   nsresult rv = aMsgCompose->GetOriginalMsgURI(getter_Copies(originalMsgURI));
-   NS_ENSURE_SUCCESS_VOID(rv);
- 
-   MSG_ComposeType composeType;
-   rv = aMsgCompose->GetType(&composeType);
-   NS_ENSURE_SUCCESS_VOID(rv);
-diff --git a/mailnews/base/src/nsMsgThreadedDBView.cpp b/mailnews/base/src/nsMsgThreadedDBView.cpp
---- a/mailnews/base/src/nsMsgThreadedDBView.cpp
-+++ b/mailnews/base/src/nsMsgThreadedDBView.cpp
-@@ -131,17 +131,18 @@ nsresult nsMsgThreadedDBView::InitThread
-     SaveSortInfo(m_sortType, m_sortOrder);
- 
-   }
-   return rv;
- }
- 
- nsresult nsMsgThreadedDBView::SortThreads(nsMsgViewSortTypeValue sortType, nsMsgViewSortOrderValue sortOrder)
- {
--  NS_PRECONDITION(m_viewFlags & nsMsgViewFlagsType::kThreadedDisplay, "trying to sort unthreaded threads");
-+  NS_ASSERTION(m_viewFlags & nsMsgViewFlagsType::kThreadedDisplay,
-+               "trying to sort unthreaded threads");
- 
-   uint32_t numThreads = 0;
-   // the idea here is that copy the current view,  then build up an m_keys and m_flags array of just the top level
-   // messages in the view, and then call nsMsgDBView::Sort(sortType, sortOrder).
-   // Then, we expand the threads in the result array that were expanded in the original view (perhaps by copying
-   // from the original view, but more likely just be calling expand).
-   for (uint32_t i = 0; i < m_keys.Length(); i++)
-   {
-diff --git a/mailnews/base/src/nsSubscribeDataSource.cpp b/mailnews/base/src/nsSubscribeDataSource.cpp
---- a/mailnews/base/src/nsSubscribeDataSource.cpp
-+++ b/mailnews/base/src/nsSubscribeDataSource.cpp
-@@ -82,49 +82,49 @@ nsSubscribeDataSource::GetURI(char * *aU
-     return NS_ERROR_OUT_OF_MEMORY;
-   else
-     return NS_OK;
- }
- 
- NS_IMETHODIMP
- nsSubscribeDataSource::GetSource(nsIRDFResource *property, nsIRDFNode *target, bool tv, nsIRDFResource **source)
- {
--    NS_PRECONDITION(property != nullptr, "null ptr");
-+    NS_ASSERTION(property != nullptr, "null ptr");
-     if (! property)
-         return NS_ERROR_NULL_POINTER;
- 
--    NS_PRECONDITION(target != nullptr, "null ptr");
-+    NS_ASSERTION(target != nullptr, "null ptr");
-     if (! target)
-         return NS_ERROR_NULL_POINTER;
- 
--    NS_PRECONDITION(source != nullptr, "null ptr");
-+    NS_ASSERTION(source != nullptr, "null ptr");
-     if (! source)
-         return NS_ERROR_NULL_POINTER;
- 
-     *source = nullptr;
-     return NS_RDF_NO_VALUE;
- }
- 
- NS_IMETHODIMP
- nsSubscribeDataSource::GetTarget(nsIRDFResource *source,
-                                 nsIRDFResource *property,
-                                 bool tv,
-                                 nsIRDFNode **target /* out */)
- {
- 	nsresult rv = NS_RDF_NO_VALUE;
- 
--	NS_PRECONDITION(source != nullptr, "null ptr");
-+	NS_ASSERTION(source != nullptr, "null ptr");
- 	if (! source)
- 		return NS_ERROR_NULL_POINTER;
- 
--	NS_PRECONDITION(property != nullptr, "null ptr");
-+	NS_ASSERTION(property != nullptr, "null ptr");
- 	if (! property)
- 		return NS_ERROR_NULL_POINTER;
- 
--	NS_PRECONDITION(target != nullptr, "null ptr");
-+	NS_ASSERTION(target != nullptr, "null ptr");
- 	if (! target)
- 		return NS_ERROR_NULL_POINTER;
- 
- 	*target = nullptr;
- 
- 	// we only have positive assertions in the subscribe data source.
- 	if (! tv) return NS_RDF_NO_VALUE;
- 
-@@ -213,25 +213,25 @@ nsSubscribeDataSource::GetTarget(nsIRDFR
- NS_IMETHODIMP
- nsSubscribeDataSource::GetTargets(nsIRDFResource *source,
- 				nsIRDFResource *property,
- 				bool tv,
- 				nsISimpleEnumerator **targets /* out */)
- {
- 	nsresult rv = NS_OK;
- 
--	NS_PRECONDITION(source != nullptr, "null ptr");
-+	NS_ASSERTION(source != nullptr, "null ptr");
- 	if (! source)
- 		return NS_ERROR_NULL_POINTER;
- 
--	NS_PRECONDITION(property != nullptr, "null ptr");
-+	NS_ASSERTION(property != nullptr, "null ptr");
- 	if (! property)
- 		return NS_ERROR_NULL_POINTER;
- 
--	NS_PRECONDITION(targets != nullptr, "null ptr");
-+	NS_ASSERTION(targets != nullptr, "null ptr");
- 	if (! targets)
- 		return NS_ERROR_NULL_POINTER;
- 
-     *targets = nullptr;
- 
- 	// we only have positive assertions in the subscribe data source.
- 	if (!tv) return NS_RDF_NO_VALUE;
- 
-@@ -397,29 +397,29 @@ NS_IMETHODIMP
- nsSubscribeDataSource::HasAssertion(nsIRDFResource *source,
-                              nsIRDFResource *property,
-                              nsIRDFNode *target,
-                              bool tv,
-                              bool *hasAssertion /* out */)
- {
-     nsresult rv = NS_OK;
- 
--	NS_PRECONDITION(source != nullptr, "null ptr");
-+	NS_ASSERTION(source != nullptr, "null ptr");
- 	if (! source)
- 		return NS_ERROR_NULL_POINTER;
- 
--	NS_PRECONDITION(property != nullptr, "null ptr");
-+	NS_ASSERTION(property != nullptr, "null ptr");
- 	if (! property)
- 		return NS_ERROR_NULL_POINTER;
- 
--	NS_PRECONDITION(target != nullptr, "null ptr");
-+	NS_ASSERTION(target != nullptr, "null ptr");
- 	if (! target)
- 		return NS_ERROR_NULL_POINTER;
- 
--	NS_PRECONDITION(hasAssertion != nullptr, "null ptr");
-+	NS_ASSERTION(hasAssertion != nullptr, "null ptr");
- 	if (! hasAssertion)
- 		return NS_ERROR_NULL_POINTER;
- 
- 	*hasAssertion = false;
- 
-   // we only have positive assertions in the subscribe data source.
- 	if (!tv) return NS_OK;
- 
-@@ -516,21 +516,21 @@ nsSubscribeDataSource::ArcLabelsIn(nsIRD
- 
- 
- NS_IMETHODIMP
- nsSubscribeDataSource::ArcLabelsOut(nsIRDFResource *source,
- 				   nsISimpleEnumerator **labels /* out */)
- {
-     nsresult rv = NS_OK;
- 
--    NS_PRECONDITION(source != nullptr, "null ptr");
-+    NS_ASSERTION(source != nullptr, "null ptr");
-     if (! source)
- 	return NS_ERROR_NULL_POINTER;
- 
--    NS_PRECONDITION(labels != nullptr, "null ptr");
-+    NS_ASSERTION(labels != nullptr, "null ptr");
-     if (! labels)
- 	return NS_ERROR_NULL_POINTER;
- 
-     nsCOMPtr<nsISubscribableServer> server;
-     nsCString relativePath;
- 
-     rv = GetServerAndRelativePathFromResource(source, getter_AddRefs(server), getter_Copies(relativePath));
-     if (NS_FAILED(rv) || !server) {
-diff --git a/mailnews/base/util/nsImapMoveCoalescer.cpp b/mailnews/base/util/nsImapMoveCoalescer.cpp
---- a/mailnews/base/util/nsImapMoveCoalescer.cpp
-+++ b/mailnews/base/util/nsImapMoveCoalescer.cpp
-@@ -133,17 +133,17 @@ nsresult nsImapMoveCoalescer::PlaybackMo
-     }
-   }
-   return rv;
- }
- 
- NS_IMETHODIMP
- nsImapMoveCoalescer::OnStartRunningUrl(nsIURI *aUrl)
- {
--  NS_PRECONDITION(aUrl, "just a sanity check");
-+  NS_ASSERTION(aUrl, "just a sanity check");
-   return NS_OK;
- }
- 
- NS_IMETHODIMP
- nsImapMoveCoalescer::OnStopRunningUrl(nsIURI *aUrl, nsresult aExitCode)
- {
-   m_outstandingMoves--;
-   if (m_doNewMailNotification && !m_outstandingMoves)
-diff --git a/mailnews/base/util/nsMsgLineBuffer.cpp b/mailnews/base/util/nsMsgLineBuffer.cpp
---- a/mailnews/base/util/nsMsgLineBuffer.cpp
-+++ b/mailnews/base/util/nsMsgLineBuffer.cpp
-@@ -247,17 +247,17 @@ nsresult nsMsgLineBuffer::FlushLastLine(
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- // This is a utility class used to efficiently extract lines from an input stream by buffering
- // read but unprocessed stream data in a buffer.
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- 
- nsMsgLineStreamBuffer::nsMsgLineStreamBuffer(uint32_t aBufferSize, bool aAllocateNewLines, bool aEatCRLFs, char aLineToken)
-            : m_eatCRLFs(aEatCRLFs), m_allocateNewLines(aAllocateNewLines), m_lineToken(aLineToken)
- {
--  NS_PRECONDITION(aBufferSize > 0, "invalid buffer size!!!");
-+  NS_ASSERTION(aBufferSize > 0, "invalid buffer size!!!");
-   m_dataBuffer = nullptr;
-   m_startPos = 0;
-     m_numBytesInBuffer = 0;
- 
-   // used to buffer incoming data by ReadNextLineFromInput
-   if (aBufferSize > 0)
-   {
-     m_dataBuffer = (char *) PR_CALLOC(sizeof(char) * aBufferSize);
-@@ -294,17 +294,17 @@ void nsMsgLineStreamBuffer::ClearBuffer(
- // our mail protocols including imap, nntp, and pop. If you screw it up, you could break a lot of stuff.....
- 
- char * nsMsgLineStreamBuffer::ReadNextLine(nsIInputStream * aInputStream, uint32_t &aNumBytesInLine, bool &aPauseForMoreData, nsresult *prv, bool addLineTerminator)
- {
-   // try to extract a line from m_inputBuffer. If we don't have an entire line,
-   // then read more bytes out from the stream. If the stream is empty then wait
-   // on the monitor for more data to come in.
- 
--  NS_PRECONDITION(m_dataBuffer && m_dataBufferSize > 0, "invalid input arguments for read next line from input");
-+  NS_ASSERTION(m_dataBuffer && m_dataBufferSize > 0, "invalid input arguments for read next line from input");
- 
-   if (prv)
-     *prv = NS_OK;
-   // initialize out values
-   aPauseForMoreData = false;
-   aNumBytesInLine = 0;
-   char * endOfLine = nullptr;
-   char * startOfLine = m_dataBuffer+m_startPos;
-diff --git a/mailnews/compose/src/nsSmtpProtocol.cpp b/mailnews/compose/src/nsSmtpProtocol.cpp
---- a/mailnews/compose/src/nsSmtpProtocol.cpp
-+++ b/mailnews/compose/src/nsSmtpProtocol.cpp
-@@ -229,17 +229,17 @@ nsSmtpProtocol::~nsSmtpProtocol()
- {
-   // free our local state
-   PR_Free(m_dataBuf);
-   delete m_lineStreamBuffer;
- }
- 
- nsresult nsSmtpProtocol::Initialize(nsIURI * aURL)
- {
--    NS_PRECONDITION(aURL, "invalid URL passed into Smtp Protocol");
-+    NS_ASSERTION(aURL, "invalid URL passed into Smtp Protocol");
-     nsresult rv = NS_OK;
- 
-     m_flags = 0;
-     m_prefAuthMethods = 0;
-     m_failedAuthMethods = 0;
-     m_currentAuthMethod = 0;
-     m_usernamePrompted = false;
-     m_prefSocketType = nsMsgSocketType::trySTARTTLS;
-diff --git a/mailnews/imap/src/nsIMAPGenericParser.cpp b/mailnews/imap/src/nsIMAPGenericParser.cpp
---- a/mailnews/imap/src/nsIMAPGenericParser.cpp
-+++ b/mailnews/imap/src/nsIMAPGenericParser.cpp
-@@ -171,17 +171,17 @@ void nsIMAPGenericParser::AdvanceToNextL
-        firstToken++;
-      fAtEndOfLine = (*firstToken == '\0');
-   }
- }
- 
- // advances |fLineOfTokens| by |bytesToAdvance| bytes
- void nsIMAPGenericParser::AdvanceTokenizerStartingPoint(int32_t bytesToAdvance)
- {
--  NS_PRECONDITION(bytesToAdvance>=0, "bytesToAdvance must not be negative");
-+  NS_ASSERTION(bytesToAdvance>=0, "bytesToAdvance must not be negative");
-   if (!fStartOfLineOfTokens)
-   {
-     AdvanceToNextToken();  // the tokenizer was not yet initialized, do it now
-     if (!fStartOfLineOfTokens)
-       return;
-   }
- 
-   if(!fStartOfLineOfTokens)
-diff --git a/mailnews/imap/src/nsImapMailFolder.cpp b/mailnews/imap/src/nsImapMailFolder.cpp
---- a/mailnews/imap/src/nsImapMailFolder.cpp
-+++ b/mailnews/imap/src/nsImapMailFolder.cpp
-@@ -5170,17 +5170,17 @@ nsImapMailFolder::GetCurMoveCopyMessageI
-     }
-   }
-   return NS_OK;
- }
- 
- NS_IMETHODIMP
- nsImapMailFolder::OnStartRunningUrl(nsIURI *aUrl)
- {
--  NS_PRECONDITION(aUrl, "sanity check - need to be be running non-null url");
-+  NS_ASSERTION(aUrl, "sanity check - need to be be running non-null url");
-   nsCOMPtr<nsIMsgMailNewsUrl> mailUrl = do_QueryInterface(aUrl);
-   if (mailUrl)
-   {
-     bool updatingFolder;
-     mailUrl->GetUpdatingFolder(&updatingFolder);
-     m_updatingFolder = updatingFolder;
-   }
-   m_urlRunning = true;
-@@ -7798,17 +7798,17 @@ nsresult nsImapFolderCopyState::AdvanceT
-     rv = StartNextCopy();
-   }
-   return rv;
- }
- 
- NS_IMETHODIMP
- nsImapFolderCopyState::OnStartRunningUrl(nsIURI *aUrl)
- {
--  NS_PRECONDITION(aUrl, "sanity check - need to be be running non-null url");
-+  NS_ASSERTION(aUrl, "sanity check - need to be be running non-null url");
-   return NS_OK;
- }
- 
- NS_IMETHODIMP
- nsImapFolderCopyState::OnStopRunningUrl(nsIURI *aUrl, nsresult aExitCode)
- {
-   if (NS_FAILED(aExitCode))
-   {
-diff --git a/mailnews/imap/src/nsImapProtocol.cpp b/mailnews/imap/src/nsImapProtocol.cpp
---- a/mailnews/imap/src/nsImapProtocol.cpp
-+++ b/mailnews/imap/src/nsImapProtocol.cpp
-@@ -527,18 +527,18 @@ nsresult nsImapProtocol::Configure(int32
-   return NS_OK;
- }
- 
- 
- NS_IMETHODIMP
- nsImapProtocol::Initialize(nsIImapHostSessionList * aHostSessionList,
-                            nsIImapIncomingServer *aServer)
- {
--  NS_PRECONDITION(aHostSessionList && aServer,
--     "oops...trying to initialize with a null host session list or server!");
-+  NS_ASSERTION(aHostSessionList && aServer,
-+    "oops...trying to initialize with a null host session list or server!");
-   if (!aHostSessionList || !aServer)
-     return NS_ERROR_NULL_POINTER;
- 
-   nsresult rv = m_downloadLineCache->GrowBuffer(kDownLoadCacheSize);
-   NS_ENSURE_SUCCESS(rv, rv);
- 
-   m_flagState = new nsImapFlagAndUidState(kImapFlagAndUidStateSize);
-   if (!m_flagState)
-@@ -684,17 +684,17 @@ static void SetSecurityCallbacksFromChan
- // Setup With Url is intended to set up data which is held on a PER URL basis and not
- // a per connection basis. If you have data which is independent of the url we are currently
- // running, then you should put it in Initialize().
- // This is only ever called from the UI thread. It is called from LoadUrl, right
- // before the url gets run - i.e., the url is next in line to run.
- nsresult nsImapProtocol::SetupWithUrl(nsIURI * aURL, nsISupports* aConsumer)
- {
-   nsresult rv = NS_ERROR_FAILURE;
--  NS_PRECONDITION(aURL, "null URL passed into Imap Protocol");
-+  NS_ASSERTION(aURL, "null URL passed into Imap Protocol");
-   if (aURL)
-   {
-     m_runningUrl = do_QueryInterface(aURL, &rv);
-     if (NS_FAILED(rv))
-       return rv;
- 
-     nsCOMPtr<nsIMsgMailNewsUrl> mailnewsUrl = do_QueryInterface(m_runningUrl);
-     nsCOMPtr<nsIMsgIncomingServer> server = do_QueryReferent(m_server);
-@@ -3843,18 +3843,18 @@ nsImapProtocol::PostLineDownLoadEvent(co
- // * A line may be passed by parts, e.g., "part1 part2\r\n" may be passed as
- //     HandleMessageDownLoadLine("part 1 ", 1);
- //     HandleMessageDownLoadLine("part 2\r\n", 0);
- //   However, it is assumed that a CRLF or a CRCRLF is never split (i.e., this is
- //   ensured *before* invoking this method).
- void nsImapProtocol::HandleMessageDownLoadLine(const char *line, bool isPartialLine,
-                                                char *lineCopy)
- {
--  NS_PRECONDITION(lineCopy == nullptr || !PL_strcmp(line, lineCopy),
--                  "line and lineCopy must contain the same string");
-+  NS_ASSERTION(lineCopy == nullptr || !PL_strcmp(line, lineCopy),
-+               "line and lineCopy must contain the same string");
-   const char *messageLine = line;
-   uint32_t lineLength = strlen(messageLine);
-   const char *cEndOfLine = messageLine + lineLength;
-   char *localMessageLine = nullptr;
- 
-   // If we obtain a partial line (due to fetching by chunks), we do not
-   // add/modify the end-of-line terminator.
-   if (!isPartialLine)
-@@ -3865,17 +3865,17 @@ void nsImapProtocol::HandleMessageDownLo
- 
-     // normalize line endings to CRLF unless we are saving the message to disk
-     bool canonicalLineEnding = true;
-     nsCOMPtr<nsIMsgMessageUrl> msgUrl = do_QueryInterface(m_runningUrl);
- 
-     if (m_imapAction == nsIImapUrl::nsImapSaveMessageToDisk && msgUrl)
-       msgUrl->GetCanonicalLineEnding(&canonicalLineEnding);
- 
--    NS_PRECONDITION(MSG_LINEBREAK_LEN == 1 ||
-+    NS_ASSERTION(MSG_LINEBREAK_LEN == 1 ||
-                     (MSG_LINEBREAK_LEN == 2 && !PL_strcmp(CRLF, MSG_LINEBREAK)),
-                     "violated assumptions on MSG_LINEBREAK");
-     if (MSG_LINEBREAK_LEN == 1 && !canonicalLineEnding)
-     {
-       bool lineEndsWithCRorLF = lineLength >= 1 &&
-         (cEndOfLine[-1] == '\r' || cEndOfLine[-1] == '\n');
-       char *endOfLine;
-       if (lineCopy && lineEndsWithCRorLF)  // true for most lines
-diff --git a/mailnews/import/outlook/src/nsOutlookImport.cpp b/mailnews/import/outlook/src/nsOutlookImport.cpp
---- a/mailnews/import/outlook/src/nsOutlookImport.cpp
-+++ b/mailnews/import/outlook/src/nsOutlookImport.cpp
-@@ -147,61 +147,61 @@ nsOutlookImport::~nsOutlookImport()
- {
-   IMPORT_LOG0("nsOutlookImport Module Deleted\n");
- }
- 
- NS_IMPL_ISUPPORTS(nsOutlookImport, nsIImportModule)
- 
- NS_IMETHODIMP nsOutlookImport::GetName(char16_t **name)
- {
--  NS_PRECONDITION(name != nullptr, "null ptr");
-+  NS_ASSERTION(name != nullptr, "null ptr");
-   if (! name)
-     return NS_ERROR_NULL_POINTER;
- 
-   *name = nsOutlookStringBundle::GetStringByID(OUTLOOKIMPORT_NAME);
-   return NS_OK;
- }
- 
- NS_IMETHODIMP nsOutlookImport::GetDescription(char16_t **name)
- {
--  NS_PRECONDITION(name != nullptr, "null ptr");
-+  NS_ASSERTION(name != nullptr, "null ptr");
-   if (!name)
-     return NS_ERROR_NULL_POINTER;
- 
-   *name = nsOutlookStringBundle::GetStringByID(OUTLOOKIMPORT_DESCRIPTION);
- 
-   return NS_OK;
- }
- 
- NS_IMETHODIMP nsOutlookImport::GetSupports(char **supports)
- {
--  NS_PRECONDITION(supports != nullptr, "null ptr");
-+  NS_ASSERTION(supports != nullptr, "null ptr");
-   if (! supports)
-     return NS_ERROR_NULL_POINTER;
- 
-   *supports = strdup(kOutlookSupportsString);
-   return NS_OK;
- }
- 
- NS_IMETHODIMP nsOutlookImport::GetSupportsUpgrade(bool *pUpgrade)
- {
--  NS_PRECONDITION(pUpgrade != nullptr, "null ptr");
-+  NS_ASSERTION(pUpgrade != nullptr, "null ptr");
-   if (! pUpgrade)
-     return NS_ERROR_NULL_POINTER;
- 
-   *pUpgrade = true;
-   return NS_OK;
- }
- 
- NS_IMETHODIMP nsOutlookImport::GetImportInterface(const char *pImportType, nsISupports **ppInterface)
- {
--  NS_PRECONDITION(pImportType != nullptr, "null ptr");
-+  NS_ASSERTION(pImportType != nullptr, "null ptr");
-   if (! pImportType)
-     return NS_ERROR_NULL_POINTER;
--  NS_PRECONDITION(ppInterface != nullptr, "null ptr");
-+  NS_ASSERTION(ppInterface != nullptr, "null ptr");
-   if (! ppInterface)
-     return NS_ERROR_NULL_POINTER;
- 
-   *ppInterface = nullptr;
-   nsresult  rv;
-   if (!strcmp(pImportType, "mail")) {
-     // create the nsIImportMail interface and return it!
-     nsIImportMail *  pMail = nullptr;
-@@ -285,19 +285,19 @@ ImportOutlookMailImpl::~ImportOutlookMai
- {
-   nsOutlookCompose::ReleaseIdentity();
- }
- 
- NS_IMPL_ISUPPORTS(ImportOutlookMailImpl, nsIImportMail)
- 
- NS_IMETHODIMP ImportOutlookMailImpl::GetDefaultLocation(nsIFile **ppLoc, bool *found, bool *userVerify)
- {
--  NS_PRECONDITION(ppLoc != nullptr, "null ptr");
--  NS_PRECONDITION(found != nullptr, "null ptr");
--  NS_PRECONDITION(userVerify != nullptr, "null ptr");
-+  NS_ASSERTION(ppLoc != nullptr, "null ptr");
-+  NS_ASSERTION(found != nullptr, "null ptr");
-+  NS_ASSERTION(userVerify != nullptr, "null ptr");
-   if (!ppLoc || !found || !userVerify)
-     return NS_ERROR_NULL_POINTER;
- 
-   *found = false;
-   *ppLoc = nullptr;
-   *userVerify = false;
-   // We need to verify here that we can get the mail, if true then
-   // return a dummy location, otherwise return no location
-@@ -325,18 +325,18 @@ NS_IMETHODIMP ImportOutlookMailImpl::Get
-   *userVerify = false;
- 
-   return NS_OK;
- }
- 
- 
- NS_IMETHODIMP ImportOutlookMailImpl::FindMailboxes(nsIFile *pLoc, nsIArray **ppArray)
- {
--  NS_PRECONDITION(pLoc != nullptr, "null ptr");
--  NS_PRECONDITION(ppArray != nullptr, "null ptr");
-+  NS_ASSERTION(pLoc != nullptr, "null ptr");
-+  NS_ASSERTION(ppArray != nullptr, "null ptr");
-   if (!pLoc || !ppArray)
-     return NS_ERROR_NULL_POINTER;
-   return m_mail.GetMailFolders(ppArray);
- }
- 
- void ImportOutlookMailImpl::AddLinebreak(nsString *pStream)
- {
-   if (pStream)
-@@ -425,17 +425,17 @@ ImportOutlookMailImpl::ImportMailbox(nsI
-   SetLogs(success, error, pErrorLog, pSuccessLog);
- 
-   return rv;
- }
- 
- 
- NS_IMETHODIMP ImportOutlookMailImpl::GetImportProgress(uint32_t *pDoneSoFar)
- {
--  NS_PRECONDITION(pDoneSoFar != nullptr, "null ptr");
-+  NS_ASSERTION(pDoneSoFar != nullptr, "null ptr");
-   if (! pDoneSoFar)
-     return NS_ERROR_NULL_POINTER;
- 
-   *pDoneSoFar = m_bytesDone;
-   return NS_OK;
- }
- 
- NS_IMETHODIMP ImportOutlookMailImpl::TranslateFolderName(const nsAString & aFolderName, nsAString & _retval)
-@@ -474,50 +474,50 @@ ImportOutlookAddressImpl::ImportOutlookA
- ImportOutlookAddressImpl::~ImportOutlookAddressImpl()
- {
- }
- 
- NS_IMPL_ISUPPORTS(ImportOutlookAddressImpl, nsIImportAddressBooks)
- 
- NS_IMETHODIMP ImportOutlookAddressImpl::GetAutoFind(char16_t **description, bool *_retval)
- {
--  NS_PRECONDITION(description != nullptr, "null ptr");
--  NS_PRECONDITION(_retval != nullptr, "null ptr");
-+  NS_ASSERTION(description != nullptr, "null ptr");
-+  NS_ASSERTION(_retval != nullptr, "null ptr");
-   if (! description || !_retval)
-     return NS_ERROR_NULL_POINTER;
- 
-   *_retval = true;
-   nsString str;
-   nsOutlookStringBundle::GetStringByID(OUTLOOKIMPORT_ADDRNAME, str);
-   *description = ToNewUnicode(str);
-   return NS_OK;
- }
- 
- NS_IMETHODIMP ImportOutlookAddressImpl::FindAddressBooks(nsIFile *location, nsIArray **_retval)
- {
--  NS_PRECONDITION(_retval != nullptr, "null ptr");
-+  NS_ASSERTION(_retval != nullptr, "null ptr");
-   if (!_retval)
-     return NS_ERROR_NULL_POINTER;
- 
-   return m_address.GetAddressBooks(_retval);
- }
- 
- NS_IMETHODIMP ImportOutlookAddressImpl::ImportAddressBook(nsIImportABDescriptor *source,
-                                                           nsIAddrDatabase *destination,
-                                                           nsIImportFieldMap *fieldMap,
-                                                           nsISupports *aSupportService,
-                                                           char16_t **pErrorLog,
-                                                           char16_t **pSuccessLog,
-                                                           bool *fatalError)
- {
-   m_msgCount = 0;
-   m_msgTotal = 0;
--    NS_PRECONDITION(source != nullptr, "null ptr");
--    NS_PRECONDITION(destination != nullptr, "null ptr");
--  NS_PRECONDITION(fatalError != nullptr, "null ptr");
-+  NS_ASSERTION(source != nullptr, "null ptr");
-+  NS_ASSERTION(destination != nullptr, "null ptr");
-+  NS_ASSERTION(fatalError != nullptr, "null ptr");
- 
-   nsString  success;
-   nsString  error;
-     if (!source || !destination || !fatalError) {
-     IMPORT_LOG0("*** Bad param passed to outlook address import\n");
-     nsOutlookStringBundle::GetStringByID(OUTLOOKIMPORT_ADDRESS_BADPARAM, error);
-     if (fatalError)
-       *fatalError = true;
-@@ -545,17 +545,17 @@ NS_IMETHODIMP ImportOutlookAddressImpl::
-   ImportOutlookMailImpl::SetLogs(success, error, pErrorLog, pSuccessLog);
-   IMPORT_LOG0("*** Returning from outlook address import\n");
-   return destination->Commit(nsAddrDBCommitType::kLargeCommit);
- }
- 
- 
- NS_IMETHODIMP ImportOutlookAddressImpl::GetImportProgress(uint32_t *_retval)
- {
--  NS_PRECONDITION(_retval != nullptr, "null ptr");
-+  NS_ASSERTION(_retval != nullptr, "null ptr");
-   if (!_retval)
-     return NS_ERROR_NULL_POINTER;
- 
-   uint32_t result = m_msgCount;
-   if (m_msgTotal) {
-     result *= 100;
-     result /= m_msgTotal;
-   }
-diff --git a/mailnews/import/outlook/src/nsOutlookSettings.cpp b/mailnews/import/outlook/src/nsOutlookSettings.cpp
---- a/mailnews/import/outlook/src/nsOutlookSettings.cpp
-+++ b/mailnews/import/outlook/src/nsOutlookSettings.cpp
-@@ -91,18 +91,18 @@ nsOutlookSettings::nsOutlookSettings()
- nsOutlookSettings::~nsOutlookSettings()
- {
- }
- 
- NS_IMPL_ISUPPORTS(nsOutlookSettings, nsIImportSettings)
- 
- NS_IMETHODIMP nsOutlookSettings::AutoLocate(char16_t **description, nsIFile **location, bool *_retval)
- {
--    NS_PRECONDITION(description != nullptr, "null ptr");
--    NS_PRECONDITION(_retval != nullptr, "null ptr");
-+    NS_ASSERTION(description != nullptr, "null ptr");
-+    NS_ASSERTION(_retval != nullptr, "null ptr");
-   if (!description || !_retval)
-     return NS_ERROR_NULL_POINTER;
- 
-   *description = nsOutlookStringBundle::GetStringByID(OUTLOOKIMPORT_NAME);
-   *_retval = false;
- 
-   if (location)
-     *location = nullptr;
-@@ -116,17 +116,17 @@ NS_IMETHODIMP nsOutlookSettings::AutoLoc
- 
- NS_IMETHODIMP nsOutlookSettings::SetLocation(nsIFile *location)
- {
-   return NS_OK;
- }
- 
- NS_IMETHODIMP nsOutlookSettings::Import(nsIMsgAccount **localMailAccount, bool *_retval)
- {
--  NS_PRECONDITION(_retval != nullptr, "null ptr");
-+  NS_ASSERTION(_retval != nullptr, "null ptr");
- 
-   if (OutlookSettings::DoImport(localMailAccount)) {
-     *_retval = true;
-     IMPORT_LOG0("Settings import appears successful\n");
-   }
-   else {
-     *_retval = false;
-     IMPORT_LOG0("Settings import returned FALSE\n");
-diff --git a/mailnews/import/src/nsImportAddressBooks.cpp b/mailnews/import/src/nsImportAddressBooks.cpp
---- a/mailnews/import/src/nsImportAddressBooks.cpp
-+++ b/mailnews/import/src/nsImportAddressBooks.cpp
-@@ -111,19 +111,19 @@ public:
- 
-   AddressThreadData();
-   ~AddressThreadData();
- };
- 
- 
- nsresult NS_NewGenericAddressBooks(nsIImportGeneric** aImportGeneric)
- {
--    NS_PRECONDITION(aImportGeneric != nullptr, "null ptr");
--    if (! aImportGeneric)
--        return NS_ERROR_NULL_POINTER;
-+    NS_ASSERTION(aImportGeneric != nullptr, "null ptr");
-+    if (!aImportGeneric)
-+      return NS_ERROR_NULL_POINTER;
- 
-   nsImportGenericAddressBooks *pGen = new nsImportGenericAddressBooks();
- 
-   if (pGen == nullptr)
-     return NS_ERROR_OUT_OF_MEMORY;
- 
-   NS_ADDREF(pGen);
-   nsresult rv = pGen->QueryInterface(NS_GET_IID(nsIImportGeneric), (void **)aImportGeneric);
-@@ -169,17 +169,17 @@ nsImportGenericAddressBooks::~nsImportGe
- 
- 
- 
- NS_IMPL_ISUPPORTS(nsImportGenericAddressBooks, nsIImportGeneric)
- 
- 
- NS_IMETHODIMP nsImportGenericAddressBooks::GetData(const char *dataId, nsISupports **_retval)
- {
--  NS_PRECONDITION(_retval != nullptr, "null ptr");
-+  NS_ASSERTION(_retval != nullptr, "null ptr");
-   if (!_retval)
-     return NS_ERROR_NULL_POINTER;
- 
-   nsresult rv;
-   *_retval = nullptr;
-   if (!PL_strcasecmp(dataId, "addressInterface")) {
-     *_retval = m_pInterface;
-     NS_IF_ADDREF(m_pInterface);
-@@ -257,17 +257,17 @@ NS_IMETHODIMP nsImportGenericAddressBook
-   }
- 
-   return NS_OK;
- }
- 
- 
- NS_IMETHODIMP nsImportGenericAddressBooks::SetData(const char *dataId, nsISupports *item)
- {
--  NS_PRECONDITION(dataId != nullptr, "null ptr");
-+  NS_ASSERTION(dataId != nullptr, "null ptr");
-   if (!dataId)
-     return NS_ERROR_NULL_POINTER;
- 
-   if (!PL_strcasecmp(dataId, "addressInterface")) {
-     NS_IF_RELEASE(m_pInterface);
-     if (item)
-       item->QueryInterface(NS_GET_IID(nsIImportAddressBooks), (void **) &m_pInterface);
-   }
-@@ -309,18 +309,18 @@ NS_IMETHODIMP nsImportGenericAddressBook
-       item->QueryInterface(NS_GET_IID(nsIImportFieldMap), (void **) &m_pFieldMap);
-   }
- 
-   return NS_OK;
- }
- 
- NS_IMETHODIMP nsImportGenericAddressBooks::GetStatus(const char *statusKind, int32_t *_retval)
- {
--  NS_PRECONDITION(statusKind != nullptr, "null ptr");
--  NS_PRECONDITION(_retval != nullptr, "null ptr");
-+  NS_ASSERTION(statusKind != nullptr, "null ptr");
-+  NS_ASSERTION(_retval != nullptr, "null ptr");
-   if (!statusKind || !_retval)
-     return NS_ERROR_NULL_POINTER;
- 
-   *_retval = 0;
- 
-   if (!PL_strcasecmp(statusKind, "isInstalled")) {
-     GetDefaultLocation();
-     *_retval = (int32_t) m_found;
-@@ -420,17 +420,17 @@ void nsImportGenericAddressBooks::GetDef
-     IMPORT_LOG0("*** Error: Unable to initialize field map\n");
-     NS_IF_RELEASE(m_pFieldMap);
-   }
- }
- 
- 
- NS_IMETHODIMP nsImportGenericAddressBooks::WantsProgress(bool *_retval)
- {
--  NS_PRECONDITION(_retval != nullptr, "null ptr");
-+  NS_ASSERTION(_retval != nullptr, "null ptr");
-   NS_ENSURE_ARG_POINTER(_retval);
- 
-   GetDefaultLocation();
-   GetDefaultBooks();
- 
-   bool result = false;
- 
-   if (m_Books) {
-@@ -585,19 +585,19 @@ already_AddRefed<nsIAddrDatabase> GetAdd
-       IMPORT_LOG0("*** Error: An error occurred while adding the address book to the UI\n");
-   }
- 
-   return pDatabase.forget();
- }
- 
- NS_IMETHODIMP nsImportGenericAddressBooks::BeginImport(nsISupportsString *successLog, nsISupportsString *errorLog, bool *_retval)
- {
--  NS_PRECONDITION(_retval != nullptr, "null ptr");
--    if (!_retval)
--        return NS_ERROR_NULL_POINTER;
-+  NS_ASSERTION(_retval != nullptr, "null ptr");
-+  if (!_retval)
-+    return NS_ERROR_NULL_POINTER;
- 
-   nsString  success;
-   nsString  error;
- 
-   if (!m_doImport) {
-     *_retval = true;
-     nsImportStringBundle::GetStringByID(IMPORT_NO_ADDRBOOKS, m_stringBundle,
-                                         success);
-@@ -681,37 +681,37 @@ NS_IMETHODIMP nsImportGenericAddressBook
-   m_pThreadData = nullptr;
-   *_retval = true;
- 
-   return NS_OK;
- }
- 
- NS_IMETHODIMP nsImportGenericAddressBooks::ContinueImport(bool *_retval)
- {
--    NS_PRECONDITION(_retval != nullptr, "null ptr");
--    if (!_retval)
--        return NS_ERROR_NULL_POINTER;
-+  NS_ASSERTION(_retval != nullptr, "null ptr");
-+  if (!_retval)
-+    return NS_ERROR_NULL_POINTER;
- 
-   *_retval = true;
-   if (m_pThreadData) {
-     if (m_pThreadData->fatalError)
-       *_retval = false;
-   }
- 
-   return NS_OK;
- }
- 
- 
- NS_IMETHODIMP nsImportGenericAddressBooks::GetProgress(int32_t *_retval)
- {
-   // This returns the progress from the the currently
-   // running import mail or import address book thread.
--    NS_PRECONDITION(_retval != nullptr, "null ptr");
--    if (!_retval)
--        return NS_ERROR_NULL_POINTER;
-+  NS_ASSERTION(_retval != nullptr, "null ptr");
-+  if (!_retval)
-+    return NS_ERROR_NULL_POINTER;
- 
-   if (!m_pThreadData || !(m_pThreadData->threadAlive)) {
-     *_retval = 100;
-     return NS_OK;
-   }
- 
-   uint32_t sz = 0;
-   if (m_pThreadData->currentSize && m_pInterface) {
-diff --git a/mailnews/import/src/nsImportFieldMap.cpp b/mailnews/import/src/nsImportFieldMap.cpp
---- a/mailnews/import/src/nsImportFieldMap.cpp
-+++ b/mailnews/import/src/nsImportFieldMap.cpp
-@@ -80,37 +80,37 @@ nsImportFieldMap::~nsImportFieldMap()
-     delete pStr;
-   }
-   m_descriptions.Clear();
- }
- 
- 
- NS_IMETHODIMP nsImportFieldMap::GetNumMozFields(int32_t *aNumFields)
- {
--    NS_PRECONDITION(aNumFields != nullptr, "null ptr");
-+  NS_ASSERTION(aNumFields != nullptr, "null ptr");
-   if (!aNumFields)
-     return NS_ERROR_NULL_POINTER;
- 
-   *aNumFields = m_mozFieldCount;
-   return NS_OK;
- }
- 
- NS_IMETHODIMP nsImportFieldMap::GetMapSize(int32_t *aNumFields)
- {
--    NS_PRECONDITION(aNumFields != nullptr, "null ptr");
-+  NS_ASSERTION(aNumFields != nullptr, "null ptr");
-   if (!aNumFields)
-     return NS_ERROR_NULL_POINTER;
- 
-   *aNumFields = m_numFields;
-   return NS_OK;
- }
- 
- NS_IMETHODIMP nsImportFieldMap::GetFieldDescription(int32_t index, char16_t **_retval)
- {
--    NS_PRECONDITION(_retval != nullptr, "null ptr");
-+  NS_ASSERTION(_retval != nullptr, "null ptr");
-   if (!_retval)
-     return NS_ERROR_NULL_POINTER;
- 
-   *_retval = nullptr;
-   if ((index < 0) || ((size_t)index >= m_descriptions.Length()))
-     return NS_ERROR_FAILURE;
- 
-   *_retval = ToNewUnicode(*(m_descriptions.ElementAt(index)));
-@@ -139,17 +139,17 @@ NS_IMETHODIMP nsImportFieldMap::DefaultF
-     m_pActive[i] = true;
-   }
- 
-   return NS_OK;
- }
- 
- NS_IMETHODIMP nsImportFieldMap::GetFieldMap(int32_t index, int32_t *_retval)
- {
--    NS_PRECONDITION(_retval != nullptr, "null ptr");
-+  NS_ASSERTION(_retval != nullptr, "null ptr");
-   if (!_retval)
-     return NS_ERROR_NULL_POINTER;
- 
- 
-   if ((index < 0) || (index >= m_numFields))
-     return NS_ERROR_FAILURE;
- 
-   *_retval = m_pFields[index];
-@@ -174,17 +174,17 @@ NS_IMETHODIMP nsImportFieldMap::SetField
-     return NS_ERROR_FAILURE;
- 
-   m_pFields[index] = fieldNum;
-   return NS_OK;
- }
- 
- NS_IMETHODIMP nsImportFieldMap::GetFieldActive(int32_t index, bool *active)
- {
--    NS_PRECONDITION(active != nullptr, "null ptr");
-+  NS_ASSERTION(active != nullptr, "null ptr");
-   if (!active)
-     return NS_ERROR_NULL_POINTER;
-   if ((index < 0) || (index >= m_numFields))
-     return NS_ERROR_FAILURE;
- 
-   *active = m_pActive[index];
-   return NS_OK;
- }
-@@ -196,19 +196,19 @@ NS_IMETHODIMP nsImportFieldMap::SetField
- 
-   m_pActive[index] = active;
-   return NS_OK;
- }
- 
- 
- NS_IMETHODIMP nsImportFieldMap::SetFieldValue(nsIAddrDatabase *database, nsIMdbRow *row, int32_t fieldNum, const char16_t *value)
- {
--  NS_PRECONDITION(database != nullptr, "null ptr");
--  NS_PRECONDITION(row != nullptr, "null ptr");
--  NS_PRECONDITION(value != nullptr, "null ptr");
-+  NS_ASSERTION(database != nullptr, "null ptr");
-+  NS_ASSERTION(row != nullptr, "null ptr");
-+  NS_ASSERTION(value != nullptr, "null ptr");
-   if (!database || !row || !value)
-     return NS_ERROR_NULL_POINTER;
- 
-   // Allow the special value for a null field
-   if (fieldNum == -1)
-     return NS_OK;
- 
-   if ((fieldNum < 0) || (fieldNum >= m_mozFieldCount))
-diff --git a/mailnews/import/src/nsImportMail.cpp b/mailnews/import/src/nsImportMail.cpp
---- a/mailnews/import/src/nsImportMail.cpp
-+++ b/mailnews/import/src/nsImportMail.cpp
-@@ -139,19 +139,19 @@ nsresult ProxyGenerateUniqueSubfolderNam
-                                           const nsAString& aPrefix,
-                                           nsIMsgFolder *aOtherFolder,
-                                           nsAString& aName);
- nsresult ProxyCreateSubfolder(nsIMsgFolder *aFolder, const nsAString &aName);
- nsresult ProxyForceDBClosed(nsIMsgFolder *aFolder);
- 
- nsresult NS_NewGenericMail(nsIImportGeneric** aImportGeneric)
- {
--    NS_PRECONDITION(aImportGeneric != nullptr, "null ptr");
--    if (! aImportGeneric)
--        return NS_ERROR_NULL_POINTER;
-+    NS_ASSERTION(aImportGeneric != nullptr, "null ptr");
-+    if (!aImportGeneric)
-+      return NS_ERROR_NULL_POINTER;
- 
-   nsImportGenericMail *pGen = new nsImportGenericMail();
- 
-   if (pGen == nullptr)
-     return NS_ERROR_OUT_OF_MEMORY;
- 
-   NS_ADDREF(pGen);
-   nsresult rv = pGen->QueryInterface(NS_GET_IID(nsIImportGeneric), (void **)aImportGeneric);
-@@ -202,17 +202,17 @@ nsImportGenericMail::~nsImportGenericMai
- 
- NS_IMPL_ISUPPORTS(nsImportGenericMail, nsIImportGeneric)
- 
- 
- NS_IMETHODIMP nsImportGenericMail::GetData(const char *dataId, nsISupports **_retval)
- {
-   nsresult rv = NS_OK;
- 
--  NS_PRECONDITION(_retval != nullptr, "null ptr");
-+  NS_ASSERTION(_retval != nullptr, "null ptr");
-   if (!_retval)
-     return NS_ERROR_NULL_POINTER;
- 
-   *_retval = nullptr;
-   if (!PL_strcasecmp(dataId, "mailInterface")) {
-     *_retval = m_pInterface;
-     NS_IF_ADDREF(m_pInterface);
-   }
-@@ -256,17 +256,17 @@ NS_IMETHODIMP nsImportGenericMail::GetDa
-   }
- 
-   return rv;
- }
- 
- NS_IMETHODIMP nsImportGenericMail::SetData(const char *dataId, nsISupports *item)
- {
-   nsresult rv = NS_OK;
--  NS_PRECONDITION(dataId != nullptr, "null ptr");
-+  NS_ASSERTION(dataId != nullptr, "null ptr");
-   if (!dataId)
-     return NS_ERROR_NULL_POINTER;
- 
-   if (!PL_strcasecmp(dataId, "mailInterface")) {
-     NS_IF_RELEASE(m_pInterface);
-     if (item)
-       item->QueryInterface(NS_GET_IID(nsIImportMail), (void **) &m_pInterface);
-   }
-@@ -309,18 +309,18 @@ NS_IMETHODIMP nsImportGenericMail::SetDa
-       rv = migrationString->GetData(&m_performingMigration);
-     }
-   }
-   return rv;
- }
- 
- NS_IMETHODIMP nsImportGenericMail::GetStatus(const char *statusKind, int32_t *_retval)
- {
--  NS_PRECONDITION(statusKind != nullptr, "null ptr");
--  NS_PRECONDITION(_retval != nullptr, "null ptr");
-+  NS_ASSERTION(statusKind != nullptr, "null ptr");
-+  NS_ASSERTION(_retval != nullptr, "null ptr");
-   if (!statusKind || !_retval)
-     return NS_ERROR_NULL_POINTER;
- 
-   *_retval = 0;
- 
-   if (!PL_strcasecmp(statusKind, "isInstalled")) {
-     GetDefaultLocation();
-     *_retval = (int32_t) m_found;
-@@ -375,17 +375,17 @@ void nsImportGenericMail::GetDefaultDest
-     m_createdFolder = true;
-     return;
-   }
-   IMPORT_LOG0("*** GetDefaultDestination: Failed to create a default import destination folder.");
- }
- 
- NS_IMETHODIMP nsImportGenericMail::WantsProgress(bool *_retval)
- {
--  NS_PRECONDITION(_retval != nullptr, "null ptr");
-+  NS_ASSERTION(_retval != nullptr, "null ptr");
-   NS_ENSURE_ARG_POINTER(_retval);
- 
-   if (m_pThreadData) {
-     m_pThreadData->DriverAbort();
-     m_pThreadData = nullptr;
-   }
- 
-   if (!m_pMailboxes) {
-@@ -443,19 +443,19 @@ void nsImportGenericMail::GetMailboxName
-         pStr->SetData(name);
-       }
-     }
-   }
- }
- 
- NS_IMETHODIMP nsImportGenericMail::BeginImport(nsISupportsString *successLog, nsISupportsString *errorLog, bool *_retval)
- {
--  NS_PRECONDITION(_retval != nullptr, "null ptr");
--    if (!_retval)
--        return NS_ERROR_NULL_POINTER;
-+  NS_ASSERTION(_retval != nullptr, "null ptr");
-+  if (!_retval)
-+    return NS_ERROR_NULL_POINTER;
- 
-   nsString  success;
-   nsString  error;
- 
-   if (!m_doImport) {
-     nsImportStringBundle::GetStringByID(IMPORT_NO_MAILBOXES,
-                                         m_stringBundle, success);
-     SetLogs(success, error, successLog, errorLog);
-@@ -532,37 +532,37 @@ NS_IMETHODIMP nsImportGenericMail::Begin
- 
-   return NS_OK;
- 
- }
- 
- 
- NS_IMETHODIMP nsImportGenericMail::ContinueImport(bool *_retval)
- {
--    NS_PRECONDITION(_retval != nullptr, "null ptr");
--    if (!_retval)
--        return NS_ERROR_NULL_POINTER;
-+  NS_ASSERTION(_retval != nullptr, "null ptr");
-+  if (!_retval)
-+    return NS_ERROR_NULL_POINTER;
- 
-   *_retval = true;
-   if (m_pThreadData) {
-     if (m_pThreadData->fatalError)
-       *_retval = false;
-   }
- 
-   return NS_OK;
- }
- 
- 
- NS_IMETHODIMP nsImportGenericMail::GetProgress(int32_t *_retval)
- {
-   // This returns the progress from the the currently
-   // running import mail or import address book thread.
--    NS_PRECONDITION(_retval != nullptr, "null ptr");
--    if (!_retval)
--        return NS_ERROR_NULL_POINTER;
-+  NS_ASSERTION(_retval != nullptr, "null ptr");
-+  if (!_retval)
-+    return NS_ERROR_NULL_POINTER;
- 
-   if (!m_pThreadData || !(m_pThreadData->threadAlive)) {
-     *_retval = 100;
-     return NS_OK;
-   }
- 
-   uint32_t sz = 0;
-   if (m_pThreadData->currentSize && m_pInterface) {
-@@ -856,17 +856,17 @@ ImportMailThread(void *stuff)
-           break;
-         }
-       }
-     }
-   }
- 
-   // Now save the new acct info to pref file.
-   nsCOMPtr <nsIMsgAccountManager> accMgr = do_GetService(NS_MSGACCOUNTMANAGER_CONTRACTID, &rv);
--        if (NS_SUCCEEDED(rv) && accMgr) {
-+  if (NS_SUCCEEDED(rv) && accMgr) {
-     rv = accMgr->SaveAccountInfo();
-     NS_ASSERTION(NS_SUCCEEDED(rv), "Can't save account info to pref file");
-   }
- 
-   nsImportGenericMail::SetLogs(success, error, pData->successLog, pData->errorLog);
- 
-   if (pData->abort || pData->fatalError) {
-     IMPORT_LOG0("*** ImportMailThread: Abort or fatalError flag was set\n");
-@@ -877,17 +877,16 @@ ImportMailThread(void *stuff)
-     else {
-       // FIXME: just delete the stuff we created?
-     }
-   }
- 
-   IMPORT_LOG1("Import mailbox thread done: %d\n", (int) pData->currentTotal);
- 
-   pData->ThreadDelete();
--
- }
- 
- // Creates a folder in Local Folders with the module name + mail
- // for e.g: Outlook Mail
- bool nsImportGenericMail::CreateFolder(nsIMsgFolder **ppFolder)
- {
-   nsresult rv;
-   *ppFolder = nullptr;
-diff --git a/mailnews/import/src/nsImportService.cpp b/mailnews/import/src/nsImportService.cpp
---- a/mailnews/import/src/nsImportService.cpp
-+++ b/mailnews/import/src/nsImportService.cpp
-@@ -90,40 +90,40 @@ NS_IMETHODIMP nsImportService::CreateNew
- {
-   return nsImportABDescriptor::Create(nullptr, NS_GET_IID(nsIImportABDescriptor), (void**)_retval);
- }
- 
- extern nsresult NS_NewGenericMail(nsIImportGeneric** aImportGeneric);
- 
- NS_IMETHODIMP nsImportService::CreateNewGenericMail(nsIImportGeneric **_retval)
- {
--    NS_PRECONDITION(_retval != nullptr, "null ptr");
--    if (! _retval)
--        return NS_ERROR_NULL_POINTER;
-+  NS_ASSERTION(_retval != nullptr, "null ptr");
-+  if (!_retval)
-+    return NS_ERROR_NULL_POINTER;
- 
-   return NS_NewGenericMail(_retval);
- }
- 
- extern nsresult NS_NewGenericAddressBooks(nsIImportGeneric** aImportGeneric);
- 
- NS_IMETHODIMP nsImportService::CreateNewGenericAddressBooks(nsIImportGeneric **_retval)
- {
--    NS_PRECONDITION(_retval != nullptr, "null ptr");
--    if (! _retval)
--        return NS_ERROR_NULL_POINTER;
-+  NS_ASSERTION(_retval != nullptr, "null ptr");
-+  if (!_retval)
-+    return NS_ERROR_NULL_POINTER;
- 
-   return NS_NewGenericAddressBooks(_retval);
- }
- 
- 
- NS_IMETHODIMP nsImportService::GetModuleCount(const char *filter, int32_t *_retval)
- {
--    NS_PRECONDITION(_retval != nullptr, "null ptr");
--    if (! _retval)
--        return NS_ERROR_NULL_POINTER;
-+  NS_ASSERTION(_retval != nullptr, "null ptr");
-+  if (!_retval)
-+    return NS_ERROR_NULL_POINTER;
- 
-   DoDiscover();
- 
-   if (m_pModules != nullptr) {
-     ImportModuleDesc *  pDesc;
-     int32_t  count = 0;
-     for (int32_t i = 0; i < m_pModules->GetCount(); i++) {
-       pDesc = m_pModules->GetModuleDesc(i);
-@@ -135,17 +135,17 @@ NS_IMETHODIMP nsImportService::GetModule
-   else
-     *_retval = 0;
- 
-   return NS_OK;
- }
- 
- NS_IMETHODIMP nsImportService::GetModuleWithCID(const nsCID& cid, nsIImportModule **ppModule)
- {
--  NS_PRECONDITION(ppModule != nullptr, "null ptr");
-+  NS_ASSERTION(ppModule != nullptr, "null ptr");
-   if (!ppModule)
-     return NS_ERROR_NULL_POINTER;
- 
-   *ppModule = nullptr;
-   nsresult rv = DoDiscover();
-   if (NS_FAILED(rv))
-     return rv;
-   if (m_pModules == nullptr)
-@@ -169,26 +169,26 @@ NS_IMETHODIMP nsImportService::GetModule
- 
-   IMPORT_LOG0("* nsImportService::GetSpecificModule - module not found\n");
- 
-   return NS_ERROR_NOT_AVAILABLE;
- }
- 
- NS_IMETHODIMP nsImportService::GetModuleInfo(const char *filter, int32_t index, char16_t **name, char16_t **moduleDescription)
- {
--    NS_PRECONDITION(name != nullptr, "null ptr");
--    NS_PRECONDITION(moduleDescription != nullptr, "null ptr");
--    if (!name || !moduleDescription)
--        return NS_ERROR_NULL_POINTER;
-+  NS_ASSERTION(name != nullptr, "null ptr");
-+  NS_ASSERTION(moduleDescription != nullptr, "null ptr");
-+  if (!name || !moduleDescription)
-+    return NS_ERROR_NULL_POINTER;
- 
-   *name = nullptr;
-   *moduleDescription = nullptr;
- 
--    DoDiscover();
--    if (!m_pModules)
-+  DoDiscover();
-+  if (!m_pModules)
-     return NS_ERROR_FAILURE;
- 
-   if ((index < 0) || (index >= m_pModules->GetCount()))
-     return NS_ERROR_FAILURE;
- 
-   ImportModuleDesc *  pDesc;
-   int32_t  count = 0;
-   for (int32_t i = 0; i < m_pModules->GetCount(); i++) {
-@@ -204,24 +204,24 @@ NS_IMETHODIMP nsImportService::GetModule
-     }
-   }
- 
-   return NS_ERROR_FAILURE;
- }
- 
- NS_IMETHODIMP nsImportService::GetModuleName(const char *filter, int32_t index, char16_t **_retval)
- {
--    NS_PRECONDITION(_retval != nullptr, "null ptr");
--    if (!_retval)
--        return NS_ERROR_NULL_POINTER;
-+  NS_ASSERTION(_retval != nullptr, "null ptr");
-+  if (!_retval)
-+    return NS_ERROR_NULL_POINTER;
- 
-   *_retval = nullptr;
- 
--    DoDiscover();
--    if (!m_pModules)
-+  DoDiscover();
-+  if (!m_pModules)
-     return NS_ERROR_FAILURE;
- 
-   if ((index < 0) || (index >= m_pModules->GetCount()))
-     return NS_ERROR_FAILURE;
- 
-   ImportModuleDesc *  pDesc;
-   int32_t  count = 0;
-   for (int32_t i = 0; i < m_pModules->GetCount(); i++) {
-@@ -237,24 +237,24 @@ NS_IMETHODIMP nsImportService::GetModule
-   }
- 
-   return NS_ERROR_FAILURE;
- }
- 
- 
- NS_IMETHODIMP nsImportService::GetModuleDescription(const char *filter, int32_t index, char16_t **_retval)
- {
--    NS_PRECONDITION(_retval != nullptr, "null ptr");
--    if (!_retval)
--        return NS_ERROR_NULL_POINTER;
-+  NS_ASSERTION(_retval != nullptr, "null ptr");
-+  if (!_retval)
-+    return NS_ERROR_NULL_POINTER;
- 
-   *_retval = nullptr;
- 
--    DoDiscover();
--    if (!m_pModules)
-+  DoDiscover();
-+  if (!m_pModules)
-     return NS_ERROR_FAILURE;
- 
-   if ((index < 0) || (index >= m_pModules->GetCount()))
-     return NS_ERROR_FAILURE;
- 
-   ImportModuleDesc *  pDesc;
-   int32_t  count = 0;
-   for (int32_t i = 0; i < m_pModules->GetCount(); i++) {
-@@ -347,23 +347,23 @@ nsImportService::CreateRFC822Message(nsI
-                               aEmbeddedAttachments,
-                               aListener);
-     // invoke the callback
-     return NS_DispatchToMainThread(runnable);
- }
- 
- NS_IMETHODIMP nsImportService::GetModule(const char *filter, int32_t index, nsIImportModule **_retval)
- {
--    NS_PRECONDITION(_retval != nullptr, "null ptr");
--    if (!_retval)
--        return NS_ERROR_NULL_POINTER;
-+  NS_ASSERTION(_retval != nullptr, "null ptr");
-+  if (!_retval)
-+    return NS_ERROR_NULL_POINTER;
-   *_retval = nullptr;
- 
--    DoDiscover();
--    if (!m_pModules)
-+  DoDiscover();
-+  if (!m_pModules)
-     return NS_ERROR_FAILURE;
- 
-   if ((index < 0) || (index >= m_pModules->GetCount()))
-     return NS_ERROR_FAILURE;
- 
-   ImportModuleDesc *  pDesc;
-   int32_t  count = 0;
-   for (int32_t i = 0; i < m_pModules->GetCount(); i++) {
-@@ -372,17 +372,17 @@ NS_IMETHODIMP nsImportService::GetModule
-       if (count == index) {
-         *_retval = pDesc->GetModule();
-         break;
-       }
-       else
-         count++;
-     }
-   }
--  if (! (*_retval))
-+  if (!(*_retval))
-     return NS_ERROR_FAILURE;
- 
-   return NS_OK;
- }
- 
- 
- nsresult nsImportService::DoDiscover(void)
- {
-diff --git a/mailnews/import/text/src/nsTextImport.cpp b/mailnews/import/text/src/nsTextImport.cpp
---- a/mailnews/import/text/src/nsTextImport.cpp
-+++ b/mailnews/import/text/src/nsTextImport.cpp
-@@ -146,17 +146,17 @@ NS_IMETHODIMP nsTextImport::GetSupports(
- {
-   NS_ENSURE_ARG_POINTER(supports);
-   *supports = strdup(kTextSupportsString);
-   return NS_OK;
- }
- 
- NS_IMETHODIMP nsTextImport::GetSupportsUpgrade(bool *pUpgrade)
- {
--  NS_PRECONDITION(pUpgrade != nullptr, "null ptr");
-+  NS_ASSERTION(pUpgrade != nullptr, "null ptr");
-   if (! pUpgrade)
-     return NS_ERROR_NULL_POINTER;
- 
-   *pUpgrade = false;
-   return NS_OK;
- }
- 
- NS_IMETHODIMP nsTextImport::GetImportInterface(const char *pImportType, nsISupports **ppInterface)
-@@ -211,18 +211,18 @@ ImportAddressImpl::ImportAddressImpl(nsI
-   m_haveDelim = false;
- }
- 
- NS_IMPL_ISUPPORTS(ImportAddressImpl, nsIImportAddressBooks)
- 
- 
- NS_IMETHODIMP ImportAddressImpl::GetAutoFind(char16_t **addrDescription, bool *_retval)
- {
--  NS_PRECONDITION(addrDescription != nullptr, "null ptr");
--  NS_PRECONDITION(_retval != nullptr, "null ptr");
-+  NS_ASSERTION(addrDescription != nullptr, "null ptr");
-+  NS_ASSERTION(_retval != nullptr, "null ptr");
-   if (! addrDescription || !_retval)
-     return NS_ERROR_NULL_POINTER;
- 
-   nsString str;
-   *_retval = false;
- 
-   if (!m_notProxyBundle)
-     return NS_ERROR_FAILURE;
-@@ -230,34 +230,34 @@ NS_IMETHODIMP ImportAddressImpl::GetAuto
-   nsImportStringBundle::GetStringByID(TEXTIMPORT_ADDRESS_NAME, m_notProxyBundle, str);
-   *addrDescription = ToNewUnicode(str);
-   return NS_OK;
- }
- 
- 
- NS_IMETHODIMP ImportAddressImpl::GetDefaultLocation(nsIFile **ppLoc, bool *found, bool *userVerify)
- {
--  NS_PRECONDITION(found != nullptr, "null ptr");
--  NS_PRECONDITION(ppLoc != nullptr, "null ptr");
--  NS_PRECONDITION(userVerify != nullptr, "null ptr");
-+  NS_ASSERTION(found != nullptr, "null ptr");
-+  NS_ASSERTION(ppLoc != nullptr, "null ptr");
-+  NS_ASSERTION(userVerify != nullptr, "null ptr");
-   if (! found || !userVerify || !ppLoc)
-     return NS_ERROR_NULL_POINTER;
- 
-   *ppLoc = nullptr;
-   *found = false;
-   *userVerify = true;
-   return NS_OK;
- }
- 
- 
- 
- NS_IMETHODIMP ImportAddressImpl::FindAddressBooks(nsIFile *pLoc, nsIArray **ppArray)
- {
--  NS_PRECONDITION(pLoc != nullptr, "null ptr");
--  NS_PRECONDITION(ppArray != nullptr, "null ptr");
-+  NS_ASSERTION(pLoc != nullptr, "null ptr");
-+  NS_ASSERTION(ppArray != nullptr, "null ptr");
-   if (!pLoc || !ppArray)
-     return NS_ERROR_NULL_POINTER;
- 
-   ClearSampleFile();
- 
-   *ppArray = nullptr;
-   bool exists = false;
-   nsresult rv = pLoc->Exists(&exists);
-@@ -372,19 +372,19 @@ NS_IMETHODIMP
- ImportAddressImpl::ImportAddressBook(nsIImportABDescriptor *pSource,
-                                      nsIAddrDatabase *pDestination,
-                                      nsIImportFieldMap *fieldMap,
-                                      nsISupports *aSupportService,
-                                      char16_t ** pErrorLog,
-                                      char16_t ** pSuccessLog,
-                                      bool * fatalError)
- {
--  NS_PRECONDITION(pSource != nullptr, "null ptr");
--  NS_PRECONDITION(pDestination != nullptr, "null ptr");
--  NS_PRECONDITION(fatalError != nullptr, "null ptr");
-+  NS_ASSERTION(pSource != nullptr, "null ptr");
-+  NS_ASSERTION(pDestination != nullptr, "null ptr");
-+  NS_ASSERTION(fatalError != nullptr, "null ptr");
- 
-   m_bytesImported = 0;
- 
-   nsString success, error;
-   if (!pSource || !pDestination || !fatalError) {
-     IMPORT_LOG0("*** Bad param passed to text address import\n");
-     nsImportStringBundle::GetStringByID(TEXTIMPORT_ADDRESS_BADPARAM,
-                                         m_notProxyBundle,
-@@ -524,18 +524,18 @@ void ImportAddressImpl::SanitizeSampleDa
-   while (offset != -1) {
-     val.Replace(offset, 1, ',');
-     offset = val.FindChar(10, offset + 2);
-   }
- }
- 
- NS_IMETHODIMP ImportAddressImpl::GetSampleData(int32_t index, bool *pFound, char16_t **pStr)
- {
--  NS_PRECONDITION(pFound != nullptr, "null ptr");
--  NS_PRECONDITION(pStr != nullptr, "null ptr");
-+  NS_ASSERTION(pFound != nullptr, "null ptr");
-+  NS_ASSERTION(pStr != nullptr, "null ptr");
-   if (!pFound || !pStr)
-     return NS_ERROR_NULL_POINTER;
- 
-   if (!m_fileLoc) {
-     IMPORT_LOG0("*** Error, called GetSampleData before SetSampleLocation\n");
-     return NS_ERROR_FAILURE;
-   }
- 
-diff --git a/mailnews/import/winlivemail/nsWMImport.cpp b/mailnews/import/winlivemail/nsWMImport.cpp
---- a/mailnews/import/winlivemail/nsWMImport.cpp
-+++ b/mailnews/import/winlivemail/nsWMImport.cpp
-@@ -105,27 +105,27 @@ NS_IMETHODIMP nsWMImport::GetDescription
-   // nsString  desc = "Windows Live Mail mail and address books";
-   // *name = ToNewUnicode(desc);
-   *name = nsWMStringBundle::GetStringByID(WMIMPORT_DESCRIPTION);
-   return NS_OK;
- }
- 
- NS_IMETHODIMP nsWMImport::GetSupports(char **supports)
- {
--  NS_PRECONDITION(supports != nullptr, "null ptr");
-+  NS_ASSERTION(supports != nullptr, "null ptr");
-   if (! supports)
-       return NS_ERROR_NULL_POINTER;
- 
-   *supports = strdup(kWMSupportsString);
-   return NS_OK;
- }
- 
- NS_IMETHODIMP nsWMImport::GetSupportsUpgrade(bool *pUpgrade)
- {
--  NS_PRECONDITION(pUpgrade != nullptr, "null ptr");
-+  NS_ASSERTION(pUpgrade != nullptr, "null ptr");
-   if (! pUpgrade)
-     return NS_ERROR_NULL_POINTER;
- 
-   *pUpgrade = true;
-   return NS_OK;
- }
- 
- NS_IMETHODIMP nsWMImport::GetImportInterface(const char *pImportType,
-diff --git a/mailnews/import/winlivemail/nsWMSettings.cpp b/mailnews/import/winlivemail/nsWMSettings.cpp
---- a/mailnews/import/winlivemail/nsWMSettings.cpp
-+++ b/mailnews/import/winlivemail/nsWMSettings.cpp
-@@ -96,18 +96,18 @@ nsWMSettings::~nsWMSettings()
- {
- }
- 
- NS_IMPL_ISUPPORTS(nsWMSettings, nsIImportSettings)
- 
- NS_IMETHODIMP nsWMSettings::AutoLocate(char16_t **description,
-                                        nsIFile **location, bool *_retval)
- {
--  NS_PRECONDITION(description != nullptr, "null ptr");
--  NS_PRECONDITION(_retval != nullptr, "null ptr");
-+  NS_ASSERTION(description != nullptr, "null ptr");
-+  NS_ASSERTION(_retval != nullptr, "null ptr");
-   if (!description || !_retval)
-     return NS_ERROR_NULL_POINTER;
- 
-   *description = nsWMStringBundle::GetStringByID(WMIMPORT_NAME);
-   *_retval = false;
- 
-   if (location)
-     *location = nullptr;
-@@ -121,17 +121,17 @@ NS_IMETHODIMP nsWMSettings::AutoLocate(c
- NS_IMETHODIMP nsWMSettings::SetLocation(nsIFile *location)
- {
-   return NS_OK;
- }
- 
- NS_IMETHODIMP nsWMSettings::Import(nsIMsgAccount **localMailAccount,
-                                    bool *_retval)
- {
--  NS_PRECONDITION(_retval != nullptr, "null ptr");
-+  NS_ASSERTION(_retval != nullptr, "null ptr");
- 
-   if (WMSettings::DoImport(localMailAccount)) {
-     *_retval = true;
-     IMPORT_LOG0("Settings import appears successful\n");
-   }
-   else {
-     *_retval = false;
-     IMPORT_LOG0("Settings import returned FALSE\n");
-diff --git a/mailnews/local/src/nsMailboxProtocol.cpp b/mailnews/local/src/nsMailboxProtocol.cpp
---- a/mailnews/local/src/nsMailboxProtocol.cpp
-+++ b/mailnews/local/src/nsMailboxProtocol.cpp
-@@ -73,17 +73,17 @@ nsresult nsMailboxProtocol::OpenMultiple
-                                   int64_t(size), false,
-                                   getter_AddRefs(m_transport));
- 
-   return rv;
- }
- 
- nsresult nsMailboxProtocol::Initialize(nsIURI * aURL)
- {
--  NS_PRECONDITION(aURL, "invalid URL passed into MAILBOX Protocol");
-+  NS_ASSERTION(aURL, "invalid URL passed into MAILBOX Protocol");
-   nsresult rv = NS_OK;
-   if (aURL)
-   {
-     m_runningUrl = do_QueryInterface(aURL, &rv);
-     if (NS_SUCCEEDED(rv) && m_runningUrl)
-     {
-       nsCOMPtr <nsIMsgWindow> window;
-       rv = m_runningUrl->GetMailboxAction(&m_mailboxAction);
-diff --git a/mailnews/news/src/nsNNTPProtocol.cpp b/mailnews/news/src/nsNNTPProtocol.cpp
---- a/mailnews/news/src/nsNNTPProtocol.cpp
-+++ b/mailnews/news/src/nsNNTPProtocol.cpp
-@@ -346,17 +346,17 @@ NS_IMETHODIMP nsNNTPProtocol::Initialize
-       port = (socketType == nsMsgSocketType::SSL) ?
-              nsINntpUrl::DEFAULT_NNTPS_PORT : nsINntpUrl::DEFAULT_NNTP_PORT;
-     }
- 
-     rv = m_url->SetPort(port);
-     NS_ENSURE_SUCCESS(rv, rv);
-   }
- 
--  NS_PRECONDITION(m_url, "invalid URL passed into NNTP Protocol");
-+  NS_ASSERTION(m_url, "invalid URL passed into NNTP Protocol");
- 
-   m_runningURL = do_QueryInterface(m_url, &rv);
-   NS_ENSURE_SUCCESS(rv, rv);
-   SetIsBusy(true);
- 
-   nsCString group;
- 
-   // Initialize m_newsAction before possible use in ParseURL method
-@@ -1335,17 +1335,17 @@ nsresult nsNNTPProtocol::SendData(const 
-  * response line
-  *
-  * returns the TCP return code from the read
-  */
- nsresult nsNNTPProtocol::NewsResponse(nsIInputStream *inputStream, uint32_t length)
- {
-   uint32_t status = 0;
- 
--  NS_PRECONDITION(nullptr != inputStream, "invalid input stream");
-+  NS_ASSERTION(nullptr != inputStream, "invalid input stream");
- 
-   bool pauseForMoreData = false;
-   char *line = m_lineStreamBuffer->ReadNextLine(inputStream, status, pauseForMoreData);
- 
-   NNTP_LOG_READ(line);
- 
-   if(pauseForMoreData)
-   {
-@@ -1531,17 +1531,17 @@ nsresult nsNNTPProtocol::SendListSearche
-   return rv;
- }
- 
- nsresult nsNNTPProtocol::SendListSearchesResponse(nsIInputStream * inputStream, uint32_t length)
- {
-   uint32_t status = 0;
-   nsresult rv = NS_OK;
- 
--  NS_PRECONDITION(inputStream, "invalid input stream");
-+  NS_ASSERTION(inputStream, "invalid input stream");
- 
-   bool pauseForMoreData = false;
-   char *line = m_lineStreamBuffer->ReadNextLine(inputStream, status, pauseForMoreData, &rv);
- 
-   NNTP_LOG_READ(line);
- 
-   if(pauseForMoreData)
-   {

+ 0 - 46
comm-esr60/comm-esr60/patches/1459508-61.patch

@@ -1,46 +0,0 @@
-# HG changeset patch
-# User aceman <acelists@atlas.sk>
-# Date 1525601760 -7200
-#      So Mai 06 12:16:00 2018 +0200
-# Node ID 561427e43bfb60f7e4eb3471bce9566034f42d2e
-# Parent  cf6877fc0b2ebb56fcd0a0ef3626e03e5186b3e4
-Bug 1459508 - Fix some incorrect references to XUL 'overlay' in calendar. r=philipp DONTBUILD
-
-diff --git a/calendar/base/content/widgets/calendar-list-tree.xml b/calendar/base/content/widgets/calendar-list-tree.xml
---- a/calendar/base/content/widgets/calendar-list-tree.xml
-+++ b/calendar/base/content/widgets/calendar-list-tree.xml
-@@ -1,14 +1,14 @@
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- This Source Code Form is subject to the terms of the Mozilla Public
-    - License, v. 2.0. If a copy of the MPL was not distributed with this
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
--<!DOCTYPE overlay SYSTEM "chrome://calendar/locale/calendar.dtd">
-+<!DOCTYPE bindings SYSTEM "chrome://calendar/locale/calendar.dtd">
- 
- <bindings id="calendar-list-tree-bindings"
-           xmlns="http://www.mozilla.org/xbl"
-           xmlns:xbl="http://www.mozilla.org/xbl"
-           xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
-   <binding id="full-calendar-list-tree" extends="#calendar-list-tree">
-     <!--
-       - This binding implements a full calendar list, that automatically adds
-diff --git a/calendar/providers/gdata/content/gdata-list-tree.xml b/calendar/providers/gdata/content/gdata-list-tree.xml
---- a/calendar/providers/gdata/content/gdata-list-tree.xml
-+++ b/calendar/providers/gdata/content/gdata-list-tree.xml
-@@ -1,14 +1,14 @@
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- This Source Code Form is subject to the terms of the Mozilla Public
-    - License, v. 2.0. If a copy of the MPL was not distributed with this
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
--<!DOCTYPE overlay SYSTEM "chrome://calendar/locale/calendar.dtd">
-+<!DOCTYPE bindings SYSTEM "chrome://calendar/locale/calendar.dtd">
- 
- <bindings id="gdata-list-tree-bindings"
-           xmlns="http://www.mozilla.org/xbl"
-           xmlns:xbl="http://www.mozilla.org/xbl"
-           xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
- 
-   <binding id="gdata-list-tree" extends="chrome://calendar/content/widgets/calendar-list-tree.xml#calendar-list-tree">
-     <content>

+ 0 - 126
comm-esr60/comm-esr60/patches/1470716-cc-63a1.patch

@@ -1,126 +0,0 @@
-# HG changeset patch
-# User Jorg K <jorgk@jorgk.com>
-# Date 1530400434 -7200
-# Node ID 67e3d766d51549925745cc8353b1686800b61749
-# Parent  864d0a94694073643a960113aacc43b5120007cf
-Bug 1470716 - C-C part: Replace call to LoadExtensibleBundle(). r=kmag DONTBUILD
-
-diff --git a/mailnews/build/nsMailModule.cpp b/mailnews/build/nsMailModule.cpp
---- a/mailnews/build/nsMailModule.cpp
-+++ b/mailnews/build/nsMailModule.cpp
-@@ -1310,22 +1310,16 @@ static const mozilla::Module::CategoryEn
-   // msgdb Entries
-   // Mime Entries
-   { "mime-emitter", NS_HTML_MIME_EMITTER_CONTRACTID, NS_HTML_MIME_EMITTER_CONTRACTID },
-   { "mime-emitter", NS_XML_MIME_EMITTER_CONTRACTID, NS_XML_MIME_EMITTER_CONTRACTID },
-   { "mime-emitter", NS_PLAIN_MIME_EMITTER_CONTRACTID, NS_PLAIN_MIME_EMITTER_CONTRACTID },
-   { "mime-emitter", NS_RAW_MIME_EMITTER_CONTRACTID, NS_RAW_MIME_EMITTER_CONTRACTID },
-   // News Entries
-   { "command-line-handler", "m-news", NS_NEWSSTARTUPHANDLER_CONTRACTID },
--  // Mail View Entries
--  // mdn Entries
--  // i18n Entries
--  { NS_TITLE_BUNDLE_CATEGORY, "chrome://messenger/locale/charsetTitles.properties", "" },
--  { NS_DATA_BUNDLE_CATEGORY, "resource://gre-resources/charsetData.properties", "" },
--  // Tokenizer Entries
-   { NULL }
- };
- 
- static void
- msgMailNewsModuleDtor()
- {
-   nsAddrDatabase::CleanupCache();
- }
-diff --git a/mailnews/intl/nsCharsetConverterManager.cpp b/mailnews/intl/nsCharsetConverterManager.cpp
---- a/mailnews/intl/nsCharsetConverterManager.cpp
-+++ b/mailnews/intl/nsCharsetConverterManager.cpp
-@@ -38,25 +38,24 @@ nsCharsetConverterManager::~nsCharsetCon
- //static
- void nsCharsetConverterManager::Shutdown()
- {
-   NS_IF_RELEASE(sDataBundle);
-   NS_IF_RELEASE(sTitleBundle);
- }
- 
- static
--nsresult LoadExtensibleBundle(const char* aCategory,
--                              nsIStringBundle ** aResult)
-+nsresult LoadBundle(const char* aBundleURLSpec, nsIStringBundle ** aResult)
- {
-   nsCOMPtr<nsIStringBundleService> sbServ =
-     mozilla::services::GetStringBundleService();
-   if (!sbServ)
-     return NS_ERROR_FAILURE;
- 
--  return sbServ->CreateExtensibleBundle(aCategory, aResult);
-+  return sbServ->CreateBundle(aBundleURLSpec, aResult);
- }
- 
- static
- nsresult GetBundleValueInner(nsIStringBundle * aBundle,
-                         const char * aName,
-                         const nsString& aProp,
-                         nsAString& aResult)
- {
-@@ -90,17 +89,17 @@ nsresult GetBundleValue(nsIStringBundle 
- static
- nsresult GetCharsetDataImpl(const char * aCharset, const char16_t * aProp,
-                             nsAString& aResult)
- {
-   NS_ENSURE_ARG_POINTER(aCharset);
-   // aProp can be nullptr
- 
-   if (!sDataBundle) {
--    nsresult rv = LoadExtensibleBundle(NS_DATA_BUNDLE_CATEGORY, &sDataBundle);
-+    nsresult rv = LoadBundle("resource://gre-resources/charsetData.properties", &sDataBundle);
-     if (NS_FAILED(rv))
-       return rv;
-   }
- 
-   return GetBundleValue(sDataBundle, aCharset, nsDependentString(aProp), aResult);
- }
- 
- //static
-@@ -142,17 +141,17 @@ nsCharsetConverterManager::GetCharsetAli
- 
- NS_IMETHODIMP
- nsCharsetConverterManager::GetCharsetTitle(const char * aCharset,
-                                            nsAString& aResult)
- {
-   NS_ENSURE_ARG_POINTER(aCharset);
- 
-   if (!sTitleBundle) {
--    nsresult rv = LoadExtensibleBundle(NS_TITLE_BUNDLE_CATEGORY, &sTitleBundle);
-+    nsresult rv = LoadBundle("chrome://messenger/locale/charsetTitles.properties", &sTitleBundle);
-     NS_ENSURE_SUCCESS(rv, rv);
-   }
- 
-   return GetBundleValue(sTitleBundle, aCharset, NS_LITERAL_STRING(".title"), aResult);
- }
- 
- NS_IMETHODIMP
- nsCharsetConverterManager::GetCharsetData(const char * aCharset,
-diff --git a/mailnews/intl/nsCharsetConverterManager.h b/mailnews/intl/nsCharsetConverterManager.h
---- a/mailnews/intl/nsCharsetConverterManager.h
-+++ b/mailnews/intl/nsCharsetConverterManager.h
-@@ -2,19 +2,16 @@
- /* This Source Code Form is subject to the terms of the Mozilla Public
-  * License, v. 2.0. If a copy of the MPL was not distributed with this
-  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
- #ifndef nsCharsetConverterManager_h__
- #define nsCharsetConverterManager_h__
- 
- #include "nsICharsetConverterManager.h"
- 
--#define NS_DATA_BUNDLE_CATEGORY     "uconv-charset-data"
--#define NS_TITLE_BUNDLE_CATEGORY    "uconv-charset-titles"
--
- class nsCharsetAlias;
- 
- class nsCharsetConverterManager : public nsICharsetConverterManager
- {
-   friend class nsCharsetAlias;
- 
-   NS_DECL_THREADSAFE_ISUPPORTS
-   NS_DECL_NSICHARSETCONVERTERMANAGER
-

+ 0 - 30
comm-esr60/comm-esr60/patches/1476662-bookmarksui-257.patch

@@ -1,30 +0,0 @@
-# HG changeset patch
-# User Frank-Rainer Grahl <frgrahl@gmx.net>
-# Date 1584026489 -3600
-# Parent  47e892f75bda9bbe67eaff709f362face35e9796
-Bug 1476662 - Restore column picker and folder view in bookmarks panel. r=IanN a=IanN
-
-diff --git a/suite/components/places/content/places.xul b/suite/components/places/content/places.xul
---- a/suite/components/places/content/places.xul
-+++ b/suite/components/places/content/places.xul
-@@ -261,20 +261,18 @@
-     <vbox id="contentView" flex="4">
-       <deck id="placesViewsDeck"
-             selectedIndex="0"
-             flex="1">
-         <tree id="placeContent"
-               class="plain placesTree"
-               treelines="true"
-               context="placesContext"
--              hidecolumnpicker="true"
-               flex="1"
-               type="places"
--              flatList="true"
-               selectfirstnode="true"
-               enableColumnDrag="true"
-               onfocus="PlacesOrganizer.updateDetailsPane(event)"
-               onselect="PlacesOrganizer.updateDetailsPane(event)"
-               onkeypress="ContentTree.onKeyPress(event);"
-               onopenflatcontainer="PlacesOrganizer.openFlatContainer(aContainer);">
-           <treecols id="placeContentColumns" context="placesColumnsContext">
-             <treecol label="&col.name.label;" id="placesContentTitle" anonid="title" flex="5" primary="true" ordinal="1"

+ 0 - 203
comm-esr60/comm-esr60/patches/1477613-63.patch

@@ -1,203 +0,0 @@
-# HG changeset patch
-# User Geoff Lankow <geoff@darktrojan.net>
-# Date 1532280840 -7200
-#      So Jul 22 19:34:00 2018 +0200
-# Node ID dfe9012aafc42bb72af743fa0950fd0f5281626e
-# Parent  a62a6fdb739390ca2acfe58a4b089bb87aa95ca9
-Bug 1477613 - Reduce complexity of Today Pane month labels and reduce setDay calls at startup from four to one. r=philipp
-
-diff --git a/calendar/base/content/today-pane.js b/calendar/base/content/today-pane.js
---- a/calendar/base/content/today-pane.js
-+++ b/calendar/base/content/today-pane.js
-@@ -26,30 +26,27 @@ var TodayPane = {
-      */
-     onLoad: function() {
-         TodayPane.paneViews = [
-             cal.l10n.getCalString("eventsandtasks"),
-             cal.l10n.getCalString("tasksonly"),
-             cal.l10n.getCalString("eventsonly")
-         ];
-         agendaListbox.setupCalendar();
--        TodayPane.initializeMiniday();
-+        agendaListbox.addListener(TodayPane);
-+        TodayPane.setDay(cal.dtz.now());
-         TodayPane.setShortWeekdays();
- 
-         document.getElementById("modeBroadcaster").addEventListener("DOMAttrModified", TodayPane.onModeModified);
-         TodayPane.setTodayHeader();
- 
-         document.getElementById("today-splitter").addEventListener("command", onCalendarViewResize);
-         TodayPane.updateSplitterState();
-         TodayPane.previousMode = document.getElementById("modeBroadcaster").getAttribute("mode");
-         TodayPane.showTodayPaneStatusLabel();
--        // Workaround for bug 1360914. For unknown reasons, setTodayHeader() sets
--        // the selectedIndex of the "monthNameContainer" deck to a wrong value so
--        // the miniday needs to be initialized again.
--        TodayPane.initializeMiniday();
-     },
- 
-     /**
-      * Unload handler, cleans up the today pane on window unload.
-      */
-     onUnload: function() {
-         document.getElementById("modeBroadcaster").removeEventListener("DOMAttrModified", TodayPane.onModeModified);
-         document.getElementById("today-splitter").removeEventListener("command", onCalendarViewResize);
-@@ -91,38 +88,16 @@ var TodayPane = {
-         if (menu) {
-             setAttributeToChildren(menu, "disabled", !todayIsVisible || !agendaIsVisible, "name", "minidisplay");
-         }
- 
-         onCalendarViewResize();
-     },
- 
-     /**
--     * Sets up the miniday display in the today pane.
--     */
--    initializeMiniday: function() {
--        // initialize the label denoting the current month, year and calendarweek
--        // with numbers that are supposed to consume the largest width
--        // in order to guarantee that the text will not be cropped when modified
--        // during runtime
--        const kYEARINIT = "5555";
--        const kCALWEEKINIT = "55";
--        let monthdisplaydeck = document.getElementById("monthNameContainer");
--        let childNodes = monthdisplaydeck.childNodes;
--
--        for (let i = 0; i < childNodes.length; i++) {
--            let monthlabel = childNodes[i];
--            this.setMonthDescription(monthlabel, i, kYEARINIT, kCALWEEKINIT);
--        }
--
--        agendaListbox.addListener(this);
--        this.setDay(cal.dtz.now());
--    },
--
--    /**
-      * Go to month/week/day views when double-clicking a label inside miniday
-      */
-     onDoubleClick: function(aEvent) {
-         if (aEvent.button == 0) {
-             if (aEvent.target.id == "datevalue-label") {
-                 switchCalendarView("day", true);
-             } else if (aEvent.target.parentNode.id == "weekdayNameContainer") {
-                 switchCalendarView("day", true);
-@@ -264,34 +239,16 @@ var TodayPane = {
-             document.getElementById("dragCenter-image").setAttribute("hidden", "true");
-             TodayPane.minidayDrag.session = false;
-         }
-         window.removeEventListener("mousemove", TodayPane.onMousemove);
-         window.removeEventListener("mouseup", TodayPane.stopSwitching);
-     },
- 
-     /**
--     * Helper function to set the month description on the today pane header.
--     *
--     * @param aMonthLabel       The XUL node to set the month label on.
--     * @param aIndex            The month number, 0-based.
--     * @param aYear             The year this month should be displayed with
--     * @param aCalWeek          The calendar week that should be shown.
--     * @return                  The value set on aMonthLabel.
--     */
--    setMonthDescription: function(aMonthLabel, aIndex, aYear, aCalWeek) {
--        if (this.cwlabel == null) {
--            this.cwlabel = cal.l10n.getCalString("shortcalendarweek");
--        }
--        document.getElementById("currentWeek-label").value = this.cwlabel + " " + aCalWeek;
--        aMonthLabel.value = cal.getDateFormatter().shortMonthName(aIndex) + " " + aYear;
--        return aMonthLabel.value;
--    },
--
--    /**
-      * Cycle the view shown in the today pane (event+task, event, task).
-      *
-      * @param aCycleForward     If true, the views are cycled in the forward
-      *                            direction, otherwise in the opposite direction
-      */
-     cyclePaneView: function(aCycleForward) {
-         if (this.paneViews == null) {
-             return;
-@@ -340,36 +297,40 @@ var TodayPane = {
-     /**
-      * Sets the first day shown in the today pane.
-      *
-      * @param aNewDate                  The calIDateTime to set.
-      * @param aDontUpdateMinimonth      If true, the minimonth will not be
-      *                                    updated to show the same date.
-      */
-     setDay: function(aNewDate, aDontUpdateMinimonth) {
-+        if (this.setDay.alreadySettingDay) {
-+            // If we update the mini-month, this function gets called again.
-+            return;
-+        }
-+        this.setDay.alreadySettingDay = true;
-         this.start = aNewDate.clone();
- 
-         let daylabel = document.getElementById("datevalue-label");
-         daylabel.value = this.start.day;
- 
-         let weekdaylabel = document.getElementById("weekdayNameContainer");
-         weekdaylabel.selectedIndex = this.start.weekday;
- 
--        let monthnamedeck = document.getElementById("monthNameContainer");
--        monthnamedeck.selectedIndex = this.start.month;
-+        let monthnamelabel = document.getElementById("monthNameContainer");
-+        monthnamelabel.value = cal.getDateFormatter().shortMonthName(this.start.month) + " " + this.start.year;
- 
--        let selMonthPanel = monthnamedeck.selectedPanel;
--        this.setMonthDescription(selMonthPanel,
--                                 this.start.month,
--                                 this.start.year,
--                                 cal.getWeekInfoService().getWeekTitle(this.start));
-+        let currentweeklabel = document.getElementById("currentWeek-label");
-+        currentweeklabel.value = cal.l10n.getCalString("shortcalendarweek") + " " + cal.getWeekInfoService().getWeekTitle(this.start);
-+
-         if (!aDontUpdateMinimonth) {
-             document.getElementById("today-Minimonth").value = cal.dtz.dateTimeToJsDate(this.start);
-         }
-         this.updatePeriod();
-+        this.setDay.alreadySettingDay = false;
-     },
- 
-     /**
-      * Advance by a given number of days in the today pane.
-      *
-      * @param aDir      The number of days to advance. Negative numbers advance
-      *                    backwards in time.
-      */
-diff --git a/calendar/base/content/today-pane.xul b/calendar/base/content/today-pane.xul
---- a/calendar/base/content/today-pane.xul
-+++ b/calendar/base/content/today-pane.xul
-@@ -118,31 +118,18 @@
-                           <toolbarbutton id="next-day-button"
-                                          class="miniday-nav-buttons"
-                                          tooltiptext="&onedayforward.tooltip;"
-                                          onmousedown="TodayPane.onMousedown(event, parseInt(this.getAttribute('dir')));"
-                                          dir="1"/>
-                         </hbox>
-                       </hbox>
-                       <hbox pack="start">
--                        <deck id ="monthNameContainer" class="monthlabel"
--                              ondblclick="TodayPane.onDoubleClick(event);">
--                          <label/>
--                          <label/>
--                          <label/>
--                          <label/>
--                          <label/>
--                          <label/>
--                          <label/>
--                          <label/>
--                          <label/>
--                          <label/>
--                          <label/>
--                          <label/>
--                        </deck>
-+                        <label id="monthNameContainer" class="monthlabel"
-+                               ondblclick="TodayPane.onDoubleClick(event);"/>
-                         <label id="currentWeek-label" class="monthlabel"
-                                ondblclick="TodayPane.onDoubleClick(event);"/>
-                         <spacer flex="1"/>
-                       </hbox>
-                     </vbox>
-                     <toolbarbutton id="miniday-dropdown-button"
-                                    tooltiptext="&showselectedday.tooltip;"
-                                    type="menu">

+ 0 - 112
comm-esr60/comm-esr60/patches/1479787-cc.patch

@@ -1,112 +0,0 @@
-# HG changeset patch
-# User Jorg K <jorgk@jorgk.com>
-# Date 1538524256 -7200
-#      Wed Oct 03 01:50:56 2018 +0200
-# Node ID b9846bdfa088b43e94d7a801d87622248c79e78d
-# Parent  4e516990056a8269c2077139deb68f22b680b823
-Port bug 1479787 - Use NSS mozpkix instead of pkix (analysis by Rob Lemley). rs=bustage-fix
-
-diff --git a/mailnews/extensions/smime/src/moz.build b/mailnews/extensions/smime/src/moz.build
---- a/mailnews/extensions/smime/src/moz.build
-+++ b/mailnews/extensions/smime/src/moz.build
-@@ -14,10 +14,10 @@ EXTRA_COMPONENTS += [
-     'smime-service.js',
-     'smime-service.manifest',
- ]
- 
- FINAL_LIBRARY = 'mail'
- 
- LOCAL_INCLUDES += [
-     '/%s/security/manager/pki' % CONFIG['mozreltopsrcdir'],
--    '/%s/security/pkix/include' % CONFIG['mozreltopsrcdir']
-+    '/%s/security/manager/ssl' % CONFIG['mozreltopsrcdir']
- ]
-diff --git a/mailnews/extensions/smime/src/nsCertPicker.cpp b/mailnews/extensions/smime/src/nsCertPicker.cpp
---- a/mailnews/extensions/smime/src/nsCertPicker.cpp
-+++ b/mailnews/extensions/smime/src/nsCertPicker.cpp
-@@ -19,17 +19,17 @@
- #include "nsMemory.h"
- #include "nsMsgComposeSecure.h"
- #include "nsNSSCertificate.h"
- #include "nsNSSComponent.h"
- #include "nsNSSDialogHelper.h"
- #include "nsNSSHelper.h"
- #include "nsReadableUtils.h"
- #include "nsString.h"
--#include "pkix/pkixtypes.h"
-+#include "mozpkix/pkixtypes.h"
- 
- using namespace mozilla;
- 
- MOZ_TYPE_SPECIFIC_UNIQUE_PTR_TEMPLATE(UniqueCERTCertNicknames,
-                                       CERTCertNicknames,
-                                       CERT_FreeNicknames)
- 
- CERTCertNicknames*
-diff --git a/mailnews/extensions/smime/src/nsMsgComposeSecure.cpp b/mailnews/extensions/smime/src/nsMsgComposeSecure.cpp
---- a/mailnews/extensions/smime/src/nsMsgComposeSecure.cpp
-+++ b/mailnews/extensions/smime/src/nsMsgComposeSecure.cpp
-@@ -21,17 +21,17 @@
- #include "nsIMsgIdentity.h"
- #include "nsIX509CertDB.h"
- #include "nsMemory.h"
- #include "nsMimeTypes.h"
- #include "nsMsgMimeCID.h"
- #include "nsNSSComponent.h"
- #include "nsServiceManagerUtils.h"
- #include "nspr.h"
--#include "pkix/Result.h"
-+#include "mozpkix/Result.h"
- #include "nsNSSCertificate.h"
- #include "nsNSSHelper.h"
- 
- using namespace mozilla::mailnews;
- using namespace mozilla;
- using namespace mozilla::psm;
- 
- #define MK_MIME_ERROR_WRITING_FILE -1
-diff --git a/mailnews/mime/src/moz.build b/mailnews/mime/src/moz.build
---- a/mailnews/mime/src/moz.build
-+++ b/mailnews/mime/src/moz.build
-@@ -68,17 +68,16 @@ SOURCES += [
-     'nsMimeObjectClassAccess.cpp',
-     'nsSimpleMimeConverterStub.cpp',
-     'nsStreamConverter.cpp',
- ]
- 
- LOCAL_INCLUDES += [
-      '/%s/security/certverifier' % CONFIG['mozreltopsrcdir'],
-      '/%s/security/manager/ssl' % CONFIG['mozreltopsrcdir'],
--     '/%s/security/pkix/include' % CONFIG['mozreltopsrcdir'],
- ]
- 
- EXTRA_COMPONENTS += [
-     'mimeJSComponents.js',
-     'msgMime.manifest',
- ]
- 
- EXTRA_JS_MODULES += [
-diff --git a/mailnews/mime/src/nsCMS.cpp b/mailnews/mime/src/nsCMS.cpp
---- a/mailnews/mime/src/nsCMS.cpp
-+++ b/mailnews/mime/src/nsCMS.cpp
-@@ -17,18 +17,18 @@
- #include "nsICMSMessageErrors.h"
- #include "nsICryptoHash.h"
- #include "nsISupports.h"
- #include "nsIX509CertDB.h"
- #include "nsNSSCertificate.h"
- #include "nsNSSComponent.h"
- #include "nsNSSHelper.h"
- #include "nsServiceManagerUtils.h"
--#include "pkix/Result.h"
--#include "pkix/pkixtypes.h"
-+#include "mozpkix/Result.h"
-+#include "mozpkix/pkixtypes.h"
- #include "smime.h"
- #include "mozilla/StaticMutex.h"
- 
- using namespace mozilla;
- using namespace mozilla::psm;
- using namespace mozilla::pkix;
- 
- #ifdef PR_LOGGING

+ 0 - 988
comm-esr60/comm-esr60/patches/1481326-1-63a1.patch

@@ -1,988 +0,0 @@
-# HG changeset patch
-# User Jorg K <jorgk@jorgk.com>
-# Date 1533628051 -7200
-# Node ID 16a4b760e352c04120cb741dd203051451f00c78
-# Parent  651c75c0e077fa76a71a89eb4dc3fa7a336e6724
-Bug 1481326 - fix some clang-cl warnings and allow others. rs=bustage-fix
-
-diff --git a/db/mork/src/moz.build b/db/mork/src/moz.build
---- a/db/mork/src/moz.build
-+++ b/db/mork/src/moz.build
-@@ -48,8 +48,10 @@ SOURCES += [
-     'orkinHeap.cpp',
- ]
- 
- if CONFIG['OS_ARCH'] == 'WINNT':
-     SOURCES += ['morkSearchRowCursor.cpp']
- 
- FINAL_LIBRARY = 'mork'
- 
-+if CONFIG['CC_TYPE'] == 'clang-cl':
-+    AllowCompilerWarnings()  # workaround for bug 1090497 / bug 1481326
-diff --git a/mail/components/build/nsMailComps.cpp b/mail/components/build/nsMailComps.cpp
---- a/mail/components/build/nsMailComps.cpp
-+++ b/mail/components/build/nsMailComps.cpp
-@@ -12,19 +12,16 @@
- using namespace mozilla::mail;
- 
- NS_GENERIC_FACTORY_CONSTRUCTOR(DirectoryProvider)
- NS_GENERIC_FACTORY_CONSTRUCTOR(nsProfileMigrator)
- NS_GENERIC_FACTORY_CONSTRUCTOR(nsSeamonkeyProfileMigrator)
- 
- #ifdef XP_WIN32
- 
--#include "nsOEProfileMigrator.h"
--NS_GENERIC_FACTORY_CONSTRUCTOR(nsOEProfileMigrator)
--
- #include "nsOutlookProfileMigrator.h"
- NS_GENERIC_FACTORY_CONSTRUCTOR(nsOutlookProfileMigrator)
- 
- #include "nsMailWinIntegration.h"
- NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsWindowsShellService, Init)
- #endif
- 
- #ifdef MOZ_WIDGET_GTK
-diff --git a/mail/components/migration/src/moz.build b/mail/components/migration/src/moz.build
---- a/mail/components/migration/src/moz.build
-+++ b/mail/components/migration/src/moz.build
-@@ -7,17 +7,16 @@ SOURCES += [
-     'nsMailProfileMigratorUtils.cpp',
-     'nsNetscapeProfileMigratorBase.cpp',
-     'nsProfileMigrator.cpp',
-     'nsSeamonkeyProfileMigrator.cpp',
- ]
- 
- if CONFIG['OS_ARCH'] == 'WINNT':
-     SOURCES += [
--        'nsOEProfileMigrator.cpp',
-         'nsOutlookProfileMigrator.cpp',
-         'nsProfileMigratorBase.cpp',
-     ]
- 
- if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
-     SOURCES += [
-         'nsProfileMigratorBase.cpp',
-     ]
-diff --git a/mail/components/migration/src/nsOEProfileMigrator.cpp b/mail/components/migration/src/nsOEProfileMigrator.cpp
-deleted file mode 100644
---- a/mail/components/migration/src/nsOEProfileMigrator.cpp
-+++ /dev/null
-@@ -1,136 +0,0 @@
--/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
--/* This Source Code Form is subject to the terms of the Mozilla Public
-- * License, v. 2.0. If a copy of the MPL was not distributed with this
-- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
--
--#include "nsMailProfileMigratorUtils.h"
--#include "nsDirectoryServiceDefs.h"
--#include "nsIObserverService.h"
--#include "nsIServiceManager.h"
--#include "nsISupportsPrimitives.h"
--#include "nsOEProfileMigrator.h"
--#include "nsIProfileMigrator.h"
--#include "nsIImportSettings.h"
--#include "nsIFile.h"
--#include "nsComponentManagerUtils.h"
--
--NS_IMPL_ISUPPORTS(nsOEProfileMigrator, nsIMailProfileMigrator, nsITimerCallback)
--
--
--nsOEProfileMigrator::nsOEProfileMigrator()
--{
--  mProcessingMailFolders = false;
--  // get the import service
--  mImportModule = do_CreateInstance("@mozilla.org/import/import-oe;1");
--}
--
--nsOEProfileMigrator::~nsOEProfileMigrator()
--{
--
--}
--
--nsresult nsOEProfileMigrator::ContinueImport()
--{
--  return Notify(nullptr);
--}
--
--///////////////////////////////////////////////////////////////////////////////
--// nsITimerCallback
--
--NS_IMETHODIMP
--nsOEProfileMigrator::Notify(nsITimer *timer)
--{
--  int32_t progress;
--  mGenericImporter->GetProgress(&progress);
--
--  nsAutoString index;
--  index.AppendInt( progress );
--  NOTIFY_OBSERVERS(MIGRATION_PROGRESS, index.get());
--
--  if (progress == 100) // are we done yet?
--  {
--    if (mProcessingMailFolders)
--      return FinishCopyingMailFolders();
--    else
--      return FinishCopyingAddressBookData();
--  }
--  else
--  {
--    // fire a timer to handle the next one.
--    mFileIOTimer = do_CreateInstance("@mozilla.org/timer;1");
--    if (mFileIOTimer)
--      mFileIOTimer->InitWithCallback(static_cast<nsITimerCallback *>(this), 100, nsITimer::TYPE_ONE_SHOT);
--  }
--  return NS_OK;
--}
--
--///////////////////////////////////////////////////////////////////////////////
--// nsIMailProfileMigrator
--
--NS_IMETHODIMP
--nsOEProfileMigrator::Migrate(uint16_t aItems, nsIProfileStartup* aStartup, const char16_t* aProfile)
--{
--  nsresult rv = NS_OK;
--
--  if (aStartup)
--  {
--    rv = aStartup->DoStartup();
--    NS_ENSURE_SUCCESS(rv, rv);
--  }
--
--  NOTIFY_OBSERVERS(MIGRATION_STARTED, nullptr);
--  rv = ImportSettings(mImportModule);
--
--  // now import address books
--  // this routine will asynchronously import address book data and it will then kick off
--  // the final migration step, copying the mail folders over.
--  rv = ImportAddressBook(mImportModule);
--
--  // don't broadcast an on end migration here. We aren't done until our asynch import process says we are done.
--  return rv;
--}
--
--NS_IMETHODIMP
--nsOEProfileMigrator::GetMigrateData(const char16_t* aProfile,
--                                           bool aReplace,
--                                           uint16_t* aResult)
--{
--  // There's no harm in assuming everything is available.
--  *aResult = nsIMailProfileMigrator::ACCOUNT_SETTINGS | nsIMailProfileMigrator::ADDRESSBOOK_DATA |
--             nsIMailProfileMigrator::MAILDATA;
--  return NS_OK;
--}
--
--NS_IMETHODIMP
--nsOEProfileMigrator::GetSourceExists(bool* aResult)
--{
--  *aResult = false;
--
--  nsCOMPtr<nsISupports> supports;
--  mImportModule->GetImportInterface(NS_IMPORT_SETTINGS_STR, getter_AddRefs(supports));
--  nsCOMPtr<nsIImportSettings> importSettings = do_QueryInterface(supports);
--
--  if (importSettings)
--  {
--    nsString description;
--    nsCOMPtr<nsIFile> location;
--    importSettings->AutoLocate(getter_Copies(description), getter_AddRefs(location), aResult);
--  }
--
--  return NS_OK;
--}
--
--NS_IMETHODIMP
--nsOEProfileMigrator::GetSourceHasMultipleProfiles(bool* aResult)
--{
--  *aResult = false;
--  return NS_OK;
--}
--
--NS_IMETHODIMP
--nsOEProfileMigrator::GetSourceProfiles(nsIArray** aResult)
--{
--  *aResult = nullptr;
--  return NS_OK;
--}
--
-diff --git a/mail/components/migration/src/nsOEProfileMigrator.h b/mail/components/migration/src/nsOEProfileMigrator.h
-deleted file mode 100644
---- a/mail/components/migration/src/nsOEProfileMigrator.h
-+++ /dev/null
-@@ -1,32 +0,0 @@
--/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
--/* This Source Code Form is subject to the terms of the Mozilla Public
-- * License, v. 2.0. If a copy of the MPL was not distributed with this
-- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
--
--#ifndef oeprofilemigrator___h___
--#define oeprofilemigrator___h___
--
--#include "nsIMailProfileMigrator.h"
--#include "nsITimer.h"
--#include "nsProfileMigratorBase.h"
--
--class nsIFile;
--class nsIPrefBranch;
--class nsIPrefService;
--
--class nsOEProfileMigrator : public nsIMailProfileMigrator,
--                            public nsITimerCallback,
--                            public nsProfileMigratorBase
--{
--public:
--  NS_DECL_NSIMAILPROFILEMIGRATOR
--  NS_DECL_ISUPPORTS
--  NS_DECL_NSITIMERCALLBACK
--  nsOEProfileMigrator();
--  virtual nsresult ContinueImport();
--
--private:
--  virtual ~nsOEProfileMigrator();
--};
--
--#endif
-diff --git a/mail/components/search/moz.build b/mail/components/search/moz.build
---- a/mail/components/search/moz.build
-+++ b/mail/components/search/moz.build
-@@ -12,8 +12,11 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'wi
-     EXTRA_PP_JS_MODULES += ['WinSearchIntegration.js']
-     FINAL_LIBRARY = 'mailcomps'
- 
- DIRS += ['public']
- 
- EXTRA_PP_JS_MODULES += [
-     'SearchIntegration.js',
- ]
-+
-+if CONFIG['CC_TYPE'] == 'clang-cl':
-+    AllowCompilerWarnings()  # workaround for bug 1090497 / bug 1481326
-diff --git a/mail/components/search/wsenable/moz.build b/mail/components/search/wsenable/moz.build
---- a/mail/components/search/wsenable/moz.build
-+++ b/mail/components/search/wsenable/moz.build
-@@ -13,8 +13,12 @@ OS_LIBS += [
-     'ole32',
-     'shell32',
- ]
- 
- RCINCLUDE = 'WSEnable.rc'
- 
- # This isn't XPCOM code, but it wants to use STL so disable STL wrappers
- DisableStlWrapping()
-+
-+if CONFIG['CC_TYPE'] == 'clang-cl':
-+    AllowCompilerWarnings()  # workaround for bug 1090497 / bug 1481326
-+
-diff --git a/mail/components/shell/moz.build b/mail/components/shell/moz.build
---- a/mail/components/shell/moz.build
-+++ b/mail/components/shell/moz.build
-@@ -28,8 +28,11 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'coco
- EXTRA_COMPONENTS += [
-     'nsSetDefaultMail.js',
-     'shell.manifest',
- ]
- 
- FINAL_LIBRARY = 'mailcomps'
- 
- CXXFLAGS += CONFIG['TK_CFLAGS']
-+
-+if CONFIG['CC_TYPE'] == 'clang-cl':
-+    AllowCompilerWarnings()  # workaround for bug 1090497 / bug 1481326
-diff --git a/mail/components/shell/nsMailWinIntegration.cpp b/mail/components/shell/nsMailWinIntegration.cpp
---- a/mail/components/shell/nsMailWinIntegration.cpp
-+++ b/mail/components/shell/nsMailWinIntegration.cpp
-@@ -97,24 +97,16 @@ static SETTING gNewsSettings[] = {
-    // Protocol Handler Class - for Vista and above
-   { MAKE_KEY_NAME1(CLS_NEWSURL, SOP), "", VAL_MAIL_OPEN, APP_PATH_SUBSTITUTION },
- 
-   // Protocol Handlers
-   { MAKE_KEY_NAME1("news", SOP), "", VAL_MAIL_OPEN, APP_PATH_SUBSTITUTION },
-   { MAKE_KEY_NAME1("nntp", SOP), "", VAL_MAIL_OPEN, APP_PATH_SUBSTITUTION },
- };
- 
--static SETTING gFeedSettings[] = {
--   // Protocol Handler Class - for Vista and above
--  { MAKE_KEY_NAME1(CLS_FEEDURL, SOP), "", VAL_MAIL_OPEN, APP_PATH_SUBSTITUTION },
--
--  // Protocol Handlers
--  { MAKE_KEY_NAME1("feed", SOP), "", VAL_MAIL_OPEN, APP_PATH_SUBSTITUTION },
--};
--
- nsresult
- GetHelperPath(nsAutoString& aPath)
- {
-   nsresult rv;
-   nsCOMPtr<nsIProperties> directoryService =
-     do_GetService(NS_DIRECTORY_SERVICE_CONTRACTID, &rv);
-   NS_ENSURE_SUCCESS(rv, rv);
- 
-@@ -205,17 +197,16 @@ nsWindowsShellService::IsDefaultClient(b
-     // indicate that this app is the default.
-     if (*aIsDefaultClient)
-       IsDefaultClientVista(nsIShellService::NEWS, aIsDefaultClient);
-   }
-   // RSS / feed protocol shell integration is not working so return true
-   // until it is fixed (bug 445823).
-   if (aApps & nsIShellService::RSS)
-     *aIsDefaultClient &= true;
--//    *aIsDefaultClient &= TestForDefault(gFeedSettings, sizeof(gFeedSettings)/sizeof(SETTING));
- 
-   return NS_OK;
- }
- 
- NS_IMETHODIMP
- nsWindowsShellService::SetDefaultClient(bool aForAllUsers, uint16_t aApps)
- {
-   nsAutoString appHelperPath;
-diff --git a/mailnews/addrbook/src/nsAbOutlookDirFactory.cpp b/mailnews/addrbook/src/nsAbOutlookDirFactory.cpp
---- a/mailnews/addrbook/src/nsAbOutlookDirFactory.cpp
-+++ b/mailnews/addrbook/src/nsAbOutlookDirFactory.cpp
-@@ -9,21 +9,16 @@
- #include "nsEnumeratorUtils.h"
- #include "nsServiceManagerUtils.h"
- #include "nsComponentManagerUtils.h"
- #include "nsIMutableArray.h"
- #include "nsArrayEnumerator.h"
- #include "nsAbBaseCID.h"
- #include "mozilla/Logging.h"
- 
--static mozilla::LazyLogModule gAbOutlookDirFactoryLog("AbOutlookDirFactory");
--
--#define PRINTF(args) MOZ_LOG(gAbOutlookDirFactoryLog, mozilla::LogLevel::Debug, args)
--
--
- NS_IMPL_ISUPPORTS(nsAbOutlookDirFactory, nsIAbDirFactory)
- 
- nsAbOutlookDirFactory::nsAbOutlookDirFactory(void)
- {
- }
- 
- nsAbOutlookDirFactory::~nsAbOutlookDirFactory(void)
- {
-@@ -46,17 +41,16 @@ nsAbOutlookDirFactory::GetDirectories(co
-   nsAbWinType abType = getAbWinType(kOutlookDirectoryScheme,
-                                     nsCString(aURI).get(), stub, entry);
- 
-   if (abType == nsAbWinType_Unknown) {
-     return NS_ERROR_FAILURE;
-   }
-   nsAbWinHelperGuard mapiAddBook(abType);
-   nsMapiEntryArray folders;
--  ULONG nbFolders = 0;
-   nsCOMPtr<nsIMutableArray> directories(do_CreateInstance(NS_ARRAY_CONTRACTID));
-   NS_ENSURE_SUCCESS(rv, rv);
-   if (!mapiAddBook->IsOK() || !mapiAddBook->GetFolders(folders)) {
-     return NS_ERROR_FAILURE;
-   }
- 
-   nsCOMPtr<nsIAbManager> abManager(do_GetService(NS_ABMANAGER_CONTRACTID, &rv));
-   NS_ENSURE_SUCCESS(rv, rv);
-diff --git a/mailnews/addrbook/src/nsAbOutlookDirectory.cpp b/mailnews/addrbook/src/nsAbOutlookDirectory.cpp
---- a/mailnews/addrbook/src/nsAbOutlookDirectory.cpp
-+++ b/mailnews/addrbook/src/nsAbOutlookDirectory.cpp
-@@ -259,17 +259,17 @@ static nsresult ExtractCardEntry(nsIAbCa
- static nsresult ExtractDirectoryEntry(nsIAbDirectory *aDirectory, nsCString& aEntry)
- {
-   aEntry.Truncate();
-   nsCString uri;
-   nsresult rv = aDirectory->GetURI(uri);
-   NS_ENSURE_SUCCESS(rv, rv);
- 
-   nsAutoCString stub;
--  nsAbWinType objType = getAbWinType(kOutlookDirectoryScheme, uri.get(), stub, aEntry);
-+  getAbWinType(kOutlookDirectoryScheme, uri.get(), stub, aEntry);
- 
-   return NS_OK;
- }
- 
- NS_IMETHODIMP nsAbOutlookDirectory::DeleteCards(nsIArray *aCardList)
- {
-     if (mIsQueryURI) { return NS_ERROR_NOT_IMPLEMENTED ; }
-     if (!aCardList) { return NS_ERROR_NULL_POINTER ; }
-diff --git a/mailnews/addrbook/src/nsAbWinHelper.cpp b/mailnews/addrbook/src/nsAbWinHelper.cpp
---- a/mailnews/addrbook/src/nsAbWinHelper.cpp
-+++ b/mailnews/addrbook/src/nsAbWinHelper.cpp
-@@ -67,22 +67,16 @@ nsMapiEntry::~nsMapiEntry(void)
- }
- 
- void nsMapiEntry::Assign(ULONG aByteCount, LPENTRYID aEntryId)
- {
-     assignEntryID(mEntryId, aEntryId, aByteCount) ;
-     mByteCount = aByteCount ;
- }
- 
--static char UnsignedToChar(unsigned char aUnsigned)
--{
--    if (aUnsigned < 0xA) { return '0' + aUnsigned ; }
--    return 'A' + aUnsigned - 0xA ;
--}
--
- static char kBase64Encoding[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-." ;
- static const int kARank = 0 ;
- static const int kaRank = 26 ;
- static const int k0Rank = 52 ;
- static const unsigned char kMinusRank = 62 ;
- static const unsigned char kDotRank = 63 ;
- 
- static void UnsignedToBase64(unsigned char *& aUnsigned,
-@@ -108,22 +102,16 @@ static void UnsignedToBase64(unsigned ch
-             }
-         }
-         else {
-             aString.Append(kBase64Encoding[remain0]) ;
-         }
-     }
- }
- 
--static unsigned char CharToUnsigned(char aChar)
--{
--    if (aChar >= '0' && aChar <= '9') { return static_cast<unsigned char>(aChar) - '0' ; }
--    return static_cast<unsigned char>(aChar) - 'A' + 0xA ;
--}
--
- // This function must return the rank in kBase64Encoding of the
- // character provided.
- static unsigned char Base64To6Bits(char aBase64)
- {
-     if (aBase64 >= 'A' && aBase64 <= 'Z') {
-         return static_cast<unsigned char>(aBase64 - 'A' + kARank) ;
-     }
-     if (aBase64 >= 'a' && aBase64 <= 'z') {
-@@ -956,17 +944,16 @@ nsAbWinHelperGuard::~nsAbWinHelperGuard(
- 
- const char *kOutlookDirectoryScheme = "moz-aboutlookdirectory://" ;
- const int kOutlookDirSchemeLength = 21 ;
- const char *kOutlookStub = "op/" ;
- const int kOutlookStubLength = 3 ;
- const char *kOutlookExpStub = "oe/" ;
- const int kOutlookExpStubLength = 3 ;
- const char *kOutlookCardScheme = "moz-aboutlookcard://" ;
--const int kOutlookCardSchemeLength = 16 ;
- 
- nsAbWinType getAbWinType(const char *aScheme, const char *aUri, nsCString& aStub, nsCString& aEntry)
- {
-     aStub.Truncate() ;
-     aEntry.Truncate() ;
-     uint32_t schemeLength = strlen(aScheme) ;
- 
-     if (strncmp(aUri, aScheme, schemeLength) == 0) {
-diff --git a/mailnews/addrbook/src/nsMapiAddressBook.cpp b/mailnews/addrbook/src/nsMapiAddressBook.cpp
---- a/mailnews/addrbook/src/nsMapiAddressBook.cpp
-+++ b/mailnews/addrbook/src/nsMapiAddressBook.cpp
-@@ -1,15 +1,16 @@
- /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
- /* This Source Code Form is subject to the terms of the Mozilla Public
-  * License, v. 2.0. If a copy of the MPL was not distributed with this
-  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
- #include "nsMapiAddressBook.h"
- 
- #include "mozilla/Logging.h"
-+#include "mozilla/DebugOnly.h"
- 
- static mozilla::LazyLogModule gMapiAddressBookLog("MAPIAddressBook");
- 
- #define PRINTF(args) MOZ_LOG(gMapiAddressBookLog, mozilla::LogLevel::Debug, args)
- 
- using namespace mozilla;
- 
- HMODULE nsMapiAddressBook::mLibrary = NULL ;
-@@ -96,17 +97,17 @@ void nsMapiAddressBook::FreeMapiLibrary(
-             mLibrary = NULL ;
-         }
-     }
- }
- 
- nsMapiAddressBook::nsMapiAddressBook(void)
- : nsAbWinHelper()
- {
--    BOOL result = Initialize() ;
-+    mozilla::DebugOnly<BOOL> result = Initialize() ;
- 
-     NS_ASSERTION(result == TRUE, "Couldn't initialize Mapi Helper") ;
-     MOZ_COUNT_CTOR(nsMapiAddressBook) ;
- }
- 
- nsMapiAddressBook::~nsMapiAddressBook(void)
- {
-     MutexAutoLock guard(*mMutex) ;
-diff --git a/mailnews/addrbook/src/nsWabAddressBook.cpp b/mailnews/addrbook/src/nsWabAddressBook.cpp
---- a/mailnews/addrbook/src/nsWabAddressBook.cpp
-+++ b/mailnews/addrbook/src/nsWabAddressBook.cpp
-@@ -1,16 +1,17 @@
- /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
- /* This Source Code Form is subject to the terms of the Mozilla Public
-  * License, v. 2.0. If a copy of the MPL was not distributed with this
-  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
- 
- #include <tchar.h>
- #include "nsWabAddressBook.h"
- #include "mozilla/Logging.h"
-+#include "mozilla/DebugOnly.h"
- 
- using namespace mozilla;
- 
- static LazyLogModule gWabAddressBookLog("WABAddressBook");
- 
- #define PRINTF(args) MOZ_LOG(gWabAddressBookLog, mozilla::LogLevel::Debug, args)
- 
- HMODULE nsWabAddressBook::mLibrary = NULL ;
-@@ -76,17 +77,17 @@ void nsWabAddressBook::FreeWabLibrary(vo
-             mLibrary = NULL ;
-         }
-     }
- }
- 
- nsWabAddressBook::nsWabAddressBook(void)
- : nsAbWinHelper()
- {
--    BOOL result = Initialize() ;
-+    mozilla::DebugOnly<BOOL> result = Initialize() ;
- 
-     NS_ASSERTION(result == TRUE, "Couldn't initialize Wab Helper") ;
-     MOZ_COUNT_CTOR(nsWabAddressBook) ;
- }
- 
- nsWabAddressBook::~nsWabAddressBook(void)
- {
-     MutexAutoLock guard(*mMutex) ;
-diff --git a/mailnews/base/src/nsMessengerWinIntegration.cpp b/mailnews/base/src/nsMessengerWinIntegration.cpp
---- a/mailnews/base/src/nsMessengerWinIntegration.cpp
-+++ b/mailnews/base/src/nsMessengerWinIntegration.cpp
-@@ -1,9 +1,9 @@
--/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
- /* This Source Code Form is subject to the terms of the Mozilla Public
-  * License, v. 2.0. If a copy of the MPL was not distributed with this
-  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
- 
- #include <windows.h>
- #include <shellapi.h>
- 
- #include "nsMessengerWinIntegration.h"
-@@ -41,16 +41,17 @@
- #include "nsISupportsPrimitives.h"
- #include "nsIInterfaceRequestorUtils.h"
- #include "nsIWeakReferenceUtils.h"
- #include "nsComponentManagerUtils.h"
- #include "nsNativeCharsetUtils.h"
- #include "nsMsgUtils.h"
- #include "mozilla/LookAndFeel.h"
- #include "mozilla/Services.h"
-+#include "mozilla/DebugOnly.h"
- #include "nsIMutableArray.h"
- #include "nsArrayUtils.h"
- 
- #include "nsToolkitCompsCID.h"
- #include <stdlib.h>
- #define PROFILE_COMMANDLINE_ARG u" -profile "
- 
- #define NOTIFICATIONCLASSNAME "MailBiffNotificationMessageWindow"
-@@ -252,17 +253,17 @@ nsMessengerWinIntegration::nsMessengerWi
- nsMessengerWinIntegration::~nsMessengerWinIntegration()
- {
-   if (mUnreadCountUpdateTimer) {
-     mUnreadCountUpdateTimer->Cancel();
-     mUnreadCountUpdateTimer = nullptr;
-   }
- 
-   // one last attempt, update the registry
--  nsresult rv = UpdateRegistryWithCurrent();
-+  mozilla::DebugOnly<nsresult> rv = UpdateRegistryWithCurrent();
-   NS_ASSERTION(NS_SUCCEEDED(rv), "failed to update registry on shutdown");
-   DestroyBiffIcon();
- }
- 
- NS_IMPL_ADDREF(nsMessengerWinIntegration)
- NS_IMPL_RELEASE(nsMessengerWinIntegration)
- 
- NS_INTERFACE_MAP_BEGIN(nsMessengerWinIntegration)
-@@ -291,17 +292,17 @@ NOTIFYICONDATAW sBiffIconData = { (DWORD
-                                   2,
-                                   NIF_ICON | NIF_MESSAGE | NIF_TIP | NIF_INFO,
-                                   WM_USER,
-                                   0,
-                                   L"",
-                                   0,
-                                   0,
-                                   L"",
--                                  30000,
-+                                  { 30000 },
-                                   L"",
-                                   NIIF_USER | NIIF_NOSOUND };
- // allow for the null terminator
- static const uint32_t kMaxTooltipSize = sizeof(sBiffIconData.szTip) /
-                                         sizeof(sBiffIconData.szTip[0]) - 1;
- static const uint32_t kMaxBalloonSize = sizeof(sBiffIconData.szInfo) /
-                                         sizeof(sBiffIconData.szInfo[0]) - 1;
- static const uint32_t kMaxBalloonTitle = sizeof(sBiffIconData.szInfoTitle) /
-@@ -585,17 +586,17 @@ nsresult nsMessengerWinIntegration::Aler
- }
- 
- #ifdef MOZ_SUITE
- nsresult nsMessengerWinIntegration::AlertClickedSimple()
- {
-   mSuppressBiffIcon = true;
-   return NS_OK;
- }
--#endif MOZ_SUITE
-+#endif
- 
- NS_IMETHODIMP
- nsMessengerWinIntegration::Observe(nsISupports* aSubject, const char* aTopic, const char16_t* aData)
- {
-   if (strcmp(aTopic, "alertfinished") == 0)
-       return AlertFinished();
- 
-   if (strcmp(aTopic, "alertclickcallback") == 0)
-@@ -924,17 +925,17 @@ nsMessengerWinIntegration::OnItemIntProp
- }
- 
- void
- nsMessengerWinIntegration::OnUnreadCountUpdateTimer(nsITimer *timer, void *osIntegration)
- {
-   nsMessengerWinIntegration *winIntegration = (nsMessengerWinIntegration*)osIntegration;
- 
-   winIntegration->mUnreadTimerActive = false;
--  nsresult rv = winIntegration->UpdateUnreadCount();
-+  mozilla::DebugOnly<nsresult> rv = winIntegration->UpdateUnreadCount();
-   NS_ASSERTION(NS_SUCCEEDED(rv), "updating unread count failed");
- }
- 
- nsresult
- nsMessengerWinIntegration::RemoveCurrentFromRegistry()
- {
-   // If Windows XP, open the registry and get rid of old account registry entries
-   // If there is a email prefix, get it and use it to build the registry key.
-@@ -1011,19 +1012,19 @@ nsMessengerWinIntegration::UpdateRegistr
-     if (!mEmailPrefix.IsEmpty()) {
-       pBuffer.Assign(mEmailPrefix);
-       pBuffer.Append(NS_ConvertASCIItoUTF16(mEmail));
-     }
-     else
-       CopyASCIItoUTF16(mEmail, pBuffer);
- 
-     // Write the info into the registry
--    HRESULT hr = SHSetUnreadMailCountW(pBuffer.get(),
--                                       mCurrentUnreadCount,
--                                       commandLinerForAppLaunch.get());
-+    SHSetUnreadMailCountW(pBuffer.get(),
-+                          mCurrentUnreadCount,
-+                          commandLinerForAppLaunch.get());
-   }
- 
-   // do this last
-   mLastUnreadCountWrittenToRegistry = mCurrentUnreadCount;
- 
-   return NS_OK;
- }
- 
-diff --git a/mailnews/base/src/nsMessengerWinIntegration.h b/mailnews/base/src/nsMessengerWinIntegration.h
---- a/mailnews/base/src/nsMessengerWinIntegration.h
-+++ b/mailnews/base/src/nsMessengerWinIntegration.h
-@@ -1,9 +1,9 @@
--/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
- /* This Source Code Form is subject to the terms of the Mozilla Public
-  * License, v. 2.0. If a copy of the MPL was not distributed with this
-  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
- 
- #ifndef __nsMessengerWinIntegration_h
- #define __nsMessengerWinIntegration_h
- 
- #include <windows.h>
-@@ -55,17 +55,16 @@ private:
-   void FillToolTipInfo();
-   void GenericShellNotify(DWORD aMessage);
-   void DestroyBiffIcon();
- 
-   nsresult GetFirstFolderWithNewMail(nsACString& aFolderURI);
- 
-   nsresult GetStringBundle(nsIStringBundle **aBundle);
-   nsCOMPtr<nsIMutableArray> mFoldersWithNewMail;  // keep track of all the root folders with pending new mail
--  uint32_t mCurrentBiffState;
- 
-   bool mBiffIconVisible;
-   bool mBiffIconInitialized;
-   bool mSuppressBiffIcon;
-   bool mAlertInProgress;
- 
-   // "might" because we don't know until we check
-   // what type of server is associated with the default account
-diff --git a/mailnews/base/src/nsMsgSearchDBView.cpp b/mailnews/base/src/nsMsgSearchDBView.cpp
---- a/mailnews/base/src/nsMsgSearchDBView.cpp
-+++ b/mailnews/base/src/nsMsgSearchDBView.cpp
-@@ -282,17 +282,17 @@ nsMsgSearchDBView::OnHdrDeleted(nsIMsgDB
- NS_IMETHODIMP
- nsMsgSearchDBView::OnHdrFlagsChanged(nsIMsgDBHdr *aHdrChanged,
-                                      uint32_t aOldFlags,
-                                      uint32_t aNewFlags,
-                                      nsIDBChangeListener *aInstigator)
- {
-   // Defer to base class if we're grouped or not threaded at all.
-   if (m_viewFlags & nsMsgViewFlagsType::kGroupBySort ||
--      !(m_viewFlags && nsMsgViewFlagsType::kThreadedDisplay))
-+      !(m_viewFlags & nsMsgViewFlagsType::kThreadedDisplay))
-   {
-     return nsMsgGroupView::OnHdrFlagsChanged(aHdrChanged, aOldFlags,
-                                              aNewFlags, aInstigator);
-   }
- 
-   nsCOMPtr <nsIMsgThread> thread;
-   bool foundMessageId;
-   // Check if the hdr that changed is in a xf thread, and if the read flag
-diff --git a/mailnews/compose/src/moz.build b/mailnews/compose/src/moz.build
---- a/mailnews/compose/src/moz.build
-+++ b/mailnews/compose/src/moz.build
-@@ -52,8 +52,10 @@ EXTRA_COMPONENTS += [
- ]
- 
- LOCAL_INCLUDES += [
-   '/%s/dom/base' % CONFIG['mozreltopsrcdir'],
- ]
- 
- FINAL_LIBRARY = 'mail'
- 
-+if CONFIG['CC_TYPE'] == 'clang-cl':
-+    AllowCompilerWarnings()  # workaround for bug 1090497 / bug 1481326
-diff --git a/mailnews/imap/src/nsImapUtils.cpp b/mailnews/imap/src/nsImapUtils.cpp
---- a/mailnews/imap/src/nsImapUtils.cpp
-+++ b/mailnews/imap/src/nsImapUtils.cpp
-@@ -176,17 +176,17 @@ NS_IMETHODIMP nsImapMailboxSpec::GetAllo
- NS_IMETHODIMP nsImapMailboxSpec::SetAllocatedPathName(const nsACString &aAllocatedPathName)
- {
-   mAllocatedPathName = aAllocatedPathName;
-   return NS_OK;
- }
- 
- NS_IMETHODIMP nsImapMailboxSpec::GetUnicharPathName(nsAString &aUnicharPathName)
- {
--  aUnicharPathName = aUnicharPathName;
-+  aUnicharPathName = mUnicharPathName;
-   return NS_OK;
- }
- 
- NS_IMETHODIMP nsImapMailboxSpec::SetUnicharPathName(const nsAString &aUnicharPathName)
- {
-   mUnicharPathName = aUnicharPathName;
-   return NS_OK;
- }
-diff --git a/mailnews/import/outlook/src/MapiApi.cpp b/mailnews/import/outlook/src/MapiApi.cpp
---- a/mailnews/import/outlook/src/MapiApi.cpp
-+++ b/mailnews/import/outlook/src/MapiApi.cpp
-@@ -1423,17 +1423,17 @@ void CMapiApi::ReportStringProp(const ch
- }
- 
- void CMapiApi::GetPropTagName(ULONG tag, nsCString& s)
- {
-   char numStr[256];
-   PR_snprintf(numStr, 256, "0x%lx, %ld", tag, tag);
-   s = numStr;
-   switch(tag) {
--#include "mapitagstrs.cpp"
-+#include "MapiTagStrs.cpp"
-   }
-   s += ", data: ";
-   switch(PROP_TYPE(tag)) {
-     case PT_UNSPECIFIED: s += "PT_UNSPECIFIED"; break;
-     case PT_NULL: s += "PT_NULL"; break;
-     case PT_I2: s += "PT_I2"; break;
-     case PT_LONG: s += "PT_LONG"; break;
-     case PT_R4: s += "PT_R4"; break;
-@@ -1723,39 +1723,37 @@ CMsgStore::CMsgStore(ULONG cbEid, LPENTR
- 
- CMsgStore::~CMsgStore()
- {
-   if (m_lpEid)
-     delete m_lpEid;
- 
-   if (m_lpMdb) {
-     ULONG flags = LOGOFF_NO_WAIT;
--    HRESULT hr = m_lpMdb->StoreLogoff(&flags);
-+    m_lpMdb->StoreLogoff(&flags);
-     m_lpMdb->Release();
-     m_lpMdb = NULL;
-   }
- }
- 
- void CMsgStore::SetEntryID(ULONG cbEid, LPENTRYID lpEid)
- {
--  HRESULT    hr;
--
-   if (m_lpEid)
-     delete m_lpEid;
- 
-   m_lpEid = NULL;
-   if (cbEid) {
-     m_lpEid = new BYTE[cbEid];
-     memcpy(m_lpEid, lpEid, cbEid);
-   }
-   m_cbEid = cbEid;
- 
-   if (m_lpMdb) {
-     ULONG flags = LOGOFF_NO_WAIT;
--    hr = m_lpMdb->StoreLogoff(&flags);
-+    m_lpMdb->StoreLogoff(&flags);
-     m_lpMdb->Release();
-     m_lpMdb = NULL;
-   }
- }
- 
- BOOL CMsgStore::Open(LPMAPISESSION pSession, LPMDB *ppMdb)
- {
-   if (m_lpMdb) {
-diff --git a/mailnews/import/outlook/src/MapiMessage.cpp b/mailnews/import/outlook/src/MapiMessage.cpp
---- a/mailnews/import/outlook/src/MapiMessage.cpp
-+++ b/mailnews/import/outlook/src/MapiMessage.cpp
-@@ -832,17 +832,16 @@ bool CMapiMessage::GetTmpFile(/*out*/ ns
-     return false;
- 
-   tmpFile.forget(aResult);
-   return true;
- }
- 
- bool CMapiMessage::CopyMsgAttachToFile(LPATTACH lpAttach, /*out*/ nsIFile **tmp_file)
- {
--  bool bResult = true;
-   LPMESSAGE  lpMsg;
-   HRESULT hr = lpAttach->OpenProperty(PR_ATTACH_DATA_OBJ, &IID_IMessage, 0, 0,
-                                       reinterpret_cast<LPUNKNOWN *>(&lpMsg));
-   if (HR_FAILED(hr))
-     return false;
- 
-   if (!GetTmpFile(tmp_file))
-     return false;
-diff --git a/mailnews/import/outlook/src/moz.build b/mailnews/import/outlook/src/moz.build
---- a/mailnews/import/outlook/src/moz.build
-+++ b/mailnews/import/outlook/src/moz.build
-@@ -17,8 +17,10 @@ SOURCES += [
- ]
- 
- FINAL_LIBRARY = 'import'
- 
- LOCAL_INCLUDES += [
-     '../../src'
- ]
- 
-+if CONFIG['CC_TYPE'] == 'clang-cl':
-+    AllowCompilerWarnings()  # workaround for bug 1090497 / bug 1481326
-diff --git a/mailnews/import/outlook/src/nsOutlookCompose.cpp b/mailnews/import/outlook/src/nsOutlookCompose.cpp
---- a/mailnews/import/outlook/src/nsOutlookCompose.cpp
-+++ b/mailnews/import/outlook/src/nsOutlookCompose.cpp
-@@ -40,17 +40,16 @@
- 
- #include "nsAutoPtr.h"
- #include "nsIThread.h"
- #include "nsThreadUtils.h"
- 
- #include "nsMsgMessageFlags.h"
- #include "nsMsgLocalFolderHdrs.h"
- 
--static NS_DEFINE_CID(kMsgSendCID, NS_MSGSEND_CID);
- static NS_DEFINE_CID(kMsgCompFieldsCID, NS_MSGCOMPFIELDS_CID);
- 
- #ifdef IMPORT_DEBUG
- static const char *p_test_headers =
- "Received: from netppl.invalid (IDENT:monitor@get.freebsd.because.microsoftsucks.invalid [209.3.31.115])\n\
-  by mail4.sirius.invalid (8.9.1/8.9.1) with SMTP id PAA27232;\n\
-  Mon, 17 May 1999 15:27:43 -0700 (PDT)\n\
- Message-ID: <ikGD3jRTsKklU.Ggm2HmE2A1Jsqd0p@netppl.invalid>\n\
-diff --git a/mailnews/import/outlook/src/nsOutlookMail.cpp b/mailnews/import/outlook/src/nsOutlookMail.cpp
---- a/mailnews/import/outlook/src/nsOutlookMail.cpp
-+++ b/mailnews/import/outlook/src/nsOutlookMail.cpp
-@@ -12,17 +12,17 @@
- #include "nsMsgUtils.h"
- #include "nsIServiceManager.h"
- #include "nsIImportService.h"
- #include "nsIImportFieldMap.h"
- #include "nsIImportMailboxDescriptor.h"
- #include "nsIImportABDescriptor.h"
- #include "nsIMutableArray.h"
- #include "nsOutlookStringBundle.h"
--#include "nsABBaseCID.h"
-+#include "nsAbBaseCID.h"
- #include "nsIAbCard.h"
- #include "mdb.h"
- #include "ImportDebug.h"
- #include "nsOutlookMail.h"
- #include "nsUnicharUtils.h"
- #include "nsIInputStream.h"
- #include "nsIOutputStream.h"
- #include "nsIMsgPluggableStore.h"
-diff --git a/mailnews/import/winlivemail/moz.build b/mailnews/import/winlivemail/moz.build
---- a/mailnews/import/winlivemail/moz.build
-+++ b/mailnews/import/winlivemail/moz.build
-@@ -7,8 +7,10 @@ SOURCES += [
-     'nsWMImport.cpp',
-     'nsWMSettings.cpp',
-     'nsWMStringBundle.cpp',
-     'nsWMUtils.cpp',
- ]
- 
- FINAL_LIBRARY = 'import'
- 
-+if CONFIG['CC_TYPE'] == 'clang-cl':
-+    AllowCompilerWarnings()  # workaround for bug 1090497 / bug 1481326
-diff --git a/mailnews/import/winlivemail/nsWMImport.cpp b/mailnews/import/winlivemail/nsWMImport.cpp
---- a/mailnews/import/winlivemail/nsWMImport.cpp
-+++ b/mailnews/import/winlivemail/nsWMImport.cpp
-@@ -66,17 +66,16 @@ public:
- public:
-   static void ReportSuccess(nsString& name, int32_t count, nsString *pStream);
-   static void ReportError(int32_t errorNum, nsString& name, nsString *pStream);
-   static void AddLinebreak(nsString *pStream);
-   static void SetLogs(nsString& success, nsString& error, char16_t **pError, char16_t **pSuccess);
- 
- private:
-   virtual ~ImportWMMailImpl();
--  uint32_t m_bytesDone;
- };
- 
- nsWMImport::nsWMImport()
- {
-   IMPORT_LOG0("nsWMImport Module Created\n");
-   nsWMStringBundle::GetStringBundle();
- }
- 
-diff --git a/mailnews/mapi/mapiDll/moz.build b/mailnews/mapi/mapiDll/moz.build
---- a/mailnews/mapi/mapiDll/moz.build
-+++ b/mailnews/mapi/mapiDll/moz.build
-@@ -15,8 +15,11 @@ SOURCES += [
- OS_LIBS += [
-     'ole32',
- ]
- 
- DEFINES['UNICODE'] = True
- DEFINES['_UNICODE'] = True
- 
- DEFFILE = SRCDIR + '/Mapi32.def'
-+
-+if CONFIG['CC_TYPE'] == 'clang-cl':
-+    AllowCompilerWarnings()  # workaround for bug 1090497 / bug 1481326
-diff --git a/mailnews/mapi/mapihook/build/moz.build b/mailnews/mapi/mapihook/build/moz.build
---- a/mailnews/mapi/mapihook/build/moz.build
-+++ b/mailnews/mapi/mapihook/build/moz.build
-@@ -12,8 +12,10 @@ OS_LIBS += [
- for var in ('REGISTER_PROXY_DLL', 'UNICODE', '_UNICODE'):
-     DEFINES[var] = True
- 
- # This produces a compile warning mozilla-config.h(145): warning C4005: '_WIN32_WINNT': macro redefinition
- #DEFINES['_WIN32_WINNT'] = '0x400'
- 
- DEFFILE = SRCDIR + '/MapiProxy.def'
- 
-+if CONFIG['CC_TYPE'] == 'clang-cl':
-+    AllowCompilerWarnings()  # workaround for bug 1090497 / bug 1481326
-diff --git a/mailnews/mapi/mapihook/src/moz.build b/mailnews/mapi/mapihook/src/moz.build
---- a/mailnews/mapi/mapihook/src/moz.build
-+++ b/mailnews/mapi/mapihook/src/moz.build
-@@ -15,8 +15,11 @@ SOURCES += [
- FINAL_LIBRARY = 'xul'
- 
- OS_LIBS += [
-     'ole32',
- ]
- 
- DEFINES['UNICODE'] = True
- DEFINES['_UNICODE'] = True
-+
-+if CONFIG['CC_TYPE'] == 'clang-cl':
-+    AllowCompilerWarnings()  # workaround for bug 1090497 / bug 1481326

+ 0 - 29
comm-esr60/comm-esr60/patches/1481326-2-63a1.patch

@@ -1,29 +0,0 @@
-# HG changeset patch
-# User Jorg K <jorgk@jorgk.com>
-# Date 1533630944 -7200
-# Node ID f67c130b8d329df8c79c9ca35b5f2ae3822a9776
-# Parent  5f5ecedf2e3ec4464ad3ccd4214414aad3b8e648
-Bug 1481326 - Follow-up: Remove another unused variable. rs=bustage-fix DONTBUILD
-
-diff --git a/mailnews/mapi/mapihook/src/msgMapiImp.cpp b/mailnews/mapi/mapihook/src/msgMapiImp.cpp
---- a/mailnews/mapi/mapihook/src/msgMapiImp.cpp
-+++ b/mailnews/mapi/mapihook/src/msgMapiImp.cpp
-@@ -610,17 +610,17 @@ lpnsMapiMessage MsgMapiListContext::GetM
-   lpnsMapiMessage message = (lpnsMapiMessage) CoTaskMemAlloc (sizeof(nsMapiMessage));
-   memset(message, 0, sizeof(nsMapiMessage));
-   if (message)
-   {
-     nsCString subject;
-     nsCString author;
-     nsCOMPtr <nsIMsgDBHdr> msgHdr;
- 
--    nsresult rv = m_db->GetMsgHdrForKey (key, getter_AddRefs(msgHdr));
-+    m_db->GetMsgHdrForKey (key, getter_AddRefs(msgHdr));
-     if (msgHdr)
-     {
-       msgHdr->GetSubject (getter_Copies(subject));
-       message->lpszSubject = (char *) CoTaskMemAlloc(subject.Length() + 1);
-       strcpy((char *) message->lpszSubject, subject.get());
-       uint32_t date;
-       (void) msgHdr->GetDateInSeconds(&date);
-       message->lpszDateReceived = ConvertDateToMapiFormat (date);

+ 0 - 23
comm-esr60/comm-esr60/patches/1481417-1-63a1.patch

@@ -1,23 +0,0 @@
-# HG changeset patch
-# User aceman <acelists@atlas.sk>
-# Date 1533706698 -7200
-# Node ID 7c91a7822ca0486b3d00451b5132f4b1baf0894d
-# Parent  4cfb4443cc81a5309264fcd552edac77418667f0
-Bug 1481417 - Part 1: Replace AllowCompilerWarnings() with -Wno-error=switch in mailnews/compose/src. r=jorgk
-
-diff --git a/mailnews/compose/src/moz.build b/mailnews/compose/src/moz.build
---- a/mailnews/compose/src/moz.build
-+++ b/mailnews/compose/src/moz.build
-@@ -48,10 +48,11 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'coco
- 
- EXTRA_COMPONENTS += [
-     'nsSMTPProtocolHandler.js',
-     'nsSMTPProtocolHandler.manifest',
- ]
- 
- FINAL_LIBRARY = 'mail'
- 
-+# clang-cl rightly complains about switch on nsresult.
- if CONFIG['CC_TYPE'] == 'clang-cl':
--    AllowCompilerWarnings()  # workaround for bug 1090497 / bug 1481326
-+    CXXFLAGS += ['-Wno-error=switch']

+ 0 - 24
comm-esr60/comm-esr60/patches/1481417-2-63a1.patch

@@ -1,24 +0,0 @@
-# HG changeset patch
-# User aceman <acelists@atlas.sk>
-# Date 1533706699 -7200
-# Node ID 492146f1c5704111d1f3a617e83212ad3dd49518
-# Parent  7c91a7822ca0486b3d00451b5132f4b1baf0894d
-Bug 1481417 - Part 2: Replace AllowCompilerWarnings() with -Wno-error=overloaded-virtual in db/mork/src. r=jorgk DONTBUILD
-
-diff --git a/db/mork/src/moz.build b/db/mork/src/moz.build
---- a/db/mork/src/moz.build
-+++ b/db/mork/src/moz.build
-@@ -48,10 +48,11 @@ SOURCES += [
-     'orkinHeap.cpp',
- ]
- 
- if CONFIG['OS_ARCH'] == 'WINNT':
-     SOURCES += ['morkSearchRowCursor.cpp']
- 
- FINAL_LIBRARY = 'mork'
- 
-+# clang-cl complains about this.
- if CONFIG['CC_TYPE'] == 'clang-cl':
--    AllowCompilerWarnings()  # workaround for bug 1090497 / bug 1481326
-+    CXXFLAGS += ['-Wno-error=overloaded-virtual']
-

+ 0 - 188
comm-esr60/comm-esr60/patches/1481417-3-63a1.patch

@@ -1,188 +0,0 @@
-# HG changeset patch
-# User aceman <acelists@atlas.sk>
-# Date 1533730980 -7200
-# Node ID 1853bb5a2acfe61564dda047ed4126d9adfaafde
-# Parent  20d775ce4c1d8322b3c7ef64f24450d4e091b54e
-Bug 1481417 - Part 3: Fix warnings and replace AllowCompilerWarnings() with -Wno-error=switch in mailnews/import/. r=jorgk
-
-diff --git a/mailnews/import/outlook/src/MapiApi.cpp b/mailnews/import/outlook/src/MapiApi.cpp
---- a/mailnews/import/outlook/src/MapiApi.cpp
-+++ b/mailnews/import/outlook/src/MapiApi.cpp
-@@ -721,17 +721,17 @@ void CMapiApi::ListProperties(LPMAPIPROP
-   }
- 
-   MAPIFreeBuffer(pArray);
- }
- 
- ULONG CMapiApi::GetEmailPropertyTag(LPMAPIPROP lpProp, LONG nameID)
- {
- static GUID emailGUID = {
--   0x00062004, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46
-+   0x00062004, 0x0000, 0x0000, { 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46 }
- };
- 
-   MAPINAMEID mapiNameID;
-   mapiNameID.lpguid = &emailGUID;
-   mapiNameID.ulKind = MNID_ID;
-   mapiNameID.Kind.lID = nameID;
- 
-   LPMAPINAMEID lpMapiNames = &mapiNameID;
-@@ -1215,30 +1215,32 @@ BOOL CMapiApi::GetLargeStringProperty(LP
- {
-   void* result;
-   if (!GetLargeProperty(pProp, tag, &result))
-     return FALSE;
-   if (PROP_TYPE(tag) == PT_UNICODE) // unicode string
-     LossyCopyUTF16toASCII(nsDependentString(static_cast<wchar_t*>(result)), val);
-   else // either PT_STRING8 or some other binary - use as is
-     val.Assign(static_cast<char*>(result));
--  delete[] result;
-+  // Despite being used as wchar_t*, result it allocated as "new char[]" in GetLargeProperty().
-+  delete[] static_cast<char*>(result);
-   return TRUE;
- }
- 
- BOOL CMapiApi::GetLargeStringProperty(LPMAPIPROP pProp, ULONG tag, nsString& val)
- {
-   void* result;
-   if (!GetLargeProperty(pProp, tag, &result))
-     return FALSE;
-   if (PROP_TYPE(tag) == PT_UNICODE) // We already get the unicode string
-     val.Assign(static_cast<wchar_t*>(result));
-   else // either PT_STRING8 or some other binary
-     CStrToUnicode(static_cast<char*>(result), val);
--  delete[] result;
-+  // Despite being used as wchar_t*, result it allocated as "new char[]" in GetLargeProperty().
-+  delete[] static_cast<char*>(result);
-   return TRUE;
- }
- // If the value is a string, get it...
- BOOL CMapiApi::GetEntryIdFromProp(LPSPropValue pVal, ULONG& cbEntryId,
-                                   LPENTRYID& lpEntryId, BOOL delVal)
- {
-   if (!pVal)
-     return FALSE;
-diff --git a/mailnews/import/outlook/src/MapiMessage.cpp b/mailnews/import/outlook/src/MapiMessage.cpp
---- a/mailnews/import/outlook/src/MapiMessage.cpp
-+++ b/mailnews/import/outlook/src/MapiMessage.cpp
-@@ -1291,17 +1291,17 @@ const char* CMapiMessageHeaders::Special
-   "Content-Transfer-Encoding:"
- };
- 
- CMapiMessageHeaders::~CMapiMessageHeaders()
- {
-   ClearHeaderFields();
- }
- 
--void Delete(void* p) { delete p; }
-+void CMapiMessageHeaders::Delete(CHeaderField* p) { delete p; }
- 
- void CMapiMessageHeaders::ClearHeaderFields()
- {
-   std::for_each(m_headerFields.begin(), m_headerFields.end(), Delete);
-   m_headerFields.clear();
- }
- 
- void CMapiMessageHeaders::Assign(const char* headers)
-diff --git a/mailnews/import/outlook/src/MapiMessage.h b/mailnews/import/outlook/src/MapiMessage.h
---- a/mailnews/import/outlook/src/MapiMessage.h
-+++ b/mailnews/import/outlook/src/MapiMessage.h
-@@ -133,16 +133,17 @@ private:
-   // The common array of special headers' names
-   static const char* Specials[hdrMax];
- 
-   std::vector<CHeaderField*> m_headerFields;
-   CHeaderField* m_SpecialHeaders[hdrMax]; // Pointers into the m_headerFields
- 
-   void ClearHeaderFields();
-   void Add(CHeaderField* f);
-+  static void Delete(CHeaderField* p);
-   static SpecialHeader CheckSpecialHeader(const char* fname);
-   const CHeaderField* CFind(const char* name) const;
-   inline CHeaderField* Find(const char* name) { return const_cast<CHeaderField*>(CFind(name)); }
- 
- }; // class CMapiMessageHeaders
- 
- //////////////////////////////////////////////////////
- 
-diff --git a/mailnews/import/outlook/src/moz.build b/mailnews/import/outlook/src/moz.build
---- a/mailnews/import/outlook/src/moz.build
-+++ b/mailnews/import/outlook/src/moz.build
-@@ -17,10 +17,11 @@ SOURCES += [
- ]
- 
- FINAL_LIBRARY = 'import'
- 
- LOCAL_INCLUDES += [
-     '../../src'
- ]
- 
-+# clang-cl rightly complains about switch on nsresult.
- if CONFIG['CC_TYPE'] == 'clang-cl':
--    AllowCompilerWarnings()  # workaround for bug 1090497 / bug 1481326
-+    CXXFLAGS += ['-Wno-error=switch']
-diff --git a/mailnews/import/outlook/src/rtfDecoder.cpp b/mailnews/import/outlook/src/rtfDecoder.cpp
---- a/mailnews/import/outlook/src/rtfDecoder.cpp
-+++ b/mailnews/import/outlook/src/rtfDecoder.cpp
-@@ -358,17 +358,17 @@ void PreprocessLexem(/*inout*/Lexem& lex
-       if (const int* val = lexem.KeywordVal()) {
-         lexem.SetPCDATA_W(*val);
-         stream.ignore(uc);
-       }
-       else lexem = Lexem::error;
-     }
-     else if (eq(lexem.KeywordName(), "'")) {
-        // 8-bit character (\'hh) -> use current codepage
--      char ch, ch1;
-+      char ch = 0, ch1 = 0;
-       if (!stream.get(ch).eof()) ch1 = HexToInt(ch);
-       if (!stream.get(ch).eof()) (ch1 <<= 4) += HexToInt(ch);
-       lexem.SetPCDATA_A(ch1);
-     }
-     else if (eq(lexem.KeywordName(), "\\") || eq(lexem.KeywordName(), "{") ||
-              eq(lexem.KeywordName(), "}")) // escaped characters
-       lexem.SetPCDATA_A(lexem.KeywordName()[0]);
-     else if (eq(lexem.KeywordName(), "bin")) {
-diff --git a/mailnews/import/winlivemail/moz.build b/mailnews/import/winlivemail/moz.build
---- a/mailnews/import/winlivemail/moz.build
-+++ b/mailnews/import/winlivemail/moz.build
-@@ -7,11 +7,8 @@ SOURCES += [
-     'nsWMImport.cpp',
-     'nsWMSettings.cpp',
-     'nsWMStringBundle.cpp',
-     'nsWMUtils.cpp',
- ]
- 
- FINAL_LIBRARY = 'import'
- 
--if CONFIG['CC_TYPE'] == 'clang-cl':
--    AllowCompilerWarnings()  # workaround for bug 1090497 / bug 1481326
--
-diff --git a/mailnews/import/winlivemail/nsWMStringBundle.cpp b/mailnews/import/winlivemail/nsWMStringBundle.cpp
---- a/mailnews/import/winlivemail/nsWMStringBundle.cpp
-+++ b/mailnews/import/winlivemail/nsWMStringBundle.cpp
-@@ -16,23 +16,22 @@
- 
- nsIStringBundle *  nsWMStringBundle::m_pBundle = nullptr;
- 
- nsIStringBundle *nsWMStringBundle::GetStringBundle(void)
- {
-   if (m_pBundle)
-     return m_pBundle;
- 
--  char*        propertyURL = WM_MSGS_URL;
-   nsIStringBundle*  sBundle = nullptr;
- 
-   nsCOMPtr<nsIStringBundleService> sBundleService =
-     mozilla::services::GetStringBundleService();
-   if (sBundleService) {
--    sBundleService->CreateBundle(propertyURL, &sBundle);
-+    sBundleService->CreateBundle(WM_MSGS_URL, &sBundle);
-   }
- 
-   m_pBundle = sBundle;
- 
-   return sBundle;
- }
- 
- void nsWMStringBundle::GetStringByID(int32_t stringID, nsString& result)

+ 0 - 159
comm-esr60/comm-esr60/patches/1481417-4-63a1.patch

@@ -1,159 +0,0 @@
-# HG changeset patch
-# User aceman <acelists@atlas.sk>
-# Date 1533736980 -7200
-# Node ID 6483ed7347463dc786faae51a7476f4c46902a60
-# Parent  a6f4619b2ac339ae8082acec2ecdf638dded186d
-Bug 1481417 - Part 4: Fix warnings and remove AllowCompilerWarnings() in mail/components/. r=jorgk DONTBUILD
-
-diff --git a/mail/components/search/moz.build b/mail/components/search/moz.build
---- a/mail/components/search/moz.build
-+++ b/mail/components/search/moz.build
-@@ -14,11 +14,8 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'wi
- 
- DIRS += ['public']
- 
- EXTRA_PP_JS_MODULES += [
-     'SearchIntegration.js',
- ]
- 
- JAR_MANIFESTS += ['jar.mn']
--
--if CONFIG['CC_TYPE'] == 'clang-cl':
--    AllowCompilerWarnings()  # workaround for bug 1090497 / bug 1481326
-diff --git a/mail/components/search/nsMailWinSearchHelper.cpp b/mail/components/search/nsMailWinSearchHelper.cpp
---- a/mail/components/search/nsMailWinSearchHelper.cpp
-+++ b/mail/components/search/nsMailWinSearchHelper.cpp
-@@ -183,27 +183,26 @@ NS_IMETHODIMP nsMailWinSearchHelper::Set
-     }
-   }
-   return rv;
- }
- 
- NS_IMETHODIMP nsMailWinSearchHelper::GetIsFileAssociationSet(bool *aResult)
- {
-   NS_ENSURE_ARG_POINTER(aResult);
--  *aResult = false;
- 
-   // We'll use the Vista method here
-   RefPtr<IApplicationAssociationRegistration> pAAR;
-   HRESULT hr = CoCreateInstance(CLSID_ApplicationAssociationRegistration,
-                                 NULL,
-                                 CLSCTX_INPROC,
-                                 IID_IApplicationAssociationRegistration,
-                                 getter_AddRefs(pAAR));
- 
--  BOOL res;
-+  BOOL res = false;
-   if (SUCCEEDED(hr))
-     pAAR->QueryAppIsDefault(L".wdseml", AT_FILEEXTENSION, AL_EFFECTIVE, APP_REG_NAME_MAIL, &res);
-   *aResult = res;
- 
-   return NS_OK;
- }
- 
- NS_IMETHODIMP nsMailWinSearchHelper::SetFileAssociation()
-@@ -253,17 +252,17 @@ NS_IMETHODIMP nsMailWinSearchHelper::Run
-   executeInfo.cbSize = sizeof(SHELLEXECUTEINFOW);
-   executeInfo.hwnd = hWnd;
-   executeInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
-   executeInfo.lpDirectory = NULL;
-   executeInfo.lpFile = filePath.get();
-   executeInfo.lpParameters = params.get();
-   executeInfo.nShow = SW_SHOWNORMAL;
- 
--  DWORD dwRet;
-+  DWORD dwRet = ERROR_SUCCESS;
- 
-   if (ShellExecuteExW(&executeInfo))
-   {
-     // We want to block until the program exits
-     DWORD dwSignaled = WaitForSingleObject(executeInfo.hProcess, INFINITE);
-     if (dwSignaled == WAIT_OBJECT_0)
-       if (!GetExitCodeProcess(executeInfo.hProcess, &dwRet))
-         dwRet = GetLastError();
-diff --git a/mail/components/search/nsMailWinSearchHelper.h b/mail/components/search/nsMailWinSearchHelper.h
---- a/mail/components/search/nsMailWinSearchHelper.h
-+++ b/mail/components/search/nsMailWinSearchHelper.h
-@@ -18,14 +18,14 @@ class nsMailWinSearchHelper : public nsI
- public:
-   NS_DECL_ISUPPORTS
-   NS_DECL_NSIMAILWINSEARCHHELPER
- 
-   NS_HIDDEN_(nsresult) Init();
-   nsMailWinSearchHelper();
- 
- private:
--  ~nsMailWinSearchHelper();
-+  virtual ~nsMailWinSearchHelper();
-   nsCOMPtr<nsIFile> mProfD;
-   nsCOMPtr<nsIFile> mCurProcD;
- };
- 
- #endif
-diff --git a/mail/components/search/wsenable/WSEnable.cpp b/mail/components/search/wsenable/WSEnable.cpp
---- a/mail/components/search/wsenable/WSEnable.cpp
-+++ b/mail/components/search/wsenable/WSEnable.cpp
-@@ -11,19 +11,19 @@
- static const CLSID CLSID_CSearchManager = {0x7d096c5f, 0xac08, 0x4f1f, {0xbe, 0xb7, 0x5c, 0x22, 0xc5, 0x17, 0xce, 0x39}};
- static const IID IID_ISearchManager = {0xab310581, 0xac80, 0x11d1, {0x8d, 0xf3, 0x00, 0xc0, 0x4f, 0xb6, 0xef, 0x69}};
- 
- static const WCHAR* const sFoldersToIndex[] = {L"\\Mail\\", L"\\ImapMail\\", L"\\News\\"};
- 
- struct RegKey
- {
-   HKEY mRoot;
--  LPWSTR mSubKey;
--  LPWSTR mName;
--  LPWSTR mValue;
-+  const LPWSTR mSubKey;
-+  const LPWSTR mName;
-+  const LPWSTR mValue;
- 
-   RegKey(HKEY aRoot, LPWSTR aSubKey, LPWSTR aName, LPWSTR aValue)
-     : mRoot(aRoot), mSubKey(aSubKey), mName(aName), mValue(aValue) {}
- };
- 
- static const RegKey* const sRegKeys[] =
- {
-   new RegKey(HKEY_LOCAL_MACHINE,
-diff --git a/mail/components/shell/moz.build b/mail/components/shell/moz.build
---- a/mail/components/shell/moz.build
-+++ b/mail/components/shell/moz.build
-@@ -28,11 +28,8 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'coco
- EXTRA_COMPONENTS += [
-     'nsSetDefaultMail.js',
-     'shell.manifest',
- ]
- 
- FINAL_LIBRARY = 'mailcomps'
- 
- CXXFLAGS += CONFIG['TK_CFLAGS']
--
--if CONFIG['CC_TYPE'] == 'clang-cl':
--    AllowCompilerWarnings()  # workaround for bug 1090497 / bug 1481326
-diff --git a/mail/components/shell/nsMailWinIntegration.h b/mail/components/shell/nsMailWinIntegration.h
---- a/mail/components/shell/nsMailWinIntegration.h
-+++ b/mail/components/shell/nsMailWinIntegration.h
-@@ -12,19 +12,19 @@
- 
- #include <ole2.h>
- #include <windows.h>
- 
- #define NS_MAILWININTEGRATION_CID \
- {0x2ebbe84, 0xc179, 0x4598, {0xaf, 0x18, 0x1b, 0xf2, 0xc4, 0xbc, 0x1d, 0xf9}}
- 
- typedef struct {
--  char* keyName;
--  char* valueName;
--  char* valueData;
-+  const char* keyName;
-+  const char* valueName;
-+  const char* valueData;
- 
-   int32_t flags;
- } SETTING;
- 
- class nsWindowsShellService : public nsIWindowsShellService
- {
- public:
-   nsWindowsShellService();

+ 0 - 133
comm-esr60/comm-esr60/patches/1481417-5-63a1.patch

@@ -1,133 +0,0 @@
-# HG changeset patch
-# User aceman <acelists@atlas.sk>
-# Date 1533706697 -7200
-# Node ID 16dc2cb0e5356bb9347bbb638dbb929dbfe8ece0
-# Parent  cb739b4c420031dae7d7ec0d9b100c959023410e
-Bug 1481417 - Part 5: Fix warnings and remove AllowCompilerWarnings() or replace it with something more specific in mailnews/mapi. r=jorgk
-
-diff --git a/mailnews/mapi/mapiDll/moz.build b/mailnews/mapi/mapiDll/moz.build
---- a/mailnews/mapi/mapiDll/moz.build
-+++ b/mailnews/mapi/mapiDll/moz.build
-@@ -15,11 +15,8 @@ SOURCES += [
- OS_LIBS += [
-     'ole32',
- ]
- 
- DEFINES['UNICODE'] = True
- DEFINES['_UNICODE'] = True
- 
- DEFFILE = SRCDIR + '/Mapi32.def'
--
--if CONFIG['CC_TYPE'] == 'clang-cl':
--    AllowCompilerWarnings()  # workaround for bug 1090497 / bug 1481326
-diff --git a/mailnews/mapi/mapihook/build/moz.build b/mailnews/mapi/mapihook/build/moz.build
---- a/mailnews/mapi/mapihook/build/moz.build
-+++ b/mailnews/mapi/mapihook/build/moz.build
-@@ -12,10 +12,11 @@ OS_LIBS += [
- for var in ('REGISTER_PROXY_DLL', 'UNICODE', '_UNICODE'):
-     DEFINES[var] = True
- 
- # This produces a compile warning mozilla-config.h(145): warning C4005: '_WIN32_WINNT': macro redefinition
- #DEFINES['_WIN32_WINNT'] = '0x400'
- 
- DEFFILE = SRCDIR + '/MapiProxy.def'
- 
-+# clang-cl complains about these in generated code:
- if CONFIG['CC_TYPE'] == 'clang-cl':
--    AllowCompilerWarnings()  # workaround for bug 1090497 / bug 1481326
-+    CFLAGS += ['-Wno-error=extern-initializer','-Wno-error=missing-braces','-Wno-error=unused-const-variable']
-diff --git a/mailnews/mapi/mapihook/src/moz.build b/mailnews/mapi/mapihook/src/moz.build
---- a/mailnews/mapi/mapihook/src/moz.build
-+++ b/mailnews/mapi/mapihook/src/moz.build
-@@ -16,10 +16,11 @@ FINAL_LIBRARY = 'xul'
- 
- OS_LIBS += [
-     'ole32',
- ]
- 
- DEFINES['UNICODE'] = True
- DEFINES['_UNICODE'] = True
- 
-+# clang-cl rightly complains about switch on nsresult.
- if CONFIG['CC_TYPE'] == 'clang-cl':
--    AllowCompilerWarnings()  # workaround for bug 1090497 / bug 1481326
-+    CXXFLAGS += ['-Wno-error=switch']
-diff --git a/mailnews/mapi/mapihook/src/msgMapiFactory.h b/mailnews/mapi/mapihook/src/msgMapiFactory.h
---- a/mailnews/mapi/mapihook/src/msgMapiFactory.h
-+++ b/mailnews/mapi/mapihook/src/msgMapiFactory.h
-@@ -27,13 +27,13 @@ public :
-     STDMETHODIMP        CreateInstance (LPUNKNOWN aUnkOuter, REFIID aIid, void **aPpv);
-     STDMETHODIMP        LockServer (BOOL aLock);
- 
-     CMapiFactory ();
- 
- private:
-     mozilla::ThreadSafeAutoRefCnt m_cRef;
- 
--    ~CMapiFactory ();
-+    virtual ~CMapiFactory ();
- };
- 
- #endif  // MSG_MAPI_FACTORY_H
- 
-diff --git a/mailnews/mapi/mapihook/src/msgMapiImp.h b/mailnews/mapi/mapihook/src/msgMapiImp.h
---- a/mailnews/mapi/mapihook/src/msgMapiImp.h
-+++ b/mailnews/mapi/mapihook/src/msgMapiImp.h
-@@ -58,17 +58,17 @@ public :
- 
-   STDMETHODIMP SendMailW(unsigned long aSession, lpnsMapiMessageW aMessage,
-                          unsigned long aFlags, unsigned long aReserved);
- 
-   STDMETHODIMP Logoff (unsigned long aSession);
-   STDMETHODIMP CleanUp();
- 
-   CMapiImp();
--  ~CMapiImp();
-+  virtual ~CMapiImp();
- 
-   LONG InitContext(unsigned long session, MsgMapiListContext **listContext);
-   nsresult GetDefaultInbox(nsIMsgFolder **inboxFolder);
- 
- private :
-   PRLock *m_Lock;
-   mozilla::ThreadSafeAutoRefCnt m_cRef;
- };
-diff --git a/mailnews/mapi/mapihook/src/msgMapiMain.h b/mailnews/mapi/mapihook/src/msgMapiMain.h
---- a/mailnews/mapi/mapihook/src/msgMapiMain.h
-+++ b/mailnews/mapi/mapihook/src/msgMapiMain.h
-@@ -1,14 +1,14 @@
- /* This Source Code Form is subject to the terms of the Mozilla Public
-  * License, v. 2.0. If a copy of the MPL was not distributed with this
-  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
- 
- #ifndef MSG_MAPI_MAIN_H_
--#define NSG_MAPI_MAIN_H_
-+#define MSG_MAPI_MAIN_H_
- 
- #define        MAX_NAME_LEN    256
- #define        MAX_PW_LEN      256
- #define        MAX_SESSIONS    50
- #define        MAPI_SENDCOMPLETE_EVENT   "SendCompletionEvent"
- 
- #define MAPI_PROPERTIES_CHROME "chrome://messenger-mapi/locale/mapi.properties"
- #define PREF_MAPI_WARN_PRIOR_TO_BLIND_SEND "mapi.blind-send.warn"
-diff --git a/mailnews/mapi/mapihook/src/msgMapiSupport.h b/mailnews/mapi/mapihook/src/msgMapiSupport.h
---- a/mailnews/mapi/mapihook/src/msgMapiSupport.h
-+++ b/mailnews/mapi/mapihook/src/msgMapiSupport.h
-@@ -20,15 +20,15 @@ class nsMapiSupport : public nsIMapiSupp
-         nsMapiSupport();
- 
-         // Declare all interface methods we must implement.
-         NS_DECL_THREADSAFE_ISUPPORTS
-         NS_DECL_NSIOBSERVER
-         NS_DECL_NSIMAPISUPPORT
- 
-     private :
--        ~nsMapiSupport();
-+        virtual ~nsMapiSupport();
- 
-         DWORD   m_dwRegister;
-         CMapiFactory *m_nsMapiFactory;
- };
- 
- #endif  // MSG_MAPI_SUPPORT_H_

+ 0 - 31
comm-esr60/comm-esr60/patches/1482248-63a1.patch

@@ -1,31 +0,0 @@
-# HG changeset patch
-# User Magnus Melin <mkmelin+mozilla@iki.fi>
-# Date 1533928828 -10800
-# Node ID 80754eac3809bff2f8fe4ea05bd16dbaf3dfe1a7
-# Parent  020481090e4e241e345f92410688c9f81e543911
-Bug 1482248 - don't crash on empty file name in nsMsgLocalStoreUtils::nsShouldIgnoreFile. r=jorgk
-
-diff --git a/mailnews/local/src/nsMsgLocalStoreUtils.cpp b/mailnews/local/src/nsMsgLocalStoreUtils.cpp
---- a/mailnews/local/src/nsMsgLocalStoreUtils.cpp
-+++ b/mailnews/local/src/nsMsgLocalStoreUtils.cpp
-@@ -23,16 +23,19 @@ nsMsgLocalStoreUtils::AddDirectorySepara
-   path->GetLeafName(leafName);
-   leafName.AppendLiteral(FOLDER_SUFFIX);
-   return path->SetLeafName(leafName);
- }
- 
- bool
- nsMsgLocalStoreUtils::nsShouldIgnoreFile(nsAString& name)
- {
-+  if (name.IsEmpty())
-+    return true;
-+
-   char16_t firstChar = name.First();
-   if (firstChar == '.' || firstChar == '#' ||
-       name.CharAt(name.Length() - 1) == '~')
-     return true;
- 
-   if (name.LowerCaseEqualsLiteral("msgfilterrules.dat") ||
-       name.LowerCaseEqualsLiteral("rules.dat") ||
-       name.LowerCaseEqualsLiteral("filterlog.html") ||
-

+ 0 - 77
comm-esr60/comm-esr60/patches/1484388-63a1.patch

@@ -1,77 +0,0 @@
-# HG changeset patch
-# User Jorg K <jorgk@jorgk.com>
-# Date 1534551110 -7200
-# Node ID 9af08bb2fd9652e49ad36edf1aeb92f9e4660eec
-# Parent  00e6e8d2ce27b1bc001ba93a883b2f51e156c05d
-Bug 1484388 - Silence clang-cl warnings. r=me
-
-diff --git a/db/mork/src/moz.build b/db/mork/src/moz.build
---- a/db/mork/src/moz.build
-+++ b/db/mork/src/moz.build
-@@ -50,9 +50,9 @@ SOURCES += [
- 
- if CONFIG['OS_ARCH'] == 'WINNT':
-     SOURCES += ['morkSearchRowCursor.cpp']
- 
- FINAL_LIBRARY = 'mork'
- 
- # clang-cl complains about this.
- if CONFIG['CC_TYPE'] == 'clang-cl':
--    CXXFLAGS += ['-Wno-error=overloaded-virtual']
-+    CXXFLAGS += ['-Wno-overloaded-virtual']
-diff --git a/mailnews/compose/src/moz.build b/mailnews/compose/src/moz.build
---- a/mailnews/compose/src/moz.build
-+++ b/mailnews/compose/src/moz.build
-@@ -50,9 +50,9 @@ EXTRA_COMPONENTS += [
-     'nsSMTPProtocolHandler.js',
-     'nsSMTPProtocolHandler.manifest',
- ]
- 
- FINAL_LIBRARY = 'mail'
- 
- # clang-cl rightly complains about switch on nsresult.
- if CONFIG['CC_TYPE'] == 'clang-cl':
--    CXXFLAGS += ['-Wno-error=switch']
-+    CXXFLAGS += ['-Wno-switch']
-diff --git a/mailnews/import/outlook/src/moz.build b/mailnews/import/outlook/src/moz.build
---- a/mailnews/import/outlook/src/moz.build
-+++ b/mailnews/import/outlook/src/moz.build
-@@ -19,9 +19,9 @@ SOURCES += [
- FINAL_LIBRARY = 'import'
- 
- LOCAL_INCLUDES += [
-     '../../src'
- ]
- 
- # clang-cl rightly complains about switch on nsresult.
- if CONFIG['CC_TYPE'] == 'clang-cl':
--    CXXFLAGS += ['-Wno-error=switch']
-+    CXXFLAGS += ['-Wno-switch']
-diff --git a/mailnews/mapi/mapihook/build/moz.build b/mailnews/mapi/mapihook/build/moz.build
---- a/mailnews/mapi/mapihook/build/moz.build
-+++ b/mailnews/mapi/mapihook/build/moz.build
-@@ -22,9 +22,9 @@ DEFFILE = SRCDIR + '/MapiProxy.def'
- #   #endif !_MIDL_USE_GUIDDEF_
- #
- # which clang-cl complains about.  MSVC doesn't, so turn this warning off.
- if CONFIG['CC_TYPE'] == 'clang-cl':
-     CFLAGS += ['-Wno-extra-tokens']
- 
- # clang-cl complains about these in generated code:
- if CONFIG['CC_TYPE'] == 'clang-cl':
--    CFLAGS += ['-Wno-error=extern-initializer','-Wno-error=missing-braces','-Wno-error=unused-const-variable']
-+    CFLAGS += ['-Wno-extern-initializer','-Wno-missing-braces','-Wno-unused-const-variable']
-diff --git a/mailnews/mapi/mapihook/src/moz.build b/mailnews/mapi/mapihook/src/moz.build
---- a/mailnews/mapi/mapihook/src/moz.build
-+++ b/mailnews/mapi/mapihook/src/moz.build
-@@ -18,9 +18,9 @@ OS_LIBS += [
-     'ole32',
- ]
- 
- DEFINES['UNICODE'] = True
- DEFINES['_UNICODE'] = True
- 
- # clang-cl rightly complains about switch on nsresult.
- if CONFIG['CC_TYPE'] == 'clang-cl':
--    CXXFLAGS += ['-Wno-error=switch']
-+    CXXFLAGS += ['-Wno-switch']

+ 0 - 90
comm-esr60/comm-esr60/patches/1484499-checknewmail.patch

@@ -1,90 +0,0 @@
-# HG changeset patch
-# User Frank-Rainer Grahl <frgrahl@gmx.net>
-# Parent  df832f8b6918f15b275050326cbc54ad288a44c3
-Bug 1484499 - Remove unused nsImapProtocol::CheckNewMail().
-
-diff --git a/mailnews/imap/src/nsImapProtocol.cpp b/mailnews/imap/src/nsImapProtocol.cpp
---- a/mailnews/imap/src/nsImapProtocol.cpp
-+++ b/mailnews/imap/src/nsImapProtocol.cpp
-@@ -475,17 +475,16 @@ nsImapProtocol::nsImapProtocol() : nsMsg
-   m_fromHeaderSeen = false;
-   m_closeNeededBeforeSelect = false;
-   m_needNoop = false;
-   m_noopCount = 0;
-   m_fetchBodyListIsNew = false;
-   m_flagChangeCount = 0;
-   m_lastCheckTime = PR_Now();
- 
--  m_checkForNewMailDownloadsHeaders = true;  // this should be on by default
-   m_hierarchyNameState = kNoOperationInProgress;
-   m_discoveryStatus = eContinue;
- 
-   // m_dataOutputBuf is used by Send Data
-   m_dataOutputBuf = (char *) PR_CALLOC(sizeof(char) * OUTPUT_BUFFER_SIZE);
-   m_allocatedSize = OUTPUT_BUFFER_SIZE;
- 
-   // used to buffer incoming data by ReadNextLine
-@@ -4459,24 +4458,16 @@ void nsImapProtocol::PeriodicBiff()
- }
- 
- void nsImapProtocol::SendSetBiffIndicatorEvent(nsMsgBiffState newState)
- {
-     if (m_imapMailFolderSink)
-       m_imapMailFolderSink->SetBiffStateAndUpdate(newState);
- }
- 
--// We get called to see if there is mail waiting for us at the server, even if it may have been
--// read elsewhere. We just want to know if we should download headers or not.
--
--bool nsImapProtocol::CheckNewMail()
--{
--  return m_checkForNewMailDownloadsHeaders;
--}
--
- /* static */ void nsImapProtocol::LogImapUrl(const char *logMsg, nsIImapUrl *imapUrl)
- {
-   if (MOZ_LOG_TEST(IMAP, LogLevel::Info))
-   {
-     nsCOMPtr<nsIMsgMailNewsUrl> mailnewsUrl = do_QueryInterface(imapUrl);
-     if (mailnewsUrl)
-     {
-       nsAutoCString urlSpec, unescapedUrlSpec;
-diff --git a/mailnews/imap/src/nsImapProtocol.h b/mailnews/imap/src/nsImapProtocol.h
---- a/mailnews/imap/src/nsImapProtocol.h
-+++ b/mailnews/imap/src/nsImapProtocol.h
-@@ -400,17 +400,16 @@ private:
-   void HandleIdleResponses();
-   virtual bool ProcessCurrentURL();
-   void EstablishServerConnection();
-   virtual void ParseIMAPandCheckForNewMail(const char* commandString =
-     nullptr, bool ignoreBadNOResponses = false);
-   // biff
-   void  PeriodicBiff();
-   void  SendSetBiffIndicatorEvent(nsMsgBiffState newState);
--  bool  CheckNewMail();
- 
-   // folder opening and listing header functions
-   void FolderHeaderDump(uint32_t *msgUids, uint32_t msgCount);
-   void FolderMsgDump(uint32_t *msgUids, uint32_t msgCount, nsIMAPeFetchFields fields);
-   void FolderMsgDumpLoop(uint32_t *msgUids, uint32_t msgCount, nsIMAPeFetchFields fields);
-   void WaitForPotentialListOfBodysToFetch(uint32_t **msgIdList, uint32_t &msgCount);
-   void HeaderFetchCompleted();
-   void UploadMessageFromFile(nsIFile* file, const char* mailboxName, PRTime date,
-@@ -643,17 +642,16 @@ private:
-   int32_t       m_progressCurrentNumber[IMAP_NUMBER_OF_PROGRESS_STRINGS];
-   int32_t       m_progressExpectedNumber;
-   nsCString     m_lastProgressStringName;
-   int32_t       m_lastPercent;
-   int64_t       m_lastProgressTime;
-   nsCOMPtr<nsIStringBundle> m_bundle;
- 
-   bool m_notifySearchHit;
--  bool m_checkForNewMailDownloadsHeaders;
-   bool m_needNoop;
-   bool m_idle;
-   bool m_useIdle;
-   int32_t m_noopCount;
-   bool    m_autoSubscribe, m_autoUnsubscribe, m_autoSubscribeOnOpen;
-   bool m_closeNeededBeforeSelect;
-   bool m_retryUrlOnError;
-   bool m_preferPlainText;

+ 0 - 929
comm-esr60/comm-esr60/patches/1488557-instantbird2-62a1.patch

@@ -1,929 +0,0 @@
-# HG changeset patch
-# User Richard Marti <richard.marti@gmail.com>
-# Date 1536092438 -7200
-#      Tue Sep 04 22:20:38 2018 +0200
-# Node ID da28fa77fde6e976112405ee246da4d089b8c296
-# Parent  515afa7ea0a2afc27a1fe635fbf435f2cbe6bea0
-Bug 1488557 - Remove Instantbird files from other-licenses. r=jorgk DONTBUILD
-
-diff --git a/other-licenses/7zstub/instantbird/7zSD.sfx b/other-licenses/7zstub/instantbird/7zSD.sfx
-deleted file mode 100755
-index 5ee166eb294354167db6c7bda901e0f7908f323a..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
-GIT binary patch
-literal 0
-Hc$@<O00001
-
-diff --git a/other-licenses/branding/instantbird/Makefile.in b/other-licenses/branding/instantbird/Makefile.in
-deleted file mode 100644
---- a/other-licenses/branding/instantbird/Makefile.in
-+++ /dev/null
-@@ -1,54 +0,0 @@
--# This Source Code Form is subject to the terms of the Mozilla Public
--# License, v. 2.0. If a copy of the MPL was not distributed with this
--# file, You can obtain one at http://mozilla.org/MPL/2.0/.
--
--# Branding Makefile for nightlies/unofficial branding
--
--include $(topsrcdir)/config/rules.mk
--
--export::
--	$(NSINSTALL) -D $(DIST)/branding
--ifeq ($(OS_ARCH),WINNT)
--	cp $(srcdir)/instantbird.ico   $(DIST)/branding/instantbird.ico
--	cp $(srcdir)/instantbird.ico   $(DIST)/branding/app.ico
--	cp $(srcdir)/branding.nsi      $(DIST)/branding/branding.nsi
--	cp $(srcdir)/wizHeader.bmp     $(DIST)/branding/wizHeader.bmp
--	cp $(srcdir)/wizHeaderRTL.bmp  $(DIST)/branding/wizHeaderRTL.bmp
--	cp $(srcdir)/wizWatermark.bmp  $(DIST)/branding/wizWatermark.bmp
--endif
--ifdef MOZ_SPLASHSCREEN
--ifeq ($(MOZ_WIDGET_TOOLKIT),windows)
--	cp $(srcdir)/splash.bmp       $(DIST)/branding/splash.bmp
--endif
--endif
--ifneq (,$(filter mac cocoa,$(MOZ_WIDGET_TOOLKIT)))
--	cp $(srcdir)/instantbird.icns  $(DIST)/branding/instantbird.icns
--	cp $(srcdir)/dsstore           $(DIST)/branding/dsstore
--	cp $(srcdir)/background.png    $(DIST)/branding/background.png
--	cp $(srcdir)/disk.icns         $(DIST)/branding/disk.icns
--#	cp $(srcdir)/license.r         $(DIST)/branding/license.r
--endif
--ifneq (,$(filter gtk%,$(MOZ_WIDGET_TOOLKIT)))
--	cp $(srcdir)/mozicon128.png    $(DIST)/branding/mozicon128.png
--	cp $(srcdir)/mozicon16.xpm     $(DIST)/branding/mozicon16.xpm
--	cp $(srcdir)/mozicon50.xpm     $(DIST)/branding/mozicon50.xpm
--	cp $(srcdir)/default16.png     $(DIST)/branding/default16.png
--endif
--
--# Now sort out the branding specific icons
--ifeq ($(OS_ARCH),WINNT)
--	cp $(srcdir)/windows/blistWindow.ico $(DIST)/branding/blistWindow.ico
--	cp $(srcdir)/windows/convWindow.ico  $(DIST)/branding/convWindow.ico
--	cp $(srcdir)/windows/default.ico     $(DIST)/branding/default.ico
--endif
--ifneq (,$(filter gtk%,$(MOZ_WIDGET_TOOLKIT)))
--	cp $(srcdir)/gtk/blistWindow.png    $(DIST)/branding/blistWindow.png
--	cp $(srcdir)/gtk/blistWindow16.png  $(DIST)/branding/blistWindow16.png
--	cp $(srcdir)/gtk/blistWindow48.png  $(DIST)/branding/blistWindow48.png
--	cp $(srcdir)/gtk/convWindow.png     $(DIST)/branding/convWindow.png
--	cp $(srcdir)/gtk/convWindow16.png   $(DIST)/branding/convWindow16.png
--	cp $(srcdir)/gtk/convWindow48.png   $(DIST)/branding/convWindow48.png
--	cp $(srcdir)/gtk/default.png        $(DIST)/branding/default.png
--	cp $(srcdir)/gtk/default16.png      $(DIST)/branding/default16.png
--	cp $(srcdir)/gtk/default48.png      $(DIST)/branding/default48.png
--endif
-diff --git a/other-licenses/branding/instantbird/background.png b/other-licenses/branding/instantbird/background.png
-deleted file mode 100644
-index 0b96d92ee355c1e3024125aa2d1ce2887e322557..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
-GIT binary patch
-literal 0
-Hc$@<O00001
-
-diff --git a/other-licenses/branding/instantbird/branding.nsi b/other-licenses/branding/instantbird/branding.nsi
-deleted file mode 100755
---- a/other-licenses/branding/instantbird/branding.nsi
-+++ /dev/null
-@@ -1,13 +0,0 @@
--# This Source Code Form is subject to the terms of the Mozilla Public
--# License, v. 2.0. If a copy of the MPL was not distributed with this
--# file, You can obtain one at http://mozilla.org/MPL/2.0/.
--
--# NSIS defines for release builds.
--
--# BrandFullNameInternal is used for some registry and file system values that
--# should not contain release that may be in the BrandFullName (e.g. Beta 1, etc.)
--!define BrandFullNameInternal "Instantbird"
--!define CompanyName           "Instantbird"
--!define URLInfoAbout          "http://www.instantbird.com/"
--!define URLUpdateInfo         "http://www.instantbird.com/"
--
-diff --git a/other-licenses/branding/instantbird/configure.sh b/other-licenses/branding/instantbird/configure.sh
-deleted file mode 100644
---- a/other-licenses/branding/instantbird/configure.sh
-+++ /dev/null
-@@ -1,5 +0,0 @@
--# This Source Code Form is subject to the terms of the Mozilla Public
--# License, v. 2.0. If a copy of the MPL was not distributed with this
--# file, You can obtain one at http://mozilla.org/MPL/2.0/.
--
--MOZ_APP_DISPLAYNAME=Instantbird
-diff --git a/other-licenses/branding/instantbird/content/about-credits.png b/other-licenses/branding/instantbird/content/about-credits.png
-deleted file mode 100755
-index a780410e0cbbac4cd8ec93416844f02d9bb87ef1..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
-GIT binary patch
-literal 0
-Hc$@<O00001
-
-diff --git a/other-licenses/branding/instantbird/content/about-footer.png b/other-licenses/branding/instantbird/content/about-footer.png
-deleted file mode 100644
-index 94d9124a3500e9b495b89a6a20d92085f53444d8..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
-GIT binary patch
-literal 0
-Hc$@<O00001
-
-diff --git a/other-licenses/branding/instantbird/content/about.png b/other-licenses/branding/instantbird/content/about.png
-deleted file mode 100755
-index b2ab1d9b7c170ee7d647fd52dc00e359c9278563..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
-GIT binary patch
-literal 0
-Hc$@<O00001
-
-diff --git a/other-licenses/branding/instantbird/content/icon64.png b/other-licenses/branding/instantbird/content/icon64.png
-deleted file mode 100644
-index 4463dce379745d2ecf3de0468a59d5977f404110..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
-GIT binary patch
-literal 0
-Hc$@<O00001
-
-diff --git a/other-licenses/branding/instantbird/default16.png b/other-licenses/branding/instantbird/default16.png
-deleted file mode 100644
-index 1ef44d21fbf5d0854e569d4a03054001ea7a1260..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
-GIT binary patch
-literal 0
-Hc$@<O00001
-
-diff --git a/other-licenses/branding/instantbird/disk.icns b/other-licenses/branding/instantbird/disk.icns
-deleted file mode 100644
-index 24dee04f55794baeed47ca24d420d803a3bf936f..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
-GIT binary patch
-literal 0
-Hc$@<O00001
-
-diff --git a/other-licenses/branding/instantbird/dsstore b/other-licenses/branding/instantbird/dsstore
-deleted file mode 100755
-index f5079c58c35136c16e717389f0efb550e14db991..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
-GIT binary patch
-literal 0
-Hc$@<O00001
-
-diff --git a/other-licenses/branding/instantbird/gtk/blistWindow.png b/other-licenses/branding/instantbird/gtk/blistWindow.png
-deleted file mode 100644
-index 6a1a6c3dacd5a3f432602acd6b97b6aad400c420..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
-GIT binary patch
-literal 0
-Hc$@<O00001
-
-diff --git a/other-licenses/branding/instantbird/gtk/blistWindow16.png b/other-licenses/branding/instantbird/gtk/blistWindow16.png
-deleted file mode 100644
-index 73bd14a1e9c7b42a8111a464c4c66a7333d3a947..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
-GIT binary patch
-literal 0
-Hc$@<O00001
-
-diff --git a/other-licenses/branding/instantbird/gtk/blistWindow48.png b/other-licenses/branding/instantbird/gtk/blistWindow48.png
-deleted file mode 100644
-index 8264a4ec5f88ba456e1c94d064789d07170ce30b..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
-GIT binary patch
-literal 0
-Hc$@<O00001
-
-diff --git a/other-licenses/branding/instantbird/gtk/convWindow.png b/other-licenses/branding/instantbird/gtk/convWindow.png
-deleted file mode 100644
-index 529349bb6efde8fdaccf73b168d7725320b06010..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
-GIT binary patch
-literal 0
-Hc$@<O00001
-
-diff --git a/other-licenses/branding/instantbird/gtk/convWindow16.png b/other-licenses/branding/instantbird/gtk/convWindow16.png
-deleted file mode 100644
-index 08257b314c609de6cfdc7871e18e660f31d517c9..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
-GIT binary patch
-literal 0
-Hc$@<O00001
-
-diff --git a/other-licenses/branding/instantbird/gtk/convWindow48.png b/other-licenses/branding/instantbird/gtk/convWindow48.png
-deleted file mode 100644
-index 3b3cdabfc59079d55219fb73a34ebf9338256f62..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
-GIT binary patch
-literal 0
-Hc$@<O00001
-
-diff --git a/other-licenses/branding/instantbird/gtk/default.png b/other-licenses/branding/instantbird/gtk/default.png
-deleted file mode 100644
-index e2c9326116ba9e80a9847665f6a07886f0a4ad4f..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
-GIT binary patch
-literal 0
-Hc$@<O00001
-
-diff --git a/other-licenses/branding/instantbird/gtk/default16.png b/other-licenses/branding/instantbird/gtk/default16.png
-deleted file mode 100644
-index 1ef44d21fbf5d0854e569d4a03054001ea7a1260..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
-GIT binary patch
-literal 0
-Hc$@<O00001
-
-diff --git a/other-licenses/branding/instantbird/gtk/default48.png b/other-licenses/branding/instantbird/gtk/default48.png
-deleted file mode 100644
-index 56d2b459dd1f648dba4811ddb612e105249ce979..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
-GIT binary patch
-literal 0
-Hc$@<O00001
-
-diff --git a/other-licenses/branding/instantbird/instantbird.icns b/other-licenses/branding/instantbird/instantbird.icns
-deleted file mode 100644
-index fe522f0f04786bf26d4739f90c9d5432eb607bd6..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
-GIT binary patch
-literal 0
-Hc$@<O00001
-
-diff --git a/other-licenses/branding/instantbird/instantbird.ico b/other-licenses/branding/instantbird/instantbird.ico
-deleted file mode 100644
-index cd81a18bf063d1a81046dade3834f6bdc8e5c054..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
-GIT binary patch
-literal 0
-Hc$@<O00001
-
-diff --git a/other-licenses/branding/instantbird/jar.mn b/other-licenses/branding/instantbird/jar.mn
-deleted file mode 100644
---- a/other-licenses/branding/instantbird/jar.mn
-+++ /dev/null
-@@ -1,10 +0,0 @@
--# This Source Code Form is subject to the terms of the Mozilla Public
--# License, v. 2.0. If a copy of the MPL was not distributed with this
--# file, You can obtain one at http://mozilla.org/MPL/2.0/.
--
--instantbird.jar:
--% content branding %content/branding/
--	content/branding/about-credits.png	(content/about-credits.png)
--	content/branding/about-footer.png	(content/about-footer.png)
--	content/branding/about.png		(content/about.png)
--	content/branding/icon64.png		(content/icon64.png)
-diff --git a/other-licenses/branding/instantbird/locales/en-US/brand.dtd b/other-licenses/branding/instantbird/locales/en-US/brand.dtd
-deleted file mode 100644
---- a/other-licenses/branding/instantbird/locales/en-US/brand.dtd
-+++ /dev/null
-@@ -1,10 +0,0 @@
--<!-- This Source Code Form is subject to the terms of the Mozilla Public
--   - License, v. 2.0. If a copy of the MPL was not distributed with this
--   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
--
--<!-- release branding -->
--
--<!ENTITY  brandShortName        "Instantbird">
--<!ENTITY  brandFullName         "Instantbird">
--<!ENTITY  brandMotto            "'Cause witches can also type!">
--<!ENTITY  vendorShortName       "Instantbird">
-diff --git a/other-licenses/branding/instantbird/locales/en-US/brand.properties b/other-licenses/branding/instantbird/locales/en-US/brand.properties
-deleted file mode 100644
---- a/other-licenses/branding/instantbird/locales/en-US/brand.properties
-+++ /dev/null
-@@ -1,7 +0,0 @@
--# This Source Code Form is subject to the terms of the Mozilla Public
--# License, v. 2.0. If a copy of the MPL was not distributed with this
--# file, You can obtain one at http://mozilla.org/MPL/2.0/.
--
--brandShortName=Instantbird
--brandFullName=Instantbird
--vendorShortName=Instantbird
-diff --git a/other-licenses/branding/instantbird/locales/jar.mn b/other-licenses/branding/instantbird/locales/jar.mn
-deleted file mode 100755
---- a/other-licenses/branding/instantbird/locales/jar.mn
-+++ /dev/null
-@@ -1,10 +0,0 @@
--#filter substitution
--# This Source Code Form is subject to the terms of the Mozilla Public
--# License, v. 2.0. If a copy of the MPL was not distributed with this
--# file, You can obtain one at http://mozilla.org/MPL/2.0/.
--
--
--@AB_CD@.jar:
--% locale branding @AB_CD@ %locale/@AB_CD@/branding/
--	locale/@AB_CD@/branding/brand.dtd		(%brand.dtd)
--	locale/@AB_CD@/branding/brand.properties	(%brand.properties)
-diff --git a/other-licenses/branding/instantbird/locales/moz.build b/other-licenses/branding/instantbird/locales/moz.build
-deleted file mode 100644
---- a/other-licenses/branding/instantbird/locales/moz.build
-+++ /dev/null
-@@ -1,8 +0,0 @@
--# vim: set filetype=python:
--# This Source Code Form is subject to the terms of the Mozilla Public
--# License, v. 2.0. If a copy of the MPL was not distributed with this
--# file, You can obtain one at http://mozilla.org/MPL/2.0/.
--
--JAR_MANIFESTS += ['jar.mn']
--
--DEFINES['MOZ_DISTRIBUTION_ID_UNQUOTED'] = CONFIG['MOZ_DISTRIBUTION_ID']
-diff --git a/other-licenses/branding/instantbird/moz.build b/other-licenses/branding/instantbird/moz.build
-deleted file mode 100644
---- a/other-licenses/branding/instantbird/moz.build
-+++ /dev/null
-@@ -1,8 +0,0 @@
--# vim: set filetype=python:
--# This Source Code Form is subject to the terms of the Mozilla Public
--# License, v. 2.0. If a copy of the MPL was not distributed with this
--# file, You can obtain one at http://mozilla.org/MPL/2.0/.
--
--DIRS += ['locales']
--
--JAR_MANIFESTS += ['jar.mn']
-diff --git a/other-licenses/branding/instantbird/mozicon128.png b/other-licenses/branding/instantbird/mozicon128.png
-deleted file mode 100644
-index 4f10a67b0b234659d59f6cb1cdd4bffbe5cadd34..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
-GIT binary patch
-literal 0
-Hc$@<O00001
-
-diff --git a/other-licenses/branding/instantbird/mozicon16.xpm b/other-licenses/branding/instantbird/mozicon16.xpm
-deleted file mode 100644
---- a/other-licenses/branding/instantbird/mozicon16.xpm
-+++ /dev/null
-@@ -1,230 +0,0 @@
--/* This Source Code Form is subject to the terms of the Mozilla Public
-- * License, v. 2.0. If a copy of the MPL was not distributed with this
-- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
--
--/* XPM */
--static char *instantbird_16[] = {
--/* columns rows colors chars-per-pixel */
--"16 16 204 2",
--"   c #161E25",
--".  c #132636",
--"X  c #132638",
--"o  c #340000",
--"O  c #251925",
--"+  c #0F2F4D",
--"@  c #0C375C",
--"#  c #093A65",
--"$  c #093B68",
--"%  c #1F415F",
--"&  c #0F416C",
--"*  c #064175",
--"=  c #09497E",
--"-  c #1E4D6A",
--";  c #194E70",
--":  c #3E4150",
--">  c #27586D",
--",  c #316171",
--"<  c #5C3E36",
--"1  c #78462F",
--"2  c #53574F",
--"3  c #4D5F73",
--"4  c #466762",
--"5  c #4D637A",
--"6  c #5D6E7B",
--"7  c #6D674D",
--"8  c #6E6C56",
--"9  c #677C57",
--"0  c #6D6464",
--"q  c #797D74",
--"w  c #06559B",
--"e  c #0F5B91",
--"r  c #13548F",
--"t  c #0B68AB",
--"y  c #0969B4",
--"u  c #21598B",
--"i  c #2D5F85",
--"p  c #32628B",
--"a  c #266EA0",
--"s  c #2D72A1",
--"d  c #2C7BAA",
--"f  c #0F7ECB",
--"g  c #487186",
--"h  c #40789E",
--"j  c #537F85",
--"k  c #457DA9",
--"l  c #757E80",
--"z  c #788965",
--"x  c #3988B2",
--"c  c #1890D1",
--"v  c #19A2E6",
--"b  c #2A97C5",
--"n  c #21B3ED",
--"m  c #28B4EC",
--"M  c #2DBEEF",
--"N  c #27BDF0",
--"B  c #1CC5F4",
--"V  c #1EC6F4",
--"C  c #1CCDF7",
--"Z  c #1CCEF7",
--"A  c #1CD5FA",
--"S  c #3AC4D9",
--"D  c #2FCBE6",
--"F  c #2CCEE9",
--"G  c #29C5F2",
--"H  c #2CC5F2",
--"J  c #2ACDF6",
--"K  c #34C1F0",
--"L  c #36C9F3",
--"P  c #4481AD",
--"I  c #4C88B2",
--"U  c #42AAC5",
--"Y  c #44BADF",
--"T  c #58A1C6",
--"R  c #63B7DB",
--"E  c #72B2D3",
--"W  c #75BFE2",
--"Q  c #56C0BE",
--"!  c #7CC09B",
--"~  c #47D0F4",
--"^  c #63D9F5",
--"/  c #7ECFF0",
--"(  c #71D6E7",
--")  c #7AD1EF",
--"_  c #71D5F2",
--"`  c #8C583B",
--"'  c #83644C",
--"]  c #8B664D",
--"[  c #85704A",
--"{  c #877A59",
--"}  c #9B6B4A",
--"|  c #907747",
--" . c #997253",
--".. c #857161",
--"X. c #AB774F",
--"o. c #A47751",
--"O. c #AB7A51",
--"+. c #AD7951",
--"@. c #AC7B53",
--"#. c #B07C53",
--"$. c #B27E54",
--"%. c #8F8154",
--"&. c #8F8650",
--"*. c #8E9552",
--"=. c #979849",
--"-. c #98994A",
--";. c #93915F",
--":. c #939A56",
--">. c #909B5D",
--",. c #979E58",
--"<. c #949C5C",
--"1. c #9B9053",
--"2. c #989256",
--"3. c #989C52",
--"4. c #989D54",
--"5. c #989E55",
--"6. c #808370",
--"7. c #9E8B75",
--"8. c #989675",
--"9. c #99A660",
--"0. c #9CBD75",
--"q. c #B58156",
--"w. c #B28258",
--"e. c #B28259",
--"r. c #B3875F",
--"t. c #B6875B",
--"y. c #BD895C",
--"u. c #A18061",
--"i. c #A38261",
--"p. c #AE8C6D",
--"a. c #A9927D",
--"s. c #B38861",
--"d. c #B4936B",
--"f. c #B19170",
--"g. c #B49677",
--"h. c #A2A355",
--"j. c #A9B15E",
--"k. c #AFB55B",
--"l. c #B2AC56",
--"z. c #A3AE62",
--"x. c #A2B369",
--"c. c #A7B86A",
--"v. c #AEB668",
--"b. c #ADBA65",
--"n. c #AFC26A",
--"m. c #A3C97B",
--"M. c #A2CA7C",
--"N. c #A2CD7D",
--"B. c #A8C672",
--"V. c #B5C164",
--"C. c #B9C865",
--"Z. c #BDD27C",
--"A. c #C29061",
--"S. c #C59463",
--"D. c #C7A074",
--"F. c #D5A46E",
--"G. c #D6A56F",
--"H. c #DEAC72",
--"J. c #F2BE7F",
--"K. c #C0CB61",
--"L. c #CFC062",
--"P. c #DECF70",
--"I. c #D1D479",
--"U. c #D4D67A",
--"Y. c #FCE175",
--"T. c #FFE47D",
--"R. c #919C87",
--"E. c #83A49A",
--"W. c #96AD8B",
--"Q. c #9CAD91",
--"!. c #AF9C86",
--"~. c #83CEE8",
--"^. c #8BCCE4",
--"/. c #82D7EF",
--"(. c #8CD7E4",
--"). c #8CD4EB",
--"_. c #8AD8F2",
--"`. c #93D4EA",
--"'. c #96D8EC",
--"]. c #9FD5E9",
--"[. c #9BD9ED",
--"{. c #A5D6EA",
--"}. c #B3E3F2",
--"|. c #B5E2F2",
--" X c #C6B89D",
--".X c #DEB684",
--"XX c #E6BD89",
--"oX c #EBC088",
--"OX c #F4CE98",
--"+X c #EACDA1",
--"@X c #EDD1A2",
--"#X c #E8D6AF",
--"$X c #E8DAB6",
--"%X c #F8DEAE",
--"&X c #FFE789",
--"*X c #FFEA97",
--"=X c #FFEB9A",
--"-X c #FFEDA6",
--";X c #FFEEA8",
--":X c #FFEFAF",
--">X c #F5E1B4",
--",X c #F8EAC0",
--"<X c gray100",
--"1X c None",
--/* pixels */
--"1X1X1X1X1X1Xr I d P a 1X1X1X1X1X",
--"1X1X1X1Xk E ].) K '.^.T s 1X1X1X",
--"1X:X*XE.{.|.}._ B /.[.`.R e 1X1X",
--"-XT.P.W / _.L J ^ ~ H ).~.c = 1X",
--"&XY.j.U n N B Z A Z G M m v t 1X",
--"&XL.b.n.! Q S D F ( (.Y b x h < ",
--"=Xl.x.V.C.B.M.N.N.Z.U.6.a.+Xe.] ",
--";Xh.k.c.{ [ K.z.0.m.I.8.>Xs.H.u.",
--"1Xz 9.&.$Xg.;.q 7.R.W.Q.l 6 5 : ",
--"1Xg <.-.d.} O. Xp.XX@.0 f y w @ ",
--"1X% P -.&.G.o.u.D.q.r.5 u p i O ",
--"1X1X& , :.| 2.v.1.' !.#X@XXXy.1 ",
--"1X1X. * > *.3.4.5.8 >Xf..XA.S.+.",
--"1X1X1X. $ ; 9 =.-.7 >XOXt.F.J.X.",
--"1X1X1X1X  + # - 4 2 .. .$.$.q.` ",
--"1X1X1X1X1X1X1X      1X1X1X1Xo o "
--};
-diff --git a/other-licenses/branding/instantbird/mozicon50.xpm b/other-licenses/branding/instantbird/mozicon50.xpm
-deleted file mode 100644
---- a/other-licenses/branding/instantbird/mozicon50.xpm
-+++ /dev/null
-@@ -1,315 +0,0 @@
--/* This Source Code Form is subject to the terms of the Mozilla Public
-- * License, v. 2.0. If a copy of the MPL was not distributed with this
-- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
--
--/* XPM */
--static char *instantbird_48[] = {
--/* columns rows colors chars-per-pixel */
--"48 48 257 2",
--"   c black",
--".  c #1E161D",
--"X  c #161D25",
--"o  c #18192A",
--"O  c #162028",
--"+  c #132638",
--"@  c #340000",
--"#  c #3C0805",
--"$  c #310F12",
--"%  c #392E3D",
--"&  c #252230",
--"*  c #341822",
--"=  c #0D3457",
--"-  c #132C47",
--";  c #163150",
--":  c #0A3A65",
--">  c #053F73",
--",  c #133864",
--"<  c #2A2F48",
--"1  c #044174",
--"2  c #04447B",
--"3  c #094372",
--"4  c #18476B",
--"5  c #114870",
--"6  c #305C6E",
--"7  c #3A6369",
--"8  c #410D09",
--"9  c #44110C",
--"0  c #4C1A12",
--"q  c #441916",
--"w  c #511E15",
--"e  c #552619",
--"r  c #4A2016",
--"t  c #4C2825",
--"y  c #552B24",
--"u  c #5D3223",
--"i  c #5A3328",
--"p  c #573936",
--"a  c #48363A",
--"s  c #602E1E",
--"d  c #633323",
--"f  c #663828",
--"g  c #643D33",
--"h  c #602E20",
--"j  c #5A4332",
--"k  c #67442B",
--"l  c #674636",
--"z  c #73422C",
--"x  c #754734",
--"c  c #705534",
--"v  c #484752",
--"b  c #4C5461",
--"n  c #5A735A",
--"m  c #526E5D",
--"M  c #795748",
--"N  c #684F47",
--"B  c #756D48",
--"V  c #657572",
--"C  c #003399",
--"Z  c blue",
--"A  c #044A84",
--"S  c #044C8A",
--"D  c #044786",
--"F  c #055397",
--"G  c #16568A",
--"H  c #165993",
--"J  c #025288",
--"K  c #065BA3",
--"L  c #1A6199",
--"P  c #0862AA",
--"I  c #096AB4",
--"U  c #0F70B7",
--"Y  c #3D6989",
--"T  c #336F93",
--"R  c #3179AB",
--"E  c #0B7AC7",
--"W  c #567D97",
--"Q  c #7B8957",
--"!  c #779172",
--"~  c #008080",
--"^  c #3B86B3",
--"/  c #0D88DA",
--"(  c #1192DD",
--")  c #128AD3",
--"_  c #169AE2",
--"`  c #18A1E5",
--"'  c #1CACEA",
--"]  c #1BA6E8",
--"[  c #1DB3ED",
--"{  c #1DB8EF",
--"}  c #1DBCF0",
--"|  c #3498CE",
--" . c #36B2D5",
--".. c #24B8EC",
--"X. c #33B1E8",
--"o. c #1CC3F3",
--"O. c #1CCAF6",
--"+. c #1CCFF8",
--"@. c #1CD1F8",
--"#. c #3AC8D9",
--"$. c #29C5F2",
--"%. c #3ACBF3",
--"&. c #2ECCEE",
--"*. c #40819E",
--"=. c #4D8EB7",
--"-. c #53B4BC",
--";. c #74B498",
--":. c #58A2C5",
--">. c #42A0CC",
--",. c #53BEE8",
--"<. c #48B7E7",
--"1. c #73A9C3",
--"2. c #70AFCF",
--"3. c #539BC8",
--"4. c #74C5A3",
--"5. c #5AC7BC",
--"6. c #45C5EE",
--"7. c #45CBF1",
--"8. c #50CCF1",
--"9. c #65CAEB",
--"0. c #78D3EE",
--"q. c #71D2F0",
--"w. c #5BC6D1",
--"e. c #89583A",
--"r. c #895539",
--"t. c #80763F",
--"y. c #865D43",
--"u. c #8A6249",
--"i. c #876653",
--"p. c #976545",
--"a. c #997457",
--"s. c #8D7152",
--"d. c #A87953",
--"f. c #B27E54",
--"g. c #8F833C",
--"h. c #88874A",
--"j. c #818A54",
--"k. c #989748",
--"l. c #98994A",
--"z. c #94954A",
--"x. c #989C53",
--"c. c #989F58",
--"v. c #939852",
--"b. c #92904C",
--"n. c #93926D",
--"m. c #99A25B",
--"M. c #9DA156",
--"N. c #9AA964",
--"B. c #99A762",
--"V. c #9BB572",
--"C. c #9DBB75",
--"Z. c #98BB7C",
--"A. c #9BB26E",
--"S. c #AD8158",
--"D. c #B78559",
--"F. c #A29453",
--"G. c #B48E69",
--"H. c #A6A95C",
--"J. c #B0AF54",
--"K. c #ACB864",
--"L. c #A1BE75",
--"P. c #B3B664",
--"I. c #A6AC68",
--"U. c #BDC25D",
--"Y. c #A1C479",
--"T. c #A2CA7B",
--"R. c #AAC674",
--"E. c #B4C568",
--"W. c #B0CB7A",
--"Q. c #AFC368",
--"!. c #9DC57F",
--"~. c #C5B13F",
--"^. c #C59766",
--"/. c #CD9D6B",
--"(. c #C9BC48",
--"). c #C7BD4C",
--"_. c #D5A36D",
--"`. c #DCAB73",
--"'. c #D6AA77",
--"]. c #C6A078",
--"[. c #EDBA7C",
--"{. c #E4B278",
--"}. c #F1BD7E",
--"|. c #E1AE75",
--" X c #C8C956",
--".X c #D4C94A",
--"XX c #CFC74D",
--"oX c #C2C965",
--"OX c #C9C971",
--"+X c #CDD279",
--"@X c #CCD077",
--"#X c #D8CA77",
--"$X c #D2D479",
--"%X c #FFDF5D",
--"&X c #EDCE48",
--"*X c #FDDE63",
--"=X c #E9D36F",
--"-X c #FFE16A",
--";X c #FFE066",
--":X c #FFE273",
--">X c #FDE47D",
--",X c #AF9A84",
--"<X c #BAA587",
--"1X c #8CB0AC",
--"2X c #9BC78C",
--"3X c #93CDDA",
--"4X c #87CDE6",
--"5X c #8CD2E8",
--"6X c #8BD0E7",
--"7X c #85DBF2",
--"8X c #93D4E9",
--"9X c #9BDAEC",
--"0X c #98D8E9",
--"qX c #99DDF1",
--"wX c #A4DAEC",
--"eX c #AEDDEF",
--"rX c #ADE1F1",
--"tX c #A4E2F1",
--"yX c #B3E2F1",
--"uX c #BAE4F3",
--"iX c #93E0F1",
--"pX c #D2B58E",
--"aX c #EEBE83",
--"sX c #C7BFA3",
--"dX c #CFC68F",
--"fX c #D8D1B2",
--"gX c #D7C7A5",
--"hX c #EAC796",
--"jX c #F2C184",
--"kX c #F3C68B",
--"lX c #F4CC93",
--"zX c #F5CF98",
--"xX c #F5D29C",
--"cX c #EDC186",
--"vX c #E6D2A9",
--"bX c #F5D5A2",
--"nX c #F7D9A6",
--"mX c #F8DDAC",
--"MX c #F6DBAA",
--"NX c #EADBB6",
--"BX c #FEE581",
--"VX c #FFE78C",
--"CX c #FFE993",
--"ZX c #FFEB9B",
--"AX c #FFEEAC",
--"SX c #FFEDA5",
--"DX c #F9E2B3",
--"FX c #F9E6B9",
--"GX c #FFF1BA",
--"HX c #FBEDC2",
--"JX c #F0EAC7",
--"KX c #FBF2CA",
--"LX c #F6F1CE",
--"PX c #FBF7D2",
--"IX c #EFE8C5",
--"UX c gray100",
--"YX c None",
--/* pixels */
--"YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX",
--"YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXK D D D A A YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX",
--"YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXD G R =.2.2.| | 2.:.=.R H D D YXYXYXYXYXYXYXYXYXYXYXYXYXYXYX",
--"YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXZ G R 2.wXwXwXwX6.o...0X9XqXqX8X2.^ G D YXYXYXYXYXYXYXYXYXYXYXYXYX",
--"YXYXYXYXYXYXYXYXYXYXYXYXYXYXG =.0XeXeXrXeXtX0.} } } 9.qX9X9X0X8X8X8X:.H D YXYXYXYXYXYXYXYXYXYXYX",
--"YXYXYXYXYXYXYXYXYXYXYXYXD R 3XeXuXeXyXrXrXrXiX$.o.o.o.8.9X9X9X0X8X8X8X4X^ A YXYXYXYXYXYXYXYXYXYX",
--"YXYXYXYXYXYXYXYXYXYXHXT W eXeXuXeXyXyXyXyXrXrX$.o.o.o.q.wX9X9X0X0X8X8X5X6X2.G 2 YXYXYXYXYXYXYXYX",
--"YXYXYXYXYXYXAXZXVXBXpX1.yXyXuXeXuXuXyXyXyXrXtXO.o.O.o.%.9X9XqX0X8X8X8X5X6X0.0.L D YXYXYXYXYXYXYX",
--"YXYXYXYXAXCX-X:X:X#X1.yXuXuXuXuXuXuXyXyXyXrX8.O.+.O.%.&.7XqXqX9X0X8X8X5X6.,.<.) L J YXYXYXYXYXYX",
--"YXYXAXCX:X;X:X;X=X^ eXyXuXuXuXuXuX7X%.8.rXiX@.+.@.q.iX0.tXiX7.$.9.5X8X5X6X4X9._ ( J 2 YXYXYXYXYX",
--"YXAXCX:X%XBX*XBXn._ eXuX0.0.uXuXuXO.o.O.+.+.+.@.7XiXtX@.%.$.o.o.} 5X8X5X6X6X,._ _ ) D YXYXYXYXYX",
--"YXZX>X%XBX:X*XJ.;.X.eX0...{ 9.uX0.o.o.O.O.+.@.@.@.7.%.@.O.o.o.} } 8.5X5X5X6X4X<._ ) I D YXYXYXYX",
--"SXBX:X-XBX-X%Xm.A.| ' ' [ [ %.9.$.o.o.o.O.O.@.@.@.@.+.+.O.o.o.o.} { 6.4X,.6.X.` _ ( / J Z YXYXYX",
--"CXBX-X-XBX>X(.V.C.;.] ' [ [ { { o.o.o.o.O.O.+.@.@.@.+.O.O.o.o.o.o.{ [ ..' [ ' ` _ ( / I A YXYXYX",
--"VXBX:X;XBX#X(.K.C.L.4.' [ [ { { } o.o.o.O.O.+.+.@.+.O.O.o.o.$.q.9...{ [ [ ' ' _ ( / / ) S C YXYX",
--"VXBXBX%XBXH.K..XR.C.C.2X-...{ { } } o.O.O.O.O.O.+.O.O.%.7.o.$.0X0X9...[ ' ' ' ` ( / / ) P 2 YXYX",
--"VXBXBX*X-Xm.A.U.XXR.L.T.Y.!.4.5.<.o.o.o.@.@.+.O.O.o.O.7X9X0.8.0X0X0XX.' ' ' ] _ ) U U H G - @ @ ",
--"ZXBXBX>X&Xm.A.V. XXXQ.T.Y.L.R.T.Y.T.!.4.5.5.#.#.#.#.@.q.0X0XwX3XwX3X-.T 6 v a p M i.s.a.p.r.# 8 ",
--"SXBXBXBX(. XA.A.V.U..X XR.Y.Y.T.T.T.T.T.T.T.T.T.T.T.T.T.=X$X$X$X$X$Xn @ M JXPXGXFXMXxXlXD.w e.0 ",
--"AXBX>X:XJ.(.K.A.V.V.E.XX.XU.R.Y.T.T.T.T.T.T.T.T.T.T.T.T.$X$X$X$X$X#Xn.N M g gXFXMXxXkXd.s ^./.0 ",
--"YXCXBXBXc.J..XP.V.C.C.C.E..X.XJ.Q.T.T.T.T.T.T.T.T.T.T.T.T.$X$X$X$X$XOXp LX<Xy u.zXzXp.d _.}._.8 ",
--"YXAXBXBXH.B.J..XK.V.C.C.C.L.u 0 XX.X XW.T.T.T.T.T.T.T.T.T.T.@X$X#X+X@Xp KXHXvXi.w g f `.}.}.|.8 ",
--"YXYXVX=XH.B.B.XX.XK.C.C.C.j g q u XX.X.X.XoXE.Y.T.Y.T.T.T.W.$X$X+X+X#Xp HXDXMXzX/.y.|.}.}.}.[.8 ",
--"YXYXSX#XH.B.B.m.XX.XP.V.k N fXg n.c R.E. X.Xg.# k Q T.T.T.T.+X$X+X@X@Xi NXmXxXlXkXaX}.}.}.}.}.8 ",
--"YXYXYX#XP.m.B.N.A.).~.e M PXfXg GXi.B T.Y.Y.p y n.s.r c n.!.R.+X+X+X+Xp pXnXaXaX/.f.d.i.M l y # ",
--"YXYXYXdXP.c.m.B.B.A.0 ,XPXLXgXf DXmXg j.Y.V.a sXi HXDXpXc t V 2XOX#XOXN w $ $ * & < ; ; , , ; @ ",
--"YXYXYXYXn.H.c.m.B.N.B s.HXFXgXd nXbXcXe n.Q n.LXg <XDXMXxXaXp.y W 3X6X2.3.E E E I P K F S D = YX",
--"YXYXYXYXT I.c.m.m.B.B.e dXmXpXs lXlXjX`.e a IXKX<Xi mXxXzXkX}.[.p.e W 2.>.E E P P K F F S D = YX",
--"YXYXYXYX4 1Xc.c.m.m.B.Q i xX'.e jXaX}.}.f.l KXHXDXy ].xXlXaX}.}._.r.@ Y E U I K K F F D A A + YX",
--"YXYXYXYX- 1.! c.x.m.m.B.k S.{.s e e z p.d sXHXDXmXG.d kXaX^.p.s s u.r R I I P K K F S D A 1 o YX",
--"YXYXYXYXO T 1.Q x.m.m.m.c.q |.|.`./.f.e.8 NXFXDXnXhXe s e f e.^.|.f.< I P K K F F S L R 2 = YXYX",
--"YXYXYXYXYX, 1.T v.M.M.m.m.B d }.}.}.aX{.p.q M hXxXzXG.^._.{.[.}.aXy P P K K F F H 3.:.*.A + YXYX",
--"YXYXYXYXYX+ R G 6 x.x.x.m.m.c e.aX}.}.{.d S.F.k x `.jX}.}.z u f u t a % < % < < N b b < & # @ @ ",
--"YXYXYXYXYXo 4 G 2 6 x.x.x.x.m.u f.=Xf.e h.P.OXOXP.c z ^.}.e i ,XLXIXNXvXhXpXpX'.<X^.^.D.f.r.@ @ ",
--"YXYXYXYXYXYXO A 1 2 7 x.l.m.v.z.r k k m.m.m.K.OXOXOXH.k f 0 fXg a.LXFXFXDXmXnXxXlXkXaXaXf.e x @ ",
--"YXYXYXYXYXYX  - 2 1 2 7 l.l.l.m.g.s.x.x.x.m.m.H.P.P.M.m.v.$ PXfXN u.DXDXnXnXxXzXkXaXaXp.e D.p.@ ",
--"YXYXYXYXYXYXYXO = 1 1 1 6 z.l.x.x.l.x.x.x.x.x.x.x.x.x.x.x.q PXKXvXi.g nXnXxXzXkXaX[.z s ^.[.p.@ ",
--"YXYXYXYXYXYXYXYXX 3 1 1 1 5 Q l.l.l.l.x.l.x.x.x.x.x.x.x.x.q KXHXHXgXi.h aXzXkXaX|.s f /.[.}.e.@ ",
--"YXYXYXYXYXYXYXYXYXO 3 1 1 1 3 n k.k.l.l.l.l.l.l.l.l.l.l.l.q GXFXDXMXhXa.y pXaX/.0 p._.}.}.}.e.@ ",
--"YXYXYXYXYXYXYXYXYX  O : 1 1 1 1 7 z.k.l.l.l.k.l.l.z.l.l.z.q FXDXMXnXnXhXd.w p.w d.|.}.}.}.[.r.@ ",
--"YXYXYXYXYXYXYXYXYXYXYXX - 2 1 1 > 3 m z.l.z.k.k.k.k.l.l.h.t DXmXmXxXzXlXcXS.z ^.[.}.}.}.}.}.z @ ",
--"YXYXYXYXYXYXYXYXYXYXYXYXO + > 2 > > 1 5 m z.k.k.k.k.k.l.g.t mXnXxXzXkXjXjX[.`.}.}.}.}.}.}.}.z @ ",
--"YXYXYXYXYXYXYXYXYXYXYXYXYXo X + 1 2 > > 1 4 m j.k.k.g.l.g.i nXbXzXlXjXaX}.}.}.}.}.}.}.}.}.}.f @ ",
--"YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXO X + = 3 2 2 2 > 4 7 n Q h.$ M u.p.d.f.D.^./._.|.[.}.}.}.}.}.d @ ",
--"YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXX X X + - - = : 4 = = - O . $ $ @ @ @ # # # # # # 8 9 0 w 8 @ ",
--"YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXX X X X X X X X X O YXYXYXYXYXYXYXYXYXYXYXYXYXYX@ @ @ @ ",
--"YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX",
--"YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX"
--};
-diff --git a/other-licenses/branding/instantbird/splash.bmp b/other-licenses/branding/instantbird/splash.bmp
-deleted file mode 100644
-index 8437c651a84d4ad38d5f24b435b177abdf4abf61..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
-GIT binary patch
-literal 0
-Hc$@<O00001
-
-diff --git a/other-licenses/branding/instantbird/windows/blistWindow.ico b/other-licenses/branding/instantbird/windows/blistWindow.ico
-deleted file mode 100644
-index 09decf506c730abab35b0c3e09ed742dddc3ca59..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
-GIT binary patch
-literal 0
-Hc$@<O00001
-
-diff --git a/other-licenses/branding/instantbird/windows/convWindow.ico b/other-licenses/branding/instantbird/windows/convWindow.ico
-deleted file mode 100644
-index 63cdb4032e6817b8e0ee2f1b7d0b2fbcf6bc2b52..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
-GIT binary patch
-literal 0
-Hc$@<O00001
-
-diff --git a/other-licenses/branding/instantbird/windows/default.ico b/other-licenses/branding/instantbird/windows/default.ico
-deleted file mode 100644
-index cd81a18bf063d1a81046dade3834f6bdc8e5c054..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
-GIT binary patch
-literal 0
-Hc$@<O00001
-
-diff --git a/other-licenses/branding/instantbird/wizHeader.bmp b/other-licenses/branding/instantbird/wizHeader.bmp
-deleted file mode 100644
-index 525d9f620a489e01d2bea8d5681f999f1034e192..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
-GIT binary patch
-literal 0
-Hc$@<O00001
-
-diff --git a/other-licenses/branding/instantbird/wizHeaderRTL.bmp b/other-licenses/branding/instantbird/wizHeaderRTL.bmp
-deleted file mode 100644
-index d50ecd1202e3b5571fe46b032d471fc560be513b..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
-GIT binary patch
-literal 0
-Hc$@<O00001
-
-diff --git a/other-licenses/branding/instantbird/wizWatermark.bmp b/other-licenses/branding/instantbird/wizWatermark.bmp
-deleted file mode 100644
-index 81580ddac4da9e73458587646ffbdf93e0284f9a..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
-GIT binary patch
-literal 0
-Hc$@<O00001
-

+ 0 - 377
comm-esr60/comm-esr60/patches/1493513-64a1.patch

@@ -1,377 +0,0 @@
-# HG changeset patch
-# User aceman <acelists@atlas.sk>
-# Date 1537969860 -7200
-# Node ID 60dfc2e2e18c5de53cd2ba530d817707a70c5ba6
-# Parent  b137e561a92277d2b0184c76afedc1783e820e93
-Bug 1493513 - clean up migration of UI features. r=jorgk,mkmelin
-
-diff --git a/mail/app/profile/all-thunderbird.js b/mail/app/profile/all-thunderbird.js
---- a/mail/app/profile/all-thunderbird.js
-+++ b/mail/app/profile/all-thunderbird.js
-@@ -282,16 +282,18 @@ pref("mail.close_message_window.on_delet
- 
- // Number of lines of To/CC/BCC address headers to show before "more"
- // truncates the list.
- pref("mailnews.headers.show_n_lines_before_more", 1);
- 
- // We want to keep track of what items are appropriate in
- // XULStore.json. We use versioning to scrub out the things
- // that have become obsolete.
-+// The value will always be set by startup code and must not be changed
-+// here. A value of 0 means a new profile.
- pref("mail.ui-rdf.version", 0);
- 
- /////////////////////////////////////////////////////////////////
- // Overrides of the core mailnews.js and composer.js prefs
- /////////////////////////////////////////////////////////////////
- pref("mail.showCondensedAddresses", true); // show the friendly display name for people I know
- 
- pref("mailnews.attachments.display.start_expanded", false);
-diff --git a/mail/base/modules/mailMigrator.js b/mail/base/modules/mailMigrator.js
---- a/mail/base/modules/mailMigrator.js
-+++ b/mail/base/modules/mailMigrator.js
-@@ -107,38 +107,34 @@ var MailMigrator = {
-       currentUIVersion = Services.prefs.getIntPref(UI_VERSION_PREF);
-     } catch(ex) {}
- 
-     if (currentUIVersion >= UI_VERSION)
-       return;
- 
-     let xulStore = Cc["@mozilla.org/xul/xulstore;1"].getService(Ci.nsIXULStore);
- 
-+    let newProfile = (currentUIVersion == 0);
-+    if (newProfile) {
-+      // Collapse the main menu by default if the override pref
-+      // "mail.main_menu.collapse_by_default" is set to true.
-+      if (Services.prefs.getBoolPref("mail.main_menu.collapse_by_default")) {
-+        xulStore.setValue(MESSENGER_DOCURL, "mail-toolbar-menubar2", "autohide", "true");
-+      }
-+
-+      // Set to current version to skip all the migration below.
-+      currentUIVersion = UI_VERSION;
-+    }
-+
-     try {
-       // UI versions below 5 could only exist in an old profile with localstore.rdf
-       // file used for the XUL store. Since TB55 this file is no longer read.
-       // Since UI version 5, the xulstore.json file is being used, so we only
-       // support those version here, see bug 1371898.
- 
--      // However, there's a tiny left-over. For new profiles (running the entire
--      // migration) we need to autohide the menubar.
--
--      // In UI version 5, we add the AppMenu button to the mail toolbar and
--      // collapse the main menu by default if the user has no accounts
--      // set up (and the override pref "mail.main_menu.collapse_by_default"
--      // is set to true). Checking for 0 accounts is a hack, because we can't
--      // think of any better way of determining whether this profile is new
--      // or not.
--      if (currentUIVersion < 5) {
--        if (Services.prefs.getBoolPref("mail.main_menu.collapse_by_default") &&
--            MailServices.accounts.accounts.length == 0) {
--          xulStore.setValue(MESSENGER_DOCURL, "mail-toolbar-menubar2", "autohide", "true");
--        }
--      }
--
-       // In UI version 6, we move the otherActionsButton button to the
-       // header-view-toolbar.
-       if (currentUIVersion < 6) {
-         let cs = xulStore.getValue(MESSENGER_DOCURL, "header-view-toolbar", "currentset");
-         if (cs && !cs.includes("otherActionsButton")) {
-           // Put the otherActionsButton button at the end.
-           cs = cs + "," + "otherActionsButton";
-           xulStore.setValue(MESSENGER_DOCURL, "header-view-toolbar", "currentset", cs);
-@@ -181,18 +177,19 @@ var MailMigrator = {
-               detector == "ruprob" ||
-               detector == "ukprob")) {
-           // If the encoding detector pref value is not reachable from the UI,
-           // reset to default (varies by localization).
-           Services.prefs.clearUserPref("intl.charset.detector");
-         }
-       }
- 
-+      // This one is needed also in all new profiles.
-       // Add an expanded entry for All Address Books.
--      if (currentUIVersion < 10) {
-+      if (currentUIVersion < 10 || newProfile) {
-         const DIR_TREE_FILE = "directoryTree.json";
- 
-         // If the file exists, read its contents, prepend the "All ABs" URI
-         // and save it, else, just write the "All ABs" URI to the file.
-         let data = IOUtils.loadFileToString(DIR_TREE_FILE);
-         if (!data || data == "[]") {
-           data = "";
-         } else if (data.length > 0) {
-diff --git a/mail/test/mozmill/folder-tree-modes/test-mode-switching.js b/mail/test/mozmill/folder-tree-modes/test-mode-switching.js
---- a/mail/test/mozmill/folder-tree-modes/test-mode-switching.js
-+++ b/mail/test/mozmill/folder-tree-modes/test-mode-switching.js
-@@ -19,16 +19,17 @@ var unreadFolder;
- var favoriteFolder;
- var toggle_menu;
- var toggle_appmenu;
- var tree;
- var modeList_menu;
- var modeList_appmenu;
- var view_menu;
- var view_appmenu;
-+var menu_state;
- 
- function setupModule(module) {
-   for (let lib of MODULE_REQUIRES) {
-     collector.getModule(lib).installInto(module);
-   }
- 
-   rootFolder = inboxFolder.server.rootFolder;
- 
-@@ -51,16 +52,18 @@ function setupModule(module) {
-   view_menu = mc.eid("menu_View");
-   view_menupopup = mc.e("menu_View_Popup");
-   appmenu = mc.eid("button-appmenu");
-   appmenupopup = mc.e("appmenu-popup");
- 
-   tree = mc.folderTreeView;
- 
-   select_no_folders();
-+  // Main menu is needed for this whole test file.
-+  menu_state = toggle_main_menu(true);
- }
- 
- /**
-  * Check if both "Compact view" checkboxes in menu are of the expected state.
-  *
-  * @param aChecked  Boolean whether checkbox should be checked or not.
-  * @param aDisabled  Optional boolean whether the menuitem should be disabled..
-  */
-@@ -270,9 +273,10 @@ function test_toggling_modes() {
-   subtest_switch_to_smart_folders(true);
-   subtest_switch_to_all_folders(true);
- }
- 
- function teardownModule() {
-   tree.mode = "all";
-   inboxFolder.propagateDelete(unreadFolder, true, null);
-   inboxFolder.propagateDelete(favoriteFolder, true, null);
-+  toggle_main_menu(menu_state);
- }
-diff --git a/mail/test/mozmill/folder-widget/test-message-filters.js b/mail/test/mozmill/folder-widget/test-message-filters.js
---- a/mail/test/mozmill/folder-widget/test-message-filters.js
-+++ b/mail/test/mozmill/folder-widget/test-message-filters.js
-@@ -89,28 +89,25 @@ function test_customize_toolbar_doesnt_d
- {
-   be_in_folder(folderA);
- 
-   /**
-    * Get the getAllNewMessages menu and check the number of items.
-    */
-   function check_getAllNewMsgMenu() {
-     wait_for_window_focused(mc.window);
--    mc.click(mc.eid("menu_File"), 5, 5);
--    wait_for_popup_to_open(mc.e("menu_FilePopup"));
-+    mc.click(mc.eid("button-appmenu"), 5, 5);
-+    let popups = mc.click_menus_in_sequence(mc.e("appmenu-popup"),
-+                                            [ { id: "appmenu_File" },
-+                                              { id: "appmenu_getNewMsgFor" } ], true);
- 
--    let menu = mc.eid("menu_getAllNewMsg");
--    mc.click(menu, 5, 5);
--    wait_for_popup_to_open(mc.e("menu_getAllNewMsgPopup"));
--
--    assert_equals(menu.node.itemCount, 5,
-+    assert_equals(popups[popups.length - 1].children.length, 5,
-                   "Incorrect number of items for GetNewMessages before customization");
- 
--    close_popup(mc, mc.eid("menu_getAllNewMsgPopup"));
--    close_popup(mc, mc.eid("menu_FilePopup"));
-+    mc.close_popup_sequence(popups);
-   }
- 
-   check_getAllNewMsgMenu();
- 
-   plan_for_new_window("mailnews:customizeToolbar");
-   // Open the customization dialog.
-   mc.rightClick(mc.eid("mail-bar3"));
-   mc.click(mc.eid("CustomizeMailToolbar"));
-diff --git a/mail/test/mozmill/message-window/test-autohide-menubar.js b/mail/test/mozmill/message-window/test-autohide-menubar.js
---- a/mail/test/mozmill/message-window/test-autohide-menubar.js
-+++ b/mail/test/mozmill/message-window/test-autohide-menubar.js
-@@ -23,18 +23,17 @@ function setupModule(module) {
-   abh.installInto(module);
-   let ch = collector.getModule("compose-helpers");
-   ch.installInto(module);
- 
-   menuFolder = create_folder("menuFolder");
-   make_new_sets_in_folder(menuFolder, [{count: 1}]);
- 
-   // Make the menubar not autohide by default.
--  let menubar = mc.e("mail-toolbar-menubar2");
--  menubar.setAttribute("autohide", false);
-+  menuState = toggle_main_menu(true);
- }
- 
- /**
-  * Set the autohide attribute of the menubar.
-  *
-  * @param controller the mozmill controller for the window
-  * @param elem the element to click on (usually the menubar)
-  * @param hide true to hide, false otherwise
-@@ -103,8 +102,12 @@ test_autohidden_menubar_compose_window.E
- 
- function test_autohidden_menubar_address_book() {
-   let abc = open_address_book_window();
-   let menubar = abc.e("addrbook-toolbar-menubar2");
- 
-   help_test_autohide(abc, menubar);
- }
- test_autohidden_menubar_address_book.EXCLUDED_PLATFORMS = ["darwin", "linux"];
-+
-+function teardownModule() {
-+  toggle_main_menu(menuState);
-+}
-diff --git a/mail/test/mozmill/override-main-menu-collapse/wrapper.py b/mail/test/mozmill/override-main-menu-collapse/wrapper.py
---- a/mail/test/mozmill/override-main-menu-collapse/wrapper.py
-+++ b/mail/test/mozmill/override-main-menu-collapse/wrapper.py
-@@ -7,16 +7,18 @@
- # any Mozmill tests.
- 
- import os
- import shutil
- import sys
- 
- # We don't want any accounts for these tests.
- NO_ACCOUNTS = True
-+# Do not force enable main menu bar, we'll set our own value in prefs.js.
-+DEFAULT_MENUBAR = True
- 
- def on_profile_created(profiledir):
-     """
-     On profile creation, this copies prefs.js from the current folder to
-     profile_dir/preferences. This is a somewhat undocumented feature -- anything
-     in profile_dir/preferences gets treated as a default pref, which is what we
-     want here.
-     """
-diff --git a/mail/test/mozmill/runtest.py b/mail/test/mozmill/runtest.py
---- a/mail/test/mozmill/runtest.py
-+++ b/mail/test/mozmill/runtest.py
-@@ -122,16 +122,22 @@ class ThunderTestProfile(mozprofile.Thun
-         # are still serviced; they just should not result in any matches.)
-         'mailnews.database.global.logging.upstream': True,
-         # Do not allow fonts to be upgraded
-         'mail.font.windows.version': 2,
-         # No, we don't want to be prompted about Telemetry
-         'toolkit.telemetry.prompted': 999,
-         }
- 
-+    menubar_preferences = {
-+        # Many tests operate items in the main menu, so keep it shown
-+        # until they are migrated to appmenu.
-+        'mail.main_menu.collapse_by_default': False,
-+    }
-+
-     # Dummied up local accounts to stop the account wizard
-     account_preferences = {
-         'mail.account.account1.server' :  "server1",
-         'mail.account.account2.identities' :  "id1,id2",
-         'mail.account.account2.server' :  "server2",
-         'mail.account.account3.server' :  "server3",
-         'mail.accountmanager.accounts' :  "account1,account2,account3",
-         'mail.accountmanager.defaultaccount' :  "account2",
-@@ -177,16 +183,22 @@ class ThunderTestProfile(mozprofile.Thun
-         'messenger.accounts' :  "account1",
-     }
- 
-     def __init__(self, *args, **kwargs):
-         kwargs['profile'] = self.get_profile_dir()
-         super(ThunderTestProfile, self).__init__(*args, **kwargs)
-         self.set_preferences(self.preferences)
- 
-+        if (wrapper is not None and hasattr(wrapper, "DEFAULT_MENUBAR")
-+            and wrapper.DEFAULT_MENUBAR):
-+            pass
-+        else:
-+            self.set_preferences(self.menubar_preferences)
-+
-         if (wrapper is not None and hasattr(wrapper, "NO_ACCOUNTS")
-             and wrapper.NO_ACCOUNTS):
-             pass
-         else:
-             self.set_preferences(self.account_preferences)
- 
- 
-     def get_profile_dir(self):
-diff --git a/mail/test/mozmill/shared-modules/test-folder-display-helpers.js b/mail/test/mozmill/shared-modules/test-folder-display-helpers.js
---- a/mail/test/mozmill/shared-modules/test-folder-display-helpers.js
-+++ b/mail/test/mozmill/shared-modules/test-folder-display-helpers.js
-@@ -2818,16 +2818,29 @@ function assert_pane_layout(aLayout) {
- /**
-  * Change that the current mail pane layout
-  */
- 
- function set_pane_layout(aLayout) {
-   Services.prefs.setIntPref("mail.pane_config.dynamic", aLayout);
- }
- 
-+/**
-+ * Toggle visibility of the Main menu bar.
-+ *
-+ * @param aEnabled {boolean}  Whether the menu should be shown or not.
-+ */
-+function toggle_main_menu(aEnabled = true) {
-+  let menubar = mc.e("mail-toolbar-menubar2");
-+  let state = menubar.getAttribute("autohide") != "true";
-+  menubar.setAttribute("autohide", !aEnabled);
-+  mc.sleep(0);
-+  return state;
-+}
-+
- /** exported from messageInjection */
- var make_new_sets_in_folders;
- var make_new_sets_in_folder;
- var add_sets_to_folders;
- var delete_message_set;
- var make_folder_with_sets;
- var make_virtual_folder;
- var SyntheticPartLeaf;
-diff --git a/mail/test/mozmill/startup-firstrun/test-menubar-collapsed.js b/mail/test/mozmill/startup-firstrun/test-menubar-collapsed.js
---- a/mail/test/mozmill/startup-firstrun/test-menubar-collapsed.js
-+++ b/mail/test/mozmill/startup-firstrun/test-menubar-collapsed.js
-@@ -25,17 +25,17 @@ function test_main_menu_collapsed() {
-     observe: function(aSubject, aTopic, aData) {
-       if (aTopic == "mail-startup-done") {
-         done = true;
-       }
-     }
-   };
-   Services.obs.addObserver(observer, "mail-startup-done");
- 
--  // Since no accounts were set up, and the account provisoner was disabled
-+  // Since no accounts were set up, and the account provisioner was disabled
-   // in prefs.js, the wizard will show up. Find it, and close it. This will
-   // cause mail-startup-done to eventually be fired.
-   let wizard = wait_for_existing_window("mail:autoconfig");
-   close_window(wizard);
- 
-   // Spin the event loop until mail-startup-done is fired.
-   mc.waitFor(() => done);
- 
-diff --git a/mail/test/mozmill/startup-firstrun/wrapper.py b/mail/test/mozmill/startup-firstrun/wrapper.py
---- a/mail/test/mozmill/startup-firstrun/wrapper.py
-+++ b/mail/test/mozmill/startup-firstrun/wrapper.py
-@@ -7,16 +7,18 @@
- # any Mozmill tests.
- 
- import os
- import shutil
- import sys
- 
- # We don't want any accounts for these tests.
- NO_ACCOUNTS = True
-+# Do not force enable main menu bar (keep the default).
-+DEFAULT_MENUBAR = True
- 
- def on_profile_created(profiledir):
-     """
-     On profile creation, this copies prefs.js from the current folder to
-     profile_dir/preferences. This is a somewhat undocumented feature -- anything
-     in profile_dir/preferences gets treated as a default pref, which is what we
-     want here.
-     """

+ 0 - 62
comm-esr60/comm-esr60/patches/1497795-67a1.patch

@@ -1,62 +0,0 @@
-# HG changeset patch
-# User aleca <alessandro@thunderbird.net>
-# Date 1552352736 25200
-# Node ID a8263af5473c7b8e88d0f86486bb3aefa8afb9ef
-# Parent  4c1f7ca2a87e4200e15e214db5420e0be42490d8
-Bug 1497795 - add confirmation for marking all folders as read. r=mkmelin
-
-diff --git a/mail/base/content/mailWindowOverlay.js b/mail/base/content/mailWindowOverlay.js
---- a/mail/base/content/mailWindowOverlay.js
-+++ b/mail/base/content/mailWindowOverlay.js
-@@ -2400,18 +2400,25 @@ function MsgMarkAllRead()
-   let folders = gFolderTreeView.getSelectedFolders();
-   for (let i = 0; i < folders.length; i++)
-     folders[i].markAllMessagesRead(msgWindow);
- }
- 
- /**
-  * Go through each selected server and mark all its folders read.
-  */
--function MsgMarkAllFoldersRead()
--{
-+function MsgMarkAllFoldersRead() {
-+  const bundle = document.getElementById("bundle_messenger");
-+
-+  if (!Services.prompt.confirm(window,
-+                               bundle.getString("confirmMarkAllFoldersReadTitle"),
-+                               bundle.getString("confirmMarkAllFoldersReadMessage"))) {
-+    return;
-+  }
-+
-   const selectedFolders = gFolderTreeView.getSelectedFolders();
-   const selectedServers = selectedFolders.filter(folder => folder.isServer);
- 
-   selectedServers.forEach(function(server) {
-     const folders = server.rootFolder.descendants;
-     for (let folder of fixIterator(folders, Ci.nsIMsgFolder)) {
-       folder.markAllMessagesRead(msgWindow);
-     }
-diff --git a/mail/locales/en-US/chrome/messenger/messenger.properties b/mail/locales/en-US/chrome/messenger/messenger.properties
---- a/mail/locales/en-US/chrome/messenger/messenger.properties
-+++ b/mail/locales/en-US/chrome/messenger/messenger.properties
-@@ -317,16 +317,20 @@ feedsAcctType=Feeds
- # LOCALIZATION NOTE(nocachedbodytitle): Do not translate "<TITLE>" or "</TITLE>" in the line below
- nocachedbodytitle=<TITLE>Go Online to View This Message</TITLE>\n
- 
- # mailWindowOverlay.js
- confirmUnsubscribeTitle=Confirm Unsubscribe
- confirmUnsubscribeText=Are you sure you want to unsubscribe from %S?
- confirmUnsubscribeManyText=Are you sure you want to unsubscribe from these newsgroups?
- restoreAllTabs=Restore All Tabs
-+
-+confirmMarkAllFoldersReadTitle=Mark All Folders Read
-+confirmMarkAllFoldersReadMessage=Are you sure you want to mark all messages in all folders of this account as read?
-+
- # LOCALIZATION NOTE(junkBarMessage): %S is brand
- junkBarMessage=%S thinks this message is Junk mail.
- junkBarButton=Not Junk
- junkBarButtonKey=N
- junkBarInfoButton=Learn More
- junkBarInfoButtonKey=L
- 
- # LOCALIZATION NOTE(remoteContentBarMessage): %S is brand

+ 0 - 30
comm-esr60/comm-esr60/patches/1498483-64a1.patch

@@ -1,30 +0,0 @@
-# HG changeset patch
-# User Jorg K <jorgk@jorgk.com>
-# Date 1539469868 -7200
-# Node ID 445acd6b34fe5e3a8e3a7e2a2a634c9f167954c6
-# Parent  147e5e18d4ca65efd9f186a9067199f784474210
-Bug 1498483 - saving current composition doesn't overwrite existing file. r=aceman a=jorgk
-
-diff --git a/editor/ui/composer/content/ComposerCommands.js b/editor/ui/composer/content/ComposerCommands.js
---- a/editor/ui/composer/content/ComposerCommands.js
-+++ b/editor/ui/composer/content/ComposerCommands.js
-@@ -840,17 +840,17 @@ function PromptForSaveLocation(aDoSaveAs
-       SetFilePickerDirectory(fp, aEditorType);
-     }
-   }
-   catch(e) {}
- 
-   return new Promise(resolve => {
-     fp.open(rv => {
-       dialogResult.filepickerClick = rv;
--      if (rv == nsIFilePicker.returnOK && fp.file) {
-+      if (rv != nsIFilePicker.returnCancel && fp.file) {  // Allow OK and replace.
-         // reset urlstring to new save location
-         dialogResult.resultingURIString = fileHandler.getURLSpecFromFile(fp.file);
-         dialogResult.resultingLocalFile = fp.file;
-         SaveFilePickerDirectory(fp, aEditorType);
-         resolve(dialogResult);
-       }
-       else if ("gFilePickerDirectory" in window && gFilePickerDirectory) {
-         fp.displayDirectory = gFilePickerDirectory;
-

+ 0 - 129
comm-esr60/comm-esr60/patches/1507754-2-67a1.patch

@@ -1,129 +0,0 @@
-# HG changeset patch
-# User Rob Lemley <rob@thunderbird.net>
-# Date 1566869471 14400
-# Node ID 001cc51ad0c711f8411dd86d9fe05cc593f261a8
-# Parent  4f8c74e112a8ebf9c13f7a20e8058d44200c25ab
-Bug 1507754 - Generate source-repo.h with complete source repository data. r=darktrojan a=jorgk
-
-source-repo.h is the file where Thunderbird gets source repository information.
-It gets used in the build process, and it used in the app most notably on
-about:buildconfig.
-
-In order to accomodate code in the Mozilla tree which is going to look for
-MOZ_SOURCE_REPO and MOZ_SOURCE_CHANGESET and assume they are for the app being
-built, continue to #define those and also #define values specific to each
-repository. This will keep the Thunderbird code that needs to use source-repo.h
-easier to read.
-
-This works because comm/mail/app.mozbuild is "included" from the toplevel
-moz.build file and therefore is part of the same context. Just overwrite
-GENERATED_FILES['source-repo.h'].script with our new script. The EXPORTS
-and GENERATED_FILES pieces carry over and do not need to be part of app.mozbuild.
-Note that the path to our script is relative to $topsrcdir not app.mozbuild
-because it's included, not addded with DIR.
-
-diff --git a/build/source_repos.py b/build/source_repos.py
-new file mode 100644
---- /dev/null
-+++ b/build/source_repos.py
-@@ -0,0 +1,54 @@
-+#  This Source Code Form is subject to the terms of the Mozilla Public
-+#  License, v. 2.0. If a copy of the MPL was not distributed with this
-+#  file, You can obtain one at http://mozilla.org/MPL/2.0/.
-+
-+from __future__ import print_function, unicode_literals
-+
-+import sys
-+import os
-+
-+import buildconfig
-+
-+
-+def source_repo_header(output):
-+    """
-+    Appends the Gecko source repository information to source-repo.h
-+    This information should be set in buildconfig.substs by moz.configure
-+    """
-+    gecko_repo = buildconfig.substs.get('MOZ_GECKO_SOURCE_REPO', None)
-+    gecko_rev = buildconfig.substs.get('MOZ_GECKO_SOURCE_CHANGESET', None)
-+    comm_repo = buildconfig.substs.get('MOZ_COMM_SOURCE_REPO', None)
-+    comm_rev = buildconfig.substs.get('MOZ_COMM_SOURCE_CHANGESET', None)
-+
-+    if None in [gecko_repo, gecko_rev, comm_repo, comm_rev]:
-+        Exception("Source information not found in buildconfig."
-+                  "Try setting GECKO_HEAD_REPOSITORY and GECKO_HEAD_REV"
-+                  "as well as MOZ_SOURCE_REPO and MOZ_SOURCE_CHANGESET"
-+                  "environment variables and running mach configure again.")
-+
-+    output.write('#define MOZ_GECKO_SOURCE_STAMP {}\n'.format(gecko_rev))
-+    output.write('#define MOZ_COMM_SOURCE_STAMP {}\n'.format(comm_rev))
-+    output.write('#define MOZ_SOURCE_STAMP {}\n'.format(comm_rev))
-+
-+    if buildconfig.substs.get('MOZ_INCLUDE_SOURCE_INFO'):
-+        gecko_source_url = '%s/rev/%s' % (gecko_repo, gecko_rev)
-+        comm_source_url = '%s/rev/%s' % (comm_repo, comm_rev)
-+        output.write('#define MOZ_GECKO_SOURCE_REPO {}\n'.format(gecko_repo))
-+        output.write('#define MOZ_GECKO_SOURCE_URL {}\n'.format(gecko_source_url))
-+        output.write('#define MOZ_COMM_SOURCE_REPO {}\n'.format(comm_repo))
-+        output.write('#define MOZ_COMM_SOURCE_URL {}\n'.format(comm_source_url))
-+        output.write('#define MOZ_SOURCE_REPO {}\n'.format(comm_repo))
-+        output.write('#define MOZ_SOURCE_URL {}\n'.format(comm_source_url))
-+
-+
-+def main(args):
-+    if args:
-+        func = globals().get(args[0])
-+        if func:
-+            return func(sys.stdout, *args[2:])
-+
-+    return 1
-+
-+
-+if __name__ == '__main__':
-+    sys.exit(main(sys.argv[1:]))
-diff --git a/mail/app.mozbuild b/mail/app.mozbuild
---- a/mail/app.mozbuild
-+++ b/mail/app.mozbuild
-@@ -1,16 +1,18 @@
- # vim: set filetype=python:
- # This Source Code Form is subject to the terms of the Mozilla Public
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
- # Note that paths in this file are relative to the top directory, which may be
- # m-c or c-c.
- 
-+GENERATED_FILES['source-repo.h'].script = 'comm/build/source_repos.py:source_repo_header'
-+
- include('../mailnews/mailnews.mozbuild')
- 
- DIRS += ['/%s/mail/components' % CONFIG['commreltopsrcdir']]
- 
- include('/%s/toolkit/toolkit.mozbuild' % CONFIG['mozreltopsrcdir'])
- 
- if CONFIG['MOZ_EXTENSIONS']:
-     DIRS += ['/%s/extensions' % CONFIG['mozreltopsrcdir']]
-diff --git a/mail/configure.in b/mail/configure.in
---- a/mail/configure.in
-+++ b/mail/configure.in
-@@ -1,14 +1,20 @@
- dnl -*- Mode: Autoconf; tab-width: 2; indent-tabs-mode: nil; -*-
- dnl vi: set tabstop=2 shiftwidth=2 expandtab:
- dnl This Source Code Form is subject to the terms of the Mozilla Public
- dnl License, v. 2.0. If a copy of the MPL was not distributed with this
- dnl file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
-+dnl Things we might need for setting source repos
-+AC_SUBST(MOZ_GECKO_SOURCE_REPO)
-+AC_SUBST(MOZ_GECKO_SOURCE_CHANGESET)
-+AC_SUBST(MOZ_COMM_SOURCE_REPO)
-+AC_SUBST(MOZ_COMM_SOURCE_CHANGESET)
-+
- dnl Things we need to carry from confvars.sh
- AC_SUBST(THUNDERBIRD_VERSION)
- AC_SUBST(MOZ_BUNDLED_FONTS)
- 
- dnl More things we need to carry from confvars.sh
- AC_SUBST(moztopsrcdir)
- AC_SUBST(commtopsrcdir)
- AC_SUBST(mozreltopsrcdir)

+ 0 - 37
comm-esr60/comm-esr60/patches/1507754-3-67a1.patch

@@ -1,37 +0,0 @@
-# HG changeset patch
-# User Rob Lemley <rob@thunderbird.net>
-# Date 1566869575 14400
-# Node ID 97517e9bd4f8e2fa4dfbe0bd70e613dbaaf30936
-# Parent  65ed59a2e20dac6a62b3b8c5cda4076e4459ed15
-Bug 1507754 - Update platform.ini with correct Repository URL as well as changeset. r=darktrojan a=jorgk
-
-Update the sed command to also swap in the Mozilla repository URL along with the changeset.
-
-diff --git a/mail/Makefile.in b/mail/Makefile.in
---- a/mail/Makefile.in
-+++ b/mail/Makefile.in
-@@ -11,18 +11,17 @@ ifdef MAKENSISU
- libs::
- 	$(MAKE) -C installer/windows uninstaller
- ifdef MOZ_MAINTENANCE_SERVICE
- 	$(MAKE) -C installer/windows maintenanceservice_installer
- endif
- endif
- 
- 
--# As a fallout from bug 1247162, the sourcestamp in application.ini and
-+# As fallout from bug 1247162, the sourcestamp in application.ini and
- # platform.ini are the same, which isn't a problem for Firefox, but
- # it's not right for anything else. So we correct platform.ini here.
--
--MOZ_REV=$(shell hg -R "$(moztopsrcdir)" parent --template="{node}" 2>/dev/null)
--
-+# The first expression is a URL with / characters, so use _ for a delimiter
- libs:: $(DIST)/bin/platform.ini
--	sed -e "s/^\(SourceStamp=\).*/\1$(MOZ_REV)/" $(DIST)/bin/platform.ini \
--		> $(DIST)/bin/platform.ini~
--	mv -f $(DIST)/bin/platform.ini~ $(DIST)/bin/platform.ini
-+	sed -i -e "s_^\(SourceRepository=\).*_\1$(MOZ_GECKO_SOURCE_REPO)_" \
-+		-e "s/^\(SourceStamp=\).*/\1$(MOZ_GECKO_SOURCE_CHANGESET)/" \
-+		$(DIST)/bin/platform.ini
-+

+ 0 - 70
comm-esr60/comm-esr60/patches/1507754-4-67a1.patch

@@ -1,70 +0,0 @@
-# HG changeset patch
-# User Rob Lemley <rob@thunderbird.net>
-# Date 1567017290 14400
-# Node ID b1785e6f307c6ab79f2ee515c151cf0f93146b2d
-# Parent  63d9184e282bc330127f22cea3887b065ef3944b
-Bug 1507754 - Generate proper sourcestamp.txt for source tar files. r=darktrojan a=jorgk
-
-Build correct sourcestamp.txt in source code tar files.
-This builds upon previous commits in this bug using the same urls and revision
-hashes that were calculated in the configure process rather than trying to
-figure it out again, incorrectly.
-
-This does run as a separate task in Taskcluster, but "mach configure" is one of
-the steps that runs before "make source-package" so we can use
-"import buildconfig" for this.
-
-diff --git a/build/source_repos.py b/build/source_repos.py
---- a/build/source_repos.py
-+++ b/build/source_repos.py
-@@ -4,16 +4,31 @@
- 
- from __future__ import print_function, unicode_literals
- 
- import sys
- import os
- 
- import buildconfig
- 
-+sourcestamp_tmpl = """{buildid}
-+{comm_repo}/rev/{comm_rev}
-+{gecko_repo}/rev/{gecko_rev}
-+"""
-+
-+
-+def gen_sourcestamp(output):
-+    data = dict(buildid=os.environ.get('MOZ_BUILD_DATE', 'unknown'),
-+        gecko_repo=buildconfig.substs.get('MOZ_GECKO_SOURCE_REPO', None),
-+        gecko_rev=buildconfig.substs.get('MOZ_GECKO_SOURCE_CHANGESET', None),
-+        comm_repo=buildconfig.substs.get('MOZ_COMM_SOURCE_REPO', None),
-+        comm_rev=buildconfig.substs.get('MOZ_COMM_SOURCE_CHANGESET', None))
-+
-+    output.write(sourcestamp_tmpl.format(**data))
-+
- 
- def source_repo_header(output):
-     """
-     Appends the Gecko source repository information to source-repo.h
-     This information should be set in buildconfig.substs by moz.configure
-     """
-     gecko_repo = buildconfig.substs.get('MOZ_GECKO_SOURCE_REPO', None)
-     gecko_rev = buildconfig.substs.get('MOZ_GECKO_SOURCE_CHANGESET', None)
-diff --git a/mail/installer/Makefile.in b/mail/installer/Makefile.in
---- a/mail/installer/Makefile.in
-+++ b/mail/installer/Makefile.in
-@@ -180,13 +180,11 @@ FINDPATH=bin
- endif
- 
- package-compare:: $(MOZ_PKG_MANIFEST)
- 	cd $(DIST); find $(PKGCOMP_FIND_OPTS) '$(FINDPATH)' -type f | sort > bin-list.txt
- 	$(call py_action,preprocessor,$(DEFINES) $(ACDEFINES) $(MOZ_PKG_MANIFEST)) | grep '^$(BINPATH)' | sed -e 's/^\///' | sort > $(DIST)/pack-list.txt
- 	-diff -u $(DIST)/pack-list.txt $(DIST)/bin-list.txt
- 	rm -f $(DIST)/pack-list.txt $(DIST)/bin-list.txt
- 
--# The comm-* source stamp is already there.
--PLATFORM_SOURCE_STAMP = $(firstword $(shell hg -R "$(moztopsrcdir)" parent --template="{node}\n" 2>/dev/null))
--PLATFORM_SOURCE_REPO = $(shell hg -R "$(moztopsrcdir)" showconfig paths.default 2>/dev/null | sed -e "s/^ssh:/https:/")
-+# Overwrite the one made by Firefox with our own.
- make-sourcestamp-file::
--	@echo "$(PLATFORM_SOURCE_REPO)/rev/$(PLATFORM_SOURCE_STAMP)" >> $(MOZ_SOURCESTAMP_FILE)
-+	$(PYTHON) $(commtopsrcdir)/build/source_repos.py gen_sourcestamp > $(MOZ_SOURCESTAMP_FILE)

+ 0 - 238
comm-esr60/comm-esr60/patches/1510028-64a1.patch

@@ -1,238 +0,0 @@
-# HG changeset patch
-# User Jorg K <jorgk@jorgk.com>
-# Date 1543356619 -3600
-# Node ID c839e782792f00b76b94fa6004745d9e2006321e
-# Parent  cd6ee2dfb686b011664e63f4359681357cf32041
-Bug 1510028 - Add null check to avoid crash due to nsDependentCString(null). r=mkmelin a=jorgk
-
-diff --git a/mailnews/base/util/nsMsgI18N.cpp b/mailnews/base/util/nsMsgI18N.cpp
---- a/mailnews/base/util/nsMsgI18N.cpp
-+++ b/mailnews/base/util/nsMsgI18N.cpp
-@@ -160,19 +160,19 @@ void nsMsgI18NTextFileCharset(nsACString
-     aCharset.Assign("ISO-8859-1");
- }
- 
- // MIME encoder, output string should be freed by PR_FREE
- // XXX : fix callers later to avoid allocation and copy
- char * nsMsgI18NEncodeMimePartIIStr(const char *header, bool structured, const char *charset, int32_t fieldnamelen, bool usemime)
- {
-   // No MIME, convert to the outgoing mail charset.
--  if (false == usemime) {
-+  if (!usemime) {
-     nsAutoCString convertedStr;
--    if (NS_SUCCEEDED(nsMsgI18NConvertFromUnicode(nsDependentCString(charset),
-+    if (NS_SUCCEEDED(nsMsgI18NConvertFromUnicode(charset ? nsDependentCString(charset) : EmptyCString(),
-                                                  NS_ConvertUTF8toUTF16(header),
-                                                  convertedStr)))
-       return PL_strdup(convertedStr.get());
-     else
-       return PL_strdup(header);
-   }
- 
-   nsAutoCString encodedString;
-diff --git a/mailnews/compose/src/nsMsgCompose.cpp b/mailnews/compose/src/nsMsgCompose.cpp
---- a/mailnews/compose/src/nsMsgCompose.cpp
-+++ b/mailnews/compose/src/nsMsgCompose.cpp
-@@ -1300,25 +1300,24 @@ NS_IMETHODIMP nsMsgCompose::SendMsg(MSG_
-     nsCOMPtr<nsPIDOMWindowOuter> window = nsPIDOMWindowOuter::From(m_window);
-     window->GetPrompter(getter_AddRefs(prompt));
-   }
- 
-   // Set content type based on which type of compose window we had.
-   nsString contentType = (m_composeHTML) ? NS_LITERAL_STRING("text/html"):
-                                            NS_LITERAL_STRING("text/plain");
-   nsString msgBody;
-+  const char *charset = m_compFields->GetCharacterSet();
-   if (m_editor)
-   {
-     // Reset message body previously stored in the compose fields
-     // There is 2 nsIMsgCompFields::SetBody() functions using a pointer as argument,
-     // therefore a casting is required.
-     m_compFields->SetBody((const char *)nullptr);
- 
--    const char *charset = m_compFields->GetCharacterSet();
--
-     uint32_t flags = nsIDocumentEncoder::OutputCRLineBreak |
-                      nsIDocumentEncoder::OutputLFLineBreak;
- 
-     if (m_composeHTML) {
-       flags |= nsIDocumentEncoder::OutputFormatted |
-                nsIDocumentEncoder::OutputDisallowLineBreaking;
-     } else {
-       bool flowed, delsp, formatted, disallowBreaks;
-@@ -1340,17 +1339,17 @@ NS_IMETHODIMP nsMsgCompose::SendMsg(MSG_
-   else
-   {
-     m_compFields->GetBody(msgBody);
-   }
-   if (!msgBody.IsEmpty())
-   {
-     // Convert body to mail charset
-     nsCString outCString;
--    rv = nsMsgI18NConvertFromUnicode(nsDependentCString(m_compFields->GetCharacterSet()),
-+    rv = nsMsgI18NConvertFromUnicode(charset ? nsDependentCString(charset) : EmptyCString(),
-                                      msgBody, outCString, true);
-     bool isAsciiOnly = NS_IsAscii(outCString.get()) &&
-       !nsMsgI18Nstateful_charset(m_compFields->GetCharacterSet());
-     if (m_compFields->GetForceMsgEncoding())
-       isAsciiOnly = false;
-     if (NS_SUCCEEDED(rv) && !outCString.IsEmpty())
-     {
-       // If the body contains characters outside the repertoire of the current
-@@ -1359,20 +1358,20 @@ NS_IMETHODIMP nsMsgCompose::SendMsg(MSG_
-       if (NS_ERROR_UENC_NOMAPPING == rv)
-       {
-         bool needToCheckCharset;
-         m_compFields->GetNeedToCheckCharset(&needToCheckCharset);
-         if (needToCheckCharset)
-         {
-           bool disableFallback = false;
-           nsCOMPtr<nsIPrefBranch> prefBranch (do_GetService(NS_PREFSERVICE_CONTRACTID, &rv));
--          if (prefBranch)
-+          if (prefBranch && charset)
-           {
-             nsCString prefName("mailnews.disable_fallback_to_utf8.");
--            prefName.Append(m_compFields->GetCharacterSet());
-+            prefName.Append(charset);
-             prefBranch->GetBoolPref(prefName.get(), &disableFallback);
-           }
-           if (!disableFallback)
-           {
-             CopyUTF16toUTF8(msgBody, outCString);
-             m_compFields->SetCharacterSet("UTF-8");
-             SetDocumentCharset("UTF-8");
-           }
-diff --git a/mailnews/import/outlook/src/MapiMessage.cpp b/mailnews/import/outlook/src/MapiMessage.cpp
---- a/mailnews/import/outlook/src/MapiMessage.cpp
-+++ b/mailnews/import/outlook/src/MapiMessage.cpp
-@@ -1264,19 +1264,21 @@ void CMapiMessageHeaders::CHeaderField::
-     if ((*pos == nsCRT::CR) && (*(pos+1) == nsCRT::LF) && IsWSP(*(pos+2)))
-       pos += 2; // Skip CRLF if it is followed by SPACE or TAB
-     else
-       unfolded.Append(*(pos++));
-   }
-   if (m_fbody_utf8)
-     CopyUTF8toUTF16(unfolded, dest);
-   else
--    nsMsgI18NConvertToUnicode(nsDependentCString(fallbackCharset),
--                                                 unfolded,
--                                                 dest);
-+    nsMsgI18NConvertToUnicode(fallbackCharset ?
-+                                nsDependentCString(fallbackCharset) :
-+                                EmptyCString(),
-+                              unfolded,
-+                              dest);
- }
- 
- ////////////////////////////////////////
- 
- const char* CMapiMessageHeaders::Specials[hdrMax] = {
-   "Date:",
-   "From:",
-   "Sender:",
-diff --git a/mailnews/import/outlook/src/nsOutlookCompose.cpp b/mailnews/import/outlook/src/nsOutlookCompose.cpp
---- a/mailnews/import/outlook/src/nsOutlookCompose.cpp
-+++ b/mailnews/import/outlook/src/nsOutlookCompose.cpp
-@@ -310,17 +310,18 @@ nsresult nsOutlookCompose::ComposeTheMes
-           new nsImportEmbeddedImageData(uri, nsDependentCString(cid),
-                                      nsDependentCString(name));
-         embeddedObjects->AppendElement(imageData);
-       }
-     }
-   }
- 
-   nsCString bodyA;
--  nsMsgI18NConvertFromUnicode(nsDependentCString(msg.GetBodyCharset()), bodyW, bodyA);
-+  const char *charset = msg.GetBodyCharset();
-+  nsMsgI18NConvertFromUnicode(charset ? nsDependentCString(charset) : EmptyCString(), bodyW, bodyA);
- 
-   nsCOMPtr<nsIImportService> impService(do_GetService(NS_IMPORTSERVICE_CONTRACTID, &rv));
-   NS_ENSURE_SUCCESS(rv, rv);
- 
-   rv = impService->CreateRFC822Message(
-                         m_pIdentity,                  // dummy identity
-                         m_pMsgFields,                 // message fields
-                         msg.BodyIsHtml() ? "text/html" : "text/plain",
-diff --git a/mailnews/mime/src/mimedrft.cpp b/mailnews/mime/src/mimedrft.cpp
---- a/mailnews/mime/src/mimedrft.cpp
-+++ b/mailnews/mime/src/mimedrft.cpp
-@@ -345,50 +345,50 @@ CreateCompositionFields(const char      
-   // Now set all of the passed in stuff...
-   cFields->SetCharacterSet(!PL_strcasecmp("us-ascii", charset) ? "ISO-8859-1" : charset);
- 
-   nsAutoCString val;
-   nsAutoString outString;
- 
-   if (from) {
-     nsMsgI18NConvertRawBytesToUTF16(nsDependentCString(from),
--                                    nsDependentCString(charset),
-+                                    charset ? nsDependentCString(charset) : EmptyCString(),
-                                     outString);
-     cFields->SetFrom(outString);
-   }
- 
-   if (subject) {
-     MIME_DecodeMimeHeader(subject, charset, false, true, val);
-     cFields->SetSubject(NS_ConvertUTF8toUTF16(!val.IsEmpty() ? val.get() : subject));
-   }
- 
-   if (reply_to) {
-     nsMsgI18NConvertRawBytesToUTF16(nsDependentCString(reply_to),
--                                    nsDependentCString(charset),
-+                                    charset ? nsDependentCString(charset) : EmptyCString(),
-                                     outString);
-     cFields->SetReplyTo(outString);
-   }
- 
-   if (to) {
-     nsMsgI18NConvertRawBytesToUTF16(nsDependentCString(to),
--                                    nsDependentCString(charset),
-+                                    charset ? nsDependentCString(charset) : EmptyCString(),
-                                     outString);
-     cFields->SetTo(outString);
-   }
- 
-   if (cc) {
-     nsMsgI18NConvertRawBytesToUTF16(nsDependentCString(cc),
--                                    nsDependentCString(charset),
-+                                    charset ? nsDependentCString(charset) : EmptyCString(),
-                                     outString);
-     cFields->SetCc(outString);
-   }
- 
-   if (bcc) {
-     nsMsgI18NConvertRawBytesToUTF16(nsDependentCString(bcc),
--                                    nsDependentCString(charset),
-+                                    charset ? nsDependentCString(charset) : EmptyCString(),
-                                     outString);
-     cFields->SetBcc(outString);
-   }
- 
-   if (fcc) {
-     MIME_DecodeMimeHeader(fcc, charset, false, true, val);
-     cFields->SetFcc(NS_ConvertUTF8toUTF16(!val.IsEmpty() ? val.get() : fcc));
-   }
-diff --git a/mailnews/mime/src/mimehdrs.cpp b/mailnews/mime/src/mimehdrs.cpp
---- a/mailnews/mime/src/mimehdrs.cpp
-+++ b/mailnews/mime/src/mimehdrs.cpp
-@@ -35,17 +35,19 @@ MimeHeaders_convert_header_value(MimeDis
- {
-   if (value.IsEmpty())
-     return;
- 
-   if (convert_charset_only)
-   {
-     nsAutoCString output;
-     nsMsgI18NConvertRawBytesToUTF8(value,
--                                   nsDependentCString(opt->default_charset),
-+                                   opt->default_charset ?
-+                                     nsDependentCString(opt->default_charset) :
-+                                     EmptyCString(),
-                                    output);
-     value.Assign(output);
-     return;
-   }
- 
-   if (opt && opt->rfc1522_conversion_p)
-   {
-     nsAutoCString temporary;

+ 0 - 113
comm-esr60/comm-esr60/patches/1512557-65a1.patch

@@ -1,113 +0,0 @@
-# HG changeset patch
-# User Geoff Lankow <geoff@darktrojan.net>
-# Date 1544147900 -46800
-# Node ID 21219ad63ec84a637511fb8b76ddf34a874d51ca
-# Parent  c6dd8c291d4f3aee4ed4df9b77adb7bef9e34733
-Bug 1512557 - Convert nsIStringBundle pointers to nsCOMPtrs and release them when shutting down. r=jorgk DONTBUILD
-
-diff --git a/mailnews/intl/nsCharsetConverterManager.cpp b/mailnews/intl/nsCharsetConverterManager.cpp
---- a/mailnews/intl/nsCharsetConverterManager.cpp
-+++ b/mailnews/intl/nsCharsetConverterManager.cpp
-@@ -15,36 +15,31 @@
- 
- #include "nsComponentManagerUtils.h"
- #include "nsServiceManagerUtils.h"
- #include "../base/util/nsMsgI18N.h"
- 
- // just for CONTRACTIDs
- #include "nsCharsetConverterManager.h"
- 
--static nsIStringBundle * sDataBundle;
--static nsIStringBundle * sTitleBundle;
-+static nsCOMPtr<nsIStringBundle> sDataBundle;
-+static nsCOMPtr<nsIStringBundle> sTitleBundle;
- 
- // Class nsCharsetConverterManager [implementation]
- 
- NS_IMPL_ISUPPORTS(nsCharsetConverterManager, nsICharsetConverterManager)
- 
- nsCharsetConverterManager::nsCharsetConverterManager()
- {
- }
- 
- nsCharsetConverterManager::~nsCharsetConverterManager()
- {
--}
--
--//static
--void nsCharsetConverterManager::Shutdown()
--{
--  NS_IF_RELEASE(sDataBundle);
--  NS_IF_RELEASE(sTitleBundle);
-+  sDataBundle = nullptr;
-+  sTitleBundle = nullptr;
- }
- 
- static
- nsresult LoadBundle(const char* aBundleURLSpec, nsIStringBundle ** aResult)
- {
-   nsCOMPtr<nsIStringBundleService> sbServ =
-     mozilla::services::GetStringBundleService();
-   if (!sbServ)
-@@ -89,17 +84,18 @@ nsresult GetBundleValue(nsIStringBundle 
- static
- nsresult GetCharsetDataImpl(const char * aCharset, const char16_t * aProp,
-                             nsAString& aResult)
- {
-   NS_ENSURE_ARG_POINTER(aCharset);
-   // aProp can be nullptr
- 
-   if (!sDataBundle) {
--    nsresult rv = LoadBundle("resource://gre-resources/charsetData.properties", &sDataBundle);
-+    nsresult rv = LoadBundle("resource://gre-resources/charsetData.properties",
-+                             getter_AddRefs(sDataBundle));
-     if (NS_FAILED(rv))
-       return rv;
-   }
- 
-   return GetBundleValue(sDataBundle, aCharset, nsDependentString(aProp), aResult);
- }
- 
- //static
-@@ -141,17 +137,18 @@ nsCharsetConverterManager::GetCharsetAli
- 
- NS_IMETHODIMP
- nsCharsetConverterManager::GetCharsetTitle(const char * aCharset,
-                                            nsAString& aResult)
- {
-   NS_ENSURE_ARG_POINTER(aCharset);
- 
-   if (!sTitleBundle) {
--    nsresult rv = LoadBundle("chrome://messenger/locale/charsetTitles.properties", &sTitleBundle);
-+    nsresult rv = LoadBundle("chrome://messenger/locale/charsetTitles.properties",
-+                             getter_AddRefs(sTitleBundle));
-     NS_ENSURE_SUCCESS(rv, rv);
-   }
- 
-   return GetBundleValue(sTitleBundle, aCharset, NS_LITERAL_STRING(".title"), aResult);
- }
- 
- NS_IMETHODIMP
- nsCharsetConverterManager::GetCharsetData(const char * aCharset,
-diff --git a/mailnews/intl/nsCharsetConverterManager.h b/mailnews/intl/nsCharsetConverterManager.h
---- a/mailnews/intl/nsCharsetConverterManager.h
-+++ b/mailnews/intl/nsCharsetConverterManager.h
-@@ -14,18 +14,16 @@ class nsCharsetConverterManager : public
-   friend class nsCharsetAlias;
- 
-   NS_DECL_THREADSAFE_ISUPPORTS
-   NS_DECL_NSICHARSETCONVERTERMANAGER
- 
- public:
-   nsCharsetConverterManager();
- 
--  static void Shutdown();
--
- private:
-   virtual ~nsCharsetConverterManager();
- 
-   static bool IsInternal(const nsACString& aCharset);
- };
- 
- #endif // nsCharsetConverterManager_h__
- 

+ 0 - 32
comm-esr60/comm-esr60/patches/1519093-3-67a1.patch

@@ -1,32 +0,0 @@
-# HG changeset patch
-# User Jorg K <jorgk@jorgk.com>
-# Date 1559467930 -7200
-# Node ID 1579379c18bb86f01a8ed6cae1a99b0f79aa6c57
-# Parent  493bb1253c0e82ca9df373697249ddc53efca302
-Bug 1519093 - Follow-up: Reformat. rs=reformat DONTBUILD
-
-diff --git a/mailnews/extensions/smime/src/nsMsgComposeSecure.cpp b/mailnews/extensions/smime/src/nsMsgComposeSecure.cpp
---- a/mailnews/extensions/smime/src/nsMsgComposeSecure.cpp
-+++ b/mailnews/extensions/smime/src/nsMsgComposeSecure.cpp
-@@ -889,19 +889,18 @@ nsresult nsMsgComposeSecure::MimeCryptoH
-   */
- 
-   RefPtr<SharedCertVerifier> certVerifier(GetDefaultCertVerifier());
-   NS_ENSURE_TRUE(certVerifier, NS_ERROR_UNEXPECTED);
- 
-   // Calling CERT_GetCertNicknames has the desired side effect of
-   // traversing all tokens, and bringing up prompts to unlock them.
-   nsCOMPtr<nsIInterfaceRequestor> ctx = new PipUIContext();
--  CERTCertNicknames *result_unused =
--    CERT_GetCertNicknames(CERT_GetDefaultCertDB(),
--    SEC_CERT_NICKNAMES_USER, ctx);
-+  CERTCertNicknames *result_unused = CERT_GetCertNicknames(
-+      CERT_GetDefaultCertDB(), SEC_CERT_NICKNAMES_USER, ctx);
-   CERT_FreeNicknames(result_unused);
- 
-   UniqueCERTCertList builtChain;
-   if (!mEncryptionCertDBKey.IsEmpty()) {
-     res = certdb->FindCertByDBKey(mEncryptionCertDBKey,
-                                   getter_AddRefs(mSelfEncryptionCert));
-     if (NS_SUCCEEDED(res) && mSelfEncryptionCert &&
-         (certVerifier->VerifyCert(mSelfEncryptionCert->GetCert(),

+ 0 - 112
comm-esr60/comm-esr60/patches/1522761-cxx-mail-60.patch

@@ -1,112 +0,0 @@
-# HG changeset patch
-# User Frank-Rainer Grahl <frgrahl@gmx.net>
-# Parent  445f778801543f0e8e57389a07603c35a43744ca
-Bug 1522761 - Use CC_TYPE in c-c build files. mail mailnews part.
-Ports:
-Bug 1031352 [move most of the _MSC_VER references in Makefile.in to moz.build].
-Bug 1394734 [Replace CONFIG['CLANG_CXX'], CONFIG['GNU_CXX'] by CONFIG['CC_TYPE']].
-
-diff --git a/mail/app/moz.build b/mail/app/moz.build
---- a/mail/app/moz.build
-+++ b/mail/app/moz.build
-@@ -37,30 +37,30 @@ if CONFIG['MOZ_SANDBOX'] and CONFIG['OS_
-         'sandbox_s',
-     ]
- 
-     DELAYLOAD_DLLS += [
-         'winmm.dll',
-         'user32.dll',
-     ]
- 
--if CONFIG['_MSC_VER']:
-+if CONFIG['CC_TYPE'] in ('msvc', 'clang-cl'):
-     # Always enter a Windows program through wmain, whether or not we're
-     # a console application.
-     WIN32_EXE_LDFLAGS += ['-ENTRY:wmainCRTStartup']
- 
- # Control the default heap size.
- # This is the heap returned by GetProcessHeap().
- # As we use the CRT heap, the default size is too large and wastes VM.
- #
- # The default heap size is 1MB on Win32.
- # The heap will grow if need be.
- #
- # Set it to 256k.  See bug 127069.
--if CONFIG['OS_ARCH'] == 'WINNT' and not CONFIG['GNU_CC']:
-+if CONFIG['OS_ARCH'] == 'WINNT' and CONFIG['CC_TYPE'] not in ('clang', 'gcc'):
-     LDFLAGS += ['/HEAP:0x40000']
- 
- DisableStlWrapping()
- 
- if CONFIG['MOZ_LINKER']:
-     OS_LIBS += CONFIG['MOZ_ZLIB_LIBS']
- 
- if CONFIG['HAVE_CLOCK_MONOTONIC']:
-diff --git a/mail/installer/Makefile.in b/mail/installer/Makefile.in
---- a/mail/installer/Makefile.in
-+++ b/mail/installer/Makefile.in
-@@ -45,20 +45,16 @@ endif
- ifdef MOZ_DEBUG
- DEFINES += -DMOZ_DEBUG=1
- endif
- 
- ifeq ($(MOZ_WIDGET_TOOLKIT),gtk3)
- DEFINES += -DMOZ_GTK=1
- endif
- 
--ifdef _MSC_VER
--DEFINES += -D_MSC_VER=$(_MSC_VER)
--endif
--
- ifdef MOZ_SYSTEM_NSPR
- DEFINES += -DMOZ_SYSTEM_NSPR=1
- endif
- 
- ifdef MOZ_SYSTEM_NSS
- DEFINES += -DMOZ_SYSTEM_NSS=1
- endif
- 
-diff --git a/mailnews/import/build/moz.build b/mailnews/import/build/moz.build
---- a/mailnews/import/build/moz.build
-+++ b/mailnews/import/build/moz.build
-@@ -31,17 +31,17 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'coco
-         '../applemail/src',
-     ]
-     OS_LIBS += CONFIG['TK_LIBS']
-     OS_LIBS += ['-framework Cocoa']
- 
- if CONFIG['OS_ARCH'] == 'WINNT':
-     LOCAL_INCLUDES += [
-     ]
--    if not CONFIG['GNU_CC']:
-+    if CONFIG['CC_TYPE'] in ('msvc', 'clang-cl'):
-         LOCAL_INCLUDES += [
-             '../becky/src',
-             '../outlook/src',
-             '../winlivemail',
-         ]
-     if CONFIG['MOZ_MAPI_SUPPORT']:
-         LOCAL_INCLUDES += [
-             '../outlook/src',
-diff --git a/mailnews/moz.build b/mailnews/moz.build
---- a/mailnews/moz.build
-+++ b/mailnews/moz.build
-@@ -30,17 +30,17 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'coco
-     ]
- 
- if CONFIG['OS_ARCH'] == 'WINNT':
-     DIRS += [ 'import/becky/src' ]
- 
-     if CONFIG['MOZ_MAPI_SUPPORT']:
-         DIRS += ['import/outlook/src']
- 
--    if not CONFIG['GNU_CC']:
-+    if CONFIG['CC_TYPE'] in ('msvc', 'clang-cl'):
-         DIRS += [
-             'import/winlivemail',
-         ]
- 
- TEST_DIRS += [
-     'imap/test',
-     'import/test',
-     'local/test',

+ 0 - 89
comm-esr60/comm-esr60/patches/1529228-67a1.patch

@@ -1,89 +0,0 @@
-# HG changeset patch
-# User Kai Engert <kaie@kuix.de>
-# Date 1551345999 -3600
-# Node ID 99d2aa59c5c8cd645b73a04f2c7b6eb467714d95
-# Parent  b4b68b30273953c28f4fdcbd63aedcbe7547ed82
-Bug 1529228 - Export NSS CMS functions required by TB/SM in mailnews/nss-extra.symbols. r=rjl
-
-diff --git a/mail/confvars.sh b/mail/confvars.sh
---- a/mail/confvars.sh
-+++ b/mail/confvars.sh
-@@ -41,9 +41,9 @@ MOZ_PROFILE_MIGRATOR=1
- MOZ_BINARY_EXTENSIONS=1
- MOZ_SEPARATE_MANIFEST_FOR_THEME_OVERRIDES=1
- 
- # Enable building ./signmar and running libmar signature tests
- MOZ_ENABLE_SIGNMAR=1
- 
- MOZ_DEVTOOLS=all
- 
--NSS_EXTRA_SYMBOLS_FILE=../comm/comm-extra-nss.symbols
-+NSS_EXTRA_SYMBOLS_FILE=../comm/mailnews/nss-extra.symbols
-diff --git a/comm-extra-nss.symbols b/mailnews/nss-extra.symbols
-rename from comm-extra-nss.symbols
-rename to mailnews/nss-extra.symbols
---- a/comm-extra-nss.symbols
-+++ b/mailnews/nss-extra.symbols
-@@ -1,3 +1,48 @@
- CERT_GetCertNicknames
-+NSS_CMSContentInfo_GetBulkKey
-+NSS_CMSContentInfo_GetBulkKeySize
-+NSS_CMSContentInfo_GetContentEncAlgTag
-+NSS_CMSContentInfo_SetContent_Data
-+NSS_CMSContentInfo_SetContent_EncryptedData
-+NSS_CMSContentInfo_SetContent_EnvelopedData
-+NSS_CMSDecoder_Cancel
-+NSS_CMSDecoder_Finish
-+NSS_CMSDecoder_Start
-+NSS_CMSDecoder_Update
-+NSS_CMSDEREncode
-+NSS_CMSDigestContext_FinishMultiple
-+NSS_CMSDigestContext_StartMultiple
-+NSS_CMSDigestContext_Update
-+NSS_CMSEncoder_Cancel
-+NSS_CMSEncoder_Update
-+NSS_CMSEncryptedData_Create
-+NSS_CMSEncryptedData_GetContentInfo
-+NSS_CMSEnvelopedData_AddRecipient
-+NSS_CMSEnvelopedData_Create
-+NSS_CMSEnvelopedData_GetContentInfo
-+NSS_CMSMessage_ContentLevelCount
-+NSS_CMSMessage_GetContent
-+NSS_CMSMessage_IsEncrypted
-+NSS_CMSRecipientInfo_Create
-+NSS_CMSSignedData_AddCertChain
-+NSS_CMSSignedData_AddCertList
-+NSS_CMSSignedData_AddSignerInfo
-+NSS_CMSSignedData_Create
-+NSS_CMSSignedData_GetContentInfo
- NSS_CMSSignedData_GetDigestAlgs
- NSS_CMSSignedData_HasDigests
-+NSS_CMSSignedData_ImportCerts
-+NSS_CMSSignedData_SetDigests
-+NSS_CMSSignedData_SetDigestValue
-+NSS_CMSSignedData_VerifyCertsOnly
-+NSS_CMSSignedData_VerifySignerInfo
-+NSS_CMSSignerInfo_AddMSSMIMEEncKeyPrefs
-+NSS_CMSSignerInfo_AddSigningTime
-+NSS_CMSSignerInfo_AddSMIMECaps
-+NSS_CMSSignerInfo_AddSMIMEEncKeyPrefs
-+NSS_CMSSignerInfo_Create
-+NSS_CMSSignerInfo_GetSignerCommonName
-+NSS_CMSSignerInfo_GetSignerEmailAddress
-+NSS_CMSSignerInfo_GetVerificationStatus
-+NSS_CMSSignerInfo_IncludeCerts
-+NSS_CMSUtil_VerificationStatusToString
-diff --git a/suite/confvars.sh b/suite/confvars.sh
---- a/suite/confvars.sh
-+++ b/suite/confvars.sh
-@@ -31,9 +31,9 @@ MOZ_PROFILE_MIGRATOR=1
- if test "$OS_ARCH" = "WINNT" -o \
-         "$OS_ARCH" = "Linux"; then
-   MOZ_BUNDLED_FONTS=1
- fi
- 
- # Include the DevTools client, not just the server (which is the default)
- MOZ_DEVTOOLS=all
- 
--NSS_EXTRA_SYMBOLS_FILE=../comm/comm-extra-nss.symbols
-+NSS_EXTRA_SYMBOLS_FILE=../comm/mailnews/nss-extra.symbols

+ 0 - 25
comm-esr60/comm-esr60/patches/1533062-oslibs-mail.patch

@@ -1,25 +0,0 @@
-# HG changeset patch
-# User Frank-Rainer Grahl <frgrahl@gmx.net>
-# Parent  6ca529b3e90cfdb467354f8160380a08228bd40e
-Bug 1533062 - Remove os libraries from Mail Windows link step.
-
-diff --git a/mail/components/build/moz.build b/mail/components/build/moz.build
---- a/mail/components/build/moz.build
-+++ b/mail/components/build/moz.build
-@@ -10,16 +10,10 @@ SOURCES += [
- Library('mailcomps')
- FINAL_LIBRARY = 'xul'
- 
- LOCAL_INCLUDES += [
-     '../migration/src',
-     '../shell',
- ]
- 
--if CONFIG['OS_ARCH'] == 'WINNT':
--    OS_LIBS += [
--        'ole32',
--        'shell32',
--    ]
--
- if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows':
-     LOCAL_INCLUDES += ['../search']

+ 0 - 52
comm-esr60/comm-esr60/patches/1535846-sse2-mail-68a1.patch

@@ -1,52 +0,0 @@
-# HG changeset patch
-# User Frank-Rainer Grahl <frgrahl@gmx.net>
-# Parent  9f91a5874f80ac44e92432399baf4fcfe5f09d91
-Bug 1535845 - Move Thunderbird sse check to moz.build.
-
-Port Bug 1403346 part 14 [Move remaining compile flags from config.mk to moz.build computed flags].
-
-diff --git a/mail/app/Makefile.in b/mail/app/Makefile.in
---- a/mail/app/Makefile.in
-+++ b/mail/app/Makefile.in
-@@ -21,19 +21,17 @@ MOZ_WINCONSOLE = 0
- endif
- endif
- 
- include $(moztopsrcdir)/config/config.mk
- 
- # If we are trying to show an error dialog about the lack of SSE2 support,
- # make sure that code itself doesn't use SSE2.
- ifdef MOZ_LINUX_32_SSE2_STARTUP_ERROR
--CXXFLAGS := $(filter-out -march=% -msse -msse2 -mfpmath=sse,$(CXXFLAGS))
- CXX := $(filter-out -march=% -msse -msse2 -mfpmath=sse,$(CXX))
--CXXFLAGS += -mno-sse -mno-sse2 -mfpmath=387
- CXX += -march=pentiumpro
- endif
- 
- ifeq ($(OS_ARCH),WINNT)
- # Extract the icons we care about embedding into the EXE
- mailtoolbar = $(commtopsrcdir)/mail/themes/windows/mail/icons/jumplist.png
- 
- # png to ico converter. The function takes 5 arguments, in order: source png
-diff --git a/mail/app/moz.build b/mail/app/moz.build
---- a/mail/app/moz.build
-+++ b/mail/app/moz.build
-@@ -71,12 +71,18 @@ DEFINES['APP_VERSION'] = CONFIG['MOZ_APP
- if CONFIG['MOZILLA_OFFICIAL']:
-     DEFINES['MOZILLA_OFFICIAL'] = True
- 
- if CONFIG['MOZ_GPSD']:
-     DEFINES['MOZ_GPSD'] = True
- 
- if CONFIG['MOZ_LINUX_32_SSE2_STARTUP_ERROR']:
-     DEFINES['MOZ_LINUX_32_SSE2_STARTUP_ERROR'] = True
-+    COMPILE_FLAGS['OS_CXXFLAGS'] = [
-+        f for f in COMPILE_FLAGS.get('OS_CXXFLAGS', [])
-+        if not f.startswith('-march=') and f not in ('-msse', '-msse2', '-mfpmath=sse')
-+    ] + [
-+        '-mno-sse', '-mno-sse2', '-mfpmath=387',
-+    ]
- 
- JS_PREFERENCE_PP_FILES += [
-     'profile/all-thunderbird.js',
- ]

+ 0 - 52
comm-esr60/comm-esr60/patches/1536477-71a1.patch

@@ -1,52 +0,0 @@
-# HG changeset patch
-# User Jorg K <jorgk@jorgk.com>
-# Date 1569184251 -7200
-# Node ID f3f61fcc001af6ca42bfe1b3ca45f8f22a768ce7
-# Parent  ab18f8464d9d634f1904682b3dfa26ce6ec9ddd9
-Bug 1536477 - When no body is supplied via MAPI, honour default compose format. r=aceman a=frg
-
-diff --git a/mailnews/mapi/mapihook/src/msgMapiHook.cpp b/mailnews/mapi/mapihook/src/msgMapiHook.cpp
---- a/mailnews/mapi/mapihook/src/msgMapiHook.cpp
-+++ b/mailnews/mapi/mapihook/src/msgMapiHook.cpp
-@@ -679,16 +679,20 @@ nsresult nsMapiHook::PopulateCompFieldsW
-       Body.AppendLiteral(CRLF);
- 
-     // This is needed when Simple MAPI is used without a compose window.
-     // See bug 1366196.
-     if (Body.Find("<html>") == kNotFound)
-       aCompFields->SetForcePlainText(true);
- 
-     rv = aCompFields->SetBody(Body) ;
-+  } else {
-+    // No body: Assume that we can do plaintext. This will trigger the default
-+    // compose format in ShowComposerWindow().
-+    aCompFields->SetForcePlainText(true);
-   }
- 
- #ifdef RAJIV_DEBUG
-   // testing what all was set in CompFields
-   printf ("To : %S \n", To.get()) ;
-   printf ("CC : %S \n", Cc.get() ) ;
-   printf ("BCC : %S \n", Bcc.get() ) ;
- #endif
-@@ -770,16 +774,20 @@ nsresult nsMapiHook::PopulateCompFieldsW
-       Body.AppendLiteral(CRLF);
- 
-     // This is needed when Simple MAPI is used without a compose window.
-     // See bug 1366196.
-     if (Body.Find("<html>") == kNotFound)
-       aCompFields->SetForcePlainText(true);
- 
-     rv = aCompFields->SetBody(Body);
-+  } else {
-+    // No body: Assume that we can do plaintext. This will trigger the default
-+    // compose format in ShowComposerWindow().
-+    aCompFields->SetForcePlainText(true);
-   }
-   return rv;
- }
- 
- // this is used to populate the docs as attachments in the Comp fields for Send Documents
- nsresult nsMapiHook::PopulateCompFieldsForSendDocs(nsIMsgCompFields * aCompFields, ULONG aFlags,
-                                                    LPSTR aDelimChar, LPSTR aFilePaths)
- {

+ 0 - 234
comm-esr60/comm-esr60/patches/1541006-flatten.patch

@@ -1,234 +0,0 @@
-# HG changeset patch
-# User Ian Neal <iann_cvs@blueyonder.co.uk>
-# Parent  fbcea1ad870ebf99bc88d8a0c9616de3937fcdf4
-Bug 1541006 - Remove single use overlays from compose window. r=frg a=frg
-
-diff --git a/suite/mailnews/components/compose/content/addressingWidgetOverlay.xul b/suite/mailnews/components/compose/content/addressingWidgetOverlay.xul
-deleted file mode 100644
---- a/suite/mailnews/components/compose/content/addressingWidgetOverlay.xul
-+++ /dev/null
-@@ -1,65 +0,0 @@
--<?xml version="1.0"?>
--<!-- This Source Code Form is subject to the terms of the Mozilla Public
--   - License, v. 2.0. If a copy of the MPL was not distributed with this
--   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
--
--<!DOCTYPE overlay SYSTEM "chrome://messenger/locale/messengercompose/addressingWidgetOverlay.dtd">
--
--
--<overlay xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
--     xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
--
--<script type="application/javascript" src="chrome://messenger/content/messengercompose/addressingWidgetOverlay.js"/>
--<script type="application/javascript" src="chrome://messenger/content/addressbook/abDragDrop.js"/>
--
--  <!-- Addressing Widget -->
--  <listbox id="addressingWidget" seltype="multiple" rows="4"
--    onkeydown="awKeyDown(event, this)"
--    onclick="awClickEmptySpace(event.originalTarget, true)"
--    ondragover="DragAddressOverTargetControl(event);"
--    ondrop="DropAddressOverTargetControl(event);">
--
--    <listcols>
--      <listcol id="typecol-addressingWidget"/>
--      <listcol id="textcol-addressingWidget" flex="1"/>
--    </listcols>
--
--    <listitem class="addressingWidgetItem" allowevents="true">
--      <listcell class="addressingWidgetCell" align="stretch">
--        <menulist id="addressCol1#1" disableonsend="true"
--                  class="aw-menulist menulist-compact" flex="1"
--                  onkeypress="awMenulistKeyPress(event, this)"
--                  oncommand="gContentChanged=true; awSetAutoComplete(this.id.slice(this.id.lastIndexOf('#') + 1));">
--          <menupopup>
--            <menuitem value="addr_to" label="&toAddr.label;"/>
--            <menuitem value="addr_cc" label="&ccAddr.label;"/>
--            <menuitem value="addr_bcc" label="&bccAddr.label;"/>
--            <menuitem value="addr_reply" label="&replyAddr.label;"/>
--            <menuitem value="addr_newsgroups" label="&newsgroupsAddr.label;"/>
--            <menuitem value="addr_followup" label="&followupAddr.label;"/>
--          </menupopup>
--        </menulist>
--      </listcell>
--
--      <listcell class="addressingWidgetCell">
--        <textbox id="addressCol2#1" class="plain textbox-addressingWidget uri-element"
--                 aria-labelledby="addressCol1#1"
--                 type="autocomplete" flex="1" maxrows="4"
--                 newlines="replacewithcommas"
--                 autocompletesearch="mydomain addrbook ldap news" timeout="300"
--                 autocompletesearchparam="{}"
--                 completedefaultindex="true" forcecomplete="true"
--                 minresultsforpopup="2" ignoreblurwhilesearching="true"
--                 ontextentered="awRecipientTextCommand(eventParam, this)"
--                 onerrorcommand="awRecipientErrorCommand(eventParam, this)"
--                 oninput="gContentChanged=true; setupAutocomplete();" disableonsend="true"
--                 onkeypress="awRecipientKeyPress(event, this)"
--                 onkeydown="awRecipientKeyDown(event, this)">
--          <image class="person-icon" onclick="this.parentNode.select();"/>
--        </textbox>
--      </listcell>
--    </listitem>
--
--  </listbox>
--
--</overlay>
-diff --git a/suite/mailnews/components/compose/content/mailComposeExtrasOverlay.xul b/suite/mailnews/components/compose/content/mailComposeExtrasOverlay.xul
-deleted file mode 100644
---- a/suite/mailnews/components/compose/content/mailComposeExtrasOverlay.xul
-+++ /dev/null
-@@ -1,12 +0,0 @@
--<!-- This Source Code Form is subject to the terms of the Mozilla Public
--   - License, v. 2.0. If a copy of the MPL was not distributed with this
--   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
--
--<overlay
--  xmlns:nc="http://home.netscape.com/NC-rdf#"
--  xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
--
--<!-- plug in your mail compose window extras here.
--     see http://www.mozilla.org/mailnews/arch/composewindowextras.html -->
--
--</overlay>
-diff --git a/suite/mailnews/components/compose/content/messengercompose.xul b/suite/mailnews/components/compose/content/messengercompose.xul
---- a/suite/mailnews/components/compose/content/messengercompose.xul
-+++ b/suite/mailnews/components/compose/content/messengercompose.xul
-@@ -8,28 +8,28 @@
- <?xml-stylesheet href="chrome://editor/skin/editorFormatToolbar.css" type="text/css"?>
- <?xml-stylesheet href="chrome://messenger/skin/addressingWidget.css" type="text/css"?>
- 
- <?xul-overlay href="chrome://communicator/content/charsetOverlay.xul"?>
- <?xul-overlay href="chrome://communicator/content/tasksOverlay.xul"?>
- <?xul-overlay href="chrome://communicator/content/sidebar/sidebarOverlay.xul"?>
- <?xul-overlay href="chrome://communicator/content/contentAreaContextOverlay.xul"?>
- <?xul-overlay href="chrome://messenger/content/messengercompose/msgComposeContextOverlay.xul"?>
--<?xul-overlay href="chrome://messenger/content/messengercompose/addressingWidgetOverlay.xul"?>
- <?xul-overlay href="chrome://communicator/content/utilityOverlay.xul"?>
- <?xul-overlay href="chrome://editor/content/editorOverlay.xul"?>
- <?xul-overlay href="chrome://editor/content/editorSmileyOverlay.xul"?>
- <?xul-overlay href="chrome://messenger/content/messengercompose/mailComposeOverlay.xul"?>
--<?xul-overlay href="chrome://messenger/content/messengercompose/mailComposeExtrasOverlay.xul"?>
- <?xul-overlay href="chrome://messenger/content/mailOverlay.xul"?>
- <?xul-overlay href="chrome://messenger/content/platformMailnewsOverlay.xul"?>
- 
- <!DOCTYPE window [
- <!ENTITY % messengercomposeDTD SYSTEM "chrome://messenger/locale/messengercompose/messengercompose.dtd" >
- %messengercomposeDTD;
-+<!ENTITY % addressingWidgetDTD SYSTEM "chrome://messenger/locale/messengercompose/addressingWidgetOverlay.dtd" >
-+%addressingWidgetDTD;
- <!ENTITY % messengerDTD SYSTEM "chrome://messenger/locale/messenger.dtd" >
- %messengerDTD;
- <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd" >
- %brandDTD;
- <!ENTITY % utilityDTD SYSTEM "chrome://communicator/locale/utilityOverlay.dtd">
- %utilityDTD;
- <!ENTITY % platformCommunicatorDTD SYSTEM
-   "chrome://communicator-platform/locale/platformCommunicatorOverlay.dtd">
-@@ -63,19 +63,21 @@
- 
-   <script type="application/javascript" src="chrome://communicator/content/contentAreaClick.js"/>
-   <script type="application/javascript" src="chrome://global/content/printUtils.js"/>
-   <script type="application/javascript" src="chrome://messenger/content/accountUtils.js"/>
-   <script type="application/javascript" src="chrome://messenger/content/widgetglue.js"/>
-   <script type="application/javascript" src="chrome://messenger/content/mail-offline.js"/>
-   <script type="application/javascript" src="chrome://editor/content/editor.js"/>
-   <script type="application/javascript" src="chrome://messenger/content/messengercompose/MsgComposeCommands.js"/>
-+  <script type="application/javascript" src="chrome://messenger/content/messengercompose/addressingWidgetOverlay.js"/>
- 
-   <!-- drag and drop -->
-   <script type="application/javascript" src="chrome://global/content/nsDragAndDrop.js"/>
-+  <script type="application/javascript" src="chrome://messenger/content/addressbook/abDragDrop.js"/>
- 
-   <commandset id="composeCommands">
-     <commandset id="msgComposeCommandUpdate"
-                 commandupdater="true"
-                 events="focus"
-                 oncommandupdate="CommandUpdate_MsgCompose()"/>
- 
-     <commandset id="editorCommands"/>
-@@ -558,17 +560,70 @@
-             <menulist id="msgIdentity"
-                       editable="true"
-                       disableautoselect="true"
-                       flex="1"
-                       oncommand="LoadIdentity(false);">
-               <menupopup id="msgIdentityPopup"/>
-             </menulist>
-           </hbox>
--          <listbox id="addressingWidget" flex="1"/>
-+          <!-- Addressing Widget -->
-+          <listbox id="addressingWidget" flex="1"
-+                   seltype="multiple" rows="4"
-+                   onkeydown="awKeyDown(event, this);"
-+                   onclick="awClickEmptySpace(event.originalTarget, true);"
-+                   ondragover="DragAddressOverTargetControl(event);"
-+                   ondrop="DropAddressOverTargetControl(event);">
-+
-+            <listcols>
-+              <listcol id="typecol-addressingWidget"/>
-+              <listcol id="textcol-addressingWidget" flex="1"/>
-+            </listcols>
-+
-+            <listitem class="addressingWidgetItem" allowevents="true">
-+              <listcell class="addressingWidgetCell" align="stretch">
-+                <menulist id="addressCol1#1" disableonsend="true"
-+                          class="aw-menulist menulist-compact" flex="1"
-+                          onkeypress="awMenulistKeyPress(event, this);"
-+                          oncommand="gContentChanged=true; awSetAutoComplete(this.id.slice(this.id.lastIndexOf('#') + 1));">
-+                  <menupopup>
-+                    <menuitem value="addr_to" label="&toAddr.label;"/>
-+                    <menuitem value="addr_cc" label="&ccAddr.label;"/>
-+                    <menuitem value="addr_bcc" label="&bccAddr.label;"/>
-+                    <menuitem value="addr_reply" label="&replyAddr.label;"/>
-+                    <menuitem value="addr_newsgroups"
-+                              label="&newsgroupsAddr.label;"/>
-+                    <menuitem value="addr_followup"
-+                              label="&followupAddr.label;"/>
-+                  </menupopup>
-+                </menulist>
-+              </listcell>
-+
-+              <listcell class="addressingWidgetCell">
-+                <textbox id="addressCol2#1"
-+                         class="plain textbox-addressingWidget uri-element"
-+                         aria-labelledby="addressCol1#1"
-+                         type="autocomplete" flex="1" maxrows="4"
-+                         newlines="replacewithcommas"
-+                         autocompletesearch="mydomain addrbook ldap news"
-+                         timeout="300" autocompletesearchparam="{}"
-+                         completedefaultindex="true" forcecomplete="true"
-+                         minresultsforpopup="2" ignoreblurwhilesearching="true"
-+                         ontextentered="awRecipientTextCommand(eventParam, this);"
-+                         onerrorcommand="awRecipientErrorCommand(eventParam, this);"
-+                         oninput="gContentChanged=true; setupAutocomplete();"
-+                         disableonsend="true"
-+                         onkeypress="awRecipientKeyPress(event, this);"
-+                         onkeydown="awRecipientKeyDown(event, this);">
-+                  <image class="person-icon"
-+                         onclick="this.parentNode.select();"/>
-+                </textbox>
-+              </listcell>
-+            </listitem>
-+          </listbox>
-           <hbox align="center">
-             <label value="&subject.label;" accesskey="&subject.accesskey;" control="msgSubject"/>
-             <textbox id="msgSubject" flex="1" class="toolbar" disableonsend="true"
-                      oninput="gContentChanged=true;SetComposeWindowTitle();"
-                      onkeypress="subjectKeyPress(event);" />
-           </hbox>
-         </vbox>
-         <splitter id="attachmentbucket-sizer" collapse="after"/>
-diff --git a/suite/mailnews/components/compose/jar.mn b/suite/mailnews/components/compose/jar.mn
---- a/suite/mailnews/components/compose/jar.mn
-+++ b/suite/mailnews/components/compose/jar.mn
-@@ -8,10 +8,8 @@ messenger.jar:
-     content/messenger/messengercompose/pref-formatting.xul                     (content/prefs/pref-formatting.xul)
-     content/messenger/messengercompose/pref-formatting.js                      (content/prefs/pref-formatting.js)
-     content/messenger/messengercompose/messengercompose.xul                    (content/messengercompose.xul)
-     content/messenger/messengercompose/EdColorPropsOverlay.xul                 (content/EdColorPropsOverlay.xul)
-     content/messenger/messengercompose/mailComposeOverlay.xul                  (content/mailComposeOverlay.xul)
-     content/messenger/messengercompose/msgComposeContextOverlay.xul            (content/msgComposeContextOverlay.xul)
-     content/messenger/messengercompose/MsgComposeCommands.js                   (content/MsgComposeCommands.js)
-     content/messenger/messengercompose/addressingWidgetOverlay.js              (content/addressingWidgetOverlay.js)
--    content/messenger/messengercompose/addressingWidgetOverlay.xul             (content/addressingWidgetOverlay.xul)
--    content/messenger/messengercompose/mailComposeExtrasOverlay.xul            (content/mailComposeExtrasOverlay.xul)

+ 0 - 67
comm-esr60/comm-esr60/patches/1542484-68a1.patch

@@ -1,67 +0,0 @@
-# HG changeset patch
-# User aceman <acelists@atlas.sk>
-# Date 1554528240 -7200
-# Node ID e07c8f10fbcb01c6e5ad797beecee7b72f653722
-# Parent  039dc8e3189137005563848c0a86be4115969814
-Bug 1542484 - fix some warnings when creating a News account. r=jorgk
-
-diff --git a/mailnews/base/prefs/content/AccountWizard.js b/mailnews/base/prefs/content/AccountWizard.js
---- a/mailnews/base/prefs/content/AccountWizard.js
-+++ b/mailnews/base/prefs/content/AccountWizard.js
-@@ -438,22 +438,24 @@ function createAccount(accountData)
- function finishAccount(account, accountData)
- {
-   if (accountData.incomingServer) {
- 
-     var destServer = account.incomingServer;
-     var srcServer = accountData.incomingServer;
-     copyObjectToInterface(destServer, srcServer, true);
- 
--    // see if there are any protocol-specific attributes
--    // if so, we use the type to get the IID, QueryInterface
--    // as appropriate, then copy the data over
--    dump("srcServer.ServerType-" + srcServer.type + " = " +
--         srcServer["ServerType-" + srcServer.type] + "\n");
--    if (srcServer["ServerType-" + srcServer.type]) {
-+    // See if there are any protocol-specific attributes.
-+    // If so, we use the type to get the IID, QueryInterface
-+    // as appropriate, then copy the data over.
-+    const typeProperty = "ServerType-" + srcServer.type;
-+    let serverAttrs = (typeProperty in srcServer) ?
-+                      srcServer[typeProperty] : null;
-+    dump(`srcServer.${typeProperty} = ${serverAttrs}\n`);
-+    if (serverAttrs) {
-       // handle server-specific stuff
-       var IID;
-       try {
-         IID = destServer.protocolInfo.serverIID;
-       } catch (ex) {
-         Cu.reportError("Could not get IID for " + srcServer.type + ": " + ex);
-       }
- 
-diff --git a/mailnews/base/prefs/content/aw-incoming.js b/mailnews/base/prefs/content/aw-incoming.js
---- a/mailnews/base/prefs/content/aw-incoming.js
-+++ b/mailnews/base/prefs/content/aw-incoming.js
-@@ -64,21 +64,18 @@ function incomingPageUnload()
- 
- function incomingPageInit() {
-   gOnMailServersPage = (document.documentElement.currentPage.id == "incomingpage");
-   gOnNewsServerPage = (document.documentElement.currentPage.id == "newsserver");
-   if (gOnNewsServerPage)
-   {
-     var newsServer = document.getElementById("newsServer");
-     var pageData = parent.GetPageData();
--    try
--    {
-+    if (pageData.newsserver && pageData.newsserver.hostname)
-       newsServer.value = pageData.newsserver.hostname.value;
--    }
--    catch (ex){}
-   }
- 
-   gHideIncoming = false;
-   if (gCurrentAccountData && gCurrentAccountData.wizardHideIncoming)
-     gHideIncoming = true;
- 
-   var incomingServerbox = document.getElementById("incomingServerbox");
-   var serverTypeBox = document.getElementById("serverTypeBox");

+ 0 - 15
comm-esr60/comm-esr60/patches/1542641-eslintfix.patch

@@ -1,15 +0,0 @@
-# HG changeset patch
-# User Frank-Rainer Grahl <frgrahl@gmx.net>
-# Parent  ccc979c139017363f26354c4c6c7671643f390fc
-Bug 1542641 - Fix path errors preventing ESLint to work in suite. r=IanN a=frg
-
-diff --git a/suite/components/places/tests/autocomplete/.eslintrc b/suite/components/places/tests/autocomplete/.eslintrc
-deleted file mode 100644
---- a/suite/components/places/tests/autocomplete/.eslintrc
-+++ /dev/null
-@@ -1,5 +0,0 @@
--{
--  "extends": [
--    "../../../../../testing/xpcshell/xpcshell.eslintrc"
--  ]
--}

+ 0 - 27
comm-esr60/comm-esr60/patches/1543711-getfiledisplayname.patch

@@ -1,27 +0,0 @@
-# HG changeset patch
-# User Ian Neal <iann_cvs@blueyonder.co.uk>
-# Parent  c7dd7478690cf67e56490b5725da6d8335e5b8ee
-Bug 1543711 - Incorrect function call to getDisplayNameForFile should be getFileDisplayName r=frg a=frg
-
-diff --git a/suite/components/pref/content/pref-applications.js b/suite/components/pref/content/pref-applications.js
---- a/suite/components/pref/content/pref-applications.js
-+++ b/suite/components/pref/content/pref-applications.js
-@@ -1636,17 +1636,17 @@ var gApplicationsPane = {
- 
-       // Prompt the user to pick an app.  If they pick one, and it's a valid
-       // selection, then add it to the list of possible handlers.
-       fp.open(rv => {
-         if (rv == nsIFilePicker.returnOK && fp.file &&
-             this._isValidHandlerExecutable(fp.file)) {
-           handlerApp = Cc["@mozilla.org/uriloader/local-handler-app;1"]
-                          .createInstance(Ci.nsILocalHandlerApp);
--          handlerApp.name = getDisplayNameForFile(fp.file);
-+          handlerApp.name = getFileDisplayName(fp.file);
-           handlerApp.executable = fp.file;
- 
-           // Add the app to the type's list of possible handlers.
-           let handlerInfo = this._handledTypes[this._list.selectedItem.type];
-           handlerInfo.addPossibleApplicationHandler(handlerApp);
-         }
-         onSelectionDone();
-       });

+ 0 - 285
comm-esr60/comm-esr60/patches/1544222-67a1.patch

@@ -1,285 +0,0 @@
-# HG changeset patch
-# User Bill Gianopoulos <wgianopoulos@gmail.com>
-# Date 1554987972 14400
-#      Thu Apr 11 09:06:12 2019 -0400
-# Node ID 38970ece368e7f1c76b511c18d92b0ffc62942f0
-# Parent  564b71f55ffdbab89e6557273d0eddc96609da6d
-Bug 1544222 - Port bug 1526243 [Don't use nsGConfService in nsGNOMEShellService.cpp] to suite. r=IanN
-
-diff --git a/suite/components/shell/nsGNOMEShellService.cpp b/suite/components/shell/nsGNOMEShellService.cpp
---- a/suite/components/shell/nsGNOMEShellService.cpp
-+++ b/suite/components/shell/nsGNOMEShellService.cpp
-@@ -9,17 +9,16 @@
- #include "nsShellService.h"
- #include "nsIServiceManager.h"
- #include "nsIFile.h"
- #include "nsIProperties.h"
- #include "nsDirectoryServiceDefs.h"
- #include "nsIPrefService.h"
- #include "prenv.h"
- #include "nsString.h"
--#include "nsIGConfService.h"
- #include "nsIGIOService.h"
- #include "nsIGSettingsService.h"
- #include "nsIStringBundle.h"
- #include "nsIOutputStream.h"
- #include "nsIProcess.h"
- #include "nsServiceManagerUtils.h"
- #include "nsComponentManagerUtils.h"
- #include "nsIDOMHTMLImageElement.h"
-@@ -33,24 +32,16 @@
- #include <glib.h>
- #include <glib-object.h>
- #include <gtk/gtk.h>
- #include <gdk/gdk.h>
- #include <gdk-pixbuf/gdk-pixbuf.h>
- #include <limits.h>
- #include <stdlib.h>
- 
--// GConf registry key constants
--#define DG_BACKGROUND "/desktop/gnome/background"
--
--#define DGB_OPTIONS DG_BACKGROUND "/picture_options"
--#define DGB_IMAGE DG_BACKGROUND "/picture_filename"
--#define DGB_DRAWBG DG_BACKGROUND "/draw_background"
--#define DGB_COLOR DG_BACKGROUND "/primary_color"
--
- #define OGDB_SCHEMA "org.gnome.desktop.background"
- #define OGDB_OPTIONS "picture-options"
- #define OGDB_IMAGE "picture-uri"
- #define OGDB_DRAWBG "draw-background"
- #define OGDB_COLOR "primary-color"
- 
- struct ProtocolAssociation {
-   uint16_t app;
-@@ -168,36 +159,29 @@ NS_IMETHODIMP
- nsGNOMEShellService::IsDefaultClient(bool aStartupCheck, uint16_t aApps,
-                                      bool* aIsDefaultClient)
- {
-   *aIsDefaultClient = false;
- 
-   nsCString handler;
-   nsCOMPtr<nsIGIOMimeApp> app;
-   nsCOMPtr<nsIGIOService> giovfs = do_GetService(NS_GIOSERVICE_CONTRACTID);
--  nsCOMPtr<nsIGConfService> gconf = do_GetService(NS_GCONFSERVICE_CONTRACTID);
- 
-   for (unsigned i = 0; i < mozilla::ArrayLength(gProtocols); i++) {
-     if (aApps & gProtocols[i].app) {
-       nsDependentCString protocol(gProtocols[i].protocol);
-       if (giovfs) {
-         giovfs->GetAppForURIScheme(protocol, getter_AddRefs(app));
-         if (!app)
-           return NS_OK;
- 
-         if (NS_SUCCEEDED(app->GetCommand(handler)) &&
-             !HandlerMatchesAppName(handler.get()))
-          return NS_OK;
-       }
--
--      bool enabled;
--      if (gconf &&
--          NS_SUCCEEDED(gconf->GetAppForProtocol(protocol, &enabled, handler)) &&
--          (!enabled || !HandlerMatchesAppName(handler.get())))
--        return NS_OK;
-     }
-   }
- 
-   *aIsDefaultClient = true;
-   return NS_OK;
- }
- 
- NS_IMETHODIMP
-@@ -208,64 +192,64 @@ nsGNOMEShellService::SetDefaultClient(bo
- 
-   nsCOMPtr<nsIGIOMimeApp> app;
-   nsCOMPtr<nsIGIOService> giovfs = do_GetService(NS_GIOSERVICE_CONTRACTID);
-   if (giovfs) {
-     nsCString brandName;
-     rv = GetBrandName(brandName);
-     NS_ENSURE_SUCCESS(rv, rv);
- 
--    rv = giovfs->CreateAppFromCommand(mAppPath, brandName, getter_AddRefs(app));
--    NS_ENSURE_SUCCESS(rv, rv);
-+    rv = giovfs->FindAppFromCommand(mAppPath, getter_AddRefs(app));
-+    if (NS_FAILED(rv)) {
-+      // Application was not found in the list of installed applications
-+      // provided by OS. Fallback to create appInfo from command and name.
-+      rv = giovfs->CreateAppFromCommand(mAppPath, brandName, getter_AddRefs(app));
-+      NS_ENSURE_SUCCESS(rv, rv);
-+    }
-+
-+    // set handler for the protocols
-+    for (unsigned int i = 0; i < mozilla::ArrayLength(gProtocols); ++i) {
-+      if (aApps & gProtocols[i].app) {
-+        nsDependentCString protocol(gProtocols[i].protocol);
-+        if (app) {
-+          rv = app->SetAsDefaultForURIScheme(protocol);
-+          NS_ENSURE_SUCCESS(rv, rv);
-+        }
-+      }
-+    }
- 
-     for (unsigned i = 0; i < mozilla::ArrayLength(gMimeTypes); i++) {
-       if (aApps & gMimeTypes[i].app) {
-         rv = app->SetAsDefaultForMimeType(nsDependentCString(gMimeTypes[i].mimeType));
-         NS_ENSURE_SUCCESS(rv, rv);
-         rv = app->SetAsDefaultForFileExtensions(nsDependentCString(gMimeTypes[i].extensions));
-         NS_ENSURE_SUCCESS(rv, rv);
-       }
-     }
-   }
- 
--  nsCString appKeyValue;
--  nsCOMPtr<nsIGConfService> gconf = do_GetService(NS_GCONFSERVICE_CONTRACTID);
--  if (gconf) {
--    if (!mAppIsInPath)
--      appKeyValue = mAppPath;
--    else {
--      gchar* basename = g_path_get_basename(mAppPath.get());
--      appKeyValue = basename;
--      g_free(basename);
--    }
--    appKeyValue.AppendLiteral(" %s");
--  }
--
--  for (unsigned i = 0; i < mozilla::ArrayLength(gProtocols); i++) {
--    if (aApps & gProtocols[i].app) {
--      nsDependentCString protocol(gProtocols[i].protocol);
--      if (app) {
--        rv = app->SetAsDefaultForURIScheme(protocol);
--        NS_ENSURE_SUCCESS(rv, rv);
--      }
--      if (gconf) {
--        rv = gconf->SetAppForProtocol(protocol, appKeyValue);
--        NS_ENSURE_SUCCESS(rv, rv);
--      }
--    }
--  }
--
-   return NS_OK;
- }
- 
- NS_IMETHODIMP
- nsGNOMEShellService::GetCanSetDesktopBackground(bool* aResult)
- {
--  nsCOMPtr<nsIGConfService> gconf(do_GetService(NS_GCONFSERVICE_CONTRACTID));
--  *aResult = gconf && getenv("GNOME_DESKTOP_SESSION_ID");
-+  // for Gnome or desktops using the same GSettings keys
-+  const char *currentDesktop = getenv("XDG_CURRENT_DESKTOP");
-+  if (currentDesktop && strstr(currentDesktop, "GNOME") != nullptr) {
-+    *aResult = true;
-+    return NS_OK;
-+  }
-+  const char *gnomeSession = getenv("GNOME_DESKTOP_SESSION_ID");
-+  if (gnomeSession) {
-+    *aResult = true;
-+  } else {
-+    *aResult = false;
-+  }
-+
-   return NS_OK;
- }
- 
- NS_IMETHODIMP
- nsGNOMEShellService::SetDesktopBackground(nsIDOMElement* aElement,
-                                           int32_t aPosition,
-                                           const nsACString& aImageName)
- {
-@@ -323,19 +307,16 @@ nsGNOMEShellService::SetDesktopBackgroun
-     case BACKGROUND_FIT:
-       options = "scaled";
-       break;
-     default:
-       options = "centered";
-       break;
-   }
- 
--  // Try GSettings first. If we don't have GSettings or the right schema, fall back
--  // to using GConf instead. Note that if GSettings works ok, the changes get
--  // mirrored to GConf by the gsettings->gconf bridge in gnome-settings-daemon
-   nsCOMPtr<nsIGSettingsService> gsettings(do_GetService(NS_GSETTINGSSERVICE_CONTRACTID));
-   if (gsettings) {
-     nsCOMPtr<nsIGSettingsCollection> background_settings;
-     gsettings->GetCollectionForSchema(NS_LITERAL_CSTRING(OGDB_SCHEMA),
-                                       getter_AddRefs(background_settings));
-     if (background_settings) {
-       gchar *file_uri = g_filename_to_uri(filePath.get(), nullptr, nullptr);
-       if (!file_uri)
-@@ -346,31 +327,17 @@ nsGNOMEShellService::SetDesktopBackgroun
-       background_settings->SetString(NS_LITERAL_CSTRING(OGDB_IMAGE),
-                                      nsDependentCString(file_uri));
-       g_free(file_uri);
-       background_settings->SetBoolean(NS_LITERAL_CSTRING(OGDB_DRAWBG), true);
-       return NS_OK;
-     }
-   }
- 
--  // if the file was written successfully, set it as the system wallpaper
--  nsCOMPtr<nsIGConfService> gconf(do_GetService(NS_GCONFSERVICE_CONTRACTID));
--
--  if (gconf) {
--    gconf->SetString(NS_LITERAL_CSTRING(DGB_OPTIONS), nsDependentCString(options));
--
--    // Set the image to an empty string first to force a refresh (since we could
--    // be writing a new image on top of an existing SeaMonkey_wallpaper.png
--    // and nautilus doesn't monitor the file for changes).
--    gconf->SetString(NS_LITERAL_CSTRING(DGB_IMAGE), EmptyCString());
--    gconf->SetString(NS_LITERAL_CSTRING(DGB_IMAGE), filePath);
--    gconf->SetBool(NS_LITERAL_CSTRING(DGB_DRAWBG), true);
--  }
--
--  return NS_OK;
-+  return NS_ERROR_FAILURE;
- }
- 
- #define COLOR_16_TO_8_BIT(_c) ((_c) >> 8)
- 
- NS_IMETHODIMP
- nsGNOMEShellService::GetDesktopBackgroundColor(uint32_t *aColor)
- {
-   nsCOMPtr<nsIGSettingsService> gsettings(do_GetService(NS_GSETTINGSSERVICE_CONTRACTID));
-@@ -379,21 +346,16 @@ nsGNOMEShellService::GetDesktopBackgroun
-   if (gsettings)
-     gsettings->GetCollectionForSchema(NS_LITERAL_CSTRING(OGDB_SCHEMA),
-                                       getter_AddRefs(background_settings));
- 
-   nsCString background;
-   if (background_settings)
-     background_settings->GetString(NS_LITERAL_CSTRING(OGDB_COLOR),
-                                    background);
--  else {
--    nsCOMPtr<nsIGConfService> gconf(do_GetService(NS_GCONFSERVICE_CONTRACTID));
--    if (gconf)
--      gconf->GetString(NS_LITERAL_CSTRING(DGB_COLOR), background);
--  }
- 
-   if (background.IsEmpty())
-     return NS_ERROR_FAILURE;
- 
-   GdkColor color;
-   NS_ENSURE_TRUE(gdk_color_parse(background.get(), &color), NS_ERROR_FAILURE);
- 
-   *aColor = COLOR_16_TO_8_BIT(color.red) << 16 |
-@@ -423,21 +385,17 @@ nsGNOMEShellService::SetDesktopBackgroun
-                                       getter_AddRefs(background_settings));
-     if (background_settings) {
-       background_settings->SetString(NS_LITERAL_CSTRING(OGDB_COLOR),
-                                      nsDependentCString(colorString));
-       return NS_OK;
-     }
-   }
- 
--  nsCOMPtr<nsIGConfService> gconf = do_GetService(NS_GCONFSERVICE_CONTRACTID);
--  if (gconf)
--    gconf->SetString(NS_LITERAL_CSTRING(DGB_COLOR), nsDependentCString(colorString));
--
--  return NS_OK;
-+  return NS_ERROR_FAILURE;
- }
- 
- NS_IMETHODIMP
- nsGNOMEShellService::OpenApplicationWithURI(nsIFile* aApplication, const nsACString& aURI)
- {
-   nsresult rv;
-   nsCOMPtr<nsIProcess> process =
-     do_CreateInstance("@mozilla.org/process/util;1", &rv);

+ 0 - 46
comm-esr60/comm-esr60/patches/1546747-cookiesession-68a1.patch

@@ -1,46 +0,0 @@
-# HG changeset patch
-# User Frank-Rainer Grahl <frgrahl@gmx.net>
-# Parent  08464fe391d8e110e40ea824c1908ab999225cf7
-Bug 1546747 - Remove references to non existing element alwaysAcceptSession in cookie preferences. r=IanN a=IanN
-
-diff --git a/suite/components/pref/content/pref-cookies.js b/suite/components/pref/content/pref-cookies.js
---- a/suite/components/pref/content/pref-cookies.js
-+++ b/suite/components/pref/content/pref-cookies.js
-@@ -4,35 +4,31 @@
- 
- function Startup()
- {
-   SetDisables(false);
- }
- 
- function SetDisables(aSetFocus)
- {
-+  // Policy 1 was "ask before accepting" and is no longer valid.
-+
-   // const for Cookie Accept Policy
-   const kCookiesDisabled = 2;
-   // const for Cookie Lifetime Policy
--  const kAskBeforeAccepting = 1;
-   const kAcceptForNDays = 3;
- 
-   var behavior = document.getElementById("networkCookieBehavior");
-   var behaviorPref = document.getElementById(behavior.getAttribute("preference"));
- 
-   var lifetime = document.getElementById("networkCookieLifetime");
-   var lifetimePref = document.getElementById(lifetime.getAttribute("preference"));
-   var days = document.getElementById("lifetimeDays");
-   var daysPref = document.getElementById(days.getAttribute("preference"));
- 
--  var session = document.getElementById("alwaysAcceptSession");
--  var sessionPref = document.getElementById(session.getAttribute("preference"));
--
-   var cookiesDisabled = (behaviorPref.value == kCookiesDisabled);
-   lifetime.disabled = cookiesDisabled || lifetimePref.locked;
-   days.disabled = cookiesDisabled || daysPref.locked ||
-                   (lifetimePref.value != kAcceptForNDays);
--  session.disabled = cookiesDisabled || sessionPref.locked ||
--                     (lifetimePref.value != kAskBeforeAccepting);
- 
-   if (!days.disabled && aSetFocus)
-     days.focus();
- }

+ 0 - 726
comm-esr60/comm-esr60/patches/1547041-1-prefapptidy.patch

@@ -1,726 +0,0 @@
-# HG changeset patch
-# User Ian Neal <iann_cvs@blueyonder.co.uk>
-# Parent  512739a1f650a39f223c5d5361ed50fc33fb9f8e
-Bug 1547041 - Update and tidy SeaMonkey application preferences - Part 1: fixing commas, semicolons and old function naming. r=frg a=frg
-
-diff --git a/suite/components/pref/content/pref-applications.js b/suite/components/pref/content/pref-applications.js
---- a/suite/components/pref/content/pref-applications.js
-+++ b/suite/components/pref/content/pref-applications.js
-@@ -194,33 +194,33 @@ HandlerInfoWrapper.prototype = {
-     return this.wrappedHandlerInfo.preferredApplicationHandler;
-   },
- 
-   set preferredApplicationHandler(aNewValue) {
-     this.wrappedHandlerInfo.preferredApplicationHandler = aNewValue;
- 
-     // Make sure the preferred handler is in the set of possible handlers.
-     if (aNewValue)
--      this.addPossibleApplicationHandler(aNewValue)
-+      this.addPossibleApplicationHandler(aNewValue);
-   },
- 
-   get possibleApplicationHandlers() {
-     return this.wrappedHandlerInfo.possibleApplicationHandlers;
-   },
- 
--  addPossibleApplicationHandler: function(aNewHandler) {
-+  addPossibleApplicationHandler(aNewHandler) {
-     try {
-       if (this.possibleApplicationHandlers.indexOf(0, aNewHandler) != -1)
-         return;
-     } catch (e) {
-     }
-     this.possibleApplicationHandlers.appendElement(aNewHandler);
-   },
- 
--  removePossibleApplicationHandler: function(aHandler) {
-+  removePossibleApplicationHandler(aHandler) {
-     var defaultApp = this.preferredApplicationHandler;
-     if (defaultApp && aHandler.equals(defaultApp)) {
-       // If the app we remove was the default app, we must make sure
-       // it won't be used anymore
-       this.alwaysAskBeforeHandling = true;
-       this.preferredApplicationHandler = null;
-     }
- 
-@@ -340,43 +340,43 @@ HandlerInfoWrapper.prototype = {
-   // check for the presence of a user-configured record to determine whether
-   // or not this type is only handled by a plugin.  Filed as bug 395142.
-   handledOnlyByPlugin: undefined,
- 
-   get isDisabledPluginType() {
-     return this._getDisabledPluginTypes().indexOf(this.type) != -1;
-   },
- 
--  _getDisabledPluginTypes: function() {
-+  _getDisabledPluginTypes() {
-     var types = "";
- 
-     if (Services.prefs.prefHasUserValue(PREF_DISABLED_PLUGIN_TYPES))
-       types = Services.prefs.getCharPref(PREF_DISABLED_PLUGIN_TYPES);
- 
-     // Only split if the string isn't empty so we don't end up with an array
-     // containing a single empty string.
-     return types ? types.split(",") : [];
-   },
- 
--  disablePluginType: function() {
-+  disablePluginType() {
-     var disabledPluginTypes = this._getDisabledPluginTypes();
- 
-     if (disabledPluginTypes.indexOf(this.type) == -1)
-       disabledPluginTypes.push(this.type);
- 
-     Services.prefs.setCharPref(PREF_DISABLED_PLUGIN_TYPES,
-                                disabledPluginTypes.join(","));
- 
-     // Update the category manager so existing browser windows update.
-     categoryMgr.deleteCategoryEntry("Gecko-Content-Viewers",
-                                           this.type,
-                                           false);
-   },
- 
--  enablePluginType: function() {
-+  enablePluginType() {
-     var disabledPluginTypes = this._getDisabledPluginTypes();
- 
-     var type = this.type;
-     disabledPluginTypes = disabledPluginTypes.filter(v => v != type);
- 
-     Services.prefs.setCharPref(PREF_DISABLED_PLUGIN_TYPES,
-                                disabledPluginTypes.join(","));
- 
-@@ -388,33 +388,33 @@ HandlerInfoWrapper.prototype = {
-                        false,
-                        true);
-   },
- 
- 
-   //**************************************************************************//
-   // Storage
- 
--  store: function() {
-+  store() {
-     handlerSvc.store(this.wrappedHandlerInfo);
-   },
- 
- 
-   //**************************************************************************//
-   // Icons
- 
-   get smallIcon() {
-     return this._getIcon(16);
-   },
- 
-   get largeIcon() {
-     return this._getIcon(32);
-   },
- 
--  _getIcon: function(aSize) {
-+  _getIcon(aSize) {
-     if (this.primaryExtension)
-       return "moz-icon://goat." + this.primaryExtension + "?size=" + aSize;
- 
-     if (this.wrappedHandlerInfo instanceof Ci.nsIMIMEInfo)
-       return "moz-icon://goat?size=" + aSize + "&contentType=" + this.type;
- 
-     // We're falling back to a generic icon when we can't get a URL for one
-     // (for example in the case of protocol schemes).
-@@ -445,16 +445,18 @@ HandlerInfoWrapper.prototype = {
-  * don't provide.
-  */
- 
- function FeedHandlerInfo(aMIMEType) {
-   HandlerInfoWrapper.call(this, aMIMEType, null);
- }
- 
- FeedHandlerInfo.prototype = {
-+  __proto__: HandlerInfoWrapper.prototype,
-+
-   //**************************************************************************//
-   // nsIHandlerInfo
- 
-   get description() {
-     return document.getElementById("bundlePrefApplications")
-                    .getString(this.typeClass);
-   },
- 
-@@ -540,17 +542,17 @@ FeedHandlerInfo.prototype = {
- 
-       removeElementAt: function(aIndex) {
-         this._removed.push(this._inner[aIndex]);
-         this._inner.splice(aIndex, 1);
-       },
- 
-       queryElementAt: function(aIndex, aInterface) {
-         return this._inner[aIndex].QueryInterface(aInterface);
--      }
-+      },
-     };
- 
-     // Add the selected local app if it's different from the OS default handler.
-     // Unlike for other types, we can store only one local app at a time for the
-     // feed type, since we store it in a preference that historically stores
-     // only a single path.  But we display all the local apps the user chooses
-     // while the prefpane is open, only dropping the list when the user closes
-     // the prefpane, for maximum usability and consistency with other types.
-@@ -704,17 +706,17 @@ FeedHandlerInfo.prototype = {
-   //**************************************************************************//
-   // Storage
- 
-   // Changes to the preferred action and handler take effect immediately
-   // (we write them out to the preferences right as they happen),
-   // so we when the controller calls store() after modifying the handlers,
-   // the only thing we need to store is the removal of possible handlers
-   // XXX Should we hold off on making the changes until this method gets called?
--  store: function() {
-+  store() {
-     for (let app of this._possibleApplicationHandlers._removed) {
-       if (app instanceof Ci.nsILocalHandlerApp) {
-         let pref = document.getElementById(PREF_FEED_SELECTED_APP);
-         var preferredAppFile = pref.value;
-         if (preferredAppFile) {
-           let preferredApp = getLocalHandlerApp(preferredAppFile);
-           if (app.equals(preferredApp))
-             pref.reset();
-@@ -734,46 +736,44 @@ FeedHandlerInfo.prototype = {
- 
-   smallIcon: null,
- 
-   largeIcon: null,
- 
-   // The type class is used for setting icons through CSS for types that don't
-   // explicitly set their icons.
-   typeClass: "webFeed",
--
--  __proto__: HandlerInfoWrapper.prototype
- };
- 
- var feedHandlerInfo = {
-   __proto__: new FeedHandlerInfo(TYPE_MAYBE_FEED),
-   _prefSelectedApp: PREF_FEED_SELECTED_APP,
-   _prefSelectedWeb: PREF_FEED_SELECTED_WEB,
-   _prefSelectedAction: PREF_FEED_SELECTED_ACTION,
-   _prefSelectedReader: PREF_FEED_SELECTED_READER,
--  typeClass: "webFeed"
--}
-+  typeClass: "webFeed",
-+};
- 
- var videoFeedHandlerInfo = {
-   __proto__: new FeedHandlerInfo(TYPE_MAYBE_VIDEO_FEED),
-   _prefSelectedApp: PREF_VIDEO_FEED_SELECTED_APP,
-   _prefSelectedWeb: PREF_VIDEO_FEED_SELECTED_WEB,
-   _prefSelectedAction: PREF_VIDEO_FEED_SELECTED_ACTION,
-   _prefSelectedReader: PREF_VIDEO_FEED_SELECTED_READER,
--  typeClass: "videoPodcastFeed"
--}
-+  typeClass: "videoPodcastFeed",
-+};
- 
- var audioFeedHandlerInfo = {
-   __proto__: new FeedHandlerInfo(TYPE_MAYBE_AUDIO_FEED),
-   _prefSelectedApp: PREF_AUDIO_FEED_SELECTED_APP,
-   _prefSelectedWeb: PREF_AUDIO_FEED_SELECTED_WEB,
-   _prefSelectedAction: PREF_AUDIO_FEED_SELECTED_ACTION,
-   _prefSelectedReader: PREF_AUDIO_FEED_SELECTED_READER,
--  typeClass: "audioPodcastFeed"
--}
-+  typeClass: "audioPodcastFeed",
-+};
- 
- 
- //****************************************************************************//
- // Prefpane Controller
- 
- var gApplicationsPane = {
-   // The set of types the app knows how to handle.  A hash of HandlerInfoWrapper
-   // objects, indexed by type.
-@@ -803,17 +803,17 @@ var gApplicationsPane = {
-   _prefsBundle    : null,
-   _list           : null,
-   _filter         : null,
- 
- 
-   //**************************************************************************//
-   // Initialization & Destruction
- 
--  init: function() {
-+  init() {
-     // Initialize shortcuts to some commonly accessed elements & values.
-     this._brandShortName =
-       document.getElementById("bundleBrand").getString("brandShortName");
-     this._prefsBundle = document.getElementById("bundlePrefApplications");
-     this._list = document.getElementById("handlersView");
-     this._filter = document.getElementById("filter");
- 
-     // Observe preferences that influence what we display so we can rebuild
-@@ -856,17 +856,17 @@ var gApplicationsPane = {
-     this._rebuildVisibleTypes();
-     this._sortVisibleTypes();
-     this._rebuildView();
- 
-     // Notify observers that the UI is now ready
-     Services.obs.notifyObservers(window, "app-handler-pane-loaded", null);
-   },
- 
--  destroy: function() {
-+  destroy() {
-     this._list.removeEventListener("command", this, false);
-     this._list.removeEventListener("select", this, false);
-     window.removeEventListener("unload", this, false);
-     Services.prefs.removeObserver(PREF_SHOW_PLUGINS_IN_LIST, this);
-     Services.prefs.removeObserver(PREF_HIDE_PLUGINS_WITHOUT_EXTENSIONS, this);
-     Services.prefs.removeObserver(PREF_FEED_SELECTED_APP, this);
-     Services.prefs.removeObserver(PREF_FEED_SELECTED_WEB, this);
-     Services.prefs.removeObserver(PREF_FEED_SELECTED_ACTION, this);
-@@ -892,17 +892,17 @@ var gApplicationsPane = {
- 
-     throw Cr.NS_ERROR_NO_INTERFACE;
-   },
- 
- 
-   //**************************************************************************//
-   // nsIObserver
- 
--  observe: function (aSubject, aTopic, aData) {
-+  observe(aSubject, aTopic, aData) {
-     // Rebuild the list when there are changes to preferences that influence
-     // whether or not to show certain entries in the list.
-     if (aTopic == "nsPref:changed" && !this._storingAction) {
-       // These two prefs alter the list of visible types, so we have to rebuild
-       // that list when they change.
-       if (aData == PREF_SHOW_PLUGINS_IN_LIST ||
-           aData == PREF_HIDE_PLUGINS_WITHOUT_EXTENSIONS) {
-         this._rebuildVisibleTypes();
-@@ -914,17 +914,17 @@ var gApplicationsPane = {
-       this._rebuildView();
-     }
-   },
- 
- 
-   //**************************************************************************//
-   // nsIDOMEventListener
- 
--  handleEvent: function(aEvent) {
-+  handleEvent(aEvent) {
-     switch (aEvent.type) {
-       case "unload":
-         this.destroy();
-         break;
-       case "select":
-         if (this._list.selectedItem)
-           this._list.setAttribute("lastSelectedType",
-                                   this._list.selectedItem.type);
-@@ -956,23 +956,23 @@ var gApplicationsPane = {
-         }
-     }
-   },
- 
- 
-   //**************************************************************************//
-   // Composed Model Construction
- 
--  _loadData: function() {
-+  _loadData() {
-     this._loadFeedHandler();
-     this._loadPluginHandlers();
-     this._loadApplicationHandlers();
-   },
- 
--  _loadFeedHandler: function() {
-+  _loadFeedHandler() {
-     this._handledTypes[TYPE_MAYBE_FEED] = feedHandlerInfo;
-     feedHandlerInfo.handledOnlyByPlugin = false;
- 
-     this._handledTypes[TYPE_MAYBE_VIDEO_FEED] = videoFeedHandlerInfo;
-     videoFeedHandlerInfo.handledOnlyByPlugin = false;
- 
-     this._handledTypes[TYPE_MAYBE_AUDIO_FEED] = audioFeedHandlerInfo;
-     audioFeedHandlerInfo.handledOnlyByPlugin = false;
-@@ -993,17 +993,17 @@ var gApplicationsPane = {
-    *
-    * I'll also note that my reading of nsPluginTag::RegisterWithCategoryManager
-    * suggests that enabledPlugin is only determined during registration
-    * and does not get updated when plugin.disable_full_page_plugin_for_types
-    * changes (unless modification of that preference spawns reregistration).
-    * So even if we could use enabledPlugin to get the plugin that would be used,
-    * we'd still need to check the pref ourselves to find out if it's enabled.
-    */
--  _loadPluginHandlers: function() {
-+  _loadPluginHandlers() {
-     let pluginHost = Cc["@mozilla.org/plugin/host;1"]
-                        .getService(Ci.nsIPluginHost);
-     for (let pluginTag of pluginHost.getPluginTags()) {
-       for (let type of pluginTag.getMimeTypes()) {
-         let handlerInfoWrapper;
-         if (type in this._handledTypes)
-           handlerInfoWrapper = this._handledTypes[type];
-         else {
-@@ -1017,17 +1017,17 @@ var gApplicationsPane = {
-         handlerInfoWrapper.plugin = pluginHost.getPluginTagForType(type);
-       }
-     }
-   },
- 
-   /**
-    * Load the set of handlers defined by the application datastore.
-    */
--  _loadApplicationHandlers: function() {
-+  _loadApplicationHandlers() {
-     var wrappedHandlerInfos = handlerSvc.enumerate();
-     while (wrappedHandlerInfos.hasMoreElements()) {
-       let wrappedHandlerInfo =
-         wrappedHandlerInfos.getNext().QueryInterface(Ci.nsIHandlerInfo);
-       let type = wrappedHandlerInfo.type;
- 
-       let handlerInfoWrapper;
-       if (type in this._handledTypes)
-@@ -1040,17 +1040,17 @@ var gApplicationsPane = {
-       handlerInfoWrapper.handledOnlyByPlugin = false;
-     }
-   },
- 
- 
-   //**************************************************************************//
-   // View Construction
- 
--  _rebuildVisibleTypes: function() {
-+  _rebuildVisibleTypes() {
-     // Reset the list of visible types and the visible type description counts.
-     this._visibleTypes = [];
-     this._visibleTypeDescriptionCount = {};
- 
-     // Get the preferences that help determine what types to show.
-     var showPlugins = Services.prefs.getBoolPref(PREF_SHOW_PLUGINS_IN_LIST);
-     var hidePluginsWithoutExtensions =
-         Services.prefs.getBoolPref(PREF_HIDE_PLUGINS_WITHOUT_EXTENSIONS);
-@@ -1079,17 +1079,17 @@ var gApplicationsPane = {
- 
-       if (handlerInfo.description in this._visibleTypeDescriptionCount)
-         this._visibleTypeDescriptionCount[handlerInfo.description]++;
-       else
-         this._visibleTypeDescriptionCount[handlerInfo.description] = 1;
-     }
-   },
- 
--  _rebuildView: function() {
-+  _rebuildView() {
-     // Clear the list of entries (the first 2 elements are <listcols> and
-     // <listhead>, they should never get removed).
-     while (this._list.childNodes.length > 2)
-       this._list.lastChild.remove();
- 
-     var visibleTypes = this._visibleTypes;
- 
-     // If the user is filtering the list, then only show matching types.
-@@ -1115,33 +1115,33 @@ var gApplicationsPane = {
-         else
-           item.setAttribute("appHandlerIcon", "app");
-       }
- 
-       this._list.appendChild(item);
-     }
-   },
- 
--  _matchesFilter: function(aType) {
-+  _matchesFilter(aType) {
-     var filterValue = this._filter.value.toLowerCase();
-     return this._describeType(aType).toLowerCase().indexOf(filterValue) != -1 ||
-            this._describePreferredAction(aType).toLowerCase().indexOf(filterValue) != -1;
-   },
- 
-   /**
-    * Describe, in a human-readable fashion, the type represented by the given
-    * handler info object.  Normally this is just the description provided by
-    * the info object, but if more than one object presents the same description,
-    * then we annotate the duplicate descriptions with the type itself to help
-    * users distinguish between those types.
-    *
-    * @param aHandlerInfo {nsIHandlerInfo} the type being described
-    * @returns {string} a description of the type
-    */
--  _describeType: function(aHandlerInfo) {
-+  _describeType(aHandlerInfo) {
-     if (this._visibleTypeDescriptionCount[aHandlerInfo.description] > 1)
-       return this._prefsBundle.getFormattedString("typeDescriptionWithType",
-                                                   [aHandlerInfo.description,
-                                                    aHandlerInfo.type]);
- 
-     return aHandlerInfo.description;
-   },
- 
-@@ -1152,17 +1152,17 @@ var gApplicationsPane = {
-    * XXX Should this be part of the HandlerInfoWrapper interface?  It would
-    * violate the separation of model and view, but it might make more sense
-    * nonetheless (f.e. it would make sortTypes easier).
-    *
-    * @param aHandlerInfo {nsIHandlerInfo} the type whose preferred action
-    *                                      is being described
-    * @returns {string} a description of the action
-    */
--  _describePreferredAction: function(aHandlerInfo) {
-+  _describePreferredAction(aHandlerInfo) {
-     // alwaysAskBeforeHandling overrides the preferred action, so if that flag
-     // is set, then describe that behavior instead.  For most types, this is
-     // the "alwaysAsk" string, but for the feed type we show something special.
-     if (aHandlerInfo.alwaysAskBeforeHandling) {
-       if (isFeedType(aHandlerInfo.type))
-         return this._prefsBundle.getFormattedString("previewInApp",
-                                                     [this._brandShortName]);
-       else
-@@ -1213,17 +1213,17 @@ var gApplicationsPane = {
- 
-   /**
-    * Whether or not the given handler app is valid.
-    *
-    * @param aHandlerApp {nsIHandlerApp} the handler app in question
-    *
-    * @returns {boolean} whether or not it's valid
-    */
--  isValidHandlerApp: function(aHandlerApp) {
-+  isValidHandlerApp(aHandlerApp) {
-     if (!aHandlerApp)
-       return false;
- 
-     if (aHandlerApp instanceof Ci.nsILocalHandlerApp)
-       return this._isValidHandlerExecutable(aHandlerApp.executable);
- 
-     if (aHandlerApp instanceof Ci.nsIWebHandlerApp)
-       return aHandlerApp.uriTemplate;
-@@ -1232,32 +1232,32 @@ var gApplicationsPane = {
-       return aHandlerApp.uri;
-  
-     if (aHandlerApp instanceof Ci.nsIGIOMimeApp)
-       return aHandlerApp.command;
- 
-     return false;
-   },
- 
--  _isValidHandlerExecutable: function(aExecutable) {
-+  _isValidHandlerExecutable(aExecutable) {
-     var file = Services.dirsvc.get("XREExeF",
-                                    Ci.nsILocalFile);
-     return aExecutable &&
-            aExecutable.exists() &&
-            aExecutable.isExecutable() &&
-            aExecutable.leafName != file.leafName;
-   },
- 
-   /**
-    * Rebuild the actions menu for the selected entry. Gets called by
-    * the listcell constructor when an entry in the list gets selected.
-    * Note that this would not work from onselect on the listbox because
-    * the XBL needs to be applied _before_ calling this function!
-    */
--  rebuildActionsMenu: function() {
-+  rebuildActionsMenu() {
-     var typeItem = this._list.selectedItem;
-     var handlerInfo = this._handledTypes[typeItem.type];
-     var cell =
-       document.getAnonymousElementByAttribute(typeItem, "anonid", "action-cell");
-     var menu =
-       document.getAnonymousElementByAttribute(cell, "anonid", "action-menu");
-     var menuPopup = menu.menupopup;
- 
-@@ -1468,17 +1468,17 @@ var gApplicationsPane = {
-   //**************************************************************************//
-   // Sorting & Filtering
- 
-   _sortColumn: null,
- 
-   /**
-    * Sort the list when the user clicks on a column header.
-    */
--  sort: function (event) {
-+  sort(event) {
-     var column = event.target;
- 
-     // If the user clicked on a new sort column, remove the direction indicator
-     // from the old column.
-     if (this._sortColumn && this._sortColumn != column)
-       this._sortColumn.removeAttribute("sortDirection");
- 
-     this._sortColumn = column;
-@@ -1491,17 +1491,17 @@ var gApplicationsPane = {
- 
-     this._sortVisibleTypes();
-     this._rebuildView();
-   },
- 
-   /**
-    * Sort the list of visible types by the current sort column/direction.
-    */
--  _sortVisibleTypes: function() {
-+  _sortVisibleTypes() {
-     var t = this;
- 
-     function sortByType(a, b) {
-       return t._describeType(a).toLowerCase()
-               .localeCompare(t._describeType(b).toLowerCase());
-     }
- 
-     function sortByAction(a, b) {
-@@ -1521,28 +1521,28 @@ var gApplicationsPane = {
-     if (this._sortColumn.getAttribute("sortDirection") == "descending")
-       this._visibleTypes.reverse();
-   },
- 
- 
-   //**************************************************************************//
-   // Changes
- 
--  onSelectAction: function(aActionItem) {
-+  onSelectAction(aActionItem) {
-     this._storingAction = true;
- 
-     try {
-       this._storeAction(aActionItem);
-     }
-     finally {
-       this._storingAction = false;
-     }
-   },
- 
--  _storeAction: function(aActionItem) {
-+  _storeAction(aActionItem) {
-     var typeItem = this._list.selectedItem;
-     var handlerInfo = this._handledTypes[typeItem.type];
- 
-     let action = parseInt(aActionItem.getAttribute("value"));
- 
-     // Set the plugin state if we're enabling or disabling a plugin.
-     if (action == kActionUsePlugin)
-       handlerInfo.enablePluginType();
-@@ -1577,17 +1577,17 @@ var gApplicationsPane = {
-       var sysIcon = this._getIconURLForPreferredAction(handlerInfo);
-       if (sysIcon)
-         typeItem.setAttribute("actionIcon", sysIcon);
-       else
-         typeItem.setAttribute("appHandlerIcon", "app");
-     }
-   },
- 
--  manageApp: function() {
-+  manageApp() {
-     var typeItem = this._list.selectedItem;
-     var handlerInfo = this._handledTypes[typeItem.type];
- 
-     document.documentElement.openSubDialog("chrome://communicator/content/pref/pref-applicationManager.xul",
-                                            "", handlerInfo);
- 
-     // Rebuild the actions menu so that we revert to the previous selection,
-     // or "Always ask" if the previous default application has been removed
-@@ -1600,17 +1600,17 @@ var gApplicationsPane = {
-       var sysIcon = this._getIconURLForPreferredAction(handlerInfo);
-       if (sysIcon)
-         typeItem.setAttribute("actionIcon", sysIcon);
-       else
-         typeItem.setAttribute("appHandlerIcon", "app");
-     }
-   },
- 
--  chooseApp: function() {
-+  chooseApp() {
-     var handlerApp;
-     let onSelectionDone = function() {
-       // Rebuild the actions menu whether the user picked an app or canceled.
-       // If they picked an app, we want to add the app to the menu and select it.
-       // If they canceled, we want to go back to their previous selection.
-       this.rebuildActionsMenu();
- 
-       // If the user picked a new app from the menu, select it.
-@@ -1681,17 +1681,17 @@ var gApplicationsPane = {
-           let handlerInfo = this._handledTypes[this._list.selectedItem.type];
-           handlerInfo.addPossibleApplicationHandler(handlerApp);
-         }
-         onSelectionDone();
-       });
-     }
-   },
- 
--  _setIconClassForPreferredAction: function(aHandlerInfo, aElement) {
-+  _setIconClassForPreferredAction(aHandlerInfo, aElement) {
-     // If this returns true, the attribute that CSS sniffs for was set to something
-     // so you shouldn't manually set an icon URI.
-     // This removes the existing actionIcon attribute if any, even if returning false.
-     aElement.removeAttribute("actionIcon");
- 
-     if (aHandlerInfo.alwaysAskBeforeHandling) {
-       aElement.setAttribute("appHandlerIcon", "ask");
-       return true;
-@@ -1712,68 +1712,68 @@ var gApplicationsPane = {
-       case kActionUsePlugin:
-         aElement.setAttribute("appHandlerIcon", "plugin");
-         return true;
-     }
-     aElement.removeAttribute("appHandlerIcon");
-     return false;
-   },
- 
--  _getIconURLForPreferredAction: function(aHandlerInfo) {
-+  _getIconURLForPreferredAction(aHandlerInfo) {
-     switch (aHandlerInfo.preferredAction) {
-       case Ci.nsIHandlerInfo.useSystemDefault:
-         return this._getIconURLForSystemDefault(aHandlerInfo);
- 
-       case Ci.nsIHandlerInfo.useHelperApp:
-         let preferredApp = aHandlerInfo.preferredApplicationHandler;
-         if (this.isValidHandlerApp(preferredApp))
-           return this._getIconURLForHandlerApp(preferredApp);
-         break;
-     }
-     // This should never happen, but if preferredAction is set to some weird
-     // value, then fall back to the generic application icon.
-     return null;
-   },
- 
--  _getIconURLForHandlerApp: function(aHandlerApp) {
-+  _getIconURLForHandlerApp(aHandlerApp) {
-     if (aHandlerApp instanceof Ci.nsILocalHandlerApp)
-       return this._getIconURLForFile(aHandlerApp.executable);
- 
-     if (Services.prefs.getBoolPref("browser.chrome.favicons")) { // q.v. Bug 514671
-       if (aHandlerApp instanceof Ci.nsIWebHandlerApp)
-         return this._getIconURLForWebApp(aHandlerApp.uriTemplate);
- 
-       if (aHandlerApp instanceof Ci.nsIWebContentHandlerInfo)
--        return this._getIconURLForWebApp(aHandlerApp.uri)
-+        return this._getIconURLForWebApp(aHandlerApp.uri);
-     }
- 
-     // We know nothing about other kinds of handler apps.
-     return "";
-   },
- 
--  _getIconURLForFile: function(aFile) {
-+  _getIconURLForFile(aFile) {
-     var fph = Services.io.getProtocolHandler("file")
-                          .QueryInterface(Ci.nsIFileProtocolHandler);
-     var urlSpec = fph.getURLSpecFromFile(aFile);
- 
-     return "moz-icon://" + urlSpec + "?size=16";
-   },
- 
--  _getIconURLForWebApp: function(aWebAppURITemplate) {
-+  _getIconURLForWebApp(aWebAppURITemplate) {
-     var uri = Services.io.newURI(aWebAppURITemplate);
- 
-     // Unfortunately we need to use favicon.ico here, but we don't know
-     // about any other possibility to retrieve an icon for the web app/site
-     // without loading a specific full URL and parsing it for a possible
-     // shortcut icon.
- 
-     return /^https?/.test(uri.scheme) ? uri.resolve("/favicon.ico") : "";
-   },
- 
--  _getIconURLForSystemDefault: function(aHandlerInfo) {
-+  _getIconURLForSystemDefault(aHandlerInfo) {
-     // Handler info objects for MIME types on some OSes implement a property bag
-     // interface from which we can get an icon for the default app, so if we're
-     // dealing with a MIME type on one of those OSes, then try to get the icon.
-     if ("wrappedHandlerInfo" in aHandlerInfo) {
-       let wrappedHandlerInfo = aHandlerInfo.wrappedHandlerInfo;
- 
-       if (wrappedHandlerInfo instanceof Ci.nsIMIMEInfo &&
-           wrappedHandlerInfo instanceof Ci.nsIPropertyBag) {

+ 0 - 414
comm-esr60/comm-esr60/patches/1547041-2-prefapptidy.patch

@@ -1,414 +0,0 @@
-# HG changeset patch
-# User Ian Neal <iann_cvs@blueyonder.co.uk>
-# Parent  f9eb14c5810cb182dd4a2b1de3bf4224b3502745
-Bug 1547041 - Update and tidy SeaMonkey application preferences - Part 2: general fixes up to esr60 level. r=frg a=frg
-
-diff --git a/suite/components/pref/content/pref-applicationManager.js b/suite/components/pref/content/pref-applicationManager.js
---- a/suite/components/pref/content/pref-applicationManager.js
-+++ b/suite/components/pref/content/pref-applicationManager.js
-@@ -1,17 +1,12 @@
- /* This Source Code Form is subject to the terms of the Mozilla Public
-  * License, v. 2.0. If a copy of the MPL was not distributed with this
-  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
- 
--// As pref-applications.js is always loaded, we can (and should!) reuse
--// the nsI* constants from there, if needed also any services we need.
--
--Cu.import("resource://gre/modules/Services.jsm");
--
- var gAppManagerDialog = {
-   _removed: [],
- 
-   init: function appManager_init() {
-     this.handlerInfo = window.arguments[0];
- 
-     var bundle = document.getElementById("appManagerBundle");
-     var contentText;
-@@ -25,16 +20,19 @@ var gAppManagerDialog = {
-       contentText = bundle.getFormattedString(key, [description]);
-     }
-     document.getElementById("appDescription").textContent = contentText;
- 
-     var list = document.getElementById("appList");
-     var apps = this.handlerInfo.possibleApplicationHandlers.enumerate();
-     while (apps.hasMoreElements()) {
-       let app = apps.getNext();
-+      if (!gApplicationsPane.isValidHandlerApp(app))
-+        continue;
-+
-       app.QueryInterface(Ci.nsIHandlerApp);
-       var item = list.appendItem(app.name);
-       item.className = "listitem-iconic";
-       item.setAttribute("image", gApplicationsPane._getIconURLForHandlerApp(app));
-       item.app = app;
-     }
- 
-     list.selectedIndex = 0;
-diff --git a/suite/components/pref/content/pref-applications.js b/suite/components/pref/content/pref-applications.js
---- a/suite/components/pref/content/pref-applications.js
-+++ b/suite/components/pref/content/pref-applications.js
-@@ -178,18 +178,18 @@ HandlerInfoWrapper.prototype = {
-   type: null,
- 
-   get description() {
-     if (this.wrappedHandlerInfo.description)
-       return this.wrappedHandlerInfo.description;
- 
-     if (this.primaryExtension) {
-       var extension = this.primaryExtension.toUpperCase();
--      return document.getElementById("bundlePrefApplications")
--                     .getFormattedString("fileEnding", [extension]);
-+      return gApplicationsPane._prefsBundle.getFormattedString("fileEnding",
-+                                                               [extension]);
-     }
- 
-     return this.type;
-   },
- 
-   get preferredApplicationHandler() {
-     return this.wrappedHandlerInfo.preferredApplicationHandler;
-   },
-@@ -202,37 +202,40 @@ HandlerInfoWrapper.prototype = {
-       this.addPossibleApplicationHandler(aNewValue);
-   },
- 
-   get possibleApplicationHandlers() {
-     return this.wrappedHandlerInfo.possibleApplicationHandlers;
-   },
- 
-   addPossibleApplicationHandler(aNewHandler) {
--    try {
--      if (this.possibleApplicationHandlers.indexOf(0, aNewHandler) != -1)
-+    var possibleApps = this.possibleApplicationHandlers.enumerate();
-+    while (possibleApps.hasMoreElements()) {
-+      if (possibleApps.getNext().equals(aNewHandler))
-         return;
--    } catch (e) {
-     }
-     this.possibleApplicationHandlers.appendElement(aNewHandler);
-   },
- 
-   removePossibleApplicationHandler(aHandler) {
-     var defaultApp = this.preferredApplicationHandler;
-     if (defaultApp && aHandler.equals(defaultApp)) {
-       // If the app we remove was the default app, we must make sure
-       // it won't be used anymore
-       this.alwaysAskBeforeHandling = true;
-       this.preferredApplicationHandler = null;
-     }
- 
--    try {
--      var handlerIdx = this.possibleApplicationHandlers.indexOf(0, aHandler);
--      this.possibleApplicationHandlers.removeElementAt(handlerIdx);
--    } catch (e) {
-+    var handlers = this.possibleApplicationHandlers;
-+    for (var i = 0; i < handlers.length; ++i) {
-+      var handler = handlers.queryElementAt(i, Ci.nsIHandlerApp);
-+      if (handler.equals(aHandler)) {
-+        handlers.removeElementAt(i);
-+        break;
-+      }
-     }
-   },
- 
-   get hasDefaultHandler() {
-     return this.wrappedHandlerInfo.hasDefaultHandler;
-   },
- 
-   get defaultDescription() {
-@@ -257,16 +260,24 @@ HandlerInfoWrapper.prototype = {
-              Ci.nsIHandlerInfo.useSystemDefault :
-              Ci.nsIHandlerInfo.saveToDisk;
-     }
- 
-     return this.wrappedHandlerInfo.preferredAction;
-   },
- 
-   set preferredAction(aNewValue) {
-+    // If the action is to use the plugin,
-+    // we must set the preferred action to "save to disk".
-+    // But only if it's not currently the preferred action.
-+    if ((aNewValue == kActionUsePlugin) &&
-+        (this.preferredAction != Ci.nsIHandlerInfo.saveToDisk)) {
-+      aNewValue = Ci.nsIHandlerInfo.saveToDisk;
-+    }
-+
-     // We don't modify the preferred action if the new action is to use a plugin
-     // because handler info objects don't understand our custom "use plugin"
-     // value.  Also, leaving it untouched means that we can automatically revert
-     // to the old setting if the user ever removes the plugin.
- 
-     if (aNewValue != kActionUsePlugin)
-       this.wrappedHandlerInfo.preferredAction = aNewValue;
-   },
-@@ -337,34 +348,34 @@ HandlerInfoWrapper.prototype = {
-   //
-   // FIXME: once handler info records are broken up into OS-provided records
-   // and user-configured records, stop using this boolean flag and simply
-   // check for the presence of a user-configured record to determine whether
-   // or not this type is only handled by a plugin.  Filed as bug 395142.
-   handledOnlyByPlugin: undefined,
- 
-   get isDisabledPluginType() {
--    return this._getDisabledPluginTypes().indexOf(this.type) != -1;
-+    return this._getDisabledPluginTypes().includes(this.type);
-   },
- 
-   _getDisabledPluginTypes() {
-     var types = "";
- 
-     if (Services.prefs.prefHasUserValue(PREF_DISABLED_PLUGIN_TYPES))
-       types = Services.prefs.getCharPref(PREF_DISABLED_PLUGIN_TYPES);
- 
-     // Only split if the string isn't empty so we don't end up with an array
-     // containing a single empty string.
-     return types ? types.split(",") : [];
-   },
- 
-   disablePluginType() {
-     var disabledPluginTypes = this._getDisabledPluginTypes();
- 
--    if (disabledPluginTypes.indexOf(this.type) == -1)
-+    if (!disabledPluginTypes.includes(this.type))
-       disabledPluginTypes.push(this.type);
- 
-     Services.prefs.setCharPref(PREF_DISABLED_PLUGIN_TYPES,
-                                disabledPluginTypes.join(","));
- 
-     // Update the category manager so existing browser windows update.
-     categoryMgr.deleteCategoryEntry("Gecko-Content-Viewers",
-                                           this.type,
-@@ -451,18 +462,17 @@ function FeedHandlerInfo(aMIMEType) {
- 
- FeedHandlerInfo.prototype = {
-   __proto__: HandlerInfoWrapper.prototype,
- 
-   //**************************************************************************//
-   // nsIHandlerInfo
- 
-   get description() {
--    return document.getElementById("bundlePrefApplications")
--                   .getString(this.typeClass);
-+    return gApplicationsPane._prefsBundle.getString(this.typeClass);
-   },
- 
-   get preferredApplicationHandler() {
-     switch (document.getElementById(this._prefSelectedReader).value) {
-       case "client":
-         var file = document.getElementById(this._prefSelectedApp).value;
-         if (file)
-           return getLocalHandlerApp(file);
-@@ -510,24 +520,17 @@ FeedHandlerInfo.prototype = {
- 
-     // A minimal implementation of nsIMutableArray.  It only supports the two
-     // methods its callers invoke, namely appendElement, nsIArray::enumerate
-     // and nsIArray::indexOf.
-     this._possibleApplicationHandlers = {
-       _inner: [],
-       _removed: [],
- 
--      QueryInterface: function(aIID) {
--        if (aIID.equals(Ci.nsIMutableArray) ||
--            aIID.equals(Ci.nsIArray) ||
--            aIID.equals(Ci.nsISupports))
--          return this;
--
--        throw Cr.NS_ERROR_NO_INTERFACE;
--      },
-+      QueryInterface: XPCOMUtils.generateQI([Ci.nsIMutableArray, Ci.nsIArray]),
- 
-       get length() {
-         return this._inner.length;
-       },
- 
-       enumerate: function() {
-         return new ArrayEnumerator(this._inner);
-       },
-@@ -559,22 +562,20 @@ FeedHandlerInfo.prototype = {
-     var preferredAppFile = document.getElementById(this._prefSelectedApp).value;
-     if (preferredAppFile) {
-       let preferredApp = getLocalHandlerApp(preferredAppFile);
-       let defaultApp = this._defaultApplicationHandler;
-       if (!defaultApp || !defaultApp.equals(preferredApp))
-         this._possibleApplicationHandlers.appendElement(preferredApp);
-     }
- 
--    if (converterSvc) {
--      // Add the registered web handlers.  There can be any number of these.
--      var webHandlers = converterSvc.getContentHandlers(this.type, {});
--      for (let webHandler of webHandlers)
--        this._possibleApplicationHandlers.appendElement(webHandler);
--    }
-+    // Add the registered web handlers.  There can be any number of these.
-+    var webHandlers = converterSvc.getContentHandlers(this.type);
-+    for (let webHandler of webHandlers)
-+      this._possibleApplicationHandlers.appendElement(webHandler);
- 
-     return this._possibleApplicationHandlers;
-   },
- 
-   __defaultApplicationHandler: undefined,
-   get _defaultApplicationHandler() {
-     if (this.__defaultApplicationHandler !== undefined)
-       return this.__defaultApplicationHandler;
-@@ -677,17 +678,17 @@ FeedHandlerInfo.prototype = {
-     }
-   },
- 
-   get alwaysAskBeforeHandling() {
-     return document.getElementById(this._prefSelectedAction).value == "ask";
-   },
- 
-   set alwaysAskBeforeHandling(aNewValue) {
--    if (aNewValue == true)
-+    if (aNewValue)
-       document.getElementById(this._prefSelectedAction).value = "ask";
-     else
-       document.getElementById(this._prefSelectedAction).value = "reader";
-   },
- 
-   // Whether or not we are currently storing the action selected by the user.
-   // We use this to suppress notification-triggered updates to the list when
-   // we make changes that may spawn such updates, specifically when we change
-@@ -879,25 +880,18 @@ var gApplicationsPane = {
-     Services.prefs.removeObserver(PREF_AUDIO_FEED_SELECTED_WEB, this);
-     Services.prefs.removeObserver(PREF_AUDIO_FEED_SELECTED_ACTION, this);
-   },
- 
- 
-   //**************************************************************************//
-   // nsISupports
- 
--  QueryInterface: function(aIID) {
--    if (aIID.equals(Ci.nsIObserver) ||
--        aIID.equals(Ci.nsIDOMEventListener ||
--        aIID.equals(Ci.nsISupports)))
--      return this;
--
--    throw Cr.NS_ERROR_NO_INTERFACE;
--  },
--
-+  QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver,
-+                                         Ci.nsIDOMEventListener]),
- 
-   //**************************************************************************//
-   // nsIObserver
- 
-   observe(aSubject, aTopic, aData) {
-     // Rebuild the list when there are changes to preferences that influence
-     // whether or not to show certain entries in the list.
-     if (aTopic == "nsPref:changed" && !this._storingAction) {
-@@ -1117,18 +1111,18 @@ var gApplicationsPane = {
-       }
- 
-       this._list.appendChild(item);
-     }
-   },
- 
-   _matchesFilter(aType) {
-     var filterValue = this._filter.value.toLowerCase();
--    return this._describeType(aType).toLowerCase().indexOf(filterValue) != -1 ||
--           this._describePreferredAction(aType).toLowerCase().indexOf(filterValue) != -1;
-+    return this._describeType(aType).toLowerCase().includes(filterValue) ||
-+      this._describePreferredAction(aType).toLowerCase().includes(filterValue);
-   },
- 
-   /**
-    * Describe, in a human-readable fashion, the type represented by the given
-    * handler info object.  Normally this is just the description provided by
-    * the info object, but if more than one object presents the same description,
-    * then we annotate the duplicate descriptions with the type itself to help
-    * users distinguish between those types.
-@@ -1160,18 +1154,17 @@ var gApplicationsPane = {
-   _describePreferredAction(aHandlerInfo) {
-     // alwaysAskBeforeHandling overrides the preferred action, so if that flag
-     // is set, then describe that behavior instead.  For most types, this is
-     // the "alwaysAsk" string, but for the feed type we show something special.
-     if (aHandlerInfo.alwaysAskBeforeHandling) {
-       if (isFeedType(aHandlerInfo.type))
-         return this._prefsBundle.getFormattedString("previewInApp",
-                                                     [this._brandShortName]);
--      else
--        return this._prefsBundle.getString("alwaysAsk");
-+      return this._prefsBundle.getString("alwaysAsk");
-     }
- 
-     switch (aHandlerInfo.preferredAction) {
-       case Ci.nsIHandlerInfo.saveToDisk:
-         return this._prefsBundle.getString("saveFile");
- 
-       case Ci.nsIHandlerInfo.useHelperApp:
-         var preferredApp = aHandlerInfo.preferredApplicationHandler;
-@@ -1418,22 +1411,24 @@ var gApplicationsPane = {
-                                                         this._brandShortName]);
-       pluginMenuItem.setAttribute("label", label);
-       pluginMenuItem.setAttribute("tooltiptext", label);
-       pluginMenuItem.setAttribute("appHandlerIcon", "plugin");
-       menuPopup.appendChild(pluginMenuItem);
-     }
- 
-     // Create a menu item for selecting a local application.
--#ifdef XP_WIN
--    // On Windows, selecting an application to open another application
--    // would be meaningless so we special case executables.
--    var executableType = mimeSvc.getTypeFromExtension("exe");
--    if (handlerInfo.type != executableType)
--#endif
-+    let canOpenWithOtherApp = true;
-+    if (AppConstants.platform == "win") {
-+      // On Windows, selecting an application to open another application
-+      // would be meaningless so we special case executables.
-+      let executableType = mimeSvc.getTypeFromExtension("exe");
-+      canOpenWithOtherApp = handlerInfo.type != executableType;
-+    }
-+    if (canOpenWithOtherApp)
-     {
-       let menuItem = document.createElement("menuitem");
-       menuItem.setAttribute("class", "handler-action");
-       menuItem.setAttribute("value", kActionChooseApp);
-       let label = this._prefsBundle.getString("useOtherApp");
-       menuItem.setAttribute("label", label);
-       menuItem.setAttribute("tooltiptext", label);
-       menuPopup.appendChild(menuItem);
-@@ -1492,16 +1487,19 @@ var gApplicationsPane = {
-     this._sortVisibleTypes();
-     this._rebuildView();
-   },
- 
-   /**
-    * Sort the list of visible types by the current sort column/direction.
-    */
-   _sortVisibleTypes() {
-+    if (!this._sortColumn)
-+      return;
-+
-     var t = this;
- 
-     function sortByType(a, b) {
-       return t._describeType(a).toLowerCase()
-               .localeCompare(t._describeType(b).toLowerCase());
-     }
- 
-     function sortByAction(a, b) {
-diff --git a/suite/components/pref/jar.mn b/suite/components/pref/jar.mn
---- a/suite/components/pref/jar.mn
-+++ b/suite/components/pref/jar.mn
-@@ -7,17 +7,17 @@ comm.jar:
-    content/communicator/pref/preferences.js                         (content/preferences.js)
-    content/communicator/pref/prefpanels.css                         (content/prefpanels.css)
-    content/communicator/pref/prefpanels.xml                         (content/prefpanels.xml)
-    content/communicator/pref/pref-advanced.js                       (content/pref-advanced.js)
-    content/communicator/pref/pref-advanced.xul                      (content/pref-advanced.xul)
-    content/communicator/pref/pref-appearance.js                     (content/pref-appearance.js)
-    content/communicator/pref/pref-appearance.xul                    (content/pref-appearance.xul)
-    content/communicator/pref/pref-applications.xul                  (content/pref-applications.xul)
--*  content/communicator/pref/pref-applications.js                   (content/pref-applications.js)
-+   content/communicator/pref/pref-applications.js                   (content/pref-applications.js)
-    content/communicator/pref/pref-applicationManager.js             (content/pref-applicationManager.js)
-    content/communicator/pref/pref-applicationManager.xul            (content/pref-applicationManager.xul)
-    content/communicator/pref/pref-cache.js                          (content/pref-cache.js)
-    content/communicator/pref/pref-cache.xul                         (content/pref-cache.xul)
-    content/communicator/pref/pref-colors.js                         (content/pref-colors.js)
-    content/communicator/pref/pref-colors.xul                        (content/pref-colors.xul)
-    content/communicator/pref/pref-content.js                        (content/pref-content.js)
-    content/communicator/pref/pref-content.xul                       (content/pref-content.xul)

+ 0 - 297
comm-esr60/comm-esr60/patches/1547041-3-prefapptidy.patch

@@ -1,297 +0,0 @@
-# HG changeset patch
-# User Ian Neal <iann_cvs@blueyonder.co.uk>
-# Parent  3c4432453e801ff3e45b2d3da5b55746cc87465a
-Bug 1547041 - Update and tidy SeaMonkey application preferences - Part 3: use lazy service getters. r=frg a=frg
-
-diff --git a/suite/components/pref/content/pref-applications.js b/suite/components/pref/content/pref-applications.js
---- a/suite/components/pref/content/pref-applications.js
-+++ b/suite/components/pref/content/pref-applications.js
-@@ -1,38 +1,35 @@
- /* -*- Mode: Java; tab-width: 2; c-basic-offset: 2; -*-
-  *
-  * This Source Code Form is subject to the terms of the Mozilla Public
-  * License, v. 2.0. If a copy of the MPL was not distributed with this
-  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
- 
- Cu.import("resource://gre/modules/AppConstants.jsm");
-+Cu.import("resource:///modules/ShellService.jsm");
- 
- function Startup()
- {
-   gApplicationsPane.init();
- }
- 
-+XPCOMUtils.defineLazyServiceGetter(this, "gCategoryManager",
-+  "@mozilla.org/categorymanager;1", "nsICategoryManager");
-+XPCOMUtils.defineLazyServiceGetter(this, "gHandlerService",
-+  "@mozilla.org/uriloader/handler-service;1", "nsIHandlerService");
-+XPCOMUtils.defineLazyServiceGetter(this, "gMIMEService",
-+  "@mozilla.org/mime;1", "nsIMIMEService");
-+XPCOMUtils.defineLazyServiceGetter(this, "gWebContentConverterService",
-+  "@mozilla.org/embeddor.implemented/web-content-handler-registrar;1",
-+  "nsIWebContentConverterService");
-+
- //****************************************************************************//
- // Constants & Enumeration Values
- 
--// global services
--var handlerSvc = Cc["@mozilla.org/uriloader/handler-service;1"]
--                   .getService(Ci.nsIHandlerService);
--var categoryMgr = Cc["@mozilla.org/categorymanager;1"]
--                    .getService(Ci.nsICategoryManager);
--var mimeSvc = Cc["@mozilla.org/mime;1"]
--                .getService(Ci.nsIMIMEService);
--var converterSvc = Cc["@mozilla.org/embeddor.implemented/web-content-handler-registrar;1"]
--                     .getService(Ci.nsIWebContentConverterService);
--var shellSvc = null;
--if ("@mozilla.org/suite/shell-service;1" in Cc)
--  shellSvc = Cc["@mozilla.org/suite/shell-service;1"]
--               .getService(Ci.nsIShellService);
--
- const TYPE_MAYBE_FEED = "application/vnd.mozilla.maybe.feed";
- const TYPE_MAYBE_VIDEO_FEED = "application/vnd.mozilla.maybe.video.feed";
- const TYPE_MAYBE_AUDIO_FEED = "application/vnd.mozilla.maybe.audio.feed";
- 
- const PREF_DISABLED_PLUGIN_TYPES = "plugin.disable_full_page_plugin_for_types";
- 
- // Preferences that affect which entries to show in the list.
- const PREF_SHOW_PLUGINS_IN_LIST = "browser.download.show_plugins_in_list";
-@@ -372,45 +369,45 @@ HandlerInfoWrapper.prototype = {
- 
-     if (!disabledPluginTypes.includes(this.type))
-       disabledPluginTypes.push(this.type);
- 
-     Services.prefs.setCharPref(PREF_DISABLED_PLUGIN_TYPES,
-                                disabledPluginTypes.join(","));
- 
-     // Update the category manager so existing browser windows update.
--    categoryMgr.deleteCategoryEntry("Gecko-Content-Viewers",
--                                          this.type,
--                                          false);
-+    gCategoryManager.deleteCategoryEntry("Gecko-Content-Viewers",
-+                                         this.type,
-+                                         false);
-   },
- 
-   enablePluginType() {
-     var disabledPluginTypes = this._getDisabledPluginTypes();
- 
-     var type = this.type;
-     disabledPluginTypes = disabledPluginTypes.filter(v => v != type);
- 
-     Services.prefs.setCharPref(PREF_DISABLED_PLUGIN_TYPES,
-                                disabledPluginTypes.join(","));
- 
-     // Update the category manager so existing browser windows update.
--    categoryMgr.
--      addCategoryEntry("Gecko-Content-Viewers",
-+    gCategoryManager.addCategoryEntry(
-+                       "Gecko-Content-Viewers",
-                        this.type,
-                        "@mozilla.org/content/plugin/document-loader-factory;1",
-                        false,
-                        true);
-   },
- 
- 
-   //**************************************************************************//
-   // Storage
- 
-   store() {
--    handlerSvc.store(this.wrappedHandlerInfo);
-+    gHandlerService.store(this.wrappedHandlerInfo);
-   },
- 
- 
-   //**************************************************************************//
-   // Icons
- 
-   get smallIcon() {
-     return this._getIcon(16);
-@@ -478,17 +475,17 @@ FeedHandlerInfo.prototype = {
-           return getLocalHandlerApp(file);
- 
-         return null;
- 
-       case "web":
-         var uri = document.getElementById(this._prefSelectedWeb).value;
-         if (!uri)
-           return null;
--        return converterSvc.getWebContentHandlerByURI(this.type, uri);
-+        return gWebContentConverterService.getWebContentHandlerByURI(this.type, uri);
- 
-       case "messenger":
-       default:
-         // When the pref is set to messenger, we handle feeds internally,
-         // we don't forward them to a local or web handler app, so there is
-         // no preferred handler.
-         return null;
-     }
-@@ -503,17 +500,17 @@ FeedHandlerInfo.prototype = {
-       document.getElementById(this._prefSelectedWeb).value = aNewValue.uri;
-       document.getElementById(this._prefSelectedReader).value = "web";
-       // Make the web handler be the new "auto handler" for feeds.
-       // Note: we don't have to unregister the auto handler when the user picks
-       // a non-web handler (local app, RSS News & Blogs, etc.) because the service
-       // only uses the "auto handler" when the selected reader is a web handler.
-       // We also don't have to unregister it when the user turns on "always ask"
-       // (i.e. preview in browser), since that also overrides the auto handler.
--      converterSvc.setAutoHandler(this.type, aNewValue);
-+      gWebContentConverterService.setAutoHandler(this.type, aNewValue);
-     }
-   },
- 
-   _possibleApplicationHandlers: null,
- 
-   get possibleApplicationHandlers() {
-     if (this._possibleApplicationHandlers)
-       return this._possibleApplicationHandlers;
-@@ -563,31 +560,31 @@ FeedHandlerInfo.prototype = {
-     if (preferredAppFile) {
-       let preferredApp = getLocalHandlerApp(preferredAppFile);
-       let defaultApp = this._defaultApplicationHandler;
-       if (!defaultApp || !defaultApp.equals(preferredApp))
-         this._possibleApplicationHandlers.appendElement(preferredApp);
-     }
- 
-     // Add the registered web handlers.  There can be any number of these.
--    var webHandlers = converterSvc.getContentHandlers(this.type);
-+    var webHandlers = gWebContentConverterService.getContentHandlers(this.type);
-     for (let webHandler of webHandlers)
-       this._possibleApplicationHandlers.appendElement(webHandler);
- 
-     return this._possibleApplicationHandlers;
-   },
- 
-   __defaultApplicationHandler: undefined,
-   get _defaultApplicationHandler() {
-     if (this.__defaultApplicationHandler !== undefined)
-       return this.__defaultApplicationHandler;
- 
-     var defaultFeedReader = null;
-     try {
--      defaultFeedReader = shellSvc.defaultFeedReader;
-+      defaultFeedReader = ShellService.defaultFeedReader;
-     }
-     catch(ex) {
-       // no default reader
-     }
- 
-     if (defaultFeedReader) {
-       let handlerApp = Cc["@mozilla.org/uriloader/local-handler-app;1"]
-                          .createInstance(Ci.nsIHandlerApp);
-@@ -601,17 +598,17 @@ FeedHandlerInfo.prototype = {
-       this.__defaultApplicationHandler = null;
-     }
- 
-     return this.__defaultApplicationHandler;
-   },
- 
-   get hasDefaultHandler() {
-     try {
--      if (shellSvc.defaultFeedReader)
-+      if (ShellService.defaultFeedReader)
-         return true;
-     }
-     catch(ex) {
-       // no default reader
-     }
- 
-     return false;
-   },
-@@ -720,17 +717,18 @@ FeedHandlerInfo.prototype = {
-         if (preferredAppFile) {
-           let preferredApp = getLocalHandlerApp(preferredAppFile);
-           if (app.equals(preferredApp))
-             pref.reset();
-         }
-       }
-       else {
-         app.QueryInterface(Ci.nsIWebContentHandlerInfo);
--        converterSvc.removeContentHandler(app.contentType, app.uri);
-+        gWebContentConverterService.removeContentHandler(app.contentType,
-+                                                         app.uri);
-       }
-     }
-     this._possibleApplicationHandlers._removed = [];
-   },
- 
- 
-   //**************************************************************************//
-   // Icons
-@@ -997,32 +995,32 @@ var gApplicationsPane = {
-                        .getService(Ci.nsIPluginHost);
-     for (let pluginTag of pluginHost.getPluginTags()) {
-       for (let type of pluginTag.getMimeTypes()) {
-         let handlerInfoWrapper;
-         if (type in this._handledTypes)
-           handlerInfoWrapper = this._handledTypes[type];
-         else {
-           let wrappedHandlerInfo =
--            mimeSvc.getFromTypeAndExtension(type, null);
-+            gMIMEService.getFromTypeAndExtension(type, null);
-           handlerInfoWrapper = new HandlerInfoWrapper(type, wrappedHandlerInfo);
-           handlerInfoWrapper.handledOnlyByPlugin = true;
-           this._handledTypes[type] = handlerInfoWrapper;
-         }
- 
-         handlerInfoWrapper.plugin = pluginHost.getPluginTagForType(type);
-       }
-     }
-   },
- 
-   /**
-    * Load the set of handlers defined by the application datastore.
-    */
-   _loadApplicationHandlers() {
--    var wrappedHandlerInfos = handlerSvc.enumerate();
-+    var wrappedHandlerInfos = gHandlerService.enumerate();
-     while (wrappedHandlerInfos.hasMoreElements()) {
-       let wrappedHandlerInfo =
-         wrappedHandlerInfos.getNext().QueryInterface(Ci.nsIHandlerInfo);
-       let type = wrappedHandlerInfo.type;
- 
-       let handlerInfoWrapper;
-       if (type in this._handledTypes)
-         handlerInfoWrapper = this._handledTypes[type];
-@@ -1415,17 +1413,17 @@ var gApplicationsPane = {
-       menuPopup.appendChild(pluginMenuItem);
-     }
- 
-     // Create a menu item for selecting a local application.
-     let canOpenWithOtherApp = true;
-     if (AppConstants.platform == "win") {
-       // On Windows, selecting an application to open another application
-       // would be meaningless so we special case executables.
--      let executableType = mimeSvc.getTypeFromExtension("exe");
-+      let executableType = gMIMEService.getTypeFromExtension("exe");
-       canOpenWithOtherApp = handlerInfo.type != executableType;
-     }
-     if (canOpenWithOtherApp)
-     {
-       let menuItem = document.createElement("menuitem");
-       menuItem.setAttribute("class", "handler-action");
-       menuItem.setAttribute("value", kActionChooseApp);
-       let label = this._prefsBundle.getString("useOtherApp");
-@@ -1631,18 +1629,19 @@ var gApplicationsPane = {
-     }.bind(this);
- 
-     if (AppConstants.platform == "win") {
-       let params = {};
-       let handlerInfo = this._handledTypes[this._list.selectedItem.type];
- 
-       if (isFeedType(handlerInfo.type)) {
-         // MIME info will be null, create a temp object.
--        params.mimeInfo = mimeSvc.getFromTypeAndExtension(handlerInfo.type,
--                                                   handlerInfo.primaryExtension);
-+        params.mimeInfo =
-+            gMIMEService.getFromTypeAndExtension(handlerInfo.type,
-+                                                 handlerInfo.primaryExtension);
-       } else {
-         params.mimeInfo = handlerInfo.wrappedHandlerInfo;
-       }
- 
-       params.title         = this._prefsBundle.getString("fpTitleChooseApp");
-       params.description   = handlerInfo.description;
-       params.filename      = null;
-       params.handlerApp    = null;

+ 0 - 51
comm-esr60/comm-esr60/patches/1549391-expirecheck.patch

@@ -1,51 +0,0 @@
-# HG changeset patch
-# User Frank-Rainer Grahl <frgrahl@gmx.net>
-# Date 1581174820 -3600
-# Parent  8f9be3a4a68c0e94eddf0eda0056779f038b0668
-Bug 1549391 - Do no show the notification for an expired build if the updater is not available.
-Port Bug 1011978 [fix use of updater service in nsBrowserGlue to check for MOZ_UPDATER].
-
-diff --git a/suite/components/nsSuiteGlue.js b/suite/components/nsSuiteGlue.js
---- a/suite/components/nsSuiteGlue.js
-+++ b/suite/components/nsSuiteGlue.js
-@@ -46,16 +46,19 @@ XPCOMUtils.defineLazyModuleGetter(this, 
-                                   "resource:///modules/PermissionUI.jsm");
- 
- XPCOMUtils.defineLazyModuleGetter(this, "DownloadsCommon",
-                                   "resource:///modules/DownloadsCommon.jsm");
- 
- XPCOMUtils.defineLazyModuleGetter(this, "ShellService",
-                                   "resource:///modules/ShellService.jsm");
- 
-+XPCOMUtils.defineLazyModuleGetter(this, "AppConstants",
-+                                  "resource://gre/modules/AppConstants.jsm");
-+
- XPCOMUtils.defineLazyGetter(this, "DebuggerServer", () => {
-   var tmp = {};
-   Cu.import("resource://devtools/shared/Loader.jsm", tmp);
-   return tmp.require("devtools/server/main").DebuggerServer;
- });
- 
- // We try to backup bookmarks at idle times, to avoid doing that at shutdown.
- // Number of idle seconds before trying to backup bookmarks.  15 minutes.
-@@ -843,16 +846,20 @@ SuiteGlue.prototype = {
-     Services.prefs.setBoolPref("browser.rights." + currentVersion + ".shown", true);
-   },
- 
-   /*
-    * _shouldShowUpdateWarning - Determines if the user should be warned about
-    * having updates off and an old build that likely should be updated.
-    */
-   _shouldShowUpdateWarning: function () {
-+    // If the Updater is not available we don't show the warning.
-+    if (!AppConstants.MOZ_UPDATER) {
-+      return false;
-+    }
-     // Look for an unconditional override pref. If set, do what it says.
-     // (true --> never show, false --> always show)
-     try {
-       return !Services.prefs.getBoolPref("app.updatecheck.override");
-     } catch (e) { }
-     // If updates are enabled, we don't need to worry.
-     if (Services.prefs.getBoolPref("app.update.enabled"))
-       return false;

+ 0 - 57
comm-esr60/comm-esr60/patches/1550780-distribution.patch

@@ -1,57 +0,0 @@
-# HG changeset patch
-# User Ian Neal <iann_cvs@blueyonder.co.uk>
-# Date 1563199980 -7200
-# Parent  3f64ac6c2a24b4afdf739225c2fe0f08dba84667
-Bug 1550780 - Add distribution to SeaMonkey locales Makefile. r=frg a=frg
-
-diff --git a/suite/build.mk b/suite/build.mk
---- a/suite/build.mk
-+++ b/suite/build.mk
-@@ -18,16 +18,21 @@ source-package::
- upload::
- 	@$(MAKE) -C suite/installer upload
- 
- source-upload::
- 	@$(MAKE) -C suite/installer source-upload
- 
- # make -j1 because dependencies in l10n build targets don't work
- # with parallel builds
-+distribution:
-+	$(MAKE) -j1 -C suite/locales $@
-+
-+# make -j1 because dependencies in l10n build targets don't work
-+# with parallel builds
- merge-% installers-% langpack-% chrome-% clobber-%:
- 	$(MAKE) -j1 -C suite/locales $@
- 
- # mochitests need to be run from the Mozilla build system
- ifdef ENABLE_TESTS
- # Backend is implemented in mozilla/testing/testsuite-targets.mk.
- # This part is copied from mozilla/browser/build.mk.
- 
-diff --git a/suite/locales/Makefile.in b/suite/locales/Makefile.in
---- a/suite/locales/Makefile.in
-+++ b/suite/locales/Makefile.in
-@@ -197,8 +197,22 @@ ident:
- 	    $(STAGEDIST)/platform.ini Build SourceStamp
- 	@printf 'buildid '
- 	@$(PYTHON) $(MOZILLA_SRCDIR)/config/printconfigsetting.py \
- 	    $(STAGEDIST)/application.ini App BuildID
- 
- ifdef MOZ_IRC
- MOZ_PKG_EXTRAL10N += extensions/langpack-$(AB_CD)@chatzilla.mozilla.org=$(DIST)/xpi-stage/chatzilla-$(AB_CD)
- endif
-+
-+distribution:
-+	$(MAKE) -C $(DEPTH)/tools/update-packaging complete-patch PKG_INST_PATH=
-+	$(foreach locale,$(SHIPPED_LOCALES),$(MAKE) -C $(DEPTH)/suite/locales/ installers-$(locale) MOZ_MAKE_COMPLETE_MAR=1 ;)
-+
-+SHIPPED_LOCALES_FILE = $(topsrcdir)/suite/locales/shipped-locales
-+ifeq ($(OS_ARCH), WINNT)
-+SHIPPED_FILTER = -e linux -e osx
-+else ifeq ($(OS_ARCH), Darwin)
-+SHIPPED_FILTER = -e linux -e win32
-+else
-+SHIPPED_FILTER = -e osx -e win32
-+endif
-+SHIPPED_LOCALES := $(shell if test -f $(SHIPPED_LOCALES_FILE); then cat $(SHIPPED_LOCALES_FILE) |grep -v -e en-US $(SHIPPED_FILTER) | cut -d " " -f1; fi)

+ 0 - 29
comm-esr60/comm-esr60/patches/1550780-shipped-locales.patch

@@ -1,29 +0,0 @@
-# HG changeset patch
-# User Ian Neal <iann_cvs@blueyonder.co.uk>
-# Date 1563199981 -7200
-# Parent  5a8c1547dd5bed8b97649fa6482b826742cf31bf
-Bug 1550780 - Follow-up: Split the linux and win32 lines in shipped-locales. r=frg a=frg
-
-diff --git a/suite/locales/shipped-locales b/suite/locales/shipped-locales
---- a/suite/locales/shipped-locales
-+++ b/suite/locales/shipped-locales
-@@ -2,17 +2,18 @@ cs
- de
- en-GB
- en-US
- es-AR
- es-ES
- fr
- hu
- it
--ja linux win32
-+ja linux
-+ja win32
- ja-JP-mac osx
- nb-NO
- nl
- pl
- pt-BR
- pt-PT
- ru
- sk

+ 0 - 29
comm-esr60/comm-esr60/patches/1552666-68a1.patch

@@ -1,29 +0,0 @@
-# HG changeset patch
-# User aceman <acelists@atlas.sk>
-# Date 1558348681 -7200
-# Node ID 551822c41355acc5402e2bc242c2903b37810844
-# Parent  ae087d73b3ce70604c356f6043cc8998243bf87f
-Bug 1552666 - remove menuitems of folder picker when its XBL binding is destructed. r=jorgk
-
-diff --git a/mailnews/base/content/folderWidgets.xml b/mailnews/base/content/folderWidgets.xml
---- a/mailnews/base/content/folderWidgets.xml
-+++ b/mailnews/base/content/folderWidgets.xml
-@@ -66,16 +66,17 @@
-                                                 this.getAttribute("width") : "none");
-             this.setAttribute("width", "100");
-           }
-         }
-       ]]></constructor>
-       <destructor><![CDATA[
-         // Clean up when being destroyed.
-         this._removeListener();
-+        this._teardown();
-       ]]></destructor>
-       <!--
-          - Make sure we remove our listener when the window is being destroyed
-          - or the widget teared down.
-         -->
-       <method name="_removeListener">
-         <body><![CDATA[
-           if (!this._initialized)
-

+ 0 - 29
comm-esr60/comm-esr60/patches/1554929-bookmarksincfix.patch

@@ -1,29 +0,0 @@
-# HG changeset patch
-# User Frank-Rainer Grahl <frgrahl@gmx.net>
-# Parent  df4587d91786552a3020e0942e192694c1ffbc47
-Bug 1554929 - Add back trailing spaces for l10n bookmarks. r=IanN a=IanN
-
-diff --git a/suite/locales/en-US/profile/bookmarks.inc b/suite/locales/en-US/profile/bookmarks.inc
---- a/suite/locales/en-US/profile/bookmarks.inc
-+++ b/suite/locales/en-US/profile/bookmarks.inc
-@@ -60,16 +60,18 @@
- 
- # LOCALIZATION NOTE (seamonkey_support):
- # link title for the mozillaZine SeaMonkey Support forum
- #define seamonkey_support SeaMonkey Support Forum (mozillaZine)
- 
- # LOCALIZATION NOTE (seamonkey_l10n):
- # insert full bookmark line for localized SeaMonkey page (personal toolbar)
- # e.g. #define seamonkey_l10n <DT><A HREF="https://www.seamonkey.tlh/">SeaMonkey tlhIngan</a>
--#define seamonkey_l10n
-+# Do not remove the trailing spaces here or MERGE_FILE in l0n builds will fail!
-+#define seamonkey_l10n  
- 
- # LOCALIZATION NOTE (seamonkey_l10n_long):
- # insert full bookmark line for localized SeaMonkey page (normal bookmark)
- # e.g. #define seamonkey_l10n_long <DT><A HREF="https://www.seamonkey.tld/">tlhIngan Hol SeaMonkey</a>
--#define seamonkey_l10n_long
-+# Do not remove the trailing spaces here or or MERGE_FILE in l0n builds will fail!
-+#define seamonkey_l10n_long  
- 
- #unfilter emptyLines

+ 0 - 64
comm-esr60/comm-esr60/patches/1558596-middleclick_tab_close.patch

@@ -1,64 +0,0 @@
-# HG changeset patch
-# User Ian Neal <iann_cvs@blueyonder.co.uk>
-# Parent  ab2593474f9007bf3716694d6b32636c7eb0ddfe
-Bug 1558596 - Make middleclick close tabs on all platforms. r=frg a=frg
-
-diff --git a/suite/browser/tabbrowser.xml b/suite/browser/tabbrowser.xml
---- a/suite/browser/tabbrowser.xml
-+++ b/suite/browser/tabbrowser.xml
-@@ -1188,19 +1188,19 @@
-           ]]>
-         </body>
-       </method>
- 
-       <method name="onTabClick">
-         <parameter name="event"/>
-         <body>
-           <![CDATA[
--            if (event.button != 1 || event.target.localName != 'tab' ||
--                (Services.prefs.getBoolPref("middlemouse.contentLoadURL") &&
--                !Services.prefs.getBoolPref("general.autoScroll")))
-+            // A middle mouse button click on a tab is a short cut for
-+            // closing that tab.
-+            if (event.button != 1 || event.target.localName != 'tab')
-               return;
- 
-             this.removeTab(event.target);
-             event.stopPropagation();
-           ]]>
-         </body>
-       </method>
- 
-diff --git a/suite/mailnews/content/tabmail.xml b/suite/mailnews/content/tabmail.xml
---- a/suite/mailnews/content/tabmail.xml
-+++ b/suite/mailnews/content/tabmail.xml
-@@ -667,29 +667,16 @@
-             if (!this.currentTabInfo)
-               this.currentTabInfo = this.tabInfo[0];
-             // save the old tab state before we change the current tab
-             this.saveTabState(this.currentTabInfo);
-           ]]>
-         </body>
-       </method>
- 
--      <method name="onTabClick">
--        <parameter name="event"/>
--        <body>
--          <![CDATA[
--            // a middle mouse button click on a tab is a short cut for closing a tab
--            if (event.button != 1 || event.target.localName != "tab")
--              return;
--            this.removeTab(event.target);
--            event.stopPropagation();
--          ]]>
--        </body>
--      </method>
--
-       <method name="setTabTitle">
-         <parameter name="aTabInfo"/>
-         <body>
-           <![CDATA[
-             // First find the tab and its index.
-             let tabInfo;
-             let index;
-             if (aTabInfo)

+ 0 - 886
comm-esr60/comm-esr60/patches/1560550-25x.patch

@@ -1,886 +0,0 @@
-# HG changeset patch
-# User Ian Neal <iann_cvs@blueyonder.co.uk>
-# Parent  5a0db7130604c886d1df72ee7f92692223f1a0ed
-Bug 1560550 - Port |Bug 1339461 - Convert foo.indexOf(...) == -1 to foo.includes()| to SM. r=frg a=frg
-
-diff --git a/suite/base/content/utilityOverlay.js b/suite/base/content/utilityOverlay.js
---- a/suite/base/content/utilityOverlay.js
-+++ b/suite/base/content/utilityOverlay.js
-@@ -927,17 +927,17 @@ addEventListener("load", utilityOnLoad, 
-  *
-  * @return suggested filename as a string.
-  */
- function suggestUniqueFileName(aBaseName, aExtension, aExistingNames)
- {
-   var suffix = 1;
-   aBaseName = validateFileName(aBaseName);
-   var suggestion = aBaseName + aExtension;
--  while (aExistingNames.indexOf(suggestion) != -1)
-+  while (aExistingNames.includes(suggestion))
-   {
-     suffix++;
-     suggestion = aBaseName + "(" + suffix + ")" + aExtension;
-   }
-   return suggestion;
- }
- 
- function focusElement(aElement)
-diff --git a/suite/browser/navigator.js b/suite/browser/navigator.js
---- a/suite/browser/navigator.js
-+++ b/suite/browser/navigator.js
-@@ -878,17 +878,17 @@ function Startup()
-       defaultWidth /= 2;
- 
-     // Tweak sizes to be sure we don't grow outside the screen
-     defaultWidth = defaultWidth - 20;
-     defaultHeight = defaultHeight - 10;
- 
-     // On X, we're not currently able to account for the size of the window
-     // border.  Use 28px as a guess (titlebar + bottom window border)
--    if (navigator.appVersion.indexOf("X11") != -1)
-+    if (navigator.appVersion.includes("X11"))
-       defaultHeight -= 28;
- 
-     // On small screens, default to maximized state
-     if (defaultHeight <= 600)
-       document.documentElement.setAttribute("sizemode", "maximized");
- 
-     document.documentElement.setAttribute("width", defaultWidth);
-     document.documentElement.setAttribute("height", defaultHeight);
-@@ -1206,17 +1206,17 @@ function Shutdown()
- 
- function Translate()
- {
-   var service = GetLocalizedStringPref("browser.translation.service");
-   var serviceDomain = GetLocalizedStringPref("browser.translation.serviceDomain");
-   var targetURI = getWebNavigation().currentURI.spec;
- 
-   // if we're already viewing a translated page, then just reload
--  if (targetURI.indexOf(serviceDomain) >= 0)
-+  if (targetURI.includes(serviceDomain))
-     BrowserReload();
-   else {
-     loadURI(encodeURI(service) + encodeURIComponent(targetURI));
-   }
- }
- 
- function GetTypePermFromId(aId)
- {
-@@ -1695,17 +1695,17 @@ var BrowserSearch = {
- 
-         if (content instanceof Ci.nsIRDFLiteral) {
-           // the search panel entry exists, now check if it is excluded
-           // for navigator
-           var excludeProp = RDF.GetResource("http://home.netscape.com/NC-rdf#exclude");
-           var exclude = datasource.GetTarget(aboutValue, excludeProp, true);
- 
-           if (exclude instanceof Ci.nsIRDFLiteral) {
--            searchPanelExists = (exclude.Value.indexOf("navigator:browser") < 0);
-+            searchPanelExists = !exclude.Value.includes("navigator:browser");
-           } else {
-             // panel exists and no exclude set
-             searchPanelExists = true;
-           }
-         }
-       } catch (e) {
-         searchPanelExists = false;
-       }
-@@ -3337,17 +3337,17 @@ function AddKeywordForSearchField() {
-       }
-     }
-   }
- 
-   if (form.method == "post" &&
-       form.enctype == "application/x-www-form-urlencoded") {
-     postData = formData.join("&");
-   } else { // get
--    spec += spec.indexOf("?") != -1 ? "&" : "?";
-+    spec += spec.includes("?") ? "&" : "?";
-     spec += formData.join("&");
-   }
- 
-   PlacesUIUtils.showMinimalAddBookmarkUI(makeURI(spec), title, description, null,
-                                          null, null, "", postData, charset);
- }
- 
- function getCert()
-diff --git a/suite/browser/tabbrowser.xml b/suite/browser/tabbrowser.xml
---- a/suite/browser/tabbrowser.xml
-+++ b/suite/browser/tabbrowser.xml
-@@ -1032,17 +1032,17 @@
-             }
-             newTitle += modifier;
- 
-             // If location bar is hidden and the URL type supports a host,
-             // add the scheme and host to the title to prevent spoofing.
-             // XXX https://bugzilla.mozilla.org/show_bug.cgi?id=22183#c239
-             // (only for schemes that support a host)
-             try {
--              if (docElement.getAttribute("chromehidden").indexOf("location") != -1) {
-+              if (docElement.getAttribute("chromehidden").includes("location")) {
-                 var uri = this.mURIFixup.createExposableURI(aBrowser.currentURI);
-                 if (uri.schemeIs("about"))
-                   newTitle = uri.spec + sep + newTitle;
-                 else if (uri.host)
-                   newTitle = uri.prePath + sep + newTitle;
-               }
-             } catch (e) {
-             }
-@@ -2070,30 +2070,30 @@
- 
-       <method name="addProgressListener">
-         <parameter name="aListener"/>
-         <body>
-           <![CDATA[
-             if (!aListener)
-               throw Cr.NS_ERROR_INVALID_ARG;
- 
--            if (this.mProgressListeners.indexOf(aListener) != -1)
-+            if (this.mProgressListeners.includes(aListener))
-               throw Cr.NS_ERROR_FAILURE;
- 
-             // push() does not disturb possibly ongoing iterations.
-             this.mProgressListeners.push(aListener);
-           ]]>
-         </body>
-       </method>
- 
-       <method name="removeProgressListener">
-         <parameter name="aListener"/>
-         <body>
-           <![CDATA[
--            if (this.mProgressListeners.indexOf(aListener) == -1)
-+            if (!this.mProgressListeners.includes(aListener))
-               throw Cr.NS_ERROR_FAILURE;
- 
-             // Create a new array, not to disturb possibly ongoing iterations.
-             this.mProgressListeners =
-               this.mProgressListeners.filter(
-                 function removeListener(element) {
-                   return element != aListener;
-                 }
-@@ -2104,30 +2104,30 @@
- 
-       <method name="addTabsProgressListener">
-         <parameter name="aListener"/>
-         <body>
-           <![CDATA[
-             if (!aListener)
-               throw Cr.NS_ERROR_INVALID_ARG;
- 
--            if (this.mTabsProgressListeners.indexOf(aListener) != -1)
-+            if (this.mTabsProgressListeners.includes(aListener))
-               throw Cr.NS_ERROR_FAILURE;
- 
-             // push() does not disturb possibly ongoing iterations.
-             this.mTabsProgressListeners.push(aListener);
-           ]]>
-         </body>
-       </method>
- 
-       <method name="removeTabsProgressListener">
-         <parameter name="aListener"/>
-         <body>
-           <![CDATA[
--            if (this.mTabsProgressListeners.indexOf(aListener) == -1)
-+            if (!this.mTabsProgressListeners.includes(aListener))
-               throw Cr.NS_ERROR_FAILURE;
- 
-             // Create a new array, not to disturb possibly ongoing iterations.
-             this.mTabsProgressListeners =
-               this.mTabsProgressListeners.filter(
-                 function removeListener(element) {
-                   return element != aListener;
-                 }
-@@ -2380,17 +2380,17 @@
-                                 .getService(Ci.nsIDroppedLinkHandler);
-             try {
-               // Pass true to disallow dropping javascript: or data: urls.
-               url = linkHandler.dropLink(aEvent, {}, true);
-             } catch (ex) {}
- 
-             // Valid urls don't contain spaces ' '; if we have a space
-             // it isn't a valid url.
--            if (!url || url.indexOf(" ") != -1)
-+            if (!url || url.includes(" "))
-               return;
- 
-             getShortcutOrURIAndPostData(url).then(data => {
-               var bgLoad = Services.prefs.getBoolPref("browser.tabs.loadInBackground");
-               if (aEvent.shiftKey)
-                 bgLoad = !bgLoad;
- 
-               let triggeringPrincipal = browserDragAndDrop.getTriggeringPrincipal(aEvent);
-diff --git a/suite/components/bindings/notification.xml b/suite/components/bindings/notification.xml
---- a/suite/components/bindings/notification.xml
-+++ b/suite/components/bindings/notification.xml
-@@ -1424,17 +1424,17 @@
-       </method>
- 
-       <method name="pluginNeedsActivationExceptThese">
-         <parameter name="aExceptThese"/>
-         <body>
-           <![CDATA[
-             var pluginNeedsActivation = this.contentWindowUtils
-                                             .plugins.some(function(aPlugin) {
--              return aExceptThese.indexOf(aPlugin) < 0 &&
-+              return !aExceptThese.includes(aPlugin) &&
-                      this.canActivatePlugin(aPlugin);
-             }, this);
- 
-             return pluginNeedsActivation;
-           ]]>
-         </body>
-       </method>
- 
-diff --git a/suite/components/console/content/consoleBindings.xml b/suite/components/console/content/consoleBindings.xml
---- a/suite/components/console/content/consoleBindings.xml
-+++ b/suite/components/console/content/consoleBindings.xml
-@@ -377,17 +377,17 @@
-         <body><![CDATA[
-           if (!aString || !aFilter) {
-             return true;
-           }
- 
-           let searchStr = aString.toLowerCase();
-           let filterStrings = aFilter.split(/\s+/);
-           return !filterStrings.some(function (f) {
--            return searchStr.indexOf(f) == -1;
-+            return !searchStr.includes(f);
-           });
-         ]]></body>
-       </method>
- 
-       <constructor>this.init();</constructor>
-       <destructor>this.destroy();</destructor>
- 
-       <!-- Command controller for the copy command -->
-diff --git a/suite/components/dataman/content/dataman.js b/suite/components/dataman/content/dataman.js
---- a/suite/components/dataman/content/dataman.js
-+++ b/suite/components/dataman/content/dataman.js
-@@ -206,17 +206,17 @@ var gDataman = {
-   restoreSelectionFromIDs: function dataman_restoreSelectionFromIDs(aTree, aIDFunction, aCachedIDs) {
-     // Restore selection from cached IDs (as possible).
-     if (!aCachedIDs.length)
-       return;
- 
-     aTree.view.selection.clearSelection();
-     // Find out which current rows match a cached selection and add them to the selection.
-     for (let row = 0; row < aTree.view.rowCount; row++)
--      if (aCachedIDs.indexOf(aIDFunction(row)) != -1)
-+      if (aCachedIDs.includes(aIDFunction(row)))
-         aTree.view.selection.toggleSelect(row);
-   },
- }
- 
- // :::::::::::::::::::: base object to use as a prototype for all others ::::::::::::::::::::
- var gBaseTreeView = {
-   setTree: function(aTree) {},
-   getImageSrc: function(aRow, aColumn) {},
-@@ -771,17 +771,17 @@ var gDomains = {
-     this.tree.treeBoxObject.beginUpdateBatch();
-     var selectionCache = gDataman.getSelectedIDs(this.tree, this._getObjID);
-     this.tree.view.selection.clearSelection();
-     this.displayedDomains = [];
-     var lcSearch = aSearchString.toLocaleLowerCase();
-     var sType = aType || this.selectfield.value;
-     for (let domain in this.domainObjects) {
-       if (this.domainObjects[domain].displayTitle
--              .toLocaleLowerCase().indexOf(lcSearch) != -1 &&
-+              .toLocaleLowerCase().includes(lcSearch) &&
-           (sType == "all" || this.domainObjects[domain]["has" + sType]))
-         this.displayedDomains.push(this.domainObjects[domain]);
-     }
-     this.sort();
-     gDataman.restoreSelectionFromIDs(this.tree, this._getObjID, selectionCache);
-     this.tree.treeBoxObject.endUpdateBatch();
-     this.ignoreSelect = false;
-     // Make sure we clear the data pane when selection has been removed.
-@@ -1157,17 +1157,17 @@ var gCookies = {
-       if (this.displayedCookies.length) {
-         selectionCache = gDataman.getSelectedIDs(this.tree, this._getObjID);
-         this.displayedCookies = [];
-       }
-       this.loadList();
-       var domainList = [];
-       for (let cookie of this.cookies) {
-         let domain = gDomains.getDomainFromHost(cookie.rawHost);
--        if (domainList.indexOf(domain) == -1)
-+        if (!domainList.includes(domain))
-           domainList.push(domain);
-       }
-       gDomains.resetFlagToDomains("hasCookies", domainList);
-       // Restore the local panel display if needed.
-       if (gTabs.activePanel == "cookiesPanel" &&
-           gDomains.selectedDomain.hasCookies) {
-         this.tree.treeBoxObject.beginUpdateBatch();
-         this.displayedCookies = this.cookies.filter(
-@@ -2281,17 +2281,17 @@ var gPasswords = {
-         this.tree.view.selection.clearSelection();
-         this.displayedSignons = [];
-         this.tree.treeBoxObject.endUpdateBatch();
-       }
-       this.loadList();
-       let domainList = [];
-       for (let lSignon of this.allSignons) {
-         let domain = gDomains.getDomainFromHost(lSignon.hostname);
--        if (domainList.indexOf(domain) == -1)
-+        if (!domainList.includes(domain))
-           domainList.push(domain);
-       }
-       gDomains.resetFlagToDomains("hasPasswords", domainList);
-       return;
-     }
- 
-     // Usual notifications for addLogin, modifyLogin, removeLogin - do "surgical" updates.
-     let curLogin = null, oldLogin = null;
-@@ -2718,17 +2718,17 @@ var gStorage = {
-     if (this.displayedStorages.length) {
-       selectionCache = gDataman.getSelectedIDs(this.tree, this._getObjID);
-       this.displayedStorages = [];
-     }
-     this.loadList();
-     var domainList = [];
-     for (let lStorage of this.storages) {
-       let domain = gDomains.getDomainFromHost(lStorage.rawHost);
--      if (domainList.indexOf(domain) == -1)
-+      if (!domainList.includes(domain))
-         domainList.push(domain);
-     }
-     gDomains.resetFlagToDomains("hasStorage", domainList);
-     // Restore the local panel display if needed.
-     if (gTabs.activePanel == "storagePanel" &&
-         gDomains.selectedDomain.hasStorage) {
-       this.tree.treeBoxObject.beginUpdateBatch();
-       this.displayedStorages = this.storages.filter(
-@@ -2996,18 +2996,18 @@ var gFormdata = {
- 
-   search: function formdata_search(aSearchString) {
-     let selectionCache = gDataman.getSelectedIDs(this.tree, this._getObjID);
-     this.tree.treeBoxObject.beginUpdateBatch();
-     this.tree.view.selection.clearSelection();
-     var lcSearch = aSearchString.toLocaleLowerCase();
-     this.displayedFormdata = this.formdata.filter(
-       function(aFd) {
--        return aFd.fieldname.toLocaleLowerCase().indexOf(lcSearch) != -1 ||
--               aFd.value.toLocaleLowerCase().indexOf(lcSearch) != -1;
-+        return aFd.fieldname.toLocaleLowerCase().includes(lcSearch) ||
-+               aFd.value.toLocaleLowerCase().includes(lcSearch);
-       });
-     this.sort(null, false, false);
-     gDataman.restoreSelectionFromIDs(this.tree, this._getObjID, selectionCache);
-     this.tree.treeBoxObject.endUpdateBatch();
-   },
- 
-   focusSearch: function formdata_focusSearch() {
-     this.searchfield.focus();
-diff --git a/suite/components/feeds/WebContentConverter.js b/suite/components/feeds/WebContentConverter.js
---- a/suite/components/feeds/WebContentConverter.js
-+++ b/suite/components/feeds/WebContentConverter.js
-@@ -322,17 +322,17 @@ WebContentConverterRegistrar.prototype =
-     // We also reject handlers registered from a different host (see bug 402287)
-     // The pref allows us to test the feature
-     if ((!Services.prefs.prefHasUserValue(PREF_ALLOW_DIFFERENT_HOST) ||
-          !Services.prefs.getBoolPref(PREF_ALLOW_DIFFERENT_HOST)) &&
-         aContentWindow.location.hostname != uri.host)
-       throw("Permission denied to add " + uri.spec + " as a content or protocol handler");
- 
-     // If the uri doesn't contain '%s', it won't be a good handler
--    if (uri.spec.indexOf("%s") < 0)
-+    if (!uri.spec.includes("%s"))
-       throw NS_ERROR_DOM_SYNTAX_ERR;
- 
-     return uri;
-   },
- 
-   /**
-    * Determines if a web handler is already registered.
-    *
-diff --git a/suite/components/helpviewer/content/help.js b/suite/components/helpviewer/content/help.js
---- a/suite/components/helpviewer/content/help.js
-+++ b/suite/components/helpviewer/content/help.js
-@@ -255,17 +255,17 @@ function loadHelpRDF() {
-       var iterator = RDFContainer.GetElements();
-       while (iterator.hasMoreElements()) {
-         var panelDef = iterator.getNext();
- 
-         var panelID        = getAttribute(helpFileDS, panelDef, NC_PANELID, null);
-         var datasources    = getAttribute(helpFileDS, panelDef, NC_DATASOURCES, "");
-         var panelPlatforms = getAttribute(helpFileDS, panelDef, NC_PLATFORM, null);
- 
--        if (panelPlatforms && panelPlatforms.split(/\s+/).indexOf(platform) == -1)
-+        if (panelPlatforms && !panelPlatforms.split(/\s+/).includes(platform))
-           continue; // ignore datasources for other platforms
- 
-         // empty datasources are valid on search panel definitions
-         // convert them to "rdf:null" which can be filtered and ignored
-         if (!datasources)
-           datasources = "rdf:null";
- 
-         datasources = normalizeLinks(helpBaseURI, datasources);
-@@ -347,17 +347,17 @@ function filterSeqByPlatform(aDatasource
-     var currentTarget = targets.getNext();
- 
-     // find out on which platforms this node is meaningful
-     var nodePlatforms = getAttribute(aDatasource,
-                                      currentTarget.QueryInterface(Ci.nsIRDFResource),
-                                      NC_PLATFORM,
-                                      platform);
- 
--    if (nodePlatforms.split(/\s+/).indexOf(platform) == -1) { // node is for another platform
-+    if (!nodePlatforms.split(/\s+/).includes(platform)) { // node is for another platform
-       var currentNode = currentTarget.QueryInterface(Ci.nsIRDFNode);
-       // "false" because we don't want to renumber elements in the container
-       RDFC.RemoveElement(currentNode, false);
- 
-       // move to next node - ignore the children, because 1) they might be
-       // needed elsewhere and 2) nodes not connected to RDF_ROOT are ignored
-       continue;
-     }
-diff --git a/suite/components/nsSuiteGlue.js b/suite/components/nsSuiteGlue.js
---- a/suite/components/nsSuiteGlue.js
-+++ b/suite/components/nsSuiteGlue.js
-@@ -1145,17 +1145,17 @@ SuiteGlue.prototype = {
- 
-     var spellChecker = Cc["@mozilla.org/spellchecker/engine;1"]
-                          .getService(Ci.mozISpellCheckingEngine);
-     var o1 = {};
-     spellChecker.getDictionaryList(o1, {});
-     var dictList = o1.value;
-     // If the preference contains an invalid dictionary, set it to a valid
-     // dictionary, any dictionary will do.
--    if (dictList.length && dictList.indexOf(prefValue) < 0)
-+    if (dictList.length && !dictList.includes(prefValue))
-       Services.prefs.setCharPref(prefName, dictList[0]);
-   },
- 
-   _migrateDownloadPrefs: function()
-   {
-     // Migration of download-manager preferences
-     if (Services.prefs.getPrefType("browser.download.dir") == Services.prefs.PREF_INVALID ||
-         Services.prefs.getPrefType("browser.download.lastDir") != Services.prefs.PREF_INVALID)
-diff --git a/suite/components/permissions/content/cookieViewer.js b/suite/components/permissions/content/cookieViewer.js
---- a/suite/components/permissions/content/cookieViewer.js
-+++ b/suite/components/permissions/content/cookieViewer.js
-@@ -598,19 +598,19 @@ function doHelpButton()
- }
- 
- /*** =================== FILTER CODE =================== ***/
- 
- function filterCookies(aFilterValue)
- {
-   var filterSet = [];
-   for (let cookie of allCookies) {
--    if (cookie.rawHost.indexOf(aFilterValue) != -1 ||
--        cookie.name.indexOf(aFilterValue) != -1 ||
--        cookie.value.indexOf(aFilterValue) != -1)
-+    if (cookie.rawHost.includes(aFilterValue) ||
-+        cookie.name.includes(aFilterValue) ||
-+        cookie.value.includes(aFilterValue))
-       filterSet.push(cookie);
-   }
-   return filterSet;
- }
- 
- function filter(filter)
- {
-   // clear the display
-diff --git a/suite/components/pref/content/pref-languages-add.js b/suite/components/pref/content/pref-languages-add.js
---- a/suite/components/pref/content/pref-languages-add.js
-+++ b/suite/components/pref/content/pref-languages-add.js
-@@ -16,17 +16,17 @@ function OnLoadAddLanguages()
-   gSelectedLanguages = document.getElementById("intl.accept_languages").value
-                                .toLowerCase().split(/\s*,\s*/);
-   gOtherLanguages = document.getElementById("otherLanguages");
- 
-   if (gLanguageNames)
-   {
-     for (var i = 0; i < gLanguageNames.length; i++)
-     {
--      if (gSelectedLanguages.indexOf(gLanguageNames[i][1]) == -1)
-+      if (!gSelectedLanguages.includes(gLanguageNames[i][1]))
-         gAvailableLanguages.appendItem(gLanguageNames[i][0],
-                                        gLanguageNames[i][1]);
-     }
-   }
- }
- 
- function IsRFC1766LangTag(aCandidate)
- {
-@@ -96,18 +96,18 @@ function WriteAddedLanguages(aListbox)
-   if (languages)
-   {
-     let languageIds = languages.replace(/\s+/g, "").toLowerCase().split(",");
-     for (var i = 0; i < languageIds.length; i++)
-     {
-       let languageId = languageIds[i];
-       if (IsRFC1766LangTag(languageId))
-       {
--        if (addedLang.indexOf(languageId) == -1 &&
--            gSelectedLanguages.indexOf(languageId) == -1)
-+        if (!addedLang.includes(languageId) &&
-+            !gSelectedLanguages.includes(languageId))
-           addedLang.push(languageId);
-       }
-       else
-       {
-         invalidLangs.push(languageId);
-       }
-     }
-   }
-diff --git a/suite/components/sessionstore/nsSessionStore.js b/suite/components/sessionstore/nsSessionStore.js
---- a/suite/components/sessionstore/nsSessionStore.js
-+++ b/suite/components/sessionstore/nsSessionStore.js
-@@ -1372,17 +1372,17 @@ SessionStoreService.prototype = {
-     // up overwriting all of them. Otherwise we'll just close the tabs that
-     // match home pages.
-     let homePages = aWindow.getHomePage();
-     let removableTabs = [];
-     let tabbrowser = aWindow.getBrowser();
-     let normalTabsLen = tabbrowser.tabs.length - tabbrowser._numPinnedTabs;
-     for (let i = 0; i < tabbrowser.tabs.length; i++) {
-       let tab = tabbrowser.tabs[i];
--      if (homePages.indexOf(tab.linkedBrowser.currentURI.spec) != -1) {
-+      if (homePages.includes(tab.linkedBrowser.currentURI.spec)) {
-         removableTabs.push(tab);
-       }
-     }
- 
-     if (tabbrowser.tabs.length == removableTabs.length) {
-       canOverwriteTabs = true;
-     }
-     else {
-@@ -2647,17 +2647,17 @@ SessionStoreService.prototype = {
-           Cu.reportError(ex);
-         }
-       }
-     }
- 
-     // make sure to reset the capabilities and attributes, in case this tab gets reused
-     var disallow = (tabData.disallow)?tabData.disallow.split(","):[];
-     CAPABILITIES.forEach(function(aCapability) {
--      browser.docShell["allow" + aCapability] = disallow.indexOf(aCapability) == -1;
-+      browser.docShell["allow" + aCapability] = !disallow.includes(aCapability);
-     });
-     for (let name in this.xulAttributes)
-       tab.removeAttribute(name);
-     for (let name in tabData.attributes)
-       tab.setAttribute(name, tabData.attributes[name]);
- 
-     if (tabData.storage && browser.docShell instanceof Ci.nsIDocShell)
-       this._deserializeSessionStorage(tabData.storage, browser.docShell);
-@@ -3116,17 +3116,17 @@ SessionStoreService.prototype = {
-           } catch (ex) { /* throws for invalid indices */ }
-         }
-         else if (value && value.fileList && value.type == "file" && node.type == "file") {
-           node.mozSetFileNameArray(value.fileList, value.fileList.length);
-           eventType = "input";
-         }
-         else if (value && typeof value.indexOf == "function" && node.options) {
-           Array.from(node.options).forEach(function(aOpt, aIx) {
--            aOpt.selected = value.indexOf(aIx) > -1;
-+            aOpt.selected = value.includes(aIx);
- 
-             // Only fire the event here if this wasn't selected by default
-             if (!aOpt.defaultSelected)
-               eventType = "change";
-           });
-         }
- 
-         // Fire events for this node if applicable
-@@ -3186,17 +3186,17 @@ SessionStoreService.prototype = {
-    * @param aWindow
-    *        Window reference
-    * @param aWinData
-    *        Object containing session data for the window
-    */
-   restoreWindowFeatures: function sss_restoreWindowFeatures(aWindow, aWinData) {
-     var hidden = (aWinData.hidden)?aWinData.hidden.split(","):[];
-     WINDOW_HIDEABLE_FEATURES.forEach(function(aItem) {
--      aWindow[aItem].visible = hidden.indexOf(aItem) == -1;
-+      aWindow[aItem].visible = !hidden.includes(aItem);
-     });
- 
-     if (aWinData.isPopup)
-       this._windows[aWindow.__SSi].isPopup = true;
-     else
-       delete this._windows[aWindow.__SSi].isPopup;
- 
-     Services.tm.mainThread.dispatch(this.restoreDimensions.bind(this, aWindow,
-diff --git a/suite/components/sidebar/content/sidebarOverlay.js b/suite/components/sidebar/content/sidebarOverlay.js
---- a/suite/components/sidebar/content/sidebarOverlay.js
-+++ b/suite/components/sidebar/content/sidebarOverlay.js
-@@ -526,17 +526,17 @@ function ()
- 
- // This exclude function is used on panels and on the panel picker menu.
- // That is why it is hanging out in the global name space instead of
- // minding its own business in the class.
- function sb_panel_is_excluded(node)
- {
-   var exclude = node.getAttribute('exclude');
-   return ( exclude && exclude != '' &&
--           exclude.indexOf(sidebarObj.component) != -1 );
-+           exclude.includes(sidebarObj.component));
- }
- sbPanel.prototype.is_excluded =
- function ()
- {
-   return sb_panel_is_excluded(this.get_header());
- }
- 
- sbPanel.prototype.is_in_view =
-diff --git a/suite/components/sync/content/syncSetup.js b/suite/components/sync/content/syncSetup.js
---- a/suite/components/sync/content/syncSetup.js
-+++ b/suite/components/sync/content/syncSetup.js
-@@ -126,19 +126,19 @@ var gSyncSetup = {
- 
-     // Generate a new passphrase so that Weave.Service.login() will
-     // actually do something.
-     let passphrase = Weave.Utils.generatePassphrase();
-     Weave.Service.identity.syncKey = passphrase;
- 
-     // Only open the dialog if username + password are actually correct.
-     Weave.Service.login();
--    if ([Weave.LOGIN_FAILED_INVALID_PASSPHRASE,
-+    if (![Weave.LOGIN_FAILED_INVALID_PASSPHRASE,
-          Weave.LOGIN_FAILED_NO_PASSPHRASE,
--         Weave.LOGIN_SUCCEEDED].indexOf(Weave.Status.login) == -1)
-+         Weave.LOGIN_SUCCEEDED].includes(Weave.Status.login))
-       return;
- 
-     // Hide any errors about the passphrase, we know it's not right.
-     let feedback = document.getElementById("existingPassphraseFeedbackRow");
-     feedback.hidden = true;
-     let el = document.getElementById("existingPassphrase");
-     el.value = Weave.Utils.hyphenatePassphrase(passphrase);
- 
-diff --git a/suite/mailnews/components/compose/content/MsgComposeCommands.js b/suite/mailnews/components/compose/content/MsgComposeCommands.js
---- a/suite/mailnews/components/compose/content/MsgComposeCommands.js
-+++ b/suite/mailnews/components/compose/content/MsgComposeCommands.js
-@@ -3294,17 +3294,17 @@ function AutoSave()
-  *
-  * @param aURL    the URL from which to remove the query part
-  * @param aQuery  the query part to remove
-  * @return        the URL with the query part removed
-  */
- function removeQueryPart(aURL, aQuery)
- {
-   // Quick pre-check.
--  if (aURL.indexOf(aQuery) < 0)
-+  if (!aURL.includes(aQuery))
-     return aURL;
- 
-   let indexQM = aURL.indexOf("?");
-   if (indexQM < 0)
-     return aURL;
- 
-   let queryParts = aURL.substr(indexQM + 1).split("&");
-   let indexPart = queryParts.indexOf(aQuery);
-diff --git a/suite/mailnews/content/mailWidgets.xml b/suite/mailnews/content/mailWidgets.xml
---- a/suite/mailnews/content/mailWidgets.xml
-+++ b/suite/mailnews/content/mailWidgets.xml
-@@ -874,17 +874,17 @@
-               return null;
- 
-             let menulist = document.getAnonymousNodes(this)[0];
-             let isCustom = isNaN(this.value);
-             let typedValue = isCustom ? this.value : parseInt(this.value);
- 
-             // custom attribute to style the unavailable menulist item
-             menulist.setAttribute("unavailable",
--              this.valueIds.indexOf(typedValue) < 0);
-+              !this.valueIds.includes(typedValue));
- 
-             // add a hidden menulist item if value is missing
-             let menuitem = menulist.getElementsByAttribute("value", this.value).item(0);
-             if (!menuitem)
-             { // need to add a hidden menuitem
-               menuitem = menulist.appendItem(this.valueLabel, this.value);
-               menuitem.hidden = true;
-             }
-diff --git a/suite/mailnews/content/mailWindowOverlay.js b/suite/mailnews/content/mailWindowOverlay.js
---- a/suite/mailnews/content/mailWindowOverlay.js
-+++ b/suite/mailnews/content/mailWindowOverlay.js
-@@ -605,17 +605,17 @@ function ToggleMessageTagKey(index)
-   {
-     var key = tagArray[i].key;
-     if (!--index)
-     {
-       // found the key, now toggle its state
-       var curKeys = msgHdr.getStringProperty("keywords");
-       if (msgHdr.label)
-         curKeys += " $label" + msgHdr.label;
--      var addKey  = (" " + curKeys + " ").indexOf(" " + key + " ") < 0;
-+      var addKey  = !(" " + curKeys + " ").includes(" " + key + " ");
-       ToggleMessageTag(key, addKey);
-       return;
-     }
-   }
- }
- 
- function ToggleMessageTagMenu(target)
- {
-@@ -700,17 +700,17 @@ function InitMessageTags(menuPopup)
-   // now rebuild the list
-   var msgHdr = gFolderDisplay.selectedMessage;
-   var curKeys = msgHdr.getStringProperty("keywords");
-   if (msgHdr.label)
-     curKeys += " $label" + msgHdr.label;
-   for (var i = 0; i < tagCount; ++i)
-   {
-     var taginfo = tagArray[i];
--    var removeKey = (" " + curKeys + " ").indexOf(" " + taginfo.key + " ") > -1;
-+    var removeKey = (" " + curKeys + " ").includes(" " + taginfo.key + " ");
-     if (taginfo.ordinal.includes("~AUTOTAG") && !removeKey)
-       continue;
- 
-     // TODO we want to either remove or "check" the tags that already exist
-     var newMenuItem = document.createElement("menuitem");
-     SetMessageTagLabel(newMenuItem, i + 1, taginfo.tag);
-     newMenuItem.setAttribute("value", taginfo.key);
-     newMenuItem.setAttribute("type", "checkbox");
-diff --git a/suite/mailnews/content/msgHdrViewOverlay.js b/suite/mailnews/content/msgHdrViewOverlay.js
---- a/suite/mailnews/content/msgHdrViewOverlay.js
-+++ b/suite/mailnews/content/msgHdrViewOverlay.js
-@@ -493,17 +493,17 @@ var messageHeaderSink = {
-       if (("from" in currentHeaderData) && ("sender" in currentHeaderData) && msgHeaderParser)
-       {
-         var senderMailbox = kMailboxSeparator +
-           msgHeaderParser.extractHeaderAddressMailboxes(
-             currentHeaderData.sender.headerValue) + kMailboxSeparator;
-         var fromMailboxes = kMailboxSeparator +
-           msgHeaderParser.extractHeaderAddressMailboxes(
-             currentHeaderData.from.headerValue) + kMailboxSeparator;
--        if (fromMailboxes.indexOf(senderMailbox) >= 0)
-+        if (fromMailboxes.includes(senderMailbox))
-           delete currentHeaderData.sender;
-       }
- 
-       this.onEndHeaders();
-     },
- 
-     handleAttachment: function(contentType, url, displayName, uri, isExternalAttachment)
-     {
-@@ -704,17 +704,17 @@ function SetTagHeader()
-   // extract the tag keys from the msgHdr
-   var msgKeyArray = msgHdr.getStringProperty("keywords").split(" ");
- 
-   // attach legacy label to the front if not already there
-   var label = msgHdr.label;
-   if (label)
-   {
-     var labelKey = "$label" + label;
--    if (msgKeyArray.indexOf(labelKey) < 0)
-+    if (!msgKeyArray.includes(labelKey))
-       msgKeyArray.unshift(labelKey);
-   }
- 
-   // Rebuild the keywords string with just the keys that are actual tags or
-   // legacy labels and not other keywords like Junk and NonJunk.
-   // Retain their order, though, with the label as oldest element.
-   for (let i = msgKeyArray.length - 1; i >= 0; --i)
-     if (!(msgKeyArray[i] in tagKeys))
-diff --git a/suite/mailnews/content/msgMail3PaneWindow.js b/suite/mailnews/content/msgMail3PaneWindow.js
---- a/suite/mailnews/content/msgMail3PaneWindow.js
-+++ b/suite/mailnews/content/msgMail3PaneWindow.js
-@@ -268,21 +268,21 @@ var folderListener =
-           var imapFolder = folder.QueryInterface(Ci.nsIMsgImapMailFolder);
-           if (imapFolder) {
-             var hdrParser = imapFolder.hdrParser;
-             if (hdrParser) {
-               var msgHdr = hdrParser.GetNewMsgHdr();
-               if (msgHdr)
-               {
-                 var hdrs = hdrParser.headers;
--                if (hdrs && hdrs.indexOf("X-attachment-size:") > 0) {
-+                if (hdrs && hdrs.includes("X-attachment-size:")) {
-                   msgHdr.OrFlags(Ci.nsMsgMessageFlags
-                                    .Attachment);
-                 }
--                if (hdrs && hdrs.indexOf("X-image-size:") > 0) {
-+                if (hdrs && hdrs.includes("X-image-size:")) {
-                   msgHdr.setStringProperty("imageSize", "1");
-                 }
-               }
-             }
-           }
-         }
-       }
-       else if (eventType == "DeleteOrMoveMsgCompleted") {
-@@ -554,17 +554,17 @@ function IsCurrentLoadedFolder(aFolder)
-   let currentLoadedFolder = GetThreadPaneFolder();
- 
-   // If the currently loaded folder is virtual,
-   // check if aFolder is one of its searched folders.
-   if (currentLoadedFolder.flags & Ci.nsMsgFolderFlags.Virtual)
-   {
-     return currentLoadedFolder.msgDatabase.dBFolderInfo
-                               .getCharProperty("searchFolderUri").split("|")
--                              .indexOf(msgFolderUri) != -1;
-+                              .includes(msgFolderUri);
-   }
- 
-   // Is aFolder the currently loaded folder?
-   return currentLoadedFolder.URI == msgFolderUri;
- }
- 
- function ServerContainsFolder(server, folder)
- {
-diff --git a/suite/mailnews/content/tabmail.xml b/suite/mailnews/content/tabmail.xml
---- a/suite/mailnews/content/tabmail.xml
-+++ b/suite/mailnews/content/tabmail.xml
-@@ -312,28 +312,29 @@
-       <field name="tabMonitors" readonly="true">
-         new Array()
-       </field>
- 
-       <method name="registerTabMonitor">
-         <parameter name="aTabMonitor"/>
-         <body>
-           <![CDATA[
--            if (this.tabMonitors.indexOf(aTabMonitor) == -1)
-+            if (!this.tabMonitors.includes(aTabMonitor))
-               this.tabMonitors.push(aTabMonitor);
-           ]]>
-         </body>
-       </method>
- 
-       <method name="unregisterTabMonitor">
-         <parameter name="aTabMonitor"/>
-         <body>
-           <![CDATA[
--            if (this.tabMonitors.indexOf(aTabMonitor) >= 0)
--              this.tabMonitors.splice(this.tabMonitors.indexOf(aTabMonitor), 1);
-+            let index = this.tabMonitors.indexOf(aTabMonitor);
-+            if (index >= 0)
-+              this.tabMonitors.splice(index, 1);
-           ]]>
-         </body>
-       </method>
- 
-       <method name="openFirstTab">
-         <body>
-           <![CDATA[
-             // From the moment of creation, our XBL binding already has a
-diff --git a/suite/modules/WindowsJumpLists.jsm b/suite/modules/WindowsJumpLists.jsm
---- a/suite/modules/WindowsJumpLists.jsm
-+++ b/suite/modules/WindowsJumpLists.jsm
-@@ -379,17 +379,17 @@ var WinTaskbarJumpList =
-         }
- 
-         if (count >= this._maxItemCount) {
-           return;
-         }
- 
-         // Do not add items to recent that have already been added to frequent.
-         if (this._frequentHashList &&
--            this._frequentHashList.indexOf(aResult.uri) != -1) {
-+            this._frequentHashList.includes(aResult.uri)) {
-           return;
-         }
- 
-         let title = aResult.title || aResult.uri;
-         let faviconPageUri = Services.io.newURI(aResult.uri);
-         let shortcut = this._getHandlerAppItem(title, title, aResult.uri, 2,
-                                                faviconPageUri);
-         items.appendElement(shortcut);

+ 0 - 204
comm-esr60/comm-esr60/patches/1561782-1-67a1.patch

@@ -1,204 +0,0 @@
-
-# HG changeset patch
-# User Rob Lemley <rob@thunderbird.net>
-# Date 1567004603 14400
-# Node ID 0f86305777da4bc0814494572d9b56a802c316b0
-# Parent  536af60d2fe3b2e790b523223a57163d39b2c869
-Bug 1561782 - Display Thunderbird source code information in about:buildconfig. r=mkmelin
-
-This makes a copy of Firefox's buildconfig.html page for Thunderbird.
-
-The main goal is to include both the Mozilla and Comm changeset URLs.
-
-diff --git a/mail/base/content/buildconfig.css b/mail/base/content/buildconfig.css
-new file mode 100644
---- /dev/null
-+++ b/mail/base/content/buildconfig.css
-@@ -0,0 +1,13 @@
-+/* # This Source Code Form is subject to the terms of the Mozilla Public */
-+/* # License, v. 2.0. If a copy of the MPL was not distributed with this */
-+/* # file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-+
-+@import url("chrome://global/skin/in-content/info-pages.css");
-+
-+body {
-+  align-items: initial;
-+}
-+
-+th { text-align: start; }
-+h2 { margin-top: 1.5em; }
-+th, td { vertical-align: top; }
-diff --git a/mail/base/content/buildconfig.html b/mail/base/content/buildconfig.html
-new file mode 100644
---- /dev/null
-+++ b/mail/base/content/buildconfig.html
-@@ -0,0 +1,103 @@
-+<!DOCTYPE html>
-+# This Source Code Form is subject to the terms of the Mozilla Public
-+# License, v. 2.0. If a copy of the MPL was not distributed with this
-+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-+#
-+#filter substitution
-+#include @TOPOBJDIR@/source-repo.h
-+#include @TOPOBJDIR@/buildid.h
-+<html>
-+<head>
-+  <meta http-equiv="Content-Security-Policy" content="default-src 'none'; style-src chrome:" />
-+  <meta charset="UTF-8">
-+  <meta name="viewport" content="width=device-width; user-scalable=false;">
-+  <title>Build Configuration</title>
-+  <link rel="stylesheet" href="chrome://messenger/content/buildconfig.css" type="text/css">
-+</head>
-+<body class="aboutPageWideContainer">
-+<h1>Build Configuration</h1>
-+<h2>@MOZ_APP_DISPLAYNAME@ @THUNDERBIRD_VERSION_DISPLAY@ - @MOZ_BUILDID@</h2>
-+<table>
-+  <tbody>
-+  #ifdef MOZ_COMM_SOURCE_URL
-+  <tr>
-+    <th>
-+      @MOZ_APP_DISPLAYNAME@ source
-+    </th>
-+  </tr>
-+  <tr>
-+    <td>
-+      <a href="@MOZ_COMM_SOURCE_URL@">@MOZ_COMM_SOURCE_URL@</a>
-+    </td>
-+  </tr>
-+  #endif
-+  #ifdef MOZ_GECKO_SOURCE_URL
-+  <tr>
-+    <th>
-+      Platform source
-+    </th>
-+  </tr>
-+  <tr>
-+    <td>
-+      <a href="@MOZ_GECKO_SOURCE_URL@">@MOZ_GECKO_SOURCE_URL@</a>
-+    </td>
-+  </tr>
-+  #endif
-+  </tbody>
-+</table>
-+
-+<p>The latest information on building @MOZ_APP_DISPLAYNAME@ can be found at
-+  <a href="@THUNDERBIRD_DEVELOPER_WWW@">
-+    @THUNDERBIRD_DEVELOPER_WWW@</a>.
-+</p>
-+
-+<h2>Build platform</h2>
-+<table>
-+  <tbody>
-+  <tr>
-+    <th>Target</th>
-+  </tr>
-+  <tr>
-+    <td>@target@</td>
-+  </tr>
-+  </tbody>
-+</table>
-+#if defined(CC) && defined(CXX) && defined(RUSTC)
-+<h2>Build tools</h2>
-+<table>
-+  <tbody>
-+  <tr>
-+    <th>Compiler</th>
-+    <th>Version</th>
-+    <th>Compiler flags</th>
-+  </tr>
-+  <tr>
-+    <td><code>@CC@</code></td>
-+    <td><code>@CC_VERSION@</code></td>
-+    <td><code>@CFLAGS@</code></td>
-+  </tr>
-+  <tr>
-+    <td><code>@CXX@</code></td>
-+    <td><code>@CC_VERSION@</code></td>
-+    <td><code>@CXXFLAGS@</code></td>
-+  </tr>
-+  <tr>
-+    <td><code>@RUSTC@</code></td>
-+    <td><code>@RUSTC_VERSION@</code></td>
-+    <td><cpde>@RUSTFLAGS@</cpde></td>
-+  </tr>
-+  </tbody>
-+</table>
-+#endif
-+<h2>Configure options</h2>
-+<table>
-+  <tbody>
-+  <tr>
-+    <td>
-+      <code>@MOZ_CONFIGURE_OPTIONS@</code>
-+    </td>
-+  </tr>
-+  </tbody>
-+</table>
-+</body>
-+</html>
-diff --git a/mail/base/jar.mn b/mail/base/jar.mn
---- a/mail/base/jar.mn
-+++ b/mail/base/jar.mn
-@@ -127,16 +127,21 @@ messenger.jar:
-     content/messenger/sanitize.xul                  (content/sanitize.xul)
-     content/messenger/sanitize.js                   (content/sanitize.js)
-     content/messenger/sanitizeDialog.css            (content/sanitizeDialog.css)
-     content/messenger/sanitizeDialog.js             (content/sanitizeDialog.js)
- *   content/messenger/toolbarIconColor.js           (content/toolbarIconColor.js)
- # the following files are mail-specific overrides
- *   content/messenger/license.html                  (/@mozreltopsrcdir@/toolkit/content/license.html)
- % override chrome://global/content/license.html chrome://messenger/content/license.html
-+*   content/messenger/buildconfig.html              (content/buildconfig.html)
-+    content/messenger/buildconfig.css               (content/buildconfig.css)
-+% override chrome://global/content/buildconfig.html chrome://messenger/content/buildconfig.html
-+% override chrome://global/content/buildconfig.css chrome://messenger/content/buildconfig.css
-+
- # L10n resources and overrides.
- % override chrome://mozapps/locale/downloads/settingsChange.dtd chrome://messenger/locale/downloads/settingsChange.dtd
- % override chrome://global/locale/netError.dtd chrome://messenger/locale/netError.dtd
- % resource search-plugins chrome://messenger/locale/searchplugins/
- 
- comm.jar:
- % content communicator %content/communicator/
-    content/communicator/charsetOverlay.xul          (content/charsetOverlay.xul)
-diff --git a/mail/base/moz.build b/mail/base/moz.build
---- a/mail/base/moz.build
-+++ b/mail/base/moz.build
-@@ -23,8 +23,37 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('win
- 
- if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('windows', 'cocoa', 'gtk3'):
-     DEFINES['CAN_DRAW_IN_TITLEBAR'] = 1
- 
- if CONFIG['MOZ_UPDATER']:
-     DEFINES['MOZ_UPDATER'] = 1
- 
- DEFINES['TOOLKIT_DIR'] = "%s/toolkit" % (CONFIG['moztopsrcdir'],)
-+
-+# For customized buildconfig
-+DEFINES['TOPOBJDIR'] = TOPOBJDIR
-+
-+DEFINES['MOZ_APP_DISPLAYNAME'] = CONFIG['MOZ_APP_DISPLAYNAME']
-+DEFINES['THUNDERBIRD_VERSION_DISPLAY'] = CONFIG['THUNDERBIRD_VERSION_DISPLAY']
-+DEFINES['THUNDERBIRD_DEVELOPER_WWW'] = "https://developer.thunderbird.net/"
-+
-+for var in ('CC', 'CC_VERSION', 'CXX', 'RUSTC', 'RUSTC_VERSION'):
-+    if CONFIG[var]:
-+        DEFINES[var] = CONFIG[var]
-+
-+for var in ('MOZ_CONFIGURE_OPTIONS',):
-+    DEFINES[var] = CONFIG[var]
-+
-+    DEFINES['target'] = CONFIG['target']
-+
-+DEFINES['CFLAGS'] = ' '.join(CONFIG['OS_CFLAGS'])
-+
-+rustflags = CONFIG['RUSTFLAGS']
-+if not rustflags:
-+    rustflags = []
-+DEFINES['RUSTFLAGS'] = ' '.join(rustflags)
-+
-+cxx_flags = []
-+for var in ('OS_CPPFLAGS', 'OS_CXXFLAGS', 'DEBUG', 'OPTIMIZE', 'FRAMEPTR'):
-+    cxx_flags += COMPILE_FLAGS[var] or []
-+
-+DEFINES['CXXFLAGS'] = ' '.join(cxx_flags)

+ 0 - 58
comm-esr60/comm-esr60/patches/1561782-2-67a1.patch

@@ -1,58 +0,0 @@
-
-# HG changeset patch
-# User Rob Lemley <rob@thunderbird.net>
-# Date 1569885555 14400
-# Node ID d09c38b4a740dc580c3d6c5b8fb8af399e372d9d
-# Parent  caf85bd338397b80ce0b8d7b3adad37ed4b95d75
-Bug 1561782 - Follow-up: Remove indentation from preprocessor statements. r=mkmelin DONTBUILD
-
-The statements are not recognized with the preceding whitespace on version 68.
-
-diff --git a/mail/base/content/buildconfig.html b/mail/base/content/buildconfig.html
---- a/mail/base/content/buildconfig.html
-+++ b/mail/base/content/buildconfig.html
-@@ -14,40 +14,40 @@
-   <title>Build Configuration</title>
-   <link rel="stylesheet" href="chrome://messenger/content/buildconfig.css" type="text/css">
- </head>
- <body class="aboutPageWideContainer">
- <h1>Build Configuration</h1>
- <h2>@MOZ_APP_DISPLAYNAME@ @THUNDERBIRD_VERSION_DISPLAY@ - @MOZ_BUILDID@</h2>
- <table>
-   <tbody>
--  #ifdef MOZ_COMM_SOURCE_URL
-+#ifdef MOZ_COMM_SOURCE_URL
-   <tr>
-     <th>
-       @MOZ_APP_DISPLAYNAME@ source
-     </th>
-   </tr>
-   <tr>
-     <td>
-       <a href="@MOZ_COMM_SOURCE_URL@">@MOZ_COMM_SOURCE_URL@</a>
-     </td>
-   </tr>
--  #endif
--  #ifdef MOZ_GECKO_SOURCE_URL
-+#endif
-+#ifdef MOZ_GECKO_SOURCE_URL
-   <tr>
-     <th>
-       Platform source
-     </th>
-   </tr>
-   <tr>
-     <td>
-       <a href="@MOZ_GECKO_SOURCE_URL@">@MOZ_GECKO_SOURCE_URL@</a>
-     </td>
-   </tr>
--  #endif
-+#endif
-   </tbody>
- </table>
- 
- <p>The latest information on building @MOZ_APP_DISPLAYNAME@ can be found at
-   <a href="@THUNDERBIRD_DEVELOPER_WWW@">
-     @THUNDERBIRD_DEVELOPER_WWW@</a>.
- </p>
- 

+ 0 - 33
comm-esr60/comm-esr60/patches/1562537-fixlinks.patch

@@ -1,33 +0,0 @@
-# HG changeset patch
-# User Frank-Rainer Grahl <frgrahl@gmx.net>
-# Parent  6bc16d8bf680d5d306cde0f8593524d23535e172
-Bug 1562537 - Fix links in download progress dialog. r=IanN a=IanN
-
-diff --git a/suite/components/downloads/content/progressDialog.js b/suite/components/downloads/content/progressDialog.js
---- a/suite/components/downloads/content/progressDialog.js
-+++ b/suite/components/downloads/content/progressDialog.js
-@@ -263,22 +263,22 @@ var ProgressDlgController = {
-         break;
-       case "cmd_open":
-         openDownload(gDownload);
-         break;
-       case "cmd_show":
-         showDownload(gDownload);
-         break;
-       case "cmd_openReferrer":
--        openUILink(gDownload.referrer.spec);
-+        openUILink(gDownload.source.referrer);
-         break;
-       case "cmd_copyLocation":
-         var clipboard = Cc["@mozilla.org/widget/clipboardhelper;1"]
-                           .getService(Ci.nsIClipboardHelper);
--        clipboard.copyString(gDownload.source.spec);
-+        clipboard.copyString(gDownload.source.url);
-         break;
-     }
-   },
- 
-   onEvent: function(aEvent) {
-   },
- 
-   onCommandUpdate: function() {

+ 0 - 94
comm-esr60/comm-esr60/patches/1568473-1-72a1.patch

@@ -1,94 +0,0 @@
-# HG changeset patch
-# User Petr Sumbera <petr.sumbera@oracle.com>
-# Date 1563964505 0
-# Node ID 0a3ce6ee6199ffc2af21db85f1cf50760e6c733c
-# Parent  af80f4cd91370a8d3aeb153c35e67db4cbf50543
-Bug 1568473 - remove include of xp_qsort.h on Solaris. r=mkmelin DONTBUILD
-
-Differential Revision: https://phabricator.services.mozilla.com/D39158
-
-diff --git a/ldap/c-sdk/libraries/libldap/sort.c b/ldap/c-sdk/libraries/libldap/sort.c
---- a/ldap/c-sdk/libraries/libldap/sort.c
-+++ b/ldap/c-sdk/libraries/libldap/sort.c
-@@ -46,29 +46,16 @@
-  * is provided ``as is'' without express or implied warranty.
-  */
- /*
-  * sort.c:  LDAP library entry and value sort routines
-  */
- 
- #include "ldap-int.h"
- 
--/* This xp_qsort fixes a memory problem (ABR) on Solaris for the client.
-- * Server is welcome to use it too, but I wasn't sure if it
-- * would be ok to use XP code here.  -slamm
-- *
-- * We don't want to require use of libxp when linking with libldap, so
-- * I'll leave use of xp_qsort as a MOZILLA_CLIENT-only thing for now. --mcs
-- */
--#if defined(MOZILLA_CLIENT) && defined(SOLARIS)
--#include "xp_qsort.h"
--#else
--#define XP_QSORT qsort
--#endif
--
- typedef struct keycmp {
-     void                 *kc_arg;
-     LDAP_KEYCMP_CALLBACK *kc_cmp;
- } keycmp_t;
- 
- typedef struct keything {
-     keycmp_t            *kt_cmp;
-     const struct berval *kt_key;
-@@ -137,17 +124,17 @@ ldap_keysort_entries(
- 			if ( fre ) while ( i-- > 0 ) fre( arg, kt[i]->kt_key );
- 			NSLDAPI_FREE( (char*)kt );
- 			LDAP_SET_LDERRNO( ld, LDAP_NO_MEMORY, NULL, NULL );
- 			return( -1 );
- 		}
- 	}
- 	last = e;
- 
--	XP_QSORT( (void*)kt, count, (size_t)sizeof(keything_t*), ldapi_keycmp );
-+	qsort( (void*)kt, count, (size_t)sizeof(keything_t*), ldapi_keycmp );
-     
- 	ep = chain;
- 	for ( i = 0; i < count; i++ ) {
- 		*ep = kt[i]->kt_msg;
- 		ep = &(*ep)->lm_chain;
- 		if ( fre ) fre( arg, kt[i]->kt_key );
- 	}
- 	*ep = last;
-@@ -290,17 +277,17 @@ ldap_multisort_entries(
- 			}
- 		}
- 
- 		e = e->lm_chain;
- 	}
- 	last = e;
- 
- 	et_cmp_fn = (LDAP_CHARCMP_CALLBACK *)cmp;
--	XP_QSORT( (void *) et, (size_t) count,
-+	qsort( (void *) et, (size_t) count,
- 		(size_t) sizeof(struct entrything), et_cmp );
- 
- 	ep = chain;
- 	for ( i = 0; i < count; i++ ) {
- 		*ep = et[i].et_msg;
- 		ep = &(*ep)->lm_chain;
- 
- 		ldap_value_free( et[i].et_vals );
-@@ -344,12 +331,12 @@ ldap_sort_values(
-     if ( NULL == vals) 
-     {
- 		LDAP_SET_LDERRNO( ld, LDAP_PARAM_ERROR, NULL, NULL );
- 		return( LDAP_PARAM_ERROR );
- 	}
- 	for ( nel = 0; vals[nel] != NULL; nel++ )
- 		;	/* NULL */
- 
--	XP_QSORT( vals, nel, sizeof(char *), (LDAP_VOIDCMP_CALLBACK *)cmp );
-+	qsort( vals, nel, sizeof(char *), (LDAP_VOIDCMP_CALLBACK *)cmp );
- 
- 	return( LDAP_SUCCESS );
- }

+ 0 - 30
comm-esr60/comm-esr60/patches/1568473-2-72a1.patch

@@ -1,30 +0,0 @@
-# HG changeset patch
-# User Jorg K <jorgk@jorgk.com>
-# Date 1571858433 -7200
-# Node ID 6e38217c8fd63f3e65f168a2462b79b7f3b91454
-# Parent  ab5879971ca19acd89a59f2cbb86abe45e4bbd60
-Bug 1568473 - Follow-up: Reformat. rs=reformat
-
-diff --git a/ldap/c-sdk/libraries/libldap/sort.c b/ldap/c-sdk/libraries/libldap/sort.c
---- a/ldap/c-sdk/libraries/libldap/sort.c
-+++ b/ldap/c-sdk/libraries/libldap/sort.c
-@@ -277,18 +277,17 @@ ldap_multisort_entries(
- 			}
- 		}
- 
- 		e = e->lm_chain;
- 	}
- 	last = e;
- 
- 	et_cmp_fn = (LDAP_CHARCMP_CALLBACK *)cmp;
--	qsort( (void *) et, (size_t) count,
--		(size_t) sizeof(struct entrything), et_cmp );
-+    qsort((void *)et, (size_t)count, (size_t)sizeof(struct entrything), et_cmp);
- 
- 	ep = chain;
- 	for ( i = 0; i < count; i++ ) {
- 		*ep = et[i].et_msg;
- 		ep = &(*ep)->lm_chain;
- 
- 		ldap_value_free( et[i].et_vals );
- 	}

+ 0 - 28
comm-esr60/comm-esr60/patches/1570453-typofix-257.patch

@@ -1,28 +0,0 @@
-# HG changeset patch
-# User Frank-Rainer Grahl <frgrahl@gmx.net>
-# Date 1585840256 -7200
-# Parent  8bab92a0a3a951c82f620d583a28a8f636482355
-Bug 1570453 - Follow-up typo fix. rs=me a=me
-
-diff --git a/suite/base/content/tasksOverlay.js b/suite/base/content/tasksOverlay.js
---- a/suite/base/content/tasksOverlay.js
-+++ b/suite/base/content/tasksOverlay.js
-@@ -178,17 +178,17 @@ function CycleWindow(aType) {
-     return null;
- 
-   let topWindow = Services.wm.getMostRecentWindow(null);
-   if (topWindowOfType != topWindow) {
-     toOpenWindow(topWindowOfType);
-     return topWindowOfType;
-   }
- 
--  let foundTop = false;
-+  let topFound = false;
-   let enumerator = Services.wm.getEnumerator(aType);
-   let iWindow;
-   let firstWindow;
- 
-   while (enumerator.hasMoreElements()) {
-     iWindow = enumerator.getNext();
-     if (!iWindow.closed) {
-       if (!firstWindow) {

+ 0 - 88
comm-esr60/comm-esr60/patches/1571287-add-isShowingJunkNotification.patch

@@ -1,88 +0,0 @@
-# HG changeset patch
-# User Frank-Rainer Grahl <frgrahl@gmx.net>
-# Parent  6f5722907fe837a31fb9fb19e141ee746df0d929
-Bug 1571287 - Add isShowingJunkNotification for LookOut add-on. r=IanN a=IanN
-
-diff --git a/suite/mailnews/content/mailWindowOverlay.js b/suite/mailnews/content/mailWindowOverlay.js
---- a/suite/mailnews/content/mailWindowOverlay.js
-+++ b/suite/mailnews/content/mailWindowOverlay.js
-@@ -2493,31 +2493,33 @@ function HandleJunkStatusChanged(folder)
-     return;
- 
-   // If multiple message are selected and we change the junk status
-   // we don't want to show the junk bar (since the message pane is blank).
-   var msgHdr = null;
-   if (GetNumSelectedMessages() == 1)
-     msgHdr = messenger.msgHdrFromURI(loadedMessage);
- 
--  var junkBarWasDisplayed = gMessageNotificationBar.mMsgNotificationBar.getNotificationWithValue("junkContent");
-+  var junkBarWasDisplayed = gMessageNotificationBar.isShowingJunkNotification();
-   gMessageNotificationBar.setJunkMsg(msgHdr);
--  var isJunk = gMessageNotificationBar.mMsgNotificationBar.getNotificationWithValue("junkContent");
- 
-   // Only reload message if junk bar display state has changed.
--  if (msgHdr && junkBarWasDisplayed != isJunk)
-+  if (msgHdr && junkBarWasDisplayed != gMessageNotificationBar.isShowingJunkNotification())
-   {
-     // We may be forcing junk mail to be rendered with sanitized html.
-     // In that scenario, we want to reload the message if the status has just
-     // changed to not junk.
-     var sanitizeJunkMail = Services.prefs.getBoolPref("mail.spam.display.sanitize");
- 
-     // Only bother doing this if we are modifying the html for junk mail...
-     if (sanitizeJunkMail)
-     {
-+      let junkScore = msgHdr.getStringProperty("junkscore");
-+      let isJunk = (junkScore == Ci.nsIJunkMailPlugin.IS_SPAM_SCORE);
-+
-       // If the current row isn't going to change, reload to show sanitized or
-       // unsanitized. Otherwise we wouldn't see the reloaded version anyway.
- 
-       // XXX: need to special handle last message in view, for imap mark as deleted
- 
-       // 1) When marking as non-junk, the msg would move back to the inbox.
-       // 2) When marking as junk, the msg will move or delete, if manualMark is set.
-       // 3) Marking as junk in the junk folder just changes the junk status.
-@@ -2558,20 +2560,19 @@ var gMessageNotificationBar =
-     if (aMsgHdr)
-     {
-       let junkScore = aMsgHdr.getStringProperty("junkscore");
-       isJunk = ((junkScore != "") && (junkScore != "0"));
-     }
- 
-     goUpdateCommand('button_junk');
- 
--    let oldNotif = this.mMsgNotificationBar.getNotificationWithValue("junkContent");
-     if (isJunk)
-     {
--      if (!oldNotif)
-+      if (!this.isShowingJunkNotification())
-       {
-         let brandName = this.mBrandBundle.getString("brandShortName");
-         let junkBarMsg = this.mStringBundle.getFormattedString('junkBarMessage',
-                                                             [brandName]);
- 
-         let buttons = [{
-           label: this.mStringBundle.getString('junkBarInfoButton'),
-           accessKey: this.mStringBundle.getString('junkBarInfoButtonKey'),
-@@ -2596,16 +2597,20 @@ var gMessageNotificationBar =
-           null, this.mMsgNotificationBar.PRIORITY_WARNING_HIGH, buttons);
-         this.mMsgNotificationBar.collapsed = false;
-       }
-     }
-   },
- 
-   remoteOrigins: null,
- 
-+  isShowingJunkNotification: function() {
-+    return !!this.mMsgNotificationBar.getNotificationWithValue("junkContent");
-+  },
-+
-   setRemoteContentMsg: function(aMsgHdr, aContentURI, aCanOverride)
-   {
-     // remoteOrigins is a Set of all blockable Origins.
-     if (!this.remoteOrigins)
-       this.remoteOrigins = new Set();
- 
-     var origin = aContentURI.spec;
-     try

+ 0 - 876
comm-esr60/comm-esr60/patches/1572129-perms-v1_3.patch

@@ -1,876 +0,0 @@
-# HG changeset patch
-# User Ian Neal <iann_cvs@blueyonder.co.uk>
-# Parent  c3917bacf5b325c762132d959b11799e9f63137c
-Bug 1572129 - Simplify and harmonise cookieViewer and permissionsManager code r/a=frg
-
-diff --git a/suite/components/permissions/content/cookieViewer.js b/suite/components/permissions/content/cookieViewer.js
---- a/suite/components/permissions/content/cookieViewer.js
-+++ b/suite/components/permissions/content/cookieViewer.js
-@@ -11,28 +11,36 @@ ChromeUtils.import("resource://gre/modules/AppCon
- var cookies              = [];
- var permissions          = [];
- var allCookies           = [];
- var deletedCookies       = [];
- var deletedPermissions   = [];
- 
- var cookieBundle;
- var gUpdatingBatch = "";
-+var lastCookieSortColumn;
-+var lastCookieSortAscending;
-+var lastPermissionSortColumn;
-+var lastPermissionSortAscending;
- 
- function Startup() {
- 
-   // arguments passed to this routine:
-   //   cookieManager
- 
-   // intialize string bundle
-   cookieBundle = document.getElementById("cookieBundle");
- 
-   // load in the cookies and permissions
-   cookiesTree = document.getElementById("cookiesTree");
-+  lastCookieSortAscending = (cookiesTree.getAttribute("sortAscending") == "true");
-+  lastCookieSortColumn = cookiesTree.getAttribute("sortColumn");
-   permissionsTree = document.getElementById("permissionsTree");
-+  lastPermissionSortAscending = (permissionsTree.getAttribute("sortAscending") == "true");
-+  lastPermissionSortColumn = permissionsTree.getAttribute("sortColumn");
-   loadCookies();
-   loadPermissions();
- 
-   // be prepared to reload the display if anything changes
-   Services.obs.addObserver(cookieReloadDisplay, "cookie-changed", false);
-   Services.obs.addObserver(cookieReloadDisplay, "perm-changed", false);
- 
-   // filter the table if requested by caller
-@@ -85,39 +93,25 @@ function doSelectAll() {
- /*** =================== COOKIES CODE =================== ***/
- 
- var cookiesTreeView = {
-   rowCount : 0,
-   setTree : function(tree){},
-   getImageSrc : function(row,column) {},
-   getProgressMode : function(row,column) {},
-   getCellValue : function(row,column) {},
--  getCellText : function(row,column){
--    var rv="";
--    switch (column.id) {
--    case "domainCol":
--      rv = cookies[row].rawHost;
--      break;
--    case "nameCol":
--      rv = cookies[row].name;
--      break;
--    case "expiresCol":
--      rv = cookies[row].expires;
--      break;
--    }
--    return rv;
--  },
-+  getCellText : function(row,column){ return cookies[row][column.id]; },
-   isSeparator : function(index) {return false;},
-   isSorted: function() { return false; },
-   isContainer : function(index) {return false;},
-   cycleHeader : function(aCol) {},
-   getRowProperties : function(row) { return ""; },
-   getColumnProperties : function(column) { return ""; },
-   getCellProperties : function(row, column) { return ""; }
-- };
-+};
- var cookiesTree;
- 
- function Cookie(id, host, name, path, originAttributes, value,
-                 isDomain, rawHost, isSecure, expires) {
-   this.id = id;
-   this.host = host;
-   this.name = name;
-   this.path = path;
-@@ -134,22 +128,22 @@ function loadCookies() {
-   // load cookies into a table
-   var enumerator = Services.cookies.enumerator;
-   var count = 0;
-   while (enumerator.hasMoreElements()) {
-     var nextCookie = enumerator.getNext();
-     if (!nextCookie) break;
-     nextCookie = nextCookie.QueryInterface(Ci.nsICookie);
-     var host = nextCookie.host;
--    allCookies[count] =
-+    allCookies.push(
-       new Cookie(count++, host, nextCookie.name,
-                  nextCookie.path, nextCookie.originAttributes,
-                  nextCookie.value, nextCookie.isDomain,
-                  host.charAt(0)=="." ? host.slice(1) : host,
--                 nextCookie.isSecure, nextCookie.expires);
-+                 nextCookie.isSecure, nextCookie.expires));
-   }
- 
-   // filter, sort and display the table
-   cookiesTree.view = cookiesTreeView;
-   filter(document.getElementById("filter").value);
- }
- 
- function GetExpiresString(expires) {
-@@ -282,84 +276,43 @@ function FinalizeCookieDeletions() {
- function HandleCookieKeyPress(e) {
-   if (e.keyCode == KeyEvent.DOM_VK_DELETE ||
-       (AppConstants.platform == "macosx" &&
-        e.keyCode == KeyEvent.DOM_VK_BACK_SPACE)) {
-     DeleteCookie();
-   }
- }
- 
--var lastCookieSortColumn = "rawHost";
--var lastCookieSortAscending = true;
--
- function CookieColumnSort(column, updateSelection) {
-   lastCookieSortAscending =
-       SortTree(cookiesTree, cookiesTreeView, cookies,
-                column, lastCookieSortColumn, lastCookieSortAscending,
-                updateSelection);
-   lastCookieSortColumn = column;
--  // set the sortDirection attribute to get the styling going
--  // first we need to get the right element
--  var sortedCol;
--  switch (column) {
--    case "rawHost":
--      sortedCol = document.getElementById("domainCol");
--      break;
--    case "name":
--      sortedCol = document.getElementById("nameCol");
--      break;
--    case "expires":
--      sortedCol = document.getElementById("expiresCol");
--      break;
--  }
--  if (lastCookieSortAscending)
--    sortedCol.setAttribute("sortDirection", "ascending");
--  else
--    sortedCol.setAttribute("sortDirection", "descending");
- 
--  // clear out the sortDirection attribute on the rest of the columns
--  var currentCol = sortedCol.parentNode.firstChild;
--  while (currentCol) {
--    if (currentCol != sortedCol && currentCol.localName == "treecol")
--      currentCol.removeAttribute("sortDirection");
--    currentCol = currentCol.nextSibling;
--  }
-+  SetSortDirection(cookiesTree, column, lastCookieSortAscending);
- }
- 
- /*** =================== PERMISSIONS CODE =================== ***/
- 
- var permissionsTreeView = {
-   rowCount : 0,
-   setTree : function(tree){},
-   getImageSrc : function(row,column) {},
-   getProgressMode : function(row,column) {},
-   getCellValue : function(row,column) {},
--  getCellText : function(row,column) {
--    var rv = "";
--    switch (column.id) {
--      case "siteCol":
--        rv = permissions[row].host;
--        break;
--      case "siteCol2":
--        rv = permissions[row].scheme;
--        break;
--      case "capabilityCol":
--        rv = permissions[row].capability;
--        break;
--    }
--    return rv;
--  },
-+  getCellText : function(row,column) { return permissions[row][column.id]; },
-   isSeparator : function(index) {return false;},
-   isSorted: function() { return false; },
-   isContainer : function(index) {return false;},
-   cycleHeader : function(aCol) {},
-   getRowProperties : function(row) { return ""; },
-   getColumnProperties : function(column) { return ""; },
-   getCellProperties : function(row, column) { return ""; }
-- };
-+};
- var permissionsTree;
- 
- function Permission(id, principal, type, capability) {
-   this.id = id;
-   this.principal = principal;
-   this.host = principal.URI.hostPort;
-   this.scheme = principal.URI.scheme;
-   this.type = type;
-@@ -367,95 +320,83 @@ function Permission(id, principal, type,
- }
- 
- function loadPermissions() {
-   // load permissions into a table
-   var enumerator = Services.perms.enumerator;
-   var canStr = cookieBundle.getString("can");
-   var canSessionStr = cookieBundle.getString("canSession");
-   var cannotStr = cookieBundle.getString("cannot");
-+  var capability;
-+  var count = 0;
-+  var permission;
-   while (enumerator.hasMoreElements()) {
--    var nextPermission = enumerator.getNext();
--    nextPermission = nextPermission.QueryInterface(Ci.nsIPermission);
-+    permission = enumerator.getNext().QueryInterface(Ci.nsIPermission);
-     // We are only interested in cookie permissions in this code.
--    if (nextPermission.type == "cookie") {
--      // It is currently possible to add a cookie permission for about:xxx and other internal pages.
--      // They are probably invalid and will be ignored for now.
-+    if (permission.type == "cookie") {
-+      // It is currently possible to add a cookie permission for about:xxx
-+      // and other internal pages. They are probably invalid and will be
-+      // ignored for now.
-       // Test if the permission has a host.
-       try {
--        nextPermission.principal.URI.host;
-+        permission.principal.URI.host;
-       }
-       catch (e) {
-         Cu.reportError("Invalid permission found: " +
--                       nextPermission.principal.origin + " " +
--                       nextPermission.type);
-+                       permission.principal.origin + " " + permission.type);
-         continue;
-       }
- 
--      var capability;
--      switch (nextPermission.capability) {
-+      switch (permission.capability) {
-         case Ci.nsIPermissionManager.ALLOW_ACTION:
-           capability = canStr;
-           break;
-         case Ci.nsIPermissionManager.DENY_ACTION:
-           capability = cannotStr;
-           break;
-         case Ci.nsICookiePermission.ACCESS_SESSION:
-           capability = canSessionStr;
-           break;
-         default:
-           continue;
-       }
--      permissions.push(new Permission(permissions.length,
--                                      nextPermission.principal,
--                                      nextPermission.type,
-+      permissions.push(new Permission(count++,
-+                                      permission.principal,
-+                                      permission.type,
-                                       capability));
-     }
-   }
-   permissionsTreeView.rowCount = permissions.length;
- 
-   // sort and display the table
-   permissionsTree.view = permissionsTreeView;
--  permissionsTreeView.selection.select(-1);
-+  permissionsTreeView.selection.clearSelection();
-   SortTree(permissionsTree, permissionsTreeView, permissions,
-            lastPermissionSortColumn, lastPermissionSortColumn,
-            !lastPermissionSortAscending);
- 
-   // disable "remove all" button if there are no cookies
--  if (permissions.length == 0) {
--    document.getElementById("removeAllPermissions").setAttribute("disabled", "true");
--  } else {
--    document.getElementById("removeAllPermissions").removeAttribute("disabled");
--  }
--
--}
--
--function PermissionSelected() {
--  var selections = GetTreeSelections(permissionsTree);
--  if (selections.length)
--    document.getElementById("removePermission").removeAttribute("disabled");
--  else
--    document.getElementById("removePermission").setAttribute("disabled", "true");
-+  document.getElementById("removeAllPermissions").disabled = permissions.length == 0;
- }
- 
- function DeletePermission() {
-   if (permissionsTreeView.selection.count > 1 &&
-       PromptConfirm("deleteSelectedSitesTitle",
-                     "deleteSelectedCookiesSites",
-                     "deleteSelectedSitesYes") == 1) {
-     return;
-   }
-   DeleteSelectedItemFromTree(permissionsTree, permissionsTreeView,
-                                  permissions, deletedPermissions,
-                                  "removePermission", "removeAllPermissions");
-   FinalizePermissionDeletions();
- }
- 
- function setCookiePermissions(action) {
--  var site = document.getElementById('cookie-site');
-+  var site = document.getElementById("cookie-site");
- 
-   // let the backend do the validation
-   try {
-     var url = new URL(site.value);
-   } catch (e) {
-     // show an error if URL is invalid
-     window.alert(cookieBundle.getString("allowedURLSchemes"));
-     return;
-@@ -465,41 +406,30 @@ function setCookiePermissions(action) {
-     var uri = Services.io.newURI(url);
-   } catch (e) {
-     // show an error if URI can not be constructed or adding it failed
-     window.alert(cookieBundle.getString("errorAddPermission"));
-     return;
-   }
-   // only allow a few schemes here
-   // others like file:// would produce an invalid entry in the database
--  if (uri.scheme != 'http'  &&
--      uri.scheme != 'https') {
-+  if (uri.scheme != "http"  &&
-+      uri.scheme != "https") {
-     // show an error if uri uses invalid scheme
-     window.alert(uri.scheme + ": " + cookieBundle.getString("allowedURLSchemes"));
-     return;
-   }
- 
-   if (Services.perms.testPermission(uri, "cookie") != action)
-     Services.perms.add(uri, "cookie", action);
- 
-   site.focus();
-   site.value = "";
- }
- 
--function buttonEnabling(textfield) {
--  // trim any leading space
--  var site = textfield.value.replace(/^\s*([-\w]*:\/+)?/, "");
--  var block = document.getElementById("btnBlock");
--  var session = document.getElementById("btnSession");
--  var allow = document.getElementById("btnAllow");
--  block.disabled = !site;
--  session.disabled = !site;
--  allow.disabled = !site;
--}
--
- function DeleteAllPermissions() {
-   if (PromptConfirm("deleteAllSitesTitle",
-                     "deleteAllCookiesSites",
-                     "deleteAllSitesYes") == 1) {
-     return;
-   }
- 
-   DeleteAllFromTree(permissionsTree, permissionsTreeView,
-@@ -515,65 +445,40 @@ function FinalizePermissionDeletions() {
-   gUpdatingBatch = "perm-changed";
-   for (let permission of deletedPermissions)
-     Services.perms.removeFromPrincipal(permission.principal, permission.type);
-   deletedPermissions.length = 0;
-   gUpdatingBatch = "";
- }
- 
- function HandlePermissionKeyPress(e) {
--  if (e.keyCode == 46) {
-+  if (e.keyCode == KeyEvent.DOM_VK_DELETE ||
-+      (AppConstants.platform == "macosx" &&
-+       e.keyCode == KeyEvent.DOM_VK_BACK_SPACE)) {
-     DeletePermission();
-   }
- }
- 
--var lastPermissionSortColumn = "host";
--var lastPermissionSortAscending = true;
--
- function PermissionColumnSort(column, updateSelection) {
-   lastPermissionSortAscending =
-     SortTree(permissionsTree, permissionsTreeView, permissions,
-                  column, lastPermissionSortColumn, lastPermissionSortAscending,
-                  updateSelection);
-   lastPermissionSortColumn = column;
- 
--  // make sure sortDirection is set
--  var sortedCol;
--  switch (column) {
--    case "host":
--      sortedCol = document.getElementById("siteCol");
--      break;
--    case "scheme":
--      sortedCol = document.getElementById("siteCol2");
--      break;
--    case "capability":
--      sortedCol = document.getElementById("capabilityCol");
--      break;
--  }
--  if (lastPermissionSortAscending)
--    sortedCol.setAttribute("sortDirection", "ascending");
--  else
--    sortedCol.setAttribute("sortDirection", "descending");
--
--  // clear out the sortDirection attribute on the rest of the columns
--  var currentCol = sortedCol.parentNode.firstChild;
--  while (currentCol) {
--    if (currentCol != sortedCol && currentCol.localName == "treecol")
--      currentCol.removeAttribute("sortDirection");
--    currentCol = currentCol.nextSibling;
--  }
-+  SetSortDirection(permissionsTree, column, lastPermissionSortAscending);
- }
- 
- /*** ============ CODE FOR HELP BUTTON =================== ***/
- 
- function doHelpButton()
- {
--  var selTab = document.getElementById('tabbox').selectedTab;
--  var key = selTab.getAttribute('help');
--  openHelp(key, 'chrome://communicator/locale/help/suitehelp.rdf');
-+  var selTab = document.getElementById("tabbox").selectedTab;
-+  var key = selTab.getAttribute("help");
-+  openHelp(key, "chrome://communicator/locale/help/suitehelp.rdf");
- }
- 
- /*** =================== FILTER CODE =================== ***/
- 
- function filterCookies(aFilterValue)
- {
-   var filterSet = [];
-   for (let cookie of allCookies) {
-diff --git a/suite/components/permissions/content/cookieViewer.xul b/suite/components/permissions/content/cookieViewer.xul
---- a/suite/components/permissions/content/cookieViewer.xul
-+++ b/suite/components/permissions/content/cookieViewer.xul
-@@ -54,28 +54,41 @@
-                      aria-controls="cookiesTree"
-                      placeholder="&search.placeholder;"
-                      oncommand="filter(this.value);"/>
-           </hbox>
-           <separator class="thin"/>
-           <label value="&div.cookiesonsystem.label;" control="cookiesTree"/>
-           <separator class="thin"/>
-           <tree id="cookiesTree" flex="1" style="height: 10em;"
--                    onkeypress="HandleCookieKeyPress(event)"
--                    onselect="CookieSelected();">
-+                onkeypress="HandleCookieKeyPress(event);"
-+                onselect="CookieSelected();"
-+                sortAscending="true"
-+                sortColumn="rawHost"
-+                persist="sortAscending sortColumn">
-             <treecols>
--              <treecol id="domainCol" label="&treehead.cookiedomain.label;" flex="5"
--                       onclick="CookieColumnSort('rawHost', true);" persist="width hidden"
--                       sortDirection="ascending"/>
-+              <treecol id="rawHost"
-+                       label="&treehead.cookiedomain.label;"
-+                       flex="5"
-+                       onclick="CookieColumnSort(this.id, true);"
-+                       sortDirection="ascending"
-+                       persist="width hidden"/>
-               <splitter class="tree-splitter"/>
--              <treecol id="nameCol" label="&treehead.cookiename.label;" flex="5"
--                       onclick="CookieColumnSort('name', true);" persist="width hidden"/>
-+              <treecol id="name"
-+                       label="&treehead.cookiename.label;"
-+                       flex="5"
-+                       onclick="CookieColumnSort(this.id, true);"
-+                       persist="width hidden"/>
-               <splitter class="tree-splitter"/>
--              <treecol id="expiresCol" label="&treehead.cookieexpires.label;" flex="10"
--                       hidden="true" onclick="CookieColumnSort('expires', true);" persist="width hidden"/>
-+              <treecol id="expires"
-+                       label="&treehead.cookieexpires.label;"
-+                       flex="10"
-+                       hidden="true"
-+                       onclick="CookieColumnSort(this.id, true);"
-+                       persist="width hidden"/>
-             </treecols>
-             <treechildren/>
-           </tree>
-           <groupbox>
-             <caption label="&treehead.infoselected.label;"/>
-             <!-- labels -->
-             <grid flex="1">
-               <columns>
-@@ -146,50 +159,57 @@
-           </hbox>
-         </vbox>
-       </vbox>
- 
-       <vbox id="servers" flex="1">
-           <description id="permissionsText">&div.bannedservers.label;</description>
-           <separator class="thin"/>
-           <hbox>
--            <textbox id="cookie-site" flex="1" oninput="buttonEnabling(this);"/>
-+            <textbox id="cookie-site"
-+                     flex="1"
-+                     oninput="handleHostInput(this.value);"/>
-             <button id="btnBlock" label="&blockSite.label;" disabled="true"
-                     accesskey="&blockSite.accesskey;"
-                     oncommand="setCookiePermissions(Ci.nsIPermissionManager.DENY_ACTION);"/>
-             <button id="btnSession" label="&allowSiteSession.label;" disabled="true"
-                     accesskey="&allowSiteSession.accesskey;"
-                     oncommand="setCookiePermissions(Ci.nsICookiePermission.ACCESS_SESSION);"/>
-             <button id="btnAllow" label="&allowSite.label;" disabled="true"
-                     accesskey="&allowSite.accesskey;"
-                     oncommand="setCookiePermissions(Ci.nsIPermissionManager.ALLOW_ACTION);"/>
-           </hbox>
-           <separator class="thin"/>
-           <tree id="permissionsTree"
-                 flex="1"
-                 style="height: 10em;"
-                 hidecolumnpicker="true"
--                onkeypress="HandlePermissionKeyPress(event)"
--                onselect="PermissionSelected();">
-+                onkeypress="HandlePermissionKeyPress(event);"
-+                onselect="PermissionSelected(this);"
-+                sortAscending="true"
-+                sortColumn="host"
-+                persist="sortAscending sortColumn">
-             <treecols>
--              <treecol id="siteCol"
-+              <treecol id="host"
-                        label="&treehead.sitename.label;"
-                        flex="5"
--                       onclick="PermissionColumnSort('host', true);" persist="width"
--                       sortDirection="ascending"/>
--              <splitter class="tree-splitter"/>
--              <treecol id="siteCol2" label="&treehead.scheme.label;"
--                       flex="5"
--                       onclick="PermissionColumnSort('scheme', true);"
-+                       onclick="PermissionColumnSort(this.id, true);"
-+                       sortDirection="ascending"
-                        persist="width"/>
-               <splitter class="tree-splitter"/>
--              <treecol id="capabilityCol"
-+              <treecol id="scheme"
-+                       label="&treehead.scheme.label;"
-+                       flex="5"
-+                       onclick="PermissionColumnSort(this.id, true);"
-+                       persist="width"/>
-+              <splitter class="tree-splitter"/>
-+              <treecol id="capability"
-                        label="&treehead.status.label;"
-                        flex="5"
--                       onclick="PermissionColumnSort('capability', true);"
-+                       onclick="PermissionColumnSort(this.id, true);"
-                        persist="width"/>
-             </treecols>
-             <treechildren/>
-           </tree>
-           <hbox>
-             <button id="removePermission"
-                     disabled="true"
-                     label="&removepermission.label;"
-diff --git a/suite/components/permissions/content/permissionsManager.js b/suite/components/permissions/content/permissionsManager.js
---- a/suite/components/permissions/content/permissionsManager.js
-+++ b/suite/components/permissions/content/permissionsManager.js
-@@ -1,33 +1,28 @@
- /* This Source Code Form is subject to the terms of the Mozilla Public
-  * License, v. 2.0. If a copy of the MPL was not distributed with this
-  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
- 
- ChromeUtils.import("resource://gre/modules/Services.jsm");
-+ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
- 
- var permissions = [];
- var removals = [];
- 
- var sortColumn;
- var sortAscending;
- 
- var permissionsTreeView = {
-     rowCount: 0,
-     setTree: function(tree) {},
-     getImageSrc: function(row, column) {},
-     getProgressMode: function(row, column) {},
-     getCellValue: function(row, column) {},
--    getCellText: function(row, column) {
--      if (column.id == "siteCol")
--        return permissions[row].rawHost;
--      else if (column.id == "statusCol")
--        return permissions[row].capability;
--      return "";
--    },
-+    getCellText: function(row, column) { return permissions[row][column.id]; },
-     isSeparator: function(index) { return false; },
-     isSorted: function() { return false; },
-     isContainer: function(index) { return false; },
-     cycleHeader: function(column) {},
-     getRowProperties: function(row, column) { return ""; },
-     getColumnProperties: function(column) { return ""; },
-     getCellProperties: function(row, column) { return ""; }
-   };
-@@ -78,17 +73,17 @@ function Startup() {
- 
-   var urlFieldVisible = params.blockVisible ||
-                         params.sessionVisible ||
-                         params.allowVisible;
- 
-   document.getElementById("url").hidden = !urlFieldVisible;
-   document.getElementById("urlLabel").hidden = !urlFieldVisible;
- 
--  handleHostInput(document.getElementById("url"));
-+  handleHostInput(document.getElementById("url").value);
-   loadPermissions();
- }
- 
- function onAccept() {
-   finalizeChanges();
-   reInitialize();
- 
-   // Don't close the window.
-@@ -101,53 +96,37 @@ function onCancel() {
-   // Don't close the window.
-   return false;
- }
- 
- function reInitialize() {
-   permissions = [];
-   removals = [];
- 
-+  // loadPermissions will reverse the sort direction so flip it now.
-+  sortAscending = !sortAscending;
-+
-   // Reload permissions tree.
-   loadPermissions();
- }
- 
--
- function setHost(aHost) {
-   document.getElementById("url").value = aHost;
- }
- 
- function Permission(id, principal, host, type, capability, perm) {
-   this.id = id;
-   this.principal = principal;
-   this.host = host;
-   this.rawHost = host.replace(/^\./, "");
-   this.type = type;
-   this.capability = capability;
-   this.perm = perm;
- }
- 
--function handleHostInput(aSiteField) {
--  // trim any leading and trailing spaces and scheme
--  // and set buttons appropiately
--  btnDisable(!trimSpacesAndScheme(aSiteField.value));
--}
--
--function trimSpacesAndScheme(aString) {
--  if (!aString)
--    return "";
--  return aString.trim().replace(/([-\w]*:\/+)?/, "");
--}
--
--function btnDisable(aDisabled) {
--  document.getElementById("btnSession").disabled = aDisabled;
--  document.getElementById("btnBlock").disabled = aDisabled;
--  document.getElementById("btnAllow").disabled = aDisabled;
--}
--
- function loadPermissions() {
-   var enumerator = Services.perms.enumerator;
-   var count = 0;
-   var permission;
- 
-   try {
-     while (enumerator.hasMoreElements()) {
-       permission = enumerator.getNext().QueryInterface(Ci.nsIPermission);
-@@ -194,23 +173,18 @@ function capabilityString(aCapability) {
-   return permissionsBundle.getString(capability);
- }
- 
- function permissionColumnSort(aColumn, aUpdateSelection) {
-   sortAscending =
-     SortTree(permissionsTree, permissionsTreeView, permissions,
-              aColumn, sortColumn, sortAscending, aUpdateSelection);
-   sortColumn = aColumn;
--}
- 
--function permissionSelected() {
--  if (Services.perms) {
--    var selections = GetTreeSelections(permissionsTree);
--    document.getElementById("removePermission").disabled = (selections.length < 1);
--  }
-+  SetSortDirection(permissionsTree, aColumn, sortAscending);
- }
- 
- function deletePermissions() {
-   DeleteSelectedItemFromTree(permissionsTree, permissionsTreeView,
-                              permissions, removals,
-                              "removePermission", "removeAllPermissions");
- }
- 
-@@ -244,17 +218,19 @@ function finalizeChanges() {
-                                            p.type);
-       }
-     } catch(ex) {
-     }
-   }
- }
- 
- function handlePermissionKeyPress(e) {
--  if (e.keyCode == 46) {
-+  if (e.keyCode == KeyEvent.DOM_VK_DELETE ||
-+      (AppConstants.platform == "macosx" &&
-+       e.keyCode == KeyEvent.DOM_VK_BACK_SPACE)) {
-     deletePermissions();
-   }
- }
- 
- function addPermission(aPermission) {
-   var textbox = document.getElementById("url");
-   // trim any leading and trailing spaces and scheme
-   var host = trimSpacesAndScheme(textbox.value);
-@@ -262,17 +238,17 @@ function addPermission(aPermission) {
-     let uri = Services.io.newURI("https://" + host);
-     host = uri.host;
-   } catch(ex) {
-     var message = permissionsBundle.getFormattedString("alertInvalid", [host]);
-     var title = permissionsBundle.getString("alertInvalidTitle");
-     Services.prompt.alert(window, title, message);
-     textbox.value = "";
-     textbox.focus();
--    handleHostInput(textbox);
-+    handleHostInput("");
-     return;
-   }
- 
-   // we need this whether the perm exists or not
-   var stringCapability = capabilityString(aPermission);
- 
-   // check whether the permission already exists, if not, add it
-   var exists = false;
-@@ -294,17 +270,17 @@ function addPermission(aPermission) {
-     permissionsTreeView.rowCount = permissions.length;
-     permissionsTree.treeBoxObject.rowCountChanged(permissions.length - 1, 1);
-     permissionsTree.treeBoxObject.ensureRowIsVisible(permissions.length - 1);
-   }
-   textbox.value = "";
-   textbox.focus();
- 
-   // covers a case where the site exists already, so the buttons don't disable
--  handleHostInput(textbox);
-+  handleHostInput("");
- 
-   // enable "remove all" button as needed
-   document.getElementById("removeAllPermissions").disabled = permissions.length == 0;
- }
- 
- function doHelpButton() {
-   openHelp(permissionsBundle.getString(permissionType + "permissionshelp"), "chrome://communicator/locale/help/suitehelp.rdf");
-   return true;
-diff --git a/suite/components/permissions/content/permissionsManager.xul b/suite/components/permissions/content/permissionsManager.xul
---- a/suite/components/permissions/content/permissionsManager.xul
-+++ b/suite/components/permissions/content/permissionsManager.xul
-@@ -29,40 +29,47 @@
- 
-   <description id="permissionsText"/>
-   <separator class="thin"/>
-   <label id="urlLabel"
-          value="&address.label;"
-          accesskey="&address.accesskey;"
-          control="url"/>
-   <hbox align="start">
--    <textbox id="url" flex="1" oninput="handleHostInput(event.target);"/>
-+    <textbox id="url" flex="1" oninput="handleHostInput(event.target.value);"/>
-   </hbox>
-   <hbox pack="end">
-      <button id="btnBlock" disabled="true" accesskey="&block.accesskey;"
-              label="&block.label;" oncommand="addPermission(Ci.nsIPermissionManager.DENY_ACTION);"/>
-      <button id="btnSession" disabled="true" accesskey="&session.accesskey;"
-              label="&session.label;" oncommand="addPermission(Ci.nsICookiePermission.ACCESS_SESSION);"/>
-      <button id="btnAllow" disabled="true" accesskey="&allow.accesskey;"
-              label="&allow.label;" oncommand="addPermission(Ci.nsIPermissionManager.ALLOW_ACTION);"/>
-   </hbox>
-   <separator class="thin"/>
-   <tree id="permissionsTree" flex="1" style="height: 18em;"
-         hidecolumnpicker="true"
-         onkeypress="handlePermissionKeyPress(event)"
--        onselect="permissionSelected();"
-+        onselect="PermissionSelected(this);"
-         sortAscending="false"
-         sortColumn="rawHost"
-         persist="sortAscending sortColumn">
-     <treecols>
--      <treecol id="siteCol" label="&treehead.sitename.label;" flex="3"
--                    onclick="permissionColumnSort('rawHost', true);" persist="width"/>
-+      <treecol id="rawHost"
-+               label="&treehead.sitename.label;"
-+               flex="3"
-+               onclick="permissionColumnSort(this.id, true);"
-+               sortDirection="descending"
-+               persist="width"/>
-       <splitter class="tree-splitter"/>
--      <treecol id="statusCol" label="&treehead.status.label;" flex="1"
--                    onclick="permissionColumnSort('capability', true);" persist="width"/>
-+      <treecol id="capability"
-+               label="&treehead.status.label;"
-+               flex="1"
-+               onclick="permissionColumnSort(this.id, true);"
-+               persist="width"/>
-     </treecols>
-     <treechildren/>
-   </tree>
-   <separator class="thin"/>
-   <hbox>
-     <button id="removePermission" disabled="true"
-             label="&remove.label;" accesskey="&remove.accesskey;"
-             oncommand="deletePermissions();"/>
-diff --git a/suite/components/permissions/content/treeUtils.js b/suite/components/permissions/content/treeUtils.js
---- a/suite/components/permissions/content/treeUtils.js
-+++ b/suite/components/permissions/content/treeUtils.js
-@@ -122,25 +122,61 @@ function SortTree(tree, view, table, col
- 
-   // restore the selection
-   var selectedRow = -1;
-   if (selectedNumber>=0 && updateSelection) {
-     for (var s=0; s<table.length; s++) {
-       if (table[s].id == selectedNumber) {
-         // update selection
-         // note: we need to deselect before reselecting in order to trigger ...Selected()
--        tree.view.selection.select(-1);
-+        tree.view.selection.clearSelection();
-         tree.view.selection.select(s);
-         selectedRow = s;
-         break;
-       }
-     }
-   }
- 
-   // display the results
-   tree.treeBoxObject.invalidate();
-   if (selectedRow >= 0) {
-     tree.treeBoxObject.ensureRowIsVisible(selectedRow)
-   }
- 
-   return ascending;
- }
- 
-+function handleHostInput(aValue) {
-+  // trim any leading and trailing spaces and scheme
-+  // and set buttons appropiately
-+  btnDisable(!trimSpacesAndScheme(aValue));
-+}
-+
-+function trimSpacesAndScheme(aString) {
-+  if (!aString)
-+    return "";
-+  return aString.trim().replace(/([-\w]*:\/+)?/, "");
-+}
-+
-+function btnDisable(aDisabled) {
-+  document.getElementById("btnSession").disabled = aDisabled;
-+  document.getElementById("btnBlock").disabled = aDisabled;
-+  document.getElementById("btnAllow").disabled = aDisabled;
-+}
-+
-+function PermissionSelected(tree) {
-+  var hasSelection = tree.view.selection.count > 0;
-+  document.getElementById("removePermission").disabled = !hasSelection;
-+}
-+
-+function SetSortDirection(tree, column, ascending) {
-+  // first we need to get the right elements
-+  for (let col of tree.getElementsByTagName("treecol")) {
-+    if (col.id == column) {
-+      // set the sortDirection attribute to get the styling going
-+      col.setAttribute("sortDirection", ascending ? "ascending" : "descending");
-+    }
-+    else {
-+      // clear out the sortDirection attribute on the rest of the columns
-+      col.removeAttribute("sortDirection");
-+    }
-+  }
-+}

+ 0 - 31
comm-esr60/comm-esr60/patches/1572293-caldavauth.patch

@@ -1,31 +0,0 @@
-# HG changeset patch
-# User Frank-Rainer Grahl <frgrahl@gmx.net>
-# Parent  3acc445a141f93690f15204f67c3fce838c62b4b
-Bug 1572293 - Show authprompt for images in mail and for caldav access. r=IanN a=IanN
-
-diff --git a/suite/browser/browser-prefs.js b/suite/browser/browser-prefs.js
---- a/suite/browser/browser-prefs.js
-+++ b/suite/browser/browser-prefs.js
-@@ -349,16 +349,22 @@ pref("network.protocol-handler.warn-exte
- pref("network.protocol-handler.warn-external.news", true);
- pref("network.protocol-handler.warn-external.snews", true);
- pref("network.protocol-handler.warn-external.nntp", true);
- 
- // bug 1005566 - Disable seer until properly supported
- // bug 1021370 - Rename Seer to Predictor
- pref("network.predictor.enabled", false);
- 
-+// To allow images to be inserted into a composition with an auth prompt, we
-+// need the following two.
-+pref("network.auth.subresource-img-cross-origin-http-auth-allow", true);
-+// This pref is also needed for showing the caldav auth prompt.
-+pref("network.auth.non-web-content-triggered-resources-http-auth-allow", true);
-+
- pref("mail.biff.show_new_alert",     true);
- 
- // default calendar integration
- pref("mail.calendar-integration.opt-out", false);
- 
- pref("mailnews.ui.deleteMarksRead", true);
- 
- // The maximum amount of decoded image data we'll willingly keep around (we

+ 0 - 238
comm-esr60/comm-esr60/patches/1572976-use-treeUtils-v1_1.patch

@@ -1,238 +0,0 @@
-# HG changeset patch
-# User Ian Neal <iann_cvs@blueyonder.co.uk>
-# Parent  e62b54f5eacf1c894d5bbe852080da108f59bace
-Bug 1572976 - Use gTreeUtils in permissionsManager and cookieViewer r=frg
-
-diff --git a/suite/components/permissions/content/cookieViewer.xul b/suite/components/permissions/content/cookieViewer.xul
---- a/suite/components/permissions/content/cookieViewer.xul
-+++ b/suite/components/permissions/content/cookieViewer.xul
-@@ -18,17 +18,19 @@
-         onload="Startup()"
-         onunload="Shutdown()"
-         ondialoghelp="doHelpButton();"
-         persist="screenX screenY width height">
- 
-   <script type="application/javascript"
-           src="chrome://communicator/content/permissions/cookieViewer.js"/>
-   <script type="application/javascript"
--          src="chrome://communicator/content/permissions/treeUtils.js"/>
-+          src="chrome://communicator/content/permissions/permissionsUtils.js"/>
-+  <script type="application/javascript"
-+          src="chrome://global/content/treeUtils.js"/>
-   <script type="application/javascript"
-           src="chrome://help/content/contextHelp.js" />
- 
-   <keyset id="dialogKeys">
-     <key key="&focusSearch.key;"
-          modifiers="accel"
-          oncommand="focusFilterBox();"/>
-     <key key="&selectAll.key;"
-diff --git a/suite/components/permissions/content/permissionsManager.xul b/suite/components/permissions/content/permissionsManager.xul
---- a/suite/components/permissions/content/permissionsManager.xul
-+++ b/suite/components/permissions/content/permissionsManager.xul
-@@ -16,17 +16,20 @@
-         style="width:32em; height:42em;"
-         persist="width height screenX screenY"
-         onload="Startup();"
-         ondialogaccept="return onAccept();"
-         ondialogcancel="return onCancel();"
-         ondialoghelp="return doHelpButton();">
- 
-   <script type="application/javascript" src="chrome://communicator/content/permissions/permissionsManager.js"/>
--  <script type="application/javascript" src="chrome://communicator/content/permissions/treeUtils.js"/>
-+  <script type="application/javascript"
-+          src="chrome://communicator/content/permissions/permissionsUtils.js"/>
-+  <script type="application/javascript"
-+          src="chrome://global/content/treeUtils.js"/>
-   <script type="application/javascript" src="chrome://help/content/contextHelp.js"/>
- 
-   <stringbundle id="permissionsBundle"
-                 src="chrome://communicator/locale/permissions/permissionsManager.properties"/>
- 
-   <description id="permissionsText"/>
-   <separator class="thin"/>
-   <label id="urlLabel"
-diff --git a/suite/components/permissions/content/treeUtils.js b/suite/components/permissions/content/permissionsUtils.js
-rename from suite/components/permissions/content/treeUtils.js
-rename to suite/components/permissions/content/permissionsUtils.js
---- a/suite/components/permissions/content/treeUtils.js
-+++ b/suite/components/permissions/content/permissionsUtils.js
-@@ -2,77 +2,33 @@
-  *
-  * This Source Code Form is subject to the terms of the Mozilla Public
-  * License, v. 2.0. If a copy of the MPL was not distributed with this
-  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
- 
- function DeleteAllFromTree
-     (tree, view, table, deletedTable, removeButton, removeAllButton) {
- 
--  // remove all items from table and place in deleted table
--  for (var i=0; i<table.length; i++) {
--    deletedTable[deletedTable.length] = table[i];
--  }
--  table.length = 0;
--
--  // redisplay
--  var oldCount = view.rowCount;
--  view.rowCount = 0;
--  tree.treeBoxObject.rowCountChanged(0, -oldCount);
--
-+  gTreeUtils.deleteAll(tree, view, table, deletedTable);
- 
-   // disable buttons
-   document.getElementById(removeButton).setAttribute("disabled", "true")
-   document.getElementById(removeAllButton).setAttribute("disabled","true");
- }
- 
- function DeleteSelectedItemFromTree
-     (tree, view, table, deletedTable, removeButton, removeAllButton) {
- 
--  // Turn off tree selection notifications during the deletion
--  tree.view.selection.selectEventsSuppressed = true;
--
--  // remove selected items from list (by setting them to null) and place in deleted list
--  var selections = GetTreeSelections(tree);
--  for (var s=selections.length-1; s>= 0; s--) {
--    var i = selections[s];
--    deletedTable[deletedTable.length] = table[i];
--    table[i] = null;
--  }
-+  gTreeUtils.deleteSelectedItems(tree, view, table, deletedTable);
- 
--  // collapse list by removing all the null entries
--  for (var j=0; j<table.length; j++) {
--    if (table[j] == null) {
--      var k = j;
--      while ((k < table.length) && (table[k] == null)) {
--        k++;
--      }
--      table.splice(j, k-j);
--      view.rowCount -= k - j;
--      tree.treeBoxObject.rowCountChanged(j, j - k);
--    }
--  }
--
--  // update selection and/or buttons
--  if (table.length) {
--
--    // update selection
--    var nextSelection = (selections[0] < table.length) ? selections[0] : table.length-1;
--    tree.view.selection.select(nextSelection);
--    tree.treeBoxObject.ensureRowIsVisible(nextSelection);
--
--  } else {
--
--    // disable buttons
-+  // disable buttons if nothing left in the table
-+  if (!table.length) {
-     document.getElementById(removeButton).setAttribute("disabled", "true")
-     document.getElementById(removeAllButton).setAttribute("disabled","true");
--
-   }
--
--  tree.view.selection.selectEventsSuppressed = false;
- }
- 
- function GetTreeSelections(tree) {
-   var selections = [];
-   var select = tree.view.selection;
-   if (select) {
-     var count = select.getRangeCount();
-     var min = new Object();
-@@ -90,60 +46,52 @@ function GetTreeSelections(tree) {
- }
- 
- function SortTree(tree, view, table, column, lastSortColumn, lastSortAscending, updateSelection) {
- 
-   // remember which item was selected so we can restore it after the sort
-   var selections = GetTreeSelections(tree);
-   var selectedNumber = selections.length ? table[selections[0]].id : -1;
- 
--  // determine if sort is to be ascending or descending
--  var ascending = (column == lastSortColumn) ? !lastSortAscending : true;
--
-   // do the sort or re-sort
-   // this is a temporary hack for 1.7, we should implement
-   // display and sort variables here for trees in general
--  var compareFunc;
-+  var sortColumn;
-+  var comparator;
-   if (column == "expires") {
--    compareFunc = function compare(first, second) {
--      if (first.expiresSortValue > second.expiresSortValue)
--        return 1;
--      else if (first.expiresSortValue < second.expiresSortValue)
--        return -1;
--      else
--        return 0;
--    }
-+    sortColumn = "expiresSortValue";
-+    comparator = function compare(a, b) { return a - b; };
-   } else {
--    compareFunc = function compare(first, second) {
--      return first[column].toLowerCase().localeCompare(second[column].toLowerCase());
--    }
-+    sortColumn = column;
-+    comparator = function compare(a, b) {
-+      return a.toLowerCase().localeCompare(b.toLowerCase());
-+    };
-   }
--  table.sort(compareFunc);
--  if (!ascending)
--    table.reverse();
-+  if (lastSortColumn == "expires") {
-+    lastSortColumn = "expiresSortValue";
-+  }
-+  var ascending = gTreeUtils.sort(tree, view, table, sortColumn, comparator,
-+                                  lastSortColumn, lastSortAscending);
- 
-   // restore the selection
--  var selectedRow = -1;
--  if (selectedNumber>=0 && updateSelection) {
--    for (var s=0; s<table.length; s++) {
-+  if (selectedNumber >= 0 && updateSelection) {
-+    var selectedRow = -1;
-+    for (var s = 0; s < table.length; s++) {
-       if (table[s].id == selectedNumber) {
--        // update selection
--        // note: we need to deselect before reselecting in order to trigger ...Selected()
--        tree.view.selection.clearSelection();
--        tree.view.selection.select(s);
-         selectedRow = s;
-         break;
-       }
-     }
--  }
- 
--  // display the results
--  tree.treeBoxObject.invalidate();
--  if (selectedRow >= 0) {
--    tree.treeBoxObject.ensureRowIsVisible(selectedRow)
-+    if (selectedRow > 0) {
-+      // update selection and display the results
-+      tree.view.selection.select(selectedRow);
-+      tree.treeBoxObject.invalidate();
-+      tree.treeBoxObject.ensureRowIsVisible(selectedRow);
-+    }
-   }
- 
-   return ascending;
- }
- 
- function handleHostInput(aValue) {
-   // trim any leading and trailing spaces and scheme
-   // and set buttons appropiately
-diff --git a/suite/components/permissions/jar.mn b/suite/components/permissions/jar.mn
---- a/suite/components/permissions/jar.mn
-+++ b/suite/components/permissions/jar.mn
-@@ -2,9 +2,9 @@
- # 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/.
- 
- comm.jar:
-    content/communicator/permissions/cookieViewer.js                 (content/cookieViewer.js)
-    content/communicator/permissions/cookieViewer.xul                (content/cookieViewer.xul)
-    content/communicator/permissions/permissionsManager.js           (content/permissionsManager.js)
-    content/communicator/permissions/permissionsManager.xul          (content/permissionsManager.xul)
--   content/communicator/permissions/treeUtils.js                    (content/treeUtils.js)
-+   content/communicator/permissions/permissionsUtils.js             (content/permissionsUtils.js)

+ 0 - 197
comm-esr60/comm-esr60/patches/1573526-pageinfo_gtreeutils.patch

@@ -1,197 +0,0 @@
-# HG changeset patch
-# User Ian Neal <iann_cvs@blueyonder.co.uk>
-# Parent  80922894be19d3a96ae1c5ea133f8df4bd3c4d69
-Bug 1573526 - Use gTreeUtils in pageinfo - including porting parts of |Bug 275223 - Enable Tree View Columns to be Sorted in Page Info| r=frg
-
-diff --git a/suite/browser/pageinfo/pageInfo.js b/suite/browser/pageinfo/pageInfo.js
---- a/suite/browser/pageinfo/pageInfo.js
-+++ b/suite/browser/pageinfo/pageInfo.js
-@@ -6,24 +6,23 @@
- ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
- ChromeUtils.import("resource://gre/modules/Services.jsm");
- ChromeUtils.import("resource://gre/modules/FileUtils.jsm");
- 
- XPCOMUtils.defineLazyModuleGetter(this, "Downloads",
-                                   "resource://gre/modules/Downloads.jsm");
- 
- //******** define a js object to implement nsITreeView
--function pageInfoTreeView(copycol)
-+function pageInfoTreeView(treeid, copycol)
- {
-   /* copycol is the index number for the column that we want to add to
-    * the copy-n-paste buffer when the user hits accel-c.
--   * Older pageInfo extensions might call pageInfoTreeView with copycol
--   * as the second argument of two.
-    */
--  this.copycol = arguments.length == 2 ? arguments[1] : copycol;
-+  this.treeid = treeid;
-+  this.copycol = copycol;
-   this.rows = 0;
-   this.tree = null;
-   this.data = [ ];
-   this.selection = null;
-   this.sortcol = -1;
-   this.sortdir = false;
- }
- 
-@@ -65,22 +64,20 @@ pageInfoTreeView.prototype = {
- 
-   invalidate: function()
-   {
-     this.tree.invalidate();
-   },
- 
-   clear: function()
-   {
--    var oldrows = this.rows;
-+    if (this.tree)
-+      this.tree.rowCountChanged(0, -this.rows);
-     this.rows = 0;
-     this.data = [];
--
--    if (this.tree)
--      this.tree.rowCountChanged(0, -oldrows);
-   },
- 
-   handleCopy: function(row)
-   {
-     return (row < 0 || this.copycol < 0) ? "" : (this.data[row][this.copycol] || "");
-   },
- 
-   performActionOnRow: function(action, row)
-@@ -88,50 +85,40 @@ pageInfoTreeView.prototype = {
-     if (action == "copy") {
-       var data = this.handleCopy(row)
-       this.tree.treeBody.parentNode.setAttribute("copybuffer", data);
-     }
-   },
- 
-   cycleHeader: function cycleHeader(col)
-   {
--    this.doSort(col);
-+    this.doSort(col, col.index);
-   },
- 
--  doSort: function doSort(col, comparator)
-+  doSort: function doSort(col, index, comparator)
-   {
--    var ascending = col.index != this.sortcol || !this.sortdir;
--    this.sortdir = ascending;
--    this.sortcol = col.index;
-+    var tree = document.getElementById(this.treeid);
-+    if (!comparator) {
-+      comparator = function comparator(a, b) {
-+        return (a || "").toLowerCase().localeCompare((b || "").toLowerCase());
-+      };
-+    }
-+
-+    this.sortdir = gTreeUtils.sort(tree, this, this.data, index,
-+                                   comparator, this.sortcol, this.sortdir);
- 
-     Array.from(this.tree.columns).forEach(function(treecol) {
-       treecol.element.removeAttribute("sortActive");
-       treecol.element.removeAttribute("sortDirection");
-     });
-     col.element.setAttribute("sortActive", true);
--    col.element.setAttribute("sortDirection", ascending ?
-+    col.element.setAttribute("sortDirection", this.sortdir ?
-                                               "ascending" : "descending");
- 
--    var index = col.index;
--    if (!comparator) {
--      comparator = function comparator(a, b) {
--        return a[index].toLowerCase().localeCompare(b[index].toLowerCase());
--      };
--    }
--
--    this.data.sort(comparator);
--    if (!ascending)
--      this.data.reverse();
--
--    this.tree.invalidate();
--    // Note: we need to deselect before reselecting in order to trigger
--    // onselect handlers.
--    this.tree.view.selection.clearSelection();
--    this.tree.view.selection.select(0);
--    this.tree.ensureRowIsVisible(0);
-+    this.sortcol = index;
-   },
- 
-   getRowProperties: function(row) { return ""; },
-   getCellProperties: function(row, column) { return ""; },
-   getColumnProperties: function(column) { return ""; },
-   isContainer: function(index) { return false; },
-   isContainerOpen: function(index) { return false; },
-   isSeparator: function(index) { return false; },
-@@ -174,21 +161,21 @@ const COL_IMAGE_MIME    = 9;
- const COPYCOL_NONE = -1;
- const COPYCOL_META_CONTENT = 1;
- const COPYCOL_FORM_ACTION = 2;
- const COPYCOL_FIELD_VALUE = 3;
- const COPYCOL_LINK_ADDRESS = 1;
- const COPYCOL_IMAGE = COL_IMAGE_ADDRESS;
- 
- // one nsITreeView for each tree in the window
--var gMetaView = new pageInfoTreeView(COPYCOL_META_CONTENT);
--var gFormView = new pageInfoTreeView(COPYCOL_FORM_ACTION);
--var gFieldView = new pageInfoTreeView(COPYCOL_FIELD_VALUE);
--var gLinkView = new pageInfoTreeView(COPYCOL_LINK_ADDRESS);
--var gImageView = new pageInfoTreeView(COPYCOL_IMAGE);
-+var gMetaView = new pageInfoTreeView("metatree", COPYCOL_META_CONTENT);
-+var gFormView = new pageInfoTreeView("formtree", COPYCOL_FORM_ACTION);
-+var gFieldView = new pageInfoTreeView("formpreview", COPYCOL_FIELD_VALUE);
-+var gLinkView = new pageInfoTreeView("linktree", COPYCOL_LINK_ADDRESS);
-+var gImageView = new pageInfoTreeView("imagetree", COPYCOL_IMAGE);
- 
- gImageView.getCellProperties = function(row, col) {
-   var properties = col.id == "image-address" ? "ltr" : "";
- 
-   if (gImageView.data[row][COL_IMAGE_SIZE] == gStrings.unknown &&
-       !/^https:/.test(gImageView.data[row][COL_IMAGE_ADDRESS]))
-     properties += " broken";
- 
-@@ -206,21 +193,21 @@ gLinkView.getCellProperties = function(r
- gImageView.cycleHeader = function(col)
- {
-   var index = col.index;
-   var comparator;
-   switch (col.index) {
-     case COL_IMAGE_SIZE:
-       index = COL_IMAGE_SIZENUM;
-     case COL_IMAGE_COUNT:
--      comparator = function numComparator(a, b) { return a[index] - b[index]; };
-+      comparator = function numComparator(a, b) { return a - b; };
-       break;
-   }
- 
--  this.doSort(col, comparator);
-+  this.doSort(col, index, comparator);
- };
- 
- var gImageHash = { };
- 
- // localized strings (will be filled in when the document is loaded)
- // this isn't all of them, these are just the ones that would otherwise have been loaded inside a loop
- var gStrings = { };
- var gBundle;
-diff --git a/suite/browser/pageinfo/pageInfo.xul b/suite/browser/pageinfo/pageInfo.xul
---- a/suite/browser/pageinfo/pageInfo.xul
-+++ b/suite/browser/pageinfo/pageInfo.xul
-@@ -17,16 +17,17 @@
-   windowtype="Browser:page-info"
-   onload="onLoadPageInfo()"
-   onunload="onUnloadPageInfo()"
-   align="stretch" style="&pageInfoWindow.dimensions;"
-   persist="screenX screenY width height sizemode">
- 
-   <script type="application/javascript" src="chrome://global/content/globalOverlay.js"/>
-   <script type="application/javascript" src="chrome://global/content/contentAreaUtils.js"/>
-+  <script type="application/javascript" src="chrome://global/content/treeUtils.js"/>
-   <script type="application/javascript" src="chrome://communicator/content/utilityOverlay.js"/>
-   <script type="application/javascript" src="chrome://navigator/content/pageinfo/pageInfo.js"/>
-   <script type="application/javascript" src="chrome://navigator/content/pageinfo/feeds.js"/>
-   <script type="application/javascript" src="chrome://navigator/content/pageinfo/permissions.js"/>
-   <script type="application/javascript" src="chrome://navigator/content/pageinfo/security.js"/>
-   <script type="application/javascript" src="chrome://help/content/contextHelp.js"/>
-   <script type="application/javascript" src="chrome://communicator/content/tasksOverlay.js"/>
- 

Some files were not shown because too many files changed in this diff