Bug 1611584 - Port "Bug 1611173 - Remove support for non-nsISupports XPIDL interfaces" to Thunderbird. r=bustage-fix
authorMagnus Melin <mkmelin+mozilla@iki.fi>
Sat, 25 Jan 2020 14:18:46 +0200
changeset 37130 3b281b9a0b409202fd555893700881cfc1e65ce4
parent 37129 9dde84974661e23ca475ebd5c322a0eee6ccfeaf
child 37131 7ed85c4ae6bf85b278c73cbced91bb829a0c93fa
push id2552
push userclokep@gmail.com
push dateMon, 10 Feb 2020 21:24:16 +0000
treeherdercomm-beta@f95a6f4408a3 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersbustage-fix
bugs1611584, 1611173
Bug 1611584 - Port "Bug 1611173 - Remove support for non-nsISupports XPIDL interfaces" to Thunderbird. r=bustage-fix
mailnews/addrbook/public/nsIAbBooleanExpression.idl
mailnews/addrbook/public/nsIAbCard.idl
mailnews/addrbook/public/nsIAddbookUrl.idl
mailnews/addrbook/public/nsIAddrDatabase.idl
mailnews/base/public/MailNewsTypes2.idl
mailnews/base/public/nsIMsgDBView.idl
mailnews/base/public/nsMsgFolderFlags.idl
mailnews/base/public/nsMsgMessageFlags.idl
mailnews/base/search/public/nsIMsgFilterList.idl
mailnews/base/search/public/nsMsgFilterCore.idl
mailnews/base/search/public/nsMsgSearchCore.idl
mailnews/compose/public/nsIMsgCompose.idl
mailnews/compose/public/nsIMsgComposeParams.idl
mailnews/db/msgdb/public/nsIMsgDatabase.idl
mailnews/imap/public/nsIAutoSyncMsgStrategy.idl
mailnews/imap/public/nsIImapIncomingServer.idl
mailnews/imap/public/nsIImapMailFolderSink.idl
mailnews/imap/public/nsIImapUrl.idl
mailnews/mime/public/nsIMimeEmitter.idl
mailnews/mime/public/nsIMimeStreamConverter.idl
--- a/mailnews/addrbook/public/nsIAbBooleanExpression.idl
+++ b/mailnews/addrbook/public/nsIAbBooleanExpression.idl
@@ -11,17 +11,17 @@ typedef long nsAbBooleanConditionType;
 /**
  * Condition types
  *
  * Constants defining the types of condition
  * to obtain a boolean result of TRUE or FALSE
  *
  */
 [scriptable, uuid(F51387B1-5AEF-4A1C-830E-7CD3B02366CE)]
-interface nsIAbBooleanConditionTypes
+interface nsIAbBooleanConditionTypes : nsISupports
 {
     const long Exists        = 0;
     const long DoesNotExist        = 1;
     const long Contains        = 2;
     const long DoesNotContain    = 3;
     const long Is            = 4;
     const long IsNot        = 5;
     const long BeginsWith        = 6;
@@ -38,17 +38,17 @@ typedef long nsAbBooleanOperationType;
 /*
  * Operation types
  *
  * Constants defining the boolean operation that
  * should be performed between two boolean expressions
  *
  */
 [uuid(9bdd2e51-2be4-49a4-a558-36d1a812231a)]
-interface nsIAbBooleanOperationTypes
+interface nsIAbBooleanOperationTypes : nsISupports
 {
     const long AND        = 0;
     const long OR        = 1;
     const long NOT        = 2;
 };
 
 
 /**
--- a/mailnews/addrbook/public/nsIAbCard.idl
+++ b/mailnews/addrbook/public/nsIAbCard.idl
@@ -5,17 +5,17 @@
 
 #include "nsISupports.idl"
 
 interface nsISimpleEnumerator;
 interface nsIStringBundle;
 interface nsIVariant;
 
 [scriptable, uuid(97448252-F189-11d4-A422-001083003D0C)]
-interface nsIAbPreferMailFormat {
+interface nsIAbPreferMailFormat : nsISupports {
     const unsigned long unknown   = 0;
     const unsigned long plaintext = 1;
     const unsigned long html      = 2;
 };
 
 /**
  * An interface representing an address book card.
  *
--- a/mailnews/addrbook/public/nsIAddbookUrl.idl
+++ b/mailnews/addrbook/public/nsIAddbookUrl.idl
@@ -1,17 +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 "nsIURI.idl"
 
 [scriptable, uuid(6EB9D874-01AA-11d4-8FBE-000064657374)]
-interface nsIAddbookUrlOperation
+interface nsIAddbookUrlOperation : nsISupports
 {
     const long InvalidUrl = 0;
     const long PrintAddressBook = 1;
     const long AddVCard = 2;
 };
 
 [builtinclass, uuid(5f965083-e866-4bfb-ba40-13c344395798)]
 interface nsIAddbookUrl : nsIURI {
--- a/mailnews/addrbook/public/nsIAddrDatabase.idl
+++ b/mailnews/addrbook/public/nsIAddrDatabase.idl
@@ -35,17 +35,17 @@ interface nsISimpleEnumerator;
 
 // Palm Integration
 #define  CARD_ATTRIB_PALMID "PalmRecId"
 #define  CARD_ATTRIB_DISPLAY "DisplayName"
 
 %}
 
 [scriptable, uuid(20d4c6c3-0460-403e-aa9c-813654641566)]
-interface nsAddrDBCommitType
+interface nsAddrDBCommitType : nsISupports
 {
   const long kLargeCommit = 1;
   const long kSessionCommit = 2;
   const long kCompressCommit = 3;
 };
 
 [scriptable, uuid(c54973e4-d251-4b93-a0d0-81a616225061)]
 interface nsIAddrDatabase : nsISupports {
--- a/mailnews/base/public/MailNewsTypes2.idl
+++ b/mailnews/base/public/MailNewsTypes2.idl
@@ -1,28 +1,30 @@
 /* -*- 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 "nsISupports.idl"
+
 typedef unsigned long nsMsgKey;
 typedef unsigned long nsMsgViewIndex;
 
 typedef long nsMsgSearchScopeValue;
 
 typedef long nsMsgPriorityValue;
 typedef long nsMsgSocketTypeValue;
 typedef long nsMsgAuthMethodValue;
 
 typedef unsigned long nsMsgJunkStatus;
 
 typedef unsigned long nsMsgJunkScore;
 
 [scriptable, uuid(94C0D8D8-2045-11d3-8A8F-0060B0FC04D2)]
-interface nsMsgPriority {
+interface nsMsgPriority : nsISupports {
     const nsMsgPriorityValue notSet = 0;
     const nsMsgPriorityValue none = 1;
     const nsMsgPriorityValue lowest = 2;
     const nsMsgPriorityValue low = 3;
     const nsMsgPriorityValue normal = 4;
     const nsMsgPriorityValue high = 5;
     const nsMsgPriorityValue highest = 6;
     //the default priority (if none) is set in the message
@@ -30,17 +32,17 @@ interface nsMsgPriority {
 };
 
 /**
  * Defines whether to use SSL or STARTTLS or not.
  * Used by @see nsIMsgIncomingServer.socketType
  * and @see nsISmtpServer.socketType
  */
 [scriptable, uuid(bc78bc74-1b34-48e8-ac2b-968e8dff1aeb)]
-interface nsMsgSocketType {
+interface nsMsgSocketType : nsISupports {
     /// No SSL or STARTTLS
     const nsMsgSocketTypeValue plain = 0;
     /// Use TLS via STARTTLS, but only if server offers it.
     /// @deprecated This is vulnerable to MITM attacks
     const nsMsgSocketTypeValue trySTARTTLS = 1;
     /// Insist on TLS via STARTTLS.
     /// Uses normal port.
     const nsMsgSocketTypeValue alwaysSTARTTLS = 2;
@@ -50,17 +52,17 @@ interface nsMsgSocketType {
 };
 
 /**
  * Defines which authentication schemes we should try.
  * Used by @see nsIMsgIncomingServer.authMethod
  * and @see nsISmtpServer.authMethod
  */
 [scriptable, uuid(4a10e647-d179-4a53-b7ef-df575ff5f405)]
-interface nsMsgAuthMethod {
+interface nsMsgAuthMethod : nsISupports {
     // 0 is intentionally undefined and invalid
     /// No login needed. E.g. IP-address-based.
     const nsMsgAuthMethodValue none = 1;
     /// Do not use AUTH commands (e.g. AUTH=PLAIN),
     /// but the original login commands that the protocol specified
     /// (POP: "USER"/"PASS", IMAP: "login", not valid for SMTP)
     const nsMsgAuthMethodValue old = 2;
     /// password in the clear. AUTH=PLAIN/LOGIN or old-style login.
--- a/mailnews/base/public/nsIMsgDBView.idl
+++ b/mailnews/base/public/nsIMsgDBView.idl
@@ -19,49 +19,49 @@ interface nsISimpleEnumerator;
 interface nsIMsgCustomColumnHandler;
 
 typedef long nsMsgViewNotificationCodeValue;
 typedef long nsMsgViewCommandCheckStateValue;
 typedef long nsMsgViewCommandTypeValue;
 typedef long nsMsgNavigationTypeValue;
 
 [scriptable, uuid(682a18be-fd18-11d4-a5be-0060b0fc04b7)]
-interface nsMsgViewSortOrder
+interface nsMsgViewSortOrder : nsISupports
 {
   const nsMsgViewSortOrderValue none = 0;
   const nsMsgViewSortOrderValue ascending = 1;
   const nsMsgViewSortOrderValue descending = 2;
 };
 
 [scriptable, uuid(f28a1cdf-06c3-4e98-8f66-f49991670071)]
-interface nsMsgViewType {
+interface nsMsgViewType : nsISupports {
   const nsMsgViewTypeValue eShowAllThreads = 0;
   const nsMsgViewTypeValue eShowThreadsWithUnread = 2;
   const nsMsgViewTypeValue eShowWatchedThreadsWithUnread = 3;
   const nsMsgViewTypeValue eShowQuickSearchResults = 4;
   const nsMsgViewTypeValue eShowVirtualFolderResults = 5;
   const nsMsgViewTypeValue eShowSearch = 6;
 };
 
 [scriptable, uuid(64852276-1dd2-11b2-8103-afe12002c053)]
-interface nsMsgViewFlagsType
+interface nsMsgViewFlagsType : nsISupports
 {
   /**
    * flags for GetViewFlags
    */
   const nsMsgViewFlagsTypeValue kNone = 0x0;
   const nsMsgViewFlagsTypeValue kThreadedDisplay = 0x1;
   const nsMsgViewFlagsTypeValue kShowIgnored = 0x8;
   const nsMsgViewFlagsTypeValue kUnreadOnly = 0x10;
   const nsMsgViewFlagsTypeValue kExpandAll = 0x20;
   const nsMsgViewFlagsTypeValue kGroupBySort = 0x40;
 };
 
 [scriptable, uuid(b94fc200-3008-420a-85c7-67842f133ef8)]
-interface nsMsgViewSortType
+interface nsMsgViewSortType : nsISupports
 {
   const nsMsgViewSortTypeValue byNone = 0x11; /* not sorted */
   const nsMsgViewSortTypeValue byDate = 0x12;
   const nsMsgViewSortTypeValue bySubject = 0x13;
   const nsMsgViewSortTypeValue byAuthor = 0x14;
   const nsMsgViewSortTypeValue byId = 0x15;
   const nsMsgViewSortTypeValue byThread = 0x16;
   const nsMsgViewSortTypeValue byPriority = 0x17;
@@ -76,17 +76,17 @@ interface nsMsgViewSortType
   const nsMsgViewSortTypeValue byAttachments = 0x20;
   const nsMsgViewSortTypeValue byAccount = 0x21;
   const nsMsgViewSortTypeValue byCustom = 0x22;
   const nsMsgViewSortTypeValue byReceived = 0x23;
   const nsMsgViewSortTypeValue byCorrespondent = 0x24;
 };
 
 [scriptable, uuid(255d1c1e-fde7-11d4-a5be-0060b0fc04b7)]
-interface nsMsgViewNotificationCode
+interface nsMsgViewNotificationCode : nsISupports
 {
   const nsMsgViewNotificationCodeValue none = 0;
   /* No change; this call is just being used to potentially nest other sets of calls
      inside it.  The "where" and "num" parameters are unused.
    */
   const nsMsgViewNotificationCodeValue insertOrDelete = 1;
   /* Some lines have been inserted or deleted.
      The "where" parameter will indicate the first line that has been added or
@@ -119,25 +119,25 @@ interface nsMsgViewNotificationCode
      cache data has changed and the FE view may be out of date.  The view should be updated
      so that the first/top index in the view is the index in the "where" parameter.  The
      scrollbar should be updated to match the new position.
    */
 
 };
 
 [scriptable, uuid(4ec9248e-0108-11d5-a5be-0060b0fc04b7)]
-interface nsMsgViewCommandCheckState
+interface nsMsgViewCommandCheckState : nsISupports
 {
   const nsMsgViewCommandCheckStateValue notUsed = 0;
   const nsMsgViewCommandCheckStateValue checked = 1;
   const nsMsgViewCommandCheckStateValue unchecked = 2;
 };
 
 [scriptable, uuid(ad36e6cc-0109-11d5-a5be-0060b0fc04b7)]
-interface nsMsgViewCommandType
+interface nsMsgViewCommandType : nsISupports
 {
   const nsMsgViewCommandTypeValue markMessagesRead = 0;
   const nsMsgViewCommandTypeValue markMessagesUnread = 1;
   const nsMsgViewCommandTypeValue toggleMessageRead = 2;
 
   const nsMsgViewCommandTypeValue flagMessages = 3;
   const nsMsgViewCommandTypeValue unflagMessages = 4;
 
@@ -173,17 +173,17 @@ interface nsMsgViewCommandType
   const nsMsgViewCommandTypeValue undeleteMsg = 29;
 
   const nsMsgViewCommandTypeValue applyFilters = 30;
   const nsMsgViewCommandTypeValue runJunkControls = 31;
   const nsMsgViewCommandTypeValue deleteJunk = 32;
 };
 
 [scriptable, uuid(65903eb2-1dd2-11b2-ac45-c5b69c1618d7)]
-interface nsMsgNavigationType
+interface nsMsgNavigationType : nsISupports
 {
   const nsMsgNavigationTypeValue firstMessage = 1;
   const nsMsgNavigationTypeValue nextMessage = 2;
   const nsMsgNavigationTypeValue previousMessage = 3;
   const nsMsgNavigationTypeValue lastMessage = 4;
   /**
    * must match nsMsgViewCommandTypeValue toggleThreadKilled
    */
--- a/mailnews/base/public/nsMsgFolderFlags.idl
+++ b/mailnews/base/public/nsMsgFolderFlags.idl
@@ -1,23 +1,25 @@
 /*-*- Mode: IDL; 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 "nsISupports.idl"
+
 // This must be limited to unsigned long (uint32_t, no uint64_t)
 // as long as nsIMsgFolder exposes the 'flags' property which contains
 // all the flags values. The callers are used to do
 // (folder.flags & nsMsgFolderFlags.<flagname>) in Javascript
 // which cuts the value to 32bit only. See bug 813459.
 typedef unsigned long nsMsgFolderFlagType;
 
 /// Flags about a folder or a newsgroup.
 [scriptable,uuid(440cd0fc-b4b3-4a0f-a492-92fbe7920588)]
-interface nsMsgFolderFlags {
+interface nsMsgFolderFlags : nsISupports {
   /**
    * @name Folder Type Flags
    * These flags define the type of folder. Exactly one will be set.
    * @{
    */
   /// This folder is a newsgroup folder.
   const nsMsgFolderFlagType Newsgroup       = 0x00000001;
   /// Used to be for a folder that is a news server (NewsHost).
--- a/mailnews/base/public/nsMsgMessageFlags.idl
+++ b/mailnews/base/public/nsMsgMessageFlags.idl
@@ -1,18 +1,20 @@
 /* -*- 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 "nsISupports.idl"
+
 typedef unsigned long nsMsgMessageFlagType;
 
 /// Flags about a single message.
 [scriptable,uuid(1ea3acdb-7b9f-4e35-9513-76e0a0cc6baa)]
-interface nsMsgMessageFlags
+interface nsMsgMessageFlags : nsISupports
 {
   /// This message has been read
   const nsMsgMessageFlagType Read            = 0x00000001;
 
   /// A reply to this message has been successfully sent
   const nsMsgMessageFlagType Replied         = 0x00000002;
 
   /// This message has been flagged
@@ -124,17 +126,17 @@ interface nsMsgMessageFlags
 typedef unsigned long nsMsgProcessingFlagType;
 
 /**
  * Definitions of processing flags. These flags are not saved to the database.
  * They are used to define states for message processing. Any changes
  * to these flags need to be supported in the key sets in nsMsgDBFolder
  */
 [scriptable,uuid(1f7d642b-de2a-45f0-a27f-9c9ce0b741d8)]
-interface nsMsgProcessingFlags
+interface nsMsgProcessingFlags : nsISupports
 {
   /// This message needs junk classification
   const nsMsgProcessingFlagType ClassifyJunk   = 0x00000001;
 
   /// This message needs traits classification
   const nsMsgProcessingFlagType ClassifyTraits = 0x00000002;
 
   /// This message has completed any needed traits classification
--- a/mailnews/base/search/public/nsIMsgFilterList.idl
+++ b/mailnews/base/search/public/nsIMsgFilterList.idl
@@ -100,12 +100,12 @@ interface nsIMsgFilterList : nsISupports
      * @param filter   Optional filter object that reports the message.
      */
     void logFilterMessage(in AString message, [optional] in nsIMsgFilter filter);
 };
 
 
 /* these longs are all actually of type nsMsgFilterMotionValue */
 [scriptable, uuid(d067b528-304e-11d3-a0e1-00a0c900d445)]
-interface nsMsgFilterMotion {
+interface nsMsgFilterMotion : nsISupports {
     const long up = 0;
     const long down = 1;
 };
--- a/mailnews/base/search/public/nsMsgFilterCore.idl
+++ b/mailnews/base/search/public/nsMsgFilterCore.idl
@@ -3,17 +3,17 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "nsMsgSearchCore.idl"
 
 typedef long nsMsgFilterTypeType;
 
 [scriptable,uuid(b963a9c6-3a75-4d91-9f79-7186418d4d2d)]
-interface nsMsgFilterType {
+interface nsMsgFilterType : nsISupports {
     /* these longs are all actually of type nsMsgFilterTypeType */
   const long None             = 0x00;
   const long InboxRule        = 0x01;
   const long InboxJavaScript  = 0x02;
   const long Inbox            = InboxRule | InboxJavaScript;
   const long NewsRule         = 0x04;
   const long NewsJavaScript   = 0x08;
   const long News             = NewsRule | NewsJavaScript;
@@ -28,17 +28,17 @@ interface nsMsgFilterType {
 
 typedef long nsMsgFilterMotionValue;
 
 typedef long nsMsgFilterIndex;
 
 typedef long nsMsgRuleActionType;
 
 [scriptable, uuid(7726FE79-AFA3-4a39-8292-733AEE288737)]
-interface nsMsgFilterAction {
+interface nsMsgFilterAction : nsISupports {
 
     // Custom Action.
     const long Custom=-1;
     /* if you change these, you need to update filter.properties,
        look for filterActionX */
     /* these longs are all actually of type nsMsgFilterActionType */
     const long None=0;        /* uninitialized state */
     const long MoveToFolder=1;
--- a/mailnews/base/search/public/nsMsgSearchCore.idl
+++ b/mailnews/base/search/public/nsMsgSearchCore.idl
@@ -8,17 +8,17 @@
 
 interface nsIMsgFolder;
 
 interface nsIMsgDatabase;
 interface nsIMsgDBHdr;
 
 [scriptable, uuid(6e893e59-af98-4f62-a326-0f00f32147cd)]
 
-interface nsMsgSearchScope {
+interface nsMsgSearchScope : nsISupports {
   const nsMsgSearchScopeValue offlineMail = 0;
   const nsMsgSearchScopeValue offlineMailFilter = 1;
   const nsMsgSearchScopeValue onlineMail = 2;
   const nsMsgSearchScopeValue onlineMailFilter = 3;
   /// offline news, base table, no body or junk
   const nsMsgSearchScopeValue localNews = 4;
   const nsMsgSearchScopeValue news = 5;
   const nsMsgSearchScopeValue newsEx = 6;
@@ -41,17 +41,17 @@ interface nsMsgSearchScope {
 typedef long nsMsgSearchAttribValue;
 
 /**
  * Definitions of search attribute types. The numerical order
  * from here will also be used to determine the order that the
  * attributes display in the filter editor.
  */
 [scriptable, uuid(a83ca7e8-4591-4111-8fb8-fd76ac73c866)]
-interface nsMsgSearchAttrib {
+interface nsMsgSearchAttrib : nsISupports {
     const nsMsgSearchAttribValue Custom = -2;  /* a custom term, see nsIMsgSearchCustomTerm */
     const nsMsgSearchAttribValue Default = -1;
     const nsMsgSearchAttribValue Subject = 0;  /* mail and news */
     const nsMsgSearchAttribValue Sender = 1;
     const nsMsgSearchAttribValue Body = 2;
     const nsMsgSearchAttribValue Date = 3;
 
     const nsMsgSearchAttribValue Priority = 4;      /* mail only */
@@ -106,17 +106,17 @@ interface nsMsgSearchAttrib {
     const nsMsgSearchAttribValue OtherHeader = 52;
     // must be last attribute
     const nsMsgSearchAttribValue kNumMsgSearchAttributes = 100;
 };
 
 typedef long nsMsgSearchOpValue;
 
 [scriptable, uuid(9160b196-6fcb-4eba-aaaf-6c806c4ee420)]
-interface nsMsgSearchOp {
+interface nsMsgSearchOp : nsISupports {
     const nsMsgSearchOpValue Contains = 0; /* for text attributes      */
     const nsMsgSearchOpValue DoesntContain = 1;
     const nsMsgSearchOpValue Is = 2; /* is and isn't also apply to some non-text attrs */
     const nsMsgSearchOpValue Isnt = 3;
     const nsMsgSearchOpValue IsEmpty = 4;
 
     const nsMsgSearchOpValue IsBefore = 5; /* for date attributes              */
     const nsMsgSearchOpValue IsAfter = 6;
@@ -141,28 +141,28 @@ interface nsMsgSearchOp {
     const nsMsgSearchOpValue DoesntMatch = 20; /* generic term for use by custom terms */
     const nsMsgSearchOpValue kNumMsgSearchOperators  = 21;     /* must be last operator */
 };
 
 typedef long nsMsgSearchWidgetValue;
 
 /* FEs use this to help build the search dialog box */
 [scriptable,uuid(903dd2e8-304e-11d3-92e6-00a0c900d445)]
-interface nsMsgSearchWidget {
+interface nsMsgSearchWidget : nsISupports {
     const nsMsgSearchWidgetValue Text = 0;
     const nsMsgSearchWidgetValue Date = 1;
     const nsMsgSearchWidgetValue Menu = 2;
   const nsMsgSearchWidgetValue Int = 3;          /* added to account for age in days which requires an integer field */
     const nsMsgSearchWidgetValue None = 4;
 };
 
 typedef long nsMsgSearchBooleanOperator;
 
 [scriptable, uuid(a37f3f4a-304e-11d3-8f94-00a0c900d445)]
-interface nsMsgSearchBooleanOp {
+interface nsMsgSearchBooleanOp : nsISupports {
     const nsMsgSearchBooleanOperator BooleanOR = 0;
     const nsMsgSearchBooleanOperator BooleanAND = 1;
 };
 
 /* Use this to specify the value of a search term */
 
 [ptr] native nsMsgSearchValue(nsMsgSearchValue);
 
--- a/mailnews/compose/public/nsIMsgCompose.idl
+++ b/mailnews/compose/public/nsIMsgCompose.idl
@@ -18,49 +18,49 @@ interface nsIMsgProgress;
 interface nsIDocShell;
 interface mozIDOMWindowProxy;
 interface nsIEditor;
 interface nsIMsgWindow;
 
 typedef long MSG_ComposeSaveType;
 
 [scriptable, uuid(6953e50a-7531-11d3-85fe-006008948010)]
-interface nsIMsgCompSaveType {
+interface nsIMsgCompSaveType : nsISupports {
     const long File     = 0;
     const long Template = 1;
     const long Draft    = 2;
 };
 
 typedef long MSG_DeliverMode;
 
 [scriptable, uuid(a9f27dd7-8f89-4de3-8fbf-41b789c16ee5)]
-interface nsIMsgCompDeliverMode {
+interface nsIMsgCompDeliverMode : nsISupports {
     const long Now = 0;
     const long Later = 1;
     const long Save = 2;
     const long SaveAs = 3;
     const long SaveAsDraft = 4;
     const long SaveAsTemplate = 5;
     const long SendUnsent = 6;
     const long AutoSaveAsDraft = 7;
     const long Background = 8;
 };
 
 [scriptable, uuid(f38ea280-e090-11d3-a449-e3153319347c)]
-interface nsIMsgCompSendFormat {
+interface nsIMsgCompSendFormat : nsISupports {
     const long AskUser = 4;     /* Hack: Bug 44512. If this is 0 and passed
                                    as results.action to the askSendFormat
                                    dialog, the args object gets destroyed.*/
     const long PlainText = 1;
     const long HTML = 2;
     const long Both = 3;
 };
 
 [scriptable, uuid(9638af92-1dd1-11b2-bef1-ca5fee0abc62)]
-interface nsIMsgCompConvertible/*ToTXT*/ {
+interface nsIMsgCompConvertible : nsISupports /*ToTXT*/ {
     const long Plain = 1;  // Like 4.x: Only <html>, <p>, <br>, ...
     const long Yes = 2;  // *Minor* alterations of the look: <ol>, <dd>, ...
     const long Altering = 3;  /* Look altered: <strong>, <i>, <h1>, ...
                                  Can be expressed in plaintext, but not in
                                  the way it looked in the HTML composer. */
     const long No = 4;  /* Will lose data: <font>, ...
                            Really *requires* visual formatting or
                            is not supported by our HTML->TXT converter. */
@@ -75,17 +75,17 @@ interface nsIMsgComposeStateListener : n
   /* ... */
   void        NotifyComposeFieldsReady();
   void        ComposeProcessDone(in nsresult aResult);
   void        SaveInFolderDone(in string folderName);
   void        NotifyComposeBodyReady();
 };
 
 [scriptable, uuid(061aae23-7e0a-4818-9a15-1b5db3ceb7f4)]
-interface nsIMsgComposeNotificationType
+interface nsIMsgComposeNotificationType : nsISupports
 {
     const long ComposeFieldsReady = 0;
     const long ComposeProcessDone = 1;
     const long SaveInFolderDone   = 2;
     const long ComposeBodyReady   = 3;
 };
 
 native nsString(nsString);
--- a/mailnews/compose/public/nsIMsgComposeParams.idl
+++ b/mailnews/compose/public/nsIMsgComposeParams.idl
@@ -8,17 +8,17 @@
 #include "nsIMsgIdentity.idl"
 #include "nsIMsgCompFields.idl"
 #include "nsIMsgSendListener.idl"
 
 interface nsIMsgDBHdr;
 typedef long MSG_ComposeType;
 
 [scriptable, uuid(c7035852-7531-11d3-9a73-006008948010)]
-interface nsIMsgCompType {
+interface nsIMsgCompType : nsISupports {
     const long New                      = 0;
     const long Reply                    = 1;
     const long ReplyAll                 = 2;
     const long ForwardAsAttachment      = 3;
     const long ForwardInline            = 4;
     const long NewsPost                 = 5;
     const long ReplyToSender            = 6;
     const long ReplyToGroup             = 7;
@@ -56,17 +56,17 @@ interface nsIMsgCompType {
      */
     const long ReplyIgnoreQuote         = 100;
 };
 
 
 typedef long MSG_ComposeFormat;
 
 [scriptable, uuid(a28325e8-7531-11d3-8f1c-006008948010)]
-interface nsIMsgCompFormat {
+interface nsIMsgCompFormat : nsISupports{
     const long Default                  = 0;
     const long HTML                     = 1;
     const long PlainText                = 2;
     const long OppositeOfDefault        = 3;
 };
 
 
 [scriptable, uuid(930895f2-d610-43f4-9e3c-25e1d1fe4143)]
--- a/mailnews/db/msgdb/public/nsIMsgDatabase.idl
+++ b/mailnews/db/msgdb/public/nsIMsgDatabase.idl
@@ -74,18 +74,17 @@ interface nsIMsgDownloadSettings : nsISu
   attribute boolean downloadByDate;
   attribute boolean downloadUnreadOnly;
   attribute unsigned long ageLimitOfMsgsToDownload;
 };
 
 typedef long nsMsgDBCommit;
 
 [scriptable, uuid(15431853-e448-45dc-8978-9958bf74d9b7)]
-
-interface nsMsgDBCommitType
+interface nsMsgDBCommitType : nsISupports
 {
   const long kLargeCommit = 1;
   const long kSessionCommit = 2;
   const long kCompressCommit = 3;
 };
 
 [ref] native nsMsgKeyArrayRef(nsTArray<nsMsgKey>);
 [ptr] native nsMsgKeyArrayPtr(nsTArray<nsMsgKey>);
--- a/mailnews/imap/public/nsIAutoSyncMsgStrategy.idl
+++ b/mailnews/imap/public/nsIAutoSyncMsgStrategy.idl
@@ -5,17 +5,17 @@
 #include "nsISupports.idl"
 
 interface nsIMsgFolder;
 interface nsIMsgDBHdr;
 
 typedef long nsAutoSyncStrategyDecisionType;
 
 [scriptable,uuid(0365bec5-3753-43c2-b13e-441747815f37)]
-interface nsAutoSyncStrategyDecisions
+interface nsAutoSyncStrategyDecisions : nsISupports
 {
   /// same priority
   const nsAutoSyncStrategyDecisionType Same         = 0x00000001;
   /// higher priority
   const nsAutoSyncStrategyDecisionType Higher       = 0x00000002;
   /// lower priority
   const nsAutoSyncStrategyDecisionType Lower        = 0x00000004;
 };
--- a/mailnews/imap/public/nsIImapIncomingServer.idl
+++ b/mailnews/imap/public/nsIImapIncomingServer.idl
@@ -9,17 +9,17 @@ interface nsIURI;
 interface nsIImapUrl;
 interface nsIImapProtocol;
 interface nsIMsgFolder;
 interface nsIMsgWindow;
 
 typedef long nsMsgImapDeleteModel;
 
 [scriptable, uuid(bbfc33de-fe89-11d3-a564-0060b0fc04b7)]
-interface nsMsgImapDeleteModels
+interface nsMsgImapDeleteModels : nsISupports
 {
   const long IMAPDelete = 0;    /* delete with a big red x */
   const long MoveToTrash = 1;   /* delete moves message to the trash */
   const long DeleteNoTrash = 2; /* delete is shift delete - don't create or use trash */
 };
 
 [scriptable, uuid(ea6a0765-07b8-40df-924c-9004ed707251)]
 interface nsIImapIncomingServer : nsISupports {
--- a/mailnews/imap/public/nsIImapMailFolderSink.idl
+++ b/mailnews/imap/public/nsIImapMailFolderSink.idl
@@ -11,17 +11,17 @@
 
 interface nsIMsgMailNewsUrl;
 interface nsIImapMockChannel;
 interface nsIImapHeaderXferInfo;
 
 typedef long ImapOnlineCopyState;
 
 [scriptable, uuid(5f7484b0-68b4-11d3-a53e-0060b0fc04b7)]
-interface ImapOnlineCopyStateType
+interface ImapOnlineCopyStateType : nsISupports
 {
    const long kInProgress = 0;
    const long kSuccessfulCopy = 1;
    const long kSuccessfulMove = 2;
    const long kSuccessfulDelete = 3;
    const long kFailedDelete = 4;
    const long kReadyForAppendData = 5;
    const long kFailedAppend = 6;
--- a/mailnews/imap/public/nsIImapUrl.idl
+++ b/mailnews/imap/public/nsIImapUrl.idl
@@ -14,17 +14,17 @@ interface nsIFile;
 typedef long nsImapAction;
 typedef long nsImapState;
 
 typedef unsigned short imapMessageFlagsType;
 
 typedef long nsImapContentModifiedType;
 
 [scriptable, uuid(2e91901e-ff6c-11d3-b9fa-00108335942a)]
-interface nsImapContentModifiedTypes
+interface nsImapContentModifiedTypes : nsISupports
 {
   const long IMAP_CONTENT_NOT_MODIFIED = 0;
   const long IMAP_CONTENT_MODIFIED_VIEW_INLINE = 1;
   const long IMAP_CONTENT_MODIFIED_VIEW_AS_LINKS = 2;
   const long IMAP_CONTENT_FORCE_CONTENT_NOT_MODIFIED = 3;
 } ;
 
 [scriptable, uuid(fe2a8f9e-2886-4146-9896-27fff660c69f)]
--- a/mailnews/mime/public/nsIMimeEmitter.idl
+++ b/mailnews/mime/public/nsIMimeEmitter.idl
@@ -7,17 +7,17 @@
 
 interface nsIOutputStream;
 interface nsIInputStream;
 interface nsIURI;
 interface nsIStreamListener;
 interface nsIChannel;
 
 [scriptable, uuid(eb9beb09-44de-4ad2-a560-f572b1afd534)]
-interface nsMimeHeaderDisplayTypes
+interface nsMimeHeaderDisplayTypes : nsISupports
 {
     const long MicroHeaders = 0;
     const long NormalHeaders = 1;
     const long AllHeaders = 2;
 };
 
 %{C++
 #define NS_IMIME_MISC_STATUS_KEY       "@mozilla.org/MimeMiscStatus;1?type="
--- a/mailnews/mime/public/nsIMimeStreamConverter.idl
+++ b/mailnews/mime/public/nsIMimeStreamConverter.idl
@@ -9,17 +9,17 @@
 #include "nsIMsgIdentity.idl"
 #include "nsIMsgHdr.idl"
 
 interface nsIURI;
 
 typedef long nsMimeOutputType;
 
 [scriptable, uuid(fdc2956e-d558-43fb-bfdd-fb9511229aa5)]
-interface nsMimeOutput
+interface nsMimeOutput : nsISupports
 {
   const long nsMimeMessageSplitDisplay = 0;
   const long nsMimeMessageHeaderDisplay = 1;
   const long nsMimeMessageBodyDisplay = 2;
   const long nsMimeMessageQuoting = 3;
   const long nsMimeMessageBodyQuoting = 4;
   const long nsMimeMessageRaw = 5;
   const long nsMimeMessageDraftOrTemplate = 6;