diff --git a/accessible/src/base/DocManager.cpp b/accessible/src/base/DocManager.cpp
index a5a9704e48fe36d867829ef8762ca2e12db01e48..52bc77b171a9230a699fdf1981775383406f6915 100644
--- a/accessible/src/base/DocManager.cpp
+++ b/accessible/src/base/DocManager.cpp
@@ -118,10 +118,10 @@ DocManager::Shutdown()
 ////////////////////////////////////////////////////////////////////////////////
 // nsISupports
 
-NS_IMPL_ISUPPORTS3(DocManager,
-                   nsIWebProgressListener,
-                   nsIDOMEventListener,
-                   nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(DocManager,
+                  nsIWebProgressListener,
+                  nsIDOMEventListener,
+                  nsISupportsWeakReference)
 
 ////////////////////////////////////////////////////////////////////////////////
 // nsIWebProgressListener
diff --git a/accessible/src/base/nsAccessibilityService.cpp b/accessible/src/base/nsAccessibilityService.cpp
index c37d0ac5da891afc866a622424f04c182f370c05..9f6c96521c6f595a2a74b6afddadb4352fe79f87 100644
--- a/accessible/src/base/nsAccessibilityService.cpp
+++ b/accessible/src/base/nsAccessibilityService.cpp
@@ -152,12 +152,12 @@ nsAccessibilityService::~nsAccessibilityService()
 ////////////////////////////////////////////////////////////////////////////////
 // nsISupports
 
-NS_IMPL_ISUPPORTS_INHERITED4(nsAccessibilityService,
-                             DocManager,
-                             nsIAccessibilityService,
-                             nsIAccessibleRetrieval,
-                             nsIObserver,
-                             nsISelectionListener) // from SelectionManager
+NS_IMPL_ISUPPORTS_INHERITED(nsAccessibilityService,
+                            DocManager,
+                            nsIAccessibilityService,
+                            nsIAccessibleRetrieval,
+                            nsIObserver,
+                            nsISelectionListener) // from SelectionManager
 
 ////////////////////////////////////////////////////////////////////////////////
 // nsIObserver
@@ -256,7 +256,7 @@ private:
   nsCOMPtr<nsIContent> mContent;
 };
 
-NS_IMPL_ISUPPORTS1(PluginTimerCallBack, nsITimerCallback)
+NS_IMPL_ISUPPORTS(PluginTimerCallBack, nsITimerCallback)
 #endif
 
 already_AddRefed<Accessible>
diff --git a/accessible/src/generic/ARIAGridAccessible.cpp b/accessible/src/generic/ARIAGridAccessible.cpp
index 1776d291e7f2687b4f50561890a394a85374c404..09d3fb6236560280453bf6be9335254abd2969b0 100644
--- a/accessible/src/generic/ARIAGridAccessible.cpp
+++ b/accessible/src/generic/ARIAGridAccessible.cpp
@@ -35,9 +35,9 @@ ARIAGridAccessible::
 ////////////////////////////////////////////////////////////////////////////////
 // nsISupports
 
-NS_IMPL_ISUPPORTS_INHERITED1(ARIAGridAccessible,
-                             Accessible,
-                             nsIAccessibleTable)
+NS_IMPL_ISUPPORTS_INHERITED(ARIAGridAccessible,
+                            Accessible,
+                            nsIAccessibleTable)
 
 ////////////////////////////////////////////////////////////////////////////////
 // Accessible
@@ -540,9 +540,9 @@ ARIAGridCellAccessible::
 ////////////////////////////////////////////////////////////////////////////////
 // nsISupports
 
-NS_IMPL_ISUPPORTS_INHERITED1(ARIAGridCellAccessible,
-                             HyperTextAccessible,
-                             nsIAccessibleTableCell)
+NS_IMPL_ISUPPORTS_INHERITED(ARIAGridCellAccessible,
+                            HyperTextAccessible,
+                            nsIAccessibleTableCell)
 
 ////////////////////////////////////////////////////////////////////////////////
 // nsIAccessibleTableCell
diff --git a/accessible/src/generic/ApplicationAccessible.cpp b/accessible/src/generic/ApplicationAccessible.cpp
index db29ad8b4913977afae56eee6e8565a8b307e748..73091fecc28bfecc9108fb366abab49d2cf38a80 100644
--- a/accessible/src/generic/ApplicationAccessible.cpp
+++ b/accessible/src/generic/ApplicationAccessible.cpp
@@ -33,8 +33,8 @@ ApplicationAccessible::ApplicationAccessible() :
 ////////////////////////////////////////////////////////////////////////////////
 // nsISupports
 
-NS_IMPL_ISUPPORTS_INHERITED1(ApplicationAccessible, Accessible,
-                             nsIAccessibleApplication)
+NS_IMPL_ISUPPORTS_INHERITED(ApplicationAccessible, Accessible,
+                            nsIAccessibleApplication)
 
 ////////////////////////////////////////////////////////////////////////////////
 // nsIAccessible
diff --git a/accessible/src/generic/FormControlAccessible.cpp b/accessible/src/generic/FormControlAccessible.cpp
index 245d8600dd797cbbf564c8617b30c3e7fc3856b8..848ac6dadc784b3c3c37ced659d175965930fd4c 100644
--- a/accessible/src/generic/FormControlAccessible.cpp
+++ b/accessible/src/generic/FormControlAccessible.cpp
@@ -32,9 +32,9 @@ template<int Max>
 NS_IMPL_RELEASE_INHERITED(ProgressMeterAccessible<Max>, LeafAccessible)
 
 template<int Max>
-NS_IMPL_QUERY_INTERFACE_INHERITED1(ProgressMeterAccessible<Max>,
-                                   LeafAccessible,
-                                   nsIAccessibleValue)
+NS_IMPL_QUERY_INTERFACE_INHERITED(ProgressMeterAccessible<Max>,
+                                  LeafAccessible,
+                                  nsIAccessibleValue)
 
 ////////////////////////////////////////////////////////////////////////////////
 // Accessible
diff --git a/accessible/src/generic/ImageAccessible.cpp b/accessible/src/generic/ImageAccessible.cpp
index 341f0630e462bcd43cbf9198b734ce6766b294a8..ce61e4c11512992757d4ac634f27e5245d12fecd 100644
--- a/accessible/src/generic/ImageAccessible.cpp
+++ b/accessible/src/generic/ImageAccessible.cpp
@@ -35,8 +35,8 @@ ImageAccessible::
   mType = eImageType;
 }
 
-NS_IMPL_ISUPPORTS_INHERITED1(ImageAccessible, Accessible,
-                             nsIAccessibleImage)
+NS_IMPL_ISUPPORTS_INHERITED(ImageAccessible, Accessible,
+                            nsIAccessibleImage)
 
 ////////////////////////////////////////////////////////////////////////////////
 // Accessible public
diff --git a/accessible/src/generic/RootAccessible.cpp b/accessible/src/generic/RootAccessible.cpp
index d89f666c50313f52fc33ac11b4a2f7e538e4ec5e..e5b6769306682dc8cc51861a2b9aa6ac3345f1a8 100644
--- a/accessible/src/generic/RootAccessible.cpp
+++ b/accessible/src/generic/RootAccessible.cpp
@@ -53,7 +53,7 @@ using namespace mozilla::dom;
 ////////////////////////////////////////////////////////////////////////////////
 // nsISupports
 
-NS_IMPL_ISUPPORTS_INHERITED1(RootAccessible, DocAccessible, nsIAccessibleDocument)
+NS_IMPL_ISUPPORTS_INHERITED(RootAccessible, DocAccessible, nsIAccessibleDocument)
 
 ////////////////////////////////////////////////////////////////////////////////
 // Constructor/destructor
diff --git a/accessible/src/html/HTMLFormControlAccessible.cpp b/accessible/src/html/HTMLFormControlAccessible.cpp
index 42a24d24d6ff8d2f93ba80889d61618fffc71f0f..f8ba771ce76fb61b7fd40a7beb9655737a3ebec1 100644
--- a/accessible/src/html/HTMLFormControlAccessible.cpp
+++ b/accessible/src/html/HTMLFormControlAccessible.cpp
@@ -292,10 +292,10 @@ HTMLTextFieldAccessible::
   mType = eHTMLTextFieldType;
 }
 
-NS_IMPL_ISUPPORTS_INHERITED2(HTMLTextFieldAccessible,
-                             Accessible,                             
-                             nsIAccessibleText,
-                             nsIAccessibleEditableText)
+NS_IMPL_ISUPPORTS_INHERITED(HTMLTextFieldAccessible,
+                            Accessible,                            
+                            nsIAccessibleText,
+                            nsIAccessibleEditableText)
 
 role
 HTMLTextFieldAccessible::NativeRole()
diff --git a/accessible/src/html/HTMLLinkAccessible.cpp b/accessible/src/html/HTMLLinkAccessible.cpp
index 315d75774140b225229e8f972a087642d35ce02b..5a2aa84711e7640ec6fb1f9ab668f51d698c0135 100644
--- a/accessible/src/html/HTMLLinkAccessible.cpp
+++ b/accessible/src/html/HTMLLinkAccessible.cpp
@@ -28,8 +28,8 @@ HTMLLinkAccessible::
 }
 
 // Expose nsIAccessibleHyperLink unconditionally
-NS_IMPL_ISUPPORTS_INHERITED1(HTMLLinkAccessible, HyperTextAccessibleWrap,
-                             nsIAccessibleHyperLink)
+NS_IMPL_ISUPPORTS_INHERITED(HTMLLinkAccessible, HyperTextAccessibleWrap,
+                            nsIAccessibleHyperLink)
 
 ////////////////////////////////////////////////////////////////////////////////
 // nsIAccessible
diff --git a/accessible/src/html/HTMLTableAccessible.cpp b/accessible/src/html/HTMLTableAccessible.cpp
index 43e14aeb21bc1ae4030aea097db22c113bbbd3b0..4322a58d7e8406418d581da9c9a2ec7866acccb9 100644
--- a/accessible/src/html/HTMLTableAccessible.cpp
+++ b/accessible/src/html/HTMLTableAccessible.cpp
@@ -54,9 +54,9 @@ HTMLTableCellAccessible::
 ////////////////////////////////////////////////////////////////////////////////
 // HTMLTableCellAccessible: nsISupports implementation
 
-NS_IMPL_ISUPPORTS_INHERITED1(HTMLTableCellAccessible,
-                             HyperTextAccessible,
-                             nsIAccessibleTableCell)
+NS_IMPL_ISUPPORTS_INHERITED(HTMLTableCellAccessible,
+                            HyperTextAccessible,
+                            nsIAccessibleTableCell)
 
 ////////////////////////////////////////////////////////////////////////////////
 // HTMLTableCellAccessible: Accessible implementation
@@ -360,8 +360,8 @@ HTMLTableRowAccessible::NativeRole()
 // HTMLTableAccessible
 ////////////////////////////////////////////////////////////////////////////////
 
-NS_IMPL_ISUPPORTS_INHERITED1(HTMLTableAccessible, Accessible,
-                             nsIAccessibleTable)
+NS_IMPL_ISUPPORTS_INHERITED(HTMLTableAccessible, Accessible,
+                            nsIAccessibleTable)
 
 ////////////////////////////////////////////////////////////////////////////////
 // HTMLTableAccessible: Accessible
diff --git a/accessible/src/xpcom/nsAccessibleRelation.cpp b/accessible/src/xpcom/nsAccessibleRelation.cpp
index 8b0462a04f09e9f17dd5caee0305881ee7179c1d..c3a9d6b4ffc30261fbc96490be1859ee0c96f3ca 100644
--- a/accessible/src/xpcom/nsAccessibleRelation.cpp
+++ b/accessible/src/xpcom/nsAccessibleRelation.cpp
@@ -24,7 +24,7 @@ nsAccessibleRelation::nsAccessibleRelation(uint32_t aType,
 }
 
 // nsISupports
-NS_IMPL_ISUPPORTS1(nsAccessibleRelation, nsIAccessibleRelation)
+NS_IMPL_ISUPPORTS(nsAccessibleRelation, nsIAccessibleRelation)
 
 // nsIAccessibleRelation
 NS_IMETHODIMP
diff --git a/accessible/src/xul/XULElementAccessibles.cpp b/accessible/src/xul/XULElementAccessibles.cpp
index f5df1106d3dfec7a404b7049121ba226baa2cc3c..eb34c9ee8ca762074a45d874bcb9b86d5d9d7049 100644
--- a/accessible/src/xul/XULElementAccessibles.cpp
+++ b/accessible/src/xul/XULElementAccessibles.cpp
@@ -185,8 +185,8 @@ XULLinkAccessible::
 }
 
 // Expose nsIAccessibleHyperLink unconditionally
-NS_IMPL_ISUPPORTS_INHERITED1(XULLinkAccessible, XULLabelAccessible,
-                             nsIAccessibleHyperLink)
+NS_IMPL_ISUPPORTS_INHERITED(XULLinkAccessible, XULLabelAccessible,
+                            nsIAccessibleHyperLink)
 
 ////////////////////////////////////////////////////////////////////////////////
 // XULLinkAccessible. nsIAccessible
diff --git a/accessible/src/xul/XULListboxAccessible.cpp b/accessible/src/xul/XULListboxAccessible.cpp
index b6757fd62cd36093848655e270a77a60185568e7..8d2aae5fc52adb4ed7f67d23042e664fee98f3dd 100644
--- a/accessible/src/xul/XULListboxAccessible.cpp
+++ b/accessible/src/xul/XULListboxAccessible.cpp
@@ -739,9 +739,9 @@ XULListCellAccessible::
 ////////////////////////////////////////////////////////////////////////////////
 // nsISupports
 
-NS_IMPL_ISUPPORTS_INHERITED1(XULListCellAccessible,
-                             HyperTextAccessible,
-                             nsIAccessibleTableCell)
+NS_IMPL_ISUPPORTS_INHERITED(XULListCellAccessible,
+                            HyperTextAccessible,
+                            nsIAccessibleTableCell)
 
 ////////////////////////////////////////////////////////////////////////////////
 // XULListCellAccessible: nsIAccessibleTableCell implementation
diff --git a/accessible/src/xul/XULTreeAccessible.cpp b/accessible/src/xul/XULTreeAccessible.cpp
index 9e0386bd6774f8c38f7544649cd40fef2cb5cf6b..b5d11d3f2cea82a07353750802dee0885646e8db 100644
--- a/accessible/src/xul/XULTreeAccessible.cpp
+++ b/accessible/src/xul/XULTreeAccessible.cpp
@@ -710,8 +710,8 @@ NS_IMPL_CYCLE_COLLECTION_INHERITED(XULTreeItemAccessibleBase, Accessible,
                                    mTree)
 
 NS_INTERFACE_TABLE_HEAD_CYCLE_COLLECTION_INHERITED(XULTreeItemAccessibleBase)
-  NS_INTERFACE_TABLE_INHERITED1(XULTreeItemAccessibleBase,
-                                XULTreeItemAccessibleBase)
+  NS_INTERFACE_TABLE_INHERITED(XULTreeItemAccessibleBase,
+                               XULTreeItemAccessibleBase)
 NS_INTERFACE_TABLE_TAIL_INHERITING(Accessible)
 NS_IMPL_ADDREF_INHERITED(XULTreeItemAccessibleBase, Accessible)
 NS_IMPL_RELEASE_INHERITED(XULTreeItemAccessibleBase, Accessible)
diff --git a/accessible/src/xul/XULTreeGridAccessible.cpp b/accessible/src/xul/XULTreeGridAccessible.cpp
index e6143ac2a7007c4cda816906a8244a607934a777..93855e066e1a803ca886ea7e1cc864efb846ad91 100644
--- a/accessible/src/xul/XULTreeGridAccessible.cpp
+++ b/accessible/src/xul/XULTreeGridAccessible.cpp
@@ -25,9 +25,9 @@ using namespace mozilla::a11y;
 ////////////////////////////////////////////////////////////////////////////////
 // XULTreeGridAccessible: nsISupports implementation
 
-NS_IMPL_ISUPPORTS_INHERITED1(XULTreeGridAccessible,
-                             XULTreeAccessible,
-                             nsIAccessibleTable)
+NS_IMPL_ISUPPORTS_INHERITED(XULTreeGridAccessible,
+                            XULTreeAccessible,
+                            nsIAccessibleTable)
 
 ////////////////////////////////////////////////////////////////////////////////
 // XULTreeGridAccessible: nsIAccessibleTable implementation
@@ -457,9 +457,9 @@ NS_IMPL_CYCLE_COLLECTION_INHERITED(XULTreeGridCellAccessible, LeafAccessible,
                                    mTree, mColumn)
 
 NS_INTERFACE_TABLE_HEAD_CYCLE_COLLECTION_INHERITED(XULTreeGridCellAccessible)
-  NS_INTERFACE_TABLE_INHERITED2(XULTreeGridCellAccessible,
-                                nsIAccessibleTableCell,
-                                XULTreeGridCellAccessible)
+  NS_INTERFACE_TABLE_INHERITED(XULTreeGridCellAccessible,
+                               nsIAccessibleTableCell,
+                               XULTreeGridCellAccessible)
 NS_INTERFACE_TABLE_TAIL_INHERITING(LeafAccessible)
 NS_IMPL_ADDREF_INHERITED(XULTreeGridCellAccessible, LeafAccessible)
 NS_IMPL_RELEASE_INHERITED(XULTreeGridCellAccessible, LeafAccessible)
diff --git a/browser/components/about/AboutRedirector.cpp b/browser/components/about/AboutRedirector.cpp
index 891580928fe6f1fc4f800065ede9d8b2ea759bf2..645022c1839544d212674cdfe88ebb730c5c27dc 100644
--- a/browser/components/about/AboutRedirector.cpp
+++ b/browser/components/about/AboutRedirector.cpp
@@ -13,7 +13,7 @@
 namespace mozilla {
 namespace browser {
 
-NS_IMPL_ISUPPORTS1(AboutRedirector, nsIAboutModule)
+NS_IMPL_ISUPPORTS(AboutRedirector, nsIAboutModule)
 
 struct RedirEntry {
   const char* id;
diff --git a/browser/components/dirprovider/DirectoryProvider.cpp b/browser/components/dirprovider/DirectoryProvider.cpp
index e3f2882e1a354d0403567eb1e809e0cc81377983..746a4efa8b02590319aef4dcb479723e9e4fe739 100644
--- a/browser/components/dirprovider/DirectoryProvider.cpp
+++ b/browser/components/dirprovider/DirectoryProvider.cpp
@@ -27,9 +27,9 @@
 namespace mozilla {
 namespace browser {
 
-NS_IMPL_ISUPPORTS2(DirectoryProvider,
-                   nsIDirectoryServiceProvider,
-                   nsIDirectoryServiceProvider2)
+NS_IMPL_ISUPPORTS(DirectoryProvider,
+                  nsIDirectoryServiceProvider,
+                  nsIDirectoryServiceProvider2)
 
 NS_IMETHODIMP
 DirectoryProvider::GetFile(const char *aKey, bool *aPersist, nsIFile* *aResult)
@@ -254,7 +254,7 @@ DirectoryProvider::GetFiles(const char *aKey, nsISimpleEnumerator* *aResult)
   return NS_ERROR_FAILURE;
 }
 
-NS_IMPL_ISUPPORTS1(DirectoryProvider::AppendingEnumerator, nsISimpleEnumerator)
+NS_IMPL_ISUPPORTS(DirectoryProvider::AppendingEnumerator, nsISimpleEnumerator)
 
 NS_IMETHODIMP
 DirectoryProvider::AppendingEnumerator::HasMoreElements(bool *aResult)
diff --git a/browser/components/feeds/src/nsFeedSniffer.cpp b/browser/components/feeds/src/nsFeedSniffer.cpp
index 2965aece7051a8fb305ec3c1879a691fd71a89d9..c9c6ea80f00da2deab10399f3dfd3612f4c9dafb 100644
--- a/browser/components/feeds/src/nsFeedSniffer.cpp
+++ b/browser/components/feeds/src/nsFeedSniffer.cpp
@@ -39,10 +39,10 @@
 
 #define MAX_BYTES 512u
 
-NS_IMPL_ISUPPORTS3(nsFeedSniffer,
-                   nsIContentSniffer,
-                   nsIStreamListener,
-                   nsIRequestObserver)
+NS_IMPL_ISUPPORTS(nsFeedSniffer,
+                  nsIContentSniffer,
+                  nsIStreamListener,
+                  nsIRequestObserver)
 
 nsresult
 nsFeedSniffer::ConvertEncodedData(nsIRequest* request,
diff --git a/browser/components/migration/src/nsIEHistoryEnumerator.cpp b/browser/components/migration/src/nsIEHistoryEnumerator.cpp
index 9154ac8a5e75bf083e652711af9f97cda207a5ac..7fe31a666e3a9a509e084485a1a6a786a13111c4 100644
--- a/browser/components/migration/src/nsIEHistoryEnumerator.cpp
+++ b/browser/components/migration/src/nsIEHistoryEnumerator.cpp
@@ -41,7 +41,7 @@ namespace {
 ////////////////////////////////////////////////////////////////////////////////
 //// nsIEHistoryEnumerator
 
-NS_IMPL_ISUPPORTS1(nsIEHistoryEnumerator, nsISimpleEnumerator)
+NS_IMPL_ISUPPORTS(nsIEHistoryEnumerator, nsISimpleEnumerator)
 
 nsIEHistoryEnumerator::nsIEHistoryEnumerator()
 {
diff --git a/browser/components/shell/src/nsGNOMEShellService.cpp b/browser/components/shell/src/nsGNOMEShellService.cpp
index dd16220a39cb6ba0256f6320b9daae35341f9d80..fe6166289998bf6a05abbb752d8d1c9086698132 100644
--- a/browser/components/shell/src/nsGNOMEShellService.cpp
+++ b/browser/components/shell/src/nsGNOMEShellService.cpp
@@ -116,7 +116,7 @@ nsGNOMEShellService::Init()
   return appPath->GetNativePath(mAppPath);
 }
 
-NS_IMPL_ISUPPORTS1(nsGNOMEShellService, nsIShellService)
+NS_IMPL_ISUPPORTS(nsGNOMEShellService, nsIShellService)
 
 bool
 nsGNOMEShellService::GetAppPathFromLauncher()
diff --git a/browser/components/shell/src/nsMacShellService.cpp b/browser/components/shell/src/nsMacShellService.cpp
index 4af703ce0fc6ff38576b15d12591a13bcc8ca58a..c9351dbbc867f53343b701b70dd069de66def459 100644
--- a/browser/components/shell/src/nsMacShellService.cpp
+++ b/browser/components/shell/src/nsMacShellService.cpp
@@ -31,7 +31,7 @@
 
 #define SAFARI_BUNDLE_IDENTIFIER "com.apple.Safari"
 
-NS_IMPL_ISUPPORTS3(nsMacShellService, nsIMacShellService, nsIShellService, nsIWebProgressListener)
+NS_IMPL_ISUPPORTS(nsMacShellService, nsIMacShellService, nsIShellService, nsIWebProgressListener)
 
 NS_IMETHODIMP
 nsMacShellService::IsDefaultBrowser(bool aStartupCheck,
diff --git a/browser/components/shell/src/nsWindowsShellService.cpp b/browser/components/shell/src/nsWindowsShellService.cpp
index 5218e0a6c853dcbd5a918a2c5a257d10487c83cb..d3bb673cb68c11978e29b542c03e880f9b5608fe 100644
--- a/browser/components/shell/src/nsWindowsShellService.cpp
+++ b/browser/components/shell/src/nsWindowsShellService.cpp
@@ -60,7 +60,7 @@ using mozilla::IsWin8OrLater;
 using namespace mozilla;
 using namespace mozilla::gfx;
 
-NS_IMPL_ISUPPORTS2(nsWindowsShellService, nsIWindowsShellService, nsIShellService)
+NS_IMPL_ISUPPORTS(nsWindowsShellService, nsIWindowsShellService, nsIShellService)
 
 static nsresult
 OpenKeyForReading(HKEY aKeyRoot, const nsAString& aKeyName, HKEY* aKey)
diff --git a/caps/src/DomainPolicy.cpp b/caps/src/DomainPolicy.cpp
index 2207d69ce8067a621b2cfe2fa79985666533362e..ec0230cbe3b93740fd91d02e9edbe6067a2ca0d1 100644
--- a/caps/src/DomainPolicy.cpp
+++ b/caps/src/DomainPolicy.cpp
@@ -9,7 +9,7 @@
 
 namespace mozilla {
 
-NS_IMPL_ISUPPORTS1(DomainPolicy, nsIDomainPolicy)
+NS_IMPL_ISUPPORTS(DomainPolicy, nsIDomainPolicy)
 
 DomainPolicy::DomainPolicy() : mBlacklist(new DomainSet())
                              , mSuperBlacklist(new DomainSet())
@@ -92,7 +92,7 @@ GetCanonicalClone(nsIURI* aURI)
     return clone.forget();
 }
 
-NS_IMPL_ISUPPORTS1(DomainSet, nsIDomainSet)
+NS_IMPL_ISUPPORTS(DomainSet, nsIDomainSet)
 
 NS_IMETHODIMP
 DomainSet::Add(nsIURI* aDomain)
diff --git a/caps/src/nsNullPrincipal.cpp b/caps/src/nsNullPrincipal.cpp
index 32d2ce3d50e81c6c58a3caad9dc769b0be8e5ab0..dc87cf1ee403b901ccc62595c3403d460e4dc189 100644
--- a/caps/src/nsNullPrincipal.cpp
+++ b/caps/src/nsNullPrincipal.cpp
@@ -29,12 +29,12 @@ using namespace mozilla;
 
 NS_IMPL_CLASSINFO(nsNullPrincipal, nullptr, nsIClassInfo::MAIN_THREAD_ONLY,
                   NS_NULLPRINCIPAL_CID)
-NS_IMPL_QUERY_INTERFACE2_CI(nsNullPrincipal,
+NS_IMPL_QUERY_INTERFACE_CI(nsNullPrincipal,
+                           nsIPrincipal,
+                           nsISerializable)
+NS_IMPL_CI_INTERFACE_GETTER(nsNullPrincipal,
                             nsIPrincipal,
                             nsISerializable)
-NS_IMPL_CI_INTERFACE_GETTER2(nsNullPrincipal,
-                             nsIPrincipal,
-                             nsISerializable)
 
 NS_IMETHODIMP_(MozExternalRefCountType)
 nsNullPrincipal::AddRef()
diff --git a/caps/src/nsPrincipal.cpp b/caps/src/nsPrincipal.cpp
index d2c1c4bb13937db7a6d27ffa20ba7b08a5894625..46bd9d2b58543122ee23c8b7b07f94e80328de4c 100644
--- a/caps/src/nsPrincipal.cpp
+++ b/caps/src/nsPrincipal.cpp
@@ -116,12 +116,12 @@ void nsPrincipal::dumpImpl()
 
 NS_IMPL_CLASSINFO(nsPrincipal, nullptr, nsIClassInfo::MAIN_THREAD_ONLY,
                   NS_PRINCIPAL_CID)
-NS_IMPL_QUERY_INTERFACE2_CI(nsPrincipal,
+NS_IMPL_QUERY_INTERFACE_CI(nsPrincipal,
+                           nsIPrincipal,
+                           nsISerializable)
+NS_IMPL_CI_INTERFACE_GETTER(nsPrincipal,
                             nsIPrincipal,
                             nsISerializable)
-NS_IMPL_CI_INTERFACE_GETTER2(nsPrincipal,
-                             nsIPrincipal,
-                             nsISerializable)
 NS_IMPL_ADDREF_INHERITED(nsPrincipal, nsBasePrincipal)
 NS_IMPL_RELEASE_INHERITED(nsPrincipal, nsBasePrincipal)
 
@@ -627,10 +627,10 @@ static const char EXPANDED_PRINCIPAL_SPEC[] = "[Expanded Principal]";
 
 NS_IMPL_CLASSINFO(nsExpandedPrincipal, nullptr, nsIClassInfo::MAIN_THREAD_ONLY,
                   NS_EXPANDEDPRINCIPAL_CID)
-NS_IMPL_QUERY_INTERFACE2_CI(nsExpandedPrincipal,
-                            nsIPrincipal,
-                            nsIExpandedPrincipal)
-NS_IMPL_CI_INTERFACE_GETTER2(nsExpandedPrincipal,
+NS_IMPL_QUERY_INTERFACE_CI(nsExpandedPrincipal,
+                           nsIPrincipal,
+                           nsIExpandedPrincipal)
+NS_IMPL_CI_INTERFACE_GETTER(nsExpandedPrincipal,
                              nsIPrincipal,
                              nsIExpandedPrincipal)
 NS_IMPL_ADDREF_INHERITED(nsExpandedPrincipal, nsBasePrincipal)
diff --git a/caps/src/nsScriptSecurityManager.cpp b/caps/src/nsScriptSecurityManager.cpp
index f8cb3341e401efb8d2234a32e97a5bb6a5a53efa..08b2f1bf16c4bb5ca458e9236351e29372c0a039 100644
--- a/caps/src/nsScriptSecurityManager.cpp
+++ b/caps/src/nsScriptSecurityManager.cpp
@@ -339,11 +339,11 @@ nsScriptSecurityManager::GetCxSubjectPrincipal(JSContext *cx)
 ////////////////////////////////////
 // Methods implementing ISupports //
 ////////////////////////////////////
-NS_IMPL_ISUPPORTS4(nsScriptSecurityManager,
-                   nsIScriptSecurityManager,
-                   nsIXPCSecurityManager,
-                   nsIChannelEventSink,
-                   nsIObserver)
+NS_IMPL_ISUPPORTS(nsScriptSecurityManager,
+                  nsIScriptSecurityManager,
+                  nsIXPCSecurityManager,
+                  nsIChannelEventSink,
+                  nsIObserver)
 
 ///////////////////////////////////////////////////
 // Methods implementing nsIScriptSecurityManager //
diff --git a/caps/src/nsSecurityManagerFactory.cpp b/caps/src/nsSecurityManagerFactory.cpp
index 32155f7fe13f8130520394d6af7c02d3f98803b5..a57ea3b7a5944108d689ea4bf4d98c1ea89dadba 100644
--- a/caps/src/nsSecurityManagerFactory.cpp
+++ b/caps/src/nsSecurityManagerFactory.cpp
@@ -44,7 +44,7 @@ nsSecurityNameSet::~nsSecurityNameSet()
 {
 }
 
-NS_IMPL_ISUPPORTS1(nsSecurityNameSet, nsIScriptExternalNameSet)
+NS_IMPL_ISUPPORTS(nsSecurityNameSet, nsIScriptExternalNameSet)
 
 static bool
 netscape_security_enablePrivilege(JSContext *cx, unsigned argc, JS::Value *vp)
diff --git a/caps/src/nsSystemPrincipal.cpp b/caps/src/nsSystemPrincipal.cpp
index a6f089b343cbef0c6303136360d76b6e2e2236b3..634128a67419b053886518bd7a505933302a5b0c 100644
--- a/caps/src/nsSystemPrincipal.cpp
+++ b/caps/src/nsSystemPrincipal.cpp
@@ -22,12 +22,12 @@
 NS_IMPL_CLASSINFO(nsSystemPrincipal, nullptr,
                   nsIClassInfo::SINGLETON | nsIClassInfo::MAIN_THREAD_ONLY,
                   NS_SYSTEMPRINCIPAL_CID)
-NS_IMPL_QUERY_INTERFACE2_CI(nsSystemPrincipal,
+NS_IMPL_QUERY_INTERFACE_CI(nsSystemPrincipal,
+                           nsIPrincipal,
+                           nsISerializable)
+NS_IMPL_CI_INTERFACE_GETTER(nsSystemPrincipal,
                             nsIPrincipal,
                             nsISerializable)
-NS_IMPL_CI_INTERFACE_GETTER2(nsSystemPrincipal,
-                             nsIPrincipal,
-                             nsISerializable)
 
 NS_IMETHODIMP_(MozExternalRefCountType)
 nsSystemPrincipal::AddRef()
diff --git a/chrome/src/nsChromeProtocolHandler.cpp b/chrome/src/nsChromeProtocolHandler.cpp
index 5f074bc99c78d38356b2723f3fdf54e891c659d7..f5a4dad969c9fc77bab16f7c445a5c639bf61923 100644
--- a/chrome/src/nsChromeProtocolHandler.cpp
+++ b/chrome/src/nsChromeProtocolHandler.cpp
@@ -27,9 +27,9 @@
 
 ////////////////////////////////////////////////////////////////////////////////
 
-NS_IMPL_ISUPPORTS2(nsChromeProtocolHandler,
-                   nsIProtocolHandler,
-                   nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(nsChromeProtocolHandler,
+                  nsIProtocolHandler,
+                  nsISupportsWeakReference)
 
 ////////////////////////////////////////////////////////////////////////////////
 // nsIProtocolHandler methods:
diff --git a/content/base/src/Attr.cpp b/content/base/src/Attr.cpp
index e402550d93a952502cf9399585ea0039dd66cdec..76f7f7a79e4dd4d3d03c4d7b634e678b6138f548 100644
--- a/content/base/src/Attr.cpp
+++ b/content/base/src/Attr.cpp
@@ -104,8 +104,8 @@ NS_IMPL_CYCLE_COLLECTION_CAN_SKIP_THIS_END
 // QueryInterface implementation for Attr
 NS_INTERFACE_TABLE_HEAD(Attr)
   NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
-  NS_INTERFACE_TABLE6(Attr, nsINode, nsIDOMAttr, nsIAttribute, nsIDOMNode,
-                      nsIDOMEventTarget, EventTarget)
+  NS_INTERFACE_TABLE(Attr, nsINode, nsIDOMAttr, nsIAttribute, nsIDOMNode,
+                     nsIDOMEventTarget, EventTarget)
   NS_INTERFACE_TABLE_TO_MAP_SEGUE_CYCLE_COLLECTION(Attr)
   NS_INTERFACE_MAP_ENTRY_TEAROFF(nsISupportsWeakReference,
                                  new nsNodeSupportsWeakRefTearoff(this))
diff --git a/content/base/src/Comment.cpp b/content/base/src/Comment.cpp
index cbcd03ab98a86646d398caa7f0398052b178a70c..b9cb27051597274a55d41b89dfcf01edcfbc502f 100644
--- a/content/base/src/Comment.cpp
+++ b/content/base/src/Comment.cpp
@@ -22,8 +22,8 @@ Comment::~Comment()
 {
 }
 
-NS_IMPL_ISUPPORTS_INHERITED3(Comment, nsGenericDOMDataNode, nsIDOMNode,
-                             nsIDOMCharacterData, nsIDOMComment)
+NS_IMPL_ISUPPORTS_INHERITED(Comment, nsGenericDOMDataNode, nsIDOMNode,
+                            nsIDOMCharacterData, nsIDOMComment)
 
 bool
 Comment::IsNodeOfType(uint32_t aFlags) const
diff --git a/content/base/src/DOMRect.cpp b/content/base/src/DOMRect.cpp
index 2b1cda1d447dab301a2766ea28eecaef83501636..b26414b6e2913354f44942d8b3d94e953c28e56f 100644
--- a/content/base/src/DOMRect.cpp
+++ b/content/base/src/DOMRect.cpp
@@ -29,7 +29,7 @@ DOMRectReadOnly::WrapObject(JSContext* aCx)
 
 // -----------------------------------------------------------------------------
 
-NS_IMPL_ISUPPORTS_INHERITED1(DOMRect, DOMRectReadOnly, nsIDOMClientRect)
+NS_IMPL_ISUPPORTS_INHERITED(DOMRect, DOMRectReadOnly, nsIDOMClientRect)
 
 #define FORWARD_GETTER(_name)                                                   \
   NS_IMETHODIMP                                                                 \
@@ -76,7 +76,7 @@ NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE_2(DOMRectList, mParent, mArray)
 
 NS_INTERFACE_TABLE_HEAD(DOMRectList)
   NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
-  NS_INTERFACE_TABLE1(DOMRectList, nsIDOMClientRectList)
+  NS_INTERFACE_TABLE(DOMRectList, nsIDOMClientRectList)
   NS_INTERFACE_TABLE_TO_MAP_SEGUE_CYCLE_COLLECTION(DOMRectList)
 NS_INTERFACE_MAP_END
 
diff --git a/content/base/src/DocumentType.cpp b/content/base/src/DocumentType.cpp
index 4b96c44185b2b007eb82600dba07331b435c3a60..cf02f28a45c40d363d5780248251f9b8395a2fb9 100644
--- a/content/base/src/DocumentType.cpp
+++ b/content/base/src/DocumentType.cpp
@@ -82,8 +82,8 @@ DocumentType::~DocumentType()
 {
 }
 
-NS_IMPL_ISUPPORTS_INHERITED2(DocumentType, nsGenericDOMDataNode, nsIDOMNode,
-                             nsIDOMDocumentType)
+NS_IMPL_ISUPPORTS_INHERITED(DocumentType, nsGenericDOMDataNode, nsIDOMNode,
+                            nsIDOMDocumentType)
 
 bool
 DocumentType::IsNodeOfType(uint32_t aFlags) const
diff --git a/content/base/src/FragmentOrElement.cpp b/content/base/src/FragmentOrElement.cpp
index 0a1b20cd06cc918c882ae1cb97d3a01665f67298..2ebbfb4390e047e50ce92552b23f9285dbabdc79 100644
--- a/content/base/src/FragmentOrElement.cpp
+++ b/content/base/src/FragmentOrElement.cpp
@@ -375,7 +375,7 @@ NS_IMPL_CYCLE_COLLECTION_CAN_SKIP_THIS_END
 
 NS_INTERFACE_TABLE_HEAD(nsChildContentList)
   NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
-  NS_INTERFACE_TABLE2(nsChildContentList, nsINodeList, nsIDOMNodeList)
+  NS_INTERFACE_TABLE(nsChildContentList, nsINodeList, nsIDOMNodeList)
   NS_INTERFACE_TABLE_TO_MAP_SEGUE_CYCLE_COLLECTION(nsChildContentList)
 NS_INTERFACE_MAP_END
 
@@ -463,8 +463,8 @@ FragmentOrElement::Children()
 //----------------------------------------------------------------------
 
 
-NS_IMPL_ISUPPORTS1(nsNodeWeakReference,
-                   nsIWeakReference)
+NS_IMPL_ISUPPORTS(nsNodeWeakReference,
+                  nsIWeakReference)
 
 nsNodeWeakReference::~nsNodeWeakReference()
 {
diff --git a/content/base/src/ThirdPartyUtil.cpp b/content/base/src/ThirdPartyUtil.cpp
index ca6b01970c6c6649a1c8bf352166e84d86546aa6..8fade9d4e9bf038e3468bbf493e8bc95b325e0e5 100644
--- a/content/base/src/ThirdPartyUtil.cpp
+++ b/content/base/src/ThirdPartyUtil.cpp
@@ -12,7 +12,7 @@
 #include "nsIScriptObjectPrincipal.h"
 #include "nsThreadUtils.h"
 
-NS_IMPL_ISUPPORTS1(ThirdPartyUtil, mozIThirdPartyUtil)
+NS_IMPL_ISUPPORTS(ThirdPartyUtil, mozIThirdPartyUtil)
 
 nsresult
 ThirdPartyUtil::Init()
diff --git a/content/base/src/nsCCUncollectableMarker.cpp b/content/base/src/nsCCUncollectableMarker.cpp
index 29fe87930fd29e97d1fa2b6b3d48c8bbc3839be0..b677f4585a5617da2f011668a0e49d95ad4c458d 100644
--- a/content/base/src/nsCCUncollectableMarker.cpp
+++ b/content/base/src/nsCCUncollectableMarker.cpp
@@ -41,7 +41,7 @@ uint32_t nsCCUncollectableMarker::sGeneration = 0;
 #include "nsXULPrototypeCache.h"
 #endif
 
-NS_IMPL_ISUPPORTS1(nsCCUncollectableMarker, nsIObserver)
+NS_IMPL_ISUPPORTS(nsCCUncollectableMarker, nsIObserver)
 
 /* static */
 nsresult
diff --git a/content/base/src/nsCSPService.cpp b/content/base/src/nsCSPService.cpp
index 7461c86e2ab94075eb65b5c3a03e665ae6d9ec4f..4f5c0d5062a43988e3de97f8fa5866ed363ba50f 100644
--- a/content/base/src/nsCSPService.cpp
+++ b/content/base/src/nsCSPService.cpp
@@ -48,7 +48,7 @@ CSPService::~CSPService()
   mAppStatusCache.Clear();
 }
 
-NS_IMPL_ISUPPORTS2(CSPService, nsIContentPolicy, nsIChannelEventSink)
+NS_IMPL_ISUPPORTS(CSPService, nsIContentPolicy, nsIChannelEventSink)
 
 /* nsIContentPolicy implementation */
 NS_IMETHODIMP
diff --git a/content/base/src/nsChannelPolicy.cpp b/content/base/src/nsChannelPolicy.cpp
index bb58afa840a17a4948a5009af58357fa34b9f519..7d647695bbe620c391abbdaa42d851f5ecd86900 100644
--- a/content/base/src/nsChannelPolicy.cpp
+++ b/content/base/src/nsChannelPolicy.cpp
@@ -14,7 +14,7 @@ nsChannelPolicy::~nsChannelPolicy()
 {
 }
 
-NS_IMPL_ISUPPORTS1(nsChannelPolicy, nsIChannelPolicy)
+NS_IMPL_ISUPPORTS(nsChannelPolicy, nsIChannelPolicy)
 
 NS_IMETHODIMP
 nsChannelPolicy::GetLoadType(uint32_t *aLoadType)
diff --git a/content/base/src/nsContentAreaDragDrop.cpp b/content/base/src/nsContentAreaDragDrop.cpp
index b20753aa274698a21d8a5c087bc5fbee13eb69ca..721e0e84111a5f38cb53bf8467bf4c5ac5abb9a6 100644
--- a/content/base/src/nsContentAreaDragDrop.cpp
+++ b/content/base/src/nsContentAreaDragDrop.cpp
@@ -127,7 +127,7 @@ nsContentAreaDragDrop::GetDragData(nsPIDOMWindow* aWindow,
 }
 
 
-NS_IMPL_ISUPPORTS1(nsContentAreaDragDropDataProvider, nsIFlavorDataProvider)
+NS_IMPL_ISUPPORTS(nsContentAreaDragDropDataProvider, nsIFlavorDataProvider)
 
 // SaveURIToFile
 // used on platforms where it's possible to drag items (e.g. images)
diff --git a/content/base/src/nsContentList.cpp b/content/base/src/nsContentList.cpp
index 5a621d253a752685b01721a467409213da86a35e..439eec4ffb215e9e7d2e66d70ea549395a999256 100644
--- a/content/base/src/nsContentList.cpp
+++ b/content/base/src/nsContentList.cpp
@@ -85,7 +85,7 @@ NS_IMPL_CYCLE_COLLECTION_CAN_SKIP_THIS_END
 // QueryInterface implementation for nsBaseContentList
 NS_INTERFACE_TABLE_HEAD(nsBaseContentList)
   NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
-  NS_INTERFACE_TABLE2(nsBaseContentList, nsINodeList, nsIDOMNodeList)
+  NS_INTERFACE_TABLE(nsBaseContentList, nsINodeList, nsIDOMNodeList)
   NS_INTERFACE_TABLE_TO_MAP_SEGUE_CYCLE_COLLECTION(nsBaseContentList)
 NS_INTERFACE_MAP_END
 
@@ -493,9 +493,9 @@ nsContentList::WrapObject(JSContext *cx)
   return HTMLCollectionBinding::Wrap(cx, this);
 }
 
-NS_IMPL_ISUPPORTS_INHERITED3(nsContentList, nsBaseContentList,
-                             nsIHTMLCollection, nsIDOMHTMLCollection,
-                             nsIMutationObserver)
+NS_IMPL_ISUPPORTS_INHERITED(nsContentList, nsBaseContentList,
+                            nsIHTMLCollection, nsIDOMHTMLCollection,
+                            nsIMutationObserver)
 
 uint32_t
 nsContentList::Length(bool aDoFlush)
diff --git a/content/base/src/nsContentPolicy.cpp b/content/base/src/nsContentPolicy.cpp
index b6b58a97df9c4264b3f381fd44b9e574d04f1f4d..5841fe7fe508fddb5abe189588dd30b27f7e3f51 100644
--- a/content/base/src/nsContentPolicy.cpp
+++ b/content/base/src/nsContentPolicy.cpp
@@ -20,7 +20,7 @@
 #include "nsIContent.h"
 #include "nsCOMArray.h"
 
-NS_IMPL_ISUPPORTS1(nsContentPolicy, nsIContentPolicy)
+NS_IMPL_ISUPPORTS(nsContentPolicy, nsIContentPolicy)
 
 #ifdef PR_LOGGING
 static PRLogModuleInfo* gConPolLog;
diff --git a/content/base/src/nsContentUtils.cpp b/content/base/src/nsContentUtils.cpp
index eba3f7e908b875c0cc1383365a36637034aca5fe..f4ce2a7983188cd3e9bbe14dcd2f799bcaa0df60 100644
--- a/content/base/src/nsContentUtils.cpp
+++ b/content/base/src/nsContentUtils.cpp
@@ -278,7 +278,7 @@ public:
   }
 };
 
-NS_IMPL_ISUPPORTS1(DOMEventListenerManagersHashReporter, nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(DOMEventListenerManagersHashReporter, nsIMemoryReporter)
 
 class EventListenerManagerMapEntry : public PLDHashEntryHdr
 {
@@ -5390,9 +5390,9 @@ nsContentUtils::CheckSameOrigin(nsIChannel *aOldChannel, nsIChannel *aNewChannel
   return rv;
 }
 
-NS_IMPL_ISUPPORTS2(SameOriginChecker,
-                   nsIChannelEventSink,
-                   nsIInterfaceRequestor)
+NS_IMPL_ISUPPORTS(SameOriginChecker,
+                  nsIChannelEventSink,
+                  nsIInterfaceRequestor)
 
 NS_IMETHODIMP
 SameOriginChecker::AsyncOnChannelRedirect(nsIChannel *aOldChannel,
diff --git a/content/base/src/nsCrossSiteListenerProxy.cpp b/content/base/src/nsCrossSiteListenerProxy.cpp
index e1a4323a9ef53d19e25301f8f74d4872946422d6..15c3a71932a26cbcc67303e0a12421ade0b1f4c9 100644
--- a/content/base/src/nsCrossSiteListenerProxy.cpp
+++ b/content/base/src/nsCrossSiteListenerProxy.cpp
@@ -397,9 +397,9 @@ nsPreflightCache::GetCacheKey(nsIURI* aURI,
 //////////////////////////////////////////////////////////////////////////
 // nsCORSListenerProxy
 
-NS_IMPL_ISUPPORTS5(nsCORSListenerProxy, nsIStreamListener,
-                   nsIRequestObserver, nsIChannelEventSink,
-                   nsIInterfaceRequestor, nsIAsyncVerifyRedirectCallback)
+NS_IMPL_ISUPPORTS(nsCORSListenerProxy, nsIStreamListener,
+                  nsIRequestObserver, nsIChannelEventSink,
+                  nsIInterfaceRequestor, nsIAsyncVerifyRedirectCallback)
 
 /* static */
 void
@@ -931,9 +931,9 @@ private:
   bool mWithCredentials;
 };
 
-NS_IMPL_ISUPPORTS4(nsCORSPreflightListener, nsIStreamListener,
-                   nsIRequestObserver, nsIInterfaceRequestor,
-                   nsIChannelEventSink)
+NS_IMPL_ISUPPORTS(nsCORSPreflightListener, nsIStreamListener,
+                  nsIRequestObserver, nsIInterfaceRequestor,
+                  nsIChannelEventSink)
 
 void
 nsCORSPreflightListener::AddResultToCache(nsIRequest *aRequest)
diff --git a/content/base/src/nsDOMAttributeMap.cpp b/content/base/src/nsDOMAttributeMap.cpp
index f96aaa87ac0de3ccae20b2a063c68d280fc9c0c2..a296453c4cb630588882c4489b9bb51cb0c942ac 100644
--- a/content/base/src/nsDOMAttributeMap.cpp
+++ b/content/base/src/nsDOMAttributeMap.cpp
@@ -114,7 +114,7 @@ NS_IMPL_CYCLE_COLLECTION_CAN_SKIP_THIS_END
 
 // QueryInterface implementation for nsDOMAttributeMap
 NS_INTERFACE_TABLE_HEAD(nsDOMAttributeMap)
-  NS_INTERFACE_TABLE1(nsDOMAttributeMap, nsIDOMMozNamedAttrMap)
+  NS_INTERFACE_TABLE(nsDOMAttributeMap, nsIDOMMozNamedAttrMap)
   NS_INTERFACE_TABLE_TO_MAP_SEGUE
   NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
   NS_INTERFACE_MAP_ENTRIES_CYCLE_COLLECTION(nsDOMAttributeMap)
diff --git a/content/base/src/nsDOMBlobBuilder.cpp b/content/base/src/nsDOMBlobBuilder.cpp
index 6c6f29ae190a5dac6b2000d43bbd0b7adc895b0f..a109b932b1c77fffac1ff396c05715576e21a1e3 100644
--- a/content/base/src/nsDOMBlobBuilder.cpp
+++ b/content/base/src/nsDOMBlobBuilder.cpp
@@ -21,8 +21,8 @@
 using namespace mozilla;
 using namespace mozilla::dom;
 
-NS_IMPL_ISUPPORTS_INHERITED1(nsDOMMultipartFile, nsDOMFile,
-                             nsIJSNativeInitializer)
+NS_IMPL_ISUPPORTS_INHERITED(nsDOMMultipartFile, nsDOMFile,
+                            nsIJSNativeInitializer)
 
 NS_IMETHODIMP
 nsDOMMultipartFile::GetSize(uint64_t* aLength)
diff --git a/content/base/src/nsDOMFile.cpp b/content/base/src/nsDOMFile.cpp
index ac120b4c3e87aafc0d1c9866e1af511ad0e378e6..e7655944c62d7898e37db479a304aad96d72c0f2 100644
--- a/content/base/src/nsDOMFile.cpp
+++ b/content/base/src/nsDOMFile.cpp
@@ -710,7 +710,7 @@ public:
   }
 };
 
-NS_IMPL_ISUPPORTS1(nsDOMMemoryFileDataOwnerMemoryReporter, nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(nsDOMMemoryFileDataOwnerMemoryReporter, nsIMemoryReporter)
 
 /* static */ void
 nsDOMMemoryFile::DataOwner::EnsureMemoryReporterRegistered()
diff --git a/content/base/src/nsDataDocumentContentPolicy.cpp b/content/base/src/nsDataDocumentContentPolicy.cpp
index 6d2662dc6f01913e11b59b69e4b913bc5059b439..06b84ca5f6c8d1b2576b9e55aa2b3ede3957eec5 100644
--- a/content/base/src/nsDataDocumentContentPolicy.cpp
+++ b/content/base/src/nsDataDocumentContentPolicy.cpp
@@ -16,7 +16,7 @@
 #include "nsINode.h"
 #include "nsIDOMWindow.h"
 
-NS_IMPL_ISUPPORTS1(nsDataDocumentContentPolicy, nsIContentPolicy)
+NS_IMPL_ISUPPORTS(nsDataDocumentContentPolicy, nsIContentPolicy)
 
 // Helper method for ShouldLoad()
 // Checks a URI for the given flags.  Returns true if the URI has the flags,
diff --git a/content/base/src/nsDocument.cpp b/content/base/src/nsDocument.cpp
index 869bbc3635125a9fb3988e3c1087c95be27f365b..55de916ba988a86bb6cb76a9f82056d3915d4bdf 100644
--- a/content/base/src/nsDocument.cpp
+++ b/content/base/src/nsDocument.cpp
@@ -723,9 +723,9 @@ nsDOMStyleSheetList::~nsDOMStyleSheetList()
   }
 }
 
-NS_IMPL_ISUPPORTS_INHERITED2(nsDOMStyleSheetList, StyleSheetList,
-                             nsIDocumentObserver,
-                             nsIMutationObserver)
+NS_IMPL_ISUPPORTS_INHERITED(nsDOMStyleSheetList, StyleSheetList,
+                            nsIDocumentObserver,
+                            nsIMutationObserver)
 
 uint32_t
 nsDOMStyleSheetList::Length()
@@ -800,7 +800,7 @@ nsDOMStyleSheetList::StyleSheetRemoved(nsIDocument *aDocument,
 }
 
 // nsOnloadBlocker implementation
-NS_IMPL_ISUPPORTS1(nsOnloadBlocker, nsIRequest)
+NS_IMPL_ISUPPORTS(nsOnloadBlocker, nsIRequest)
 
 NS_IMETHODIMP
 nsOnloadBlocker::GetName(nsACString &aResult)
@@ -1120,9 +1120,9 @@ nsExternalResourceMap::AddExternalResource(nsIURI* aURI,
   return rv;
 }
 
-NS_IMPL_ISUPPORTS2(nsExternalResourceMap::PendingLoad,
-                   nsIStreamListener,
-                   nsIRequestObserver)
+NS_IMPL_ISUPPORTS(nsExternalResourceMap::PendingLoad,
+                  nsIStreamListener,
+                  nsIRequestObserver)
 
 NS_IMETHODIMP
 nsExternalResourceMap::PendingLoad::OnStartRequest(nsIRequest *aRequest,
@@ -1317,11 +1317,11 @@ nsExternalResourceMap::PendingLoad::StartLoad(nsIURI* aURI,
   return channel->AsyncOpen(this, nullptr);
 }
 
-NS_IMPL_ISUPPORTS1(nsExternalResourceMap::LoadgroupCallbacks,
-                   nsIInterfaceRequestor)
+NS_IMPL_ISUPPORTS(nsExternalResourceMap::LoadgroupCallbacks,
+                  nsIInterfaceRequestor)
 
 #define IMPL_SHIM(_i) \
-  NS_IMPL_ISUPPORTS1(nsExternalResourceMap::LoadgroupCallbacks::_i##Shim, _i)
+  NS_IMPL_ISUPPORTS(nsExternalResourceMap::LoadgroupCallbacks::_i##Shim, _i)
 
 IMPL_SHIM(nsILoadContext)
 IMPL_SHIM(nsIProgressEventSink)
@@ -5565,7 +5565,7 @@ class ProcessStackRunner MOZ_FINAL : public nsIRunnable
   bool mIsBaseQueue;
 };
 
-NS_IMPL_ISUPPORTS1(ProcessStackRunner, nsIRunnable);
+NS_IMPL_ISUPPORTS(ProcessStackRunner, nsIRunnable);
 
 } // anonymous namespace
 
@@ -9326,7 +9326,7 @@ public:
   }
   NS_DECL_ISUPPORTS
 };
-NS_IMPL_ISUPPORTS1(StubCSSLoaderObserver, nsICSSLoaderObserver)
+NS_IMPL_ISUPPORTS(StubCSSLoaderObserver, nsICSSLoaderObserver)
 
 }
 
@@ -11437,9 +11437,9 @@ public:
   bool mUserInputOrChromeCaller;
 };
 
-NS_IMPL_ISUPPORTS_INHERITED1(nsPointerLockPermissionRequest,
-                             nsRunnable,
-                             nsIContentPermissionRequest)
+NS_IMPL_ISUPPORTS_INHERITED(nsPointerLockPermissionRequest,
+                            nsRunnable,
+                            nsIContentPermissionRequest)
 
 NS_IMETHODIMP
 nsPointerLockPermissionRequest::GetTypes(nsIArray** aTypes)
diff --git a/content/base/src/nsFrameLoader.cpp b/content/base/src/nsFrameLoader.cpp
index da4295967a8286052e38bd82042aba3687522ba2..7a87073c5c71e1526d575017676740eacecf1c22 100644
--- a/content/base/src/nsFrameLoader.cpp
+++ b/content/base/src/nsFrameLoader.cpp
@@ -122,7 +122,7 @@ public:
   nsRefPtr<nsIDocShell> mDocShell;
 };
 
-NS_IMPL_ISUPPORTS1(nsContentView, nsIContentView)
+NS_IMPL_ISUPPORTS(nsContentView, nsIContentView)
 
 nsresult
 nsContentView::Update(const ViewConfig& aConfig)
diff --git a/content/base/src/nsFrameMessageManager.cpp b/content/base/src/nsFrameMessageManager.cpp
index 60175f736a7423e2ec36d6d0c9c8a3b1b01e00c4..4d0fb1de3126f7d5985fbfc3fbbd15015cb330ba 100644
--- a/content/base/src/nsFrameMessageManager.cpp
+++ b/content/base/src/nsFrameMessageManager.cpp
@@ -1210,7 +1210,7 @@ protected:
                       MessageManagerReferentCount* aReferentCount);
 };
 
-NS_IMPL_ISUPPORTS1(MessageManagerReporter, nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(MessageManagerReporter, nsIMemoryReporter)
 
 static PLDHashOperator
 CollectMessageListenerData(const nsAString& aKey,
@@ -1611,7 +1611,7 @@ nsFrameScriptExecutor::InitTabChildGlobalInternal(nsISupports* aScope,
   return true;
 }
 
-NS_IMPL_ISUPPORTS1(nsScriptCacheCleaner, nsIObserver)
+NS_IMPL_ISUPPORTS(nsScriptCacheCleaner, nsIObserver)
 
 nsFrameMessageManager* nsFrameMessageManager::sChildProcessManager = nullptr;
 nsFrameMessageManager* nsFrameMessageManager::sParentProcessManager = nullptr;
diff --git a/content/base/src/nsGenConImageContent.cpp b/content/base/src/nsGenConImageContent.cpp
index fd131120bd20be7c095bb1ad11f0ed52c6f1a157..88cb4abc1b9a12fb0de405164adb697da46ecbcd 100644
--- a/content/base/src/nsGenConImageContent.cpp
+++ b/content/base/src/nsGenConImageContent.cpp
@@ -63,11 +63,11 @@ public:
   NS_DECL_ISUPPORTS_INHERITED
 };
 
-NS_IMPL_ISUPPORTS_INHERITED3(nsGenConImageContent,
-                             nsXMLElement,
-                             nsIImageLoadingContent,
-                             imgINotificationObserver,
-                             imgIOnloadBlocker)
+NS_IMPL_ISUPPORTS_INHERITED(nsGenConImageContent,
+                            nsXMLElement,
+                            nsIImageLoadingContent,
+                            imgINotificationObserver,
+                            imgIOnloadBlocker)
 
 nsresult
 NS_NewGenConImageContent(nsIContent** aResult, already_AddRefed<nsINodeInfo>&& aNodeInfo,
diff --git a/content/base/src/nsHostObjectProtocolHandler.cpp b/content/base/src/nsHostObjectProtocolHandler.cpp
index f19900453cfd3589ea057e7471aaa125bcb235fd..10ec44c57060eb1dd61e06e702be011a15ce2f37 100644
--- a/content/base/src/nsHostObjectProtocolHandler.cpp
+++ b/content/base/src/nsHostObjectProtocolHandler.cpp
@@ -47,7 +47,7 @@ class HostObjectURLsReporter MOZ_FINAL : public nsIMemoryReporter
   }
 };
 
-NS_IMPL_ISUPPORTS1(HostObjectURLsReporter, nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(HostObjectURLsReporter, nsIMemoryReporter)
 
 class BlobURLsReporter MOZ_FINAL : public nsIMemoryReporter
 {
@@ -250,7 +250,7 @@ class BlobURLsReporter MOZ_FINAL : public nsIMemoryReporter
   }
 };
 
-NS_IMPL_ISUPPORTS1(BlobURLsReporter, nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(BlobURLsReporter, nsIMemoryReporter)
 
 }
 
@@ -407,7 +407,7 @@ GetDataObject(nsIURI* aURI)
 // -----------------------------------------------------------------------
 // Protocol handler
 
-NS_IMPL_ISUPPORTS1(nsHostObjectProtocolHandler, nsIProtocolHandler)
+NS_IMPL_ISUPPORTS(nsHostObjectProtocolHandler, nsIProtocolHandler)
 
 NS_IMETHODIMP
 nsHostObjectProtocolHandler::GetDefaultPort(int32_t *result)
diff --git a/content/base/src/nsMappedAttributes.cpp b/content/base/src/nsMappedAttributes.cpp
index 6b5f93527373e82ecb0a49e58b1715997625bebd..c5598fdb6e34a48477a637ddfca735966619e05b 100644
--- a/content/base/src/nsMappedAttributes.cpp
+++ b/content/base/src/nsMappedAttributes.cpp
@@ -74,8 +74,8 @@ void* nsMappedAttributes::operator new(size_t aSize, uint32_t aAttrCount) CPP_TH
   return newAttrs;
 }
 
-NS_IMPL_ISUPPORTS1(nsMappedAttributes,
-                   nsIStyleRule)
+NS_IMPL_ISUPPORTS(nsMappedAttributes,
+                  nsIStyleRule)
 
 void
 nsMappedAttributes::SetAndTakeAttr(nsIAtom* aAttrName, nsAttrValue& aValue)
diff --git a/content/base/src/nsMixedContentBlocker.cpp b/content/base/src/nsMixedContentBlocker.cpp
index 442737b8303b0963bc819528fab97303e2f87b40..40fed3c9bb5c67cd67da96f3dc157504c14d04df 100644
--- a/content/base/src/nsMixedContentBlocker.cpp
+++ b/content/base/src/nsMixedContentBlocker.cpp
@@ -150,7 +150,7 @@ nsMixedContentBlocker::~nsMixedContentBlocker()
 {
 }
 
-NS_IMPL_ISUPPORTS1(nsMixedContentBlocker, nsIContentPolicy)
+NS_IMPL_ISUPPORTS(nsMixedContentBlocker, nsIContentPolicy)
 
 static void
 LogMixedContentMessage(MixedContentTypes aClassification,
diff --git a/content/base/src/nsNoDataProtocolContentPolicy.cpp b/content/base/src/nsNoDataProtocolContentPolicy.cpp
index ca8ee3cd668c75b8660a4e4ca63a0d42283ced07..e722bf841b629a8498f83556ab6d78f431ca48cf 100644
--- a/content/base/src/nsNoDataProtocolContentPolicy.cpp
+++ b/content/base/src/nsNoDataProtocolContentPolicy.cpp
@@ -17,7 +17,7 @@
 #include "nsIExternalProtocolHandler.h"
 #include "nsNetUtil.h"
 
-NS_IMPL_ISUPPORTS1(nsNoDataProtocolContentPolicy, nsIContentPolicy)
+NS_IMPL_ISUPPORTS(nsNoDataProtocolContentPolicy, nsIContentPolicy)
 
 NS_IMETHODIMP
 nsNoDataProtocolContentPolicy::ShouldLoad(uint32_t aContentType,
diff --git a/content/base/src/nsNodeInfo.cpp b/content/base/src/nsNodeInfo.cpp
index e2bf37e7e447b1fff1a501890ed1c22de9662e6f..60bf4955b53bc8fd1cc5e1cf5a37e95abc402201 100644
--- a/content/base/src/nsNodeInfo.cpp
+++ b/content/base/src/nsNodeInfo.cpp
@@ -165,7 +165,7 @@ NS_IMPL_CYCLE_COLLECTION_CAN_SKIP_THIS_END
 NS_IMPL_CYCLE_COLLECTING_ADDREF(nsNodeInfo)
 NS_IMPL_CYCLE_COLLECTING_RELEASE_WITH_DESTROY(nsNodeInfo, LastRelease())
 NS_INTERFACE_TABLE_HEAD(nsNodeInfo)
-  NS_INTERFACE_TABLE1(nsNodeInfo, nsINodeInfo)
+  NS_INTERFACE_TABLE(nsNodeInfo, nsINodeInfo)
   NS_INTERFACE_TABLE_TO_MAP_SEGUE_CYCLE_COLLECTION(nsNodeInfo)
 NS_INTERFACE_MAP_END
 
diff --git a/content/base/src/nsObjectLoadingContent.cpp b/content/base/src/nsObjectLoadingContent.cpp
index 555f2a996e97fd2d27a32ad05371de870a87efe8..1472a441f8e21fd395e9382b0ab11d67fbe2a03f 100644
--- a/content/base/src/nsObjectLoadingContent.cpp
+++ b/content/base/src/nsObjectLoadingContent.cpp
@@ -395,7 +395,7 @@ private:
   nsCOMPtr<nsIObjectLoadingContent> mContent;
 };
 
-NS_IMPL_ISUPPORTS_INHERITED1(nsStopPluginRunnable, nsRunnable, nsITimerCallback)
+NS_IMPL_ISUPPORTS_INHERITED(nsStopPluginRunnable, nsRunnable, nsITimerCallback)
 
 NS_IMETHODIMP
 nsStopPluginRunnable::Notify(nsITimer *aTimer)
@@ -3514,5 +3514,5 @@ nsObjectLoadingContent::SetupProtoChainRunner::Run()
   return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS1(nsObjectLoadingContent::SetupProtoChainRunner, nsIRunnable)
+NS_IMPL_ISUPPORTS(nsObjectLoadingContent::SetupProtoChainRunner, nsIRunnable)
 
diff --git a/content/base/src/nsPlainTextSerializer.cpp b/content/base/src/nsPlainTextSerializer.cpp
index 8736ac5a54b0638b73a5b27361e0f2b335bc97cf..fa8f40751817ba412b8ff468208e6f1dc1d7d911 100644
--- a/content/base/src/nsPlainTextSerializer.cpp
+++ b/content/base/src/nsPlainTextSerializer.cpp
@@ -112,8 +112,8 @@ nsPlainTextSerializer::~nsPlainTextSerializer()
   NS_WARN_IF_FALSE(mHeadLevel == 0, "Wrong head level!");
 }
 
-NS_IMPL_ISUPPORTS1(nsPlainTextSerializer,
-                   nsIContentSerializer)
+NS_IMPL_ISUPPORTS(nsPlainTextSerializer,
+                  nsIContentSerializer)
 
 
 NS_IMETHODIMP 
diff --git a/content/base/src/nsReferencedElement.cpp b/content/base/src/nsReferencedElement.cpp
index 84eaff5f137965d3809dddb0555e08b5339e3991..b291d5fe89724212618d04b4e9b22b14a7ec7fd7 100644
--- a/content/base/src/nsReferencedElement.cpp
+++ b/content/base/src/nsReferencedElement.cpp
@@ -217,8 +217,8 @@ nsReferencedElement::Observe(Element* aOldElement,
 NS_IMPL_ISUPPORTS_INHERITED0(nsReferencedElement::ChangeNotification,
                              nsRunnable)
 
-NS_IMPL_ISUPPORTS1(nsReferencedElement::DocumentLoadNotification,
-                   nsIObserver)
+NS_IMPL_ISUPPORTS(nsReferencedElement::DocumentLoadNotification,
+                  nsIObserver)
 
 NS_IMETHODIMP
 nsReferencedElement::DocumentLoadNotification::Observe(nsISupports* aSubject,
diff --git a/content/base/src/nsScriptLoader.cpp b/content/base/src/nsScriptLoader.cpp
index 81117720a41a75f80b487f1a707b3cf1ac063a15..a6a4c345489c901ba2d9cf230fbfd689ef43719e 100644
--- a/content/base/src/nsScriptLoader.cpp
+++ b/content/base/src/nsScriptLoader.cpp
@@ -177,7 +177,7 @@ nsScriptLoader::~nsScriptLoader()
   }  
 }
 
-NS_IMPL_ISUPPORTS1(nsScriptLoader, nsIStreamLoaderObserver)
+NS_IMPL_ISUPPORTS(nsScriptLoader, nsIStreamLoaderObserver)
 
 // Helper method for checking if the script element is an event-handler
 // This means that it has both a for-attribute and a event-attribute.
diff --git a/content/base/src/nsSyncLoadService.cpp b/content/base/src/nsSyncLoadService.cpp
index 9fb52f4535713a47c5db79d57f18b4dcbebf5aa4..8aec1d2a764fcc095827d9d03dcd603b3ff7c7de 100644
--- a/content/base/src/nsSyncLoadService.cpp
+++ b/content/base/src/nsSyncLoadService.cpp
@@ -85,9 +85,9 @@ nsForceXMLListener::~nsForceXMLListener()
 {
 }
 
-NS_IMPL_ISUPPORTS2(nsForceXMLListener,
-                   nsIStreamListener,
-                   nsIRequestObserver)
+NS_IMPL_ISUPPORTS(nsForceXMLListener,
+                  nsIStreamListener,
+                  nsIRequestObserver)
 
 NS_IMETHODIMP
 nsForceXMLListener::OnStartRequest(nsIRequest *aRequest, nsISupports *aContext)
@@ -116,12 +116,12 @@ nsSyncLoader::~nsSyncLoader()
     }
 }
 
-NS_IMPL_ISUPPORTS5(nsSyncLoader,
-                   nsIStreamListener,
-                   nsIRequestObserver,
-                   nsIChannelEventSink,
-                   nsIInterfaceRequestor,
-                   nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(nsSyncLoader,
+                  nsIStreamListener,
+                  nsIRequestObserver,
+                  nsIChannelEventSink,
+                  nsIInterfaceRequestor,
+                  nsISupportsWeakReference)
 
 nsresult
 nsSyncLoader::LoadDocument(nsIChannel* aChannel,
diff --git a/content/base/src/nsTextNode.cpp b/content/base/src/nsTextNode.cpp
index feda49d8a7a56d6d71538779d6cd495f8c2ae9ac..e1795264478910abfda37c539ec15d3a440ac5ee 100644
--- a/content/base/src/nsTextNode.cpp
+++ b/content/base/src/nsTextNode.cpp
@@ -96,8 +96,8 @@ nsTextNode::~nsTextNode()
 {
 }
 
-NS_IMPL_ISUPPORTS_INHERITED3(nsTextNode, nsGenericDOMDataNode, nsIDOMNode,
-                             nsIDOMText, nsIDOMCharacterData)
+NS_IMPL_ISUPPORTS_INHERITED(nsTextNode, nsGenericDOMDataNode, nsIDOMNode,
+                            nsIDOMText, nsIDOMCharacterData)
 
 JSObject*
 nsTextNode::WrapNode(JSContext *aCx)
@@ -222,8 +222,8 @@ NS_NewAttributeContent(nsNodeInfoManager *aNodeInfoManager,
   return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS_INHERITED1(nsAttributeTextNode, nsTextNode,
-                             nsIMutationObserver)
+NS_IMPL_ISUPPORTS_INHERITED(nsAttributeTextNode, nsTextNode,
+                            nsIMutationObserver)
 
 nsresult
 nsAttributeTextNode::BindToTree(nsIDocument* aDocument, nsIContent* aParent,
diff --git a/content/base/src/nsXMLContentSerializer.cpp b/content/base/src/nsXMLContentSerializer.cpp
index 0ecf61aa4a9291f889a9dc21d9a4c6249c39a6b9..e1325423b93e3929030568d7a3e71b585c3cadf3 100644
--- a/content/base/src/nsXMLContentSerializer.cpp
+++ b/content/base/src/nsXMLContentSerializer.cpp
@@ -71,7 +71,7 @@ nsXMLContentSerializer::~nsXMLContentSerializer()
 {
 }
 
-NS_IMPL_ISUPPORTS1(nsXMLContentSerializer, nsIContentSerializer)
+NS_IMPL_ISUPPORTS(nsXMLContentSerializer, nsIContentSerializer)
 
 NS_IMETHODIMP 
 nsXMLContentSerializer::Init(uint32_t aFlags, uint32_t aWrapColumn,
diff --git a/content/base/src/nsXMLHttpRequest.cpp b/content/base/src/nsXMLHttpRequest.cpp
index 5d5cac6a665539304139cc0248fcd78e3ca818e5..90d56bef1c3e167a4bf741404a1baa806ea6b8f7 100644
--- a/content/base/src/nsXMLHttpRequest.cpp
+++ b/content/base/src/nsXMLHttpRequest.cpp
@@ -138,7 +138,7 @@ using namespace mozilla::dom;
     return NS_OK;                                                               \
   }
 
-NS_IMPL_ISUPPORTS1(nsXHRParseEndListener, nsIDOMEventListener)
+NS_IMPL_ISUPPORTS(nsXHRParseEndListener, nsIDOMEventListener)
 
 class nsResumeTimeoutsEvent : public nsRunnable
 {
@@ -180,7 +180,7 @@ public:
   virtual ~XMLHttpRequestAuthPrompt();
 };
 
-NS_IMPL_ISUPPORTS1(XMLHttpRequestAuthPrompt, nsIAuthPrompt)
+NS_IMPL_ISUPPORTS(XMLHttpRequestAuthPrompt, nsIAuthPrompt)
 
 XMLHttpRequestAuthPrompt::XMLHttpRequestAuthPrompt()
 {
@@ -3781,7 +3781,7 @@ nsXMLHttpRequest::EnsureXPCOMifier()
   return newRef.forget();
 }
 
-NS_IMPL_ISUPPORTS1(nsXMLHttpRequest::nsHeaderVisitor, nsIHttpHeaderVisitor)
+NS_IMPL_ISUPPORTS(nsXMLHttpRequest::nsHeaderVisitor, nsIHttpHeaderVisitor)
 
 NS_IMETHODIMP nsXMLHttpRequest::
 nsHeaderVisitor::VisitHeader(const nsACString &header, const nsACString &value)
diff --git a/content/canvas/src/CanvasImageCache.cpp b/content/canvas/src/CanvasImageCache.cpp
index 7a221d78731437492dda91c2fc42a650a7f4a3c3..14c10be05c88718291726ff0527611fd1f9f2140 100644
--- a/content/canvas/src/CanvasImageCache.cpp
+++ b/content/canvas/src/CanvasImageCache.cpp
@@ -187,7 +187,7 @@ CanvasImageCache::Lookup(Element* aImage,
   return entry->mData->mSourceSurface;
 }
 
-NS_IMPL_ISUPPORTS1(CanvasImageCacheShutdownObserver, nsIObserver)
+NS_IMPL_ISUPPORTS(CanvasImageCacheShutdownObserver, nsIObserver)
 
 NS_IMETHODIMP
 CanvasImageCacheShutdownObserver::Observe(nsISupports *aSubject,
diff --git a/content/canvas/src/CanvasRenderingContext2D.cpp b/content/canvas/src/CanvasRenderingContext2D.cpp
index 248fcaaacdf67c6c4d1a6c41f3c279c6dbfa2da3..218fd1a036d13c09d25a59179cca5b90965bb524 100755
--- a/content/canvas/src/CanvasRenderingContext2D.cpp
+++ b/content/canvas/src/CanvasRenderingContext2D.cpp
@@ -158,7 +158,7 @@ public:
   }
 };
 
-NS_IMPL_ISUPPORTS1(Canvas2dPixelsReporter, nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(Canvas2dPixelsReporter, nsIMemoryReporter)
 
 class CanvasRadialGradient : public CanvasGradient
 {
diff --git a/content/canvas/src/ImageEncoder.cpp b/content/canvas/src/ImageEncoder.cpp
index b67e29455d5b274352ff8d100151ffae686fad65..3941d850a373fe1888e7693c1f29fbce9f71dee1 100644
--- a/content/canvas/src/ImageEncoder.cpp
+++ b/content/canvas/src/ImageEncoder.cpp
@@ -81,7 +81,7 @@ private:
   bool mFailed;
 };
 
-NS_IMPL_ISUPPORTS1(EncodingCompleteEvent, nsIRunnable);
+NS_IMPL_ISUPPORTS(EncodingCompleteEvent, nsIRunnable);
 
 class EncodingRunnable : public nsRunnable
 {
@@ -175,7 +175,7 @@ private:
   bool mUsingCustomOptions;
 };
 
-NS_IMPL_ISUPPORTS1(EncodingRunnable, nsIRunnable)
+NS_IMPL_ISUPPORTS(EncodingRunnable, nsIRunnable)
 
 /* static */
 nsresult
diff --git a/content/canvas/src/WebGLContextReporter.cpp b/content/canvas/src/WebGLContextReporter.cpp
index 9349fe98f3ea68657e7ebddf99b6dd3121c7ae9a..c0af50a0bd0ffa68812007acfa84f249cffc7d0c 100644
--- a/content/canvas/src/WebGLContextReporter.cpp
+++ b/content/canvas/src/WebGLContextReporter.cpp
@@ -8,7 +8,7 @@
 
 using namespace mozilla;
 
-NS_IMPL_ISUPPORTS1(WebGLMemoryPressureObserver, nsIObserver)
+NS_IMPL_ISUPPORTS(WebGLMemoryPressureObserver, nsIObserver)
 
 NS_IMETHODIMP
 WebGLMemoryTracker::CollectReports(nsIHandleReportCallback* aHandleReport,
@@ -85,7 +85,7 @@ WebGLMemoryTracker::CollectReports(nsIHandleReportCallback* aHandleReport,
     return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS1(WebGLMemoryTracker, nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(WebGLMemoryTracker, nsIMemoryReporter)
 
 StaticRefPtr<WebGLMemoryTracker> WebGLMemoryTracker::sUniqueInstance;
 
diff --git a/content/html/content/src/HTMLAnchorElement.cpp b/content/html/content/src/HTMLAnchorElement.cpp
index ee8a76cc5a597df75d76c2244a1677bac41b6e24..860fd5d8113e58c34fec1d03306f2d10031e738f 100644
--- a/content/html/content/src/HTMLAnchorElement.cpp
+++ b/content/html/content/src/HTMLAnchorElement.cpp
@@ -44,9 +44,9 @@ HTMLAnchorElement::~HTMLAnchorElement()
 }
 
 NS_INTERFACE_TABLE_HEAD_CYCLE_COLLECTION_INHERITED(HTMLAnchorElement)
-  NS_INTERFACE_TABLE_INHERITED2(HTMLAnchorElement,
-                                nsIDOMHTMLAnchorElement,
-                                Link)
+  NS_INTERFACE_TABLE_INHERITED(HTMLAnchorElement,
+                               nsIDOMHTMLAnchorElement,
+                               Link)
 NS_INTERFACE_TABLE_TAIL_INHERITING(nsGenericHTMLElement)
 
 NS_IMPL_ADDREF_INHERITED(HTMLAnchorElement, Element)
diff --git a/content/html/content/src/HTMLAreaElement.cpp b/content/html/content/src/HTMLAreaElement.cpp
index f78bad7fd3045acf16ce6e9feb47e802c8549b66..74418d8efc339812cfee125a1a06800a30f8aba4 100644
--- a/content/html/content/src/HTMLAreaElement.cpp
+++ b/content/html/content/src/HTMLAreaElement.cpp
@@ -28,9 +28,9 @@ HTMLAreaElement::~HTMLAreaElement()
 }
 
 NS_INTERFACE_TABLE_HEAD_CYCLE_COLLECTION_INHERITED(HTMLAreaElement)
-  NS_INTERFACE_TABLE_INHERITED2(HTMLAreaElement,
-                                nsIDOMHTMLAreaElement,
-                                Link)
+  NS_INTERFACE_TABLE_INHERITED(HTMLAreaElement,
+                               nsIDOMHTMLAreaElement,
+                               Link)
 NS_INTERFACE_TABLE_TAIL_INHERITING(nsGenericHTMLElement)
 
 NS_IMPL_ADDREF_INHERITED(HTMLAreaElement, Element)
diff --git a/content/html/content/src/HTMLAudioElement.cpp b/content/html/content/src/HTMLAudioElement.cpp
index 87d3597a6b025d46a26ffc0e8346758a107961b0..21039c9d663f02d337a8391789b28e962f90179f 100644
--- a/content/html/content/src/HTMLAudioElement.cpp
+++ b/content/html/content/src/HTMLAudioElement.cpp
@@ -29,8 +29,8 @@ namespace dom {
 
 extern bool IsAudioAPIEnabled();
 
-NS_IMPL_ISUPPORTS_INHERITED2(HTMLAudioElement, HTMLMediaElement,
-                             nsIDOMHTMLMediaElement, nsIDOMHTMLAudioElement)
+NS_IMPL_ISUPPORTS_INHERITED(HTMLAudioElement, HTMLMediaElement,
+                            nsIDOMHTMLMediaElement, nsIDOMHTMLAudioElement)
 
 NS_IMPL_ELEMENT_CLONE(HTMLAudioElement)
 
diff --git a/content/html/content/src/HTMLBRElement.cpp b/content/html/content/src/HTMLBRElement.cpp
index 3b5d70ecbf8036348d48266276284b96755c4630..d1545b2ada3075a37bf0ac8f95cb8f1697a87087 100644
--- a/content/html/content/src/HTMLBRElement.cpp
+++ b/content/html/content/src/HTMLBRElement.cpp
@@ -26,8 +26,8 @@ HTMLBRElement::~HTMLBRElement()
 {
 }
 
-NS_IMPL_ISUPPORTS_INHERITED1(HTMLBRElement, nsGenericHTMLElement,
-                             nsIDOMHTMLBRElement)
+NS_IMPL_ISUPPORTS_INHERITED(HTMLBRElement, nsGenericHTMLElement,
+                            nsIDOMHTMLBRElement)
 
 NS_IMPL_ELEMENT_CLONE(HTMLBRElement)
 
diff --git a/content/html/content/src/HTMLBodyElement.cpp b/content/html/content/src/HTMLBodyElement.cpp
index 1efc804d76cd69120a60e8c764cfe2fce7eaa733..9cf86956297e879682d2e4002bc2182d2bd0f9f7 100644
--- a/content/html/content/src/HTMLBodyElement.cpp
+++ b/content/html/content/src/HTMLBodyElement.cpp
@@ -36,7 +36,7 @@ BodyRule::~BodyRule()
 {
 }
 
-NS_IMPL_ISUPPORTS1(BodyRule, nsIStyleRule)
+NS_IMPL_ISUPPORTS(BodyRule, nsIStyleRule)
 
 /* virtual */ void
 BodyRule::MapRuleInfoInto(nsRuleData* aData)
@@ -194,8 +194,8 @@ HTMLBodyElement::WrapNode(JSContext *aCx)
   return HTMLBodyElementBinding::Wrap(aCx, this);
 }
 
-NS_IMPL_ISUPPORTS_INHERITED1(HTMLBodyElement, nsGenericHTMLElement,
-                             nsIDOMHTMLBodyElement)
+NS_IMPL_ISUPPORTS_INHERITED(HTMLBodyElement, nsGenericHTMLElement,
+                            nsIDOMHTMLBodyElement)
 
 NS_IMPL_ELEMENT_CLONE(HTMLBodyElement)
 
diff --git a/content/html/content/src/HTMLButtonElement.cpp b/content/html/content/src/HTMLButtonElement.cpp
index 9a726e8578b5d77a744eecd01326013ccbbc854b..493f2005095ca5d346f567231e826d0776817a31 100644
--- a/content/html/content/src/HTMLButtonElement.cpp
+++ b/content/html/content/src/HTMLButtonElement.cpp
@@ -86,9 +86,9 @@ NS_IMPL_RELEASE_INHERITED(HTMLButtonElement, Element)
 
 // QueryInterface implementation for HTMLButtonElement
 NS_INTERFACE_TABLE_HEAD_CYCLE_COLLECTION_INHERITED(HTMLButtonElement)
-  NS_INTERFACE_TABLE_INHERITED2(HTMLButtonElement,
-                                nsIDOMHTMLButtonElement,
-                                nsIConstraintValidation)
+  NS_INTERFACE_TABLE_INHERITED(HTMLButtonElement,
+                               nsIDOMHTMLButtonElement,
+                               nsIConstraintValidation)
 NS_INTERFACE_TABLE_TAIL_INHERITING(nsGenericHTMLFormElementWithState)
 
 // nsIConstraintValidation
diff --git a/content/html/content/src/HTMLCanvasElement.cpp b/content/html/content/src/HTMLCanvasElement.cpp
index 7dceccd1c457317e68d4c387936fc78c7ccc1a0a..c89416787e384eca03a7aed4bf28c25a86cabd7e 100644
--- a/content/html/content/src/HTMLCanvasElement.cpp
+++ b/content/html/content/src/HTMLCanvasElement.cpp
@@ -131,7 +131,7 @@ NS_IMPL_ADDREF_INHERITED(HTMLCanvasElement, Element)
 NS_IMPL_RELEASE_INHERITED(HTMLCanvasElement, Element)
 
 NS_INTERFACE_TABLE_HEAD_CYCLE_COLLECTION_INHERITED(HTMLCanvasElement)
-  NS_INTERFACE_TABLE_INHERITED1(HTMLCanvasElement, nsIDOMHTMLCanvasElement)
+  NS_INTERFACE_TABLE_INHERITED(HTMLCanvasElement, nsIDOMHTMLCanvasElement)
 NS_INTERFACE_TABLE_TAIL_INHERITING(nsGenericHTMLElement)
 
 NS_IMPL_ELEMENT_CLONE(HTMLCanvasElement)
diff --git a/content/html/content/src/HTMLContentElement.cpp b/content/html/content/src/HTMLContentElement.cpp
index eb5130990e1e190a9a0aab14450f6bbb67645b76..4d67b38c4f7e54cb6b2e158daa2d651e9b20c348 100644
--- a/content/html/content/src/HTMLContentElement.cpp
+++ b/content/html/content/src/HTMLContentElement.cpp
@@ -245,7 +245,7 @@ HTMLContentElement::GetDistributedNodes()
 NS_IMPL_CYCLE_COLLECTION(DistributedContentList, mParent, mDistributedNodes)
 
 NS_INTERFACE_TABLE_HEAD(DistributedContentList)
-  NS_INTERFACE_TABLE1(DistributedContentList, nsINodeList)
+  NS_INTERFACE_TABLE(DistributedContentList, nsINodeList)
   NS_INTERFACE_TABLE_TO_MAP_SEGUE_CYCLE_COLLECTION(DistributedContentList)
 NS_INTERFACE_MAP_END
 
diff --git a/content/html/content/src/HTMLDivElement.cpp b/content/html/content/src/HTMLDivElement.cpp
index d3cf9ee6f379d50b98bf19b60bd40ed27374a3f0..699b16ed5d4bcb41651de70e03eb5adb48fb645e 100644
--- a/content/html/content/src/HTMLDivElement.cpp
+++ b/content/html/content/src/HTMLDivElement.cpp
@@ -18,8 +18,8 @@ HTMLDivElement::~HTMLDivElement()
 {
 }
 
-NS_IMPL_ISUPPORTS_INHERITED1(HTMLDivElement, nsGenericHTMLElement,
-                             nsIDOMHTMLDivElement)
+NS_IMPL_ISUPPORTS_INHERITED(HTMLDivElement, nsGenericHTMLElement,
+                            nsIDOMHTMLDivElement)
 
 NS_IMPL_ELEMENT_CLONE(HTMLDivElement)
 
diff --git a/content/html/content/src/HTMLFieldSetElement.cpp b/content/html/content/src/HTMLFieldSetElement.cpp
index 095c4ea6c41eea23139c1ea8658f2b31a5003d04..a9ee5a0e23e9ad094915c9467477b658682cfb65 100644
--- a/content/html/content/src/HTMLFieldSetElement.cpp
+++ b/content/html/content/src/HTMLFieldSetElement.cpp
@@ -46,9 +46,9 @@ NS_IMPL_RELEASE_INHERITED(HTMLFieldSetElement, Element)
 
 // QueryInterface implementation for HTMLFieldSetElement
 NS_INTERFACE_TABLE_HEAD_CYCLE_COLLECTION_INHERITED(HTMLFieldSetElement)
-  NS_INTERFACE_TABLE_INHERITED2(HTMLFieldSetElement,
-                                nsIDOMHTMLFieldSetElement,
-                                nsIConstraintValidation)
+  NS_INTERFACE_TABLE_INHERITED(HTMLFieldSetElement,
+                               nsIDOMHTMLFieldSetElement,
+                               nsIConstraintValidation)
 NS_INTERFACE_TABLE_TAIL_INHERITING(nsGenericHTMLFormElement)
 
 NS_IMPL_ELEMENT_CLONE(HTMLFieldSetElement)
diff --git a/content/html/content/src/HTMLFormControlsCollection.cpp b/content/html/content/src/HTMLFormControlsCollection.cpp
index 1c29baf14a0fc1c933f3203feec0707378f09033..8559e280955e100a4368c4551eac30d5775925cd 100644
--- a/content/html/content/src/HTMLFormControlsCollection.cpp
+++ b/content/html/content/src/HTMLFormControlsCollection.cpp
@@ -136,9 +136,9 @@ NS_IMPL_CYCLE_COLLECTION_TRACE_END
 // XPConnect interface list for HTMLFormControlsCollection
 NS_INTERFACE_TABLE_HEAD(HTMLFormControlsCollection)
   NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
-  NS_INTERFACE_TABLE2(HTMLFormControlsCollection,
-                      nsIHTMLCollection,
-                      nsIDOMHTMLCollection)
+  NS_INTERFACE_TABLE(HTMLFormControlsCollection,
+                     nsIHTMLCollection,
+                     nsIDOMHTMLCollection)
   NS_INTERFACE_TABLE_TO_MAP_SEGUE_CYCLE_COLLECTION(HTMLFormControlsCollection)
 NS_INTERFACE_MAP_END
 
diff --git a/content/html/content/src/HTMLFormElement.cpp b/content/html/content/src/HTMLFormElement.cpp
index 47c369bd14a3a7f49e5e5e2af3e53ea77b9ea611..40d2fa2eeb7082a530fb0254d7de60f6fcb6c869 100644
--- a/content/html/content/src/HTMLFormElement.cpp
+++ b/content/html/content/src/HTMLFormElement.cpp
@@ -177,11 +177,11 @@ NS_IMPL_RELEASE_INHERITED(HTMLFormElement, Element)
 
 // QueryInterface implementation for HTMLFormElement
 NS_INTERFACE_TABLE_HEAD_CYCLE_COLLECTION_INHERITED(HTMLFormElement)
-  NS_INTERFACE_TABLE_INHERITED4(HTMLFormElement,
-                                nsIDOMHTMLFormElement,
-                                nsIForm,
-                                nsIWebProgressListener,
-                                nsIRadioGroupContainer)
+  NS_INTERFACE_TABLE_INHERITED(HTMLFormElement,
+                               nsIDOMHTMLFormElement,
+                               nsIForm,
+                               nsIWebProgressListener,
+                               nsIRadioGroupContainer)
 NS_INTERFACE_TABLE_TAIL_INHERITING(nsGenericHTMLElement)
 
 
diff --git a/content/html/content/src/HTMLFrameElement.cpp b/content/html/content/src/HTMLFrameElement.cpp
index cd663a17a08b05501f68dac804147c04e0eede3c..5c2db640e22978a9d8ad9952e6ffb2c86e4db6a5 100644
--- a/content/html/content/src/HTMLFrameElement.cpp
+++ b/content/html/content/src/HTMLFrameElement.cpp
@@ -24,8 +24,8 @@ HTMLFrameElement::~HTMLFrameElement()
 }
 
 
-NS_IMPL_ISUPPORTS_INHERITED1(HTMLFrameElement, nsGenericHTMLFrameElement,
-                             nsIDOMHTMLFrameElement)
+NS_IMPL_ISUPPORTS_INHERITED(HTMLFrameElement, nsGenericHTMLFrameElement,
+                            nsIDOMHTMLFrameElement)
 
 NS_IMPL_ELEMENT_CLONE(HTMLFrameElement)
 
diff --git a/content/html/content/src/HTMLFrameSetElement.cpp b/content/html/content/src/HTMLFrameSetElement.cpp
index d0ba6cb61c548c6fbd271a8beda3ee810f0a650f..a292f061f555391d27d3dd5881da548ae6184b96 100644
--- a/content/html/content/src/HTMLFrameSetElement.cpp
+++ b/content/html/content/src/HTMLFrameSetElement.cpp
@@ -23,8 +23,8 @@ HTMLFrameSetElement::WrapNode(JSContext *aCx)
   return HTMLFrameSetElementBinding::Wrap(aCx, this);
 }
 
-NS_IMPL_ISUPPORTS_INHERITED1(HTMLFrameSetElement, nsGenericHTMLElement,
-                             nsIDOMHTMLFrameSetElement)
+NS_IMPL_ISUPPORTS_INHERITED(HTMLFrameSetElement, nsGenericHTMLElement,
+                            nsIDOMHTMLFrameSetElement)
 
 NS_IMPL_ELEMENT_CLONE(HTMLFrameSetElement)
 
diff --git a/content/html/content/src/HTMLHRElement.cpp b/content/html/content/src/HTMLHRElement.cpp
index 518fbe7b4ac01a27999adb79a1d02451dd712e2d..6b698603910033e069e6b90725af061cb7757cdd 100644
--- a/content/html/content/src/HTMLHRElement.cpp
+++ b/content/html/content/src/HTMLHRElement.cpp
@@ -20,8 +20,8 @@ HTMLHRElement::~HTMLHRElement()
 {
 }
 
-NS_IMPL_ISUPPORTS_INHERITED1(HTMLHRElement, nsGenericHTMLElement,
-                             nsIDOMHTMLHRElement)
+NS_IMPL_ISUPPORTS_INHERITED(HTMLHRElement, nsGenericHTMLElement,
+                            nsIDOMHTMLHRElement)
 
 NS_IMPL_ELEMENT_CLONE(HTMLHRElement)
 
diff --git a/content/html/content/src/HTMLHeadingElement.cpp b/content/html/content/src/HTMLHeadingElement.cpp
index adf89ca093632efa2f2105852b8333ad92955791..1ad71eef4d19dfc62cd4d2d4c633738373497377 100644
--- a/content/html/content/src/HTMLHeadingElement.cpp
+++ b/content/html/content/src/HTMLHeadingElement.cpp
@@ -21,8 +21,8 @@ HTMLHeadingElement::~HTMLHeadingElement()
 {
 }
 
-NS_IMPL_ISUPPORTS_INHERITED1(HTMLHeadingElement, nsGenericHTMLElement,
-                             nsIDOMHTMLHeadingElement)
+NS_IMPL_ISUPPORTS_INHERITED(HTMLHeadingElement, nsGenericHTMLElement,
+                            nsIDOMHTMLHeadingElement)
 
 NS_IMPL_ELEMENT_CLONE(HTMLHeadingElement)
 
diff --git a/content/html/content/src/HTMLIFrameElement.cpp b/content/html/content/src/HTMLIFrameElement.cpp
index 353eccea68050bfb4e581c9f8432b68db398ecfa..cd694cf0121aa69c56a03a9ca7b2939c1b77938b 100644
--- a/content/html/content/src/HTMLIFrameElement.cpp
+++ b/content/html/content/src/HTMLIFrameElement.cpp
@@ -27,8 +27,8 @@ HTMLIFrameElement::~HTMLIFrameElement()
 {
 }
 
-NS_IMPL_ISUPPORTS_INHERITED1(HTMLIFrameElement, nsGenericHTMLFrameElement,
-                             nsIDOMHTMLIFrameElement)
+NS_IMPL_ISUPPORTS_INHERITED(HTMLIFrameElement, nsGenericHTMLFrameElement,
+                            nsIDOMHTMLIFrameElement)
 
 NS_IMPL_ELEMENT_CLONE(HTMLIFrameElement)
 
diff --git a/content/html/content/src/HTMLImageElement.cpp b/content/html/content/src/HTMLImageElement.cpp
index 2b3dbb713f70078ca55c80bd89cc453eb00660f0..0ea948e76859c0e5aa759900e3e5af4629a5d1eb 100644
--- a/content/html/content/src/HTMLImageElement.cpp
+++ b/content/html/content/src/HTMLImageElement.cpp
@@ -66,11 +66,11 @@ NS_IMPL_RELEASE_INHERITED(HTMLImageElement, Element)
 
 // QueryInterface implementation for HTMLImageElement
 NS_INTERFACE_TABLE_HEAD_CYCLE_COLLECTION_INHERITED(HTMLImageElement)
-  NS_INTERFACE_TABLE_INHERITED4(HTMLImageElement,
-                                nsIDOMHTMLImageElement,
-                                nsIImageLoadingContent,
-                                imgIOnloadBlocker,
-                                imgINotificationObserver)
+  NS_INTERFACE_TABLE_INHERITED(HTMLImageElement,
+                               nsIDOMHTMLImageElement,
+                               nsIImageLoadingContent,
+                               imgIOnloadBlocker,
+                               imgINotificationObserver)
 NS_INTERFACE_TABLE_TAIL_INHERITING(nsGenericHTMLElement)
 
 
diff --git a/content/html/content/src/HTMLInputElement.cpp b/content/html/content/src/HTMLInputElement.cpp
index f640ba522d81a617ab6485560f2c86a3a75c0282..93efc00f26493d7f2b0eaedb35965f62341d2606 100644
--- a/content/html/content/src/HTMLInputElement.cpp
+++ b/content/html/content/src/HTMLInputElement.cpp
@@ -274,7 +274,7 @@ class HTMLInputElementState MOZ_FINAL : public nsISupports
 
 NS_DEFINE_STATIC_IID_ACCESSOR(HTMLInputElementState, NS_INPUT_ELEMENT_STATE_IID)
 
-NS_IMPL_ISUPPORTS1(HTMLInputElementState, HTMLInputElementState)
+NS_IMPL_ISUPPORTS(HTMLInputElementState, HTMLInputElementState)
 
 HTMLInputElement::nsFilePickerShownCallback::nsFilePickerShownCallback(
   HTMLInputElement* aInput, nsIFilePicker* aFilePicker)
@@ -283,7 +283,7 @@ HTMLInputElement::nsFilePickerShownCallback::nsFilePickerShownCallback(
 {
 }
 
-NS_IMPL_ISUPPORTS1(UploadLastDir::ContentPrefCallback, nsIContentPrefCallback2)
+NS_IMPL_ISUPPORTS(UploadLastDir::ContentPrefCallback, nsIContentPrefCallback2)
 
 NS_IMETHODIMP
 UploadLastDir::ContentPrefCallback::HandleCompletion(uint16_t aReason)
@@ -478,7 +478,7 @@ private:
   nsTArray<nsCOMPtr<nsISimpleEnumerator> > mDirEnumeratorStack;
 };
 
-NS_IMPL_ISUPPORTS1(DirPickerRecursiveFileEnumerator, nsISimpleEnumerator)
+NS_IMPL_ISUPPORTS(DirPickerRecursiveFileEnumerator, nsISimpleEnumerator)
 
 /**
  * This may return nullptr if aDomFile's implementation of
@@ -714,8 +714,8 @@ HTMLInputElement::nsFilePickerShownCallback::Done(int16_t aResult)
                                               false);
 }
 
-NS_IMPL_ISUPPORTS1(HTMLInputElement::nsFilePickerShownCallback,
-                   nsIFilePickerShownCallback)
+NS_IMPL_ISUPPORTS(HTMLInputElement::nsFilePickerShownCallback,
+                  nsIFilePickerShownCallback)
 
 class nsColorPickerShownCallback MOZ_FINAL
   : public nsIColorPickerShownCallback
@@ -814,7 +814,7 @@ nsColorPickerShownCallback::Done(const nsAString& aColor)
   return rv;
 }
 
-NS_IMPL_ISUPPORTS1(nsColorPickerShownCallback, nsIColorPickerShownCallback)
+NS_IMPL_ISUPPORTS(nsColorPickerShownCallback, nsIColorPickerShownCallback)
 
 bool
 HTMLInputElement::IsPopupBlocked() const
@@ -989,7 +989,7 @@ HTMLInputElement::InitFilePicker(FilePickerType aType)
 
 #define CPS_PREF_NAME NS_LITERAL_STRING("browser.upload.lastDir")
 
-NS_IMPL_ISUPPORTS2(UploadLastDir, nsIObserver, nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(UploadLastDir, nsIObserver, nsISupportsWeakReference)
 
 void
 HTMLInputElement::InitUploadLastDir() {
@@ -1223,16 +1223,16 @@ NS_IMPL_RELEASE_INHERITED(HTMLInputElement, Element)
 
 // QueryInterface implementation for HTMLInputElement
 NS_INTERFACE_TABLE_HEAD_CYCLE_COLLECTION_INHERITED(HTMLInputElement)
-  NS_INTERFACE_TABLE_INHERITED9(HTMLInputElement,
-                                nsIDOMHTMLInputElement,
-                                nsITextControlElement,
-                                nsIPhonetic,
-                                imgINotificationObserver,
-                                nsIImageLoadingContent,
-                                imgIOnloadBlocker,
-                                nsIDOMNSEditableElement,
-                                nsITimerCallback,
-                                nsIConstraintValidation)
+  NS_INTERFACE_TABLE_INHERITED(HTMLInputElement,
+                               nsIDOMHTMLInputElement,
+                               nsITextControlElement,
+                               nsIPhonetic,
+                               imgINotificationObserver,
+                               nsIImageLoadingContent,
+                               imgIOnloadBlocker,
+                               nsIDOMNSEditableElement,
+                               nsITimerCallback,
+                               nsIConstraintValidation)
 NS_INTERFACE_TABLE_TAIL_INHERITING(nsGenericHTMLFormElementWithState)
 
 // nsIConstraintValidation
diff --git a/content/html/content/src/HTMLLIElement.cpp b/content/html/content/src/HTMLLIElement.cpp
index 111e26a16727f4032064b8c11b6c94c1690c868a..db05f025fc077fa2198e7121c75894b156c77620 100644
--- a/content/html/content/src/HTMLLIElement.cpp
+++ b/content/html/content/src/HTMLLIElement.cpp
@@ -21,8 +21,8 @@ HTMLLIElement::~HTMLLIElement()
 {
 }
 
-NS_IMPL_ISUPPORTS_INHERITED1(HTMLLIElement, nsGenericHTMLElement,
-                             nsIDOMHTMLLIElement)
+NS_IMPL_ISUPPORTS_INHERITED(HTMLLIElement, nsGenericHTMLElement,
+                            nsIDOMHTMLLIElement)
 
 NS_IMPL_ELEMENT_CLONE(HTMLLIElement)
 
diff --git a/content/html/content/src/HTMLLabelElement.cpp b/content/html/content/src/HTMLLabelElement.cpp
index ef1634dec033e207c6b6a0701d5c5d9ab8c42d23..77d765b31a58693faec354c08a7d8fc9c80b5f41 100644
--- a/content/html/content/src/HTMLLabelElement.cpp
+++ b/content/html/content/src/HTMLLabelElement.cpp
@@ -32,8 +32,8 @@ HTMLLabelElement::WrapNode(JSContext *aCx)
 
 // nsISupports
 
-NS_IMPL_ISUPPORTS_INHERITED1(HTMLLabelElement, nsGenericHTMLFormElement,
-                             nsIDOMHTMLLabelElement)
+NS_IMPL_ISUPPORTS_INHERITED(HTMLLabelElement, nsGenericHTMLFormElement,
+                            nsIDOMHTMLLabelElement)
 
 // nsIDOMHTMLLabelElement
 
diff --git a/content/html/content/src/HTMLLinkElement.cpp b/content/html/content/src/HTMLLinkElement.cpp
index 030439f3be3e793a3fc52c29abbe20940e403da7..64648909097d06ea8af40b660fb3ef8665a4000f 100644
--- a/content/html/content/src/HTMLLinkElement.cpp
+++ b/content/html/content/src/HTMLLinkElement.cpp
@@ -65,10 +65,10 @@ NS_IMPL_RELEASE_INHERITED(HTMLLinkElement, Element)
 
 // QueryInterface implementation for HTMLLinkElement
 NS_INTERFACE_TABLE_HEAD_CYCLE_COLLECTION_INHERITED(HTMLLinkElement)
-  NS_INTERFACE_TABLE_INHERITED3(HTMLLinkElement,
-                                nsIDOMHTMLLinkElement,
-                                nsIStyleSheetLinkingElement,
-                                Link)
+  NS_INTERFACE_TABLE_INHERITED(HTMLLinkElement,
+                               nsIDOMHTMLLinkElement,
+                               nsIStyleSheetLinkingElement,
+                               Link)
 NS_INTERFACE_TABLE_TAIL_INHERITING(nsGenericHTMLElement)
 
 
diff --git a/content/html/content/src/HTMLMapElement.cpp b/content/html/content/src/HTMLMapElement.cpp
index 7568f74ebcdfc7098c9a5587b2e962979b2095f0..60fc75e08c680988fdb50514e0b286e436d906b3 100644
--- a/content/html/content/src/HTMLMapElement.cpp
+++ b/content/html/content/src/HTMLMapElement.cpp
@@ -33,7 +33,7 @@ NS_IMPL_RELEASE_INHERITED(HTMLMapElement, Element)
 
 // QueryInterface implementation for HTMLMapElement
 NS_INTERFACE_TABLE_HEAD_CYCLE_COLLECTION_INHERITED(HTMLMapElement)
-  NS_INTERFACE_TABLE_INHERITED1(HTMLMapElement, nsIDOMHTMLMapElement)
+  NS_INTERFACE_TABLE_INHERITED(HTMLMapElement, nsIDOMHTMLMapElement)
 NS_INTERFACE_TABLE_TAIL_INHERITING(nsGenericHTMLElement)
 
 NS_IMPL_ELEMENT_CLONE(HTMLMapElement)
diff --git a/content/html/content/src/HTMLMediaElement.cpp b/content/html/content/src/HTMLMediaElement.cpp
index 8a29c1611b1e2c58ef9b857a30b797b8c4a9e612..f89f09ab1f2f8868b2bd29242dde209a4a5ee30e 100644
--- a/content/html/content/src/HTMLMediaElement.cpp
+++ b/content/html/content/src/HTMLMediaElement.cpp
@@ -262,9 +262,9 @@ private:
   uint32_t mLoadID;
 };
 
-NS_IMPL_ISUPPORTS5(HTMLMediaElement::MediaLoadListener, nsIRequestObserver,
-                   nsIStreamListener, nsIChannelEventSink,
-                   nsIInterfaceRequestor, nsIObserver)
+NS_IMPL_ISUPPORTS(HTMLMediaElement::MediaLoadListener, nsIRequestObserver,
+                  nsIStreamListener, nsIChannelEventSink,
+                  nsIInterfaceRequestor, nsIObserver)
 
 NS_IMETHODIMP
 HTMLMediaElement::MediaLoadListener::Observe(nsISupports* aSubject,
diff --git a/content/html/content/src/HTMLMenuElement.cpp b/content/html/content/src/HTMLMenuElement.cpp
index 07d722e7b34fa0ce32181bd0a1ad50deae6abca8..f5f7acdf0c36e17e30289bc94823e8bc735f0985 100644
--- a/content/html/content/src/HTMLMenuElement.cpp
+++ b/content/html/content/src/HTMLMenuElement.cpp
@@ -54,8 +54,8 @@ HTMLMenuElement::~HTMLMenuElement()
 {
 }
 
-NS_IMPL_ISUPPORTS_INHERITED2(HTMLMenuElement, nsGenericHTMLElement,
-                             nsIDOMHTMLMenuElement, nsIHTMLMenu)
+NS_IMPL_ISUPPORTS_INHERITED(HTMLMenuElement, nsGenericHTMLElement,
+                            nsIDOMHTMLMenuElement, nsIHTMLMenu)
 
 NS_IMPL_ELEMENT_CLONE(HTMLMenuElement)
 
diff --git a/content/html/content/src/HTMLMenuItemElement.cpp b/content/html/content/src/HTMLMenuItemElement.cpp
index 4c8a6e5b86b3da32d8c1a3004f787c6282de59ab..8b992b20988db43b0ad68ed67f8da9f1b6b9865d 100644
--- a/content/html/content/src/HTMLMenuItemElement.cpp
+++ b/content/html/content/src/HTMLMenuItemElement.cpp
@@ -172,8 +172,8 @@ HTMLMenuItemElement::~HTMLMenuItemElement()
 }
 
 
-NS_IMPL_ISUPPORTS_INHERITED1(HTMLMenuItemElement, nsGenericHTMLElement,
-                             nsIDOMHTMLMenuItemElement)
+NS_IMPL_ISUPPORTS_INHERITED(HTMLMenuItemElement, nsGenericHTMLElement,
+                            nsIDOMHTMLMenuItemElement)
 
 //NS_IMPL_ELEMENT_CLONE(HTMLMenuItemElement)
 nsresult
diff --git a/content/html/content/src/HTMLMetaElement.cpp b/content/html/content/src/HTMLMetaElement.cpp
index 1fb3302828fd4c40fb9d5c2b0e8fb69b6ceab3e9..343da5e1d0bef775ef8044033ea1d14ca5cdd9db 100644
--- a/content/html/content/src/HTMLMetaElement.cpp
+++ b/content/html/content/src/HTMLMetaElement.cpp
@@ -24,8 +24,8 @@ HTMLMetaElement::~HTMLMetaElement()
 }
 
 
-NS_IMPL_ISUPPORTS_INHERITED1(HTMLMetaElement, nsGenericHTMLElement,
-                             nsIDOMHTMLMetaElement)
+NS_IMPL_ISUPPORTS_INHERITED(HTMLMetaElement, nsGenericHTMLElement,
+                            nsIDOMHTMLMetaElement)
 
 NS_IMPL_ELEMENT_CLONE(HTMLMetaElement)
 
diff --git a/content/html/content/src/HTMLObjectElement.cpp b/content/html/content/src/HTMLObjectElement.cpp
index 1b47e5105d61e82a750226e870343b25616bbc14..234833ed19234b20dae95045292a280877e672bd 100644
--- a/content/html/content/src/HTMLObjectElement.cpp
+++ b/content/html/content/src/HTMLObjectElement.cpp
@@ -80,17 +80,17 @@ NS_IMPL_ADDREF_INHERITED(HTMLObjectElement, Element)
 NS_IMPL_RELEASE_INHERITED(HTMLObjectElement, Element)
 
 NS_INTERFACE_TABLE_HEAD_CYCLE_COLLECTION_INHERITED(HTMLObjectElement)
-  NS_INTERFACE_TABLE_INHERITED10(HTMLObjectElement,
-                                 nsIDOMHTMLObjectElement,
-                                 imgINotificationObserver,
-                                 nsIRequestObserver,
-                                 nsIStreamListener,
-                                 nsIFrameLoaderOwner,
-                                 nsIObjectLoadingContent,
-                                 nsIImageLoadingContent,
-                                 imgIOnloadBlocker,
-                                 nsIChannelEventSink,
-                                 nsIConstraintValidation)
+  NS_INTERFACE_TABLE_INHERITED(HTMLObjectElement,
+                               nsIDOMHTMLObjectElement,
+                               imgINotificationObserver,
+                               nsIRequestObserver,
+                               nsIStreamListener,
+                               nsIFrameLoaderOwner,
+                               nsIObjectLoadingContent,
+                               nsIImageLoadingContent,
+                               imgIOnloadBlocker,
+                               nsIChannelEventSink,
+                               nsIConstraintValidation)
 NS_INTERFACE_TABLE_TAIL_INHERITING(nsGenericHTMLFormElement)
 
 NS_IMPL_ELEMENT_CLONE(HTMLObjectElement)
diff --git a/content/html/content/src/HTMLOptGroupElement.cpp b/content/html/content/src/HTMLOptGroupElement.cpp
index c1e5947e518252152161794b244892720d2aa7d0..369b936afa82aa6c0b1374e2780f5859c512701d 100644
--- a/content/html/content/src/HTMLOptGroupElement.cpp
+++ b/content/html/content/src/HTMLOptGroupElement.cpp
@@ -36,8 +36,8 @@ HTMLOptGroupElement::~HTMLOptGroupElement()
 }
 
 
-NS_IMPL_ISUPPORTS_INHERITED1(HTMLOptGroupElement, nsGenericHTMLElement,
-                             nsIDOMHTMLOptGroupElement)
+NS_IMPL_ISUPPORTS_INHERITED(HTMLOptGroupElement, nsGenericHTMLElement,
+                            nsIDOMHTMLOptGroupElement)
 
 NS_IMPL_ELEMENT_CLONE(HTMLOptGroupElement)
 
diff --git a/content/html/content/src/HTMLOptionElement.cpp b/content/html/content/src/HTMLOptionElement.cpp
index 6f8d0341e1f03e45954aeecdf5676b5213d31bb9..e8c820ef6099e0661af6275c71a9915c605fd268 100644
--- a/content/html/content/src/HTMLOptionElement.cpp
+++ b/content/html/content/src/HTMLOptionElement.cpp
@@ -51,8 +51,8 @@ HTMLOptionElement::~HTMLOptionElement()
 {
 }
 
-NS_IMPL_ISUPPORTS_INHERITED1(HTMLOptionElement, nsGenericHTMLElement,
-                             nsIDOMHTMLOptionElement)
+NS_IMPL_ISUPPORTS_INHERITED(HTMLOptionElement, nsGenericHTMLElement,
+                            nsIDOMHTMLOptionElement)
 
 NS_IMPL_ELEMENT_CLONE(HTMLOptionElement)
 
diff --git a/content/html/content/src/HTMLOptionsCollection.cpp b/content/html/content/src/HTMLOptionsCollection.cpp
index 511290bf7f85596f799037c32c37c8f539da4153..66d1468aa304ba7837b461c7d8d6716bfcdd33d7 100644
--- a/content/html/content/src/HTMLOptionsCollection.cpp
+++ b/content/html/content/src/HTMLOptionsCollection.cpp
@@ -96,10 +96,10 @@ NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE_1(HTMLOptionsCollection, mElements)
 // QueryInterface implementation for HTMLOptionsCollection
 NS_INTERFACE_TABLE_HEAD(HTMLOptionsCollection)
   NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
-  NS_INTERFACE_TABLE3(HTMLOptionsCollection,
-                      nsIHTMLCollection,
-                      nsIDOMHTMLOptionsCollection,
-                      nsIDOMHTMLCollection)
+  NS_INTERFACE_TABLE(HTMLOptionsCollection,
+                     nsIHTMLCollection,
+                     nsIDOMHTMLOptionsCollection,
+                     nsIDOMHTMLCollection)
   NS_INTERFACE_TABLE_TO_MAP_SEGUE_CYCLE_COLLECTION(HTMLOptionsCollection)
 NS_INTERFACE_MAP_END
 
diff --git a/content/html/content/src/HTMLOutputElement.cpp b/content/html/content/src/HTMLOutputElement.cpp
index 0e9324736ed6ec087ad5fbea1915febac055c225..037236dab2eb72ce4ade031ee9b052d7f0f1d311 100644
--- a/content/html/content/src/HTMLOutputElement.cpp
+++ b/content/html/content/src/HTMLOutputElement.cpp
@@ -49,9 +49,9 @@ NS_IMPL_ADDREF_INHERITED(HTMLOutputElement, Element)
 NS_IMPL_RELEASE_INHERITED(HTMLOutputElement, Element)
 
 NS_INTERFACE_TABLE_HEAD_CYCLE_COLLECTION_INHERITED(HTMLOutputElement)
-  NS_INTERFACE_TABLE_INHERITED2(HTMLOutputElement,
-                                nsIMutationObserver,
-                                nsIConstraintValidation)
+  NS_INTERFACE_TABLE_INHERITED(HTMLOutputElement,
+                               nsIMutationObserver,
+                               nsIConstraintValidation)
 NS_INTERFACE_TABLE_TAIL_INHERITING(nsGenericHTMLFormElement)
 
 NS_IMPL_ELEMENT_CLONE(HTMLOutputElement)
diff --git a/content/html/content/src/HTMLParagraphElement.cpp b/content/html/content/src/HTMLParagraphElement.cpp
index bcd4b85e6a10da1f7d5ed6fa823daadc85b1f837..147041828d5a7b83bf9ffd5d691ea641d5f4b53e 100644
--- a/content/html/content/src/HTMLParagraphElement.cpp
+++ b/content/html/content/src/HTMLParagraphElement.cpp
@@ -20,8 +20,8 @@ HTMLParagraphElement::~HTMLParagraphElement()
 {
 }
 
-NS_IMPL_ISUPPORTS_INHERITED1(HTMLParagraphElement, nsGenericHTMLElement,
-                             nsIDOMHTMLParagraphElement)
+NS_IMPL_ISUPPORTS_INHERITED(HTMLParagraphElement, nsGenericHTMLElement,
+                            nsIDOMHTMLParagraphElement)
 
 NS_IMPL_ELEMENT_CLONE(HTMLParagraphElement)
 
diff --git a/content/html/content/src/HTMLPreElement.cpp b/content/html/content/src/HTMLPreElement.cpp
index 29fc0da2df663ed07ca2751ff34f1b6d87d8f6c7..ed291bc1da3dfbadec365bca47de841a4dd2d114 100644
--- a/content/html/content/src/HTMLPreElement.cpp
+++ b/content/html/content/src/HTMLPreElement.cpp
@@ -21,8 +21,8 @@ HTMLPreElement::~HTMLPreElement()
 {
 }
 
-NS_IMPL_ISUPPORTS_INHERITED1(HTMLPreElement, nsGenericHTMLElement,
-                             nsIDOMHTMLPreElement)
+NS_IMPL_ISUPPORTS_INHERITED(HTMLPreElement, nsGenericHTMLElement,
+                            nsIDOMHTMLPreElement)
 
 NS_IMPL_ELEMENT_CLONE(HTMLPreElement)
 
diff --git a/content/html/content/src/HTMLPropertiesCollection.cpp b/content/html/content/src/HTMLPropertiesCollection.cpp
index b7700fd7d375954a1281eb750449fc1c13a8264a..95833483aab3eaec0d591980884eabc850165c03 100644
--- a/content/html/content/src/HTMLPropertiesCollection.cpp
+++ b/content/html/content/src/HTMLPropertiesCollection.cpp
@@ -62,10 +62,10 @@ HTMLPropertiesCollection::~HTMLPropertiesCollection()
 
 NS_INTERFACE_TABLE_HEAD(HTMLPropertiesCollection)
     NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
-    NS_INTERFACE_TABLE3(HTMLPropertiesCollection,
-                        nsIDOMHTMLCollection,
-                        nsIHTMLCollection,
-                        nsIMutationObserver)
+    NS_INTERFACE_TABLE(HTMLPropertiesCollection,
+                       nsIDOMHTMLCollection,
+                       nsIHTMLCollection,
+                       nsIMutationObserver)
     NS_INTERFACE_TABLE_TO_MAP_SEGUE_CYCLE_COLLECTION(HTMLPropertiesCollection)
 NS_INTERFACE_MAP_END
 
@@ -409,10 +409,10 @@ NS_IMPL_CYCLE_COLLECTING_RELEASE(PropertyNodeList)
 
 NS_INTERFACE_TABLE_HEAD(PropertyNodeList)
     NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
-    NS_INTERFACE_TABLE3(PropertyNodeList,
-                        nsIDOMNodeList,
-                        nsINodeList,
-                        nsIMutationObserver)
+    NS_INTERFACE_TABLE(PropertyNodeList,
+                       nsIDOMNodeList,
+                       nsINodeList,
+                       nsIMutationObserver)
     NS_INTERFACE_TABLE_TO_MAP_SEGUE_CYCLE_COLLECTION(PropertyNodeList)
 NS_INTERFACE_MAP_END
 
diff --git a/content/html/content/src/HTMLScriptElement.cpp b/content/html/content/src/HTMLScriptElement.cpp
index a1e18306e9046a093cc231bb5f5a3567d189bebf..824328f02b72b2b6cd721fcf1a5b0b5d4d63c8b1 100644
--- a/content/html/content/src/HTMLScriptElement.cpp
+++ b/content/html/content/src/HTMLScriptElement.cpp
@@ -46,11 +46,11 @@ HTMLScriptElement::~HTMLScriptElement()
 {
 }
 
-NS_IMPL_ISUPPORTS_INHERITED4(HTMLScriptElement, nsGenericHTMLElement,
-                             nsIDOMHTMLScriptElement,
-                             nsIScriptLoaderObserver,
-                             nsIScriptElement,
-                             nsIMutationObserver)
+NS_IMPL_ISUPPORTS_INHERITED(HTMLScriptElement, nsGenericHTMLElement,
+                            nsIDOMHTMLScriptElement,
+                            nsIScriptLoaderObserver,
+                            nsIScriptElement,
+                            nsIMutationObserver)
 
 nsresult
 HTMLScriptElement::BindToTree(nsIDocument* aDocument, nsIContent* aParent,
diff --git a/content/html/content/src/HTMLSelectElement.cpp b/content/html/content/src/HTMLSelectElement.cpp
index 37149e53bfa94e3880af5e8c7a717f46ce8bd4e5..314d64c47711ac347b8eb40bf226c168d7b1de88 100644
--- a/content/html/content/src/HTMLSelectElement.cpp
+++ b/content/html/content/src/HTMLSelectElement.cpp
@@ -40,7 +40,7 @@ NS_IMPL_NS_NEW_HTML_ELEMENT_CHECK_PARSER(Select)
 namespace mozilla {
 namespace dom {
 
-NS_IMPL_ISUPPORTS1(SelectState, SelectState)
+NS_IMPL_ISUPPORTS(SelectState, SelectState)
 
 //----------------------------------------------------------------------
 //
@@ -153,9 +153,9 @@ NS_IMPL_RELEASE_INHERITED(HTMLSelectElement, Element)
 
 // QueryInterface implementation for HTMLSelectElement
 NS_INTERFACE_TABLE_HEAD_CYCLE_COLLECTION_INHERITED(HTMLSelectElement)
-  NS_INTERFACE_TABLE_INHERITED2(HTMLSelectElement,
-                                nsIDOMHTMLSelectElement,
-                                nsIConstraintValidation)
+  NS_INTERFACE_TABLE_INHERITED(HTMLSelectElement,
+                               nsIDOMHTMLSelectElement,
+                               nsIConstraintValidation)
 NS_INTERFACE_TABLE_TAIL_INHERITING(nsGenericHTMLFormElementWithState)
 
 
diff --git a/content/html/content/src/HTMLSharedObjectElement.cpp b/content/html/content/src/HTMLSharedObjectElement.cpp
index 11267a39171f27a7786dd7802c805da1281ae2d0..2b3a058bd2eb0e70b7393084b16d4356f2427bbc 100644
--- a/content/html/content/src/HTMLSharedObjectElement.cpp
+++ b/content/html/content/src/HTMLSharedObjectElement.cpp
@@ -92,15 +92,15 @@ NS_IMPL_ADDREF_INHERITED(HTMLSharedObjectElement, Element)
 NS_IMPL_RELEASE_INHERITED(HTMLSharedObjectElement, Element)
 
 NS_INTERFACE_TABLE_HEAD_CYCLE_COLLECTION_INHERITED(HTMLSharedObjectElement)
-  NS_INTERFACE_TABLE_INHERITED8(HTMLSharedObjectElement,
-                                nsIRequestObserver,
-                                nsIStreamListener,
-                                nsIFrameLoaderOwner,
-                                nsIObjectLoadingContent,
-                                imgINotificationObserver,
-                                nsIImageLoadingContent,
-                                imgIOnloadBlocker,
-                                nsIChannelEventSink)
+  NS_INTERFACE_TABLE_INHERITED(HTMLSharedObjectElement,
+                               nsIRequestObserver,
+                               nsIStreamListener,
+                               nsIFrameLoaderOwner,
+                               nsIObjectLoadingContent,
+                               imgINotificationObserver,
+                               nsIImageLoadingContent,
+                               imgIOnloadBlocker,
+                               nsIChannelEventSink)
   NS_INTERFACE_TABLE_TO_MAP_SEGUE
   NS_INTERFACE_MAP_ENTRY_IF_TAG(nsIDOMHTMLAppletElement, applet)
   NS_INTERFACE_MAP_ENTRY_IF_TAG(nsIDOMHTMLEmbedElement, embed)
diff --git a/content/html/content/src/HTMLSourceElement.cpp b/content/html/content/src/HTMLSourceElement.cpp
index 4f39cd2eca659519d1bf236a3fdd5d70c494fba1..b21bde3c82ec43c95c3ed8ca449fb66229ae0f3a 100644
--- a/content/html/content/src/HTMLSourceElement.cpp
+++ b/content/html/content/src/HTMLSourceElement.cpp
@@ -21,8 +21,8 @@ HTMLSourceElement::~HTMLSourceElement()
 {
 }
 
-NS_IMPL_ISUPPORTS_INHERITED1(HTMLSourceElement, nsGenericHTMLElement,
-                             nsIDOMHTMLSourceElement)
+NS_IMPL_ISUPPORTS_INHERITED(HTMLSourceElement, nsGenericHTMLElement,
+                            nsIDOMHTMLSourceElement)
 
 NS_IMPL_ELEMENT_CLONE(HTMLSourceElement)
 
diff --git a/content/html/content/src/HTMLStyleElement.cpp b/content/html/content/src/HTMLStyleElement.cpp
index 76b263523da0f70e77994a3ebf88b811342048ea..f175a9b53da9c4181fade86c0240099c214c6e67 100644
--- a/content/html/content/src/HTMLStyleElement.cpp
+++ b/content/html/content/src/HTMLStyleElement.cpp
@@ -48,10 +48,10 @@ NS_IMPL_RELEASE_INHERITED(HTMLStyleElement, Element)
 
 // QueryInterface implementation for HTMLStyleElement
 NS_INTERFACE_TABLE_HEAD_CYCLE_COLLECTION_INHERITED(HTMLStyleElement)
-  NS_INTERFACE_TABLE_INHERITED3(HTMLStyleElement,
-                                nsIDOMHTMLStyleElement,
-                                nsIStyleSheetLinkingElement,
-                                nsIMutationObserver)
+  NS_INTERFACE_TABLE_INHERITED(HTMLStyleElement,
+                               nsIDOMHTMLStyleElement,
+                               nsIStyleSheetLinkingElement,
+                               nsIMutationObserver)
 NS_INTERFACE_TABLE_TAIL_INHERITING(nsGenericHTMLElement)
 
 NS_IMPL_ELEMENT_CLONE(HTMLStyleElement)
diff --git a/content/html/content/src/HTMLTableCaptionElement.cpp b/content/html/content/src/HTMLTableCaptionElement.cpp
index 46f6c01103ab68b65ba610e7fae0d171f6449d57..4370d0acb643af4eb51fd5b0e8588f2c9e358479 100644
--- a/content/html/content/src/HTMLTableCaptionElement.cpp
+++ b/content/html/content/src/HTMLTableCaptionElement.cpp
@@ -24,8 +24,8 @@ HTMLTableCaptionElement::WrapNode(JSContext *aCx)
   return HTMLTableCaptionElementBinding::Wrap(aCx, this);
 }
 
-NS_IMPL_ISUPPORTS_INHERITED1(HTMLTableCaptionElement, nsGenericHTMLElement,
-                             nsIDOMHTMLTableCaptionElement)
+NS_IMPL_ISUPPORTS_INHERITED(HTMLTableCaptionElement, nsGenericHTMLElement,
+                            nsIDOMHTMLTableCaptionElement)
 
 NS_IMPL_ELEMENT_CLONE(HTMLTableCaptionElement)
 
diff --git a/content/html/content/src/HTMLTableCellElement.cpp b/content/html/content/src/HTMLTableCellElement.cpp
index dc7999fbfee994f10666c7769bba4f88b350948b..2092aa33235f40fbe48d6f406770cd542a57ccb3 100644
--- a/content/html/content/src/HTMLTableCellElement.cpp
+++ b/content/html/content/src/HTMLTableCellElement.cpp
@@ -28,8 +28,8 @@ HTMLTableCellElement::WrapNode(JSContext *aCx)
   return HTMLTableCellElementBinding::Wrap(aCx, this);
 }
 
-NS_IMPL_ISUPPORTS_INHERITED1(HTMLTableCellElement, nsGenericHTMLElement,
-                             nsIDOMHTMLTableCellElement)
+NS_IMPL_ISUPPORTS_INHERITED(HTMLTableCellElement, nsGenericHTMLElement,
+                            nsIDOMHTMLTableCellElement)
 
 NS_IMPL_ELEMENT_CLONE(HTMLTableCellElement)
 
diff --git a/content/html/content/src/HTMLTableElement.cpp b/content/html/content/src/HTMLTableElement.cpp
index a5c608a1a8b8dd504f82a275917ecdd9e1883dd6..f9804145be1a107445c614003490920f417b36c5 100644
--- a/content/html/content/src/HTMLTableElement.cpp
+++ b/content/html/content/src/HTMLTableElement.cpp
@@ -95,8 +95,8 @@ NS_IMPL_CYCLE_COLLECTING_RELEASE(TableRowsCollection)
 
 NS_INTERFACE_TABLE_HEAD(TableRowsCollection)
   NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
-  NS_INTERFACE_TABLE2(TableRowsCollection, nsIHTMLCollection,
-                      nsIDOMHTMLCollection)
+  NS_INTERFACE_TABLE(TableRowsCollection, nsIHTMLCollection,
+                     nsIDOMHTMLCollection)
   NS_INTERFACE_TABLE_TO_MAP_SEGUE_CYCLE_COLLECTION(TableRowsCollection)
 NS_INTERFACE_MAP_END
 
@@ -328,7 +328,7 @@ NS_IMPL_RELEASE_INHERITED(HTMLTableElement, Element)
 
 // QueryInterface implementation for HTMLTableElement
 NS_INTERFACE_TABLE_HEAD_CYCLE_COLLECTION_INHERITED(HTMLTableElement)
-  NS_INTERFACE_TABLE_INHERITED1(HTMLTableElement, nsIDOMHTMLTableElement)
+  NS_INTERFACE_TABLE_INHERITED(HTMLTableElement, nsIDOMHTMLTableElement)
 NS_INTERFACE_TABLE_TAIL_INHERITING(nsGenericHTMLElement)
 
 
diff --git a/content/html/content/src/HTMLTextAreaElement.cpp b/content/html/content/src/HTMLTextAreaElement.cpp
index b5e23a53349d9e3b12d42b9289dc2f71e42e60b4..c94f7331fa2548ef9a3886488ec346c63d1b3e91 100644
--- a/content/html/content/src/HTMLTextAreaElement.cpp
+++ b/content/html/content/src/HTMLTextAreaElement.cpp
@@ -87,12 +87,12 @@ NS_IMPL_RELEASE_INHERITED(HTMLTextAreaElement, Element)
 
 // QueryInterface implementation for HTMLTextAreaElement
 NS_INTERFACE_TABLE_HEAD_CYCLE_COLLECTION_INHERITED(HTMLTextAreaElement)
-  NS_INTERFACE_TABLE_INHERITED5(HTMLTextAreaElement,
-                                nsIDOMHTMLTextAreaElement,
-                                nsITextControlElement,
-                                nsIDOMNSEditableElement,
-                                nsIMutationObserver,
-                                nsIConstraintValidation)
+  NS_INTERFACE_TABLE_INHERITED(HTMLTextAreaElement,
+                               nsIDOMHTMLTextAreaElement,
+                               nsITextControlElement,
+                               nsIDOMNSEditableElement,
+                               nsIMutationObserver,
+                               nsIConstraintValidation)
 NS_INTERFACE_TABLE_TAIL_INHERITING(nsGenericHTMLFormElementWithState)
 
 
diff --git a/content/html/content/src/HTMLTitleElement.cpp b/content/html/content/src/HTMLTitleElement.cpp
index 6a6237ad72fefb94548a0257c4db5ed96ed8b188..6150a6667dd187d48bceefaaf90b4b2fcbf9ee55 100644
--- a/content/html/content/src/HTMLTitleElement.cpp
+++ b/content/html/content/src/HTMLTitleElement.cpp
@@ -27,8 +27,8 @@ HTMLTitleElement::~HTMLTitleElement()
 {
 }
 
-NS_IMPL_ISUPPORTS_INHERITED2(HTMLTitleElement, nsGenericHTMLElement,
-                             nsIDOMHTMLTitleElement, nsIMutationObserver)
+NS_IMPL_ISUPPORTS_INHERITED(HTMLTitleElement, nsGenericHTMLElement,
+                            nsIDOMHTMLTitleElement, nsIMutationObserver)
 
 NS_IMPL_ELEMENT_CLONE(HTMLTitleElement)
 
diff --git a/content/html/content/src/HTMLVideoElement.cpp b/content/html/content/src/HTMLVideoElement.cpp
index 1e572dede50bacbadd2067fb7c614f7796a250b4..db90fa86027118a85cf013d327569b2bbd79a336 100644
--- a/content/html/content/src/HTMLVideoElement.cpp
+++ b/content/html/content/src/HTMLVideoElement.cpp
@@ -41,8 +41,8 @@ namespace dom {
 
 static bool sVideoStatsEnabled;
 
-NS_IMPL_ISUPPORTS_INHERITED2(HTMLVideoElement, HTMLMediaElement,
-                             nsIDOMHTMLMediaElement, nsIDOMHTMLVideoElement)
+NS_IMPL_ISUPPORTS_INHERITED(HTMLVideoElement, HTMLMediaElement,
+                            nsIDOMHTMLMediaElement, nsIDOMHTMLVideoElement)
 
 NS_IMPL_ELEMENT_CLONE(HTMLVideoElement)
 
diff --git a/content/html/content/src/TimeRanges.cpp b/content/html/content/src/TimeRanges.cpp
index b85961e801f7076e04bd42d909bb32420d45b0f4..dfe1ed8cc42c69d1e930513d38b14cd07dce56d9 100644
--- a/content/html/content/src/TimeRanges.cpp
+++ b/content/html/content/src/TimeRanges.cpp
@@ -12,7 +12,7 @@
 namespace mozilla {
 namespace dom {
 
-NS_IMPL_ISUPPORTS1(TimeRanges, nsIDOMTimeRanges)
+NS_IMPL_ISUPPORTS(TimeRanges, nsIDOMTimeRanges)
 
 TimeRanges::TimeRanges()
 {
diff --git a/content/html/content/src/UndoManager.cpp b/content/html/content/src/UndoManager.cpp
index dda57bb5f767eb8ae85fba31cdb3114dd71d7220..b28d5acf80a1c2bbe8b602285a8b2aa372367d81 100644
--- a/content/html/content/src/UndoManager.cpp
+++ b/content/html/content/src/UndoManager.cpp
@@ -596,7 +596,7 @@ protected:
                                       // reference.
 };
 
-NS_IMPL_ISUPPORTS1(UndoMutationObserver, nsIMutationObserver)
+NS_IMPL_ISUPPORTS(UndoMutationObserver, nsIMutationObserver)
 
 bool
 UndoMutationObserver::IsManagerForMutation(nsIContent* aContent)
diff --git a/content/html/content/src/nsGenericHTMLElement.cpp b/content/html/content/src/nsGenericHTMLElement.cpp
index 32f368c88078c662c91f00d1c7bae1cb11bf31a6..fde36195794f42e837e197f3f1c2e3661588de32 100644
--- a/content/html/content/src/nsGenericHTMLElement.cpp
+++ b/content/html/content/src/nsGenericHTMLElement.cpp
@@ -195,8 +195,8 @@ NS_IMPL_CYCLE_COLLECTING_ADDREF(nsGenericHTMLElementTearoff)
 NS_IMPL_CYCLE_COLLECTING_RELEASE(nsGenericHTMLElementTearoff)
 
 NS_INTERFACE_TABLE_HEAD(nsGenericHTMLElementTearoff)
-  NS_INTERFACE_TABLE_INHERITED1(nsGenericHTMLElementTearoff,
-                                nsIDOMElementCSSInlineStyle)
+  NS_INTERFACE_TABLE_INHERITED(nsGenericHTMLElementTearoff,
+                               nsIDOMElementCSSInlineStyle)
   NS_INTERFACE_TABLE_TO_MAP_SEGUE_CYCLE_COLLECTION(nsGenericHTMLElementTearoff)
 NS_INTERFACE_MAP_END_AGGREGATED(mElement)
 
@@ -1924,9 +1924,9 @@ nsGenericHTMLFormElement::~nsGenericHTMLFormElement()
   NS_ASSERTION(!mForm, "mForm should be null at this point!");
 }
 
-NS_IMPL_ISUPPORTS_INHERITED1(nsGenericHTMLFormElement,
-                             nsGenericHTMLElement,
-                             nsIFormControl)
+NS_IMPL_ISUPPORTS_INHERITED(nsGenericHTMLFormElement,
+                            nsGenericHTMLElement,
+                            nsIFormControl)
 
 mozilla::dom::ParentObject
 nsGenericHTMLFormElement::GetParentObject() const
diff --git a/content/html/content/src/nsGenericHTMLFrameElement.cpp b/content/html/content/src/nsGenericHTMLFrameElement.cpp
index 3876902f2e0b5f553019b537774dbd06de309590..0989b476685c4b638343faa69e40295c9bc8496e 100644
--- a/content/html/content/src/nsGenericHTMLFrameElement.cpp
+++ b/content/html/content/src/nsGenericHTMLFrameElement.cpp
@@ -38,10 +38,10 @@ NS_IMPL_ADDREF_INHERITED(nsGenericHTMLFrameElement, nsGenericHTMLElement)
 NS_IMPL_RELEASE_INHERITED(nsGenericHTMLFrameElement, nsGenericHTMLElement)
 
 NS_INTERFACE_TABLE_HEAD_CYCLE_COLLECTION_INHERITED(nsGenericHTMLFrameElement)
-  NS_INTERFACE_TABLE_INHERITED3(nsGenericHTMLFrameElement,
-                                nsIFrameLoaderOwner,
-                                nsIDOMMozBrowserFrame,
-                                nsIMozBrowserFrame)
+  NS_INTERFACE_TABLE_INHERITED(nsGenericHTMLFrameElement,
+                               nsIFrameLoaderOwner,
+                               nsIDOMMozBrowserFrame,
+                               nsIMozBrowserFrame)
 NS_INTERFACE_TABLE_TAIL_INHERITING(nsGenericHTMLElement)
 
 NS_IMPL_BOOL_ATTR(nsGenericHTMLFrameElement, Mozbrowser, mozbrowser)
diff --git a/content/html/content/src/nsHTMLDNSPrefetch.cpp b/content/html/content/src/nsHTMLDNSPrefetch.cpp
index 229fde83e7af1d4e777f9e9b58bbb9a064c93011..6090d9f8c7755c6ca2a6a5c36ad8efdf072c78ea 100644
--- a/content/html/content/src/nsHTMLDNSPrefetch.cpp
+++ b/content/html/content/src/nsHTMLDNSPrefetch.cpp
@@ -223,8 +223,8 @@ nsHTMLDNSPrefetch::CancelPrefetchLow(const nsAString &hostname, nsresult aReason
 
 /////////////////////////////////////////////////////////////////////////////////////////////////////////
 
-NS_IMPL_ISUPPORTS1(nsHTMLDNSPrefetch::nsListener,
-                   nsIDNSListener)
+NS_IMPL_ISUPPORTS(nsHTMLDNSPrefetch::nsListener,
+                  nsIDNSListener)
 
 NS_IMETHODIMP
 nsHTMLDNSPrefetch::nsListener::OnLookupComplete(nsICancelable *request,
@@ -255,10 +255,10 @@ nsHTMLDNSPrefetch::nsDeferrals::~nsDeferrals()
   Flush();
 }
 
-NS_IMPL_ISUPPORTS3(nsHTMLDNSPrefetch::nsDeferrals,
-                   nsIWebProgressListener,
-                   nsISupportsWeakReference,
-                   nsIObserver)
+NS_IMPL_ISUPPORTS(nsHTMLDNSPrefetch::nsDeferrals,
+                  nsIWebProgressListener,
+                  nsISupportsWeakReference,
+                  nsIObserver)
 
 void
 nsHTMLDNSPrefetch::nsDeferrals::Flush()
diff --git a/content/html/content/src/nsRadioVisitor.cpp b/content/html/content/src/nsRadioVisitor.cpp
index c6c2a62642a201f1a33d1182e73763d3bab36d81..3698eff9301f2184d5558f387f04b7a4ce2f1e0d 100644
--- a/content/html/content/src/nsRadioVisitor.cpp
+++ b/content/html/content/src/nsRadioVisitor.cpp
@@ -10,7 +10,7 @@
 
 using namespace mozilla::dom;
 
-NS_IMPL_ISUPPORTS1(nsRadioVisitor, nsIRadioVisitor)
+NS_IMPL_ISUPPORTS(nsRadioVisitor, nsIRadioVisitor)
 
 bool
 nsRadioSetCheckedChangedVisitor::Visit(nsIFormControl* aRadio)
diff --git a/content/html/content/src/nsTextEditorState.cpp b/content/html/content/src/nsTextEditorState.cpp
index 6126660f63354abaa2c441d2d963f00232ab72dc..e88f610227506922ac9f2962219bc64cbe17c08c 100644
--- a/content/html/content/src/nsTextEditorState.cpp
+++ b/content/html/content/src/nsTextEditorState.cpp
@@ -249,10 +249,10 @@ private:
 NS_IMPL_CYCLE_COLLECTING_ADDREF(nsTextInputSelectionImpl)
 NS_IMPL_CYCLE_COLLECTING_RELEASE(nsTextInputSelectionImpl)
 NS_INTERFACE_TABLE_HEAD(nsTextInputSelectionImpl)
-  NS_INTERFACE_TABLE3(nsTextInputSelectionImpl,
-                      nsISelectionController,
-                      nsISelectionDisplay,
-                      nsISupportsWeakReference)
+  NS_INTERFACE_TABLE(nsTextInputSelectionImpl,
+                     nsISelectionController,
+                     nsISelectionDisplay,
+                     nsISupportsWeakReference)
   NS_INTERFACE_TABLE_TO_MAP_SEGUE_CYCLE_COLLECTION(nsTextInputSelectionImpl)
 NS_INTERFACE_MAP_END
 
@@ -725,11 +725,11 @@ nsTextInputListener::~nsTextInputListener()
 {
 }
 
-NS_IMPL_ISUPPORTS4(nsTextInputListener,
-                   nsISelectionListener,
-                   nsIEditorObserver,
-                   nsISupportsWeakReference,
-                   nsIDOMEventListener)
+NS_IMPL_ISUPPORTS(nsTextInputListener,
+                  nsISelectionListener,
+                  nsIEditorObserver,
+                  nsISupportsWeakReference,
+                  nsIDOMEventListener)
 
 // BEGIN nsIDOMSelectionListener
 
@@ -1991,7 +1991,7 @@ nsTextEditorState::HideSelectionIfBlurred()
   }
 }
 
-NS_IMPL_ISUPPORTS1(nsAnonDivObserver, nsIMutationObserver)
+NS_IMPL_ISUPPORTS(nsAnonDivObserver, nsIMutationObserver)
 
 void
 nsAnonDivObserver::CharacterDataChanged(nsIDocument*             aDocument,
diff --git a/content/html/document/src/ImageDocument.cpp b/content/html/document/src/ImageDocument.cpp
index 189a17a35119196ba0da12c91f2a3cf4bfebd81b..f8f57f5ddc9877941454152196a0dd07c25c8061 100644
--- a/content/html/document/src/ImageDocument.cpp
+++ b/content/html/document/src/ImageDocument.cpp
@@ -154,8 +154,8 @@ NS_IMPL_ADDREF_INHERITED(ImageDocument, MediaDocument)
 NS_IMPL_RELEASE_INHERITED(ImageDocument, MediaDocument)
 
 NS_INTERFACE_TABLE_HEAD_CYCLE_COLLECTION_INHERITED(ImageDocument)
-  NS_INTERFACE_TABLE_INHERITED3(ImageDocument, nsIImageDocument,
-                                imgINotificationObserver, nsIDOMEventListener)
+  NS_INTERFACE_TABLE_INHERITED(ImageDocument, nsIImageDocument,
+                               imgINotificationObserver, nsIDOMEventListener)
 NS_INTERFACE_TABLE_TAIL_INHERITING(MediaDocument)
 
 
diff --git a/content/html/document/src/MediaDocument.cpp b/content/html/document/src/MediaDocument.cpp
index d6069e2d2c4d75dccf7cd3f0cf41dddf9d1658fe..0933c0c04d5126ac5f35607eae53964a2c372b94 100644
--- a/content/html/document/src/MediaDocument.cpp
+++ b/content/html/document/src/MediaDocument.cpp
@@ -36,9 +36,9 @@ MediaDocumentStreamListener::~MediaDocumentStreamListener()
 }
 
 
-NS_IMPL_ISUPPORTS2(MediaDocumentStreamListener,
-                   nsIRequestObserver,
-                   nsIStreamListener)
+NS_IMPL_ISUPPORTS(MediaDocumentStreamListener,
+                  nsIRequestObserver,
+                  nsIStreamListener)
 
 
 void
diff --git a/content/html/document/src/PluginDocument.cpp b/content/html/document/src/PluginDocument.cpp
index 117a9af1659c0eaa9715da7c0e67f829af269efe..42d894e7b26339e03428e6c0c9596a96836d0787 100644
--- a/content/html/document/src/PluginDocument.cpp
+++ b/content/html/document/src/PluginDocument.cpp
@@ -116,7 +116,7 @@ NS_IMPL_ADDREF_INHERITED(PluginDocument, MediaDocument)
 NS_IMPL_RELEASE_INHERITED(PluginDocument, MediaDocument)
 
 NS_INTERFACE_TABLE_HEAD_CYCLE_COLLECTION_INHERITED(PluginDocument)
-  NS_INTERFACE_TABLE_INHERITED1(PluginDocument, nsIPluginDocument)
+  NS_INTERFACE_TABLE_INHERITED(PluginDocument, nsIPluginDocument)
 NS_INTERFACE_TABLE_TAIL_INHERITING(MediaDocument)
 
 void
diff --git a/content/html/document/src/nsHTMLDocument.cpp b/content/html/document/src/nsHTMLDocument.cpp
index 1c639c6e5ba78e8c8d41ff5be4f183d54107b317..8e45fa249e85a40b1f557182e94b734fc8d1f9bd 100644
--- a/content/html/document/src/nsHTMLDocument.cpp
+++ b/content/html/document/src/nsHTMLDocument.cpp
@@ -217,8 +217,8 @@ NS_IMPL_RELEASE_INHERITED(nsHTMLDocument, nsDocument)
 
 // QueryInterface implementation for nsHTMLDocument
 NS_INTERFACE_TABLE_HEAD_CYCLE_COLLECTION_INHERITED(nsHTMLDocument)
-  NS_INTERFACE_TABLE_INHERITED2(nsHTMLDocument, nsIHTMLDocument,
-                                nsIDOMHTMLDocument)
+  NS_INTERFACE_TABLE_INHERITED(nsHTMLDocument, nsIHTMLDocument,
+                               nsIDOMHTMLDocument)
 NS_INTERFACE_TABLE_TAIL_INHERITING(nsDocument)
 
 JSObject*
diff --git a/content/mathml/content/src/nsMathMLElement.cpp b/content/mathml/content/src/nsMathMLElement.cpp
index e61dfeac7fcaadbfca95b1ca35a88593f93ee4ab..28324b9d1b2e341552f3c10bdc00de21b436170a 100644
--- a/content/mathml/content/src/nsMathMLElement.cpp
+++ b/content/mathml/content/src/nsMathMLElement.cpp
@@ -31,8 +31,8 @@ using namespace mozilla::dom;
 //----------------------------------------------------------------------
 // nsISupports methods:
 
-NS_IMPL_ISUPPORTS_INHERITED3(nsMathMLElement, nsMathMLElementBase,
-                             nsIDOMElement, nsIDOMNode, Link)
+NS_IMPL_ISUPPORTS_INHERITED(nsMathMLElement, nsMathMLElementBase,
+                            nsIDOMElement, nsIDOMNode, Link)
 
 static nsresult
 WarnDeprecated(const char16_t* aDeprecatedAttribute, 
diff --git a/content/media/DOMMediaStream.cpp b/content/media/DOMMediaStream.cpp
index 20be806b1cfe3e628ef50f386ec72ea0a4d2446c..cb3cff82c3ad363c2626ee4cae3fa5f62f57e961 100644
--- a/content/media/DOMMediaStream.cpp
+++ b/content/media/DOMMediaStream.cpp
@@ -41,8 +41,8 @@ NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(DOMMediaStream)
 NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
 NS_IMPL_CYCLE_COLLECTION_TRACE_WRAPPERCACHE(DOMMediaStream)
 
-NS_IMPL_ISUPPORTS_INHERITED1(DOMLocalMediaStream, DOMMediaStream,
-                             nsIDOMLocalMediaStream)
+NS_IMPL_ISUPPORTS_INHERITED(DOMLocalMediaStream, DOMMediaStream,
+                            nsIDOMLocalMediaStream)
 
 NS_IMPL_CYCLE_COLLECTION_INHERITED(DOMAudioNodeMediaStream, DOMMediaStream,
                                    mStreamNode)
diff --git a/content/media/Latency.cpp b/content/media/Latency.cpp
index 153ac3bbf75dd9b9bbbbc33ddbec5f76249ce832..7270293712e9792ede2c00520a6843f97b2f40eb 100644
--- a/content/media/Latency.cpp
+++ b/content/media/Latency.cpp
@@ -136,7 +136,7 @@ AsyncLatencyLogger* AsyncLatencyLogger::Get(bool aStartTimer)
   return gAsyncLogger;
 }
 
-NS_IMPL_ISUPPORTS1(AsyncLatencyLogger, nsIObserver)
+NS_IMPL_ISUPPORTS(AsyncLatencyLogger, nsIObserver)
 
 AsyncLatencyLogger::AsyncLatencyLogger()
   : mThread(nullptr),
diff --git a/content/media/MediaCache.cpp b/content/media/MediaCache.cpp
index e3857b7c0cf54dc0a259d1878aca6e7dc4c234c6..598d905e9c0987d6c8d488047aadb9c56266c1ab 100644
--- a/content/media/MediaCache.cpp
+++ b/content/media/MediaCache.cpp
@@ -83,7 +83,7 @@ public:
 
 static MediaCacheFlusher* gMediaCacheFlusher;
 
-NS_IMPL_ISUPPORTS2(MediaCacheFlusher, nsIObserver, nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(MediaCacheFlusher, nsIObserver, nsISupportsWeakReference)
 
 MediaCacheFlusher::~MediaCacheFlusher()
 {
diff --git a/content/media/MediaDecoder.cpp b/content/media/MediaDecoder.cpp
index b8db67c13f16826853166821956c21646582dddc..0b5db4272d7dbd4cff61e9012dfa816eb0409dd1 100644
--- a/content/media/MediaDecoder.cpp
+++ b/content/media/MediaDecoder.cpp
@@ -105,9 +105,9 @@ public:
 
 StaticRefPtr<MediaMemoryTracker> MediaMemoryTracker::sUniqueInstance;
 
-NS_IMPL_ISUPPORTS1(MediaMemoryTracker, nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(MediaMemoryTracker, nsIMemoryReporter)
 
-NS_IMPL_ISUPPORTS1(MediaDecoder, nsIObserver)
+NS_IMPL_ISUPPORTS(MediaDecoder, nsIObserver)
 
 void MediaDecoder::SetDormantIfNecessary(bool aDormant)
 {
diff --git a/content/media/MediaDecoderStateMachine.cpp b/content/media/MediaDecoderStateMachine.cpp
index 603e95ed4350af4927b967104c0250d59c8e104b..38fa9bc1c768348e3c332f263eb8ae1292cc3588 100644
--- a/content/media/MediaDecoderStateMachine.cpp
+++ b/content/media/MediaDecoderStateMachine.cpp
@@ -2716,7 +2716,7 @@ private:
   int mTimerId;
 };
 
-NS_IMPL_ISUPPORTS2(TimerEvent, nsITimerCallback, nsIRunnable);
+NS_IMPL_ISUPPORTS(TimerEvent, nsITimerCallback, nsIRunnable);
 
 nsresult MediaDecoderStateMachine::ScheduleStateMachine(int64_t aUsecs) {
   AssertCurrentThreadInMonitor();
diff --git a/content/media/MediaRecorder.cpp b/content/media/MediaRecorder.cpp
index 91d9033e913e6d47e50b9e73fee72e0e1d1bbf1b..f222ec9f20ad73ce4d80afbb8d87232a0aa07bcd 100644
--- a/content/media/MediaRecorder.cpp
+++ b/content/media/MediaRecorder.cpp
@@ -468,7 +468,7 @@ private:
   bool mStopIssued;
 };
 
-NS_IMPL_ISUPPORTS1(MediaRecorder::Session, nsIObserver)
+NS_IMPL_ISUPPORTS(MediaRecorder::Session, nsIObserver)
 
 MediaRecorder::~MediaRecorder()
 {
diff --git a/content/media/MediaResource.cpp b/content/media/MediaResource.cpp
index 7b1e115bbc17cd6446e6308009d5ef1954cbd0f0..ae6d2de5314c06e81fbed8d65dd3cdd92cfd6bc1 100644
--- a/content/media/MediaResource.cpp
+++ b/content/media/MediaResource.cpp
@@ -106,9 +106,9 @@ ChannelMediaResource::~ChannelMediaResource()
 // disconnect the old listener from the ChannelMediaResource and hook up
 // a new listener, so notifications from the old channel are discarded
 // and don't confuse us.
-NS_IMPL_ISUPPORTS4(ChannelMediaResource::Listener,
-                   nsIRequestObserver, nsIStreamListener, nsIChannelEventSink,
-                   nsIInterfaceRequestor)
+NS_IMPL_ISUPPORTS(ChannelMediaResource::Listener,
+                  nsIRequestObserver, nsIStreamListener, nsIChannelEventSink,
+                  nsIInterfaceRequestor)
 
 nsresult
 ChannelMediaResource::Listener::OnStartRequest(nsIRequest* aRequest,
diff --git a/content/media/MediaShutdownManager.cpp b/content/media/MediaShutdownManager.cpp
index af770abd85a5c54ef822daf01a550760387df900..76b12dd64b43156fbd88b9252592f87e71c6501e 100644
--- a/content/media/MediaShutdownManager.cpp
+++ b/content/media/MediaShutdownManager.cpp
@@ -20,7 +20,7 @@ extern PRLogModuleInfo* gMediaDecoderLog;
 #define DECODER_LOG(type, msg)
 #endif
 
-NS_IMPL_ISUPPORTS1(MediaShutdownManager, nsIObserver)
+NS_IMPL_ISUPPORTS(MediaShutdownManager, nsIObserver)
 
 MediaShutdownManager::MediaShutdownManager()
   : mIsObservingShutdown(false),
diff --git a/content/media/MediaStreamGraph.cpp b/content/media/MediaStreamGraph.cpp
index 69c2e7883808713c8237385132c72a74a1d5566e..e7c7031c38fa19b3b937b57577e3bb26512764bf 100644
--- a/content/media/MediaStreamGraph.cpp
+++ b/content/media/MediaStreamGraph.cpp
@@ -2673,7 +2673,7 @@ MediaStreamGraphImpl::Destroy()
   mSelfRef = nullptr;
 }
 
-NS_IMPL_ISUPPORTS1(MediaStreamGraphShutdownObserver, nsIObserver)
+NS_IMPL_ISUPPORTS(MediaStreamGraphShutdownObserver, nsIObserver)
 
 static bool gShutdownObserverRegistered = false;
 
@@ -2740,7 +2740,7 @@ MediaStreamGraph::DestroyNonRealtimeInstance(MediaStreamGraph* aGraph)
   graph->ForceShutDown();
 }
 
-NS_IMPL_ISUPPORTS1(MediaStreamGraphImpl, nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(MediaStreamGraphImpl, nsIMemoryReporter)
 
 struct ArrayClearer
 {
diff --git a/content/media/RtspMediaResource.cpp b/content/media/RtspMediaResource.cpp
index a95e4478a6451b401229bcd53a4611496cfd317b..facca818b45a97cef46b54be1311277e20f6f231 100644
--- a/content/media/RtspMediaResource.cpp
+++ b/content/media/RtspMediaResource.cpp
@@ -404,8 +404,8 @@ RtspMediaResource::SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const
 //----------------------------------------------------------------------------
 // RtspMediaResource::Listener
 //----------------------------------------------------------------------------
-NS_IMPL_ISUPPORTS2(RtspMediaResource::Listener,
-                   nsIInterfaceRequestor, nsIStreamingProtocolListener);
+NS_IMPL_ISUPPORTS(RtspMediaResource::Listener,
+                  nsIInterfaceRequestor, nsIStreamingProtocolListener);
 
 nsresult
 RtspMediaResource::Listener::OnMediaDataAvailable(uint8_t aTrackIdx,
diff --git a/content/media/SharedThreadPool.cpp b/content/media/SharedThreadPool.cpp
index e514e98b03912591493a687080bb75bd53a40224..92ba95382e7d9c4e05028920e65c8d7b74b2abfe 100644
--- a/content/media/SharedThreadPool.cpp
+++ b/content/media/SharedThreadPool.cpp
@@ -170,7 +170,7 @@ NS_IMETHODIMP_(MozExternalRefCountType) SharedThreadPool::Release(void)
   return 0;
 }
 
-NS_IMPL_QUERY_INTERFACE2(SharedThreadPool, nsIThreadPool, nsIEventTarget)
+NS_IMPL_QUERY_INTERFACE(SharedThreadPool, nsIThreadPool, nsIEventTarget)
 
 SharedThreadPool::SharedThreadPool(const nsCString& aName,
                                    nsIThreadPool* aPool)
@@ -198,7 +198,7 @@ public:
   NS_DECL_NSITHREADPOOLLISTENER
 };
 
-NS_IMPL_ISUPPORTS1(MSCOMInitThreadPoolListener, nsIThreadPoolListener)
+NS_IMPL_ISUPPORTS(MSCOMInitThreadPoolListener, nsIThreadPoolListener)
 
 NS_IMETHODIMP
 MSCOMInitThreadPoolListener::OnThreadCreated()
diff --git a/content/media/plugins/MediaResourceServer.cpp b/content/media/plugins/MediaResourceServer.cpp
index 8ed6437deeb386caba8362749b0a45e966a87dad..68f31f26b813a6f39069cb0b9cdb8a7bbbe23b79 100644
--- a/content/media/plugins/MediaResourceServer.cpp
+++ b/content/media/plugins/MediaResourceServer.cpp
@@ -356,7 +356,7 @@ public:
   virtual ~ResourceSocketListener() { }
 };
 
-NS_IMPL_ISUPPORTS1(ResourceSocketListener, nsIServerSocketListener)
+NS_IMPL_ISUPPORTS(ResourceSocketListener, nsIServerSocketListener)
 
 NS_IMETHODIMP
 ResourceSocketListener::OnSocketAccepted(nsIServerSocket* aServ,
diff --git a/content/media/webrtc/LoadMonitor.cpp b/content/media/webrtc/LoadMonitor.cpp
index 1d7d83429c49a02ad42de056626dd4bd63a250fc..16dfd3f7c4e10f8ff498a3da7c6ea994cd04468d 100644
--- a/content/media/webrtc/LoadMonitor.cpp
+++ b/content/media/webrtc/LoadMonitor.cpp
@@ -44,7 +44,7 @@
 
 namespace mozilla {
 
-NS_IMPL_ISUPPORTS1(LoadMonitor, nsIObserver)
+NS_IMPL_ISUPPORTS(LoadMonitor, nsIObserver)
 
 LoadMonitor::LoadMonitor(int aLoadUpdateInterval)
   : mLoadUpdateInterval(aLoadUpdateInterval),
diff --git a/content/media/webrtc/MediaEngineDefault.cpp b/content/media/webrtc/MediaEngineDefault.cpp
index e53744ecd4cdbc2b4d7cbab0e8ad22b31858aa2e..7acbe153469a340ed2739edbda0e605d4f8ebf5b 100644
--- a/content/media/webrtc/MediaEngineDefault.cpp
+++ b/content/media/webrtc/MediaEngineDefault.cpp
@@ -31,7 +31,7 @@ namespace mozilla {
 
 using namespace mozilla::gfx;
 
-NS_IMPL_ISUPPORTS1(MediaEngineDefaultVideoSource, nsITimerCallback)
+NS_IMPL_ISUPPORTS(MediaEngineDefaultVideoSource, nsITimerCallback)
 /**
  * Default video source.
  */
@@ -344,7 +344,7 @@ private:
 /**
  * Default audio source.
  */
-NS_IMPL_ISUPPORTS1(MediaEngineDefaultAudioSource, nsITimerCallback)
+NS_IMPL_ISUPPORTS(MediaEngineDefaultAudioSource, nsITimerCallback)
 
 MediaEngineDefaultAudioSource::MediaEngineDefaultAudioSource()
   : mTimer(nullptr)
diff --git a/content/media/webrtc/MediaEngineTabVideoSource.cpp b/content/media/webrtc/MediaEngineTabVideoSource.cpp
index b0cdb4ec3e6969f34b226439dea6fd96a6037156..26506b6af631bec15dbbd43c40402eabb73b1948 100644
--- a/content/media/webrtc/MediaEngineTabVideoSource.cpp
+++ b/content/media/webrtc/MediaEngineTabVideoSource.cpp
@@ -27,7 +27,7 @@ namespace mozilla {
 
 using namespace mozilla::gfx;
 
-NS_IMPL_ISUPPORTS2(MediaEngineTabVideoSource, nsIDOMEventListener, nsITimerCallback)
+NS_IMPL_ISUPPORTS(MediaEngineTabVideoSource, nsIDOMEventListener, nsITimerCallback)
 
 MediaEngineTabVideoSource::MediaEngineTabVideoSource()
 : mMonitor("MediaEngineTabVideoSource")
diff --git a/content/media/webrtc/MediaEngineWebRTCVideo.cpp b/content/media/webrtc/MediaEngineWebRTCVideo.cpp
index 15170c6565612fac6d53c30c9eb905da4caaad93..bd935fe745f2331b5656f1082e81de5482206e92 100644
--- a/content/media/webrtc/MediaEngineWebRTCVideo.cpp
+++ b/content/media/webrtc/MediaEngineWebRTCVideo.cpp
@@ -38,9 +38,9 @@ extern PRLogModuleInfo* GetMediaManagerLog();
  * Webrtc video source.
  */
 #ifndef MOZ_B2G_CAMERA
-NS_IMPL_ISUPPORTS1(MediaEngineWebRTCVideoSource, nsIRunnable)
+NS_IMPL_ISUPPORTS(MediaEngineWebRTCVideoSource, nsIRunnable)
 #else
-NS_IMPL_QUERY_INTERFACE1(MediaEngineWebRTCVideoSource, nsIRunnable)
+NS_IMPL_QUERY_INTERFACE(MediaEngineWebRTCVideoSource, nsIRunnable)
 NS_IMPL_ADDREF_INHERITED(MediaEngineWebRTCVideoSource, CameraControlListener)
 NS_IMPL_RELEASE_INHERITED(MediaEngineWebRTCVideoSource, CameraControlListener)
 #endif
diff --git a/content/media/webspeech/recognition/SpeechRecognition.cpp b/content/media/webspeech/recognition/SpeechRecognition.cpp
index b41160f4754e6f6f867dfd72b4c523851347ef08..9870b5fa2ce16d69acbefde04338ffbc08c25792 100644
--- a/content/media/webspeech/recognition/SpeechRecognition.cpp
+++ b/content/media/webspeech/recognition/SpeechRecognition.cpp
@@ -938,7 +938,7 @@ SpeechEvent::Run()
   return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS1(SpeechRecognition::GetUserMediaSuccessCallback, nsIDOMGetUserMediaSuccessCallback)
+NS_IMPL_ISUPPORTS(SpeechRecognition::GetUserMediaSuccessCallback, nsIDOMGetUserMediaSuccessCallback)
 
 NS_IMETHODIMP
 SpeechRecognition::GetUserMediaSuccessCallback::OnSuccess(nsISupports* aStream)
@@ -948,7 +948,7 @@ SpeechRecognition::GetUserMediaSuccessCallback::OnSuccess(nsISupports* aStream)
   return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS1(SpeechRecognition::GetUserMediaErrorCallback, nsIDOMGetUserMediaErrorCallback)
+NS_IMPL_ISUPPORTS(SpeechRecognition::GetUserMediaErrorCallback, nsIDOMGetUserMediaErrorCallback)
 
 NS_IMETHODIMP
 SpeechRecognition::GetUserMediaErrorCallback::OnError(const nsAString& aError)
diff --git a/content/media/webspeech/recognition/test/FakeSpeechRecognitionService.cpp b/content/media/webspeech/recognition/test/FakeSpeechRecognitionService.cpp
index edf0ec80863f4dcc18e991b4a9b6dd45552d4c3a..422b8b9054f8190fd9b7b61d39f255b1d2700d35 100644
--- a/content/media/webspeech/recognition/test/FakeSpeechRecognitionService.cpp
+++ b/content/media/webspeech/recognition/test/FakeSpeechRecognitionService.cpp
@@ -19,7 +19,7 @@ namespace mozilla {
 
 using namespace dom;
 
-NS_IMPL_ISUPPORTS2(FakeSpeechRecognitionService, nsISpeechRecognitionService, nsIObserver)
+NS_IMPL_ISUPPORTS(FakeSpeechRecognitionService, nsISpeechRecognitionService, nsIObserver)
 
 FakeSpeechRecognitionService::FakeSpeechRecognitionService()
 {
diff --git a/content/media/webspeech/synth/nsSynthVoiceRegistry.cpp b/content/media/webspeech/synth/nsSynthVoiceRegistry.cpp
index 7fdc9560af85aa6a7ee2bc772e383c254b609df7..4d2821d359e0f448b0a2ee9f0471cc87f4846078 100644
--- a/content/media/webspeech/synth/nsSynthVoiceRegistry.cpp
+++ b/content/media/webspeech/synth/nsSynthVoiceRegistry.cpp
@@ -99,7 +99,7 @@ public:
 
 static StaticRefPtr<nsSynthVoiceRegistry> gSynthVoiceRegistry;
 
-NS_IMPL_ISUPPORTS1(nsSynthVoiceRegistry, nsISynthVoiceRegistry)
+NS_IMPL_ISUPPORTS(nsSynthVoiceRegistry, nsISynthVoiceRegistry)
 
 nsSynthVoiceRegistry::nsSynthVoiceRegistry()
   : mSpeechSynthChild(nullptr)
diff --git a/content/media/webspeech/synth/pico/nsPicoService.cpp b/content/media/webspeech/synth/pico/nsPicoService.cpp
index 7c6ec2d064b45106a8bb5867571bb995ce225196..0860e5c29a0623442f13c9a9d5b837bb76fd9b6a 100644
--- a/content/media/webspeech/synth/pico/nsPicoService.cpp
+++ b/content/media/webspeech/synth/pico/nsPicoService.cpp
@@ -260,7 +260,7 @@ private:
   nsRefPtr<nsPicoService> mService;
 };
 
-NS_IMPL_ISUPPORTS_INHERITED1(PicoCallbackRunnable, nsRunnable, nsISpeechTaskCallback)
+NS_IMPL_ISUPPORTS_INHERITED(PicoCallbackRunnable, nsRunnable, nsISpeechTaskCallback)
 
 // nsRunnable
 
diff --git a/content/svg/content/src/SVGAElement.cpp b/content/svg/content/src/SVGAElement.cpp
index 1c74a7e788fb70b71285ed8ecbc224ee82863c7e..87c15d40bef81b3bcdb509e919f2fbbdde62b7ec 100644
--- a/content/svg/content/src/SVGAElement.cpp
+++ b/content/svg/content/src/SVGAElement.cpp
@@ -37,11 +37,11 @@ nsSVGElement::StringInfo SVGAElement::sStringInfo[2] =
 // nsISupports methods
 
 NS_INTERFACE_TABLE_HEAD_CYCLE_COLLECTION_INHERITED(SVGAElement)
-  NS_INTERFACE_TABLE_INHERITED4(SVGAElement,
-                                nsIDOMNode,
-                                nsIDOMElement,
-                                nsIDOMSVGElement,
-                                Link)
+  NS_INTERFACE_TABLE_INHERITED(SVGAElement,
+                               nsIDOMNode,
+                               nsIDOMElement,
+                               nsIDOMSVGElement,
+                               Link)
 NS_INTERFACE_TABLE_TAIL_INHERITING(SVGAElementBase)
 
 NS_IMPL_CYCLE_COLLECTION_CLASS(SVGAElement)
diff --git a/content/svg/content/src/SVGFEImageElement.cpp b/content/svg/content/src/SVGFEImageElement.cpp
index ac9f0bf282a4f61303b77ae1cd3e09d60846497f..b7c1e3bb37f401c0ce37eee24993e1e0d3d67029 100644
--- a/content/svg/content/src/SVGFEImageElement.cpp
+++ b/content/svg/content/src/SVGFEImageElement.cpp
@@ -39,10 +39,10 @@ nsSVGElement::StringInfo SVGFEImageElement::sStringInfo[2] =
 //----------------------------------------------------------------------
 // nsISupports methods
 
-NS_IMPL_ISUPPORTS_INHERITED6(SVGFEImageElement, SVGFEImageElementBase,
-                             nsIDOMNode, nsIDOMElement, nsIDOMSVGElement,
-                             imgINotificationObserver, nsIImageLoadingContent,
-                             imgIOnloadBlocker)
+NS_IMPL_ISUPPORTS_INHERITED(SVGFEImageElement, SVGFEImageElementBase,
+                            nsIDOMNode, nsIDOMElement, nsIDOMSVGElement,
+                            imgINotificationObserver, nsIImageLoadingContent,
+                            imgIOnloadBlocker)
 
 //----------------------------------------------------------------------
 // Implementation
diff --git a/content/svg/content/src/SVGImageElement.cpp b/content/svg/content/src/SVGImageElement.cpp
index fa3ffde60205ab6ad987d2719235fd0593bdb9ff..3f57644b3578e34077eede6376fd5b3af964600c 100644
--- a/content/svg/content/src/SVGImageElement.cpp
+++ b/content/svg/content/src/SVGImageElement.cpp
@@ -45,11 +45,11 @@ nsSVGElement::StringInfo SVGImageElement::sStringInfo[1] =
 //----------------------------------------------------------------------
 // nsISupports methods
 
-NS_IMPL_ISUPPORTS_INHERITED6(SVGImageElement, SVGImageElementBase,
-                             nsIDOMNode, nsIDOMElement,
-                             nsIDOMSVGElement,
-                             imgINotificationObserver,
-                             nsIImageLoadingContent, imgIOnloadBlocker)
+NS_IMPL_ISUPPORTS_INHERITED(SVGImageElement, SVGImageElementBase,
+                            nsIDOMNode, nsIDOMElement,
+                            nsIDOMSVGElement,
+                            imgINotificationObserver,
+                            nsIImageLoadingContent, imgIOnloadBlocker)
 
 //----------------------------------------------------------------------
 // Implementation
diff --git a/content/svg/content/src/SVGMPathElement.cpp b/content/svg/content/src/SVGMPathElement.cpp
index c8bf716141d03a3a2c30556346a9f978a6362411..20f8edc322f5a3e4b3ad7f25f871db72271482f2 100644
--- a/content/svg/content/src/SVGMPathElement.cpp
+++ b/content/svg/content/src/SVGMPathElement.cpp
@@ -49,9 +49,9 @@ NS_IMPL_ADDREF_INHERITED(SVGMPathElement,SVGMPathElementBase)
 NS_IMPL_RELEASE_INHERITED(SVGMPathElement,SVGMPathElementBase)
 
 NS_INTERFACE_TABLE_HEAD_CYCLE_COLLECTION_INHERITED(SVGMPathElement)
-  NS_INTERFACE_TABLE_INHERITED4(SVGMPathElement, nsIDOMNode, nsIDOMElement,
-                                nsIDOMSVGElement,
-                                nsIMutationObserver)
+  NS_INTERFACE_TABLE_INHERITED(SVGMPathElement, nsIDOMNode, nsIDOMElement,
+                               nsIDOMSVGElement,
+                               nsIMutationObserver)
 NS_INTERFACE_TABLE_TAIL_INHERITING(SVGMPathElementBase)
 
 // Constructor
diff --git a/content/svg/content/src/SVGSVGElement.cpp b/content/svg/content/src/SVGSVGElement.cpp
index d327e62b472a4949472399746f8cf2048d0f6fc5..9ea2a0748190bd87caf02711ed0afc157d10d17f 100644
--- a/content/svg/content/src/SVGSVGElement.cpp
+++ b/content/svg/content/src/SVGSVGElement.cpp
@@ -149,8 +149,8 @@ NS_IMPL_ADDREF_INHERITED(SVGSVGElement,SVGSVGElementBase)
 NS_IMPL_RELEASE_INHERITED(SVGSVGElement,SVGSVGElementBase)
 
 NS_INTERFACE_TABLE_HEAD_CYCLE_COLLECTION_INHERITED(SVGSVGElement)
-  NS_INTERFACE_TABLE_INHERITED3(SVGSVGElement, nsIDOMNode, nsIDOMElement,
-                                nsIDOMSVGElement)
+  NS_INTERFACE_TABLE_INHERITED(SVGSVGElement, nsIDOMNode, nsIDOMElement,
+                               nsIDOMSVGElement)
 NS_INTERFACE_TABLE_TAIL_INHERITING(SVGSVGElementBase)
 
 //----------------------------------------------------------------------
diff --git a/content/svg/content/src/SVGScriptElement.cpp b/content/svg/content/src/SVGScriptElement.cpp
index 40b2ee9f585540ca9e712d2f37eb1244f1429d11..418eb8286f2ee1fca4698f5ca45f34f74cf3f27b 100644
--- a/content/svg/content/src/SVGScriptElement.cpp
+++ b/content/svg/content/src/SVGScriptElement.cpp
@@ -29,11 +29,11 @@ nsSVGElement::StringInfo SVGScriptElement::sStringInfo[1] =
 //----------------------------------------------------------------------
 // nsISupports methods
 
-NS_IMPL_ISUPPORTS_INHERITED6(SVGScriptElement, SVGScriptElementBase,
-                             nsIDOMNode, nsIDOMElement,
-                             nsIDOMSVGElement,
-                             nsIScriptLoaderObserver,
-                             nsIScriptElement, nsIMutationObserver)
+NS_IMPL_ISUPPORTS_INHERITED(SVGScriptElement, SVGScriptElementBase,
+                            nsIDOMNode, nsIDOMElement,
+                            nsIDOMSVGElement,
+                            nsIScriptLoaderObserver,
+                            nsIScriptElement, nsIMutationObserver)
 
 //----------------------------------------------------------------------
 // Implementation
diff --git a/content/svg/content/src/SVGStyleElement.cpp b/content/svg/content/src/SVGStyleElement.cpp
index 94bccd10049fbecb0e8ba68dc81e1edd40aee103..e19590331be9e81865ba7c9993b3365570894ac9 100644
--- a/content/svg/content/src/SVGStyleElement.cpp
+++ b/content/svg/content/src/SVGStyleElement.cpp
@@ -26,9 +26,9 @@ NS_IMPL_ADDREF_INHERITED(SVGStyleElement, SVGStyleElementBase)
 NS_IMPL_RELEASE_INHERITED(SVGStyleElement, SVGStyleElementBase)
 
 NS_INTERFACE_TABLE_HEAD_CYCLE_COLLECTION_INHERITED(SVGStyleElement)
-  NS_INTERFACE_TABLE_INHERITED2(SVGStyleElement,
-                                nsIStyleSheetLinkingElement,
-                                nsIMutationObserver)
+  NS_INTERFACE_TABLE_INHERITED(SVGStyleElement,
+                               nsIStyleSheetLinkingElement,
+                               nsIMutationObserver)
 NS_INTERFACE_TABLE_TAIL_INHERITING(SVGStyleElementBase)
 
 NS_IMPL_CYCLE_COLLECTION_CLASS(SVGStyleElement)
diff --git a/content/svg/content/src/SVGSymbolElement.cpp b/content/svg/content/src/SVGSymbolElement.cpp
index 380031ae7021650a25dbabe17c2f7579e4ec8add..1e503cf84bfa25b90e847ae9f08dbe167d8bdb22 100644
--- a/content/svg/content/src/SVGSymbolElement.cpp
+++ b/content/svg/content/src/SVGSymbolElement.cpp
@@ -20,9 +20,9 @@ SVGSymbolElement::WrapNode(JSContext *aCx)
 //----------------------------------------------------------------------
 // nsISupports methods
 
-NS_IMPL_ISUPPORTS_INHERITED4(SVGSymbolElement, SVGSymbolElementBase,
-                             nsIDOMNode, nsIDOMElement,
-                             nsIDOMSVGElement, mozilla::dom::SVGTests)
+NS_IMPL_ISUPPORTS_INHERITED(SVGSymbolElement, SVGSymbolElementBase,
+                            nsIDOMNode, nsIDOMElement,
+                            nsIDOMSVGElement, mozilla::dom::SVGTests)
 
 //----------------------------------------------------------------------
 // Implementation
diff --git a/content/svg/content/src/SVGTitleElement.cpp b/content/svg/content/src/SVGTitleElement.cpp
index 7c76e08546c184ed1c47edadc94d2e405e9c9f50..6bc4f194b71d0745d7f7a5ed02c7cb3f82458488 100644
--- a/content/svg/content/src/SVGTitleElement.cpp
+++ b/content/svg/content/src/SVGTitleElement.cpp
@@ -20,10 +20,10 @@ SVGTitleElement::WrapNode(JSContext *aCx)
 //----------------------------------------------------------------------
 // nsISupports methods
 
-NS_IMPL_ISUPPORTS_INHERITED4(SVGTitleElement, SVGTitleElementBase,
-                             nsIDOMNode, nsIDOMElement,
-                             nsIDOMSVGElement,
-                             nsIMutationObserver)
+NS_IMPL_ISUPPORTS_INHERITED(SVGTitleElement, SVGTitleElementBase,
+                            nsIDOMNode, nsIDOMElement,
+                            nsIDOMSVGElement,
+                            nsIMutationObserver)
 
 //----------------------------------------------------------------------
 // Implementation
diff --git a/content/svg/content/src/SVGUseElement.cpp b/content/svg/content/src/SVGUseElement.cpp
index 16cb19239fb13f1305312abfc8f9e1a27465346b..723904a6e334d5b74750ffb9100ecea84f50aeef 100644
--- a/content/svg/content/src/SVGUseElement.cpp
+++ b/content/svg/content/src/SVGUseElement.cpp
@@ -65,7 +65,7 @@ NS_IMPL_ADDREF_INHERITED(SVGUseElement,SVGUseElementBase)
 NS_IMPL_RELEASE_INHERITED(SVGUseElement,SVGUseElementBase)
 
 NS_INTERFACE_TABLE_HEAD_CYCLE_COLLECTION_INHERITED(SVGUseElement)
-  NS_INTERFACE_TABLE_INHERITED1(SVGUseElement, nsIMutationObserver)
+  NS_INTERFACE_TABLE_INHERITED(SVGUseElement, nsIMutationObserver)
 NS_INTERFACE_TABLE_TAIL_INHERITING(SVGUseElementBase)
 
 //----------------------------------------------------------------------
diff --git a/content/svg/content/src/nsSVGElement.cpp b/content/svg/content/src/nsSVGElement.cpp
index 08355be3e3b836865f38817ea8c592e02582a6b7..23e923230c59152624833f15ab276230b9b5fa04 100644
--- a/content/svg/content/src/nsSVGElement.cpp
+++ b/content/svg/content/src/nsSVGElement.cpp
@@ -230,9 +230,9 @@ nsSVGElement::Init()
 //----------------------------------------------------------------------
 // nsISupports methods
 
-NS_IMPL_ISUPPORTS_INHERITED3(nsSVGElement, nsSVGElementBase,
-                             nsIDOMNode, nsIDOMElement,
-                             nsIDOMSVGElement)
+NS_IMPL_ISUPPORTS_INHERITED(nsSVGElement, nsSVGElementBase,
+                            nsIDOMNode, nsIDOMElement,
+                            nsIDOMSVGElement)
 
 //----------------------------------------------------------------------
 // Implementation
diff --git a/content/xml/content/src/CDATASection.cpp b/content/xml/content/src/CDATASection.cpp
index 09d40ee95c50777096c269bd9a83e028883d82d1..3f45d0f0075bb6bba2ecd555ab42094a2e5fa842 100644
--- a/content/xml/content/src/CDATASection.cpp
+++ b/content/xml/content/src/CDATASection.cpp
@@ -14,9 +14,9 @@ CDATASection::~CDATASection()
 {
 }
 
-NS_IMPL_ISUPPORTS_INHERITED4(CDATASection, nsGenericDOMDataNode, nsIDOMNode,
-                             nsIDOMCharacterData, nsIDOMText,
-                             nsIDOMCDATASection)
+NS_IMPL_ISUPPORTS_INHERITED(CDATASection, nsGenericDOMDataNode, nsIDOMNode,
+                            nsIDOMCharacterData, nsIDOMText,
+                            nsIDOMCDATASection)
 
 JSObject*
 CDATASection::WrapNode(JSContext *aCx)
diff --git a/content/xml/content/src/ProcessingInstruction.cpp b/content/xml/content/src/ProcessingInstruction.cpp
index cb50083be2e41172a6f86e81f9eccb5df1bf280d..46248ee76edf7bf7a4eab90e5e3b8accbf5a45e1 100644
--- a/content/xml/content/src/ProcessingInstruction.cpp
+++ b/content/xml/content/src/ProcessingInstruction.cpp
@@ -62,9 +62,9 @@ ProcessingInstruction::~ProcessingInstruction()
 {
 }
 
-NS_IMPL_ISUPPORTS_INHERITED3(ProcessingInstruction, nsGenericDOMDataNode,
-                             nsIDOMNode, nsIDOMCharacterData,
-                             nsIDOMProcessingInstruction)
+NS_IMPL_ISUPPORTS_INHERITED(ProcessingInstruction, nsGenericDOMDataNode,
+                            nsIDOMNode, nsIDOMCharacterData,
+                            nsIDOMProcessingInstruction)
 
 JSObject*
 ProcessingInstruction::WrapNode(JSContext *aCx)
diff --git a/content/xml/content/src/XMLStylesheetProcessingInstruction.cpp b/content/xml/content/src/XMLStylesheetProcessingInstruction.cpp
index 6e991443d5c42c2593e470109b6acd91547db998..591e04435ca7d439be830b94ceea2b5a3aecfef9 100644
--- a/content/xml/content/src/XMLStylesheetProcessingInstruction.cpp
+++ b/content/xml/content/src/XMLStylesheetProcessingInstruction.cpp
@@ -14,9 +14,9 @@ namespace dom {
 // nsISupports implementation
 
 NS_INTERFACE_TABLE_HEAD_CYCLE_COLLECTION_INHERITED(XMLStylesheetProcessingInstruction)
-  NS_INTERFACE_TABLE_INHERITED3(XMLStylesheetProcessingInstruction, nsIDOMNode,
-                                nsIDOMProcessingInstruction,
-                                nsIStyleSheetLinkingElement)
+  NS_INTERFACE_TABLE_INHERITED(XMLStylesheetProcessingInstruction, nsIDOMNode,
+                               nsIDOMProcessingInstruction,
+                               nsIStyleSheetLinkingElement)
 NS_INTERFACE_TABLE_TAIL_INHERITING(ProcessingInstruction)
 
 NS_IMPL_ADDREF_INHERITED(XMLStylesheetProcessingInstruction,
diff --git a/content/xml/content/src/nsXMLElement.cpp b/content/xml/content/src/nsXMLElement.cpp
index 486ba5b976c322380ef85b52cb0eaa4e24441843..1fa15a97e3f81d7e878dbc7bb448570bfbd67c05 100644
--- a/content/xml/content/src/nsXMLElement.cpp
+++ b/content/xml/content/src/nsXMLElement.cpp
@@ -19,8 +19,8 @@ NS_NewXMLElement(Element** aInstancePtrResult,
   return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS_INHERITED2(nsXMLElement, Element,
-                             nsIDOMNode, nsIDOMElement)
+NS_IMPL_ISUPPORTS_INHERITED(nsXMLElement, Element,
+                            nsIDOMNode, nsIDOMElement)
 
 JSObject*
 nsXMLElement::WrapNode(JSContext *aCx)
diff --git a/content/xml/document/src/XMLDocument.cpp b/content/xml/document/src/XMLDocument.cpp
index e589129a3fee2d20dbddb7d4a08162c1574da176..54da9349127f4240cab768b64fa5698cb9a33b36 100644
--- a/content/xml/document/src/XMLDocument.cpp
+++ b/content/xml/document/src/XMLDocument.cpp
@@ -228,7 +228,7 @@ XMLDocument::~XMLDocument()
 }
 
 // QueryInterface implementation for XMLDocument
-NS_IMPL_ISUPPORTS_INHERITED1(XMLDocument, nsDocument, nsIDOMXMLDocument)
+NS_IMPL_ISUPPORTS_INHERITED(XMLDocument, nsDocument, nsIDOMXMLDocument)
 
 nsresult
 XMLDocument::Init()
diff --git a/content/xml/document/src/nsXMLPrettyPrinter.cpp b/content/xml/document/src/nsXMLPrettyPrinter.cpp
index 7944e45e3402a056cbf9c8646e5a7b46acb66d0a..aacb26e404a9fd8cd19b464838bf7a78702930ff 100644
--- a/content/xml/document/src/nsXMLPrettyPrinter.cpp
+++ b/content/xml/document/src/nsXMLPrettyPrinter.cpp
@@ -29,9 +29,9 @@
 using namespace mozilla;
 using namespace mozilla::dom;
 
-NS_IMPL_ISUPPORTS2(nsXMLPrettyPrinter,
-                   nsIDocumentObserver,
-                   nsIMutationObserver)
+NS_IMPL_ISUPPORTS(nsXMLPrettyPrinter,
+                  nsIDocumentObserver,
+                  nsIMutationObserver)
 
 nsXMLPrettyPrinter::nsXMLPrettyPrinter() : mDocument(nullptr),
                                            mUnhookPending(false)
diff --git a/content/xul/content/src/nsXULElement.cpp b/content/xul/content/src/nsXULElement.cpp
index 8e239addf24e83b08ba138f8dc0280712098c1d5..ea58f5cc18aaf8d7834a56ebec9d5c4b5cc755d7 100644
--- a/content/xul/content/src/nsXULElement.cpp
+++ b/content/xul/content/src/nsXULElement.cpp
@@ -339,8 +339,8 @@ NS_IMPL_ADDREF_INHERITED(nsXULElement, nsStyledElement)
 NS_IMPL_RELEASE_INHERITED(nsXULElement, nsStyledElement)
 
 NS_INTERFACE_TABLE_HEAD_CYCLE_COLLECTION_INHERITED(nsXULElement)
-    NS_INTERFACE_TABLE_INHERITED3(nsXULElement, nsIDOMNode, nsIDOMElement,
-                                  nsIDOMXULElement)
+    NS_INTERFACE_TABLE_INHERITED(nsXULElement, nsIDOMNode, nsIDOMElement,
+                                 nsIDOMXULElement)
     NS_ELEMENT_INTERFACE_TABLE_TO_MAP_SEGUE
     NS_INTERFACE_MAP_ENTRY_TEAROFF(nsIDOMElementCSSInlineStyle,
                                    new nsXULElementTearoff(this))
diff --git a/content/xul/document/src/XULDocument.cpp b/content/xul/document/src/XULDocument.cpp
index 03ce806188f1bcf88a5fd72e8c037bee3a7d66ba..463e7170b64e4b7cd17beeac811fccc9b8f49b8f 100644
--- a/content/xul/document/src/XULDocument.cpp
+++ b/content/xul/document/src/XULDocument.cpp
@@ -354,9 +354,9 @@ NS_IMPL_RELEASE_INHERITED(XULDocument, XMLDocument)
 
 // QueryInterface implementation for XULDocument
 NS_INTERFACE_TABLE_HEAD_CYCLE_COLLECTION_INHERITED(XULDocument)
-    NS_INTERFACE_TABLE_INHERITED5(XULDocument, nsIXULDocument,
-                                  nsIDOMXULDocument, nsIStreamLoaderObserver,
-                                  nsICSSLoaderObserver, nsIOffThreadScriptReceiver)
+    NS_INTERFACE_TABLE_INHERITED(XULDocument, nsIXULDocument,
+                                 nsIDOMXULDocument, nsIStreamLoaderObserver,
+                                 nsICSSLoaderObserver, nsIOffThreadScriptReceiver)
 NS_INTERFACE_TABLE_TAIL_INHERITING(XMLDocument)
 
 
@@ -4593,8 +4593,8 @@ XULDocument::CachedChromeStreamListener::~CachedChromeStreamListener()
 }
 
 
-NS_IMPL_ISUPPORTS2(XULDocument::CachedChromeStreamListener,
-                   nsIRequestObserver, nsIStreamListener)
+NS_IMPL_ISUPPORTS(XULDocument::CachedChromeStreamListener,
+                  nsIRequestObserver, nsIStreamListener)
 
 NS_IMETHODIMP
 XULDocument::CachedChromeStreamListener::OnStartRequest(nsIRequest *request,
@@ -4642,7 +4642,7 @@ XULDocument::ParserObserver::~ParserObserver()
 {
 }
 
-NS_IMPL_ISUPPORTS1(XULDocument::ParserObserver, nsIRequestObserver)
+NS_IMPL_ISUPPORTS(XULDocument::ParserObserver, nsIRequestObserver)
 
 NS_IMETHODIMP
 XULDocument::ParserObserver::OnStartRequest(nsIRequest *request,
diff --git a/content/xul/document/src/nsXULPrototypeCache.cpp b/content/xul/document/src/nsXULPrototypeCache.cpp
index 54c17366c85ba9552ff1f6ba01b0e4cf5b9034cb..97c9316857d5ad6e73507d3881a3691fadfde014 100644
--- a/content/xul/document/src/nsXULPrototypeCache.cpp
+++ b/content/xul/document/src/nsXULPrototypeCache.cpp
@@ -80,7 +80,7 @@ nsXULPrototypeCache::~nsXULPrototypeCache()
 }
 
 
-NS_IMPL_ISUPPORTS1(nsXULPrototypeCache, nsIObserver)
+NS_IMPL_ISUPPORTS(nsXULPrototypeCache, nsIObserver)
 
 /* static */ nsXULPrototypeCache*
 nsXULPrototypeCache::GetInstance()
diff --git a/content/xul/templates/src/nsXULSortService.cpp b/content/xul/templates/src/nsXULSortService.cpp
index 3629fee0f201587183542bd58afd61ab918c3f01..246e64dd591584087a85bdca6d4b604c895e80f0 100644
--- a/content/xul/templates/src/nsXULSortService.cpp
+++ b/content/xul/templates/src/nsXULSortService.cpp
@@ -38,7 +38,7 @@
 #include "nsICollation.h"
 #include "nsUnicharUtils.h"
 
-NS_IMPL_ISUPPORTS1(XULSortServiceImpl, nsIXULSortService)
+NS_IMPL_ISUPPORTS(XULSortServiceImpl, nsIXULSortService)
 
 void
 XULSortServiceImpl::SetSortHints(nsIContent *aNode, nsSortState* aSortState)
diff --git a/content/xul/templates/src/nsXULTemplateQueryProcessorStorage.cpp b/content/xul/templates/src/nsXULTemplateQueryProcessorStorage.cpp
index 4918eb88a03ebdf592e043b8e8c880001a31a259..794ccf1a61fc59112f6c86bd1478c7f1927e5804 100644
--- a/content/xul/templates/src/nsXULTemplateQueryProcessorStorage.cpp
+++ b/content/xul/templates/src/nsXULTemplateQueryProcessorStorage.cpp
@@ -33,7 +33,7 @@
 // nsXULTemplateResultSetStorage
 //
 
-NS_IMPL_ISUPPORTS1(nsXULTemplateResultSetStorage, nsISimpleEnumerator)
+NS_IMPL_ISUPPORTS(nsXULTemplateResultSetStorage, nsISimpleEnumerator)
 
 
 nsXULTemplateResultSetStorage::nsXULTemplateResultSetStorage(mozIStorageStatement* aStatement)
@@ -142,8 +142,8 @@ nsXULTemplateResultSetStorage::FillColumnValues(nsCOMArray<nsIVariant>& aArray)
 // nsXULTemplateQueryProcessorStorage
 //
 
-NS_IMPL_ISUPPORTS1(nsXULTemplateQueryProcessorStorage,
-                   nsIXULTemplateQueryProcessor)
+NS_IMPL_ISUPPORTS(nsXULTemplateQueryProcessorStorage,
+                  nsIXULTemplateQueryProcessor)
 
 
 nsXULTemplateQueryProcessorStorage::nsXULTemplateQueryProcessorStorage() 
diff --git a/content/xul/templates/src/nsXULTemplateQueryProcessorXML.cpp b/content/xul/templates/src/nsXULTemplateQueryProcessorXML.cpp
index a88247e6345253ee51bf00e5290147b599f575a5..39c3696433341cdc61a6840b8e32af85f294668e 100644
--- a/content/xul/templates/src/nsXULTemplateQueryProcessorXML.cpp
+++ b/content/xul/templates/src/nsXULTemplateQueryProcessorXML.cpp
@@ -28,14 +28,14 @@
 
 using namespace mozilla::dom;
 
-NS_IMPL_ISUPPORTS1(nsXMLQuery, nsXMLQuery)
+NS_IMPL_ISUPPORTS(nsXMLQuery, nsXMLQuery)
 
 //----------------------------------------------------------------------
 //
 // nsXULTemplateResultSetXML
 //
 
-NS_IMPL_ISUPPORTS1(nsXULTemplateResultSetXML, nsISimpleEnumerator)
+NS_IMPL_ISUPPORTS(nsXULTemplateResultSetXML, nsISimpleEnumerator)
 
 NS_IMETHODIMP
 nsXULTemplateResultSetXML::HasMoreElements(bool *aResult)
diff --git a/content/xul/templates/src/nsXULTemplateResultSetRDF.cpp b/content/xul/templates/src/nsXULTemplateResultSetRDF.cpp
index 8ac065b188cb15afc369c5886fa48708c4c342a1..a0c28df83f3b2f15b27ff3994a6f4b1259bf741a 100644
--- a/content/xul/templates/src/nsXULTemplateResultSetRDF.cpp
+++ b/content/xul/templates/src/nsXULTemplateResultSetRDF.cpp
@@ -6,7 +6,7 @@
 #include "nsXULTemplateResultSetRDF.h"
 #include "nsXULTemplateQueryProcessorRDF.h"
 
-NS_IMPL_ISUPPORTS1(nsXULTemplateResultSetRDF, nsISimpleEnumerator)
+NS_IMPL_ISUPPORTS(nsXULTemplateResultSetRDF, nsISimpleEnumerator)
 
 NS_IMETHODIMP
 nsXULTemplateResultSetRDF::HasMoreElements(bool *aResult)
diff --git a/content/xul/templates/src/nsXULTemplateResultStorage.cpp b/content/xul/templates/src/nsXULTemplateResultStorage.cpp
index 6b9887c00738ab46da10f45e0ca0b543131e0f17..11393be86bc260f6a61b11f9259db6a5577b3a1e 100644
--- a/content/xul/templates/src/nsXULTemplateResultStorage.cpp
+++ b/content/xul/templates/src/nsXULTemplateResultStorage.cpp
@@ -9,7 +9,7 @@
 #include "nsString.h"
 #include "nsXULTemplateResultStorage.h"
 
-NS_IMPL_ISUPPORTS1(nsXULTemplateResultStorage, nsIXULTemplateResult)
+NS_IMPL_ISUPPORTS(nsXULTemplateResultStorage, nsIXULTemplateResult)
 
 nsXULTemplateResultStorage::nsXULTemplateResultStorage(nsXULTemplateResultSetStorage* aResultSet)
 {
diff --git a/content/xul/templates/src/nsXULTemplateResultXML.cpp b/content/xul/templates/src/nsXULTemplateResultXML.cpp
index c2e617191a3acbee89114d5a5dd38d22f0c54066..2c76d20a682fec8888ba2b33dc4cefcef4207e00 100644
--- a/content/xul/templates/src/nsXULTemplateResultXML.cpp
+++ b/content/xul/templates/src/nsXULTemplateResultXML.cpp
@@ -15,7 +15,7 @@
 
 static uint32_t sTemplateId = 0;
 
-NS_IMPL_ISUPPORTS1(nsXULTemplateResultXML, nsIXULTemplateResult)
+NS_IMPL_ISUPPORTS(nsXULTemplateResultXML, nsIXULTemplateResult)
 
 nsXULTemplateResultXML::nsXULTemplateResultXML(nsXMLQuery* aQuery,
                                                nsIDOMNode* aNode,
diff --git a/docshell/base/LoadContext.cpp b/docshell/base/LoadContext.cpp
index 59f203301022a7970db1b5a8838c0ecc6ad2a178..8f453f6637fd2d7f587e8e209597e3ac86bf7964 100644
--- a/docshell/base/LoadContext.cpp
+++ b/docshell/base/LoadContext.cpp
@@ -8,7 +8,7 @@
 
 namespace mozilla {
 
-NS_IMPL_ISUPPORTS2(LoadContext, nsILoadContext, nsIInterfaceRequestor)
+NS_IMPL_ISUPPORTS(LoadContext, nsILoadContext, nsIInterfaceRequestor)
 
 //-----------------------------------------------------------------------------
 // LoadContext::nsILoadContext
diff --git a/docshell/base/nsAboutRedirector.cpp b/docshell/base/nsAboutRedirector.cpp
index b7bcb35b9593a851d070de6827fb86665a6b2f6b..ff233ee1c11b26e1ced0ba0a3f5b52ed678c7ac4 100644
--- a/docshell/base/nsAboutRedirector.cpp
+++ b/docshell/base/nsAboutRedirector.cpp
@@ -9,7 +9,7 @@
 #include "nsAboutProtocolUtils.h"
 #include "mozilla/ArrayUtils.h"
 
-NS_IMPL_ISUPPORTS1(nsAboutRedirector, nsIAboutModule)
+NS_IMPL_ISUPPORTS(nsAboutRedirector, nsIAboutModule)
 
 struct RedirEntry {
     const char* id;
diff --git a/docshell/base/nsDefaultURIFixup.cpp b/docshell/base/nsDefaultURIFixup.cpp
index 5474132cd07aeec6497f5ccf8ae2c47a6e0fe73d..3f3abbeed8efbe04bfda2ce8b762ec1c1e96c351 100644
--- a/docshell/base/nsDefaultURIFixup.cpp
+++ b/docshell/base/nsDefaultURIFixup.cpp
@@ -26,7 +26,7 @@
 using namespace mozilla;
 
 /* Implementation file */
-NS_IMPL_ISUPPORTS1(nsDefaultURIFixup, nsIURIFixup)
+NS_IMPL_ISUPPORTS(nsDefaultURIFixup, nsIURIFixup)
 
 static bool sFixTypos = true;
 
diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp
index da6af7c89e8bc7d9980baac003c6b3dfe3d2b46b..76ed4567e26868f93d641e0908ddac01a89ad040 100644
--- a/docshell/base/nsDocShell.cpp
+++ b/docshell/base/nsDocShell.cpp
@@ -443,8 +443,8 @@ private:
   nsCOMPtr<nsITimer> mTimer;
 };
 
-NS_IMPL_ISUPPORTS4(nsPingListener, nsIStreamListener, nsIRequestObserver,
-                   nsIInterfaceRequestor, nsIChannelEventSink)
+NS_IMPL_ISUPPORTS(nsPingListener, nsIStreamListener, nsIRequestObserver,
+                  nsIInterfaceRequestor, nsIChannelEventSink)
 
 nsPingListener::~nsPingListener()
 {
@@ -8746,7 +8746,7 @@ private:
     bool mInPrivateBrowsing;
 };
 
-NS_IMPL_ISUPPORTS1(nsCopyFaviconCallback, nsIFaviconDataCallback)
+NS_IMPL_ISUPPORTS(nsCopyFaviconCallback, nsIFaviconDataCallback)
 #endif
 
 // Tell the favicon service that aNewURI has the same favicon as aOldURI.
@@ -12163,7 +12163,7 @@ nsDocShell::InterfaceRequestorProxy::~InterfaceRequestorProxy()
     mWeakPtr = nullptr;
 }
 
-NS_IMPL_ISUPPORTS1(nsDocShell::InterfaceRequestorProxy, nsIInterfaceRequestor) 
+NS_IMPL_ISUPPORTS(nsDocShell::InterfaceRequestorProxy, nsIInterfaceRequestor) 
   
 NS_IMETHODIMP 
 nsDocShell::InterfaceRequestorProxy::GetInterface(const nsIID & aIID, void **aSink)
diff --git a/docshell/base/nsDocShellEnumerator.cpp b/docshell/base/nsDocShellEnumerator.cpp
index 8122a9b464f325972ad94c1345fc84a012f26710..4648190b79d005899e1ddbbc252940101a08f33f 100644
--- a/docshell/base/nsDocShellEnumerator.cpp
+++ b/docshell/base/nsDocShellEnumerator.cpp
@@ -22,7 +22,7 @@ nsDocShellEnumerator::~nsDocShellEnumerator()
 {
 }
 
-NS_IMPL_ISUPPORTS1(nsDocShellEnumerator, nsISimpleEnumerator)
+NS_IMPL_ISUPPORTS(nsDocShellEnumerator, nsISimpleEnumerator)
 
 
 /* nsISupports getNext (); */
diff --git a/docshell/base/nsDocShellTransferableHooks.cpp b/docshell/base/nsDocShellTransferableHooks.cpp
index 1e3461220a25810595ef4165b80111c120db0bea..1e7f647203371690b1805a805a9c484f7ae944ad 100644
--- a/docshell/base/nsDocShellTransferableHooks.cpp
+++ b/docshell/base/nsDocShellTransferableHooks.cpp
@@ -20,7 +20,7 @@ nsTransferableHookData::~nsTransferableHookData()
 // nsIClipboardDragDropHookList
 //*****************************************************************************
 
-NS_IMPL_ISUPPORTS1(nsTransferableHookData, nsIClipboardDragDropHookList)
+NS_IMPL_ISUPPORTS(nsTransferableHookData, nsIClipboardDragDropHookList)
 
 NS_IMETHODIMP
 nsTransferableHookData::AddClipboardDragDropHooks(
diff --git a/docshell/base/nsDownloadHistory.cpp b/docshell/base/nsDownloadHistory.cpp
index 5100c6e9bc120a17e60fe797bdd622d91cc631ad..a03b504ae865d868129d09ff7ac6214f24529d6c 100644
--- a/docshell/base/nsDownloadHistory.cpp
+++ b/docshell/base/nsDownloadHistory.cpp
@@ -14,7 +14,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 //// nsDownloadHistory
 
-NS_IMPL_ISUPPORTS1(nsDownloadHistory, nsIDownloadHistory)
+NS_IMPL_ISUPPORTS(nsDownloadHistory, nsIDownloadHistory)
 
 ////////////////////////////////////////////////////////////////////////////////
 //// nsIDownloadHistory
diff --git a/docshell/base/nsWebNavigationInfo.cpp b/docshell/base/nsWebNavigationInfo.cpp
index 31f107e175d1605dec07e90950ad380d6b3c46e4..1fb38d6d807cbe6f6348f98985d0586c1529ec19 100644
--- a/docshell/base/nsWebNavigationInfo.cpp
+++ b/docshell/base/nsWebNavigationInfo.cpp
@@ -12,7 +12,7 @@
 #include "nsContentUtils.h"
 #include "imgLoader.h"
 
-NS_IMPL_ISUPPORTS1(nsWebNavigationInfo, nsIWebNavigationInfo)
+NS_IMPL_ISUPPORTS(nsWebNavigationInfo, nsIWebNavigationInfo)
 
 #define CONTENT_DLF_CONTRACT "@mozilla.org/content/document-loader-factory;1"
 #define PLUGIN_DLF_CONTRACT \
diff --git a/docshell/shistory/src/nsSHEntry.cpp b/docshell/shistory/src/nsSHEntry.cpp
index a3e2b711480b9183f1f202476fd79462e35420b4..8e52757359fc4ac652aa428f66881cce56134ec5 100644
--- a/docshell/shistory/src/nsSHEntry.cpp
+++ b/docshell/shistory/src/nsSHEntry.cpp
@@ -76,7 +76,7 @@ nsSHEntry::~nsSHEntry()
 //    nsSHEntry: nsISupports
 //*****************************************************************************
 
-NS_IMPL_ISUPPORTS3(nsSHEntry, nsISHContainer, nsISHEntry, nsISHEntryInternal)
+NS_IMPL_ISUPPORTS(nsSHEntry, nsISHContainer, nsISHEntry, nsISHEntryInternal)
 
 //*****************************************************************************
 //    nsSHEntry: nsISHEntry
diff --git a/docshell/shistory/src/nsSHEntryShared.cpp b/docshell/shistory/src/nsSHEntryShared.cpp
index e24a6010d5c407e2b181eb1fab6fec777088e68e..0586c363c9ef83d9656b8147495a30d0046af8ce 100644
--- a/docshell/shistory/src/nsSHEntryShared.cpp
+++ b/docshell/shistory/src/nsSHEntryShared.cpp
@@ -95,7 +95,7 @@ nsSHEntryShared::~nsSHEntryShared()
   }
 }
 
-NS_IMPL_ISUPPORTS2(nsSHEntryShared, nsIBFCacheEntry, nsIMutationObserver)
+NS_IMPL_ISUPPORTS(nsSHEntryShared, nsIBFCacheEntry, nsIMutationObserver)
 
 already_AddRefed<nsSHEntryShared>
 nsSHEntryShared::Duplicate(nsSHEntryShared *aEntry)
diff --git a/docshell/shistory/src/nsSHistory.cpp b/docshell/shistory/src/nsSHistory.cpp
index fc3a5107a707dfc9066270e7a93a978cf6986652..5c7f85e204f0edb0b935339b80fd87ffaf04cb83 100644
--- a/docshell/shistory/src/nsSHistory.cpp
+++ b/docshell/shistory/src/nsSHistory.cpp
@@ -181,7 +181,7 @@ protected:
 
 static nsSHistoryObserver* gObserver = nullptr;
 
-NS_IMPL_ISUPPORTS1(nsSHistoryObserver, nsIObserver)
+NS_IMPL_ISUPPORTS(nsSHistoryObserver, nsIObserver)
 
 NS_IMETHODIMP
 nsSHistoryObserver::Observe(nsISupports *aSubject, const char *aTopic,
@@ -1838,7 +1838,7 @@ nsSHEnumerator::~nsSHEnumerator()
   mSHistory = nullptr;
 }
 
-NS_IMPL_ISUPPORTS1(nsSHEnumerator, nsISimpleEnumerator)
+NS_IMPL_ISUPPORTS(nsSHEnumerator, nsISimpleEnumerator)
 
 NS_IMETHODIMP
 nsSHEnumerator::HasMoreElements(bool * aReturn)
diff --git a/dom/alarm/AlarmHalService.cpp b/dom/alarm/AlarmHalService.cpp
index e6cc50485f35492e189e17c361aa6d71a1873903..47b4c57a723dfe9a9fd11ca580b15ab8c9c41a77 100644
--- a/dom/alarm/AlarmHalService.cpp
+++ b/dom/alarm/AlarmHalService.cpp
@@ -10,7 +10,7 @@ namespace alarm {
 
 using namespace hal;
 
-NS_IMPL_ISUPPORTS1(AlarmHalService, nsIAlarmHalService)
+NS_IMPL_ISUPPORTS(AlarmHalService, nsIAlarmHalService)
 
 void
 AlarmHalService::Init()
diff --git a/dom/audiochannel/AudioChannelService.cpp b/dom/audiochannel/AudioChannelService.cpp
index 48770e73fc14435b84ea94390ee9455e980b0607..6efff476bafa08638380c2c9b96901e461235b26 100644
--- a/dom/audiochannel/AudioChannelService.cpp
+++ b/dom/audiochannel/AudioChannelService.cpp
@@ -84,7 +84,7 @@ AudioChannelService::Shutdown()
   }
 }
 
-NS_IMPL_ISUPPORTS2(AudioChannelService, nsIObserver, nsITimerCallback)
+NS_IMPL_ISUPPORTS(AudioChannelService, nsIObserver, nsITimerCallback)
 
 AudioChannelService::AudioChannelService()
 : mCurrentHigherChannel(-1)
diff --git a/dom/audiochannel/tests/TestAudioChannelService.cpp b/dom/audiochannel/tests/TestAudioChannelService.cpp
index 7629e3df2a505e39fb75ae33c908a87a3fa2f514..32fd3c110fcc9147a5708f75c455d16f7ab5f4f5 100644
--- a/dom/audiochannel/tests/TestAudioChannelService.cpp
+++ b/dom/audiochannel/tests/TestAudioChannelService.cpp
@@ -135,8 +135,8 @@ public:
   AudioChannelState mCanPlay;
 };
 
-NS_IMPL_ISUPPORTS2(Agent, nsIAudioChannelAgentCallback,
-                   nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(Agent, nsIAudioChannelAgentCallback,
+                  nsISupportsWeakReference)
 
 nsresult
 TestDoubleStartPlaying()
diff --git a/dom/base/CompositionStringSynthesizer.cpp b/dom/base/CompositionStringSynthesizer.cpp
index 9d47a576ded190bc42d89b7c13c423a3802238db..728e45bfc5a4ff26e3a7d6b921644582d4bcd1e3 100644
--- a/dom/base/CompositionStringSynthesizer.cpp
+++ b/dom/base/CompositionStringSynthesizer.cpp
@@ -16,8 +16,8 @@
 namespace mozilla {
 namespace dom {
 
-NS_IMPL_ISUPPORTS1(CompositionStringSynthesizer,
-                   nsICompositionStringSynthesizer)
+NS_IMPL_ISUPPORTS(CompositionStringSynthesizer,
+                  nsICompositionStringSynthesizer)
 
 CompositionStringSynthesizer::CompositionStringSynthesizer(
                                 nsPIDOMWindow* aWindow)
diff --git a/dom/base/DOMException.cpp b/dom/base/DOMException.cpp
index fb0a6d7f7a8a1eee9bdc0416f5db022126dc3c62..9ad82327e004a891c22fcc89a525a67f3fdd4c89 100644
--- a/dom/base/DOMException.cpp
+++ b/dom/base/DOMException.cpp
@@ -171,7 +171,7 @@ NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(Exception)
   tmp->mThrownJSVal.setNull();
 NS_IMPL_CYCLE_COLLECTION_UNLINK_END
 
-NS_IMPL_CI_INTERFACE_GETTER1(Exception, nsIXPCException)
+NS_IMPL_CI_INTERFACE_GETTER(Exception, nsIXPCException)
 
 Exception::Exception(const nsACString& aMessage,
                      nsresult aResult,
diff --git a/dom/base/DOMRequest.cpp b/dom/base/DOMRequest.cpp
index a440fc6bf9ed9008bf431cf79252b7d676cea7fc..0914314e4378a6bfff48c90082e45d6023b73146 100644
--- a/dom/base/DOMRequest.cpp
+++ b/dom/base/DOMRequest.cpp
@@ -175,7 +175,7 @@ DOMRequest::RootResultVal()
   mozilla::HoldJSObjects(this);
 }
 
-NS_IMPL_ISUPPORTS1(DOMRequestService, nsIDOMRequestService)
+NS_IMPL_ISUPPORTS(DOMRequestService, nsIDOMRequestService)
 
 NS_IMETHODIMP
 DOMRequestService::CreateRequest(nsIDOMWindow* aWindow,
diff --git a/dom/base/Navigator.cpp b/dom/base/Navigator.cpp
index 7ac36c43279da2af79fd39d37f96b3910a84a77b..df1eaa6b510d70b50c6805594f016fe13ef667e1 100644
--- a/dom/base/Navigator.cpp
+++ b/dom/base/Navigator.cpp
@@ -658,7 +658,7 @@ private:
   nsWeakPtr mDocument;
 };
 
-NS_IMPL_ISUPPORTS1(VibrateWindowListener, nsIDOMEventListener)
+NS_IMPL_ISUPPORTS(VibrateWindowListener, nsIDOMEventListener)
 
 StaticRefPtr<VibrateWindowListener> gVibrateWindowListener;
 
@@ -1017,9 +1017,9 @@ class BeaconStreamListener MOZ_FINAL : public nsIStreamListener
     NS_DECL_NSIREQUESTOBSERVER
 };
 
-NS_IMPL_ISUPPORTS2(BeaconStreamListener,
-                   nsIStreamListener,
-                   nsIRequestObserver)
+NS_IMPL_ISUPPORTS(BeaconStreamListener,
+                  nsIStreamListener,
+                  nsIRequestObserver)
 
 
 NS_IMETHODIMP
diff --git a/dom/base/nsContentPermissionHelper.cpp b/dom/base/nsContentPermissionHelper.cpp
index 53a7b044a0c4ec44ea6e2ebb7f35f4f8e121efa9..f47cc24e30f78672cc40adac3d56452621dc03af 100644
--- a/dom/base/nsContentPermissionHelper.cpp
+++ b/dom/base/nsContentPermissionHelper.cpp
@@ -94,7 +94,7 @@ ContentPermissionRequestParent::IsBeingDestroyed()
   return tabParent->IsDestroyed();
 }
 
-NS_IMPL_ISUPPORTS1(ContentPermissionType, nsIContentPermissionType)
+NS_IMPL_ISUPPORTS(ContentPermissionType, nsIContentPermissionType)
 
 ContentPermissionType::ContentPermissionType(const nsACString& aType,
                                              const nsACString& aAccess,
@@ -227,7 +227,7 @@ nsContentPermissionRequestProxy::OnParentDestroyed()
   mParent = nullptr;
 }
 
-NS_IMPL_ISUPPORTS1(nsContentPermissionRequestProxy, nsIContentPermissionRequest)
+NS_IMPL_ISUPPORTS(nsContentPermissionRequestProxy, nsIContentPermissionRequest)
 
 NS_IMETHODIMP
 nsContentPermissionRequestProxy::GetTypes(nsIArray** aTypes)
diff --git a/dom/base/nsGlobalWindow.cpp b/dom/base/nsGlobalWindow.cpp
index 1511d78f4f285f06f6df5ab8bcc78dbd97705112..aee6f7fe4115edb74858d24644017dfd114854a2 100644
--- a/dom/base/nsGlobalWindow.cpp
+++ b/dom/base/nsGlobalWindow.cpp
@@ -502,7 +502,7 @@ private:
   nsGlobalWindow* mWindow;
 };
 
-NS_IMPL_ISUPPORTS2(nsGlobalWindowObserver, nsIObserver, nsIInterfaceRequestor)
+NS_IMPL_ISUPPORTS(nsGlobalWindowObserver, nsIObserver, nsIInterfaceRequestor)
 
 nsTimeout::nsTimeout()
   : mCleared(false),
@@ -2154,7 +2154,7 @@ WindowStateHolder::~WindowStateHolder()
   }
 }
 
-NS_IMPL_ISUPPORTS1(WindowStateHolder, WindowStateHolder)
+NS_IMPL_ISUPPORTS(WindowStateHolder, WindowStateHolder)
 
 // We need certain special behavior for remote XUL whitelisted domains, but we
 // don't want that behavior to take effect in automation, because we whitelist
diff --git a/dom/base/nsGlobalWindowCommands.cpp b/dom/base/nsGlobalWindowCommands.cpp
index 3623fe6b42eeb0ce39c28e45e6687475a9c9c8e7..d6d81517008d3d094eeba1d3236717bbeec7bf20 100644
--- a/dom/base/nsGlobalWindowCommands.cpp
+++ b/dom/base/nsGlobalWindowCommands.cpp
@@ -132,7 +132,7 @@ public:
 #endif
 
 
-NS_IMPL_ISUPPORTS1(nsSelectionCommandsBase, nsIControllerCommand)
+NS_IMPL_ISUPPORTS(nsSelectionCommandsBase, nsIControllerCommand)
 
 /* boolean isCommandEnabled (in string aCommandName, in nsISupports aCommandContext); */
 NS_IMETHODIMP
@@ -329,7 +329,7 @@ public:
   NS_DECL_NSICONTROLLERCOMMAND
 };
 
-NS_IMPL_ISUPPORTS1(nsClipboardCommand, nsIControllerCommand)
+NS_IMPL_ISUPPORTS(nsClipboardCommand, nsIControllerCommand)
 
 nsresult
 nsClipboardCommand::IsCommandEnabled(const char* aCommandName, nsISupports *aContext, bool *outCmdEnabled)
@@ -403,7 +403,7 @@ protected:
 };
 
 
-NS_IMPL_ISUPPORTS1(nsSelectionCommand, nsIControllerCommand)
+NS_IMPL_ISUPPORTS(nsSelectionCommand, nsIControllerCommand)
 
 
 /*---------------------------------------------------------------------------
@@ -634,7 +634,7 @@ protected:
      no params
 ----------------------------------------------------------------------------*/
 
-NS_IMPL_ISUPPORTS1(nsWebNavigationBaseCommand, nsIControllerCommand)
+NS_IMPL_ISUPPORTS(nsWebNavigationBaseCommand, nsIControllerCommand)
 
 NS_IMETHODIMP
 nsWebNavigationBaseCommand::IsCommandEnabled(const char * aCommandName,
@@ -732,7 +732,7 @@ protected:
 };
 
 
-NS_IMPL_ISUPPORTS1(nsClipboardDragDropHookCommand, nsIControllerCommand)
+NS_IMPL_ISUPPORTS(nsClipboardDragDropHookCommand, nsIControllerCommand)
 
 NS_IMETHODIMP
 nsClipboardDragDropHookCommand::IsCommandEnabled(const char * aCommandName,
diff --git a/dom/base/nsIDOMClassInfo.h b/dom/base/nsIDOMClassInfo.h
index d948cd199897ebe24f35370ebd157a7fa6d4f1e4..88bf268b3bca6a5341603fd6bad701bf810a7d6f 100644
--- a/dom/base/nsIDOMClassInfo.h
+++ b/dom/base/nsIDOMClassInfo.h
@@ -137,7 +137,7 @@ NS_DOMCI_EXTENSION_NAME(_module)::~NS_DOMCI_EXTENSION_NAME(_module)()     \
 {                                                                         \
 }                                                                         \
                                                                           \
-NS_IMPL_ISUPPORTS1(NS_DOMCI_EXTENSION_NAME(_module), nsIDOMCIExtension)   \
+NS_IMPL_ISUPPORTS(NS_DOMCI_EXTENSION_NAME(_module), nsIDOMCIExtension)    \
                                                                           \
 NS_IMETHODIMP                                                             \
 NS_DOMCI_EXTENSION_NAME(_module)::RegisterDOMCI(const char* aName,        \
diff --git a/dom/base/nsJSEnvironment.cpp b/dom/base/nsJSEnvironment.cpp
index b44ac1c6a6bd9a4fc2c8195e05944c454fb995b1..441da91694e54df6068bf1f6b38c684780d1a465 100644
--- a/dom/base/nsJSEnvironment.cpp
+++ b/dom/base/nsJSEnvironment.cpp
@@ -262,7 +262,7 @@ public:
   NS_DECL_NSIOBSERVER
 };
 
-NS_IMPL_ISUPPORTS1(nsJSEnvironmentObserver, nsIObserver)
+NS_IMPL_ISUPPORTS(nsJSEnvironmentObserver, nsIObserver)
 
 NS_IMETHODIMP
 nsJSEnvironmentObserver::Observe(nsISupports* aSubject, const char* aTopic,
diff --git a/dom/base/nsScreen.cpp b/dom/base/nsScreen.cpp
index d1a3023911075528cce26ed6e7331ea856d05f66..2dd4c5fe5f9f30bd7184f4df6c33f5a31e313f3f 100644
--- a/dom/base/nsScreen.cpp
+++ b/dom/base/nsScreen.cpp
@@ -327,7 +327,7 @@ nsScreen::WrapObject(JSContext* aCx)
   return ScreenBinding::Wrap(aCx, this);
 }
 
-NS_IMPL_ISUPPORTS1(nsScreen::FullScreenEventListener, nsIDOMEventListener)
+NS_IMPL_ISUPPORTS(nsScreen::FullScreenEventListener, nsIDOMEventListener)
 
 NS_IMETHODIMP
 nsScreen::FullScreenEventListener::HandleEvent(nsIDOMEvent* aEvent)
diff --git a/dom/base/nsScriptNameSpaceManager.cpp b/dom/base/nsScriptNameSpaceManager.cpp
index a485ffc18bb99a7e5fb53b8491e4cdcee3b147d0..6434f7081e870a0c1d442e0a973eeba90bd6e882 100644
--- a/dom/base/nsScriptNameSpaceManager.cpp
+++ b/dom/base/nsScriptNameSpaceManager.cpp
@@ -116,7 +116,7 @@ GlobalNameHashInitEntry(PLDHashTable *table, PLDHashEntryHdr *entry,
   return true;
 }
 
-NS_IMPL_ISUPPORTS3(
+NS_IMPL_ISUPPORTS(
   nsScriptNameSpaceManager,
   nsIObserver,
   nsISupportsWeakReference,
diff --git a/dom/base/nsWindowMemoryReporter.cpp b/dom/base/nsWindowMemoryReporter.cpp
index 24289f0df108e6a84624efe67703c0c098e77085..8280ec05025af14250e17810d2a2a438ba7e69ee 100644
--- a/dom/base/nsWindowMemoryReporter.cpp
+++ b/dom/base/nsWindowMemoryReporter.cpp
@@ -42,8 +42,8 @@ nsWindowMemoryReporter::~nsWindowMemoryReporter()
   KillCheckTimer();
 }
 
-NS_IMPL_ISUPPORTS3(nsWindowMemoryReporter, nsIMemoryReporter, nsIObserver,
-                   nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(nsWindowMemoryReporter, nsIMemoryReporter, nsIObserver,
+                  nsISupportsWeakReference)
 
 static nsresult
 AddNonJSSizeOfWindowAndItsDescendents(nsGlobalWindow* aWindow,
@@ -882,8 +882,8 @@ nsWindowMemoryReporter::CheckForGhostWindows(
                              &ghostEnumData);
 }
 
-NS_IMPL_ISUPPORTS1(nsWindowMemoryReporter::GhostWindowsReporter,
-                   nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(nsWindowMemoryReporter::GhostWindowsReporter,
+                  nsIMemoryReporter)
 
 /* static */ int64_t
 nsWindowMemoryReporter::GhostWindowsReporter::DistinguishedAmount()
diff --git a/dom/bluetooth/BluetoothHidManager.cpp b/dom/bluetooth/BluetoothHidManager.cpp
index 5c8a5c7ecd7be4a0d3e075fdc7ad871257c7e4c5..3f08e09b148f27329f0ccc3f45afd6f6727448b6 100644
--- a/dom/bluetooth/BluetoothHidManager.cpp
+++ b/dom/bluetooth/BluetoothHidManager.cpp
@@ -267,4 +267,4 @@ BluetoothHidManager::GetAddress(nsAString& aDeviceAddress)
   aDeviceAddress = mDeviceAddress;
 }
 
-NS_IMPL_ISUPPORTS1(BluetoothHidManager, nsIObserver)
+NS_IMPL_ISUPPORTS(BluetoothHidManager, nsIObserver)
diff --git a/dom/bluetooth/BluetoothProfileController.cpp b/dom/bluetooth/BluetoothProfileController.cpp
index a7e4cb4dd087d530516c8e2865d37f4c86d45322..29a2f041fda50c18bb483d3bbf3179e54b162256 100644
--- a/dom/bluetooth/BluetoothProfileController.cpp
+++ b/dom/bluetooth/BluetoothProfileController.cpp
@@ -197,7 +197,7 @@ BluetoothProfileController::SetupProfiles(bool aAssignServiceClass)
   }
 }
 
-NS_IMPL_ISUPPORTS1(CheckProfileStatusCallback, nsITimerCallback)
+NS_IMPL_ISUPPORTS(CheckProfileStatusCallback, nsITimerCallback)
 
 NS_IMETHODIMP
 CheckProfileStatusCallback::Notify(nsITimer* aTimer)
diff --git a/dom/bluetooth/BluetoothRilListener.cpp b/dom/bluetooth/BluetoothRilListener.cpp
index 87c5e2386763e75fb3736c5b1fdf63711d40d811..b4032bc6f2ff1fbd584d08a796c5abf7ca54584b 100644
--- a/dom/bluetooth/BluetoothRilListener.cpp
+++ b/dom/bluetooth/BluetoothRilListener.cpp
@@ -18,7 +18,7 @@ USING_BLUETOOTH_NAMESPACE
 /**
  *  IccListener
  */
-NS_IMPL_ISUPPORTS1(IccListener, nsIIccListener)
+NS_IMPL_ISUPPORTS(IccListener, nsIIccListener)
 
 NS_IMETHODIMP
 IccListener::NotifyIccInfoChanged()
@@ -80,7 +80,7 @@ IccListener::SetOwner(BluetoothRilListener *aOwner)
 /**
  *  MobileConnectionListener
  */
-NS_IMPL_ISUPPORTS1(MobileConnectionListener, nsIMobileConnectionListener)
+NS_IMPL_ISUPPORTS(MobileConnectionListener, nsIMobileConnectionListener)
 
 NS_IMETHODIMP
 MobileConnectionListener::NotifyVoiceChanged()
@@ -168,7 +168,7 @@ MobileConnectionListener::Listen(bool aStart)
 /**
  *  TelephonyListener Implementation
  */
-NS_IMPL_ISUPPORTS1(TelephonyListener, nsITelephonyListener)
+NS_IMPL_ISUPPORTS(TelephonyListener, nsITelephonyListener)
 
 NS_IMETHODIMP
 TelephonyListener::CallStateChanged(uint32_t aServiceId,
diff --git a/dom/bluetooth/BluetoothService.cpp b/dom/bluetooth/BluetoothService.cpp
index c1cd2e132db7714b303bf54b23591a44dd583d4a..c2ff5fd2953f4b7c5906700d3ec729bc29dc000d 100644
--- a/dom/bluetooth/BluetoothService.cpp
+++ b/dom/bluetooth/BluetoothService.cpp
@@ -205,9 +205,9 @@ public:
   }
 };
 
-NS_IMPL_ISUPPORTS1(BluetoothService::StartupTask, nsISettingsServiceCallback);
+NS_IMPL_ISUPPORTS(BluetoothService::StartupTask, nsISettingsServiceCallback);
 
-NS_IMPL_ISUPPORTS1(BluetoothService, nsIObserver)
+NS_IMPL_ISUPPORTS(BluetoothService, nsIObserver)
 
 bool
 BluetoothService::IsToggling() const
diff --git a/dom/bluetooth/bluedroid/BluetoothA2dpManager.cpp b/dom/bluetooth/bluedroid/BluetoothA2dpManager.cpp
index fd37f0552f8b649deb8e22e1f6166e0be1fb1ca9..0c87ac6b2386715a44b5de9ae07ab741490c720f 100644
--- a/dom/bluetooth/bluedroid/BluetoothA2dpManager.cpp
+++ b/dom/bluetooth/bluedroid/BluetoothA2dpManager.cpp
@@ -1102,5 +1102,5 @@ BluetoothA2dpManager::GetArtist(nsAString& aArtist)
   aArtist.Assign(mArtist);
 }
 
-NS_IMPL_ISUPPORTS1(BluetoothA2dpManager, nsIObserver)
+NS_IMPL_ISUPPORTS(BluetoothA2dpManager, nsIObserver)
 
diff --git a/dom/bluetooth/bluedroid/BluetoothOppManager.cpp b/dom/bluetooth/bluedroid/BluetoothOppManager.cpp
index c6e591c003d29f66c48db8b923b5b62ed3bf98ca..c55faf3d7a68d8cc9b136f4959729cc11ba7d8c8 100644
--- a/dom/bluetooth/bluedroid/BluetoothOppManager.cpp
+++ b/dom/bluetooth/bluedroid/BluetoothOppManager.cpp
@@ -1433,7 +1433,7 @@ BluetoothOppManager::Disconnect(BluetoothProfileController* aController)
   }
 }
 
-NS_IMPL_ISUPPORTS1(BluetoothOppManager, nsIObserver)
+NS_IMPL_ISUPPORTS(BluetoothOppManager, nsIObserver)
 
 bool
 BluetoothOppManager::AcquireSdcardMountLock()
diff --git a/dom/bluetooth/bluedroid/hfp-fallback/BluetoothHfpManager.cpp b/dom/bluetooth/bluedroid/hfp-fallback/BluetoothHfpManager.cpp
index cc55ca7c1898e51f9ffcf74299c9588fe484c2b6..5b698ca9dd55a44000a22f7640a9ea8d98bd1e89 100644
--- a/dom/bluetooth/bluedroid/hfp-fallback/BluetoothHfpManager.cpp
+++ b/dom/bluetooth/bluedroid/hfp-fallback/BluetoothHfpManager.cpp
@@ -186,4 +186,4 @@ BluetoothHfpManager::Reset()
   MOZ_ASSERT(NS_IsMainThread());
 }
 
-NS_IMPL_ISUPPORTS1(BluetoothHfpManager, nsIObserver)
+NS_IMPL_ISUPPORTS(BluetoothHfpManager, nsIObserver)
diff --git a/dom/bluetooth/bluedroid/hfp/BluetoothHfpManager.cpp b/dom/bluetooth/bluedroid/hfp/BluetoothHfpManager.cpp
index 5501508b712a82158f65b07f934985e36b8018d6..71507f456f7135c020d1f784405fdedc6e702383 100644
--- a/dom/bluetooth/bluedroid/hfp/BluetoothHfpManager.cpp
+++ b/dom/bluetooth/bluedroid/hfp/BluetoothHfpManager.cpp
@@ -309,8 +309,8 @@ private:
   nsString mParameter;
 };
 
-NS_IMPL_ISUPPORTS1(BluetoothHfpManager::GetVolumeTask,
-                   nsISettingsServiceCallback);
+NS_IMPL_ISUPPORTS(BluetoothHfpManager::GetVolumeTask,
+                  nsISettingsServiceCallback);
 
 /**
  *  Call
@@ -1426,4 +1426,4 @@ BluetoothHfpManager::GetAddress(nsAString& aDeviceAddress)
   aDeviceAddress = mDeviceAddress;
 }
 
-NS_IMPL_ISUPPORTS1(BluetoothHfpManager, nsIObserver)
+NS_IMPL_ISUPPORTS(BluetoothHfpManager, nsIObserver)
diff --git a/dom/bluetooth/bluez/BluetoothA2dpManager.cpp b/dom/bluetooth/bluez/BluetoothA2dpManager.cpp
index e77d72797a7802029101c0d2456d8bfa447d49ea..cbf2abe9fc3e906b7db603aab503ddf2056ece79 100644
--- a/dom/bluetooth/bluez/BluetoothA2dpManager.cpp
+++ b/dom/bluetooth/bluez/BluetoothA2dpManager.cpp
@@ -473,5 +473,5 @@ BluetoothA2dpManager::GetTitle(nsAString& aTitle)
   aTitle.Assign(mTitle);
 }
 
-NS_IMPL_ISUPPORTS1(BluetoothA2dpManager, nsIObserver)
+NS_IMPL_ISUPPORTS(BluetoothA2dpManager, nsIObserver)
 
diff --git a/dom/bluetooth/bluez/BluetoothHfpManager.cpp b/dom/bluetooth/bluez/BluetoothHfpManager.cpp
index 4c4ee9a34183e443acc467a1aeb6823e3adbc8b5..a688759ade8a09beb2e98fd39e24932aea259ac5 100644
--- a/dom/bluetooth/bluez/BluetoothHfpManager.cpp
+++ b/dom/bluetooth/bluez/BluetoothHfpManager.cpp
@@ -195,8 +195,8 @@ public:
   }
 };
 
-NS_IMPL_ISUPPORTS1(BluetoothHfpManager::GetVolumeTask,
-                   nsISettingsServiceCallback);
+NS_IMPL_ISUPPORTS(BluetoothHfpManager::GetVolumeTask,
+                  nsISettingsServiceCallback);
 
 NS_IMETHODIMP
 BluetoothHfpManager::Observe(nsISupports* aSubject,
@@ -2042,5 +2042,5 @@ BluetoothHfpManager::OnDisconnect(const nsAString& aErrorStr)
   controller->NotifyCompletion(aErrorStr);
 }
 
-NS_IMPL_ISUPPORTS1(BluetoothHfpManager, nsIObserver)
+NS_IMPL_ISUPPORTS(BluetoothHfpManager, nsIObserver)
 
diff --git a/dom/bluetooth/bluez/BluetoothOppManager.cpp b/dom/bluetooth/bluez/BluetoothOppManager.cpp
index 2f0a8d4ce0f83bfe8972e1b49be584b33ba04e13..b211c46037337a65fef8b9a0f69ee7be7a3a96aa 100644
--- a/dom/bluetooth/bluez/BluetoothOppManager.cpp
+++ b/dom/bluetooth/bluez/BluetoothOppManager.cpp
@@ -1576,7 +1576,7 @@ BluetoothOppManager::OnUpdateSdpRecords(const nsAString& aDeviceAddress)
   }
 }
 
-NS_IMPL_ISUPPORTS1(BluetoothOppManager, nsIObserver)
+NS_IMPL_ISUPPORTS(BluetoothOppManager, nsIObserver)
 
 bool
 BluetoothOppManager::AcquireSdcardMountLock()
diff --git a/dom/camera/DOMCameraControl.cpp b/dom/camera/DOMCameraControl.cpp
index 32309a5884455ec6b3ed14108f19cc4ea6a85f4a..36666a0b97efa69cfba46193eae40f45360f9564 100644
--- a/dom/camera/DOMCameraControl.cpp
+++ b/dom/camera/DOMCameraControl.cpp
@@ -106,7 +106,7 @@ StartRecordingHelper::HandleEvent(nsIDOMEvent* aEvent)
   return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS1(mozilla::StartRecordingHelper, nsIDOMEventListener)
+NS_IMPL_ISUPPORTS(mozilla::StartRecordingHelper, nsIDOMEventListener)
 
 nsDOMCameraControl::DOMCameraConfiguration::DOMCameraConfiguration()
   : CameraConfiguration()
diff --git a/dom/cellbroadcast/src/CellBroadcast.cpp b/dom/cellbroadcast/src/CellBroadcast.cpp
index cb43c4b9d564522bfd8b7ef9bc6d8471781475bb..fede3566ed744120539c76e71f26f553dbf139bf 100644
--- a/dom/cellbroadcast/src/CellBroadcast.cpp
+++ b/dom/cellbroadcast/src/CellBroadcast.cpp
@@ -40,7 +40,7 @@ public:
   }
 };
 
-NS_IMPL_ISUPPORTS1(CellBroadcast::Listener, nsICellBroadcastListener)
+NS_IMPL_ISUPPORTS(CellBroadcast::Listener, nsICellBroadcastListener)
 
 /**
  * CellBroadcast Implementation.
diff --git a/dom/devicestorage/nsDeviceStorage.cpp b/dom/devicestorage/nsDeviceStorage.cpp
index b0eba80c369d77fe79e912af056e7a2e64362408..031769eef3e8307aa82e8b684004f81424fed1d3 100644
--- a/dom/devicestorage/nsDeviceStorage.cpp
+++ b/dom/devicestorage/nsDeviceStorage.cpp
@@ -438,7 +438,7 @@ DeviceStorageTypeChecker::IsVolumeBased(const nsAString& aType)
 #endif
 }
 
-NS_IMPL_ISUPPORTS1(FileUpdateDispatcher, nsIObserver)
+NS_IMPL_ISUPPORTS(FileUpdateDispatcher, nsIObserver)
 
 mozilla::StaticRefPtr<FileUpdateDispatcher> FileUpdateDispatcher::sSingleton;
 
@@ -614,7 +614,7 @@ private:
   static mozilla::StaticRefPtr<OverrideRootDir> sSingleton;
 };
 
-NS_IMPL_ISUPPORTS1(OverrideRootDir, nsIObserver)
+NS_IMPL_ISUPPORTS(OverrideRootDir, nsIObserver)
 
 mozilla::StaticRefPtr<OverrideRootDir>
   OverrideRootDir::sSingleton;
diff --git a/dom/events/EventListenerService.cpp b/dom/events/EventListenerService.cpp
index 316e403eceebfdb93ca4d476cad47561a2b1b853..22fe980edaecb6e860c7ff3d0428c814794a897d 100644
--- a/dom/events/EventListenerService.cpp
+++ b/dom/events/EventListenerService.cpp
@@ -79,7 +79,7 @@ EventListenerInfo::GetListenerObject(JSContext* aCx,
  * mozilla::EventListenerService
  ******************************************************************************/
 
-NS_IMPL_ISUPPORTS1(EventListenerService, nsIEventListenerService)
+NS_IMPL_ISUPPORTS(EventListenerService, nsIEventListenerService)
 
 bool
 EventListenerInfo::GetJSVal(JSContext* aCx,
diff --git a/dom/events/EventStateManager.cpp b/dom/events/EventStateManager.cpp
index 2191656ecdbb813931fddf25b62382df8ae0971a..558f701b1ed2020e2da3df9bcd9c372fd347ecb6 100644
--- a/dom/events/EventStateManager.cpp
+++ b/dom/events/EventStateManager.cpp
@@ -203,7 +203,7 @@ private:
   uint32_t mPreviousCount;
 };
 
-NS_IMPL_ISUPPORTS1(UITimerCallback, nsITimerCallback)
+NS_IMPL_ISUPPORTS(UITimerCallback, nsITimerCallback)
 
 // If aTimer is nullptr, this method always sends "user-interaction-inactive"
 // notification.
diff --git a/dom/events/FocusEvent.cpp b/dom/events/FocusEvent.cpp
index 0419361475c0f1b5c5f81fb7cbc786fff5a667f8..774fb6a74908c02ebab4aa1c77e257bd8d3826a8 100644
--- a/dom/events/FocusEvent.cpp
+++ b/dom/events/FocusEvent.cpp
@@ -10,7 +10,7 @@
 namespace mozilla {
 namespace dom {
 
-NS_IMPL_ISUPPORTS_INHERITED1(FocusEvent, UIEvent, nsIDOMFocusEvent)
+NS_IMPL_ISUPPORTS_INHERITED(FocusEvent, UIEvent, nsIDOMFocusEvent)
 
 FocusEvent::FocusEvent(EventTarget* aOwner,
                        nsPresContext* aPresContext,
diff --git a/dom/events/PaintRequest.cpp b/dom/events/PaintRequest.cpp
index 31709d21e6629d17176dc8c5f0c8a2d7012fc645..02b9e6eb60ce97bd163218376484cb498ac4fd1b 100644
--- a/dom/events/PaintRequest.cpp
+++ b/dom/events/PaintRequest.cpp
@@ -20,7 +20,7 @@ NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE_1(PaintRequest, mParent)
 
 NS_INTERFACE_TABLE_HEAD(PaintRequest)
   NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
-  NS_INTERFACE_TABLE1(PaintRequest, nsIDOMPaintRequest)
+  NS_INTERFACE_TABLE(PaintRequest, nsIDOMPaintRequest)
   NS_INTERFACE_TABLE_TO_MAP_SEGUE_CYCLE_COLLECTION(PaintRequest)
 NS_INTERFACE_MAP_END
 
diff --git a/dom/file/ArchiveZipFile.cpp b/dom/file/ArchiveZipFile.cpp
index 5a934e59d0e20cdd282adea8856f635d8aa3799d..c206b6488e5fe6c33d88104ed01fd1c17b0bdd83 100644
--- a/dom/file/ArchiveZipFile.cpp
+++ b/dom/file/ArchiveZipFile.cpp
@@ -82,9 +82,9 @@ private: // data
   } mData;
 };
 
-NS_IMPL_ISUPPORTS2(ArchiveInputStream,
-                   nsIInputStream,
-                   nsISeekableStream)
+NS_IMPL_ISUPPORTS(ArchiveInputStream,
+                  nsIInputStream,
+                  nsISeekableStream)
 
 nsresult
 ArchiveInputStream::Init()
diff --git a/dom/file/AsyncHelper.cpp b/dom/file/AsyncHelper.cpp
index 2e1916213da1d7809271053491577632c0390d56..80d278aa968fb993c4d0f1c595497e5981b6f454 100644
--- a/dom/file/AsyncHelper.cpp
+++ b/dom/file/AsyncHelper.cpp
@@ -14,7 +14,7 @@
 
 USING_FILE_NAMESPACE
 
-NS_IMPL_ISUPPORTS2(AsyncHelper, nsIRunnable, nsIRequest)
+NS_IMPL_ISUPPORTS(AsyncHelper, nsIRunnable, nsIRequest)
 
 nsresult
 AsyncHelper::AsyncWork(nsIRequestObserver* aObserver, nsISupports* aCtxt)
diff --git a/dom/file/FileHelper.cpp b/dom/file/FileHelper.cpp
index c651c71a4fd0d13d0a4dbcda3e986cd8d6950cb2..40302e0c0d41921962a9f9fc4d3e5574cc5a9ab3 100644
--- a/dom/file/FileHelper.cpp
+++ b/dom/file/FileHelper.cpp
@@ -42,7 +42,7 @@ FileHelper::~FileHelper()
                !mRequest, "Should have cleared this!");
 }
 
-NS_IMPL_ISUPPORTS1(FileHelper, nsIRequestObserver)
+NS_IMPL_ISUPPORTS(FileHelper, nsIRequestObserver)
 
 nsresult
 FileHelper::Enqueue()
diff --git a/dom/file/FileService.cpp b/dom/file/FileService.cpp
index 22ee65ad419e8a6a3f52c4cd738e0c0d62423740..ac2a418880ca62ba807704604093b1b1ef238e43 100644
--- a/dom/file/FileService.cpp
+++ b/dom/file/FileService.cpp
@@ -303,7 +303,7 @@ FileService::HasLockedFilesForStorage(nsIFileStorage* aFileStorage)
   return fileStorageInfo->HasRunningLockedFiles(aFileStorage);
 }
 
-NS_IMPL_ISUPPORTS1(FileService, nsIObserver)
+NS_IMPL_ISUPPORTS(FileService, nsIObserver)
 
 NS_IMETHODIMP
 FileService::Observe(nsISupports* aSubject, const char*  aTopic,
diff --git a/dom/file/FileStreamWrappers.cpp b/dom/file/FileStreamWrappers.cpp
index 0205c9f783d7463a7db89d48f3d9fe90ef320b87..a38c8e3fc367b2c5e0fa57a23a120898d909705c 100644
--- a/dom/file/FileStreamWrappers.cpp
+++ b/dom/file/FileStreamWrappers.cpp
@@ -114,9 +114,9 @@ FileInputStreamWrapper::FileInputStreamWrapper(nsISupports* aFileStream,
   NS_ASSERTION(mInputStream, "This should always succeed!");
 }
 
-NS_IMPL_ISUPPORTS_INHERITED1(FileInputStreamWrapper,
-                             FileStreamWrapper,
-                             nsIInputStream)
+NS_IMPL_ISUPPORTS_INHERITED(FileInputStreamWrapper,
+                            FileStreamWrapper,
+                            nsIInputStream)
 
 NS_IMETHODIMP
 FileInputStreamWrapper::Close()
@@ -233,9 +233,9 @@ FileOutputStreamWrapper::FileOutputStreamWrapper(nsISupports* aFileStream,
   NS_ASSERTION(mOutputStream, "This should always succeed!");
 }
 
-NS_IMPL_ISUPPORTS_INHERITED1(FileOutputStreamWrapper,
-                             FileStreamWrapper,
-                             nsIOutputStream)
+NS_IMPL_ISUPPORTS_INHERITED(FileOutputStreamWrapper,
+                            FileStreamWrapper,
+                            nsIOutputStream)
 
 NS_IMETHODIMP
 FileOutputStreamWrapper::Close()
@@ -347,7 +347,7 @@ FileOutputStreamWrapper::IsNonBlocking(bool* _retval)
   return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS1(ProgressRunnable, nsIRunnable)
+NS_IMPL_ISUPPORTS(ProgressRunnable, nsIRunnable)
 
 NS_IMETHODIMP
 ProgressRunnable::Run()
@@ -360,7 +360,7 @@ ProgressRunnable::Run()
   return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS1(CloseRunnable, nsIRunnable)
+NS_IMPL_ISUPPORTS(CloseRunnable, nsIRunnable)
 
 NS_IMETHODIMP
 CloseRunnable::Run()
@@ -373,7 +373,7 @@ CloseRunnable::Run()
   return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS1(DestroyRunnable, nsIRunnable)
+NS_IMPL_ISUPPORTS(DestroyRunnable, nsIRunnable)
 
 NS_IMETHODIMP
 DestroyRunnable::Run()
diff --git a/dom/file/LockedFile.cpp b/dom/file/LockedFile.cpp
index 47a11bd7635199b89f79027230feed4325a951a0..e436030e5b83b17c0c301cb4cc3fba7ba6e2133a 100644
--- a/dom/file/LockedFile.cpp
+++ b/dom/file/LockedFile.cpp
@@ -816,7 +816,7 @@ FinishHelper::FinishHelper(LockedFile* aLockedFile)
   mStream.swap(aLockedFile->mStream);
 }
 
-NS_IMPL_ISUPPORTS1(FinishHelper, nsIRunnable)
+NS_IMPL_ISUPPORTS(FinishHelper, nsIRunnable)
 
 NS_IMETHODIMP
 FinishHelper::Run()
diff --git a/dom/file/MemoryStreams.cpp b/dom/file/MemoryStreams.cpp
index 2cf183602146445a6d7d4aa4a16e53f64ef6de71..4a65da94d04aa825574bfd05356e3ee3598b2a52 100644
--- a/dom/file/MemoryStreams.cpp
+++ b/dom/file/MemoryStreams.cpp
@@ -27,7 +27,7 @@ MemoryOutputStream::Create(uint64_t aSize)
   return stream.forget();
 }
 
-NS_IMPL_ISUPPORTS1(MemoryOutputStream, nsIOutputStream)
+NS_IMPL_ISUPPORTS(MemoryOutputStream, nsIOutputStream)
 
 NS_IMETHODIMP
 MemoryOutputStream::Close()
diff --git a/dom/filesystem/FileSystemPermissionRequest.cpp b/dom/filesystem/FileSystemPermissionRequest.cpp
index 3da37e5fd8ab6f8e77cfe4ed78176619016e5877..6ea1966a393b0e09351fd1696fa7d559e6b2aa2a 100644
--- a/dom/filesystem/FileSystemPermissionRequest.cpp
+++ b/dom/filesystem/FileSystemPermissionRequest.cpp
@@ -16,7 +16,7 @@
 namespace mozilla {
 namespace dom {
 
-NS_IMPL_ISUPPORTS2(FileSystemPermissionRequest, nsIRunnable, nsIContentPermissionRequest)
+NS_IMPL_ISUPPORTS(FileSystemPermissionRequest, nsIRunnable, nsIContentPermissionRequest)
 
 // static
 void
diff --git a/dom/fmradio/FMRadioService.cpp b/dom/fmradio/FMRadioService.cpp
index fdbe3d54057cd51c23530ec10c5ef39d4459c75c..0440914484a138f1a05fb89e207c01bcc64a4d6f 100644
--- a/dom/fmradio/FMRadioService.cpp
+++ b/dom/fmradio/FMRadioService.cpp
@@ -192,7 +192,7 @@ private:
   nsRefPtr<FMRadioReplyRunnable> mPendingRequest;
 };
 
-NS_IMPL_ISUPPORTS1(ReadAirplaneModeSettingTask, nsISettingsServiceCallback)
+NS_IMPL_ISUPPORTS(ReadAirplaneModeSettingTask, nsISettingsServiceCallback)
 
 class DisableRunnable MOZ_FINAL : public nsRunnable
 {
@@ -810,7 +810,7 @@ FMRadioService::Singleton()
   return sFMRadioService;
 }
 
-NS_IMPL_ISUPPORTS1(FMRadioService, nsIObserver)
+NS_IMPL_ISUPPORTS(FMRadioService, nsIObserver)
 
 END_FMRADIO_NAMESPACE
 
diff --git a/dom/gamepad/GamepadService.cpp b/dom/gamepad/GamepadService.cpp
index 991f4ee5c332a430e404c9597fadd588086fea70..4479a06dd25e95e7464e1374d0a4326b376c3f44 100644
--- a/dom/gamepad/GamepadService.cpp
+++ b/dom/gamepad/GamepadService.cpp
@@ -46,7 +46,7 @@ StaticRefPtr<GamepadService> gGamepadServiceSingleton;
 
 bool GamepadService::sShutdown = false;
 
-NS_IMPL_ISUPPORTS1(GamepadService, nsIObserver)
+NS_IMPL_ISUPPORTS(GamepadService, nsIObserver)
 
 GamepadService::GamepadService()
   : mStarted(false),
@@ -507,7 +507,7 @@ GamepadService::StartCleanupTimer()
  * of the GamepadService to JavaScript via XPCOM so that we can write Mochitests
  * that add and remove fake gamepads, avoiding the platform-specific backends.
  */
-NS_IMPL_ISUPPORTS1(GamepadServiceTest, nsIGamepadServiceTest)
+NS_IMPL_ISUPPORTS(GamepadServiceTest, nsIGamepadServiceTest)
 
 GamepadServiceTest* GamepadServiceTest::sSingleton = nullptr;
 
diff --git a/dom/icc/src/IccListener.cpp b/dom/icc/src/IccListener.cpp
index 303aacdad918d346e5f256bf7b28e96154b97ace..7a2fa3fcc26df3bec9ecc73caecc62d70be0ea5f 100644
--- a/dom/icc/src/IccListener.cpp
+++ b/dom/icc/src/IccListener.cpp
@@ -12,7 +12,7 @@
 
 using namespace mozilla::dom;
 
-NS_IMPL_ISUPPORTS1(IccListener, nsIIccListener)
+NS_IMPL_ISUPPORTS(IccListener, nsIIccListener)
 
 IccListener::IccListener(IccManager* aIccManager, uint32_t aClientId)
   : mClientId(aClientId)
diff --git a/dom/indexedDB/AsyncConnectionHelper.cpp b/dom/indexedDB/AsyncConnectionHelper.cpp
index 80b5f8a5c0eabdcd63a25c7024c37b6287ed7a52..2b4f75e84b60a7b73d25e206cf7001e8189c7139 100644
--- a/dom/indexedDB/AsyncConnectionHelper.cpp
+++ b/dom/indexedDB/AsyncConnectionHelper.cpp
@@ -182,8 +182,8 @@ AsyncConnectionHelper::~AsyncConnectionHelper()
   NS_ASSERTION(!mOldProgressHandler, "Should not have anything here!");
 }
 
-NS_IMPL_ISUPPORTS2(AsyncConnectionHelper, nsIRunnable,
-                   mozIStorageProgressHandler)
+NS_IMPL_ISUPPORTS(AsyncConnectionHelper, nsIRunnable,
+                  mozIStorageProgressHandler)
 
 NS_IMETHODIMP
 AsyncConnectionHelper::Run()
diff --git a/dom/indexedDB/CheckPermissionsHelper.cpp b/dom/indexedDB/CheckPermissionsHelper.cpp
index 9f3aa3522ded9d6b47a592ae89f96b6711fb92d1..34365d25df36cf38ca851b0437185e6451cd3434 100644
--- a/dom/indexedDB/CheckPermissionsHelper.cpp
+++ b/dom/indexedDB/CheckPermissionsHelper.cpp
@@ -79,9 +79,9 @@ GetIndexedDBPermissions(nsIDOMWindow* aWindow)
 
 } // anonymous namespace
 
-NS_IMPL_ISUPPORTS3(CheckPermissionsHelper, nsIRunnable,
-                   nsIInterfaceRequestor,
-                   nsIObserver)
+NS_IMPL_ISUPPORTS(CheckPermissionsHelper, nsIRunnable,
+                  nsIInterfaceRequestor,
+                  nsIObserver)
 
 NS_IMETHODIMP
 CheckPermissionsHelper::Run()
diff --git a/dom/indexedDB/FileInfo.cpp b/dom/indexedDB/FileInfo.cpp
index 16e263fc3ca230f8aed9966d7a8eaac8927c4bb2..9fd4732877ff5945fee872f4eebbb5d9f8f345fd 100644
--- a/dom/indexedDB/FileInfo.cpp
+++ b/dom/indexedDB/FileInfo.cpp
@@ -133,8 +133,8 @@ CleanupFileRunnable::CleanupFileRunnable(FileManager* aFileManager,
 {
 }
 
-NS_IMPL_ISUPPORTS1(CleanupFileRunnable,
-                   nsIRunnable)
+NS_IMPL_ISUPPORTS(CleanupFileRunnable,
+                  nsIRunnable)
 
 NS_IMETHODIMP
 CleanupFileRunnable::Run()
diff --git a/dom/indexedDB/IDBTransaction.cpp b/dom/indexedDB/IDBTransaction.cpp
index d8fdaabe1031091a758a0af4eac54b1abcb8dcc1..e113d2b9c8538190c07d3fedad005070f4824f3b 100644
--- a/dom/indexedDB/IDBTransaction.cpp
+++ b/dom/indexedDB/IDBTransaction.cpp
@@ -85,7 +85,7 @@ NS_IMETHODIMP_(MozExternalRefCountType) StartTransactionRunnable::Release()
   return 1;
 }
 
-NS_IMPL_QUERY_INTERFACE1(StartTransactionRunnable, nsIRunnable)
+NS_IMPL_QUERY_INTERFACE(StartTransactionRunnable, nsIRunnable)
 
 } // anonymous namespace
 
@@ -783,7 +783,7 @@ CommitHelper::~CommitHelper()
 {
 }
 
-NS_IMPL_ISUPPORTS1(CommitHelper, nsIRunnable)
+NS_IMPL_ISUPPORTS(CommitHelper, nsIRunnable)
 
 NS_IMETHODIMP
 CommitHelper::Run()
@@ -980,7 +980,7 @@ CommitHelper::RevertAutoIncrementCounts()
   }
 }
 
-NS_IMPL_ISUPPORTS1(UpdateRefcountFunction, mozIStorageFunction)
+NS_IMPL_ISUPPORTS(UpdateRefcountFunction, mozIStorageFunction)
 
 NS_IMETHODIMP
 UpdateRefcountFunction::OnFunctionCall(mozIStorageValueArray* aValues,
diff --git a/dom/indexedDB/IndexedDatabaseManager.cpp b/dom/indexedDB/IndexedDatabaseManager.cpp
index ae26eeefb5c15a27dc03cbaa5917123aeb194885..466d0ffb3df1b503b2706ad483e6ab5b0e75a1f6 100644
--- a/dom/indexedDB/IndexedDatabaseManager.cpp
+++ b/dom/indexedDB/IndexedDatabaseManager.cpp
@@ -647,8 +647,8 @@ IndexedDatabaseManager::BlockAndGetFileReferences(
 
 NS_IMPL_ADDREF(IndexedDatabaseManager)
 NS_IMPL_RELEASE_WITH_DESTROY(IndexedDatabaseManager, Destroy())
-NS_IMPL_QUERY_INTERFACE2(IndexedDatabaseManager, nsIIndexedDatabaseManager,
-                                                 nsIObserver)
+NS_IMPL_QUERY_INTERFACE(IndexedDatabaseManager, nsIIndexedDatabaseManager,
+                        nsIObserver)
 
 NS_IMETHODIMP
 IndexedDatabaseManager::InitWindowless(JS::Handle<JS::Value> aGlobal, JSContext* aCx)
@@ -812,8 +812,8 @@ AsyncDeleteFileRunnable::AsyncDeleteFileRunnable(FileManager* aFileManager,
 {
 }
 
-NS_IMPL_ISUPPORTS1(AsyncDeleteFileRunnable,
-                   nsIRunnable)
+NS_IMPL_ISUPPORTS(AsyncDeleteFileRunnable,
+                  nsIRunnable)
 
 NS_IMETHODIMP
 AsyncDeleteFileRunnable::Run()
@@ -886,8 +886,8 @@ GetFileReferencesHelper::DispatchAndReturnFileReferences(int32_t* aMemRefCnt,
   return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS1(GetFileReferencesHelper,
-                   nsIRunnable)
+NS_IMPL_ISUPPORTS(GetFileReferencesHelper,
+                  nsIRunnable)
 
 NS_IMETHODIMP
 GetFileReferencesHelper::Run()
diff --git a/dom/indexedDB/OpenDatabaseHelper.cpp b/dom/indexedDB/OpenDatabaseHelper.cpp
index bef10fa967f930e98ea8db973a0c63321bab26f2..bcb7ef1daf99924bb1668a164e7226eaead3d64e 100644
--- a/dom/indexedDB/OpenDatabaseHelper.cpp
+++ b/dom/indexedDB/OpenDatabaseHelper.cpp
@@ -924,7 +924,7 @@ public:
   }
 };
 
-NS_IMPL_ISUPPORTS1(CompressDataBlobsFunction, mozIStorageFunction)
+NS_IMPL_ISUPPORTS(CompressDataBlobsFunction, mozIStorageFunction)
 
 nsresult
 UpgradeSchemaFrom8To9_0(mozIStorageConnection* aConnection)
@@ -1182,7 +1182,7 @@ public:
   }
 };
 
-NS_IMPL_ISUPPORTS1(EncodeKeysFunction, mozIStorageFunction)
+NS_IMPL_ISUPPORTS(EncodeKeysFunction, mozIStorageFunction)
 
 nsresult
 UpgradeSchemaFrom11_0To12_0(mozIStorageConnection* aConnection)
@@ -1709,7 +1709,7 @@ private:
 
 } // anonymous namespace
 
-NS_IMPL_ISUPPORTS1(OpenDatabaseHelper, nsIRunnable)
+NS_IMPL_ISUPPORTS(OpenDatabaseHelper, nsIRunnable)
 
 nsresult
 OpenDatabaseHelper::Init()
diff --git a/dom/indexedDB/TransactionThreadPool.cpp b/dom/indexedDB/TransactionThreadPool.cpp
index ff6714740542ac858afe33005e25660751067ab5..ab84efc8a5b7de85f06cd1c07e6226c00b580cd3 100644
--- a/dom/indexedDB/TransactionThreadPool.cpp
+++ b/dom/indexedDB/TransactionThreadPool.cpp
@@ -565,7 +565,7 @@ TransactionThreadPool::TransactionQueue::Finish(nsIRunnable* aFinishRunnable)
   mMonitor.Notify();
 }
 
-NS_IMPL_ISUPPORTS1(TransactionThreadPool::TransactionQueue, nsIRunnable)
+NS_IMPL_ISUPPORTS(TransactionThreadPool::TransactionQueue, nsIRunnable)
 
 NS_IMETHODIMP
 TransactionThreadPool::TransactionQueue::Run()
@@ -637,7 +637,7 @@ FinishTransactionRunnable::FinishTransactionRunnable(
   mFinishRunnable.swap(aFinishRunnable);
 }
 
-NS_IMPL_ISUPPORTS1(FinishTransactionRunnable, nsIRunnable)
+NS_IMPL_ISUPPORTS(FinishTransactionRunnable, nsIRunnable)
 
 NS_IMETHODIMP
 FinishTransactionRunnable::Run()
@@ -663,7 +663,7 @@ FinishTransactionRunnable::Run()
 
 #ifdef MOZ_ENABLE_PROFILER_SPS
 
-NS_IMPL_ISUPPORTS1(TransactionThreadPoolListener, nsIThreadPoolListener)
+NS_IMPL_ISUPPORTS(TransactionThreadPoolListener, nsIThreadPoolListener)
 
 NS_IMETHODIMP
 TransactionThreadPoolListener::OnThreadCreated()
diff --git a/dom/indexedDB/ipc/IndexedDBParent.cpp b/dom/indexedDB/ipc/IndexedDBParent.cpp
index fb8d51636846d3f43f3cd5710b82c937e874f843..9ee9cfe95cbf0bbe002017545984e6d2c89cd012 100644
--- a/dom/indexedDB/ipc/IndexedDBParent.cpp
+++ b/dom/indexedDB/ipc/IndexedDBParent.cpp
@@ -2248,7 +2248,7 @@ IndexedDBDeleteDatabaseRequestParent::SetOpenRequest(
  * WeakEventListener
  ******************************************************************************/
 
- NS_IMPL_ISUPPORTS1(WeakEventListenerBase, nsIDOMEventListener)
+ NS_IMPL_ISUPPORTS(WeakEventListenerBase, nsIDOMEventListener)
 
  NS_IMETHODIMP
  WeakEventListenerBase::HandleEvent(nsIDOMEvent* aEvent)
diff --git a/dom/ipc/Blob.cpp b/dom/ipc/Blob.cpp
index d234f41cb310a41e3aea5fbc1533797df3e914ba..ddce0d446152b36b7886c5a6f4186eae8cbb534e 100644
--- a/dom/ipc/Blob.cpp
+++ b/dom/ipc/Blob.cpp
@@ -990,7 +990,7 @@ private:
  * BlobChild::RemoteBlob Implementation
  ******************************************************************************/
 
-NS_IMPL_ISUPPORTS_INHERITED1(BlobChild::RemoteBlob, nsDOMFile, nsIRemoteBlob)
+NS_IMPL_ISUPPORTS_INHERITED(BlobChild::RemoteBlob, nsDOMFile, nsIRemoteBlob)
 
 already_AddRefed<nsIDOMBlob>
 BlobChild::
@@ -1683,7 +1683,7 @@ private:
  * BlobChild::RemoteBlob Implementation
  ******************************************************************************/
 
-NS_IMPL_ISUPPORTS_INHERITED1(BlobParent::RemoteBlob, nsDOMFile, nsIRemoteBlob)
+NS_IMPL_ISUPPORTS_INHERITED(BlobParent::RemoteBlob, nsDOMFile, nsIRemoteBlob)
 
 already_AddRefed<nsIDOMBlob>
 BlobParent::
diff --git a/dom/ipc/ColorPickerParent.cpp b/dom/ipc/ColorPickerParent.cpp
index 4a8b72deda0853114b918269bbf47b1251f34396..5bf802650d06482dc5fead309abf64619c5df273 100644
--- a/dom/ipc/ColorPickerParent.cpp
+++ b/dom/ipc/ColorPickerParent.cpp
@@ -15,8 +15,8 @@
 using mozilla::unused;
 using namespace mozilla::dom;
 
-NS_IMPL_ISUPPORTS1(ColorPickerParent::ColorPickerShownCallback,
-                   nsIColorPickerShownCallback);
+NS_IMPL_ISUPPORTS(ColorPickerParent::ColorPickerShownCallback,
+                  nsIColorPickerShownCallback);
 
 NS_IMETHODIMP
 ColorPickerParent::ColorPickerShownCallback::Update(const nsAString& aColor)
diff --git a/dom/ipc/ContentChild.cpp b/dom/ipc/ContentChild.cpp
index 9da77ef3abba2fa0c3c2b27263a6ba4fa8668805..07deef6e13409d920c195dda7c6ed1a3cfd56462 100644
--- a/dom/ipc/ContentChild.cpp
+++ b/dom/ipc/ContentChild.cpp
@@ -189,7 +189,7 @@ private:
     nsString mDMDDumpIdent;
 };
 
-NS_IMPL_ISUPPORTS1(MemoryReportRequestChild, nsIRunnable)
+NS_IMPL_ISUPPORTS(MemoryReportRequestChild, nsIRunnable)
 
 MemoryReportRequestChild::MemoryReportRequestChild(uint32_t aGeneration, const nsAString& aDMDDumpIdent)
 : mGeneration(aGeneration), mDMDDumpIdent(aDMDDumpIdent)
@@ -251,7 +251,7 @@ private:
     friend class ContentChild;
 };
 
-NS_IMPL_ISUPPORTS1(ConsoleListener, nsIConsoleListener)
+NS_IMPL_ISUPPORTS(ConsoleListener, nsIConsoleListener)
 
 NS_IMETHODIMP
 ConsoleListener::Observe(nsIConsoleMessage* aMessage)
@@ -332,7 +332,7 @@ SystemMessageHandledObserver::Observe(nsISupports* aSubject,
     return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS1(SystemMessageHandledObserver, nsIObserver)
+NS_IMPL_ISUPPORTS(SystemMessageHandledObserver, nsIObserver)
 
 class BackgroundChildPrimer MOZ_FINAL :
   public nsIIPCBackgroundChildCreateCallback
@@ -360,7 +360,7 @@ private:
     }
 };
 
-NS_IMPL_ISUPPORTS1(BackgroundChildPrimer, nsIIPCBackgroundChildCreateCallback)
+NS_IMPL_ISUPPORTS(BackgroundChildPrimer, nsIIPCBackgroundChildCreateCallback)
 
 ContentChild* ContentChild::sSingleton;
 
@@ -602,7 +602,7 @@ public:
 private:
     const nsCString mProcess;
 };
-NS_IMPL_ISUPPORTS1(
+NS_IMPL_ISUPPORTS(
   MemoryReportCallback
 , nsIMemoryReporterCallback
 )
diff --git a/dom/ipc/ContentParent.cpp b/dom/ipc/ContentParent.cpp
index e385f8eeda93aa35ad0934d55bf3c88c9c837928..9aa9192dc4db8a7b83d3d206703fbc76a5c73145 100644
--- a/dom/ipc/ContentParent.cpp
+++ b/dom/ipc/ContentParent.cpp
@@ -269,8 +269,8 @@ public:
 
 uint32_t BackgroundTester::sCallbackCount = 0;
 
-NS_IMPL_ISUPPORTS2(BackgroundTester, nsIIPCBackgroundChildCreateCallback,
-                                     nsIObserver)
+NS_IMPL_ISUPPORTS(BackgroundTester, nsIIPCBackgroundChildCreateCallback,
+                  nsIObserver)
 
 #endif // ENABLE_TESTS
 
@@ -345,7 +345,7 @@ public:
     NS_DECL_NSIMEMORYREPORTER
 };
 
-NS_IMPL_ISUPPORTS1(ContentParentsMemoryReporter, nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(ContentParentsMemoryReporter, nsIMemoryReporter)
 
 NS_IMETHODIMP
 ContentParentsMemoryReporter::CollectReports(nsIMemoryReporterCallback* cb,
@@ -933,8 +933,8 @@ private:
 StaticAutoPtr<LinkedList<SystemMessageHandledListener> >
     SystemMessageHandledListener::sListeners;
 
-NS_IMPL_ISUPPORTS1(SystemMessageHandledListener,
-                   nsITimerCallback)
+NS_IMPL_ISUPPORTS(SystemMessageHandledListener,
+                  nsITimerCallback)
 
 } // anonymous namespace
 
@@ -3438,7 +3438,7 @@ ContentParent::DeallocPFileDescriptorSetParent(PFileDescriptorSetParent* aActor)
 } // namespace dom
 } // namespace mozilla
 
-NS_IMPL_ISUPPORTS1(ParentIdleListener, nsIObserver)
+NS_IMPL_ISUPPORTS(ParentIdleListener, nsIObserver)
 
 NS_IMETHODIMP
 ParentIdleListener::Observe(nsISupports*, const char* aTopic, const char16_t* aData) {
diff --git a/dom/ipc/FilePickerParent.cpp b/dom/ipc/FilePickerParent.cpp
index 36c2de9cd5d165a7d64b0df0f0e2c15ee3c2f836..f584b5de7eaa64eebcbe0b68e9d7970d819fc6e4 100644
--- a/dom/ipc/FilePickerParent.cpp
+++ b/dom/ipc/FilePickerParent.cpp
@@ -22,8 +22,8 @@
 using mozilla::unused;
 using namespace mozilla::dom;
 
-NS_IMPL_ISUPPORTS1(FilePickerParent::FilePickerShownCallback,
-                   nsIFilePickerShownCallback);
+NS_IMPL_ISUPPORTS(FilePickerParent::FilePickerShownCallback,
+                  nsIFilePickerShownCallback);
 
 NS_IMETHODIMP
 FilePickerParent::FilePickerShownCallback::Done(int16_t aResult)
diff --git a/dom/ipc/PreallocatedProcessManager.cpp b/dom/ipc/PreallocatedProcessManager.cpp
index f5ab4abac3686f79698d1fbab67e17a477365f90..c4f4ac54ed0ef4cc5758eac42d92c426e9cc8c17 100644
--- a/dom/ipc/PreallocatedProcessManager.cpp
+++ b/dom/ipc/PreallocatedProcessManager.cpp
@@ -109,7 +109,7 @@ PreallocatedProcessManagerImpl::Singleton()
   return sSingleton;
 }
 
-NS_IMPL_ISUPPORTS1(PreallocatedProcessManagerImpl, nsIObserver)
+NS_IMPL_ISUPPORTS(PreallocatedProcessManagerImpl, nsIObserver)
 
 PreallocatedProcessManagerImpl::PreallocatedProcessManagerImpl()
   : mEnabled(false)
diff --git a/dom/ipc/ProcessPriorityManager.cpp b/dom/ipc/ProcessPriorityManager.cpp
index 70f3ad74c9615727d101608303576c4b42da725b..28fbc202b24f6e9c2f196abeea4cb90f5bc902a4 100644
--- a/dom/ipc/ProcessPriorityManager.cpp
+++ b/dom/ipc/ProcessPriorityManager.cpp
@@ -347,8 +347,8 @@ private:
 /* static */ StaticRefPtr<ProcessPriorityManagerImpl>
   ProcessPriorityManagerImpl::sSingleton;
 
-NS_IMPL_ISUPPORTS1(ProcessPriorityManagerImpl,
-                   nsIObserver);
+NS_IMPL_ISUPPORTS(ProcessPriorityManagerImpl,
+                  nsIObserver);
 
 /* static */ void
 ProcessPriorityManagerImpl::PrefChangedCallback(const char* aPref,
@@ -587,10 +587,10 @@ ProcessPriorityManagerImpl::NotifyProcessPriorityChanged(
   }
 }
 
-NS_IMPL_ISUPPORTS3(ParticularProcessPriorityManager,
-                   nsIObserver,
-                   nsITimerCallback,
-                   nsISupportsWeakReference);
+NS_IMPL_ISUPPORTS(ParticularProcessPriorityManager,
+                  nsIObserver,
+                  nsITimerCallback,
+                  nsISupportsWeakReference);
 
 ParticularProcessPriorityManager::ParticularProcessPriorityManager(
   ContentParent* aContentParent)
@@ -1166,8 +1166,8 @@ ProcessPriorityManagerChild::Singleton()
   return sSingleton;
 }
 
-NS_IMPL_ISUPPORTS1(ProcessPriorityManagerChild,
-                   nsIObserver)
+NS_IMPL_ISUPPORTS(ProcessPriorityManagerChild,
+                  nsIObserver)
 
 ProcessPriorityManagerChild::ProcessPriorityManagerChild()
 {
diff --git a/dom/ipc/TabChild.cpp b/dom/ipc/TabChild.cpp
index 4f0b30bd0358fe3d6ddf0a53cf86b0cfa2809895..ac1fd9d30cf6b3bce52cffb235b8f563710a7ca6 100644
--- a/dom/ipc/TabChild.cpp
+++ b/dom/ipc/TabChild.cpp
@@ -96,7 +96,7 @@ using namespace mozilla::dom::indexedDB;
 using namespace mozilla::widget;
 using namespace mozilla::jsipc;
 
-NS_IMPL_ISUPPORTS1(ContentListener, nsIDOMEventListener)
+NS_IMPL_ISUPPORTS(ContentListener, nsIDOMEventListener)
 
 static const CSSSize kDefaultViewportSize(980, 480);
 
diff --git a/dom/ipc/TabParent.cpp b/dom/ipc/TabParent.cpp
index 8c0b0a50491fa0966fada9a2889651dffb5b908a..b38492cab246fc195ff0a7086654b29adbb61cad 100644
--- a/dom/ipc/TabParent.cpp
+++ b/dom/ipc/TabParent.cpp
@@ -199,7 +199,7 @@ TabParent* sEventCapturer;
 
 TabParent *TabParent::mIMETabParent = nullptr;
 
-NS_IMPL_ISUPPORTS3(TabParent, nsITabParent, nsIAuthPromptProvider, nsISecureBrowserUI)
+NS_IMPL_ISUPPORTS(TabParent, nsITabParent, nsIAuthPromptProvider, nsISecureBrowserUI)
 
 TabParent::TabParent(ContentParent* aManager, const TabContext& aContext, uint32_t aChromeFlags)
   : TabContext(aContext)
diff --git a/dom/media/MediaManager.cpp b/dom/media/MediaManager.cpp
index a8a7ef1a28b3e022cfb1491f2bd480b1613ee45c..bfa49334b4ad3ae3ab14b949ca4dbb6ce69100b2 100644
--- a/dom/media/MediaManager.cpp
+++ b/dom/media/MediaManager.cpp
@@ -260,7 +260,7 @@ protected:
 /**
  * nsIMediaDevice implementation.
  */
-NS_IMPL_ISUPPORTS1(MediaDevice, nsIMediaDevice)
+NS_IMPL_ISUPPORTS(MediaDevice, nsIMediaDevice)
 
 MediaDevice* MediaDevice::Create(MediaEngineVideoSource* source) {
   return new VideoDevice(source);
@@ -1206,7 +1206,7 @@ MediaManager::MediaManager()
        mPrefs.mWidth, mPrefs.mHeight, mPrefs.mFPS, mPrefs.mMinFPS));
 }
 
-NS_IMPL_ISUPPORTS2(MediaManager, nsIMediaManagerService, nsIObserver)
+NS_IMPL_ISUPPORTS(MediaManager, nsIMediaManagerService, nsIObserver)
 
 /* static */ StaticRefPtr<MediaManager> MediaManager::sSingleton;
 
diff --git a/dom/media/MediaPermissionGonk.cpp b/dom/media/MediaPermissionGonk.cpp
index 408cf9c7307cb3e0afca5bd0e6517268a5ec9594..e7d422bc5584adae905070e894cb7e252a0f64e4 100644
--- a/dom/media/MediaPermissionGonk.cpp
+++ b/dom/media/MediaPermissionGonk.cpp
@@ -170,7 +170,7 @@ private:
 };
 
 // MediaPermissionRequest
-NS_IMPL_ISUPPORTS1(MediaPermissionRequest, nsIContentPermissionRequest)
+NS_IMPL_ISUPPORTS(MediaPermissionRequest, nsIContentPermissionRequest)
 
 MediaPermissionRequest::MediaPermissionRequest(nsRefPtr<dom::GetUserMediaRequest> &aRequest,
                                                nsTArray<nsCOMPtr<nsIMediaDevice> > &aDevices)
@@ -385,7 +385,7 @@ private:
   nsRefPtr<dom::GetUserMediaRequest> mRequest;
 };
 
-NS_IMPL_ISUPPORTS1(MediaDeviceSuccessCallback, nsIGetUserMediaDevicesSuccessCallback)
+NS_IMPL_ISUPPORTS(MediaDeviceSuccessCallback, nsIGetUserMediaDevicesSuccessCallback)
 
 // nsIGetUserMediaDevicesSuccessCallback method
 NS_IMETHODIMP
@@ -485,7 +485,7 @@ private:
   const nsString mCallID;
 };
 
-NS_IMPL_ISUPPORTS1(MediaDeviceErrorCallback, nsIDOMGetUserMediaErrorCallback)
+NS_IMPL_ISUPPORTS(MediaDeviceErrorCallback, nsIDOMGetUserMediaErrorCallback)
 
 // nsIDOMGetUserMediaErrorCallback method
 NS_IMETHODIMP
@@ -497,7 +497,7 @@ MediaDeviceErrorCallback::OnError(const nsAString &aError)
 } // namespace anonymous
 
 // MediaPermissionManager
-NS_IMPL_ISUPPORTS1(MediaPermissionManager, nsIObserver)
+NS_IMPL_ISUPPORTS(MediaPermissionManager, nsIObserver)
 
 MediaPermissionManager*
 MediaPermissionManager::GetInstance()
diff --git a/dom/mobileconnection/src/MobileConnection.cpp b/dom/mobileconnection/src/MobileConnection.cpp
index 55e6980bde1df790944153bc183489dc4d9c27b3..9acb9309e00160689f6b8e4b177d64a37a1a3b3e 100644
--- a/dom/mobileconnection/src/MobileConnection.cpp
+++ b/dom/mobileconnection/src/MobileConnection.cpp
@@ -45,7 +45,7 @@ public:
   }
 };
 
-NS_IMPL_ISUPPORTS1(MobileConnection::Listener, nsIMobileConnectionListener)
+NS_IMPL_ISUPPORTS(MobileConnection::Listener, nsIMobileConnectionListener)
 
 DOMCI_DATA(MozMobileConnection, MobileConnection)
 
diff --git a/dom/mobilemessage/src/MobileMessageService.cpp b/dom/mobilemessage/src/MobileMessageService.cpp
index e500ae76222088a88a3a7c5036a0be40a11485d7..fec30c2ec5c4e1b441508b3fa59b6276866585ed 100644
--- a/dom/mobilemessage/src/MobileMessageService.cpp
+++ b/dom/mobilemessage/src/MobileMessageService.cpp
@@ -12,7 +12,7 @@ namespace mozilla {
 namespace dom {
 namespace mobilemessage {
 
-NS_IMPL_ISUPPORTS1(MobileMessageService, nsIMobileMessageService)
+NS_IMPL_ISUPPORTS(MobileMessageService, nsIMobileMessageService)
 
 /* static */ StaticRefPtr<MobileMessageService> MobileMessageService::sSingleton;
 
diff --git a/dom/mobilemessage/src/android/MobileMessageDatabaseService.cpp b/dom/mobilemessage/src/android/MobileMessageDatabaseService.cpp
index 3c1bd5d8dd0606d33747e2c3d597911e12e51f9a..5c540a512f04abe4195fd1ff109b3f7831caf67a 100644
--- a/dom/mobilemessage/src/android/MobileMessageDatabaseService.cpp
+++ b/dom/mobilemessage/src/android/MobileMessageDatabaseService.cpp
@@ -11,7 +11,7 @@ namespace mozilla {
 namespace dom {
 namespace mobilemessage {
 
-NS_IMPL_ISUPPORTS1(MobileMessageDatabaseService, nsIMobileMessageDatabaseService)
+NS_IMPL_ISUPPORTS(MobileMessageDatabaseService, nsIMobileMessageDatabaseService)
 
 NS_IMETHODIMP
 MobileMessageDatabaseService::GetMessageMoz(int32_t aMessageId,
diff --git a/dom/mobilemessage/src/android/SmsService.cpp b/dom/mobilemessage/src/android/SmsService.cpp
index 5f70c4a8ca8f20b32d622610f0af9f86ce7e4058..ff383ea3aa68f3b98480a38b8827f4452fa7534e 100644
--- a/dom/mobilemessage/src/android/SmsService.cpp
+++ b/dom/mobilemessage/src/android/SmsService.cpp
@@ -12,7 +12,7 @@ namespace mozilla {
 namespace dom {
 namespace mobilemessage {
 
-NS_IMPL_ISUPPORTS1(SmsService, nsISmsService)
+NS_IMPL_ISUPPORTS(SmsService, nsISmsService)
 
 NS_IMETHODIMP
 SmsService::GetSmsDefaultServiceId(uint32_t* aServiceId)
diff --git a/dom/mobilemessage/src/gonk/SmsService.cpp b/dom/mobilemessage/src/gonk/SmsService.cpp
index c3a21d4f04810fdf5b09b67d47f45bad475077d7..14fb02dfbff18704922a81190b458f90ed195076 100644
--- a/dom/mobilemessage/src/gonk/SmsService.cpp
+++ b/dom/mobilemessage/src/gonk/SmsService.cpp
@@ -37,9 +37,9 @@ namespace mozilla {
 namespace dom {
 namespace mobilemessage {
 
-NS_IMPL_ISUPPORTS2(SmsService,
-                   nsISmsService,
-                   nsIObserver)
+NS_IMPL_ISUPPORTS(SmsService,
+                  nsISmsService,
+                  nsIObserver)
 
 SmsService::SmsService()
 {
diff --git a/dom/mobilemessage/src/ipc/SmsChild.cpp b/dom/mobilemessage/src/ipc/SmsChild.cpp
index 73cf007473b718716957f432da4a9f4ee6f12c95..7e3f12b44a9d34d8d081d9094ddf099c53d766d1 100644
--- a/dom/mobilemessage/src/ipc/SmsChild.cpp
+++ b/dom/mobilemessage/src/ipc/SmsChild.cpp
@@ -247,7 +247,7 @@ SmsRequestChild::Recv__delete__(const MessageReply& aReply)
  * MobileMessageCursorChild
  ******************************************************************************/
 
-NS_IMPL_ISUPPORTS1(MobileMessageCursorChild, nsICursorContinueCallback)
+NS_IMPL_ISUPPORTS(MobileMessageCursorChild, nsICursorContinueCallback)
 
 MobileMessageCursorChild::MobileMessageCursorChild(nsIMobileMessageCursorCallback* aCallback)
   : mCursorCallback(aCallback)
diff --git a/dom/mobilemessage/src/ipc/SmsIPCService.cpp b/dom/mobilemessage/src/ipc/SmsIPCService.cpp
index 1c45baa280f2fd756ea5e6d8b9125360fc21f6b1..f0126c7bec76d10172247fea14148f06dde33c2a 100644
--- a/dom/mobilemessage/src/ipc/SmsIPCService.cpp
+++ b/dom/mobilemessage/src/ipc/SmsIPCService.cpp
@@ -99,11 +99,11 @@ getDefaultServiceId(const char* aPrefKey)
 
 } // anonymous namespace
 
-NS_IMPL_ISUPPORTS4(SmsIPCService,
-                   nsISmsService,
-                   nsIMmsService,
-                   nsIMobileMessageDatabaseService,
-                   nsIObserver)
+NS_IMPL_ISUPPORTS(SmsIPCService,
+                  nsISmsService,
+                  nsIMmsService,
+                  nsIMobileMessageDatabaseService,
+                  nsIObserver)
 
 SmsIPCService::SmsIPCService()
 {
diff --git a/dom/mobilemessage/src/ipc/SmsParent.cpp b/dom/mobilemessage/src/ipc/SmsParent.cpp
index ff70de3e6fed4382e7d795464846ebbaf08b4a1a..2885e38eb258a2bd1a9431e84db3710ae4443246 100644
--- a/dom/mobilemessage/src/ipc/SmsParent.cpp
+++ b/dom/mobilemessage/src/ipc/SmsParent.cpp
@@ -126,7 +126,7 @@ GetParamsFromSendMmsMessageRequest(JSContext* aCx,
   return true;
 }
 
-NS_IMPL_ISUPPORTS1(SmsParent, nsIObserver)
+NS_IMPL_ISUPPORTS(SmsParent, nsIObserver)
 
 SmsParent::SmsParent()
 {
@@ -444,7 +444,7 @@ SmsParent::DeallocPMobileMessageCursorParent(PMobileMessageCursorParent* aActor)
  * SmsRequestParent
  ******************************************************************************/
 
-NS_IMPL_ISUPPORTS1(SmsRequestParent, nsIMobileMessageCallback)
+NS_IMPL_ISUPPORTS(SmsRequestParent, nsIMobileMessageCallback)
 
 void
 SmsRequestParent::ActorDestroy(ActorDestroyReason aWhy)
@@ -731,7 +731,7 @@ SmsRequestParent::NotifyGetSmscAddressFailed(int32_t aError)
  * MobileMessageCursorParent
  ******************************************************************************/
 
-NS_IMPL_ISUPPORTS1(MobileMessageCursorParent, nsIMobileMessageCursorCallback)
+NS_IMPL_ISUPPORTS(MobileMessageCursorParent, nsIMobileMessageCursorCallback)
 
 void
 MobileMessageCursorParent::ActorDestroy(ActorDestroyReason aWhy)
diff --git a/dom/network/src/Connection.cpp b/dom/network/src/Connection.cpp
index da8db79d02033c93ca067e53f54e2e95f4f1034a..cde8f36ac04c6001490d62d5b0df30dd7fe6302a 100644
--- a/dom/network/src/Connection.cpp
+++ b/dom/network/src/Connection.cpp
@@ -20,8 +20,8 @@ namespace mozilla {
 namespace dom {
 namespace network {
 
-NS_IMPL_QUERY_INTERFACE_INHERITED1(Connection, DOMEventTargetHelper,
-                                   nsINetworkProperties)
+NS_IMPL_QUERY_INTERFACE_INHERITED(Connection, DOMEventTargetHelper,
+                                  nsINetworkProperties)
 
 // Don't use |Connection| alone, since that confuses nsTraceRefcnt since
 // we're not the only class with that name.
diff --git a/dom/network/src/UDPSocketChild.cpp b/dom/network/src/UDPSocketChild.cpp
index 8607492c89034edfe1d277d09d31f9e4eff6dfb2..dcb4fa72405a5fdb54e6afa1346c623dbd9f8fde 100644
--- a/dom/network/src/UDPSocketChild.cpp
+++ b/dom/network/src/UDPSocketChild.cpp
@@ -10,7 +10,7 @@ using mozilla::net::gNeckoChild;
 namespace mozilla {
 namespace dom {
 
-NS_IMPL_ISUPPORTS1(UDPSocketChildBase, nsIUDPSocketChild)
+NS_IMPL_ISUPPORTS(UDPSocketChildBase, nsIUDPSocketChild)
 
 UDPSocketChildBase::UDPSocketChildBase()
 : mIPCOpen(false)
diff --git a/dom/network/src/UDPSocketParent.cpp b/dom/network/src/UDPSocketParent.cpp
index d07216aa23778e28aea8aebc3c21193b650b359e..36fbb1a4105f260ed8252d8b3e2ea49c99b2df00 100644
--- a/dom/network/src/UDPSocketParent.cpp
+++ b/dom/network/src/UDPSocketParent.cpp
@@ -56,7 +56,7 @@ ConvertNetAddrToString(mozilla::net::NetAddr &netAddr, nsACString *address, uint
   return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS1(UDPSocketParent, nsIUDPSocketListener)
+NS_IMPL_ISUPPORTS(UDPSocketParent, nsIUDPSocketListener)
 
 UDPSocketParent::~UDPSocketParent()
 {
diff --git a/dom/plugins/base/nsNPAPIPluginStreamListener.cpp b/dom/plugins/base/nsNPAPIPluginStreamListener.cpp
index 9377c86a92d75b6178085b4d9d7fdda3f2b5d9bc..312628cc900597f5e2935d40cad349261f8bb473 100644
--- a/dom/plugins/base/nsNPAPIPluginStreamListener.cpp
+++ b/dom/plugins/base/nsNPAPIPluginStreamListener.cpp
@@ -35,7 +35,7 @@ nsNPAPIStreamWrapper::~nsNPAPIStreamWrapper()
   }
 }
 
-NS_IMPL_ISUPPORTS1(nsPluginStreamToFile, nsIOutputStream)
+NS_IMPL_ISUPPORTS(nsPluginStreamToFile, nsIOutputStream)
 
 nsPluginStreamToFile::nsPluginStreamToFile(const char* target,
                                            nsIPluginInstanceOwner* owner)
@@ -128,8 +128,8 @@ nsPluginStreamToFile::Close(void)
 
 // nsNPAPIPluginStreamListener Methods
 
-NS_IMPL_ISUPPORTS2(nsNPAPIPluginStreamListener,
-                   nsITimerCallback, nsIHTTPHeaderListener)
+NS_IMPL_ISUPPORTS(nsNPAPIPluginStreamListener,
+                  nsITimerCallback, nsIHTTPHeaderListener)
 
 nsNPAPIPluginStreamListener::nsNPAPIPluginStreamListener(nsNPAPIPluginInstance* inst, 
                                                          void* notifyData,
diff --git a/dom/plugins/base/nsPluginDirServiceProvider.cpp b/dom/plugins/base/nsPluginDirServiceProvider.cpp
index 33f45694e2ef59a846d5107601fa4abd67fa3b4f..1d30034cecab5af0424ebd15773e9df638639fbc 100644
--- a/dom/plugins/base/nsPluginDirServiceProvider.cpp
+++ b/dom/plugins/base/nsPluginDirServiceProvider.cpp
@@ -177,8 +177,8 @@ nsPluginDirServiceProvider::~nsPluginDirServiceProvider()
 // nsPluginDirServiceProvider::nsISupports
 //*****************************************************************************
 
-NS_IMPL_ISUPPORTS1(nsPluginDirServiceProvider,
-                   nsIDirectoryServiceProvider)
+NS_IMPL_ISUPPORTS(nsPluginDirServiceProvider,
+                  nsIDirectoryServiceProvider)
 
 //*****************************************************************************
 // nsPluginDirServiceProvider::nsIDirectoryServiceProvider
diff --git a/dom/plugins/base/nsPluginHost.cpp b/dom/plugins/base/nsPluginHost.cpp
index 8492e7bb169cf6a5441ec8facdacb90754e9b7a9..4544f1bf1ea3371f30ff0e9e2fe90e05bb0923ac 100644
--- a/dom/plugins/base/nsPluginHost.cpp
+++ b/dom/plugins/base/nsPluginHost.cpp
@@ -277,11 +277,11 @@ nsPluginHost::~nsPluginHost()
   sInst = nullptr;
 }
 
-NS_IMPL_ISUPPORTS4(nsPluginHost,
-                   nsIPluginHost,
-                   nsIObserver,
-                   nsITimerCallback,
-                   nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(nsPluginHost,
+                  nsIPluginHost,
+                  nsIObserver,
+                  nsITimerCallback,
+                  nsISupportsWeakReference)
 
 already_AddRefed<nsPluginHost>
 nsPluginHost::GetInst()
diff --git a/dom/plugins/base/nsPluginInstanceOwner.cpp b/dom/plugins/base/nsPluginInstanceOwner.cpp
index b7aa1b113af3ea78aa993eaa214ba7d401cbdc94..e5cf082c07feb806e840a6ef50c0f018085f87ef 100644
--- a/dom/plugins/base/nsPluginInstanceOwner.cpp
+++ b/dom/plugins/base/nsPluginInstanceOwner.cpp
@@ -349,11 +349,11 @@ nsPluginInstanceOwner::~nsPluginInstanceOwner()
   }
 }
 
-NS_IMPL_ISUPPORTS4(nsPluginInstanceOwner,
-                   nsIPluginInstanceOwner,
-                   nsIDOMEventListener,
-                   nsIPrivacyTransitionObserver,
-                   nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(nsPluginInstanceOwner,
+                  nsIPluginInstanceOwner,
+                  nsIDOMEventListener,
+                  nsIPrivacyTransitionObserver,
+                  nsISupportsWeakReference)
 
 nsresult
 nsPluginInstanceOwner::SetInstance(nsNPAPIPluginInstance *aInstance)
@@ -3177,8 +3177,8 @@ nsPluginDOMContextMenuListener::~nsPluginDOMContextMenuListener()
 {
 }
 
-NS_IMPL_ISUPPORTS1(nsPluginDOMContextMenuListener,
-                   nsIDOMEventListener)
+NS_IMPL_ISUPPORTS(nsPluginDOMContextMenuListener,
+                  nsIDOMEventListener)
 
 NS_IMETHODIMP
 nsPluginDOMContextMenuListener::HandleEvent(nsIDOMEvent* aEvent)
diff --git a/dom/plugins/base/nsPluginPlayPreviewInfo.cpp b/dom/plugins/base/nsPluginPlayPreviewInfo.cpp
index 597592edea87d78d4690ef155edc007a348fca26..dcb40da769d0da3bf9aaf4b107e41d9a59f05590 100644
--- a/dom/plugins/base/nsPluginPlayPreviewInfo.cpp
+++ b/dom/plugins/base/nsPluginPlayPreviewInfo.cpp
@@ -26,7 +26,7 @@ nsPluginPlayPreviewInfo::~nsPluginPlayPreviewInfo()
 {
 }
 
-NS_IMPL_ISUPPORTS1(nsPluginPlayPreviewInfo, nsIPluginPlayPreviewInfo)
+NS_IMPL_ISUPPORTS(nsPluginPlayPreviewInfo, nsIPluginPlayPreviewInfo)
 
 NS_IMETHODIMP
 nsPluginPlayPreviewInfo::GetMimeType(nsACString& aMimeType)
diff --git a/dom/plugins/base/nsPluginStreamListenerPeer.cpp b/dom/plugins/base/nsPluginStreamListenerPeer.cpp
index 9ae3a2947783a71040be807b43b47b68854f4aee..44af8a1dba5b48b78395f06cd89319e8a66f0db6 100644
--- a/dom/plugins/base/nsPluginStreamListenerPeer.cpp
+++ b/dom/plugins/base/nsPluginStreamListenerPeer.cpp
@@ -52,10 +52,10 @@ private:
   bool mRemoveMagicNumber;
 };
 
-NS_IMPL_ISUPPORTS3(nsPluginByteRangeStreamListener,
-                   nsIRequestObserver,
-                   nsIStreamListener,
-                   nsIInterfaceRequestor)
+NS_IMPL_ISUPPORTS(nsPluginByteRangeStreamListener,
+                  nsIRequestObserver,
+                  nsIStreamListener,
+                  nsIInterfaceRequestor)
 
 nsPluginByteRangeStreamListener::nsPluginByteRangeStreamListener(nsIWeakReference* aWeakPtr)
 {
@@ -245,13 +245,13 @@ nsPluginByteRangeStreamListener::GetInterface(const nsIID& aIID, void** result)
 
 // nsPluginStreamListenerPeer
 
-NS_IMPL_ISUPPORTS6(nsPluginStreamListenerPeer,
-                   nsIStreamListener,
-                   nsIRequestObserver,
-                   nsIHttpHeaderVisitor,
-                   nsISupportsWeakReference,
-                   nsIInterfaceRequestor,
-                   nsIChannelEventSink)
+NS_IMPL_ISUPPORTS(nsPluginStreamListenerPeer,
+                  nsIStreamListener,
+                  nsIRequestObserver,
+                  nsIHttpHeaderVisitor,
+                  nsISupportsWeakReference,
+                  nsIInterfaceRequestor,
+                  nsIChannelEventSink)
 
 nsPluginStreamListenerPeer::nsPluginStreamListenerPeer()
 {
@@ -1221,7 +1221,7 @@ private:
   nsCOMPtr<nsIChannel> mNewChannel;
 };
 
-NS_IMPL_ISUPPORTS1(ChannelRedirectProxyCallback, nsIAsyncVerifyRedirectCallback)
+NS_IMPL_ISUPPORTS(ChannelRedirectProxyCallback, nsIAsyncVerifyRedirectCallback)
 
 
 NS_IMETHODIMP
diff --git a/dom/plugins/base/nsPluginTags.cpp b/dom/plugins/base/nsPluginTags.cpp
index eda94e71bbecf7856cf47fe9b2611cc335472a9a..0475227350e81dee7eb9969fd39cd8f91ba9769f 100644
--- a/dom/plugins/base/nsPluginTags.cpp
+++ b/dom/plugins/base/nsPluginTags.cpp
@@ -128,7 +128,7 @@ nsPluginTag::~nsPluginTag()
   NS_ASSERTION(!mNext, "Risk of exhausting the stack space, bug 486349");
 }
 
-NS_IMPL_ISUPPORTS1(nsPluginTag, nsIPluginTag)
+NS_IMPL_ISUPPORTS(nsPluginTag, nsIPluginTag)
 
 void nsPluginTag::InitMime(const char* const* aMimeTypes,
                            const char* const* aMimeDescriptions,
diff --git a/dom/plugins/ipc/PluginModuleParent.cpp b/dom/plugins/ipc/PluginModuleParent.cpp
index 9fb0df7b2c75b912fc26469af5b0ae0b5446337d..edc88d12435c56447c06163bc037038ff5009437 100755
--- a/dom/plugins/ipc/PluginModuleParent.cpp
+++ b/dom/plugins/ipc/PluginModuleParent.cpp
@@ -1760,7 +1760,7 @@ private:
     PluginModuleParent* mPmp;
 };
 
-NS_IMPL_ISUPPORTS2(PluginProfilerObserver, nsIObserver, nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(PluginProfilerObserver, nsIObserver, nsISupportsWeakReference)
 
 NS_IMETHODIMP
 PluginProfilerObserver::Observe(nsISupports *aSubject,
diff --git a/dom/power/PowerManagerService.cpp b/dom/power/PowerManagerService.cpp
index c506c0c69c255ba749a1e9dfc33ff9d1b9069994..efcacbbbe1559ee23b1be7400f913a1c415ac2ad 100644
--- a/dom/power/PowerManagerService.cpp
+++ b/dom/power/PowerManagerService.cpp
@@ -45,7 +45,7 @@ namespace power {
 
 using namespace hal;
 
-NS_IMPL_ISUPPORTS1(PowerManagerService, nsIPowerManagerService)
+NS_IMPL_ISUPPORTS(PowerManagerService, nsIPowerManagerService)
 
 /* static */ StaticRefPtr<PowerManagerService> PowerManagerService::sSingleton;
 
diff --git a/dom/quota/CheckQuotaHelper.cpp b/dom/quota/CheckQuotaHelper.cpp
index 0b78f2115481696b9230f9d618a11e6d798b4289..5ffcf3591470932ac113a26b0d2ea7a7a9d5aa18 100644
--- a/dom/quota/CheckQuotaHelper.cpp
+++ b/dom/quota/CheckQuotaHelper.cpp
@@ -134,9 +134,9 @@ CheckQuotaHelper::GetQuotaPermission(nsIPrincipal* aPrincipal)
   return permission;
 }
 
-NS_IMPL_ISUPPORTS3(CheckQuotaHelper, nsIRunnable,
-                   nsIInterfaceRequestor,
-                   nsIObserver)
+NS_IMPL_ISUPPORTS(CheckQuotaHelper, nsIRunnable,
+                  nsIInterfaceRequestor,
+                  nsIObserver)
 
 NS_IMETHODIMP
 CheckQuotaHelper::Run()
diff --git a/dom/quota/QuotaManager.cpp b/dom/quota/QuotaManager.cpp
index 569d12191d8a34c7bba9832c6f07945e6a619836..73e7cca260d63b536b044d88aa8631302939fdbc 100644
--- a/dom/quota/QuotaManager.cpp
+++ b/dom/quota/QuotaManager.cpp
@@ -2195,7 +2195,7 @@ QuotaManager::GetInfoForChrome(nsACString* aGroup,
   }
 }
 
-NS_IMPL_ISUPPORTS2(QuotaManager, nsIQuotaManager, nsIObserver)
+NS_IMPL_ISUPPORTS(QuotaManager, nsIQuotaManager, nsIObserver)
 
 NS_IMETHODIMP
 QuotaManager::GetUsageForURI(nsIURI* aURI,
@@ -3766,7 +3766,7 @@ AsyncUsageRunnable::AddToUsage(QuotaManager* aQuotaManager,
   return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS_INHERITED1(AsyncUsageRunnable, nsRunnable, nsIQuotaRequest)
+NS_IMPL_ISUPPORTS_INHERITED(AsyncUsageRunnable, nsRunnable, nsIQuotaRequest)
 
 NS_IMETHODIMP
 AsyncUsageRunnable::Run()
diff --git a/dom/smil/nsSMILTimeValueSpec.cpp b/dom/smil/nsSMILTimeValueSpec.cpp
index b22f912c813da63c1f539869aafea85c401ac60a..91810d7c328f3ea52495385a10e5843aa705a556 100644
--- a/dom/smil/nsSMILTimeValueSpec.cpp
+++ b/dom/smil/nsSMILTimeValueSpec.cpp
@@ -23,7 +23,7 @@ using namespace mozilla::dom;
 //----------------------------------------------------------------------
 // Nested class: EventListener
 
-NS_IMPL_ISUPPORTS1(nsSMILTimeValueSpec::EventListener, nsIDOMEventListener)
+NS_IMPL_ISUPPORTS(nsSMILTimeValueSpec::EventListener, nsIDOMEventListener)
 
 NS_IMETHODIMP
 nsSMILTimeValueSpec::EventListener::HandleEvent(nsIDOMEvent* aEvent)
diff --git a/dom/speakermanager/SpeakerManager.cpp b/dom/speakermanager/SpeakerManager.cpp
index 0d5371b69d900685ddd5f64b1288a924247d5adc..b10b26d0c5d77bfe0e2195a9ef0754a8af3081de 100644
--- a/dom/speakermanager/SpeakerManager.cpp
+++ b/dom/speakermanager/SpeakerManager.cpp
@@ -15,8 +15,8 @@
 namespace mozilla {
 namespace dom {
 
-NS_IMPL_QUERY_INTERFACE_INHERITED1(SpeakerManager, DOMEventTargetHelper,
-                                   nsIDOMEventListener)
+NS_IMPL_QUERY_INTERFACE_INHERITED(SpeakerManager, DOMEventTargetHelper,
+                                  nsIDOMEventListener)
 NS_IMPL_ADDREF_INHERITED(SpeakerManager, DOMEventTargetHelper)
 NS_IMPL_RELEASE_INHERITED(SpeakerManager, DOMEventTargetHelper)
 
diff --git a/dom/speakermanager/SpeakerManagerService.cpp b/dom/speakermanager/SpeakerManagerService.cpp
index f0170010ff64c6b0182f6a6c8060cab9292500c3..f44ab59bba15f797bd2292343771ee560f63c52f 100644
--- a/dom/speakermanager/SpeakerManagerService.cpp
+++ b/dom/speakermanager/SpeakerManagerService.cpp
@@ -59,7 +59,7 @@ SpeakerManagerService::Shutdown()
   }
 }
 
-NS_IMPL_ISUPPORTS1(SpeakerManagerService, nsIObserver)
+NS_IMPL_ISUPPORTS(SpeakerManagerService, nsIObserver)
 
 void
 SpeakerManagerService::ForceSpeaker(bool aEnable, uint64_t aChildId)
diff --git a/dom/src/geolocation/nsGeolocation.cpp b/dom/src/geolocation/nsGeolocation.cpp
index acd670d7470be8d113ff7ba17cd174961c026f78..6418d9c8aedadc20b0511a327233a7425384d52a 100644
--- a/dom/src/geolocation/nsGeolocation.cpp
+++ b/dom/src/geolocation/nsGeolocation.cpp
@@ -164,7 +164,7 @@ public:
   }
 };
 
-NS_IMPL_ISUPPORTS1(GeolocationSettingsCallback, nsISettingsServiceCallback)
+NS_IMPL_ISUPPORTS(GeolocationSettingsCallback, nsISettingsServiceCallback)
 
 class RequestPromptEvent : public nsRunnable
 {
diff --git a/dom/src/jsurl/nsJSProtocolHandler.cpp b/dom/src/jsurl/nsJSProtocolHandler.cpp
index a01b4416c46ef0a3d98263c54bdb382fbc9aa429..19d8b80307e570500d0f2240544e14ce88247976 100644
--- a/dom/src/jsurl/nsJSProtocolHandler.cpp
+++ b/dom/src/jsurl/nsJSProtocolHandler.cpp
@@ -77,7 +77,7 @@ protected:
 //
 // nsISupports implementation...
 //
-NS_IMPL_ISUPPORTS1(nsJSThunk, nsIInputStream)
+NS_IMPL_ISUPPORTS(nsJSThunk, nsIInputStream)
 
 
 nsJSThunk::nsJSThunk()
@@ -501,9 +501,9 @@ nsresult nsJSChannel::Init(nsIURI *aURI)
 // nsISupports implementation...
 //
 
-NS_IMPL_ISUPPORTS7(nsJSChannel, nsIChannel, nsIRequest, nsIRequestObserver,
-                   nsIStreamListener, nsIScriptChannel, nsIPropertyBag,
-                   nsIPropertyBag2)
+NS_IMPL_ISUPPORTS(nsJSChannel, nsIChannel, nsIRequest, nsIRequestObserver,
+                  nsIStreamListener, nsIScriptChannel, nsIPropertyBag,
+                  nsIPropertyBag2)
 
 //
 // nsIRequest implementation...
@@ -1131,7 +1131,7 @@ nsJSProtocolHandler::~nsJSProtocolHandler()
 {
 }
 
-NS_IMPL_ISUPPORTS1(nsJSProtocolHandler, nsIProtocolHandler)
+NS_IMPL_ISUPPORTS(nsJSProtocolHandler, nsIProtocolHandler)
 
 nsresult
 nsJSProtocolHandler::Create(nsISupports *aOuter, REFNSIID aIID, void **aResult)
diff --git a/dom/src/notification/DesktopNotification.cpp b/dom/src/notification/DesktopNotification.cpp
index 483064ae470600558800da6378f6ca7b282e6f48..993c1dcc04ced6f41f96026a16797b9f0f314507 100644
--- a/dom/src/notification/DesktopNotification.cpp
+++ b/dom/src/notification/DesktopNotification.cpp
@@ -69,7 +69,7 @@ public:
 /* AlertServiceObserver                                                     */
 /* ------------------------------------------------------------------------ */
 
-NS_IMPL_ISUPPORTS1(AlertServiceObserver, nsIObserver)
+NS_IMPL_ISUPPORTS(AlertServiceObserver, nsIObserver)
 
 /* ------------------------------------------------------------------------ */
 /* DesktopNotification                                                      */
@@ -308,9 +308,9 @@ DesktopNotificationCenter::WrapObject(JSContext* aCx)
 /* DesktopNotificationRequest                                               */
 /* ------------------------------------------------------------------------ */
 
-NS_IMPL_ISUPPORTS2(DesktopNotificationRequest,
-                   nsIContentPermissionRequest,
-                   nsIRunnable)
+NS_IMPL_ISUPPORTS(DesktopNotificationRequest,
+                  nsIContentPermissionRequest,
+                  nsIRunnable)
 
 NS_IMETHODIMP
 DesktopNotificationRequest::GetPrincipal(nsIPrincipal * *aRequestingPrincipal)
diff --git a/dom/src/notification/Notification.cpp b/dom/src/notification/Notification.cpp
index 3b556f0490914ea8cf3abd443aa9b100b1b5e718..de71734b972b7f83944b457afdd27856ace59071 100644
--- a/dom/src/notification/Notification.cpp
+++ b/dom/src/notification/Notification.cpp
@@ -371,7 +371,7 @@ NotificationPermissionRequest::Recv__delete__(const bool& aAllow,
   return true;
 }
 
-NS_IMPL_ISUPPORTS1(NotificationTask, nsIRunnable)
+NS_IMPL_ISUPPORTS(NotificationTask, nsIRunnable)
 
 NS_IMETHODIMP
 NotificationTask::Run()
@@ -389,7 +389,7 @@ NotificationTask::Run()
   return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS1(NotificationObserver, nsIObserver)
+NS_IMPL_ISUPPORTS(NotificationObserver, nsIObserver)
 
 NS_IMETHODIMP
 NotificationObserver::Observe(nsISupports* aSubject, const char* aTopic,
diff --git a/dom/src/storage/DOMStorageCache.cpp b/dom/src/storage/DOMStorageCache.cpp
index df92033ac4ade092ac882add6b6ab675f328d5df..a1189b941ef902881a93c8eded36825dd61ac8db 100644
--- a/dom/src/storage/DOMStorageCache.cpp
+++ b/dom/src/storage/DOMStorageCache.cpp
@@ -259,7 +259,7 @@ public:
   DOMStorageCacheHolder(DOMStorageCache* aCache) : mCache(aCache) {}
 };
 
-NS_IMPL_ISUPPORTS1(DOMStorageCacheHolder, nsITimerCallback)
+NS_IMPL_ISUPPORTS(DOMStorageCacheHolder, nsITimerCallback)
 
 } // anon
 
diff --git a/dom/src/storage/DOMStorageDBThread.cpp b/dom/src/storage/DOMStorageDBThread.cpp
index 8ddaf41f9c087fd0edec7f7992cec7f5aa0d97c8..3e381930046c0e31e2eefd9561675c4d277de165 100644
--- a/dom/src/storage/DOMStorageDBThread.cpp
+++ b/dom/src/storage/DOMStorageDBThread.cpp
@@ -346,7 +346,7 @@ class nsReverseStringSQLFunction MOZ_FINAL : public mozIStorageFunction
   NS_DECL_MOZISTORAGEFUNCTION
 };
 
-NS_IMPL_ISUPPORTS1(nsReverseStringSQLFunction, mozIStorageFunction)
+NS_IMPL_ISUPPORTS(nsReverseStringSQLFunction, mozIStorageFunction)
 
 NS_IMETHODIMP
 nsReverseStringSQLFunction::OnFunctionCall(
diff --git a/dom/src/storage/DOMStorageManager.cpp b/dom/src/storage/DOMStorageManager.cpp
index 457d529a8c8e4650b7abd7406c551a05e65de2ef..3e7f681249ceadbc7da08eb45ffb16a65930a566 100644
--- a/dom/src/storage/DOMStorageManager.cpp
+++ b/dom/src/storage/DOMStorageManager.cpp
@@ -94,8 +94,8 @@ PrincipalsEqual(nsIPrincipal* aObjectPrincipal, nsIPrincipal* aSubjectPrincipal)
   return aSubjectPrincipal->Equals(aObjectPrincipal);
 }
 
-NS_IMPL_ISUPPORTS1(DOMStorageManager,
-                   nsIDOMStorageManager)
+NS_IMPL_ISUPPORTS(DOMStorageManager,
+                  nsIDOMStorageManager)
 
 DOMStorageManager::DOMStorageManager(nsPIDOMStorage::StorageType aType)
   : mCaches(10)
diff --git a/dom/src/storage/DOMStorageObserver.cpp b/dom/src/storage/DOMStorageObserver.cpp
index 0bba85551c5c4ebf9d05035085929b009e570ed3..b90d29bb723388985167c31c7e545c8bcb0b5a41 100644
--- a/dom/src/storage/DOMStorageObserver.cpp
+++ b/dom/src/storage/DOMStorageObserver.cpp
@@ -30,9 +30,9 @@ namespace dom {
 static const char kStartupTopic[] = "sessionstore-windows-restored";
 static const uint32_t kStartupDelay = 0;
 
-NS_IMPL_ISUPPORTS2(DOMStorageObserver,
-                   nsIObserver,
-                   nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(DOMStorageObserver,
+                  nsIObserver,
+                  nsISupportsWeakReference)
 
 DOMStorageObserver* DOMStorageObserver::sSelf = nullptr;
 
diff --git a/dom/system/OSFileConstants.cpp b/dom/system/OSFileConstants.cpp
index ff12e438c6140988294c135b716cf5c6cbdddc90..98576f0206a1b79d3d2054d0e3839f14f33c17fd 100644
--- a/dom/system/OSFileConstants.cpp
+++ b/dom/system/OSFileConstants.cpp
@@ -208,7 +208,7 @@ class DelayedPathSetter MOZ_FINAL: public nsIObserver
   DelayedPathSetter() {}
 };
 
-NS_IMPL_ISUPPORTS1(DelayedPathSetter, nsIObserver)
+NS_IMPL_ISUPPORTS(DelayedPathSetter, nsIObserver)
 
 NS_IMETHODIMP
 DelayedPathSetter::Observe(nsISupports*, const char * aTopic, const char16_t*)
@@ -987,7 +987,7 @@ bool DefineOSFileConstants(JSContext *cx, JS::Handle<JSObject*> global)
   return true;
 }
 
-NS_IMPL_ISUPPORTS1(OSFileConstantsService, nsIOSFileConstantsService)
+NS_IMPL_ISUPPORTS(OSFileConstantsService, nsIOSFileConstantsService)
 
 OSFileConstantsService::OSFileConstantsService()
 {
diff --git a/dom/system/android/AndroidLocationProvider.cpp b/dom/system/android/AndroidLocationProvider.cpp
index 5fab3c175b33aec7f63886f5e163a63d8c403831..3768360d8d009edc6b1000c2cb4e547056f899c2 100644
--- a/dom/system/android/AndroidLocationProvider.cpp
+++ b/dom/system/android/AndroidLocationProvider.cpp
@@ -12,7 +12,7 @@ using namespace mozilla;
 
 extern nsIGeolocationUpdate *gLocationCallback;
 
-NS_IMPL_ISUPPORTS1(AndroidLocationProvider, nsIGeolocationProvider)
+NS_IMPL_ISUPPORTS(AndroidLocationProvider, nsIGeolocationProvider)
 
 AndroidLocationProvider::AndroidLocationProvider()
 {
diff --git a/dom/system/android/nsHapticFeedback.cpp b/dom/system/android/nsHapticFeedback.cpp
index 8b9fbf07b1df0abe5461c4758ef5ce72b7817efe..ef14033d6b2b2af4e24fba2d09cbb3dcdf1e4363 100644
--- a/dom/system/android/nsHapticFeedback.cpp
+++ b/dom/system/android/nsHapticFeedback.cpp
@@ -9,7 +9,7 @@
 
 using namespace mozilla;
 
-NS_IMPL_ISUPPORTS1(nsHapticFeedback, nsIHapticFeedback)
+NS_IMPL_ISUPPORTS(nsHapticFeedback, nsIHapticFeedback)
 
 NS_IMETHODIMP
 nsHapticFeedback::PerformSimpleAction(int32_t aType)
diff --git a/dom/system/gonk/AudioChannelManager.cpp b/dom/system/gonk/AudioChannelManager.cpp
index d5da28d7858f2472549083c77d9e50b6bdd91dc5..d4800e1d404f2ff4a8f451ef3dd91d7b433900be 100644
--- a/dom/system/gonk/AudioChannelManager.cpp
+++ b/dom/system/gonk/AudioChannelManager.cpp
@@ -18,8 +18,8 @@ namespace mozilla {
 namespace dom {
 namespace system {
 
-NS_IMPL_QUERY_INTERFACE_INHERITED1(AudioChannelManager, DOMEventTargetHelper,
-                                   nsIDOMEventListener)
+NS_IMPL_QUERY_INTERFACE_INHERITED(AudioChannelManager, DOMEventTargetHelper,
+                                  nsIDOMEventListener)
 NS_IMPL_ADDREF_INHERITED(AudioChannelManager, DOMEventTargetHelper)
 NS_IMPL_RELEASE_INHERITED(AudioChannelManager, DOMEventTargetHelper)
 
diff --git a/dom/system/gonk/AudioManager.cpp b/dom/system/gonk/AudioManager.cpp
index 6b52407b4eb4597ab9e23db9cce787da4c3e036b..7c09e3f31a76d1d039e7b12ff118f582e08ba40e 100644
--- a/dom/system/gonk/AudioManager.cpp
+++ b/dom/system/gonk/AudioManager.cpp
@@ -159,7 +159,7 @@ public:
   }
 };
 
-NS_IMPL_ISUPPORTS1(AudioChannelVolInitCallback, nsISettingsServiceCallback)
+NS_IMPL_ISUPPORTS(AudioChannelVolInitCallback, nsISettingsServiceCallback)
 } /* namespace gonk */
 } /* namespace dom */
 } /* namespace mozilla */
@@ -192,7 +192,7 @@ static void ProcessDelayedAudioRoute(SwitchState aState)
   sSwitchDone = true;
 }
 
-NS_IMPL_ISUPPORTS2(AudioManager, nsIAudioManager, nsIObserver)
+NS_IMPL_ISUPPORTS(AudioManager, nsIAudioManager, nsIObserver)
 
 static void
 InternalSetAudioRoutesICS(SwitchState aState)
diff --git a/dom/system/gonk/AutoMounterSetting.cpp b/dom/system/gonk/AutoMounterSetting.cpp
index 3a021ff33ee563364491ee272dacdcd26afce8c4..3ab353edbe9d3a8e740951ef75d66e5d52e2f8bb 100644
--- a/dom/system/gonk/AutoMounterSetting.cpp
+++ b/dom/system/gonk/AutoMounterSetting.cpp
@@ -57,7 +57,7 @@ public:
   }
 };
 
-NS_IMPL_ISUPPORTS1(SettingsServiceCallback, nsISettingsServiceCallback)
+NS_IMPL_ISUPPORTS(SettingsServiceCallback, nsISettingsServiceCallback)
 
 class CheckVolumeSettingsCallback MOZ_FINAL : public nsISettingsServiceCallback
 {
@@ -85,7 +85,7 @@ private:
   nsCString mVolumeName;
 };
 
-NS_IMPL_ISUPPORTS1(CheckVolumeSettingsCallback, nsISettingsServiceCallback)
+NS_IMPL_ISUPPORTS(CheckVolumeSettingsCallback, nsISettingsServiceCallback)
 
 AutoMounterSetting::AutoMounterSetting()
   : mStatus(AUTOMOUNTER_STATUS_DISABLED)
@@ -136,7 +136,7 @@ AutoMounterSetting::~AutoMounterSetting()
   }
 }
 
-NS_IMPL_ISUPPORTS1(AutoMounterSetting, nsIObserver)
+NS_IMPL_ISUPPORTS(AutoMounterSetting, nsIObserver)
 
 const char *
 AutoMounterSetting::StatusStr(int32_t aStatus)
diff --git a/dom/system/gonk/GonkGPSGeolocationProvider.cpp b/dom/system/gonk/GonkGPSGeolocationProvider.cpp
index 851cb0026337eb5bdfcd19f80a4cae7db026fe2b..ab54a4446128b1860033cf4110a0ac66f16379f0 100644
--- a/dom/system/gonk/GonkGPSGeolocationProvider.cpp
+++ b/dom/system/gonk/GonkGPSGeolocationProvider.cpp
@@ -54,10 +54,10 @@ static const char* kNetworkConnStateChangedTopic = "network-connection-state-cha
 // While most methods of GonkGPSGeolocationProvider should only be
 // called from main thread, we deliberately put the Init and ShutdownGPS
 // methods off main thread to avoid blocking.
-NS_IMPL_ISUPPORTS3(GonkGPSGeolocationProvider,
-                   nsIGeolocationProvider,
-                   nsIObserver,
-                   nsISettingsServiceCallback)
+NS_IMPL_ISUPPORTS(GonkGPSGeolocationProvider,
+                  nsIGeolocationProvider,
+                  nsIObserver,
+                  nsISettingsServiceCallback)
 
 /* static */ GonkGPSGeolocationProvider* GonkGPSGeolocationProvider::sSingleton = nullptr;
 GpsCallbacks GonkGPSGeolocationProvider::mCallbacks = {
@@ -655,8 +655,8 @@ GonkGPSGeolocationProvider::SetupAGPS()
 #endif // MOZ_B2G_RIL
 
 
-NS_IMPL_ISUPPORTS1(GonkGPSGeolocationProvider::NetworkLocationUpdate,
-                   nsIGeolocationUpdate)
+NS_IMPL_ISUPPORTS(GonkGPSGeolocationProvider::NetworkLocationUpdate,
+                  nsIGeolocationUpdate)
 
 NS_IMETHODIMP
 GonkGPSGeolocationProvider::NetworkLocationUpdate::Update(nsIDOMGeoPosition *position)
diff --git a/dom/system/gonk/NetworkWorker.cpp b/dom/system/gonk/NetworkWorker.cpp
index 1f35052e3f23d27470db6e48f4d93ef2531ef4b1..61d9c439d31f54e9c56b502959b286a8722b827d 100644
--- a/dom/system/gonk/NetworkWorker.cpp
+++ b/dom/system/gonk/NetworkWorker.cpp
@@ -134,7 +134,7 @@ public:
   }
 };
 
-NS_IMPL_ISUPPORTS1(NetworkWorker, nsINetworkWorker)
+NS_IMPL_ISUPPORTS(NetworkWorker, nsINetworkWorker)
 
 NetworkWorker::NetworkWorker()
 {
diff --git a/dom/system/gonk/SystemWorkerManager.cpp b/dom/system/gonk/SystemWorkerManager.cpp
index 6fbaac4eacc406ad2da472fd3448446dffa02793..a968fc9cbbcf2ee9062f0bcc15b4c0f117ff8738 100644
--- a/dom/system/gonk/SystemWorkerManager.cpp
+++ b/dom/system/gonk/SystemWorkerManager.cpp
@@ -246,10 +246,10 @@ SystemWorkerManager::InitKeyStore(JSContext *cx)
   return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS3(SystemWorkerManager,
-                   nsIObserver,
-                   nsIInterfaceRequestor,
-                   nsISystemWorkerManager)
+NS_IMPL_ISUPPORTS(SystemWorkerManager,
+                  nsIObserver,
+                  nsIInterfaceRequestor,
+                  nsISystemWorkerManager)
 
 NS_IMETHODIMP
 SystemWorkerManager::Observe(nsISupports *aSubject, const char *aTopic,
diff --git a/dom/system/gonk/TimeZoneSettingObserver.cpp b/dom/system/gonk/TimeZoneSettingObserver.cpp
index c4e6528e47ee3aa1c42c84f6acbbcabe76350dfa..06fc0800b258ab60178e7dc965319414ec89f35b 100644
--- a/dom/system/gonk/TimeZoneSettingObserver.cpp
+++ b/dom/system/gonk/TimeZoneSettingObserver.cpp
@@ -109,7 +109,7 @@ public:
   }
 };
 
-NS_IMPL_ISUPPORTS1(TimeZoneSettingCb, nsISettingsServiceCallback)
+NS_IMPL_ISUPPORTS(TimeZoneSettingCb, nsISettingsServiceCallback)
 
 TimeZoneSettingObserver::TimeZoneSettingObserver()
 {
@@ -180,7 +180,7 @@ TimeZoneSettingObserver::~TimeZoneSettingObserver()
   }
 }
 
-NS_IMPL_ISUPPORTS1(TimeZoneSettingObserver, nsIObserver)
+NS_IMPL_ISUPPORTS(TimeZoneSettingObserver, nsIObserver)
 
 NS_IMETHODIMP
 TimeZoneSettingObserver::Observe(nsISupports *aSubject,
diff --git a/dom/system/gonk/VolumeServiceTest.cpp b/dom/system/gonk/VolumeServiceTest.cpp
index 0166f9097dcab5b29ca7695a316484098f6aedff..81453a531e8c59f9df0855bf24c86500dca4bfae 100644
--- a/dom/system/gonk/VolumeServiceTest.cpp
+++ b/dom/system/gonk/VolumeServiceTest.cpp
@@ -89,7 +89,7 @@ public:
 };
 static nsCOMPtr<VolumeTestObserver>  sTestObserver;
 
-NS_IMPL_ISUPPORTS1(VolumeTestObserver, nsIObserver)
+NS_IMPL_ISUPPORTS(VolumeTestObserver, nsIObserver)
 
 NS_IMETHODIMP
 VolumeTestObserver::Observe(nsISupports* aSubject,
diff --git a/dom/system/gonk/nsVolume.cpp b/dom/system/gonk/nsVolume.cpp
index 5424abc0f33173ea07a62cd4aa578eee2b29d81d..76d5fa6e0f0a93a65422bb723597e30bd8fc72af 100644
--- a/dom/system/gonk/nsVolume.cpp
+++ b/dom/system/gonk/nsVolume.cpp
@@ -45,7 +45,7 @@ NS_VolumeStateStr(int32_t aState)
 // allocate an nsVolume which is then passed to MainThread. Since we
 // have a situation where we allocate on one thread and free on another
 // we use a thread safe AddRef implementation.
-NS_IMPL_ISUPPORTS1(nsVolume, nsIVolume)
+NS_IMPL_ISUPPORTS(nsVolume, nsIVolume)
 
 nsVolume::nsVolume(const Volume* aVolume)
   : mName(NS_ConvertUTF8toUTF16(aVolume->Name())),
diff --git a/dom/system/gonk/nsVolumeMountLock.cpp b/dom/system/gonk/nsVolumeMountLock.cpp
index f3917a7ab4d92a3070363bc373c51b1131c564bd..235613b8b1d3cd71343b11974396da10816743ca 100644
--- a/dom/system/gonk/nsVolumeMountLock.cpp
+++ b/dom/system/gonk/nsVolumeMountLock.cpp
@@ -25,8 +25,8 @@ using namespace mozilla::services;
 namespace mozilla {
 namespace system {
 
-NS_IMPL_ISUPPORTS3(nsVolumeMountLock, nsIVolumeMountLock,
-                   nsIObserver, nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(nsVolumeMountLock, nsIVolumeMountLock,
+                  nsIObserver, nsISupportsWeakReference)
 
 // static
 already_AddRefed<nsVolumeMountLock>
diff --git a/dom/system/gonk/nsVolumeService.cpp b/dom/system/gonk/nsVolumeService.cpp
index e909c988eff97ac3c1544fb6172699faaa588594..3ff86b84222751713fb02169d4c6d83aac8c41ef 100644
--- a/dom/system/gonk/nsVolumeService.cpp
+++ b/dom/system/gonk/nsVolumeService.cpp
@@ -39,9 +39,9 @@ using namespace mozilla::services;
 namespace mozilla {
 namespace system {
 
-NS_IMPL_ISUPPORTS2(nsVolumeService,
-                   nsIVolumeService,
-                   nsIDOMMozWakeLockListener)
+NS_IMPL_ISUPPORTS(nsVolumeService,
+                  nsIVolumeService,
+                  nsIDOMMozWakeLockListener)
 
 StaticRefPtr<nsVolumeService> nsVolumeService::sSingleton;
 
diff --git a/dom/system/gonk/nsVolumeStat.cpp b/dom/system/gonk/nsVolumeStat.cpp
index aa244016b4925e99fca8221d6ff3522f5431145d..1928abaf9231e1bdc265d0953633bafb04860d84 100644
--- a/dom/system/gonk/nsVolumeStat.cpp
+++ b/dom/system/gonk/nsVolumeStat.cpp
@@ -8,7 +8,7 @@
 namespace mozilla {
 namespace system {
 
-NS_IMPL_ISUPPORTS1(nsVolumeStat, nsIVolumeStat)
+NS_IMPL_ISUPPORTS(nsVolumeStat, nsIVolumeStat)
 
 nsVolumeStat::nsVolumeStat(const nsAString& aPath)
 {
diff --git a/dom/system/mac/CoreLocationLocationProvider.mm b/dom/system/mac/CoreLocationLocationProvider.mm
index fd2afd11825148a80e199ba6f6cfae51e11a5f1d..cff2571648c1c8f9b3dd34e667e330c848f44f9c 100644
--- a/dom/system/mac/CoreLocationLocationProvider.mm
+++ b/dom/system/mac/CoreLocationLocationProvider.mm
@@ -124,7 +124,7 @@ public:
   CLLocationManager* mLocationManager;
 };
 
-NS_IMPL_ISUPPORTS1(CoreLocationLocationProvider, nsIGeolocationProvider)
+NS_IMPL_ISUPPORTS(CoreLocationLocationProvider, nsIGeolocationProvider)
 
 CoreLocationLocationProvider::CoreLocationLocationProvider()
   : mCLObjects(nullptr)
diff --git a/dom/system/nsDeviceSensors.cpp b/dom/system/nsDeviceSensors.cpp
index 9ac796f2b7aee3641d5eef4d84f6ce1340a2e0d9..4517a94805060d2cc1667dff1a24cef3c9e133a2 100644
--- a/dom/system/nsDeviceSensors.cpp
+++ b/dom/system/nsDeviceSensors.cpp
@@ -94,7 +94,7 @@ NS_IMETHODIMP nsDeviceSensorData::GetZ(double *aZ)
   return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS1(nsDeviceSensors, nsIDeviceSensors)
+NS_IMPL_ISUPPORTS(nsDeviceSensors, nsIDeviceSensors)
 
 nsDeviceSensors::nsDeviceSensors()
 {
diff --git a/dom/system/qt/QTMLocationProvider.cpp b/dom/system/qt/QTMLocationProvider.cpp
index 7e902d6fab5673235fe406387b00ebf28889b9b4..ba238b8a8791f71a02f7d3d1293b7149f69b8cb4 100644
--- a/dom/system/qt/QTMLocationProvider.cpp
+++ b/dom/system/qt/QTMLocationProvider.cpp
@@ -8,7 +8,7 @@
 
 using namespace mozilla;
 
-NS_IMPL_ISUPPORTS1(QTMLocationProvider, nsIGeolocationProvider)
+NS_IMPL_ISUPPORTS(QTMLocationProvider, nsIGeolocationProvider)
 
 QTMLocationProvider::QTMLocationProvider()
 {
diff --git a/dom/system/qt/QtHapticFeedback.cpp b/dom/system/qt/QtHapticFeedback.cpp
index 8e2177578bf668be19dde5380433881a3c4d8145..91aa1592d317a42fd6ab4f7bd0f0222946a060a7 100644
--- a/dom/system/qt/QtHapticFeedback.cpp
+++ b/dom/system/qt/QtHapticFeedback.cpp
@@ -6,7 +6,7 @@
 #include <QFeedbackEffect>
 #include "QtHapticFeedback.h"
 
-NS_IMPL_ISUPPORTS1(QtHapticFeedback, nsIHapticFeedback)
+NS_IMPL_ISUPPORTS(QtHapticFeedback, nsIHapticFeedback)
 
 NS_IMETHODIMP
 QtHapticFeedback::PerformSimpleAction(int32_t aType)
diff --git a/dom/system/windows/nsHapticFeedback.cpp b/dom/system/windows/nsHapticFeedback.cpp
index 115c175ad532b5de9d4ccbf777e21c0155d1e91b..382036c0a967d25a8c666a3137f81459a7d80266 100644
--- a/dom/system/windows/nsHapticFeedback.cpp
+++ b/dom/system/windows/nsHapticFeedback.cpp
@@ -5,7 +5,7 @@
 
 #include "nsHapticFeedback.h"
 
-NS_IMPL_ISUPPORTS1(nsHapticFeedback, nsIHapticFeedback)
+NS_IMPL_ISUPPORTS(nsHapticFeedback, nsIHapticFeedback)
 
 NS_IMETHODIMP
 nsHapticFeedback::PerformSimpleAction(int32_t aType)
diff --git a/dom/telephony/Telephony.cpp b/dom/telephony/Telephony.cpp
index 62d0458a318598e2d1f27c2dd3b3e32df9dd1982..7f14c9ed21f1e8aba7bdfca8f54ab943414bbb36 100644
--- a/dom/telephony/Telephony.cpp
+++ b/dom/telephony/Telephony.cpp
@@ -379,8 +379,8 @@ NS_INTERFACE_MAP_END_INHERITING(DOMEventTargetHelper)
 NS_IMPL_ADDREF_INHERITED(Telephony, DOMEventTargetHelper)
 NS_IMPL_RELEASE_INHERITED(Telephony, DOMEventTargetHelper)
 
-NS_IMPL_ISUPPORTS1(Telephony::Listener, nsITelephonyListener)
-NS_IMPL_ISUPPORTS1(Telephony::Callback, nsITelephonyCallback)
+NS_IMPL_ISUPPORTS(Telephony::Listener, nsITelephonyListener)
+NS_IMPL_ISUPPORTS(Telephony::Callback, nsITelephonyCallback)
 
 // Telephony WebIDL
 
diff --git a/dom/telephony/ipc/TelephonyIPCProvider.cpp b/dom/telephony/ipc/TelephonyIPCProvider.cpp
index 4f5adbabca0908e4302321846a43ab27b355d5c7..f194b25282b8a733468ff5edd231284f70ca6d96 100644
--- a/dom/telephony/ipc/TelephonyIPCProvider.cpp
+++ b/dom/telephony/ipc/TelephonyIPCProvider.cpp
@@ -36,10 +36,10 @@ getDefaultServiceId()
 
 } // Anonymous namespace
 
-NS_IMPL_ISUPPORTS3(TelephonyIPCProvider,
-                   nsITelephonyProvider,
-                   nsITelephonyListener,
-                   nsIObserver)
+NS_IMPL_ISUPPORTS(TelephonyIPCProvider,
+                  nsITelephonyProvider,
+                  nsITelephonyListener,
+                  nsIObserver)
 
 TelephonyIPCProvider::TelephonyIPCProvider()
 {
diff --git a/dom/telephony/ipc/TelephonyParent.cpp b/dom/telephony/ipc/TelephonyParent.cpp
index 2fadb78955d3ac3a4a2dcd8f110c54dfab827b42..4b57dee5ba7e2a36aa4b26320f0f2622288d9271 100644
--- a/dom/telephony/ipc/TelephonyParent.cpp
+++ b/dom/telephony/ipc/TelephonyParent.cpp
@@ -12,7 +12,7 @@ USING_TELEPHONY_NAMESPACE
  * TelephonyParent
  ******************************************************************************/
 
-NS_IMPL_ISUPPORTS1(TelephonyParent, nsITelephonyListener)
+NS_IMPL_ISUPPORTS(TelephonyParent, nsITelephonyListener)
 
 TelephonyParent::TelephonyParent()
   : mActorDestroyed(false)
@@ -374,9 +374,9 @@ TelephonyParent::SupplementaryServiceNotification(uint32_t aClientId,
  * TelephonyRequestParent
  ******************************************************************************/
 
-NS_IMPL_ISUPPORTS2(TelephonyRequestParent,
-                   nsITelephonyListener,
-                   nsITelephonyCallback)
+NS_IMPL_ISUPPORTS(TelephonyRequestParent,
+                  nsITelephonyListener,
+                  nsITelephonyCallback)
 
 TelephonyRequestParent::TelephonyRequestParent()
   : mActorDestroyed(false)
diff --git a/dom/time/TimeService.cpp b/dom/time/TimeService.cpp
index a9cb973b79d0d982771556ec7021cc51b0e66606..d7ed704478bc6dc3a65159d222931f79ca722979 100644
--- a/dom/time/TimeService.cpp
+++ b/dom/time/TimeService.cpp
@@ -12,7 +12,7 @@ namespace mozilla {
 namespace dom {
 namespace time {
 
-NS_IMPL_ISUPPORTS1(TimeService, nsITimeService)
+NS_IMPL_ISUPPORTS(TimeService, nsITimeService)
 
 /* static */ StaticRefPtr<TimeService> TimeService::sSingleton;
 
diff --git a/dom/voicemail/Voicemail.cpp b/dom/voicemail/Voicemail.cpp
index b639e8c7d67c2e5566bae8425cd2312bd7aebf2e..4a06c7c93b6ec63ded4b89f4915f46b6823462fa 100644
--- a/dom/voicemail/Voicemail.cpp
+++ b/dom/voicemail/Voicemail.cpp
@@ -42,7 +42,7 @@ public:
   }
 };
 
-NS_IMPL_ISUPPORTS1(Voicemail::Listener, nsIVoicemailListener)
+NS_IMPL_ISUPPORTS(Voicemail::Listener, nsIVoicemailListener)
 
 Voicemail::Voicemail(nsPIDOMWindow* aWindow,
                      nsIVoicemailProvider* aProvider)
diff --git a/dom/wifi/WifiProxyService.cpp b/dom/wifi/WifiProxyService.cpp
index 1b93789a023b1154ba3e3dba594d1b1079006e19..3607b4a782cd60a796dc038341358bd3b0366a40 100644
--- a/dom/wifi/WifiProxyService.cpp
+++ b/dom/wifi/WifiProxyService.cpp
@@ -158,7 +158,7 @@ private:
    nsCString mInterface;
 };
 
-NS_IMPL_ISUPPORTS1(WifiProxyService, nsIWifiProxyService)
+NS_IMPL_ISUPPORTS(WifiProxyService, nsIWifiProxyService)
 
 WifiProxyService::WifiProxyService()
 {
diff --git a/dom/workers/RuntimeService.cpp b/dom/workers/RuntimeService.cpp
index 87f0c5f42da362b039462d0343daedff64b9d709..b34cba320f7f2d890689df3e2806886a2393d579 100644
--- a/dom/workers/RuntimeService.cpp
+++ b/dom/workers/RuntimeService.cpp
@@ -2275,7 +2275,7 @@ RuntimeService::SendOfflineStatusChangeEventToAllWorkers(bool aIsOffline)
 }
 
 // nsISupports
-NS_IMPL_ISUPPORTS1(RuntimeService, nsIObserver)
+NS_IMPL_ISUPPORTS(RuntimeService, nsIObserver)
 
 // nsIObserver
 NS_IMETHODIMP
@@ -2444,7 +2444,7 @@ RuntimeService::WorkerThread::Dispatch(nsIRunnable* aRunnable, uint32_t aFlags)
   return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS1(RuntimeService::WorkerThread::Observer, nsIThreadObserver)
+NS_IMPL_ISUPPORTS(RuntimeService::WorkerThread::Observer, nsIThreadObserver)
 
 NS_IMETHODIMP
 RuntimeService::WorkerThread::Observer::OnDispatchedEvent(
diff --git a/dom/workers/ScriptLoader.cpp b/dom/workers/ScriptLoader.cpp
index 60f51e9cfa5745c562d9d060fc06492eb9de2d7f..3207a42f053183a8cadab978b6228a4955831c98 100644
--- a/dom/workers/ScriptLoader.cpp
+++ b/dom/workers/ScriptLoader.cpp
@@ -611,7 +611,7 @@ private:
   }
 };
 
-NS_IMPL_ISUPPORTS2(ScriptLoaderRunnable, nsIRunnable, nsIStreamLoaderObserver)
+NS_IMPL_ISUPPORTS(ScriptLoaderRunnable, nsIRunnable, nsIStreamLoaderObserver)
 
 class ChannelGetterRunnable MOZ_FINAL : public nsRunnable
 {
diff --git a/dom/workers/WorkerPrivate.cpp b/dom/workers/WorkerPrivate.cpp
index 47a9e943a3a9a41040b2f8edcff28f0845a45a90..23510ffd38377fa764ef28b4bba390d8de150c6b 100644
--- a/dom/workers/WorkerPrivate.cpp
+++ b/dom/workers/WorkerPrivate.cpp
@@ -1811,7 +1811,7 @@ NS_IMPL_ISUPPORTS_INHERITED0(MainThreadReleaseRunnable, nsRunnable)
 
 NS_IMPL_ISUPPORTS_INHERITED0(TopLevelWorkerFinishedRunnable, nsRunnable)
 
-NS_IMPL_ISUPPORTS1(TimerThreadEventTarget, nsIEventTarget)
+NS_IMPL_ISUPPORTS(TimerThreadEventTarget, nsIEventTarget)
 
 template <class Derived>
 class WorkerPrivateParent<Derived>::SynchronizeAndResumeRunnable MOZ_FINAL
@@ -2078,7 +2078,7 @@ private:
   }
 };
 
-NS_IMPL_ISUPPORTS1(WorkerPrivate::MemoryReporter, nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(WorkerPrivate::MemoryReporter, nsIMemoryReporter)
 
 WorkerPrivate::SyncLoopInfo::SyncLoopInfo(EventTarget* aEventTarget)
 : mEventTarget(aEventTarget), mCompleted(false), mResult(false)
diff --git a/dom/workers/XMLHttpRequest.cpp b/dom/workers/XMLHttpRequest.cpp
index c3f92385fa3fa2db9adea292ee21ce2b61faa591..cd9c13069eec9cf6c1381527544fb5f49c7653d8 100644
--- a/dom/workers/XMLHttpRequest.cpp
+++ b/dom/workers/XMLHttpRequest.cpp
@@ -999,7 +999,7 @@ Proxy::AddRemoveEventListeners(bool aUpload, bool aAdd)
   return true;
 }
 
-NS_IMPL_ISUPPORTS1(Proxy, nsIDOMEventListener)
+NS_IMPL_ISUPPORTS(Proxy, nsIDOMEventListener)
 
 NS_IMETHODIMP
 Proxy::HandleEvent(nsIDOMEvent* aEvent)
@@ -1082,8 +1082,8 @@ NS_IMPL_ISUPPORTS_INHERITED0(WorkerThreadProxySyncRunnable, nsRunnable)
 
 NS_IMPL_ISUPPORTS_INHERITED0(AsyncTeardownRunnable, nsRunnable)
 
-NS_IMPL_ISUPPORTS_INHERITED1(LoadStartDetectionRunnable, nsRunnable,
-                                                         nsIDOMEventListener)
+NS_IMPL_ISUPPORTS_INHERITED(LoadStartDetectionRunnable, nsRunnable,
+                                                        nsIDOMEventListener)
 
 NS_IMETHODIMP
 LoadStartDetectionRunnable::Run()
diff --git a/dom/xbl/XBLChildrenElement.cpp b/dom/xbl/XBLChildrenElement.cpp
index 2dcc8e0c4343ab92b0ae99703904a4930e06aa64..c1089135a1218ec54c67b947e3609eefed606e96 100644
--- a/dom/xbl/XBLChildrenElement.cpp
+++ b/dom/xbl/XBLChildrenElement.cpp
@@ -19,8 +19,8 @@ NS_IMPL_ADDREF_INHERITED(XBLChildrenElement, Element)
 NS_IMPL_RELEASE_INHERITED(XBLChildrenElement, Element)
 
 NS_INTERFACE_TABLE_HEAD(XBLChildrenElement)
-  NS_INTERFACE_TABLE_INHERITED2(XBLChildrenElement, nsIDOMNode,
-                                                    nsIDOMElement)
+  NS_INTERFACE_TABLE_INHERITED(XBLChildrenElement, nsIDOMNode,
+                               nsIDOMElement)
   NS_ELEMENT_INTERFACE_TABLE_TO_MAP_SEGUE
 NS_INTERFACE_MAP_END_INHERITING(Element)
 
@@ -82,8 +82,8 @@ NS_IMPL_CYCLE_COLLECTING_RELEASE(nsAnonymousContentList)
 
 NS_INTERFACE_TABLE_HEAD(nsAnonymousContentList)
   NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
-  NS_INTERFACE_TABLE_INHERITED2(nsAnonymousContentList, nsINodeList,
-                                                        nsIDOMNodeList)
+  NS_INTERFACE_TABLE_INHERITED(nsAnonymousContentList, nsINodeList,
+                               nsIDOMNodeList)
   NS_INTERFACE_TABLE_TO_MAP_SEGUE
   NS_INTERFACE_MAP_ENTRIES_CYCLE_COLLECTION(nsAnonymousContentList)
   NS_INTERFACE_MAP_ENTRY(nsISupports)
diff --git a/dom/xbl/nsXBLEventHandler.cpp b/dom/xbl/nsXBLEventHandler.cpp
index 000759150af401684707eb8de7cc1f12664912cc..5dfe99d733d05511d00d162986d0fcd88897ad7f 100644
--- a/dom/xbl/nsXBLEventHandler.cpp
+++ b/dom/xbl/nsXBLEventHandler.cpp
@@ -24,7 +24,7 @@ nsXBLEventHandler::~nsXBLEventHandler()
 {
 }
 
-NS_IMPL_ISUPPORTS1(nsXBLEventHandler, nsIDOMEventListener)
+NS_IMPL_ISUPPORTS(nsXBLEventHandler, nsIDOMEventListener)
 
 NS_IMETHODIMP
 nsXBLEventHandler::HandleEvent(nsIDOMEvent* aEvent)
@@ -79,7 +79,7 @@ nsXBLKeyEventHandler::~nsXBLKeyEventHandler()
 {
 }
 
-NS_IMPL_ISUPPORTS1(nsXBLKeyEventHandler, nsIDOMEventListener)
+NS_IMPL_ISUPPORTS(nsXBLKeyEventHandler, nsIDOMEventListener)
 
 bool
 nsXBLKeyEventHandler::ExecuteMatchedHandlers(nsIDOMKeyEvent* aKeyEvent,
diff --git a/dom/xbl/nsXBLService.cpp b/dom/xbl/nsXBLService.cpp
index 8c2142f3cdc34f4251ed6e0db0874bfdd8455cbd..32de6970bbee0b11762762804d65b4ac8a794097 100644
--- a/dom/xbl/nsXBLService.cpp
+++ b/dom/xbl/nsXBLService.cpp
@@ -183,10 +183,10 @@ private:
 };
 
 /* Implementation file */
-NS_IMPL_ISUPPORTS3(nsXBLStreamListener,
-                   nsIStreamListener,
-                   nsIRequestObserver,
-                   nsIDOMEventListener)
+NS_IMPL_ISUPPORTS(nsXBLStreamListener,
+                  nsIStreamListener,
+                  nsIRequestObserver,
+                  nsIDOMEventListener)
 
 nsXBLStreamListener::nsXBLStreamListener(nsIDocument* aBoundDocument,
                                          nsIXMLContentSink* aSink,
@@ -368,7 +368,7 @@ nsXBLStreamListener::HandleEvent(nsIDOMEvent* aEvent)
 bool nsXBLService::gAllowDataURIs = false;
 
 // Implement our nsISupports methods
-NS_IMPL_ISUPPORTS1(nsXBLService, nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(nsXBLService, nsISupportsWeakReference)
 
 void
 nsXBLService::Init()
diff --git a/dom/xbl/nsXBLWindowKeyHandler.cpp b/dom/xbl/nsXBLWindowKeyHandler.cpp
index 1d5a2afeb4febf4d6903a245c93211129edda9cd..858f2ba72ab11fd69ca5b1c5907526197edcbd5f 100644
--- a/dom/xbl/nsXBLWindowKeyHandler.cpp
+++ b/dom/xbl/nsXBLWindowKeyHandler.cpp
@@ -67,7 +67,7 @@ public:
 const char nsXBLSpecialDocInfo::sHTMLBindingStr[] =
   "chrome://global/content/platformHTMLBindings.xml";
 
-NS_IMPL_ISUPPORTS1(nsXBLSpecialDocInfo, nsIObserver)
+NS_IMPL_ISUPPORTS(nsXBLSpecialDocInfo, nsIObserver)
 
 NS_IMETHODIMP
 nsXBLSpecialDocInfo::Observe(nsISupports* aSubject,
@@ -183,8 +183,8 @@ nsXBLWindowKeyHandler::~nsXBLWindowKeyHandler()
   }
 }
 
-NS_IMPL_ISUPPORTS1(nsXBLWindowKeyHandler,
-                   nsIDOMEventListener)
+NS_IMPL_ISUPPORTS(nsXBLWindowKeyHandler,
+                  nsIDOMEventListener)
 
 static void
 BuildHandlerChain(nsIContent* aContent, nsXBLPrototypeHandler** aResult)
diff --git a/dom/xslt/xpath/XPathEvaluator.cpp b/dom/xslt/xpath/XPathEvaluator.cpp
index 283de43b6c403b84defd45c2e99fdfd86bc898b5..73e17a6f38b72e53484194aea0527eba86c75568 100644
--- a/dom/xslt/xpath/XPathEvaluator.cpp
+++ b/dom/xslt/xpath/XPathEvaluator.cpp
@@ -58,7 +58,7 @@ private:
     bool mIsCaseSensitive;
 };
 
-NS_IMPL_ISUPPORTS1(XPathEvaluator, nsIDOMXPathEvaluator)
+NS_IMPL_ISUPPORTS(XPathEvaluator, nsIDOMXPathEvaluator)
 
 XPathEvaluator::XPathEvaluator(nsIDocument* aDocument)
     : mDocument(do_GetWeakReference(aDocument))
diff --git a/dom/xslt/xpath/txNodeSetAdaptor.cpp b/dom/xslt/xpath/txNodeSetAdaptor.cpp
index c7ff541809e8f498cd1d0d8ae7c506fb070aabb6..d2d16d5ef5ba0b2a1f31164c475b599a4a49c277 100644
--- a/dom/xslt/xpath/txNodeSetAdaptor.cpp
+++ b/dom/xslt/xpath/txNodeSetAdaptor.cpp
@@ -18,7 +18,7 @@ txNodeSetAdaptor::txNodeSetAdaptor(txNodeSet *aNodeSet)
 {
 }
 
-NS_IMPL_ISUPPORTS_INHERITED1(txNodeSetAdaptor, txXPathObjectAdaptor, txINodeSet)
+NS_IMPL_ISUPPORTS_INHERITED(txNodeSetAdaptor, txXPathObjectAdaptor, txINodeSet)
 
 nsresult
 txNodeSetAdaptor::Init()
diff --git a/dom/xslt/xpath/txXPCOMExtensionFunction.cpp b/dom/xslt/xpath/txXPCOMExtensionFunction.cpp
index f682ba8f73b6d0392071419e89a8eb4733db1f5f..e81ff27a65fec8e4278f1022c535dbe513108965 100644
--- a/dom/xslt/xpath/txXPCOMExtensionFunction.cpp
+++ b/dom/xslt/xpath/txXPCOMExtensionFunction.cpp
@@ -20,7 +20,7 @@
 #include "nsIClassInfo.h"
 #include "nsIInterfaceInfo.h"
 
-NS_IMPL_ISUPPORTS1(txXPathObjectAdaptor, txIXPathObject)
+NS_IMPL_ISUPPORTS(txXPathObjectAdaptor, txIXPathObject)
 
 class txFunctionEvaluationContext MOZ_FINAL : public txIFunctionEvaluationContext
 {
@@ -47,7 +47,7 @@ txFunctionEvaluationContext::txFunctionEvaluationContext(txIEvalContext *aContex
 {
 }
 
-NS_IMPL_ISUPPORTS1(txFunctionEvaluationContext, txIFunctionEvaluationContext)
+NS_IMPL_ISUPPORTS(txFunctionEvaluationContext, txIFunctionEvaluationContext)
 
 NS_IMETHODIMP
 txFunctionEvaluationContext::GetPosition(uint32_t *aPosition)
diff --git a/dom/xslt/xslt/txMozillaStylesheetCompiler.cpp b/dom/xslt/xslt/txMozillaStylesheetCompiler.cpp
index 1815092606c160a78d4ccf916c7898a47c741b53..18a3eb522da9ff1f3eca7fb747ff81e5f1492c58 100644
--- a/dom/xslt/xslt/txMozillaStylesheetCompiler.cpp
+++ b/dom/xslt/xslt/txMozillaStylesheetCompiler.cpp
@@ -106,13 +106,13 @@ txStylesheetSink::txStylesheetSink(txStylesheetCompiler* aCompiler,
     mListener = do_QueryInterface(aParser);
 }
 
-NS_IMPL_ISUPPORTS6(txStylesheetSink,
-                   nsIXMLContentSink,
-                   nsIContentSink,
-                   nsIExpatSink,
-                   nsIStreamListener,
-                   nsIRequestObserver,
-                   nsIInterfaceRequestor)
+NS_IMPL_ISUPPORTS(txStylesheetSink,
+                  nsIXMLContentSink,
+                  nsIContentSink,
+                  nsIExpatSink,
+                  nsIStreamListener,
+                  nsIRequestObserver,
+                  nsIInterfaceRequestor)
 
 NS_IMETHODIMP
 txStylesheetSink::HandleStartElement(const char16_t *aName,
diff --git a/dom/xslt/xslt/txMozillaXMLOutput.cpp b/dom/xslt/xslt/txMozillaXMLOutput.cpp
index 978fac787c88aa673970d4935c6adb6b5858670d..6b953453996dd3c61f4cf7f77590150b70d95021 100644
--- a/dom/xslt/xslt/txMozillaXMLOutput.cpp
+++ b/dom/xslt/xslt/txMozillaXMLOutput.cpp
@@ -949,9 +949,9 @@ txTransformNotifier::txTransformNotifier()
 {
 }
 
-NS_IMPL_ISUPPORTS2(txTransformNotifier,
-                   nsIScriptLoaderObserver,
-                   nsICSSLoaderObserver)
+NS_IMPL_ISUPPORTS(txTransformNotifier,
+                  nsIScriptLoaderObserver,
+                  nsICSSLoaderObserver)
 
 NS_IMETHODIMP
 txTransformNotifier::ScriptAvailable(nsresult aResult, 
diff --git a/editor/composer/src/nsComposeTxtSrvFilter.cpp b/editor/composer/src/nsComposeTxtSrvFilter.cpp
index 00e38fd85cb081686cbb02d35bb00bd6247e0ef2..aee839d864f498e0e1c93d9960f575655fe91b62 100644
--- a/editor/composer/src/nsComposeTxtSrvFilter.cpp
+++ b/editor/composer/src/nsComposeTxtSrvFilter.cpp
@@ -16,7 +16,7 @@ nsComposeTxtSrvFilter::nsComposeTxtSrvFilter() :
 {
 }
 
-NS_IMPL_ISUPPORTS1(nsComposeTxtSrvFilter, nsITextServicesFilter)
+NS_IMPL_ISUPPORTS(nsComposeTxtSrvFilter, nsITextServicesFilter)
 
 NS_IMETHODIMP
 nsComposeTxtSrvFilter::Skip(nsIDOMNode* aNode, bool *_retval)
diff --git a/editor/composer/src/nsComposerCommands.cpp b/editor/composer/src/nsComposerCommands.cpp
index 98ec84d1dd95940732da7e0af71ef5e624b6b9b5..401a5c89fadc1113f509e5e45182ed2a9dce6445 100644
--- a/editor/composer/src/nsComposerCommands.cpp
+++ b/editor/composer/src/nsComposerCommands.cpp
@@ -52,7 +52,7 @@ nsBaseComposerCommand::nsBaseComposerCommand()
 {
 }
 
-NS_IMPL_ISUPPORTS1(nsBaseComposerCommand, nsIControllerCommand)
+NS_IMPL_ISUPPORTS(nsBaseComposerCommand, nsIControllerCommand)
 
 
 nsBaseStateUpdatingCommand::nsBaseStateUpdatingCommand(nsIAtom* aTagName)
diff --git a/editor/composer/src/nsComposerCommandsUpdater.cpp b/editor/composer/src/nsComposerCommandsUpdater.cpp
index d02b158b86b6ab3e205cf996c500744686e509f7..5edb1b7af0325f8439bf699922b5c198e6593b3f 100644
--- a/editor/composer/src/nsComposerCommandsUpdater.cpp
+++ b/editor/composer/src/nsComposerCommandsUpdater.cpp
@@ -40,8 +40,8 @@ nsComposerCommandsUpdater::~nsComposerCommandsUpdater()
   }
 }
 
-NS_IMPL_ISUPPORTS4(nsComposerCommandsUpdater, nsISelectionListener,
-                   nsIDocumentStateListener, nsITransactionListener, nsITimerCallback)
+NS_IMPL_ISUPPORTS(nsComposerCommandsUpdater, nsISelectionListener,
+                  nsIDocumentStateListener, nsITransactionListener, nsITimerCallback)
 
 #if 0
 #pragma mark -
diff --git a/editor/composer/src/nsEditingSession.cpp b/editor/composer/src/nsEditingSession.cpp
index bfbfc059de6a3fc9de097b655a2745d9cccc83f8..97092bc1f6af86d2e0fdfc8d15020a5e6f78669c 100644
--- a/editor/composer/src/nsEditingSession.cpp
+++ b/editor/composer/src/nsEditingSession.cpp
@@ -86,8 +86,8 @@ nsEditingSession::~nsEditingSession()
     mLoadBlankDocTimer->Cancel();
 }
 
-NS_IMPL_ISUPPORTS3(nsEditingSession, nsIEditingSession, nsIWebProgressListener, 
-                   nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(nsEditingSession, nsIEditingSession, nsIWebProgressListener, 
+                  nsISupportsWeakReference)
 
 /*---------------------------------------------------------------------------
 
diff --git a/editor/composer/src/nsEditorSpellCheck.cpp b/editor/composer/src/nsEditorSpellCheck.cpp
index 89bd8898486949bcbed8ab96e38d2941cf5f42a3..90a08f700846e81d1da00776c541116f93c4f6b7 100644
--- a/editor/composer/src/nsEditorSpellCheck.cpp
+++ b/editor/composer/src/nsEditorSpellCheck.cpp
@@ -146,7 +146,7 @@ public:
 private:
   nsRefPtr<nsEditorSpellCheck> mSpellCheck;
 };
-NS_IMPL_ISUPPORTS1(DictionaryFetcher, nsIContentPrefCallback2)
+NS_IMPL_ISUPPORTS(DictionaryFetcher, nsIContentPrefCallback2)
 
 NS_IMETHODIMP
 DictionaryFetcher::Fetch(nsIEditor* aEditor)
diff --git a/editor/libeditor/base/nsEditorCommands.cpp b/editor/libeditor/base/nsEditorCommands.cpp
index 4f2890fce6f8502df10f4208d25c2be6e385cb19..576703f0d65c7afa51adad4ba892b99b475475fe 100644
--- a/editor/libeditor/base/nsEditorCommands.cpp
+++ b/editor/libeditor/base/nsEditorCommands.cpp
@@ -36,7 +36,7 @@ nsBaseEditorCommand::nsBaseEditorCommand()
 {
 }
 
-NS_IMPL_ISUPPORTS1(nsBaseEditorCommand, nsIControllerCommand)
+NS_IMPL_ISUPPORTS(nsBaseEditorCommand, nsIControllerCommand)
 
 
 NS_IMETHODIMP
diff --git a/editor/libeditor/base/nsEditorEventListener.cpp b/editor/libeditor/base/nsEditorEventListener.cpp
index 1e0e7e54f1fc0486961aa487e4bc2a1f6127c742..73d352106afd86dba52ac3c62a50044fee8df27f 100644
--- a/editor/libeditor/base/nsEditorEventListener.cpp
+++ b/editor/libeditor/base/nsEditorEventListener.cpp
@@ -301,7 +301,7 @@ nsEditorEventListener::GetPresShell()
  *  nsISupports implementation
  */
 
-NS_IMPL_ISUPPORTS1(nsEditorEventListener, nsIDOMEventListener)
+NS_IMPL_ISUPPORTS(nsEditorEventListener, nsIDOMEventListener)
 
 /**
  *  nsIDOMEventListener implementation
diff --git a/editor/libeditor/html/nsHTMLAnonymousUtils.cpp b/editor/libeditor/html/nsHTMLAnonymousUtils.cpp
index 2b8a55a07579be00eeeef5b557fba06c4a04a570..da2632de5921ae7817b6ac70a2ae326eb3cd6cfc 100644
--- a/editor/libeditor/html/nsHTMLAnonymousUtils.cpp
+++ b/editor/libeditor/html/nsHTMLAnonymousUtils.cpp
@@ -104,7 +104,7 @@ protected:
   nsINode* mObservedNode;
 };
 
-NS_IMPL_ISUPPORTS1(nsElementDeletionObserver, nsIMutationObserver)
+NS_IMPL_ISUPPORTS(nsElementDeletionObserver, nsIMutationObserver)
 NS_IMPL_NSIMUTATIONOBSERVER_CONTENT(nsElementDeletionObserver)
 
 void
diff --git a/editor/libeditor/html/nsHTMLEditRules.cpp b/editor/libeditor/html/nsHTMLEditRules.cpp
index b55effe88910eac7f6bb6c7f1831bd4f3fa042dd..6782904452b201155577b17996238171cc0d761e 100644
--- a/editor/libeditor/html/nsHTMLEditRules.cpp
+++ b/editor/libeditor/html/nsHTMLEditRules.cpp
@@ -220,7 +220,7 @@ nsHTMLEditRules::~nsHTMLEditRules()
 
 NS_IMPL_ADDREF_INHERITED(nsHTMLEditRules, nsTextEditRules)
 NS_IMPL_RELEASE_INHERITED(nsHTMLEditRules, nsTextEditRules)
-NS_IMPL_QUERY_INTERFACE_INHERITED1(nsHTMLEditRules, nsTextEditRules, nsIEditActionListener)
+NS_IMPL_QUERY_INTERFACE_INHERITED(nsHTMLEditRules, nsTextEditRules, nsIEditActionListener)
 
 
 /********************************************************
diff --git a/editor/libeditor/html/nsHTMLObjectResizer.cpp b/editor/libeditor/html/nsHTMLObjectResizer.cpp
index a0e8cee98388f7e0563347edce45fd447773696a..494c6d8cd50d1947eaf1660b841c35741fccb531 100644
--- a/editor/libeditor/html/nsHTMLObjectResizer.cpp
+++ b/editor/libeditor/html/nsHTMLObjectResizer.cpp
@@ -54,7 +54,7 @@ class nsHTMLEditUtils;
 // ==================================================================
 // DocumentResizeEventListener
 // ==================================================================
-NS_IMPL_ISUPPORTS1(DocumentResizeEventListener, nsIDOMEventListener)
+NS_IMPL_ISUPPORTS(DocumentResizeEventListener, nsIDOMEventListener)
 
 DocumentResizeEventListener::DocumentResizeEventListener(nsIHTMLEditor * aEditor) 
 {
@@ -78,7 +78,7 @@ DocumentResizeEventListener::HandleEvent(nsIDOMEvent* aMouseEvent)
 // ResizerSelectionListener
 // ==================================================================
 
-NS_IMPL_ISUPPORTS1(ResizerSelectionListener, nsISelectionListener)
+NS_IMPL_ISUPPORTS(ResizerSelectionListener, nsISelectionListener)
 
 ResizerSelectionListener::ResizerSelectionListener(nsIHTMLEditor * aEditor)
 {
@@ -110,7 +110,7 @@ ResizerSelectionListener::NotifySelectionChanged(nsIDOMDocument *, nsISelection
 // ResizerMouseMotionListener
 // ==================================================================
 
-NS_IMPL_ISUPPORTS1(ResizerMouseMotionListener, nsIDOMEventListener)
+NS_IMPL_ISUPPORTS(ResizerMouseMotionListener, nsIDOMEventListener)
 
 ResizerMouseMotionListener::ResizerMouseMotionListener(nsIHTMLEditor * aEditor)
 {
diff --git a/editor/libeditor/html/nsHTMLURIRefObject.cpp b/editor/libeditor/html/nsHTMLURIRefObject.cpp
index 11374b8017cc67d8f1142d407974d37d1a46beb6..8d7dbb0264ff0f91c9d8e0e1d6d1b6cba260b33f 100644
--- a/editor/libeditor/html/nsHTMLURIRefObject.cpp
+++ b/editor/libeditor/html/nsHTMLURIRefObject.cpp
@@ -92,7 +92,7 @@ nsHTMLURIRefObject::~nsHTMLURIRefObject()
 }
 
 //Interfaces for addref and release and queryinterface
-NS_IMPL_ISUPPORTS1(nsHTMLURIRefObject, nsIURIRefObject)
+NS_IMPL_ISUPPORTS(nsHTMLURIRefObject, nsIURIRefObject)
 
 NS_IMETHODIMP
 nsHTMLURIRefObject::Reset()
diff --git a/editor/txmgr/src/nsTransactionList.cpp b/editor/txmgr/src/nsTransactionList.cpp
index 450ebc50393f0af23dbc7d247485ff8633c6973b..57c0a5b2a47cf2d6c281768c246bee37551eda4d 100644
--- a/editor/txmgr/src/nsTransactionList.cpp
+++ b/editor/txmgr/src/nsTransactionList.cpp
@@ -15,7 +15,7 @@
 #include "nsTransactionStack.h"
 #include "nscore.h"
 
-NS_IMPL_ISUPPORTS1(nsTransactionList, nsITransactionList)
+NS_IMPL_ISUPPORTS(nsTransactionList, nsITransactionList)
 
 nsTransactionList::nsTransactionList(nsITransactionManager *aTxnMgr, nsTransactionStack *aTxnStack)
   : mTxnStack(aTxnStack)
diff --git a/editor/txmgr/tests/TestTXMgr.cpp b/editor/txmgr/tests/TestTXMgr.cpp
index eb8900836ab16df607da6dc3700fc43e4f8d644a..7373db175b50667d627b0910c2f2fb0ab4846344 100644
--- a/editor/txmgr/tests/TestTXMgr.cpp
+++ b/editor/txmgr/tests/TestTXMgr.cpp
@@ -413,7 +413,7 @@ public:
   NS_DECL_ISUPPORTS
 };
 
-NS_IMPL_ISUPPORTS1(TestTransaction, nsITransaction)
+NS_IMPL_ISUPPORTS(TestTransaction, nsITransaction)
 
 class SimpleTransaction : public TestTransaction
 {
diff --git a/embedding/browser/webBrowser/nsContextMenuInfo.cpp b/embedding/browser/webBrowser/nsContextMenuInfo.cpp
index 7717010ba53c7cbcb59c1276ef15f3cbd732192d..6a15401444b2392d8f311a22f8ca70432041b005 100644
--- a/embedding/browser/webBrowser/nsContextMenuInfo.cpp
+++ b/embedding/browser/webBrowser/nsContextMenuInfo.cpp
@@ -34,7 +34,7 @@
 // class nsContextMenuInfo
 //*****************************************************************************
 
-NS_IMPL_ISUPPORTS1(nsContextMenuInfo, nsIContextMenuInfo)
+NS_IMPL_ISUPPORTS(nsContextMenuInfo, nsIContextMenuInfo)
 
 nsContextMenuInfo::nsContextMenuInfo()
 {
diff --git a/embedding/browser/webBrowser/nsDocShellTreeOwner.cpp b/embedding/browser/webBrowser/nsDocShellTreeOwner.cpp
index ae6088d776d7dfa977c2a3b550c85180577ae5c5..622ab27d4438c6e546a165451abcd881a28fdec2 100644
--- a/embedding/browser/webBrowser/nsDocShellTreeOwner.cpp
+++ b/embedding/browser/webBrowser/nsDocShellTreeOwner.cpp
@@ -1003,7 +1003,7 @@ protected:
     nsCOMPtr<nsIAtom>   mTag_window;
 };
 
-NS_IMPL_ISUPPORTS1(DefaultTooltipTextProvider, nsITooltipTextProvider)
+NS_IMPL_ISUPPORTS(DefaultTooltipTextProvider, nsITooltipTextProvider)
 
 DefaultTooltipTextProvider::DefaultTooltipTextProvider()
 {
@@ -1132,7 +1132,7 @@ DefaultTooltipTextProvider::GetNodeText(nsIDOMNode *aNode, char16_t **aText,
 
 ///////////////////////////////////////////////////////////////////////////////
 
-NS_IMPL_ISUPPORTS1(ChromeTooltipListener, nsIDOMEventListener)
+NS_IMPL_ISUPPORTS(ChromeTooltipListener, nsIDOMEventListener)
 
 //
 // ChromeTooltipListener ctor
@@ -1525,7 +1525,7 @@ ChromeTooltipListener::sAutoHideCallback(nsITimer *aTimer, void* aListener)
 } // sAutoHideCallback
 
 
-NS_IMPL_ISUPPORTS1(ChromeContextMenuListener, nsIDOMEventListener)
+NS_IMPL_ISUPPORTS(ChromeContextMenuListener, nsIDOMEventListener)
 
 
 //
diff --git a/embedding/browser/webBrowser/nsWebBrowserContentPolicy.cpp b/embedding/browser/webBrowser/nsWebBrowserContentPolicy.cpp
index debeffca97b19996c36bd730dc5dde22ec71dbee..7ad29823a2af231007053e51694f2c13e4f56331 100644
--- a/embedding/browser/webBrowser/nsWebBrowserContentPolicy.cpp
+++ b/embedding/browser/webBrowser/nsWebBrowserContentPolicy.cpp
@@ -21,7 +21,7 @@ nsWebBrowserContentPolicy::~nsWebBrowserContentPolicy()
     MOZ_COUNT_DTOR(nsWebBrowserContentPolicy);
 }
 
-NS_IMPL_ISUPPORTS1(nsWebBrowserContentPolicy, nsIContentPolicy)
+NS_IMPL_ISUPPORTS(nsWebBrowserContentPolicy, nsIContentPolicy)
 
 NS_IMETHODIMP
 nsWebBrowserContentPolicy::ShouldLoad(uint32_t          contentType,
diff --git a/embedding/components/appstartup/src/nsAppStartupNotifier.cpp b/embedding/components/appstartup/src/nsAppStartupNotifier.cpp
index ce64ab4e4cd5a6bddbdbd5dcc0469559a9259e74..4ef38fb8d3c7d24aa64e562ea1a4681dafe68652 100644
--- a/embedding/components/appstartup/src/nsAppStartupNotifier.cpp
+++ b/embedding/components/appstartup/src/nsAppStartupNotifier.cpp
@@ -13,7 +13,7 @@
 #include "nsAppStartupNotifier.h"
 #include "nsISimpleEnumerator.h"
 
-NS_IMPL_ISUPPORTS1(nsAppStartupNotifier, nsIObserver)
+NS_IMPL_ISUPPORTS(nsAppStartupNotifier, nsIObserver)
 
 nsAppStartupNotifier::nsAppStartupNotifier()
 {
diff --git a/embedding/components/commandhandler/src/nsCommandGroup.cpp b/embedding/components/commandhandler/src/nsCommandGroup.cpp
index 8d5281fcbf9fbe2704b2e7116726a641ba578365..37a2c4778f1282fb2ab70ef42d51384438d1d892 100644
--- a/embedding/components/commandhandler/src/nsCommandGroup.cpp
+++ b/embedding/components/commandhandler/src/nsCommandGroup.cpp
@@ -41,7 +41,7 @@ protected:
 };
 
 /* Implementation file */
-NS_IMPL_ISUPPORTS1(nsGroupsEnumerator, nsISimpleEnumerator)
+NS_IMPL_ISUPPORTS(nsGroupsEnumerator, nsISimpleEnumerator)
 
 nsGroupsEnumerator::nsGroupsEnumerator(nsHashtable& inHashTable)
 : mHashTable(inHashTable)
@@ -159,7 +159,7 @@ nsNamedGroupEnumerator::~nsNamedGroupEnumerator()
 {
 }
 
-NS_IMPL_ISUPPORTS1(nsNamedGroupEnumerator, nsISimpleEnumerator)
+NS_IMPL_ISUPPORTS(nsNamedGroupEnumerator, nsISimpleEnumerator)
 
 /* boolean hasMoreElements (); */
 NS_IMETHODIMP
@@ -202,7 +202,7 @@ nsNamedGroupEnumerator::GetNext(nsISupports **_retval)
 
 
 /* Implementation file */
-NS_IMPL_ISUPPORTS1(nsControllerCommandGroup, nsIControllerCommandGroup)
+NS_IMPL_ISUPPORTS(nsControllerCommandGroup, nsIControllerCommandGroup)
 
 nsControllerCommandGroup::nsControllerCommandGroup()
 {
diff --git a/embedding/components/commandhandler/src/nsCommandParams.cpp b/embedding/components/commandhandler/src/nsCommandParams.cpp
index 00d5543e760c1585f5d543bb33198771c939b15f..c885ef539dbf4f537f7c3d9c328acfb596150fc4 100644
--- a/embedding/components/commandhandler/src/nsCommandParams.cpp
+++ b/embedding/components/commandhandler/src/nsCommandParams.cpp
@@ -25,7 +25,7 @@ const PLDHashTableOps nsCommandParams::sHashOps =
 };
 
 
-NS_IMPL_ISUPPORTS1(nsCommandParams, nsICommandParams)
+NS_IMPL_ISUPPORTS(nsCommandParams, nsICommandParams)
 
 nsCommandParams::nsCommandParams()
 : mCurEntry(0)
diff --git a/embedding/components/commandhandler/src/nsControllerCommandTable.cpp b/embedding/components/commandhandler/src/nsControllerCommandTable.cpp
index dc3ff0859fe84459e83c67611e866722e958c092..34e5095c4b849be89c2e553d2f3218b73049ccae 100644
--- a/embedding/components/commandhandler/src/nsControllerCommandTable.cpp
+++ b/embedding/components/commandhandler/src/nsControllerCommandTable.cpp
@@ -27,7 +27,7 @@ nsControllerCommandTable::~nsControllerCommandTable()
 {
 }
 
-NS_IMPL_ISUPPORTS2(nsControllerCommandTable, nsIControllerCommandTable, nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(nsControllerCommandTable, nsIControllerCommandTable, nsISupportsWeakReference)
 
 NS_IMETHODIMP
 nsControllerCommandTable::MakeImmutable(void)
diff --git a/embedding/components/find/src/nsWebBrowserFind.cpp b/embedding/components/find/src/nsWebBrowserFind.cpp
index ee8392d1af8877a03ca90f8a770e8f0b30518c4c..2fb01808b9a306008154fba0c6268430105f38b6 100644
--- a/embedding/components/find/src/nsWebBrowserFind.cpp
+++ b/embedding/components/find/src/nsWebBrowserFind.cpp
@@ -63,7 +63,7 @@ nsWebBrowserFind::~nsWebBrowserFind()
 {
 }
 
-NS_IMPL_ISUPPORTS2(nsWebBrowserFind, nsIWebBrowserFind, nsIWebBrowserFindInFrames)
+NS_IMPL_ISUPPORTS(nsWebBrowserFind, nsIWebBrowserFind, nsIWebBrowserFindInFrames)
 
 
 /* boolean findNext (); */
diff --git a/embedding/components/printingui/src/mac/nsPrintProgressParams.cpp b/embedding/components/printingui/src/mac/nsPrintProgressParams.cpp
index 939af3455d850cbc14a08ffa04d72bdeb04e6196..a2ffb1184ba230665b6f0cf36d6718da43ce4d1a 100644
--- a/embedding/components/printingui/src/mac/nsPrintProgressParams.cpp
+++ b/embedding/components/printingui/src/mac/nsPrintProgressParams.cpp
@@ -7,7 +7,7 @@
 #include "nsReadableUtils.h"
 
 
-NS_IMPL_ISUPPORTS1(nsPrintProgressParams, nsIPrintProgressParams)
+NS_IMPL_ISUPPORTS(nsPrintProgressParams, nsIPrintProgressParams)
 
 nsPrintProgressParams::nsPrintProgressParams()
 {
diff --git a/embedding/components/printingui/src/mac/nsPrintingPromptServiceX.mm b/embedding/components/printingui/src/mac/nsPrintingPromptServiceX.mm
index 966dda080425a7c6d52b8dfe3ffdeff68b97249a..cb4261a3567bca2daf989e83bb0df9b105132ca5 100644
--- a/embedding/components/printingui/src/mac/nsPrintingPromptServiceX.mm
+++ b/embedding/components/printingui/src/mac/nsPrintingPromptServiceX.mm
@@ -17,7 +17,7 @@
 // nsPrintingPromptService
 //*****************************************************************************   
 
-NS_IMPL_ISUPPORTS2(nsPrintingPromptService, nsIPrintingPromptService, nsIWebProgressListener)
+NS_IMPL_ISUPPORTS(nsPrintingPromptService, nsIPrintingPromptService, nsIWebProgressListener)
 
 nsPrintingPromptService::nsPrintingPromptService()
 {
diff --git a/embedding/components/printingui/src/unixshared/nsPrintProgressParams.cpp b/embedding/components/printingui/src/unixshared/nsPrintProgressParams.cpp
index 939af3455d850cbc14a08ffa04d72bdeb04e6196..a2ffb1184ba230665b6f0cf36d6718da43ce4d1a 100644
--- a/embedding/components/printingui/src/unixshared/nsPrintProgressParams.cpp
+++ b/embedding/components/printingui/src/unixshared/nsPrintProgressParams.cpp
@@ -7,7 +7,7 @@
 #include "nsReadableUtils.h"
 
 
-NS_IMPL_ISUPPORTS1(nsPrintProgressParams, nsIPrintProgressParams)
+NS_IMPL_ISUPPORTS(nsPrintProgressParams, nsIPrintProgressParams)
 
 nsPrintProgressParams::nsPrintProgressParams()
 {
diff --git a/embedding/components/printingui/src/unixshared/nsPrintingPromptService.cpp b/embedding/components/printingui/src/unixshared/nsPrintingPromptService.cpp
index b36a477416e880a93a62d4e9dd417f53e12b3b9b..48f8f7d23d69dce4ef1dffe5a0689b3aa06bfdae 100644
--- a/embedding/components/printingui/src/unixshared/nsPrintingPromptService.cpp
+++ b/embedding/components/printingui/src/unixshared/nsPrintingPromptService.cpp
@@ -53,7 +53,7 @@ private:
  ***************** nsPrintingPromptService **********************
  ****************************************************************/
 
-NS_IMPL_ISUPPORTS2(nsPrintingPromptService, nsIPrintingPromptService, nsIWebProgressListener)
+NS_IMPL_ISUPPORTS(nsPrintingPromptService, nsIPrintingPromptService, nsIWebProgressListener)
 
 nsPrintingPromptService::nsPrintingPromptService() 
 {
diff --git a/embedding/components/printingui/src/win/nsPrintProgressParams.cpp b/embedding/components/printingui/src/win/nsPrintProgressParams.cpp
index 939af3455d850cbc14a08ffa04d72bdeb04e6196..a2ffb1184ba230665b6f0cf36d6718da43ce4d1a 100644
--- a/embedding/components/printingui/src/win/nsPrintProgressParams.cpp
+++ b/embedding/components/printingui/src/win/nsPrintProgressParams.cpp
@@ -7,7 +7,7 @@
 #include "nsReadableUtils.h"
 
 
-NS_IMPL_ISUPPORTS1(nsPrintProgressParams, nsIPrintProgressParams)
+NS_IMPL_ISUPPORTS(nsPrintProgressParams, nsIPrintProgressParams)
 
 nsPrintProgressParams::nsPrintProgressParams()
 {
diff --git a/embedding/components/printingui/src/win/nsPrintingPromptService.cpp b/embedding/components/printingui/src/win/nsPrintingPromptService.cpp
index fc0a24b01b96c91fce1db9c20a7d0f8609908d06..302536f655ed158649cb3cf97bdd7b52d20f17e3 100644
--- a/embedding/components/printingui/src/win/nsPrintingPromptService.cpp
+++ b/embedding/components/printingui/src/win/nsPrintingPromptService.cpp
@@ -68,7 +68,7 @@ private:
 
 //*****************************************************************************   
 
-NS_IMPL_ISUPPORTS2(nsPrintingPromptService, nsIPrintingPromptService, nsIWebProgressListener)
+NS_IMPL_ISUPPORTS(nsPrintingPromptService, nsIPrintingPromptService, nsIWebProgressListener)
 
 nsPrintingPromptService::nsPrintingPromptService() 
 {
diff --git a/embedding/components/windowwatcher/src/nsDialogParamBlock.cpp b/embedding/components/windowwatcher/src/nsDialogParamBlock.cpp
index df92a8fe71f79ac710d91c7ed3267937504aa027..1df20131210d790a77f38230bc5c1177b8887e4f 100644
--- a/embedding/components/windowwatcher/src/nsDialogParamBlock.cpp
+++ b/embedding/components/windowwatcher/src/nsDialogParamBlock.cpp
@@ -7,7 +7,7 @@
 #include "nsString.h"
 #include "nsReadableUtils.h"
 
-NS_IMPL_ISUPPORTS1(nsDialogParamBlock, nsIDialogParamBlock)
+NS_IMPL_ISUPPORTS(nsDialogParamBlock, nsIDialogParamBlock)
 
 nsDialogParamBlock::nsDialogParamBlock() : mNumStrings(0), mString(nullptr)
 {
diff --git a/embedding/components/windowwatcher/src/nsWindowWatcher.cpp b/embedding/components/windowwatcher/src/nsWindowWatcher.cpp
index bdb0ebe951c67863404a7adc40c8ff76014910ef..0868150e530e005ff8c3415e78d4e0a4032cc5c6 100644
--- a/embedding/components/windowwatcher/src/nsWindowWatcher.cpp
+++ b/embedding/components/windowwatcher/src/nsWindowWatcher.cpp
@@ -161,7 +161,7 @@ private:
 
 NS_IMPL_ADDREF(nsWatcherWindowEnumerator)
 NS_IMPL_RELEASE(nsWatcherWindowEnumerator)
-NS_IMPL_QUERY_INTERFACE1(nsWatcherWindowEnumerator, nsISimpleEnumerator)
+NS_IMPL_QUERY_INTERFACE(nsWatcherWindowEnumerator, nsISimpleEnumerator)
 
 nsWatcherWindowEnumerator::nsWatcherWindowEnumerator(nsWindowWatcher *inWatcher)
   : mWindowWatcher(inWatcher),
@@ -240,10 +240,10 @@ void nsWatcherWindowEnumerator::WindowRemoved(nsWatcherWindowEntry *inInfo) {
 
 NS_IMPL_ADDREF(nsWindowWatcher)
 NS_IMPL_RELEASE(nsWindowWatcher)
-NS_IMPL_QUERY_INTERFACE3(nsWindowWatcher,
-                         nsIWindowWatcher,
-                         nsIPromptFactory,
-                         nsPIWindowWatcher)
+NS_IMPL_QUERY_INTERFACE(nsWindowWatcher,
+                        nsIWindowWatcher,
+                        nsIPromptFactory,
+                        nsPIWindowWatcher)
 
 nsWindowWatcher::nsWindowWatcher() :
         mEnumeratorList(),
diff --git a/embedding/tests/winEmbed/WindowCreator.cpp b/embedding/tests/winEmbed/WindowCreator.cpp
index 0654b39436413894a8d30905a062700d1c99a335..a7ac6bf87e7849f990bcba2dd684754c697c80b5 100644
--- a/embedding/tests/winEmbed/WindowCreator.cpp
+++ b/embedding/tests/winEmbed/WindowCreator.cpp
@@ -40,7 +40,7 @@ WindowCreator::~WindowCreator()
 {
 }
 
-NS_IMPL_ISUPPORTS1(WindowCreator, nsIWindowCreator)
+NS_IMPL_ISUPPORTS(WindowCreator, nsIWindowCreator)
 
 NS_IMETHODIMP
 WindowCreator::CreateChromeWindow(nsIWebBrowserChrome *parent,
diff --git a/extensions/auth/nsAuthGSSAPI.cpp b/extensions/auth/nsAuthGSSAPI.cpp
index d929243ce6677ef02c00cfb508f93cb17f119e20..29c554880d63ba8a5a6a2026d1c933b52e21c9f5 100644
--- a/extensions/auth/nsAuthGSSAPI.cpp
+++ b/extensions/auth/nsAuthGSSAPI.cpp
@@ -358,7 +358,7 @@ nsAuthGSSAPI::Shutdown()
 }
 
 /* Limitations apply to this class's thread safety. See the header file */
-NS_IMPL_ISUPPORTS1(nsAuthGSSAPI, nsIAuthModule)
+NS_IMPL_ISUPPORTS(nsAuthGSSAPI, nsIAuthModule)
 
 NS_IMETHODIMP
 nsAuthGSSAPI::Init(const char *serviceName,
diff --git a/extensions/auth/nsAuthSASL.cpp b/extensions/auth/nsAuthSASL.cpp
index 6782d4fc560941b4825c0108bc908410b6775ee6..75830d365f62bae291a474a954b893ba3fdb527c 100644
--- a/extensions/auth/nsAuthSASL.cpp
+++ b/extensions/auth/nsAuthSASL.cpp
@@ -23,7 +23,7 @@ void nsAuthSASL::Reset()
 }
 
 /* Limitations apply to this class's thread safety. See the header file */
-NS_IMPL_ISUPPORTS1(nsAuthSASL, nsIAuthModule)
+NS_IMPL_ISUPPORTS(nsAuthSASL, nsIAuthModule)
 
 NS_IMETHODIMP
 nsAuthSASL::Init(const char *serviceName,
diff --git a/extensions/auth/nsAuthSSPI.cpp b/extensions/auth/nsAuthSSPI.cpp
index 55d7fe826bdb50670b6d9cd84a38022d643e1c8b..27b68155893fb76aa1969845be8a5c4e1eaf6af0 100644
--- a/extensions/auth/nsAuthSSPI.cpp
+++ b/extensions/auth/nsAuthSSPI.cpp
@@ -178,7 +178,7 @@ nsAuthSSPI::Reset()
     }
 }
 
-NS_IMPL_ISUPPORTS1(nsAuthSSPI, nsIAuthModule)
+NS_IMPL_ISUPPORTS(nsAuthSSPI, nsIAuthModule)
 
 NS_IMETHODIMP
 nsAuthSSPI::Init(const char *serviceName,
diff --git a/extensions/auth/nsAuthSambaNTLM.cpp b/extensions/auth/nsAuthSambaNTLM.cpp
index ecb1778151de7b754de3c50023f21e28668f4622..db17304906ca210f887a103f6d6fc1b4c39ef857 100644
--- a/extensions/auth/nsAuthSambaNTLM.cpp
+++ b/extensions/auth/nsAuthSambaNTLM.cpp
@@ -44,7 +44,7 @@ nsAuthSambaNTLM::Shutdown()
     }
 }
 
-NS_IMPL_ISUPPORTS1(nsAuthSambaNTLM, nsIAuthModule)
+NS_IMPL_ISUPPORTS(nsAuthSambaNTLM, nsIAuthModule)
 
 static bool
 SpawnIOChild(char* const* aArgs, PRProcess** aPID,
diff --git a/extensions/auth/nsHttpNegotiateAuth.cpp b/extensions/auth/nsHttpNegotiateAuth.cpp
index ae5124b84433eccf0a1cd188ccda0fd47d78aa52..dab22b93f5489718a8d946f59280e6e5d95a2a15 100644
--- a/extensions/auth/nsHttpNegotiateAuth.cpp
+++ b/extensions/auth/nsHttpNegotiateAuth.cpp
@@ -170,7 +170,7 @@ nsHttpNegotiateAuth::ChallengeReceived(nsIHttpAuthenticableChannel *authChannel,
     return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS1(nsHttpNegotiateAuth, nsIHttpAuthenticator)
+NS_IMPL_ISUPPORTS(nsHttpNegotiateAuth, nsIHttpAuthenticator)
    
 //
 // GenerateCredentials
diff --git a/extensions/cookie/nsCookiePermission.cpp b/extensions/cookie/nsCookiePermission.cpp
index fbfbce912947879e73ae9d38560ed2874511b39d..b7dd54bfd59cf5b0eeb752ac211fcea71214280b 100644
--- a/extensions/cookie/nsCookiePermission.cpp
+++ b/extensions/cookie/nsCookiePermission.cpp
@@ -52,9 +52,9 @@ static const char kCookiesAskPermission[] = "network.cookie.warnAboutCookies";
 
 static const char kPermissionType[] = "cookie";
 
-NS_IMPL_ISUPPORTS2(nsCookiePermission,
-                   nsICookiePermission,
-                   nsIObserver)
+NS_IMPL_ISUPPORTS(nsCookiePermission,
+                  nsICookiePermission,
+                  nsIObserver)
 
 bool
 nsCookiePermission::Init()
diff --git a/extensions/cookie/nsCookiePromptService.cpp b/extensions/cookie/nsCookiePromptService.cpp
index b2e325dee089a837b33a65349b025eca96463465..32c875d56b794d9709d1736e7c23f81cc3a0a8fb 100644
--- a/extensions/cookie/nsCookiePromptService.cpp
+++ b/extensions/cookie/nsCookiePromptService.cpp
@@ -18,7 +18,7 @@
  ************************ nsCookiePromptService *****************
  ****************************************************************/
 
-NS_IMPL_ISUPPORTS1(nsCookiePromptService, nsICookiePromptService)
+NS_IMPL_ISUPPORTS(nsCookiePromptService, nsICookiePromptService)
 
 nsCookiePromptService::nsCookiePromptService() {
 }
diff --git a/extensions/cookie/nsPermission.cpp b/extensions/cookie/nsPermission.cpp
index 06d22fea8736cffe425d4df045ea962cf4603523..bdd3abad0e5ef180baf2b7060ebe446ba9c11f54 100644
--- a/extensions/cookie/nsPermission.cpp
+++ b/extensions/cookie/nsPermission.cpp
@@ -9,7 +9,7 @@
 // nsPermission Implementation
 
 NS_IMPL_CLASSINFO(nsPermission, nullptr, 0, {0})
-NS_IMPL_ISUPPORTS1_CI(nsPermission, nsIPermission)
+NS_IMPL_ISUPPORTS_CI(nsPermission, nsIPermission)
 
 nsPermission::nsPermission(const nsACString &aHost,
                            uint32_t aAppId,
diff --git a/extensions/cookie/nsPermissionManager.cpp b/extensions/cookie/nsPermissionManager.cpp
index c626292b74dbc443d7366f94481c49b8111d79bd..4157725d392a3c2f5feef2579d68df9d96b806df 100644
--- a/extensions/cookie/nsPermissionManager.cpp
+++ b/extensions/cookie/nsPermissionManager.cpp
@@ -212,7 +212,7 @@ public:
   }
 };
 
-NS_IMPL_ISUPPORTS1(AppClearDataObserver, nsIObserver)
+NS_IMPL_ISUPPORTS(AppClearDataObserver, nsIObserver)
 
 static bool
 IsExpandedPrincipal(nsIPrincipal* aPrincipal)
@@ -260,7 +260,7 @@ protected:
   bool mRebuildOnSuccess;
 };
 
-NS_IMPL_ISUPPORTS1(CloseDatabaseListener, mozIStorageCompletionCallback)
+NS_IMPL_ISUPPORTS(CloseDatabaseListener, mozIStorageCompletionCallback)
 
 CloseDatabaseListener::CloseDatabaseListener(nsPermissionManager* aManager,
                                              bool aRebuildOnSuccess)
@@ -306,7 +306,7 @@ protected:
   nsRefPtr<nsPermissionManager> mManager;
 };
 
-NS_IMPL_ISUPPORTS1(DeleteFromMozHostListener, mozIStorageStatementCallback)
+NS_IMPL_ISUPPORTS(DeleteFromMozHostListener, mozIStorageStatementCallback)
 
 DeleteFromMozHostListener::
 DeleteFromMozHostListener(nsPermissionManager* aManager)
@@ -354,7 +354,7 @@ static const char kHostpermFileName[] = "hostperm.1";
 
 static const char kPermissionChangeNotification[] = PERM_CHANGE_NOTIFICATION;
 
-NS_IMPL_ISUPPORTS3(nsPermissionManager, nsIPermissionManager, nsIObserver, nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(nsPermissionManager, nsIPermissionManager, nsIObserver, nsISupportsWeakReference)
 
 nsPermissionManager::nsPermissionManager()
  : mLargestID(0)
diff --git a/extensions/cookie/nsPopupWindowManager.cpp b/extensions/cookie/nsPopupWindowManager.cpp
index e6b0547061906f16be0e6e849292ba9809fbf9f3..52e51c8a09e8a6a13f5274386d283655d409628a 100644
--- a/extensions/cookie/nsPopupWindowManager.cpp
+++ b/extensions/cookie/nsPopupWindowManager.cpp
@@ -31,10 +31,10 @@ nsPopupWindowManager::~nsPopupWindowManager()
 {
 }
 
-NS_IMPL_ISUPPORTS3(nsPopupWindowManager, 
-                   nsIPopupWindowManager,
-                   nsIObserver,
-                   nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(nsPopupWindowManager, 
+                  nsIPopupWindowManager,
+                  nsIObserver,
+                  nsISupportsWeakReference)
 
 nsresult
 nsPopupWindowManager::Init()
diff --git a/extensions/gio/nsGIOProtocolHandler.cpp b/extensions/gio/nsGIOProtocolHandler.cpp
index 2d9820b2510eb3166be364fdfe59d735b910809b..2972e6420130133be85f3c3f188b84804075a946 100644
--- a/extensions/gio/nsGIOProtocolHandler.cpp
+++ b/extensions/gio/nsGIOProtocolHandler.cpp
@@ -580,7 +580,7 @@ nsGIOInputStream::SetContentTypeOfChannel(const char *contentType)
   return rv;
 }
 
-NS_IMPL_ISUPPORTS1(nsGIOInputStream, nsIInputStream)
+NS_IMPL_ISUPPORTS(nsGIOInputStream, nsIInputStream)
 
 /**
  * Free all used memory and close stream.
@@ -898,7 +898,7 @@ class nsGIOProtocolHandler MOZ_FINAL : public nsIProtocolHandler
     nsCString mSupportedProtocols;
 };
 
-NS_IMPL_ISUPPORTS2(nsGIOProtocolHandler, nsIProtocolHandler, nsIObserver)
+NS_IMPL_ISUPPORTS(nsGIOProtocolHandler, nsIProtocolHandler, nsIObserver)
 
 nsresult
 nsGIOProtocolHandler::Init()
diff --git a/extensions/gnomevfs/nsGnomeVFSProtocolHandler.cpp b/extensions/gnomevfs/nsGnomeVFSProtocolHandler.cpp
index 941a0715ed12d90ab3a9b71159f9b194a42116ac..beab6d13d86216f05a6800dc855600ca76584779 100644
--- a/extensions/gnomevfs/nsGnomeVFSProtocolHandler.cpp
+++ b/extensions/gnomevfs/nsGnomeVFSProtocolHandler.cpp
@@ -631,7 +631,7 @@ nsGnomeVFSInputStream::SetContentTypeOfChannel(const char *contentType)
   return rv;
 }
 
-NS_IMPL_ISUPPORTS1(nsGnomeVFSInputStream, nsIInputStream)
+NS_IMPL_ISUPPORTS(nsGnomeVFSInputStream, nsIInputStream)
 
 NS_IMETHODIMP
 nsGnomeVFSInputStream::Close()
@@ -755,7 +755,7 @@ class nsGnomeVFSProtocolHandler MOZ_FINAL : public nsIProtocolHandler
     nsCString mSupportedProtocols;
 };
 
-NS_IMPL_ISUPPORTS2(nsGnomeVFSProtocolHandler, nsIProtocolHandler, nsIObserver)
+NS_IMPL_ISUPPORTS(nsGnomeVFSProtocolHandler, nsIProtocolHandler, nsIObserver)
 
 nsresult
 nsGnomeVFSProtocolHandler::Init()
diff --git a/extensions/permissions/nsContentBlocker.cpp b/extensions/permissions/nsContentBlocker.cpp
index 1ecf4c4ee3b63366e368a3e26603ced4cde23ed8..8e4477839915eec5dbe1c8d2f86d75c4ec1689d6 100644
--- a/extensions/permissions/nsContentBlocker.cpp
+++ b/extensions/permissions/nsContentBlocker.cpp
@@ -44,10 +44,10 @@ static const char *kTypeString[] = {"other",
 #define NUMBER_OF_TYPES MOZ_ARRAY_LENGTH(kTypeString)
 uint8_t nsContentBlocker::mBehaviorPref[NUMBER_OF_TYPES];
 
-NS_IMPL_ISUPPORTS3(nsContentBlocker, 
-                   nsIContentPolicy,
-                   nsIObserver,
-                   nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(nsContentBlocker, 
+                  nsIContentPolicy,
+                  nsIObserver,
+                  nsISupportsWeakReference)
 
 nsContentBlocker::nsContentBlocker()
 {
diff --git a/extensions/pref/autoconfig/src/nsAutoConfig.cpp b/extensions/pref/autoconfig/src/nsAutoConfig.cpp
index 7b6d44b27c9a117c4b3d396f3588307e7b9f91d1..36203ab9fd8d561fe4b9bfb3f5f2621a132758ef 100644
--- a/extensions/pref/autoconfig/src/nsAutoConfig.cpp
+++ b/extensions/pref/autoconfig/src/nsAutoConfig.cpp
@@ -33,7 +33,7 @@ extern nsresult EvaluateAdminConfigScript(const char *js_buffer, size_t length,
 
 // nsISupports Implementation
 
-NS_IMPL_ISUPPORTS6(nsAutoConfig, nsIAutoConfig, nsITimerCallback, nsIStreamListener, nsIObserver, nsIRequestObserver, nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(nsAutoConfig, nsIAutoConfig, nsITimerCallback, nsIStreamListener, nsIObserver, nsIRequestObserver, nsISupportsWeakReference)
 
 nsAutoConfig::nsAutoConfig()
 {
diff --git a/extensions/pref/autoconfig/src/nsReadConfig.cpp b/extensions/pref/autoconfig/src/nsReadConfig.cpp
index 3d83f42a74bbf9f0c7522e327c09263364ea0783..5a54e8a78bae9f04514cff3c25e2097459bf82f3 100644
--- a/extensions/pref/autoconfig/src/nsReadConfig.cpp
+++ b/extensions/pref/autoconfig/src/nsReadConfig.cpp
@@ -73,7 +73,7 @@ static void DisplayError(void)
 
 // nsISupports Implementation
 
-NS_IMPL_ISUPPORTS2(nsReadConfig, nsIReadConfig, nsIObserver)
+NS_IMPL_ISUPPORTS(nsReadConfig, nsIReadConfig, nsIObserver)
 
 nsReadConfig::nsReadConfig() :
     mRead(false)
diff --git a/extensions/spellcheck/hunspell/src/mozHunspellDirProvider.cpp b/extensions/spellcheck/hunspell/src/mozHunspellDirProvider.cpp
index 3472a74e4f2d66a04f0918c402de713d1bb34a2e..028274152ac74622c1c318eaabbac7fde0947b87 100644
--- a/extensions/spellcheck/hunspell/src/mozHunspellDirProvider.cpp
+++ b/extensions/spellcheck/hunspell/src/mozHunspellDirProvider.cpp
@@ -40,7 +40,7 @@
 #include "mozISpellCheckingEngine.h"
 #include "nsICategoryManager.h"
 
-NS_IMPL_ISUPPORTS2(mozHunspellDirProvider,
+NS_IMPL_ISUPPORTS(mozHunspellDirProvider,
 		   nsIDirectoryServiceProvider,
 		   nsIDirectoryServiceProvider2)
 
@@ -80,7 +80,7 @@ mozHunspellDirProvider::GetFiles(const char *aKey,
   return NS_SUCCESS_AGGREGATE_RESULT;
 }
 
-NS_IMPL_ISUPPORTS1(mozHunspellDirProvider::AppendingEnumerator,
+NS_IMPL_ISUPPORTS(mozHunspellDirProvider::AppendingEnumerator,
 		   nsISimpleEnumerator)
 
 NS_IMETHODIMP
diff --git a/extensions/spellcheck/src/mozGenericWordUtils.cpp b/extensions/spellcheck/src/mozGenericWordUtils.cpp
index 25dd38749759ba87b4f2f36328fe47af5c05f28a..e83d0906c738737502c0cf57d4f2a0e8dbb648f7 100644
--- a/extensions/spellcheck/src/mozGenericWordUtils.cpp
+++ b/extensions/spellcheck/src/mozGenericWordUtils.cpp
@@ -4,7 +4,7 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 #include "mozGenericWordUtils.h"
 
-NS_IMPL_ISUPPORTS1(mozGenericWordUtils, mozISpellI18NUtil)
+NS_IMPL_ISUPPORTS(mozGenericWordUtils, mozISpellI18NUtil)
 
   // do something sensible but generic ... eventually.  For now whine.
 
diff --git a/extensions/spellcheck/src/mozInlineSpellChecker.cpp b/extensions/spellcheck/src/mozInlineSpellChecker.cpp
index ea06fc856249a59430d1fc976f3f01aa9c25dc27..78c17155b6d1e4c618450beec61598404930a02d 100644
--- a/extensions/spellcheck/src/mozInlineSpellChecker.cpp
+++ b/extensions/spellcheck/src/mozInlineSpellChecker.cpp
@@ -508,7 +508,7 @@ public:
 private:
   nsRefPtr<mozInlineSpellChecker> mSpellChecker;
 };
-NS_IMPL_ISUPPORTS1(InitEditorSpellCheckCallback, nsIEditorSpellCheckCallback)
+NS_IMPL_ISUPPORTS(InitEditorSpellCheckCallback, nsIEditorSpellCheckCallback)
 
 
 NS_INTERFACE_MAP_BEGIN(mozInlineSpellChecker)
@@ -2004,7 +2004,7 @@ private:
   nsRefPtr<mozInlineSpellChecker> mSpellChecker;
   uint32_t mDisabledAsyncToken;
 };
-NS_IMPL_ISUPPORTS1(UpdateCurrentDictionaryCallback, nsIEditorSpellCheckCallback)
+NS_IMPL_ISUPPORTS(UpdateCurrentDictionaryCallback, nsIEditorSpellCheckCallback)
 
 NS_IMETHODIMP mozInlineSpellChecker::UpdateCurrentDictionary()
 {
diff --git a/extensions/spellcheck/src/mozSpellI18NManager.cpp b/extensions/spellcheck/src/mozSpellI18NManager.cpp
index 419276682c6f0a027c5f64d5594269763043119f..7e4b94bde9ebff62e5f799139db89f12bb3cef5c 100644
--- a/extensions/spellcheck/src/mozSpellI18NManager.cpp
+++ b/extensions/spellcheck/src/mozSpellI18NManager.cpp
@@ -8,7 +8,7 @@
 #include "mozGenericWordUtils.h"
 #include "nsString.h"
 
-NS_IMPL_ISUPPORTS1(mozSpellI18NManager, mozISpellI18NManager)
+NS_IMPL_ISUPPORTS(mozSpellI18NManager, mozISpellI18NManager)
 
 mozSpellI18NManager::mozSpellI18NManager()
 {
diff --git a/extensions/universalchardet/src/xpcom/nsUdetXPCOMWrapper.cpp b/extensions/universalchardet/src/xpcom/nsUdetXPCOMWrapper.cpp
index 7b58be41dbaf6ecb718bd9e6be914efa41a7ca77..f8099e1bee1c519c809323e52f86383af4b6cf39 100644
--- a/extensions/universalchardet/src/xpcom/nsUdetXPCOMWrapper.cpp
+++ b/extensions/universalchardet/src/xpcom/nsUdetXPCOMWrapper.cpp
@@ -29,7 +29,7 @@ nsXPCOMDetector::~nsXPCOMDetector()
 }
 //---------------------------------------------------------------------
 
-NS_IMPL_ISUPPORTS1(nsXPCOMDetector, nsICharsetDetector)
+NS_IMPL_ISUPPORTS(nsXPCOMDetector, nsICharsetDetector)
 
 //---------------------------------------------------------------------
 NS_IMETHODIMP nsXPCOMDetector::Init(
@@ -104,7 +104,7 @@ nsXPCOMStringDetector::~nsXPCOMStringDetector()
 {
 }
 //---------------------------------------------------------------------
-NS_IMPL_ISUPPORTS1(nsXPCOMStringDetector, nsIStringCharsetDetector)
+NS_IMPL_ISUPPORTS(nsXPCOMStringDetector, nsIStringCharsetDetector)
 //---------------------------------------------------------------------
 void nsXPCOMStringDetector::Report(const char *aCharset) 
 {
diff --git a/gfx/gl/GfxTexturesReporter.cpp b/gfx/gl/GfxTexturesReporter.cpp
index 32561a6faad6ee66763087875096b3c990f97a47..3f377f8cab35ca11088cbde46300cabb2e8e7048 100644
--- a/gfx/gl/GfxTexturesReporter.cpp
+++ b/gfx/gl/GfxTexturesReporter.cpp
@@ -10,7 +10,7 @@
 using namespace mozilla;
 using namespace mozilla::gl;
 
-NS_IMPL_ISUPPORTS1(GfxTexturesReporter, nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(GfxTexturesReporter, nsIMemoryReporter)
 
 int64_t GfxTexturesReporter::sAmount = 0;
 
diff --git a/gfx/layers/LayerScope.cpp b/gfx/layers/LayerScope.cpp
index b70d025498f7f222a81ce5a448ae7b34e26398ed..29e8b8561faea871fd82fc44894807d023613029 100644
--- a/gfx/layers/LayerScope.cpp
+++ b/gfx/layers/LayerScope.cpp
@@ -269,7 +269,7 @@ private:
     SocketStateType mState;
 };
 
-NS_IMPL_ISUPPORTS1(LayerScopeWebSocketHandler, nsIInputStreamCallback);
+NS_IMPL_ISUPPORTS(LayerScopeWebSocketHandler, nsIInputStreamCallback);
 
 class LayerScopeWebSocketManager {
 public:
@@ -575,7 +575,7 @@ public:
     }
 };
 
-NS_IMPL_ISUPPORTS1(DebugListener, nsIServerSocketListener);
+NS_IMPL_ISUPPORTS(DebugListener, nsIServerSocketListener);
 
 
 class DebugDataSender : public nsIRunnable
@@ -635,7 +635,7 @@ protected:
     LinkedList<DebugGLData> *mList;
 };
 
-NS_IMPL_ISUPPORTS1(DebugDataSender, nsIRunnable);
+NS_IMPL_ISUPPORTS(DebugDataSender, nsIRunnable);
 
 void
 LayerScope::CreateServerSocket()
diff --git a/gfx/layers/d3d10/ReadbackManagerD3D10.cpp b/gfx/layers/d3d10/ReadbackManagerD3D10.cpp
index dfeb8fc9d4e458173eb1a0a7a4fd025a6a486e61..01c574afdf8973c6cd75afd3a030b44038d7888c 100644
--- a/gfx/layers/d3d10/ReadbackManagerD3D10.cpp
+++ b/gfx/layers/d3d10/ReadbackManagerD3D10.cpp
@@ -96,7 +96,7 @@ private:
   nsAutoPtr<ReadbackTask> mTask;
 };
 
-NS_IMPL_ISUPPORTS1(ReadbackResultWriter, nsIRunnable)
+NS_IMPL_ISUPPORTS(ReadbackResultWriter, nsIRunnable)
 
 DWORD WINAPI StartTaskThread(void *aManager)
 {
diff --git a/gfx/layers/ipc/ISurfaceAllocator.cpp b/gfx/layers/ipc/ISurfaceAllocator.cpp
index 399c670d608399306aaa4c57028766d12c6ad25a..bf72bf2899628e1109ebd6f282aa85b5d004e4fa 100644
--- a/gfx/layers/ipc/ISurfaceAllocator.cpp
+++ b/gfx/layers/ipc/ISurfaceAllocator.cpp
@@ -30,7 +30,7 @@ using namespace mozilla::ipc;
 namespace mozilla {
 namespace layers {
 
-NS_IMPL_ISUPPORTS1(GfxMemoryImageReporter, nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(GfxMemoryImageReporter, nsIMemoryReporter)
 
 mozilla::Atomic<size_t> GfxMemoryImageReporter::sAmount(0);
 
diff --git a/gfx/layers/ipc/ShadowLayerUtilsGralloc.cpp b/gfx/layers/ipc/ShadowLayerUtilsGralloc.cpp
index b532112bb13e76c4c09a90f5cd77932dc77e1bf1..dc83cb2907e6664bc9b69d81c4ceec0a57a68ee5 100644
--- a/gfx/layers/ipc/ShadowLayerUtilsGralloc.cpp
+++ b/gfx/layers/ipc/ShadowLayerUtilsGralloc.cpp
@@ -247,7 +247,7 @@ private:
   static int64_t sAmount;
 };
 
-NS_IMPL_ISUPPORTS1(GrallocReporter, nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(GrallocReporter, nsIMemoryReporter)
 
 int64_t GrallocReporter::sAmount = 0;
 
diff --git a/gfx/src/gfxCrashReporterUtils.cpp b/gfx/src/gfxCrashReporterUtils.cpp
index 197d5fb6fbb52ae64b16b03e87c75d60245bc388..ee7de5e9a36fc0d10e7d8f0007db618bc0ccfd81 100644
--- a/gfx/src/gfxCrashReporterUtils.cpp
+++ b/gfx/src/gfxCrashReporterUtils.cpp
@@ -45,8 +45,8 @@ public:
   virtual ~ObserverToDestroyFeaturesAlreadyReported() {}
 };
 
-NS_IMPL_ISUPPORTS1(ObserverToDestroyFeaturesAlreadyReported,
-                   nsIObserver)
+NS_IMPL_ISUPPORTS(ObserverToDestroyFeaturesAlreadyReported,
+                  nsIObserver)
 
 NS_IMETHODIMP
 ObserverToDestroyFeaturesAlreadyReported::Observe(nsISupports* aSubject,
diff --git a/gfx/src/nsDeviceContext.cpp b/gfx/src/nsDeviceContext.cpp
index bf0ca9dc75766056a8903402869be05c8af5b0c6..1c6c0cc0bdb67f5f03da5e9ca9e4b625b0ce6dd6 100644
--- a/gfx/src/nsDeviceContext.cpp
+++ b/gfx/src/nsDeviceContext.cpp
@@ -77,7 +77,7 @@ protected:
     nsTArray<nsFontMetrics*>  mFontMetrics;
 };
 
-NS_IMPL_ISUPPORTS1(nsFontCache, nsIObserver)
+NS_IMPL_ISUPPORTS(nsFontCache, nsIObserver)
 
 // The Init and Destroy methods are necessary because it's not
 // safe to call AddObserver from a constructor or RemoveObserver
diff --git a/gfx/src/nsScriptableRegion.cpp b/gfx/src/nsScriptableRegion.cpp
index 76d04c39171a63b7793d93ade8c49a6e7089a3a3..6b66d58729df778412e7d69b56f333fc2e72f4ea 100644
--- a/gfx/src/nsScriptableRegion.cpp
+++ b/gfx/src/nsScriptableRegion.cpp
@@ -23,7 +23,7 @@ nsScriptableRegion::nsScriptableRegion()
 {
 }
 
-NS_IMPL_ISUPPORTS1(nsScriptableRegion, nsIScriptableRegion)
+NS_IMPL_ISUPPORTS(nsScriptableRegion, nsIScriptableRegion)
 
 NS_IMETHODIMP nsScriptableRegion::Init()
 {
diff --git a/gfx/src/nsThebesFontEnumerator.cpp b/gfx/src/nsThebesFontEnumerator.cpp
index 80c7e27a9ddf79c5feddc2046de9a6a7d666a80e..12739c280e6594280cc53d8f4f82781bd52e94a5 100644
--- a/gfx/src/nsThebesFontEnumerator.cpp
+++ b/gfx/src/nsThebesFontEnumerator.cpp
@@ -17,7 +17,7 @@
 #include "nsTArray.h"                   // for nsTArray, nsTArray_Impl, etc
 #include "nscore.h"                     // for char16_t, NS_IMETHODIMP
 
-NS_IMPL_ISUPPORTS1(nsThebesFontEnumerator, nsIFontEnumerator)
+NS_IMPL_ISUPPORTS(nsThebesFontEnumerator, nsIFontEnumerator)
 
 nsThebesFontEnumerator::nsThebesFontEnumerator()
 {
diff --git a/gfx/thebes/gfxASurface.cpp b/gfx/thebes/gfxASurface.cpp
index 33a5181eade67e806034204df4a6006d7ca45572..e75da697af8ba15ae2169a402d226008d85ac270 100644
--- a/gfx/thebes/gfxASurface.cpp
+++ b/gfx/thebes/gfxASurface.cpp
@@ -656,7 +656,7 @@ public:
     }
 };
 
-NS_IMPL_ISUPPORTS1(SurfaceMemoryReporter, nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(SurfaceMemoryReporter, nsIMemoryReporter)
 
 void
 gfxASurface::RecordMemoryUsedForSurfaceType(gfxSurfaceType aType,
diff --git a/gfx/thebes/gfxAndroidPlatform.cpp b/gfx/thebes/gfxAndroidPlatform.cpp
index 61a43f30ab68eb3b56d23727d77566c668f1110f..8f518c00f47bae8c77d405c9b18cb6f609589f2e 100644
--- a/gfx/thebes/gfxAndroidPlatform.cpp
+++ b/gfx/thebes/gfxAndroidPlatform.cpp
@@ -71,7 +71,7 @@ public:
     }
 };
 
-NS_IMPL_ISUPPORTS1(FreetypeReporter, nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(FreetypeReporter, nsIMemoryReporter)
 
 template<> Atomic<size_t> CountingAllocatorBase<FreetypeReporter>::sAmount(0);
 
diff --git a/gfx/thebes/gfxFont.cpp b/gfx/thebes/gfxFont.cpp
index 8ab79e815692c382cfba28a6dc11d2131d1569dd..0f86e852805439776cd8ac1e2a5fbbfac5fd117c 100644
--- a/gfx/thebes/gfxFont.cpp
+++ b/gfx/thebes/gfxFont.cpp
@@ -1572,7 +1572,7 @@ gfxFontFamily::AddSizeOfIncludingThis(MallocSizeOf aMallocSizeOf,
 
 MOZ_DEFINE_MALLOC_SIZE_OF(FontCacheMallocSizeOf)
 
-NS_IMPL_ISUPPORTS1(gfxFontCache::MemoryReporter, nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(gfxFontCache::MemoryReporter, nsIMemoryReporter)
 
 NS_IMETHODIMP
 gfxFontCache::MemoryReporter::CollectReports
@@ -1599,7 +1599,7 @@ gfxFontCache::MemoryReporter::CollectReports
     return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS1(gfxFontCache::Observer, nsIObserver)
+NS_IMPL_ISUPPORTS(gfxFontCache::Observer, nsIObserver)
 
 NS_IMETHODIMP
 gfxFontCache::Observer::Observe(nsISupports *aSubject,
diff --git a/gfx/thebes/gfxFontInfoLoader.cpp b/gfx/thebes/gfxFontInfoLoader.cpp
index d27283f2630ac0b4c3151fde568ebe07886eb64b..61e4e55370fb89903fb534c0bd142df7c1b61ec9 100644
--- a/gfx/thebes/gfxFontInfoLoader.cpp
+++ b/gfx/thebes/gfxFontInfoLoader.cpp
@@ -68,7 +68,7 @@ FontInfoLoadCompleteEvent::Run()
     return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS1(FontInfoLoadCompleteEvent, nsIRunnable);
+NS_IMPL_ISUPPORTS(FontInfoLoadCompleteEvent, nsIRunnable);
 
 // runs on separate thread
 nsresult
@@ -84,9 +84,9 @@ AsyncFontInfoLoader::Run()
     return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS1(AsyncFontInfoLoader, nsIRunnable);
+NS_IMPL_ISUPPORTS(AsyncFontInfoLoader, nsIRunnable);
 
-NS_IMPL_ISUPPORTS1(gfxFontInfoLoader::ShutdownObserver, nsIObserver)
+NS_IMPL_ISUPPORTS(gfxFontInfoLoader::ShutdownObserver, nsIObserver)
 
 NS_IMETHODIMP
 gfxFontInfoLoader::ShutdownObserver::Observe(nsISupports *aSubject,
diff --git a/gfx/thebes/gfxPlatform.cpp b/gfx/thebes/gfxPlatform.cpp
index d74b21c7783742169d6c485b593debc0ce26ab22..ec85ad298ead5d16f2f00bec5edd49c18d7f1954 100644
--- a/gfx/thebes/gfxPlatform.cpp
+++ b/gfx/thebes/gfxPlatform.cpp
@@ -137,7 +137,7 @@ public:
     NS_DECL_NSIOBSERVER
 };
 
-NS_IMPL_ISUPPORTS2(SRGBOverrideObserver, nsIObserver, nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(SRGBOverrideObserver, nsIObserver, nsISupportsWeakReference)
 
 #define GFX_DOWNLOADABLE_FONTS_ENABLED "gfx.downloadable_fonts.enabled"
 
@@ -182,7 +182,7 @@ public:
     NS_DECL_NSIOBSERVER
 };
 
-NS_IMPL_ISUPPORTS1(FontPrefsObserver, nsIObserver)
+NS_IMPL_ISUPPORTS(FontPrefsObserver, nsIObserver)
 
 NS_IMETHODIMP
 FontPrefsObserver::Observe(nsISupports *aSubject,
@@ -206,7 +206,7 @@ public:
     NS_DECL_NSIOBSERVER
 };
 
-NS_IMPL_ISUPPORTS1(MemoryPressureObserver, nsIObserver)
+NS_IMPL_ISUPPORTS(MemoryPressureObserver, nsIObserver)
 
 NS_IMETHODIMP
 MemoryPressureObserver::Observe(nsISupports *aSubject,
diff --git a/gfx/thebes/gfxPlatformFontList.cpp b/gfx/thebes/gfxPlatformFontList.cpp
index 7098a7bfab3d463080e0a8aa182d931d441991c6..6a93ea5e2492b0522be9061d8399da93eeca7b7f 100644
--- a/gfx/thebes/gfxPlatformFontList.cpp
+++ b/gfx/thebes/gfxPlatformFontList.cpp
@@ -62,7 +62,7 @@ public:
 
 static gfxFontListPrefObserver* gFontListPrefObserver = nullptr;
 
-NS_IMPL_ISUPPORTS1(gfxFontListPrefObserver, nsIObserver)
+NS_IMPL_ISUPPORTS(gfxFontListPrefObserver, nsIObserver)
 
 NS_IMETHODIMP
 gfxFontListPrefObserver::Observe(nsISupports     *aSubject,
@@ -79,7 +79,7 @@ gfxFontListPrefObserver::Observe(nsISupports     *aSubject,
 
 MOZ_DEFINE_MALLOC_SIZE_OF(FontListMallocSizeOf)
 
-NS_IMPL_ISUPPORTS1(gfxPlatformFontList::MemoryReporter, nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(gfxPlatformFontList::MemoryReporter, nsIMemoryReporter)
 
 NS_IMETHODIMP
 gfxPlatformFontList::MemoryReporter::CollectReports
diff --git a/gfx/thebes/gfxUserFontSet.cpp b/gfx/thebes/gfxUserFontSet.cpp
index 7ad4c0c92a2b31120bc66056822dad722f694ca3..843418d002f2e71ceeb6ce548dcd4878664c0047 100644
--- a/gfx/thebes/gfxUserFontSet.cpp
+++ b/gfx/thebes/gfxUserFontSet.cpp
@@ -827,7 +827,7 @@ gfxUserFontSet::FindFamilyFor(gfxFontEntry* aFontEntry) const
 nsTHashtable<gfxUserFontSet::UserFontCache::Entry>*
     gfxUserFontSet::UserFontCache::sUserFonts = nullptr;
 
-NS_IMPL_ISUPPORTS1(gfxUserFontSet::UserFontCache::Flusher, nsIObserver)
+NS_IMPL_ISUPPORTS(gfxUserFontSet::UserFontCache::Flusher, nsIObserver)
 
 PLDHashOperator
 gfxUserFontSet::UserFontCache::Entry::RemoveIfPrivate(Entry* aEntry,
diff --git a/gfx/thebes/gfxWindowsPlatform.cpp b/gfx/thebes/gfxWindowsPlatform.cpp
index 831d086d5e8bd8fc9d1431d83f94be373a7c9545..a935962fba20340fe2c23a431204ad4d72d9e608 100644
--- a/gfx/thebes/gfxWindowsPlatform.cpp
+++ b/gfx/thebes/gfxWindowsPlatform.cpp
@@ -109,7 +109,7 @@ public:
     }
 };
 
-NS_IMPL_ISUPPORTS1(GfxD2DSurfaceReporter, nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(GfxD2DSurfaceReporter, nsIMemoryReporter)
 
 #endif
 
@@ -139,7 +139,7 @@ public:
     }
 };
 
-NS_IMPL_ISUPPORTS1(GfxD2DVramReporter, nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(GfxD2DVramReporter, nsIMemoryReporter)
 
 #define GFX_USE_CLEARTYPE_ALWAYS "gfx.font_rendering.cleartype.always_use_for_content"
 #define GFX_DOWNLOADABLE_FONTS_USE_CLEARTYPE "gfx.font_rendering.cleartype.use_for_downloadable_fonts"
@@ -280,7 +280,7 @@ public:
     }
 };
 
-NS_IMPL_ISUPPORTS1(GPUAdapterReporter, nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(GPUAdapterReporter, nsIMemoryReporter)
 
 static __inline void
 BuildKeyNameFromFontName(nsAString &aName)
diff --git a/hal/HalWakeLock.cpp b/hal/HalWakeLock.cpp
index 3cd73e26aae73b109a568fb27390b8ce9d272286..b08a52f0899b59af87c6a6ac46b75dc408e190a9 100644
--- a/hal/HalWakeLock.cpp
+++ b/hal/HalWakeLock.cpp
@@ -102,7 +102,7 @@ public:
   NS_DECL_NSIOBSERVER
 };
 
-NS_IMPL_ISUPPORTS1(ClearHashtableOnShutdown, nsIObserver)
+NS_IMPL_ISUPPORTS(ClearHashtableOnShutdown, nsIObserver)
 
 NS_IMETHODIMP
 ClearHashtableOnShutdown::Observe(nsISupports* aSubject, const char* aTopic, const char16_t* data)
@@ -121,7 +121,7 @@ public:
   NS_DECL_NSIOBSERVER
 };
 
-NS_IMPL_ISUPPORTS1(CleanupOnContentShutdown, nsIObserver)
+NS_IMPL_ISUPPORTS(CleanupOnContentShutdown, nsIObserver)
 
 NS_IMETHODIMP
 CleanupOnContentShutdown::Observe(nsISupports* aSubject, const char* aTopic, const char16_t* data)
diff --git a/hal/cocoa/CocoaBattery.cpp b/hal/cocoa/CocoaBattery.cpp
index cbca794957a30c72241e5b1455b266155d426329..fae634684440cca01615c3afade2aca3045e913b 100644
--- a/hal/cocoa/CocoaBattery.cpp
+++ b/hal/cocoa/CocoaBattery.cpp
@@ -109,7 +109,7 @@ struct SingletonDestroyer MOZ_FINAL : public nsIObserver
   NS_DECL_NSIOBSERVER
 };
 
-NS_IMPL_ISUPPORTS1(SingletonDestroyer, nsIObserver)
+NS_IMPL_ISUPPORTS(SingletonDestroyer, nsIObserver)
 
 NS_IMETHODIMP
 SingletonDestroyer::Observe(nsISupports*, const char* aTopic, const char16_t*)
diff --git a/hal/gonk/GonkHal.cpp b/hal/gonk/GonkHal.cpp
index ea56e8646d16a7009c1b16f8660814065e91457f..5bc56bc6621cf614eba3983d903a7962b1552cf7 100644
--- a/hal/gonk/GonkHal.cpp
+++ b/hal/gonk/GonkHal.cpp
@@ -155,7 +155,7 @@ private:
   static bool sShuttingDown;
 };
 
-NS_IMPL_ISUPPORTS2(VibratorRunnable, nsIRunnable, nsIObserver);
+NS_IMPL_ISUPPORTS(VibratorRunnable, nsIRunnable, nsIObserver);
 
 bool VibratorRunnable::sShuttingDown = false;
 
@@ -1091,7 +1091,7 @@ private:
   double mLastLineChecked;
   ScopedFreePtr<regex_t> mRegexes;
 };
-NS_IMPL_ISUPPORTS1(OomVictimLogger, nsIObserver);
+NS_IMPL_ISUPPORTS(OomVictimLogger, nsIObserver);
 
 NS_IMETHODIMP
 OomVictimLogger::Observe(
diff --git a/hal/windows/WindowsGamepad.cpp b/hal/windows/WindowsGamepad.cpp
index a2849017a6c159415e1ea26a73c5b7ee0f17aec2..1ff7d36f18b539507de7472f4dfe9f0b03e526ba 100644
--- a/hal/windows/WindowsGamepad.cpp
+++ b/hal/windows/WindowsGamepad.cpp
@@ -179,7 +179,7 @@ private:
   bool mObserving;
 };
 
-NS_IMPL_ISUPPORTS1(Observer, nsIObserver);
+NS_IMPL_ISUPPORTS(Observer, nsIObserver);
 
 class WindowsGamepadService {
 public:
diff --git a/image/decoders/icon/android/nsIconChannel.cpp b/image/decoders/icon/android/nsIconChannel.cpp
index ae307c637763bab5eed84a5f499e21a92a62bb1b..0744503666460b0bc7f69028a49cab9e8a0200a4 100644
--- a/image/decoders/icon/android/nsIconChannel.cpp
+++ b/image/decoders/icon/android/nsIconChannel.cpp
@@ -13,9 +13,9 @@
 #include "nsIStringStream.h"
 #include "nsNetUtil.h"
 
-NS_IMPL_ISUPPORTS2(nsIconChannel,
-                   nsIRequest,
-                   nsIChannel)
+NS_IMPL_ISUPPORTS(nsIconChannel,
+                  nsIRequest,
+                  nsIChannel)
 
 using namespace mozilla;
 using mozilla::dom::ContentChild;
diff --git a/image/decoders/icon/gtk/nsIconChannel.cpp b/image/decoders/icon/gtk/nsIconChannel.cpp
index 17908dfb08af3c64e7e3200990475ed5f1690ac5..493c42c2cc5b845242ae74315e2169578095eb3f 100644
--- a/image/decoders/icon/gtk/nsIconChannel.cpp
+++ b/image/decoders/icon/gtk/nsIconChannel.cpp
@@ -38,9 +38,9 @@ extern "C" {
 
 #include "nsIconChannel.h"
 
-NS_IMPL_ISUPPORTS2(nsIconChannel,
-                   nsIRequest,
-                   nsIChannel)
+NS_IMPL_ISUPPORTS(nsIconChannel,
+                  nsIRequest,
+                  nsIChannel)
 
 #ifdef MOZ_ENABLE_GNOMEUI
 // These let us have a soft dependency on libgnomeui rather than a hard one. These are just basically the prototypes
diff --git a/image/decoders/icon/mac/nsIconChannelCocoa.mm b/image/decoders/icon/mac/nsIconChannelCocoa.mm
index 565d7f07357aefe815673850a3482e94e905fa43..abeec40db3e2aef28d35b90c3d51c8fb3b609cc2 100644
--- a/image/decoders/icon/mac/nsIconChannelCocoa.mm
+++ b/image/decoders/icon/mac/nsIconChannelCocoa.mm
@@ -33,9 +33,9 @@ nsIconChannel::nsIconChannel()
 nsIconChannel::~nsIconChannel() 
 {}
 
-NS_IMPL_ISUPPORTS4(nsIconChannel, 
-                              nsIChannel, 
-                              nsIRequest,
+NS_IMPL_ISUPPORTS(nsIconChannel, 
+                  nsIChannel, 
+                  nsIRequest,
 			       nsIRequestObserver,
 			       nsIStreamListener)
 
diff --git a/image/decoders/icon/nsIconProtocolHandler.cpp b/image/decoders/icon/nsIconProtocolHandler.cpp
index 9eead79cacfdb2bfd6a68cc5dab88f85c11d498d..ebfa87224ef04d35021a57547bdb37ddf0442969 100644
--- a/image/decoders/icon/nsIconProtocolHandler.cpp
+++ b/image/decoders/icon/nsIconProtocolHandler.cpp
@@ -23,7 +23,7 @@ nsIconProtocolHandler::nsIconProtocolHandler()
 nsIconProtocolHandler::~nsIconProtocolHandler() 
 {}
 
-NS_IMPL_ISUPPORTS2(nsIconProtocolHandler, nsIProtocolHandler, nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(nsIconProtocolHandler, nsIProtocolHandler, nsISupportsWeakReference)
 
     
 ////////////////////////////////////////////////////////////////////////////////
diff --git a/image/decoders/icon/nsIconURI.cpp b/image/decoders/icon/nsIconURI.cpp
index 299e1cb23b410ac0ddc2ccded44e8c6d084b8131..34210af95a6d2eab18045184c073510631d2935a 100644
--- a/image/decoders/icon/nsIconURI.cpp
+++ b/image/decoders/icon/nsIconURI.cpp
@@ -59,7 +59,7 @@ nsMozIconURI::~nsMozIconURI()
 {
 }
 
-NS_IMPL_ISUPPORTS2(nsMozIconURI, nsIMozIconURI, nsIURI)
+NS_IMPL_ISUPPORTS(nsMozIconURI, nsIMozIconURI, nsIURI)
 
 #define MOZICON_SCHEME "moz-icon:"
 #define MOZICON_SCHEME_LEN (sizeof(MOZICON_SCHEME) - 1)
diff --git a/image/decoders/icon/qt/nsIconChannel.cpp b/image/decoders/icon/qt/nsIconChannel.cpp
index c0815c87f3003d32161d804b59e2f97781c64519..46375a8b53e304990dcc752d7040f00a8d7236be 100644
--- a/image/decoders/icon/qt/nsIconChannel.cpp
+++ b/image/decoders/icon/qt/nsIconChannel.cpp
@@ -21,9 +21,9 @@
 #include "nsIconChannel.h"
 #include "nsGtkQtIconsConverter.h"
 
-NS_IMPL_ISUPPORTS2(nsIconChannel,
-                   nsIRequest,
-                   nsIChannel)
+NS_IMPL_ISUPPORTS(nsIconChannel,
+                  nsIRequest,
+                  nsIChannel)
 
 static nsresult
 moz_qicon_to_channel(QImage *image, nsIURI *aURI,
diff --git a/image/decoders/icon/win/nsIconChannel.cpp b/image/decoders/icon/win/nsIconChannel.cpp
index e1aade1a4cb7bd92f62ef047eaf62c3100dc6c7e..a2ae36df1036645f24a3b550d457f50205490937 100644
--- a/image/decoders/icon/win/nsIconChannel.cpp
+++ b/image/decoders/icon/win/nsIconChannel.cpp
@@ -73,11 +73,11 @@ nsIconChannel::nsIconChannel()
 nsIconChannel::~nsIconChannel() 
 {}
 
-NS_IMPL_ISUPPORTS4(nsIconChannel, 
-                              nsIChannel, 
-                              nsIRequest,
-                              nsIRequestObserver,
-                              nsIStreamListener)
+NS_IMPL_ISUPPORTS(nsIconChannel, 
+                  nsIChannel, 
+                  nsIRequest,
+                  nsIRequestObserver,
+                  nsIStreamListener)
 
 nsresult nsIconChannel::Init(nsIURI* uri)
 {
diff --git a/image/encoders/bmp/nsBMPEncoder.cpp b/image/encoders/bmp/nsBMPEncoder.cpp
index 6c3e92ce1aca00f2f59567af7b44794ba290ce38..2c3536d314e2731295ef1768e7c4bfc443ea4df4 100644
--- a/image/encoders/bmp/nsBMPEncoder.cpp
+++ b/image/encoders/bmp/nsBMPEncoder.cpp
@@ -13,7 +13,7 @@
 
 using namespace mozilla;
 
-NS_IMPL_ISUPPORTS3(nsBMPEncoder, imgIEncoder, nsIInputStream, nsIAsyncInputStream)
+NS_IMPL_ISUPPORTS(nsBMPEncoder, imgIEncoder, nsIInputStream, nsIAsyncInputStream)
 
 nsBMPEncoder::nsBMPEncoder() : mImageBufferStart(nullptr), 
                                mImageBufferCurr(0),
diff --git a/image/encoders/ico/nsICOEncoder.cpp b/image/encoders/ico/nsICOEncoder.cpp
index 99d93de990d992ac2fc6935873b01f1b895e3382..da0056171afc072ef7f83a4dec00528514968b22 100644
--- a/image/encoders/ico/nsICOEncoder.cpp
+++ b/image/encoders/ico/nsICOEncoder.cpp
@@ -15,7 +15,7 @@
 using namespace mozilla;
 using namespace mozilla::image;
 
-NS_IMPL_ISUPPORTS3(nsICOEncoder, imgIEncoder, nsIInputStream, nsIAsyncInputStream)
+NS_IMPL_ISUPPORTS(nsICOEncoder, imgIEncoder, nsIInputStream, nsIAsyncInputStream)
 
 nsICOEncoder::nsICOEncoder() : mImageBufferStart(nullptr),
                                mImageBufferCurr(0),
diff --git a/image/encoders/jpeg/nsJPEGEncoder.cpp b/image/encoders/jpeg/nsJPEGEncoder.cpp
index e2fe85688e18974f9c3f8db2e060ca852495d1e0..89f32d75d54012dab11e0dec5adbf4c0e595f918 100644
--- a/image/encoders/jpeg/nsJPEGEncoder.cpp
+++ b/image/encoders/jpeg/nsJPEGEncoder.cpp
@@ -14,7 +14,7 @@
 
 using namespace mozilla;
 
-NS_IMPL_ISUPPORTS3(nsJPEGEncoder, imgIEncoder, nsIInputStream, nsIAsyncInputStream)
+NS_IMPL_ISUPPORTS(nsJPEGEncoder, imgIEncoder, nsIInputStream, nsIAsyncInputStream)
 
 // used to pass error info through the JPEG library
 struct encoder_error_mgr {
diff --git a/image/encoders/png/nsPNGEncoder.cpp b/image/encoders/png/nsPNGEncoder.cpp
index f5df0c3abaf54dc5c51510f1d5b30820eb376038..100e8dacfdaecbb391523385fa241ba2646c1c4a 100644
--- a/image/encoders/png/nsPNGEncoder.cpp
+++ b/image/encoders/png/nsPNGEncoder.cpp
@@ -11,7 +11,7 @@
 
 using namespace mozilla;
 
-NS_IMPL_ISUPPORTS3(nsPNGEncoder, imgIEncoder, nsIInputStream, nsIAsyncInputStream)
+NS_IMPL_ISUPPORTS(nsPNGEncoder, imgIEncoder, nsIInputStream, nsIAsyncInputStream)
 
 nsPNGEncoder::nsPNGEncoder() : mPNG(nullptr), mPNGinfo(nullptr),
                                mIsAnimation(false),
diff --git a/image/src/ClippedImage.cpp b/image/src/ClippedImage.cpp
index 722e72c9f6243bcc6859ce8e49dd9b44daf2b9dc..183d025948b1166151064459c5452bff350c8981 100644
--- a/image/src/ClippedImage.cpp
+++ b/image/src/ClippedImage.cpp
@@ -156,7 +156,7 @@ ClippedImage::ShouldClip()
   return mShouldClip.ref();
 }
 
-NS_IMPL_ISUPPORTS1(ClippedImage, imgIContainer)
+NS_IMPL_ISUPPORTS(ClippedImage, imgIContainer)
 
 nsIntRect
 ClippedImage::FrameRect(uint32_t aWhichFrame)
diff --git a/image/src/FrozenImage.cpp b/image/src/FrozenImage.cpp
index 48bcf21f0be80399ed5c9ec3a71ac9e9624836ea..9594749410b41fe5987fbf13053e0f0080550062 100644
--- a/image/src/FrozenImage.cpp
+++ b/image/src/FrozenImage.cpp
@@ -10,7 +10,7 @@ using namespace mozilla::gfx;
 namespace mozilla {
 namespace image {
 
-NS_IMPL_ISUPPORTS1(FrozenImage, imgIContainer)
+NS_IMPL_ISUPPORTS(FrozenImage, imgIContainer)
 
 nsIntRect
 FrozenImage::FrameRect(uint32_t /* aWhichFrame - ignored */)
diff --git a/image/src/ImageWrapper.cpp b/image/src/ImageWrapper.cpp
index c1cabd78ad178a1a1aeda4996c88e237c302daee..8e585bbb5655d99d67f8b05d8a3a0cdcbc75f31a 100644
--- a/image/src/ImageWrapper.cpp
+++ b/image/src/ImageWrapper.cpp
@@ -150,7 +150,7 @@ ImageWrapper::GetURI()
 
 // Methods inherited from XPCOM interfaces.
 
-NS_IMPL_ISUPPORTS1(ImageWrapper, imgIContainer)
+NS_IMPL_ISUPPORTS(ImageWrapper, imgIContainer)
 
 NS_IMETHODIMP
 ImageWrapper::GetWidth(int32_t* aWidth)
diff --git a/image/src/OrientedImage.cpp b/image/src/OrientedImage.cpp
index 47d11539ee238cbc8f794cc14f50f9c757bd9ba7..b9ab9a48f8505968fc1ed20857de1351acdb9bf8 100644
--- a/image/src/OrientedImage.cpp
+++ b/image/src/OrientedImage.cpp
@@ -20,7 +20,7 @@ using mozilla::layers::ImageContainer;
 namespace mozilla {
 namespace image {
 
-NS_IMPL_ISUPPORTS1(OrientedImage, imgIContainer)
+NS_IMPL_ISUPPORTS(OrientedImage, imgIContainer)
 
 nsIntRect
 OrientedImage::FrameRect(uint32_t aWhichFrame)
diff --git a/image/src/RasterImage.cpp b/image/src/RasterImage.cpp
index ecb4d9dcd5101e08af9d14440733d5ef97690074..efdd741266a6d6ba102804526165eb39b00df4e6 100644
--- a/image/src/RasterImage.cpp
+++ b/image/src/RasterImage.cpp
@@ -380,10 +380,10 @@ namespace image {
 static nsCOMPtr<nsIThread> sScaleWorkerThread = nullptr;
 
 #ifndef DEBUG
-NS_IMPL_ISUPPORTS2(RasterImage, imgIContainer, nsIProperties)
+NS_IMPL_ISUPPORTS(RasterImage, imgIContainer, nsIProperties)
 #else
-NS_IMPL_ISUPPORTS3(RasterImage, imgIContainer, nsIProperties,
-                              imgIContainerDebug)
+NS_IMPL_ISUPPORTS(RasterImage, imgIContainer, nsIProperties,
+                  imgIContainerDebug)
 #endif
 
 //******************************************************************************
@@ -3167,8 +3167,8 @@ RasterImage::FinishedSomeDecoding(eShutdownIntent aIntent /* = eShutdownIntent_D
   return RequestDecodeIfNeeded(rv, aIntent, done, wasSize);
 }
 
-NS_IMPL_ISUPPORTS1(RasterImage::DecodePool,
-                              nsIObserver)
+NS_IMPL_ISUPPORTS(RasterImage::DecodePool,
+                  nsIObserver)
 
 /* static */ RasterImage::DecodePool*
 RasterImage::DecodePool::Singleton()
@@ -3201,7 +3201,7 @@ public:
     ~RIDThreadPoolListener() {}
 };
 
-NS_IMPL_ISUPPORTS1(RIDThreadPoolListener, nsIThreadPoolListener)
+NS_IMPL_ISUPPORTS(RIDThreadPoolListener, nsIThreadPoolListener)
 
 NS_IMETHODIMP
 RIDThreadPoolListener::OnThreadCreated()
diff --git a/image/src/SVGDocumentWrapper.cpp b/image/src/SVGDocumentWrapper.cpp
index d5596bc5a7d211938ce9a4417b7457e3f7bf4bf5..b4c04e7ce506c1e254441284bfb6073d1a18e110 100644
--- a/image/src/SVGDocumentWrapper.cpp
+++ b/image/src/SVGDocumentWrapper.cpp
@@ -37,11 +37,11 @@ using namespace mozilla::dom;
 namespace mozilla {
 namespace image {
 
-NS_IMPL_ISUPPORTS4(SVGDocumentWrapper,
-                   nsIStreamListener,
-                   nsIRequestObserver,
-                   nsIObserver,
-                   nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(SVGDocumentWrapper,
+                  nsIStreamListener,
+                  nsIRequestObserver,
+                  nsIObserver,
+                  nsISupportsWeakReference)
 
 SVGDocumentWrapper::SVGDocumentWrapper()
   : mIgnoreInvalidation(false),
diff --git a/image/src/SurfaceCache.cpp b/image/src/SurfaceCache.cpp
index a27ded36698f7200317004cce7715a7d9b08887b..93aa8eea244910e31f238efaf9fbc048f25e2378 100644
--- a/image/src/SurfaceCache.cpp
+++ b/image/src/SurfaceCache.cpp
@@ -435,8 +435,8 @@ private:
   Cost                                                      mAvailableCost;
 };
 
-NS_IMPL_ISUPPORTS1(SurfaceCacheImpl, nsIMemoryReporter)
-NS_IMPL_ISUPPORTS1(SurfaceCacheImpl::MemoryPressureObserver, nsIObserver)
+NS_IMPL_ISUPPORTS(SurfaceCacheImpl, nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(SurfaceCacheImpl::MemoryPressureObserver, nsIObserver)
 
 ///////////////////////////////////////////////////////////////////////////////
 // Public API
diff --git a/image/src/VectorImage.cpp b/image/src/VectorImage.cpp
index 2c74f226e2fe038e5b9654367f3e86cc11a40af9..6a4d2a9ad0b39b6c391920afe56d341047241d25 100644
--- a/image/src/VectorImage.cpp
+++ b/image/src/VectorImage.cpp
@@ -159,7 +159,7 @@ private:
   VectorImage* const mImage; // Raw pointer to owner.
 };
 
-NS_IMPL_ISUPPORTS1(SVGParseCompleteListener, nsIDocumentObserver)
+NS_IMPL_ISUPPORTS(SVGParseCompleteListener, nsIDocumentObserver)
 
 class SVGLoadEventListener MOZ_FINAL : public nsIDOMEventListener {
 public:
@@ -228,7 +228,7 @@ private:
   VectorImage* const mImage; // Raw pointer to owner.
 };
 
-NS_IMPL_ISUPPORTS1(SVGLoadEventListener, nsIDOMEventListener)
+NS_IMPL_ISUPPORTS(SVGLoadEventListener, nsIDOMEventListener)
 
 // Helper-class: SVGDrawingCallback
 class SVGDrawingCallback : public gfxDrawingCallback {
@@ -302,10 +302,10 @@ SVGDrawingCallback::operator()(gfxContext* aContext,
 }
 
 // Implement VectorImage's nsISupports-inherited methods
-NS_IMPL_ISUPPORTS3(VectorImage,
-                   imgIContainer,
-                   nsIStreamListener,
-                   nsIRequestObserver)
+NS_IMPL_ISUPPORTS(VectorImage,
+                  imgIContainer,
+                  nsIStreamListener,
+                  nsIRequestObserver)
 
 //------------------------------------------------------------------------------
 // Constructor / Destructor
diff --git a/image/src/imgLoader.cpp b/image/src/imgLoader.cpp
index 5dd015c8c909a661a637db0dc5090b51e18ef72f..8e0d11f219c084792efaf9e5f56c14f830aed6a9 100644
--- a/image/src/imgLoader.cpp
+++ b/image/src/imgLoader.cpp
@@ -212,12 +212,12 @@ private:
   }
 };
 
-NS_IMPL_ISUPPORTS1(imgMemoryReporter, nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(imgMemoryReporter, nsIMemoryReporter)
 
-NS_IMPL_ISUPPORTS3(nsProgressNotificationProxy,
-                   nsIProgressEventSink,
-                   nsIChannelEventSink,
-                   nsIInterfaceRequestor)
+NS_IMPL_ISUPPORTS(nsProgressNotificationProxy,
+                  nsIProgressEventSink,
+                  nsIChannelEventSink,
+                  nsIInterfaceRequestor)
 
 NS_IMETHODIMP
 nsProgressNotificationProxy::OnProgress(nsIRequest* request,
@@ -672,7 +672,7 @@ public:
   NS_DECL_NSIOBSERVER
 };
 
-NS_IMPL_ISUPPORTS1(imgCacheObserver, nsIObserver)
+NS_IMPL_ISUPPORTS(imgCacheObserver, nsIObserver)
 
 NS_IMETHODIMP
 imgCacheObserver::Observe(nsISupports* aSubject, const char* aTopic, const char16_t* aSomeData)
@@ -729,7 +729,7 @@ double imgLoader::sCacheTimeWeight;
 uint32_t imgLoader::sCacheMaxSize;
 imgMemoryReporter* imgLoader::sMemReporter;
 
-NS_IMPL_ISUPPORTS5(imgLoader, imgILoader, nsIContentSniffer, imgICache, nsISupportsWeakReference, nsIObserver)
+NS_IMPL_ISUPPORTS(imgLoader, imgILoader, nsIContentSniffer, imgICache, nsISupportsWeakReference, nsIObserver)
 
 static imgLoader* gSingleton = nullptr;
 static imgLoader* gPBSingleton = nullptr;
@@ -2066,10 +2066,10 @@ nsresult imgLoader::GetMimeTypeFromContent(const char* aContents, uint32_t aLeng
 #include "nsIRequest.h"
 #include "nsIStreamConverterService.h"
 
-NS_IMPL_ISUPPORTS3(ProxyListener,
-                   nsIStreamListener,
-                   nsIThreadRetargetableStreamListener,
-                   nsIRequestObserver)
+NS_IMPL_ISUPPORTS(ProxyListener,
+                  nsIStreamListener,
+                  nsIThreadRetargetableStreamListener,
+                  nsIRequestObserver)
 
 ProxyListener::ProxyListener(nsIStreamListener *dest) :
   mDestListener(dest)
@@ -2168,10 +2168,10 @@ ProxyListener::CheckListenerChain()
  * http validate class.  check a channel for a 304
  */
 
-NS_IMPL_ISUPPORTS6(imgCacheValidator, nsIStreamListener, nsIRequestObserver,
-                   nsIThreadRetargetableStreamListener,
-                   nsIChannelEventSink, nsIInterfaceRequestor,
-                   nsIAsyncVerifyRedirectCallback)
+NS_IMPL_ISUPPORTS(imgCacheValidator, nsIStreamListener, nsIRequestObserver,
+                  nsIThreadRetargetableStreamListener,
+                  nsIChannelEventSink, nsIInterfaceRequestor,
+                  nsIAsyncVerifyRedirectCallback)
 
 imgCacheValidator::imgCacheValidator(nsProgressNotificationProxy* progress,
                                      imgLoader* loader, imgRequest *request,
diff --git a/image/src/imgRequest.cpp b/image/src/imgRequest.cpp
index 4bfd060a6dd2417391fcaae64ea20b92405ad09d..74a11fae0f7e14f08c761a64c3cccb6574a5045a 100644
--- a/image/src/imgRequest.cpp
+++ b/image/src/imgRequest.cpp
@@ -50,12 +50,12 @@ GetImgLog()
 }
 #endif
 
-NS_IMPL_ISUPPORTS6(imgRequest,
-                   nsIStreamListener, nsIRequestObserver,
-                   nsIThreadRetargetableStreamListener,
-                   nsIChannelEventSink,
-                   nsIInterfaceRequestor,
-                   nsIAsyncVerifyRedirectCallback)
+NS_IMPL_ISUPPORTS(imgRequest,
+                  nsIStreamListener, nsIRequestObserver,
+                  nsIThreadRetargetableStreamListener,
+                  nsIChannelEventSink,
+                  nsIInterfaceRequestor,
+                  nsIAsyncVerifyRedirectCallback)
 
 imgRequest::imgRequest(imgLoader* aLoader)
  : mLoader(aLoader)
diff --git a/image/src/imgTools.cpp b/image/src/imgTools.cpp
index cae25b8fce2de6e67d29f414a57b42810cffaac2..e82a4cc908e0e9178547952c87564d9d996ff0ee 100644
--- a/image/src/imgTools.cpp
+++ b/image/src/imgTools.cpp
@@ -33,7 +33,7 @@ using namespace mozilla::gfx;
 
 
 
-NS_IMPL_ISUPPORTS1(imgTools, imgITools)
+NS_IMPL_ISUPPORTS(imgTools, imgITools)
 
 imgTools::imgTools()
 {
diff --git a/intl/chardet/src/nsCyrillicDetector.cpp b/intl/chardet/src/nsCyrillicDetector.cpp
index 03c0863d589642f6150ee7e8d6b45894dbcbf0bf..feebeed65a2c8938fd46edba183d96810384b31b 100644
--- a/intl/chardet/src/nsCyrillicDetector.cpp
+++ b/intl/chardet/src/nsCyrillicDetector.cpp
@@ -15,8 +15,8 @@
 
 //----------------------------------------------------------------------
 // Interface nsISupports [implementation]
-NS_IMPL_ISUPPORTS1(nsCyrXPCOMDetector, nsICharsetDetector)
-NS_IMPL_ISUPPORTS1(nsCyrXPCOMStringDetector, nsIStringCharsetDetector)
+NS_IMPL_ISUPPORTS(nsCyrXPCOMDetector, nsICharsetDetector)
+NS_IMPL_ISUPPORTS(nsCyrXPCOMStringDetector, nsIStringCharsetDetector)
 
 void nsCyrillicDetector::HandleData(const char* aBuf, uint32_t aLen)
 {
diff --git a/intl/hyphenation/src/nsHyphenationManager.cpp b/intl/hyphenation/src/nsHyphenationManager.cpp
index 9e5a76dfc702f6cb02683e357ccd5364223d51f0..836a1d384247922540c578d84d26669ae80ea6b3 100644
--- a/intl/hyphenation/src/nsHyphenationManager.cpp
+++ b/intl/hyphenation/src/nsHyphenationManager.cpp
@@ -27,8 +27,8 @@ static const char kMemoryPressureNotification[] = "memory-pressure";
 
 nsHyphenationManager *nsHyphenationManager::sInstance = nullptr;
 
-NS_IMPL_ISUPPORTS1(nsHyphenationManager::MemoryPressureObserver,
-                   nsIObserver)
+NS_IMPL_ISUPPORTS(nsHyphenationManager::MemoryPressureObserver,
+                  nsIObserver)
 
 NS_IMETHODIMP
 nsHyphenationManager::MemoryPressureObserver::Observe(nsISupports *aSubject,
diff --git a/intl/locale/src/mac/nsCollationMacUC.cpp b/intl/locale/src/mac/nsCollationMacUC.cpp
index 7e56dcb4943d0283ccc62b9bf20b207d0043269d..f11d146640fb31199f85fbddfdc5b27c85380947 100644
--- a/intl/locale/src/mac/nsCollationMacUC.cpp
+++ b/intl/locale/src/mac/nsCollationMacUC.cpp
@@ -9,7 +9,7 @@
 #include "prmem.h"
 #include "nsString.h"
 
-NS_IMPL_ISUPPORTS1(nsCollationMacUC, nsICollation)
+NS_IMPL_ISUPPORTS(nsCollationMacUC, nsICollation)
 
 nsCollationMacUC::nsCollationMacUC() 
   : mInit(false)
diff --git a/intl/locale/src/mac/nsDateTimeFormatMac.cpp b/intl/locale/src/mac/nsDateTimeFormatMac.cpp
index 84c6184eebb10d4370a8f65bc037ddae418dbb48..19dea322a0bb16b3b36c9f1c1c90cba44320b4ea 100644
--- a/intl/locale/src/mac/nsDateTimeFormatMac.cpp
+++ b/intl/locale/src/mac/nsDateTimeFormatMac.cpp
@@ -15,7 +15,7 @@
 #include "nsTArray.h"
 
 
-NS_IMPL_ISUPPORTS1(nsDateTimeFormatMac, nsIDateTimeFormat)
+NS_IMPL_ISUPPORTS(nsDateTimeFormatMac, nsIDateTimeFormat)
 
 nsresult nsDateTimeFormatMac::Initialize(nsILocale* locale)
 {
diff --git a/intl/locale/src/mac/nsMacCharset.cpp b/intl/locale/src/mac/nsMacCharset.cpp
index 61ab481e5166542bd12d9fba96575912300b8306..956560fba830d2135b72c72cf571ee37f4801a98 100644
--- a/intl/locale/src/mac/nsMacCharset.cpp
+++ b/intl/locale/src/mac/nsMacCharset.cpp
@@ -11,7 +11,7 @@
 #include "nsPlatformCharset.h"
 #include "nsEncoderDecoderUtils.h"
 
-NS_IMPL_ISUPPORTS1(nsPlatformCharset, nsIPlatformCharset)
+NS_IMPL_ISUPPORTS(nsPlatformCharset, nsIPlatformCharset)
 
 nsPlatformCharset::nsPlatformCharset()
 {
diff --git a/intl/locale/src/nsCollation.cpp b/intl/locale/src/nsCollation.cpp
index e5710424c59a8ae3d9fba16ac91052166fa36750..bfa72ff979b112055271c5031f2c5bb82dfd9007 100644
--- a/intl/locale/src/nsCollation.cpp
+++ b/intl/locale/src/nsCollation.cpp
@@ -15,7 +15,7 @@
 
 NS_DEFINE_CID(kCollationCID, NS_COLLATION_CID);
 
-NS_IMPL_ISUPPORTS1(nsCollationFactory, nsICollationFactory)
+NS_IMPL_ISUPPORTS(nsCollationFactory, nsICollationFactory)
 
 nsresult nsCollationFactory::CreateCollation(nsILocale* locale, nsICollation** instancePtr)
 {
diff --git a/intl/locale/src/nsLanguageAtomService.cpp b/intl/locale/src/nsLanguageAtomService.cpp
index b1600a64b9a832c744fc9943cd5d02033820c440..4efbb6b7f76b756fca1e860bafc5079dcb36d13d 100644
--- a/intl/locale/src/nsLanguageAtomService.cpp
+++ b/intl/locale/src/nsLanguageAtomService.cpp
@@ -11,7 +11,7 @@
 #include "mozilla/Services.h"
 #include "nsServiceManagerUtils.h"
 
-NS_IMPL_ISUPPORTS1(nsLanguageAtomService, nsILanguageAtomService)
+NS_IMPL_ISUPPORTS(nsLanguageAtomService, nsILanguageAtomService)
 
 nsLanguageAtomService::nsLanguageAtomService()
 {
diff --git a/intl/locale/src/nsLocale.cpp b/intl/locale/src/nsLocale.cpp
index e18b64a20c3c307d400d1057cd0d6584600ba1a6..e113dc587be1848af24858d05aa5e267db92024f 100644
--- a/intl/locale/src/nsLocale.cpp
+++ b/intl/locale/src/nsLocale.cpp
@@ -14,7 +14,7 @@
 
 
 /* nsILocale */
-NS_IMPL_ISUPPORTS1(nsLocale, nsILocale)
+NS_IMPL_ISUPPORTS(nsLocale, nsILocale)
 
 nsLocale::nsLocale(void)
 :  fHashtable(nullptr), fCategoryCount(0)
diff --git a/intl/locale/src/nsLocaleService.cpp b/intl/locale/src/nsLocaleService.cpp
index 1d693ef89d6dfc7187734a1a9fc7065e77cdd441..2bfb93734025e2e500c1458ddd41cdd25f05752a 100644
--- a/intl/locale/src/nsLocaleService.cpp
+++ b/intl/locale/src/nsLocaleService.cpp
@@ -196,7 +196,7 @@ nsLocaleService::~nsLocaleService(void)
 {
 }
 
-NS_IMPL_ISUPPORTS1(nsLocaleService, nsILocaleService)
+NS_IMPL_ISUPPORTS(nsLocaleService, nsILocaleService)
 
 NS_IMETHODIMP
 nsLocaleService::NewLocale(const nsAString &aLocale, nsILocale **_retval)
diff --git a/intl/locale/src/nsScriptableDateFormat.cpp b/intl/locale/src/nsScriptableDateFormat.cpp
index c3b1a5cbeb7e177441428d2e7b78b1bee88d5cf6..90118e188efbd5a0a7655f452ceb6ebb13e2fbd2 100644
--- a/intl/locale/src/nsScriptableDateFormat.cpp
+++ b/intl/locale/src/nsScriptableDateFormat.cpp
@@ -52,7 +52,7 @@ private:
   nsString mStringOut;   
 };
 
-NS_IMPL_ISUPPORTS1(nsScriptableDateFormat, nsIScriptableDateFormat)
+NS_IMPL_ISUPPORTS(nsScriptableDateFormat, nsIScriptableDateFormat)
 
 NS_IMETHODIMP nsScriptableDateFormat::FormatDateTime(
                             const char16_t *aLocale, 
diff --git a/intl/locale/src/unix/nsAndroidCharset.cpp b/intl/locale/src/unix/nsAndroidCharset.cpp
index c0fee425ce9e91369fa150f80ef503ce89f0a1c7..ed646039c6cfa5fac7e9ca894544466e9ae34ed9 100644
--- a/intl/locale/src/unix/nsAndroidCharset.cpp
+++ b/intl/locale/src/unix/nsAndroidCharset.cpp
@@ -6,7 +6,7 @@
 #include "nsIPlatformCharset.h"
 #include "nsPlatformCharset.h"
 
-NS_IMPL_ISUPPORTS1(nsPlatformCharset, nsIPlatformCharset)
+NS_IMPL_ISUPPORTS(nsPlatformCharset, nsIPlatformCharset)
 
 nsPlatformCharset::nsPlatformCharset()
 {
diff --git a/intl/locale/src/unix/nsCollationUnix.cpp b/intl/locale/src/unix/nsCollationUnix.cpp
index 99f5fd1d2c141820b7c322f44cfa81fbcb7829a7..a0b724d4a3b35992cbef9f83fe759f615cabeb6e 100644
--- a/intl/locale/src/unix/nsCollationUnix.cpp
+++ b/intl/locale/src/unix/nsCollationUnix.cpp
@@ -42,7 +42,7 @@ nsCollationUnix::~nsCollationUnix()
     delete mCollation;
 }
 
-NS_IMPL_ISUPPORTS1(nsCollationUnix, nsICollation)
+NS_IMPL_ISUPPORTS(nsCollationUnix, nsICollation)
 
 nsresult nsCollationUnix::Initialize(nsILocale* locale) 
 {
diff --git a/intl/locale/src/unix/nsDateTimeFormatUnix.cpp b/intl/locale/src/unix/nsDateTimeFormatUnix.cpp
index 12816e20ad2bfbaf1d983457952061e5ad0fb2ae..8a3294f7dfa5add67cbe4e2e1bb4c0f2803af0bb 100644
--- a/intl/locale/src/unix/nsDateTimeFormatUnix.cpp
+++ b/intl/locale/src/unix/nsDateTimeFormatUnix.cpp
@@ -15,7 +15,7 @@
 #include "nsReadableUtils.h"
 #include "nsUnicharUtils.h"
 
-NS_IMPL_ISUPPORTS1(nsDateTimeFormatUnix, nsIDateTimeFormat)
+NS_IMPL_ISUPPORTS(nsDateTimeFormatUnix, nsIDateTimeFormat)
 
 // init this interface to a specified locale
 nsresult nsDateTimeFormatUnix::Initialize(nsILocale* locale)
diff --git a/intl/locale/src/unix/nsUNIXCharset.cpp b/intl/locale/src/unix/nsUNIXCharset.cpp
index 4086d3bb41318dd2b78b038c6582455f347cf23a..9522dab638b10a42159374e3a61c3ce16104d4ca 100644
--- a/intl/locale/src/unix/nsUNIXCharset.cpp
+++ b/intl/locale/src/unix/nsUNIXCharset.cpp
@@ -36,7 +36,7 @@ static const char* kUnixCharsets[][3] = {
 #include "unixcharset.properties.h"
 };
 
-NS_IMPL_ISUPPORTS1(nsPlatformCharset, nsIPlatformCharset)
+NS_IMPL_ISUPPORTS(nsPlatformCharset, nsIPlatformCharset)
 
 nsPlatformCharset::nsPlatformCharset()
 {
diff --git a/intl/locale/src/windows/nsCollationWin.cpp b/intl/locale/src/windows/nsCollationWin.cpp
index 655ebaec0d8d108e4f7865bf16580fe461f97022..8dcdb8f071abc0c6f332b775308185ebf9e7402d 100644
--- a/intl/locale/src/windows/nsCollationWin.cpp
+++ b/intl/locale/src/windows/nsCollationWin.cpp
@@ -17,7 +17,7 @@
 
 #undef CompareString
 
-NS_IMPL_ISUPPORTS1(nsCollationWin, nsICollation)
+NS_IMPL_ISUPPORTS(nsCollationWin, nsICollation)
 
 
 nsCollationWin::nsCollationWin() : mCollation(nullptr)
diff --git a/intl/locale/src/windows/nsDateTimeFormatWin.cpp b/intl/locale/src/windows/nsDateTimeFormatWin.cpp
index f19c8f105619354492f47aedb860ee7619b7ec48..f65868e1bccebedd6d4e35a09ac9c878c0825a3b 100644
--- a/intl/locale/src/windows/nsDateTimeFormatWin.cpp
+++ b/intl/locale/src/windows/nsDateTimeFormatWin.cpp
@@ -15,7 +15,7 @@
 
 #define NSDATETIMEFORMAT_BUFFER_LEN  80
 
-NS_IMPL_ISUPPORTS1(nsDateTimeFormatWin, nsIDateTimeFormat)
+NS_IMPL_ISUPPORTS(nsDateTimeFormatWin, nsIDateTimeFormat)
 
 
 // init this interface to a specified locale
diff --git a/intl/locale/src/windows/nsWinCharset.cpp b/intl/locale/src/windows/nsWinCharset.cpp
index 100f49c9a51019b6a136cb80c966bf9b0ec32ca4..2423d130c745edab0cee905a056fdaf86f0c9246 100644
--- a/intl/locale/src/windows/nsWinCharset.cpp
+++ b/intl/locale/src/windows/nsWinCharset.cpp
@@ -21,7 +21,7 @@ static const char* kWinCharsets[][3] = {
 #include "wincharset.properties.h"
 };
 
-NS_IMPL_ISUPPORTS1(nsPlatformCharset, nsIPlatformCharset)
+NS_IMPL_ISUPPORTS(nsPlatformCharset, nsIPlatformCharset)
 
 nsPlatformCharset::nsPlatformCharset()
 {
diff --git a/intl/lwbrk/src/nsJISx4051LineBreaker.cpp b/intl/lwbrk/src/nsJISx4051LineBreaker.cpp
index 4d1d372895dae481826eb358abf24bbfaf249801..1b2a2382e0fe094352485481f5e8d13d143da035 100644
--- a/intl/lwbrk/src/nsJISx4051LineBreaker.cpp
+++ b/intl/lwbrk/src/nsJISx4051LineBreaker.cpp
@@ -530,7 +530,7 @@ nsJISx4051LineBreaker::~nsJISx4051LineBreaker()
 {
 }
 
-NS_IMPL_ISUPPORTS1(nsJISx4051LineBreaker, nsILineBreaker)
+NS_IMPL_ISUPPORTS(nsJISx4051LineBreaker, nsILineBreaker)
 
 class ContextState {
 public:
diff --git a/intl/lwbrk/src/nsSampleWordBreaker.cpp b/intl/lwbrk/src/nsSampleWordBreaker.cpp
index 1421ed472f3d2bbe721828b2f702a09eaad94689..fa54adeda894e1e2d698792d69d6f0f2eec56657 100644
--- a/intl/lwbrk/src/nsSampleWordBreaker.cpp
+++ b/intl/lwbrk/src/nsSampleWordBreaker.cpp
@@ -13,7 +13,7 @@ nsSampleWordBreaker::~nsSampleWordBreaker()
 {
 }
 
-NS_IMPL_ISUPPORTS1(nsSampleWordBreaker, nsIWordBreaker)
+NS_IMPL_ISUPPORTS(nsSampleWordBreaker, nsIWordBreaker)
 
 bool nsSampleWordBreaker::BreakInBetween(
   const char16_t* aText1 , uint32_t aTextLen1,
diff --git a/intl/lwbrk/src/nsSemanticUnitScanner.cpp b/intl/lwbrk/src/nsSemanticUnitScanner.cpp
index f6d6b6dc4ec316819e9e4886a755e61c43be3f50..584200ad7a7538ebfce7687387a803c10237bdaa 100644
--- a/intl/lwbrk/src/nsSemanticUnitScanner.cpp
+++ b/intl/lwbrk/src/nsSemanticUnitScanner.cpp
@@ -5,7 +5,7 @@
 
 #include "nsSemanticUnitScanner.h"
 
-NS_IMPL_ISUPPORTS1(nsSemanticUnitScanner, nsISemanticUnitScanner)
+NS_IMPL_ISUPPORTS(nsSemanticUnitScanner, nsISemanticUnitScanner)
 
 nsSemanticUnitScanner::nsSemanticUnitScanner() : nsSampleWordBreaker()
 {
diff --git a/intl/strres/src/nsStringBundle.cpp b/intl/strres/src/nsStringBundle.cpp
index afdb00125bb093e64df11c3f29065055d75e9b6b..7405a1ad679b492251860cc3a6545c566eff74c9 100644
--- a/intl/strres/src/nsStringBundle.cpp
+++ b/intl/strres/src/nsStringBundle.cpp
@@ -172,7 +172,7 @@ nsStringBundle::FormatStringFromName(const char16_t *aName,
 }
 
 
-NS_IMPL_ISUPPORTS1(nsStringBundle, nsIStringBundle)
+NS_IMPL_ISUPPORTS(nsStringBundle, nsIStringBundle)
 
 /* void GetStringFromID (in long aID, out wstring aResult); */
 NS_IMETHODIMP
@@ -350,7 +350,7 @@ nsStringBundle::FormatString(const char16_t *aFormatStr,
   return *aResult ? NS_OK : NS_ERROR_OUT_OF_MEMORY;
 }
 
-NS_IMPL_ISUPPORTS1(nsExtensibleStringBundle, nsIStringBundle)
+NS_IMPL_ISUPPORTS(nsExtensibleStringBundle, nsIStringBundle)
 
 nsExtensibleStringBundle::nsExtensibleStringBundle()
 {
@@ -495,10 +495,10 @@ nsStringBundleService::nsStringBundleService() :
   NS_ASSERTION(mErrorService, "Couldn't get error service");
 }
 
-NS_IMPL_ISUPPORTS3(nsStringBundleService,
-                   nsIStringBundleService,
-                   nsIObserver,
-                   nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(nsStringBundleService,
+                  nsIStringBundleService,
+                  nsIObserver,
+                  nsISupportsWeakReference)
 
 nsStringBundleService::~nsStringBundleService()
 {
diff --git a/intl/strres/src/nsStringBundleTextOverride.cpp b/intl/strres/src/nsStringBundleTextOverride.cpp
index e14d32f4cf3d271edf091d42b9b91a50f99dfa91..1f2366a96910d949e1abb5eed1e7112ffcf4dfce 100644
--- a/intl/strres/src/nsStringBundleTextOverride.cpp
+++ b/intl/strres/src/nsStringBundleTextOverride.cpp
@@ -29,7 +29,7 @@ private:
     uint32_t mURLLength;
 };
 
-NS_IMPL_ISUPPORTS1(URLPropertyElement, nsIPropertyElement)
+NS_IMPL_ISUPPORTS(URLPropertyElement, nsIPropertyElement)
 
 // we'll tweak the key on the way through, and remove the url prefix
 NS_IMETHODIMP
@@ -107,8 +107,8 @@ private:
 //
 // nsStringBundleTextOverride implementation
 //
-NS_IMPL_ISUPPORTS1(nsStringBundleTextOverride,
-                   nsIStringBundleOverride)
+NS_IMPL_ISUPPORTS(nsStringBundleTextOverride,
+                  nsIStringBundleOverride)
 
 nsresult
 nsStringBundleTextOverride::Init()
@@ -225,7 +225,7 @@ nsStringBundleTextOverride::EnumerateKeysInBundle(const nsACString& aURL,
 //
 
 
-NS_IMPL_ISUPPORTS1(nsPropertyEnumeratorByURL, nsISimpleEnumerator)
+NS_IMPL_ISUPPORTS(nsPropertyEnumeratorByURL, nsISimpleEnumerator)
 
 NS_IMETHODIMP
 nsPropertyEnumeratorByURL::GetNext(nsISupports **aResult)
diff --git a/intl/uconv/src/nsCharsetConverterManager.cpp b/intl/uconv/src/nsCharsetConverterManager.cpp
index 829ffa5395e9424fdfe52c30caa2e458eb3d433f..48fa2563518d55e0deca00f9ba05cd0d1ca9dfe4 100644
--- a/intl/uconv/src/nsCharsetConverterManager.cpp
+++ b/intl/uconv/src/nsCharsetConverterManager.cpp
@@ -27,7 +27,7 @@ static nsIStringBundle * sTitleBundle;
 
 // Class nsCharsetConverterManager [implementation]
 
-NS_IMPL_ISUPPORTS1(nsCharsetConverterManager, nsICharsetConverterManager)
+NS_IMPL_ISUPPORTS(nsCharsetConverterManager, nsICharsetConverterManager)
 
 nsCharsetConverterManager::nsCharsetConverterManager() 
 {
diff --git a/intl/uconv/src/nsConverterInputStream.cpp b/intl/uconv/src/nsConverterInputStream.cpp
index 0953f41cc0a57e305e38ee96da6b1fca56bc15b8..6c0ec381286eccce64fc1c89247c19ee51c3a807 100644
--- a/intl/uconv/src/nsConverterInputStream.cpp
+++ b/intl/uconv/src/nsConverterInputStream.cpp
@@ -13,8 +13,8 @@
 
 #define CONVERTER_BUFFER_SIZE 8192
 
-NS_IMPL_ISUPPORTS3(nsConverterInputStream, nsIConverterInputStream,
-                   nsIUnicharInputStream, nsIUnicharLineInputStream)
+NS_IMPL_ISUPPORTS(nsConverterInputStream, nsIConverterInputStream,
+                  nsIUnicharInputStream, nsIUnicharLineInputStream)
 
 
 NS_IMETHODIMP
diff --git a/intl/uconv/src/nsConverterOutputStream.cpp b/intl/uconv/src/nsConverterOutputStream.cpp
index a627df6ce93eb4ac069eb1af8beafcc007cd3a2f..e76c6d6ac618a76cb0a8bf37cffe9c7a15ee639c 100644
--- a/intl/uconv/src/nsConverterOutputStream.cpp
+++ b/intl/uconv/src/nsConverterOutputStream.cpp
@@ -11,9 +11,9 @@
 #include "nsConverterOutputStream.h"
 #include "nsServiceManagerUtils.h"
 
-NS_IMPL_ISUPPORTS2(nsConverterOutputStream,
-                   nsIUnicharOutputStream,
-                   nsIConverterOutputStream)
+NS_IMPL_ISUPPORTS(nsConverterOutputStream,
+                  nsIUnicharOutputStream,
+                  nsIConverterOutputStream)
 
 nsConverterOutputStream::~nsConverterOutputStream()
 {
diff --git a/intl/uconv/src/nsScriptableUConv.cpp b/intl/uconv/src/nsScriptableUConv.cpp
index c3cf2b0ed2e1937be49096580ea276f02fb200ba..6a4944ef6ffb18cef727e27581b1199ab434f214 100644
--- a/intl/uconv/src/nsScriptableUConv.cpp
+++ b/intl/uconv/src/nsScriptableUConv.cpp
@@ -13,7 +13,7 @@
 #include "nsServiceManagerUtils.h"
 
 /* Implementation file */
-NS_IMPL_ISUPPORTS1(nsScriptableUnicodeConverter, nsIScriptableUnicodeConverter)
+NS_IMPL_ISUPPORTS(nsScriptableUnicodeConverter, nsIScriptableUnicodeConverter)
 
 nsScriptableUnicodeConverter::nsScriptableUnicodeConverter()
 : mIsInternal(false)
diff --git a/intl/uconv/src/nsTextToSubURI.cpp b/intl/uconv/src/nsTextToSubURI.cpp
index a90155a5329d42ffb91f0bd8f9a7c087d0629d85..941c477c0fe1a3119b572ea50db0ad787b008ef0 100644
--- a/intl/uconv/src/nsTextToSubURI.cpp
+++ b/intl/uconv/src/nsTextToSubURI.cpp
@@ -20,7 +20,7 @@ nsTextToSubURI::~nsTextToSubURI()
 {
 }
 
-NS_IMPL_ISUPPORTS1(nsTextToSubURI, nsITextToSubURI)
+NS_IMPL_ISUPPORTS(nsTextToSubURI, nsITextToSubURI)
 
 NS_IMETHODIMP  nsTextToSubURI::ConvertAndEscape(
   const char *charset, const char16_t *text, char **_retval) 
diff --git a/intl/uconv/src/nsUTF8ConverterService.cpp b/intl/uconv/src/nsUTF8ConverterService.cpp
index 48938ec66b1f6bb042bb13b722f283047baec933..42b0c140fd821f0586f45a8bcde32b9f1a07a5e8 100644
--- a/intl/uconv/src/nsUTF8ConverterService.cpp
+++ b/intl/uconv/src/nsUTF8ConverterService.cpp
@@ -11,7 +11,7 @@
 #include "nsAutoPtr.h"
 #include "nsServiceManagerUtils.h"
 
-NS_IMPL_ISUPPORTS1(nsUTF8ConverterService, nsIUTF8ConverterService)
+NS_IMPL_ISUPPORTS(nsUTF8ConverterService, nsIUTF8ConverterService)
 
 static nsresult 
 ToUTF8(const nsACString &aString, const char *aCharset,
diff --git a/intl/uconv/src/nsUnicodeToUTF8.cpp b/intl/uconv/src/nsUnicodeToUTF8.cpp
index 6b41916e0aedcaac2d3b727776e2fdd0095a55ba..57058b71f7f1835506c5143aaab0607a678dbaa6 100644
--- a/intl/uconv/src/nsUnicodeToUTF8.cpp
+++ b/intl/uconv/src/nsUnicodeToUTF8.cpp
@@ -7,7 +7,7 @@
 // Global functions and data [declaration]
 #include "nsUnicodeToUTF8.h"
 
-NS_IMPL_ISUPPORTS1(nsUnicodeToUTF8, nsIUnicodeEncoder)
+NS_IMPL_ISUPPORTS(nsUnicodeToUTF8, nsIUnicodeEncoder)
 
 //----------------------------------------------------------------------
 // nsUnicodeToUTF8 class [implementation]
diff --git a/intl/uconv/util/nsUCSupport.cpp b/intl/uconv/util/nsUCSupport.cpp
index c17975970cf448ca6880de8cb2ad1a47577e653b..dd666d50c95c337e5c7a2c288673a1dfa1c6b36e 100644
--- a/intl/uconv/util/nsUCSupport.cpp
+++ b/intl/uconv/util/nsUCSupport.cpp
@@ -28,11 +28,11 @@ nsBasicDecoderSupport::~nsBasicDecoderSupport()
 // Interface nsISupports [implementation]
 
 #ifdef DEBUG
-NS_IMPL_ISUPPORTS2(nsBasicDecoderSupport,
-                   nsIUnicodeDecoder,
-                   nsIBasicDecoder)
+NS_IMPL_ISUPPORTS(nsBasicDecoderSupport,
+                  nsIUnicodeDecoder,
+                  nsIBasicDecoder)
 #else
-NS_IMPL_ISUPPORTS1(nsBasicDecoderSupport, nsIUnicodeDecoder)
+NS_IMPL_ISUPPORTS(nsBasicDecoderSupport, nsIUnicodeDecoder)
 #endif
 
 //----------------------------------------------------------------------
@@ -332,12 +332,12 @@ nsBasicEncoder::~nsBasicEncoder()
 NS_IMPL_ADDREF(nsBasicEncoder)
 NS_IMPL_RELEASE(nsBasicEncoder)
 #ifdef DEBUG
-NS_IMPL_QUERY_INTERFACE2(nsBasicEncoder,
-                         nsIUnicodeEncoder,
-                         nsIBasicEncoder)
+NS_IMPL_QUERY_INTERFACE(nsBasicEncoder,
+                        nsIUnicodeEncoder,
+                        nsIBasicEncoder)
 #else
-NS_IMPL_QUERY_INTERFACE1(nsBasicEncoder,
-                         nsIUnicodeEncoder)
+NS_IMPL_QUERY_INTERFACE(nsBasicEncoder,
+                        nsIUnicodeEncoder)
 #endif
 //----------------------------------------------------------------------
 // Class nsEncoderSupport [implementation]
diff --git a/intl/unicharutil/src/nsCaseConversionImp2.cpp b/intl/unicharutil/src/nsCaseConversionImp2.cpp
index f2dbd92134d4a877b0a07de55f150c95d2f279b8..61750213742da69e23d4dc102416fc624ef0b4b8 100644
--- a/intl/unicharutil/src/nsCaseConversionImp2.cpp
+++ b/intl/unicharutil/src/nsCaseConversionImp2.cpp
@@ -16,7 +16,7 @@ NS_IMETHODIMP_(MozExternalRefCountType) nsCaseConversionImp2::Release(void)
   return (MozExternalRefCountType)1;
 }
 
-NS_IMPL_QUERY_INTERFACE1(nsCaseConversionImp2, nsICaseConversion)
+NS_IMPL_QUERY_INTERFACE(nsCaseConversionImp2, nsICaseConversion)
 
 NS_IMETHODIMP nsCaseConversionImp2::ToUpper(char16_t aChar, char16_t* aReturn)
 {
diff --git a/intl/unicharutil/src/nsCategoryImp.cpp b/intl/unicharutil/src/nsCategoryImp.cpp
index a2d7a9705ab8be98413561edd46354d392254ff3..7d8c551401edb89b0ec7c2cdf51597750ebd7183 100644
--- a/intl/unicharutil/src/nsCategoryImp.cpp
+++ b/intl/unicharutil/src/nsCategoryImp.cpp
@@ -8,7 +8,7 @@
 #include "nsCategoryImp.h"
 #include "nsUnicodeProperties.h"
 
-NS_IMPL_QUERY_INTERFACE1(nsCategoryImp, nsIUGenCategory)
+NS_IMPL_QUERY_INTERFACE(nsCategoryImp, nsIUGenCategory)
 
 NS_IMETHODIMP_(MozExternalRefCountType) nsCategoryImp::AddRef(void)
 {
diff --git a/intl/unicharutil/src/nsEntityConverter.cpp b/intl/unicharutil/src/nsEntityConverter.cpp
index 4821bb789ef148536c653a2ad72369e2f44bf9a9..d918d31e5edfe1618b1884330c2fbb1809a3aaca 100644
--- a/intl/unicharutil/src/nsEntityConverter.cpp
+++ b/intl/unicharutil/src/nsEntityConverter.cpp
@@ -135,7 +135,7 @@ nsEntityConverter:: GetVersionBundleInstance(uint32_t versionNumber)
 //
 // nsISupports methods
 //
-NS_IMPL_ISUPPORTS1(nsEntityConverter,nsIEntityConverter)
+NS_IMPL_ISUPPORTS(nsEntityConverter,nsIEntityConverter)
 
 
 //
diff --git a/intl/unicharutil/src/nsSaveAsCharset.cpp b/intl/unicharutil/src/nsSaveAsCharset.cpp
index 2895d118da502c74a38abf84c9dd05226d78dcab..602b722a0dd40b68a0f404d22d09965a5172a0c6 100644
--- a/intl/unicharutil/src/nsSaveAsCharset.cpp
+++ b/intl/unicharutil/src/nsSaveAsCharset.cpp
@@ -15,7 +15,7 @@
 //
 // nsISupports methods
 //
-NS_IMPL_ISUPPORTS1(nsSaveAsCharset, nsISaveAsCharset)
+NS_IMPL_ISUPPORTS(nsSaveAsCharset, nsISaveAsCharset)
 
 //
 // nsSaveAsCharset
diff --git a/intl/unicharutil/src/nsUnicodeNormalizer.cpp b/intl/unicharutil/src/nsUnicodeNormalizer.cpp
index 87626a11e20ef23051c5056119b6cec555cf6647..f8f4ca6b379fe4bc70204adda0524565fa885454 100644
--- a/intl/unicharutil/src/nsUnicodeNormalizer.cpp
+++ b/intl/unicharutil/src/nsUnicodeNormalizer.cpp
@@ -57,7 +57,7 @@
 #include "nsUnicodeNormalizer.h"
 #include "nsString.h"
 
-NS_IMPL_ISUPPORTS1(nsUnicodeNormalizer, nsIUnicodeNormalizer)
+NS_IMPL_ISUPPORTS(nsUnicodeNormalizer, nsIUnicodeNormalizer)
 
 
 nsUnicodeNormalizer::nsUnicodeNormalizer()
diff --git a/ipc/glue/BackgroundImpl.cpp b/ipc/glue/BackgroundImpl.cpp
index 5bb3c8d70cc93dfcb0f815f49c99e042252e3899..22ca3e5379c4273b17d8a82cb4b8a162ef990880 100644
--- a/ipc/glue/BackgroundImpl.cpp
+++ b/ipc/glue/BackgroundImpl.cpp
@@ -1295,7 +1295,7 @@ ParentImpl::ActorDestroy(ActorDestroyReason aWhy)
   MOZ_ALWAYS_TRUE(NS_SUCCEEDED(NS_DispatchToCurrentThread(destroyRunnable)));
 }
 
-NS_IMPL_ISUPPORTS1(ParentImpl::ShutdownObserver, nsIObserver)
+NS_IMPL_ISUPPORTS(ParentImpl::ShutdownObserver, nsIObserver)
 
 NS_IMETHODIMP
 ParentImpl::ShutdownObserver::Observe(nsISupports* aSubject,
@@ -1947,7 +1947,7 @@ ChildImpl::ActorDestroy(ActorDestroyReason aWhy)
   BackgroundChildImpl::ActorDestroy(aWhy);
 }
 
-NS_IMPL_ISUPPORTS1(ChildImpl::ShutdownObserver, nsIObserver)
+NS_IMPL_ISUPPORTS(ChildImpl::ShutdownObserver, nsIObserver)
 
 NS_IMETHODIMP
 ChildImpl::ShutdownObserver::Observe(nsISupports* aSubject,
diff --git a/ipc/glue/FileDescriptorUtils.cpp b/ipc/glue/FileDescriptorUtils.cpp
index 0623ba1514851c1184657cffd7813460cadbd6e5..3762fa0db83941eea6d08a61617cf683ab27cb84 100644
--- a/ipc/glue/FileDescriptorUtils.cpp
+++ b/ipc/glue/FileDescriptorUtils.cpp
@@ -35,7 +35,7 @@ CloseFileRunnable::~CloseFileRunnable()
   }
 }
 
-NS_IMPL_ISUPPORTS1(CloseFileRunnable, nsIRunnable)
+NS_IMPL_ISUPPORTS(CloseFileRunnable, nsIRunnable)
 
 void
 CloseFileRunnable::Dispatch()
diff --git a/ipc/glue/MessagePump.cpp b/ipc/glue/MessagePump.cpp
index 306dd175fa326c45a87becd04e4fe2a60c25e00f..ab9ed72a3ee524f7c368cc48954739865cd12273 100644
--- a/ipc/glue/MessagePump.cpp
+++ b/ipc/glue/MessagePump.cpp
@@ -211,7 +211,7 @@ MessagePump::DoDelayedWork(base::MessagePump::Delegate* aDelegate)
   }
 }
 
-NS_IMPL_ISUPPORTS2(DoWorkRunnable, nsIRunnable, nsITimerCallback)
+NS_IMPL_ISUPPORTS(DoWorkRunnable, nsIRunnable, nsITimerCallback)
 
 NS_IMETHODIMP
 DoWorkRunnable::Run()
diff --git a/ipc/glue/SharedMemory.cpp b/ipc/glue/SharedMemory.cpp
index f3c55928953b10d1300a49f2ad375ec00a8215c4..2d574885a2b37d479b708d59a5205f908962f66e 100644
--- a/ipc/glue/SharedMemory.cpp
+++ b/ipc/glue/SharedMemory.cpp
@@ -42,7 +42,7 @@ public:
   }
 };
 
-NS_IMPL_ISUPPORTS1(ShmemReporter, nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(ShmemReporter, nsIMemoryReporter)
 
 SharedMemory::SharedMemory()
   : mAllocSize(0)
diff --git a/ipc/testshell/XPCShellEnvironment.cpp b/ipc/testshell/XPCShellEnvironment.cpp
index f0f8fae4a6bdb7f6ff3c8011992b2689e458e2f2..c1b8bcf8027aae821269abe6147506a0b3ccd7e0 100644
--- a/ipc/testshell/XPCShellEnvironment.cpp
+++ b/ipc/testshell/XPCShellEnvironment.cpp
@@ -409,7 +409,7 @@ XPCShellDirProvider::Release()
     return 1;
 }
 
-NS_IMPL_QUERY_INTERFACE1(XPCShellDirProvider, nsIDirectoryServiceProvider)
+NS_IMPL_QUERY_INTERFACE(XPCShellDirProvider, nsIDirectoryServiceProvider)
 
 bool
 XPCShellDirProvider::SetGREDir(const char *dir)
diff --git a/js/ductwork/debugger/JSDebugger.cpp b/js/ductwork/debugger/JSDebugger.cpp
index 68b11065a0d00926a6d7ef2e1e814f0773ad2486..5a3bc6057703f224595d2964e9f7c67732fe2b8c 100644
--- a/js/ductwork/debugger/JSDebugger.cpp
+++ b/js/ductwork/debugger/JSDebugger.cpp
@@ -25,7 +25,7 @@ namespace jsdebugger {
 
 NS_GENERIC_FACTORY_CONSTRUCTOR(JSDebugger)
 
-NS_IMPL_ISUPPORTS1(JSDebugger, IJSDebugger)
+NS_IMPL_ISUPPORTS(JSDebugger, IJSDebugger)
 
 JSDebugger::JSDebugger()
 {
diff --git a/js/jsd/jsd_xpc.cpp b/js/jsd/jsd_xpc.cpp
index 1381222ad3f81a8bf2e1605d6f6cae46f4746870..b66b762639eb7d19821b23009e4a759f5ef340bf 100644
--- a/js/jsd/jsd_xpc.cpp
+++ b/js/jsd/jsd_xpc.cpp
@@ -743,7 +743,7 @@ jsds_ScriptHookProc (JSDContext* jsdc, JSDScript* jsdscript, bool creating,
 
 /* Contexts */
 /*
-NS_IMPL_ISUPPORTS2(jsdContext, jsdIContext, jsdIEphemeral);
+NS_IMPL_ISUPPORTS(jsdContext, jsdIContext, jsdIEphemeral);
 
 NS_IMETHODIMP
 jsdContext::GetJSDContext(JSDContext **_rval)
@@ -754,7 +754,7 @@ jsdContext::GetJSDContext(JSDContext **_rval)
 */
 
 /* Objects */
-NS_IMPL_ISUPPORTS1(jsdObject, jsdIObject)
+NS_IMPL_ISUPPORTS(jsdObject, jsdIObject)
 
 NS_IMETHODIMP
 jsdObject::GetJSDContext(JSDContext **_rval)
@@ -808,7 +808,7 @@ jsdObject::GetValue(jsdIValue **_rval)
 }
 
 /* Properties */
-NS_IMPL_ISUPPORTS2(jsdProperty, jsdIProperty, jsdIEphemeral)
+NS_IMPL_ISUPPORTS(jsdProperty, jsdIProperty, jsdIEphemeral)
 
 jsdProperty::jsdProperty (JSDContext *aCx, JSDProperty *aProperty) :
     mCx(aCx), mProperty(aProperty)
@@ -899,7 +899,7 @@ jsdProperty::GetValue(jsdIValue **_rval)
 }
 
 /* Scripts */
-NS_IMPL_ISUPPORTS2(jsdScript, jsdIScript, jsdIEphemeral)
+NS_IMPL_ISUPPORTS(jsdScript, jsdIScript, jsdIEphemeral)
 
 static NS_IMETHODIMP
 AssignToJSString(JSDContext *aCx, nsACString *x, JSString *str_)
@@ -1564,7 +1564,7 @@ jsdScript::ClearAllBreakpoints()
 }
 
 /* Contexts */
-NS_IMPL_ISUPPORTS2(jsdContext, jsdIContext, jsdIEphemeral)
+NS_IMPL_ISUPPORTS(jsdContext, jsdIContext, jsdIEphemeral)
 
 jsdIContext *
 jsdContext::FromPtr (JSDContext *aJSDCx, JSContext *aJSCx)
@@ -1785,7 +1785,7 @@ jsdContext::SetScriptsEnabled (bool _rval)
 }
 
 /* Stack Frames */
-NS_IMPL_ISUPPORTS2(jsdStackFrame, jsdIStackFrame, jsdIEphemeral)
+NS_IMPL_ISUPPORTS(jsdStackFrame, jsdIStackFrame, jsdIEphemeral)
 
 jsdStackFrame::jsdStackFrame (JSDContext *aCx, JSDThreadState *aThreadState,
                               JSDStackFrameInfo *aStackFrameInfo) :
@@ -2057,7 +2057,7 @@ jsdStackFrame::Eval (const nsAString &bytes, const nsACString &fileName,
 }        
 
 /* Values */
-NS_IMPL_ISUPPORTS2(jsdValue, jsdIValue, jsdIEphemeral)
+NS_IMPL_ISUPPORTS(jsdValue, jsdIValue, jsdIEphemeral)
 jsdIValue *
 jsdValue::FromPtr (JSDContext *aCx, JSDValue *aValue)
 {
@@ -3338,7 +3338,7 @@ class jsdASObserver MOZ_FINAL : public nsIObserver
     jsdASObserver () {}    
 };
 
-NS_IMPL_ISUPPORTS1(jsdASObserver, nsIObserver)
+NS_IMPL_ISUPPORTS(jsdASObserver, nsIObserver)
 
 NS_IMETHODIMP
 jsdASObserver::Observe (nsISupports *aSubject, const char *aTopic,
@@ -3436,7 +3436,7 @@ CreateJSDGlobal(JSContext *aCx, const JSClass *aClasp)
 
 #if 0
 /* Thread States */
-NS_IMPL_ISUPPORTS1(jsdThreadState, jsdIThreadState); 
+NS_IMPL_ISUPPORTS(jsdThreadState, jsdIThreadState); 
 
 NS_IMETHODIMP
 jsdThreadState::GetJSDContext(JSDContext **_rval)
diff --git a/js/xpconnect/loader/mozJSComponentLoader.cpp b/js/xpconnect/loader/mozJSComponentLoader.cpp
index 1bd6b798a4bcbd9e17cdf33eb0198ffbc025f151..4b5b9ecc5f7c3adbbe1126e42e90d33364891733 100644
--- a/js/xpconnect/loader/mozJSComponentLoader.cpp
+++ b/js/xpconnect/loader/mozJSComponentLoader.cpp
@@ -337,10 +337,10 @@ mozJSComponentLoader::~mozJSComponentLoader()
 mozJSComponentLoader*
 mozJSComponentLoader::sSelf;
 
-NS_IMPL_ISUPPORTS3(mozJSComponentLoader,
-                   mozilla::ModuleLoader,
-                   xpcIJSModuleLoader,
-                   nsIObserver)
+NS_IMPL_ISUPPORTS(mozJSComponentLoader,
+                  mozilla::ModuleLoader,
+                  xpcIJSModuleLoader,
+                  nsIObserver)
 
 nsresult
 mozJSComponentLoader::ReallyInit()
diff --git a/js/xpconnect/loader/mozJSSubScriptLoader.cpp b/js/xpconnect/loader/mozJSSubScriptLoader.cpp
index f4a28a1b89ead6dd82f5af2d51fa9a37f480c65f..f7f3a383133443dcc305385d784448a444412d42 100644
--- a/js/xpconnect/loader/mozJSSubScriptLoader.cpp
+++ b/js/xpconnect/loader/mozJSSubScriptLoader.cpp
@@ -84,7 +84,7 @@ mozJSSubScriptLoader::~mozJSSubScriptLoader()
     /* empty */
 }
 
-NS_IMPL_ISUPPORTS1(mozJSSubScriptLoader, mozIJSSubScriptLoader)
+NS_IMPL_ISUPPORTS(mozJSSubScriptLoader, mozIJSSubScriptLoader)
 
 static nsresult
 ReportError(JSContext *cx, const char *msg)
@@ -411,7 +411,7 @@ private:
     size_t mScriptLength;
 };
 
-NS_IMPL_ISUPPORTS1(ScriptPrecompiler, nsIStreamLoaderObserver);
+NS_IMPL_ISUPPORTS(ScriptPrecompiler, nsIStreamLoaderObserver);
 
 class NotifyPrecompilationCompleteRunnable : public nsRunnable
 {
diff --git a/js/xpconnect/src/Sandbox.cpp b/js/xpconnect/src/Sandbox.cpp
index a73afb9af7a2a2b5109e52a42f81afca14182e0d..6ccbe373d46bc3f4b5d9f3ef973db2d8a9388bd8 100644
--- a/js/xpconnect/src/Sandbox.cpp
+++ b/js/xpconnect/src/Sandbox.cpp
@@ -1642,7 +1642,7 @@ private:
     nsCOMPtr<nsIPrincipal> mPrincipal;
 };
 
-NS_IMPL_ISUPPORTS1(ContextHolder, nsIScriptObjectPrincipal)
+NS_IMPL_ISUPPORTS(ContextHolder, nsIScriptObjectPrincipal)
 
 ContextHolder::ContextHolder(JSContext *aOuterCx,
                              HandleObject aSandbox,
diff --git a/js/xpconnect/src/XPCComponents.cpp b/js/xpconnect/src/XPCComponents.cpp
index 3657c46773961a70225a98788e8cec7c88000931..e794e2eda478044ec8475c68e3edb10f7039f997 100644
--- a/js/xpconnect/src/XPCComponents.cpp
+++ b/js/xpconnect/src/XPCComponents.cpp
@@ -3816,7 +3816,7 @@ NS_INTERFACE_MAP_END
     { 0xae, 0xb0, 0xaf, 0x9a, 0x51, 0xe4, 0x4c, 0x81 } }
 
 NS_IMPL_CLASSINFO(nsXPCComponentsBase, &ComponentsSH::Get, nsIClassInfo::DOM_OBJECT, NSXPCCOMPONENTSBASE_CID)
-NS_IMPL_ISUPPORTS1_CI(nsXPCComponentsBase, nsIXPCComponentsBase)
+NS_IMPL_ISUPPORTS_CI(nsXPCComponentsBase, nsIXPCComponentsBase)
 
 NS_IMPL_CLASSINFO(nsXPCComponents, &ComponentsSH::Get, nsIClassInfo::DOM_OBJECT, NSXPCCOMPONENTS_CID)
 // Below is more or less what NS_IMPL_ISUPPORTS_CI_INHERITED1 would look like
@@ -3827,7 +3827,7 @@ NS_INTERFACE_MAP_BEGIN(nsXPCComponents)
     NS_INTERFACE_MAP_ENTRY(nsIXPCComponents)
     NS_IMPL_QUERY_CLASSINFO(nsXPCComponents)
 NS_INTERFACE_MAP_END_INHERITING(nsXPCComponentsBase)
-NS_IMPL_CI_INTERFACE_GETTER1(nsXPCComponents, nsIXPCComponents)
+NS_IMPL_CI_INTERFACE_GETTER(nsXPCComponents, nsIXPCComponents)
 
 // The nsIXPCScriptable map declaration that will generate stubs for us
 #define XPC_MAP_CLASSNAME           ComponentsSH
diff --git a/js/xpconnect/src/XPCJSID.cpp b/js/xpconnect/src/XPCJSID.cpp
index 6129974439cd19c93df4499759c98b0859001eb5..5ed50acf3076da1c3776f10ec2e47397fdb0cfdb 100644
--- a/js/xpconnect/src/XPCJSID.cpp
+++ b/js/xpconnect/src/XPCJSID.cpp
@@ -19,7 +19,7 @@ using namespace JS;
 // nsJSID
 
 NS_IMPL_CLASSINFO(nsJSID, nullptr, 0, NS_JS_ID_CID)
-NS_IMPL_ISUPPORTS1_CI(nsJSID, nsIJSID)
+NS_IMPL_ISUPPORTS_CI(nsJSID, nsIJSID)
 
 char nsJSID::gNoString[] = "";
 
@@ -287,7 +287,7 @@ NS_INTERFACE_MAP_END
 
 NS_IMPL_ADDREF(nsJSIID)
 NS_IMPL_RELEASE(nsJSIID)
-NS_IMPL_CI_INTERFACE_GETTER2(nsJSIID, nsIJSID, nsIJSIID)
+NS_IMPL_CI_INTERFACE_GETTER(nsJSIID, nsIJSID, nsIJSIID)
 
 // The nsIXPCScriptable map declaration that will generate stubs for us...
 #define XPC_MAP_CLASSNAME           nsJSIID
@@ -567,7 +567,7 @@ NS_INTERFACE_MAP_END
 
 NS_IMPL_ADDREF(nsJSCID)
 NS_IMPL_RELEASE(nsJSCID)
-NS_IMPL_CI_INTERFACE_GETTER2(nsJSCID, nsIJSID, nsIJSCID)
+NS_IMPL_CI_INTERFACE_GETTER(nsJSCID, nsIJSID, nsIJSCID)
 
 // The nsIXPCScriptable map declaration that will generate stubs for us...
 #define XPC_MAP_CLASSNAME           nsJSCID
diff --git a/js/xpconnect/src/XPCJSRuntime.cpp b/js/xpconnect/src/XPCJSRuntime.cpp
index 36a3976a8fd471ff1589ddc6ddc2fb2b6575cfc4..532366ca9db5dd652e24802fcd7c7bc628aaf9b7 100644
--- a/js/xpconnect/src/XPCJSRuntime.cpp
+++ b/js/xpconnect/src/XPCJSRuntime.cpp
@@ -1258,7 +1258,7 @@ class WatchdogManager : public nsIObserver
     PRTime mTimestamps[TimestampCount];
 };
 
-NS_IMPL_ISUPPORTS1(WatchdogManager, nsIObserver)
+NS_IMPL_ISUPPORTS(WatchdogManager, nsIObserver)
 
 AutoLockWatchdog::AutoLockWatchdog(Watchdog *aWatchdog) : mWatchdog(aWatchdog)
 {
@@ -1740,7 +1740,7 @@ class JSMainRuntimeTemporaryPeakReporter MOZ_FINAL : public nsIMemoryReporter
     }
 };
 
-NS_IMPL_ISUPPORTS1(JSMainRuntimeTemporaryPeakReporter, nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(JSMainRuntimeTemporaryPeakReporter, nsIMemoryReporter)
 
 // The REPORT* macros do an unconditional report.  The ZCREPORT* macros are for
 // compartments and zones; they aggregate any entries smaller than
@@ -2516,7 +2516,7 @@ class JSMainRuntimeCompartmentsReporter MOZ_FINAL : public nsIMemoryReporter
     }
 };
 
-NS_IMPL_ISUPPORTS1(JSMainRuntimeCompartmentsReporter, nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(JSMainRuntimeCompartmentsReporter, nsIMemoryReporter)
 
 MOZ_DEFINE_MALLOC_SIZE_OF(OrphanMallocSizeOf)
 
diff --git a/js/xpconnect/src/XPCJSWeakReference.cpp b/js/xpconnect/src/XPCJSWeakReference.cpp
index 5e119e2b559cafaa2c11fa602d0900fd4631e370..ffa63459eaa6092d8e3a04647aa6653cf8f473bd 100644
--- a/js/xpconnect/src/XPCJSWeakReference.cpp
+++ b/js/xpconnect/src/XPCJSWeakReference.cpp
@@ -15,7 +15,7 @@ xpcJSWeakReference::xpcJSWeakReference()
 {
 }
 
-NS_IMPL_ISUPPORTS1(xpcJSWeakReference, xpcIJSWeakReference)
+NS_IMPL_ISUPPORTS(xpcJSWeakReference, xpcIJSWeakReference)
 
 nsresult xpcJSWeakReference::Init(JSContext* cx, const JS::Value& object)
 {
diff --git a/js/xpconnect/src/XPCShellImpl.cpp b/js/xpconnect/src/XPCShellImpl.cpp
index 35d8ee747c7185ab3a2abb183008691a238ddaea..fc99fdc9e52c05baea3d68312db6ac194d452f0b 100644
--- a/js/xpconnect/src/XPCShellImpl.cpp
+++ b/js/xpconnect/src/XPCShellImpl.cpp
@@ -1207,7 +1207,7 @@ public:
     TestGlobal(){}
 };
 
-NS_IMPL_ISUPPORTS2(TestGlobal, nsIXPCTestNoisy, nsIXPCScriptable)
+NS_IMPL_ISUPPORTS(TestGlobal, nsIXPCTestNoisy, nsIXPCScriptable)
 
 // The nsIXPCScriptable map declaration that will generate stubs for us...
 #define XPC_MAP_CLASSNAME           TestGlobal
@@ -1240,7 +1240,7 @@ public:
 };
 
 /* Implementation file */
-NS_IMPL_ISUPPORTS1(nsXPCFunctionThisTranslator, nsIXPCFunctionThisTranslator)
+NS_IMPL_ISUPPORTS(nsXPCFunctionThisTranslator, nsIXPCFunctionThisTranslator)
 
 nsXPCFunctionThisTranslator::nsXPCFunctionThisTranslator()
 {
@@ -1668,9 +1668,9 @@ XPCShellDirProvider::Release()
     return 1;
 }
 
-NS_IMPL_QUERY_INTERFACE2(XPCShellDirProvider,
-                         nsIDirectoryServiceProvider,
-                         nsIDirectoryServiceProvider2)
+NS_IMPL_QUERY_INTERFACE(XPCShellDirProvider,
+                        nsIDirectoryServiceProvider,
+                        nsIDirectoryServiceProvider2)
 
 NS_IMETHODIMP
 XPCShellDirProvider::GetFile(const char *prop, bool *persistent,
diff --git a/js/xpconnect/src/XPCVariant.cpp b/js/xpconnect/src/XPCVariant.cpp
index c804f49901a556ed3c8addb6e8ac83e303382024..29f97406148cc6f75bf408f47ce71770122a0f24 100644
--- a/js/xpconnect/src/XPCVariant.cpp
+++ b/js/xpconnect/src/XPCVariant.cpp
@@ -23,7 +23,7 @@ NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(XPCVariant)
   NS_INTERFACE_MAP_ENTRY(nsISupports)
   NS_IMPL_QUERY_CLASSINFO(XPCVariant)
 NS_INTERFACE_MAP_END
-NS_IMPL_CI_INTERFACE_GETTER2(XPCVariant, XPCVariant, nsIVariant)
+NS_IMPL_CI_INTERFACE_GETTER(XPCVariant, XPCVariant, nsIVariant)
 
 NS_IMPL_CYCLE_COLLECTING_ADDREF(XPCVariant)
 NS_IMPL_CYCLE_COLLECTING_RELEASE(XPCVariant)
diff --git a/js/xpconnect/src/XPCWrappedJSClass.cpp b/js/xpconnect/src/XPCWrappedJSClass.cpp
index acc6e8943c7e1c8bc9d1cb93922c8b0d0ddc4ba4..5f770e658c231b7293a556daeacb9e86080dfe5e 100644
--- a/js/xpconnect/src/XPCWrappedJSClass.cpp
+++ b/js/xpconnect/src/XPCWrappedJSClass.cpp
@@ -25,7 +25,7 @@ using namespace xpc;
 using namespace JS;
 using namespace mozilla;
 
-NS_IMPL_ISUPPORTS1(nsXPCWrappedJSClass, nsIXPCWrappedJSClass)
+NS_IMPL_ISUPPORTS(nsXPCWrappedJSClass, nsIXPCWrappedJSClass)
 
 // the value of this variable is never used - we use its address as a sentinel
 static uint32_t zero_methods_descriptor;
@@ -382,7 +382,7 @@ nsXPCWrappedJSClass::BuildPropertyEnumerator(XPCCallContext& ccx,
 
 /***************************************************************************/
 
-NS_IMPL_ISUPPORTS1(xpcProperty, nsIProperty)
+NS_IMPL_ISUPPORTS(xpcProperty, nsIProperty)
 
 xpcProperty::xpcProperty(const char16_t* aName, uint32_t aNameLen,
                          nsIVariant* aValue)
diff --git a/js/xpconnect/src/XPCWrappedNative.cpp b/js/xpconnect/src/XPCWrappedNative.cpp
index c07417e2153e81d3e4f198c55f7b5c87b3a87504..7ad3f07642ef28065ee280aa6d0030e44f697ae1 100644
--- a/js/xpconnect/src/XPCWrappedNative.cpp
+++ b/js/xpconnect/src/XPCWrappedNative.cpp
@@ -2653,7 +2653,7 @@ static void DEBUG_CheckClassInfoClaims(XPCWrappedNative* wrapper)
 }
 #endif
 
-NS_IMPL_ISUPPORTS1(XPCJSObjectHolder, nsIXPConnectJSObjectHolder)
+NS_IMPL_ISUPPORTS(XPCJSObjectHolder, nsIXPConnectJSObjectHolder)
 
 JSObject*
 XPCJSObjectHolder::GetJSObject()
diff --git a/js/xpconnect/src/nsScriptError.cpp b/js/xpconnect/src/nsScriptError.cpp
index 01382d8559bba13be3cd1cb9e125b17e1fb27892..944da2e741ee6ef9d0c746e99bcd7340424cb778 100644
--- a/js/xpconnect/src/nsScriptError.cpp
+++ b/js/xpconnect/src/nsScriptError.cpp
@@ -16,7 +16,7 @@
 #include "nsILoadContext.h"
 #include "nsIDocShell.h"
 
-NS_IMPL_ISUPPORTS2(nsScriptError, nsIConsoleMessage, nsIScriptError)
+NS_IMPL_ISUPPORTS(nsScriptError, nsIConsoleMessage, nsIScriptError)
 
 nsScriptError::nsScriptError()
     :  mMessage(),
diff --git a/js/xpconnect/src/nsXPConnect.cpp b/js/xpconnect/src/nsXPConnect.cpp
index 699e8c5457651d91dedab0626cd300b47e1e0de1..92cadc558342d674b07d45210ffab661bbd0438f 100644
--- a/js/xpconnect/src/nsXPConnect.cpp
+++ b/js/xpconnect/src/nsXPConnect.cpp
@@ -46,11 +46,11 @@ using namespace mozilla::dom;
 using namespace xpc;
 using namespace JS;
 
-NS_IMPL_ISUPPORTS4(nsXPConnect,
-                   nsIXPConnect,
-                   nsISupportsWeakReference,
-                   nsIThreadObserver,
-                   nsIJSRuntimeService)
+NS_IMPL_ISUPPORTS(nsXPConnect,
+                  nsIXPConnect,
+                  nsISupportsWeakReference,
+                  nsIThreadObserver,
+                  nsIJSRuntimeService)
 
 nsXPConnect* nsXPConnect::gSelf = nullptr;
 bool         nsXPConnect::gOnceAliveNowDead = false;
diff --git a/js/xpconnect/tests/components/native/xpctest_attributes.cpp b/js/xpconnect/tests/components/native/xpctest_attributes.cpp
index 05ad6c6f3266e1fca54ddd1aaf5398923170d394..224e7d1ca9cc4c25d9579fb7a5195fd875513a8c 100644
--- a/js/xpconnect/tests/components/native/xpctest_attributes.cpp
+++ b/js/xpconnect/tests/components/native/xpctest_attributes.cpp
@@ -6,7 +6,7 @@
 
 #include "xpctest_private.h"
 
-NS_IMPL_ISUPPORTS1(xpcTestObjectReadOnly, nsIXPCTestObjectReadOnly)
+NS_IMPL_ISUPPORTS(xpcTestObjectReadOnly, nsIXPCTestObjectReadOnly)
 
 xpcTestObjectReadOnly :: xpcTestObjectReadOnly() {
     boolProperty = true;
@@ -54,7 +54,7 @@ NS_IMETHODIMP xpcTestObjectReadOnly :: GetTimeReadOnly(PRTime *aTimeReadOnly){
     return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS1(xpcTestObjectReadWrite, nsIXPCTestObjectReadWrite)
+NS_IMPL_ISUPPORTS(xpcTestObjectReadWrite, nsIXPCTestObjectReadWrite)
 
 xpcTestObjectReadWrite :: xpcTestObjectReadWrite() {
     const char s[] = "XPConnect Read-Writable String";
diff --git a/js/xpconnect/tests/components/native/xpctest_params.cpp b/js/xpconnect/tests/components/native/xpctest_params.cpp
index 3d595c87436077239fcda054223d557a4ce8182f..702014f1c7571e7b0f8776664fe48da89c4b71d0 100644
--- a/js/xpconnect/tests/components/native/xpctest_params.cpp
+++ b/js/xpconnect/tests/components/native/xpctest_params.cpp
@@ -6,7 +6,7 @@
 #include "xpctest_interfaces.h"
 #include "js/Value.h"
 
-NS_IMPL_ISUPPORTS1(nsXPCTestParams, nsIXPCTestParams)
+NS_IMPL_ISUPPORTS(nsXPCTestParams, nsIXPCTestParams)
 
 nsXPCTestParams::nsXPCTestParams()
 {
diff --git a/layout/base/nsCaret.cpp b/layout/base/nsCaret.cpp
index a8ff2164aff0db2cec2a1649de9d939d61150fad..5e22edd7c476af769b3acbd43f643d0930bd044b 100644
--- a/layout/base/nsCaret.cpp
+++ b/layout/base/nsCaret.cpp
@@ -236,7 +236,7 @@ void nsCaret::Terminate()
 }
 
 //-----------------------------------------------------------------------------
-NS_IMPL_ISUPPORTS1(nsCaret, nsISelectionListener)
+NS_IMPL_ISUPPORTS(nsCaret, nsISelectionListener)
 
 //-----------------------------------------------------------------------------
 nsISelection* nsCaret::GetCaretDOMSelection()
diff --git a/layout/base/nsDocumentViewer.cpp b/layout/base/nsDocumentViewer.cpp
index a8325b6c8577717dc229c4c6a66b6c3bb60be8ca..72596494e580c5c75bffb32db28fdbfdec687475 100644
--- a/layout/base/nsDocumentViewer.cpp
+++ b/layout/base/nsDocumentViewer.cpp
@@ -3310,7 +3310,7 @@ nsDocumentViewer::GetContentSize(int32_t* aWidth, int32_t* aHeight)
 }
 
 
-NS_IMPL_ISUPPORTS1(nsDocViewerSelectionListener, nsISelectionListener)
+NS_IMPL_ISUPPORTS(nsDocViewerSelectionListener, nsISelectionListener)
 
 nsresult nsDocViewerSelectionListener::Init(nsDocumentViewer *aDocViewer)
 {
@@ -3510,8 +3510,8 @@ NS_IMETHODIMP nsDocViewerSelectionListener::NotifySelectionChanged(nsIDOMDocumen
 }
 
 //nsDocViewerFocusListener
-NS_IMPL_ISUPPORTS1(nsDocViewerFocusListener,
-                   nsIDOMEventListener)
+NS_IMPL_ISUPPORTS(nsDocViewerFocusListener,
+                  nsIDOMEventListener)
 
 nsDocViewerFocusListener::nsDocViewerFocusListener()
 :mDocViewer(nullptr)
diff --git a/layout/base/nsFrameTraversal.cpp b/layout/base/nsFrameTraversal.cpp
index 837329eae678025f0adbec85710148cd76a970d0..f1cb49cec23774e5216c6afa9d3cfd1e44cb0083 100644
--- a/layout/base/nsFrameTraversal.cpp
+++ b/layout/base/nsFrameTraversal.cpp
@@ -165,7 +165,7 @@ nsFrameTraversal::~nsFrameTraversal()
 {
 }
 
-NS_IMPL_ISUPPORTS1(nsFrameTraversal,nsIFrameTraversal)
+NS_IMPL_ISUPPORTS(nsFrameTraversal,nsIFrameTraversal)
 
 NS_IMETHODIMP 
  nsFrameTraversal::NewFrameTraversal(nsIFrameEnumerator **aEnumerator,
@@ -183,7 +183,7 @@ NS_IMETHODIMP
 
 // nsFrameIterator implementation
 
-NS_IMPL_ISUPPORTS1(nsFrameIterator, nsIFrameEnumerator)
+NS_IMPL_ISUPPORTS(nsFrameIterator, nsIFrameEnumerator)
 
 nsFrameIterator::nsFrameIterator(nsPresContext* aPresContext, nsIFrame *aStart,
                                  nsIteratorType aType, bool aLockInScrollView,
diff --git a/layout/base/nsLayoutDebugger.cpp b/layout/base/nsLayoutDebugger.cpp
index 635000fc41a8e5acb09aea5859c289e32b42b7bf..d1573191acaf18eee89cedb88920c10a9569d066 100644
--- a/layout/base/nsLayoutDebugger.cpp
+++ b/layout/base/nsLayoutDebugger.cpp
@@ -65,7 +65,7 @@ nsLayoutDebugger::~nsLayoutDebugger()
 {
 }
 
-NS_IMPL_ISUPPORTS1(nsLayoutDebugger, nsILayoutDebugger)
+NS_IMPL_ISUPPORTS(nsLayoutDebugger, nsILayoutDebugger)
 
 NS_IMETHODIMP
 nsLayoutDebugger::SetShowFrameBorders(bool aEnable)
diff --git a/layout/base/nsLayoutHistoryState.cpp b/layout/base/nsLayoutHistoryState.cpp
index b8137eb3402dceb15b8b9cc8ea36ff81a4892d02..cf16a48e7274075a06dbaea958b9cd3c5a499412 100644
--- a/layout/base/nsLayoutHistoryState.cpp
+++ b/layout/base/nsLayoutHistoryState.cpp
@@ -53,9 +53,9 @@ NS_NewLayoutHistoryState()
   return state.forget();
 }
 
-NS_IMPL_ISUPPORTS2(nsLayoutHistoryState,
-                   nsILayoutHistoryState,
-                   nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(nsLayoutHistoryState,
+                  nsILayoutHistoryState,
+                  nsISupportsWeakReference)
 
 void
 nsLayoutHistoryState::AddState(const nsCString& aStateKey, nsPresState* aState)
diff --git a/layout/base/nsPresShell.cpp b/layout/base/nsPresShell.cpp
index 04802cb0772c10c07e5138a4ba235783b0128df6..4df1c0749c6b5648780be12f49b08310010cc0c0 100644
--- a/layout/base/nsPresShell.cpp
+++ b/layout/base/nsPresShell.cpp
@@ -758,10 +758,10 @@ PresShell::PresShell()
   mPaintingIsFrozen = false;
 }
 
-NS_IMPL_ISUPPORTS7(PresShell, nsIPresShell, nsIDocumentObserver,
-                   nsISelectionController,
-                   nsISelectionDisplay, nsIObserver, nsISupportsWeakReference,
-                   nsIMutationObserver)
+NS_IMPL_ISUPPORTS(PresShell, nsIPresShell, nsIDocumentObserver,
+                  nsISelectionController,
+                  nsISelectionDisplay, nsIObserver, nsISupportsWeakReference,
+                  nsIMutationObserver)
 
 PresShell::~PresShell()
 {
@@ -3600,7 +3600,7 @@ private:
   PresShell* mShell;
 };
 
-NS_IMPL_ISUPPORTS1(PaintTimerCallBack, nsITimerCallback)
+NS_IMPL_ISUPPORTS(PaintTimerCallBack, nsITimerCallback)
 
 void
 PresShell::ScheduleViewManagerFlush(PaintType aType)
diff --git a/layout/base/nsRefreshDriver.cpp b/layout/base/nsRefreshDriver.cpp
index 0f5d6a03a08979acb46221060fbf34d1830975c7..da2bbedbbbb1ab53dddcca1342d378d1eaaa3fc0 100644
--- a/layout/base/nsRefreshDriver.cpp
+++ b/layout/base/nsRefreshDriver.cpp
@@ -990,7 +990,7 @@ nsRefreshDriver::ArrayFor(mozFlushType aFlushType)
  * nsISupports implementation
  */
 
-NS_IMPL_ISUPPORTS1(nsRefreshDriver, nsISupports)
+NS_IMPL_ISUPPORTS(nsRefreshDriver, nsISupports)
 
 /*
  * nsITimerCallback implementation
diff --git a/layout/base/nsStyleSheetService.cpp b/layout/base/nsStyleSheetService.cpp
index 3c90c78b5b181c9177e6984ef7ea96975918d2c6..85f5f815ff6c73d0821d585abcb12d9472713abd 100644
--- a/layout/base/nsStyleSheetService.cpp
+++ b/layout/base/nsStyleSheetService.cpp
@@ -42,7 +42,7 @@ nsStyleSheetService::~nsStyleSheetService()
   nsLayoutStatics::Release();
 }
 
-NS_IMPL_ISUPPORTS2(
+NS_IMPL_ISUPPORTS(
   nsStyleSheetService, nsIStyleSheetService, nsIMemoryReporter)
 
 void
diff --git a/layout/build/nsContentDLF.cpp b/layout/build/nsContentDLF.cpp
index 361f459e12152999c0b901b829b94dcfc2d409fa..d3081dd951fa8c910723670ab49afdbbf3e7b13b 100644
--- a/layout/build/nsContentDLF.cpp
+++ b/layout/build/nsContentDLF.cpp
@@ -111,8 +111,8 @@ nsContentDLF::~nsContentDLF()
 {
 }
 
-NS_IMPL_ISUPPORTS1(nsContentDLF,
-                   nsIDocumentLoaderFactory)
+NS_IMPL_ISUPPORTS(nsContentDLF,
+                  nsIDocumentLoaderFactory)
 
 bool
 MayUseXULXBL(nsIChannel* aChannel)
diff --git a/layout/forms/nsComboboxControlFrame.cpp b/layout/forms/nsComboboxControlFrame.cpp
index 34cc8ba1d817d6fe408b9a71d2fafab4521f1e87..c91de9b4aa5f4b16411827e41f1faeae71d702ea 100644
--- a/layout/forms/nsComboboxControlFrame.cpp
+++ b/layout/forms/nsComboboxControlFrame.cpp
@@ -94,8 +94,8 @@ public:
   nsComboboxControlFrame* mComboBox;
 };
 
-NS_IMPL_ISUPPORTS1(nsComboButtonListener,
-                   nsIDOMEventListener)
+NS_IMPL_ISUPPORTS(nsComboButtonListener,
+                  nsIDOMEventListener)
 
 // static class data member for Bug 32920
 nsComboboxControlFrame* nsComboboxControlFrame::sFocused = nullptr;
diff --git a/layout/forms/nsFileControlFrame.cpp b/layout/forms/nsFileControlFrame.cpp
index dacee8dd03edb89cbfb918563a8510e1048b8bca..b2ce5df1ff56587d6892d67633983de818d7b117 100644
--- a/layout/forms/nsFileControlFrame.cpp
+++ b/layout/forms/nsFileControlFrame.cpp
@@ -324,5 +324,5 @@ nsFileControlFrame::AccessibleType()
 ////////////////////////////////////////////////////////////
 // Mouse listener implementation
 
-NS_IMPL_ISUPPORTS1(nsFileControlFrame::MouseListener,
-                   nsIDOMEventListener)
+NS_IMPL_ISUPPORTS(nsFileControlFrame::MouseListener,
+                  nsIDOMEventListener)
diff --git a/layout/forms/nsListControlFrame.cpp b/layout/forms/nsListControlFrame.cpp
index ef7b904de3657ebaf52098e183f0b1300d21389b..e2847f9672e703c9255ab49e038fa725cbf79918 100644
--- a/layout/forms/nsListControlFrame.cpp
+++ b/layout/forms/nsListControlFrame.cpp
@@ -2428,7 +2428,7 @@ nsListControlFrame::PostHandleKeyEvent(int32_t aNewIndex,
  * nsListEventListener
  *****************************************************************************/
 
-NS_IMPL_ISUPPORTS1(nsListEventListener, nsIDOMEventListener)
+NS_IMPL_ISUPPORTS(nsListEventListener, nsIDOMEventListener)
 
 NS_IMETHODIMP
 nsListEventListener::HandleEvent(nsIDOMEvent* aEvent)
diff --git a/layout/generic/ScrollbarActivity.cpp b/layout/generic/ScrollbarActivity.cpp
index 1def5db7b5719f2f84617ff90a005b22a7b4d793..86ef7fc06fd0aaf4c911c76cb4f3c5f1d35d226d 100644
--- a/layout/generic/ScrollbarActivity.cpp
+++ b/layout/generic/ScrollbarActivity.cpp
@@ -20,7 +20,7 @@
 namespace mozilla {
 namespace layout {
 
-NS_IMPL_ISUPPORTS1(ScrollbarActivity, nsIDOMEventListener)
+NS_IMPL_ISUPPORTS(ScrollbarActivity, nsIDOMEventListener)
 
 static bool
 GetForceAlwaysVisiblePref()
diff --git a/layout/generic/nsBulletFrame.cpp b/layout/generic/nsBulletFrame.cpp
index ee64fd7862edaa9ccccb119b9fbfa63f456bc32e..65c1712939d44307b6f43d58bcb1c16ec4690830 100644
--- a/layout/generic/nsBulletFrame.cpp
+++ b/layout/generic/nsBulletFrame.cpp
@@ -1893,7 +1893,7 @@ nsBulletFrame::GetBaseline() const
 
 
 
-NS_IMPL_ISUPPORTS1(nsBulletListener, imgINotificationObserver)
+NS_IMPL_ISUPPORTS(nsBulletListener, imgINotificationObserver)
 
 nsBulletListener::nsBulletListener() :
   mFrame(nullptr)
diff --git a/layout/generic/nsFrameUtil.cpp b/layout/generic/nsFrameUtil.cpp
index 7e05850f3ad4ff291efe9c88996fddd0a721bde1..e9013c205aeed965ee29ed76c7a49d161197b56d 100644
--- a/layout/generic/nsFrameUtil.cpp
+++ b/layout/generic/nsFrameUtil.cpp
@@ -495,7 +495,7 @@ nsFrameUtil::~nsFrameUtil()
 {
 }
 
-NS_IMPL_ISUPPORTS1(nsFrameUtil, nsIFrameUtil)
+NS_IMPL_ISUPPORTS(nsFrameUtil, nsIFrameUtil)
 
 void
 nsFrameUtil::DumpNode(Node* aNode, FILE* aOutputFile, int32_t aIndent)
diff --git a/layout/generic/nsImageFrame.cpp b/layout/generic/nsImageFrame.cpp
index 82647db8f1dd4f56cc8c5e9f16ad6e614a1a584d..be77bceee01f8def3796d3be854dc94e9968b2e4 100644
--- a/layout/generic/nsImageFrame.cpp
+++ b/layout/generic/nsImageFrame.cpp
@@ -1916,8 +1916,8 @@ nsresult nsImageFrame::LoadIcons(nsPresContext *aPresContext)
   return rv;
 }
 
-NS_IMPL_ISUPPORTS2(nsImageFrame::IconLoad, nsIObserver,
-                   imgINotificationObserver)
+NS_IMPL_ISUPPORTS(nsImageFrame::IconLoad, nsIObserver,
+                  imgINotificationObserver)
 
 static const char* kIconLoadPrefs[] = {
   "browser.display.force_inline_alttext",
@@ -1992,7 +1992,7 @@ nsImageFrame::IconLoad::Notify(imgIRequest *aRequest, int32_t aType, const nsInt
   return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS1(nsImageListener, imgINotificationObserver)
+NS_IMPL_ISUPPORTS(nsImageListener, imgINotificationObserver)
 
 nsImageListener::nsImageListener(nsImageFrame *aFrame) :
   mFrame(aFrame)
diff --git a/layout/generic/nsImageMap.cpp b/layout/generic/nsImageMap.cpp
index 5fd24485d20b5f51844156edbe805140b5a3a529..c66516037be7fc8cd7de96ebba88cf9487d820e3 100644
--- a/layout/generic/nsImageMap.cpp
+++ b/layout/generic/nsImageMap.cpp
@@ -660,9 +660,9 @@ nsImageMap::~nsImageMap()
   NS_ASSERTION(mAreas.Length() == 0, "Destroy was not called");
 }
 
-NS_IMPL_ISUPPORTS2(nsImageMap,
-                   nsIMutationObserver,
-                   nsIDOMEventListener)
+NS_IMPL_ISUPPORTS(nsImageMap,
+                  nsIMutationObserver,
+                  nsIDOMEventListener)
 
 nsresult
 nsImageMap::GetBoundsForAreaContent(nsIContent *aContent,
diff --git a/layout/generic/nsSelection.cpp b/layout/generic/nsSelection.cpp
index 57c05609a16cfbb907466402b1f2c7525935d329..8faa68ff3fba063d909f4d744a89ac7cee17f87a 100644
--- a/layout/generic/nsSelection.cpp
+++ b/layout/generic/nsSelection.cpp
@@ -231,7 +231,7 @@ private:
   uint32_t mDelay;
 };
 
-NS_IMPL_ISUPPORTS1(nsAutoScrollTimer, nsITimerCallback)
+NS_IMPL_ISUPPORTS(nsAutoScrollTimer, nsITimerCallback)
 
 nsresult NS_NewDomSelection(nsISelection **aDomSelection)
 {
@@ -5830,7 +5830,7 @@ Selection::WrapObject(JSContext* aCx)
 
 nsAutoCopyListener* nsAutoCopyListener::sInstance = nullptr;
 
-NS_IMPL_ISUPPORTS1(nsAutoCopyListener, nsISelectionListener)
+NS_IMPL_ISUPPORTS(nsAutoCopyListener, nsISelectionListener)
 
 /*
  * What we do now:
diff --git a/layout/inspector/inCSSValueSearch.cpp b/layout/inspector/inCSSValueSearch.cpp
index 793c50e8fffa1ac173d92b22f015ad9e94779bbb..7db4fd9f81f79780959f3922be56496bd9409bf4 100644
--- a/layout/inspector/inCSSValueSearch.cpp
+++ b/layout/inspector/inCSSValueSearch.cpp
@@ -46,7 +46,7 @@ inCSSValueSearch::~inCSSValueSearch()
   nsCSSProps::ReleaseTable();
 }
 
-NS_IMPL_ISUPPORTS2(inCSSValueSearch, inISearchProcess, inICSSValueSearch)
+NS_IMPL_ISUPPORTS(inCSSValueSearch, inISearchProcess, inICSSValueSearch)
 
 ///////////////////////////////////////////////////////////////////////////////
 // inISearchProcess
diff --git a/layout/inspector/inDOMUtils.cpp b/layout/inspector/inDOMUtils.cpp
index f2afe9d2f0e74a72dc312f1221ff8110f7a35dca..e6858992edf4aeb597af3474041770cca62eeba4 100644
--- a/layout/inspector/inDOMUtils.cpp
+++ b/layout/inspector/inDOMUtils.cpp
@@ -56,7 +56,7 @@ inDOMUtils::~inDOMUtils()
 {
 }
 
-NS_IMPL_ISUPPORTS1(inDOMUtils, inIDOMUtils)
+NS_IMPL_ISUPPORTS(inDOMUtils, inIDOMUtils)
 
 ///////////////////////////////////////////////////////////////////////////////
 // inIDOMUtils
diff --git a/layout/inspector/inDOMView.cpp b/layout/inspector/inDOMView.cpp
index 46288310d61dffad7ad22cba45881cd2e0644750..09f850c70c8bcda6bd6edfa943b06e5d086ff766 100644
--- a/layout/inspector/inDOMView.cpp
+++ b/layout/inspector/inDOMView.cpp
@@ -94,10 +94,10 @@ inDOMView::~inDOMView()
 ////////////////////////////////////////////////////////////////////////
 // nsISupports
 
-NS_IMPL_ISUPPORTS3(inDOMView,
-                   inIDOMView,
-                   nsITreeView,
-                   nsIMutationObserver)
+NS_IMPL_ISUPPORTS(inDOMView,
+                  inIDOMView,
+                  nsITreeView,
+                  nsIMutationObserver)
 
 ////////////////////////////////////////////////////////////////////////
 // inIDOMView
diff --git a/layout/inspector/inDeepTreeWalker.cpp b/layout/inspector/inDeepTreeWalker.cpp
index a1265f27376e732e7df9b24697f54f883a2d2f8f..81a24cf071a24e76d90f794765fd510b4e99d6a6 100644
--- a/layout/inspector/inDeepTreeWalker.cpp
+++ b/layout/inspector/inDeepTreeWalker.cpp
@@ -37,9 +37,9 @@ inDeepTreeWalker::~inDeepTreeWalker()
 { 
 }
 
-NS_IMPL_ISUPPORTS2(inDeepTreeWalker,
-                   inIDeepTreeWalker,
-                   nsIDOMTreeWalker)
+NS_IMPL_ISUPPORTS(inDeepTreeWalker,
+                  inIDeepTreeWalker,
+                  nsIDOMTreeWalker)
 
 ////////////////////////////////////////////////////
 // inIDeepTreeWalker
diff --git a/layout/inspector/inFlasher.cpp b/layout/inspector/inFlasher.cpp
index 85c27c857bf8bbda283756d292c54d291a828b6b..fd2acafb6a9b6750faf8b808c95f485dd0605f16 100644
--- a/layout/inspector/inFlasher.cpp
+++ b/layout/inspector/inFlasher.cpp
@@ -30,7 +30,7 @@ inFlasher::~inFlasher()
 {
 }
 
-NS_IMPL_ISUPPORTS1(inFlasher, inIFlasher)
+NS_IMPL_ISUPPORTS(inFlasher, inIFlasher)
 
 ///////////////////////////////////////////////////////////////////////////////
 // inIFlasher
diff --git a/layout/inspector/nsFontFace.cpp b/layout/inspector/nsFontFace.cpp
index dfbed88b720fc78c20ceba15697718230e78a949..eb788d95b723130e426c112bb8da5ef2173934c8 100644
--- a/layout/inspector/nsFontFace.cpp
+++ b/layout/inspector/nsFontFace.cpp
@@ -27,7 +27,7 @@ nsFontFace::~nsFontFace()
 ////////////////////////////////////////////////////////////////////////
 // nsISupports
 
-NS_IMPL_ISUPPORTS1(nsFontFace, nsIDOMFontFace)
+NS_IMPL_ISUPPORTS(nsFontFace, nsIDOMFontFace)
 
 ////////////////////////////////////////////////////////////////////////
 // nsIDOMFontFace
diff --git a/layout/inspector/nsFontFaceList.cpp b/layout/inspector/nsFontFaceList.cpp
index f74b8a28602aabdac09b7d0e634069135a85d1ec..b0be644fad624a66e1804306e1dabb775a1ad22d 100644
--- a/layout/inspector/nsFontFaceList.cpp
+++ b/layout/inspector/nsFontFaceList.cpp
@@ -20,7 +20,7 @@ nsFontFaceList::~nsFontFaceList()
 ////////////////////////////////////////////////////////////////////////
 // nsISupports
 
-NS_IMPL_ISUPPORTS1(nsFontFaceList, nsIDOMFontFaceList)
+NS_IMPL_ISUPPORTS(nsFontFaceList, nsIDOMFontFaceList)
 
 ////////////////////////////////////////////////////////////////////////
 // nsIDOMFontFaceList
diff --git a/layout/mathml/nsMathMLChar.cpp b/layout/mathml/nsMathMLChar.cpp
index b9184b9cb2a2342bf8c8691ec20df4f83dc6927d..bf994e2d44001ff6b9e699da293511aaf1cc0464 100644
--- a/layout/mathml/nsMathMLChar.cpp
+++ b/layout/mathml/nsMathMLChar.cpp
@@ -600,7 +600,7 @@ private:
   nsTArray<nsPropertiesTable> mPropertiesTableList;
 };
 
-NS_IMPL_ISUPPORTS1(nsGlyphTableList, nsIObserver)
+NS_IMPL_ISUPPORTS(nsGlyphTableList, nsIObserver)
 
 // -----------------------------------------------------------------------------
 // Here is the global list of applicable glyph tables that we will be using
diff --git a/layout/mathml/nsMathMLmactionFrame.cpp b/layout/mathml/nsMathMLmactionFrame.cpp
index 18daf52b4c448a1a7f1810c46ba087c8bf57fb42..d4562761a00bc00c1857fc525ded046d4b997637 100644
--- a/layout/mathml/nsMathMLmactionFrame.cpp
+++ b/layout/mathml/nsMathMLmactionFrame.cpp
@@ -236,8 +236,8 @@ nsMathMLmactionFrame::AttributeChanged(int32_t  aNameSpaceID,
 // Event handlers 
 // ################################################################
 
-NS_IMPL_ISUPPORTS1(nsMathMLmactionFrame::MouseListener,
-                   nsIDOMEventListener)
+NS_IMPL_ISUPPORTS(nsMathMLmactionFrame::MouseListener,
+                  nsIDOMEventListener)
 
 
 // helper to show a msg on the status bar
diff --git a/layout/printing/nsPagePrintTimer.cpp b/layout/printing/nsPagePrintTimer.cpp
index 39055fa5a95cead4666577de8954684e0f416eaf..01d44d86d819ff697e529fef0ae8d8ade7797190 100644
--- a/layout/printing/nsPagePrintTimer.cpp
+++ b/layout/printing/nsPagePrintTimer.cpp
@@ -8,7 +8,7 @@
 #include "nsIServiceManager.h"
 #include "nsPrintEngine.h"
 
-NS_IMPL_ISUPPORTS_INHERITED1(nsPagePrintTimer, nsRunnable, nsITimerCallback)
+NS_IMPL_ISUPPORTS_INHERITED(nsPagePrintTimer, nsRunnable, nsITimerCallback)
 
 nsPagePrintTimer::~nsPagePrintTimer()
 {
diff --git a/layout/printing/nsPrintEngine.cpp b/layout/printing/nsPrintEngine.cpp
index 110eb7d6cd67f006ac328c8a75af0e850f0ec4fa..b6887ce629c95bc9c911e8c8a6800e12ca6845fe 100644
--- a/layout/printing/nsPrintEngine.cpp
+++ b/layout/printing/nsPrintEngine.cpp
@@ -216,8 +216,8 @@ protected:
   bool                    mSuppressed;
 };
 
-NS_IMPL_ISUPPORTS3(nsPrintEngine, nsIWebProgressListener,
-                   nsISupportsWeakReference, nsIObserver)
+NS_IMPL_ISUPPORTS(nsPrintEngine, nsIWebProgressListener,
+                  nsISupportsWeakReference, nsIObserver)
 
 //---------------------------------------------------
 //-- nsPrintEngine Class Impl
diff --git a/layout/printing/nsPrintPreviewListener.cpp b/layout/printing/nsPrintPreviewListener.cpp
index 14393b0d54f86d514d94b31e57254f2d7347d978..121995d58ae58fb42f1208e13c8e0d6ecf8a7f85 100644
--- a/layout/printing/nsPrintPreviewListener.cpp
+++ b/layout/printing/nsPrintPreviewListener.cpp
@@ -23,7 +23,7 @@
 using namespace mozilla;
 using namespace mozilla::dom;
 
-NS_IMPL_ISUPPORTS1(nsPrintPreviewListener, nsIDOMEventListener)
+NS_IMPL_ISUPPORTS(nsPrintPreviewListener, nsIDOMEventListener)
 
 
 //
diff --git a/layout/style/AnimationCommon.cpp b/layout/style/AnimationCommon.cpp
index 7dced2417b757105fec74f40d66c59908c57eca5..57ac817273b2d3820cfb8d337c6f144c4650df41 100644
--- a/layout/style/AnimationCommon.cpp
+++ b/layout/style/AnimationCommon.cpp
@@ -78,7 +78,7 @@ CommonAnimationManager::RemoveAllElementData()
  * nsISupports implementation
  */
 
-NS_IMPL_ISUPPORTS1(CommonAnimationManager, nsIStyleRuleProcessor)
+NS_IMPL_ISUPPORTS(CommonAnimationManager, nsIStyleRuleProcessor)
 
 nsRestyleHint
 CommonAnimationManager::HasStateDependentStyle(StateRuleProcessorData* aData)
@@ -271,7 +271,7 @@ CommonAnimationManager::UpdateThrottledStyle(dom::Element* aElement,
   return newStyle;
 }
 
-NS_IMPL_ISUPPORTS1(AnimValuesStyleRule, nsIStyleRule)
+NS_IMPL_ISUPPORTS(AnimValuesStyleRule, nsIStyleRule)
 
 /* virtual */ void
 AnimValuesStyleRule::MapRuleInfoInto(nsRuleData* aRuleData)
diff --git a/layout/style/Loader.cpp b/layout/style/Loader.cpp
index ffb68dd877fd8576173c5e781472b3543bd85b72..5d07f022f71c39fb836393c2878624e0a39b2367 100644
--- a/layout/style/Loader.cpp
+++ b/layout/style/Loader.cpp
@@ -302,8 +302,8 @@ static const char* const gStateStrings[] = {
 /********************************
  * SheetLoadData implementation *
  ********************************/
-NS_IMPL_ISUPPORTS3(SheetLoadData, nsIUnicharStreamLoaderObserver, nsIRunnable,
-                   nsIThreadObserver)
+NS_IMPL_ISUPPORTS(SheetLoadData, nsIUnicharStreamLoaderObserver, nsIRunnable,
+                  nsIThreadObserver)
 
 SheetLoadData::SheetLoadData(Loader* aLoader,
                              const nsSubstring& aTitle,
diff --git a/layout/style/StyleRule.cpp b/layout/style/StyleRule.cpp
index 671e854305bcc4b717888c180f29ecfbd8ebf7aa..8d7b997bc29aab6c1cb95460fa701856c6c81128 100644
--- a/layout/style/StyleRule.cpp
+++ b/layout/style/StyleRule.cpp
@@ -933,7 +933,7 @@ ImportantRule::~ImportantRule()
 {
 }
 
-NS_IMPL_ISUPPORTS1(ImportantRule, nsIStyleRule)
+NS_IMPL_ISUPPORTS(ImportantRule, nsIStyleRule)
 
 /* virtual */ void
 ImportantRule::MapRuleInfoInto(nsRuleData* aRuleData)
diff --git a/layout/style/nsCSSRuleProcessor.cpp b/layout/style/nsCSSRuleProcessor.cpp
index 63de56de2d8c28e18fe0d4cbc5036f3dcf1dcf49..c6585235244761342ef7c96cfd84736a9932eae3 100644
--- a/layout/style/nsCSSRuleProcessor.cpp
+++ b/layout/style/nsCSSRuleProcessor.cpp
@@ -1088,7 +1088,7 @@ nsCSSRuleProcessor::~nsCSSRuleProcessor()
   ClearRuleCascades();
 }
 
-NS_IMPL_ISUPPORTS1(nsCSSRuleProcessor, nsIStyleRuleProcessor)
+NS_IMPL_ISUPPORTS(nsCSSRuleProcessor, nsIStyleRuleProcessor)
 
 /* static */ nsresult
 nsCSSRuleProcessor::Startup()
diff --git a/layout/style/nsDOMCSSDeclaration.cpp b/layout/style/nsDOMCSSDeclaration.cpp
index 25b4f464596384d3fb3af89f0a60fe779ccd7a90..ea32324cac0251d0d33058e787d14579497d8d5a 100644
--- a/layout/style/nsDOMCSSDeclaration.cpp
+++ b/layout/style/nsDOMCSSDeclaration.cpp
@@ -32,9 +32,9 @@ nsDOMCSSDeclaration::WrapObject(JSContext* aCx)
 }
 
 NS_INTERFACE_TABLE_HEAD(nsDOMCSSDeclaration)
-  NS_INTERFACE_TABLE2(nsDOMCSSDeclaration,
-                      nsICSSDeclaration,
-                      nsIDOMCSSStyleDeclaration)
+  NS_INTERFACE_TABLE(nsDOMCSSDeclaration,
+                     nsICSSDeclaration,
+                     nsIDOMCSSStyleDeclaration)
   NS_INTERFACE_TABLE_TO_MAP_SEGUE
 NS_INTERFACE_MAP_END
 
diff --git a/layout/style/nsFontFaceLoader.cpp b/layout/style/nsFontFaceLoader.cpp
index 474914e7bf8b3bfb28a9015338deffc735d527fe..5db16bd38ed5dcf71bc58b9e2d05904af3d389f9 100644
--- a/layout/style/nsFontFaceLoader.cpp
+++ b/layout/style/nsFontFaceLoader.cpp
@@ -156,7 +156,7 @@ nsFontFaceLoader::LoadTimerCallback(nsITimer* aTimer, void* aClosure)
   }
 }
 
-NS_IMPL_ISUPPORTS1(nsFontFaceLoader, nsIStreamLoaderObserver)
+NS_IMPL_ISUPPORTS(nsFontFaceLoader, nsIStreamLoaderObserver)
 
 NS_IMETHODIMP
 nsFontFaceLoader::OnStreamComplete(nsIStreamLoader* aLoader,
diff --git a/layout/style/nsHTMLCSSStyleSheet.cpp b/layout/style/nsHTMLCSSStyleSheet.cpp
index 9a1806772df88830fd007d4ae25e179d5c397a01..a67bb462599e960180c2504dc8909998ca6edc9e 100644
--- a/layout/style/nsHTMLCSSStyleSheet.cpp
+++ b/layout/style/nsHTMLCSSStyleSheet.cpp
@@ -49,7 +49,7 @@ nsHTMLCSSStyleSheet::~nsHTMLCSSStyleSheet()
   mCachedStyleAttrs.Enumerate(ClearAttrCache, nullptr);
 }
 
-NS_IMPL_ISUPPORTS1(nsHTMLCSSStyleSheet, nsIStyleRuleProcessor)
+NS_IMPL_ISUPPORTS(nsHTMLCSSStyleSheet, nsIStyleRuleProcessor)
 
 /* virtual */ void
 nsHTMLCSSStyleSheet::RulesMatching(ElementRuleProcessorData* aData)
diff --git a/layout/style/nsHTMLStyleSheet.cpp b/layout/style/nsHTMLStyleSheet.cpp
index c917804131342dc62bd2a6cbc30c831b4d9e8355..d8af666e9ce1fa886d1c5784edaa4b96344d12c3 100644
--- a/layout/style/nsHTMLStyleSheet.cpp
+++ b/layout/style/nsHTMLStyleSheet.cpp
@@ -38,7 +38,7 @@
 using namespace mozilla;
 using namespace mozilla::dom;
 
-NS_IMPL_ISUPPORTS1(nsHTMLStyleSheet::HTMLColorRule, nsIStyleRule)
+NS_IMPL_ISUPPORTS(nsHTMLStyleSheet::HTMLColorRule, nsIStyleRule)
 
 /* virtual */ void
 nsHTMLStyleSheet::HTMLColorRule::MapRuleInfoInto(nsRuleData* aRuleData)
@@ -61,7 +61,7 @@ nsHTMLStyleSheet::HTMLColorRule::List(FILE* out, int32_t aIndent) const
 #endif
 
  
-NS_IMPL_ISUPPORTS1(nsHTMLStyleSheet::GenericTableRule, nsIStyleRule)
+NS_IMPL_ISUPPORTS(nsHTMLStyleSheet::GenericTableRule, nsIStyleRule)
 
 #ifdef DEBUG
 /* virtual */ void
@@ -98,7 +98,7 @@ nsHTMLStyleSheet::TableQuirkColorRule::MapRuleInfoInto(nsRuleData* aRuleData)
 }
 
 
-NS_IMPL_ISUPPORTS1(nsHTMLStyleSheet::LangRule, nsIStyleRule)
+NS_IMPL_ISUPPORTS(nsHTMLStyleSheet::LangRule, nsIStyleRule)
 
 /* virtual */ void
 nsHTMLStyleSheet::LangRule::MapRuleInfoInto(nsRuleData* aRuleData)
@@ -246,7 +246,7 @@ nsHTMLStyleSheet::~nsHTMLStyleSheet()
     PL_DHashTableFinish(&mMappedAttrTable);
 }
 
-NS_IMPL_ISUPPORTS1(nsHTMLStyleSheet, nsIStyleRuleProcessor)
+NS_IMPL_ISUPPORTS(nsHTMLStyleSheet, nsIStyleRuleProcessor)
 
 /* virtual */ void
 nsHTMLStyleSheet::RulesMatching(ElementRuleProcessorData* aData)
diff --git a/layout/style/nsLayoutStylesheetCache.cpp b/layout/style/nsLayoutStylesheetCache.cpp
index df700c07269181f7ea1744e86a77032428bb1526..7c0a6e2703f46da228b0f78266b352eaaf99cac8 100644
--- a/layout/style/nsLayoutStylesheetCache.cpp
+++ b/layout/style/nsLayoutStylesheetCache.cpp
@@ -23,7 +23,7 @@ static bool sNumberControlEnabled;
 
 #define NUMBER_CONTROL_PREF "dom.forms.number"
 
-NS_IMPL_ISUPPORTS2(
+NS_IMPL_ISUPPORTS(
   nsLayoutStylesheetCache, nsIObserver, nsIMemoryReporter)
 
 nsresult
diff --git a/layout/style/nsStyleSet.cpp b/layout/style/nsStyleSet.cpp
index c5c1f2da3882aedcd56f29e66027b85eb02a0600..4524edc252c2d909cf6bd5cdaa2a9725f0f3d2ce 100644
--- a/layout/style/nsStyleSet.cpp
+++ b/layout/style/nsStyleSet.cpp
@@ -38,7 +38,7 @@
 using namespace mozilla;
 using namespace mozilla::dom;
 
-NS_IMPL_ISUPPORTS1(nsEmptyStyleRule, nsIStyleRule)
+NS_IMPL_ISUPPORTS(nsEmptyStyleRule, nsIStyleRule)
 
 /* virtual */ void
 nsEmptyStyleRule::MapRuleInfoInto(nsRuleData* aRuleData)
@@ -54,7 +54,7 @@ nsEmptyStyleRule::List(FILE* out, int32_t aIndent) const
 }
 #endif
 
-NS_IMPL_ISUPPORTS1(nsInitialStyleRule, nsIStyleRule)
+NS_IMPL_ISUPPORTS(nsInitialStyleRule, nsIStyleRule)
 
 /* virtual */ void
 nsInitialStyleRule::MapRuleInfoInto(nsRuleData* aRuleData)
@@ -104,7 +104,7 @@ nsInitialStyleRule::List(FILE* out, int32_t aIndent) const
 }
 #endif
 
-NS_IMPL_ISUPPORTS1(nsDisableTextZoomStyleRule, nsIStyleRule)
+NS_IMPL_ISUPPORTS(nsDisableTextZoomStyleRule, nsIStyleRule)
 
 /* virtual */ void
 nsDisableTextZoomStyleRule::MapRuleInfoInto(nsRuleData* aRuleData)
diff --git a/layout/svg/SVGTextFrame.cpp b/layout/svg/SVGTextFrame.cpp
index ff993a7d4dbb13fe8ec226bbfc7a81dab1c77f46..721e699f71bedab6028698df186a87f97538f594 100644
--- a/layout/svg/SVGTextFrame.cpp
+++ b/layout/svg/SVGTextFrame.cpp
@@ -3315,7 +3315,7 @@ SVGTextFrame::ScheduleReflowSVGNonDisplayText()
     f, nsIPresShell::eStyleChange, NS_FRAME_IS_DIRTY);
 }
 
-NS_IMPL_ISUPPORTS1(SVGTextFrame::MutationObserver, nsIMutationObserver)
+NS_IMPL_ISUPPORTS(SVGTextFrame::MutationObserver, nsIMutationObserver)
 
 void
 SVGTextFrame::MutationObserver::ContentAppended(nsIDocument* aDocument,
diff --git a/layout/svg/nsSVGEffects.cpp b/layout/svg/nsSVGEffects.cpp
index 3e75ce2016769dfe103ae93b8236615da054a6ed..fdb2aebd102be262ca1239c5092449dfee857165 100644
--- a/layout/svg/nsSVGEffects.cpp
+++ b/layout/svg/nsSVGEffects.cpp
@@ -21,7 +21,7 @@ using namespace mozilla;
 using namespace mozilla::dom;
 
 // nsSVGRenderingObserver impl
-NS_IMPL_ISUPPORTS1(nsSVGRenderingObserver, nsIMutationObserver)
+NS_IMPL_ISUPPORTS(nsSVGRenderingObserver, nsIMutationObserver)
 
 void
 nsSVGRenderingObserver::StartListening()
@@ -214,7 +214,7 @@ nsSVGRenderingObserver::ContentRemoved(nsIDocument *aDocument,
   DoUpdate();
 }
 
-NS_IMPL_ISUPPORTS1(nsSVGFilterProperty, nsISupports)
+NS_IMPL_ISUPPORTS(nsSVGFilterProperty, nsISupports)
 
 nsSVGFilterProperty::nsSVGFilterProperty(const nsTArray<nsStyleFilter> &aFilters,
                                          nsIFrame *aFilteredFrame) :
@@ -266,9 +266,9 @@ nsSVGFilterProperty::Invalidate()
   }
 }
 
-NS_IMPL_ISUPPORTS_INHERITED1(nsSVGFilterReference,
-                             nsSVGIDRenderingObserver,
-                             nsISVGFilterReference);
+NS_IMPL_ISUPPORTS_INHERITED(nsSVGFilterReference,
+                            nsSVGIDRenderingObserver,
+                            nsISVGFilterReference);
 
 nsSVGFilterFrame *
 nsSVGFilterReference::GetFilterFrame()
diff --git a/layout/svg/nsSVGImageFrame.cpp b/layout/svg/nsSVGImageFrame.cpp
index 617e50fc45d9bef72bd419938b7256498cefcdd6..78e36c74b47afc5f09efbe81ae1325c0b6e0930e 100644
--- a/layout/svg/nsSVGImageFrame.cpp
+++ b/layout/svg/nsSVGImageFrame.cpp
@@ -569,7 +569,7 @@ nsSVGImageFrame::GetHitTestFlags()
 //----------------------------------------------------------------------
 // nsSVGImageListener implementation
 
-NS_IMPL_ISUPPORTS1(nsSVGImageListener, imgINotificationObserver)
+NS_IMPL_ISUPPORTS(nsSVGImageListener, imgINotificationObserver)
 
 nsSVGImageListener::nsSVGImageListener(nsSVGImageFrame *aFrame) :  mFrame(aFrame)
 {
diff --git a/layout/tools/layout-debug/src/nsLayoutDebugCLH.cpp b/layout/tools/layout-debug/src/nsLayoutDebugCLH.cpp
index 74d3b090fd04f5ab705a924aa07a647448e45bcd..757570254e3f5d3d864312e1cb2cc3be16bb84ea 100644
--- a/layout/tools/layout-debug/src/nsLayoutDebugCLH.cpp
+++ b/layout/tools/layout-debug/src/nsLayoutDebugCLH.cpp
@@ -23,7 +23,7 @@ nsLayoutDebugCLH::~nsLayoutDebugCLH()
 {
 }
 
-NS_IMPL_ISUPPORTS1(nsLayoutDebugCLH, ICOMMANDLINEHANDLER)
+NS_IMPL_ISUPPORTS(nsLayoutDebugCLH, ICOMMANDLINEHANDLER)
 
 NS_IMETHODIMP
 nsLayoutDebugCLH::Handle(nsICommandLine* aCmdLine)
diff --git a/layout/tools/layout-debug/src/nsLayoutDebuggingTools.cpp b/layout/tools/layout-debug/src/nsLayoutDebuggingTools.cpp
index 0a73427ce682c1b8f7a2e9f5ca4bc5be7f01ff5c..928d8606e5ff5e6a22f818cd4524984660345acf 100644
--- a/layout/tools/layout-debug/src/nsLayoutDebuggingTools.cpp
+++ b/layout/tools/layout-debug/src/nsLayoutDebuggingTools.cpp
@@ -94,7 +94,7 @@ nsLayoutDebuggingTools::~nsLayoutDebuggingTools()
 {
 }
 
-NS_IMPL_ISUPPORTS1(nsLayoutDebuggingTools, nsILayoutDebuggingTools)
+NS_IMPL_ISUPPORTS(nsLayoutDebuggingTools, nsILayoutDebuggingTools)
 
 NS_IMETHODIMP
 nsLayoutDebuggingTools::Init(nsIDOMWindow *aWin)
diff --git a/layout/tools/layout-debug/src/nsRegressionTester.cpp b/layout/tools/layout-debug/src/nsRegressionTester.cpp
index a0a44addab3bdf962df4c19b62d4cdb1a11a4dea..c0d9d7eeb234a2d6c6f9bc74971005b3f3172477 100644
--- a/layout/tools/layout-debug/src/nsRegressionTester.cpp
+++ b/layout/tools/layout-debug/src/nsRegressionTester.cpp
@@ -38,7 +38,7 @@ nsRegressionTester::~nsRegressionTester()
 {
 }
 
-NS_IMPL_ISUPPORTS1(nsRegressionTester, nsILayoutRegressionTester)
+NS_IMPL_ISUPPORTS(nsRegressionTester, nsILayoutRegressionTester)
 
 NS_IMETHODIMP
 nsRegressionTester::DumpFrameModel(nsIDOMWindow *aWindowToDump,
diff --git a/layout/xul/nsBoxLayout.cpp b/layout/xul/nsBoxLayout.cpp
index 223cef7f5f4600c2fe39cec1139efa883c66f6c6..4783f0269c7dfbd5b22ce3cd49f1d62b6b695cdd 100644
--- a/layout/xul/nsBoxLayout.cpp
+++ b/layout/xul/nsBoxLayout.cpp
@@ -91,4 +91,4 @@ nsBoxLayout::AddSmallestSize(nsSize& aSize, const nsSize& aSize2)
      aSize.height = aSize2.height;
 }
 
-NS_IMPL_ISUPPORTS1(nsBoxLayout, nsBoxLayout)
+NS_IMPL_ISUPPORTS(nsBoxLayout, nsBoxLayout)
diff --git a/layout/xul/nsImageBoxFrame.cpp b/layout/xul/nsImageBoxFrame.cpp
index c733ca5efbb515de5d3ece43f4c3b9d2c4b2ee34..8321c55b884eee1590c0a36f20e4ef525fe27cf3 100644
--- a/layout/xul/nsImageBoxFrame.cpp
+++ b/layout/xul/nsImageBoxFrame.cpp
@@ -729,7 +729,7 @@ nsresult nsImageBoxFrame::FrameChanged(imgIRequest *aRequest)
   return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS2(nsImageBoxListener, imgINotificationObserver, imgIOnloadBlocker)
+NS_IMPL_ISUPPORTS(nsImageBoxListener, imgINotificationObserver, imgIOnloadBlocker)
 
 nsImageBoxListener::nsImageBoxListener()
 {
diff --git a/layout/xul/nsListBoxBodyFrame.cpp b/layout/xul/nsListBoxBodyFrame.cpp
index 677fe3c266a237d1bf357281fe1e8e8a82b6e29b..14234f61e951fde29227a1b7961ba5a4e6f121da 100644
--- a/layout/xul/nsListBoxBodyFrame.cpp
+++ b/layout/xul/nsListBoxBodyFrame.cpp
@@ -132,7 +132,7 @@ nsListScrollSmoother::Stop()
   }
 }
 
-NS_IMPL_ISUPPORTS1(nsListScrollSmoother, nsITimerCallback)
+NS_IMPL_ISUPPORTS(nsListScrollSmoother, nsITimerCallback)
 
 /////////////// nsListBoxBodyFrame //////////////////
 
diff --git a/layout/xul/nsListBoxObject.cpp b/layout/xul/nsListBoxObject.cpp
index 8464e29f21a97f2539e79a0f7eec2b71e33adc79..798978cabc66da188ffd7b73c0dee3c8bf3157f5 100644
--- a/layout/xul/nsListBoxObject.cpp
+++ b/layout/xul/nsListBoxObject.cpp
@@ -34,8 +34,8 @@ protected:
   nsListBoxBodyFrame *mListBoxBody;
 };
 
-NS_IMPL_ISUPPORTS_INHERITED2(nsListBoxObject, nsBoxObject, nsIListBoxObject,
-                             nsPIListBoxObject)
+NS_IMPL_ISUPPORTS_INHERITED(nsListBoxObject, nsBoxObject, nsIListBoxObject,
+                            nsPIListBoxObject)
 
 nsListBoxObject::nsListBoxObject()
   : mListBoxBody(nullptr)
diff --git a/layout/xul/nsMenuBarListener.cpp b/layout/xul/nsMenuBarListener.cpp
index a1c87437c7a58aa4336774dca7b7168105aacf1a..a396fcabffefc0819f9eb21c53f23d3b3598ebd3 100644
--- a/layout/xul/nsMenuBarListener.cpp
+++ b/layout/xul/nsMenuBarListener.cpp
@@ -27,7 +27,7 @@ using namespace mozilla;
  * nsMenuBarListener implementation
  */
 
-NS_IMPL_ISUPPORTS1(nsMenuBarListener, nsIDOMEventListener)
+NS_IMPL_ISUPPORTS(nsMenuBarListener, nsIDOMEventListener)
 
 #define MODIFIER_SHIFT    1
 #define MODIFIER_CONTROL  2
diff --git a/layout/xul/nsMenuBoxObject.cpp b/layout/xul/nsMenuBoxObject.cpp
index 3d506969851307e6f84ecf8dff36dcbfb9db9330..837a0fbf17656fb893c4b6277ecbf7d687fab735 100644
--- a/layout/xul/nsMenuBoxObject.cpp
+++ b/layout/xul/nsMenuBoxObject.cpp
@@ -31,7 +31,7 @@ nsMenuBoxObject::~nsMenuBoxObject()
 {
 }
 
-NS_IMPL_ISUPPORTS_INHERITED1(nsMenuBoxObject, nsBoxObject, nsIMenuBoxObject)
+NS_IMPL_ISUPPORTS_INHERITED(nsMenuBoxObject, nsBoxObject, nsIMenuBoxObject)
 
 /* void openMenu (in boolean openFlag); */
 NS_IMETHODIMP nsMenuBoxObject::OpenMenu(bool aOpenFlag)
diff --git a/layout/xul/nsMenuFrame.cpp b/layout/xul/nsMenuFrame.cpp
index c6d0a2a1a883a16da9b8abfef83a95daebeea987..ebd7343c550ce1f152c00816c49b6306c61010d0 100644
--- a/layout/xul/nsMenuFrame.cpp
+++ b/layout/xul/nsMenuFrame.cpp
@@ -1467,7 +1467,7 @@ nsIScrollableFrame* nsMenuFrame::GetScrollTargetFrame()
 }
 
 // nsMenuTimerMediator implementation.
-NS_IMPL_ISUPPORTS1(nsMenuTimerMediator, nsITimerCallback)
+NS_IMPL_ISUPPORTS(nsMenuTimerMediator, nsITimerCallback)
 
 /**
  * Constructs a wrapper around an nsMenuFrame.
diff --git a/layout/xul/nsPopupBoxObject.cpp b/layout/xul/nsPopupBoxObject.cpp
index 8d88f6591ef55edd28b657899dd3552684a0075a..ee446002041e38dbcbc9964d0d26069bb1bab8c4 100644
--- a/layout/xul/nsPopupBoxObject.cpp
+++ b/layout/xul/nsPopupBoxObject.cpp
@@ -33,7 +33,7 @@ protected:
   nsPopupSetFrame* GetPopupSetFrame();
 };
 
-NS_IMPL_ISUPPORTS_INHERITED1(nsPopupBoxObject, nsBoxObject, nsIPopupBoxObject)
+NS_IMPL_ISUPPORTS_INHERITED(nsPopupBoxObject, nsBoxObject, nsIPopupBoxObject)
 
 nsPopupSetFrame*
 nsPopupBoxObject::GetPopupSetFrame()
diff --git a/layout/xul/nsRepeatService.cpp b/layout/xul/nsRepeatService.cpp
index e54ead6843b40f17b39daa572faf5041b855fd3d..919763d4dc045c99fcf24d9e4a0314def4d62ef8 100644
--- a/layout/xul/nsRepeatService.cpp
+++ b/layout/xul/nsRepeatService.cpp
@@ -83,4 +83,4 @@ NS_IMETHODIMP nsRepeatService::Notify(nsITimer *timer)
   return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS1(nsRepeatService, nsITimerCallback)
+NS_IMPL_ISUPPORTS(nsRepeatService, nsITimerCallback)
diff --git a/layout/xul/nsSliderFrame.cpp b/layout/xul/nsSliderFrame.cpp
index a4a49229adddba1fb44976ab869c2a7d30c0a351..b3a259631a3b3210a4a48eacaadc41246e1b0e8d 100644
--- a/layout/xul/nsSliderFrame.cpp
+++ b/layout/xul/nsSliderFrame.cpp
@@ -1157,5 +1157,5 @@ void nsSliderFrame::Notify(void)
     }
 }
 
-NS_IMPL_ISUPPORTS1(nsSliderMediator,
-                   nsIDOMEventListener)
+NS_IMPL_ISUPPORTS(nsSliderMediator,
+                  nsIDOMEventListener)
diff --git a/layout/xul/nsSplitterFrame.cpp b/layout/xul/nsSplitterFrame.cpp
index 2081209bcf8570672ae84cf2ad9cba965f7a8ea7..d686b698ee9262cfea161558a5f5ac154fce9d23 100644
--- a/layout/xul/nsSplitterFrame.cpp
+++ b/layout/xul/nsSplitterFrame.cpp
@@ -124,7 +124,7 @@ public:
 
 };
 
-NS_IMPL_ISUPPORTS1(nsSplitterFrameInner, nsIDOMEventListener)
+NS_IMPL_ISUPPORTS(nsSplitterFrameInner, nsIDOMEventListener)
 
 nsSplitterFrameInner::ResizeType
 nsSplitterFrameInner::GetResizeBefore()
diff --git a/layout/xul/nsXULPopupManager.cpp b/layout/xul/nsXULPopupManager.cpp
index 6e369256feecb08fbd3c77eb9c02ed8f389e20ae..b18672dff82a661cde093b47947cca916e4d0240 100644
--- a/layout/xul/nsXULPopupManager.cpp
+++ b/layout/xul/nsXULPopupManager.cpp
@@ -109,10 +109,10 @@ void nsMenuChainItem::Detach(nsMenuChainItem** aRoot)
   }
 }
 
-NS_IMPL_ISUPPORTS3(nsXULPopupManager,
-                   nsIDOMEventListener,
-                   nsITimerCallback,
-                   nsIObserver)
+NS_IMPL_ISUPPORTS(nsXULPopupManager,
+                  nsIDOMEventListener,
+                  nsITimerCallback,
+                  nsIObserver)
 
 nsXULPopupManager::nsXULPopupManager() :
   mRangeOffset(0),
diff --git a/layout/xul/nsXULTooltipListener.cpp b/layout/xul/nsXULTooltipListener.cpp
index 76d7be2e1031428a7244af6359decfb401bac0e0..0c564ec7244dc6d83cd6c3098351d6cffa88baa5 100644
--- a/layout/xul/nsXULTooltipListener.cpp
+++ b/layout/xul/nsXULTooltipListener.cpp
@@ -72,7 +72,7 @@ nsXULTooltipListener::~nsXULTooltipListener()
   }
 }
 
-NS_IMPL_ISUPPORTS1(nsXULTooltipListener, nsIDOMEventListener)
+NS_IMPL_ISUPPORTS(nsXULTooltipListener, nsIDOMEventListener)
 
 void
 nsXULTooltipListener::MouseOut(nsIDOMEvent* aEvent)
diff --git a/layout/xul/tree/nsTreeImageListener.cpp b/layout/xul/tree/nsTreeImageListener.cpp
index 1680a4b5bc5950c0a620af64b0c4230ac0b74dfc..2a8ab08fd38e8ed36ae1dc392930012acedf8221 100644
--- a/layout/xul/tree/nsTreeImageListener.cpp
+++ b/layout/xul/tree/nsTreeImageListener.cpp
@@ -8,7 +8,7 @@
 #include "imgIRequest.h"
 #include "imgIContainer.h"
 
-NS_IMPL_ISUPPORTS1(nsTreeImageListener, imgINotificationObserver)
+NS_IMPL_ISUPPORTS(nsTreeImageListener, imgINotificationObserver)
 
 nsTreeImageListener::nsTreeImageListener(nsTreeBodyFrame* aTreeFrame)
   : mTreeFrame(aTreeFrame),
diff --git a/media/mtransport/nr_socket_prsock.cpp b/media/mtransport/nr_socket_prsock.cpp
index ef95159ad9bd4854f962f93273ec3a3bab30e394..62c8c171b278cc4770f7a101b05656f175f4b3cf 100644
--- a/media/mtransport/nr_socket_prsock.cpp
+++ b/media/mtransport/nr_socket_prsock.cpp
@@ -657,7 +657,7 @@ abort:
 }
 
 // NrSocketIpc Implementation
-NS_IMPL_ISUPPORTS1(NrSocketIpc, nsIUDPSocketInternal)
+NS_IMPL_ISUPPORTS(NrSocketIpc, nsIUDPSocketInternal)
 
 NrSocketIpc::NrSocketIpc(const nsCOMPtr<nsIEventTarget> &main_thread)
     : err_(false),
diff --git a/media/mtransport/nr_timer.cpp b/media/mtransport/nr_timer.cpp
index 96518b5eed78edbc1f4ba09b8107adbfa3f4b196..ea495b1c41d8e8b4c5eec25dfe1b9c2ae6cecca0 100644
--- a/media/mtransport/nr_timer.cpp
+++ b/media/mtransport/nr_timer.cpp
@@ -90,7 +90,7 @@ protected:
   int line_;
 };
 
-NS_IMPL_ISUPPORTS1(nrappkitTimerCallback, nsITimerCallback)
+NS_IMPL_ISUPPORTS(nrappkitTimerCallback, nsITimerCallback)
 
 NS_IMETHODIMP nrappkitTimerCallback::Notify(nsITimer *timer) {
   r_log(LOG_GENERIC, LOG_DEBUG, "Timer callback fired (set in %s:%d)",
diff --git a/media/mtransport/nriceresolver.cpp b/media/mtransport/nriceresolver.cpp
index 7814bf93e1df33d3e7d7066fa4c9d3d4e8ba3ae3..d4912cfca2e3037293f04f0f7630b0a289f1301c 100644
--- a/media/mtransport/nriceresolver.cpp
+++ b/media/mtransport/nriceresolver.cpp
@@ -218,5 +218,5 @@ int NrIceResolver::PendingResolution::cancel() {
   return 0;
 }
 
-NS_IMPL_ISUPPORTS1(NrIceResolver::PendingResolution, nsIDNSListener);
+NS_IMPL_ISUPPORTS(NrIceResolver::PendingResolution, nsIDNSListener);
 }  // End of namespace mozilla
diff --git a/media/mtransport/stun_udp_socket_filter.cpp b/media/mtransport/stun_udp_socket_filter.cpp
index c5d217ed7030ede3e84bf57c0cc224c7cbb8025c..af1796de4cc9a5e3d0c6315a22a852cdf2d272b6 100644
--- a/media/mtransport/stun_udp_socket_filter.cpp
+++ b/media/mtransport/stun_udp_socket_filter.cpp
@@ -100,7 +100,7 @@ class STUNUDPSocketFilter : public nsIUDPSocketFilter {
   std::set<PendingSTUNRequest> response_allowed_;
 };
 
-NS_IMPL_ISUPPORTS1(STUNUDPSocketFilter, nsIUDPSocketFilter)
+NS_IMPL_ISUPPORTS(STUNUDPSocketFilter, nsIUDPSocketFilter)
 
 NS_IMETHODIMP
 STUNUDPSocketFilter::FilterPacket(const mozilla::net::NetAddr *remote_addr,
@@ -194,7 +194,7 @@ bool STUNUDPSocketFilter::filter_outgoing_packet(const mozilla::net::NetAddr *re
 
 } // anonymous namespace
 
-NS_IMPL_ISUPPORTS1(nsStunUDPSocketFilterHandler, nsIUDPSocketFilterHandler)
+NS_IMPL_ISUPPORTS(nsStunUDPSocketFilterHandler, nsIUDPSocketFilterHandler)
 
 NS_IMETHODIMP nsStunUDPSocketFilterHandler::NewFilter(nsIUDPSocketFilter **result)
 {
diff --git a/media/mtransport/test/sctp_unittest.cpp b/media/mtransport/test/sctp_unittest.cpp
index 034e7875fa9a3ecb6761251427b30e553a8908f5..c2c35b643e31b84cfbde81bf9d42a345d864cbac 100644
--- a/media/mtransport/test/sctp_unittest.cpp
+++ b/media/mtransport/test/sctp_unittest.cpp
@@ -57,7 +57,7 @@ class SendPeriodic : public nsITimerCallback {
   int to_send_;
 };
 
-NS_IMPL_ISUPPORTS1(SendPeriodic, nsITimerCallback)
+NS_IMPL_ISUPPORTS(SendPeriodic, nsITimerCallback)
 
 
 class TransportTestPeer : public sigslot::has_slots<> {
diff --git a/media/mtransport/transportlayerloopback.cpp b/media/mtransport/transportlayerloopback.cpp
index 4f4e81bf33936b7324bf63f6a8b500df5046d42f..a1a3d2ccdc6c7d29e17aab2901089a6e1df23fca 100644
--- a/media/mtransport/transportlayerloopback.cpp
+++ b/media/mtransport/transportlayerloopback.cpp
@@ -108,7 +108,7 @@ void TransportLayerLoopback::DeliverPackets() {
   }
 }
 
-NS_IMPL_ISUPPORTS1(TransportLayerLoopback::Deliverer, nsITimerCallback)
+NS_IMPL_ISUPPORTS(TransportLayerLoopback::Deliverer, nsITimerCallback)
 
 NS_IMETHODIMP TransportLayerLoopback::Deliverer::Notify(nsITimer *timer) {
   if (!layer_)
diff --git a/media/webrtc/signaling/src/peerconnection/PeerConnectionCtx.cpp b/media/webrtc/signaling/src/peerconnection/PeerConnectionCtx.cpp
index c4d7cbc28413e0157aab5a1f82711002e1bee7e7..6d58a026081a0a9366fd6a272b6a4916c4b53b79 100644
--- a/media/webrtc/signaling/src/peerconnection/PeerConnectionCtx.cpp
+++ b/media/webrtc/signaling/src/peerconnection/PeerConnectionCtx.cpp
@@ -159,7 +159,7 @@ public:
   }
 };
 
-NS_IMPL_ISUPPORTS1(PeerConnectionCtxShutdown, nsIObserver);
+NS_IMPL_ISUPPORTS(PeerConnectionCtxShutdown, nsIObserver);
 }
 
 using namespace mozilla;
diff --git a/media/webrtc/signaling/test/FakeMediaStreamsImpl.h b/media/webrtc/signaling/test/FakeMediaStreamsImpl.h
index d3952528c1d24b30ff5f5ab9ede060c3dd16054d..a1e5fa8b0713e4c808c6d12e2ac52fef0cf96359 100644
--- a/media/webrtc/signaling/test/FakeMediaStreamsImpl.h
+++ b/media/webrtc/signaling/test/FakeMediaStreamsImpl.h
@@ -16,7 +16,7 @@ void LogLatency(AsyncLatencyLogger::LatencyLogIndex index, uint64_t b, int64_t c
 static const int AUDIO_BUFFER_SIZE = 1600;
 static const int NUM_CHANNELS      = 2;
 
-NS_IMPL_ISUPPORTS1(Fake_DOMMediaStream, nsIDOMMediaStream)
+NS_IMPL_ISUPPORTS(Fake_DOMMediaStream, nsIDOMMediaStream)
 
 // Fake_SourceMediaStream
 nsresult Fake_SourceMediaStream::Start() {
@@ -109,7 +109,7 @@ void Fake_AudioStreamSource::Periodic() {
 
 
 // Fake_MediaPeriodic
-NS_IMPL_ISUPPORTS1(Fake_MediaPeriodic, nsITimerCallback)
+NS_IMPL_ISUPPORTS(Fake_MediaPeriodic, nsITimerCallback)
 
 NS_IMETHODIMP
 Fake_MediaPeriodic::Notify(nsITimer *timer) {
diff --git a/media/webrtc/signaling/test/signaling_unittests.cpp b/media/webrtc/signaling/test/signaling_unittests.cpp
index 2576907e5a68fd2a1b146609283cbeaed18a04b6..a588cad6f2649ee0f673e6ff41f3efcf81972ff5 100644
--- a/media/webrtc/signaling/test/signaling_unittests.cpp
+++ b/media/webrtc/signaling/test/signaling_unittests.cpp
@@ -255,7 +255,7 @@ public:
   NS_IMETHODIMP OnIceCandidate(uint16_t level, const char *mid, const char *cand, ER&);
 };
 
-NS_IMPL_ISUPPORTS1(TestObserver, nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(TestObserver, nsISupportsWeakReference)
 
 NS_IMETHODIMP
 TestObserver::OnCreateOfferSuccess(const char* offer, ER&)
diff --git a/mobile/android/components/build/nsAndroidHistory.cpp b/mobile/android/components/build/nsAndroidHistory.cpp
index db49ef53b910669d76a535aea393f408495f2527..6ee73a489631504ea256b37967198221aca8eb6f 100644
--- a/mobile/android/components/build/nsAndroidHistory.cpp
+++ b/mobile/android/components/build/nsAndroidHistory.cpp
@@ -15,7 +15,7 @@
 using namespace mozilla;
 using mozilla::dom::Link;
 
-NS_IMPL_ISUPPORTS2(nsAndroidHistory, IHistory, nsIRunnable)
+NS_IMPL_ISUPPORTS(nsAndroidHistory, IHistory, nsIRunnable)
 
 nsAndroidHistory* nsAndroidHistory::sHistory = nullptr;
 
diff --git a/mobile/android/components/build/nsShellService.cpp b/mobile/android/components/build/nsShellService.cpp
index df24e9bdd6c551fa146e850802205db7e1239bbf..96949483e2c49f5a7ede1910d065f5ec9c3c93ea 100644
--- a/mobile/android/components/build/nsShellService.cpp
+++ b/mobile/android/components/build/nsShellService.cpp
@@ -10,7 +10,7 @@
 
 using namespace mozilla::widget::android;
 
-NS_IMPL_ISUPPORTS1(nsShellService, nsIShellService)
+NS_IMPL_ISUPPORTS(nsShellService, nsIShellService)
 
 NS_IMETHODIMP
 nsShellService::SwitchTask()
diff --git a/modules/libjar/nsJAR.cpp b/modules/libjar/nsJAR.cpp
index 05ea619a342b3c4e13b92800ec5ab9700115a23f..4fc562ea76dc26885e29577c8d34d07a98e970f1 100644
--- a/modules/libjar/nsJAR.cpp
+++ b/modules/libjar/nsJAR.cpp
@@ -91,7 +91,7 @@ nsJAR::~nsJAR()
   Close();
 }
 
-NS_IMPL_QUERY_INTERFACE1(nsJAR, nsIZipReader)
+NS_IMPL_QUERY_INTERFACE(nsJAR, nsIZipReader)
 NS_IMPL_ADDREF(nsJAR)
 
 // Custom Release method works with nsZipReaderCache...
@@ -847,7 +847,7 @@ nsresult nsJAR::CalculateDigest(const char* aInBuf, uint32_t aLen,
   return hasher->Finish(true, digest);
 }
 
-NS_IMPL_ISUPPORTS1(nsJAREnumerator, nsIUTF8StringEnumerator)
+NS_IMPL_ISUPPORTS(nsJAREnumerator, nsIUTF8StringEnumerator)
 
 //----------------------------------------------
 // nsJAREnumerator::HasMore
@@ -889,7 +889,7 @@ nsJAREnumerator::GetNext(nsACString& aResult)
 }
 
 
-NS_IMPL_ISUPPORTS1(nsJARItem, nsIZipEntry)
+NS_IMPL_ISUPPORTS(nsJARItem, nsIZipEntry)
 
 nsJARItem::nsJARItem(nsZipItem* aZipItem)
     : mSize(aZipItem->Size()),
@@ -1002,7 +1002,7 @@ nsJARItem::GetPermissions(uint32_t* aPermissions)
 ////////////////////////////////////////////////////////////////////////////////
 // nsIZipReaderCache
 
-NS_IMPL_ISUPPORTS3(nsZipReaderCache, nsIZipReaderCache, nsIObserver, nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(nsZipReaderCache, nsIZipReaderCache, nsIObserver, nsISupportsWeakReference)
 
 nsZipReaderCache::nsZipReaderCache()
   : mLock("nsZipReaderCache.mLock")
diff --git a/modules/libjar/nsJARChannel.cpp b/modules/libjar/nsJARChannel.cpp
index 05d868a42c3df9c602ae12b50ae2f9974ea6ae3c..d19097378166b3d2a7a28f6e4d59574fa95f9a9c 100644
--- a/modules/libjar/nsJARChannel.cpp
+++ b/modules/libjar/nsJARChannel.cpp
@@ -104,7 +104,7 @@ private:
     int64_t                     mContentLength;
 };
 
-NS_IMPL_ISUPPORTS1(nsJARInputThunk, nsIInputStream)
+NS_IMPL_ISUPPORTS(nsJARInputThunk, nsIInputStream)
 
 nsresult
 nsJARInputThunk::Init()
@@ -216,15 +216,15 @@ nsJARChannel::~nsJARChannel()
     NS_RELEASE(handler); // nullptr parameter
 }
 
-NS_IMPL_ISUPPORTS_INHERITED7(nsJARChannel,
-                             nsHashPropertyBag,
-                             nsIRequest,
-                             nsIChannel,
-                             nsIStreamListener,
-                             nsIRequestObserver,
-                             nsIDownloadObserver,
-                             nsIRemoteOpenFileListener,
-                             nsIJARChannel)
+NS_IMPL_ISUPPORTS_INHERITED(nsJARChannel,
+                            nsHashPropertyBag,
+                            nsIRequest,
+                            nsIChannel,
+                            nsIStreamListener,
+                            nsIRequestObserver,
+                            nsIDownloadObserver,
+                            nsIRemoteOpenFileListener,
+                            nsIJARChannel)
 
 nsresult 
 nsJARChannel::Init(nsIURI *uri)
diff --git a/modules/libjar/nsJARInputStream.cpp b/modules/libjar/nsJARInputStream.cpp
index 0834a4ab6b3fb0a9e5ed16fc262e663f346fe6da..62d24d7edd641ed112432c3f642cc9de817488ce 100644
--- a/modules/libjar/nsJARInputStream.cpp
+++ b/modules/libjar/nsJARInputStream.cpp
@@ -22,7 +22,7 @@
  *  nsISupports implementation
  *--------------------------------------------*/
 
-NS_IMPL_ISUPPORTS1(nsJARInputStream, nsIInputStream)
+NS_IMPL_ISUPPORTS(nsJARInputStream, nsIInputStream)
 
 /*----------------------------------------------------------
  * nsJARInputStream implementation
diff --git a/modules/libjar/nsJARProtocolHandler.cpp b/modules/libjar/nsJARProtocolHandler.cpp
index 0bce0d7e6dfcf32fd36aa0f2f4eb33187b900b54..c0224bb0a06a7c43c631aa318a0d8cf4dc696024 100644
--- a/modules/libjar/nsJARProtocolHandler.cpp
+++ b/modules/libjar/nsJARProtocolHandler.cpp
@@ -123,10 +123,10 @@ nsJARProtocolHandler::RemoteOpenFileComplete(nsIHashable *aRemoteFile,
     }
 }
 
-NS_IMPL_ISUPPORTS3(nsJARProtocolHandler,
-                              nsIJARProtocolHandler,
-                              nsIProtocolHandler,
-                              nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(nsJARProtocolHandler,
+                  nsIJARProtocolHandler,
+                  nsIProtocolHandler,
+                  nsISupportsWeakReference)
 
 nsJARProtocolHandler*
 nsJARProtocolHandler::GetSingleton()
diff --git a/modules/libjar/zipwriter/src/nsDeflateConverter.cpp b/modules/libjar/zipwriter/src/nsDeflateConverter.cpp
index 3882579572ee490755aeb3e4a3377c423dd96bba..77eb825db2dde6f6726e14c3596eb4db31994d1f 100644
--- a/modules/libjar/zipwriter/src/nsDeflateConverter.cpp
+++ b/modules/libjar/zipwriter/src/nsDeflateConverter.cpp
@@ -20,9 +20,9 @@
  * nsDeflateConverter is a stream converter applies the deflate compression
  * method to the data.
  */
-NS_IMPL_ISUPPORTS3(nsDeflateConverter, nsIStreamConverter,
-                                       nsIStreamListener,
-                                       nsIRequestObserver)
+NS_IMPL_ISUPPORTS(nsDeflateConverter, nsIStreamConverter,
+                  nsIStreamListener,
+                  nsIRequestObserver)
 
 nsresult nsDeflateConverter::Init()
 {
diff --git a/modules/libjar/zipwriter/src/nsZipDataStream.cpp b/modules/libjar/zipwriter/src/nsZipDataStream.cpp
index d9edb4e1008bc34a2365162743b9d9daeedb4840..f7fcb622a58f0afaefda2dcd4b55fc2fea26d259 100644
--- a/modules/libjar/zipwriter/src/nsZipDataStream.cpp
+++ b/modules/libjar/zipwriter/src/nsZipDataStream.cpp
@@ -22,8 +22,8 @@
  * Currently only the deflate compression method is supported.
  * The CRC checksum for the entry's data is also generated here.
  */
-NS_IMPL_ISUPPORTS2(nsZipDataStream, nsIStreamListener,
-                                               nsIRequestObserver)
+NS_IMPL_ISUPPORTS(nsZipDataStream, nsIStreamListener,
+                  nsIRequestObserver)
 
 nsresult nsZipDataStream::Init(nsZipWriter *aWriter,
                                nsIOutputStream *aStream,
diff --git a/modules/libjar/zipwriter/src/nsZipHeader.cpp b/modules/libjar/zipwriter/src/nsZipHeader.cpp
index b9a2220c8603843e5fa4b76b78845f47fd1801ea..c377261352a8395093ffe51419e4349176d3ab92 100644
--- a/modules/libjar/zipwriter/src/nsZipHeader.cpp
+++ b/modules/libjar/zipwriter/src/nsZipHeader.cpp
@@ -21,7 +21,7 @@
 /**
  * nsZipHeader represents an entry from a zip file.
  */
-NS_IMPL_ISUPPORTS1(nsZipHeader, nsIZipEntry)
+NS_IMPL_ISUPPORTS(nsZipHeader, nsIZipEntry)
 
 /* readonly attribute unsigned short compression; */
 NS_IMETHODIMP nsZipHeader::GetCompression(uint16_t *aCompression)
diff --git a/modules/libjar/zipwriter/src/nsZipWriter.cpp b/modules/libjar/zipwriter/src/nsZipWriter.cpp
index 6a74ea902fe11e122f98c85be3e015e3c4efa8d5..01357c78ea23f900b939717859884fb1eb31f5ea 100644
--- a/modules/libjar/zipwriter/src/nsZipWriter.cpp
+++ b/modules/libjar/zipwriter/src/nsZipWriter.cpp
@@ -43,8 +43,8 @@
  * [central directory]
  * [end of central directory record]
  */
-NS_IMPL_ISUPPORTS2(nsZipWriter, nsIZipWriter,
-                                nsIRequestObserver)
+NS_IMPL_ISUPPORTS(nsZipWriter, nsIZipWriter,
+                  nsIRequestObserver)
 
 nsZipWriter::nsZipWriter()
 {
diff --git a/modules/libpref/src/Preferences.cpp b/modules/libpref/src/Preferences.cpp
index 5c53a27eb874fbfb15c5254adc6ca1c1621fa058..205bc9f460a84a986ee1fe06323df2ffbfc9a5a7 100644
--- a/modules/libpref/src/Preferences.cpp
+++ b/modules/libpref/src/Preferences.cpp
@@ -154,7 +154,7 @@ public:
   nsTArray<void*> mClosures;
 };
 
-NS_IMPL_ISUPPORTS1(ValueObserver, nsIObserver)
+NS_IMPL_ISUPPORTS(ValueObserver, nsIObserver)
 
 NS_IMETHODIMP
 ValueObserver::Observe(nsISupports     *aSubject,
@@ -240,7 +240,7 @@ protected:
                                         void* aClosure);
 };
 
-NS_IMPL_ISUPPORTS1(PreferenceServiceReporter, nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(PreferenceServiceReporter, nsIMemoryReporter)
 
 struct PreferencesReferentCount {
   PreferencesReferentCount() : numStrong(0), numWeakAlive(0), numWeakDead(0) {}
diff --git a/modules/libpref/src/nsPrefBranch.cpp b/modules/libpref/src/nsPrefBranch.cpp
index 6242546a488aa82e73bf51d65436b3f01045077d..676ea030a9f927ab78c50d6aa09eca665735743b 100644
--- a/modules/libpref/src/nsPrefBranch.cpp
+++ b/modules/libpref/src/nsPrefBranch.cpp
@@ -859,7 +859,7 @@ nsPrefLocalizedString::SetDataWithLength(uint32_t aLength,
 // nsRelativeFilePref
 //----------------------------------------------------------------------------
 
-NS_IMPL_ISUPPORTS1(nsRelativeFilePref, nsIRelativeFilePref)
+NS_IMPL_ISUPPORTS(nsRelativeFilePref, nsIRelativeFilePref)
 
 nsRelativeFilePref::nsRelativeFilePref()
 {
diff --git a/netwerk/base/src/ArrayBufferInputStream.cpp b/netwerk/base/src/ArrayBufferInputStream.cpp
index 509979953b9de2b36ef99c549f51bd299d81e71e..617bdf98bb4f0f3e46f9a2478151010001f2069f 100644
--- a/netwerk/base/src/ArrayBufferInputStream.cpp
+++ b/netwerk/base/src/ArrayBufferInputStream.cpp
@@ -9,7 +9,7 @@
 #include "jsapi.h"
 #include "jsfriendapi.h"
 
-NS_IMPL_ISUPPORTS2(ArrayBufferInputStream, nsIArrayBufferInputStream, nsIInputStream);
+NS_IMPL_ISUPPORTS(ArrayBufferInputStream, nsIArrayBufferInputStream, nsIInputStream);
 
 ArrayBufferInputStream::ArrayBufferInputStream()
 : mBuffer(nullptr)
diff --git a/netwerk/base/src/BackgroundFileSaver.cpp b/netwerk/base/src/BackgroundFileSaver.cpp
index 0f36eca3721e3a0d76c96d26e74924f785e11794..73d3483e6ae0d4e4dae38e8271022221fbcd02e9 100644
--- a/netwerk/base/src/BackgroundFileSaver.cpp
+++ b/netwerk/base/src/BackgroundFileSaver.cpp
@@ -935,11 +935,11 @@ BackgroundFileSaver::ExtractSignatureInfo(const nsAString& filePath)
 ////////////////////////////////////////////////////////////////////////////////
 //// BackgroundFileSaverOutputStream
 
-NS_IMPL_ISUPPORTS4(BackgroundFileSaverOutputStream,
-                   nsIBackgroundFileSaver,
-                   nsIOutputStream,
-                   nsIAsyncOutputStream,
-                   nsIOutputStreamCallback)
+NS_IMPL_ISUPPORTS(BackgroundFileSaverOutputStream,
+                  nsIBackgroundFileSaver,
+                  nsIOutputStream,
+                  nsIAsyncOutputStream,
+                  nsIOutputStreamCallback)
 
 BackgroundFileSaverOutputStream::BackgroundFileSaverOutputStream()
 : BackgroundFileSaver()
@@ -1038,10 +1038,10 @@ BackgroundFileSaverOutputStream::OnOutputStreamReady(
 ////////////////////////////////////////////////////////////////////////////////
 //// BackgroundFileSaverStreamListener
 
-NS_IMPL_ISUPPORTS3(BackgroundFileSaverStreamListener,
-                   nsIBackgroundFileSaver,
-                   nsIRequestObserver,
-                   nsIStreamListener)
+NS_IMPL_ISUPPORTS(BackgroundFileSaverStreamListener,
+                  nsIBackgroundFileSaver,
+                  nsIRequestObserver,
+                  nsIStreamListener)
 
 BackgroundFileSaverStreamListener::BackgroundFileSaverStreamListener()
 : BackgroundFileSaver()
@@ -1202,8 +1202,8 @@ BackgroundFileSaverStreamListener::NotifySuspendOrResume()
 
 ////////////////////////////////////////////////////////////////////////////////
 //// DigestOutputStream
-NS_IMPL_ISUPPORTS1(DigestOutputStream,
-                   nsIOutputStream)
+NS_IMPL_ISUPPORTS(DigestOutputStream,
+                  nsIOutputStream)
 
 DigestOutputStream::DigestOutputStream(nsIOutputStream* aStream,
                                        PK11Context* aContext) :
diff --git a/netwerk/base/src/Dashboard.cpp b/netwerk/base/src/Dashboard.cpp
index a15182359daccc23b2ebeaa5f78365af56d1bc99..9f35192da2b156472cbc75f5df389df457b836f4 100644
--- a/netwerk/base/src/Dashboard.cpp
+++ b/netwerk/base/src/Dashboard.cpp
@@ -159,7 +159,7 @@ public:
     nsString mStatus;
 };
 
-NS_IMPL_ISUPPORTS2(ConnectionData, nsITransportEventSink, nsITimerCallback)
+NS_IMPL_ISUPPORTS(ConnectionData, nsITransportEventSink, nsITimerCallback)
 
 NS_IMETHODIMP
 ConnectionData::OnTransportStatus(nsITransport *aTransport, nsresult aStatus,
@@ -271,7 +271,7 @@ public:
     nsresult mStatus;
 };
 
-NS_IMPL_ISUPPORTS1(LookupHelper, nsIDNSListener)
+NS_IMPL_ISUPPORTS(LookupHelper, nsIDNSListener)
 
 NS_IMETHODIMP
 LookupHelper::OnLookupComplete(nsICancelable *aRequest,
@@ -327,7 +327,7 @@ LookupHelper::ConstructAnswer(LookupArgument *aArgument)
     return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS2(Dashboard, nsIDashboard, nsIDashboardEventNotifier)
+NS_IMPL_ISUPPORTS(Dashboard, nsIDashboard, nsIDashboardEventNotifier)
 
 Dashboard::Dashboard()
 {
diff --git a/netwerk/base/src/EventTokenBucket.cpp b/netwerk/base/src/EventTokenBucket.cpp
index 0f013d6a79f9775641ee1605397b4ff33ddbdb8c..ef0da6651652dba3a96e574e87421968a38ee28f 100644
--- a/netwerk/base/src/EventTokenBucket.cpp
+++ b/netwerk/base/src/EventTokenBucket.cpp
@@ -43,7 +43,7 @@ private:
   ATokenBucketEvent *mEvent;
 };
 
-NS_IMPL_ISUPPORTS1(TokenBucketCancelable, nsICancelable)
+NS_IMPL_ISUPPORTS(TokenBucketCancelable, nsICancelable)
 
 TokenBucketCancelable::TokenBucketCancelable(ATokenBucketEvent *event)
   : mEvent(event)
@@ -73,7 +73,7 @@ TokenBucketCancelable::Fire()
 // EventTokenBucket
 ////////////////////////////////////////////
 
-NS_IMPL_ISUPPORTS1(EventTokenBucket, nsITimerCallback)
+NS_IMPL_ISUPPORTS(EventTokenBucket, nsITimerCallback)
 
 // by default 1hz with no burst
 EventTokenBucket::EventTokenBucket(uint32_t eventsPerSecond,
diff --git a/netwerk/base/src/LoadContextInfo.cpp b/netwerk/base/src/LoadContextInfo.cpp
index 91c7bca1e3ea621854fea19d404f9d05a61b1feb..1f27489d868ae32b4c18787b8e3fda161f2902d4 100644
--- a/netwerk/base/src/LoadContextInfo.cpp
+++ b/netwerk/base/src/LoadContextInfo.cpp
@@ -11,7 +11,7 @@
 namespace mozilla {
 namespace net {
 
-NS_IMPL_ISUPPORTS1(LoadContextInfo, nsILoadContextInfo)
+NS_IMPL_ISUPPORTS(LoadContextInfo, nsILoadContextInfo)
 
 LoadContextInfo::LoadContextInfo(bool aIsPrivate, uint32_t aAppId, bool aIsInBrowser, bool aIsAnonymous)
   : mAppId(aAppId)
diff --git a/netwerk/base/src/ProxyAutoConfig.cpp b/netwerk/base/src/ProxyAutoConfig.cpp
index d01733217989b429530b174ad3b335d3f2fb5f8d..176e91436103aeb75691f2ce2091db5c6eca80ea 100644
--- a/netwerk/base/src/ProxyAutoConfig.cpp
+++ b/netwerk/base/src/ProxyAutoConfig.cpp
@@ -288,7 +288,7 @@ public:
   nsCOMPtr<nsIDNSRecord>  mResponse;
   nsCOMPtr<nsITimer>      mTimer;
 };
-NS_IMPL_ISUPPORTS2(PACResolver, nsIDNSListener, nsITimerCallback)
+NS_IMPL_ISUPPORTS(PACResolver, nsIDNSListener, nsITimerCallback)
 
 static
 void PACLogToConsole(nsString &aMessage)
diff --git a/netwerk/base/src/RedirectChannelRegistrar.cpp b/netwerk/base/src/RedirectChannelRegistrar.cpp
index ab2e1961ed9f8880b229fc17a151d924b3fa873e..182185f6cf028e9b32987bc3a68434ed491717ed 100644
--- a/netwerk/base/src/RedirectChannelRegistrar.cpp
+++ b/netwerk/base/src/RedirectChannelRegistrar.cpp
@@ -7,7 +7,7 @@
 namespace mozilla {
 namespace net {
 
-NS_IMPL_ISUPPORTS1(RedirectChannelRegistrar, nsIRedirectChannelRegistrar)
+NS_IMPL_ISUPPORTS(RedirectChannelRegistrar, nsIRedirectChannelRegistrar)
 
 RedirectChannelRegistrar::RedirectChannelRegistrar()
   : mRealChannels(64)
diff --git a/netwerk/base/src/Seer.cpp b/netwerk/base/src/Seer.cpp
index a7319afca4fe366375a983297028a3ef7205aea3..bb8ef3bb44a3317be5726dd972ff7f2e8b8b6ff9 100644
--- a/netwerk/base/src/Seer.cpp
+++ b/netwerk/base/src/Seer.cpp
@@ -149,7 +149,7 @@ public:
   { }
 };
 
-NS_IMPL_ISUPPORTS1(SeerDNSListener, nsIDNSListener);
+NS_IMPL_ISUPPORTS(SeerDNSListener, nsIDNSListener);
 
 NS_IMETHODIMP
 SeerDNSListener::OnLookupComplete(nsICancelable *request,
@@ -172,11 +172,11 @@ static PRLogModuleInfo *gSeerLog = nullptr;
 #define SEER_LOG(args)
 #endif
 
-NS_IMPL_ISUPPORTS4(Seer,
-                   nsINetworkSeer,
-                   nsIObserver,
-                   nsISpeculativeConnectionOverrider,
-                   nsIInterfaceRequestor)
+NS_IMPL_ISUPPORTS(Seer,
+                  nsINetworkSeer,
+                  nsIObserver,
+                  nsISpeculativeConnectionOverrider,
+                  nsIInterfaceRequestor)
 
 Seer::Seer()
   :mInitialized(false)
diff --git a/netwerk/base/src/StreamingProtocolService.cpp b/netwerk/base/src/StreamingProtocolService.cpp
index 9a6a7306255a2988ab1c1f072eb9675f769d2ee6..3e1396f85de71b5587dddeedc1b4329739ebafc4 100644
--- a/netwerk/base/src/StreamingProtocolService.cpp
+++ b/netwerk/base/src/StreamingProtocolService.cpp
@@ -17,8 +17,8 @@
 namespace mozilla {
 namespace net {
 
-NS_IMPL_ISUPPORTS1(StreamingProtocolControllerService,
-                   nsIStreamingProtocolControllerService)
+NS_IMPL_ISUPPORTS(StreamingProtocolControllerService,
+                  nsIStreamingProtocolControllerService)
 
 /* static */
 StaticRefPtr<StreamingProtocolControllerService> sSingleton;
diff --git a/netwerk/base/src/Tickler.cpp b/netwerk/base/src/Tickler.cpp
index 6ee66029c6ee8ce1535c02aae63ed121abc5af6a..0b8b619ba47e38acbea57972db407da4e5ed9478 100644
--- a/netwerk/base/src/Tickler.cpp
+++ b/netwerk/base/src/Tickler.cpp
@@ -18,7 +18,7 @@
 namespace mozilla {
 namespace net {
 
-NS_IMPL_ISUPPORTS2(Tickler, nsISupportsWeakReference, Tickler)
+NS_IMPL_ISUPPORTS(Tickler, nsISupportsWeakReference, Tickler)
 
 Tickler::Tickler()
     : mLock("Tickler::mLock")
@@ -257,7 +257,7 @@ void Tickler::SetIPV4Port(uint16_t port)
   mAddr.inet.port = port;
 }
 
-NS_IMPL_ISUPPORTS1(TicklerTimer, nsITimerCallback)
+NS_IMPL_ISUPPORTS(TicklerTimer, nsITimerCallback)
 
 NS_IMETHODIMP TicklerTimer::Notify(nsITimer *timer)
 {
diff --git a/netwerk/base/src/nsAsyncRedirectVerifyHelper.cpp b/netwerk/base/src/nsAsyncRedirectVerifyHelper.cpp
index b4cfc7ba0e3078d4477663a89c0cee48a16a22f6..b48ec6284d8dd57be0939071fea663c258aad246 100644
--- a/netwerk/base/src/nsAsyncRedirectVerifyHelper.cpp
+++ b/netwerk/base/src/nsAsyncRedirectVerifyHelper.cpp
@@ -32,9 +32,9 @@ GetRedirectLog()
 #define LOG(args)
 #endif
 
-NS_IMPL_ISUPPORTS2(nsAsyncRedirectVerifyHelper,
-                   nsIAsyncVerifyRedirectCallback,
-                   nsIRunnable)
+NS_IMPL_ISUPPORTS(nsAsyncRedirectVerifyHelper,
+                  nsIAsyncVerifyRedirectCallback,
+                  nsIRunnable)
 
 class nsAsyncVerifyRedirectCallbackEvent : public nsRunnable {
 public:
diff --git a/netwerk/base/src/nsAuthInformationHolder.cpp b/netwerk/base/src/nsAuthInformationHolder.cpp
index a1f2acc3eebcdfbed633f4f027bd764a0d4fe620..f52ff5454ae33d2ccd78aa5b405fe73d10edc957 100644
--- a/netwerk/base/src/nsAuthInformationHolder.cpp
+++ b/netwerk/base/src/nsAuthInformationHolder.cpp
@@ -4,7 +4,7 @@
 
 #include "nsAuthInformationHolder.h"
 
-NS_IMPL_ISUPPORTS1(nsAuthInformationHolder, nsIAuthInformation)
+NS_IMPL_ISUPPORTS(nsAuthInformationHolder, nsIAuthInformation)
 
 NS_IMETHODIMP
 nsAuthInformationHolder::GetFlags(uint32_t* aFlags)
diff --git a/netwerk/base/src/nsBase64Encoder.cpp b/netwerk/base/src/nsBase64Encoder.cpp
index 0a00c30fd99ccd26cca3a225f46494459723b65a..f112be750819971a3e54232b83fc24d79ba5e54a 100644
--- a/netwerk/base/src/nsBase64Encoder.cpp
+++ b/netwerk/base/src/nsBase64Encoder.cpp
@@ -7,7 +7,7 @@
 #include "plbase64.h"
 #include "prmem.h"
 
-NS_IMPL_ISUPPORTS1(nsBase64Encoder, nsIOutputStream)
+NS_IMPL_ISUPPORTS(nsBase64Encoder, nsIOutputStream)
 
 NS_IMETHODIMP
 nsBase64Encoder::Close()
diff --git a/netwerk/base/src/nsBaseChannel.cpp b/netwerk/base/src/nsBaseChannel.cpp
index 62ca2a21f93aa2a971309b79a3fea2213345492c..75a769c808e0c79261503aa9536a44bcfbd7a46a 100644
--- a/netwerk/base/src/nsBaseChannel.cpp
+++ b/netwerk/base/src/nsBaseChannel.cpp
@@ -285,16 +285,16 @@ nsBaseChannel::ClassifyURI()
 //-----------------------------------------------------------------------------
 // nsBaseChannel::nsISupports
 
-NS_IMPL_ISUPPORTS_INHERITED8(nsBaseChannel,
-                             nsHashPropertyBag,
-                             nsIRequest,
-                             nsIChannel,
-                             nsIInterfaceRequestor,
-                             nsITransportEventSink,
-                             nsIRequestObserver,
-                             nsIStreamListener,
-                             nsIAsyncVerifyRedirectCallback,
-                             nsIPrivateBrowsingChannel)
+NS_IMPL_ISUPPORTS_INHERITED(nsBaseChannel,
+                            nsHashPropertyBag,
+                            nsIRequest,
+                            nsIChannel,
+                            nsIInterfaceRequestor,
+                            nsITransportEventSink,
+                            nsIRequestObserver,
+                            nsIStreamListener,
+                            nsIAsyncVerifyRedirectCallback,
+                            nsIPrivateBrowsingChannel)
 
 //-----------------------------------------------------------------------------
 // nsBaseChannel::nsIRequest
diff --git a/netwerk/base/src/nsBufferedStreams.cpp b/netwerk/base/src/nsBufferedStreams.cpp
index 7387e5f6cfc29c9821d03ba42b67112646a5b9e8..8e8c35fa4e8e590537763751d107dc7c190e16d7 100644
--- a/netwerk/base/src/nsBufferedStreams.cpp
+++ b/netwerk/base/src/nsBufferedStreams.cpp
@@ -59,7 +59,7 @@ nsBufferedStream::~nsBufferedStream()
     Close();
 }
 
-NS_IMPL_ISUPPORTS1(nsBufferedStream, nsISeekableStream)
+NS_IMPL_ISUPPORTS(nsBufferedStream, nsISeekableStream)
 
 nsresult
 nsBufferedStream::Init(nsISupports* stream, uint32_t bufferSize)
@@ -258,11 +258,11 @@ NS_INTERFACE_MAP_BEGIN(nsBufferedInputStream)
     NS_IMPL_QUERY_CLASSINFO(nsBufferedInputStream)
 NS_INTERFACE_MAP_END_INHERITING(nsBufferedStream)
 
-NS_IMPL_CI_INTERFACE_GETTER4(nsBufferedInputStream,
-                             nsIInputStream,
-                             nsIBufferedInputStream,
-                             nsISeekableStream,
-                             nsIStreamBufferAccess)
+NS_IMPL_CI_INTERFACE_GETTER(nsBufferedInputStream,
+                            nsIInputStream,
+                            nsIBufferedInputStream,
+                            nsISeekableStream,
+                            nsIStreamBufferAccess)
 
 nsresult
 nsBufferedInputStream::Create(nsISupports *aOuter, REFNSIID aIID, void **aResult)
diff --git a/netwerk/base/src/nsChannelClassifier.cpp b/netwerk/base/src/nsChannelClassifier.cpp
index f1c59b3ddd0c27132cc6553090014aaf32b20e5e..d286fc766b1ec235d95f63243ce508cf939a6754 100644
--- a/netwerk/base/src/nsChannelClassifier.cpp
+++ b/netwerk/base/src/nsChannelClassifier.cpp
@@ -21,8 +21,8 @@ static PRLogModuleInfo *gChannelClassifierLog;
 #undef LOG
 #define LOG(args)     PR_LOG(gChannelClassifierLog, PR_LOG_DEBUG, args)
 
-NS_IMPL_ISUPPORTS1(nsChannelClassifier,
-                   nsIURIClassifierCallback)
+NS_IMPL_ISUPPORTS(nsChannelClassifier,
+                  nsIURIClassifierCallback)
 
 nsChannelClassifier::nsChannelClassifier()
 {
diff --git a/netwerk/base/src/nsDNSPrefetch.cpp b/netwerk/base/src/nsDNSPrefetch.cpp
index a9cf8656f83c95914454d30f7729ef72f4b0bcfc..e09315ed1f6002b1c69540d0fea5df23f15488b8 100644
--- a/netwerk/base/src/nsDNSPrefetch.cpp
+++ b/netwerk/base/src/nsDNSPrefetch.cpp
@@ -86,7 +86,7 @@ nsDNSPrefetch::PrefetchHigh(bool refreshDNS)
 }
 
 
-NS_IMPL_ISUPPORTS1(nsDNSPrefetch, nsIDNSListener)
+NS_IMPL_ISUPPORTS(nsDNSPrefetch, nsIDNSListener)
 
 NS_IMETHODIMP
 nsDNSPrefetch::OnLookupComplete(nsICancelable *request,
diff --git a/netwerk/base/src/nsDirectoryIndexStream.cpp b/netwerk/base/src/nsDirectoryIndexStream.cpp
index f5c174f403ef0a5535e8600dd776cd9c3952f2ad..e4ac422c45b923f173a87c4b1a91379a625eda52 100644
--- a/netwerk/base/src/nsDirectoryIndexStream.cpp
+++ b/netwerk/base/src/nsDirectoryIndexStream.cpp
@@ -186,7 +186,7 @@ nsDirectoryIndexStream::Create(nsIFile* aDir, nsIInputStream** aResult)
     return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS1(nsDirectoryIndexStream, nsIInputStream)
+NS_IMPL_ISUPPORTS(nsDirectoryIndexStream, nsIInputStream)
 
 // The below routines are proxied to the UI thread!
 NS_IMETHODIMP
diff --git a/netwerk/base/src/nsDownloader.cpp b/netwerk/base/src/nsDownloader.cpp
index 1595b7db8987099363d08cc71305a4f4ba5883e0..3e6583ca67005d7d5dbc6e8aa38cf7a1886b9ced 100644
--- a/netwerk/base/src/nsDownloader.cpp
+++ b/netwerk/base/src/nsDownloader.cpp
@@ -26,10 +26,10 @@ nsDownloader::~nsDownloader()
     }
 }
 
-NS_IMPL_ISUPPORTS3(nsDownloader,
-                   nsIDownloader,
-                   nsIStreamListener,
-                   nsIRequestObserver)
+NS_IMPL_ISUPPORTS(nsDownloader,
+                  nsIDownloader,
+                  nsIStreamListener,
+                  nsIRequestObserver)
 
 NS_IMETHODIMP
 nsDownloader::Init(nsIDownloadObserver *observer, nsIFile *location)
diff --git a/netwerk/base/src/nsFileStreams.cpp b/netwerk/base/src/nsFileStreams.cpp
index f5f21d6206caa6d4ea618185791990be3db3c42b..2cce0f44d82972281102434b3e1c4efbe8e55b3c 100644
--- a/netwerk/base/src/nsFileStreams.cpp
+++ b/netwerk/base/src/nsFileStreams.cpp
@@ -44,9 +44,9 @@ nsFileStreamBase::~nsFileStreamBase()
     Close();
 }
 
-NS_IMPL_ISUPPORTS2(nsFileStreamBase,
-                   nsISeekableStream,
-                   nsIFileMetadata)
+NS_IMPL_ISUPPORTS(nsFileStreamBase,
+                  nsISeekableStream,
+                  nsIFileMetadata)
 
 NS_IMETHODIMP
 nsFileStreamBase::Seek(int32_t whence, int64_t offset)
@@ -369,11 +369,11 @@ NS_INTERFACE_MAP_BEGIN(nsFileInputStream)
     NS_IMPL_QUERY_CLASSINFO(nsFileInputStream)
 NS_INTERFACE_MAP_END_INHERITING(nsFileStreamBase)
 
-NS_IMPL_CI_INTERFACE_GETTER4(nsFileInputStream,
-                             nsIInputStream,
-                             nsIFileInputStream,
-                             nsISeekableStream,
-                             nsILineInputStream)
+NS_IMPL_CI_INTERFACE_GETTER(nsFileInputStream,
+                            nsIInputStream,
+                            nsIFileInputStream,
+                            nsISeekableStream,
+                            nsILineInputStream)
 
 nsresult
 nsFileInputStream::Create(nsISupports *aOuter, REFNSIID aIID, void **aResult)
@@ -632,11 +632,11 @@ NS_INTERFACE_MAP_BEGIN(nsPartialFileInputStream)
     NS_IMPL_QUERY_CLASSINFO(nsPartialFileInputStream)
 NS_INTERFACE_MAP_END_INHERITING(nsFileStreamBase)
 
-NS_IMPL_CI_INTERFACE_GETTER4(nsPartialFileInputStream,
-                             nsIInputStream,
-                             nsIPartialFileInputStream,
-                             nsISeekableStream,
-                             nsILineInputStream)
+NS_IMPL_CI_INTERFACE_GETTER(nsPartialFileInputStream,
+                            nsIInputStream,
+                            nsIPartialFileInputStream,
+                            nsISeekableStream,
+                            nsILineInputStream)
 
 nsresult
 nsPartialFileInputStream::Create(nsISupports *aOuter, REFNSIID aIID,
@@ -795,10 +795,10 @@ nsPartialFileInputStream::Deserialize(
 ////////////////////////////////////////////////////////////////////////////////
 // nsFileOutputStream
 
-NS_IMPL_ISUPPORTS_INHERITED2(nsFileOutputStream,
-                             nsFileStreamBase,
-                             nsIOutputStream,
-                             nsIFileOutputStream)
+NS_IMPL_ISUPPORTS_INHERITED(nsFileOutputStream,
+                            nsFileStreamBase,
+                            nsIOutputStream,
+                            nsIFileOutputStream)
  
 nsresult
 nsFileOutputStream::Create(nsISupports *aOuter, REFNSIID aIID, void **aResult)
@@ -835,11 +835,11 @@ nsFileOutputStream::Init(nsIFile* file, int32_t ioFlags, int32_t perm,
 ////////////////////////////////////////////////////////////////////////////////
 // nsAtomicFileOutputStream
 
-NS_IMPL_ISUPPORTS_INHERITED3(nsAtomicFileOutputStream,
-                             nsFileOutputStream,
-                             nsISafeOutputStream,
-                             nsIOutputStream,
-                             nsIFileOutputStream)
+NS_IMPL_ISUPPORTS_INHERITED(nsAtomicFileOutputStream,
+                            nsFileOutputStream,
+                            nsISafeOutputStream,
+                            nsIOutputStream,
+                            nsIFileOutputStream)
 
 NS_IMETHODIMP
 nsAtomicFileOutputStream::Init(nsIFile* file, int32_t ioFlags, int32_t perm,
@@ -987,11 +987,11 @@ nsSafeFileOutputStream::Finish()
 ////////////////////////////////////////////////////////////////////////////////
 // nsFileStream
 
-NS_IMPL_ISUPPORTS_INHERITED3(nsFileStream,
-                             nsFileStreamBase,
-                             nsIInputStream,
-                             nsIOutputStream,
-                             nsIFileStream)
+NS_IMPL_ISUPPORTS_INHERITED(nsFileStream,
+                            nsFileStreamBase,
+                            nsIInputStream,
+                            nsIOutputStream,
+                            nsIFileStream)
 
 NS_IMETHODIMP
 nsFileStream::Init(nsIFile* file, int32_t ioFlags, int32_t perm,
diff --git a/netwerk/base/src/nsIOService.cpp b/netwerk/base/src/nsIOService.cpp
index 6712088567f7f5f56563bca3ca2a935d86ab9a56..b64e7d3c7d8b99acd86c9f2a675100cfac184ccc 100644
--- a/netwerk/base/src/nsIOService.cpp
+++ b/netwerk/base/src/nsIOService.cpp
@@ -294,13 +294,13 @@ nsIOService::GetInstance() {
     return gIOService;
 }
 
-NS_IMPL_ISUPPORTS6(nsIOService,
-                   nsIIOService,
-                   nsIIOService2,
-                   nsINetUtil,
-                   nsISpeculativeConnect,
-                   nsIObserver,
-                   nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(nsIOService,
+                  nsIIOService,
+                  nsIIOService2,
+                  nsINetUtil,
+                  nsISpeculativeConnect,
+                  nsIObserver,
+                  nsISupportsWeakReference)
 
 ////////////////////////////////////////////////////////////////////////////////
 
@@ -1194,7 +1194,7 @@ private:
     nsRefPtr<nsIOService>           mIOService;
 };
 
-NS_IMPL_ISUPPORTS1(IOServiceProxyCallback, nsIProtocolProxyCallback)
+NS_IMPL_ISUPPORTS(IOServiceProxyCallback, nsIProtocolProxyCallback)
 
 NS_IMETHODIMP
 IOServiceProxyCallback::OnProxyAvailable(nsICancelable *request, nsIURI *aURI,
diff --git a/netwerk/base/src/nsIncrementalDownload.cpp b/netwerk/base/src/nsIncrementalDownload.cpp
index b7cdd009441cf54898627d8f886d91af977873e8..3a766c1321240b2d42b7197dae640532ec2eff0d 100644
--- a/netwerk/base/src/nsIncrementalDownload.cpp
+++ b/netwerk/base/src/nsIncrementalDownload.cpp
@@ -330,16 +330,16 @@ nsIncrementalDownload::ReadCurrentSize()
 
 // nsISupports
 
-NS_IMPL_ISUPPORTS9(nsIncrementalDownload,
-                   nsIIncrementalDownload,
-                   nsIRequest,
-                   nsIStreamListener,
-                   nsIRequestObserver,
-                   nsIObserver,
-                   nsIInterfaceRequestor,
-                   nsIChannelEventSink,
-                   nsISupportsWeakReference,
-                   nsIAsyncVerifyRedirectCallback)
+NS_IMPL_ISUPPORTS(nsIncrementalDownload,
+                  nsIIncrementalDownload,
+                  nsIRequest,
+                  nsIStreamListener,
+                  nsIRequestObserver,
+                  nsIObserver,
+                  nsIInterfaceRequestor,
+                  nsIChannelEventSink,
+                  nsISupportsWeakReference,
+                  nsIAsyncVerifyRedirectCallback)
 
 // nsIRequest
 
diff --git a/netwerk/base/src/nsInputStreamChannel.cpp b/netwerk/base/src/nsInputStreamChannel.cpp
index 7ce942f0c6ab02292eb56a84d2cb0632fae286c9..5aa4d70abddbf04ac4411c9cd02af44b5da29623 100644
--- a/netwerk/base/src/nsInputStreamChannel.cpp
+++ b/netwerk/base/src/nsInputStreamChannel.cpp
@@ -38,9 +38,9 @@ nsInputStreamChannel::OpenContentStream(bool async, nsIInputStream **result,
 //-----------------------------------------------------------------------------
 // nsInputStreamChannel::nsISupports
 
-NS_IMPL_ISUPPORTS_INHERITED1(nsInputStreamChannel,
-                             nsBaseChannel,
-                             nsIInputStreamChannel)
+NS_IMPL_ISUPPORTS_INHERITED(nsInputStreamChannel,
+                            nsBaseChannel,
+                            nsIInputStreamChannel)
 
 //-----------------------------------------------------------------------------
 // nsInputStreamChannel::nsIInputStreamChannel
diff --git a/netwerk/base/src/nsInputStreamPump.cpp b/netwerk/base/src/nsInputStreamPump.cpp
index 6df1266f40849069d988a81662ef51ef310ca49d..e805f5cd9545292a3655759e2080ca419f8facdb 100644
--- a/netwerk/base/src/nsInputStreamPump.cpp
+++ b/netwerk/base/src/nsInputStreamPump.cpp
@@ -159,11 +159,11 @@ nsInputStreamPump::EnsureWaiting()
 // although this class can only be accessed from one thread at a time, we do
 // allow its ownership to move from thread to thread, assuming the consumer
 // understands the limitations of this.
-NS_IMPL_ISUPPORTS4(nsInputStreamPump,
-                   nsIRequest,
-                   nsIThreadRetargetableRequest,
-                   nsIInputStreamCallback,
-                   nsIInputStreamPump)
+NS_IMPL_ISUPPORTS(nsInputStreamPump,
+                  nsIRequest,
+                  nsIThreadRetargetableRequest,
+                  nsIInputStreamCallback,
+                  nsIInputStreamPump)
 
 //-----------------------------------------------------------------------------
 // nsInputStreamPump::nsIRequest
diff --git a/netwerk/base/src/nsLoadGroup.cpp b/netwerk/base/src/nsLoadGroup.cpp
index 6f2eb646d9a0ff54acd38deb5a263cc3bfb7bdb3..6d2c400c7abf5f99aa116b0cb3f1b495c1308be2 100644
--- a/netwerk/base/src/nsLoadGroup.cpp
+++ b/netwerk/base/src/nsLoadGroup.cpp
@@ -1108,7 +1108,7 @@ private:
     nsAutoPtr<mozilla::net::SpdyPushCache> mSpdyCache;
 };
 
-NS_IMPL_ISUPPORTS1(nsLoadGroupConnectionInfo, nsILoadGroupConnectionInfo)
+NS_IMPL_ISUPPORTS(nsLoadGroupConnectionInfo, nsILoadGroupConnectionInfo)
 
 nsLoadGroupConnectionInfo::nsLoadGroupConnectionInfo()
     : mBlockingTransactionCount(0)
diff --git a/netwerk/base/src/nsMIMEInputStream.cpp b/netwerk/base/src/nsMIMEInputStream.cpp
index 091deddc642ff023039439724813bcf71421a0c9..062cc44bf967496e9cedaabf3ff0f1fe8d2dff70 100644
--- a/netwerk/base/src/nsMIMEInputStream.cpp
+++ b/netwerk/base/src/nsMIMEInputStream.cpp
@@ -71,15 +71,15 @@ NS_IMPL_RELEASE(nsMIMEInputStream)
 NS_IMPL_CLASSINFO(nsMIMEInputStream, nullptr, nsIClassInfo::THREADSAFE,
                   NS_MIMEINPUTSTREAM_CID)
 
-NS_IMPL_QUERY_INTERFACE4_CI(nsMIMEInputStream,
+NS_IMPL_QUERY_INTERFACE_CI(nsMIMEInputStream,
+                           nsIMIMEInputStream,
+                           nsIInputStream,
+                           nsISeekableStream,
+                           nsIIPCSerializableInputStream)
+NS_IMPL_CI_INTERFACE_GETTER(nsMIMEInputStream,
                             nsIMIMEInputStream,
                             nsIInputStream,
-                            nsISeekableStream,
-                            nsIIPCSerializableInputStream)
-NS_IMPL_CI_INTERFACE_GETTER3(nsMIMEInputStream,
-                             nsIMIMEInputStream,
-                             nsIInputStream,
-                             nsISeekableStream)
+                            nsISeekableStream)
 
 nsMIMEInputStream::nsMIMEInputStream() : mAddContentLength(false),
                                          mStartedReading(false)
diff --git a/netwerk/base/src/nsNetAddr.cpp b/netwerk/base/src/nsNetAddr.cpp
index a45de44517f8f8a4e996b098f901ecfc04e80b4b..6709dc082a51f744e45b7daf69da4bee33691cc9 100644
--- a/netwerk/base/src/nsNetAddr.cpp
+++ b/netwerk/base/src/nsNetAddr.cpp
@@ -10,7 +10,7 @@
 
 using namespace mozilla::net;
 
-NS_IMPL_ISUPPORTS1(nsNetAddr, nsINetAddr)
+NS_IMPL_ISUPPORTS(nsNetAddr, nsINetAddr)
 
 /* Makes a copy of |addr| */
 nsNetAddr::nsNetAddr(NetAddr* addr)
diff --git a/netwerk/base/src/nsPACMan.cpp b/netwerk/base/src/nsPACMan.cpp
index f38715a948aada1a4638b77a481b8f643dabfbb7..7cfce729ed55225c23ba9bc67e4250a13fa11e7c 100644
--- a/netwerk/base/src/nsPACMan.cpp
+++ b/netwerk/base/src/nsPACMan.cpp
@@ -555,8 +555,8 @@ nsPACMan::ProcessPending()
   return true;
 }
 
-NS_IMPL_ISUPPORTS3(nsPACMan, nsIStreamLoaderObserver,
-                   nsIInterfaceRequestor, nsIChannelEventSink)
+NS_IMPL_ISUPPORTS(nsPACMan, nsIStreamLoaderObserver,
+                  nsIInterfaceRequestor, nsIChannelEventSink)
 
 NS_IMETHODIMP
 nsPACMan::OnStreamComplete(nsIStreamLoader *loader,
diff --git a/netwerk/base/src/nsPreloadedStream.cpp b/netwerk/base/src/nsPreloadedStream.cpp
index a1faefd093d1c1103d8a5b7d19bc017241c35006..9160a13a5836ab119b553849e74c51e2e99e248f 100644
--- a/netwerk/base/src/nsPreloadedStream.cpp
+++ b/netwerk/base/src/nsPreloadedStream.cpp
@@ -12,9 +12,9 @@
 namespace mozilla {
 namespace net {
 
-NS_IMPL_ISUPPORTS2(nsPreloadedStream,
-                   nsIInputStream,
-                   nsIAsyncInputStream)
+NS_IMPL_ISUPPORTS(nsPreloadedStream,
+                  nsIInputStream,
+                  nsIAsyncInputStream)
 
 nsPreloadedStream::nsPreloadedStream(nsIAsyncInputStream *aStream,
                                      const char *data, uint32_t datalen)
diff --git a/netwerk/base/src/nsProtocolProxyService.cpp b/netwerk/base/src/nsProtocolProxyService.cpp
index 6ebd33fba4076b37f478fda4492e2b61453a464b..98ea68b7bb0d1f368fa8f6cd495cf48cd5b55cc0 100644
--- a/netwerk/base/src/nsProtocolProxyService.cpp
+++ b/netwerk/base/src/nsProtocolProxyService.cpp
@@ -271,7 +271,7 @@ private:
     nsCOMPtr<nsIProxyInfo>             mProxyInfo;
 };
 
-NS_IMPL_ISUPPORTS2(nsAsyncResolveRequest, nsICancelable, nsIRunnable)
+NS_IMPL_ISUPPORTS(nsAsyncResolveRequest, nsICancelable, nsIRunnable)
 
 //----------------------------------------------------------------------------
 
@@ -364,13 +364,13 @@ NS_IMPL_ADDREF(nsProtocolProxyService)
 NS_IMPL_RELEASE(nsProtocolProxyService)
 NS_IMPL_CLASSINFO(nsProtocolProxyService, nullptr, nsIClassInfo::SINGLETON,
                   NS_PROTOCOLPROXYSERVICE_CID)
-NS_IMPL_QUERY_INTERFACE3_CI(nsProtocolProxyService,
+NS_IMPL_QUERY_INTERFACE_CI(nsProtocolProxyService,
+                           nsIProtocolProxyService,
+                           nsIProtocolProxyService2,
+                           nsIObserver)
+NS_IMPL_CI_INTERFACE_GETTER(nsProtocolProxyService,
                             nsIProtocolProxyService,
-                            nsIProtocolProxyService2,
-                            nsIObserver)
-NS_IMPL_CI_INTERFACE_GETTER2(nsProtocolProxyService,
-                             nsIProtocolProxyService,
-                             nsIProtocolProxyService2)
+                            nsIProtocolProxyService2)
 
 nsProtocolProxyService::nsProtocolProxyService()
     : mFilterLocalHosts(false)
diff --git a/netwerk/base/src/nsProxyInfo.cpp b/netwerk/base/src/nsProxyInfo.cpp
index b700191e76a5fb55501372e389d6be712483628d..4e727c402822ea1f538c65e0eb9b8ea7a3169125 100644
--- a/netwerk/base/src/nsProxyInfo.cpp
+++ b/netwerk/base/src/nsProxyInfo.cpp
@@ -8,7 +8,7 @@
 #include "nsCOMPtr.h"
 
 // Yes, we support QI to nsProxyInfo
-NS_IMPL_ISUPPORTS2(nsProxyInfo, nsProxyInfo, nsIProxyInfo) 
+NS_IMPL_ISUPPORTS(nsProxyInfo, nsProxyInfo, nsIProxyInfo) 
 
 using namespace mozilla;
 
diff --git a/netwerk/base/src/nsRequestObserverProxy.cpp b/netwerk/base/src/nsRequestObserverProxy.cpp
index f2328bc3322818baa78e6da9bfde405f1a89f0ff..0ffbba46bdb4ce68e12567ba530ebaeb2e44638a 100644
--- a/netwerk/base/src/nsRequestObserverProxy.cpp
+++ b/netwerk/base/src/nsRequestObserverProxy.cpp
@@ -114,9 +114,9 @@ public:
 // nsRequestObserverProxy::nsISupports implementation...
 //-----------------------------------------------------------------------------
 
-NS_IMPL_ISUPPORTS2(nsRequestObserverProxy,
-                   nsIRequestObserver,
-                   nsIRequestObserverProxy)
+NS_IMPL_ISUPPORTS(nsRequestObserverProxy,
+                  nsIRequestObserver,
+                  nsIRequestObserverProxy)
 
 //-----------------------------------------------------------------------------
 // nsRequestObserverProxy::nsIRequestObserver implementation...
diff --git a/netwerk/base/src/nsSerializationHelper.cpp b/netwerk/base/src/nsSerializationHelper.cpp
index 146ee99188b241a69ae2614580ef16a6fcde4630..a19e08204953d29c0f6365857c73dda92f5d5442 100644
--- a/netwerk/base/src/nsSerializationHelper.cpp
+++ b/netwerk/base/src/nsSerializationHelper.cpp
@@ -56,7 +56,7 @@ NS_DeserializeObject(const nsCSubstring& str, nsISupports** obj)
   return objstream->ReadObject(true, obj);
 }
 
-NS_IMPL_ISUPPORTS1(nsSerializationHelper, nsISerializationHelper)
+NS_IMPL_ISUPPORTS(nsSerializationHelper, nsISerializationHelper)
 
 NS_IMETHODIMP
 nsSerializationHelper::SerializeToString(nsISerializable *serializable,
diff --git a/netwerk/base/src/nsServerSocket.cpp b/netwerk/base/src/nsServerSocket.cpp
index e50f68ee0376411d33ff7d4c424528b0f8df32af..5a059ca181290c508d9c15f85431dde9e5417a77 100644
--- a/netwerk/base/src/nsServerSocket.cpp
+++ b/netwerk/base/src/nsServerSocket.cpp
@@ -263,7 +263,7 @@ nsServerSocket::KeepWhenOffline(bool *aKeepWhenOffline)
 // nsServerSocket::nsISupports
 //-----------------------------------------------------------------------------
 
-NS_IMPL_ISUPPORTS1(nsServerSocket, nsIServerSocket)
+NS_IMPL_ISUPPORTS(nsServerSocket, nsIServerSocket)
 
 
 //-----------------------------------------------------------------------------
@@ -459,8 +459,8 @@ private:
   nsCOMPtr<nsIEventTarget> mTargetThread;
 };
 
-NS_IMPL_ISUPPORTS1(ServerSocketListenerProxy,
-                   nsIServerSocketListener)
+NS_IMPL_ISUPPORTS(ServerSocketListenerProxy,
+                  nsIServerSocketListener)
 
 NS_IMETHODIMP
 ServerSocketListenerProxy::OnSocketAccepted(nsIServerSocket* aServ,
diff --git a/netwerk/base/src/nsSimpleNestedURI.cpp b/netwerk/base/src/nsSimpleNestedURI.cpp
index c3cd03f2d04bf1c7129ccd72ca7daff87a0cead9..8fa872275c46c031bf2aee8916f21aab870e62f4 100644
--- a/netwerk/base/src/nsSimpleNestedURI.cpp
+++ b/netwerk/base/src/nsSimpleNestedURI.cpp
@@ -10,7 +10,7 @@
 #include "nsIObjectOutputStream.h"
 #include "nsNetUtil.h"
 
-NS_IMPL_ISUPPORTS_INHERITED1(nsSimpleNestedURI, nsSimpleURI, nsINestedURI)
+NS_IMPL_ISUPPORTS_INHERITED(nsSimpleNestedURI, nsSimpleURI, nsINestedURI)
 
 nsSimpleNestedURI::nsSimpleNestedURI(nsIURI* innerURI)
     : mInnerURI(innerURI)
diff --git a/netwerk/base/src/nsSimpleStreamListener.cpp b/netwerk/base/src/nsSimpleStreamListener.cpp
index 5ebf23e36cff64d869da918f2a38b97c15523353..f100a44c07fd605723cebe022a95c117e4a604f3 100644
--- a/netwerk/base/src/nsSimpleStreamListener.cpp
+++ b/netwerk/base/src/nsSimpleStreamListener.cpp
@@ -10,10 +10,10 @@
 // nsISupports implementation...
 //----------------------------------------------------------------------------
 //
-NS_IMPL_ISUPPORTS3(nsSimpleStreamListener,
-                   nsISimpleStreamListener,
-                   nsIStreamListener,
-                   nsIRequestObserver)
+NS_IMPL_ISUPPORTS(nsSimpleStreamListener,
+                  nsISimpleStreamListener,
+                  nsIStreamListener,
+                  nsIRequestObserver)
 
 //
 //----------------------------------------------------------------------------
diff --git a/netwerk/base/src/nsSimpleURI.cpp b/netwerk/base/src/nsSimpleURI.cpp
index c8aef29ac84c6e5cff1aefc714f030ccbb732103..1139b41de64a3cee8eec9cfc4c1f5a6cdcc48228 100644
--- a/netwerk/base/src/nsSimpleURI.cpp
+++ b/netwerk/base/src/nsSimpleURI.cpp
@@ -45,7 +45,7 @@ nsSimpleURI::~nsSimpleURI()
 NS_IMPL_ADDREF(nsSimpleURI)
 NS_IMPL_RELEASE(nsSimpleURI)
 NS_INTERFACE_TABLE_HEAD(nsSimpleURI)
-NS_INTERFACE_TABLE5(nsSimpleURI, nsIURI, nsISerializable, nsIClassInfo,
+NS_INTERFACE_TABLE(nsSimpleURI, nsIURI, nsISerializable, nsIClassInfo,
                     nsIMutable, nsIIPCSerializableURI)
 NS_INTERFACE_TABLE_TO_MAP_SEGUE
   if (aIID.Equals(kThisSimpleURIImplementationCID))
diff --git a/netwerk/base/src/nsSocketTransport2.cpp b/netwerk/base/src/nsSocketTransport2.cpp
index ab94fad2870b226de2efea44359541ef4fe5beb9..8448f4447af4735d47fb3da68868aedae38d3895 100644
--- a/netwerk/base/src/nsSocketTransport2.cpp
+++ b/netwerk/base/src/nsSocketTransport2.cpp
@@ -306,9 +306,9 @@ nsSocketInputStream::OnSocketReady(nsresult condition)
         callback->OnInputStreamReady(this);
 }
 
-NS_IMPL_QUERY_INTERFACE2(nsSocketInputStream,
-                         nsIInputStream,
-                         nsIAsyncInputStream)
+NS_IMPL_QUERY_INTERFACE(nsSocketInputStream,
+                        nsIInputStream,
+                        nsIAsyncInputStream)
 
 NS_IMETHODIMP_(MozExternalRefCountType)
 nsSocketInputStream::AddRef()
@@ -569,9 +569,9 @@ nsSocketOutputStream::OnSocketReady(nsresult condition)
         callback->OnOutputStreamReady(this);
 }
 
-NS_IMPL_QUERY_INTERFACE2(nsSocketOutputStream,
-                         nsIOutputStream,
-                         nsIAsyncOutputStream)
+NS_IMPL_QUERY_INTERFACE(nsSocketOutputStream,
+                        nsIOutputStream,
+                        nsIAsyncOutputStream)
 
 NS_IMETHODIMP_(MozExternalRefCountType)
 nsSocketOutputStream::AddRef()
@@ -1924,15 +1924,15 @@ nsSocketTransport::IsLocal(bool *aIsLocal)
 //-----------------------------------------------------------------------------
 // xpcom api
 
-NS_IMPL_ISUPPORTS4(nsSocketTransport,
-                   nsISocketTransport,
-                   nsITransport,
-                   nsIDNSListener,
-                   nsIClassInfo)
-NS_IMPL_CI_INTERFACE_GETTER3(nsSocketTransport,
-                             nsISocketTransport,
-                             nsITransport,
-                             nsIDNSListener)
+NS_IMPL_ISUPPORTS(nsSocketTransport,
+                  nsISocketTransport,
+                  nsITransport,
+                  nsIDNSListener,
+                  nsIClassInfo)
+NS_IMPL_CI_INTERFACE_GETTER(nsSocketTransport,
+                            nsISocketTransport,
+                            nsITransport,
+                            nsIDNSListener)
 
 NS_IMETHODIMP
 nsSocketTransport::OpenInputStream(uint32_t flags,
diff --git a/netwerk/base/src/nsSocketTransportService2.cpp b/netwerk/base/src/nsSocketTransportService2.cpp
index 66aa50b5c4a7d1885b9834d2cd0d0953da35e67c..6c9ba3582b4026ea7dec4d9de62301dcc154b2d2 100644
--- a/netwerk/base/src/nsSocketTransportService2.cpp
+++ b/netwerk/base/src/nsSocketTransportService2.cpp
@@ -427,13 +427,13 @@ nsSocketTransportService::Poll(bool wait, uint32_t *interval)
 //-----------------------------------------------------------------------------
 // xpcom api
 
-NS_IMPL_ISUPPORTS6(nsSocketTransportService,
-                   nsISocketTransportService,
-                   nsIEventTarget,
-                   nsIThreadObserver,
-                   nsIRunnable,
-                   nsPISocketTransportService,
-                   nsIObserver)
+NS_IMPL_ISUPPORTS(nsSocketTransportService,
+                  nsISocketTransportService,
+                  nsIEventTarget,
+                  nsIThreadObserver,
+                  nsIRunnable,
+                  nsPISocketTransportService,
+                  nsIObserver)
 
 // called from main thread only
 NS_IMETHODIMP
diff --git a/netwerk/base/src/nsStandardURL.cpp b/netwerk/base/src/nsStandardURL.cpp
index 3108b01f0123fa1b6748af9442c4169bcbb93635..90fac6eecc8a49d1273f9b9aa88259ec2d4a51fb 100644
--- a/netwerk/base/src/nsStandardURL.cpp
+++ b/netwerk/base/src/nsStandardURL.cpp
@@ -112,7 +112,7 @@ end:
 #define NS_NET_PREF_ESCAPEUTF8         "network.standard-url.escape-utf8"
 #define NS_NET_PREF_ALWAYSENCODEINUTF8 "network.standard-url.encode-utf8"
 
-NS_IMPL_ISUPPORTS1(nsStandardURL::nsPrefObserver, nsIObserver)
+NS_IMPL_ISUPPORTS(nsStandardURL::nsPrefObserver, nsIObserver)
 
 NS_IMETHODIMP nsStandardURL::
 nsPrefObserver::Observe(nsISupports *subject,
diff --git a/netwerk/base/src/nsStreamListenerTee.cpp b/netwerk/base/src/nsStreamListenerTee.cpp
index b438dee646b2a7a33146a61cdc7f657cbb174fc8..455974d7586547a33b9060d52476a028408c07b6 100644
--- a/netwerk/base/src/nsStreamListenerTee.cpp
+++ b/netwerk/base/src/nsStreamListenerTee.cpp
@@ -5,11 +5,11 @@
 #include "nsStreamListenerTee.h"
 #include "nsProxyRelease.h"
 
-NS_IMPL_ISUPPORTS4(nsStreamListenerTee,
-                   nsIStreamListener,
-                   nsIRequestObserver,
-                   nsIStreamListenerTee,
-                   nsIThreadRetargetableStreamListener)
+NS_IMPL_ISUPPORTS(nsStreamListenerTee,
+                  nsIStreamListener,
+                  nsIRequestObserver,
+                  nsIStreamListenerTee,
+                  nsIThreadRetargetableStreamListener)
 
 NS_IMETHODIMP
 nsStreamListenerTee::OnStartRequest(nsIRequest *request,
diff --git a/netwerk/base/src/nsStreamListenerWrapper.cpp b/netwerk/base/src/nsStreamListenerWrapper.cpp
index 7815564d0b9c6e173f795f4adb4c8670ba9c6f67..42b11f4a7c64c3ea5db1a8257356c13a13bea2f8 100644
--- a/netwerk/base/src/nsStreamListenerWrapper.cpp
+++ b/netwerk/base/src/nsStreamListenerWrapper.cpp
@@ -7,10 +7,10 @@
 #include "MainThreadUtils.h"
 #endif
 
-NS_IMPL_ISUPPORTS3(nsStreamListenerWrapper,
-                   nsIStreamListener,
-                   nsIRequestObserver,
-                   nsIThreadRetargetableStreamListener)
+NS_IMPL_ISUPPORTS(nsStreamListenerWrapper,
+                  nsIStreamListener,
+                  nsIRequestObserver,
+                  nsIThreadRetargetableStreamListener)
 
 NS_IMETHODIMP
 nsStreamListenerWrapper::CheckListenerChain()
diff --git a/netwerk/base/src/nsStreamLoader.cpp b/netwerk/base/src/nsStreamLoader.cpp
index d695b6ee8c217ebbc7cc6c1166dfd9ac30a4a82e..635714532eb82204f8a3d4258a78b298750f242e 100644
--- a/netwerk/base/src/nsStreamLoader.cpp
+++ b/netwerk/base/src/nsStreamLoader.cpp
@@ -43,8 +43,8 @@ nsStreamLoader::Create(nsISupports *aOuter, REFNSIID aIID, void **aResult)
   return rv;
 }
 
-NS_IMPL_ISUPPORTS3(nsStreamLoader, nsIStreamLoader,
-                   nsIRequestObserver, nsIStreamListener)
+NS_IMPL_ISUPPORTS(nsStreamLoader, nsIStreamLoader,
+                  nsIRequestObserver, nsIStreamListener)
 
 NS_IMETHODIMP 
 nsStreamLoader::GetNumBytesRead(uint32_t* aNumBytes)
diff --git a/netwerk/base/src/nsStreamTransportService.cpp b/netwerk/base/src/nsStreamTransportService.cpp
index 55116b5f5ec5e6b97bb128356c3abaf297bd9594..7d2f4fb220e2f9207c9455222a0de3f368926ff3 100644
--- a/netwerk/base/src/nsStreamTransportService.cpp
+++ b/netwerk/base/src/nsStreamTransportService.cpp
@@ -69,9 +69,9 @@ private:
     bool                            mInProgress;
 };
 
-NS_IMPL_ISUPPORTS2(nsInputStreamTransport,
-                   nsITransport,
-                   nsIInputStream)
+NS_IMPL_ISUPPORTS(nsInputStreamTransport,
+                  nsITransport,
+                  nsIInputStream)
 
 /** nsITransport **/
 
@@ -269,9 +269,9 @@ private:
     bool                            mInProgress;
 };
 
-NS_IMPL_ISUPPORTS2(nsOutputStreamTransport,
-                   nsITransport,
-                   nsIOutputStream)
+NS_IMPL_ISUPPORTS(nsOutputStreamTransport,
+                  nsITransport,
+                  nsIOutputStream)
 
 /** nsITransport **/
 
@@ -438,7 +438,7 @@ public:
     ~STSThreadPoolListener() {}
 };
 
-NS_IMPL_ISUPPORTS1(STSThreadPoolListener, nsIThreadPoolListener)
+NS_IMPL_ISUPPORTS(STSThreadPoolListener, nsIThreadPoolListener)
 
 NS_IMETHODIMP
 STSThreadPoolListener::OnThreadCreated()
@@ -490,10 +490,10 @@ nsStreamTransportService::Init()
     return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS3(nsStreamTransportService,
-                   nsIStreamTransportService,
-                   nsIEventTarget,
-                   nsIObserver)
+NS_IMPL_ISUPPORTS(nsStreamTransportService,
+                  nsIStreamTransportService,
+                  nsIEventTarget,
+                  nsIObserver)
 
 NS_IMETHODIMP
 nsStreamTransportService::Dispatch(nsIRunnable *task, uint32_t flags)
diff --git a/netwerk/base/src/nsSyncStreamListener.cpp b/netwerk/base/src/nsSyncStreamListener.cpp
index ddd0e7f5649fbd91e7c70e8c710d3e629e77e3b1..e80e885c51e62943c2aed3e49284f07603dcf2b0 100644
--- a/netwerk/base/src/nsSyncStreamListener.cpp
+++ b/netwerk/base/src/nsSyncStreamListener.cpp
@@ -34,11 +34,11 @@ nsSyncStreamListener::WaitForData()
 // nsSyncStreamListener::nsISupports
 //-----------------------------------------------------------------------------
 
-NS_IMPL_ISUPPORTS4(nsSyncStreamListener,
-                   nsIStreamListener,
-                   nsIRequestObserver,
-                   nsIInputStream,
-                   nsISyncStreamListener)
+NS_IMPL_ISUPPORTS(nsSyncStreamListener,
+                  nsIStreamListener,
+                  nsIRequestObserver,
+                  nsIInputStream,
+                  nsISyncStreamListener)
 
 //-----------------------------------------------------------------------------
 // nsSyncStreamListener::nsISyncStreamListener
diff --git a/netwerk/base/src/nsTemporaryFileInputStream.cpp b/netwerk/base/src/nsTemporaryFileInputStream.cpp
index 72eef84eb482d30821468e183462d9c25af128cd..60e3aba679e8899defe70a28d2ac06e87b4e0943 100644
--- a/netwerk/base/src/nsTemporaryFileInputStream.cpp
+++ b/netwerk/base/src/nsTemporaryFileInputStream.cpp
@@ -7,7 +7,7 @@
 #include "nsStreamUtils.h"
 #include <algorithm>
 
-NS_IMPL_ISUPPORTS1(nsTemporaryFileInputStream, nsIInputStream)
+NS_IMPL_ISUPPORTS(nsTemporaryFileInputStream, nsIInputStream)
 
 nsTemporaryFileInputStream::nsTemporaryFileInputStream(FileDescOwner* aFileDescOwner, uint64_t aStartPos, uint64_t aEndPos)
   : mFileDescOwner(aFileDescOwner),
diff --git a/netwerk/base/src/nsTransportUtils.cpp b/netwerk/base/src/nsTransportUtils.cpp
index 39e5d8f6bba73bc4652cecc224728dc9d00778fe..c0eda84aed999e9470c33059f78eed8de1bdf59f 100644
--- a/netwerk/base/src/nsTransportUtils.cpp
+++ b/netwerk/base/src/nsTransportUtils.cpp
@@ -89,7 +89,7 @@ public:
     uint64_t               mProgressMax;
 };
 
-NS_IMPL_ISUPPORTS1(nsTransportEventSinkProxy, nsITransportEventSink)
+NS_IMPL_ISUPPORTS(nsTransportEventSinkProxy, nsITransportEventSink)
 
 NS_IMETHODIMP
 nsTransportEventSinkProxy::OnTransportStatus(nsITransport *transport,
diff --git a/netwerk/base/src/nsUDPSocket.cpp b/netwerk/base/src/nsUDPSocket.cpp
index f9084fac0cfcc5d63649896e08a9e17f988dc1df..72864999e0c85de381bea70fc73adf1ee337e6ee 100644
--- a/netwerk/base/src/nsUDPSocket.cpp
+++ b/netwerk/base/src/nsUDPSocket.cpp
@@ -67,7 +67,7 @@ ResolveHost(const nsACString &host, nsIDNSListener *listener)
 //-----------------------------------------------------------------------------
 // nsUDPOutputStream impl
 //-----------------------------------------------------------------------------
-NS_IMPL_ISUPPORTS1(nsUDPOutputStream, nsIOutputStream)
+NS_IMPL_ISUPPORTS(nsUDPOutputStream, nsIOutputStream)
 
 nsUDPOutputStream::nsUDPOutputStream(nsUDPSocket* aSocket,
                                      PRFileDesc* aFD,
@@ -371,7 +371,7 @@ private:
   FallibleTArray<uint8_t> mData;
 };
 
-NS_IMPL_ISUPPORTS1(UDPMessageProxy, nsIUDPMessage)
+NS_IMPL_ISUPPORTS(UDPMessageProxy, nsIUDPMessage)
 
 /* readonly attribute nsINetAddr from; */
 NS_IMETHODIMP
@@ -522,7 +522,7 @@ nsUDPSocket::IsLocal(bool *aIsLocal)
 // nsSocket::nsISupports
 //-----------------------------------------------------------------------------
 
-NS_IMPL_ISUPPORTS1(nsUDPSocket, nsIUDPSocket)
+NS_IMPL_ISUPPORTS(nsUDPSocket, nsIUDPSocket)
 
 
 //-----------------------------------------------------------------------------
@@ -708,8 +708,8 @@ private:
   nsCOMPtr<nsIEventTarget> mTargetThread;
 };
 
-NS_IMPL_ISUPPORTS1(SocketListenerProxy,
-                   nsIUDPSocketListener)
+NS_IMPL_ISUPPORTS(SocketListenerProxy,
+                  nsIUDPSocketListener)
 
 NS_IMETHODIMP
 SocketListenerProxy::OnPacketReceived(nsIUDPSocket* aSocket,
@@ -778,7 +778,7 @@ private:
   FallibleTArray<uint8_t> mData;
 };
 
-NS_IMPL_ISUPPORTS1(PendingSend, nsIDNSListener)
+NS_IMPL_ISUPPORTS(PendingSend, nsIDNSListener)
 
 NS_IMETHODIMP
 PendingSend::OnLookupComplete(nsICancelable *request,
diff --git a/netwerk/base/src/nsURIChecker.cpp b/netwerk/base/src/nsURIChecker.cpp
index 3832eb2e0971e7f003184b5b9f6eeb4223340254..9cb1b1d038e1060a2e2660b68a539a57063b1dd1 100644
--- a/netwerk/base/src/nsURIChecker.cpp
+++ b/netwerk/base/src/nsURIChecker.cpp
@@ -26,13 +26,13 @@ ServerIsNES3x(nsIHttpChannel *httpChannel)
 
 //-----------------------------------------------------------------------------
 
-NS_IMPL_ISUPPORTS6(nsURIChecker,
-                   nsIURIChecker,
-                   nsIRequest,
-                   nsIRequestObserver,
-                   nsIStreamListener,
-                   nsIChannelEventSink,
-                   nsIInterfaceRequestor)
+NS_IMPL_ISUPPORTS(nsURIChecker,
+                  nsIURIChecker,
+                  nsIRequest,
+                  nsIRequestObserver,
+                  nsIStreamListener,
+                  nsIChannelEventSink,
+                  nsIInterfaceRequestor)
 
 nsURIChecker::nsURIChecker()
     : mStatus(NS_OK)
diff --git a/netwerk/base/src/nsURLParsers.cpp b/netwerk/base/src/nsURLParsers.cpp
index 7ef259d4f8f553e09f16b1997c9627aa1b9553f9..81aadd345f2bcfb53002431732de72f94e460528 100644
--- a/netwerk/base/src/nsURLParsers.cpp
+++ b/netwerk/base/src/nsURLParsers.cpp
@@ -29,8 +29,8 @@ CountConsecutiveSlashes(const char *str, int32_t len)
 // nsBaseURLParser implementation
 //----------------------------------------------------------------------------
 
-NS_IMPL_ISUPPORTS1(nsAuthURLParser, nsIURLParser)
-NS_IMPL_ISUPPORTS1(nsNoAuthURLParser, nsIURLParser)
+NS_IMPL_ISUPPORTS(nsAuthURLParser, nsIURLParser)
+NS_IMPL_ISUPPORTS(nsNoAuthURLParser, nsIURLParser)
 
 #define SET_RESULT(component, pos, len) \
     PR_BEGIN_MACRO \
diff --git a/netwerk/base/src/nsUnicharStreamLoader.cpp b/netwerk/base/src/nsUnicharStreamLoader.cpp
index 758b9ce139e75fe0565177b83779811707563f7f..7fa17957092c79763b008f4a88cc4aa0a7010ae8 100644
--- a/netwerk/base/src/nsUnicharStreamLoader.cpp
+++ b/netwerk/base/src/nsUnicharStreamLoader.cpp
@@ -46,8 +46,8 @@ nsUnicharStreamLoader::Create(nsISupports *aOuter,
   return rv;
 }
 
-NS_IMPL_ISUPPORTS3(nsUnicharStreamLoader, nsIUnicharStreamLoader,
-                   nsIRequestObserver, nsIStreamListener)
+NS_IMPL_ISUPPORTS(nsUnicharStreamLoader, nsIUnicharStreamLoader,
+                  nsIRequestObserver, nsIStreamListener)
 
 /* readonly attribute nsIChannel channel; */
 NS_IMETHODIMP
diff --git a/netwerk/cache/nsApplicationCacheService.cpp b/netwerk/cache/nsApplicationCacheService.cpp
index 9d5b26fdf107b3d962ef2d60b2848a2d81b2081d..fab51677d71ffabd8e79ffe5593247a4404018d7 100644
--- a/netwerk/cache/nsApplicationCacheService.cpp
+++ b/netwerk/cache/nsApplicationCacheService.cpp
@@ -19,7 +19,7 @@ static NS_DEFINE_CID(kCacheServiceCID, NS_CACHESERVICE_CID);
 // nsApplicationCacheService
 //-----------------------------------------------------------------------------
 
-NS_IMPL_ISUPPORTS1(nsApplicationCacheService, nsIApplicationCacheService)
+NS_IMPL_ISUPPORTS(nsApplicationCacheService, nsIApplicationCacheService)
 
 nsApplicationCacheService::nsApplicationCacheService()
 {
@@ -227,7 +227,7 @@ public:
     }
 };
 
-NS_IMPL_ISUPPORTS1(AppCacheClearDataObserver, nsIObserver)
+NS_IMPL_ISUPPORTS(AppCacheClearDataObserver, nsIObserver)
 
 } // anonymous namespace
 
diff --git a/netwerk/cache/nsCacheEntry.cpp b/netwerk/cache/nsCacheEntry.cpp
index 4d687b7e185fb099d71146a8be0c08afe6e4179d..6d41c9308a99cebf55e1a36e23b6063d70bf9484 100644
--- a/netwerk/cache/nsCacheEntry.cpp
+++ b/netwerk/cache/nsCacheEntry.cpp
@@ -271,7 +271,7 @@ nsCacheEntry::GetDescriptors(
  * nsCacheEntryInfo - for implementing about:cache
  *****************************************************************************/
 
-NS_IMPL_ISUPPORTS1(nsCacheEntryInfo, nsICacheEntryInfo)
+NS_IMPL_ISUPPORTS(nsCacheEntryInfo, nsICacheEntryInfo)
 
 
 NS_IMETHODIMP
diff --git a/netwerk/cache/nsCacheEntryDescriptor.cpp b/netwerk/cache/nsCacheEntryDescriptor.cpp
index 5d2c947827b1934bb19fc752e499d776c71edc28..4869fefdfd215d7564ee541faa9f5a1907c2fd68 100644
--- a/netwerk/cache/nsCacheEntryDescriptor.cpp
+++ b/netwerk/cache/nsCacheEntryDescriptor.cpp
@@ -70,9 +70,9 @@ private:
 };
 
 
-NS_IMPL_ISUPPORTS2(nsCacheEntryDescriptor,
-                   nsICacheEntryDescriptor,
-                   nsICacheEntryInfo)
+NS_IMPL_ISUPPORTS(nsCacheEntryDescriptor,
+                  nsICacheEntryDescriptor,
+                  nsICacheEntryInfo)
 
 nsCacheEntryDescriptor::nsCacheEntryDescriptor(nsCacheEntry * entry,
                                                nsCacheAccessMode accessGranted)
diff --git a/netwerk/cache/nsCacheService.cpp b/netwerk/cache/nsCacheService.cpp
index 7f54d946a41b1c8d6cf577fcb50a057326f72c00..a1b3c2312de503d3738ac261cf375f356144bda5 100644
--- a/netwerk/cache/nsCacheService.cpp
+++ b/netwerk/cache/nsCacheService.cpp
@@ -201,7 +201,7 @@ private:
     bool                    mClearCacheOnShutdown;
 };
 
-NS_IMPL_ISUPPORTS1(nsCacheProfilePrefObserver, nsIObserver)
+NS_IMPL_ISUPPORTS(nsCacheProfilePrefObserver, nsIObserver)
 
 class nsSetDiskSmartSizeCallback MOZ_FINAL : public nsITimerCallback
 {
@@ -218,7 +218,7 @@ public:
     }
 };
 
-NS_IMPL_ISUPPORTS1(nsSetDiskSmartSizeCallback, nsITimerCallback)
+NS_IMPL_ISUPPORTS(nsSetDiskSmartSizeCallback, nsITimerCallback)
 
 // Runnable sent to main thread after the cache IO thread calculates available
 // disk space, so that there is no race in setting mDiskCacheCapacity.
@@ -1072,8 +1072,8 @@ private:
  *****************************************************************************/
 nsCacheService *   nsCacheService::gService = nullptr;
 
-NS_IMPL_ISUPPORTS3(nsCacheService, nsICacheService, nsICacheServiceInternal,
-                   nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(nsCacheService, nsICacheService, nsICacheServiceInternal,
+                  nsIMemoryReporter)
 
 nsCacheService::nsCacheService()
     : mObserver(nullptr),
diff --git a/netwerk/cache/nsCacheSession.cpp b/netwerk/cache/nsCacheSession.cpp
index 7550de81fe18d895505058d42069bed8f93dd71d..d82203aec14c7de573a5c568975466374471e219 100644
--- a/netwerk/cache/nsCacheSession.cpp
+++ b/netwerk/cache/nsCacheSession.cpp
@@ -9,7 +9,7 @@
 #include "nsCRT.h"
 #include "nsThreadUtils.h"
 
-NS_IMPL_ISUPPORTS1(nsCacheSession, nsICacheSession)
+NS_IMPL_ISUPPORTS(nsCacheSession, nsICacheSession)
 
 nsCacheSession::nsCacheSession(const char *         clientID,
                                nsCacheStoragePolicy storagePolicy,
diff --git a/netwerk/cache/nsDiskCacheDevice.cpp b/netwerk/cache/nsDiskCacheDevice.cpp
index a0e513d69e5873ad67f06ec72dcf26cf0937304d..df9fc160d11c74b76e4613c5f3e9ade2dfe6e492 100644
--- a/netwerk/cache/nsDiskCacheDevice.cpp
+++ b/netwerk/cache/nsDiskCacheDevice.cpp
@@ -193,7 +193,7 @@ private:
     nsDiskCacheDevice* mDevice;
 };
 
-NS_IMPL_ISUPPORTS1(nsDiskCacheDeviceInfo, nsICacheDeviceInfo)
+NS_IMPL_ISUPPORTS(nsDiskCacheDeviceInfo, nsICacheDeviceInfo)
 
 /* readonly attribute string description; */
 NS_IMETHODIMP nsDiskCacheDeviceInfo::GetDescription(char ** aDescription)
diff --git a/netwerk/cache/nsDiskCacheDeviceSQL.cpp b/netwerk/cache/nsDiskCacheDeviceSQL.cpp
index 2110c5340ec8606b84d871ab9b85f889773263a2..5492908dc8eb8988dc8f583799801231a72a1784 100644
--- a/netwerk/cache/nsDiskCacheDeviceSQL.cpp
+++ b/netwerk/cache/nsDiskCacheDeviceSQL.cpp
@@ -151,7 +151,7 @@ DCacheHash(const char * key)
  * nsOfflineCacheEvictionFunction
  */
 
-NS_IMPL_ISUPPORTS1(nsOfflineCacheEvictionFunction, mozIStorageFunction)
+NS_IMPL_ISUPPORTS(nsOfflineCacheEvictionFunction, mozIStorageFunction)
 
 // helper function for directly exposing the same data file binding
 // path algorithm used in nsOfflineCacheBinding::Create
@@ -283,7 +283,7 @@ private:
   nsOfflineCacheDevice* mDevice;
 };
 
-NS_IMPL_ISUPPORTS1(nsOfflineCacheDeviceInfo, nsICacheDeviceInfo)
+NS_IMPL_ISUPPORTS(nsOfflineCacheDeviceInfo, nsICacheDeviceInfo)
 
 NS_IMETHODIMP
 nsOfflineCacheDeviceInfo::GetDescription(char **aDescription)
@@ -521,7 +521,7 @@ public:
   nsOfflineCacheRecord *mRec;
 };
 
-NS_IMPL_ISUPPORTS1(nsOfflineCacheEntryInfo, nsICacheEntryInfo)
+NS_IMPL_ISUPPORTS(nsOfflineCacheEntryInfo, nsICacheEntryInfo)
 
 NS_IMETHODIMP
 nsOfflineCacheEntryInfo::GetClientID(char **result)
@@ -591,7 +591,7 @@ nsOfflineCacheEntryInfo::GetDataSize(uint32_t *aDataSize)
  * nsApplicationCacheNamespace
  */
 
-NS_IMPL_ISUPPORTS1(nsApplicationCacheNamespace, nsIApplicationCacheNamespace)
+NS_IMPL_ISUPPORTS(nsApplicationCacheNamespace, nsIApplicationCacheNamespace)
 
 NS_IMETHODIMP
 nsApplicationCacheNamespace::Init(uint32_t itemType,
@@ -629,9 +629,9 @@ nsApplicationCacheNamespace::GetData(nsACString &out)
  * nsApplicationCache
  */
 
-NS_IMPL_ISUPPORTS2(nsApplicationCache,
-                   nsIApplicationCache,
-                   nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(nsApplicationCache,
+                  nsIApplicationCache,
+                  nsISupportsWeakReference)
 
 nsApplicationCache::nsApplicationCache()
   : mDevice(nullptr)
diff --git a/netwerk/cache/nsDiskCacheEntry.cpp b/netwerk/cache/nsDiskCacheEntry.cpp
index 22c13916e1dbacd2b95709c648362d8243d70477..cd5a3497779cedd2f38e301f8355fbbb816269b7 100644
--- a/netwerk/cache/nsDiskCacheEntry.cpp
+++ b/netwerk/cache/nsDiskCacheEntry.cpp
@@ -68,7 +68,7 @@ nsDiskCacheEntry::CreateCacheEntry(nsCacheDevice *  device)
  *  nsDiskCacheEntryInfo
  *****************************************************************************/
 
-NS_IMPL_ISUPPORTS1(nsDiskCacheEntryInfo, nsICacheEntryInfo)
+NS_IMPL_ISUPPORTS(nsDiskCacheEntryInfo, nsICacheEntryInfo)
 
 NS_IMETHODIMP nsDiskCacheEntryInfo::GetClientID(char ** clientID)
 {
diff --git a/netwerk/cache/nsDiskCacheStreams.cpp b/netwerk/cache/nsDiskCacheStreams.cpp
index 795fe7802202766902fb2da6a3d42b482e90f8e5..87b921075f4c20a21a3da4b0040659534206c3fb 100644
--- a/netwerk/cache/nsDiskCacheStreams.cpp
+++ b/netwerk/cache/nsDiskCacheStreams.cpp
@@ -57,7 +57,7 @@ private:
 };
 
 
-NS_IMPL_ISUPPORTS1(nsDiskCacheInputStream, nsIInputStream)
+NS_IMPL_ISUPPORTS(nsDiskCacheInputStream, nsIInputStream)
 
 
 nsDiskCacheInputStream::nsDiskCacheInputStream( nsDiskCacheStreamIO * parent,
@@ -190,7 +190,7 @@ nsDiskCacheInputStream::IsNonBlocking(bool * nonBlocking)
 /******************************************************************************
  *  nsDiskCacheStreamIO
  *****************************************************************************/
-NS_IMPL_ISUPPORTS1(nsDiskCacheStreamIO, nsIOutputStream)
+NS_IMPL_ISUPPORTS(nsDiskCacheStreamIO, nsIOutputStream)
 
 nsDiskCacheStreamIO::nsDiskCacheStreamIO(nsDiskCacheBinding *   binding)
     : mBinding(binding)
diff --git a/netwerk/cache/nsMemoryCacheDevice.cpp b/netwerk/cache/nsMemoryCacheDevice.cpp
index 332f9c2e73de28a7f9e8a6ab2f20cfd5e21ef6c7..8e839ff5045f01d4b94235e8f4a60f84e0b7d669 100644
--- a/netwerk/cache/nsMemoryCacheDevice.cpp
+++ b/netwerk/cache/nsMemoryCacheDevice.cpp
@@ -563,7 +563,7 @@ nsMemoryCacheDevice::CheckEntryCount()
  *****************************************************************************/
 
 
-NS_IMPL_ISUPPORTS1(nsMemoryCacheDeviceInfo, nsICacheDeviceInfo)
+NS_IMPL_ISUPPORTS(nsMemoryCacheDeviceInfo, nsICacheDeviceInfo)
 
 
 NS_IMETHODIMP
diff --git a/netwerk/cache2/CacheEntry.cpp b/netwerk/cache2/CacheEntry.cpp
index 081d233a4ecf7deda9a1b11efccd672aec6ba73c..6c8518876c3453e3bbfad41f7ebbc0fb6c2997da 100644
--- a/netwerk/cache2/CacheEntry.cpp
+++ b/netwerk/cache2/CacheEntry.cpp
@@ -40,7 +40,7 @@ static uint32_t const ENTRY_NEEDS_REVALIDATION =
 static uint32_t const ENTRY_NOT_WANTED =
   nsICacheEntryOpenCallback::ENTRY_NOT_WANTED;
 
-NS_IMPL_ISUPPORTS1(CacheEntryHandle, nsICacheEntry)
+NS_IMPL_ISUPPORTS(CacheEntryHandle, nsICacheEntry)
 
 // CacheEntryHandle
 
@@ -149,10 +149,10 @@ nsresult CacheEntry::Callback::OnAvailThread(bool *aOnAvailThread) const
 
 // CacheEntry
 
-NS_IMPL_ISUPPORTS3(CacheEntry,
-                   nsICacheEntry,
-                   nsIRunnable,
-                   CacheFileListener)
+NS_IMPL_ISUPPORTS(CacheEntry,
+                  nsICacheEntry,
+                  nsIRunnable,
+                  CacheFileListener)
 
 CacheEntry::CacheEntry(const nsACString& aStorageID,
                        nsIURI* aURI,
diff --git a/netwerk/cache2/CacheFile.cpp b/netwerk/cache2/CacheFile.cpp
index bd14633e8a55d2e6b994da6180c9b5173afa8988..85a34fc73a7a5e518f6f84fd6badddc670617089 100644
--- a/netwerk/cache2/CacheFile.cpp
+++ b/netwerk/cache2/CacheFile.cpp
@@ -159,7 +159,7 @@ private:
   nsCOMPtr<CacheFileListener>  mListener;
 };
 
-NS_IMPL_ISUPPORTS1(DoomFileHelper, CacheFileIOListener)
+NS_IMPL_ISUPPORTS(DoomFileHelper, CacheFileIOListener)
 
 
 NS_IMPL_ADDREF(CacheFile)
diff --git a/netwerk/cache2/CacheFileIOManager.cpp b/netwerk/cache2/CacheFileIOManager.cpp
index 33c96b6d4e033a242a8da0c58617a27769581f21..5d7f4dddec258fa476de95a40ecf6bff8340cd7b 100644
--- a/netwerk/cache2/CacheFileIOManager.cpp
+++ b/netwerk/cache2/CacheFileIOManager.cpp
@@ -1147,7 +1147,7 @@ public:
 
 CacheFileIOManager * CacheFileIOManager::gInstance = nullptr;
 
-NS_IMPL_ISUPPORTS1(CacheFileIOManager, nsITimerCallback)
+NS_IMPL_ISUPPORTS(CacheFileIOManager, nsITimerCallback)
 
 CacheFileIOManager::CacheFileIOManager()
   : mShuttingDown(false)
diff --git a/netwerk/cache2/CacheFileMetadata.cpp b/netwerk/cache2/CacheFileMetadata.cpp
index 031bb67bee383db01f38c34e4009459a2dd507c6..5351782df18fc28d3fa4e48109bfded8a3a303b5 100644
--- a/netwerk/cache2/CacheFileMetadata.cpp
+++ b/netwerk/cache2/CacheFileMetadata.cpp
@@ -26,7 +26,7 @@ namespace net {
 
 #define kCacheEntryVersion 1
 
-NS_IMPL_ISUPPORTS1(CacheFileMetadata, CacheFileIOListener)
+NS_IMPL_ISUPPORTS(CacheFileMetadata, CacheFileIOListener)
 
 CacheFileMetadata::CacheFileMetadata(CacheFileHandle *aHandle, const nsACString &aKey)
   : CacheMemoryConsumer(NORMAL)
diff --git a/netwerk/cache2/CacheIOThread.cpp b/netwerk/cache2/CacheIOThread.cpp
index e708dfff02dbff9643927fc9dbfa00799be7bd0f..af677f2d0b8ad3efa738dffa7909a7ab5f53a4b7 100644
--- a/netwerk/cache2/CacheIOThread.cpp
+++ b/netwerk/cache2/CacheIOThread.cpp
@@ -17,7 +17,7 @@ namespace net {
 
 CacheIOThread* CacheIOThread::sSelf = nullptr;
 
-NS_IMPL_ISUPPORTS1(CacheIOThread, nsIThreadObserver)
+NS_IMPL_ISUPPORTS(CacheIOThread, nsIThreadObserver)
 
 CacheIOThread::CacheIOThread()
 : mMonitor("CacheIOThread")
diff --git a/netwerk/cache2/CacheIndex.cpp b/netwerk/cache2/CacheIndex.cpp
index 37acbbabd6e0b62109b776025034d64e98dc11aa..0e96970d4e70a21a231fce0078de4b2ae69a967a 100644
--- a/netwerk/cache2/CacheIndex.cpp
+++ b/netwerk/cache2/CacheIndex.cpp
@@ -225,7 +225,7 @@ NS_IMETHODIMP FileOpenHelper::OnFileOpened(CacheFileHandle *aHandle,
   return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS1(FileOpenHelper, CacheFileIOListener);
+NS_IMPL_ISUPPORTS(FileOpenHelper, CacheFileIOListener);
 
 
 CacheIndex * CacheIndex::gInstance = nullptr;
diff --git a/netwerk/cache2/CacheObserver.cpp b/netwerk/cache2/CacheObserver.cpp
index 1058e086e186ae711d3aa99767b87df2ff1664c0..ab8c475bc00fc1cc70a101c7cfbb50a25e19d48f 100644
--- a/netwerk/cache2/CacheObserver.cpp
+++ b/netwerk/cache2/CacheObserver.cpp
@@ -71,9 +71,9 @@ bool CacheObserver::sSanitizeOnShutdown = kDefaultSanitizeOnShutdown;
 static bool kDefaultClearCacheOnShutdown = false;
 bool CacheObserver::sClearCacheOnShutdown = kDefaultClearCacheOnShutdown;
 
-NS_IMPL_ISUPPORTS2(CacheObserver,
-                   nsIObserver,
-                   nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(CacheObserver,
+                  nsIObserver,
+                  nsISupportsWeakReference)
 
 // static
 nsresult
diff --git a/netwerk/cache2/CacheStorage.cpp b/netwerk/cache2/CacheStorage.cpp
index 66baab841216c196714169bdb90394ca520d1afe..e7350fbf9d54d16124ea20d926bc6d3af3af1e79 100644
--- a/netwerk/cache2/CacheStorage.cpp
+++ b/netwerk/cache2/CacheStorage.cpp
@@ -21,7 +21,7 @@
 namespace mozilla {
 namespace net {
 
-NS_IMPL_ISUPPORTS1(CacheStorage, nsICacheStorage)
+NS_IMPL_ISUPPORTS(CacheStorage, nsICacheStorage)
 
 CacheStorage::CacheStorage(nsILoadContextInfo* aInfo,
                            bool aAllowDisk,
diff --git a/netwerk/cache2/CacheStorageService.cpp b/netwerk/cache2/CacheStorageService.cpp
index 05afd9abcbb26a4c47c5863567942bf368dfedab..3459485b1c8d27c2fde4d56f532b10688b75e01f 100644
--- a/netwerk/cache2/CacheStorageService.cpp
+++ b/netwerk/cache2/CacheStorageService.cpp
@@ -99,10 +99,10 @@ CacheStorageService::MemoryPool::Limit() const
   return 0;
 }
 
-NS_IMPL_ISUPPORTS3(CacheStorageService,
-                   nsICacheStorageService,
-                   nsIMemoryReporter,
-                   nsITimerCallback)
+NS_IMPL_ISUPPORTS(CacheStorageService,
+                  nsICacheStorageService,
+                  nsIMemoryReporter,
+                  nsITimerCallback)
 
 CacheStorageService* CacheStorageService::sSelf = nullptr;
 
@@ -1079,7 +1079,7 @@ NS_IMETHODIMP CacheEntryDoomByKeyCallback::OnFileDoomed(CacheFileHandle *aHandle
   return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS1(CacheEntryDoomByKeyCallback, CacheFileIOListener);
+NS_IMPL_ISUPPORTS(CacheEntryDoomByKeyCallback, CacheFileIOListener);
 
 } // anon
 
diff --git a/netwerk/cache2/OldWrappers.cpp b/netwerk/cache2/OldWrappers.cpp
index d2e452dc4e1a68f161abc0fc007ef7cb96da6888..8b46bf17b5ec490225cde0accbd27845a44993a6 100644
--- a/netwerk/cache2/OldWrappers.cpp
+++ b/netwerk/cache2/OldWrappers.cpp
@@ -105,7 +105,7 @@ private:
   nsCOMPtr<nsICacheEntryDoomCallback> mCB;
 };
 
-NS_IMPL_ISUPPORTS1(DoomCallbackWrapper, nsICacheListener);
+NS_IMPL_ISUPPORTS(DoomCallbackWrapper, nsICacheListener);
 
 NS_IMETHODIMP DoomCallbackWrapper::OnCacheEntryAvailable(nsICacheEntryDescriptor *descriptor,
                                                          nsCacheAccessMode accessGranted,
@@ -148,7 +148,7 @@ private:
   char* const mDeviceID;
 };
 
-NS_IMPL_ISUPPORTS1(VisitCallbackWrapper, nsICacheVisitor)
+NS_IMPL_ISUPPORTS(VisitCallbackWrapper, nsICacheVisitor)
 
 VisitCallbackWrapper::~VisitCallbackWrapper()
 {
@@ -229,9 +229,9 @@ nsresult _OldGetDiskConsumption::Get(nsICacheStorageConsumptionObserver* aCallba
   return NS_DispatchToMainThread(cb);
 }
 
-NS_IMPL_ISUPPORTS_INHERITED1(_OldGetDiskConsumption,
-                             nsRunnable,
-                             nsICacheVisitor)
+NS_IMPL_ISUPPORTS_INHERITED(_OldGetDiskConsumption,
+                            nsRunnable,
+                            nsICacheVisitor)
 
 _OldGetDiskConsumption::_OldGetDiskConsumption(
   nsICacheStorageConsumptionObserver* aCallback)
@@ -295,7 +295,7 @@ _OldCacheEntryWrapper::~_OldCacheEntryWrapper()
   LOG(("Destroying _OldCacheEntryWrapper %p for descriptor %p", this, mOldInfo.get()));
 }
 
-NS_IMPL_ISUPPORTS1(_OldCacheEntryWrapper, nsICacheEntry)
+NS_IMPL_ISUPPORTS(_OldCacheEntryWrapper, nsICacheEntry)
 
 NS_IMETHODIMP _OldCacheEntryWrapper::AsyncDoom(nsICacheEntryDoomCallback* listener)
 {
@@ -545,7 +545,7 @@ GetCacheSession(nsCSubstring const &aScheme,
 } // anon
 
 
-NS_IMPL_ISUPPORTS_INHERITED1(_OldCacheLoad, nsRunnable, nsICacheListener)
+NS_IMPL_ISUPPORTS_INHERITED(_OldCacheLoad, nsRunnable, nsICacheListener)
 
 _OldCacheLoad::_OldCacheLoad(nsCSubstring const& aScheme,
                              nsCSubstring const& aCacheKey,
@@ -781,7 +781,7 @@ _OldCacheLoad::OnCacheEntryDoomed(nsresult)
 
 // nsICacheStorage old cache wrapper
 
-NS_IMPL_ISUPPORTS1(_OldStorage, nsICacheStorage)
+NS_IMPL_ISUPPORTS(_OldStorage, nsICacheStorage)
 
 _OldStorage::_OldStorage(nsILoadContextInfo* aInfo,
                          bool aAllowDisk,
diff --git a/netwerk/cookie/CookieServiceChild.cpp b/netwerk/cookie/CookieServiceChild.cpp
index b2dbe0ecac8c989c112ec448a8ecf6a1196ce7b4..3edff1aef69e1b7d500002516fab0779df48dded 100644
--- a/netwerk/cookie/CookieServiceChild.cpp
+++ b/netwerk/cookie/CookieServiceChild.cpp
@@ -40,10 +40,10 @@ CookieServiceChild::GetSingleton()
   return gCookieService;
 }
 
-NS_IMPL_ISUPPORTS3(CookieServiceChild,
-                   nsICookieService,
-                   nsIObserver,
-                   nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(CookieServiceChild,
+                  nsICookieService,
+                  nsIObserver,
+                  nsISupportsWeakReference)
 
 CookieServiceChild::CookieServiceChild()
   : mCookieBehavior(BEHAVIOR_ACCEPT)
diff --git a/netwerk/cookie/nsCookie.cpp b/netwerk/cookie/nsCookie.cpp
index 34ef96c3a1eb237dd3da65663834713febedea22..c3242089104500fb8dc6ab29177446891c7cff3c 100644
--- a/netwerk/cookie/nsCookie.cpp
+++ b/netwerk/cookie/nsCookie.cpp
@@ -153,4 +153,4 @@ nsCookie::GetExpires(uint64_t *aExpires)
   return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS2(nsCookie, nsICookie2, nsICookie)
+NS_IMPL_ISUPPORTS(nsCookie, nsICookie2, nsICookie)
diff --git a/netwerk/cookie/nsCookieService.cpp b/netwerk/cookie/nsCookieService.cpp
index bb5ad69903a17943d6901161367981d9011aede2..d6f2b7160c79758a00ede5f13adc6d325cd1d994 100644
--- a/netwerk/cookie/nsCookieService.cpp
+++ b/netwerk/cookie/nsCookieService.cpp
@@ -415,7 +415,7 @@ public:
   }
 };
 
-NS_IMPL_ISUPPORTS1(InsertCookieDBListener, mozIStorageStatementCallback)
+NS_IMPL_ISUPPORTS(InsertCookieDBListener, mozIStorageStatementCallback)
 
 /******************************************************************************
  * UpdateCookieDBListener impl:
@@ -441,7 +441,7 @@ public:
   }
 };
 
-NS_IMPL_ISUPPORTS1(UpdateCookieDBListener, mozIStorageStatementCallback)
+NS_IMPL_ISUPPORTS(UpdateCookieDBListener, mozIStorageStatementCallback)
 
 /******************************************************************************
  * RemoveCookieDBListener impl:
@@ -467,7 +467,7 @@ public:
   }
 };
 
-NS_IMPL_ISUPPORTS1(RemoveCookieDBListener, mozIStorageStatementCallback)
+NS_IMPL_ISUPPORTS(RemoveCookieDBListener, mozIStorageStatementCallback)
 
 /******************************************************************************
  * ReadCookieDBListener impl:
@@ -546,7 +546,7 @@ public:
   }
 };
 
-NS_IMPL_ISUPPORTS1(ReadCookieDBListener, mozIStorageStatementCallback)
+NS_IMPL_ISUPPORTS(ReadCookieDBListener, mozIStorageStatementCallback)
 
 /******************************************************************************
  * CloseCookieDBListener imp:
@@ -567,7 +567,7 @@ public:
   }
 };
 
-NS_IMPL_ISUPPORTS1(CloseCookieDBListener, mozIStorageCompletionCallback)
+NS_IMPL_ISUPPORTS(CloseCookieDBListener, mozIStorageCompletionCallback)
 
 namespace {
 
@@ -594,7 +594,7 @@ public:
   }
 };
 
-NS_IMPL_ISUPPORTS1(AppClearDataObserver, nsIObserver)
+NS_IMPL_ISUPPORTS(AppClearDataObserver, nsIObserver)
 
 } // anonymous namespace
 
@@ -717,13 +717,13 @@ nsCookieService::AppClearDataObserverInit()
  * public methods
  ******************************************************************************/
 
-NS_IMPL_ISUPPORTS6(nsCookieService,
-                   nsICookieService,
-                   nsICookieManager,
-                   nsICookieManager2,
-                   nsIObserver,
-                   nsISupportsWeakReference,
-                   nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(nsCookieService,
+                  nsICookieService,
+                  nsICookieManager,
+                  nsICookieManager2,
+                  nsIObserver,
+                  nsISupportsWeakReference,
+                  nsIMemoryReporter)
 
 nsCookieService::nsCookieService()
  : mDBState(nullptr)
diff --git a/netwerk/dns/ChildDNSService.cpp b/netwerk/dns/ChildDNSService.cpp
index b19067e1afbd77fc792f689beee305071f2b16ba..b17e0374eb196b8963b108651d4c55c1789c049e 100644
--- a/netwerk/dns/ChildDNSService.cpp
+++ b/netwerk/dns/ChildDNSService.cpp
@@ -36,10 +36,10 @@ ChildDNSService* ChildDNSService::GetSingleton()
   return gChildDNSService;
 }
 
-NS_IMPL_ISUPPORTS3(ChildDNSService,
-                   nsIDNSService,
-                   nsPIDNSService,
-                   nsIObserver)
+NS_IMPL_ISUPPORTS(ChildDNSService,
+                  nsIDNSService,
+                  nsPIDNSService,
+                  nsIObserver)
 
 ChildDNSService::ChildDNSService()
   : mFirstTime(true)
diff --git a/netwerk/dns/DNSListenerProxy.cpp b/netwerk/dns/DNSListenerProxy.cpp
index d3e252fc5e405f0e4237669aad40acb8d0a16192..34aab680adac2a97b0993e2375bd1198a182ab44 100644
--- a/netwerk/dns/DNSListenerProxy.cpp
+++ b/netwerk/dns/DNSListenerProxy.cpp
@@ -11,7 +11,7 @@
 namespace mozilla {
 namespace net {
 
-NS_IMPL_ISUPPORTS1(DNSListenerProxy, nsIDNSListener)
+NS_IMPL_ISUPPORTS(DNSListenerProxy, nsIDNSListener)
 
 NS_IMETHODIMP
 DNSListenerProxy::OnLookupComplete(nsICancelable* aRequest,
diff --git a/netwerk/dns/DNSRequestChild.cpp b/netwerk/dns/DNSRequestChild.cpp
index b1f2a449eb570ffd25674f54dce4011485288bb5..59f13abcb688ee59138a843c8ce9d92728bb5aa5 100644
--- a/netwerk/dns/DNSRequestChild.cpp
+++ b/netwerk/dns/DNSRequestChild.cpp
@@ -40,7 +40,7 @@ private:
   uint16_t mFlags;
 };
 
-NS_IMPL_ISUPPORTS1(ChildDNSRecord, nsIDNSRecord)
+NS_IMPL_ISUPPORTS(ChildDNSRecord, nsIDNSRecord)
 
 ChildDNSRecord::ChildDNSRecord(const DNSRecord& reply, uint16_t flags)
   : mCurrent(0)
@@ -229,8 +229,8 @@ DNSRequestChild::Recv__delete__(const DNSRequestResponse& reply)
 // DNSRequestChild::nsISupports
 //-----------------------------------------------------------------------------
 
-NS_IMPL_ISUPPORTS1(DNSRequestChild,
-                   nsICancelable)
+NS_IMPL_ISUPPORTS(DNSRequestChild,
+                  nsICancelable)
 
 //-----------------------------------------------------------------------------
 // DNSRequestChild::nsICancelable
diff --git a/netwerk/dns/DNSRequestParent.cpp b/netwerk/dns/DNSRequestParent.cpp
index 5561671617ffeefc2df3bbd473925a302e22e7b9..e81f3b7cb26b10e8a9c0526f6e4c4fc2e6cc2e78 100644
--- a/netwerk/dns/DNSRequestParent.cpp
+++ b/netwerk/dns/DNSRequestParent.cpp
@@ -60,8 +60,8 @@ DNSRequestParent::ActorDestroy(ActorDestroyReason why)
 // DNSRequestParent::nsISupports
 //-----------------------------------------------------------------------------
 
-NS_IMPL_ISUPPORTS1(DNSRequestParent,
-                   nsIDNSListener)
+NS_IMPL_ISUPPORTS(DNSRequestParent,
+                  nsIDNSListener)
 
 //-----------------------------------------------------------------------------
 // nsIDNSListener functions
diff --git a/netwerk/dns/nsDNSService2.cpp b/netwerk/dns/nsDNSService2.cpp
index cbc3f03e7aa10c9aba2e373d570e94e6998fc93a..1f6a6dea57a0b9b9e9a9874ee55246a7520a0f49 100644
--- a/netwerk/dns/nsDNSService2.cpp
+++ b/netwerk/dns/nsDNSService2.cpp
@@ -74,7 +74,7 @@ private:
     bool                    mDone;
 };
 
-NS_IMPL_ISUPPORTS1(nsDNSRecord, nsIDNSRecord)
+NS_IMPL_ISUPPORTS(nsDNSRecord, nsIDNSRecord)
 
 NS_IMETHODIMP
 nsDNSRecord::GetCanonicalName(nsACString &result)
@@ -326,7 +326,7 @@ nsDNSAsyncRequest::SizeOfIncludingThis(MallocSizeOf mallocSizeOf) const
     return n;
 }
 
-NS_IMPL_ISUPPORTS1(nsDNSAsyncRequest, nsICancelable)
+NS_IMPL_ISUPPORTS(nsDNSAsyncRequest, nsICancelable)
 
 NS_IMETHODIMP
 nsDNSAsyncRequest::Cancel(nsresult reason)
@@ -433,8 +433,8 @@ nsDNSService::~nsDNSService()
 {
 }
 
-NS_IMPL_ISUPPORTS4(nsDNSService, nsIDNSService, nsPIDNSService, nsIObserver,
-                   nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(nsDNSService, nsIDNSService, nsPIDNSService, nsIObserver,
+                  nsIMemoryReporter)
 
 /******************************************************************************
  * nsDNSService impl:
diff --git a/netwerk/dns/nsEffectiveTLDService.cpp b/netwerk/dns/nsEffectiveTLDService.cpp
index 3d8b8d15329b07575e879ddd391e4d9f38b96666..e54f3b0005fcc58f16ea0f7869106569a5e3ca6c 100644
--- a/netwerk/dns/nsEffectiveTLDService.cpp
+++ b/netwerk/dns/nsEffectiveTLDService.cpp
@@ -18,8 +18,8 @@
 
 using namespace mozilla;
 
-NS_IMPL_ISUPPORTS2(nsEffectiveTLDService, nsIEffectiveTLDService,
-                   nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(nsEffectiveTLDService, nsIEffectiveTLDService,
+                  nsIMemoryReporter)
 
 // ----------------------------------------------------------------------
 
diff --git a/netwerk/dns/nsIDNService.cpp b/netwerk/dns/nsIDNService.cpp
index 02acef2b294fe41422c473cf1c9f1a41877444e4..0dfd21760ee07720ddf858c39e42838c899ea975 100644
--- a/netwerk/dns/nsIDNService.cpp
+++ b/netwerk/dns/nsIDNService.cpp
@@ -46,10 +46,10 @@ inline bool isOnlySafeChars(const nsAFlatString& in,
 //-----------------------------------------------------------------------------
 
 /* Implementation file */
-NS_IMPL_ISUPPORTS3(nsIDNService,
-                   nsIIDNService,
-                   nsIObserver,
-                   nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(nsIDNService,
+                  nsIIDNService,
+                  nsIObserver,
+                  nsISupportsWeakReference)
 
 nsresult nsIDNService::Init()
 {
diff --git a/netwerk/ipc/RemoteOpenFileChild.cpp b/netwerk/ipc/RemoteOpenFileChild.cpp
index c15c9550a2f3b253733595f5d40164b530445ac6..5045782e3510fdcee67fabb7e66ec0d56e4cdc0b 100644
--- a/netwerk/ipc/RemoteOpenFileChild.cpp
+++ b/netwerk/ipc/RemoteOpenFileChild.cpp
@@ -64,10 +64,10 @@ private:
 // RemoteOpenFileChild
 //-----------------------------------------------------------------------------
 
-NS_IMPL_ISUPPORTS3(RemoteOpenFileChild,
-                   nsIFile,
-                   nsIHashable,
-                   nsICachedFileDescriptorListener)
+NS_IMPL_ISUPPORTS(RemoteOpenFileChild,
+                  nsIFile,
+                  nsIHashable,
+                  nsICachedFileDescriptorListener)
 
 RemoteOpenFileChild::RemoteOpenFileChild(const RemoteOpenFileChild& other)
   : mTabChild(other.mTabChild)
diff --git a/netwerk/mime/nsMIMEHeaderParamImpl.cpp b/netwerk/mime/nsMIMEHeaderParamImpl.cpp
index aad1d58236dd26de47828ae6d7605a3bc1792ea6..9e1062eafb993da780a1587517ace51fd6b6a87a 100644
--- a/netwerk/mime/nsMIMEHeaderParamImpl.cpp
+++ b/netwerk/mime/nsMIMEHeaderParamImpl.cpp
@@ -42,7 +42,7 @@ static nsresult internalDecodeParameter(const nsACString&, const char*,
      !nsCRT::strncasecmp((cset), "HZ-GB", 5)    || \
      !nsCRT::strncasecmp((cset), "UTF-7", 5))   
 
-NS_IMPL_ISUPPORTS1(nsMIMEHeaderParamImpl, nsIMIMEHeaderParam)
+NS_IMPL_ISUPPORTS(nsMIMEHeaderParamImpl, nsIMIMEHeaderParam)
 
 NS_IMETHODIMP 
 nsMIMEHeaderParamImpl::GetParameter(const nsACString& aHeaderVal, 
diff --git a/netwerk/protocol/about/nsAboutBlank.cpp b/netwerk/protocol/about/nsAboutBlank.cpp
index 4decd6995d9e31c2e617d6aae7ae18a60c29ffbe..85d1fb92b736cd1fc3bc5e7f1c0fa6c755485c71 100644
--- a/netwerk/protocol/about/nsAboutBlank.cpp
+++ b/netwerk/protocol/about/nsAboutBlank.cpp
@@ -7,7 +7,7 @@
 #include "nsStringStream.h"
 #include "nsNetUtil.h"
 
-NS_IMPL_ISUPPORTS1(nsAboutBlank, nsIAboutModule)
+NS_IMPL_ISUPPORTS(nsAboutBlank, nsIAboutModule)
 
 NS_IMETHODIMP
 nsAboutBlank::NewChannel(nsIURI *aURI, nsIChannel **result)
diff --git a/netwerk/protocol/about/nsAboutBloat.cpp b/netwerk/protocol/about/nsAboutBloat.cpp
index 1ed3cbd1c4abae9404a44cf5980f04479a2bdfcd..b997853ac4047fb3ad68ff2b926d80a1a95319eb 100644
--- a/netwerk/protocol/about/nsAboutBloat.cpp
+++ b/netwerk/protocol/about/nsAboutBloat.cpp
@@ -18,7 +18,7 @@
 
 static void GC_gcollect() {}
 
-NS_IMPL_ISUPPORTS1(nsAboutBloat, nsIAboutModule)
+NS_IMPL_ISUPPORTS(nsAboutBloat, nsIAboutModule)
 
 NS_IMETHODIMP
 nsAboutBloat::NewChannel(nsIURI *aURI, nsIChannel **result)
diff --git a/netwerk/protocol/about/nsAboutCache.cpp b/netwerk/protocol/about/nsAboutCache.cpp
index 4d39b8f7000d2cff503328e099444c14620f34a7..1a3f701cdac0b9799eb1674b510e56a7daa6a616 100644
--- a/netwerk/protocol/about/nsAboutCache.cpp
+++ b/netwerk/protocol/about/nsAboutCache.cpp
@@ -14,7 +14,7 @@
 
 #include "nsICacheService.h"
 
-NS_IMPL_ISUPPORTS2(nsAboutCache, nsIAboutModule, nsICacheVisitor)
+NS_IMPL_ISUPPORTS(nsAboutCache, nsIAboutModule, nsICacheVisitor)
 
 NS_IMETHODIMP
 nsAboutCache::NewChannel(nsIURI *aURI, nsIChannel **result)
diff --git a/netwerk/protocol/about/nsAboutCacheEntry.cpp b/netwerk/protocol/about/nsAboutCacheEntry.cpp
index 7c878a5f78b3bd01408b66896a2a66c348850e38..6888380686fb7481385b685c4859c753ec438a38 100644
--- a/netwerk/protocol/about/nsAboutCacheEntry.cpp
+++ b/netwerk/protocol/about/nsAboutCacheEntry.cpp
@@ -72,9 +72,9 @@ HexDump(uint32_t *state, const char *buf, int32_t n, nsCString &result)
 //-----------------------------------------------------------------------------
 // nsAboutCacheEntry::nsISupports
 
-NS_IMPL_ISUPPORTS2(nsAboutCacheEntry,
-                   nsIAboutModule,
-                   nsICacheMetaDataVisitor)
+NS_IMPL_ISUPPORTS(nsAboutCacheEntry,
+                  nsIAboutModule,
+                  nsICacheMetaDataVisitor)
 
 //-----------------------------------------------------------------------------
 // nsAboutCacheEntry::nsIAboutModule
diff --git a/netwerk/protocol/about/nsAboutProtocolHandler.cpp b/netwerk/protocol/about/nsAboutProtocolHandler.cpp
index ab8bd4b289a8d002208aecafb9864e4100d8ad12..fb8bfc5af8768fb77344d97a45a4e33f7adc2309 100644
--- a/netwerk/protocol/about/nsAboutProtocolHandler.cpp
+++ b/netwerk/protocol/about/nsAboutProtocolHandler.cpp
@@ -30,7 +30,7 @@ static bool IsSafeForUntrustedContent(nsIAboutModule *aModule, nsIURI *aURI) {
 }
 ////////////////////////////////////////////////////////////////////////////////
 
-NS_IMPL_ISUPPORTS1(nsAboutProtocolHandler, nsIProtocolHandler)
+NS_IMPL_ISUPPORTS(nsAboutProtocolHandler, nsIProtocolHandler)
 
 ////////////////////////////////////////////////////////////////////////////////
 // nsIProtocolHandler methods:
@@ -187,7 +187,7 @@ nsAboutProtocolHandler::AllowPort(int32_t port, const char *scheme, bool *_retva
 ////////////////////////////////////////////////////////////////////////////////
 // Safe about protocol handler impl
 
-NS_IMPL_ISUPPORTS1(nsSafeAboutProtocolHandler, nsIProtocolHandler)
+NS_IMPL_ISUPPORTS(nsSafeAboutProtocolHandler, nsIProtocolHandler)
 
 // nsIProtocolHandler methods:
 
diff --git a/netwerk/protocol/app/AppProtocolHandler.cpp b/netwerk/protocol/app/AppProtocolHandler.cpp
index 93dfcb5a444c60e31b585247ec597c146525418c..2fe9344f013768e7207297e52f91197d612dffb1 100644
--- a/netwerk/protocol/app/AppProtocolHandler.cpp
+++ b/netwerk/protocol/app/AppProtocolHandler.cpp
@@ -39,7 +39,7 @@ private:
   nsLoadFlags                 mLoadFlags;
 };
 
-NS_IMPL_ISUPPORTS3(DummyChannel, nsIRequest, nsIChannel, nsIJARChannel)
+NS_IMPL_ISUPPORTS(DummyChannel, nsIRequest, nsIChannel, nsIJARChannel)
 
 DummyChannel::DummyChannel() : mPending(false)
                              , mSuspendCount(0)
@@ -273,7 +273,7 @@ AppProtocolHandler::~AppProtocolHandler() {
   mAppInfoCache.Clear();
 }
 
-NS_IMPL_ISUPPORTS1(AppProtocolHandler, nsIProtocolHandler)
+NS_IMPL_ISUPPORTS(AppProtocolHandler, nsIProtocolHandler)
 
 /* static */
 nsresult
diff --git a/netwerk/protocol/data/nsDataHandler.cpp b/netwerk/protocol/data/nsDataHandler.cpp
index 030c67f3f1212d682674ffb74cfd1a22b994749f..c231925e4c3557ef1c0e541f1303301a33498b2c 100644
--- a/netwerk/protocol/data/nsDataHandler.cpp
+++ b/netwerk/protocol/data/nsDataHandler.cpp
@@ -18,7 +18,7 @@ nsDataHandler::nsDataHandler() {
 nsDataHandler::~nsDataHandler() {
 }
 
-NS_IMPL_ISUPPORTS1(nsDataHandler, nsIProtocolHandler)
+NS_IMPL_ISUPPORTS(nsDataHandler, nsIProtocolHandler)
 
 nsresult
 nsDataHandler::Create(nsISupports* aOuter, const nsIID& aIID, void* *aResult) {
diff --git a/netwerk/protocol/device/AndroidCaptureProvider.cpp b/netwerk/protocol/device/AndroidCaptureProvider.cpp
index 8503b3f2118a3243ba2f5445cf6ffb3e88029d13..074c8a2f66db1304f1cb1a78bab4efcb3d0db57a 100644
--- a/netwerk/protocol/device/AndroidCaptureProvider.cpp
+++ b/netwerk/protocol/device/AndroidCaptureProvider.cpp
@@ -17,7 +17,7 @@
 
 using namespace mozilla::net;
 
-NS_IMPL_ISUPPORTS2(AndroidCameraInputStream, nsIInputStream, nsIAsyncInputStream)
+NS_IMPL_ISUPPORTS(AndroidCameraInputStream, nsIInputStream, nsIAsyncInputStream)
 
 AndroidCameraInputStream::AndroidCameraInputStream() :
   mWidth(0), mHeight(0), mCamera(0), mHeaderSent(false), mClosed(true), mFrameSize(0),
diff --git a/netwerk/protocol/device/nsDeviceChannel.cpp b/netwerk/protocol/device/nsDeviceChannel.cpp
index a4dd82e01d631aba77058a8f918904309517a753..58c03a33e58f19d637f283edb0c168cbe0f6970b 100644
--- a/netwerk/protocol/device/nsDeviceChannel.cpp
+++ b/netwerk/protocol/device/nsDeviceChannel.cpp
@@ -44,9 +44,9 @@ void extractAttributeValue(const char* searchString, const char* attributeName,
   }
 }
 
-NS_IMPL_ISUPPORTS_INHERITED1(nsDeviceChannel,
-                             nsBaseChannel,
-                             nsIChannel)
+NS_IMPL_ISUPPORTS_INHERITED(nsDeviceChannel,
+                            nsBaseChannel,
+                            nsIChannel)
 
 // nsDeviceChannel methods
 nsDeviceChannel::nsDeviceChannel()
diff --git a/netwerk/protocol/device/nsDeviceProtocolHandler.cpp b/netwerk/protocol/device/nsDeviceProtocolHandler.cpp
index fd2205a41c90b23ad835680fba855aa73dc65c70..6667818af5770d306108164173f8c697c8973caf 100644
--- a/netwerk/protocol/device/nsDeviceProtocolHandler.cpp
+++ b/netwerk/protocol/device/nsDeviceProtocolHandler.cpp
@@ -10,8 +10,8 @@
 
 //-----------------------------------------------------------------------------
 
-NS_IMPL_ISUPPORTS1(nsDeviceProtocolHandler,
-                   nsIProtocolHandler)
+NS_IMPL_ISUPPORTS(nsDeviceProtocolHandler,
+                  nsIProtocolHandler)
 
 nsresult
 nsDeviceProtocolHandler::Init(){
diff --git a/netwerk/protocol/file/nsFileChannel.cpp b/netwerk/protocol/file/nsFileChannel.cpp
index 472c1daceb38062dd45633e9f186464b9fe78f11..043116a9b36016ac0f8145958242a1d1226ff8ae 100644
--- a/netwerk/protocol/file/nsFileChannel.cpp
+++ b/netwerk/protocol/file/nsFileChannel.cpp
@@ -405,10 +405,10 @@ nsFileChannel::OpenContentStream(bool async, nsIInputStream **result,
 //-----------------------------------------------------------------------------
 // nsFileChannel::nsISupports
 
-NS_IMPL_ISUPPORTS_INHERITED2(nsFileChannel,
-                             nsBaseChannel,
-                             nsIUploadChannel,
-                             nsIFileChannel)
+NS_IMPL_ISUPPORTS_INHERITED(nsFileChannel,
+                            nsBaseChannel,
+                            nsIUploadChannel,
+                            nsIFileChannel)
 
 //-----------------------------------------------------------------------------
 // nsFileChannel::nsIFileChannel
diff --git a/netwerk/protocol/file/nsFileProtocolHandler.cpp b/netwerk/protocol/file/nsFileProtocolHandler.cpp
index 42c52e0354d010614d3b0ed790c61b7f6063803b..ab755aa0399ea27b4d3f49bd38b29d033ff586a7 100644
--- a/netwerk/protocol/file/nsFileProtocolHandler.cpp
+++ b/netwerk/protocol/file/nsFileProtocolHandler.cpp
@@ -39,10 +39,10 @@ nsFileProtocolHandler::Init()
     return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS3(nsFileProtocolHandler,
-                   nsIFileProtocolHandler,
-                   nsIProtocolHandler,
-                   nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(nsFileProtocolHandler,
+                  nsIFileProtocolHandler,
+                  nsIProtocolHandler,
+                  nsISupportsWeakReference)
 
 //-----------------------------------------------------------------------------
 // nsIProtocolHandler methods:
diff --git a/netwerk/protocol/ftp/FTPChannelChild.cpp b/netwerk/protocol/ftp/FTPChannelChild.cpp
index 6130b6d47e047eb6713f15b77beb144f4a9f8b28..e940f6fcf6f4c34c226926f7db14c3c95f460801 100644
--- a/netwerk/protocol/ftp/FTPChannelChild.cpp
+++ b/netwerk/protocol/ftp/FTPChannelChild.cpp
@@ -71,14 +71,14 @@ FTPChannelChild::ReleaseIPDLReference()
 // FTPChannelChild::nsISupports
 //-----------------------------------------------------------------------------
 
-NS_IMPL_ISUPPORTS_INHERITED6(FTPChannelChild,
-                             nsBaseChannel,
-                             nsIFTPChannel,
-                             nsIUploadChannel,
-                             nsIResumableChannel,
-                             nsIProxiedChannel,
-                             nsIChildChannel,
-                             nsIDivertableChannel)
+NS_IMPL_ISUPPORTS_INHERITED(FTPChannelChild,
+                            nsBaseChannel,
+                            nsIFTPChannel,
+                            nsIUploadChannel,
+                            nsIResumableChannel,
+                            nsIProxiedChannel,
+                            nsIChildChannel,
+                            nsIDivertableChannel)
 
 //-----------------------------------------------------------------------------
 
diff --git a/netwerk/protocol/ftp/FTPChannelParent.cpp b/netwerk/protocol/ftp/FTPChannelParent.cpp
index 296c6c1e0e6700c83238fc7ff2b3866183ad1674..773a91bca4fb30f4e4d8b9d058feda9fc6c9a56a 100644
--- a/netwerk/protocol/ftp/FTPChannelParent.cpp
+++ b/netwerk/protocol/ftp/FTPChannelParent.cpp
@@ -53,11 +53,11 @@ FTPChannelParent::ActorDestroy(ActorDestroyReason why)
 // FTPChannelParent::nsISupports
 //-----------------------------------------------------------------------------
 
-NS_IMPL_ISUPPORTS4(FTPChannelParent,
-                   nsIStreamListener,
-                   nsIParentChannel,
-                   nsIInterfaceRequestor,
-                   nsIRequestObserver)
+NS_IMPL_ISUPPORTS(FTPChannelParent,
+                  nsIStreamListener,
+                  nsIParentChannel,
+                  nsIInterfaceRequestor,
+                  nsIRequestObserver)
 
 //-----------------------------------------------------------------------------
 // FTPChannelParent::PFTPChannelParent
diff --git a/netwerk/protocol/ftp/nsFTPChannel.cpp b/netwerk/protocol/ftp/nsFTPChannel.cpp
index 6e9e3f3b4ad4108a407f93c991baf4f45e78080c..a43b2cf0befb9f5ea8b0530ddfd4506499e5186c 100644
--- a/netwerk/protocol/ftp/nsFTPChannel.cpp
+++ b/netwerk/protocol/ftp/nsFTPChannel.cpp
@@ -24,12 +24,12 @@ extern PRLogModuleInfo* gFTPLog;
 
 //-----------------------------------------------------------------------------
 
-NS_IMPL_ISUPPORTS_INHERITED4(nsFtpChannel,
-                             nsBaseChannel,
-                             nsIUploadChannel,
-                             nsIResumableChannel,
-                             nsIFTPChannel,
-                             nsIProxiedChannel)
+NS_IMPL_ISUPPORTS_INHERITED(nsFtpChannel,
+                            nsBaseChannel,
+                            nsIUploadChannel,
+                            nsIResumableChannel,
+                            nsIFTPChannel,
+                            nsIProxiedChannel)
 
 //-----------------------------------------------------------------------------
 
@@ -165,7 +165,7 @@ private:
     nsCOMPtr<nsIThread> mTargetThread;
 };
 
-NS_IMPL_ISUPPORTS1(FTPEventSinkProxy, nsIFTPEventSink)
+NS_IMPL_ISUPPORTS(FTPEventSinkProxy, nsIFTPEventSink)
 
 NS_IMETHODIMP
 FTPEventSinkProxy::OnFTPControlLog(bool aServer, const char* aMsg)
diff --git a/netwerk/protocol/ftp/nsFtpConnectionThread.cpp b/netwerk/protocol/ftp/nsFtpConnectionThread.cpp
index 828ca17a9422336f032629109785da04628dd67d..6d8d9f1b94c8929c60d45760ffb5b98d6fcb6615 100644
--- a/netwerk/protocol/ftp/nsFtpConnectionThread.cpp
+++ b/netwerk/protocol/ftp/nsFtpConnectionThread.cpp
@@ -64,13 +64,13 @@ removeParamsFromPath(nsCString& path)
   }
 }
 
-NS_IMPL_ISUPPORTS_INHERITED5(nsFtpState,
-                             nsBaseContentStream,
-                             nsIInputStreamCallback, 
-                             nsITransportEventSink,
-                             nsICacheListener,
-                             nsIRequestObserver,
-                             nsIProtocolProxyCallback)
+NS_IMPL_ISUPPORTS_INHERITED(nsFtpState,
+                            nsBaseContentStream,
+                            nsIInputStreamCallback, 
+                            nsITransportEventSink,
+                            nsICacheListener,
+                            nsIRequestObserver,
+                            nsIProtocolProxyCallback)
 
 nsFtpState::nsFtpState()
     : nsBaseContentStream(true)
diff --git a/netwerk/protocol/ftp/nsFtpControlConnection.cpp b/netwerk/protocol/ftp/nsFtpControlConnection.cpp
index d829e7ccdba31af2a62cd9677f8e30bfa37172ea..7f35df2a23751fd13f06bcf841569207096c5d55 100644
--- a/netwerk/protocol/ftp/nsFtpControlConnection.cpp
+++ b/netwerk/protocol/ftp/nsFtpControlConnection.cpp
@@ -25,7 +25,7 @@ extern PRLogModuleInfo* gFTPLog;
 // nsFtpControlConnection implementation ...
 //
 
-NS_IMPL_ISUPPORTS1(nsFtpControlConnection, nsIInputStreamCallback)
+NS_IMPL_ISUPPORTS(nsFtpControlConnection, nsIInputStreamCallback)
 
 NS_IMETHODIMP
 nsFtpControlConnection::OnInputStreamReady(nsIAsyncInputStream *stream)
diff --git a/netwerk/protocol/ftp/nsFtpProtocolHandler.cpp b/netwerk/protocol/ftp/nsFtpProtocolHandler.cpp
index 36a6f47ae3dcaa10cba9fe7ed55fa7659d4d8d8d..0921a92762066b4899331f1aae9f048d15a28976 100644
--- a/netwerk/protocol/ftp/nsFtpProtocolHandler.cpp
+++ b/netwerk/protocol/ftp/nsFtpProtocolHandler.cpp
@@ -88,11 +88,11 @@ nsFtpProtocolHandler::~nsFtpProtocolHandler()
     gFtpHandler = nullptr;
 }
 
-NS_IMPL_ISUPPORTS4(nsFtpProtocolHandler,
-                   nsIProtocolHandler,
-                   nsIProxiedProtocolHandler,
-                   nsIObserver,
-                   nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(nsFtpProtocolHandler,
+                  nsIProtocolHandler,
+                  nsIProxiedProtocolHandler,
+                  nsIObserver,
+                  nsISupportsWeakReference)
 
 nsresult
 nsFtpProtocolHandler::Init()
diff --git a/netwerk/protocol/http/HttpBaseChannel.cpp b/netwerk/protocol/http/HttpBaseChannel.cpp
index b52330b333ec9ed22e19f01445aad8eb16f9ea93..4896a50eea298266a8667b1c524a74dfd2b6d6af 100644
--- a/netwerk/protocol/http/HttpBaseChannel.cpp
+++ b/netwerk/protocol/http/HttpBaseChannel.cpp
@@ -766,7 +766,7 @@ HttpBaseChannel::nsContentEncodings::GetNext(nsACString& aNextEncoding)
 // HttpBaseChannel::nsContentEncodings::nsISupports
 //-----------------------------------------------------------------------------
 
-NS_IMPL_ISUPPORTS1(HttpBaseChannel::nsContentEncodings, nsIUTF8StringEnumerator)
+NS_IMPL_ISUPPORTS(HttpBaseChannel::nsContentEncodings, nsIUTF8StringEnumerator)
 
 //-----------------------------------------------------------------------------
 // HttpBaseChannel::nsContentEncodings <private>
diff --git a/netwerk/protocol/http/HttpChannelParent.cpp b/netwerk/protocol/http/HttpChannelParent.cpp
index 597efb7a5df1d277a93881e9cce412ed898558bb..0dbe1ce56c359920fb2c7e61578700230e1737cd 100644
--- a/netwerk/protocol/http/HttpChannelParent.cpp
+++ b/netwerk/protocol/http/HttpChannelParent.cpp
@@ -103,13 +103,13 @@ HttpChannelParent::Init(const HttpChannelCreationArgs& aArgs)
 // HttpChannelParent::nsISupports
 //-----------------------------------------------------------------------------
 
-NS_IMPL_ISUPPORTS6(HttpChannelParent,
-                   nsIInterfaceRequestor,
-                   nsIProgressEventSink,
-                   nsIRequestObserver,
-                   nsIStreamListener,
-                   nsIParentChannel,
-                   nsIParentRedirectingChannel)
+NS_IMPL_ISUPPORTS(HttpChannelParent,
+                  nsIInterfaceRequestor,
+                  nsIProgressEventSink,
+                  nsIRequestObserver,
+                  nsIStreamListener,
+                  nsIParentChannel,
+                  nsIParentRedirectingChannel)
 
 //-----------------------------------------------------------------------------
 // HttpChannelParent::nsIInterfaceRequestor
diff --git a/netwerk/protocol/http/HttpChannelParentListener.cpp b/netwerk/protocol/http/HttpChannelParentListener.cpp
index 136b96f56058840b8c671b19779d336ecd64b307..729bcdaf7e251044cbdc14f72fb726ffdc99fc50 100644
--- a/netwerk/protocol/http/HttpChannelParentListener.cpp
+++ b/netwerk/protocol/http/HttpChannelParentListener.cpp
@@ -33,12 +33,12 @@ HttpChannelParentListener::~HttpChannelParentListener()
 // HttpChannelParentListener::nsISupports
 //-----------------------------------------------------------------------------
 
-NS_IMPL_ISUPPORTS5(HttpChannelParentListener,
-                   nsIInterfaceRequestor,
-                   nsIStreamListener,
-                   nsIRequestObserver,
-                   nsIChannelEventSink,
-                   nsIRedirectResultListener)
+NS_IMPL_ISUPPORTS(HttpChannelParentListener,
+                  nsIInterfaceRequestor,
+                  nsIStreamListener,
+                  nsIRequestObserver,
+                  nsIChannelEventSink,
+                  nsIRedirectResultListener)
 
 //-----------------------------------------------------------------------------
 // HttpChannelParentListener::nsIRequestObserver
diff --git a/netwerk/protocol/http/SpdyZlibReporter.cpp b/netwerk/protocol/http/SpdyZlibReporter.cpp
index 786ffc9a4375db7329d38b8f86008a4dbade91f6..77645093c9a12ea0fccd57d8e1ec341f652269bd 100644
--- a/netwerk/protocol/http/SpdyZlibReporter.cpp
+++ b/netwerk/protocol/http/SpdyZlibReporter.cpp
@@ -8,7 +8,7 @@
 
 namespace mozilla {
 
-NS_IMPL_ISUPPORTS1(SpdyZlibReporter, nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(SpdyZlibReporter, nsIMemoryReporter)
 
 /* static */ Atomic<size_t> SpdyZlibReporter::sAmount;
 
diff --git a/netwerk/protocol/http/nsHttpActivityDistributor.cpp b/netwerk/protocol/http/nsHttpActivityDistributor.cpp
index b13934fc63068060ec167e2a181a2a45b4fd76bf..6cb6dadb66e828bf08734f1d9002a76cde18e8b1 100644
--- a/netwerk/protocol/http/nsHttpActivityDistributor.cpp
+++ b/netwerk/protocol/http/nsHttpActivityDistributor.cpp
@@ -61,9 +61,9 @@ private:
     ObserverArray mObservers;
 };
 
-NS_IMPL_ISUPPORTS2(nsHttpActivityDistributor,
-                   nsIHttpActivityDistributor,
-                   nsIHttpActivityObserver)
+NS_IMPL_ISUPPORTS(nsHttpActivityDistributor,
+                  nsIHttpActivityDistributor,
+                  nsIHttpActivityObserver)
 
 nsHttpActivityDistributor::nsHttpActivityDistributor()
     : mLock("nsHttpActivityDistributor.mLock")
diff --git a/netwerk/protocol/http/nsHttpAuthCache.cpp b/netwerk/protocol/http/nsHttpAuthCache.cpp
index 46738397ce0b1ec27f736536e042186528f81ba7..58fe8eb20b74e46f74d0f59a137566bc215c8109 100644
--- a/netwerk/protocol/http/nsHttpAuthCache.cpp
+++ b/netwerk/protocol/http/nsHttpAuthCache.cpp
@@ -268,7 +268,7 @@ PLHashAllocOps nsHttpAuthCache::gHashAllocOps =
     nsHttpAuthCache::FreeEntry
 };
 
-NS_IMPL_ISUPPORTS1(nsHttpAuthCache::AppDataClearObserver, nsIObserver)
+NS_IMPL_ISUPPORTS(nsHttpAuthCache::AppDataClearObserver, nsIObserver)
 
 NS_IMETHODIMP
 nsHttpAuthCache::AppDataClearObserver::Observe(nsISupports *subject,
diff --git a/netwerk/protocol/http/nsHttpAuthManager.cpp b/netwerk/protocol/http/nsHttpAuthManager.cpp
index 1ea92152e894008649e44b7ff138b05dffe67e4c..70634a59af43fa9dff3e0eceebd561cfae926c97 100644
--- a/netwerk/protocol/http/nsHttpAuthManager.cpp
+++ b/netwerk/protocol/http/nsHttpAuthManager.cpp
@@ -14,7 +14,7 @@
 namespace mozilla {
 namespace net {
 
-NS_IMPL_ISUPPORTS1(nsHttpAuthManager, nsIHttpAuthManager)
+NS_IMPL_ISUPPORTS(nsHttpAuthManager, nsIHttpAuthManager)
 
 nsHttpAuthManager::nsHttpAuthManager()
 {
diff --git a/netwerk/protocol/http/nsHttpBasicAuth.cpp b/netwerk/protocol/http/nsHttpBasicAuth.cpp
index 0a3dd262d2d4d8311d2e86aea46a9e0fd9d93a57..4938d8b3fdbc9a5e02af155265f799fb3379748b 100644
--- a/netwerk/protocol/http/nsHttpBasicAuth.cpp
+++ b/netwerk/protocol/http/nsHttpBasicAuth.cpp
@@ -29,7 +29,7 @@ nsHttpBasicAuth::~nsHttpBasicAuth()
 // nsHttpBasicAuth::nsISupports
 //-----------------------------------------------------------------------------
 
-NS_IMPL_ISUPPORTS1(nsHttpBasicAuth, nsIHttpAuthenticator)
+NS_IMPL_ISUPPORTS(nsHttpBasicAuth, nsIHttpAuthenticator)
 
 //-----------------------------------------------------------------------------
 // nsHttpBasicAuth::nsIHttpAuthenticator
diff --git a/netwerk/protocol/http/nsHttpChannelAuthProvider.cpp b/netwerk/protocol/http/nsHttpChannelAuthProvider.cpp
index def64a31ca448c7d1de82a92ad760601116c84bf..b909c6a177c3a1033d97eaf14df7429c4785815d 100644
--- a/netwerk/protocol/http/nsHttpChannelAuthProvider.cpp
+++ b/netwerk/protocol/http/nsHttpChannelAuthProvider.cpp
@@ -1348,8 +1348,8 @@ nsHttpChannelAuthProvider::GetCurrentPath(nsACString &path)
     return rv;
 }
 
-NS_IMPL_ISUPPORTS3(nsHttpChannelAuthProvider, nsICancelable,
-                   nsIHttpChannelAuthProvider, nsIAuthPromptCallback)
+NS_IMPL_ISUPPORTS(nsHttpChannelAuthProvider, nsICancelable,
+                  nsIHttpChannelAuthProvider, nsIAuthPromptCallback)
 
 } // namespace mozilla::net
 } // namespace mozilla
diff --git a/netwerk/protocol/http/nsHttpConnection.cpp b/netwerk/protocol/http/nsHttpConnection.cpp
index ee4644fadfa477dac089e12cc6413218e52ee742..e4e0a6815e7da74b2767d3d7b81ab593b84ab38d 100644
--- a/netwerk/protocol/http/nsHttpConnection.cpp
+++ b/netwerk/protocol/http/nsHttpConnection.cpp
@@ -1758,11 +1758,11 @@ nsHttpConnection::DisableTCPKeepalives()
 // nsHttpConnection::nsISupports
 //-----------------------------------------------------------------------------
 
-NS_IMPL_ISUPPORTS4(nsHttpConnection,
-                   nsIInputStreamCallback,
-                   nsIOutputStreamCallback,
-                   nsITransportEventSink,
-                   nsIInterfaceRequestor)
+NS_IMPL_ISUPPORTS(nsHttpConnection,
+                  nsIInputStreamCallback,
+                  nsIOutputStreamCallback,
+                  nsITransportEventSink,
+                  nsIInterfaceRequestor)
 
 //-----------------------------------------------------------------------------
 // nsHttpConnection::nsIInputStreamCallback
diff --git a/netwerk/protocol/http/nsHttpConnectionMgr.cpp b/netwerk/protocol/http/nsHttpConnectionMgr.cpp
index ac9aadf389207d8ada7af619ba7825e6cab2f5e5..b414f80b4a2b5ebf5d5aa49a23deb9f299423c13 100644
--- a/netwerk/protocol/http/nsHttpConnectionMgr.cpp
+++ b/netwerk/protocol/http/nsHttpConnectionMgr.cpp
@@ -41,7 +41,7 @@ namespace net {
 
 //-----------------------------------------------------------------------------
 
-NS_IMPL_ISUPPORTS1(nsHttpConnectionMgr, nsIObserver)
+NS_IMPL_ISUPPORTS(nsHttpConnectionMgr, nsIObserver)
 
 static void
 InsertTransactionSorted(nsTArray<nsHttpTransaction*> &pendingQ, nsHttpTransaction *trans)
@@ -2710,11 +2710,11 @@ nsHttpConnectionMgr::nsConnectionHandle::PushBack(const char *buf, uint32_t bufL
 //////////////////////// nsHalfOpenSocket
 
 
-NS_IMPL_ISUPPORTS4(nsHttpConnectionMgr::nsHalfOpenSocket,
-                   nsIOutputStreamCallback,
-                   nsITransportEventSink,
-                   nsIInterfaceRequestor,
-                   nsITimerCallback)
+NS_IMPL_ISUPPORTS(nsHttpConnectionMgr::nsHalfOpenSocket,
+                  nsIOutputStreamCallback,
+                  nsITransportEventSink,
+                  nsIInterfaceRequestor,
+                  nsITimerCallback)
 
 nsHttpConnectionMgr::
 nsHalfOpenSocket::nsHalfOpenSocket(nsConnectionEntry *ent,
diff --git a/netwerk/protocol/http/nsHttpDigestAuth.cpp b/netwerk/protocol/http/nsHttpDigestAuth.cpp
index 04b91985e13eec98e676e637663d681b3a02c786..9843b1774c819f5ca55b88e0cf4802f08cfac848 100644
--- a/netwerk/protocol/http/nsHttpDigestAuth.cpp
+++ b/netwerk/protocol/http/nsHttpDigestAuth.cpp
@@ -36,7 +36,7 @@ nsHttpDigestAuth::~nsHttpDigestAuth()
 // nsHttpDigestAuth::nsISupports
 //-----------------------------------------------------------------------------
 
-NS_IMPL_ISUPPORTS1(nsHttpDigestAuth, nsIHttpAuthenticator)
+NS_IMPL_ISUPPORTS(nsHttpDigestAuth, nsIHttpAuthenticator)
 
 //-----------------------------------------------------------------------------
 // nsHttpDigestAuth <protected>
diff --git a/netwerk/protocol/http/nsHttpHandler.cpp b/netwerk/protocol/http/nsHttpHandler.cpp
index e7a1c6f51e3222bba160bc9679d35e114e4ce201..abd461feb2d3f241a8d5000d1c24849350741ebd 100644
--- a/netwerk/protocol/http/nsHttpHandler.cpp
+++ b/netwerk/protocol/http/nsHttpHandler.cpp
@@ -1583,13 +1583,13 @@ nsHttpHandler::SetAcceptEncodings(const char *aAcceptEncodings)
 // nsHttpHandler::nsISupports
 //-----------------------------------------------------------------------------
 
-NS_IMPL_ISUPPORTS6(nsHttpHandler,
-                   nsIHttpProtocolHandler,
-                   nsIProxiedProtocolHandler,
-                   nsIProtocolHandler,
-                   nsIObserver,
-                   nsISupportsWeakReference,
-                   nsISpeculativeConnect)
+NS_IMPL_ISUPPORTS(nsHttpHandler,
+                  nsIHttpProtocolHandler,
+                  nsIProxiedProtocolHandler,
+                  nsIProtocolHandler,
+                  nsIObserver,
+                  nsISupportsWeakReference,
+                  nsISpeculativeConnect)
 
 //-----------------------------------------------------------------------------
 // nsHttpHandler::nsIProtocolHandler
@@ -1970,12 +1970,12 @@ nsHttpHandler::TickleWifi(nsIInterfaceRequestor *cb)
 // nsHttpsHandler implementation
 //-----------------------------------------------------------------------------
 
-NS_IMPL_ISUPPORTS5(nsHttpsHandler,
-                   nsIHttpProtocolHandler,
-                   nsIProxiedProtocolHandler,
-                   nsIProtocolHandler,
-                   nsISupportsWeakReference,
-                   nsISpeculativeConnect)
+NS_IMPL_ISUPPORTS(nsHttpsHandler,
+                  nsIHttpProtocolHandler,
+                  nsIProxiedProtocolHandler,
+                  nsIProtocolHandler,
+                  nsISupportsWeakReference,
+                  nsISpeculativeConnect)
 
 nsresult
 nsHttpsHandler::Init()
diff --git a/netwerk/protocol/http/nsHttpNTLMAuth.cpp b/netwerk/protocol/http/nsHttpNTLMAuth.cpp
index 5821e343e33dc23b9cee5c0809e9d19b968f287e..cc083aa82a3a02316a019ef9e293d3e1052b02d7 100644
--- a/netwerk/protocol/http/nsHttpNTLMAuth.cpp
+++ b/netwerk/protocol/http/nsHttpNTLMAuth.cpp
@@ -221,7 +221,7 @@ NS_IMPL_ISUPPORTS0(nsNTLMSessionState)
 
 //-----------------------------------------------------------------------------
 
-NS_IMPL_ISUPPORTS1(nsHttpNTLMAuth, nsIHttpAuthenticator)
+NS_IMPL_ISUPPORTS(nsHttpNTLMAuth, nsIHttpAuthenticator)
 
 NS_IMETHODIMP
 nsHttpNTLMAuth::ChallengeReceived(nsIHttpAuthenticableChannel *channel,
diff --git a/netwerk/protocol/http/nsHttpTransaction.cpp b/netwerk/protocol/http/nsHttpTransaction.cpp
index 2b315250510ce187d4e27f687454ddbe2a9f3d16..6867c0569b96b47dbb94f9af3fa28f246cbaebec 100644
--- a/netwerk/protocol/http/nsHttpTransaction.cpp
+++ b/netwerk/protocol/http/nsHttpTransaction.cpp
@@ -1807,9 +1807,9 @@ nsHttpTransaction::Release()
     return count;
 }
 
-NS_IMPL_QUERY_INTERFACE2(nsHttpTransaction,
-                         nsIInputStreamCallback,
-                         nsIOutputStreamCallback)
+NS_IMPL_QUERY_INTERFACE(nsHttpTransaction,
+                        nsIInputStreamCallback,
+                        nsIOutputStreamCallback)
 
 //-----------------------------------------------------------------------------
 // nsHttpTransaction::nsIInputStreamCallback
diff --git a/netwerk/protocol/res/nsResProtocolHandler.cpp b/netwerk/protocol/res/nsResProtocolHandler.cpp
index cb42a6d8bdb8c871449790148e1a45bf2c4817da..797569735e255adecadada0c7373064260dded60 100644
--- a/netwerk/protocol/res/nsResProtocolHandler.cpp
+++ b/netwerk/protocol/res/nsResProtocolHandler.cpp
@@ -192,10 +192,10 @@ nsResProtocolHandler::CollectSubstitutions(InfallibleTArray<ResourceMapping>& aR
 // nsResProtocolHandler::nsISupports
 //----------------------------------------------------------------------------
 
-NS_IMPL_ISUPPORTS3(nsResProtocolHandler,
-                   nsIResProtocolHandler,
-                   nsIProtocolHandler,
-                   nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(nsResProtocolHandler,
+                  nsIResProtocolHandler,
+                  nsIProtocolHandler,
+                  nsISupportsWeakReference)
 
 //----------------------------------------------------------------------------
 // nsResProtocolHandler::nsIProtocolHandler
diff --git a/netwerk/protocol/rtsp/RtspChannelChild.cpp b/netwerk/protocol/rtsp/RtspChannelChild.cpp
index ac6cdd7d30742957ece7f1175779b6f5f39a6c79..d2b2690de30862e2dc46c88bedea83ff5c861511 100644
--- a/netwerk/protocol/rtsp/RtspChannelChild.cpp
+++ b/netwerk/protocol/rtsp/RtspChannelChild.cpp
@@ -63,10 +63,10 @@ RtspChannelChild::ReleaseIPDLReference()
 //-----------------------------------------------------------------------------
 // nsISupports
 //-----------------------------------------------------------------------------
-NS_IMPL_ISUPPORTS_INHERITED2(RtspChannelChild,
-                             nsBaseChannel,
-                             nsIChannel,
-                             nsIChildChannel)
+NS_IMPL_ISUPPORTS_INHERITED(RtspChannelChild,
+                            nsBaseChannel,
+                            nsIChannel,
+                            nsIChildChannel)
 
 //-----------------------------------------------------------------------------
 // nsBaseChannel::nsIChannel
diff --git a/netwerk/protocol/rtsp/RtspChannelParent.cpp b/netwerk/protocol/rtsp/RtspChannelParent.cpp
index 1c4e127cfefc24c1e3efc542ea2d0df5c7c94cfc..401dde50e9763add1e71c4b505578ef595c2f978 100644
--- a/netwerk/protocol/rtsp/RtspChannelParent.cpp
+++ b/netwerk/protocol/rtsp/RtspChannelParent.cpp
@@ -33,9 +33,9 @@ RtspChannelParent::ActorDestroy(ActorDestroyReason why)
 //-----------------------------------------------------------------------------
 // nsISupports
 //-----------------------------------------------------------------------------
-NS_IMPL_ISUPPORTS_INHERITED1(RtspChannelParent,
-                             nsBaseChannel,
-                             nsIParentChannel)
+NS_IMPL_ISUPPORTS_INHERITED(RtspChannelParent,
+                            nsBaseChannel,
+                            nsIParentChannel)
 
 //-----------------------------------------------------------------------------
 // RtspChannelParent methods
diff --git a/netwerk/protocol/rtsp/RtspHandler.cpp b/netwerk/protocol/rtsp/RtspHandler.cpp
index e9a39044f7666dc01f5e89bbd710b7b6ec4c6366..5cff6ff5e719cb7e0040b0f3ecc8affd46c91154 100644
--- a/netwerk/protocol/rtsp/RtspHandler.cpp
+++ b/netwerk/protocol/rtsp/RtspHandler.cpp
@@ -17,7 +17,7 @@
 namespace mozilla {
 namespace net {
 
-NS_IMPL_ISUPPORTS1(RtspHandler, nsIProtocolHandler)
+NS_IMPL_ISUPPORTS(RtspHandler, nsIProtocolHandler)
 
 //-----------------------------------------------------------------------------
 // RtspHandler::nsIProtocolHandler
diff --git a/netwerk/protocol/rtsp/controller/RtspController.cpp b/netwerk/protocol/rtsp/controller/RtspController.cpp
index bee1b05e6738f510cbb87de5071a1088b95e78dd..8eefb6ac9ca66d7e98da82fab863fb85493f05ac 100644
--- a/netwerk/protocol/rtsp/controller/RtspController.cpp
+++ b/netwerk/protocol/rtsp/controller/RtspController.cpp
@@ -49,8 +49,8 @@ extern PRLogModuleInfo* gRtspLog;
 namespace mozilla {
 namespace net {
 
-NS_IMPL_ISUPPORTS1(RtspController,
-                   nsIStreamingProtocolController)
+NS_IMPL_ISUPPORTS(RtspController,
+                  nsIStreamingProtocolController)
 
 RtspController::RtspController(nsIChannel *channel)
   : mState(INIT)
diff --git a/netwerk/protocol/rtsp/controller/RtspControllerParent.cpp b/netwerk/protocol/rtsp/controller/RtspControllerParent.cpp
index 241194606add91a85b864b8ba25eafa0ce9a57ae..b385c72915fbcd74542e5c45eb46b5fe68cdc9d9 100644
--- a/netwerk/protocol/rtsp/controller/RtspControllerParent.cpp
+++ b/netwerk/protocol/rtsp/controller/RtspControllerParent.cpp
@@ -32,9 +32,9 @@ using namespace mozilla::ipc;
 namespace mozilla {
 namespace net {
 
-NS_IMPL_ISUPPORTS2(RtspControllerParent,
-                   nsIInterfaceRequestor,
-                   nsIStreamingProtocolListener)
+NS_IMPL_ISUPPORTS(RtspControllerParent,
+                  nsIInterfaceRequestor,
+                  nsIStreamingProtocolListener)
 
 RtspControllerParent::RtspControllerParent()
   : mIPCOpen(true)
diff --git a/netwerk/protocol/rtsp/controller/RtspMetaData.cpp b/netwerk/protocol/rtsp/controller/RtspMetaData.cpp
index a6f2c7ee5d15208e3169f99dc72b0f1fe005038b..e773e32533439701d03681612ef1132f6321ef25 100644
--- a/netwerk/protocol/rtsp/controller/RtspMetaData.cpp
+++ b/netwerk/protocol/rtsp/controller/RtspMetaData.cpp
@@ -12,7 +12,7 @@ using namespace mozilla;
 namespace mozilla {
 namespace net {
 
-NS_IMPL_ISUPPORTS1(RtspMetaData, nsIStreamingProtocolMetaData)
+NS_IMPL_ISUPPORTS(RtspMetaData, nsIStreamingProtocolMetaData)
 
 RtspMetaData::RtspMetaData()
  : mIndex(0)
diff --git a/netwerk/protocol/viewsource/nsViewSourceHandler.cpp b/netwerk/protocol/viewsource/nsViewSourceHandler.cpp
index ed268eccf7d887d5bb8256a09eea1662b53205c7..7bc8fbc63b5b10f734d396a68904d8d29bc3ee3d 100644
--- a/netwerk/protocol/viewsource/nsViewSourceHandler.cpp
+++ b/netwerk/protocol/viewsource/nsViewSourceHandler.cpp
@@ -13,7 +13,7 @@
 
 ////////////////////////////////////////////////////////////////////////////////
 
-NS_IMPL_ISUPPORTS1(nsViewSourceHandler, nsIProtocolHandler)
+NS_IMPL_ISUPPORTS(nsViewSourceHandler, nsIProtocolHandler)
 
 ////////////////////////////////////////////////////////////////////////////////
 // nsIProtocolHandler methods:
diff --git a/netwerk/protocol/websocket/WebSocketChannel.cpp b/netwerk/protocol/websocket/WebSocketChannel.cpp
index 5b388d887df68ab9e2acbc985b2f30882ca3be77..90f023cf9d7fe7e4d692c10c31ce1f3ca3264047 100644
--- a/netwerk/protocol/websocket/WebSocketChannel.cpp
+++ b/netwerk/protocol/websocket/WebSocketChannel.cpp
@@ -72,20 +72,20 @@ using namespace mozilla::net;
 namespace mozilla {
 namespace net {
 
-NS_IMPL_ISUPPORTS13(WebSocketChannel,
-                    nsIWebSocketChannel,
-                    nsIHttpUpgradeListener,
-                    nsIRequestObserver,
-                    nsIStreamListener,
-                    nsIProtocolHandler,
-                    nsIInputStreamCallback,
-                    nsIOutputStreamCallback,
-                    nsITimerCallback,
-                    nsIDNSListener,
-                    nsIProtocolProxyCallback,
-                    nsIInterfaceRequestor,
-                    nsIChannelEventSink,
-                    nsIThreadRetargetableRequest)
+NS_IMPL_ISUPPORTS(WebSocketChannel,
+                  nsIWebSocketChannel,
+                  nsIHttpUpgradeListener,
+                  nsIRequestObserver,
+                  nsIStreamListener,
+                  nsIProtocolHandler,
+                  nsIInputStreamCallback,
+                  nsIOutputStreamCallback,
+                  nsITimerCallback,
+                  nsIDNSListener,
+                  nsIProtocolProxyCallback,
+                  nsIInterfaceRequestor,
+                  nsIChannelEventSink,
+                  nsIThreadRetargetableRequest)
 
 // We implement RFC 6455, which uses Sec-WebSocket-Version: 13 on the wire.
 #define SEC_WEBSOCKET_VERSION "13"
@@ -586,7 +586,7 @@ private:
   nsCString                         mData;
   int32_t                           mLen;
 };
-NS_IMPL_ISUPPORTS1(CallOnMessageAvailable, nsIRunnable)
+NS_IMPL_ISUPPORTS(CallOnMessageAvailable, nsIRunnable)
 
 //-----------------------------------------------------------------------------
 // CallOnStop
@@ -622,7 +622,7 @@ private:
   nsRefPtr<WebSocketChannel>        mChannel;
   nsresult                          mReason;
 };
-NS_IMPL_ISUPPORTS1(CallOnStop, nsIRunnable)
+NS_IMPL_ISUPPORTS(CallOnStop, nsIRunnable)
 
 //-----------------------------------------------------------------------------
 // CallOnServerClose
@@ -655,7 +655,7 @@ private:
   uint16_t                          mCode;
   nsCString                         mReason;
 };
-NS_IMPL_ISUPPORTS1(CallOnServerClose, nsIRunnable)
+NS_IMPL_ISUPPORTS(CallOnServerClose, nsIRunnable)
 
 //-----------------------------------------------------------------------------
 // CallAcknowledge
@@ -686,7 +686,7 @@ private:
   nsRefPtr<WebSocketChannel>        mChannel;
   uint32_t                          mSize;
 };
-NS_IMPL_ISUPPORTS1(CallAcknowledge, nsIRunnable)
+NS_IMPL_ISUPPORTS(CallAcknowledge, nsIRunnable)
 
 //-----------------------------------------------------------------------------
 // CallOnTransportAvailable
@@ -720,7 +720,7 @@ private:
   nsCOMPtr<nsIAsyncInputStream>  mSocketIn;
   nsCOMPtr<nsIAsyncOutputStream> mSocketOut;
 };
-NS_IMPL_ISUPPORTS1(CallOnTransportAvailable, nsIRunnable)
+NS_IMPL_ISUPPORTS(CallOnTransportAvailable, nsIRunnable)
 
 //-----------------------------------------------------------------------------
 // OutboundMessage
@@ -856,7 +856,7 @@ private:
   nsRefPtr<WebSocketChannel>  mChannel;
   OutboundMessage            *mMessage;
 };
-NS_IMPL_ISUPPORTS1(OutboundEnqueuer, nsIRunnable)
+NS_IMPL_ISUPPORTS(OutboundEnqueuer, nsIRunnable)
 
 //-----------------------------------------------------------------------------
 // nsWSCompression
diff --git a/netwerk/protocol/websocket/WebSocketChannelParent.cpp b/netwerk/protocol/websocket/WebSocketChannelParent.cpp
index 82941e77ee8cba395d1fdde54ad5f1787b22dc7d..99dcbb1bf0f8a348d9010d36fc396e5c8997c492 100644
--- a/netwerk/protocol/websocket/WebSocketChannelParent.cpp
+++ b/netwerk/protocol/websocket/WebSocketChannelParent.cpp
@@ -16,9 +16,9 @@ using namespace mozilla::ipc;
 namespace mozilla {
 namespace net {
 
-NS_IMPL_ISUPPORTS2(WebSocketChannelParent,
-                              nsIWebSocketListener,
-                              nsIInterfaceRequestor)
+NS_IMPL_ISUPPORTS(WebSocketChannelParent,
+                  nsIWebSocketListener,
+                  nsIInterfaceRequestor)
 
 WebSocketChannelParent::WebSocketChannelParent(nsIAuthPromptProvider* aAuthProvider,
                                                nsILoadContext* aLoadContext,
diff --git a/netwerk/protocol/wyciwyg/WyciwygChannelChild.cpp b/netwerk/protocol/wyciwyg/WyciwygChannelChild.cpp
index 1c5e197f475d0b0b7da687b61856822f67a604a8..8aa1a4914045bdcfdb1353155fdaf6fa875a782c 100644
--- a/netwerk/protocol/wyciwyg/WyciwygChannelChild.cpp
+++ b/netwerk/protocol/wyciwyg/WyciwygChannelChild.cpp
@@ -24,11 +24,11 @@ using namespace mozilla::ipc;
 namespace mozilla {
 namespace net {
 
-NS_IMPL_ISUPPORTS4(WyciwygChannelChild,
-                   nsIRequest,
-                   nsIChannel,
-                   nsIWyciwygChannel,
-                   nsIPrivateBrowsingChannel)
+NS_IMPL_ISUPPORTS(WyciwygChannelChild,
+                  nsIRequest,
+                  nsIChannel,
+                  nsIWyciwygChannel,
+                  nsIPrivateBrowsingChannel)
 
 
 WyciwygChannelChild::WyciwygChannelChild()
diff --git a/netwerk/protocol/wyciwyg/WyciwygChannelParent.cpp b/netwerk/protocol/wyciwyg/WyciwygChannelParent.cpp
index 1d776736f89caa61f090f7f7c21a77905499a2cb..28c2df85a547e9cf2095179cac3470ddbaabec31 100644
--- a/netwerk/protocol/wyciwyg/WyciwygChannelParent.cpp
+++ b/netwerk/protocol/wyciwyg/WyciwygChannelParent.cpp
@@ -48,10 +48,10 @@ WyciwygChannelParent::ActorDestroy(ActorDestroyReason why)
 // WyciwygChannelParent::nsISupports
 //-----------------------------------------------------------------------------
 
-NS_IMPL_ISUPPORTS3(WyciwygChannelParent,
-                   nsIStreamListener,
-                   nsIInterfaceRequestor,
-                   nsIRequestObserver)
+NS_IMPL_ISUPPORTS(WyciwygChannelParent,
+                  nsIStreamListener,
+                  nsIInterfaceRequestor,
+                  nsIRequestObserver)
 
 //-----------------------------------------------------------------------------
 // WyciwygChannelParent::PWyciwygChannelParent
diff --git a/netwerk/protocol/wyciwyg/nsWyciwygChannel.cpp b/netwerk/protocol/wyciwyg/nsWyciwygChannel.cpp
index 7f2b74faeb292a6048d50ea1c80051714df3893b..961364fd8bdf0899d809970419ea811a6f799626 100644
--- a/netwerk/protocol/wyciwyg/nsWyciwygChannel.cpp
+++ b/netwerk/protocol/wyciwyg/nsWyciwygChannel.cpp
@@ -107,14 +107,14 @@ nsWyciwygChannel::~nsWyciwygChannel()
 {
 }
 
-NS_IMPL_ISUPPORTS7(nsWyciwygChannel,
-                   nsIChannel,
-                   nsIRequest,
-                   nsIStreamListener,
-                   nsIRequestObserver,
-                   nsICacheEntryOpenCallback,
-                   nsIWyciwygChannel,
-                   nsIPrivateBrowsingChannel)
+NS_IMPL_ISUPPORTS(nsWyciwygChannel,
+                  nsIChannel,
+                  nsIRequest,
+                  nsIStreamListener,
+                  nsIRequestObserver,
+                  nsICacheEntryOpenCallback,
+                  nsIWyciwygChannel,
+                  nsIPrivateBrowsingChannel)
 
 nsresult
 nsWyciwygChannel::Init(nsIURI* uri)
diff --git a/netwerk/protocol/wyciwyg/nsWyciwygProtocolHandler.cpp b/netwerk/protocol/wyciwyg/nsWyciwygProtocolHandler.cpp
index 9725215ca5cddd8709fcc0b4341e5637211ea998..e46941e28a7d399bc4063f9ccbe01c03d00bd84b 100644
--- a/netwerk/protocol/wyciwyg/nsWyciwygProtocolHandler.cpp
+++ b/netwerk/protocol/wyciwyg/nsWyciwygProtocolHandler.cpp
@@ -36,8 +36,8 @@ nsWyciwygProtocolHandler::~nsWyciwygProtocolHandler()
   LOG(("Deleting nsWyciwygProtocolHandler [this=%p]\n", this));
 }
 
-NS_IMPL_ISUPPORTS1(nsWyciwygProtocolHandler,
-                   nsIProtocolHandler)
+NS_IMPL_ISUPPORTS(nsWyciwygProtocolHandler,
+                  nsIProtocolHandler)
 
 ////////////////////////////////////////////////////////////////////////////////
 // nsIProtocolHandler methods:
diff --git a/netwerk/sctp/datachannel/DataChannel.cpp b/netwerk/sctp/datachannel/DataChannel.cpp
index 31ff2678bc8fdffd407f5c10abd311297f922aab..5b077f493c736c91961eae563aaa81a725a615d7 100644
--- a/netwerk/sctp/datachannel/DataChannel.cpp
+++ b/netwerk/sctp/datachannel/DataChannel.cpp
@@ -143,7 +143,7 @@ public:
   }
 };
 
-NS_IMPL_ISUPPORTS1(DataChannelShutdown, nsIObserver);
+NS_IMPL_ISUPPORTS(DataChannelShutdown, nsIObserver);
 
 
 BufferedMsg::BufferedMsg(struct sctp_sendv_spa &spa, const char *data,
@@ -292,8 +292,8 @@ void DataChannelConnection::DestroyOnSTS(struct socket *aMasterSocket,
   disconnect_all();
 }
 
-NS_IMPL_ISUPPORTS1(DataChannelConnection,
-                   nsITimerCallback)
+NS_IMPL_ISUPPORTS(DataChannelConnection,
+                  nsITimerCallback)
 
 bool
 DataChannelConnection::Init(unsigned short aPort, uint16_t aNumStreams, bool aUsingDtls)
diff --git a/netwerk/socket/nsSOCKSIOLayer.cpp b/netwerk/socket/nsSOCKSIOLayer.cpp
index a415ead0ef88dd620c45681b8d311ea63ef58c8a..34d29c31e4d5ddd286a01111ba6e0ca284828e98 100644
--- a/netwerk/socket/nsSOCKSIOLayer.cpp
+++ b/netwerk/socket/nsSOCKSIOLayer.cpp
@@ -177,7 +177,7 @@ nsSOCKSSocketInfo::Init(int32_t version, int32_t family, const char *proxyHost,
     mFlags           = flags;
 }
 
-NS_IMPL_ISUPPORTS2(nsSOCKSSocketInfo, nsISOCKSSocketInfo, nsIDNSListener)
+NS_IMPL_ISUPPORTS(nsSOCKSSocketInfo, nsISOCKSSocketInfo, nsIDNSListener)
 
 NS_IMETHODIMP 
 nsSOCKSSocketInfo::GetExternalProxyAddr(NetAddr * *aExternalProxyAddr)
diff --git a/netwerk/socket/nsSOCKSSocketProvider.cpp b/netwerk/socket/nsSOCKSSocketProvider.cpp
index d45adb73eb05094369bec10d1402d8f51b5ff374..af7c9b5fa80d8e87e7a55a8b8e8beb23e4c8b186 100644
--- a/netwerk/socket/nsSOCKSSocketProvider.cpp
+++ b/netwerk/socket/nsSOCKSSocketProvider.cpp
@@ -12,7 +12,7 @@
 
 //////////////////////////////////////////////////////////////////////////
 
-NS_IMPL_ISUPPORTS1(nsSOCKSSocketProvider, nsISocketProvider)
+NS_IMPL_ISUPPORTS(nsSOCKSSocketProvider, nsISocketProvider)
 
 nsresult
 nsSOCKSSocketProvider::CreateV4(nsISupports *aOuter, REFNSIID aIID, void **aResult)
diff --git a/netwerk/socket/nsSocketProviderService.cpp b/netwerk/socket/nsSocketProviderService.cpp
index 0f58f50a6556f7cc6f920bb8c4e12ebd6bed71bb..b3fc5d9e720545c5e5cdd86b79014afd6a063828 100644
--- a/netwerk/socket/nsSocketProviderService.cpp
+++ b/netwerk/socket/nsSocketProviderService.cpp
@@ -23,7 +23,7 @@ nsSocketProviderService::Create(nsISupports *aOuter, REFNSIID aIID, void **aResu
   return rv;
 }
 
-NS_IMPL_ISUPPORTS1(nsSocketProviderService, nsISocketProviderService)
+NS_IMPL_ISUPPORTS(nsSocketProviderService, nsISocketProviderService)
 
 ////////////////////////////////////////////////////////////////////////////////
 
diff --git a/netwerk/socket/nsUDPSocketProvider.cpp b/netwerk/socket/nsUDPSocketProvider.cpp
index bc216514f49c55d4b7ee1f9021f923927efbc65e..4ca7b2977e7eab9d495abd10ffb9fbd8fa50a979 100644
--- a/netwerk/socket/nsUDPSocketProvider.cpp
+++ b/netwerk/socket/nsUDPSocketProvider.cpp
@@ -6,7 +6,7 @@
 
 #include "nspr.h"
 
-NS_IMPL_ISUPPORTS1(nsUDPSocketProvider, nsISocketProvider)
+NS_IMPL_ISUPPORTS(nsUDPSocketProvider, nsISocketProvider)
 
 nsUDPSocketProvider::~nsUDPSocketProvider()
 {
diff --git a/netwerk/streamconv/converters/mozTXTToHTMLConv.cpp b/netwerk/streamconv/converters/mozTXTToHTMLConv.cpp
index 7a0c1e208a59293afcc83d7ce0899aea92a0d6c8..14a9e8e9de4a36c907236ee01af425dc540a555a 100644
--- a/netwerk/streamconv/converters/mozTXTToHTMLConv.cpp
+++ b/netwerk/streamconv/converters/mozTXTToHTMLConv.cpp
@@ -1014,11 +1014,11 @@ mozTXTToHTMLConv::~mozTXTToHTMLConv()
 {
 }
 
-NS_IMPL_ISUPPORTS4(mozTXTToHTMLConv,
-                   mozITXTToHTMLConv,
-                   nsIStreamConverter,
-                   nsIStreamListener,
-                   nsIRequestObserver)
+NS_IMPL_ISUPPORTS(mozTXTToHTMLConv,
+                  mozITXTToHTMLConv,
+                  nsIStreamConverter,
+                  nsIStreamListener,
+                  nsIRequestObserver)
 
 int32_t
 mozTXTToHTMLConv::CiteLevelTXT(const char16_t *line,
diff --git a/netwerk/streamconv/converters/nsDirIndex.cpp b/netwerk/streamconv/converters/nsDirIndex.cpp
index 825e6e443b7811a6e34b3bda79cbb1a13fff4de9..c0fbaba15e9b73d9ac1a96c449efa836659743ee 100644
--- a/netwerk/streamconv/converters/nsDirIndex.cpp
+++ b/netwerk/streamconv/converters/nsDirIndex.cpp
@@ -6,8 +6,8 @@
 #include "nsDirIndex.h"
 #include "nsISupportsObsolete.h"
 
-NS_IMPL_ISUPPORTS1(nsDirIndex,
-                   nsIDirIndex)
+NS_IMPL_ISUPPORTS(nsDirIndex,
+                  nsIDirIndex)
 
 nsDirIndex::nsDirIndex() : mType(TYPE_UNKNOWN),
                            mSize(UINT64_MAX),
diff --git a/netwerk/streamconv/converters/nsDirIndexParser.cpp b/netwerk/streamconv/converters/nsDirIndexParser.cpp
index e3efc6e3749ec86b03ac26c5e7fc656208bccb04..f68d3df3b899e26cd6d4a2b4f59f46cca730750a 100644
--- a/netwerk/streamconv/converters/nsDirIndexParser.cpp
+++ b/netwerk/streamconv/converters/nsDirIndexParser.cpp
@@ -20,10 +20,10 @@
 
 using namespace mozilla;
 
-NS_IMPL_ISUPPORTS3(nsDirIndexParser,
-                   nsIRequestObserver,
-                   nsIStreamListener,
-                   nsIDirIndexParser)
+NS_IMPL_ISUPPORTS(nsDirIndexParser,
+                  nsIRequestObserver,
+                  nsIStreamListener,
+                  nsIDirIndexParser)
 
 nsDirIndexParser::nsDirIndexParser() {
 }
diff --git a/netwerk/streamconv/converters/nsFTPDirListingConv.cpp b/netwerk/streamconv/converters/nsFTPDirListingConv.cpp
index 5a9904d1a34617d8b5c44bde725a7e03bf3f23b8..4c43e451b8b5f143600a173601ce884024d64260 100644
--- a/netwerk/streamconv/converters/nsFTPDirListingConv.cpp
+++ b/netwerk/streamconv/converters/nsFTPDirListingConv.cpp
@@ -36,10 +36,10 @@ PRLogModuleInfo* gFTPDirListConvLog = nullptr;
 #endif /* PR_LOGGING */
 
 // nsISupports implementation
-NS_IMPL_ISUPPORTS3(nsFTPDirListingConv,
-                   nsIStreamConverter,
-                   nsIStreamListener, 
-                   nsIRequestObserver)
+NS_IMPL_ISUPPORTS(nsFTPDirListingConv,
+                  nsIStreamConverter,
+                  nsIStreamListener, 
+                  nsIRequestObserver)
 
 
 // nsIStreamConverter implementation
diff --git a/netwerk/streamconv/converters/nsHTTPCompressConv.cpp b/netwerk/streamconv/converters/nsHTTPCompressConv.cpp
index 208683bad798c8601f1d72d1a1b3b947f55b0734..db4cb39545bbca47c45a5f49850171e38649ea1f 100644
--- a/netwerk/streamconv/converters/nsHTTPCompressConv.cpp
+++ b/netwerk/streamconv/converters/nsHTTPCompressConv.cpp
@@ -14,10 +14,10 @@
 #include "nsComponentManagerUtils.h"
 
 // nsISupports implementation
-NS_IMPL_ISUPPORTS3(nsHTTPCompressConv,
-                   nsIStreamConverter,
-                   nsIStreamListener,
-                   nsIRequestObserver)
+NS_IMPL_ISUPPORTS(nsHTTPCompressConv,
+                  nsIStreamConverter,
+                  nsIStreamListener,
+                  nsIRequestObserver)
 
 // nsFTPDirListingConv methods
 nsHTTPCompressConv::nsHTTPCompressConv()
diff --git a/netwerk/streamconv/converters/nsIndexedToHTML.cpp b/netwerk/streamconv/converters/nsIndexedToHTML.cpp
index ce956bc1df074fe4e4a25d541c7b83edf1916329..0b5b700bf920f343b420771459ef959d75aac183 100644
--- a/netwerk/streamconv/converters/nsIndexedToHTML.cpp
+++ b/netwerk/streamconv/converters/nsIndexedToHTML.cpp
@@ -25,11 +25,11 @@
 #include "nsXPIDLString.h"
 #include <algorithm>
 
-NS_IMPL_ISUPPORTS4(nsIndexedToHTML,
-                   nsIDirIndexListener,
-                   nsIStreamConverter,
-                   nsIRequestObserver,
-                   nsIStreamListener)
+NS_IMPL_ISUPPORTS(nsIndexedToHTML,
+                  nsIDirIndexListener,
+                  nsIStreamConverter,
+                  nsIRequestObserver,
+                  nsIStreamListener)
 
 static void AppendNonAsciiToNCR(const nsAString& in, nsCString& out)
 {
diff --git a/netwerk/streamconv/converters/nsMultiMixedConv.cpp b/netwerk/streamconv/converters/nsMultiMixedConv.cpp
index 9d5f39ef6cf2fc340c74cfb4e224a487b655f561..f5137cf8c67c0c6b29fa96c0ebea6e5ebecca212 100644
--- a/netwerk/streamconv/converters/nsMultiMixedConv.cpp
+++ b/netwerk/streamconv/converters/nsMultiMixedConv.cpp
@@ -409,10 +409,10 @@ nsPartChannel::GetBaseChannel(nsIChannel ** aReturn)
 
 
 // nsISupports implementation
-NS_IMPL_ISUPPORTS3(nsMultiMixedConv,
-                   nsIStreamConverter,
-                   nsIStreamListener,
-                   nsIRequestObserver)
+NS_IMPL_ISUPPORTS(nsMultiMixedConv,
+                  nsIStreamConverter,
+                  nsIStreamListener,
+                  nsIRequestObserver)
 
 
 // nsIStreamConverter implementation
diff --git a/netwerk/streamconv/converters/nsTXTToHTMLConv.cpp b/netwerk/streamconv/converters/nsTXTToHTMLConv.cpp
index b0e58cb01ef87e1ce65ee7dc39e1b27dae6b78b3..591b7ddb87d4424dbb36e4566670ffcb00d3ef55 100644
--- a/netwerk/streamconv/converters/nsTXTToHTMLConv.cpp
+++ b/netwerk/streamconv/converters/nsTXTToHTMLConv.cpp
@@ -13,11 +13,11 @@
 #define TOKEN_DELIMITERS MOZ_UTF16("\t\r\n ")
 
 // nsISupports methods
-NS_IMPL_ISUPPORTS4(nsTXTToHTMLConv,
-                   nsIStreamConverter,
-                   nsITXTToHTMLConv,
-                   nsIRequestObserver,
-                   nsIStreamListener)
+NS_IMPL_ISUPPORTS(nsTXTToHTMLConv,
+                  nsIStreamConverter,
+                  nsITXTToHTMLConv,
+                  nsIRequestObserver,
+                  nsIStreamListener)
 
 
 // nsIStreamConverter methods
diff --git a/netwerk/streamconv/src/nsStreamConverterService.cpp b/netwerk/streamconv/src/nsStreamConverterService.cpp
index f500c6ced14d524df22e0fbca1c8d7af47c6ba12..f549990b63acdd3eb04d6d9038cc9492b80dbeb9 100644
--- a/netwerk/streamconv/src/nsStreamConverterService.cpp
+++ b/netwerk/streamconv/src/nsStreamConverterService.cpp
@@ -66,7 +66,7 @@ struct BFSTableData {
 
 ////////////////////////////////////////////////////////////
 // nsISupports methods
-NS_IMPL_ISUPPORTS1(nsStreamConverterService, nsIStreamConverterService)
+NS_IMPL_ISUPPORTS(nsStreamConverterService, nsIStreamConverterService)
 
 
 ////////////////////////////////////////////////////////////
diff --git a/netwerk/streamconv/test/Converters.cpp b/netwerk/streamconv/test/Converters.cpp
index 8a4dfb588fc4f4e59a36ed864ddbc3f3fffddbdd..61b114d77d4588dc044ebb8c45cae76ae032be19 100644
--- a/netwerk/streamconv/test/Converters.cpp
+++ b/netwerk/streamconv/test/Converters.cpp
@@ -19,10 +19,10 @@
 
 NS_DEFINE_CID(kTestConverterCID, NS_TESTCONVERTER_CID);
 
-NS_IMPL_ISUPPORTS3(TestConverter,
-                   nsIStreamConverter,
-                   nsIStreamListener,
-                   nsIRequestObserver)
+NS_IMPL_ISUPPORTS(TestConverter,
+                  nsIStreamConverter,
+                  nsIStreamListener,
+                  nsIRequestObserver)
 
 TestConverter::TestConverter() {
 }
diff --git a/netwerk/streamconv/test/TestStreamConv.cpp b/netwerk/streamconv/test/TestStreamConv.cpp
index 491e93f53a3f20c63f048fcee6001de046be4385..90719db0ae27299bc8d4bd81ccd34be7f6d2720b 100644
--- a/netwerk/streamconv/test/TestStreamConv.cpp
+++ b/netwerk/streamconv/test/TestStreamConv.cpp
@@ -86,9 +86,9 @@ public:
                              nsresult aStatus) { return NS_OK; }
 };
 
-NS_IMPL_ISUPPORTS2(EndListener,
-                   nsIStreamListener,
-                   nsIRequestObserver)
+NS_IMPL_ISUPPORTS(EndListener,
+                  nsIStreamListener,
+                  nsIRequestObserver)
 
 ////////////////////////////////////////////////////////////////////////
 // EndListener END
diff --git a/netwerk/system/android/nsAndroidNetworkLinkService.cpp b/netwerk/system/android/nsAndroidNetworkLinkService.cpp
index 97629673a94ca58fe0a5fa72c451b78e24c719e9..ca5f00a8899c6b9e50d212560e67d831becb64f1 100644
--- a/netwerk/system/android/nsAndroidNetworkLinkService.cpp
+++ b/netwerk/system/android/nsAndroidNetworkLinkService.cpp
@@ -12,8 +12,8 @@
 
 using namespace mozilla::widget::android;
 
-NS_IMPL_ISUPPORTS1(nsAndroidNetworkLinkService,
-                   nsINetworkLinkService)
+NS_IMPL_ISUPPORTS(nsAndroidNetworkLinkService,
+                  nsINetworkLinkService)
 
 nsAndroidNetworkLinkService::nsAndroidNetworkLinkService()
 {
diff --git a/netwerk/system/mac/nsNetworkLinkService.mm b/netwerk/system/mac/nsNetworkLinkService.mm
index 7b61a35cbce124cfc90d8d16ef36133df1f877cb..51b6235ad4d930924287e952c1c79d815a7a54dd 100644
--- a/netwerk/system/mac/nsNetworkLinkService.mm
+++ b/netwerk/system/mac/nsNetworkLinkService.mm
@@ -13,9 +13,9 @@
 #import <Cocoa/Cocoa.h>
 #import <netinet/in.h>
 
-NS_IMPL_ISUPPORTS2(nsNetworkLinkService,
-                   nsINetworkLinkService,
-                   nsIObserver)
+NS_IMPL_ISUPPORTS(nsNetworkLinkService,
+                  nsINetworkLinkService,
+                  nsIObserver)
 
 nsNetworkLinkService::nsNetworkLinkService()
     : mLinkUp(true)
diff --git a/netwerk/system/qt/nsQtNetworkLinkService.cpp b/netwerk/system/qt/nsQtNetworkLinkService.cpp
index 888dfd1c2dd58e0131b5ed5db803865d73603322..f08aabbd8ed60a6a80f8351ef0df03123f5d651a 100644
--- a/netwerk/system/qt/nsQtNetworkLinkService.cpp
+++ b/netwerk/system/qt/nsQtNetworkLinkService.cpp
@@ -11,9 +11,9 @@
 #include "mozilla/Services.h"
 #include "nsCRT.h"
 
-NS_IMPL_ISUPPORTS2(nsQtNetworkLinkService,
-                   nsINetworkLinkService,
-                   nsIObserver)
+NS_IMPL_ISUPPORTS(nsQtNetworkLinkService,
+                  nsINetworkLinkService,
+                  nsIObserver)
 
 nsQtNetworkLinkService::nsQtNetworkLinkService()
 {
diff --git a/netwerk/system/win32/nsNotifyAddrListener.cpp b/netwerk/system/win32/nsNotifyAddrListener.cpp
index ad9e9bccb52be01279cdabf4e3446f2242a78e84..dc19596591adcf868335ae3bb16866828f93a6df 100644
--- a/netwerk/system/win32/nsNotifyAddrListener.cpp
+++ b/netwerk/system/win32/nsNotifyAddrListener.cpp
@@ -49,10 +49,10 @@ static void FreeDynamicLibraries(void)
     }
 }
 
-NS_IMPL_ISUPPORTS3(nsNotifyAddrListener,
-                   nsINetworkLinkService,
-                   nsIRunnable,
-                   nsIObserver)
+NS_IMPL_ISUPPORTS(nsNotifyAddrListener,
+                  nsINetworkLinkService,
+                  nsIRunnable,
+                  nsIObserver)
 
 nsNotifyAddrListener::nsNotifyAddrListener()
     : mLinkUp(true)  // assume true by default
diff --git a/netwerk/test/TestCallbacks.cpp b/netwerk/test/TestCallbacks.cpp
index 499bb1b2d2c6f3db914205c9acb77415067d9c74..a7261c52c31bcc1176a2af75c7f3f2d02c9be2d4 100644
--- a/netwerk/test/TestCallbacks.cpp
+++ b/netwerk/test/TestCallbacks.cpp
@@ -56,7 +56,7 @@ public:
     }
 };
 
-NS_IMPL_ISUPPORTS1(ConsumerContext, nsIEquals)
+NS_IMPL_ISUPPORTS(ConsumerContext, nsIEquals)
 
 class Consumer : public nsIStreamListener {
 public:
@@ -79,7 +79,7 @@ public:
 };
 
 // nsISupports implementation
-NS_IMPL_ISUPPORTS2(Consumer, nsIStreamListener, nsIRequestObserver)
+NS_IMPL_ISUPPORTS(Consumer, nsIStreamListener, nsIRequestObserver)
 
 
 // nsIRequestObserver implementation
diff --git a/netwerk/test/TestCommon.h b/netwerk/test/TestCommon.h
index 072cba8ae33f13e8993452e2fc2f7cf43d82faf6..963703ca502904503a5d7664de2894ce440665ce 100644
--- a/netwerk/test/TestCommon.h
+++ b/netwerk/test/TestCommon.h
@@ -26,7 +26,7 @@ public:
     return NS_OK;
   }
 };
-NS_IMPL_ISUPPORTS1(nsQuitPumpingEvent, nsIRunnable)
+NS_IMPL_ISUPPORTS(nsQuitPumpingEvent, nsIRunnable)
 
 static inline void PumpEvents()
 {
diff --git a/netwerk/test/TestDNS.cpp b/netwerk/test/TestDNS.cpp
index 4fe4fe8fb05be95016a01131b16406d1880bcdb9..06ab35971821f27b1fbf838ee59f654b326446ae 100644
--- a/netwerk/test/TestDNS.cpp
+++ b/netwerk/test/TestDNS.cpp
@@ -57,7 +57,7 @@ private:
     int32_t   mIndex;
 };
 
-NS_IMPL_ISUPPORTS1(myDNSListener, nsIDNSListener)
+NS_IMPL_ISUPPORTS(myDNSListener, nsIDNSListener)
 
 static bool IsAscii(const char *s)
 {
diff --git a/netwerk/test/TestFileInput2.cpp b/netwerk/test/TestFileInput2.cpp
index 1450846560f090cea42f67b3e25510b0de2dc002..dac2a0ec5e5e8b876b7d5e3b8e0bfcebeaf20063 100644
--- a/netwerk/test/TestFileInput2.cpp
+++ b/netwerk/test/TestFileInput2.cpp
@@ -218,7 +218,7 @@ protected:
     uint32_t            mBufferSize;
 };
 
-NS_IMPL_ISUPPORTS1(FileSpecWorker, nsIRunnable)
+NS_IMPL_ISUPPORTS(FileSpecWorker, nsIRunnable)
 
 ////////////////////////////////////////////////////////////////////////////////
 
@@ -310,7 +310,7 @@ protected:
     uint32_t            mBufferSize;
 };
 
-NS_IMPL_ISUPPORTS1(FileChannelWorker, nsIRunnable)
+NS_IMPL_ISUPPORTS(FileChannelWorker, nsIRunnable)
 
 ////////////////////////////////////////////////////////////////////////////////
 
diff --git a/netwerk/test/TestHttp.cpp b/netwerk/test/TestHttp.cpp
index 7e8f270b8df19089ebf78ca12d3315d94a2f2776..e1883758fac8030cd45e9f908e37f6f50556e3b2 100644
--- a/netwerk/test/TestHttp.cpp
+++ b/netwerk/test/TestHttp.cpp
@@ -34,9 +34,9 @@ public:
     virtual ~MyListener() {}
 };
 
-NS_IMPL_ISUPPORTS2(MyListener,
-                   nsIRequestObserver,
-                   nsIStreamListener)
+NS_IMPL_ISUPPORTS(MyListener,
+                  nsIRequestObserver,
+                  nsIStreamListener)
 
 NS_IMETHODIMP
 MyListener::OnStartRequest(nsIRequest *req, nsISupports *ctxt)
@@ -96,9 +96,9 @@ public:
     virtual ~MyNotifications() {}
 };
 
-NS_IMPL_ISUPPORTS2(MyNotifications,
-                   nsIInterfaceRequestor,
-                   nsIProgressEventSink)
+NS_IMPL_ISUPPORTS(MyNotifications,
+                  nsIInterfaceRequestor,
+                  nsIProgressEventSink)
 
 NS_IMETHODIMP
 MyNotifications::GetInterface(const nsIID &iid, void **result)
diff --git a/netwerk/test/TestIOThreads.cpp b/netwerk/test/TestIOThreads.cpp
index a594f8f72377c934ccf6004b65d3262f41e6f36a..f2ca8aeb6934a9e2157baa7c88b87df98b842663 100644
--- a/netwerk/test/TestIOThreads.cpp
+++ b/netwerk/test/TestIOThreads.cpp
@@ -33,7 +33,7 @@ public:
 private:
     int mIndex;
 };
-NS_IMPL_ISUPPORTS1(nsIOEvent, nsIRunnable)
+NS_IMPL_ISUPPORTS(nsIOEvent, nsIRunnable)
 
 static nsresult RunTest()
 {
diff --git a/netwerk/test/TestIncrementalDownload.cpp b/netwerk/test/TestIncrementalDownload.cpp
index 46dd1527d88dad5721c40c95747a44ab2f888148..d6f5b6ab4c2616e99fb1da7387914d9c26b51dba 100644
--- a/netwerk/test/TestIncrementalDownload.cpp
+++ b/netwerk/test/TestIncrementalDownload.cpp
@@ -27,8 +27,8 @@ public:
   NS_DECL_NSIPROGRESSEVENTSINK
 };
 
-NS_IMPL_ISUPPORTS2(FetchObserver, nsIRequestObserver,
-                   nsIProgressEventSink)
+NS_IMPL_ISUPPORTS(FetchObserver, nsIRequestObserver,
+                  nsIProgressEventSink)
 
 NS_IMETHODIMP
 FetchObserver::OnStartRequest(nsIRequest *request, nsISupports *context)
diff --git a/netwerk/test/TestMCTransport.cpp b/netwerk/test/TestMCTransport.cpp
index a58a0547a6fbe8767391a8bd3ef939fbb5a24869..0655c966b92d8b332f06bff6ed5f63e465d432b7 100644
--- a/netwerk/test/TestMCTransport.cpp
+++ b/netwerk/test/TestMCTransport.cpp
@@ -54,9 +54,9 @@ private:
     FILE *mFile;
 };
 
-NS_IMPL_ISUPPORTS2(TestListener,
-                   nsIStreamListener,
-                   nsIRequestObserver)
+NS_IMPL_ISUPPORTS(TestListener,
+                  nsIStreamListener,
+                  nsIRequestObserver)
 
 TestListener::TestListener(char *filename)
     : mFilename(filename)
diff --git a/netwerk/test/TestOverlappedIO.cpp b/netwerk/test/TestOverlappedIO.cpp
index 59417147da6e3b6b52ae54e7bc6e25d445f050e1..98012c9625968e5cbe21ce29bf73d7fdd8497b4e 100644
--- a/netwerk/test/TestOverlappedIO.cpp
+++ b/netwerk/test/TestOverlappedIO.cpp
@@ -57,9 +57,9 @@ public:
     NS_DECL_NSISTREAMLISTENER
 };
 
-NS_IMPL_ISUPPORTS2(TestListener,
-                   nsIRequestObserver,
-                   nsIStreamListener);
+NS_IMPL_ISUPPORTS(TestListener,
+                  nsIRequestObserver,
+                  nsIStreamListener);
 
 NS_IMETHODIMP
 TestListener::OnStartRequest(nsIRequest* request, nsISupports* context)
@@ -122,9 +122,9 @@ protected:
     uint32_t mRequestCount;
 };
 
-NS_IMPL_ISUPPORTS2(TestProvider,
-                   nsIStreamProvider,
-                   nsIRequestObserver)
+NS_IMPL_ISUPPORTS(TestProvider,
+                  nsIStreamProvider,
+                  nsIRequestObserver)
 
 TestProvider::TestProvider(char *data)
 {
diff --git a/netwerk/test/TestPageLoad.cpp b/netwerk/test/TestPageLoad.cpp
index 8b8072fbf795f884c34dc2462e4f2332c8acff13..848a5077d31a4c97b68f121465356c327d128c9d 100644
--- a/netwerk/test/TestPageLoad.cpp
+++ b/netwerk/test/TestPageLoad.cpp
@@ -137,9 +137,9 @@ public:
     virtual ~MyListener() {}
 };
 
-NS_IMPL_ISUPPORTS2(MyListener,
-                   nsIRequestObserver,
-                   nsIStreamListener)
+NS_IMPL_ISUPPORTS(MyListener,
+                  nsIRequestObserver,
+                  nsIStreamListener)
 
 NS_IMETHODIMP
 MyListener::OnStartRequest(nsIRequest *req, nsISupports *ctxt)
@@ -204,9 +204,9 @@ public:
     virtual ~MyNotifications() {}
 };
 
-NS_IMPL_ISUPPORTS2(MyNotifications,
-                   nsIInterfaceRequestor,
-                   nsIProgressEventSink)
+NS_IMPL_ISUPPORTS(MyNotifications,
+                  nsIInterfaceRequestor,
+                  nsIProgressEventSink)
 
 NS_IMETHODIMP
 MyNotifications::GetInterface(const nsIID &iid, void **result)
diff --git a/netwerk/test/TestPerf.cpp b/netwerk/test/TestPerf.cpp
index f8c8ddd9367663f4cd50e8afbeba862154a28011..e8b91535862572b10d92ba08fc6822221e78b7bf 100644
--- a/netwerk/test/TestPerf.cpp
+++ b/netwerk/test/TestPerf.cpp
@@ -67,7 +67,7 @@ public:
     virtual ~MyListener() {}
 };
 
-NS_IMPL_ISUPPORTS2(MyListener, nsIStreamListener, nsIRequestObserver)
+NS_IMPL_ISUPPORTS(MyListener, nsIStreamListener, nsIRequestObserver)
 
 NS_IMETHODIMP
 MyListener::OnStartRequest(nsIRequest *req, nsISupports *ctx)
diff --git a/netwerk/test/TestProtocols.cpp b/netwerk/test/TestProtocols.cpp
index 0c367f4872b86b46b7b18a36e9780c3b212997dd..1dc01d9f675af6f10e1cd4d4fd8e9e9cd206d7a9 100644
--- a/netwerk/test/TestProtocols.cpp
+++ b/netwerk/test/TestProtocols.cpp
@@ -173,7 +173,7 @@ public:
   HeaderVisitor() { }
   virtual ~HeaderVisitor() {}
 };
-NS_IMPL_ISUPPORTS1(HeaderVisitor, nsIHttpHeaderVisitor)
+NS_IMPL_ISUPPORTS(HeaderVisitor, nsIHttpHeaderVisitor)
 
 NS_IMETHODIMP
 HeaderVisitor::VisitHeader(const nsACString &header, const nsACString &value)
@@ -241,7 +241,7 @@ TestChannelEventSink::~TestChannelEventSink()
 }
 
 
-NS_IMPL_ISUPPORTS1(TestChannelEventSink, nsIChannelEventSink)
+NS_IMPL_ISUPPORTS(TestChannelEventSink, nsIChannelEventSink)
 
 NS_IMETHODIMP
 TestChannelEventSink::AsyncOnChannelRedirect(nsIChannel *channel,
@@ -269,7 +269,7 @@ public:
   virtual ~TestAuthPrompt();
 };
 
-NS_IMPL_ISUPPORTS1(TestAuthPrompt, nsIAuthPrompt)
+NS_IMPL_ISUPPORTS(TestAuthPrompt, nsIAuthPrompt)
 
 TestAuthPrompt::TestAuthPrompt()
 {
@@ -370,7 +370,7 @@ InputTestConsumer::~InputTestConsumer()
 {
 }
 
-NS_IMPL_ISUPPORTS2(InputTestConsumer, nsIStreamListener, nsIRequestObserver)
+NS_IMPL_ISUPPORTS(InputTestConsumer, nsIStreamListener, nsIRequestObserver)
 
 NS_IMETHODIMP
 InputTestConsumer::OnStartRequest(nsIRequest *request, nsISupports* context)
@@ -595,7 +595,7 @@ public:
     }
 };
 
-NS_IMPL_ISUPPORTS1(NotificationCallbacks, nsIInterfaceRequestor)
+NS_IMPL_ISUPPORTS(NotificationCallbacks, nsIInterfaceRequestor)
 
 //-----------------------------------------------------------------------------
 // helpers...
diff --git a/netwerk/test/TestRes.cpp b/netwerk/test/TestRes.cpp
index 74e7d00261b08dfcfed42a33eb95b30a3ac65836..bf4b236de818f79889a7244f9e6af24257f2519b 100644
--- a/netwerk/test/TestRes.cpp
+++ b/netwerk/test/TestRes.cpp
@@ -166,7 +166,7 @@ public:
     }
 };
 
-NS_IMPL_ISUPPORTS2(Listener, nsIStreamListener, nsIRequestObserver)
+NS_IMPL_ISUPPORTS(Listener, nsIStreamListener, nsIRequestObserver)
 
 nsresult
 TestAsyncRead(const char* url)
diff --git a/netwerk/test/TestServ.cpp b/netwerk/test/TestServ.cpp
index 596d903f3d93f8665c73f0266912f24acb1c5e02..cdf0069f19d6682cf52a36a56f72aaa123940080 100644
--- a/netwerk/test/TestServ.cpp
+++ b/netwerk/test/TestServ.cpp
@@ -31,7 +31,7 @@ public:
     virtual ~MySocketListener() {}
 };
 
-NS_IMPL_ISUPPORTS1(MySocketListener, nsIServerSocketListener)
+NS_IMPL_ISUPPORTS(MySocketListener, nsIServerSocketListener)
 
 NS_IMETHODIMP
 MySocketListener::OnSocketAccepted(nsIServerSocket *serv,
diff --git a/netwerk/test/TestSocketIO.cpp b/netwerk/test/TestSocketIO.cpp
index 5da97bffbeaa74d5b7db0866c142412585c0040b..bbeb2d055995ec027ce455cb9132ceb4cd7d1646 100644
--- a/netwerk/test/TestSocketIO.cpp
+++ b/netwerk/test/TestSocketIO.cpp
@@ -56,9 +56,9 @@ public:
     NS_DECL_NSISTREAMLISTENER
 };
 
-NS_IMPL_ISUPPORTS2(TestListener,
-                   nsIRequestObserver,
-                   nsIStreamListener);
+NS_IMPL_ISUPPORTS(TestListener,
+                  nsIRequestObserver,
+                  nsIStreamListener);
 
 NS_IMETHODIMP
 TestListener::OnStartRequest(nsIRequest* request, nsISupports* context)
@@ -117,9 +117,9 @@ protected:
     nsCOMPtr<nsIByteArrayInputStream> mData;
 };
 
-NS_IMPL_ISUPPORTS2(TestProvider,
-                   nsIStreamProvider,
-                   nsIRequestObserver)
+NS_IMPL_ISUPPORTS(TestProvider,
+                  nsIStreamProvider,
+                  nsIRequestObserver)
 
 TestProvider::TestProvider(char *data)
 {
diff --git a/netwerk/test/TestSocketInput.cpp b/netwerk/test/TestSocketInput.cpp
index e06026a0755d157cb03e8333b000b19028b1db7f..c3e58bd1eb48da7e75b01c8c7d0a13566d030012 100644
--- a/netwerk/test/TestSocketInput.cpp
+++ b/netwerk/test/TestSocketInput.cpp
@@ -49,7 +49,7 @@ InputTestConsumer::~InputTestConsumer()
 }
 
 
-NS_IMPL_ISUPPORTS2(InputTestConsumer, nsIRequestObserver, nsIStreamListener)
+NS_IMPL_ISUPPORTS(InputTestConsumer, nsIRequestObserver, nsIStreamListener)
 
 
 NS_IMETHODIMP
diff --git a/netwerk/test/TestSocketTransport.cpp b/netwerk/test/TestSocketTransport.cpp
index dfdfa98c49fd46793caf59265ca622618b3a313c..6179976f10ae76ef4b4ac2233c3a9e21d29f7c87 100644
--- a/netwerk/test/TestSocketTransport.cpp
+++ b/netwerk/test/TestSocketTransport.cpp
@@ -115,9 +115,9 @@ private:
     uint32_t  mWriteOffset;
 };
 
-NS_IMPL_ISUPPORTS2(MyHandler,
-                   nsIOutputStreamCallback,
-                   nsIInputStreamCallback)
+NS_IMPL_ISUPPORTS(MyHandler,
+                  nsIOutputStreamCallback,
+                  nsIInputStreamCallback)
 
 ////////////////////////////////////////////////////////////////////////////////
 
diff --git a/netwerk/test/TestStreamChannel.cpp b/netwerk/test/TestStreamChannel.cpp
index 8de4f49747e21a86019a3068052f2bf95217d916..1636f7b0d9caa2066601a60bc9c31f5c0b5c1001 100644
--- a/netwerk/test/TestStreamChannel.cpp
+++ b/netwerk/test/TestStreamChannel.cpp
@@ -88,9 +88,9 @@ public:
     }
 };
 
-NS_IMPL_ISUPPORTS2(MyListener,
-                   nsIRequestObserver,
-                   nsIStreamListener)
+NS_IMPL_ISUPPORTS(MyListener,
+                  nsIRequestObserver,
+                  nsIStreamListener)
 
 ////////////////////////////////////////////////////////////////////////////////
 
@@ -123,9 +123,9 @@ public:
     }
 };
 
-NS_IMPL_ISUPPORTS2(MyCallbacks,
-                   nsIInterfaceRequestor,
-                   nsIProgressEventSink)
+NS_IMPL_ISUPPORTS(MyCallbacks,
+                  nsIInterfaceRequestor,
+                  nsIProgressEventSink)
 
 ////////////////////////////////////////////////////////////////////////////////
 
diff --git a/netwerk/test/TestStreamLoader.cpp b/netwerk/test/TestStreamLoader.cpp
index db6a3997fec98388a7bfcf4d4c7ec70e6b745efb..f207107064bcdacfed93177907c5a8beab717f3b 100644
--- a/netwerk/test/TestStreamLoader.cpp
+++ b/netwerk/test/TestStreamLoader.cpp
@@ -20,7 +20,7 @@ public:
   NS_DECL_NSISTREAMLOADEROBSERVER
 };
 
-NS_IMPL_ISUPPORTS1(MyStreamLoaderObserver, nsIStreamLoaderObserver)
+NS_IMPL_ISUPPORTS(MyStreamLoaderObserver, nsIStreamLoaderObserver)
 
 NS_IMETHODIMP
 MyStreamLoaderObserver::OnStreamComplete(nsIStreamLoader *loader,
diff --git a/netwerk/test/TestStreamPump.cpp b/netwerk/test/TestStreamPump.cpp
index 12c3f6d17cbceffb5a207b9818aa284921d8c557..ffbfa74e6e0de09d95564c3d7415fc550184203b 100644
--- a/netwerk/test/TestStreamPump.cpp
+++ b/netwerk/test/TestStreamPump.cpp
@@ -89,9 +89,9 @@ public:
     }
 };
 
-NS_IMPL_ISUPPORTS2(MyListener,
-                   nsIRequestObserver,
-                   nsIStreamListener)
+NS_IMPL_ISUPPORTS(MyListener,
+                  nsIRequestObserver,
+                  nsIStreamListener)
 
 ////////////////////////////////////////////////////////////////////////////////
 
diff --git a/netwerk/test/TestStreamTransport.cpp b/netwerk/test/TestStreamTransport.cpp
index 96e2b3250ab8eda4c8a08618c6f834c9354cf437..e0abe5066fcb1b9ec4ed92cfcc0802faaf710226 100644
--- a/netwerk/test/TestStreamTransport.cpp
+++ b/netwerk/test/TestStreamTransport.cpp
@@ -162,9 +162,9 @@ protected:
     nsresult                       mInputCondition;
 };
 
-NS_IMPL_ISUPPORTS2(MyCopier,
-                   nsIInputStreamCallback,
-                   nsIOutputStreamCallback)
+NS_IMPL_ISUPPORTS(MyCopier,
+                  nsIInputStreamCallback,
+                  nsIOutputStreamCallback)
 
 ////////////////////////////////////////////////////////////////////////////////
 
diff --git a/netwerk/test/TestThreadedIO.cpp b/netwerk/test/TestThreadedIO.cpp
index ab21634e174968f078831c0f807f0451d22e2ae3..d7a17bfdc150154ec15d6619d1f4e5d53ae1a1d4 100644
--- a/netwerk/test/TestThreadedIO.cpp
+++ b/netwerk/test/TestThreadedIO.cpp
@@ -93,7 +93,7 @@ TestListener::~TestListener() {
     printf( "TestListener dtor called on thread %d\n", mThreadNo );
 }
 
-NS_IMPL_ISUPPORTS2( TestListener, nsIStreamListener, nsIRequestObserver )
+NS_IMPL_ISUPPORTS( TestListener, nsIStreamListener, nsIRequestObserver )
 
 NS_IMETHODIMP
 TestListener::OnStartRequest( nsIChannel *aChannel, nsISupports *aContext ) {
diff --git a/netwerk/test/TestUDPSocket.cpp b/netwerk/test/TestUDPSocket.cpp
index 3f083220de537545bd7d880fdb2bdaa0c889b6cb..107c059bc15dad8e0b74ddecb17b75a6e91a09ce 100644
--- a/netwerk/test/TestUDPSocket.cpp
+++ b/netwerk/test/TestUDPSocket.cpp
@@ -99,7 +99,7 @@ public:
   nsresult mResult;
 };
 
-NS_IMPL_ISUPPORTS1(UDPClientListener, nsIUDPSocketListener)
+NS_IMPL_ISUPPORTS(UDPClientListener, nsIUDPSocketListener)
 
 UDPClientListener::~UDPClientListener()
 {
@@ -160,7 +160,7 @@ public:
   nsresult mResult;
 };
 
-NS_IMPL_ISUPPORTS1(UDPServerListener, nsIUDPSocketListener)
+NS_IMPL_ISUPPORTS(UDPServerListener, nsIUDPSocketListener)
 
 UDPServerListener::~UDPServerListener()
 {
diff --git a/netwerk/test/TestUpload.cpp b/netwerk/test/TestUpload.cpp
index 88675c6e52ae3b5112b45e25871d2d2e245ee048..6ce6b6d65f081845985470372ed0ed2f3c2a1882 100644
--- a/netwerk/test/TestUpload.cpp
+++ b/netwerk/test/TestUpload.cpp
@@ -51,9 +51,9 @@ InputTestConsumer::~InputTestConsumer()
 {
 }
 
-NS_IMPL_ISUPPORTS2(InputTestConsumer,
-                   nsIStreamListener,
-                   nsIRequestObserver)
+NS_IMPL_ISUPPORTS(InputTestConsumer,
+                  nsIStreamListener,
+                  nsIRequestObserver)
 
 NS_IMETHODIMP
 InputTestConsumer::OnStartRequest(nsIRequest *request, nsISupports* context)
diff --git a/netwerk/wifi/nsWifiAccessPoint.cpp b/netwerk/wifi/nsWifiAccessPoint.cpp
index 0611cbe753f21c0a82b9299133cfe7e03a927e5e..f2ae1ff0116e72a4c62d16549650a418c2513410 100644
--- a/netwerk/wifi/nsWifiAccessPoint.cpp
+++ b/netwerk/wifi/nsWifiAccessPoint.cpp
@@ -13,7 +13,7 @@ extern PRLogModuleInfo *gWifiMonitorLog;
 #define LOG(args)     PR_LOG(gWifiMonitorLog, PR_LOG_DEBUG, args)
 
 
-NS_IMPL_ISUPPORTS1(nsWifiAccessPoint, nsIWifiAccessPoint)
+NS_IMPL_ISUPPORTS(nsWifiAccessPoint, nsIWifiAccessPoint)
 
 nsWifiAccessPoint::nsWifiAccessPoint()
 {
diff --git a/netwerk/wifi/nsWifiMonitor.cpp b/netwerk/wifi/nsWifiMonitor.cpp
index b1e595be7592be7dde2a5bdeec9179cabb80549a..1bb4dd024c9849d4c905598285909f2a5a20170a 100644
--- a/netwerk/wifi/nsWifiMonitor.cpp
+++ b/netwerk/wifi/nsWifiMonitor.cpp
@@ -24,10 +24,10 @@ using namespace mozilla;
 PRLogModuleInfo *gWifiMonitorLog;
 #endif
 
-NS_IMPL_ISUPPORTS3(nsWifiMonitor,
-                   nsIRunnable,
-                   nsIObserver,
-                   nsIWifiMonitor)
+NS_IMPL_ISUPPORTS(nsWifiMonitor,
+                  nsIRunnable,
+                  nsIObserver,
+                  nsIWifiMonitor)
 
 nsWifiMonitor::nsWifiMonitor()
 : mKeepGoing(true)
@@ -131,8 +131,8 @@ class nsPassErrorToWifiListeners MOZ_FINAL : public nsIRunnable
   nsresult mResult;
 };
 
-NS_IMPL_ISUPPORTS1(nsPassErrorToWifiListeners,
-                   nsIRunnable)
+NS_IMPL_ISUPPORTS(nsPassErrorToWifiListeners,
+                  nsIRunnable)
 
 NS_IMETHODIMP nsPassErrorToWifiListeners::Run()
 {
@@ -191,8 +191,8 @@ class nsCallWifiListeners MOZ_FINAL : public nsIRunnable
   nsAutoPtr<nsTArray<nsIWifiAccessPoint*> > mAccessPoints;
 };
 
-NS_IMPL_ISUPPORTS1(nsCallWifiListeners,
-                   nsIRunnable)
+NS_IMPL_ISUPPORTS(nsCallWifiListeners,
+                  nsIRunnable)
 
 NS_IMETHODIMP nsCallWifiListeners::Run()
 {
diff --git a/netwerk/wifi/nsWifiMonitorGonk.cpp b/netwerk/wifi/nsWifiMonitorGonk.cpp
index 1c26fa30d1fe0522f06e83a9e9efc7092c25a1db..7023b0590dd5bb895faf424d67e6f7456297e4ae 100644
--- a/netwerk/wifi/nsWifiMonitorGonk.cpp
+++ b/netwerk/wifi/nsWifiMonitorGonk.cpp
@@ -26,10 +26,10 @@ using namespace mozilla;
 PRLogModuleInfo *gWifiMonitorLog;
 #endif
 
-NS_IMPL_ISUPPORTS3(nsWifiMonitor,
-                   nsIWifiMonitor,
-                   nsIObserver,
-                   nsIWifiScanResultsReady)
+NS_IMPL_ISUPPORTS(nsWifiMonitor,
+                  nsIWifiMonitor,
+                  nsIObserver,
+                  nsIWifiScanResultsReady)
 
 nsWifiMonitor::nsWifiMonitor()
 {
diff --git a/parser/html/nsHtml5Module.cpp b/parser/html/nsHtml5Module.cpp
index f228279968f1617e7468102de95b8832126b9f3f..7297759f9faf4c234b5841763653e2fe2c300811 100644
--- a/parser/html/nsHtml5Module.cpp
+++ b/parser/html/nsHtml5Module.cpp
@@ -106,7 +106,7 @@ class nsHtml5ParserThreadTerminator MOZ_FINAL : public nsIObserver
     nsCOMPtr<nsIThread> mThread;
 };
 
-NS_IMPL_ISUPPORTS1(nsHtml5ParserThreadTerminator, nsIObserver)
+NS_IMPL_ISUPPORTS(nsHtml5ParserThreadTerminator, nsIObserver)
 
 // static 
 nsIThread*
diff --git a/parser/html/nsHtml5Parser.cpp b/parser/html/nsHtml5Parser.cpp
index 9fb1b7de8ebdd32b09ee88756fb17bb06c41bda8..a485be464f348e77d78605caa8d679087322f732 100644
--- a/parser/html/nsHtml5Parser.cpp
+++ b/parser/html/nsHtml5Parser.cpp
@@ -15,7 +15,7 @@
 #include "nsNetUtil.h"
 
 NS_INTERFACE_TABLE_HEAD(nsHtml5Parser)
-  NS_INTERFACE_TABLE2(nsHtml5Parser, nsIParser, nsISupportsWeakReference)
+  NS_INTERFACE_TABLE(nsHtml5Parser, nsIParser, nsISupportsWeakReference)
   NS_INTERFACE_TABLE_TO_MAP_SEGUE_CYCLE_COLLECTION(nsHtml5Parser)
 NS_INTERFACE_MAP_END
 
diff --git a/parser/html/nsHtml5StreamParser.cpp b/parser/html/nsHtml5StreamParser.cpp
index f5b2d76a424fb9517650626fdab0d6f57c7e92d3..47905682dd9df88735cd2254213d36dcbea78c5e 100644
--- a/parser/html/nsHtml5StreamParser.cpp
+++ b/parser/html/nsHtml5StreamParser.cpp
@@ -73,8 +73,8 @@ NS_IMPL_CYCLE_COLLECTING_ADDREF(nsHtml5StreamParser)
 NS_IMPL_CYCLE_COLLECTING_RELEASE(nsHtml5StreamParser)
 
 NS_INTERFACE_TABLE_HEAD(nsHtml5StreamParser)
-  NS_INTERFACE_TABLE1(nsHtml5StreamParser,
-                      nsICharsetDetectionObserver)
+  NS_INTERFACE_TABLE(nsHtml5StreamParser,
+                     nsICharsetDetectionObserver)
   NS_INTERFACE_TABLE_TO_MAP_SEGUE_CYCLE_COLLECTION(nsHtml5StreamParser)
 NS_INTERFACE_MAP_END
 
diff --git a/parser/html/nsHtml5TreeOpExecutor.cpp b/parser/html/nsHtml5TreeOpExecutor.cpp
index 25ce068e138ab30ac848b42db91d7a42c80485f3..ebcafca8b7789404f3d0b5a83bd6761ee56bc9b6 100644
--- a/parser/html/nsHtml5TreeOpExecutor.cpp
+++ b/parser/html/nsHtml5TreeOpExecutor.cpp
@@ -34,8 +34,8 @@
 using namespace mozilla;
 
 NS_INTERFACE_TABLE_HEAD_CYCLE_COLLECTION_INHERITED(nsHtml5TreeOpExecutor)
-  NS_INTERFACE_TABLE_INHERITED1(nsHtml5TreeOpExecutor, 
-                                nsIContentSink)
+  NS_INTERFACE_TABLE_INHERITED(nsHtml5TreeOpExecutor, 
+                               nsIContentSink)
 NS_INTERFACE_TABLE_TAIL_INHERITING(nsHtml5DocumentBuilder)
 
 NS_IMPL_ADDREF_INHERITED(nsHtml5TreeOpExecutor, nsContentSink)
diff --git a/parser/html/nsParserUtils.cpp b/parser/html/nsParserUtils.cpp
index d694039befb6f8ca18ab5fa4c47bd0b1d00b0104..4015e7b29d1d67956ea8e1da461098562b97ebcc 100644
--- a/parser/html/nsParserUtils.cpp
+++ b/parser/html/nsParserUtils.cpp
@@ -41,9 +41,9 @@
 
 using namespace mozilla::dom;
 
-NS_IMPL_ISUPPORTS2(nsParserUtils,
-                   nsIScriptableUnescapeHTML,
-                   nsIParserUtils)
+NS_IMPL_ISUPPORTS(nsParserUtils,
+                  nsIScriptableUnescapeHTML,
+                  nsIParserUtils)
 
 static NS_DEFINE_CID(kCParserCID, NS_PARSER_CID);
 
diff --git a/parser/htmlparser/src/CNavDTD.cpp b/parser/htmlparser/src/CNavDTD.cpp
index 652e7a7bb80a6f71a006536ff0fe51ba413e8961..ce4ac796da0d689db9ca6c944d01aeda6c5d48de 100644
--- a/parser/htmlparser/src/CNavDTD.cpp
+++ b/parser/htmlparser/src/CNavDTD.cpp
@@ -10,7 +10,7 @@
 #include "CNavDTD.h"
 #include "nsIHTMLContentSink.h"
 
-NS_IMPL_ISUPPORTS1(CNavDTD, nsIDTD);
+NS_IMPL_ISUPPORTS(CNavDTD, nsIDTD);
 
 CNavDTD::CNavDTD()
 {
diff --git a/parser/htmlparser/src/nsHTMLTokenizer.cpp b/parser/htmlparser/src/nsHTMLTokenizer.cpp
index 5b55a1530218f005318f8afd28946d95326e111c..f60a48c3c4331a770ade9a8c681bc778aec7d863 100644
--- a/parser/htmlparser/src/nsHTMLTokenizer.cpp
+++ b/parser/htmlparser/src/nsHTMLTokenizer.cpp
@@ -25,7 +25,7 @@
 /**
  * Satisfy the nsISupports interface.
  */
-NS_IMPL_ISUPPORTS1(nsHTMLTokenizer, nsITokenizer)
+NS_IMPL_ISUPPORTS(nsHTMLTokenizer, nsITokenizer)
 
 /**
  * Default constructor
diff --git a/parser/htmlparser/src/nsParserService.cpp b/parser/htmlparser/src/nsParserService.cpp
index ea714b01491f0c7f6b1f8b5980d4efc718eb6f2d..d89badd01dfb47c256656e8594d88751bf7dde22 100644
--- a/parser/htmlparser/src/nsParserService.cpp
+++ b/parser/htmlparser/src/nsParserService.cpp
@@ -20,7 +20,7 @@ nsParserService::~nsParserService()
 {
 }
 
-NS_IMPL_ISUPPORTS1(nsParserService, nsIParserService)
+NS_IMPL_ISUPPORTS(nsParserService, nsIParserService)
 
 int32_t
 nsParserService::HTMLAtomTagToId(nsIAtom* aAtom) const
diff --git a/parser/xml/src/nsSAXAttributes.cpp b/parser/xml/src/nsSAXAttributes.cpp
index 32b79fb783bdaa943b3b3f0ec2c5d1b2b68a2051..3984186e4ad52f63e43fd5a69e3b57b79122d6d1 100644
--- a/parser/xml/src/nsSAXAttributes.cpp
+++ b/parser/xml/src/nsSAXAttributes.cpp
@@ -5,7 +5,7 @@
 
 #include "nsSAXAttributes.h"
 
-NS_IMPL_ISUPPORTS2(nsSAXAttributes, nsISAXAttributes, nsISAXMutableAttributes)
+NS_IMPL_ISUPPORTS(nsSAXAttributes, nsISAXAttributes, nsISAXMutableAttributes)
 
 NS_IMETHODIMP
 nsSAXAttributes::GetIndexFromName(const nsAString &aURI,
diff --git a/parser/xml/src/nsSAXLocator.cpp b/parser/xml/src/nsSAXLocator.cpp
index 171375a6085d18629e7a6114f5a7198518122901..16a056ac6f4cf555b415a79f65a9ed1b7588a6d4 100644
--- a/parser/xml/src/nsSAXLocator.cpp
+++ b/parser/xml/src/nsSAXLocator.cpp
@@ -5,7 +5,7 @@
 
 #include "nsSAXLocator.h"
 
-NS_IMPL_ISUPPORTS1(nsSAXLocator, nsISAXLocator)
+NS_IMPL_ISUPPORTS(nsSAXLocator, nsISAXLocator)
 
 nsSAXLocator::nsSAXLocator(nsString& aPublicId,
                            nsString& aSystemId,
diff --git a/profile/dirserviceprovider/src/nsProfileDirServiceProvider.cpp b/profile/dirserviceprovider/src/nsProfileDirServiceProvider.cpp
index be184b14d9ed1a943012298b8319dacf4697ff53..0091c31bec3dfac479a19fb201c728b07de98dfb 100644
--- a/profile/dirserviceprovider/src/nsProfileDirServiceProvider.cpp
+++ b/profile/dirserviceprovider/src/nsProfileDirServiceProvider.cpp
@@ -138,8 +138,8 @@ nsProfileDirServiceProvider::Shutdown()
 // nsProfileDirServiceProvider::nsISupports
 //*****************************************************************************
 
-NS_IMPL_ISUPPORTS1(nsProfileDirServiceProvider,
-                   nsIDirectoryServiceProvider)
+NS_IMPL_ISUPPORTS(nsProfileDirServiceProvider,
+                  nsIDirectoryServiceProvider)
 
 //*****************************************************************************
 // nsProfileDirServiceProvider::nsIDirectoryServiceProvider
diff --git a/rdf/base/src/nsCompositeDataSource.cpp b/rdf/base/src/nsCompositeDataSource.cpp
index 76ad9f51001c08432cd96b692fa537ee8806ad03..423b485c5d53ab0b7d33dc4ee4fd872beb9657e3 100644
--- a/rdf/base/src/nsCompositeDataSource.cpp
+++ b/rdf/base/src/nsCompositeDataSource.cpp
@@ -160,7 +160,7 @@ CompositeEnumeratorImpl::~CompositeEnumeratorImpl(void)
 
 NS_IMPL_ADDREF(CompositeEnumeratorImpl)
 NS_IMPL_RELEASE(CompositeEnumeratorImpl)
-NS_IMPL_QUERY_INTERFACE1(CompositeEnumeratorImpl, nsISimpleEnumerator)
+NS_IMPL_QUERY_INTERFACE(CompositeEnumeratorImpl, nsISimpleEnumerator)
 
 NS_IMETHODIMP
 CompositeEnumeratorImpl::HasMoreElements(bool* aResult)
diff --git a/rdf/base/src/nsContainerEnumerator.cpp b/rdf/base/src/nsContainerEnumerator.cpp
index cfe3ae493b60e0098eb05c5429ff15fbf16bd616..2e14577b0bb0e214681763247696ba9f23d228ba 100644
--- a/rdf/base/src/nsContainerEnumerator.cpp
+++ b/rdf/base/src/nsContainerEnumerator.cpp
@@ -107,7 +107,7 @@ ContainerEnumeratorImpl::~ContainerEnumeratorImpl()
     }
 }
 
-NS_IMPL_ISUPPORTS1(ContainerEnumeratorImpl, nsISimpleEnumerator)
+NS_IMPL_ISUPPORTS(ContainerEnumeratorImpl, nsISimpleEnumerator)
 
 
 NS_IMETHODIMP
diff --git a/rdf/base/src/nsInMemoryDataSource.cpp b/rdf/base/src/nsInMemoryDataSource.cpp
index 11e653f1dc5aa55fdca4ecc544ff2fc89e0d8dcc..fb92fa773fa11e445abc1868c3bea4e412911c26 100644
--- a/rdf/base/src/nsInMemoryDataSource.cpp
+++ b/rdf/base/src/nsInMemoryDataSource.cpp
@@ -469,7 +469,7 @@ InMemoryAssertionEnumeratorImpl::~InMemoryAssertionEnumeratorImpl()
 
 NS_IMPL_ADDREF(InMemoryAssertionEnumeratorImpl)
 NS_IMPL_RELEASE(InMemoryAssertionEnumeratorImpl)
-NS_IMPL_QUERY_INTERFACE1(InMemoryAssertionEnumeratorImpl, nsISimpleEnumerator)
+NS_IMPL_QUERY_INTERFACE(InMemoryAssertionEnumeratorImpl, nsISimpleEnumerator)
 
 NS_IMETHODIMP
 InMemoryAssertionEnumeratorImpl::HasMoreElements(bool* aResult)
@@ -637,7 +637,7 @@ InMemoryArcsEnumeratorImpl::~InMemoryArcsEnumeratorImpl()
 
 NS_IMPL_ADDREF(InMemoryArcsEnumeratorImpl)
 NS_IMPL_RELEASE(InMemoryArcsEnumeratorImpl)
-NS_IMPL_QUERY_INTERFACE1(InMemoryArcsEnumeratorImpl, nsISimpleEnumerator)
+NS_IMPL_QUERY_INTERFACE(InMemoryArcsEnumeratorImpl, nsISimpleEnumerator)
 
 NS_IMETHODIMP
 InMemoryArcsEnumeratorImpl::HasMoreElements(bool* aResult)
diff --git a/rdf/base/src/nsRDFContainer.cpp b/rdf/base/src/nsRDFContainer.cpp
index 76b6acb7046f95929ceb6508e02c035004847848..c60da28100cd932462fb43f1a016e68043311695 100644
--- a/rdf/base/src/nsRDFContainer.cpp
+++ b/rdf/base/src/nsRDFContainer.cpp
@@ -88,7 +88,7 @@ nsIRDFResource*       RDFContainerImpl::kRDF_nextVal;
 ////////////////////////////////////////////////////////////////////////
 // nsISupports interface
 
-NS_IMPL_ISUPPORTS1(RDFContainerImpl, nsIRDFContainer)
+NS_IMPL_ISUPPORTS(RDFContainerImpl, nsIRDFContainer)
 
 
 
diff --git a/rdf/base/src/nsRDFContainerUtils.cpp b/rdf/base/src/nsRDFContainerUtils.cpp
index 31c1648d1056d5a2795695fecddccb8fdee83289..360d75fb6df2179816e321580480ef15316c2085 100644
--- a/rdf/base/src/nsRDFContainerUtils.cpp
+++ b/rdf/base/src/nsRDFContainerUtils.cpp
@@ -70,7 +70,7 @@ const char      RDFContainerUtilsImpl::kRDFNameSpaceURI[] = RDF_NAMESPACE_URI;
 ////////////////////////////////////////////////////////////////////////
 // nsISupports interface
 
-NS_IMPL_ISUPPORTS1(RDFContainerUtilsImpl, nsIRDFContainerUtils)
+NS_IMPL_ISUPPORTS(RDFContainerUtilsImpl, nsIRDFContainerUtils)
 
 ////////////////////////////////////////////////////////////////////////
 // nsIRDFContainerUtils interface
diff --git a/rdf/base/src/nsRDFService.cpp b/rdf/base/src/nsRDFService.cpp
index 26b929d9eb4f446142e3c7847a13833911ab2980..bcfdce3f20a8fea3943dd50b63c461983a3cc132 100644
--- a/rdf/base/src/nsRDFService.cpp
+++ b/rdf/base/src/nsRDFService.cpp
@@ -301,7 +301,7 @@ public:
     Data mData;
 };
 
-NS_IMPL_ISUPPORTS2(BlobImpl, nsIRDFNode, nsIRDFBlob)
+NS_IMPL_ISUPPORTS(BlobImpl, nsIRDFNode, nsIRDFBlob)
 
 NS_IMETHODIMP
 BlobImpl::EqualsNode(nsIRDFNode *aNode, bool *aEquals)
@@ -827,7 +827,7 @@ RDFServiceImpl::CreateSingleton(nsISupports* aOuter,
     return serv->QueryInterface(aIID, aResult);
 }
 
-NS_IMPL_ISUPPORTS2(RDFServiceImpl, nsIRDFService, nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(RDFServiceImpl, nsIRDFService, nsISupportsWeakReference)
 
 // Per RFC2396.
 static const uint8_t
diff --git a/rdf/base/src/nsRDFXMLParser.cpp b/rdf/base/src/nsRDFXMLParser.cpp
index aefb384bc4d445240665743222aa24a888792586..03210658f305314bf6965efc822c658894a1ca45 100644
--- a/rdf/base/src/nsRDFXMLParser.cpp
+++ b/rdf/base/src/nsRDFXMLParser.cpp
@@ -16,7 +16,7 @@
 
 static NS_DEFINE_CID(kParserCID, NS_PARSER_CID);
 
-NS_IMPL_ISUPPORTS1(nsRDFXMLParser, nsIRDFXMLParser)
+NS_IMPL_ISUPPORTS(nsRDFXMLParser, nsIRDFXMLParser)
 
 nsresult
 nsRDFXMLParser::Create(nsISupports* aOuter, REFNSIID aIID, void** aResult)
diff --git a/rdf/base/src/nsRDFXMLSerializer.cpp b/rdf/base/src/nsRDFXMLSerializer.cpp
index 4b3c392a2c45cc5e501a055d788be0e9c1c5b4b9..4982c3b403148eb3d87d8ecb82fdce4168ff4e9c 100644
--- a/rdf/base/src/nsRDFXMLSerializer.cpp
+++ b/rdf/base/src/nsRDFXMLSerializer.cpp
@@ -113,7 +113,7 @@ nsRDFXMLSerializer::~nsRDFXMLSerializer()
     }
 }
 
-NS_IMPL_ISUPPORTS2(nsRDFXMLSerializer, nsIRDFXMLSerializer, nsIRDFXMLSource)
+NS_IMPL_ISUPPORTS(nsRDFXMLSerializer, nsIRDFXMLSerializer, nsIRDFXMLSource)
 
 NS_IMETHODIMP
 nsRDFXMLSerializer::Init(nsIRDFDataSource* aDataSource)
@@ -1016,7 +1016,7 @@ private:
     nsRDFXMLSerializer* mParent;
 };
 
-NS_IMPL_ISUPPORTS1(QNameCollector, rdfITripleVisitor)
+NS_IMPL_ISUPPORTS(QNameCollector, rdfITripleVisitor)
 nsresult
 QNameCollector::Visit(nsIRDFNode* aSubject, nsIRDFResource* aPredicate,
                       nsIRDFNode* aObject, bool aTruthValue)
diff --git a/rdf/base/src/rdfTriplesSerializer.cpp b/rdf/base/src/rdfTriplesSerializer.cpp
index 351fafd6cd8cf31a91fe5d5a484de5a3c2492e32..43a1d8e5e7a5a7334a1c35c466f5ad31be99bd5d 100644
--- a/rdf/base/src/rdfTriplesSerializer.cpp
+++ b/rdf/base/src/rdfTriplesSerializer.cpp
@@ -32,7 +32,7 @@ protected:
     nsIOutputStream* mOut;
 };
 
-NS_IMPL_ISUPPORTS1(TriplesVisitor, rdfITripleVisitor)
+NS_IMPL_ISUPPORTS(TriplesVisitor, rdfITripleVisitor)
 
 nsresult
 TriplesVisitor::writeResource(nsIRDFResource *aResource)
@@ -124,7 +124,7 @@ NS_NewTriplesSerializer(rdfISerializer** aResult)
     return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS1(rdfTriplesSerializer, rdfISerializer)
+NS_IMPL_ISUPPORTS(rdfTriplesSerializer, rdfISerializer)
 
 rdfTriplesSerializer::rdfTriplesSerializer()
 {
diff --git a/rdf/datasource/src/nsFileSystemDataSource.cpp b/rdf/datasource/src/nsFileSystemDataSource.cpp
index 46e2b81cc1e100ab8e322c63f435bbb4021dde04..4ccca1d6009dc8c88c599c2c14e766a811477796 100644
--- a/rdf/datasource/src/nsFileSystemDataSource.cpp
+++ b/rdf/datasource/src/nsFileSystemDataSource.cpp
@@ -208,7 +208,7 @@ FileSystemDataSource::Create(nsISupports* aOuter, const nsIID& aIID, void **aRes
     return self->QueryInterface(aIID, aResult);
 }
 
-NS_IMPL_ISUPPORTS1(FileSystemDataSource, nsIRDFDataSource)
+NS_IMPL_ISUPPORTS(FileSystemDataSource, nsIRDFDataSource)
 
 NS_IMETHODIMP
 FileSystemDataSource::GetURI(char **uri)
diff --git a/rdf/tests/rdfcat/rdfcat.cpp b/rdf/tests/rdfcat/rdfcat.cpp
index e5e16c4bddc3b3d102a31ac09c07e0e941cc1ea1..e1dbcb0ceec3abdceac0bdb7eec0a63aed7135d0 100644
--- a/rdf/tests/rdfcat/rdfcat.cpp
+++ b/rdf/tests/rdfcat/rdfcat.cpp
@@ -98,7 +98,7 @@ public:
     }
 };
 
-NS_IMPL_ISUPPORTS1(ConsoleOutputStreamImpl, nsIOutputStream)
+NS_IMPL_ISUPPORTS(ConsoleOutputStreamImpl, nsIOutputStream)
 
 ////////////////////////////////////////////////////////////////////////
 
diff --git a/rdf/tests/rdfpoll/rdfpoll.cpp b/rdf/tests/rdfpoll/rdfpoll.cpp
index 68b9caa598e35bb8054a4af448a5035e969f7a38..bd1269aab644dd0858f21283711e8f0f055cedfb 100644
--- a/rdf/tests/rdfpoll/rdfpoll.cpp
+++ b/rdf/tests/rdfpoll/rdfpoll.cpp
@@ -70,7 +70,7 @@ Observer::Observer()
 {
 }
 
-NS_IMPL_ISUPPORTS1(Observer, nsIRDFObserver)
+NS_IMPL_ISUPPORTS(Observer, nsIRDFObserver)
 
 static nsresult
 rdf_WriteOp(const char* aOp,
diff --git a/rdf/tests/triplescat/triplescat.cpp b/rdf/tests/triplescat/triplescat.cpp
index ce5fe7cf3a1d8538eeb7f59ef125546ad74409d4..b9533f67282b9ead1d7d2d9388bfaad2a5c0bb6a 100644
--- a/rdf/tests/triplescat/triplescat.cpp
+++ b/rdf/tests/triplescat/triplescat.cpp
@@ -96,7 +96,7 @@ public:
     }
 };
 
-NS_IMPL_ISUPPORTS1(ConsoleOutputStreamImpl, nsIOutputStream)
+NS_IMPL_ISUPPORTS(ConsoleOutputStreamImpl, nsIOutputStream)
 
 ////////////////////////////////////////////////////////////////////////
 
diff --git a/rdf/util/src/nsRDFResource.cpp b/rdf/util/src/nsRDFResource.cpp
index 43121970d1b4018fb2a73c8313845c444352680c..008138bd67d0c0f2f150e9d5feb191f75a48a7b4 100644
--- a/rdf/util/src/nsRDFResource.cpp
+++ b/rdf/util/src/nsRDFResource.cpp
@@ -42,7 +42,7 @@ nsRDFResource::~nsRDFResource(void)
         NS_RELEASE(gRDFService);
 }
 
-NS_IMPL_ISUPPORTS2(nsRDFResource, nsIRDFResource, nsIRDFNode)
+NS_IMPL_ISUPPORTS(nsRDFResource, nsIRDFResource, nsIRDFNode)
 
 ////////////////////////////////////////////////////////////////////////////////
 // nsIRDFNode methods:
diff --git a/security/manager/boot/src/nsEntropyCollector.cpp b/security/manager/boot/src/nsEntropyCollector.cpp
index ade1e614fcb0573a7080bd2efeed7986f54b1b0c..ef53d8717ecde37bffb3c38ab2a75da311c86afe 100644
--- a/security/manager/boot/src/nsEntropyCollector.cpp
+++ b/security/manager/boot/src/nsEntropyCollector.cpp
@@ -23,9 +23,9 @@ nsEntropyCollector::~nsEntropyCollector()
 {
 }
 
-NS_IMPL_ISUPPORTS2(nsEntropyCollector,
-                   nsIEntropyCollector,
-                   nsIBufEntropyCollector)
+NS_IMPL_ISUPPORTS(nsEntropyCollector,
+                  nsIEntropyCollector,
+                  nsIBufEntropyCollector)
 
 NS_IMETHODIMP
 nsEntropyCollector::RandomUpdate(void *new_entropy, int32_t bufLen)
diff --git a/security/manager/boot/src/nsSecureBrowserUIImpl.cpp b/security/manager/boot/src/nsSecureBrowserUIImpl.cpp
index bd669a8f28b651cf64eb1064f46d07f20fea531f..6845c3a03f05a1151ac7cc91c7b5013480e8b7f5 100644
--- a/security/manager/boot/src/nsSecureBrowserUIImpl.cpp
+++ b/security/manager/boot/src/nsSecureBrowserUIImpl.cpp
@@ -149,12 +149,12 @@ nsSecureBrowserUIImpl::~nsSecureBrowserUIImpl()
   }
 }
 
-NS_IMPL_ISUPPORTS5(nsSecureBrowserUIImpl,
-                   nsISecureBrowserUI,
-                   nsIWebProgressListener,
-                   nsIFormSubmitObserver,
-                   nsISupportsWeakReference,
-                   nsISSLStatusProvider)
+NS_IMPL_ISUPPORTS(nsSecureBrowserUIImpl,
+                  nsISecureBrowserUI,
+                  nsIWebProgressListener,
+                  nsIFormSubmitObserver,
+                  nsISupportsWeakReference,
+                  nsISSLStatusProvider)
 
 NS_IMETHODIMP
 nsSecureBrowserUIImpl::Init(nsIDOMWindow *aWindow)
@@ -1614,7 +1614,7 @@ private:
   nsCOMPtr<nsIDOMWindow> mWindow;
 };
 
-NS_IMPL_ISUPPORTS1(nsUIContext, nsIInterfaceRequestor)
+NS_IMPL_ISUPPORTS(nsUIContext, nsIInterfaceRequestor)
 
 nsUIContext::nsUIContext(nsIDOMWindow *aWindow)
 : mWindow(aWindow)
diff --git a/security/manager/boot/src/nsSecurityWarningDialogs.cpp b/security/manager/boot/src/nsSecurityWarningDialogs.cpp
index 29ca482d15899768ee5e41a92b4ab2ae03359c0c..110afc7b92dd63d72e49fc1011dcedc5209b040e 100644
--- a/security/manager/boot/src/nsSecurityWarningDialogs.cpp
+++ b/security/manager/boot/src/nsSecurityWarningDialogs.cpp
@@ -19,7 +19,7 @@
 #include "mozilla/Telemetry.h"
 #include "nsISecurityUITelemetry.h"
 
-NS_IMPL_ISUPPORTS1(nsSecurityWarningDialogs, nsISecurityWarningDialogs)
+NS_IMPL_ISUPPORTS(nsSecurityWarningDialogs, nsISecurityWarningDialogs)
 
 #define STRING_BUNDLE_URL    "chrome://pipnss/locale/security.properties"
 
diff --git a/security/manager/boot/src/nsSiteSecurityService.cpp b/security/manager/boot/src/nsSiteSecurityService.cpp
index 409a30bb02c9270ffa4562cb3ac07484c522a270..87745af008dc1689d3647781e3c5069df927b812 100644
--- a/security/manager/boot/src/nsSiteSecurityService.cpp
+++ b/security/manager/boot/src/nsSiteSecurityService.cpp
@@ -80,9 +80,9 @@ nsSiteSecurityService::~nsSiteSecurityService()
 {
 }
 
-NS_IMPL_ISUPPORTS2(nsSiteSecurityService,
-                   nsIObserver,
-                   nsISiteSecurityService)
+NS_IMPL_ISUPPORTS(nsSiteSecurityService,
+                  nsIObserver,
+                  nsISiteSecurityService)
 
 nsresult
 nsSiteSecurityService::Init()
diff --git a/security/manager/pki/src/nsASN1Tree.cpp b/security/manager/pki/src/nsASN1Tree.cpp
index 54a543bd95c65f92e334d7bcea6ec3b89b8135b2..2b838297aadc7e948d5636c78b203e91f0a7a9d4 100644
--- a/security/manager/pki/src/nsASN1Tree.cpp
+++ b/security/manager/pki/src/nsASN1Tree.cpp
@@ -8,7 +8,7 @@
 #include "nsIMutableArray.h"
 #include "nsArrayUtils.h"
 
-NS_IMPL_ISUPPORTS2(nsNSSASN1Tree, nsIASN1Tree, nsITreeView)
+NS_IMPL_ISUPPORTS(nsNSSASN1Tree, nsIASN1Tree, nsITreeView)
 
 nsNSSASN1Tree::nsNSSASN1Tree() 
 :mTopNode(nullptr)
diff --git a/security/manager/pki/src/nsFormSigningDialog.cpp b/security/manager/pki/src/nsFormSigningDialog.cpp
index ac0e7e79181890591b4a782dac4ac3ccf5bb9770..ac5ab55978e221029fb42b948fa82e1af34f2081 100644
--- a/security/manager/pki/src/nsFormSigningDialog.cpp
+++ b/security/manager/pki/src/nsFormSigningDialog.cpp
@@ -21,7 +21,7 @@ nsFormSigningDialog::~nsFormSigningDialog()
 {
 }
 
-NS_IMPL_ISUPPORTS1(nsFormSigningDialog, nsIFormSigningDialog)
+NS_IMPL_ISUPPORTS(nsFormSigningDialog, nsIFormSigningDialog)
 
 NS_IMETHODIMP
 nsFormSigningDialog::ConfirmSignText(nsIInterfaceRequestor *aContext, 
diff --git a/security/manager/pki/src/nsNSSDialogs.cpp b/security/manager/pki/src/nsNSSDialogs.cpp
index 02fe41b2e71800522ee3b637f81eb6c269e84524..b9bead12cf973a050d15c780d667213d19613ee3 100644
--- a/security/manager/pki/src/nsNSSDialogs.cpp
+++ b/security/manager/pki/src/nsNSSDialogs.cpp
@@ -47,14 +47,14 @@ nsNSSDialogs::~nsNSSDialogs()
 {
 }
 
-NS_IMPL_ISUPPORTS8(nsNSSDialogs, nsITokenPasswordDialogs,
-                   nsICertificateDialogs,
-                   nsIClientAuthDialogs,
-                   nsICertPickDialogs,
-                   nsITokenDialogs,
-                   nsIDOMCryptoDialogs,
-                   nsIGeneratingKeypairInfoDialogs,
-                   nsISSLCertErrorDialog)
+NS_IMPL_ISUPPORTS(nsNSSDialogs, nsITokenPasswordDialogs,
+                  nsICertificateDialogs,
+                  nsIClientAuthDialogs,
+                  nsICertPickDialogs,
+                  nsITokenDialogs,
+                  nsIDOMCryptoDialogs,
+                  nsIGeneratingKeypairInfoDialogs,
+                  nsISSLCertErrorDialog)
 
 nsresult
 nsNSSDialogs::Init()
diff --git a/security/manager/pki/src/nsPKIParamBlock.cpp b/security/manager/pki/src/nsPKIParamBlock.cpp
index 35b876045341e58155123486c3ee47ac784337fb..3cc96b603f8c48ef10a7dce91391e751c49faa03 100644
--- a/security/manager/pki/src/nsPKIParamBlock.cpp
+++ b/security/manager/pki/src/nsPKIParamBlock.cpp
@@ -9,7 +9,7 @@
 #include "nsIDialogParamBlock.h"
 #include "nsIMutableArray.h"
 
-NS_IMPL_ISUPPORTS2(nsPKIParamBlock, nsIPKIParamBlock, nsIDialogParamBlock)
+NS_IMPL_ISUPPORTS(nsPKIParamBlock, nsIPKIParamBlock, nsIDialogParamBlock)
 
 nsPKIParamBlock::nsPKIParamBlock()
 {
diff --git a/security/manager/ssl/src/NSSErrorsService.cpp b/security/manager/ssl/src/NSSErrorsService.cpp
index 11e91131b934ea6603e2c60e8555d4506ec73861..12fff0d09a534b71dbbc9b995ded6b0befe37691 100644
--- a/security/manager/ssl/src/NSSErrorsService.cpp
+++ b/security/manager/ssl/src/NSSErrorsService.cpp
@@ -15,7 +15,7 @@
 namespace mozilla {
 namespace psm {
 
-NS_IMPL_ISUPPORTS1(NSSErrorsService, nsINSSErrorsService)
+NS_IMPL_ISUPPORTS(NSSErrorsService, nsINSSErrorsService)
 
 nsresult
 NSSErrorsService::Init()
diff --git a/security/manager/ssl/src/PSMContentListener.cpp b/security/manager/ssl/src/PSMContentListener.cpp
index cdc28ca0cda000d8d63b4901790e91942129a34a..af9f0daab7908c36dc71033d6a5fccb9ee19af76 100644
--- a/security/manager/ssl/src/PSMContentListener.cpp
+++ b/security/manager/ssl/src/PSMContentListener.cpp
@@ -69,7 +69,7 @@ PSMContentDownloader::~PSMContentDownloader()
     nsMemory::Free(mByteData);
 }
 
-NS_IMPL_ISUPPORTS2(PSMContentDownloader, nsIStreamListener, nsIRequestObserver)
+NS_IMPL_ISUPPORTS(PSMContentDownloader, nsIStreamListener, nsIRequestObserver)
 
 const int32_t kDefaultCertAllocLength = 2048;
 
@@ -213,9 +213,9 @@ getPSMContentType(const char * aContentType)
 
 } // unnamed namespace
 
-NS_IMPL_ISUPPORTS2(PSMContentListener,
-                   nsIURIContentListener,
-                   nsISupportsWeakReference) 
+NS_IMPL_ISUPPORTS(PSMContentListener,
+                  nsIURIContentListener,
+                  nsISupportsWeakReference) 
 
 PSMContentListener::PSMContentListener()
 {
diff --git a/security/manager/ssl/src/SharedSSLState.cpp b/security/manager/ssl/src/SharedSSLState.cpp
index 3ff2d684e73fb01df7a537ef7b7864814df1a8c0..fd2ede33c8fe4cfadb5e906294dd617665f50a70 100644
--- a/security/manager/ssl/src/SharedSSLState.cpp
+++ b/security/manager/ssl/src/SharedSSLState.cpp
@@ -118,7 +118,7 @@ SharedSSLState* gPublicState;
 SharedSSLState* gPrivateState;
 } // anonymous namespace
 
-NS_IMPL_ISUPPORTS1(PrivateBrowsingObserver, nsIObserver)
+NS_IMPL_ISUPPORTS(PrivateBrowsingObserver, nsIObserver)
 
 NS_IMETHODIMP
 PrivateBrowsingObserver::Observe(nsISupports     *aSubject,
diff --git a/security/manager/ssl/src/TransportSecurityInfo.cpp b/security/manager/ssl/src/TransportSecurityInfo.cpp
index 2261e13f40669552db2c20bfb5190e6112ebbeb2..deb36a0c857c3a3ccc5e3c485dbbb949752c8f96 100644
--- a/security/manager/ssl/src/TransportSecurityInfo.cpp
+++ b/security/manager/ssl/src/TransportSecurityInfo.cpp
@@ -62,13 +62,13 @@ TransportSecurityInfo::virtualDestroyNSSReference()
 {
 }
 
-NS_IMPL_ISUPPORTS6(TransportSecurityInfo,
-                   nsITransportSecurityInfo,
-                   nsIInterfaceRequestor,
-                   nsISSLStatusProvider,
-                   nsIAssociatedContentSecurity,
-                   nsISerializable,
-                   nsIClassInfo)
+NS_IMPL_ISUPPORTS(TransportSecurityInfo,
+                  nsITransportSecurityInfo,
+                  nsIInterfaceRequestor,
+                  nsISSLStatusProvider,
+                  nsIAssociatedContentSecurity,
+                  nsISerializable,
+                  nsIClassInfo)
 
 nsresult
 TransportSecurityInfo::SetHostName(const char* host)
diff --git a/security/manager/ssl/src/nsCMS.cpp b/security/manager/ssl/src/nsCMS.cpp
index 7ce78034a043888159334c879b084af7e997661b..70a3c49dc32b7eabafa62efa28a6982ec89f07a3 100644
--- a/security/manager/ssl/src/nsCMS.cpp
+++ b/security/manager/ssl/src/nsCMS.cpp
@@ -28,7 +28,7 @@ extern PRLogModuleInfo* gPIPNSSLog;
 
 using namespace mozilla;
 
-NS_IMPL_ISUPPORTS2(nsCMSMessage, nsICMSMessage, nsICMSMessage2)
+NS_IMPL_ISUPPORTS(nsCMSMessage, nsICMSMessage, nsICMSMessage2)
 
 nsCMSMessage::nsCMSMessage()
 {
@@ -718,7 +718,7 @@ loser:
   return rv;
 }
 
-NS_IMPL_ISUPPORTS1(nsCMSDecoder, nsICMSDecoder)
+NS_IMPL_ISUPPORTS(nsCMSDecoder, nsICMSDecoder)
 
 nsCMSDecoder::nsCMSDecoder()
 : m_dcx(nullptr)
@@ -801,7 +801,7 @@ NS_IMETHODIMP nsCMSDecoder::Finish(nsICMSMessage ** aCMSMsg)
   return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS1(nsCMSEncoder, nsICMSEncoder)
+NS_IMPL_ISUPPORTS(nsCMSEncoder, nsICMSEncoder)
 
 nsCMSEncoder::nsCMSEncoder()
 : m_ecx(nullptr)
diff --git a/security/manager/ssl/src/nsCMSSecureMessage.cpp b/security/manager/ssl/src/nsCMSSecureMessage.cpp
index 1155ca79140fe3016f727f33cb111336eeccd3ab..ea38bc21f904e7c9d91f8554b5911db929a41b27 100644
--- a/security/manager/ssl/src/nsCMSSecureMessage.cpp
+++ b/security/manager/ssl/src/nsCMSSecureMessage.cpp
@@ -38,7 +38,7 @@ extern PRLogModuleInfo* gPIPNSSLog;
  *****/
 
 // Standard ISupports implementation
-NS_IMPL_ISUPPORTS1(nsCMSSecureMessage, nsICMSSecureMessage)
+NS_IMPL_ISUPPORTS(nsCMSSecureMessage, nsICMSSecureMessage)
 
 // nsCMSSecureMessage constructor
 nsCMSSecureMessage::nsCMSSecureMessage()
diff --git a/security/manager/ssl/src/nsCertOverrideService.cpp b/security/manager/ssl/src/nsCertOverrideService.cpp
index d3c1f1d5fdcf92d4639a25c63f69b99acbeec1ba..eafd503a50191331f6be7b124ad894db7b12b5eb 100644
--- a/security/manager/ssl/src/nsCertOverrideService.cpp
+++ b/security/manager/ssl/src/nsCertOverrideService.cpp
@@ -84,10 +84,10 @@ nsCertOverride::convertStringToBits(const nsACString &str, OverrideBits &ob)
   }
 }
 
-NS_IMPL_ISUPPORTS3(nsCertOverrideService,
-                   nsICertOverrideService,
-                   nsIObserver,
-                   nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(nsCertOverrideService,
+                  nsICertOverrideService,
+                  nsIObserver,
+                  nsISupportsWeakReference)
 
 nsCertOverrideService::nsCertOverrideService()
   : monitor("nsCertOverrideService.monitor")
diff --git a/security/manager/ssl/src/nsCertPicker.cpp b/security/manager/ssl/src/nsCertPicker.cpp
index 156416b7e967f68322344bad9be1d0d38a76eb12..dc7f61da4b3c2e55c9f574ad1017c13bd71f279b 100644
--- a/security/manager/ssl/src/nsCertPicker.cpp
+++ b/security/manager/ssl/src/nsCertPicker.cpp
@@ -21,7 +21,7 @@
 
 using namespace mozilla;
 
-NS_IMPL_ISUPPORTS1(nsCertPicker, nsIUserCertPicker)
+NS_IMPL_ISUPPORTS(nsCertPicker, nsIUserCertPicker)
 
 nsCertPicker::nsCertPicker()
 {
diff --git a/security/manager/ssl/src/nsCertTree.cpp b/security/manager/ssl/src/nsCertTree.cpp
index 3d4d0a9a5c7c245b65d91ec81f29b54316002a12..baf7433399a78b11431f31d6fde61c1e53bbc35b 100644
--- a/security/manager/ssl/src/nsCertTree.cpp
+++ b/security/manager/ssl/src/nsCertTree.cpp
@@ -103,7 +103,7 @@ static const PLDHashTableOps gMapOps = {
 };
 
 NS_IMPL_ISUPPORTS0(nsCertAddonInfo)
-NS_IMPL_ISUPPORTS1(nsCertTreeDispInfo, nsICertTreeItem)
+NS_IMPL_ISUPPORTS(nsCertTreeDispInfo, nsICertTreeItem)
 
 nsCertTreeDispInfo::nsCertTreeDispInfo()
 :mAddonInfo(nullptr)
@@ -158,7 +158,7 @@ nsCertTreeDispInfo::GetHostPort(nsAString &aHostPort)
   return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS2(nsCertTree, nsICertTree, nsITreeView)
+NS_IMPL_ISUPPORTS(nsCertTree, nsICertTree, nsITreeView)
 
 nsCertTree::nsCertTree() : mTreeArray(nullptr)
 {
diff --git a/security/manager/ssl/src/nsCertVerificationThread.cpp b/security/manager/ssl/src/nsCertVerificationThread.cpp
index b2bbf99ef3ee6d9d308a1aefacb22aeca88fa2ed..a3a5c11c88c9c9a4ea1167b08669dbe3b4241e37 100644
--- a/security/manager/ssl/src/nsCertVerificationThread.cpp
+++ b/security/manager/ssl/src/nsCertVerificationThread.cpp
@@ -10,7 +10,7 @@ using namespace mozilla;
 
 nsCertVerificationThread *nsCertVerificationThread::verification_thread_singleton;
 
-NS_IMPL_ISUPPORTS1(nsCertVerificationResult, nsICertVerificationResult)
+NS_IMPL_ISUPPORTS(nsCertVerificationResult, nsICertVerificationResult)
 
 namespace {
 class DispatchCertVerificationResult : public nsRunnable
diff --git a/security/manager/ssl/src/nsCertificatePrincipal.cpp b/security/manager/ssl/src/nsCertificatePrincipal.cpp
index 7080a636d3547669f84bc8c26d5f1cdd9524758c..0566d06228c3ae23a6f1b435c838dfb4757227bb 100644
--- a/security/manager/ssl/src/nsCertificatePrincipal.cpp
+++ b/security/manager/ssl/src/nsCertificatePrincipal.cpp
@@ -5,7 +5,7 @@
 
 #include "nsCertificatePrincipal.h"
 
-NS_IMPL_ISUPPORTS1(nsCertificatePrincipal, nsICertificatePrincipal)
+NS_IMPL_ISUPPORTS(nsCertificatePrincipal, nsICertificatePrincipal)
 
 NS_IMETHODIMP
 nsCertificatePrincipal::GetFingerprint(nsACString& aFingerprint)
diff --git a/security/manager/ssl/src/nsClientAuthRemember.cpp b/security/manager/ssl/src/nsClientAuthRemember.cpp
index cb8e3b3db860657a8103de4408e4aead765fbdaf..1f46fa00ceb40b41f12fdb5cfd7e8399a5122fc1 100644
--- a/security/manager/ssl/src/nsClientAuthRemember.cpp
+++ b/security/manager/ssl/src/nsClientAuthRemember.cpp
@@ -27,9 +27,9 @@
 using namespace mozilla;
 using namespace mozilla::psm;
 
-NS_IMPL_ISUPPORTS2(nsClientAuthRememberService,
-                   nsIObserver,
-                   nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(nsClientAuthRememberService,
+                  nsIObserver,
+                  nsISupportsWeakReference)
 
 nsClientAuthRememberService::nsClientAuthRememberService()
   : monitor("nsClientAuthRememberService.monitor")
diff --git a/security/manager/ssl/src/nsCrypto.cpp b/security/manager/ssl/src/nsCrypto.cpp
index d947cdc9ca96541147aebe12c5b1e01b027609e4..b025a394bf7ddc43a6563d1858970161c456a7dd 100644
--- a/security/manager/ssl/src/nsCrypto.cpp
+++ b/security/manager/ssl/src/nsCrypto.cpp
@@ -232,10 +232,10 @@ NS_IMPL_RELEASE(nsPkcs11)
 #ifndef MOZ_DISABLE_CRYPTOLEGACY
 
 // ISupports implementation for nsCryptoRunnable
-NS_IMPL_ISUPPORTS1(nsCryptoRunnable, nsIRunnable)
+NS_IMPL_ISUPPORTS(nsCryptoRunnable, nsIRunnable)
 
 // ISupports implementation for nsP12Runnable
-NS_IMPL_ISUPPORTS1(nsP12Runnable, nsIRunnable)
+NS_IMPL_ISUPPORTS(nsP12Runnable, nsIRunnable)
 
 // ISupports implementation for nsCryptoRunArgs
 NS_IMPL_ISUPPORTS0(nsCryptoRunArgs)
diff --git a/security/manager/ssl/src/nsCryptoHash.cpp b/security/manager/ssl/src/nsCryptoHash.cpp
index b8e000b932cf7c4a2380dbd8f86017ffa78fdcc0..b7a7124c7775bcfdcfdc247e6510526d56382481 100644
--- a/security/manager/ssl/src/nsCryptoHash.cpp
+++ b/security/manager/ssl/src/nsCryptoHash.cpp
@@ -55,7 +55,7 @@ void nsCryptoHash::destructorSafeDestroyNSSReference()
   mHashContext = nullptr;
 }
 
-NS_IMPL_ISUPPORTS1(nsCryptoHash, nsICryptoHash)
+NS_IMPL_ISUPPORTS(nsCryptoHash, nsICryptoHash)
 
 NS_IMETHODIMP 
 nsCryptoHash::Init(uint32_t algorithm)
@@ -208,7 +208,7 @@ nsCryptoHash::Finish(bool ascii, nsACString & _retval)
 // Implementing nsICryptoHMAC
 //---------------------------------------------
 
-NS_IMPL_ISUPPORTS1(nsCryptoHMAC, nsICryptoHMAC)
+NS_IMPL_ISUPPORTS(nsCryptoHMAC, nsICryptoHMAC)
 
 nsCryptoHMAC::nsCryptoHMAC()
 {
diff --git a/security/manager/ssl/src/nsDataSignatureVerifier.cpp b/security/manager/ssl/src/nsDataSignatureVerifier.cpp
index ed63206b10ace3aada41be71efa2f3c905bcb953..5215de24be964795a1971c6fde4e121c10d3771a 100644
--- a/security/manager/ssl/src/nsDataSignatureVerifier.cpp
+++ b/security/manager/ssl/src/nsDataSignatureVerifier.cpp
@@ -14,7 +14,7 @@
 
 SEC_ASN1_MKSUB(SECOID_AlgorithmIDTemplate)
 
-NS_IMPL_ISUPPORTS1(nsDataSignatureVerifier, nsIDataSignatureVerifier)
+NS_IMPL_ISUPPORTS(nsDataSignatureVerifier, nsIDataSignatureVerifier)
 
 const SEC_ASN1Template CERT_SignatureDataTemplate[] =
 {
diff --git a/security/manager/ssl/src/nsKeyModule.cpp b/security/manager/ssl/src/nsKeyModule.cpp
index 48c350e3514c5386059c20b1ca1d87ef3a5642b3..43b1a2c5c948f40c9819820cfce9d7a25d5b98e7 100644
--- a/security/manager/ssl/src/nsKeyModule.cpp
+++ b/security/manager/ssl/src/nsKeyModule.cpp
@@ -11,7 +11,7 @@
 using namespace mozilla;
 using namespace mozilla::psm;
 
-NS_IMPL_ISUPPORTS1(nsKeyObject, nsIKeyObject)
+NS_IMPL_ISUPPORTS(nsKeyObject, nsIKeyObject)
 
 nsKeyObject::nsKeyObject()
   : mKeyType(0), mSymKey(nullptr), mPrivateKey(nullptr),
@@ -124,7 +124,7 @@ nsKeyObject::GetType(int16_t *_retval)
 //////////////////////////////////////////////////////////////////////////////
 // nsIKeyObjectFactory
 
-NS_IMPL_ISUPPORTS1(nsKeyObjectFactory, nsIKeyObjectFactory)
+NS_IMPL_ISUPPORTS(nsKeyObjectFactory, nsIKeyObjectFactory)
 
 nsKeyObjectFactory::nsKeyObjectFactory()
 {
diff --git a/security/manager/ssl/src/nsKeygenHandler.cpp b/security/manager/ssl/src/nsKeygenHandler.cpp
index e93deab0e0e9aee0c8d085fa2ec852c82cfdaa3d..cc94e72bf3ed02f2630d95378ba290ca994b221e 100644
--- a/security/manager/ssl/src/nsKeygenHandler.cpp
+++ b/security/manager/ssl/src/nsKeygenHandler.cpp
@@ -256,7 +256,7 @@ decode_ec_params(const char *curve)
     return ecparams;
 }
 
-NS_IMPL_ISUPPORTS1(nsKeygenFormProcessor, nsIFormProcessor)
+NS_IMPL_ISUPPORTS(nsKeygenFormProcessor, nsIFormProcessor)
 
 nsKeygenFormProcessor::nsKeygenFormProcessor()
 { 
diff --git a/security/manager/ssl/src/nsKeygenThread.cpp b/security/manager/ssl/src/nsKeygenThread.cpp
index 8d1c341573ed0bffc9563c2dc612e1ed3e8a256f..b295c4f36895dbfc7f2f791a6125c41471f6e262 100644
--- a/security/manager/ssl/src/nsKeygenThread.cpp
+++ b/security/manager/ssl/src/nsKeygenThread.cpp
@@ -16,7 +16,7 @@
 using namespace mozilla;
 using namespace mozilla::psm;
 
-NS_IMPL_ISUPPORTS1(nsKeygenThread, nsIKeygenThread)
+NS_IMPL_ISUPPORTS(nsKeygenThread, nsIKeygenThread)
 
 
 nsKeygenThread::nsKeygenThread()
diff --git a/security/manager/ssl/src/nsNSSASN1Object.cpp b/security/manager/ssl/src/nsNSSASN1Object.cpp
index 7ab68e4897f9b35c5381dff1c0590a6be450248e..2f10dbe499b6c24ade5103fe228ed11af4cf023d 100644
--- a/security/manager/ssl/src/nsNSSASN1Object.cpp
+++ b/security/manager/ssl/src/nsNSSASN1Object.cpp
@@ -9,8 +9,8 @@
 #include "nsArrayUtils.h"
 #include "nsXPCOMCID.h"
 
-NS_IMPL_ISUPPORTS2(nsNSSASN1Sequence, nsIASN1Sequence, nsIASN1Object)
-NS_IMPL_ISUPPORTS2(nsNSSASN1PrintableItem, nsIASN1PrintableItem, nsIASN1Object)
+NS_IMPL_ISUPPORTS(nsNSSASN1Sequence, nsIASN1Sequence, nsIASN1Object)
+NS_IMPL_ISUPPORTS(nsNSSASN1PrintableItem, nsIASN1PrintableItem, nsIASN1Object)
 
 // This function is used to interpret an integer that
 // was encoded in a DER buffer. This function is used
diff --git a/security/manager/ssl/src/nsNSSCallbacks.cpp b/security/manager/ssl/src/nsNSSCallbacks.cpp
index 31e30564268561b39ab4fee4c8418f3d6dbec683..a389b38083bb63706ea0b3e44e1549121de601ec 100644
--- a/security/manager/ssl/src/nsNSSCallbacks.cpp
+++ b/security/manager/ssl/src/nsNSSCallbacks.cpp
@@ -620,7 +620,7 @@ nsHTTPListener::~nsHTTPListener()
   }
 }
 
-NS_IMPL_ISUPPORTS1(nsHTTPListener, nsIStreamLoaderObserver)
+NS_IMPL_ISUPPORTS(nsHTTPListener, nsIStreamLoaderObserver)
 
 void
 nsHTTPListener::FreeLoadGroup(bool aCancelLoad)
diff --git a/security/manager/ssl/src/nsNSSCertCache.cpp b/security/manager/ssl/src/nsNSSCertCache.cpp
index c4ec7b1599f8eb3d0c08fac7d26d5d7b2c68eca0..62deda751cf25e78e7728aca3cd6013f5c9d504f 100644
--- a/security/manager/ssl/src/nsNSSCertCache.cpp
+++ b/security/manager/ssl/src/nsNSSCertCache.cpp
@@ -11,7 +11,7 @@
 
 using namespace mozilla;
 
-NS_IMPL_ISUPPORTS1(nsNSSCertCache, nsINSSCertCache)
+NS_IMPL_ISUPPORTS(nsNSSCertCache, nsINSSCertCache)
 
 nsNSSCertCache::nsNSSCertCache()
 :mutex("nsNSSCertCache.mutex"), mCertList(nullptr)
diff --git a/security/manager/ssl/src/nsNSSCertValidity.cpp b/security/manager/ssl/src/nsNSSCertValidity.cpp
index 459565852ab93798d761ba650e94062c01597f28..2d9bbc6a9c99bc65592895c762503e3e37bddf08 100644
--- a/security/manager/ssl/src/nsNSSCertValidity.cpp
+++ b/security/manager/ssl/src/nsNSSCertValidity.cpp
@@ -12,7 +12,7 @@
 #include "cert.h"
 
 /* Implementation file */
-NS_IMPL_ISUPPORTS1(nsX509CertValidity, nsIX509CertValidity)
+NS_IMPL_ISUPPORTS(nsX509CertValidity, nsIX509CertValidity)
 
 nsX509CertValidity::nsX509CertValidity() : mTimesInitialized(false)
 {
diff --git a/security/manager/ssl/src/nsNSSCertificate.cpp b/security/manager/ssl/src/nsNSSCertificate.cpp
index 76a60420638b19b3bcad9e4172d60cfbded9ac94..976691d43b7696464072ad55884181ac358eec89 100644
--- a/security/manager/ssl/src/nsNSSCertificate.cpp
+++ b/security/manager/ssl/src/nsNSSCertificate.cpp
@@ -67,14 +67,14 @@ NSSCleanupAutoPtrClass_WithParam(PLArenaPool, PORT_FreeArena, FalseParam, false)
 // in the list to mean not yet initialized.
 #define CERT_TYPE_NOT_YET_INITIALIZED (1 << 30)
 
-NS_IMPL_ISUPPORTS7(nsNSSCertificate,
-                   nsIX509Cert,
-                   nsIX509Cert2,
-                   nsIX509Cert3,
-                   nsIIdentityInfo,
-                   nsISMimeCert,
-                   nsISerializable,
-                   nsIClassInfo)
+NS_IMPL_ISUPPORTS(nsNSSCertificate,
+                  nsIX509Cert,
+                  nsIX509Cert2,
+                  nsIX509Cert3,
+                  nsIIdentityInfo,
+                  nsISMimeCert,
+                  nsISerializable,
+                  nsIClassInfo)
 
 /*static*/ nsNSSCertificate*
 nsNSSCertificate::Create(CERTCertificate* cert, SECOidTag* evOidPolicy)
@@ -1566,7 +1566,7 @@ nsNSSCertificate::GetValidEVPolicyOid(nsACString& outDottedOid)
   return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS1(nsNSSCertList, nsIX509CertList)
+NS_IMPL_ISUPPORTS(nsNSSCertList, nsIX509CertList)
 
 nsNSSCertList::nsNSSCertList(mozilla::pkix::ScopedCERTCertList& certList,
                              const nsNSSShutDownPreventionLock& proofOfLock)
@@ -1706,7 +1706,7 @@ nsNSSCertList::GetEnumerator(nsISimpleEnumerator** _retval)
   return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS1(nsNSSCertListEnumerator, nsISimpleEnumerator)
+NS_IMPL_ISUPPORTS(nsNSSCertListEnumerator, nsISimpleEnumerator)
 
 nsNSSCertListEnumerator::nsNSSCertListEnumerator(
   CERTCertList* certList, const nsNSSShutDownPreventionLock& proofOfLock)
diff --git a/security/manager/ssl/src/nsNSSCertificateDB.cpp b/security/manager/ssl/src/nsNSSCertificateDB.cpp
index eaea2c5ec51bf4ce2f2ea36d7b63b187b1a4c38c..40b03c1d673b457a941ab5ec6611e8d6f5e6f654 100644
--- a/security/manager/ssl/src/nsNSSCertificateDB.cpp
+++ b/security/manager/ssl/src/nsNSSCertificateDB.cpp
@@ -83,7 +83,7 @@ attemptToLogInWithDefaultPassword()
   return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS2(nsNSSCertificateDB, nsIX509CertDB, nsIX509CertDB2)
+NS_IMPL_ISUPPORTS(nsNSSCertificateDB, nsIX509CertDB, nsIX509CertDB2)
 
 nsNSSCertificateDB::nsNSSCertificateDB()
 : mBadCertsLock("nsNSSCertificateDB::mBadCertsLock")
diff --git a/security/manager/ssl/src/nsNSSCertificateFakeTransport.cpp b/security/manager/ssl/src/nsNSSCertificateFakeTransport.cpp
index 88ca1e347107dbf9199674ac00d5dcbd73f06c61..4179ded9ac173c2331c52dd67c931eb8e9a5323a 100644
--- a/security/manager/ssl/src/nsNSSCertificateFakeTransport.cpp
+++ b/security/manager/ssl/src/nsNSSCertificateFakeTransport.cpp
@@ -20,10 +20,10 @@ extern PRLogModuleInfo* gPIPNSSLog;
 
 /* nsNSSCertificateFakeTransport */
 
-NS_IMPL_ISUPPORTS3(nsNSSCertificateFakeTransport,
-                   nsIX509Cert,
-                   nsISerializable,
-                   nsIClassInfo)
+NS_IMPL_ISUPPORTS(nsNSSCertificateFakeTransport,
+                  nsIX509Cert,
+                  nsISerializable,
+                  nsIClassInfo)
 
 nsNSSCertificateFakeTransport::nsNSSCertificateFakeTransport() :
   mCertSerialization(nullptr)
diff --git a/security/manager/ssl/src/nsNSSComponent.cpp b/security/manager/ssl/src/nsNSSComponent.cpp
index fc53f5bf5c8c6e480ff1c0808feee646a0c51e74..97dc8eb9a5cffc8ac78d5cf593b8f8db8371838a 100644
--- a/security/manager/ssl/src/nsNSSComponent.cpp
+++ b/security/manager/ssl/src/nsNSSComponent.cpp
@@ -98,7 +98,7 @@ private:
 };
 
 // ISuuports implementation for nsTokenEventRunnable
-NS_IMPL_ISUPPORTS1(nsTokenEventRunnable, nsIRunnable)
+NS_IMPL_ISUPPORTS(nsTokenEventRunnable, nsIRunnable)
 
 nsTokenEventRunnable::nsTokenEventRunnable(const nsAString& aType,
                                            const nsAString& aTokenName)
@@ -875,7 +875,7 @@ private:
   CipherSuiteChangeObserver() {}
 };
 
-NS_IMPL_ISUPPORTS1(CipherSuiteChangeObserver, nsIObserver)
+NS_IMPL_ISUPPORTS(CipherSuiteChangeObserver, nsIObserver)
 
 // static
 StaticRefPtr<CipherSuiteChangeObserver> CipherSuiteChangeObserver::sObserver;
@@ -1365,12 +1365,12 @@ nsNSSComponent::Init()
 }
 
 // nsISupports Implementation for the class
-NS_IMPL_ISUPPORTS5(nsNSSComponent,
-                   nsISignatureVerifier,
-                   nsIEntropyCollector,
-                   nsINSSComponent,
-                   nsIObserver,
-                   nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(nsNSSComponent,
+                  nsISignatureVerifier,
+                  nsIEntropyCollector,
+                  nsINSSComponent,
+                  nsIObserver,
+                  nsISupportsWeakReference)
 
 
 // Callback functions for decoder. For now, use empty/default functions.
@@ -1859,7 +1859,7 @@ GetDefaultCertVerifier()
 
 } } // namespace mozilla::psm
 
-NS_IMPL_ISUPPORTS1(PipUIContext, nsIInterfaceRequestor)
+NS_IMPL_ISUPPORTS(PipUIContext, nsIInterfaceRequestor)
 
 PipUIContext::PipUIContext()
 {
diff --git a/security/manager/ssl/src/nsNSSIOLayer.cpp b/security/manager/ssl/src/nsNSSIOLayer.cpp
index b6a099abe4b19db601397dbc21833a6e3460d7be..43bb013de9e4a99dde5a5488912444c38ce47903 100644
--- a/security/manager/ssl/src/nsNSSIOLayer.cpp
+++ b/security/manager/ssl/src/nsNSSIOLayer.cpp
@@ -142,9 +142,9 @@ nsNSSSocketInfo::nsNSSSocketInfo(SharedSSLState& aState, uint32_t providerFlags)
   mTLSVersionRange.max = 0;
 }
 
-NS_IMPL_ISUPPORTS_INHERITED2(nsNSSSocketInfo, TransportSecurityInfo,
-                             nsISSLSocketControl,
-                             nsIClientAuthUserDecision)
+NS_IMPL_ISUPPORTS_INHERITED(nsNSSSocketInfo, TransportSecurityInfo,
+                            nsISSLSocketControl,
+                            nsIClientAuthUserDecision)
 
 NS_IMETHODIMP
 nsNSSSocketInfo::GetProviderFlags(uint32_t* aProviderFlags)
@@ -1374,7 +1374,7 @@ private:
 
 } // unnamed namespace
 
-NS_IMPL_ISUPPORTS1(PrefObserver, nsIObserver)
+NS_IMPL_ISUPPORTS(PrefObserver, nsIObserver)
 
 NS_IMETHODIMP
 PrefObserver::Observe(nsISupports* aSubject, const char* aTopic,
diff --git a/security/manager/ssl/src/nsNSSVersion.cpp b/security/manager/ssl/src/nsNSSVersion.cpp
index 6f891676a1724753779230f7c6daa513f815ec9d..854f7fb57bfb67dd7babe55f33d2029771a22ed4 100644
--- a/security/manager/ssl/src/nsNSSVersion.cpp
+++ b/security/manager/ssl/src/nsNSSVersion.cpp
@@ -11,7 +11,7 @@
 #include "ssl.h"
 #include "smime.h"
 
-NS_IMPL_ISUPPORTS1(nsNSSVersion, nsINSSVersion)
+NS_IMPL_ISUPPORTS(nsNSSVersion, nsINSSVersion)
 
 nsNSSVersion::nsNSSVersion()
 {
diff --git a/security/manager/ssl/src/nsNTLMAuthModule.cpp b/security/manager/ssl/src/nsNTLMAuthModule.cpp
index ecce635e3a5c69982602fdf3886e60d4465b1d4c..7f237d6b149890014596b557dc3540b5075d145b 100644
--- a/security/manager/ssl/src/nsNTLMAuthModule.cpp
+++ b/security/manager/ssl/src/nsNTLMAuthModule.cpp
@@ -747,7 +747,7 @@ GenerateType3Msg(const nsString &domain,
 
 //-----------------------------------------------------------------------------
 
-NS_IMPL_ISUPPORTS1(nsNTLMAuthModule, nsIAuthModule)
+NS_IMPL_ISUPPORTS(nsNTLMAuthModule, nsIAuthModule)
 
 nsNTLMAuthModule::~nsNTLMAuthModule()
 {
diff --git a/security/manager/ssl/src/nsPK11TokenDB.cpp b/security/manager/ssl/src/nsPK11TokenDB.cpp
index 8b3882c8849dc96b1e0330bfd56a04d1524e4359..176e8233f339e6f29c6af668384807a39adb667d 100644
--- a/security/manager/ssl/src/nsPK11TokenDB.cpp
+++ b/security/manager/ssl/src/nsPK11TokenDB.cpp
@@ -18,7 +18,7 @@
 extern PRLogModuleInfo* gPIPNSSLog;
 #endif
 
-NS_IMPL_ISUPPORTS1(nsPK11Token, nsIPK11Token)
+NS_IMPL_ISUPPORTS(nsPK11Token, nsIPK11Token)
 
 nsPK11Token::nsPK11Token(PK11SlotInfo *slot)
 {
@@ -422,7 +422,7 @@ NS_IMETHODIMP nsPK11Token::IsFriendly(bool *_retval)
 
 /*=========================================================*/
 
-NS_IMPL_ISUPPORTS1(nsPK11TokenDB, nsIPK11TokenDB)
+NS_IMPL_ISUPPORTS(nsPK11TokenDB, nsIPK11TokenDB)
 
 nsPK11TokenDB::nsPK11TokenDB()
 {
diff --git a/security/manager/ssl/src/nsPKCS11Slot.cpp b/security/manager/ssl/src/nsPKCS11Slot.cpp
index ae70ce34f0f396f7fa8625cc18897e0b60a06e14..e4a807df99058ae4e7e61142972afe6a4eec1979 100644
--- a/security/manager/ssl/src/nsPKCS11Slot.cpp
+++ b/security/manager/ssl/src/nsPKCS11Slot.cpp
@@ -17,7 +17,7 @@
 extern PRLogModuleInfo* gPIPNSSLog;
 #endif
 
-NS_IMPL_ISUPPORTS1(nsPKCS11Slot, nsIPKCS11Slot)
+NS_IMPL_ISUPPORTS(nsPKCS11Slot, nsIPKCS11Slot)
 
 nsPKCS11Slot::nsPKCS11Slot(PK11SlotInfo *slot)
 {
@@ -223,7 +223,7 @@ nsPKCS11Slot::GetStatus(uint32_t *_retval)
   return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS1(nsPKCS11Module, nsIPKCS11Module)
+NS_IMPL_ISUPPORTS(nsPKCS11Module, nsIPKCS11Module)
 
 nsPKCS11Module::nsPKCS11Module(SECMODModule *module)
 {
@@ -363,7 +363,7 @@ nsPKCS11Module::ListSlots(nsIEnumerator **_retval)
   return rv;
 }
 
-NS_IMPL_ISUPPORTS2(nsPKCS11ModuleDB, nsIPKCS11ModuleDB, nsICryptoFIPSInfo)
+NS_IMPL_ISUPPORTS(nsPKCS11ModuleDB, nsIPKCS11ModuleDB, nsICryptoFIPSInfo)
 
 nsPKCS11ModuleDB::nsPKCS11ModuleDB()
 {
diff --git a/security/manager/ssl/src/nsProtectedAuthThread.cpp b/security/manager/ssl/src/nsProtectedAuthThread.cpp
index e7abec8a3d9b7d65c5b96b05a98530f939579fe4..ad841b81f9f30adbbb4607e2dea2f3a4b163bdf9 100644
--- a/security/manager/ssl/src/nsProtectedAuthThread.cpp
+++ b/security/manager/ssl/src/nsProtectedAuthThread.cpp
@@ -15,7 +15,7 @@
 using namespace mozilla;
 using namespace mozilla::psm;
 
-NS_IMPL_ISUPPORTS1(nsProtectedAuthThread, nsIProtectedAuthThread)
+NS_IMPL_ISUPPORTS(nsProtectedAuthThread, nsIProtectedAuthThread)
 
 static void nsProtectedAuthThreadRunner(void *arg)
 {
diff --git a/security/manager/ssl/src/nsRandomGenerator.cpp b/security/manager/ssl/src/nsRandomGenerator.cpp
index 2d4547c6fec138cdaee1f3b6782f183c473f4d7c..546d8f6557a16e9731308b7553bf8e3a43ced339 100644
--- a/security/manager/ssl/src/nsRandomGenerator.cpp
+++ b/security/manager/ssl/src/nsRandomGenerator.cpp
@@ -11,7 +11,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 //// nsRandomGenerator
 
-NS_IMPL_ISUPPORTS1(nsRandomGenerator, nsIRandomGenerator)
+NS_IMPL_ISUPPORTS(nsRandomGenerator, nsIRandomGenerator)
 
 ////////////////////////////////////////////////////////////////////////////////
 //// nsIRandomGenerator
diff --git a/security/manager/ssl/src/nsRecentBadCerts.cpp b/security/manager/ssl/src/nsRecentBadCerts.cpp
index e747600940c6763504ad8c7d4943ecb585d77ee9..4420fceacdb55e71bd683576878b4bf55f736ac2 100644
--- a/security/manager/ssl/src/nsRecentBadCerts.cpp
+++ b/security/manager/ssl/src/nsRecentBadCerts.cpp
@@ -24,7 +24,7 @@
 
 using namespace mozilla;
 
-NS_IMPL_ISUPPORTS1(nsRecentBadCerts, nsIRecentBadCerts)
+NS_IMPL_ISUPPORTS(nsRecentBadCerts, nsIRecentBadCerts)
 
 nsRecentBadCerts::nsRecentBadCerts()
 :monitor("nsRecentBadCerts.monitor")
diff --git a/security/manager/ssl/src/nsSDR.cpp b/security/manager/ssl/src/nsSDR.cpp
index 8c4f5fd3ed09b4c90a2408b8c47d9a573a4b21f6..767cbdd4c144d0b2578a28d14720c6f944e11358 100644
--- a/security/manager/ssl/src/nsSDR.cpp
+++ b/security/manager/ssl/src/nsSDR.cpp
@@ -34,7 +34,7 @@ using namespace mozilla;
 
 // Standard ISupports implementation
 // NOTE: Should these be the thread-safe versions?
-NS_IMPL_ISUPPORTS2(nsSecretDecoderRing, nsISecretDecoderRing, nsISecretDecoderRingConfig)
+NS_IMPL_ISUPPORTS(nsSecretDecoderRing, nsISecretDecoderRing, nsISecretDecoderRingConfig)
 
 // nsSecretDecoderRing constructor
 nsSecretDecoderRing::nsSecretDecoderRing()
diff --git a/security/manager/ssl/src/nsSSLSocketProvider.cpp b/security/manager/ssl/src/nsSSLSocketProvider.cpp
index de9d8edc8ebd4cd43fac80c6dbe48a9364981fd6..fd37f4c1c669c6dbb9d3cfbcad6070daac012493 100644
--- a/security/manager/ssl/src/nsSSLSocketProvider.cpp
+++ b/security/manager/ssl/src/nsSSLSocketProvider.cpp
@@ -16,7 +16,7 @@ nsSSLSocketProvider::~nsSSLSocketProvider()
 {
 }
 
-NS_IMPL_ISUPPORTS1(nsSSLSocketProvider, nsISocketProvider)
+NS_IMPL_ISUPPORTS(nsSSLSocketProvider, nsISocketProvider)
 
 NS_IMETHODIMP
 nsSSLSocketProvider::NewSocket(int32_t family,
diff --git a/security/manager/ssl/src/nsSSLStatus.cpp b/security/manager/ssl/src/nsSSLStatus.cpp
index d3d194e58044b32b5e2dec0c2a2a0eb25a105ae9..235d872fac4355ba1f1f3d2f5ecf2266f44d8a21 100644
--- a/security/manager/ssl/src/nsSSLStatus.cpp
+++ b/security/manager/ssl/src/nsSSLStatus.cpp
@@ -257,7 +257,7 @@ nsSSLStatus::nsSSLStatus()
   mCipherName = "";
 }
 
-NS_IMPL_ISUPPORTS3(nsSSLStatus, nsISSLStatus, nsISerializable, nsIClassInfo)
+NS_IMPL_ISUPPORTS(nsSSLStatus, nsISSLStatus, nsISerializable, nsIClassInfo)
 
 nsSSLStatus::~nsSSLStatus()
 {
diff --git a/security/manager/ssl/src/nsStreamCipher.cpp b/security/manager/ssl/src/nsStreamCipher.cpp
index f8263c1fa0e44280c316cf5cb462841d07b2c8ca..232c82ea70ae98c0632a7e83881ad9d9e1b6ccad 100644
--- a/security/manager/ssl/src/nsStreamCipher.cpp
+++ b/security/manager/ssl/src/nsStreamCipher.cpp
@@ -7,7 +7,7 @@
 #include "nsStreamUtils.h"
 #include "base64.h"
 
-NS_IMPL_ISUPPORTS1(nsStreamCipher, nsIStreamCipher)
+NS_IMPL_ISUPPORTS(nsStreamCipher, nsIStreamCipher)
 
 nsStreamCipher::nsStreamCipher()
   : mContext(nullptr)
diff --git a/security/manager/ssl/src/nsTLSSocketProvider.cpp b/security/manager/ssl/src/nsTLSSocketProvider.cpp
index 822051664e4ad6964b476c3833b2f3eae2376ed9..029b2c50cba912af7c215f7640f673c7fb342373 100644
--- a/security/manager/ssl/src/nsTLSSocketProvider.cpp
+++ b/security/manager/ssl/src/nsTLSSocketProvider.cpp
@@ -16,7 +16,7 @@ nsTLSSocketProvider::~nsTLSSocketProvider()
 {
 }
 
-NS_IMPL_ISUPPORTS1(nsTLSSocketProvider, nsISocketProvider)
+NS_IMPL_ISUPPORTS(nsTLSSocketProvider, nsISocketProvider)
 
 NS_IMETHODIMP
 nsTLSSocketProvider::NewSocket(int32_t family,
diff --git a/services/crypto/component/nsSyncJPAKE.h b/services/crypto/component/nsSyncJPAKE.h
index 9399c70ab086bd3f5dd656d8e60b10a6b5119fa6..892f9d5a484a03726fa463164cc49ed3ac1189dc 100644
--- a/services/crypto/component/nsSyncJPAKE.h
+++ b/services/crypto/component/nsSyncJPAKE.h
@@ -26,6 +26,6 @@ private:
   PK11SymKey * key;
 };
 
-NS_IMPL_ISUPPORTS1(nsSyncJPAKE, nsISyncJPAKE)
+NS_IMPL_ISUPPORTS(nsSyncJPAKE, nsISyncJPAKE)
 
 #endif // nsSyncJPAKE_h__
diff --git a/startupcache/StartupCache.cpp b/startupcache/StartupCache.cpp
index a271ae76a74d1c0ed37fd323ec4943154803409f..0342666dcfc6eab98726d2e990e4be8523c75f40 100644
--- a/startupcache/StartupCache.cpp
+++ b/startupcache/StartupCache.cpp
@@ -127,7 +127,7 @@ bool StartupCache::gShutdownInitiated;
 bool StartupCache::gIgnoreDiskCache;
 enum StartupCache::TelemetrifyAge StartupCache::gPostFlushAgeAction = StartupCache::IGNORE_AGE;
 
-NS_IMPL_ISUPPORTS1(StartupCache, nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(StartupCache, nsIMemoryReporter)
 
 StartupCache::StartupCache()
   : mArchive(nullptr), mStartupWriteInitiated(false), mWriteThread(nullptr)
@@ -578,7 +578,7 @@ StartupCache::WriteTimeout(nsITimer *aTimer, void *aClosure)
 
 // We don't want to refcount StartupCache, so we'll just
 // hold a ref to this and pass it to observerService instead.
-NS_IMPL_ISUPPORTS1(StartupCacheListener, nsIObserver)
+NS_IMPL_ISUPPORTS(StartupCacheListener, nsIObserver)
 
 nsresult
 StartupCacheListener::Observe(nsISupports *subject, const char* topic, const char16_t* data)
@@ -638,8 +638,8 @@ StartupCache::RecordAgesAlways()
 
 // StartupCacheDebugOutputStream implementation
 #ifdef DEBUG
-NS_IMPL_ISUPPORTS3(StartupCacheDebugOutputStream, nsIObjectOutputStream, 
-                   nsIBinaryOutputStream, nsIOutputStream)
+NS_IMPL_ISUPPORTS(StartupCacheDebugOutputStream, nsIObjectOutputStream, 
+                  nsIBinaryOutputStream, nsIOutputStream)
 
 bool
 StartupCacheDebugOutputStream::CheckReferences(nsISupports* aObject)
@@ -733,7 +733,7 @@ StartupCacheDebugOutputStream::PutBuffer(char* aBuffer, uint32_t aLength)
 
 StartupCacheWrapper* StartupCacheWrapper::gStartupCacheWrapper = nullptr;
 
-NS_IMPL_ISUPPORTS1(StartupCacheWrapper, nsIStartupCache)
+NS_IMPL_ISUPPORTS(StartupCacheWrapper, nsIStartupCache)
 
 StartupCacheWrapper* StartupCacheWrapper::GetSingleton() 
 {
diff --git a/storage/src/VacuumManager.cpp b/storage/src/VacuumManager.cpp
index 4b7314bbe1b87fdeaa33899d91ea7e766c8d9419..2cbeb243e3c245ec7ce8de6deee6949b73271224 100644
--- a/storage/src/VacuumManager.cpp
+++ b/storage/src/VacuumManager.cpp
@@ -96,7 +96,7 @@ BaseCallback::HandleCompletion(uint16_t aReason)
   return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS1(
+NS_IMPL_ISUPPORTS(
   BaseCallback
 , mozIStorageStatementCallback
 )
@@ -307,7 +307,7 @@ Vacuumer::notifyCompletion(bool aSucceeded)
 ////////////////////////////////////////////////////////////////////////////////
 //// VacuumManager
 
-NS_IMPL_ISUPPORTS1(
+NS_IMPL_ISUPPORTS(
   VacuumManager
 , nsIObserver
 )
diff --git a/storage/src/Variant_inl.h b/storage/src/Variant_inl.h
index 01b708fb0c8e06a2992d8172b3da9837fa10264f..2e0571ae2d85247443eae65f8f264884a9c96062 100644
--- a/storage/src/Variant_inl.h
+++ b/storage/src/Variant_inl.h
@@ -20,7 +20,7 @@ namespace storage {
 
 inline NS_IMPL_ADDREF(Variant_base)
 inline NS_IMPL_RELEASE(Variant_base)
-inline NS_IMPL_QUERY_INTERFACE1(
+inline NS_IMPL_QUERY_INTERFACE(
   Variant_base,
   nsIVariant
 )
diff --git a/storage/src/mozStorageArgValueArray.cpp b/storage/src/mozStorageArgValueArray.cpp
index 02dd7242855d34fa141fad1aec1ac95a39db6462..019788512ea1daeffd90731e7396cc3c699cf256 100644
--- a/storage/src/mozStorageArgValueArray.cpp
+++ b/storage/src/mozStorageArgValueArray.cpp
@@ -24,7 +24,7 @@ ArgValueArray::ArgValueArray(int32_t aArgc,
 {
 }
 
-NS_IMPL_ISUPPORTS1(
+NS_IMPL_ISUPPORTS(
   ArgValueArray,
   mozIStorageValueArray
 )
diff --git a/storage/src/mozStorageAsyncStatement.cpp b/storage/src/mozStorageAsyncStatement.cpp
index 3ffcfa18a029b2f4dc1ea591e61ccdec7ed44abb..d62b84cb8be5c7cbb5b53b8754e0db95561645d3 100644
--- a/storage/src/mozStorageAsyncStatement.cpp
+++ b/storage/src/mozStorageAsyncStatement.cpp
@@ -38,13 +38,11 @@ namespace storage {
 ////////////////////////////////////////////////////////////////////////////////
 //// nsIClassInfo
 
-NS_IMPL_CI_INTERFACE_GETTER4(
-  AsyncStatement
-, mozIStorageAsyncStatement
-, mozIStorageBaseStatement
-, mozIStorageBindingParams
-, mozilla::storage::StorageBaseStatementInternal
-)
+NS_IMPL_CI_INTERFACE_GETTER(AsyncStatement,
+                            mozIStorageAsyncStatement,
+                            mozIStorageBaseStatement,
+                            mozIStorageBindingParams,
+                            mozilla::storage::StorageBaseStatementInternal)
 
 class AsyncStatementClassInfo : public nsIClassInfo
 {
@@ -116,7 +114,7 @@ public:
 
 NS_IMETHODIMP_(MozExternalRefCountType) AsyncStatementClassInfo::AddRef() { return 2; }
 NS_IMETHODIMP_(MozExternalRefCountType) AsyncStatementClassInfo::Release() { return 1; }
-NS_IMPL_QUERY_INTERFACE1(AsyncStatementClassInfo, nsIClassInfo)
+NS_IMPL_QUERY_INTERFACE(AsyncStatementClassInfo, nsIClassInfo)
 
 static AsyncStatementClassInfo sAsyncStatementClassInfo;
 
diff --git a/storage/src/mozStorageAsyncStatementExecution.cpp b/storage/src/mozStorageAsyncStatementExecution.cpp
index 97338fb342f7ab9369cdc0faba8ccaffc986680f..f4c7660df6790d2f142d145cb47fc2dd31856eeb 100644
--- a/storage/src/mozStorageAsyncStatementExecution.cpp
+++ b/storage/src/mozStorageAsyncStatementExecution.cpp
@@ -519,7 +519,7 @@ AsyncExecuteStatements::notifyResults()
   return rv;
 }
 
-NS_IMPL_ISUPPORTS2(
+NS_IMPL_ISUPPORTS(
   AsyncExecuteStatements,
   nsIRunnable,
   mozIStoragePendingStatement
diff --git a/storage/src/mozStorageAsyncStatementParams.cpp b/storage/src/mozStorageAsyncStatementParams.cpp
index 9d70b4611eeba3f3cfc0d68fac97fc7db23dd621..7e7f19a7b64baf49189ddeb404fb105a92b54290 100644
--- a/storage/src/mozStorageAsyncStatementParams.cpp
+++ b/storage/src/mozStorageAsyncStatementParams.cpp
@@ -27,7 +27,7 @@ AsyncStatementParams::AsyncStatementParams(AsyncStatement *aStatement)
   NS_ASSERTION(mStatement != nullptr, "mStatement is null");
 }
 
-NS_IMPL_ISUPPORTS2(
+NS_IMPL_ISUPPORTS(
   AsyncStatementParams
 , mozIStorageStatementParams
 , nsIXPCScriptable
diff --git a/storage/src/mozStorageBindingParams.cpp b/storage/src/mozStorageBindingParams.cpp
index dc18ea73bdb894bef84f92ce4303c6183869f3b2..15cccd31ff30b60382cf9a20803419c413d33f41 100644
--- a/storage/src/mozStorageBindingParams.cpp
+++ b/storage/src/mozStorageBindingParams.cpp
@@ -201,7 +201,7 @@ AsyncBindingParams::iterateOverNamedParameters(const nsACString &aName,
 ////////////////////////////////////////////////////////////////////////////////
 //// nsISupports
 
-NS_IMPL_ISUPPORTS2(
+NS_IMPL_ISUPPORTS(
   BindingParams
 , mozIStorageBindingParams
 , IStorageBindingParamsInternal
diff --git a/storage/src/mozStorageBindingParamsArray.cpp b/storage/src/mozStorageBindingParamsArray.cpp
index a543a754f30163864d7825f1ad2549c2b079d98d..fb7c9f14a2de6cb40df4ba37928312557ecf437a 100644
--- a/storage/src/mozStorageBindingParamsArray.cpp
+++ b/storage/src/mozStorageBindingParamsArray.cpp
@@ -39,7 +39,7 @@ BindingParamsArray::getOwner() const
   return mOwningStatement;
 }
 
-NS_IMPL_ISUPPORTS1(
+NS_IMPL_ISUPPORTS(
   BindingParamsArray,
   mozIStorageBindingParamsArray
 )
diff --git a/storage/src/mozStorageError.cpp b/storage/src/mozStorageError.cpp
index d8088851b875bcfaa6cc7db57522f2bf77a384f0..1ddf253148ee1880aa6428f8b53cceadad42a60f 100644
--- a/storage/src/mozStorageError.cpp
+++ b/storage/src/mozStorageError.cpp
@@ -23,7 +23,7 @@ Error::Error(int aResult,
  * Note:  This object is only ever accessed on one thread at a time.  It it not
  *        threadsafe, but it does need threadsafe AddRef and Release.
  */
-NS_IMPL_ISUPPORTS1(
+NS_IMPL_ISUPPORTS(
   Error,
   mozIStorageError
 )
diff --git a/storage/src/mozStorageResultSet.cpp b/storage/src/mozStorageResultSet.cpp
index 67449519935cfb08c3c8bbb2eef33e3d2c45e980..e4f3d1f3584e296bdaacbaa273bc4a709c1d6e99 100644
--- a/storage/src/mozStorageResultSet.cpp
+++ b/storage/src/mozStorageResultSet.cpp
@@ -33,7 +33,7 @@ ResultSet::add(mozIStorageRow *aRow)
  * Note:  This object is only ever accessed on one thread at a time.  It it not
  *        threadsafe, but it does need threadsafe AddRef and Release.
  */
-NS_IMPL_ISUPPORTS1(
+NS_IMPL_ISUPPORTS(
   ResultSet,
   mozIStorageResultSet
 )
diff --git a/storage/src/mozStorageRow.cpp b/storage/src/mozStorageRow.cpp
index c42bceef16463ec4fddf3a89d8e95aa84eb13a76..9f28151e097b00e3d827367ce4361785db29234c 100644
--- a/storage/src/mozStorageRow.cpp
+++ b/storage/src/mozStorageRow.cpp
@@ -75,7 +75,7 @@ Row::initialize(sqlite3_stmt *aStatement)
  * Note:  This object is only ever accessed on one thread at a time.  It it not
  *        threadsafe, but it does need threadsafe AddRef and Release.
  */
-NS_IMPL_ISUPPORTS2(
+NS_IMPL_ISUPPORTS(
   Row,
   mozIStorageRow,
   mozIStorageValueArray
diff --git a/storage/src/mozStorageService.cpp b/storage/src/mozStorageService.cpp
index 7e6fe37b65d514929d916358d749587159990e02..abb27f00363134d37496ea9bf6a804239e7420ae 100644
--- a/storage/src/mozStorageService.cpp
+++ b/storage/src/mozStorageService.cpp
@@ -197,7 +197,7 @@ Service::CollectReports(nsIHandleReportCallback *aHandleReport,
 ////////////////////////////////////////////////////////////////////////////////
 //// Service
 
-NS_IMPL_ISUPPORTS3(
+NS_IMPL_ISUPPORTS(
   Service,
   mozIStorageService,
   nsIObserver,
diff --git a/storage/src/mozStorageStatement.cpp b/storage/src/mozStorageStatement.cpp
index efd6e8657d5bf1c2b970cc2a0f4cf8499ebdebcf..87086b27a8e41aa3ad9d95767f394c46a1e555fe 100644
--- a/storage/src/mozStorageStatement.cpp
+++ b/storage/src/mozStorageStatement.cpp
@@ -39,14 +39,12 @@ namespace storage {
 ////////////////////////////////////////////////////////////////////////////////
 //// nsIClassInfo
 
-NS_IMPL_CI_INTERFACE_GETTER5(
-  Statement,
-  mozIStorageStatement,
-  mozIStorageBaseStatement,
-  mozIStorageBindingParams,
-  mozIStorageValueArray,
-  mozilla::storage::StorageBaseStatementInternal
-)
+NS_IMPL_CI_INTERFACE_GETTER(Statement,
+                            mozIStorageStatement,
+                            mozIStorageBaseStatement,
+                            mozIStorageBindingParams,
+                            mozIStorageValueArray,
+                            mozilla::storage::StorageBaseStatementInternal)
 
 class StatementClassInfo : public nsIClassInfo
 {
@@ -118,7 +116,7 @@ public:
 
 NS_IMETHODIMP_(MozExternalRefCountType) StatementClassInfo::AddRef() { return 2; }
 NS_IMETHODIMP_(MozExternalRefCountType) StatementClassInfo::Release() { return 1; }
-NS_IMPL_QUERY_INTERFACE1(StatementClassInfo, nsIClassInfo)
+NS_IMPL_QUERY_INTERFACE(StatementClassInfo, nsIClassInfo)
 
 static StatementClassInfo sStatementClassInfo;
 
diff --git a/storage/src/mozStorageStatementParams.cpp b/storage/src/mozStorageStatementParams.cpp
index d763e4f392aefbab94409550b474438ed22f2ff1..b82d544b840403a6d5daa9c3c79fbc7ca2bde730 100644
--- a/storage/src/mozStorageStatementParams.cpp
+++ b/storage/src/mozStorageStatementParams.cpp
@@ -26,7 +26,7 @@ StatementParams::StatementParams(mozIStorageStatement *aStatement) :
   (void)mStatement->GetParameterCount(&mParamCount);
 }
 
-NS_IMPL_ISUPPORTS2(
+NS_IMPL_ISUPPORTS(
   StatementParams,
   mozIStorageStatementParams,
   nsIXPCScriptable
diff --git a/storage/src/mozStorageStatementRow.cpp b/storage/src/mozStorageStatementRow.cpp
index c13c89de0b005d6ee324d70955b51b37f47a6666..77433a4bfe810463a632bf06264e86dc353a86bd 100644
--- a/storage/src/mozStorageStatementRow.cpp
+++ b/storage/src/mozStorageStatementRow.cpp
@@ -23,7 +23,7 @@ StatementRow::StatementRow(Statement *aStatement)
 {
 }
 
-NS_IMPL_ISUPPORTS2(
+NS_IMPL_ISUPPORTS(
   StatementRow,
   mozIStorageStatementRow,
   nsIXPCScriptable
diff --git a/storage/style.txt b/storage/style.txt
index 6b89c9a9324ea2f1cbf6670890271df3a0eae037..03652e6066ec886d4469c00529c18667a855294c 100644
--- a/storage/style.txt
+++ b/storage/style.txt
@@ -108,7 +108,7 @@ 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/. */
 
-NS_IMPL_ISUPPORTS2(
+NS_IMPL_ISUPPORTS(
   Foo
 , IBar
 , IBaz
diff --git a/storage/test/storage_test_harness.h b/storage/test/storage_test_harness.h
index ed654654b2e2350bd19e75a9fa6896d384e6ba41..dcfdfe7a9f6587d174fefdac6dd4b4b303055299 100644
--- a/storage/test/storage_test_harness.h
+++ b/storage/test/storage_test_harness.h
@@ -131,9 +131,9 @@ protected:
   volatile bool mCompleted;
 };
 
-NS_IMPL_ISUPPORTS2(AsyncStatementSpinner,
-                   mozIStorageStatementCallback,
-                   mozIStorageCompletionCallback)
+NS_IMPL_ISUPPORTS(AsyncStatementSpinner,
+                  mozIStorageStatementCallback,
+                  mozIStorageCompletionCallback)
 
 AsyncStatementSpinner::AsyncStatementSpinner()
 : completionReason(0)
diff --git a/storage/test/test_async_callbacks_with_spun_event_loops.cpp b/storage/test/test_async_callbacks_with_spun_event_loops.cpp
index 5d3eb415808042452f72ec7c1fd372821fcf5ca1..82602e8a2b4bdccf65f692897368e53cb4effa5f 100644
--- a/storage/test/test_async_callbacks_with_spun_event_loops.cpp
+++ b/storage/test/test_async_callbacks_with_spun_event_loops.cpp
@@ -87,7 +87,7 @@ protected:
   bool mCompleted;
 };
 
-NS_IMPL_ISUPPORTS1(UnownedCallback, mozIStorageStatementCallback)
+NS_IMPL_ISUPPORTS(UnownedCallback, mozIStorageStatementCallback)
 
 bool UnownedCallback::sAlive = false;
 bool UnownedCallback::sResult = false;
diff --git a/toolkit/components/alerts/nsAlertsService.cpp b/toolkit/components/alerts/nsAlertsService.cpp
index b8868ec2d9f6214ef5a1464cf6f5b695838a2aa9..ee32f063d73129bb5b8c2299c727816271044e93 100644
--- a/toolkit/components/alerts/nsAlertsService.cpp
+++ b/toolkit/components/alerts/nsAlertsService.cpp
@@ -26,7 +26,7 @@ using namespace mozilla;
 
 using mozilla::dom::ContentChild;
 
-NS_IMPL_ISUPPORTS2(nsAlertsService, nsIAlertsService, nsIAlertsProgressListener)
+NS_IMPL_ISUPPORTS(nsAlertsService, nsIAlertsService, nsIAlertsProgressListener)
 
 nsAlertsService::nsAlertsService()
 {
diff --git a/toolkit/components/alerts/nsXULAlerts.cpp b/toolkit/components/alerts/nsXULAlerts.cpp
index c48bb5dc09b5a4860ba7bdb00aa7269daa2d0b55..3d3b685ce057a33ea5e228e054592b51e29bde18 100644
--- a/toolkit/components/alerts/nsXULAlerts.cpp
+++ b/toolkit/components/alerts/nsXULAlerts.cpp
@@ -17,7 +17,7 @@ using namespace mozilla;
 
 #define ALERT_CHROME_URL "chrome://global/content/alerts/alert.xul"
 
-NS_IMPL_ISUPPORTS1(nsXULAlertObserver, nsIObserver)
+NS_IMPL_ISUPPORTS(nsXULAlertObserver, nsIObserver)
 
 NS_IMETHODIMP
 nsXULAlertObserver::Observe(nsISupports* aSubject, const char* aTopic,
diff --git a/toolkit/components/autocomplete/nsAutoCompleteController.cpp b/toolkit/components/autocomplete/nsAutoCompleteController.cpp
index 964c0dbf01d6254ba4a91ab3326130fca085f28c..1ec4eb828ab852a016269c4b53f138208f42cd75 100644
--- a/toolkit/components/autocomplete/nsAutoCompleteController.cpp
+++ b/toolkit/components/autocomplete/nsAutoCompleteController.cpp
@@ -37,8 +37,8 @@ NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
 NS_IMPL_CYCLE_COLLECTING_ADDREF(nsAutoCompleteController)
 NS_IMPL_CYCLE_COLLECTING_RELEASE(nsAutoCompleteController)
 NS_INTERFACE_TABLE_HEAD(nsAutoCompleteController)
-  NS_INTERFACE_TABLE4(nsAutoCompleteController, nsIAutoCompleteController,
-                      nsIAutoCompleteObserver, nsITimerCallback, nsITreeView)
+  NS_INTERFACE_TABLE(nsAutoCompleteController, nsIAutoCompleteController,
+                     nsIAutoCompleteObserver, nsITimerCallback, nsITreeView)
   NS_INTERFACE_TABLE_TO_MAP_SEGUE_CYCLE_COLLECTION(nsAutoCompleteController)
 NS_INTERFACE_MAP_END
 
diff --git a/toolkit/components/autocomplete/nsAutoCompleteSimpleResult.cpp b/toolkit/components/autocomplete/nsAutoCompleteSimpleResult.cpp
index e0285214ab1d9b627ac6afc80b8c2d0fdf2ee1b6..9c4c464eee636429189a811237b4b7d05ab6d0c4 100644
--- a/toolkit/components/autocomplete/nsAutoCompleteSimpleResult.cpp
+++ b/toolkit/components/autocomplete/nsAutoCompleteSimpleResult.cpp
@@ -4,9 +4,9 @@
 
 #include "nsAutoCompleteSimpleResult.h"
 
-NS_IMPL_ISUPPORTS2(nsAutoCompleteSimpleResult,
-                   nsIAutoCompleteResult,
-                   nsIAutoCompleteSimpleResult)
+NS_IMPL_ISUPPORTS(nsAutoCompleteSimpleResult,
+                  nsIAutoCompleteResult,
+                  nsIAutoCompleteSimpleResult)
 
 nsAutoCompleteSimpleResult::nsAutoCompleteSimpleResult() :
   mDefaultIndex(-1),
diff --git a/toolkit/components/commandlines/nsCommandLine.cpp b/toolkit/components/commandlines/nsCommandLine.cpp
index 3b13d8b3da74af817f9e487b49f3ebc21d3581f2..1a7649da1b5361ba73f30ff684a1f43f88fb5752 100644
--- a/toolkit/components/commandlines/nsCommandLine.cpp
+++ b/toolkit/components/commandlines/nsCommandLine.cpp
@@ -83,9 +83,9 @@ nsCommandLine::nsCommandLine() :
 
 
 NS_IMPL_CLASSINFO(nsCommandLine, nullptr, 0, NS_COMMANDLINE_CID)
-NS_IMPL_ISUPPORTS2_CI(nsCommandLine,
-                      nsICommandLine,
-                      nsICommandLineRunner)
+NS_IMPL_ISUPPORTS_CI(nsCommandLine,
+                     nsICommandLine,
+                     nsICommandLineRunner)
 
 NS_IMETHODIMP
 nsCommandLine::GetLength(int32_t *aResult)
diff --git a/toolkit/components/ctypes/ctypes.cpp b/toolkit/components/ctypes/ctypes.cpp
index c5cfcfeb0a933d8d7f66ed27f59c61f4f5cb2f55..58db14353869b03056cb4dc0b202b7c1a0c6b788 100644
--- a/toolkit/components/ctypes/ctypes.cpp
+++ b/toolkit/components/ctypes/ctypes.cpp
@@ -48,7 +48,7 @@ static JSCTypesCallbacks sCallbacks = {
 
 NS_GENERIC_FACTORY_CONSTRUCTOR(Module)
 
-NS_IMPL_ISUPPORTS1(Module, nsIXPCScriptable)
+NS_IMPL_ISUPPORTS(Module, nsIXPCScriptable)
 
 Module::Module()
 {
diff --git a/toolkit/components/diskspacewatcher/DiskSpaceWatcher.cpp b/toolkit/components/diskspacewatcher/DiskSpaceWatcher.cpp
index cde909c97523c3d7eaf8792e60d33a997d026ea7..6f0a8a7066ccd6373192ad08d9ff707bf98a0878 100644
--- a/toolkit/components/diskspacewatcher/DiskSpaceWatcher.cpp
+++ b/toolkit/components/diskspacewatcher/DiskSpaceWatcher.cpp
@@ -18,7 +18,7 @@ using namespace mozilla;
 
 StaticRefPtr<DiskSpaceWatcher> gDiskSpaceWatcher;
 
-NS_IMPL_ISUPPORTS2(DiskSpaceWatcher, nsIDiskSpaceWatcher, nsIObserver)
+NS_IMPL_ISUPPORTS(DiskSpaceWatcher, nsIDiskSpaceWatcher, nsIObserver)
 
 uint64_t DiskSpaceWatcher::sFreeSpace = 0;
 bool DiskSpaceWatcher::sIsDiskFull = false;
diff --git a/toolkit/components/downloads/ApplicationReputation.cpp b/toolkit/components/downloads/ApplicationReputation.cpp
index b5ba37385815dd035e762d037a00a4a67d16c669..339ed0f21463caddac4f93558f0d7b41e1736e24 100644
--- a/toolkit/components/downloads/ApplicationReputation.cpp
+++ b/toolkit/components/downloads/ApplicationReputation.cpp
@@ -219,8 +219,8 @@ private:
   nsresult LookupSpecInternal(const nsACString& aSpec);
 };
 
-NS_IMPL_ISUPPORTS1(PendingDBLookup,
-                   nsIUrlClassifierCallback)
+NS_IMPL_ISUPPORTS(PendingDBLookup,
+                  nsIUrlClassifierCallback)
 
 PendingDBLookup::PendingDBLookup(PendingLookup* aPendingLookup) :
   mAllowlistOnly(false),
@@ -318,9 +318,9 @@ PendingDBLookup::HandleEvent(const nsACString& tables)
   return mPendingLookup->LookupNext();
 }
 
-NS_IMPL_ISUPPORTS2(PendingLookup,
-                   nsIStreamListener,
-                   nsIRequestObserver)
+NS_IMPL_ISUPPORTS(PendingLookup,
+                  nsIStreamListener,
+                  nsIRequestObserver)
 
 PendingLookup::PendingLookup(nsIApplicationReputationQuery* aQuery,
                              nsIApplicationReputationCallback* aCallback) :
@@ -879,8 +879,8 @@ PendingLookup::OnStopRequestInternal(nsIRequest *aRequest,
   return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS1(ApplicationReputationService,
-                   nsIApplicationReputationService)
+NS_IMPL_ISUPPORTS(ApplicationReputationService,
+                  nsIApplicationReputationService)
 
 ApplicationReputationService*
   ApplicationReputationService::gApplicationReputationService = nullptr;
diff --git a/toolkit/components/downloads/SQLFunctions.cpp b/toolkit/components/downloads/SQLFunctions.cpp
index d71bb28e4df1dff40cd9764aba83195695ae7949..0ee3b393a6fcb6e8c77e2c18c34ede7e381fbff9 100644
--- a/toolkit/components/downloads/SQLFunctions.cpp
+++ b/toolkit/components/downloads/SQLFunctions.cpp
@@ -40,7 +40,7 @@ GenerateGUIDFunction::create(mozIStorageConnection *aDBConn)
   return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS1(
+NS_IMPL_ISUPPORTS(
     GenerateGUIDFunction,
     mozIStorageFunction
 )
diff --git a/toolkit/components/downloads/nsDownloadManager.cpp b/toolkit/components/downloads/nsDownloadManager.cpp
index 590271757ae6d74b5b55a64001c4d4aad85909e7..9ac28e962697c8924254bf47482b8a80fa0bad77 100644
--- a/toolkit/components/downloads/nsDownloadManager.cpp
+++ b/toolkit/components/downloads/nsDownloadManager.cpp
@@ -86,7 +86,7 @@ static const int64_t gUpdateInterval = 400 * PR_USEC_PER_MSEC;
 ////////////////////////////////////////////////////////////////////////////////
 //// nsDownloadManager
 
-NS_IMPL_ISUPPORTS4(
+NS_IMPL_ISUPPORTS(
   nsDownloadManager
 , nsIDownloadManager
 , nsINavHistoryObserver
@@ -2592,7 +2592,7 @@ nsDownloadManager::ConfirmCancelDownloads(int32_t aCount,
 //// nsDownload
 
 NS_IMPL_CLASSINFO(nsDownload, nullptr, 0, NS_DOWNLOAD_CID)
-NS_IMPL_ISUPPORTS4_CI(
+NS_IMPL_ISUPPORTS_CI(
     nsDownload
   , nsIDownload
   , nsITransfer
diff --git a/toolkit/components/downloads/nsDownloadProxy.h b/toolkit/components/downloads/nsDownloadProxy.h
index 8821638bb35fb212a43a6a67fececaaa774e4eeb..30ff523f5c6f3b46e1fff9a6255b4e22e340824a 100644
--- a/toolkit/components/downloads/nsDownloadProxy.h
+++ b/toolkit/components/downloads/nsDownloadProxy.h
@@ -164,7 +164,7 @@ private:
   nsCOMPtr<nsIDownload> mInner;
 };
 
-NS_IMPL_ISUPPORTS3(nsDownloadProxy, nsITransfer,
-                   nsIWebProgressListener, nsIWebProgressListener2)
+NS_IMPL_ISUPPORTS(nsDownloadProxy, nsITransfer,
+                  nsIWebProgressListener, nsIWebProgressListener2)
 
 #endif
diff --git a/toolkit/components/filepicker/nsFileView.cpp b/toolkit/components/filepicker/nsFileView.cpp
index 1eb1916fd11152c46776367c04a99ffd015f8c39..23e934aa99e4fa6caaf10a8aadbf886f0afd0df3 100644
--- a/toolkit/components/filepicker/nsFileView.cpp
+++ b/toolkit/components/filepicker/nsFileView.cpp
@@ -49,7 +49,7 @@ public:
   uint16_t mSearchResult;
 };
 
-NS_IMPL_ISUPPORTS1(nsFileResult, nsIAutoCompleteResult)
+NS_IMPL_ISUPPORTS(nsFileResult, nsIAutoCompleteResult)
 
 nsFileResult::nsFileResult(const nsAString& aSearchString,
                            const nsAString& aSearchParam):
@@ -190,7 +190,7 @@ public:
   NS_DECL_NSIAUTOCOMPLETESEARCH
 };
 
-NS_IMPL_ISUPPORTS1(nsFileComplete, nsIAutoCompleteSearch)
+NS_IMPL_ISUPPORTS(nsFileComplete, nsIAutoCompleteSearch)
 
 NS_IMETHODIMP
 nsFileComplete::StartSearch(const nsAString& aSearchString,
@@ -305,7 +305,7 @@ nsFileView::Init()
 
 // nsISupports implementation
 
-NS_IMPL_ISUPPORTS2(nsFileView, nsITreeView, nsIFileView)
+NS_IMPL_ISUPPORTS(nsFileView, nsITreeView, nsIFileView)
 
 // nsIFileView implementation
 
diff --git a/toolkit/components/finalizationwitness/FinalizationWitnessService.cpp b/toolkit/components/finalizationwitness/FinalizationWitnessService.cpp
index 33bef494e361a92d56182b6254ffbc5332e5e26f..225364b3edee68d9dfb107317c8ec034a5a13b80 100644
--- a/toolkit/components/finalizationwitness/FinalizationWitnessService.cpp
+++ b/toolkit/components/finalizationwitness/FinalizationWitnessService.cpp
@@ -171,7 +171,7 @@ static const JSFunctionSpec sWitnessClassFunctions[] = {
 
 }
 
-NS_IMPL_ISUPPORTS1(FinalizationWitnessService, nsIFinalizationWitnessService)
+NS_IMPL_ISUPPORTS(FinalizationWitnessService, nsIFinalizationWitnessService)
 
 /**
  * Create a new Finalization Witness.
diff --git a/toolkit/components/find/nsFindService.cpp b/toolkit/components/find/nsFindService.cpp
index 2fa0c8c90ee48ab1e1c6490df47749c01f11a02a..36b5faf9dfba274e8a680456a1e706ae5862d79a 100644
--- a/toolkit/components/find/nsFindService.cpp
+++ b/toolkit/components/find/nsFindService.cpp
@@ -26,7 +26,7 @@ nsFindService::~nsFindService()
 {
 }
 
-NS_IMPL_ISUPPORTS1(nsFindService, nsIFindService)
+NS_IMPL_ISUPPORTS(nsFindService, nsIFindService)
 
 /* attribute AString searchString; */
 NS_IMETHODIMP nsFindService::GetSearchString(nsAString & aSearchString)
diff --git a/toolkit/components/intl/nsCharsetMenu.cpp b/toolkit/components/intl/nsCharsetMenu.cpp
index a666380dac91fe06edaa46830a67fab67c4dd258..647307d95ee9fd585a11adee4a2fd5f100c227ee 100644
--- a/toolkit/components/intl/nsCharsetMenu.cpp
+++ b/toolkit/components/intl/nsCharsetMenu.cpp
@@ -366,7 +366,7 @@ private:
   nsCharsetMenu* mCharsetMenu;
 };
 
-NS_IMPL_ISUPPORTS1(nsCharsetMenuObserver, nsIObserver)
+NS_IMPL_ISUPPORTS(nsCharsetMenuObserver, nsIObserver)
 
 NS_IMETHODIMP nsCharsetMenuObserver::Observe(nsISupports *aSubject, const char *aTopic, const char16_t *someData)
 {
diff --git a/toolkit/components/jsdownloads/src/DownloadPlatform.cpp b/toolkit/components/jsdownloads/src/DownloadPlatform.cpp
index c1807e13a8f72e96d9af106cf9669fe4c213b4c7..5ce18184b02ce419be81d65df1f28da86a15d447 100644
--- a/toolkit/components/jsdownloads/src/DownloadPlatform.cpp
+++ b/toolkit/components/jsdownloads/src/DownloadPlatform.cpp
@@ -33,7 +33,7 @@ using namespace mozilla;
 
 DownloadPlatform *DownloadPlatform::gDownloadPlatformService = nullptr;
 
-NS_IMPL_ISUPPORTS1(DownloadPlatform, mozIDownloadPlatform);
+NS_IMPL_ISUPPORTS(DownloadPlatform, mozIDownloadPlatform);
 
 DownloadPlatform* DownloadPlatform::GetDownloadPlatform()
 {
diff --git a/toolkit/components/mediasniffer/nsMediaSniffer.cpp b/toolkit/components/mediasniffer/nsMediaSniffer.cpp
index 47e6780b1ebce21e47c4579ece620ef6495eef03..5ae9bdc13655b3d240f714589cdb0a25ba8a4dbf 100644
--- a/toolkit/components/mediasniffer/nsMediaSniffer.cpp
+++ b/toolkit/components/mediasniffer/nsMediaSniffer.cpp
@@ -27,7 +27,7 @@ static const uint32_t MAX_BYTES_SNIFFED = 512;
 // This is 320kbps * 144 / 32kHz + 1 padding byte + 4 bytes of capture pattern.
 static const uint32_t MAX_BYTES_SNIFFED_MP3 = 320 * 144 / 32 + 1 + 4;
 
-NS_IMPL_ISUPPORTS1(nsMediaSniffer, nsIContentSniffer)
+NS_IMPL_ISUPPORTS(nsMediaSniffer, nsIContentSniffer)
 
 nsMediaSniffer::nsMediaSnifferEntry nsMediaSniffer::sSnifferEntries[] = {
   // The string OggS, followed by the null byte.
diff --git a/toolkit/components/osfile/NativeOSFileInternals.cpp b/toolkit/components/osfile/NativeOSFileInternals.cpp
index ae6ba8106fab084946e587b79601d6e33be48478..aac2276c192bdfbcdc396bf41a65ccc27ed4cf4d 100644
--- a/toolkit/components/osfile/NativeOSFileInternals.cpp
+++ b/toolkit/components/osfile/NativeOSFileInternals.cpp
@@ -859,7 +859,7 @@ protected:
 
 // The OS.File service
 
-NS_IMPL_ISUPPORTS1(NativeOSFileInternalsService, nsINativeOSFileInternalsService);
+NS_IMPL_ISUPPORTS(NativeOSFileInternalsService, nsINativeOSFileInternalsService);
 
 NS_IMETHODIMP
 NativeOSFileInternalsService::Read(const nsAString& aPath,
diff --git a/toolkit/components/parentalcontrols/nsParentalControlsServiceWin.cpp b/toolkit/components/parentalcontrols/nsParentalControlsServiceWin.cpp
index 79241832fb72903aa1ddfd25f43a46d34222b2eb..c98156dc9fcdbfc504c74e71155f03ad7ad77684 100644
--- a/toolkit/components/parentalcontrols/nsParentalControlsServiceWin.cpp
+++ b/toolkit/components/parentalcontrols/nsParentalControlsServiceWin.cpp
@@ -17,7 +17,7 @@
 static const CLSID CLSID_WinParentalControls = {0xE77CC89B,0x7401,0x4C04,{0x8C,0xED,0x14,0x9D,0xB3,0x5A,0xDD,0x04}};
 static const IID IID_IWinParentalControls  = {0x28B4D88B,0xE072,0x49E6,{0x80,0x4D,0x26,0xED,0xBE,0x21,0xA7,0xB9}};
 
-NS_IMPL_ISUPPORTS1(nsParentalControlsServiceWin, nsIParentalControlsService)
+NS_IMPL_ISUPPORTS(nsParentalControlsServiceWin, nsIParentalControlsService)
 
 static HINSTANCE gAdvAPIDLLInst = nullptr;
 
diff --git a/toolkit/components/perf/PerfMeasurement.cpp b/toolkit/components/perf/PerfMeasurement.cpp
index 0c3b410566633c70ae80c8971dde8992ab49b81f..5f4a97991e3463fbba6795cf2017aee40a9aefc4 100644
--- a/toolkit/components/perf/PerfMeasurement.cpp
+++ b/toolkit/components/perf/PerfMeasurement.cpp
@@ -23,7 +23,7 @@ namespace jsperf {
 
 NS_GENERIC_FACTORY_CONSTRUCTOR(Module)
 
-NS_IMPL_ISUPPORTS1(Module, nsIXPCScriptable)
+NS_IMPL_ISUPPORTS(Module, nsIXPCScriptable)
 
 Module::Module()
 {
diff --git a/toolkit/components/places/AsyncFaviconHelpers.cpp b/toolkit/components/places/AsyncFaviconHelpers.cpp
index 2abce3e3f365f407d5234ce1b18a596ed1c0bf64..6ca7c513edf52a88fffef4da97b7ff93a507dc17 100644
--- a/toolkit/components/places/AsyncFaviconHelpers.cpp
+++ b/toolkit/components/places/AsyncFaviconHelpers.cpp
@@ -500,7 +500,7 @@ AsyncFetchAndSetIconForPage::Run()
 ////////////////////////////////////////////////////////////////////////////////
 //// AsyncFetchAndSetIconFromNetwork
 
-NS_IMPL_ISUPPORTS_INHERITED3(
+NS_IMPL_ISUPPORTS_INHERITED(
   AsyncFetchAndSetIconFromNetwork
 , nsRunnable
 , nsIStreamListener
diff --git a/toolkit/components/places/Database.cpp b/toolkit/components/places/Database.cpp
index dd300c3430684b6d6fa4044c5f7f243d18a3a7fa..a960bfc7b93064046a91fd844317001b8716ccaf 100644
--- a/toolkit/components/places/Database.cpp
+++ b/toolkit/components/places/Database.cpp
@@ -245,7 +245,7 @@ ConnectionCloseCallback::ConnectionCloseCallback()
   MOZ_ASSERT(NS_IsMainThread());
 }
 
-NS_IMPL_ISUPPORTS1(
+NS_IMPL_ISUPPORTS(
   ConnectionCloseCallback
 , mozIStorageCompletionCallback
 )
@@ -328,7 +328,7 @@ CreateRoot(nsCOMPtr<mozIStorageConnection>& aDBConn,
 
 PLACES_FACTORY_SINGLETON_IMPLEMENTATION(Database, gDatabase)
 
-NS_IMPL_ISUPPORTS2(Database
+NS_IMPL_ISUPPORTS(Database
 , nsIObserver
 , nsISupportsWeakReference
 )
diff --git a/toolkit/components/places/Helpers.cpp b/toolkit/components/places/Helpers.cpp
index 2488fe6fc55d77178a30022b999bf37278eef12d..1f20b986afbb02fb98e3b117f06e9ad85e34ed01 100644
--- a/toolkit/components/places/Helpers.cpp
+++ b/toolkit/components/places/Helpers.cpp
@@ -20,7 +20,7 @@ namespace places {
 ////////////////////////////////////////////////////////////////////////////////
 //// AsyncStatementCallback
 
-NS_IMPL_ISUPPORTS1(
+NS_IMPL_ISUPPORTS(
   AsyncStatementCallback
 , mozIStorageStatementCallback
 )
@@ -370,7 +370,7 @@ PlacesEvent::Notify()
   }
 }
 
-NS_IMPL_ISUPPORTS1(
+NS_IMPL_ISUPPORTS(
   PlacesEvent
 , nsIRunnable
 )
diff --git a/toolkit/components/places/History.cpp b/toolkit/components/places/History.cpp
index 3e9d9bf1022ab1793615033e5ccf5aa4ffe17271..d271cbcc4b2482defde426bfc49540266a080e8b 100644
--- a/toolkit/components/places/History.cpp
+++ b/toolkit/components/places/History.cpp
@@ -1529,7 +1529,7 @@ private:
    */
   nsRefPtr<History> mHistory;
 };
-NS_IMPL_ISUPPORTS1(
+NS_IMPL_ISUPPORTS(
   SetDownloadAnnotations,
   mozIVisitInfoCallback
 )
@@ -2930,7 +2930,7 @@ History::Observe(nsISupports* aSubject, const char* aTopic,
 ////////////////////////////////////////////////////////////////////////////////
 //// nsISupports
 
-NS_IMPL_ISUPPORTS5(
+NS_IMPL_ISUPPORTS(
   History
 , IHistory
 , nsIDownloadHistory
diff --git a/toolkit/components/places/PlaceInfo.cpp b/toolkit/components/places/PlaceInfo.cpp
index f31d874b671d95a66772bf2291128dd47306dd58..29ac5bf5dbdf24fb938c2c577a03e6731dc69460 100644
--- a/toolkit/components/places/PlaceInfo.cpp
+++ b/toolkit/components/places/PlaceInfo.cpp
@@ -130,7 +130,7 @@ PlaceInfo::GetVisits(JSContext* aContext,
 ////////////////////////////////////////////////////////////////////////////////
 //// nsISupports
 
-NS_IMPL_ISUPPORTS1(
+NS_IMPL_ISUPPORTS(
   PlaceInfo
 , mozIPlaceInfo
 )
diff --git a/toolkit/components/places/SQLFunctions.cpp b/toolkit/components/places/SQLFunctions.cpp
index 62ea36c130f735845118dc7b544385c052e7cdeb..5e06852a8a3b329b956c20510d3f761d803a3e47 100644
--- a/toolkit/components/places/SQLFunctions.cpp
+++ b/toolkit/components/places/SQLFunctions.cpp
@@ -315,7 +315,7 @@ namespace places {
     };
   }
 
-  NS_IMPL_ISUPPORTS1(
+  NS_IMPL_ISUPPORTS(
     MatchAutoCompleteFunction,
     mozIStorageFunction
   )
@@ -431,7 +431,7 @@ namespace places {
     return NS_OK;
   }
 
-  NS_IMPL_ISUPPORTS1(
+  NS_IMPL_ISUPPORTS(
     CalculateFrecencyFunction,
     mozIStorageFunction
   )
@@ -624,7 +624,7 @@ namespace places {
     return NS_OK;
   }
 
-  NS_IMPL_ISUPPORTS1(
+  NS_IMPL_ISUPPORTS(
     GenerateGUIDFunction,
     mozIStorageFunction
   )
@@ -663,7 +663,7 @@ namespace places {
     return NS_OK;
   }
 
-  NS_IMPL_ISUPPORTS1(
+  NS_IMPL_ISUPPORTS(
     GetUnreversedHostFunction,
     mozIStorageFunction
   )
@@ -717,7 +717,7 @@ namespace places {
     return NS_OK;
   }
 
-  NS_IMPL_ISUPPORTS1(
+  NS_IMPL_ISUPPORTS(
     FixupURLFunction,
     mozIStorageFunction
   )
@@ -766,7 +766,7 @@ namespace places {
     return NS_OK;
   }
 
-  NS_IMPL_ISUPPORTS1(
+  NS_IMPL_ISUPPORTS(
     FrecencyNotificationFunction,
     mozIStorageFunction
   )
diff --git a/toolkit/components/places/VisitInfo.cpp b/toolkit/components/places/VisitInfo.cpp
index 592abadfe8fd14344f67a20a6c9d355f684bae31..2758b250166e5fb35479ddeacfd7f6c190c1b15d 100644
--- a/toolkit/components/places/VisitInfo.cpp
+++ b/toolkit/components/places/VisitInfo.cpp
@@ -56,7 +56,7 @@ VisitInfo::GetReferrerURI(nsIURI** _referrer)
 ////////////////////////////////////////////////////////////////////////////////
 //// nsISupports
 
-NS_IMPL_ISUPPORTS1(
+NS_IMPL_ISUPPORTS(
   VisitInfo
 , mozIVisitInfo
 )
diff --git a/toolkit/components/places/nsAnnoProtocolHandler.cpp b/toolkit/components/places/nsAnnoProtocolHandler.cpp
index ab670d86bc85dc1b58c921ca38b757664150940e..ddd2b01ff50843ece136a0e4d052985f743f44c3 100644
--- a/toolkit/components/places/nsAnnoProtocolHandler.cpp
+++ b/toolkit/components/places/nsAnnoProtocolHandler.cpp
@@ -185,7 +185,7 @@ private:
   bool mReturnDefaultIcon;
 };
 
-NS_IMPL_ISUPPORTS_INHERITED1(
+NS_IMPL_ISUPPORTS_INHERITED(
   faviconAsyncLoader,
   AsyncStatementCallback,
   nsIRequestObserver
@@ -196,7 +196,7 @@ NS_IMPL_ISUPPORTS_INHERITED1(
 ////////////////////////////////////////////////////////////////////////////////
 //// nsAnnoProtocolHandler
 
-NS_IMPL_ISUPPORTS1(nsAnnoProtocolHandler, nsIProtocolHandler)
+NS_IMPL_ISUPPORTS(nsAnnoProtocolHandler, nsIProtocolHandler)
 
 // nsAnnoProtocolHandler::GetScheme
 
diff --git a/toolkit/components/places/nsAnnotationService.cpp b/toolkit/components/places/nsAnnotationService.cpp
index de6d9006fd8e95f366510cbcef524fb564d739f8..6c7edf8e443890cac18671fa7b5b0ae923cd8830 100644
--- a/toolkit/components/places/nsAnnotationService.cpp
+++ b/toolkit/components/places/nsAnnotationService.cpp
@@ -101,14 +101,14 @@ AnnotatedResult::GetAnnotationValue(nsIVariant** _annotationValue)
   return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS1(AnnotatedResult, mozIAnnotatedResult)
+NS_IMPL_ISUPPORTS(AnnotatedResult, mozIAnnotatedResult)
 
 } // namespace places
 } // namespace mozilla
 
 PLACES_FACTORY_SINGLETON_IMPLEMENTATION(nsAnnotationService, gAnnotationService)
 
-NS_IMPL_ISUPPORTS3(nsAnnotationService
+NS_IMPL_ISUPPORTS(nsAnnotationService
 , nsIAnnotationService
 , nsIObserver
 , nsISupportsWeakReference
diff --git a/toolkit/components/places/nsFaviconService.cpp b/toolkit/components/places/nsFaviconService.cpp
index 38763a286c43657a3ff83b818db6756b41f32212..2306c96375cb0596aaa210a1402d360015cc76ab 100644
--- a/toolkit/components/places/nsFaviconService.cpp
+++ b/toolkit/components/places/nsFaviconService.cpp
@@ -67,7 +67,7 @@ public:
 PLACES_FACTORY_SINGLETON_IMPLEMENTATION(nsFaviconService, gFaviconService)
 
 NS_IMPL_CLASSINFO(nsFaviconService, nullptr, 0, NS_FAVICONSERVICE_CID)
-NS_IMPL_ISUPPORTS3_CI(
+NS_IMPL_ISUPPORTS_CI(
   nsFaviconService
 , nsIFaviconService
 , mozIAsyncFavicons
diff --git a/toolkit/components/places/nsNavBookmarks.cpp b/toolkit/components/places/nsNavBookmarks.cpp
index 7d4f2191d4b046b98bc244bbe0a03d0a24f72112..f146efd0ceb79b8138f9cb64b91869b36a2a9c1e 100644
--- a/toolkit/components/places/nsNavBookmarks.cpp
+++ b/toolkit/components/places/nsNavBookmarks.cpp
@@ -228,7 +228,7 @@ nsNavBookmarks::~nsNavBookmarks()
 }
 
 
-NS_IMPL_ISUPPORTS5(nsNavBookmarks
+NS_IMPL_ISUPPORTS(nsNavBookmarks
 , nsINavBookmarksService
 , nsINavHistoryObserver
 , nsIAnnotationObserver
@@ -1006,7 +1006,7 @@ nsNavBookmarks::GetIdForItemAt(int64_t aFolder,
   return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS1(nsNavBookmarks::RemoveFolderTransaction, nsITransaction)
+NS_IMPL_ISUPPORTS(nsNavBookmarks::RemoveFolderTransaction, nsITransaction)
 
 NS_IMETHODIMP
 nsNavBookmarks::GetRemoveFolderTransaction(int64_t aFolderId, nsITransaction** aResult)
diff --git a/toolkit/components/places/nsNavHistory.cpp b/toolkit/components/places/nsNavHistory.cpp
index 54195f0b54b2c00c752ee7b8b957ac91e2dcc53f..3ed773de8da444662f7d9252b21ee1f12846d532 100644
--- a/toolkit/components/places/nsNavHistory.cpp
+++ b/toolkit/components/places/nsNavHistory.cpp
@@ -177,11 +177,9 @@ NS_INTERFACE_MAP_BEGIN(nsNavHistory)
 NS_INTERFACE_MAP_END
 
 // We don't care about flattening everything
-NS_IMPL_CI_INTERFACE_GETTER2(
-  nsNavHistory
-, nsINavHistoryService
-, nsIBrowserHistory
-)
+NS_IMPL_CI_INTERFACE_GETTER(nsNavHistory,
+                            nsINavHistoryService,
+                            nsIBrowserHistory)
 
 namespace {
 
diff --git a/toolkit/components/places/nsNavHistoryQuery.cpp b/toolkit/components/places/nsNavHistoryQuery.cpp
index c0d332558d33a5b2996968a291933c7e09aaa11f..027d56d486d3c91aef3e12d8ae8c501b4ef8c113 100644
--- a/toolkit/components/places/nsNavHistoryQuery.cpp
+++ b/toolkit/components/places/nsNavHistoryQuery.cpp
@@ -886,7 +886,7 @@ ParseQueryBooleanString(const nsCString& aString, bool* aValue)
 
 // nsINavHistoryQuery **********************************************************
 
-NS_IMPL_ISUPPORTS2(nsNavHistoryQuery, nsNavHistoryQuery, nsINavHistoryQuery)
+NS_IMPL_ISUPPORTS(nsNavHistoryQuery, nsNavHistoryQuery, nsINavHistoryQuery)
 
 // nsINavHistoryQuery::nsNavHistoryQuery
 //
@@ -1350,7 +1350,7 @@ NS_IMETHODIMP nsNavHistoryQuery::Clone(nsINavHistoryQuery** _retval)
 
 
 // nsNavHistoryQueryOptions
-NS_IMPL_ISUPPORTS2(nsNavHistoryQueryOptions, nsNavHistoryQueryOptions, nsINavHistoryQueryOptions)
+NS_IMPL_ISUPPORTS(nsNavHistoryQueryOptions, nsNavHistoryQueryOptions, nsINavHistoryQueryOptions)
 
 // sortingMode
 NS_IMETHODIMP
diff --git a/toolkit/components/places/nsNavHistoryResult.cpp b/toolkit/components/places/nsNavHistoryResult.cpp
index 51591d33d916df5262f38f253213f5786aca4acf..ff4d72be84fa202c533ec7ce6e315310eb75c094 100644
--- a/toolkit/components/places/nsNavHistoryResult.cpp
+++ b/toolkit/components/places/nsNavHistoryResult.cpp
@@ -1761,9 +1761,9 @@ nsNavHistoryContainerResultNode::GetChildrenReadOnly(bool *aChildrenReadOnly)
  * a message without doing a requery.  For complex changes or complex queries,
  * we give up and requery.
  */
-NS_IMPL_ISUPPORTS_INHERITED1(nsNavHistoryQueryResultNode,
-                             nsNavHistoryContainerResultNode,
-                             nsINavHistoryQueryResultNode)
+NS_IMPL_ISUPPORTS_INHERITED(nsNavHistoryQueryResultNode,
+                            nsNavHistoryContainerResultNode,
+                            nsINavHistoryQueryResultNode)
 
 nsNavHistoryQueryResultNode::nsNavHistoryQueryResultNode(
     const nsACString& aTitle, const nsACString& aIconURI,
@@ -2998,9 +2998,9 @@ nsNavHistoryQueryResultNode::OnItemMoved(int64_t aFolder,
  * an up-to-date list for the entire bookmark menu structure in every place
  * it is used.
  */
-NS_IMPL_ISUPPORTS_INHERITED1(nsNavHistoryFolderResultNode,
-                             nsNavHistoryContainerResultNode,
-                             nsINavHistoryQueryResultNode)
+NS_IMPL_ISUPPORTS_INHERITED(nsNavHistoryFolderResultNode,
+                            nsNavHistoryContainerResultNode,
+                            nsINavHistoryQueryResultNode)
 
 nsNavHistoryFolderResultNode::nsNavHistoryFolderResultNode(
     const nsACString& aTitle, nsNavHistoryQueryOptions* aOptions,
diff --git a/toolkit/components/places/tests/cpp/mock_Link.h b/toolkit/components/places/tests/cpp/mock_Link.h
index 88dc4fac39f61408f9974bf7e618f64b04eb17ba..d36e81c4f105e6211cbc18da808d4f68cdc70515 100644
--- a/toolkit/components/places/tests/cpp/mock_Link.h
+++ b/toolkit/components/places/tests/cpp/mock_Link.h
@@ -61,7 +61,7 @@ private:
   nsRefPtr<Link> mDeathGrip;
 };
 
-NS_IMPL_ISUPPORTS1(
+NS_IMPL_ISUPPORTS(
   mock_Link,
   mozilla::dom::Link
 )
diff --git a/toolkit/components/places/tests/cpp/places_test_harness.h b/toolkit/components/places/tests/cpp/places_test_harness.h
index 1d8ccf69608e28dfd378c333be08f85d693f701b..b7c49be913d05b800f81afde6d4c6338336ec6d8 100644
--- a/toolkit/components/places/tests/cpp/places_test_harness.h
+++ b/toolkit/components/places/tests/cpp/places_test_harness.h
@@ -139,7 +139,7 @@ private:
   bool mTopicReceived;
   PRIntervalTime mStartTime;
 };
-NS_IMPL_ISUPPORTS1(
+NS_IMPL_ISUPPORTS(
   WaitForTopicSpinner,
   nsIObserver
 )
@@ -161,8 +161,8 @@ protected:
   volatile bool mCompleted;
 };
 
-NS_IMPL_ISUPPORTS1(AsyncStatementSpinner,
-                   mozIStorageStatementCallback)
+NS_IMPL_ISUPPORTS(AsyncStatementSpinner,
+                  mozIStorageStatementCallback)
 
 AsyncStatementSpinner::AsyncStatementSpinner()
 : completionReason(0)
@@ -402,4 +402,4 @@ public:
   }
 };
 
-NS_IMPL_ISUPPORTS1(WaitForConnectionClosed, nsIObserver)
+NS_IMPL_ISUPPORTS(WaitForConnectionClosed, nsIObserver)
diff --git a/toolkit/components/places/tests/cpp/test_IHistory.cpp b/toolkit/components/places/tests/cpp/test_IHistory.cpp
index 9413e52139644f34fb4a8ce794ff4b440e9dec42..24153ce00d64d976c0b00b9ceca33fc8b6a209e1 100644
--- a/toolkit/components/places/tests/cpp/test_IHistory.cpp
+++ b/toolkit/components/places/tests/cpp/test_IHistory.cpp
@@ -89,7 +89,7 @@ private:
   int mVisits;
   int mExpectedVisits;
 };
-NS_IMPL_ISUPPORTS1(
+NS_IMPL_ISUPPORTS(
   VisitURIObserver,
   nsIObserver
 )
@@ -364,7 +364,7 @@ namespace test_observer_topic_dispatched_helpers {
     const bool mExpectVisit;
     bool& mNotified;
   };
-  NS_IMPL_ISUPPORTS1(
+  NS_IMPL_ISUPPORTS(
     statusObserver,
     nsIObserver
   )
diff --git a/toolkit/components/reflect/reflect.cpp b/toolkit/components/reflect/reflect.cpp
index a93994940c6875ca7d13aec0eaa35488a6321095..f2dd8bcbc7fc59a816d48c5a5f1d459f2838b661 100644
--- a/toolkit/components/reflect/reflect.cpp
+++ b/toolkit/components/reflect/reflect.cpp
@@ -21,7 +21,7 @@ namespace reflect {
 
 NS_GENERIC_FACTORY_CONSTRUCTOR(Module)
 
-NS_IMPL_ISUPPORTS1(Module, nsIXPCScriptable)
+NS_IMPL_ISUPPORTS(Module, nsIXPCScriptable)
 
 Module::Module()
 {
diff --git a/toolkit/components/remote/nsGTKRemoteService.cpp b/toolkit/components/remote/nsGTKRemoteService.cpp
index 4a0eea87e7d1a981387500f5b3f71684e6d1a16c..4edb7089d88377eda8eb037ea1e182ff43172bb2 100644
--- a/toolkit/components/remote/nsGTKRemoteService.cpp
+++ b/toolkit/components/remote/nsGTKRemoteService.cpp
@@ -25,9 +25,9 @@
 
 #include "nsGTKToolkit.h"
 
-NS_IMPL_ISUPPORTS2(nsGTKRemoteService,
-                   nsIRemoteService,
-                   nsIObserver)
+NS_IMPL_ISUPPORTS(nsGTKRemoteService,
+                  nsIRemoteService,
+                  nsIObserver)
 
 NS_IMETHODIMP
 nsGTKRemoteService::Startup(const char* aAppName, const char* aProfileName)
diff --git a/toolkit/components/remote/nsQtRemoteService.cpp b/toolkit/components/remote/nsQtRemoteService.cpp
index f5be5d0ae6844a4895619220ec27fab5784b9b5a..ecf4fc3dc1721a85e3e9a7cf3a9ccf2df3f397a8 100644
--- a/toolkit/components/remote/nsQtRemoteService.cpp
+++ b/toolkit/components/remote/nsQtRemoteService.cpp
@@ -54,9 +54,9 @@ MozQRemoteEventHandlerWidget::x11Event(XEvent *aEvt)
   return false;
 }
 
-NS_IMPL_ISUPPORTS2(nsQtRemoteService,
-                   nsIRemoteService,
-                   nsIObserver)
+NS_IMPL_ISUPPORTS(nsQtRemoteService,
+                  nsIRemoteService,
+                  nsIObserver)
 
 nsQtRemoteService::nsQtRemoteService():
 mServerWindow(0)
diff --git a/toolkit/components/satchel/nsFormFillController.cpp b/toolkit/components/satchel/nsFormFillController.cpp
index 4c6ac393a19a2a9fd537ec87a235955882c593aa..315fc68437f36f1649958cf25caaffdef08854a8 100644
--- a/toolkit/components/satchel/nsFormFillController.cpp
+++ b/toolkit/components/satchel/nsFormFillController.cpp
@@ -39,13 +39,13 @@
 
 using namespace mozilla::dom;
 
-NS_IMPL_ISUPPORTS6(nsFormFillController,
-                   nsIFormFillController,
-                   nsIAutoCompleteInput,
-                   nsIAutoCompleteSearch,
-                   nsIDOMEventListener,
-                   nsIFormAutoCompleteObserver,
-                   nsIMutationObserver)
+NS_IMPL_ISUPPORTS(nsFormFillController,
+                  nsIFormFillController,
+                  nsIAutoCompleteInput,
+                  nsIAutoCompleteSearch,
+                  nsIDOMEventListener,
+                  nsIFormAutoCompleteObserver,
+                  nsIMutationObserver)
 
 nsFormFillController::nsFormFillController() :
   mFocusedInput(nullptr),
diff --git a/toolkit/components/startup/nsAppStartup.cpp b/toolkit/components/startup/nsAppStartup.cpp
index b7c78e20273867a3e9f5f167c3c0012ea7baccee..e6ce9f176333eb460fca9bf112c7e263c680c189 100644
--- a/toolkit/components/startup/nsAppStartup.cpp
+++ b/toolkit/components/startup/nsAppStartup.cpp
@@ -217,12 +217,12 @@ nsAppStartup::Init()
 // nsAppStartup->nsISupports
 //
 
-NS_IMPL_ISUPPORTS5(nsAppStartup,
-                              nsIAppStartup,
-                              nsIWindowCreator,
-                              nsIWindowCreator2,
-                              nsIObserver,
-                              nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(nsAppStartup,
+                  nsIAppStartup,
+                  nsIWindowCreator,
+                  nsIWindowCreator2,
+                  nsIObserver,
+                  nsISupportsWeakReference)
 
 
 //
diff --git a/toolkit/components/startup/nsUserInfoMac.mm b/toolkit/components/startup/nsUserInfoMac.mm
index ed3e3a7981a5e9a8a8092a9c2ea9dde416204cbe..1895cf177353c23d7c4410e5482d066d8bb31505 100644
--- a/toolkit/components/startup/nsUserInfoMac.mm
+++ b/toolkit/components/startup/nsUserInfoMac.mm
@@ -11,7 +11,7 @@
 #import <Cocoa/Cocoa.h>
 #import <AddressBook/AddressBook.h>
 
-NS_IMPL_ISUPPORTS1(nsUserInfo, nsIUserInfo)
+NS_IMPL_ISUPPORTS(nsUserInfo, nsIUserInfo)
 
 nsUserInfo::nsUserInfo() {}
 
diff --git a/toolkit/components/startup/nsUserInfoUnix.cpp b/toolkit/components/startup/nsUserInfoUnix.cpp
index ab3ee1ea6a4552b1c5e5d5bd2ea941c9ce0d76c9..41a9cb5c4c5dbbec135886966f4b3c4a4687b7b5 100644
--- a/toolkit/components/startup/nsUserInfoUnix.cpp
+++ b/toolkit/components/startup/nsUserInfoUnix.cpp
@@ -31,7 +31,7 @@ nsUserInfo::~nsUserInfo()
 {
 }
 
-NS_IMPL_ISUPPORTS1(nsUserInfo,nsIUserInfo)
+NS_IMPL_ISUPPORTS(nsUserInfo,nsIUserInfo)
 
 NS_IMETHODIMP
 nsUserInfo::GetFullname(char16_t **aFullname)
diff --git a/toolkit/components/startup/nsUserInfoWin.cpp b/toolkit/components/startup/nsUserInfoWin.cpp
index e6429f793d485067a73c639d76cf78d15a9b9989..b27a2c483b1c8a9cda74e3295724b53284d9e8c4 100644
--- a/toolkit/components/startup/nsUserInfoWin.cpp
+++ b/toolkit/components/startup/nsUserInfoWin.cpp
@@ -23,7 +23,7 @@ nsUserInfo::~nsUserInfo()
 {
 }
 
-NS_IMPL_ISUPPORTS1(nsUserInfo, nsIUserInfo)
+NS_IMPL_ISUPPORTS(nsUserInfo, nsIUserInfo)
 
 NS_IMETHODIMP
 nsUserInfo::GetUsername(char **aUsername)
diff --git a/toolkit/components/statusfilter/nsBrowserStatusFilter.cpp b/toolkit/components/statusfilter/nsBrowserStatusFilter.cpp
index ce6c1605614ada5c7951b3918cc96e64a27a0860..464fc2ffe593f3f2a6945c4a9ac861e2a920c574 100644
--- a/toolkit/components/statusfilter/nsBrowserStatusFilter.cpp
+++ b/toolkit/components/statusfilter/nsBrowserStatusFilter.cpp
@@ -41,11 +41,11 @@ nsBrowserStatusFilter::~nsBrowserStatusFilter()
 // nsBrowserStatusFilter::nsISupports
 //-----------------------------------------------------------------------------
 
-NS_IMPL_ISUPPORTS4(nsBrowserStatusFilter,
-                   nsIWebProgress,
-                   nsIWebProgressListener,
-                   nsIWebProgressListener2,
-                   nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(nsBrowserStatusFilter,
+                  nsIWebProgress,
+                  nsIWebProgressListener,
+                  nsIWebProgressListener2,
+                  nsISupportsWeakReference)
 
 //-----------------------------------------------------------------------------
 // nsBrowserStatusFilter::nsIWebProgress
diff --git a/toolkit/components/telemetry/Telemetry.cpp b/toolkit/components/telemetry/Telemetry.cpp
index 2c12a491afcab82d7e9f1ba8a2df5195229e1380..069e7859923c2ead201d7f53cc38710d8dd4ec03 100644
--- a/toolkit/components/telemetry/Telemetry.cpp
+++ b/toolkit/components/telemetry/Telemetry.cpp
@@ -2536,7 +2536,7 @@ TelemetryImpl::RecordThreadHangStats(Telemetry::ThreadHangStats& aStats)
   sTelemetry->mThreadHangStats.append(Move(aStats));
 }
 
-NS_IMPL_ISUPPORTS2(TelemetryImpl, nsITelemetry, nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(TelemetryImpl, nsITelemetry, nsIMemoryReporter)
 NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsITelemetry, TelemetryImpl::CreateTelemetryInstance)
 
 #define NS_TELEMETRY_CID \
diff --git a/toolkit/components/url-classifier/nsCheckSummedOutputStream.cpp b/toolkit/components/url-classifier/nsCheckSummedOutputStream.cpp
index b41fc3ce9803667d311b6b2a693e700fa6d393f8..68f9f1f6f4eb73ec13fad6ea0168f8bcedf1ec97 100644
--- a/toolkit/components/url-classifier/nsCheckSummedOutputStream.cpp
+++ b/toolkit/components/url-classifier/nsCheckSummedOutputStream.cpp
@@ -12,11 +12,11 @@
 ////////////////////////////////////////////////////////////////////////////////
 // nsCheckSummedOutputStream
 
-NS_IMPL_ISUPPORTS_INHERITED3(nsCheckSummedOutputStream,
-                             nsSafeFileOutputStream,
-                             nsISafeOutputStream,
-                             nsIOutputStream,
-                             nsIFileOutputStream)
+NS_IMPL_ISUPPORTS_INHERITED(nsCheckSummedOutputStream,
+                            nsSafeFileOutputStream,
+                            nsISafeOutputStream,
+                            nsIOutputStream,
+                            nsIFileOutputStream)
 
 NS_IMETHODIMP
 nsCheckSummedOutputStream::Init(nsIFile* file, int32_t ioFlags, int32_t perm,
diff --git a/toolkit/components/url-classifier/nsUrlClassifierDBService.cpp b/toolkit/components/url-classifier/nsUrlClassifierDBService.cpp
index 929ff4aa192354c439d156d2027d48b452de3028..50582345c0749b8b82997b7340f42db6fd62071f 100644
--- a/toolkit/components/url-classifier/nsUrlClassifierDBService.cpp
+++ b/toolkit/components/url-classifier/nsUrlClassifierDBService.cpp
@@ -189,9 +189,9 @@ private:
   nsTArray<PendingLookup> mPendingLookups;
 };
 
-NS_IMPL_ISUPPORTS2(nsUrlClassifierDBServiceWorker,
-                              nsIUrlClassifierDBServiceWorker,
-                              nsIUrlClassifierDBService)
+NS_IMPL_ISUPPORTS(nsUrlClassifierDBServiceWorker,
+                  nsIUrlClassifierDBServiceWorker,
+                  nsIUrlClassifierDBService)
 
 nsUrlClassifierDBServiceWorker::nsUrlClassifierDBServiceWorker()
   : mInStream(false)
@@ -788,9 +788,9 @@ private:
   nsCOMPtr<nsIUrlClassifierCallback> mCallback;
 };
 
-NS_IMPL_ISUPPORTS2(nsUrlClassifierLookupCallback,
-                              nsIUrlClassifierLookupCallback,
-                              nsIUrlClassifierHashCompleterCallback)
+NS_IMPL_ISUPPORTS(nsUrlClassifierLookupCallback,
+                  nsIUrlClassifierLookupCallback,
+                  nsIUrlClassifierHashCompleterCallback)
 
 nsUrlClassifierLookupCallback::~nsUrlClassifierLookupCallback()
 {
@@ -992,8 +992,8 @@ private:
   bool mCheckPhishing;
 };
 
-NS_IMPL_ISUPPORTS1(nsUrlClassifierClassifyCallback,
-                              nsIUrlClassifierCallback)
+NS_IMPL_ISUPPORTS(nsUrlClassifierClassifyCallback,
+                  nsIUrlClassifierCallback)
 
 NS_IMETHODIMP
 nsUrlClassifierClassifyCallback::HandleEvent(const nsACString& tables)
@@ -1029,10 +1029,10 @@ nsUrlClassifierClassifyCallback::HandleEvent(const nsACString& tables)
 // -------------------------------------------------------------------------
 // Proxy class implementation
 
-NS_IMPL_ISUPPORTS3(nsUrlClassifierDBService,
-                              nsIUrlClassifierDBService,
-                              nsIURIClassifier,
-                              nsIObserver)
+NS_IMPL_ISUPPORTS(nsUrlClassifierDBService,
+                  nsIUrlClassifierDBService,
+                  nsIURIClassifier,
+                  nsIObserver)
 
 /* static */ nsUrlClassifierDBService*
 nsUrlClassifierDBService::GetInstance(nsresult *result)
diff --git a/toolkit/components/url-classifier/nsUrlClassifierPrefixSet.cpp b/toolkit/components/url-classifier/nsUrlClassifierPrefixSet.cpp
index 9dcad2264937465981c492e31726752ddd3b7110..cd73879fb73be56cdb60cb9f474c1a4c245a5e41 100644
--- a/toolkit/components/url-classifier/nsUrlClassifierPrefixSet.cpp
+++ b/toolkit/components/url-classifier/nsUrlClassifierPrefixSet.cpp
@@ -35,7 +35,7 @@ static const PRLogModuleInfo *gUrlClassifierPrefixSetLog = nullptr;
 #define LOG_ENABLED() (false)
 #endif
 
-NS_IMPL_ISUPPORTS2(
+NS_IMPL_ISUPPORTS(
   nsUrlClassifierPrefixSet, nsIUrlClassifierPrefixSet, nsIMemoryReporter)
 
 nsUrlClassifierPrefixSet::nsUrlClassifierPrefixSet()
diff --git a/toolkit/components/url-classifier/nsUrlClassifierProxies.cpp b/toolkit/components/url-classifier/nsUrlClassifierProxies.cpp
index ee3d0af0c88d1a53d5be49994662aa789b7265a0..150d0b2fd5d4637f4ec9212d1a46c687f9c5f77b 100644
--- a/toolkit/components/url-classifier/nsUrlClassifierProxies.cpp
+++ b/toolkit/components/url-classifier/nsUrlClassifierProxies.cpp
@@ -18,8 +18,8 @@ DispatchToWorkerThread(nsIRunnable* r)
   return t->Dispatch(r, NS_DISPATCH_NORMAL);
 }
 
-NS_IMPL_ISUPPORTS1(UrlClassifierDBServiceWorkerProxy,
-                              nsIUrlClassifierDBServiceWorker)
+NS_IMPL_ISUPPORTS(UrlClassifierDBServiceWorkerProxy,
+                  nsIUrlClassifierDBServiceWorker)
 
 NS_IMETHODIMP
 UrlClassifierDBServiceWorkerProxy::Lookup(nsIPrincipal* aPrincipal,
@@ -181,8 +181,8 @@ UrlClassifierDBServiceWorkerProxy::CacheMissesRunnable::Run()
 }
 
 
-NS_IMPL_ISUPPORTS1(UrlClassifierLookupCallbackProxy,
-                              nsIUrlClassifierLookupCallback)
+NS_IMPL_ISUPPORTS(UrlClassifierLookupCallbackProxy,
+                  nsIUrlClassifierLookupCallback)
 
 NS_IMETHODIMP
 UrlClassifierLookupCallbackProxy::LookupComplete
@@ -199,8 +199,8 @@ UrlClassifierLookupCallbackProxy::LookupCompleteRunnable::Run()
   return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS1(UrlClassifierCallbackProxy,
-                              nsIUrlClassifierCallback)
+NS_IMPL_ISUPPORTS(UrlClassifierCallbackProxy,
+                  nsIUrlClassifierCallback)
 
 NS_IMETHODIMP
 UrlClassifierCallbackProxy::HandleEvent(const nsACString& aValue)
@@ -216,8 +216,8 @@ UrlClassifierCallbackProxy::HandleEventRunnable::Run()
   return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS1(UrlClassifierUpdateObserverProxy,
-                              nsIUrlClassifierUpdateObserver)
+NS_IMPL_ISUPPORTS(UrlClassifierUpdateObserverProxy,
+                  nsIUrlClassifierUpdateObserver)
 
 NS_IMETHODIMP
 UrlClassifierUpdateObserverProxy::UpdateUrlRequested
diff --git a/toolkit/components/url-classifier/nsUrlClassifierStreamUpdater.cpp b/toolkit/components/url-classifier/nsUrlClassifierStreamUpdater.cpp
index d85528c45910bcf5f80f4f5f0f2f7555a0658921..0eb42469bc0ebd4dc20d610aa7c231500e6ec1c2 100644
--- a/toolkit/components/url-classifier/nsUrlClassifierStreamUpdater.cpp
+++ b/toolkit/components/url-classifier/nsUrlClassifierStreamUpdater.cpp
@@ -48,14 +48,14 @@ nsUrlClassifierStreamUpdater::nsUrlClassifierStreamUpdater()
 
 }
 
-NS_IMPL_ISUPPORTS7(nsUrlClassifierStreamUpdater,
-                              nsIUrlClassifierStreamUpdater,
-                              nsIUrlClassifierUpdateObserver,
-                              nsIRequestObserver,
-                              nsIStreamListener,
-                              nsIObserver,
-                              nsIInterfaceRequestor,
-                              nsITimerCallback)
+NS_IMPL_ISUPPORTS(nsUrlClassifierStreamUpdater,
+                  nsIUrlClassifierStreamUpdater,
+                  nsIUrlClassifierUpdateObserver,
+                  nsIRequestObserver,
+                  nsIStreamListener,
+                  nsIObserver,
+                  nsIInterfaceRequestor,
+                  nsITimerCallback)
 
 /**
  * Clear out the update.
diff --git a/toolkit/components/url-classifier/nsUrlClassifierUtils.cpp b/toolkit/components/url-classifier/nsUrlClassifierUtils.cpp
index 35b7a8996c28f148043289324894445dbfcaf2f1..e81992944a0b720944b2c00c8c649998bded8899 100644
--- a/toolkit/components/url-classifier/nsUrlClassifierUtils.cpp
+++ b/toolkit/components/url-classifier/nsUrlClassifierUtils.cpp
@@ -85,7 +85,7 @@ nsUrlClassifierUtils::Init()
   return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS1(nsUrlClassifierUtils, nsIUrlClassifierUtils)
+NS_IMPL_ISUPPORTS(nsUrlClassifierUtils, nsIUrlClassifierUtils)
 
 /////////////////////////////////////////////////////////////////////////////
 // nsIUrlClassifierUtils
diff --git a/toolkit/identity/IdentityCryptoService.cpp b/toolkit/identity/IdentityCryptoService.cpp
index 89407bbd0f6cf862e5566769f078f4ee9079b49d..3aebc1529eab4d746a677bb28cae60f0a28c3c74 100644
--- a/toolkit/identity/IdentityCryptoService.cpp
+++ b/toolkit/identity/IdentityCryptoService.cpp
@@ -107,7 +107,7 @@ private:
   void operator=(const KeyPair &) MOZ_DELETE;
 };
 
-NS_IMPL_ISUPPORTS1(KeyPair, nsIIdentityKeyPair)
+NS_IMPL_ISUPPORTS(KeyPair, nsIIdentityKeyPair)
 
 class KeyGenRunnable : public nsRunnable, public nsNSSShutDownObject
 {
@@ -208,7 +208,7 @@ private:
   void operator=(const IdentityCryptoService &) MOZ_DELETE;
 };
 
-NS_IMPL_ISUPPORTS1(IdentityCryptoService, nsIIdentityCryptoService)
+NS_IMPL_ISUPPORTS(IdentityCryptoService, nsIIdentityCryptoService)
 
 NS_IMETHODIMP
 IdentityCryptoService::GenerateKeyPair(
diff --git a/toolkit/profile/nsToolkitProfileService.cpp b/toolkit/profile/nsToolkitProfileService.cpp
index dffcf8e54767bd4a1f8927957dafc8801dc5ab4f..656e04625e0698993f63e1540e4d3236cf86ba23 100644
--- a/toolkit/profile/nsToolkitProfileService.cpp
+++ b/toolkit/profile/nsToolkitProfileService.cpp
@@ -183,7 +183,7 @@ nsToolkitProfile::nsToolkitProfile(const nsACString& aName,
     }
 }
 
-NS_IMPL_ISUPPORTS1(nsToolkitProfile, nsIToolkitProfile)
+NS_IMPL_ISUPPORTS(nsToolkitProfile, nsIToolkitProfile)
 
 NS_IMETHODIMP
 nsToolkitProfile::GetRootDir(nsIFile* *aResult)
@@ -284,7 +284,7 @@ nsToolkitProfile::Lock(nsIProfileUnlocker* *aUnlocker, nsIProfileLock* *aResult)
     return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS1(nsToolkitProfileLock, nsIProfileLock)
+NS_IMPL_ISUPPORTS(nsToolkitProfileLock, nsIProfileLock)
 
 nsresult
 nsToolkitProfileLock::Init(nsToolkitProfile* aProfile, nsIProfileUnlocker* *aUnlocker)
@@ -374,8 +374,8 @@ nsToolkitProfileLock::~nsToolkitProfileLock()
 nsToolkitProfileService*
 nsToolkitProfileService::gService = nullptr;
 
-NS_IMPL_ISUPPORTS1(nsToolkitProfileService,
-                   nsIToolkitProfileService)
+NS_IMPL_ISUPPORTS(nsToolkitProfileService,
+                  nsIToolkitProfileService)
 
 nsresult
 nsToolkitProfileService::Init()
@@ -524,8 +524,8 @@ nsToolkitProfileService::GetProfiles(nsISimpleEnumerator* *aResult)
     return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS1(nsToolkitProfileService::ProfileEnumerator,
-                   nsISimpleEnumerator)
+NS_IMPL_ISUPPORTS(nsToolkitProfileService::ProfileEnumerator,
+                  nsISimpleEnumerator)
 
 NS_IMETHODIMP
 nsToolkitProfileService::ProfileEnumerator::HasMoreElements(bool* aResult)
@@ -957,7 +957,7 @@ nsToolkitProfileService::Flush()
     return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS1(nsToolkitProfileFactory, nsIFactory)
+NS_IMPL_ISUPPORTS(nsToolkitProfileFactory, nsIFactory)
 
 NS_IMETHODIMP
 nsToolkitProfileFactory::CreateInstance(nsISupports* aOuter, const nsID& aIID,
diff --git a/toolkit/system/androidproxy/nsAndroidSystemProxySettings.cpp b/toolkit/system/androidproxy/nsAndroidSystemProxySettings.cpp
index 792893a2bd907b0fb8e6885b90cd494f73d6208d..5a98be32ce47c322e493dd78037b54115f0ab448 100644
--- a/toolkit/system/androidproxy/nsAndroidSystemProxySettings.cpp
+++ b/toolkit/system/androidproxy/nsAndroidSystemProxySettings.cpp
@@ -29,7 +29,7 @@ private:
     ~nsAndroidSystemProxySettings() {};
 };
 
-NS_IMPL_ISUPPORTS1(nsAndroidSystemProxySettings, nsISystemProxySettings)
+NS_IMPL_ISUPPORTS(nsAndroidSystemProxySettings, nsISystemProxySettings)
 
 NS_IMETHODIMP
 nsAndroidSystemProxySettings::GetMainThreadOnly(bool *aMainThreadOnly)
diff --git a/toolkit/system/dbus/nsDBusService.cpp b/toolkit/system/dbus/nsDBusService.cpp
index 4a32ad019f86eb35c91507bb5e494bfc8ccb15aa..11edd09416f2ce7daa5380630342bb843265d983 100644
--- a/toolkit/system/dbus/nsDBusService.cpp
+++ b/toolkit/system/dbus/nsDBusService.cpp
@@ -27,7 +27,7 @@ nsDBusService::~nsDBusService() {
   gSingleton = nullptr;
 }
 
-NS_IMPL_ISUPPORTS1(nsDBusService, nsDBusService)
+NS_IMPL_ISUPPORTS(nsDBusService, nsDBusService)
 
 nsDBusService* nsDBusService::gSingleton = nullptr;
 
diff --git a/toolkit/system/dbus/nsNetworkManagerListener.cpp b/toolkit/system/dbus/nsNetworkManagerListener.cpp
index 7930e5af05395736bb750a87db07baab0fb0d469..c5919e3afdc335eee81b666312a2e9588d39129b 100644
--- a/toolkit/system/dbus/nsNetworkManagerListener.cpp
+++ b/toolkit/system/dbus/nsNetworkManagerListener.cpp
@@ -38,7 +38,7 @@ nsNetworkManagerListener::~nsNetworkManagerListener()
   }
 }
 
-NS_IMPL_ISUPPORTS1(nsNetworkManagerListener, nsINetworkLinkService)
+NS_IMPL_ISUPPORTS(nsNetworkManagerListener, nsINetworkLinkService)
 
 nsresult
 nsNetworkManagerListener::GetIsLinkUp(bool* aIsUp)
diff --git a/toolkit/system/gnome/nsAlertsIconListener.cpp b/toolkit/system/gnome/nsAlertsIconListener.cpp
index addc3ca64678b2bdb566f1bfa56010baed144ec8..c593160a3150a2155e7f140d71c0ddecb77b6e22 100644
--- a/toolkit/system/gnome/nsAlertsIconListener.cpp
+++ b/toolkit/system/gnome/nsAlertsIconListener.cpp
@@ -51,8 +51,8 @@ static void notify_closed_marshal(GClosure* closure,
   NS_RELEASE(alert);
 }
 
-NS_IMPL_ISUPPORTS3(nsAlertsIconListener, imgINotificationObserver,
-                   nsIObserver, nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(nsAlertsIconListener, imgINotificationObserver,
+                  nsIObserver, nsISupportsWeakReference)
 
 nsAlertsIconListener::nsAlertsIconListener()
 : mLoadedFrame(false),
diff --git a/toolkit/system/gnome/nsGConfService.cpp b/toolkit/system/gnome/nsGConfService.cpp
index cff67b13ddac131e7a682f9bb510493590748ca0..529ab97d13b2f46adb6153356bf724d0d21093ff 100644
--- a/toolkit/system/gnome/nsGConfService.cpp
+++ b/toolkit/system/gnome/nsGConfService.cpp
@@ -94,7 +94,7 @@ nsGConfService::Init()
   return mClient ? NS_OK : NS_ERROR_FAILURE;
 }
 
-NS_IMPL_ISUPPORTS1(nsGConfService, nsIGConfService)
+NS_IMPL_ISUPPORTS(nsGConfService, nsIGConfService)
 
 NS_IMETHODIMP
 nsGConfService::GetBool(const nsACString &aKey, bool *aResult)
diff --git a/toolkit/system/gnome/nsGIOService.cpp b/toolkit/system/gnome/nsGIOService.cpp
index 9c826b6dd14c50416288533a91c4d5d906b59097..089d407900ecb38e1cb1729fd7a36b3c89464123 100644
--- a/toolkit/system/gnome/nsGIOService.cpp
+++ b/toolkit/system/gnome/nsGIOService.cpp
@@ -53,7 +53,7 @@ private:
   GAppInfo *mApp;
 };
 
-NS_IMPL_ISUPPORTS1(nsGIOMimeApp, nsIGIOMimeApp)
+NS_IMPL_ISUPPORTS(nsGIOMimeApp, nsIGIOMimeApp)
 
 NS_IMETHODIMP
 nsGIOMimeApp::GetId(nsACString& aId)
@@ -118,7 +118,7 @@ public:
   uint32_t            mIndex;
 };
 
-NS_IMPL_ISUPPORTS1(GIOUTF8StringEnumerator, nsIUTF8StringEnumerator)
+NS_IMPL_ISUPPORTS(GIOUTF8StringEnumerator, nsIUTF8StringEnumerator)
 
 NS_IMETHODIMP
 GIOUTF8StringEnumerator::HasMore(bool* aResult)
@@ -253,7 +253,7 @@ nsGIOMimeApp::SetAsDefaultForURIScheme(nsACString const& aURIScheme)
   return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS1(nsGIOService, nsIGIOService)
+NS_IMPL_ISUPPORTS(nsGIOService, nsIGIOService)
 
 NS_IMETHODIMP
 nsGIOService::GetMimeTypeFromExtension(const nsACString& aExtension,
diff --git a/toolkit/system/gnome/nsGSettingsService.cpp b/toolkit/system/gnome/nsGSettingsService.cpp
index 184e54ea629c76b510e4ca2ab8bc14d12f66fc25..fc7d251ee5e9bed73a95ee209b88a6505bcc4a94 100644
--- a/toolkit/system/gnome/nsGSettingsService.cpp
+++ b/toolkit/system/gnome/nsGSettingsService.cpp
@@ -133,7 +133,7 @@ nsGSettingsCollection::SetValue(const nsACString& aKey,
                               aValue);
 }
 
-NS_IMPL_ISUPPORTS1(nsGSettingsCollection, nsIGSettingsCollection)
+NS_IMPL_ISUPPORTS(nsGSettingsCollection, nsIGSettingsCollection)
 
 NS_IMETHODIMP
 nsGSettingsCollection::SetString(const nsACString& aKey,
@@ -319,7 +319,7 @@ nsGSettingsService::Init()
   return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS1(nsGSettingsService, nsIGSettingsService)
+NS_IMPL_ISUPPORTS(nsGSettingsService, nsIGSettingsService)
 
 nsGSettingsService::~nsGSettingsService()
 {
diff --git a/toolkit/system/gnome/nsGnomeVFSService.cpp b/toolkit/system/gnome/nsGnomeVFSService.cpp
index 98e10805679af736bed0adc585bc07acf41d3d38..a10608e63d034ac878d6140235e8ae7a881ec9e3 100644
--- a/toolkit/system/gnome/nsGnomeVFSService.cpp
+++ b/toolkit/system/gnome/nsGnomeVFSService.cpp
@@ -29,7 +29,7 @@ private:
   GnomeVFSMimeApplication *mApp;
 };
 
-NS_IMPL_ISUPPORTS1(nsGnomeVFSMimeApp, nsIGnomeVFSMimeApp)
+NS_IMPL_ISUPPORTS(nsGnomeVFSMimeApp, nsIGnomeVFSMimeApp)
 
 NS_IMETHODIMP
 nsGnomeVFSMimeApp::GetId(nsACString& aId)
@@ -99,7 +99,7 @@ public:
   uint32_t            mIndex;
 };
 
-NS_IMPL_ISUPPORTS1(UTF8StringEnumerator, nsIUTF8StringEnumerator)
+NS_IMPL_ISUPPORTS(UTF8StringEnumerator, nsIUTF8StringEnumerator)
 
 NS_IMETHODIMP
 UTF8StringEnumerator::HasMore(bool *aResult)
@@ -150,7 +150,7 @@ nsGnomeVFSService::Init()
   return gnome_vfs_init() ? NS_OK : NS_ERROR_FAILURE;
 }
 
-NS_IMPL_ISUPPORTS1(nsGnomeVFSService, nsIGnomeVFSService)
+NS_IMPL_ISUPPORTS(nsGnomeVFSService, nsIGnomeVFSService)
 
 NS_IMETHODIMP
 nsGnomeVFSService::GetMimeTypeFromExtension(const nsACString &aExtension,
diff --git a/toolkit/system/osxproxy/nsOSXSystemProxySettings.mm b/toolkit/system/osxproxy/nsOSXSystemProxySettings.mm
index 7ac114190a4a0d6093b35637cb8dd78f4143a9a2..f6e9ec73548e18372c7e5ea585527230cb6cc736 100644
--- a/toolkit/system/osxproxy/nsOSXSystemProxySettings.mm
+++ b/toolkit/system/osxproxy/nsOSXSystemProxySettings.mm
@@ -58,7 +58,7 @@ private:
   static const SchemeMapping gSchemeMappingList[];
 };
 
-NS_IMPL_ISUPPORTS1(nsOSXSystemProxySettings, nsISystemProxySettings)
+NS_IMPL_ISUPPORTS(nsOSXSystemProxySettings, nsISystemProxySettings)
 
 NS_IMETHODIMP
 nsOSXSystemProxySettings::GetMainThreadOnly(bool *aMainThreadOnly)
diff --git a/toolkit/system/unixproxy/nsLibProxySettings.cpp b/toolkit/system/unixproxy/nsLibProxySettings.cpp
index 835e6031b0a9feb5ead57b9afec4c78a4823877f..781061f8a61cf666198c1a028c4bfa0a48e30855 100644
--- a/toolkit/system/unixproxy/nsLibProxySettings.cpp
+++ b/toolkit/system/unixproxy/nsLibProxySettings.cpp
@@ -33,7 +33,7 @@ private:
   pxProxyFactory *mProxyFactory;
 };
 
-NS_IMPL_ISUPPORTS1(nsUnixSystemProxySettings, nsISystemProxySettings)
+NS_IMPL_ISUPPORTS(nsUnixSystemProxySettings, nsISystemProxySettings)
 
 NS_IMETHODIMP
 nsUnixSystemProxySettings::GetMainThreadOnly(bool *aMainThreadOnly)
diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
index e2fae9acbace32f4edf63f289e6049e04bed47e6..5bbd9a98edce3fcd75b6481d57a64be220721563 100644
--- a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
+++ b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
@@ -45,7 +45,7 @@ private:
   nsresult SetProxyResultFromGSettings(const char* aKeyBase, const char* aType, nsACString& aResult);
 };
 
-NS_IMPL_ISUPPORTS1(nsUnixSystemProxySettings, nsISystemProxySettings)
+NS_IMPL_ISUPPORTS(nsUnixSystemProxySettings, nsISystemProxySettings)
 
 NS_IMETHODIMP
 nsUnixSystemProxySettings::GetMainThreadOnly(bool *aMainThreadOnly)
diff --git a/toolkit/system/windowsproxy/nsWindowsSystemProxySettings.cpp b/toolkit/system/windowsproxy/nsWindowsSystemProxySettings.cpp
index 61619020108c1e04c696fdb93fc1f4fc95167191..9ccd24f027d6a5d3b977b75507384f72e01fe021 100644
--- a/toolkit/system/windowsproxy/nsWindowsSystemProxySettings.cpp
+++ b/toolkit/system/windowsproxy/nsWindowsSystemProxySettings.cpp
@@ -33,7 +33,7 @@ private:
     bool PatternMatch(const nsACString& aHost, const nsACString& aOverride);
 };
 
-NS_IMPL_ISUPPORTS1(nsWindowsSystemProxySettings, nsISystemProxySettings)
+NS_IMPL_ISUPPORTS(nsWindowsSystemProxySettings, nsISystemProxySettings)
 
 NS_IMETHODIMP
 nsWindowsSystemProxySettings::GetMainThreadOnly(bool *aMainThreadOnly)
diff --git a/toolkit/xre/nsAppRunner.cpp b/toolkit/xre/nsAppRunner.cpp
index 160d547a2af5aadd86bb3b225337fce24c1e3163..e0873e6fc948b4d644198ee2509b266075cd452a 100644
--- a/toolkit/xre/nsAppRunner.cpp
+++ b/toolkit/xre/nsAppRunner.cpp
@@ -1297,7 +1297,7 @@ nsSingletonFactory::nsSingletonFactory(nsISupports* aSingleton)
   NS_ASSERTION(mSingleton, "Singleton was null!");
 }
 
-NS_IMPL_ISUPPORTS1(nsSingletonFactory, nsIFactory)
+NS_IMPL_ISUPPORTS(nsSingletonFactory, nsIFactory)
 
 NS_IMETHODIMP
 nsSingletonFactory::CreateInstance(nsISupports* aOuter,
diff --git a/toolkit/xre/nsNativeAppSupportBase.cpp b/toolkit/xre/nsNativeAppSupportBase.cpp
index f96ffa750a945fa54cd21887902b2e2856d3468e..877bd3d8acc0e3763d4114a514417ed1a008bb08 100644
--- a/toolkit/xre/nsNativeAppSupportBase.cpp
+++ b/toolkit/xre/nsNativeAppSupportBase.cpp
@@ -13,7 +13,7 @@ nsNativeAppSupportBase::~nsNativeAppSupportBase()
 {
 }
 
-NS_IMPL_ISUPPORTS1(nsNativeAppSupportBase, nsINativeAppSupport)
+NS_IMPL_ISUPPORTS(nsNativeAppSupportBase, nsINativeAppSupport)
 
 // Start answer defaults to OK.
 NS_IMETHODIMP
diff --git a/toolkit/xre/nsUpdateDriver.cpp b/toolkit/xre/nsUpdateDriver.cpp
index b8edd108626dba02fb693d924d83c14e5c6199c0..2b9f8b400bad49b5762195ba2bd82445f83c84f1 100644
--- a/toolkit/xre/nsUpdateDriver.cpp
+++ b/toolkit/xre/nsUpdateDriver.cpp
@@ -1007,7 +1007,7 @@ ProcessUpdates(nsIFile *greDir, nsIFile *appDir, nsIFile *updRootDir,
 
 
 
-NS_IMPL_ISUPPORTS1(nsUpdateProcessor, nsIUpdateProcessor)
+NS_IMPL_ISUPPORTS(nsUpdateProcessor, nsIUpdateProcessor)
 
 nsUpdateProcessor::nsUpdateProcessor()
   : mUpdaterPID(0)
diff --git a/toolkit/xre/nsXREDirProvider.cpp b/toolkit/xre/nsXREDirProvider.cpp
index 15f9b02e72c4fd131ab8bffee6a3564420a36315..88a4348bbc92e8a9ad68df4b65b6f29084537de8 100644
--- a/toolkit/xre/nsXREDirProvider.cpp
+++ b/toolkit/xre/nsXREDirProvider.cpp
@@ -159,10 +159,10 @@ nsXREDirProvider::SetProfile(nsIFile* aDir, nsIFile* aLocalDir)
   return NS_OK;
 }
 
-NS_IMPL_QUERY_INTERFACE3(nsXREDirProvider,
-                         nsIDirectoryServiceProvider,
-                         nsIDirectoryServiceProvider2,
-                         nsIProfileStartup)
+NS_IMPL_QUERY_INTERFACE(nsXREDirProvider,
+                        nsIDirectoryServiceProvider,
+                        nsIDirectoryServiceProvider2,
+                        nsIProfileStartup)
 
 NS_IMETHODIMP_(MozExternalRefCountType)
 nsXREDirProvider::AddRef()
diff --git a/tools/profiler/SaveProfileTask.cpp b/tools/profiler/SaveProfileTask.cpp
index c94158de9441a3971db332dba22bc88b91132b1f..497385355575bcf164e9aff69099fd0b96436ff6 100644
--- a/tools/profiler/SaveProfileTask.cpp
+++ b/tools/profiler/SaveProfileTask.cpp
@@ -35,7 +35,7 @@ SaveProfileTask::Run() {
   return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS1(ProfileSaveEvent, nsIProfileSaveEvent)
+NS_IMPL_ISUPPORTS(ProfileSaveEvent, nsIProfileSaveEvent)
 
 nsresult
 ProfileSaveEvent::AddSubProfile(const char* aProfile) {
diff --git a/tools/profiler/nsProfiler.cpp b/tools/profiler/nsProfiler.cpp
index 2da9108ed48bb8432bc36118b8af8021df02f713..c228c5c60d19b697bbb14150af1648e074162478 100644
--- a/tools/profiler/nsProfiler.cpp
+++ b/tools/profiler/nsProfiler.cpp
@@ -23,7 +23,7 @@
 
 using std::string;
 
-NS_IMPL_ISUPPORTS1(nsProfiler, nsIProfiler)
+NS_IMPL_ISUPPORTS(nsProfiler, nsIProfiler)
 
 nsProfiler::nsProfiler()
   : mLockedForPrivateBrowsing(false)
diff --git a/uriloader/exthandler/ExternalHelperAppChild.cpp b/uriloader/exthandler/ExternalHelperAppChild.cpp
index f2d54135af0ae1ce025123d93cf048858cea72bd..a37d10e3cf5c7900fd7f748bd0cff4efda52b3a1 100644
--- a/uriloader/exthandler/ExternalHelperAppChild.cpp
+++ b/uriloader/exthandler/ExternalHelperAppChild.cpp
@@ -16,9 +16,9 @@
 namespace mozilla {
 namespace dom {
 
-NS_IMPL_ISUPPORTS2(ExternalHelperAppChild,
-                   nsIStreamListener,
-                   nsIRequestObserver)
+NS_IMPL_ISUPPORTS(ExternalHelperAppChild,
+                  nsIStreamListener,
+                  nsIRequestObserver)
 
 ExternalHelperAppChild::ExternalHelperAppChild()
   : mStatus(NS_OK)
diff --git a/uriloader/exthandler/ExternalHelperAppParent.cpp b/uriloader/exthandler/ExternalHelperAppParent.cpp
index a61dc529d9e64f86f4426c26216c0ec09a01e2f9..146a8340a01bd59c7562d09adb3cc3b5e2409960 100644
--- a/uriloader/exthandler/ExternalHelperAppParent.cpp
+++ b/uriloader/exthandler/ExternalHelperAppParent.cpp
@@ -27,13 +27,13 @@ using namespace mozilla::ipc;
 namespace mozilla {
 namespace dom {
 
-NS_IMPL_ISUPPORTS_INHERITED5(ExternalHelperAppParent,
-                             nsHashPropertyBag,
-                             nsIRequest,
-                             nsIChannel,
-                             nsIMultiPartChannel,
-                             nsIResumableChannel,
-                             nsIStreamListener)
+NS_IMPL_ISUPPORTS_INHERITED(ExternalHelperAppParent,
+                            nsHashPropertyBag,
+                            nsIRequest,
+                            nsIChannel,
+                            nsIMultiPartChannel,
+                            nsIResumableChannel,
+                            nsIStreamListener)
 
 ExternalHelperAppParent::ExternalHelperAppParent(
     const OptionalURIParams& uri,
diff --git a/uriloader/exthandler/android/nsAndroidHandlerApp.cpp b/uriloader/exthandler/android/nsAndroidHandlerApp.cpp
index c8f6063cc4e6b8724aaf694ba86bac4b26c9638c..8813275b781dbbf7514b652e0e4345d9f2886e93 100644
--- a/uriloader/exthandler/android/nsAndroidHandlerApp.cpp
+++ b/uriloader/exthandler/android/nsAndroidHandlerApp.cpp
@@ -9,7 +9,7 @@
 using namespace mozilla::widget::android;
 
 
-NS_IMPL_ISUPPORTS2(nsAndroidHandlerApp, nsIHandlerApp, nsISharingHandlerApp)
+NS_IMPL_ISUPPORTS(nsAndroidHandlerApp, nsIHandlerApp, nsISharingHandlerApp)
 
 nsAndroidHandlerApp::nsAndroidHandlerApp(const nsAString& aName,
                                          const nsAString& aDescription,
diff --git a/uriloader/exthandler/android/nsExternalSharingAppService.cpp b/uriloader/exthandler/android/nsExternalSharingAppService.cpp
index e7ea5288beaa1d919b98e31756c06974fe1508b9..85770152c16706f827ed39cd2f612f4dbb975d9b 100644
--- a/uriloader/exthandler/android/nsExternalSharingAppService.cpp
+++ b/uriloader/exthandler/android/nsExternalSharingAppService.cpp
@@ -14,7 +14,7 @@
 
 using namespace mozilla;
 
-NS_IMPL_ISUPPORTS1(nsExternalSharingAppService, nsIExternalSharingAppService)
+NS_IMPL_ISUPPORTS(nsExternalSharingAppService, nsIExternalSharingAppService)
 
 nsExternalSharingAppService::nsExternalSharingAppService()
 {
diff --git a/uriloader/exthandler/android/nsExternalURLHandlerService.cpp b/uriloader/exthandler/android/nsExternalURLHandlerService.cpp
index 0d72064414ee73056df3f7fa1cb714f1a11c3a52..f417b5b9f9b05139b59754495ea8697fc569138d 100644
--- a/uriloader/exthandler/android/nsExternalURLHandlerService.cpp
+++ b/uriloader/exthandler/android/nsExternalURLHandlerService.cpp
@@ -6,7 +6,7 @@
 #include "nsExternalURLHandlerService.h"
 #include "nsMIMEInfoAndroid.h"
 
-NS_IMPL_ISUPPORTS1(nsExternalURLHandlerService, nsIExternalURLHandlerService)
+NS_IMPL_ISUPPORTS(nsExternalURLHandlerService, nsIExternalURLHandlerService)
 
 nsExternalURLHandlerService::nsExternalURLHandlerService()
 {
diff --git a/uriloader/exthandler/android/nsMIMEInfoAndroid.cpp b/uriloader/exthandler/android/nsMIMEInfoAndroid.cpp
index d92838732ca7aeb486b94d2bcac37a3f65271dda..88d149189e4111109b637d9fa382c35ca0a6462b 100644
--- a/uriloader/exthandler/android/nsMIMEInfoAndroid.cpp
+++ b/uriloader/exthandler/android/nsMIMEInfoAndroid.cpp
@@ -12,7 +12,7 @@
 
 using namespace mozilla::widget::android;
 
-NS_IMPL_ISUPPORTS2(nsMIMEInfoAndroid, nsIMIMEInfo, nsIHandlerInfo)
+NS_IMPL_ISUPPORTS(nsMIMEInfoAndroid, nsIMIMEInfo, nsIHandlerInfo)
 
 NS_IMETHODIMP
 nsMIMEInfoAndroid::LaunchDefaultWithFile(nsIFile* aFile)
@@ -378,7 +378,7 @@ nsMIMEInfoAndroid::nsMIMEInfoAndroid(const nsACString& aMIMEType) :
   mHandlerApps->AppendElement(mPrefApp, false);
 }
 
-NS_IMPL_ISUPPORTS1(nsMIMEInfoAndroid::SystemChooser, nsIHandlerApp)
+NS_IMPL_ISUPPORTS(nsMIMEInfoAndroid::SystemChooser, nsIHandlerApp)
 
 
 nsresult nsMIMEInfoAndroid::SystemChooser::GetName(nsAString & aName) {
diff --git a/uriloader/exthandler/nsContentHandlerApp.cpp b/uriloader/exthandler/nsContentHandlerApp.cpp
index 6e3564a6d303656e9332763af4d717c453fb9022..ce3f7b90f52aab294114b9a362650317bf2f6f5d 100644
--- a/uriloader/exthandler/nsContentHandlerApp.cpp
+++ b/uriloader/exthandler/nsContentHandlerApp.cpp
@@ -14,7 +14,7 @@
 { 0x43ec2c82, 0xb9db, 0x4835, {0x80, 0x3f, 0x64, 0xc9, 0x72, 0x5a, 0x70, 0x28 } }
 
 NS_IMPL_CLASSINFO(nsContentHandlerApp, nullptr, 0, NS_CONTENTHANDLER_CID)
-NS_IMPL_ISUPPORTS1_CI(nsContentHandlerApp, nsIHandlerApp)
+NS_IMPL_ISUPPORTS_CI(nsContentHandlerApp, nsIHandlerApp)
 
 nsContentHandlerApp::nsContentHandlerApp(nsString aName, nsCString aType,
                                          ContentAction::Action& aAction) :
diff --git a/uriloader/exthandler/nsDBusHandlerApp.cpp b/uriloader/exthandler/nsDBusHandlerApp.cpp
index 0f52f6f7f096574010453543ffd0ddfa5fb2b57b..e19d4f2de3b0b114b802600b25908ee0c885c7bf 100644
--- a/uriloader/exthandler/nsDBusHandlerApp.cpp
+++ b/uriloader/exthandler/nsDBusHandlerApp.cpp
@@ -14,7 +14,7 @@
 // XXX why does nsMIMEInfoImpl have a threadsafe nsISupports?  do we need one 
 // here too?
 NS_IMPL_CLASSINFO(nsDBusHandlerApp, nullptr, 0, NS_DBUSHANDLERAPP_CID)
-NS_IMPL_ISUPPORTS2_CI(nsDBusHandlerApp, nsIDBusHandlerApp, nsIHandlerApp)
+NS_IMPL_ISUPPORTS_CI(nsDBusHandlerApp, nsIDBusHandlerApp, nsIHandlerApp)
 
 ////////////////////////////////////////////////////////////////////////////////
 //// nsIHandlerApp
diff --git a/uriloader/exthandler/nsExternalHelperAppService.cpp b/uriloader/exthandler/nsExternalHelperAppService.cpp
index 6d82c7f5424eaf695913661f7976797fa60d0679..f27a619421e0de1d04e456574bb6f018cf956eaf 100644
--- a/uriloader/exthandler/nsExternalHelperAppService.cpp
+++ b/uriloader/exthandler/nsExternalHelperAppService.cpp
@@ -578,7 +578,7 @@ static nsDefaultMimeTypeEntry nonDecodableExtensions [] = {
   { APPLICATION_GZIP, "svgz" }
 };
 
-NS_IMPL_ISUPPORTS6(
+NS_IMPL_ISUPPORTS(
   nsExternalHelperAppService,
   nsIExternalHelperAppService,
   nsPIExternalAppLauncher,
diff --git a/uriloader/exthandler/nsLocalHandlerApp.cpp b/uriloader/exthandler/nsLocalHandlerApp.cpp
index 56164f8944d4e4106ef2f9aadef4d27f0c8053b5..e06cc39a5effdb7176d64caef998c3502be7715a 100644
--- a/uriloader/exthandler/nsLocalHandlerApp.cpp
+++ b/uriloader/exthandler/nsLocalHandlerApp.cpp
@@ -10,7 +10,7 @@
 
 // XXX why does nsMIMEInfoImpl have a threadsafe nsISupports?  do we need one 
 // here too?
-NS_IMPL_ISUPPORTS2(nsLocalHandlerApp, nsILocalHandlerApp, nsIHandlerApp)
+NS_IMPL_ISUPPORTS(nsLocalHandlerApp, nsILocalHandlerApp, nsIHandlerApp)
 
 ////////////////////////////////////////////////////////////////////////////////
 //// nsIHandlerApp
diff --git a/uriloader/exthandler/unix/nsMeegoExternalSharingAppService.cpp b/uriloader/exthandler/unix/nsMeegoExternalSharingAppService.cpp
index 66f4564ecceb1827a1042da381cb3ff653e47ca2..2c44e55af1d2200ab23c7d005199f894f99c0d64 100644
--- a/uriloader/exthandler/unix/nsMeegoExternalSharingAppService.cpp
+++ b/uriloader/exthandler/unix/nsMeegoExternalSharingAppService.cpp
@@ -7,7 +7,7 @@
 #include "nsExternalSharingAppService.h"
 #include "nsString.h"
 
-NS_IMPL_ISUPPORTS1(nsExternalSharingAppService, nsIExternalSharingAppService)
+NS_IMPL_ISUPPORTS(nsExternalSharingAppService, nsIExternalSharingAppService)
 
 nsExternalSharingAppService::nsExternalSharingAppService()
   : mShareUi(nullptr)
diff --git a/uriloader/exthandler/win/nsMIMEInfoWin.cpp b/uriloader/exthandler/win/nsMIMEInfoWin.cpp
index 44124be52a951b2dcad6ee0898e697a6f242b066..a8a1031bdc36d0503c39684e2b933c3eeb34c83b 100644
--- a/uriloader/exthandler/win/nsMIMEInfoWin.cpp
+++ b/uriloader/exthandler/win/nsMIMEInfoWin.cpp
@@ -26,7 +26,7 @@
 #define RUNDLL32_EXE L"\\rundll32.exe"
 
 
-NS_IMPL_ISUPPORTS_INHERITED1(nsMIMEInfoWin, nsMIMEInfoBase, nsIPropertyBag)
+NS_IMPL_ISUPPORTS_INHERITED(nsMIMEInfoWin, nsMIMEInfoBase, nsIPropertyBag)
 
 nsMIMEInfoWin::~nsMIMEInfoWin()
 {
diff --git a/uriloader/prefetch/OfflineCacheUpdateGlue.cpp b/uriloader/prefetch/OfflineCacheUpdateGlue.cpp
index 0c6adefb433bea8e07c1c45f130199d22979e23c..1e33d3a0866f0e92946c72227bc59d8058982879 100644
--- a/uriloader/prefetch/OfflineCacheUpdateGlue.cpp
+++ b/uriloader/prefetch/OfflineCacheUpdateGlue.cpp
@@ -40,10 +40,10 @@ namespace docshell {
 // OfflineCacheUpdateGlue::nsISupports
 //-----------------------------------------------------------------------------
 
-NS_IMPL_ISUPPORTS3(OfflineCacheUpdateGlue,
-                   nsIOfflineCacheUpdate,
-                   nsIOfflineCacheUpdateObserver,
-                   nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(OfflineCacheUpdateGlue,
+                  nsIOfflineCacheUpdate,
+                  nsIOfflineCacheUpdateObserver,
+                  nsISupportsWeakReference)
 
 //-----------------------------------------------------------------------------
 // OfflineCacheUpdateGlue <public>
diff --git a/uriloader/prefetch/OfflineCacheUpdateParent.cpp b/uriloader/prefetch/OfflineCacheUpdateParent.cpp
index 6dd062d9fb9bcbaa3c6733049620b6a0429c40d7..8abc68daa17a596f62be7f96fbc30c086fe737c4 100644
--- a/uriloader/prefetch/OfflineCacheUpdateParent.cpp
+++ b/uriloader/prefetch/OfflineCacheUpdateParent.cpp
@@ -43,9 +43,9 @@ namespace docshell {
 // OfflineCacheUpdateParent::nsISupports
 //-----------------------------------------------------------------------------
 
-NS_IMPL_ISUPPORTS2(OfflineCacheUpdateParent,
-                   nsIOfflineCacheUpdateObserver,
-                   nsILoadContext)
+NS_IMPL_ISUPPORTS(OfflineCacheUpdateParent,
+                  nsIOfflineCacheUpdateObserver,
+                  nsILoadContext)
 
 //-----------------------------------------------------------------------------
 // OfflineCacheUpdateParent <public>
diff --git a/uriloader/prefetch/nsOfflineCacheUpdate.cpp b/uriloader/prefetch/nsOfflineCacheUpdate.cpp
index 276c8355c0e3576a6a1e610977e55ea4724befd1..edbdb480a0bd14d7ed4a3728913b7da3ecae9d79 100644
--- a/uriloader/prefetch/nsOfflineCacheUpdate.cpp
+++ b/uriloader/prefetch/nsOfflineCacheUpdate.cpp
@@ -161,11 +161,11 @@ private:
 //-----------------------------------------------------------------------------
 // nsManifestCheck::nsISupports
 //-----------------------------------------------------------------------------
-NS_IMPL_ISUPPORTS4(nsManifestCheck,
-                   nsIRequestObserver,
-                   nsIStreamListener,
-                   nsIChannelEventSink,
-                   nsIInterfaceRequestor)
+NS_IMPL_ISUPPORTS(nsManifestCheck,
+                  nsIRequestObserver,
+                  nsIStreamListener,
+                  nsIChannelEventSink,
+                  nsIInterfaceRequestor)
 
 //-----------------------------------------------------------------------------
 // nsManifestCheck <public>
@@ -309,12 +309,12 @@ nsManifestCheck::AsyncOnChannelRedirect(nsIChannel *aOldChannel,
 // nsOfflineCacheUpdateItem::nsISupports
 //-----------------------------------------------------------------------------
 
-NS_IMPL_ISUPPORTS5(nsOfflineCacheUpdateItem,
-                   nsIRequestObserver,
-                   nsIStreamListener,
-                   nsIRunnable,
-                   nsIInterfaceRequestor,
-                   nsIChannelEventSink)
+NS_IMPL_ISUPPORTS(nsOfflineCacheUpdateItem,
+                  nsIRequestObserver,
+                  nsIStreamListener,
+                  nsIRunnable,
+                  nsIInterfaceRequestor,
+                  nsIChannelEventSink)
 
 //-----------------------------------------------------------------------------
 // nsOfflineCacheUpdateItem <public>
@@ -1146,10 +1146,10 @@ nsOfflineManifestItem::OnStopRequest(nsIRequest *aRequest,
 // nsOfflineCacheUpdate::nsISupports
 //-----------------------------------------------------------------------------
 
-NS_IMPL_ISUPPORTS3(nsOfflineCacheUpdate,
-                   nsIOfflineCacheUpdateObserver,
-                   nsIOfflineCacheUpdate,
-                   nsIRunnable)
+NS_IMPL_ISUPPORTS(nsOfflineCacheUpdate,
+                  nsIOfflineCacheUpdateObserver,
+                  nsIOfflineCacheUpdate,
+                  nsIRunnable)
 
 //-----------------------------------------------------------------------------
 // nsOfflineCacheUpdate <public>
diff --git a/uriloader/prefetch/nsOfflineCacheUpdateService.cpp b/uriloader/prefetch/nsOfflineCacheUpdateService.cpp
index 068b3f5097741deaa23a9d49ff0dd37f465213fd..38200410c914b01ea9f08f16731f530d56e0f891 100644
--- a/uriloader/prefetch/nsOfflineCacheUpdateService.cpp
+++ b/uriloader/prefetch/nsOfflineCacheUpdateService.cpp
@@ -160,9 +160,9 @@ private:
     bool mDidReleaseThis;
 };
 
-NS_IMPL_ISUPPORTS2(nsOfflineCachePendingUpdate,
-                   nsIWebProgressListener,
-                   nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(nsOfflineCachePendingUpdate,
+                  nsIWebProgressListener,
+                  nsISupportsWeakReference)
 
 //-----------------------------------------------------------------------------
 // nsOfflineCacheUpdateService::nsIWebProgressListener
@@ -277,10 +277,10 @@ nsOfflineCachePendingUpdate::OnSecurityChange(nsIWebProgress *aWebProgress,
 // nsOfflineCacheUpdateService::nsISupports
 //-----------------------------------------------------------------------------
 
-NS_IMPL_ISUPPORTS3(nsOfflineCacheUpdateService,
-                   nsIOfflineCacheUpdateService,
-                   nsIObserver,
-                   nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(nsOfflineCacheUpdateService,
+                  nsIOfflineCacheUpdateService,
+                  nsIObserver,
+                  nsISupportsWeakReference)
 
 //-----------------------------------------------------------------------------
 // nsOfflineCacheUpdateService <public>
diff --git a/uriloader/prefetch/nsPrefetchService.cpp b/uriloader/prefetch/nsPrefetchService.cpp
index f93d265d37107d43ed796fb651634aa77ba5f2b6..34fde9273de7850491f2b1c7a64dec513081a5c7 100644
--- a/uriloader/prefetch/nsPrefetchService.cpp
+++ b/uriloader/prefetch/nsPrefetchService.cpp
@@ -156,7 +156,7 @@ nsPrefetchQueueEnumerator::Increment()
 // nsPrefetchQueueEnumerator::nsISupports
 //-----------------------------------------------------------------------------
 
-NS_IMPL_ISUPPORTS1(nsPrefetchQueueEnumerator, nsISimpleEnumerator)
+NS_IMPL_ISUPPORTS(nsPrefetchQueueEnumerator, nsISimpleEnumerator)
 
 //-----------------------------------------------------------------------------
 // nsPrefetchNode <public>
@@ -223,12 +223,12 @@ nsPrefetchNode::CancelChannel(nsresult error)
 // nsPrefetchNode::nsISupports
 //-----------------------------------------------------------------------------
 
-NS_IMPL_ISUPPORTS5(nsPrefetchNode,
-                   nsIRequestObserver,
-                   nsIStreamListener,
-                   nsIInterfaceRequestor,
-                   nsIChannelEventSink,
-                   nsIRedirectResultListener)
+NS_IMPL_ISUPPORTS(nsPrefetchNode,
+                  nsIRequestObserver,
+                  nsIStreamListener,
+                  nsIInterfaceRequestor,
+                  nsIChannelEventSink,
+                  nsIRedirectResultListener)
 
 //-----------------------------------------------------------------------------
 // nsPrefetchNode::nsIStreamListener
@@ -618,11 +618,11 @@ nsPrefetchService::StopPrefetching()
 // nsPrefetchService::nsISupports
 //-----------------------------------------------------------------------------
 
-NS_IMPL_ISUPPORTS4(nsPrefetchService,
-                   nsIPrefetchService,
-                   nsIWebProgressListener,
-                   nsIObserver,
-                   nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(nsPrefetchService,
+                  nsIPrefetchService,
+                  nsIWebProgressListener,
+                  nsIObserver,
+                  nsISupportsWeakReference)
 
 //-----------------------------------------------------------------------------
 // nsPrefetchService::nsIPrefetchService
diff --git a/widget/android/AndroidBridge.cpp b/widget/android/AndroidBridge.cpp
index 6c66c28c6f5d4405b2541765bc7611c4a6bad5d8..0019160209049063e5aece2811064aa589ff9c43 100644
--- a/widget/android/AndroidBridge.cpp
+++ b/widget/android/AndroidBridge.cpp
@@ -1487,7 +1487,7 @@ AndroidBridge::~AndroidBridge()
 }
 
 /* Implementation file */
-NS_IMPL_ISUPPORTS1(nsAndroidBridge, nsIAndroidBridge)
+NS_IMPL_ISUPPORTS(nsAndroidBridge, nsIAndroidBridge)
 
 nsAndroidBridge::nsAndroidBridge()
 {
diff --git a/widget/android/AndroidJavaWrappers.cpp b/widget/android/AndroidJavaWrappers.cpp
index 5fc716cee915a037913b311a8ae1ae6c49330956..cd0be4728ec177cdcf3f087c399049b14227bb1f 100644
--- a/widget/android/AndroidJavaWrappers.cpp
+++ b/widget/android/AndroidJavaWrappers.cpp
@@ -862,7 +862,7 @@ AndroidLayerRendererFrame::Dispose(JNIEnv *env)
     wrapped_obj = 0;
 }
 
-NS_IMPL_ISUPPORTS1(nsAndroidDisplayport, nsIAndroidDisplayport)
+NS_IMPL_ISUPPORTS(nsAndroidDisplayport, nsIAndroidDisplayport)
 
 bool
 AndroidLayerRendererFrame::BeginDrawing(AutoLocalJNIFrame *jniFrame)
diff --git a/widget/android/GfxInfo.cpp b/widget/android/GfxInfo.cpp
index 223be29446409a23e6c228721e6577d52f877cac..4f9be5e107a1310b89136063618dd09134a0cc94 100644
--- a/widget/android/GfxInfo.cpp
+++ b/widget/android/GfxInfo.cpp
@@ -106,7 +106,7 @@ public:
 };
 
 #ifdef DEBUG
-NS_IMPL_ISUPPORTS_INHERITED1(GfxInfo, GfxInfoBase, nsIGfxInfoDebug)
+NS_IMPL_ISUPPORTS_INHERITED(GfxInfo, GfxInfoBase, nsIGfxInfoDebug)
 #endif
 
 GfxInfo::GfxInfo()
diff --git a/widget/android/nsAppShell.cpp b/widget/android/nsAppShell.cpp
index f51a5ff5c442820d44bef3f41a95dac94f3e5fd6..680838bdc06f7d41184e6331f93f512aa414bce0 100644
--- a/widget/android/nsAppShell.cpp
+++ b/widget/android/nsAppShell.cpp
@@ -68,7 +68,7 @@ nsAutoPtr<mozilla::AndroidGeckoEvent> gLastSizeChange;
 
 nsAppShell *nsAppShell::gAppShell = nullptr;
 
-NS_IMPL_ISUPPORTS_INHERITED1(nsAppShell, nsBaseAppShell, nsIObserver)
+NS_IMPL_ISUPPORTS_INHERITED(nsAppShell, nsBaseAppShell, nsIObserver)
 
 class ThumbnailRunnable : public nsRunnable {
 public:
@@ -115,7 +115,7 @@ class WakeLockListener MOZ_FINAL : public nsIDOMMozWakeLockListener {
   }
 };
 
-NS_IMPL_ISUPPORTS1(WakeLockListener, nsIDOMMozWakeLockListener)
+NS_IMPL_ISUPPORTS(WakeLockListener, nsIDOMMozWakeLockListener)
 nsCOMPtr<nsIPowerManagerService> sPowerManagerService = nullptr;
 StaticRefPtr<WakeLockListener> sWakeLockListener;
 
diff --git a/widget/android/nsClipboard.cpp b/widget/android/nsClipboard.cpp
index eac772481a9880e0a42c2cda71603f442d681b18..e0a1d63bdb5c62eb671e122fafd0f57ba91c3615 100644
--- a/widget/android/nsClipboard.cpp
+++ b/widget/android/nsClipboard.cpp
@@ -13,7 +13,7 @@
 using namespace mozilla;
 using mozilla::dom::ContentChild;
 
-NS_IMPL_ISUPPORTS1(nsClipboard, nsIClipboard)
+NS_IMPL_ISUPPORTS(nsClipboard, nsIClipboard)
 
 /* The Android clipboard only supports text and doesn't support mime types
  * so we assume all clipboard data is text/unicode for now. Documentation
diff --git a/widget/android/nsDeviceContextAndroid.cpp b/widget/android/nsDeviceContextAndroid.cpp
index e9d489beae7dec4aa13c6bf4adc8f006066d0ee5..815e9ee198b6ba216542931fe67be42009b6fe59 100644
--- a/widget/android/nsDeviceContextAndroid.cpp
+++ b/widget/android/nsDeviceContextAndroid.cpp
@@ -10,7 +10,7 @@
 #include "nsIPrintSettings.h"
 #include "nsDirectoryServiceDefs.h"
 
-NS_IMPL_ISUPPORTS1(nsDeviceContextSpecAndroid, nsIDeviceContextSpec)
+NS_IMPL_ISUPPORTS(nsDeviceContextSpecAndroid, nsIDeviceContextSpec)
 
 NS_IMETHODIMP
 nsDeviceContextSpecAndroid::GetSurfaceForPrinter(gfxASurface** aSurface)
diff --git a/widget/android/nsIMEPicker.cpp b/widget/android/nsIMEPicker.cpp
index 098bf331e93b8908f8174d319e5a366cea53a4c3..a9075acaf7951d6a901ebaa97c04da5f3d51f92d 100644
--- a/widget/android/nsIMEPicker.cpp
+++ b/widget/android/nsIMEPicker.cpp
@@ -7,7 +7,7 @@
 
 using namespace mozilla;
 
-NS_IMPL_ISUPPORTS1(nsIMEPicker, nsIIMEPicker)
+NS_IMPL_ISUPPORTS(nsIMEPicker, nsIIMEPicker)
 
 nsIMEPicker::nsIMEPicker()
 {
diff --git a/widget/android/nsScreenManagerAndroid.cpp b/widget/android/nsScreenManagerAndroid.cpp
index cbc83eb2af2b1ec8041cb23ccd8862803589b2de..6bf5600b6b6aef01e389f716a4b44bcad0d64109 100644
--- a/widget/android/nsScreenManagerAndroid.cpp
+++ b/widget/android/nsScreenManagerAndroid.cpp
@@ -62,7 +62,7 @@ nsScreenAndroid::ApplyMinimumBrightness(uint32_t aBrightness)
   mozilla::widget::android::GeckoAppShell::SetKeepScreenOn(aBrightness == BRIGHTNESS_FULL);
 }
 
-NS_IMPL_ISUPPORTS1(nsScreenManagerAndroid, nsIScreenManager)
+NS_IMPL_ISUPPORTS(nsScreenManagerAndroid, nsIScreenManager)
 
 nsScreenManagerAndroid::nsScreenManagerAndroid()
 {
diff --git a/widget/android/nsWindow.cpp b/widget/android/nsWindow.cpp
index 365eae5eefb6a65539f482e6f6bead5d6286ab4f..4531b3436ea9dbdf58a4f0d3abf73cc5f9f314f0 100644
--- a/widget/android/nsWindow.cpp
+++ b/widget/android/nsWindow.cpp
@@ -113,8 +113,8 @@ class ContentCreationNotifier MOZ_FINAL : public nsIObserver
     }
 };
 
-NS_IMPL_ISUPPORTS1(ContentCreationNotifier,
-                   nsIObserver)
+NS_IMPL_ISUPPORTS(ContentCreationNotifier,
+                  nsIObserver)
 
 static bool gMenu;
 static bool gMenuConsumed;
diff --git a/widget/cocoa/GfxInfo.mm b/widget/cocoa/GfxInfo.mm
index a94f0bd10a62a847cde1ab85407e05d096bc68cf..da4a345eee2efbfc8e706fd3761eeed588ac3515 100644
--- a/widget/cocoa/GfxInfo.mm
+++ b/widget/cocoa/GfxInfo.mm
@@ -34,7 +34,7 @@ using namespace mozilla;
 using namespace mozilla::widget;
 
 #ifdef DEBUG
-NS_IMPL_ISUPPORTS_INHERITED1(GfxInfo, GfxInfoBase, nsIGfxInfoDebug)
+NS_IMPL_ISUPPORTS_INHERITED(GfxInfo, GfxInfoBase, nsIGfxInfoDebug)
 #endif
 
 GfxInfo::GfxInfo()
diff --git a/widget/cocoa/OSXNotificationCenter.mm b/widget/cocoa/OSXNotificationCenter.mm
index bc68b472fc4a284ba69ac3f98537422dce34e144..132eee55960735dfe4ab2e7911002b5c79b485c2 100644
--- a/widget/cocoa/OSXNotificationCenter.mm
+++ b/widget/cocoa/OSXNotificationCenter.mm
@@ -181,7 +181,7 @@ OSXNotificationCenter::~OSXNotificationCenter()
   NS_OBJC_END_TRY_ABORT_BLOCK;
 }
 
-NS_IMPL_ISUPPORTS3(OSXNotificationCenter, nsIAlertsService, imgINotificationObserver, nsITimerCallback)
+NS_IMPL_ISUPPORTS(OSXNotificationCenter, nsIAlertsService, imgINotificationObserver, nsITimerCallback)
 
 nsresult OSXNotificationCenter::Init()
 {
diff --git a/widget/cocoa/nsBidiKeyboard.mm b/widget/cocoa/nsBidiKeyboard.mm
index 536e866897d46d9b4eb61f69509f89efede89d75..e0fc86aeb79dc5d976cc84fee2bf7f3f8201b3e0 100644
--- a/widget/cocoa/nsBidiKeyboard.mm
+++ b/widget/cocoa/nsBidiKeyboard.mm
@@ -13,7 +13,7 @@
 
 using namespace mozilla::widget;
 
-NS_IMPL_ISUPPORTS1(nsBidiKeyboard, nsIBidiKeyboard)
+NS_IMPL_ISUPPORTS(nsBidiKeyboard, nsIBidiKeyboard)
 
 nsBidiKeyboard::nsBidiKeyboard() : nsIBidiKeyboard()
 {
diff --git a/widget/cocoa/nsChildView.mm b/widget/cocoa/nsChildView.mm
index 2c525de83bfc7247e1e077d1cae5cabd020d5254..dae2d042293a0d76dfec33cfe1e757ef60d20e85 100644
--- a/widget/cocoa/nsChildView.mm
+++ b/widget/cocoa/nsChildView.mm
@@ -427,7 +427,7 @@ nsChildView::ReleaseTitlebarCGContext()
   }
 }
 
-NS_IMPL_ISUPPORTS_INHERITED1(nsChildView, nsBaseWidget, nsIPluginWidget)
+NS_IMPL_ISUPPORTS_INHERITED(nsChildView, nsBaseWidget, nsIPluginWidget)
 
 nsresult nsChildView::Create(nsIWidget *aParent,
                              nsNativeWidget aNativeParent,
diff --git a/widget/cocoa/nsCocoaWindow.mm b/widget/cocoa/nsCocoaWindow.mm
index cea85e4409fbb6eaa8aac2d11eaab28796b39b09..740919bdf90acd59e6eddad9923780d81bef4190 100644
--- a/widget/cocoa/nsCocoaWindow.mm
+++ b/widget/cocoa/nsCocoaWindow.mm
@@ -80,7 +80,7 @@ extern "C" {
 
 #define NS_APPSHELLSERVICE_CONTRACTID "@mozilla.org/appshell/appShellService;1"
 
-NS_IMPL_ISUPPORTS_INHERITED1(nsCocoaWindow, Inherited, nsPIWidgetCocoa)
+NS_IMPL_ISUPPORTS_INHERITED(nsCocoaWindow, Inherited, nsPIWidgetCocoa)
 
 // A note on testing to see if your object is a sheet...
 // |mWindowType == eWindowType_sheet| is true if your gecko nsIWidget is a sheet
diff --git a/widget/cocoa/nsColorPicker.mm b/widget/cocoa/nsColorPicker.mm
index ff87f28d9bfcd2a880c2e1ffc7c64797c1b5472e..b27191d5774f2bac6845e5b19de7f68f73d1050c 100644
--- a/widget/cocoa/nsColorPicker.mm
+++ b/widget/cocoa/nsColorPicker.mm
@@ -93,7 +93,7 @@ HexStrToInt(NSString* str)
 }
 @end
 
-NS_IMPL_ISUPPORTS1(nsColorPicker, nsIColorPicker)
+NS_IMPL_ISUPPORTS(nsColorPicker, nsIColorPicker)
 
 NSColorPanelWrapper* nsColorPicker::sColorPanelWrapper = nullptr;
 
diff --git a/widget/cocoa/nsDeviceContextSpecX.mm b/widget/cocoa/nsDeviceContextSpecX.mm
index 004182e25960e82694098fce761ac6df157a3eed..1ff9188f2b217f52fd42780d98d78f06b4570e39 100644
--- a/widget/cocoa/nsDeviceContextSpecX.mm
+++ b/widget/cocoa/nsDeviceContextSpecX.mm
@@ -35,7 +35,7 @@ nsDeviceContextSpecX::~nsDeviceContextSpecX()
   NS_OBJC_END_TRY_ABORT_BLOCK;
 }
 
-NS_IMPL_ISUPPORTS1(nsDeviceContextSpecX, nsIDeviceContextSpec)
+NS_IMPL_ISUPPORTS(nsDeviceContextSpecX, nsIDeviceContextSpec)
 
 NS_IMETHODIMP nsDeviceContextSpecX::Init(nsIWidget *aWidget,
                                          nsIPrintSettings* aPS,
diff --git a/widget/cocoa/nsFilePicker.mm b/widget/cocoa/nsFilePicker.mm
index 38e0d9f5a68eb3cc37fee6fd091d107022976201..1214992fd7efc8b4a5411e77390785ed65f12157 100644
--- a/widget/cocoa/nsFilePicker.mm
+++ b/widget/cocoa/nsFilePicker.mm
@@ -45,7 +45,7 @@ const char kShowHiddenFilesPref[] = "filepicker.showHiddenFiles";
 - (void) menuChangedItem:(NSNotification*)aSender;
 @end
 
-NS_IMPL_ISUPPORTS1(nsFilePicker, nsIFilePicker)
+NS_IMPL_ISUPPORTS(nsFilePicker, nsIFilePicker)
 
 // We never want to call the secret show hidden files API unless the pref
 // has been set. Once the pref has been set we always need to call it even
diff --git a/widget/cocoa/nsMacDockSupport.mm b/widget/cocoa/nsMacDockSupport.mm
index e112e1e46ff6e89df8ded2a51c0b43a2d9a6dfae..a081903d3272f3d7cb895a952be7c5e0567591c0 100644
--- a/widget/cocoa/nsMacDockSupport.mm
+++ b/widget/cocoa/nsMacDockSupport.mm
@@ -9,7 +9,7 @@
 #include "nsMacDockSupport.h"
 #include "nsObjCExceptions.h"
 
-NS_IMPL_ISUPPORTS2(nsMacDockSupport, nsIMacDockSupport, nsITaskbarProgress)
+NS_IMPL_ISUPPORTS(nsMacDockSupport, nsIMacDockSupport, nsITaskbarProgress)
 
 nsMacDockSupport::nsMacDockSupport()
 : mAppIcon(nil)
diff --git a/widget/cocoa/nsMacWebAppUtils.mm b/widget/cocoa/nsMacWebAppUtils.mm
index cc96abf8ed70f3ce28d628bd4f922d96a6a3b27a..1b98cef7cc23348ae048852952443cb02e6e07c2 100644
--- a/widget/cocoa/nsMacWebAppUtils.mm
+++ b/widget/cocoa/nsMacWebAppUtils.mm
@@ -16,7 +16,7 @@
 // Note that the OS will return the path to the newest binary, if there is more than one.
 // The determination of 'newest' is complex and beyond the scope of this comment.
 
-NS_IMPL_ISUPPORTS1(nsMacWebAppUtils, nsIMacWebAppUtils)
+NS_IMPL_ISUPPORTS(nsMacWebAppUtils, nsIMacWebAppUtils)
 
 NS_IMETHODIMP nsMacWebAppUtils::PathForAppWithIdentifier(const nsAString& bundleIdentifier, nsAString& outPath) {
   NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT;
diff --git a/widget/cocoa/nsMenuBarX.mm b/widget/cocoa/nsMenuBarX.mm
index 392c8a828909f496edb128f5c284b5a54ff76cbe..b9eac4ef73dfdaf387fefa4d7718988e807b7278 100644
--- a/widget/cocoa/nsMenuBarX.mm
+++ b/widget/cocoa/nsMenuBarX.mm
@@ -41,7 +41,7 @@ static nsIContent* sUpdateItemContent = nullptr;
 static nsIContent* sPrefItemContent   = nullptr;
 static nsIContent* sQuitItemContent   = nullptr;
 
-NS_IMPL_ISUPPORTS1(nsNativeMenuServiceX, nsINativeMenuService)
+NS_IMPL_ISUPPORTS(nsNativeMenuServiceX, nsINativeMenuService)
 
 NS_IMETHODIMP nsNativeMenuServiceX::CreateNativeMenuBar(nsIWidget* aParent, nsIContent* aMenuBarNode)
 {
diff --git a/widget/cocoa/nsMenuGroupOwnerX.mm b/widget/cocoa/nsMenuGroupOwnerX.mm
index 866f4a5ce22aa4bdc815ed443c282a906f86aa26..c3fd2dd649a3398935816f40d37d92b3eeb08bd2 100644
--- a/widget/cocoa/nsMenuGroupOwnerX.mm
+++ b/widget/cocoa/nsMenuGroupOwnerX.mm
@@ -26,7 +26,7 @@
 
 using namespace mozilla;
 
-NS_IMPL_ISUPPORTS1(nsMenuGroupOwnerX, nsIMutationObserver)
+NS_IMPL_ISUPPORTS(nsMenuGroupOwnerX, nsIMutationObserver)
 
 
 nsMenuGroupOwnerX::nsMenuGroupOwnerX()
diff --git a/widget/cocoa/nsMenuItemIconX.mm b/widget/cocoa/nsMenuItemIconX.mm
index aea85c49cc1262517678bae8b34ed289d70f69c7..948675b1567bd8b9a7a3166238e63dd4fab81118 100644
--- a/widget/cocoa/nsMenuItemIconX.mm
+++ b/widget/cocoa/nsMenuItemIconX.mm
@@ -56,7 +56,7 @@ static const uint32_t kIconBytes = kIconBytesPerRow * kIconHeight;
 typedef NS_STDCALL_FUNCPROTO(nsresult, GetRectSideMethod, nsIDOMRect,
                              GetBottom, (nsIDOMCSSPrimitiveValue**));
 
-NS_IMPL_ISUPPORTS1(nsMenuItemIconX, imgINotificationObserver)
+NS_IMPL_ISUPPORTS(nsMenuItemIconX, imgINotificationObserver)
 
 nsMenuItemIconX::nsMenuItemIconX(nsMenuObjectX* aMenuItem,
                                  nsIContent*    aContent,
diff --git a/widget/cocoa/nsNativeThemeCocoa.mm b/widget/cocoa/nsNativeThemeCocoa.mm
index 00ba7d4858230b2f05866877f3c5ca1376704436..289e88d001423b055a38a2ab8d496c3721faebca 100644
--- a/widget/cocoa/nsNativeThemeCocoa.mm
+++ b/widget/cocoa/nsNativeThemeCocoa.mm
@@ -453,7 +453,7 @@ static BOOL IsActive(nsIFrame* aFrame, BOOL aIsToolbarControl)
   return FrameIsInActiveWindow(aFrame);
 }
 
-NS_IMPL_ISUPPORTS_INHERITED1(nsNativeThemeCocoa, nsNativeTheme, nsITheme)
+NS_IMPL_ISUPPORTS_INHERITED(nsNativeThemeCocoa, nsNativeTheme, nsITheme)
 
 
 nsNativeThemeCocoa::nsNativeThemeCocoa()
diff --git a/widget/cocoa/nsPrintDialogX.mm b/widget/cocoa/nsPrintDialogX.mm
index 7d75b845efc419f21797389ce194efd10d88f157..4320fe19edb7bdd9a68c166463a62b213acf7615 100644
--- a/widget/cocoa/nsPrintDialogX.mm
+++ b/widget/cocoa/nsPrintDialogX.mm
@@ -20,7 +20,7 @@
 
 using namespace mozilla;
 
-NS_IMPL_ISUPPORTS1(nsPrintDialogServiceX, nsIPrintDialogService)
+NS_IMPL_ISUPPORTS(nsPrintDialogServiceX, nsIPrintDialogService)
 
 nsPrintDialogServiceX::nsPrintDialogServiceX()
 {
diff --git a/widget/cocoa/nsPrintSettingsX.mm b/widget/cocoa/nsPrintSettingsX.mm
index e0609d69643f07a74c1097dae09455226d68361f..d2306c87fd22942c95fd69371c57553bb0ad1808 100644
--- a/widget/cocoa/nsPrintSettingsX.mm
+++ b/widget/cocoa/nsPrintSettingsX.mm
@@ -17,7 +17,7 @@ using namespace mozilla;
 
 #define MAC_OS_X_PAGE_SETUP_PREFNAME    "print.macosx.pagesetup-2"
 
-NS_IMPL_ISUPPORTS_INHERITED1(nsPrintSettingsX, nsPrintSettings, nsPrintSettingsX)
+NS_IMPL_ISUPPORTS_INHERITED(nsPrintSettingsX, nsPrintSettings, nsPrintSettingsX)
 
 nsPrintSettingsX::nsPrintSettingsX()
 {
diff --git a/widget/cocoa/nsScreenManagerCocoa.mm b/widget/cocoa/nsScreenManagerCocoa.mm
index 77a24b8a95711b137c2776e2d89708171cacd292..3325bece935522f40cb47057ce07d46bf22df983 100644
--- a/widget/cocoa/nsScreenManagerCocoa.mm
+++ b/widget/cocoa/nsScreenManagerCocoa.mm
@@ -8,7 +8,7 @@
 #include "nsCOMPtr.h"
 #include "nsCocoaUtils.h"
 
-NS_IMPL_ISUPPORTS1(nsScreenManagerCocoa, nsIScreenManager)
+NS_IMPL_ISUPPORTS(nsScreenManagerCocoa, nsIScreenManager)
 
 nsScreenManagerCocoa::nsScreenManagerCocoa()
 {
diff --git a/widget/cocoa/nsSound.mm b/widget/cocoa/nsSound.mm
index 0680930826883abaf6c6492194df5d7298668ec3..af0eb05ac6780d36345c93e4d3ad9262b2eafbd7 100644
--- a/widget/cocoa/nsSound.mm
+++ b/widget/cocoa/nsSound.mm
@@ -13,7 +13,7 @@
 
 #import <Cocoa/Cocoa.h>
 
-NS_IMPL_ISUPPORTS2(nsSound, nsISound, nsIStreamLoaderObserver)
+NS_IMPL_ISUPPORTS(nsSound, nsISound, nsIStreamLoaderObserver)
 
 nsSound::nsSound()
 {
diff --git a/widget/cocoa/nsStandaloneNativeMenu.mm b/widget/cocoa/nsStandaloneNativeMenu.mm
index 043ba97a71b59a0c665ab3b0e7654a4941bbf5c9..caec69ac5016acdc3811eb1b290add32067cb1b8 100644
--- a/widget/cocoa/nsStandaloneNativeMenu.mm
+++ b/widget/cocoa/nsStandaloneNativeMenu.mm
@@ -13,7 +13,7 @@
 #include "nsObjCExceptions.h"
 
 
-NS_IMPL_ISUPPORTS2(nsStandaloneNativeMenu, nsIMutationObserver, nsIStandaloneNativeMenu)
+NS_IMPL_ISUPPORTS(nsStandaloneNativeMenu, nsIMutationObserver, nsIStandaloneNativeMenu)
 
 nsStandaloneNativeMenu::nsStandaloneNativeMenu()
 : mMenu(nullptr)
diff --git a/widget/gonk/GonkMemoryPressureMonitoring.cpp b/widget/gonk/GonkMemoryPressureMonitoring.cpp
index 618c4c7583daeb6cb963e85d616ada165e1713f9..2527da31ec05daf82a7f577152431e0896347935 100644
--- a/widget/gonk/GonkMemoryPressureMonitoring.cpp
+++ b/widget/gonk/GonkMemoryPressureMonitoring.cpp
@@ -269,7 +269,7 @@ private:
   ScopedClose mShutdownPipeWrite;
 };
 
-NS_IMPL_ISUPPORTS2(MemoryPressureWatcher, nsIRunnable, nsIObserver);
+NS_IMPL_ISUPPORTS(MemoryPressureWatcher, nsIRunnable, nsIObserver);
 
 } // anonymous namespace
 
diff --git a/widget/gonk/nsAppShell.cpp b/widget/gonk/nsAppShell.cpp
index 96dc56b958b753aefbd03d8672280bf516584473..7b3990c94333cbf3c8cae839830c67d99f6cfb70 100644
--- a/widget/gonk/nsAppShell.cpp
+++ b/widget/gonk/nsAppShell.cpp
@@ -100,7 +100,7 @@ static int32_t sMicrophoneState;
 // Amount of time in MS before an input is considered expired.
 static const uint64_t kInputExpirationThresholdMs = 1000;
 
-NS_IMPL_ISUPPORTS_INHERITED1(nsAppShell, nsBaseAppShell, nsIObserver)
+NS_IMPL_ISUPPORTS_INHERITED(nsAppShell, nsBaseAppShell, nsIObserver)
 
 static uint64_t
 nanosecsToMillisecs(nsecs_t nsecs)
diff --git a/widget/gonk/nsClipboard.cpp b/widget/gonk/nsClipboard.cpp
index 176ee5643f87039cd91288eb6341d86c35c684f3..aed3782daa212f40252dc900d5c876f494474639 100644
--- a/widget/gonk/nsClipboard.cpp
+++ b/widget/gonk/nsClipboard.cpp
@@ -16,7 +16,7 @@ using mozilla::dom::ContentChild;
 #define LOGI(args...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, ## args)
 #define LOGE(args...) __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, ## args)
 
-NS_IMPL_ISUPPORTS1(nsClipboard, nsIClipboard)
+NS_IMPL_ISUPPORTS(nsClipboard, nsIClipboard)
 
 nsClipboard::nsClipboard()
 {
diff --git a/widget/gonk/nsWindow.cpp b/widget/gonk/nsWindow.cpp
index 6e182382c98799bc794766b6da38bfb4bab9ce1e..bf21cdacd4a781d5f6e8bc2f2f44fafa414ae617 100644
--- a/widget/gonk/nsWindow.cpp
+++ b/widget/gonk/nsWindow.cpp
@@ -815,7 +815,7 @@ nsScreenGonk::GetConfiguration()
                                colorDepth, colorDepth);
 }
 
-NS_IMPL_ISUPPORTS1(nsScreenManagerGonk, nsIScreenManager)
+NS_IMPL_ISUPPORTS(nsScreenManagerGonk, nsIScreenManager)
 
 nsScreenManagerGonk::nsScreenManagerGonk()
 {
diff --git a/widget/gtk/nsBidiKeyboard.cpp b/widget/gtk/nsBidiKeyboard.cpp
index a5038d028099370b962904866f741554f89957d3..461bf8231eeda749c75753b4c8cd59130ecf72bf 100644
--- a/widget/gtk/nsBidiKeyboard.cpp
+++ b/widget/gtk/nsBidiKeyboard.cpp
@@ -15,7 +15,7 @@ typedef gboolean (*GdkKeymapHaveBidiLayoutsType)(GdkKeymap *keymap);
 static GdkKeymapHaveBidiLayoutsType GdkKeymapHaveBidiLayouts = nullptr;
 #endif
 
-NS_IMPL_ISUPPORTS1(nsBidiKeyboard, nsIBidiKeyboard)
+NS_IMPL_ISUPPORTS(nsBidiKeyboard, nsIBidiKeyboard)
 
 nsBidiKeyboard::nsBidiKeyboard()
 {
diff --git a/widget/gtk/nsClipboard.cpp b/widget/gtk/nsClipboard.cpp
index 975e73c413ce3bb0435208c4db16ead296db68dd..7b9d00141f7d3a39dce7963c3c2e8bf66b633069 100644
--- a/widget/gtk/nsClipboard.cpp
+++ b/widget/gtk/nsClipboard.cpp
@@ -85,7 +85,7 @@ nsClipboard::~nsClipboard()
     }
 }
 
-NS_IMPL_ISUPPORTS1(nsClipboard, nsIClipboard)
+NS_IMPL_ISUPPORTS(nsClipboard, nsIClipboard)
 
 nsresult
 nsClipboard::Init(void)
diff --git a/widget/gtk/nsColorPicker.cpp b/widget/gtk/nsColorPicker.cpp
index 2f9df9b00ec121b9cc66805941a6c5679933e2a3..cacfdb4cc0ec3f3cf7f746e2523527968b6a45d9 100644
--- a/widget/gtk/nsColorPicker.cpp
+++ b/widget/gtk/nsColorPicker.cpp
@@ -11,7 +11,7 @@
 #include "nsIWidget.h"
 #include "WidgetUtils.h"
 
-NS_IMPL_ISUPPORTS1(nsColorPicker, nsIColorPicker)
+NS_IMPL_ISUPPORTS(nsColorPicker, nsIColorPicker)
 
 int nsColorPicker::convertGdkColorComponent(guint16 color_component) {
   // GdkColor value is in range [0..65535]. We need something in range [0..255]
diff --git a/widget/gtk/nsDeviceContextSpecG.cpp b/widget/gtk/nsDeviceContextSpecG.cpp
index 8e06757394daf37a2d7a82d856d6f6fee06c89ab..cbc5312a13a0034d30a173c54815b52509c30682 100644
--- a/widget/gtk/nsDeviceContextSpecG.cpp
+++ b/widget/gtk/nsDeviceContextSpecG.cpp
@@ -104,8 +104,8 @@ nsDeviceContextSpecGTK::~nsDeviceContextSpecGTK()
   }
 }
 
-NS_IMPL_ISUPPORTS1(nsDeviceContextSpecGTK,
-                   nsIDeviceContextSpec)
+NS_IMPL_ISUPPORTS(nsDeviceContextSpecGTK,
+                  nsIDeviceContextSpec)
 
 #include "gfxPDFSurface.h"
 #include "gfxPSSurface.h"
@@ -412,7 +412,7 @@ nsPrinterEnumeratorGTK::nsPrinterEnumeratorGTK()
 {
 }
 
-NS_IMPL_ISUPPORTS1(nsPrinterEnumeratorGTK, nsIPrinterEnumerator)
+NS_IMPL_ISUPPORTS(nsPrinterEnumeratorGTK, nsIPrinterEnumerator)
 
 NS_IMETHODIMP nsPrinterEnumeratorGTK::GetPrinterNameList(nsIStringEnumerator **aPrinterNameList)
 {
diff --git a/widget/gtk/nsDragService.cpp b/widget/gtk/nsDragService.cpp
index e44f2c63189c73898365963a494f6db0c5444106..3fe0abb39bf619186b53a60952496210a186b653 100644
--- a/widget/gtk/nsDragService.cpp
+++ b/widget/gtk/nsDragService.cpp
@@ -142,7 +142,7 @@ nsDragService::~nsDragService()
 
 }
 
-NS_IMPL_ISUPPORTS_INHERITED1(nsDragService, nsBaseDragService, nsIObserver)
+NS_IMPL_ISUPPORTS_INHERITED(nsDragService, nsBaseDragService, nsIObserver)
 
 /* static */ nsDragService*
 nsDragService::GetInstance()
diff --git a/widget/gtk/nsFilePicker.cpp b/widget/gtk/nsFilePicker.cpp
index 2522b0bc3b2c9cdebdf430649f4c212cf65db14e..562947e9c8efa5af52f9385fd406b5be565edd9e 100644
--- a/widget/gtk/nsFilePicker.cpp
+++ b/widget/gtk/nsFilePicker.cpp
@@ -148,7 +148,7 @@ MakeCaseInsensitiveShellGlob(const char* aPattern) {
   return result;
 }
 
-NS_IMPL_ISUPPORTS1(nsFilePicker, nsIFilePicker)
+NS_IMPL_ISUPPORTS(nsFilePicker, nsIFilePicker)
 
 nsFilePicker::nsFilePicker()
   : mSelectedType(0),
diff --git a/widget/gtk/nsImageToPixbuf.cpp b/widget/gtk/nsImageToPixbuf.cpp
index 47eb16cfcba04a93b8d53f2dfb636c5827c301f8..ca05b3b8a49e41d30020c21e97707a9e37c5217d 100644
--- a/widget/gtk/nsImageToPixbuf.cpp
+++ b/widget/gtk/nsImageToPixbuf.cpp
@@ -16,7 +16,7 @@ using mozilla::gfx::DataSourceSurface;
 using mozilla::gfx::SurfaceFormat;
 using mozilla::RefPtr;
 
-NS_IMPL_ISUPPORTS1(nsImageToPixbuf, nsIImageToPixbuf)
+NS_IMPL_ISUPPORTS(nsImageToPixbuf, nsIImageToPixbuf)
 
 inline unsigned char
 unpremultiply (unsigned char color,
diff --git a/widget/gtk/nsNativeThemeGTK.cpp b/widget/gtk/nsNativeThemeGTK.cpp
index 685ab5b5e40a138e602e9c3bfc9a8b8d05c3c75c..247e79fca8144025185b9e0062bfe248186a3711 100644
--- a/widget/gtk/nsNativeThemeGTK.cpp
+++ b/widget/gtk/nsNativeThemeGTK.cpp
@@ -35,8 +35,8 @@
 
 using namespace mozilla;
 
-NS_IMPL_ISUPPORTS_INHERITED2(nsNativeThemeGTK, nsNativeTheme, nsITheme,
-                                                              nsIObserver)
+NS_IMPL_ISUPPORTS_INHERITED(nsNativeThemeGTK, nsNativeTheme, nsITheme,
+                                                             nsIObserver)
 
 static int gLastGdkError;
 
diff --git a/widget/gtk/nsPrintDialogGTK.cpp b/widget/gtk/nsPrintDialogGTK.cpp
index 72288fc6d8569df62bf5387c95ab9412b7147775..b230e18a23e380f5e951900f07f34aa7ed00ea53 100644
--- a/widget/gtk/nsPrintDialogGTK.cpp
+++ b/widget/gtk/nsPrintDialogGTK.cpp
@@ -513,7 +513,7 @@ nsPrintDialogWidgetGTK::ConstructHeaderFooterDropdown(const char16_t *currentStr
   return dropdown;
 }
 
-NS_IMPL_ISUPPORTS1(nsPrintDialogServiceGTK, nsIPrintDialogService)
+NS_IMPL_ISUPPORTS(nsPrintDialogServiceGTK, nsIPrintDialogService)
 
 nsPrintDialogServiceGTK::nsPrintDialogServiceGTK()
 {
diff --git a/widget/gtk/nsPrintSettingsGTK.cpp b/widget/gtk/nsPrintSettingsGTK.cpp
index 66c7a4fb8237a1696e2512c58fb2727ad941fa23..3130d72ebd67b9658564d5753b01eb8156876983 100644
--- a/widget/gtk/nsPrintSettingsGTK.cpp
+++ b/widget/gtk/nsPrintSettingsGTK.cpp
@@ -36,9 +36,9 @@ GtkPaperSize* moz_gtk_paper_size_copy_to_new_custom(GtkPaperSize* oldPaperSize)
                                    GTK_UNIT_INCH);
 }
 
-NS_IMPL_ISUPPORTS_INHERITED1(nsPrintSettingsGTK, 
-                             nsPrintSettings, 
-                             nsPrintSettingsGTK)
+NS_IMPL_ISUPPORTS_INHERITED(nsPrintSettingsGTK, 
+                            nsPrintSettings, 
+                            nsPrintSettingsGTK)
 
 /** ---------------------------------------------------
  */
diff --git a/widget/gtk/nsScreenManagerGtk.cpp b/widget/gtk/nsScreenManagerGtk.cpp
index 812f70716251ecccb6780fe79885788ce43c6850..1bb0f3680f9ebcf8bcc1badfc400f2960381df25 100644
--- a/widget/gtk/nsScreenManagerGtk.cpp
+++ b/widget/gtk/nsScreenManagerGtk.cpp
@@ -79,7 +79,7 @@ nsScreenManagerGtk :: ~nsScreenManagerGtk()
 
 
 // addref, release, QI
-NS_IMPL_ISUPPORTS1(nsScreenManagerGtk, nsIScreenManager)
+NS_IMPL_ISUPPORTS(nsScreenManagerGtk, nsIScreenManager)
 
 
 // this function will make sure that everything has been initialized.
diff --git a/widget/gtk/nsSound.cpp b/widget/gtk/nsSound.cpp
index 9fa34340a1e61f1057e9cc9b74160ca76a70853b..7135603d0cdc433acef125e70fbb8fcccbe61a95 100644
--- a/widget/gtk/nsSound.cpp
+++ b/widget/gtk/nsSound.cpp
@@ -165,7 +165,7 @@ ca_finish_cb(ca_context *c,
     }
 }
 
-NS_IMPL_ISUPPORTS2(nsSound, nsISound, nsIStreamLoaderObserver)
+NS_IMPL_ISUPPORTS(nsSound, nsISound, nsIStreamLoaderObserver)
 
 ////////////////////////////////////////////////////////////////////////
 nsSound::nsSound()
diff --git a/widget/gtk/nsWindow.cpp b/widget/gtk/nsWindow.cpp
index e0546a36ff03af3ee2c948943e26330a6ddadb73..9359d1175c92a5d709e79642ffa067fa62c41700 100644
--- a/widget/gtk/nsWindow.cpp
+++ b/widget/gtk/nsWindow.cpp
@@ -404,8 +404,8 @@ nsWindow::ReleaseGlobals()
   }
 }
 
-NS_IMPL_ISUPPORTS_INHERITED1(nsWindow, nsBaseWidget,
-                             nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS_INHERITED(nsWindow, nsBaseWidget,
+                            nsISupportsWeakReference)
 
 void
 nsWindow::CommonCreate(nsIWidget *aParent, bool aListenForResizes)
diff --git a/widget/qt/nsBidiKeyboard.cpp b/widget/qt/nsBidiKeyboard.cpp
index 20dd409ec9b26f9bc639e89edf8790d8a9a3c8db..92baf8eb39da6b199559c910a62d4a8dcc3efd2e 100644
--- a/widget/qt/nsBidiKeyboard.cpp
+++ b/widget/qt/nsBidiKeyboard.cpp
@@ -10,7 +10,7 @@
 
 #include "nsBidiKeyboard.h"
 
-NS_IMPL_ISUPPORTS1(nsBidiKeyboard, nsIBidiKeyboard)
+NS_IMPL_ISUPPORTS(nsBidiKeyboard, nsIBidiKeyboard)
 
 nsBidiKeyboard::nsBidiKeyboard() : nsIBidiKeyboard()
 {
diff --git a/widget/qt/nsClipboard.cpp b/widget/qt/nsClipboard.cpp
index d79c83e8d612f19432ccbefd25e2eced7266853c..16cd3f719ff1a3ce75662785b611aa031ab2a636 100644
--- a/widget/qt/nsClipboard.cpp
+++ b/widget/qt/nsClipboard.cpp
@@ -30,7 +30,7 @@
 using namespace mozilla;
 using namespace mozilla::gfx;
 
-NS_IMPL_ISUPPORTS1(nsClipboard, nsIClipboard)
+NS_IMPL_ISUPPORTS(nsClipboard, nsIClipboard)
 
 //-------------------------------------------------------------------------
 //
diff --git a/widget/qt/nsDeviceContextSpecQt.cpp b/widget/qt/nsDeviceContextSpecQt.cpp
index a11c1feeded01815180217d1f69d2d20877c023f..98dabaf47874a4780666b36fed82364ee249e15d 100644
--- a/widget/qt/nsDeviceContextSpecQt.cpp
+++ b/widget/qt/nsDeviceContextSpecQt.cpp
@@ -52,7 +52,7 @@ nsDeviceContextSpecQt::~nsDeviceContextSpecQt()
     DO_PR_DEBUG_LOG(("nsDeviceContextSpecQt::~nsDeviceContextSpecQt()\n"));
 }
 
-NS_IMPL_ISUPPORTS1(nsDeviceContextSpecQt,
+NS_IMPL_ISUPPORTS(nsDeviceContextSpecQt,
         nsIDeviceContextSpec)
 
 NS_IMETHODIMP nsDeviceContextSpecQt::GetSurfaceForPrinter(
@@ -214,7 +214,7 @@ nsPrinterEnumeratorQt::nsPrinterEnumeratorQt()
 {
 }
 
-NS_IMPL_ISUPPORTS1(nsPrinterEnumeratorQt, nsIPrinterEnumerator)
+NS_IMPL_ISUPPORTS(nsPrinterEnumeratorQt, nsIPrinterEnumerator)
 
 NS_IMETHODIMP nsPrinterEnumeratorQt::GetPrinterNameList(
         nsIStringEnumerator** aPrinterNameList)
diff --git a/widget/qt/nsPrintDialogQt.cpp b/widget/qt/nsPrintDialogQt.cpp
index 15d7cf98f72dac6987111379ac3466fbc5b1fa99..61711e36c28e337eb065f6b0f0e239d1ee9009b7 100644
--- a/widget/qt/nsPrintDialogQt.cpp
+++ b/widget/qt/nsPrintDialogQt.cpp
@@ -11,7 +11,7 @@
 // print dialog at this point.  So, this class's methods are left
 // un-implemented for now.
 
-NS_IMPL_ISUPPORTS1(nsPrintDialogServiceQt, nsIPrintDialogService)
+NS_IMPL_ISUPPORTS(nsPrintDialogServiceQt, nsIPrintDialogService)
 
 nsPrintDialogServiceQt::nsPrintDialogServiceQt()
 {
diff --git a/widget/qt/nsPrintSettingsQt.cpp b/widget/qt/nsPrintSettingsQt.cpp
index fcb6f0dfc02f99c495c1ff6e1269c477a32a7f9e..02564086be73be34d406f0f3112016f31bc6f44c 100644
--- a/widget/qt/nsPrintSettingsQt.cpp
+++ b/widget/qt/nsPrintSettingsQt.cpp
@@ -10,9 +10,9 @@
 #include "nsIFile.h"
 #include "nsCRTGlue.h"
 
-NS_IMPL_ISUPPORTS_INHERITED1(nsPrintSettingsQt,
-                             nsPrintSettings,
-                             nsPrintSettingsQt)
+NS_IMPL_ISUPPORTS_INHERITED(nsPrintSettingsQt,
+                            nsPrintSettings,
+                            nsPrintSettingsQt)
 
 nsPrintSettingsQt::nsPrintSettingsQt():
     mQPrinter(new QPrinter())
diff --git a/widget/qt/nsScreenManagerQt.cpp b/widget/qt/nsScreenManagerQt.cpp
index 43e66ac01bba83f45391b21d4c65df5a678bb269..da4ebcef9803ed03b64b51e3af5a394da349b9bd 100644
--- a/widget/qt/nsScreenManagerQt.cpp
+++ b/widget/qt/nsScreenManagerQt.cpp
@@ -21,7 +21,7 @@ nsScreenManagerQt::~nsScreenManagerQt()
 }
 
 // addref, release, QI
-NS_IMPL_ISUPPORTS1(nsScreenManagerQt, nsIScreenManager)
+NS_IMPL_ISUPPORTS(nsScreenManagerQt, nsIScreenManager)
 
 void nsScreenManagerQt::init()
 {
diff --git a/widget/qt/nsWindow.cpp b/widget/qt/nsWindow.cpp
index 84e833db0450327646f51493148009fe579f5d23..be9b750ca328967058ffee17f28fcfb425a45163 100644
--- a/widget/qt/nsWindow.cpp
+++ b/widget/qt/nsWindow.cpp
@@ -1646,7 +1646,7 @@ InitKeyEvent(WidgetKeyboardEvent &aEvent, QKeyEvent *aQEvent)
     aEvent.pluginEvent = (void *)aQEvent;
 }
 
-NS_IMPL_ISUPPORTS_INHERITED1(nsWindow, nsBaseWidget, nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS_INHERITED(nsWindow, nsBaseWidget, nsISupportsWeakReference)
 
 
 
diff --git a/widget/tests/TestAppShellSteadyState.cpp b/widget/tests/TestAppShellSteadyState.cpp
index 8658e53f5582b6a22667f561118d26f94967fb69..abf952a082a0624ea0e6b2e32742439088bfd18f 100644
--- a/widget/tests/TestAppShellSteadyState.cpp
+++ b/widget/tests/TestAppShellSteadyState.cpp
@@ -302,7 +302,7 @@ public:
 nsIDOMWindowUtils* EventListener::sWindowUtils = nullptr;
 nsIAppShell* EventListener::sAppShell = nullptr;
 
-NS_IMPL_ISUPPORTS1(EventListener, nsIDOMEventListener)
+NS_IMPL_ISUPPORTS(EventListener, nsIDOMEventListener)
 
 already_AddRefed<nsIAppShell>
 GetAppShell()
diff --git a/widget/tests/TestWinTSF.cpp b/widget/tests/TestWinTSF.cpp
index 22b0050f6280232847bfcc056ff27ac7bc189d48..b3e9a90126d43aca3de68cc62b1cca056dbb59ab 100644
--- a/widget/tests/TestWinTSF.cpp
+++ b/widget/tests/TestWinTSF.cpp
@@ -1412,8 +1412,8 @@ TSFDocumentMgrImpl::Release(void)
   return 0;
 }
 
-NS_IMPL_ISUPPORTS2(TestApp, nsIWebProgressListener,
-                            nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(TestApp, nsIWebProgressListener,
+                  nsISupportsWeakReference)
 
 nsresult
 TestApp::Run(void)
diff --git a/widget/windows/GfxInfo.cpp b/widget/windows/GfxInfo.cpp
index 7a3a82d7cde3c4ab74c80384357b5610560b2a93..eec9e5159b93d1689fcee38f4e43145e1d7ccc05 100644
--- a/widget/windows/GfxInfo.cpp
+++ b/widget/windows/GfxInfo.cpp
@@ -27,7 +27,7 @@ using namespace mozilla;
 using namespace mozilla::widget;
 
 #ifdef DEBUG
-NS_IMPL_ISUPPORTS_INHERITED1(GfxInfo, GfxInfoBase, nsIGfxInfoDebug)
+NS_IMPL_ISUPPORTS_INHERITED(GfxInfo, GfxInfoBase, nsIGfxInfoDebug)
 #endif
 
 static const uint32_t allWindowsVersions = 0xffffffff;
diff --git a/widget/windows/JumpListBuilder.cpp b/widget/windows/JumpListBuilder.cpp
index 4ca8a1b27d3aead0d22c75c3648c906879a1b621..461fffc48bf083f590582c490217b4e7bc83d507 100644
--- a/widget/windows/JumpListBuilder.cpp
+++ b/widget/windows/JumpListBuilder.cpp
@@ -40,7 +40,7 @@ extern const wchar_t *gMozillaJumpListIDGeneric;
 bool JumpListBuilder::sBuildingList = false;
 const char kPrefTaskbarEnabled[] = "browser.taskbar.lists.enabled";
 
-NS_IMPL_ISUPPORTS2(JumpListBuilder, nsIJumpListBuilder, nsIObserver)
+NS_IMPL_ISUPPORTS(JumpListBuilder, nsIJumpListBuilder, nsIObserver)
 
 JumpListBuilder::JumpListBuilder() :
   mMaxItems(0),
diff --git a/widget/windows/JumpListItem.cpp b/widget/windows/JumpListItem.cpp
index d3e622912f089d618b0ec2895335ba7018744a77..7bf475394809a3c71f47e1ac00a44b6d3fc34027 100644
--- a/widget/windows/JumpListItem.cpp
+++ b/widget/windows/JumpListItem.cpp
@@ -23,16 +23,16 @@ namespace mozilla {
 namespace widget {
 
 // ISUPPORTS Impl's
-NS_IMPL_ISUPPORTS1(JumpListItem,
-                   nsIJumpListItem)
+NS_IMPL_ISUPPORTS(JumpListItem,
+                  nsIJumpListItem)
 
-NS_IMPL_ISUPPORTS_INHERITED1(JumpListSeparator,
-                             JumpListItem,
-                             nsIJumpListSeparator)
+NS_IMPL_ISUPPORTS_INHERITED(JumpListSeparator,
+                            JumpListItem,
+                            nsIJumpListSeparator)
 
-NS_IMPL_ISUPPORTS_INHERITED1(JumpListLink,
-                             JumpListItem,
-                             nsIJumpListLink)
+NS_IMPL_ISUPPORTS_INHERITED(JumpListLink,
+                            JumpListItem,
+                            nsIJumpListLink)
 
 NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(JumpListShortcut)
   NS_INTERFACE_MAP_ENTRY(nsIJumpListShortcut)
diff --git a/widget/windows/LSPAnnotator.cpp b/widget/windows/LSPAnnotator.cpp
index e0e552d2c7a4b643dc9e3747b50b973d5bfc7a33..7e393ddd3c7a73c07bc8032b5fcf3717e56fa993 100644
--- a/widget/windows/LSPAnnotator.cpp
+++ b/widget/windows/LSPAnnotator.cpp
@@ -32,7 +32,7 @@ public:
   nsCOMPtr<nsIThread> mThread;
 };
 
-NS_IMPL_ISUPPORTS1(LSPAnnotationGatherer, nsIRunnable)
+NS_IMPL_ISUPPORTS(LSPAnnotationGatherer, nsIRunnable)
 
 void
 LSPAnnotationGatherer::Annotate()
diff --git a/widget/windows/TaskbarPreviewButton.cpp b/widget/windows/TaskbarPreviewButton.cpp
index f9b712bb2633c1cedd70975ea735a9e1963cce1f..69cea380929784d77a2ada519942695803391ea8 100644
--- a/widget/windows/TaskbarPreviewButton.cpp
+++ b/widget/windows/TaskbarPreviewButton.cpp
@@ -16,7 +16,7 @@
 namespace mozilla {
 namespace widget {
 
-NS_IMPL_ISUPPORTS2(TaskbarPreviewButton, nsITaskbarPreviewButton, nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(TaskbarPreviewButton, nsITaskbarPreviewButton, nsISupportsWeakReference)
 
 TaskbarPreviewButton::TaskbarPreviewButton(TaskbarWindowPreview* preview, uint32_t index)
   : mPreview(preview), mIndex(index)
diff --git a/widget/windows/TaskbarTabPreview.cpp b/widget/windows/TaskbarTabPreview.cpp
index a48a705750fe4a4c2836a124e79113532c1cf79f..d14c9ea99ad04618c881f6b3182a7726ad55c3af 100644
--- a/widget/windows/TaskbarTabPreview.cpp
+++ b/widget/windows/TaskbarTabPreview.cpp
@@ -16,7 +16,7 @@
 namespace mozilla {
 namespace widget {
 
-NS_IMPL_ISUPPORTS1(TaskbarTabPreview, nsITaskbarTabPreview)
+NS_IMPL_ISUPPORTS(TaskbarTabPreview, nsITaskbarTabPreview)
 
 const wchar_t *const kWindowClass = L"MozillaTaskbarPreviewClass";
 
diff --git a/widget/windows/TaskbarWindowPreview.cpp b/widget/windows/TaskbarWindowPreview.cpp
index 83ea74a86860f766594de56a07762edc296c6518..b5be690f364b197cbb6f37b9397a7a9ede42e544 100644
--- a/widget/windows/TaskbarWindowPreview.cpp
+++ b/widget/windows/TaskbarWindowPreview.cpp
@@ -27,9 +27,9 @@ bool WindowHookProc(void *aContext, HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM
 }
 }
 
-NS_IMPL_ISUPPORTS4(TaskbarWindowPreview, nsITaskbarWindowPreview,
-                   nsITaskbarProgress, nsITaskbarOverlayIconController,
-                   nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(TaskbarWindowPreview, nsITaskbarWindowPreview,
+                  nsITaskbarProgress, nsITaskbarOverlayIconController,
+                  nsISupportsWeakReference)
 
 /**
  * These correspond directly to the states defined in nsITaskbarProgress.idl, so
diff --git a/widget/windows/WinTaskbar.cpp b/widget/windows/WinTaskbar.cpp
index 1f8df8fa38bc7bf21d93b8aeb4796a98774955e8..1ca35f936bcf7a8a868e097dd11511e1f6a510d7 100644
--- a/widget/windows/WinTaskbar.cpp
+++ b/widget/windows/WinTaskbar.cpp
@@ -193,7 +193,7 @@ DefaultController::OnClick(nsITaskbarPreviewButton *button) {
   return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS1(DefaultController, nsITaskbarPreviewController)
+NS_IMPL_ISUPPORTS(DefaultController, nsITaskbarPreviewController)
 }
 
 namespace mozilla {
@@ -202,7 +202,7 @@ namespace widget {
 ///////////////////////////////////////////////////////////////////////////////
 // nsIWinTaskbar
 
-NS_IMPL_ISUPPORTS1(WinTaskbar, nsIWinTaskbar)
+NS_IMPL_ISUPPORTS(WinTaskbar, nsIWinTaskbar)
 
 bool
 WinTaskbar::Initialize() {
diff --git a/widget/windows/WinUtils.cpp b/widget/windows/WinUtils.cpp
index 8f209080fe162581d55e4be3e4cf4b9b0beac17b..a9dcb7339652a70c77476f0a21e8d344f49e2f7b 100644
--- a/widget/windows/WinUtils.cpp
+++ b/widget/windows/WinUtils.cpp
@@ -59,13 +59,13 @@ using namespace mozilla::gfx;
 namespace mozilla {
 namespace widget {
 
-NS_IMPL_ISUPPORTS1(myDownloadObserver, nsIDownloadObserver)
+NS_IMPL_ISUPPORTS(myDownloadObserver, nsIDownloadObserver)
 #ifdef MOZ_PLACES
-NS_IMPL_ISUPPORTS1(AsyncFaviconDataReady, nsIFaviconDataCallback)
+NS_IMPL_ISUPPORTS(AsyncFaviconDataReady, nsIFaviconDataCallback)
 #endif
-NS_IMPL_ISUPPORTS1(AsyncEncodeAndWriteIcon, nsIRunnable)
-NS_IMPL_ISUPPORTS1(AsyncDeleteIconFromDisk, nsIRunnable)
-NS_IMPL_ISUPPORTS1(AsyncDeleteAllFaviconsFromDisk, nsIRunnable)
+NS_IMPL_ISUPPORTS(AsyncEncodeAndWriteIcon, nsIRunnable)
+NS_IMPL_ISUPPORTS(AsyncDeleteIconFromDisk, nsIRunnable)
+NS_IMPL_ISUPPORTS(AsyncDeleteAllFaviconsFromDisk, nsIRunnable)
 
 
 const char FaviconHelper::kJumpListCacheDir[] = "jumpListCache";
diff --git a/widget/windows/nsAppShell.cpp b/widget/windows/nsAppShell.cpp
index 80852c5ea605756da5dcab889fd2d5ae091d8b56..f72c017fb4d895a033d548fa17fa24f3b0f9a1d9 100644
--- a/widget/windows/nsAppShell.cpp
+++ b/widget/windows/nsAppShell.cpp
@@ -63,7 +63,7 @@ private:
   nsTHashtable<nsStringHashKey> mLockedTopics;
 };
 
-NS_IMPL_ISUPPORTS1(WinWakeLockListener, nsIDOMMozWakeLockListener)
+NS_IMPL_ISUPPORTS(WinWakeLockListener, nsIDOMMozWakeLockListener)
 StaticRefPtr<WinWakeLockListener> sWakeLockListener;
 
 static void
diff --git a/widget/windows/nsBidiKeyboard.cpp b/widget/windows/nsBidiKeyboard.cpp
index 28897b99908e0ee8b8433fdc0cbe7fc01be0b60e..bb8407b553e921a61eb149293c610d73f14c27b0 100644
--- a/widget/windows/nsBidiKeyboard.cpp
+++ b/widget/windows/nsBidiKeyboard.cpp
@@ -9,7 +9,7 @@
 #include "prmem.h"
 #include <tchar.h>
 
-NS_IMPL_ISUPPORTS1(nsBidiKeyboard, nsIBidiKeyboard)
+NS_IMPL_ISUPPORTS(nsBidiKeyboard, nsIBidiKeyboard)
 
 nsBidiKeyboard::nsBidiKeyboard() : nsIBidiKeyboard()
 {
diff --git a/widget/windows/nsClipboard.cpp b/widget/windows/nsClipboard.cpp
index 0fd706deefe728883af4d5dab91014298c6d6e44..9d5850e4e7f158b51f5d18862346692cc7d3cfd6 100644
--- a/widget/windows/nsClipboard.cpp
+++ b/widget/windows/nsClipboard.cpp
@@ -74,7 +74,7 @@ nsClipboard::~nsClipboard()
 
 }
 
-NS_IMPL_ISUPPORTS_INHERITED1(nsClipboard, nsBaseClipboard, nsIObserver)
+NS_IMPL_ISUPPORTS_INHERITED(nsClipboard, nsBaseClipboard, nsIObserver)
 
 NS_IMETHODIMP
 nsClipboard::Observe(nsISupports *aSubject, const char *aTopic,
diff --git a/widget/windows/nsColorPicker.cpp b/widget/windows/nsColorPicker.cpp
index f3b9309f94b18fcd91e4df63f0871f1db9f846db..e2150ed6d4555b54409cd6d68f86a5da3e669880 100644
--- a/widget/windows/nsColorPicker.cpp
+++ b/widget/windows/nsColorPicker.cpp
@@ -150,7 +150,7 @@ nsColorPicker::~nsColorPicker()
 {
 }
 
-NS_IMPL_ISUPPORTS1(nsColorPicker, nsIColorPicker)
+NS_IMPL_ISUPPORTS(nsColorPicker, nsIColorPicker)
 
 NS_IMETHODIMP
 nsColorPicker::Init(nsIDOMWindow* parent,
diff --git a/widget/windows/nsDataObj.cpp b/widget/windows/nsDataObj.cpp
index 68dd4cd24db0515b43727c59949fec45a14374cc..5d9416ed950f83572a7e671e8c81b7c321fc7bad 100644
--- a/widget/windows/nsDataObj.cpp
+++ b/widget/windows/nsDataObj.cpp
@@ -41,7 +41,7 @@ using namespace mozilla::widget;
 
 #define DEFAULT_THREAD_TIMEOUT_MS 30000
 
-NS_IMPL_ISUPPORTS1(nsDataObj::CStream, nsIStreamListener)
+NS_IMPL_ISUPPORTS(nsDataObj::CStream, nsIStreamListener)
 
 //-----------------------------------------------------------------------------
 // CStream implementation
diff --git a/widget/windows/nsDeviceContextSpecWin.cpp b/widget/windows/nsDeviceContextSpecWin.cpp
index 04b389cd7d30c90140a541a74db733b0280c1b71..15e41cf03c228cfde4b5a7b6ac369896d7dfd611 100644
--- a/widget/windows/nsDeviceContextSpecWin.cpp
+++ b/widget/windows/nsDeviceContextSpecWin.cpp
@@ -152,7 +152,7 @@ nsDeviceContextSpecWin::nsDeviceContextSpecWin()
 
 //----------------------------------------------------------------------------------
 
-NS_IMPL_ISUPPORTS1(nsDeviceContextSpecWin, nsIDeviceContextSpec)
+NS_IMPL_ISUPPORTS(nsDeviceContextSpecWin, nsIDeviceContextSpec)
 
 nsDeviceContextSpecWin::~nsDeviceContextSpecWin()
 {
@@ -610,7 +610,7 @@ nsPrinterEnumeratorWin::~nsPrinterEnumeratorWin()
   // GlobalPrinters::GetInstance()->FreeGlobalPrinters();
 }
 
-NS_IMPL_ISUPPORTS1(nsPrinterEnumeratorWin, nsIPrinterEnumerator)
+NS_IMPL_ISUPPORTS(nsPrinterEnumeratorWin, nsIPrinterEnumerator)
 
 //----------------------------------------------------------------------------------
 // Return the Default Printer name
diff --git a/widget/windows/nsFilePicker.cpp b/widget/windows/nsFilePicker.cpp
index 63446aae621473e8eb16e60d83a2db86f5a5431a..eb2e79c3dc6d9d997f1e023301dd1b804c86acf6 100644
--- a/widget/windows/nsFilePicker.cpp
+++ b/widget/windows/nsFilePicker.cpp
@@ -185,7 +185,7 @@ nsFilePicker::~nsFilePicker()
   CoUninitialize();
 }
 
-NS_IMPL_ISUPPORTS1(nsFilePicker, nsIFilePicker)
+NS_IMPL_ISUPPORTS(nsFilePicker, nsIFilePicker)
 
 NS_IMETHODIMP nsFilePicker::Init(nsIDOMWindow *aParent, const nsAString& aTitle, int16_t aMode)
 {
diff --git a/widget/windows/nsNativeThemeWin.cpp b/widget/windows/nsNativeThemeWin.cpp
index 41e2973707d270e575978c2ccc4ed27e2cbf6db6..e6f147d0c6372774bc1baa628dac46f346121760 100644
--- a/widget/windows/nsNativeThemeWin.cpp
+++ b/widget/windows/nsNativeThemeWin.cpp
@@ -44,7 +44,7 @@ using namespace mozilla::widget;
 extern PRLogModuleInfo* gWindowsLog;
 #endif
 
-NS_IMPL_ISUPPORTS_INHERITED1(nsNativeThemeWin, nsNativeTheme, nsITheme)
+NS_IMPL_ISUPPORTS_INHERITED(nsNativeThemeWin, nsNativeTheme, nsITheme)
 
 nsNativeThemeWin::nsNativeThemeWin() :
   mProgressDeterminateTimeStamp(TimeStamp::Now()),
diff --git a/widget/windows/nsPrintSettingsWin.cpp b/widget/windows/nsPrintSettingsWin.cpp
index 12e862ca44b968e1b8f9e1236a1064aef398a76e..782ba5eeb8b737c6aa155178484c7b58901c6985 100644
--- a/widget/windows/nsPrintSettingsWin.cpp
+++ b/widget/windows/nsPrintSettingsWin.cpp
@@ -5,9 +5,9 @@
 #include "nsPrintSettingsWin.h"
 #include "nsCRT.h"
 
-NS_IMPL_ISUPPORTS_INHERITED1(nsPrintSettingsWin, 
-                             nsPrintSettings, 
-                             nsIPrintSettingsWin)
+NS_IMPL_ISUPPORTS_INHERITED(nsPrintSettingsWin, 
+                            nsPrintSettings, 
+                            nsIPrintSettingsWin)
 
 /** ---------------------------------------------------
  *  See documentation in nsPrintSettingsWin.h
diff --git a/widget/windows/nsScreenManagerWin.cpp b/widget/windows/nsScreenManagerWin.cpp
index 6f7dd04eee510225578c84341a5dccf78e036c30..c0c1b24caa566303a5c4a63e18f08a50e72ddecd 100644
--- a/widget/windows/nsScreenManagerWin.cpp
+++ b/widget/windows/nsScreenManagerWin.cpp
@@ -26,7 +26,7 @@ nsScreenManagerWin :: ~nsScreenManagerWin()
 
 
 // addref, release, QI
-NS_IMPL_ISUPPORTS1(nsScreenManagerWin, nsIScreenManager)
+NS_IMPL_ISUPPORTS(nsScreenManagerWin, nsIScreenManager)
 
 
 //
diff --git a/widget/windows/nsSound.cpp b/widget/windows/nsSound.cpp
index 3c7b0ac24348742db35d61e76936a26bb4cdd355..9f50a3a0eb7da4d409aa1302493751b895b224dc 100644
--- a/widget/windows/nsSound.cpp
+++ b/widget/windows/nsSound.cpp
@@ -102,7 +102,7 @@ nsSoundPlayer::SoundReleaser::Run()
 #define SND_PURGE 0
 #endif
 
-NS_IMPL_ISUPPORTS2(nsSound, nsISound, nsIStreamLoaderObserver)
+NS_IMPL_ISUPPORTS(nsSound, nsISound, nsIStreamLoaderObserver)
 
 
 nsSound::nsSound()
diff --git a/widget/windows/winrt/UIAAccessibilityBridge.cpp b/widget/windows/winrt/UIAAccessibilityBridge.cpp
index b4562afa7bf595d676ef299394f6b1ce669b6f0b..ffb33c537850ff38b6b70d17b31d5541d67e478c 100644
--- a/widget/windows/winrt/UIAAccessibilityBridge.cpp
+++ b/widget/windows/winrt/UIAAccessibilityBridge.cpp
@@ -27,7 +27,7 @@ namespace winrt {
 
 using namespace Microsoft::WRL;
 
-NS_IMPL_ISUPPORTS1(AccessibilityBridge, nsIObserver)
+NS_IMPL_ISUPPORTS(AccessibilityBridge, nsIObserver)
 
 nsresult
 AccessibilityBridge::Observe(nsISupports *aSubject, const char *aTopic, const char16_t *aData)
diff --git a/widget/windows/winrt/WakeLockListener.cpp b/widget/windows/winrt/WakeLockListener.cpp
index b9e937499c359436566cccef8cc8da377c76db9c..2745b0a2934735a4ec9b406ac1bb891f56d7aa80 100644
--- a/widget/windows/winrt/WakeLockListener.cpp
+++ b/widget/windows/winrt/WakeLockListener.cpp
@@ -7,7 +7,7 @@
 
 using namespace mozilla::widget::winrt;
 
-NS_IMPL_ISUPPORTS1(WakeLockListener, nsIDOMMozWakeLockListener)
+NS_IMPL_ISUPPORTS(WakeLockListener, nsIDOMMozWakeLockListener)
 
 NS_IMETHODIMP
 WakeLockListener::Callback(const nsAString& aTopic, const nsAString& aState)
diff --git a/widget/windows/winrt/nsMetroFilePicker.cpp b/widget/windows/winrt/nsMetroFilePicker.cpp
index 5ba92fd776ea95ebd41e13f1046fd6752539e12a..0d9097fa514798f3e068b9137f071ca0966bde77 100644
--- a/widget/windows/winrt/nsMetroFilePicker.cpp
+++ b/widget/windows/winrt/nsMetroFilePicker.cpp
@@ -34,7 +34,7 @@ nsMetroFilePicker::~nsMetroFilePicker()
 {
 }
 
-NS_IMPL_ISUPPORTS1(nsMetroFilePicker, nsIFilePicker)
+NS_IMPL_ISUPPORTS(nsMetroFilePicker, nsIFilePicker)
 
 NS_IMETHODIMP
 nsMetroFilePicker::Init(nsIDOMWindow *parent, const nsAString& title, int16_t mode)
diff --git a/widget/windows/winrt/nsWinMetroUtils.cpp b/widget/windows/winrt/nsWinMetroUtils.cpp
index 8de0b6a85b7452fa8c60d29ef0d06c11bbafb501..67cff5dd53357845447a684bb27324008d136802 100644
--- a/widget/windows/winrt/nsWinMetroUtils.cpp
+++ b/widget/windows/winrt/nsWinMetroUtils.cpp
@@ -38,7 +38,7 @@ namespace widget {
 
 bool nsWinMetroUtils::sUpdatePending = false;
 
-NS_IMPL_ISUPPORTS1(nsWinMetroUtils, nsIWinMetroUtils)
+NS_IMPL_ISUPPORTS(nsWinMetroUtils, nsIWinMetroUtils)
 
 nsWinMetroUtils::nsWinMetroUtils()
 {
diff --git a/widget/xpwidgets/GfxInfoBase.cpp b/widget/xpwidgets/GfxInfoBase.cpp
index 0397bccf2ba9cc60ea49545d03aab20243ea947c..c263053be3443a1ef5745a8f57f48add124a79c1 100644
--- a/widget/xpwidgets/GfxInfoBase.cpp
+++ b/widget/xpwidgets/GfxInfoBase.cpp
@@ -67,7 +67,7 @@ public:
   }
 };
 
-NS_IMPL_ISUPPORTS1(ShutdownObserver, nsIObserver)
+NS_IMPL_ISUPPORTS(ShutdownObserver, nsIObserver)
 
 void InitGfxDriverInfoShutdownObserver()
 {
@@ -89,7 +89,7 @@ void InitGfxDriverInfoShutdownObserver()
 using namespace mozilla::widget;
 using namespace mozilla;
 
-NS_IMPL_ISUPPORTS3(GfxInfoBase, nsIGfxInfo, nsIObserver, nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(GfxInfoBase, nsIGfxInfo, nsIObserver, nsISupportsWeakReference)
 
 #define BLACKLIST_PREF_BRANCH "gfx.blacklist."
 #define SUGGESTED_VERSION_PREF BLACKLIST_PREF_BRANCH "suggested-driver-version"
diff --git a/widget/xpwidgets/GfxInfoX11.cpp b/widget/xpwidgets/GfxInfoX11.cpp
index 20db6b4f8f546277c505d931063b4d991311efda..b7f7576362e3712b1f9da2bd429193352b5eee64 100644
--- a/widget/xpwidgets/GfxInfoX11.cpp
+++ b/widget/xpwidgets/GfxInfoX11.cpp
@@ -24,7 +24,7 @@ namespace mozilla {
 namespace widget {
 
 #ifdef DEBUG
-NS_IMPL_ISUPPORTS_INHERITED1(GfxInfo, GfxInfoBase, nsIGfxInfoDebug)
+NS_IMPL_ISUPPORTS_INHERITED(GfxInfo, GfxInfoBase, nsIGfxInfoDebug)
 #endif
 
 // these global variables will be set when firing the glxtest process
diff --git a/widget/xpwidgets/PuppetWidget.cpp b/widget/xpwidgets/PuppetWidget.cpp
index edb2f740a7bfc6b46f12f0671aedc518d30d4d47..c8574f5d96381927764de7ea2a6c03fc31dd84a8 100644
--- a/widget/xpwidgets/PuppetWidget.cpp
+++ b/widget/xpwidgets/PuppetWidget.cpp
@@ -72,8 +72,8 @@ MightNeedIMEFocus(const nsWidgetInitData* aInitData)
 // Arbitrary, fungible.
 const size_t PuppetWidget::kMaxDimension = 4000;
 
-NS_IMPL_ISUPPORTS_INHERITED1(PuppetWidget, nsBaseWidget,
-                             nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS_INHERITED(PuppetWidget, nsBaseWidget,
+                            nsISupportsWeakReference)
 
 PuppetWidget::PuppetWidget(TabChild* aTabChild)
   : mTabChild(aTabChild)
@@ -855,7 +855,7 @@ PuppetScreen::SetRotation(uint32_t aRotation)
   return NS_ERROR_NOT_AVAILABLE;
 }
 
-NS_IMPL_ISUPPORTS1(PuppetScreenManager, nsIScreenManager)
+NS_IMPL_ISUPPORTS(PuppetScreenManager, nsIScreenManager)
 
 PuppetScreenManager::PuppetScreenManager()
 {
diff --git a/widget/xpwidgets/nsBaseAppShell.cpp b/widget/xpwidgets/nsBaseAppShell.cpp
index 6931d35b61c76e091db415c6789cc5ff3b1442d7..aa6468554b99030b4eaf2a5f6f71323877a567e4 100644
--- a/widget/xpwidgets/nsBaseAppShell.cpp
+++ b/widget/xpwidgets/nsBaseAppShell.cpp
@@ -19,7 +19,7 @@
 // next thread event for at most this many ticks:
 #define THREAD_EVENT_STARVATION_LIMIT PR_MillisecondsToInterval(20)
 
-NS_IMPL_ISUPPORTS3(nsBaseAppShell, nsIAppShell, nsIThreadObserver, nsIObserver)
+NS_IMPL_ISUPPORTS(nsBaseAppShell, nsIAppShell, nsIThreadObserver, nsIObserver)
 
 nsBaseAppShell::nsBaseAppShell()
   : mSuspendNativeCount(0)
diff --git a/widget/xpwidgets/nsBaseClipboard.cpp b/widget/xpwidgets/nsBaseClipboard.cpp
index 9ee0ac85d60330ba52eb4a5d9c0e85926e318de4..2721029dfd3b3b9414276204e7949674e0079106 100644
--- a/widget/xpwidgets/nsBaseClipboard.cpp
+++ b/widget/xpwidgets/nsBaseClipboard.cpp
@@ -25,7 +25,7 @@ nsBaseClipboard::~nsBaseClipboard()
   EmptyClipboard(kFindClipboard);
 }
 
-NS_IMPL_ISUPPORTS1(nsBaseClipboard, nsIClipboard)
+NS_IMPL_ISUPPORTS(nsBaseClipboard, nsIClipboard)
 
 /**
   * Sets the transferable object
diff --git a/widget/xpwidgets/nsBaseDragService.cpp b/widget/xpwidgets/nsBaseDragService.cpp
index 4fd2016a177c0f9161792ca6d0f59c2fc5362456..0a404df18b4da643a7752ab53ce323d9c2a17448 100644
--- a/widget/xpwidgets/nsBaseDragService.cpp
+++ b/widget/xpwidgets/nsBaseDragService.cpp
@@ -58,7 +58,7 @@ nsBaseDragService::~nsBaseDragService()
 {
 }
 
-NS_IMPL_ISUPPORTS2(nsBaseDragService, nsIDragService, nsIDragSession)
+NS_IMPL_ISUPPORTS(nsBaseDragService, nsIDragService, nsIDragSession)
 
 //---------------------------------------------------------
 NS_IMETHODIMP
diff --git a/widget/xpwidgets/nsBaseFilePicker.cpp b/widget/xpwidgets/nsBaseFilePicker.cpp
index a79fb2e42793e1620864cb231b24bef22640c2c4..c513f26e4049f78fa54ac4f4d2263adb9faa869d 100644
--- a/widget/xpwidgets/nsBaseFilePicker.cpp
+++ b/widget/xpwidgets/nsBaseFilePicker.cpp
@@ -111,7 +111,7 @@ private:
   nsCOMPtr<nsISimpleEnumerator> mIterator;
 };
 
-NS_IMPL_ISUPPORTS1(nsBaseFilePickerEnumerator, nsISimpleEnumerator)
+NS_IMPL_ISUPPORTS(nsBaseFilePickerEnumerator, nsISimpleEnumerator)
 
 nsBaseFilePicker::nsBaseFilePicker()
   : mAddToRecentDocs(true)
diff --git a/widget/xpwidgets/nsBaseScreen.cpp b/widget/xpwidgets/nsBaseScreen.cpp
index dc807ab4a9a0775a663770bfc8ef4e4947533fab..9ddbeb8ac008868f0cfae0886f2fa0f57e611905 100644
--- a/widget/xpwidgets/nsBaseScreen.cpp
+++ b/widget/xpwidgets/nsBaseScreen.cpp
@@ -9,7 +9,7 @@
 
 #include "nsBaseScreen.h"
 
-NS_IMPL_ISUPPORTS1(nsBaseScreen, nsIScreen)
+NS_IMPL_ISUPPORTS(nsBaseScreen, nsIScreen)
 
 nsBaseScreen::nsBaseScreen()
 {
diff --git a/widget/xpwidgets/nsBaseWidget.cpp b/widget/xpwidgets/nsBaseWidget.cpp
index 383e3da3845df809163ef4b0b4b4a35cad0b54da..830fbae0e78fe5f5e16aad86c6b5e1a4d7e36449 100644
--- a/widget/xpwidgets/nsBaseWidget.cpp
+++ b/widget/xpwidgets/nsBaseWidget.cpp
@@ -82,7 +82,7 @@ bool            gDisableNativeTheme               = false;
 int32_t nsIWidget::sPointerIdCounter = 0;
 
 // nsBaseWidget
-NS_IMPL_ISUPPORTS1(nsBaseWidget, nsIWidget)
+NS_IMPL_ISUPPORTS(nsBaseWidget, nsIWidget)
 
 
 nsAutoRollup::nsAutoRollup()
@@ -137,7 +137,7 @@ nsBaseWidget::nsBaseWidget()
   nsContentUtils::RegisterShutdownObserver(mShutdownObserver);
 }
 
-NS_IMPL_ISUPPORTS1(WidgetShutdownObserver, nsIObserver)
+NS_IMPL_ISUPPORTS(WidgetShutdownObserver, nsIObserver)
 
 NS_IMETHODIMP
 WidgetShutdownObserver::Observe(nsISupports *aSubject,
@@ -1718,7 +1718,7 @@ class Debug_PrefObserver MOZ_FINAL : public nsIObserver {
     NS_DECL_NSIOBSERVER
 };
 
-NS_IMPL_ISUPPORTS1(Debug_PrefObserver, nsIObserver)
+NS_IMPL_ISUPPORTS(Debug_PrefObserver, nsIObserver)
 
 NS_IMETHODIMP
 Debug_PrefObserver::Observe(nsISupports* subject, const char* topic,
diff --git a/widget/xpwidgets/nsClipboardHelper.cpp b/widget/xpwidgets/nsClipboardHelper.cpp
index e18c75c096ebed6726d1bcdd727099d82d57a27f..d17c597f872e0ade7c424f0fd2008c7ca5e0dbef 100644
--- a/widget/xpwidgets/nsClipboardHelper.cpp
+++ b/widget/xpwidgets/nsClipboardHelper.cpp
@@ -19,7 +19,7 @@
 #include "nsITransferable.h"
 #include "nsReadableUtils.h"
 
-NS_IMPL_ISUPPORTS1(nsClipboardHelper, nsIClipboardHelper)
+NS_IMPL_ISUPPORTS(nsClipboardHelper, nsIClipboardHelper)
 
 /*****************************************************************************
  * nsClipboardHelper ctor / dtor
diff --git a/widget/xpwidgets/nsClipboardPrivacyHandler.cpp b/widget/xpwidgets/nsClipboardPrivacyHandler.cpp
index c489d37462ddba51f0105785064410d6a12f102b..625b5875684a00b936b2133e9377408cb2ab4804 100644
--- a/widget/xpwidgets/nsClipboardPrivacyHandler.cpp
+++ b/widget/xpwidgets/nsClipboardPrivacyHandler.cpp
@@ -25,7 +25,7 @@ using namespace mozilla;
 
 #define NS_MOZ_DATA_FROM_PRIVATEBROWSING "application/x-moz-private-browsing"
 
-NS_IMPL_ISUPPORTS2(nsClipboardPrivacyHandler, nsIObserver, nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(nsClipboardPrivacyHandler, nsIObserver, nsISupportsWeakReference)
 
 nsresult
 nsClipboardPrivacyHandler::Init()
diff --git a/widget/xpwidgets/nsClipboardProxy.cpp b/widget/xpwidgets/nsClipboardProxy.cpp
index fdd32e21fd31f58b71cc52ea05c683c5e292fb9a..2f345a419672d28785c947b9e325145f49e07723 100644
--- a/widget/xpwidgets/nsClipboardProxy.cpp
+++ b/widget/xpwidgets/nsClipboardProxy.cpp
@@ -12,7 +12,7 @@
 using namespace mozilla;
 using mozilla::dom::ContentChild;
 
-NS_IMPL_ISUPPORTS1(nsClipboardProxy, nsIClipboard)
+NS_IMPL_ISUPPORTS(nsClipboardProxy, nsIClipboard)
 
 nsClipboardProxy::nsClipboardProxy()
 {
diff --git a/widget/xpwidgets/nsColorPickerProxy.cpp b/widget/xpwidgets/nsColorPickerProxy.cpp
index 319b0ad6a24102bb980b3d6c8e65f3dd699ef083..4409470a583ff416773a36619aef8b9219291cfb 100644
--- a/widget/xpwidgets/nsColorPickerProxy.cpp
+++ b/widget/xpwidgets/nsColorPickerProxy.cpp
@@ -10,7 +10,7 @@
 
 using namespace mozilla::dom;
 
-NS_IMPL_ISUPPORTS1(nsColorPickerProxy, nsIColorPicker)
+NS_IMPL_ISUPPORTS(nsColorPickerProxy, nsIColorPicker)
 
 /* void init (in nsIDOMWindow parent, in AString title, in short mode); */
 NS_IMETHODIMP
diff --git a/widget/xpwidgets/nsFilePickerProxy.cpp b/widget/xpwidgets/nsFilePickerProxy.cpp
index e85927e703f3b529b4987d36ecf23e5921a8a1a9..ec2956a9724cd7dd18d819b0ee2317ace126eba1 100644
--- a/widget/xpwidgets/nsFilePickerProxy.cpp
+++ b/widget/xpwidgets/nsFilePickerProxy.cpp
@@ -14,7 +14,7 @@
 
 using namespace mozilla::dom;
 
-NS_IMPL_ISUPPORTS1(nsFilePickerProxy, nsIFilePicker)
+NS_IMPL_ISUPPORTS(nsFilePickerProxy, nsIFilePicker)
 
 nsFilePickerProxy::nsFilePickerProxy()
 {
diff --git a/widget/xpwidgets/nsHTMLFormatConverter.cpp b/widget/xpwidgets/nsHTMLFormatConverter.cpp
index 1cd0ff4719f794307da371d60a9421b5b3cf1957..1641a6044c1804cae3423214005a47b696dbef03 100644
--- a/widget/xpwidgets/nsHTMLFormatConverter.cpp
+++ b/widget/xpwidgets/nsHTMLFormatConverter.cpp
@@ -27,7 +27,7 @@ nsHTMLFormatConverter::~nsHTMLFormatConverter()
 {
 }
 
-NS_IMPL_ISUPPORTS1(nsHTMLFormatConverter, nsIFormatConverter)
+NS_IMPL_ISUPPORTS(nsHTMLFormatConverter, nsIFormatConverter)
 
 //
 // GetInputDataFlavors
diff --git a/widget/xpwidgets/nsIdleService.cpp b/widget/xpwidgets/nsIdleService.cpp
index ec06d43bf742bcc0ee3c579e86f575c1c0660e1c..b21283166276b5672b3b7977a1cc70e5c2d2b4c8 100644
--- a/widget/xpwidgets/nsIdleService.cpp
+++ b/widget/xpwidgets/nsIdleService.cpp
@@ -64,7 +64,7 @@ public:
 ////////////////////////////////////////////////////////////////////////////////
 //// nsIdleServiceDaily
 
-NS_IMPL_ISUPPORTS2(nsIdleServiceDaily, nsIObserver, nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(nsIdleServiceDaily, nsIObserver, nsISupportsWeakReference)
 
 NS_IMETHODIMP
 nsIdleServiceDaily::Observe(nsISupports *,
@@ -416,7 +416,7 @@ nsIdleService::~nsIdleService()
   gIdleService = nullptr;
 }
 
-NS_IMPL_ISUPPORTS2(nsIdleService, nsIIdleService, nsIIdleServiceInternal)
+NS_IMPL_ISUPPORTS(nsIdleService, nsIIdleService, nsIIdleServiceInternal)
 
 NS_IMETHODIMP
 nsIdleService::AddIdleObserver(nsIObserver* aObserver, uint32_t aIdleTimeInS)
diff --git a/widget/xpwidgets/nsNativeTheme.cpp b/widget/xpwidgets/nsNativeTheme.cpp
index 22aa73f173a89413aab2ee45ede9c7e12615928d..d647d85c28f00c26de23803120b4a64475079abb 100644
--- a/widget/xpwidgets/nsNativeTheme.cpp
+++ b/widget/xpwidgets/nsNativeTheme.cpp
@@ -38,7 +38,7 @@ nsNativeTheme::nsNativeTheme()
 {
 }
 
-NS_IMPL_ISUPPORTS1(nsNativeTheme, nsITimerCallback)
+NS_IMPL_ISUPPORTS(nsNativeTheme, nsITimerCallback)
 
 nsIPresShell *
 nsNativeTheme::GetPresShell(nsIFrame* aFrame)
diff --git a/widget/xpwidgets/nsPrintOptionsImpl.cpp b/widget/xpwidgets/nsPrintOptionsImpl.cpp
index f32ab234f25c18882c92b4736607774ed7e31caa..8774b51548fe1a0345f6cc2c6c13b7c19344e5ef 100644
--- a/widget/xpwidgets/nsPrintOptionsImpl.cpp
+++ b/widget/xpwidgets/nsPrintOptionsImpl.cpp
@@ -25,7 +25,7 @@
 
 using namespace mozilla;
 
-NS_IMPL_ISUPPORTS2(nsPrintOptions, nsIPrintOptions, nsIPrintSettingsService)
+NS_IMPL_ISUPPORTS(nsPrintOptions, nsIPrintOptions, nsIPrintSettingsService)
 
 // Pref Constants
 static const char kMarginTop[]       = "print_margin_top";
diff --git a/widget/xpwidgets/nsPrintSession.cpp b/widget/xpwidgets/nsPrintSession.cpp
index d87f3695b5c2c8bf8d6760efcaf25d858c60cdb4..c4f265db2ff9c812fdc50dd6a733e37b1cfeb740 100644
--- a/widget/xpwidgets/nsPrintSession.cpp
+++ b/widget/xpwidgets/nsPrintSession.cpp
@@ -9,7 +9,7 @@
 //***    nsPrintSession
 //*****************************************************************************
 
-NS_IMPL_ISUPPORTS2(nsPrintSession, nsIPrintSession, nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(nsPrintSession, nsIPrintSession, nsISupportsWeakReference)
                              
 //-----------------------------------------------------------------------------
 nsPrintSession::nsPrintSession()
diff --git a/widget/xpwidgets/nsPrintSettingsImpl.cpp b/widget/xpwidgets/nsPrintSettingsImpl.cpp
index 19c007a4ec0f49c3508941513f2ff49062ae649b..d7d59e0f2dd29aaf4d8c906d3a31611c861c88a3 100644
--- a/widget/xpwidgets/nsPrintSettingsImpl.cpp
+++ b/widget/xpwidgets/nsPrintSettingsImpl.cpp
@@ -9,7 +9,7 @@
 
 #define DEFAULT_MARGIN_WIDTH 0.5
 
-NS_IMPL_ISUPPORTS1(nsPrintSettings, nsIPrintSettings)
+NS_IMPL_ISUPPORTS(nsPrintSettings, nsIPrintSettings)
 
 /** ---------------------------------------------------
  *  See documentation in nsPrintSettingsImpl.h
diff --git a/widget/xpwidgets/nsTransferable.cpp b/widget/xpwidgets/nsTransferable.cpp
index a3b89c5f0cddf7912ebb4fb047b9d3a3c0eac0bb..094836bf8517fbbf8e7dd93dc425c8f16daba641 100644
--- a/widget/xpwidgets/nsTransferable.cpp
+++ b/widget/xpwidgets/nsTransferable.cpp
@@ -35,7 +35,7 @@ Notes to self:
 #include "nsILoadContext.h"
 #include "nsAutoPtr.h"
 
-NS_IMPL_ISUPPORTS1(nsTransferable, nsITransferable)
+NS_IMPL_ISUPPORTS(nsTransferable, nsITransferable)
 
 uint32_t GetDataForFlavor (const nsTArray<DataStruct>& aArray,
                            const char* aDataFlavor)
diff --git a/xpcom/base/AvailableMemoryTracker.cpp b/xpcom/base/AvailableMemoryTracker.cpp
index 93d9b298adfa8deef7c1aa8f842d25abce2b0697..c21d89cea22e41ce8d9a3b30fde055a88c01953c 100644
--- a/xpcom/base/AvailableMemoryTracker.cpp
+++ b/xpcom/base/AvailableMemoryTracker.cpp
@@ -383,7 +383,7 @@ public:
     return NS_OK;
   }
 };
-NS_IMPL_ISUPPORTS1(LowEventsReporter, nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(LowEventsReporter, nsIMemoryReporter)
 
 #endif // defined(XP_WIN)
 
@@ -400,7 +400,7 @@ public:
   NS_DECL_NSIRUNNABLE
 };
 
-NS_IMPL_ISUPPORTS1(nsJemallocFreeDirtyPagesRunnable, nsIRunnable)
+NS_IMPL_ISUPPORTS(nsJemallocFreeDirtyPagesRunnable, nsIRunnable)
 
 NS_IMETHODIMP
 nsJemallocFreeDirtyPagesRunnable::Run()
@@ -431,7 +431,7 @@ private:
   static bool sFreeDirtyPages;
 };
 
-NS_IMPL_ISUPPORTS1(nsMemoryPressureWatcher, nsIObserver)
+NS_IMPL_ISUPPORTS(nsMemoryPressureWatcher, nsIObserver)
 
 bool nsMemoryPressureWatcher::sFreeDirtyPages = false;
 
diff --git a/xpcom/base/SystemMemoryReporter.cpp b/xpcom/base/SystemMemoryReporter.cpp
index ca88894bc405d8160a17acaba1114d43b936e704..e0ae56eebad2f0a5b7b0d3841737a01c3dc5dda8 100644
--- a/xpcom/base/SystemMemoryReporter.cpp
+++ b/xpcom/base/SystemMemoryReporter.cpp
@@ -726,7 +726,7 @@ private:
 #undef REPORT
 };
 
-NS_IMPL_ISUPPORTS1(SystemReporter, nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(SystemReporter, nsIMemoryReporter)
 
 // Keep this in sync with SystemReporter::ProcessSizeKind!
 const char* SystemReporter::kindPathSuffixes[] = {
diff --git a/xpcom/base/VisualEventTracer.cpp b/xpcom/base/VisualEventTracer.cpp
index fde4116af45d4ef67e76a4e0de754d5511ec5978..8debcd9ca4e38234161c2e885f3ae4e1390718b4 100644
--- a/xpcom/base/VisualEventTracer.cpp
+++ b/xpcom/base/VisualEventTracer.cpp
@@ -518,7 +518,7 @@ protected:
   TimeStamp mProfilerStart;
 };
 
-NS_IMPL_ISUPPORTS1(VisualEventTracerLog, nsIVisualEventTracerLog)
+NS_IMPL_ISUPPORTS(VisualEventTracerLog, nsIVisualEventTracerLog)
 
 VisualEventTracerLog::~VisualEventTracerLog()
 {
@@ -607,7 +607,7 @@ VisualEventTracerLog::WriteToProfilingFile()
   return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS1(VisualEventTracer, nsIVisualEventTracer)
+NS_IMPL_ISUPPORTS(VisualEventTracer, nsIVisualEventTracer)
 
 NS_IMETHODIMP
 VisualEventTracer::Start(const uint32_t aMaxBacklogSeconds)
diff --git a/xpcom/base/nsConsoleMessage.cpp b/xpcom/base/nsConsoleMessage.cpp
index 864b9fee5455617fa95e764e645b244e5558a65c..ca9d728105e57a8b268eb1037d908ef6b396463f 100644
--- a/xpcom/base/nsConsoleMessage.cpp
+++ b/xpcom/base/nsConsoleMessage.cpp
@@ -10,7 +10,7 @@
 #include "nsConsoleMessage.h"
 #include "jsapi.h"
 
-NS_IMPL_ISUPPORTS1(nsConsoleMessage, nsIConsoleMessage)
+NS_IMPL_ISUPPORTS(nsConsoleMessage, nsIConsoleMessage)
 
 nsConsoleMessage::nsConsoleMessage()
     :  mTimeStamp(0),
diff --git a/xpcom/base/nsConsoleService.cpp b/xpcom/base/nsConsoleService.cpp
index dfbc85643f7250dbd90712b89949d43ff4820c1b..a86f08d77690fbece9e5238ce49e8f87ab98e5e3 100644
--- a/xpcom/base/nsConsoleService.cpp
+++ b/xpcom/base/nsConsoleService.cpp
@@ -34,8 +34,8 @@ using namespace mozilla;
 NS_IMPL_ADDREF(nsConsoleService)
 NS_IMPL_RELEASE(nsConsoleService)
 NS_IMPL_CLASSINFO(nsConsoleService, nullptr, nsIClassInfo::THREADSAFE | nsIClassInfo::SINGLETON, NS_CONSOLESERVICE_CID)
-NS_IMPL_QUERY_INTERFACE1_CI(nsConsoleService, nsIConsoleService)
-NS_IMPL_CI_INTERFACE_GETTER1(nsConsoleService, nsIConsoleService)
+NS_IMPL_QUERY_INTERFACE_CI(nsConsoleService, nsIConsoleService)
+NS_IMPL_CI_INTERFACE_GETTER(nsConsoleService, nsIConsoleService)
 
 static bool sLoggingEnabled = true;
 static bool sLoggingBuffered = true;
diff --git a/xpcom/base/nsCycleCollector.cpp b/xpcom/base/nsCycleCollector.cpp
index b819a121e042f1b560b720e50e61fbb670859c19..7549ab972c7ba339fb3fc81abb0d0d6035860916 100644
--- a/xpcom/base/nsCycleCollector.cpp
+++ b/xpcom/base/nsCycleCollector.cpp
@@ -1250,7 +1250,7 @@ private:
     void CleanupAfterCollection();
 };
 
-NS_IMPL_ISUPPORTS1(nsCycleCollector, nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(nsCycleCollector, nsIMemoryReporter)
 
 /**
  * GraphWalker is templatized over a Visitor class that must provide
@@ -1807,7 +1807,7 @@ private:
     mozilla::LinkedList<CCGraphDescriber> mDescribers;
 };
 
-NS_IMPL_ISUPPORTS1(nsCycleCollectorLogger, nsICycleCollectorListener)
+NS_IMPL_ISUPPORTS(nsCycleCollectorLogger, nsICycleCollectorListener)
 
 nsresult
 nsCycleCollectorLoggerConstructor(nsISupports* aOuter,
diff --git a/xpcom/base/nsDebugImpl.cpp b/xpcom/base/nsDebugImpl.cpp
index 018d81624494f3e71b1049b5d40533dc3bb78c9f..d66ba62607149760c0f5cba0e1d036b63f6e9bc1 100644
--- a/xpcom/base/nsDebugImpl.cpp
+++ b/xpcom/base/nsDebugImpl.cpp
@@ -75,7 +75,7 @@ static const char *sMultiprocessDescription = nullptr;
 
 static Atomic<int32_t> gAssertionCount;
 
-NS_IMPL_QUERY_INTERFACE2(nsDebugImpl, nsIDebug, nsIDebug2)
+NS_IMPL_QUERY_INTERFACE(nsDebugImpl, nsIDebug, nsIDebug2)
 
 NS_IMETHODIMP_(MozExternalRefCountType)
 nsDebugImpl::AddRef()
diff --git a/xpcom/base/nsDumpUtils.cpp b/xpcom/base/nsDumpUtils.cpp
index c50ba323fc524ae40b00d6dd9a719a136fd84b8c..852602e1c39eac61ae1944503a8a6d6d11285765 100644
--- a/xpcom/base/nsDumpUtils.cpp
+++ b/xpcom/base/nsDumpUtils.cpp
@@ -63,7 +63,7 @@ DumpSignalHandler(int aSignum)
   }
 }
 
-NS_IMPL_ISUPPORTS1(FdWatcher, nsIObserver);
+NS_IMPL_ISUPPORTS(FdWatcher, nsIObserver);
 
 void FdWatcher::Init()
 {
diff --git a/xpcom/base/nsErrorService.cpp b/xpcom/base/nsErrorService.cpp
index 85dd7a280a8fa29efae8c62c9944be4bb510599d..297a4fc597587a24789453ab381ce00ef3731ac0 100644
--- a/xpcom/base/nsErrorService.cpp
+++ b/xpcom/base/nsErrorService.cpp
@@ -60,7 +60,7 @@ nsInt2StrHashtable::Remove(uint32_t key)
 
 ////////////////////////////////////////////////////////////////////////////////
 
-NS_IMPL_ISUPPORTS1(nsErrorService, nsIErrorService)
+NS_IMPL_ISUPPORTS(nsErrorService, nsIErrorService)
 
 nsresult
 nsErrorService::Create(nsISupports* outer, const nsIID& aIID, void* *aInstancePtr)
diff --git a/xpcom/base/nsGZFileWriter.cpp b/xpcom/base/nsGZFileWriter.cpp
index 166e199d54cf8aa269beb8f7197789f98da57759..c4d7e3a9dd61dda2988bf536a3eef0675d57c9a5 100644
--- a/xpcom/base/nsGZFileWriter.cpp
+++ b/xpcom/base/nsGZFileWriter.cpp
@@ -16,7 +16,7 @@
 #include <unistd.h>
 #endif
 
-NS_IMPL_ISUPPORTS1(nsGZFileWriter, nsIGZFileWriter)
+NS_IMPL_ISUPPORTS(nsGZFileWriter, nsIGZFileWriter)
 
 nsGZFileWriter::nsGZFileWriter()
   : mInitialized(false)
diff --git a/xpcom/base/nsIStatusReporter.idl b/xpcom/base/nsIStatusReporter.idl
index 36a1b1b6d32aabefe3e23cfe4948a0844f2ec4db..d1045fda4b97c603b26d695dc7d273a6437942a5 100644
--- a/xpcom/base/nsIStatusReporter.idl
+++ b/xpcom/base/nsIStatusReporter.idl
@@ -75,7 +75,7 @@ interface nsIStatusReporterManager : nsISupports
       NS_IMETHOD GetDescription(nsACString &desc)                             \
         { _desc_Function(desc); return NS_OK; }                               \
     };                                                                        \
-    NS_IMPL_ISUPPORTS1(StatusReporter_##_classname, nsIStatusReporter)
+    NS_IMPL_ISUPPORTS(StatusReporter_##_classname, nsIStatusReporter)
 
 #define NS_STATUS_REPORTER_NAME(_classname)  StatusReporter_##_classname
 
diff --git a/xpcom/base/nsInterfaceRequestorAgg.cpp b/xpcom/base/nsInterfaceRequestorAgg.cpp
index b49a8ff9a8eed3a4acb7a0030b67f77d25558081..7bb8555f06052d7295814b21ec6c7c12fa885acd 100644
--- a/xpcom/base/nsInterfaceRequestorAgg.cpp
+++ b/xpcom/base/nsInterfaceRequestorAgg.cpp
@@ -34,7 +34,7 @@ private:
   nsCOMPtr<nsIEventTarget> mConsumerTarget;
 };
 
-NS_IMPL_ISUPPORTS1(nsInterfaceRequestorAgg, nsIInterfaceRequestor)
+NS_IMPL_ISUPPORTS(nsInterfaceRequestorAgg, nsIInterfaceRequestor)
 
 NS_IMETHODIMP
 nsInterfaceRequestorAgg::GetInterface(const nsIID &aIID, void **aResult)
diff --git a/xpcom/base/nsMacUtilsImpl.cpp b/xpcom/base/nsMacUtilsImpl.cpp
index bf9828ad8499715fc97a82c26f6f53c82e20548c..a6f6004cca4987164d9be13e45c35988c4cd652c 100644
--- a/xpcom/base/nsMacUtilsImpl.cpp
+++ b/xpcom/base/nsMacUtilsImpl.cpp
@@ -7,7 +7,7 @@
 
 #include <CoreFoundation/CoreFoundation.h>
 
-NS_IMPL_ISUPPORTS1(nsMacUtilsImpl, nsIMacUtils)
+NS_IMPL_ISUPPORTS(nsMacUtilsImpl, nsIMacUtils)
 
 nsresult nsMacUtilsImpl::GetArchString(nsAString& archString)
 {
diff --git a/xpcom/base/nsMemoryImpl.cpp b/xpcom/base/nsMemoryImpl.cpp
index a544e0df80648b04858300aeab13273d2b23cc5f..8fd6dddd83f270aba8ddaca40c1c8932124b76d3 100644
--- a/xpcom/base/nsMemoryImpl.cpp
+++ b/xpcom/base/nsMemoryImpl.cpp
@@ -25,7 +25,7 @@
 
 static nsMemoryImpl sGlobalMemory;
 
-NS_IMPL_QUERY_INTERFACE1(nsMemoryImpl, nsIMemory)
+NS_IMPL_QUERY_INTERFACE(nsMemoryImpl, nsIMemory)
 
 NS_IMETHODIMP_(void*)
 nsMemoryImpl::Alloc(size_t size)
@@ -175,7 +175,7 @@ nsMemoryImpl::RunFlushers(const char16_t* aReason)
 // XXX need NS_IMPL_STATIC_ADDREF/RELEASE
 NS_IMETHODIMP_(MozExternalRefCountType) nsMemoryImpl::FlushEvent::AddRef() { return 2; }
 NS_IMETHODIMP_(MozExternalRefCountType) nsMemoryImpl::FlushEvent::Release() { return 1; }
-NS_IMPL_QUERY_INTERFACE1(nsMemoryImpl::FlushEvent, nsIRunnable)
+NS_IMPL_QUERY_INTERFACE(nsMemoryImpl::FlushEvent, nsIRunnable)
 
 NS_IMETHODIMP
 nsMemoryImpl::FlushEvent::Run()
diff --git a/xpcom/base/nsMemoryInfoDumper.cpp b/xpcom/base/nsMemoryInfoDumper.cpp
index 52dc0a60ca9c76245920e7e295f753b1460367e6..c725a3544a2e231e9cdc9ae79206765291b6f174 100644
--- a/xpcom/base/nsMemoryInfoDumper.cpp
+++ b/xpcom/base/nsMemoryInfoDumper.cpp
@@ -225,7 +225,7 @@ void OnFifoEnabledChange(const char* /*unused*/, void* /*unused*/)
 } // anonymous namespace
 #endif // MOZ_SUPPORTS_FIFO }
 
-NS_IMPL_ISUPPORTS1(nsMemoryInfoDumper, nsIMemoryInfoDumper)
+NS_IMPL_ISUPPORTS(nsMemoryInfoDumper, nsIMemoryInfoDumper)
 
 nsMemoryInfoDumper::nsMemoryInfoDumper()
 {
@@ -403,7 +403,7 @@ private:
   nsRefPtr<nsGZFileWriter> mWriter;
 };
 
-NS_IMPL_ISUPPORTS1(DumpReportCallback, nsIHandleReportCallback)
+NS_IMPL_ISUPPORTS(DumpReportCallback, nsIHandleReportCallback)
 
 } // namespace mozilla
 
@@ -494,7 +494,7 @@ private:
   nsString mIdentifier;
 };
 
-NS_IMPL_ISUPPORTS1(TempDirMemoryFinishCallback, nsIFinishReportingCallback)
+NS_IMPL_ISUPPORTS(TempDirMemoryFinishCallback, nsIFinishReportingCallback)
 
 NS_IMETHODIMP
 nsMemoryInfoDumper::DumpMemoryInfoToTempDir(const nsAString& aIdentifier,
@@ -712,7 +712,7 @@ private:
   nsCOMPtr<nsISupports> mFinishDumpingData;
 };
 
-NS_IMPL_ISUPPORTS1(FinishReportingCallback, nsIFinishReportingCallback)
+NS_IMPL_ISUPPORTS(FinishReportingCallback, nsIFinishReportingCallback)
 
 NS_IMETHODIMP
 nsMemoryInfoDumper::DumpMemoryReportsToNamedFile(
diff --git a/xpcom/base/nsMemoryReporterManager.cpp b/xpcom/base/nsMemoryReporterManager.cpp
index 90bda2bf0e0d87d9dcd831315e91ac6e64ba1313..8650b26fb95fbc00bf9d9580a8927c59b19fb1da 100644
--- a/xpcom/base/nsMemoryReporterManager.cpp
+++ b/xpcom/base/nsMemoryReporterManager.cpp
@@ -120,7 +120,7 @@ public:
 "closed this process.");
   }
 };
-NS_IMPL_ISUPPORTS1(ResidentUniqueReporter, nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(ResidentUniqueReporter, nsIMemoryReporter)
 
 #elif defined(__DragonFly__) || defined(__FreeBSD__) \
     || defined(__NetBSD__) || defined(__OpenBSD__) \
@@ -513,7 +513,7 @@ public:
       "memory.");
   }
 };
-NS_IMPL_ISUPPORTS1(VsizeMaxContiguousReporter, nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(VsizeMaxContiguousReporter, nsIMemoryReporter)
 #endif
 
 #ifdef HAVE_PRIVATE_REPORTER
@@ -535,7 +535,7 @@ public:
 "pages that have been written to.");
   }
 };
-NS_IMPL_ISUPPORTS1(PrivateReporter, nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(PrivateReporter, nsIMemoryReporter)
 #endif
 
 #ifdef HAVE_VSIZE_AND_RESIDENT_REPORTERS
@@ -562,7 +562,7 @@ public:
 "resources used by the process.");
   }
 };
-NS_IMPL_ISUPPORTS1(VsizeReporter, nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(VsizeReporter, nsIMemoryReporter)
 
 class ResidentReporter MOZ_FINAL : public nsIMemoryReporter
 {
@@ -586,7 +586,7 @@ public:
 "time.");
     }
 };
-NS_IMPL_ISUPPORTS1(ResidentReporter, nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(ResidentReporter, nsIMemoryReporter)
 
 #endif  // HAVE_VSIZE_AND_RESIDENT_REPORTERS
 
@@ -624,7 +624,7 @@ public:
 "they impact performance much less than hard page faults.");
   }
 };
-NS_IMPL_ISUPPORTS1(PageFaultsSoftReporter, nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(PageFaultsSoftReporter, nsIMemoryReporter)
 
 static nsresult
 PageFaultsHardDistinguishedAmount(int64_t* aAmount)
@@ -664,7 +664,7 @@ public:
 "second.");
   }
 };
-NS_IMPL_ISUPPORTS1(PageFaultsHardReporter, nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(PageFaultsHardReporter, nsIMemoryReporter)
 
 #endif  // HAVE_PAGE_FAULT_REPORTERS
 
@@ -755,7 +755,7 @@ public:
     return NS_OK;
   }
 };
-NS_IMPL_ISUPPORTS1(JemallocHeapReporter, nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(JemallocHeapReporter, nsIMemoryReporter)
 
 #endif  // HAVE_JEMALLOC_STATS
 
@@ -780,7 +780,7 @@ public:
       "Memory used by the dynamic and static atoms tables.");
   }
 };
-NS_IMPL_ISUPPORTS1(AtomTablesReporter, nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(AtomTablesReporter, nsIMemoryReporter)
 
 #ifdef MOZ_DMD
 
@@ -832,7 +832,7 @@ public:
     return NS_OK;
   }
 };
-NS_IMPL_ISUPPORTS1(DMDReporter, nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(DMDReporter, nsIMemoryReporter)
 
 } // namespace dmd
 } // namespace mozilla
@@ -843,7 +843,7 @@ NS_IMPL_ISUPPORTS1(DMDReporter, nsIMemoryReporter)
  ** nsMemoryReporterManager implementation
  **/
 
-NS_IMPL_ISUPPORTS1(nsMemoryReporterManager, nsIMemoryReporterManager)
+NS_IMPL_ISUPPORTS(nsMemoryReporterManager, nsIMemoryReporterManager)
 
 NS_IMETHODIMP
 nsMemoryReporterManager::Init()
@@ -1435,7 +1435,7 @@ public:
   }
 };
 
-NS_IMPL_ISUPPORTS1(ExplicitCallback, nsIHandleReportCallback)
+NS_IMPL_ISUPPORTS(ExplicitCallback, nsIHandleReportCallback)
 
 NS_IMETHODIMP
 nsMemoryReporterManager::GetExplicit(int64_t* aAmount)
@@ -1881,7 +1881,7 @@ public:
   }
 };
 
-NS_IMPL_ISUPPORTS1(DoNothingCallback, nsIHandleReportCallback)
+NS_IMPL_ISUPPORTS(DoNothingCallback, nsIHandleReportCallback)
 
 void
 RunReportersForThisProcess()
diff --git a/xpcom/base/nsMessageLoop.cpp b/xpcom/base/nsMessageLoop.cpp
index 207ac4d907a5879965883397fa7ebde17bb683db..eb47bcfad92f6661e9f8cd923879a27238fb7cfe 100644
--- a/xpcom/base/nsMessageLoop.cpp
+++ b/xpcom/base/nsMessageLoop.cpp
@@ -134,11 +134,11 @@ MessageLoopTimerCallback::Notify(nsITimer* aTimer)
   return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS1(MessageLoopTimerCallback, nsITimerCallback)
+NS_IMPL_ISUPPORTS(MessageLoopTimerCallback, nsITimerCallback)
 
 } // anonymous namespace
 
-NS_IMPL_ISUPPORTS1(nsMessageLoop, nsIMessageLoop)
+NS_IMPL_ISUPPORTS(nsMessageLoop, nsIMessageLoop)
 
 NS_IMETHODIMP
 nsMessageLoop::PostIdleTask(nsIRunnable* aTask, uint32_t aEnsureRunsAfterMS)
diff --git a/xpcom/base/nsSecurityConsoleMessage.cpp b/xpcom/base/nsSecurityConsoleMessage.cpp
index c47558890069e669c502516bb9840387e530bbe9..47cd2c15b1e28e900e8af08e75c6fc3001644da0 100644
--- a/xpcom/base/nsSecurityConsoleMessage.cpp
+++ b/xpcom/base/nsSecurityConsoleMessage.cpp
@@ -4,7 +4,7 @@
 
 #include "nsSecurityConsoleMessage.h"
 
-NS_IMPL_ISUPPORTS1(nsSecurityConsoleMessage, nsISecurityConsoleMessage)
+NS_IMPL_ISUPPORTS(nsSecurityConsoleMessage, nsISecurityConsoleMessage)
 
 nsSecurityConsoleMessage::nsSecurityConsoleMessage()
 {
diff --git a/xpcom/base/nsStatusReporterManager.cpp b/xpcom/base/nsStatusReporterManager.cpp
index a474fc6b06d69097c02bdda7342950f5dfd8713b..4ec0429e56786fa57da5fea2085ddc379a179f5b 100644
--- a/xpcom/base/nsStatusReporterManager.cpp
+++ b/xpcom/base/nsStatusReporterManager.cpp
@@ -111,7 +111,7 @@ DumpReport(nsIFileOutputStream* aOStream, const nsCString& aProcess,
  ** nsStatusReporterManager implementation
  **/
 
-NS_IMPL_ISUPPORTS1(nsStatusReporterManager, nsIStatusReporterManager)
+NS_IMPL_ISUPPORTS(nsStatusReporterManager, nsIStatusReporterManager)
 
 nsStatusReporterManager::nsStatusReporterManager()
 {
diff --git a/xpcom/base/nsUUIDGenerator.cpp b/xpcom/base/nsUUIDGenerator.cpp
index 07048a47ac7ab6bab214e7429f9c25f0b423a814..edc9d1c3103d8cc0d52150e0879403dbc9fa878b 100644
--- a/xpcom/base/nsUUIDGenerator.cpp
+++ b/xpcom/base/nsUUIDGenerator.cpp
@@ -17,7 +17,7 @@
 
 using namespace mozilla;
 
-NS_IMPL_ISUPPORTS1(nsUUIDGenerator, nsIUUIDGenerator)
+NS_IMPL_ISUPPORTS(nsUUIDGenerator, nsIUUIDGenerator)
 
 nsUUIDGenerator::nsUUIDGenerator()
     : mLock("nsUUIDGenerator.mLock")
diff --git a/xpcom/base/nsVersionComparatorImpl.cpp b/xpcom/base/nsVersionComparatorImpl.cpp
index d1a1024e18b18d8fffa329b642364981ac7352ae..0f49ba78905a3807ee94176ecf565ed5eafb0242 100644
--- a/xpcom/base/nsVersionComparatorImpl.cpp
+++ b/xpcom/base/nsVersionComparatorImpl.cpp
@@ -6,7 +6,7 @@
 #include "nsVersionComparator.h"
 #include "nsString.h"
 
-NS_IMPL_ISUPPORTS1(nsVersionComparatorImpl, nsIVersionComparator)
+NS_IMPL_ISUPPORTS(nsVersionComparatorImpl, nsIVersionComparator)
 
 NS_IMETHODIMP
 nsVersionComparatorImpl::Compare(const nsACString& A, const nsACString& B,
diff --git a/xpcom/build/nsXPComInit.cpp b/xpcom/build/nsXPComInit.cpp
index a07430f5586b75ea188f869ae5504a73ec29d0d0..958a1fde79e7fe3ecd5ae1ecce1e19df13152497 100644
--- a/xpcom/build/nsXPComInit.cpp
+++ b/xpcom/build/nsXPComInit.cpp
@@ -375,7 +375,7 @@ private:
     }
 };
 
-NS_IMPL_ISUPPORTS1(ICUReporter, nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(ICUReporter, nsIMemoryReporter)
 
 /* static */ template<> Atomic<size_t> CountingAllocatorBase<ICUReporter>::sAmount(0);
 
@@ -395,7 +395,7 @@ private:
     }
 };
 
-NS_IMPL_ISUPPORTS1(OggReporter, nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(OggReporter, nsIMemoryReporter)
 
 /* static */ template<> Atomic<size_t> CountingAllocatorBase<OggReporter>::sAmount(0);
 
@@ -416,7 +416,7 @@ private:
     }
 };
 
-NS_IMPL_ISUPPORTS1(VPXReporter, nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(VPXReporter, nsIMemoryReporter)
 
 /* static */ template<> Atomic<size_t> CountingAllocatorBase<VPXReporter>::sAmount(0);
 #endif /* MOZ_VPX */
@@ -438,7 +438,7 @@ private:
     }
 };
 
-NS_IMPL_ISUPPORTS1(NesteggReporter, nsIMemoryReporter)
+NS_IMPL_ISUPPORTS(NesteggReporter, nsIMemoryReporter)
 
 /* static */ template<> Atomic<size_t> CountingAllocatorBase<NesteggReporter>::sAmount(0);
 #endif /* MOZ_WEBM */
diff --git a/xpcom/components/nsCategoryManager.cpp b/xpcom/components/nsCategoryManager.cpp
index 622168e79aaecb2ada987f69ccb071fbbdc43ca1..81df11c1c9dcf568dc319e174046edd74a6b8db8 100644
--- a/xpcom/components/nsCategoryManager.cpp
+++ b/xpcom/components/nsCategoryManager.cpp
@@ -93,7 +93,7 @@ protected:
   uint32_t mStringCurItem;
 };
 
-NS_IMPL_ISUPPORTS2(BaseStringEnumerator, nsISimpleEnumerator, nsIUTF8StringEnumerator)
+NS_IMPL_ISUPPORTS(BaseStringEnumerator, nsISimpleEnumerator, nsIUTF8StringEnumerator)
 
 NS_IMETHODIMP
 BaseStringEnumerator::HasMoreElements(bool *_retval)
@@ -400,7 +400,7 @@ CategoryEnumerator::enumfunc_createenumerator(const char* aStr, CategoryNode* aN
 // nsCategoryManager implementations
 //
 
-NS_IMPL_QUERY_INTERFACE2(nsCategoryManager, nsICategoryManager, nsIMemoryReporter)
+NS_IMPL_QUERY_INTERFACE(nsCategoryManager, nsICategoryManager, nsIMemoryReporter)
 
 NS_IMETHODIMP_(MozExternalRefCountType)
 nsCategoryManager::AddRef()
diff --git a/xpcom/components/nsComponentManager.cpp b/xpcom/components/nsComponentManager.cpp
index 356e3f7a978d151e9128cbbcb300745b0633030a..f24de6fd6b225c659e47ab9e302901ceea766ffd 100644
--- a/xpcom/components/nsComponentManager.cpp
+++ b/xpcom/components/nsComponentManager.cpp
@@ -813,7 +813,7 @@ nsComponentManagerImpl::~nsComponentManagerImpl()
     PR_LOG(nsComponentManagerLog, PR_LOG_DEBUG, ("nsComponentManager: Destroyed."));
 }
 
-NS_IMPL_ISUPPORTS6(
+NS_IMPL_ISUPPORTS(
     nsComponentManagerImpl,
     nsIComponentManager,
     nsIServiceManager,
diff --git a/xpcom/components/nsNativeComponentLoader.cpp b/xpcom/components/nsNativeComponentLoader.cpp
index 56b5fda2fc3d43d3b2d154a0076e30b599d6c495..3fd40f5669f9509076d51f3b580a2accf80dab5d 100644
--- a/xpcom/components/nsNativeComponentLoader.cpp
+++ b/xpcom/components/nsNativeComponentLoader.cpp
@@ -64,8 +64,8 @@ GetNativeModuleLoaderLog()
 
 #define LOG(level, args) PR_LOG(GetNativeModuleLoaderLog(), level, args)
 
-NS_IMPL_QUERY_INTERFACE1(nsNativeModuleLoader,
-                         mozilla::ModuleLoader)
+NS_IMPL_QUERY_INTERFACE(nsNativeModuleLoader,
+                        mozilla::ModuleLoader)
 
 NS_IMPL_ADDREF_USING_AGGREGATOR(nsNativeModuleLoader,
                                 nsComponentManagerImpl::gComponentManager)
diff --git a/xpcom/ds/nsAtomService.cpp b/xpcom/ds/nsAtomService.cpp
index 05b32b00ac2b8ce71d39353af4d934b865a17de4..54e42cc93a32efb9535c35c78e85eb532af2ddc2 100644
--- a/xpcom/ds/nsAtomService.cpp
+++ b/xpcom/ds/nsAtomService.cpp
@@ -6,7 +6,7 @@
 #include "nsAtomService.h"
 #include "nsIAtom.h"
 
-NS_IMPL_ISUPPORTS1(nsAtomService, nsIAtomService)
+NS_IMPL_ISUPPORTS(nsAtomService, nsIAtomService)
 
 nsAtomService::nsAtomService()
 {
diff --git a/xpcom/ds/nsAtomTable.cpp b/xpcom/ds/nsAtomTable.cpp
index a448ece41fb132404796acc5f88279c5b5cfc77f..fdbeef5ac57a9f6f3f5e32bf3a42bb8da636c96d 100644
--- a/xpcom/ds/nsAtomTable.cpp
+++ b/xpcom/ds/nsAtomTable.cpp
@@ -385,7 +385,7 @@ AtomImpl::~AtomImpl()
   nsStringBuffer::FromData(mString)->Release();
 }
 
-NS_IMPL_ISUPPORTS1(AtomImpl, nsIAtom)
+NS_IMPL_ISUPPORTS(AtomImpl, nsIAtom)
 
 PermanentAtomImpl::~PermanentAtomImpl()
 {
diff --git a/xpcom/ds/nsExpirationTracker.h b/xpcom/ds/nsExpirationTracker.h
index e71af3216193b0792dfd0f64dff21a0c2329a5d9..085bcf4d899ed1ec7cec7e38e23881d4999333e5 100644
--- a/xpcom/ds/nsExpirationTracker.h
+++ b/xpcom/ds/nsExpirationTracker.h
@@ -376,7 +376,7 @@ nsExpirationTracker<T,K>::ExpirationTrackerObserver::QueryInterface(REFNSIID aII
   NS_ASSERTION(aInstancePtr,
                "QueryInterface requires a non-NULL destination!");            
   nsresult rv = NS_ERROR_FAILURE;
-  NS_INTERFACE_TABLE1(ExpirationTrackerObserver, nsIObserver)
+  NS_INTERFACE_TABLE(ExpirationTrackerObserver, nsIObserver)
   return rv;
 }
 
diff --git a/xpcom/ds/nsHashPropertyBag.cpp b/xpcom/ds/nsHashPropertyBag.cpp
index 9f60de99aedcb934ffc9afa0958838112cc6c7e6..e95c4d3ab6cda5fb8975db5295c33ff431d3f0c3 100644
--- a/xpcom/ds/nsHashPropertyBag.cpp
+++ b/xpcom/ds/nsHashPropertyBag.cpp
@@ -107,7 +107,7 @@ protected:
     nsCOMPtr<nsIVariant> mValue;
 };
 
-NS_IMPL_ISUPPORTS1(nsSimpleProperty, nsIProperty)
+NS_IMPL_ISUPPORTS(nsSimpleProperty, nsIProperty)
 
 NS_IMETHODIMP
 nsSimpleProperty::GetName(nsAString& aName)
diff --git a/xpcom/ds/nsINIParserImpl.cpp b/xpcom/ds/nsINIParserImpl.cpp
index b7dd443414d196ce2eaf84b16b0eba94bbaba888..ab060caa6c0dad9cd31b86fd9bb65cd769f7709d 100644
--- a/xpcom/ds/nsINIParserImpl.cpp
+++ b/xpcom/ds/nsINIParserImpl.cpp
@@ -24,9 +24,9 @@ private:
   nsINIParser mParser;
 };
 
-NS_IMPL_ISUPPORTS2(nsINIParserFactory,
-                   nsIINIParserFactory,
-                   nsIFactory)
+NS_IMPL_ISUPPORTS(nsINIParserFactory,
+                  nsIINIParserFactory,
+                  nsIFactory)
 
 NS_IMETHODIMP
 nsINIParserFactory::CreateINIParser(nsIFile* aINIFile,
@@ -64,8 +64,8 @@ nsINIParserFactory::LockFactory(bool aLock)
   return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS1(nsINIParserImpl,
-                   nsIINIParser)
+NS_IMPL_ISUPPORTS(nsINIParserImpl,
+                  nsIINIParser)
 
 static bool
 SectionCB(const char* aSection, void *aClosure)
diff --git a/xpcom/ds/nsObserverList.cpp b/xpcom/ds/nsObserverList.cpp
index 8be87894c7cba231cf5f2878315de4c68c51aa4d..51a0c1cc5ebc92da046244727786f504491b77ea 100644
--- a/xpcom/ds/nsObserverList.cpp
+++ b/xpcom/ds/nsObserverList.cpp
@@ -107,7 +107,7 @@ nsObserverList::UnmarkGrayStrongObservers()
     }
 }
 
-NS_IMPL_ISUPPORTS1(nsObserverEnumerator, nsISimpleEnumerator)
+NS_IMPL_ISUPPORTS(nsObserverEnumerator, nsISimpleEnumerator)
 
 nsObserverEnumerator::nsObserverEnumerator(nsObserverList* aObserverList)
     : mIndex(0)
diff --git a/xpcom/ds/nsObserverService.cpp b/xpcom/ds/nsObserverService.cpp
index fddf7d2b6ff17d5f54f8fecf5231f6650767d8f6..aba0ac600946430b766ac685ec5cb9ab6694f462 100644
--- a/xpcom/ds/nsObserverService.cpp
+++ b/xpcom/ds/nsObserverService.cpp
@@ -168,7 +168,7 @@ nsObserverService::CollectReports(nsIHandleReportCallback* aHandleReport,
 // nsObserverService Implementation
 
 
-NS_IMPL_ISUPPORTS3(
+NS_IMPL_ISUPPORTS(
     nsObserverService,
     nsIObserverService,
     nsObserverService,
diff --git a/xpcom/ds/nsPersistentProperties.cpp b/xpcom/ds/nsPersistentProperties.cpp
index 64ae11d237dcf09da0ee77ddda81427df0663d2f..2cbf91e1a04dbcc6491aa5ae4375f8b6daac8d20 100644
--- a/xpcom/ds/nsPersistentProperties.cpp
+++ b/xpcom/ds/nsPersistentProperties.cpp
@@ -470,7 +470,7 @@ nsPersistentProperties::Create(nsISupports *aOuter, REFNSIID aIID, void **aResul
   return props->QueryInterface(aIID, aResult);
 }
 
-NS_IMPL_ISUPPORTS2(nsPersistentProperties, nsIPersistentProperties, nsIProperties)
+NS_IMPL_ISUPPORTS(nsPersistentProperties, nsIPersistentProperties, nsIProperties)
 
 NS_IMETHODIMP
 nsPersistentProperties::Load(nsIInputStream *aIn)
@@ -650,7 +650,7 @@ nsPropertyElement::Create(nsISupports *aOuter, REFNSIID aIID, void **aResult)
   return propElem->QueryInterface(aIID, aResult);
 }
 
-NS_IMPL_ISUPPORTS1(nsPropertyElement, nsIPropertyElement)
+NS_IMPL_ISUPPORTS(nsPropertyElement, nsIPropertyElement)
 
 NS_IMETHODIMP
 nsPropertyElement::GetKey(nsACString& aReturnKey)
diff --git a/xpcom/ds/nsStringEnumerator.cpp b/xpcom/ds/nsStringEnumerator.cpp
index 8af283354602ab798a1edc85716698ebcedc3e9c..463796dc2250ee6e242eae8d9f9e92039f113a24 100644
--- a/xpcom/ds/nsStringEnumerator.cpp
+++ b/xpcom/ds/nsStringEnumerator.cpp
@@ -76,10 +76,10 @@ private:
     bool mIsUnicode;
 };
 
-NS_IMPL_ISUPPORTS3(nsStringEnumerator,
-                   nsIStringEnumerator,
-                   nsIUTF8StringEnumerator,
-                   nsISimpleEnumerator)
+NS_IMPL_ISUPPORTS(nsStringEnumerator,
+                  nsIStringEnumerator,
+                  nsIUTF8StringEnumerator,
+                  nsISimpleEnumerator)
 
 NS_IMETHODIMP
 nsStringEnumerator::HasMore(bool* aResult)
diff --git a/xpcom/ds/nsSupportsArray.cpp b/xpcom/ds/nsSupportsArray.cpp
index 1c742f0eff6ed9d714aeda73fc121fb022dab5a0..ce3463f87e766052fa333a7ab5f56df223f01eca 100644
--- a/xpcom/ds/nsSupportsArray.cpp
+++ b/xpcom/ds/nsSupportsArray.cpp
@@ -173,7 +173,7 @@ nsSupportsArray::Create(nsISupports *aOuter, REFNSIID aIID, void **aResult)
   return it->QueryInterface(aIID, aResult);
 }
 
-NS_IMPL_ISUPPORTS3(nsSupportsArray, nsISupportsArray, nsICollection, nsISerializable)
+NS_IMPL_ISUPPORTS(nsSupportsArray, nsISupportsArray, nsICollection, nsISerializable)
 
 NS_IMETHODIMP
 nsSupportsArray::Read(nsIObjectInputStream *aStream)
diff --git a/xpcom/ds/nsSupportsArrayEnumerator.cpp b/xpcom/ds/nsSupportsArrayEnumerator.cpp
index d123f7e8b87eee42540914eee8182aa1e3ea9245..da18e13cbfcfdb6517f73775b39b20143437b11e 100644
--- a/xpcom/ds/nsSupportsArrayEnumerator.cpp
+++ b/xpcom/ds/nsSupportsArrayEnumerator.cpp
@@ -18,7 +18,7 @@ nsSupportsArrayEnumerator::~nsSupportsArrayEnumerator()
   NS_RELEASE(mArray);
 }
 
-NS_IMPL_ISUPPORTS2(nsSupportsArrayEnumerator, nsIBidirectionalEnumerator, nsIEnumerator)
+NS_IMPL_ISUPPORTS(nsSupportsArrayEnumerator, nsIBidirectionalEnumerator, nsIEnumerator)
 
 NS_IMETHODIMP
 nsSupportsArrayEnumerator::First()
diff --git a/xpcom/ds/nsSupportsPrimitives.cpp b/xpcom/ds/nsSupportsPrimitives.cpp
index d446834790c85c338d567fe2cd15e49750e85bc8..bc2c308ced0acfa7873556e4344cd7f2ba7a30e2 100644
--- a/xpcom/ds/nsSupportsPrimitives.cpp
+++ b/xpcom/ds/nsSupportsPrimitives.cpp
@@ -11,7 +11,7 @@ using mozilla::fallible_t;
 
 /***************************************************************************/
 
-NS_IMPL_ISUPPORTS2(nsSupportsIDImpl, nsISupportsID, nsISupportsPrimitive)
+NS_IMPL_ISUPPORTS(nsSupportsIDImpl, nsISupportsID, nsISupportsPrimitive)
 
 nsSupportsIDImpl::nsSupportsIDImpl()
     : mData(nullptr)
@@ -71,8 +71,8 @@ NS_IMETHODIMP nsSupportsIDImpl::ToString(char **_retval)
  * nsSupportsCStringImpl
  *****************************************************************************/
 
-NS_IMPL_ISUPPORTS2(nsSupportsCStringImpl, nsISupportsCString,
-                   nsISupportsPrimitive)
+NS_IMPL_ISUPPORTS(nsSupportsCStringImpl, nsISupportsCString,
+                  nsISupportsPrimitive)
 
 NS_IMETHODIMP nsSupportsCStringImpl::GetType(uint16_t *aType)
 {
@@ -110,8 +110,8 @@ NS_IMETHODIMP nsSupportsCStringImpl::SetData(const nsACString& aData)
  * nsSupportsStringImpl
  *****************************************************************************/
 
-NS_IMPL_ISUPPORTS2(nsSupportsStringImpl, nsISupportsString,
-                   nsISupportsPrimitive)
+NS_IMPL_ISUPPORTS(nsSupportsStringImpl, nsISupportsString,
+                  nsISupportsPrimitive)
 
 NS_IMETHODIMP nsSupportsStringImpl::GetType(uint16_t *aType)
 {
@@ -147,8 +147,8 @@ NS_IMETHODIMP nsSupportsStringImpl::SetData(const nsAString& aData)
 
 /***************************************************************************/
 
-NS_IMPL_ISUPPORTS2(nsSupportsPRBoolImpl, nsISupportsPRBool,
-                   nsISupportsPrimitive)
+NS_IMPL_ISUPPORTS(nsSupportsPRBoolImpl, nsISupportsPRBool,
+                  nsISupportsPrimitive)
 
 nsSupportsPRBoolImpl::nsSupportsPRBoolImpl()
     : mData(false)
@@ -188,8 +188,8 @@ NS_IMETHODIMP nsSupportsPRBoolImpl::ToString(char **_retval)
 
 /***************************************************************************/
 
-NS_IMPL_ISUPPORTS2(nsSupportsPRUint8Impl, nsISupportsPRUint8,
-                   nsISupportsPrimitive)
+NS_IMPL_ISUPPORTS(nsSupportsPRUint8Impl, nsISupportsPRUint8,
+                  nsISupportsPrimitive)
 
 nsSupportsPRUint8Impl::nsSupportsPRUint8Impl()
     : mData(0)
@@ -233,8 +233,8 @@ NS_IMETHODIMP nsSupportsPRUint8Impl::ToString(char **_retval)
 
 /***************************************************************************/
 
-NS_IMPL_ISUPPORTS2(nsSupportsPRUint16Impl, nsISupportsPRUint16,
-                   nsISupportsPrimitive)
+NS_IMPL_ISUPPORTS(nsSupportsPRUint16Impl, nsISupportsPRUint16,
+                  nsISupportsPrimitive)
 
 nsSupportsPRUint16Impl::nsSupportsPRUint16Impl()
     : mData(0)
@@ -278,8 +278,8 @@ NS_IMETHODIMP nsSupportsPRUint16Impl::ToString(char **_retval)
 
 /***************************************************************************/
 
-NS_IMPL_ISUPPORTS2(nsSupportsPRUint32Impl, nsISupportsPRUint32,
-                   nsISupportsPrimitive)
+NS_IMPL_ISUPPORTS(nsSupportsPRUint32Impl, nsISupportsPRUint32,
+                  nsISupportsPrimitive)
 
 nsSupportsPRUint32Impl::nsSupportsPRUint32Impl()
     : mData(0)
@@ -323,8 +323,8 @@ NS_IMETHODIMP nsSupportsPRUint32Impl::ToString(char **_retval)
 
 /***************************************************************************/
 
-NS_IMPL_ISUPPORTS2(nsSupportsPRUint64Impl, nsISupportsPRUint64,
-                   nsISupportsPrimitive)
+NS_IMPL_ISUPPORTS(nsSupportsPRUint64Impl, nsISupportsPRUint64,
+                  nsISupportsPrimitive)
 
 nsSupportsPRUint64Impl::nsSupportsPRUint64Impl()
     : mData(0)
@@ -368,8 +368,8 @@ NS_IMETHODIMP nsSupportsPRUint64Impl::ToString(char **_retval)
 
 /***************************************************************************/
 
-NS_IMPL_ISUPPORTS2(nsSupportsPRTimeImpl, nsISupportsPRTime,
-                   nsISupportsPrimitive)
+NS_IMPL_ISUPPORTS(nsSupportsPRTimeImpl, nsISupportsPRTime,
+                  nsISupportsPrimitive)
 
 nsSupportsPRTimeImpl::nsSupportsPRTimeImpl()
     : mData(0)
@@ -413,8 +413,8 @@ NS_IMETHODIMP nsSupportsPRTimeImpl::ToString(char **_retval)
 
 /***************************************************************************/
 
-NS_IMPL_ISUPPORTS2(nsSupportsCharImpl, nsISupportsChar,
-                   nsISupportsPrimitive)
+NS_IMPL_ISUPPORTS(nsSupportsCharImpl, nsISupportsChar,
+                  nsISupportsPrimitive)
 
 nsSupportsCharImpl::nsSupportsCharImpl()
     : mData(0)
@@ -458,8 +458,8 @@ NS_IMETHODIMP nsSupportsCharImpl::ToString(char **_retval)
 
 /***************************************************************************/
 
-NS_IMPL_ISUPPORTS2(nsSupportsPRInt16Impl, nsISupportsPRInt16,
-                   nsISupportsPrimitive)
+NS_IMPL_ISUPPORTS(nsSupportsPRInt16Impl, nsISupportsPRInt16,
+                  nsISupportsPrimitive)
 
 nsSupportsPRInt16Impl::nsSupportsPRInt16Impl()
     : mData(0)
@@ -503,8 +503,8 @@ NS_IMETHODIMP nsSupportsPRInt16Impl::ToString(char **_retval)
 
 /***************************************************************************/
 
-NS_IMPL_ISUPPORTS2(nsSupportsPRInt32Impl, nsISupportsPRInt32,
-                   nsISupportsPrimitive)
+NS_IMPL_ISUPPORTS(nsSupportsPRInt32Impl, nsISupportsPRInt32,
+                  nsISupportsPrimitive)
 
 nsSupportsPRInt32Impl::nsSupportsPRInt32Impl()
     : mData(0)
@@ -548,8 +548,8 @@ NS_IMETHODIMP nsSupportsPRInt32Impl::ToString(char **_retval)
 
 /***************************************************************************/
 
-NS_IMPL_ISUPPORTS2(nsSupportsPRInt64Impl, nsISupportsPRInt64,
-                   nsISupportsPrimitive)
+NS_IMPL_ISUPPORTS(nsSupportsPRInt64Impl, nsISupportsPRInt64,
+                  nsISupportsPrimitive)
 
 nsSupportsPRInt64Impl::nsSupportsPRInt64Impl()
     : mData(0)
@@ -593,8 +593,8 @@ NS_IMETHODIMP nsSupportsPRInt64Impl::ToString(char **_retval)
 
 /***************************************************************************/
 
-NS_IMPL_ISUPPORTS2(nsSupportsFloatImpl, nsISupportsFloat,
-                   nsISupportsPrimitive)
+NS_IMPL_ISUPPORTS(nsSupportsFloatImpl, nsISupportsFloat,
+                  nsISupportsPrimitive)
 
 nsSupportsFloatImpl::nsSupportsFloatImpl()
     : mData(float(0.0))
@@ -638,8 +638,8 @@ NS_IMETHODIMP nsSupportsFloatImpl::ToString(char **_retval)
 
 /***************************************************************************/
 
-NS_IMPL_ISUPPORTS2(nsSupportsDoubleImpl, nsISupportsDouble,
-                   nsISupportsPrimitive)
+NS_IMPL_ISUPPORTS(nsSupportsDoubleImpl, nsISupportsDouble,
+                  nsISupportsPrimitive)
 
 nsSupportsDoubleImpl::nsSupportsDoubleImpl()
     : mData(double(0.0))
@@ -684,8 +684,8 @@ NS_IMETHODIMP nsSupportsDoubleImpl::ToString(char **_retval)
 /***************************************************************************/
 
 
-NS_IMPL_ISUPPORTS2(nsSupportsVoidImpl, nsISupportsVoid,
-                   nsISupportsPrimitive)
+NS_IMPL_ISUPPORTS(nsSupportsVoidImpl, nsISupportsVoid,
+                  nsISupportsPrimitive)
 
 nsSupportsVoidImpl::nsSupportsVoidImpl()
     : mData(nullptr)
@@ -726,9 +726,9 @@ NS_IMETHODIMP nsSupportsVoidImpl::ToString(char **_retval)
 /***************************************************************************/
 
 
-NS_IMPL_ISUPPORTS2(nsSupportsInterfacePointerImpl,
-                   nsISupportsInterfacePointer,
-                   nsISupportsPrimitive)
+NS_IMPL_ISUPPORTS(nsSupportsInterfacePointerImpl,
+                  nsISupportsInterfacePointer,
+                  nsISupportsPrimitive)
 
 nsSupportsInterfacePointerImpl::nsSupportsInterfacePointerImpl()
     : mIID(nullptr)
@@ -807,7 +807,7 @@ NS_IMETHODIMP nsSupportsInterfacePointerImpl::ToString(char **_retval)
 
 /***************************************************************************/
 
-NS_IMPL_ISUPPORTS2(nsSupportsDependentCString,nsISupportsCString,nsISupportsPrimitive)
+NS_IMPL_ISUPPORTS(nsSupportsDependentCString,nsISupportsCString,nsISupportsPrimitive)
 
 nsSupportsDependentCString::nsSupportsDependentCString(const char* aStr)
     : mData(aStr)
diff --git a/xpcom/ds/nsVariant.cpp b/xpcom/ds/nsVariant.cpp
index bc4b13ca013837d7c1f4e9e942231a0a21f9c55d..f27bbbfe2a853ca0033e5f7a4c6f916c2f428db7 100644
--- a/xpcom/ds/nsVariant.cpp
+++ b/xpcom/ds/nsVariant.cpp
@@ -1664,7 +1664,7 @@ nsVariant::Traverse(const nsDiscriminatedUnion& data,
 /***************************************************************************/
 // members...
 
-NS_IMPL_ISUPPORTS2(nsVariant, nsIVariant, nsIWritableVariant)
+NS_IMPL_ISUPPORTS(nsVariant, nsIVariant, nsIWritableVariant)
 
 nsVariant::nsVariant()
     : mWritable(true)
diff --git a/xpcom/ds/nsWindowsRegKey.cpp b/xpcom/ds/nsWindowsRegKey.cpp
index 0acbca5985f9e165681b8f0fde1f0375cce92b52..e76230e08d4cf7ab6902993fa4b082d3ef8a1e69 100644
--- a/xpcom/ds/nsWindowsRegKey.cpp
+++ b/xpcom/ds/nsWindowsRegKey.cpp
@@ -44,7 +44,7 @@ private:
   BOOL   mWatchRecursive;
 };
 
-NS_IMPL_ISUPPORTS1(nsWindowsRegKey, nsIWindowsRegKey)
+NS_IMPL_ISUPPORTS(nsWindowsRegKey, nsIWindowsRegKey)
 
 NS_IMETHODIMP
 nsWindowsRegKey::GetKey(HKEY *key)
diff --git a/xpcom/glue/GenericFactory.cpp b/xpcom/glue/GenericFactory.cpp
index 5e11218761f590b2f70e0a83c8bf9846bd75d539..96cad8f5ad0eb24de999c49393f1696abcacd29a 100644
--- a/xpcom/glue/GenericFactory.cpp
+++ b/xpcom/glue/GenericFactory.cpp
@@ -7,7 +7,7 @@
 
 namespace mozilla {
 
-NS_IMPL_ISUPPORTS1(GenericFactory, nsIFactory)
+NS_IMPL_ISUPPORTS(GenericFactory, nsIFactory)
 
 NS_IMETHODIMP
 GenericFactory::CreateInstance(nsISupports* aOuter, REFNSIID aIID,
diff --git a/xpcom/glue/GenericModule.cpp b/xpcom/glue/GenericModule.cpp
index 554012a037e8ad66097fd1f7cb195049fe6e7ba3..e33cb1d2e289514b82ea6d2c9d92ace0cafd4c78 100644
--- a/xpcom/glue/GenericModule.cpp
+++ b/xpcom/glue/GenericModule.cpp
@@ -15,7 +15,7 @@
 
 namespace mozilla {
 
-NS_IMPL_ISUPPORTS1(GenericModule, nsIModule)
+NS_IMPL_ISUPPORTS(GenericModule, nsIModule)
 
 NS_IMETHODIMP
 GenericModule::GetClassObject(nsIComponentManager* aCompMgr,
diff --git a/xpcom/glue/nsArrayEnumerator.cpp b/xpcom/glue/nsArrayEnumerator.cpp
index 5c2588f59745324b48ffd76c47fcbe92b3447b4a..60029eff9ae6a57c9130d0fb8fade437f1f01da3 100644
--- a/xpcom/glue/nsArrayEnumerator.cpp
+++ b/xpcom/glue/nsArrayEnumerator.cpp
@@ -35,7 +35,7 @@ protected:
     uint32_t mIndex;
 };
 
-NS_IMPL_ISUPPORTS1(nsSimpleArrayEnumerator, nsISimpleEnumerator)
+NS_IMPL_ISUPPORTS(nsSimpleArrayEnumerator, nsISimpleEnumerator)
 
 NS_IMETHODIMP
 nsSimpleArrayEnumerator::HasMoreElements(bool* aResult)
@@ -125,7 +125,7 @@ protected:
     nsISupports* mValueArray[1];
 };
 
-NS_IMPL_ISUPPORTS1(nsCOMArrayEnumerator, nsISimpleEnumerator)
+NS_IMPL_ISUPPORTS(nsCOMArrayEnumerator, nsISimpleEnumerator)
 
 nsCOMArrayEnumerator::~nsCOMArrayEnumerator()
 {
diff --git a/xpcom/glue/nsCategoryCache.cpp b/xpcom/glue/nsCategoryCache.cpp
index 853a5e4c06355aeed1db91d29617d23f2181b5cd..13b52c5c441577be739de5b45b704889d7540c48 100644
--- a/xpcom/glue/nsCategoryCache.cpp
+++ b/xpcom/glue/nsCategoryCache.cpp
@@ -62,7 +62,7 @@ nsCategoryObserver::nsCategoryObserver(const char* aCategory)
 nsCategoryObserver::~nsCategoryObserver() {
 }
 
-NS_IMPL_ISUPPORTS1(nsCategoryObserver, nsIObserver)
+NS_IMPL_ISUPPORTS(nsCategoryObserver, nsIObserver)
 
 void
 nsCategoryObserver::ListenerDied() {
diff --git a/xpcom/glue/nsClassInfoImpl.cpp b/xpcom/glue/nsClassInfoImpl.cpp
index 6e685f125e402c3b4d17d6d265602626dcc61ba5..840435d6b84bc9dfa5267addf50482c99ca24dd7 100644
--- a/xpcom/glue/nsClassInfoImpl.cpp
+++ b/xpcom/glue/nsClassInfoImpl.cpp
@@ -17,7 +17,7 @@ GenericClassInfo::Release()
   return 1;
 }
 
-NS_IMPL_QUERY_INTERFACE1(GenericClassInfo, nsIClassInfo)
+NS_IMPL_QUERY_INTERFACE(GenericClassInfo, nsIClassInfo)
 
 NS_IMETHODIMP
 GenericClassInfo::GetInterfaces(uint32_t* countp, nsIID*** array)
diff --git a/xpcom/glue/nsEnumeratorUtils.cpp b/xpcom/glue/nsEnumeratorUtils.cpp
index 3d190287a2910f167c86ff2d7dd95175d9442c4f..5b96e1b409d93b8505465467f535dc4f008b2fa4 100644
--- a/xpcom/glue/nsEnumeratorUtils.cpp
+++ b/xpcom/glue/nsEnumeratorUtils.cpp
@@ -45,8 +45,8 @@ NS_IMETHODIMP_(MozExternalRefCountType) EmptyEnumeratorImpl::Release(void)
     return 1;
 }
 
-NS_IMPL_QUERY_INTERFACE3(EmptyEnumeratorImpl, nsISimpleEnumerator,
-                         nsIUTF8StringEnumerator, nsIStringEnumerator)
+NS_IMPL_QUERY_INTERFACE(EmptyEnumeratorImpl, nsISimpleEnumerator,
+                        nsIUTF8StringEnumerator, nsIStringEnumerator)
 
 // nsISimpleEnumerator interface
 NS_IMETHODIMP EmptyEnumeratorImpl::HasMoreElements(bool* aResult)
@@ -116,7 +116,7 @@ nsSingletonEnumerator::~nsSingletonEnumerator()
     NS_IF_RELEASE(mValue);
 }
 
-NS_IMPL_ISUPPORTS1(nsSingletonEnumerator, nsISimpleEnumerator)
+NS_IMPL_ISUPPORTS(nsSingletonEnumerator, nsISimpleEnumerator)
 
 NS_IMETHODIMP
 nsSingletonEnumerator::HasMoreElements(bool* aResult)
@@ -194,7 +194,7 @@ nsUnionEnumerator::~nsUnionEnumerator()
 {
 }
 
-NS_IMPL_ISUPPORTS1(nsUnionEnumerator, nsISimpleEnumerator)
+NS_IMPL_ISUPPORTS(nsUnionEnumerator, nsISimpleEnumerator)
 
 NS_IMETHODIMP
 nsUnionEnumerator::HasMoreElements(bool* aResult)
diff --git a/xpcom/glue/nsIClassInfoImpl.h b/xpcom/glue/nsIClassInfoImpl.h
index 7005dd60a4773f78ebcaaca00ad5bc7950ba57b7..2dc7535fb0d6e5ddfba98f5ed37da8b8ea6d9973 100644
--- a/xpcom/glue/nsIClassInfoImpl.h
+++ b/xpcom/glue/nsIClassInfoImpl.h
@@ -30,12 +30,12 @@
  * you should already have the following nsISupports implementation in its cpp
  * file:
  *
- *   NS_IMPL_ISUPPORTS2(nsFooBar, nsIFoo, nsIBar).
+ *   NS_IMPL_ISUPPORTS(nsFooBar, nsIFoo, nsIBar).
  *
  * Change this to
  *
  *   NS_IMPL_CLASSINFO(nsFooBar, nullptr, 0, NS_FOOBAR_CID)
- *   NS_IMPL_ISUPPORTS2_CI(nsFooBar, nsIFoo, nsIBar)
+ *   NS_IMPL_ISUPPORTS_CI(nsFooBar, nsIFoo, nsIBar)
  *
  * If nsFooBar is threadsafe, change the 0 above to nsIClassInfo::THREADSAFE.
  * If it's a singleton, use nsIClassInfo::SINGLETON.  The full list of flags is
@@ -45,9 +45,9 @@
  * from an XPCOM object to a scriptable helper.  Unless you're doing
  * specialized JS work, you can probably leave this as nullptr.
  *
- * This file also defines the NS_IMPL_QUERY_INTERFACE2_CI macro, which you can
- * use to replace NS_IMPL_QUERY_INTERFACE2, if you use that instead of
- * NS_IMPL_ISUPPORTS2.
+ * This file also defines the NS_IMPL_QUERY_INTERFACE_CI macro, which you can
+ * use to replace NS_IMPL_QUERY_INTERFACE, if you use that instead of
+ * NS_IMPL_ISUPPORTS.
  *
  * That's it!  The rest is gory details.
  *
@@ -56,7 +56,7 @@
  * "implement" it.  However, after adding these macros to nsFooBar, you you can
  * QueryInterface an instance of nsFooBar to nsIClassInfo.  How can this be?
  *
- * The answer lies in the NS_IMPL_ISUPPORTS2_CI macro.  It modifies nsFooBar's
+ * The answer lies in the NS_IMPL_ISUPPORTS_CI macro.  It modifies nsFooBar's
  * QueryInterface implementation such that, if we ask to QI to nsIClassInfo, it
  * returns a singleton object associated with the class.  (That singleton is
  * defined by NS_IMPL_CLASSINFO.)  So all nsFooBar instances will return the
diff --git a/xpcom/glue/nsThreadUtils.cpp b/xpcom/glue/nsThreadUtils.cpp
index c89faa4e7746a525d85d231d845b32cbef148cdd..930b53b773b81c2a95a36cceb5d51053b4cf1a66 100644
--- a/xpcom/glue/nsThreadUtils.cpp
+++ b/xpcom/glue/nsThreadUtils.cpp
@@ -29,7 +29,7 @@ using mozilla::IsVistaOrLater;
 
 #ifndef XPCOM_GLUE_AVOID_NSPR
 
-NS_IMPL_ISUPPORTS1(nsRunnable, nsIRunnable)
+NS_IMPL_ISUPPORTS(nsRunnable, nsIRunnable)
 
 NS_IMETHODIMP
 nsRunnable::Run()
@@ -38,8 +38,8 @@ nsRunnable::Run()
   return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS2(nsCancelableRunnable, nsICancelableRunnable,
-                              nsIRunnable)
+NS_IMPL_ISUPPORTS(nsCancelableRunnable, nsICancelableRunnable,
+                  nsIRunnable)
 
 NS_IMETHODIMP
 nsCancelableRunnable::Run()
@@ -279,7 +279,7 @@ protected:
   const nsCString mName;
 };
 
-NS_IMPL_ISUPPORTS1(nsNameThreadRunnable, nsIRunnable)
+NS_IMPL_ISUPPORTS(nsNameThreadRunnable, nsIRunnable)
 
 NS_IMETHODIMP
 nsNameThreadRunnable::Run()
diff --git a/xpcom/glue/nsWeakReference.cpp b/xpcom/glue/nsWeakReference.cpp
index c6869e5a2ed41cbf8083294825cf99ff7b328b3d..157929964f50adcd5ca66fbc089d206c68cf65a3 100644
--- a/xpcom/glue/nsWeakReference.cpp
+++ b/xpcom/glue/nsWeakReference.cpp
@@ -110,7 +110,7 @@ nsSupportsWeakReference::GetWeakReference( nsIWeakReference** aInstancePtr )
     return status;
   }
 
-NS_IMPL_ISUPPORTS1(nsWeakReference, nsIWeakReference)
+NS_IMPL_ISUPPORTS(nsWeakReference, nsIWeakReference)
 
 NS_IMETHODIMP
 nsWeakReference::QueryReferent( const nsIID& aIID, void** aInstancePtr )
diff --git a/xpcom/idl-parser/header.py b/xpcom/idl-parser/header.py
index 1d4283d384fdb477594517cffacdd40edf33cec7..43c4176c0913404d587fac6c0cc4c6f4dfe2fe7c 100644
--- a/xpcom/idl-parser/header.py
+++ b/xpcom/idl-parser/header.py
@@ -267,7 +267,7 @@ protected:
 };
 
 /* Implementation file */
-NS_IMPL_ISUPPORTS1(%(implclass)s, %(name)s)
+NS_IMPL_ISUPPORTS(%(implclass)s, %(name)s)
 
 %(implclass)s::%(implclass)s()
 {
diff --git a/xpcom/io/nsAnonymousTemporaryFile.cpp b/xpcom/io/nsAnonymousTemporaryFile.cpp
index 27fc50a4898d25358a66b46613b66b56bb838cf6..b4a69242d4d4ac36df7d2116af0d2bd99ae5da82 100644
--- a/xpcom/io/nsAnonymousTemporaryFile.cpp
+++ b/xpcom/io/nsAnonymousTemporaryFile.cpp
@@ -233,7 +233,7 @@ private:
   nsCOMPtr<nsITimer> mTimer;
 };
 
-NS_IMPL_ISUPPORTS1(nsAnonTempFileRemover, nsIObserver)
+NS_IMPL_ISUPPORTS(nsAnonTempFileRemover, nsIObserver)
 
 nsresult CreateAnonTempFileRemover() {
   // Create a temp file remover. If Init() succeeds, the temp file remover is kept
diff --git a/xpcom/io/nsAppFileLocationProvider.cpp b/xpcom/io/nsAppFileLocationProvider.cpp
index 272e4767387b6d3eb6341ececb8955c713e28738..1a38589eac6821407732094824f3e3c5262eb78d 100644
--- a/xpcom/io/nsAppFileLocationProvider.cpp
+++ b/xpcom/io/nsAppFileLocationProvider.cpp
@@ -74,7 +74,7 @@ nsAppFileLocationProvider::nsAppFileLocationProvider()
 // nsAppFileLocationProvider::nsISupports
 //*****************************************************************************
 
-NS_IMPL_ISUPPORTS2(nsAppFileLocationProvider, nsIDirectoryServiceProvider, nsIDirectoryServiceProvider2)
+NS_IMPL_ISUPPORTS(nsAppFileLocationProvider, nsIDirectoryServiceProvider, nsIDirectoryServiceProvider2)
 
 //*****************************************************************************
 // nsAppFileLocationProvider::nsIDirectoryServiceProvider
@@ -440,7 +440,7 @@ class nsAppDirectoryEnumerator : public nsISimpleEnumerator
     nsCOMPtr<nsIFile> mNext;
 };
 
-NS_IMPL_ISUPPORTS1(nsAppDirectoryEnumerator, nsISimpleEnumerator)
+NS_IMPL_ISUPPORTS(nsAppDirectoryEnumerator, nsISimpleEnumerator)
 
 /* nsPathsDirectoryEnumerator and PATH_SEPARATOR
  * are not used on MacOS/X. */
diff --git a/xpcom/io/nsBinaryStream.cpp b/xpcom/io/nsBinaryStream.cpp
index 7ae96a9464b4f174eb841fd694345dd133246f61..74bb6f400d78beb85a7beb84a23763aeef1cef6e 100644
--- a/xpcom/io/nsBinaryStream.cpp
+++ b/xpcom/io/nsBinaryStream.cpp
@@ -29,7 +29,7 @@
 
 #include "jsfriendapi.h"
 
-NS_IMPL_ISUPPORTS3(nsBinaryOutputStream, nsIObjectOutputStream, nsIBinaryOutputStream, nsIOutputStream)
+NS_IMPL_ISUPPORTS(nsBinaryOutputStream, nsIObjectOutputStream, nsIBinaryOutputStream, nsIOutputStream)
 
 NS_IMETHODIMP
 nsBinaryOutputStream::Flush() 
@@ -325,7 +325,7 @@ nsBinaryOutputStream::PutBuffer(char* aBuffer, uint32_t aLength)
         mBufferAccess->PutBuffer(aBuffer, aLength);
 }
 
-NS_IMPL_ISUPPORTS3(nsBinaryInputStream, nsIObjectInputStream, nsIBinaryInputStream, nsIInputStream)
+NS_IMPL_ISUPPORTS(nsBinaryInputStream, nsIObjectInputStream, nsIBinaryInputStream, nsIInputStream)
 
 NS_IMETHODIMP
 nsBinaryInputStream::Available(uint64_t* aResult)
diff --git a/xpcom/io/nsDirectoryService.cpp b/xpcom/io/nsDirectoryService.cpp
index e7bceb163124af98e1fc88ffb66297fa41d02b92..58b7e7212b1c7c21775ee3d5a7afa354e3d17ee6 100644
--- a/xpcom/io/nsDirectoryService.cpp
+++ b/xpcom/io/nsDirectoryService.cpp
@@ -266,7 +266,7 @@ nsDirectoryService::~nsDirectoryService()
 {
 }
 
-NS_IMPL_ISUPPORTS4(nsDirectoryService, nsIProperties, nsIDirectoryService, nsIDirectoryServiceProvider, nsIDirectoryServiceProvider2)
+NS_IMPL_ISUPPORTS(nsDirectoryService, nsIProperties, nsIDirectoryService, nsIDirectoryServiceProvider, nsIDirectoryServiceProvider2)
 
 
 NS_IMETHODIMP
diff --git a/xpcom/io/nsIOUtil.cpp b/xpcom/io/nsIOUtil.cpp
index e4062793b0ba2d6c519ab4b062ec7ff107bbbed6..929ea694692632c1d4df0c20875b29bdd571a96a 100644
--- a/xpcom/io/nsIOUtil.cpp
+++ b/xpcom/io/nsIOUtil.cpp
@@ -8,7 +8,7 @@
 #include "nsIOutputStream.h"
 #include "nsStreamUtils.h"
 
-NS_IMPL_ISUPPORTS1(nsIOUtil, nsIIOUtil)
+NS_IMPL_ISUPPORTS(nsIOUtil, nsIIOUtil)
 
 NS_IMETHODIMP
 nsIOUtil::InputStreamIsBuffered(nsIInputStream* aStream, bool* _retval)
diff --git a/xpcom/io/nsInputStreamTee.cpp b/xpcom/io/nsInputStreamTee.cpp
index b1c4094120a9eb91825321829177fd4990b2b3a8..4c1db92a991adaca3b16e21734736f8ad6278971 100644
--- a/xpcom/io/nsInputStreamTee.cpp
+++ b/xpcom/io/nsInputStreamTee.cpp
@@ -207,9 +207,9 @@ nsInputStreamTee::WriteSegmentFun(nsIInputStream *in, void *closure, const char
     return tee->TeeSegment(fromSegment, *writeCount);
 }
 
-NS_IMPL_ISUPPORTS2(nsInputStreamTee,
-                   nsIInputStreamTee,
-                   nsIInputStream)
+NS_IMPL_ISUPPORTS(nsInputStreamTee,
+                  nsIInputStreamTee,
+                  nsIInputStream)
 NS_IMETHODIMP
 nsInputStreamTee::Close()
 {
diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp
index a54f374ba189526dd33e267e0df334d51622e714..9afa0986190217fe49b5007ec97309b23127fa73 100644
--- a/xpcom/io/nsLocalFileUnix.cpp
+++ b/xpcom/io/nsLocalFileUnix.cpp
@@ -128,7 +128,7 @@ nsDirEnumeratorUnix::~nsDirEnumeratorUnix()
     Close();
 }
 
-NS_IMPL_ISUPPORTS2(nsDirEnumeratorUnix, nsISimpleEnumerator, nsIDirectoryEnumerator)
+NS_IMPL_ISUPPORTS(nsDirEnumeratorUnix, nsISimpleEnumerator, nsIDirectoryEnumerator)
 
 NS_IMETHODIMP
 nsDirEnumeratorUnix::Init(nsLocalFile *parent, bool resolveSymlinks /*ignored*/)
@@ -226,16 +226,16 @@ nsLocalFile::nsLocalFile(const nsLocalFile& other)
 }
 
 #ifdef MOZ_WIDGET_COCOA
-NS_IMPL_ISUPPORTS4(nsLocalFile,
-                   nsILocalFileMac,
-                   nsILocalFile,
-                   nsIFile,
-                   nsIHashable)
+NS_IMPL_ISUPPORTS(nsLocalFile,
+                  nsILocalFileMac,
+                  nsILocalFile,
+                  nsIFile,
+                  nsIHashable)
 #else
-NS_IMPL_ISUPPORTS3(nsLocalFile,
-                   nsILocalFile,
-                   nsIFile,
-                   nsIHashable)
+NS_IMPL_ISUPPORTS(nsLocalFile,
+                  nsILocalFile,
+                  nsIFile,
+                  nsIHashable)
 #endif
 
 nsresult
diff --git a/xpcom/io/nsLocalFileWin.cpp b/xpcom/io/nsLocalFileWin.cpp
index 8a9db03c04921b87d739551f93251f4ede84f481..0d4117dae2e722ae646d1186d95ad0aad002044e 100644
--- a/xpcom/io/nsLocalFileWin.cpp
+++ b/xpcom/io/nsLocalFileWin.cpp
@@ -949,7 +949,7 @@ class nsDirEnumerator MOZ_FINAL : public nsISimpleEnumerator,
         nsCOMPtr<nsIFile>  mNext;
 };
 
-NS_IMPL_ISUPPORTS2(nsDirEnumerator, nsISimpleEnumerator, nsIDirectoryEnumerator)
+NS_IMPL_ISUPPORTS(nsDirEnumerator, nsISimpleEnumerator, nsIDirectoryEnumerator)
 
 
 //-----------------------------------------------------------------------------
@@ -989,11 +989,11 @@ nsLocalFile::nsLocalFileConstructor(nsISupports* outer, const nsIID& aIID, void*
 // nsLocalFile::nsISupports
 //-----------------------------------------------------------------------------
 
-NS_IMPL_ISUPPORTS4(nsLocalFile,
-                   nsILocalFile,
-                   nsIFile,
-                   nsILocalFileWin,
-                   nsIHashable)
+NS_IMPL_ISUPPORTS(nsLocalFile,
+                  nsILocalFile,
+                  nsIFile,
+                  nsILocalFileWin,
+                  nsIHashable)
 
 
 //-----------------------------------------------------------------------------
@@ -3486,7 +3486,7 @@ nsLocalFile::GlobalShutdown()
     NS_DestroyShortcutResolver();
 }
 
-NS_IMPL_ISUPPORTS1(nsDriveEnumerator, nsISimpleEnumerator)
+NS_IMPL_ISUPPORTS(nsDriveEnumerator, nsISimpleEnumerator)
 
 nsDriveEnumerator::nsDriveEnumerator()
 {
diff --git a/xpcom/io/nsMultiplexInputStream.cpp b/xpcom/io/nsMultiplexInputStream.cpp
index 6d54e196007093ab83093988a4a4c7fe3ea4afcb..48daa39ddf3afd6defe3e46994cde8d71ad19737 100644
--- a/xpcom/io/nsMultiplexInputStream.cpp
+++ b/xpcom/io/nsMultiplexInputStream.cpp
@@ -66,15 +66,15 @@ NS_IMPL_RELEASE(nsMultiplexInputStream)
 NS_IMPL_CLASSINFO(nsMultiplexInputStream, nullptr, nsIClassInfo::THREADSAFE,
                   NS_MULTIPLEXINPUTSTREAM_CID)
 
-NS_IMPL_QUERY_INTERFACE4_CI(nsMultiplexInputStream,
+NS_IMPL_QUERY_INTERFACE_CI(nsMultiplexInputStream,
+                           nsIMultiplexInputStream,
+                           nsIInputStream,
+                           nsISeekableStream,
+                           nsIIPCSerializableInputStream)
+NS_IMPL_CI_INTERFACE_GETTER(nsMultiplexInputStream,
                             nsIMultiplexInputStream,
                             nsIInputStream,
-                            nsISeekableStream,
-                            nsIIPCSerializableInputStream)
-NS_IMPL_CI_INTERFACE_GETTER3(nsMultiplexInputStream,
-                             nsIMultiplexInputStream,
-                             nsIInputStream,
-                             nsISeekableStream)
+                            nsISeekableStream)
 
 nsMultiplexInputStream::nsMultiplexInputStream()
     : mCurrentStream(0),
diff --git a/xpcom/io/nsPipe3.cpp b/xpcom/io/nsPipe3.cpp
index b11dcf1647b84002de528f8174f0aba53ee49eb7..8e56ecb9313ba0656188325a30eb3c55877c9f59 100644
--- a/xpcom/io/nsPipe3.cpp
+++ b/xpcom/io/nsPipe3.cpp
@@ -316,7 +316,7 @@ nsPipe::~nsPipe()
 {
 }
 
-NS_IMPL_ISUPPORTS1(nsPipe, nsIPipe)
+NS_IMPL_ISUPPORTS(nsPipe, nsIPipe)
 
 NS_IMETHODIMP
 nsPipe::Init(bool nonBlockingIn,
@@ -604,18 +604,18 @@ nsPipeEvents::~nsPipeEvents()
 // nsPipeInputStream methods:
 //-----------------------------------------------------------------------------
 
-NS_IMPL_QUERY_INTERFACE5(nsPipeInputStream,
-                         nsIInputStream,
-                         nsIAsyncInputStream,
-                         nsISeekableStream,
-                         nsISearchableInputStream,
-                         nsIClassInfo)
+NS_IMPL_QUERY_INTERFACE(nsPipeInputStream,
+                        nsIInputStream,
+                        nsIAsyncInputStream,
+                        nsISeekableStream,
+                        nsISearchableInputStream,
+                        nsIClassInfo)
 
-NS_IMPL_CI_INTERFACE_GETTER4(nsPipeInputStream,
-                             nsIInputStream,
-                             nsIAsyncInputStream,
-                             nsISeekableStream,
-                             nsISearchableInputStream)
+NS_IMPL_CI_INTERFACE_GETTER(nsPipeInputStream,
+                            nsIInputStream,
+                            nsIAsyncInputStream,
+                            nsISeekableStream,
+                            nsISearchableInputStream)
 
 NS_IMPL_THREADSAFE_CI(nsPipeInputStream)
 
@@ -966,14 +966,14 @@ nsPipeInputStream::Search(const char *forString,
 // nsPipeOutputStream methods:
 //-----------------------------------------------------------------------------
 
-NS_IMPL_QUERY_INTERFACE3(nsPipeOutputStream,
-                         nsIOutputStream,
-                         nsIAsyncOutputStream,
-                         nsIClassInfo)
+NS_IMPL_QUERY_INTERFACE(nsPipeOutputStream,
+                        nsIOutputStream,
+                        nsIAsyncOutputStream,
+                        nsIClassInfo)
 
-NS_IMPL_CI_INTERFACE_GETTER2(nsPipeOutputStream,
-                             nsIOutputStream,
-                             nsIAsyncOutputStream)
+NS_IMPL_CI_INTERFACE_GETTER(nsPipeOutputStream,
+                            nsIOutputStream,
+                            nsIAsyncOutputStream)
 
 NS_IMPL_THREADSAFE_CI(nsPipeOutputStream)
 
diff --git a/xpcom/io/nsScriptableBase64Encoder.cpp b/xpcom/io/nsScriptableBase64Encoder.cpp
index 8f54d98e6e09124e9c5806acb6f9b785ca9990e8..4392603714ad5e1fc4c24213aa5088ca4738702c 100644
--- a/xpcom/io/nsScriptableBase64Encoder.cpp
+++ b/xpcom/io/nsScriptableBase64Encoder.cpp
@@ -8,7 +8,7 @@
 
 using namespace mozilla;
 
-NS_IMPL_ISUPPORTS1(nsScriptableBase64Encoder, nsIScriptableBase64Encoder)
+NS_IMPL_ISUPPORTS(nsScriptableBase64Encoder, nsIScriptableBase64Encoder)
 
 /* ACString encodeToCString (in nsIInputStream stream, in unsigned long length); */
 NS_IMETHODIMP
diff --git a/xpcom/io/nsScriptableInputStream.cpp b/xpcom/io/nsScriptableInputStream.cpp
index 13e891beede96a89b050b99171df16a1ccdc75ae..dfbcc8927a82f0893330d0c85626969b6e2cf62f 100644
--- a/xpcom/io/nsScriptableInputStream.cpp
+++ b/xpcom/io/nsScriptableInputStream.cpp
@@ -7,7 +7,7 @@
 #include "nsMemory.h"
 #include "nsString.h"
 
-NS_IMPL_ISUPPORTS1(nsScriptableInputStream, nsIScriptableInputStream)
+NS_IMPL_ISUPPORTS(nsScriptableInputStream, nsIScriptableInputStream)
 
 // nsIScriptableInputStream methods
 NS_IMETHODIMP
diff --git a/xpcom/io/nsStorageStream.cpp b/xpcom/io/nsStorageStream.cpp
index ba5e129f6693cadd9cffbac2d99593f3547c0481..c6cc0f3472e596d51d5f43e907fd458e4ab5b8f0 100644
--- a/xpcom/io/nsStorageStream.cpp
+++ b/xpcom/io/nsStorageStream.cpp
@@ -62,9 +62,9 @@ nsStorageStream::~nsStorageStream()
     delete mSegmentedBuffer;
 }
 
-NS_IMPL_ISUPPORTS2(nsStorageStream,
-                   nsIStorageStream,
-                   nsIOutputStream)
+NS_IMPL_ISUPPORTS(nsStorageStream,
+                  nsIStorageStream,
+                  nsIOutputStream)
 
 NS_IMETHODIMP
 nsStorageStream::Init(uint32_t segmentSize, uint32_t maxSize)
@@ -352,9 +352,9 @@ private:
     uint32_t SegOffset(uint32_t aPosition) {return aPosition & (mSegmentSize - 1);}
 };
 
-NS_IMPL_ISUPPORTS2(nsStorageInputStream,
-                   nsIInputStream,
-                   nsISeekableStream)
+NS_IMPL_ISUPPORTS(nsStorageInputStream,
+                  nsIInputStream,
+                  nsISeekableStream)
 
 NS_IMETHODIMP
 nsStorageStream::NewInputStream(int32_t aStartingOffset, nsIInputStream* *aInputStream)
diff --git a/xpcom/io/nsStreamUtils.cpp b/xpcom/io/nsStreamUtils.cpp
index c944c79f5ca34d98e8e4f13a05b71cb95da58622..c750f204d7f3b0fe53f21a915065b6dae03948f1 100644
--- a/xpcom/io/nsStreamUtils.cpp
+++ b/xpcom/io/nsStreamUtils.cpp
@@ -94,8 +94,8 @@ private:
     nsCOMPtr<nsIEventTarget>         mTarget;
 };
 
-NS_IMPL_ISUPPORTS2(nsInputStreamReadyEvent, nsIRunnable,
-                   nsIInputStreamCallback)
+NS_IMPL_ISUPPORTS(nsInputStreamReadyEvent, nsIRunnable,
+                  nsIInputStreamCallback)
 
 //-----------------------------------------------------------------------------
 
@@ -172,8 +172,8 @@ private:
     nsCOMPtr<nsIEventTarget>          mTarget;
 };
 
-NS_IMPL_ISUPPORTS2(nsOutputStreamReadyEvent, nsIRunnable,
-                   nsIOutputStreamCallback)
+NS_IMPL_ISUPPORTS(nsOutputStreamReadyEvent, nsIRunnable,
+                  nsIOutputStreamCallback)
 
 //-----------------------------------------------------------------------------
 
@@ -462,10 +462,10 @@ protected:
     nsresult                       mCancelStatus;
 };
 
-NS_IMPL_ISUPPORTS3(nsAStreamCopier,
-                   nsIInputStreamCallback,
-                   nsIOutputStreamCallback,
-                   nsIRunnable)
+NS_IMPL_ISUPPORTS(nsAStreamCopier,
+                  nsIInputStreamCallback,
+                  nsIOutputStreamCallback,
+                  nsIRunnable)
 
 class nsStreamCopierIB MOZ_FINAL : public nsAStreamCopier
 {
diff --git a/xpcom/io/nsStringStream.cpp b/xpcom/io/nsStringStream.cpp
index 68ed9419a1628611fe6591f9463408afa550cca8..0846d7d8c76406adb64853b33138922942cb84b6 100644
--- a/xpcom/io/nsStringStream.cpp
+++ b/xpcom/io/nsStringStream.cpp
@@ -83,17 +83,17 @@ NS_IMPL_RELEASE(nsStringInputStream)
 
 NS_IMPL_CLASSINFO(nsStringInputStream, nullptr, nsIClassInfo::THREADSAFE,
                   NS_STRINGINPUTSTREAM_CID)
-NS_IMPL_QUERY_INTERFACE5_CI(nsStringInputStream,
+NS_IMPL_QUERY_INTERFACE_CI(nsStringInputStream,
+                           nsIStringInputStream,
+                           nsIInputStream,
+                           nsISupportsCString,
+                           nsISeekableStream,
+                           nsIIPCSerializableInputStream)
+NS_IMPL_CI_INTERFACE_GETTER(nsStringInputStream,
                             nsIStringInputStream,
                             nsIInputStream,
                             nsISupportsCString,
-                            nsISeekableStream,
-                            nsIIPCSerializableInputStream)
-NS_IMPL_CI_INTERFACE_GETTER4(nsStringInputStream,
-                             nsIStringInputStream,
-                             nsIInputStream,
-                             nsISupportsCString,
-                             nsISeekableStream)
+                            nsISeekableStream)
 
 /////////
 // nsISupportsCString implementation
diff --git a/xpcom/io/nsUnicharInputStream.cpp b/xpcom/io/nsUnicharInputStream.cpp
index b639d8d1146d57c6b56cc78c66bf076d3e59e600..de4d3da9af6b6123f2916df39ac420d0cee9c175 100644
--- a/xpcom/io/nsUnicharInputStream.cpp
+++ b/xpcom/io/nsUnicharInputStream.cpp
@@ -117,7 +117,7 @@ nsresult StringUnicharInputStream::Close()
   return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS1(StringUnicharInputStream, nsIUnicharInputStream)
+NS_IMPL_ISUPPORTS(StringUnicharInputStream, nsIUnicharInputStream)
 
 //----------------------------------------------------------------------
 
@@ -165,7 +165,7 @@ UTF8InputStream::Init(nsIInputStream* aStream)
   return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS1(UTF8InputStream,nsIUnicharInputStream)
+NS_IMPL_ISUPPORTS(UTF8InputStream,nsIUnicharInputStream)
 
 UTF8InputStream::~UTF8InputStream()
 {
@@ -369,9 +369,9 @@ UTF8InputStream::CountValidUTF8Bytes(const char* aBuffer, uint32_t aMaxBytes, ui
   aValidUTF16CodeUnits = utf16length;
 }
 
-NS_IMPL_QUERY_INTERFACE2(nsSimpleUnicharStreamFactory,
-                         nsIFactory,
-                         nsISimpleUnicharStreamFactory)
+NS_IMPL_QUERY_INTERFACE(nsSimpleUnicharStreamFactory,
+                        nsIFactory,
+                        nsISimpleUnicharStreamFactory)
 
 NS_IMETHODIMP_(MozExternalRefCountType) nsSimpleUnicharStreamFactory::AddRef() { return 2; }
 NS_IMETHODIMP_(MozExternalRefCountType) nsSimpleUnicharStreamFactory::Release() { return 1; }
diff --git a/xpcom/reflect/xptcall/tests/TestXPTCInvoke.cpp b/xpcom/reflect/xptcall/tests/TestXPTCInvoke.cpp
index fd96d13dcc28a90d66cbf6b08959183fb3c7a425..5135cc12738c98ef868a7144f267d78db7497a4d 100644
--- a/xpcom/reflect/xptcall/tests/TestXPTCInvoke.cpp
+++ b/xpcom/reflect/xptcall/tests/TestXPTCInvoke.cpp
@@ -134,7 +134,7 @@ public:
     NS_IMETHOD ShouldFail(int32_t p);
 };
 
-NS_IMPL_ISUPPORTS1(InvokeTestTarget, InvokeTestTargetInterface)
+NS_IMPL_ISUPPORTS(InvokeTestTarget, InvokeTestTargetInterface)
 
 InvokeTestTarget::InvokeTestTarget()
 {
diff --git a/xpcom/reflect/xptinfo/src/xptiInterfaceInfo.cpp b/xpcom/reflect/xptinfo/src/xptiInterfaceInfo.cpp
index 96db6e258d3969f59d86c6a5e6c8b0403dc114a6..d25a9552f40ad2e712de44e89e049913cf7fa752 100644
--- a/xpcom/reflect/xptinfo/src/xptiInterfaceInfo.cpp
+++ b/xpcom/reflect/xptinfo/src/xptiInterfaceInfo.cpp
@@ -576,7 +576,7 @@ xptiInterfaceInfo::BuildParent()
 
 /***************************************************************************/
 
-NS_IMPL_QUERY_INTERFACE1(xptiInterfaceInfo, nsIInterfaceInfo)
+NS_IMPL_QUERY_INTERFACE(xptiInterfaceInfo, nsIInterfaceInfo)
 
 xptiInterfaceInfo::xptiInterfaceInfo(xptiInterfaceEntry* entry)
     : mEntry(entry), mParent(nullptr)
diff --git a/xpcom/reflect/xptinfo/src/xptiInterfaceInfoManager.cpp b/xpcom/reflect/xptinfo/src/xptiInterfaceInfoManager.cpp
index 0002a8664683783a4399bb1fdb3e8fb8fb9d2990..28c6096242950ae8b0dcd2a51d34369637ca3487 100644
--- a/xpcom/reflect/xptinfo/src/xptiInterfaceInfoManager.cpp
+++ b/xpcom/reflect/xptinfo/src/xptiInterfaceInfoManager.cpp
@@ -22,7 +22,7 @@
 
 using namespace mozilla;
 
-NS_IMPL_ISUPPORTS2(
+NS_IMPL_ISUPPORTS(
   XPTInterfaceInfoManager,
   nsIInterfaceInfoManager,
   nsIMemoryReporter)
diff --git a/xpcom/sample/nsSample.cpp b/xpcom/sample/nsSample.cpp
index 28013080453b75e538665c0cf8fca9d1d1cbd236..1eb70b29ef59677f2640eaca45b1a2ac05bf9c24 100644
--- a/xpcom/sample/nsSample.cpp
+++ b/xpcom/sample/nsSample.cpp
@@ -31,7 +31,7 @@ nsSampleImpl::~nsSampleImpl()
 }
 
 /**
- * NS_IMPL_ISUPPORTS1 expands to a simple implementation of the nsISupports
+ * NS_IMPL_ISUPPORTS expands to a simple implementation of the nsISupports
  * interface.  This includes a proper implementation of AddRef, Release,
  * and QueryInterface.  If this class supported more interfaces than just
  * nsISupports, 
@@ -45,7 +45,7 @@ nsSampleImpl::~nsSampleImpl()
  * and interface flattening.
  */
 NS_IMPL_CLASSINFO(nsSampleImpl, nullptr, 0, NS_SAMPLE_CID)
-NS_IMPL_ISUPPORTS1_CI(nsSampleImpl, nsISample)
+NS_IMPL_ISUPPORTS_CI(nsSampleImpl, nsISample)
 /**
  * Notice that in the protoype for this function, the NS_IMETHOD macro was
  * used to declare the return type.  For the implementation, the return
diff --git a/xpcom/sample/xpconnect-sample.html b/xpcom/sample/xpconnect-sample.html
index 21c7c8c8877249c101b0be8a2b5e7a257977e56e..45f19ed2f2d73256ad51f069fce0b6abea57d78d 100644
--- a/xpcom/sample/xpconnect-sample.html
+++ b/xpcom/sample/xpconnect-sample.html
@@ -62,7 +62,7 @@ compiler. The attribute Value has been expanded into a get and set
 and the return values have been modified to NS_IMETHOD, a success status
 for the method. The macro NS_DECL_ISUPPORTS, defined in <a href="http://lxr.mozilla.org/mozilla/source/xpcom/base/nsISupportsUtils.h">mozilla/xpcom/public/nsISupportsUtils.h</a>
 defines the inherited methods from nsISupports.h.
-<br><tt>NS_IMPL_ISUPPORTS1(SampleImpl, nsISample)</tt>
+<br><tt>NS_IMPL_ISUPPORTS(SampleImpl, nsISample)</tt>
 <br>In the constructor, the macro NS_INIT_REFCNT is called which sets the
 reference count to 0.<p>
 Note that the methods in the C++ bindings use InterCaps style, while the IDL
diff --git a/xpcom/tests/TestArray.cpp b/xpcom/tests/TestArray.cpp
index 592228957737147dac2a437427f8942a0205f534..92d165603af7a950cf95cf07f4972e71425aa802 100644
--- a/xpcom/tests/TestArray.cpp
+++ b/xpcom/tests/TestArray.cpp
@@ -64,7 +64,7 @@ Foo::~Foo()
           mID, static_cast<void*>(this), gCount);
 }
 
-NS_IMPL_ISUPPORTS1(Foo, IFoo)
+NS_IMPL_ISUPPORTS(Foo, IFoo)
 
 const char* AssertEqual(int32_t aValue1, int32_t aValue2)
 {
diff --git a/xpcom/tests/TestBase64.cpp b/xpcom/tests/TestBase64.cpp
index 38a0b612929a605aed21007b156dbe5e951ba132..70b1d8f375d2605bb8054cfb79156cc432a413c2 100644
--- a/xpcom/tests/TestBase64.cpp
+++ b/xpcom/tests/TestBase64.cpp
@@ -168,7 +168,7 @@ private:
   bool mClosed;
 };
 
-NS_IMPL_ISUPPORTS1(FakeInputStream, nsIInputStream)
+NS_IMPL_ISUPPORTS(FakeInputStream, nsIInputStream)
 
 NS_IMETHODIMP
 FakeInputStream::Close()
diff --git a/xpcom/tests/TestCOMArray.cpp b/xpcom/tests/TestCOMArray.cpp
index 12a13d88e565e1d791d6ddb5aa85ad151295bc2c..358b26987a1cba76066266a7ac45cd796262ae14 100644
--- a/xpcom/tests/TestCOMArray.cpp
+++ b/xpcom/tests/TestCOMArray.cpp
@@ -55,7 +55,7 @@ Foo::~Foo()
   --gCount;
 }
 
-NS_IMPL_ISUPPORTS1(Foo, IFoo)
+NS_IMPL_ISUPPORTS(Foo, IFoo)
 
 
 typedef nsCOMArray<IFoo> Array;
@@ -106,7 +106,7 @@ Bar::~Bar()
 }
 
 NS_IMPL_ADDREF(Bar)
-NS_IMPL_QUERY_INTERFACE1(Bar, IBar)
+NS_IMPL_QUERY_INTERFACE(Bar, IBar)
 
 NS_IMETHODIMP_(MozExternalRefCountType)
 Bar::Release(void)
diff --git a/xpcom/tests/TestCallTemplates.cpp b/xpcom/tests/TestCallTemplates.cpp
index 6bbaf90bb03037e4198a96e571ecbc9fe30d0597..78996bce8faed32d7c3fd794804c89e49a21d11c 100644
--- a/xpcom/tests/TestCallTemplates.cpp
+++ b/xpcom/tests/TestCallTemplates.cpp
@@ -40,7 +40,7 @@ class nsTestService MOZ_FINAL : public nsITestService,
     NS_DECL_ISUPPORTS
 };
 
-NS_IMPL_ISUPPORTS2(nsTestService, nsITestService, nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(nsTestService, nsITestService, nsISupportsWeakReference)
 
 #define NS_TEST_SERVICE_CONTRACTID "@mozilla.org/test/testservice;1"
 #define NS_TEST_SERVICE_CID \
diff --git a/xpcom/tests/TestHarness.h b/xpcom/tests/TestHarness.h
index 2d07a990755709d810f0acc3515283cef6f878f0..b20b3d1e2e58c4fc43ba37a4f4ffadbf64b7c6f1 100644
--- a/xpcom/tests/TestHarness.h
+++ b/xpcom/tests/TestHarness.h
@@ -263,7 +263,7 @@ class ScopedXPCOM : public nsIDirectoryServiceProvider2
     nsCOMPtr<nsIFile> mGRED;
 };
 
-NS_IMPL_QUERY_INTERFACE2(
+NS_IMPL_QUERY_INTERFACE(
   ScopedXPCOM,
   nsIDirectoryServiceProvider,
   nsIDirectoryServiceProvider2
diff --git a/xpcom/tests/TestObserverService.cpp b/xpcom/tests/TestObserverService.cpp
index a79f69dcc251d9bd93c5b7227ff70d1c51e5dd73..ebe2b3f3499b15f4cf99cb509841b6fc8641b765 100644
--- a/xpcom/tests/TestObserverService.cpp
+++ b/xpcom/tests/TestObserverService.cpp
@@ -46,7 +46,7 @@ private:
     ~TestObserver() {}
 };
 
-NS_IMPL_ISUPPORTS2( TestObserver, nsIObserver, nsISupportsWeakReference )
+NS_IMPL_ISUPPORTS( TestObserver, nsIObserver, nsISupportsWeakReference )
 
 NS_IMETHODIMP
 TestObserver::Observe( nsISupports     *aSubject,
diff --git a/xpcom/tests/TestPipes.cpp b/xpcom/tests/TestPipes.cpp
index 00f70d4b9ce89f17be72bce178c3b135bbb6b50b..c630e930efed4e7c365c3575036ff17c6bdc1998 100644
--- a/xpcom/tests/TestPipes.cpp
+++ b/xpcom/tests/TestPipes.cpp
@@ -146,7 +146,7 @@ protected:
     uint32_t            mCount;
 };
 
-NS_IMPL_ISUPPORTS1(nsReceiver, nsIRunnable)
+NS_IMPL_ISUPPORTS(nsReceiver, nsIRunnable)
 
 nsresult
 TestPipe(nsIInputStream* in, nsIOutputStream* out)
@@ -261,7 +261,7 @@ protected:
     Monitor*                 mMon;
 };
 
-NS_IMPL_ISUPPORTS1(nsShortReader, nsIRunnable)
+NS_IMPL_ISUPPORTS(nsShortReader, nsIRunnable)
 
 nsresult
 TestShortWrites(nsIInputStream* in, nsIOutputStream* out)
@@ -352,7 +352,7 @@ protected:
     uint32_t                            mCount;
 };
 
-NS_IMPL_ISUPPORTS1(nsPump, nsIRunnable)
+NS_IMPL_ISUPPORTS(nsPump, nsIRunnable)
 
 nsresult
 TestChainedPipes()
diff --git a/xpcom/tests/TestRacingServiceManager.cpp b/xpcom/tests/TestRacingServiceManager.cpp
index 0f3214fdf50af934edd0d1b2c77e81e76eca7a39..609322b8d41e5473498374006e1065c59437e9f7 100644
--- a/xpcom/tests/TestRacingServiceManager.cpp
+++ b/xpcom/tests/TestRacingServiceManager.cpp
@@ -103,7 +103,7 @@ public:
   bool mFirstComponentCreated;
 };
 
-NS_IMPL_ISUPPORTS1(Factory, nsIFactory)
+NS_IMPL_ISUPPORTS(Factory, nsIFactory)
 
 class Component1 MOZ_FINAL : public nsISupports
 {
diff --git a/xpcom/tests/TestThreadPool.cpp b/xpcom/tests/TestThreadPool.cpp
index f0af86df0699f460701ec52923e10ac97d022023..e469588dd72e46b890a8ded92fd6c5e4a9fac5ad 100644
--- a/xpcom/tests/TestThreadPool.cpp
+++ b/xpcom/tests/TestThreadPool.cpp
@@ -32,7 +32,7 @@ public:
 private:
   int mIndex;
 };
-NS_IMPL_ISUPPORTS1(Task, nsIRunnable)
+NS_IMPL_ISUPPORTS(Task, nsIRunnable)
 
 static nsresult
 RunTests()
diff --git a/xpcom/tests/TestThreadPoolListener.cpp b/xpcom/tests/TestThreadPoolListener.cpp
index 6e914c824d3089466b07dfdeb2fa10be79b91bca..3c45eb38d30e1c7bf389cfa48785c96300fcbf62 100644
--- a/xpcom/tests/TestThreadPoolListener.cpp
+++ b/xpcom/tests/TestThreadPoolListener.cpp
@@ -52,7 +52,7 @@ public:
   NS_DECL_NSITHREADPOOLLISTENER
 };
 
-NS_IMPL_ISUPPORTS1(Listener, nsIThreadPoolListener)
+NS_IMPL_ISUPPORTS(Listener, nsIThreadPoolListener)
 
 NS_IMETHODIMP
 Listener::OnThreadCreated()
diff --git a/xpcom/tests/TestThreads.cpp b/xpcom/tests/TestThreads.cpp
index ea806e15cacdec89f8fce46a023ca419fe7d0379..2ade6e7607e890a3da32179e543878b59f7ee59f 100644
--- a/xpcom/tests/TestThreads.cpp
+++ b/xpcom/tests/TestThreads.cpp
@@ -38,7 +38,7 @@ protected:
     int mNum;
 };
 
-NS_IMPL_ISUPPORTS1(nsRunner, nsIRunnable)
+NS_IMPL_ISUPPORTS(nsRunner, nsIRunnable)
 
 nsresult
 TestThreads()
@@ -106,7 +106,7 @@ protected:
 
 int32_t nsStressRunner::gNum = 0;
 
-NS_IMPL_ISUPPORTS1(nsStressRunner, nsIRunnable)
+NS_IMPL_ISUPPORTS(nsStressRunner, nsIRunnable)
 
 static int Stress(int loops, int threads)
 {
diff --git a/xpcom/tests/TestTimers.cpp b/xpcom/tests/TestTimers.cpp
index b9ffd1ea79d7c010da24a34bf951f319f502656e..1d1802475dc8a17acdb15ec3bd9cb77b83b87656 100644
--- a/xpcom/tests/TestTimers.cpp
+++ b/xpcom/tests/TestTimers.cpp
@@ -94,7 +94,7 @@ private:
   ReentrantMonitor* mReentrantMonitor;
 };
 
-NS_IMPL_ISUPPORTS1(TimerCallback, nsITimerCallback)
+NS_IMPL_ISUPPORTS(TimerCallback, nsITimerCallback)
 
 nsresult
 TestTargetedTimers()
diff --git a/xpcom/tests/windows/TestCOM.cpp b/xpcom/tests/windows/TestCOM.cpp
index 51947a20dec2bfda57236e4d3bb13ef367030312..ed694888d7f37bfcd5de4a0d2da9e73c6b3ae41d 100644
--- a/xpcom/tests/windows/TestCOM.cpp
+++ b/xpcom/tests/windows/TestCOM.cpp
@@ -48,7 +48,7 @@ private:
   }
 };
 
-NS_IMPL_QUERY_INTERFACE1(nsTestCom, nsITestCom)
+NS_IMPL_QUERY_INTERFACE(nsTestCom, nsITestCom)
 
 MozExternalRefCountType nsTestCom::AddRef()
 {
@@ -87,7 +87,7 @@ public:
   }
 };
 
-NS_IMPL_ISUPPORTS1(nsTestComFactory, nsIFactory)
+NS_IMPL_ISUPPORTS(nsTestComFactory, nsIFactory)
 
 nsresult nsTestComFactory::CreateInstance(nsISupports *aOuter,
 					  const nsIID &aIID,
diff --git a/xpcom/threads/LazyIdleThread.cpp b/xpcom/threads/LazyIdleThread.cpp
index ee27e632f06a564aaaa9a83adc7237c16bcb2d28..a3c668f8cefbbd1762a4152756fba4497ac1ee86 100644
--- a/xpcom/threads/LazyIdleThread.cpp
+++ b/xpcom/threads/LazyIdleThread.cpp
@@ -371,11 +371,11 @@ LazyIdleThread::Release()
   return count;
 }
 
-NS_IMPL_QUERY_INTERFACE5(LazyIdleThread, nsIThread,
-                         nsIEventTarget,
-                         nsITimerCallback,
-                         nsIThreadObserver,
-                         nsIObserver)
+NS_IMPL_QUERY_INTERFACE(LazyIdleThread, nsIThread,
+                        nsIEventTarget,
+                        nsITimerCallback,
+                        nsIThreadObserver,
+                        nsIObserver)
 
 NS_IMETHODIMP
 LazyIdleThread::Dispatch(nsIRunnable* aEvent,
diff --git a/xpcom/threads/TimerThread.cpp b/xpcom/threads/TimerThread.cpp
index 59dfb06a71991a59d3488e27630eb16396498705..1c21016aaee7a429ab2b900014ef17d94af9d0b3 100644
--- a/xpcom/threads/TimerThread.cpp
+++ b/xpcom/threads/TimerThread.cpp
@@ -19,7 +19,7 @@
 
 using namespace mozilla;
 
-NS_IMPL_ISUPPORTS2(TimerThread, nsIRunnable, nsIObserver)
+NS_IMPL_ISUPPORTS(TimerThread, nsIRunnable, nsIObserver)
 
 TimerThread::TimerThread() :
   mInitInProgress(false),
diff --git a/xpcom/threads/nsEnvironment.cpp b/xpcom/threads/nsEnvironment.cpp
index 53b2075567355543e43bb9bca210eb50d7dec317..36c9d51d10e81606bce718c6e20cea6565f00eec 100644
--- a/xpcom/threads/nsEnvironment.cpp
+++ b/xpcom/threads/nsEnvironment.cpp
@@ -14,7 +14,7 @@
 
 using namespace mozilla;
 
-NS_IMPL_ISUPPORTS1(nsEnvironment, nsIEnvironment)
+NS_IMPL_ISUPPORTS(nsEnvironment, nsIEnvironment)
 
 nsresult
 nsEnvironment::Create(nsISupports *aOuter, REFNSIID aIID,
diff --git a/xpcom/threads/nsProcessCommon.cpp b/xpcom/threads/nsProcessCommon.cpp
index c4ed006a6fa86bec7a497ee053097bc98e16e6c6..20795a9af4807a19ec458b95069ac9168693fcee 100644
--- a/xpcom/threads/nsProcessCommon.cpp
+++ b/xpcom/threads/nsProcessCommon.cpp
@@ -58,8 +58,8 @@ cpu_type_t pref_cpu_types[2] = {
 //-------------------------------------------------------------------//
 // nsIProcess implementation
 //-------------------------------------------------------------------//
-NS_IMPL_ISUPPORTS2(nsProcess, nsIProcess,
-                   nsIObserver)
+NS_IMPL_ISUPPORTS(nsProcess, nsIProcess,
+                  nsIObserver)
 
 //Constructor
 nsProcess::nsProcess()
diff --git a/xpcom/threads/nsThread.cpp b/xpcom/threads/nsThread.cpp
index 5208fd18620b51e3f7ca38e3690db11a1b351c9c..b577727a3d832e4d2de306e5fed6bf0ecc5a3440 100644
--- a/xpcom/threads/nsThread.cpp
+++ b/xpcom/threads/nsThread.cpp
@@ -99,7 +99,7 @@ public:
 
 NS_IMETHODIMP_(MozExternalRefCountType) nsThreadClassInfo::AddRef() { return 2; }
 NS_IMETHODIMP_(MozExternalRefCountType) nsThreadClassInfo::Release() { return 1; }
-NS_IMPL_QUERY_INTERFACE1(nsThreadClassInfo, nsIClassInfo)
+NS_IMPL_QUERY_INTERFACE(nsThreadClassInfo, nsIClassInfo)
 
 NS_IMETHODIMP
 nsThreadClassInfo::GetInterfaces(uint32_t *count, nsIID ***array)
@@ -170,8 +170,8 @@ NS_INTERFACE_MAP_BEGIN(nsThread)
     foundInterface = static_cast<nsIClassInfo*>(&sThreadClassInfo);
   } else
 NS_INTERFACE_MAP_END
-NS_IMPL_CI_INTERFACE_GETTER4(nsThread, nsIThread, nsIThreadInternal,
-                             nsIEventTarget, nsISupportsPriority)
+NS_IMPL_CI_INTERFACE_GETTER(nsThread, nsIThread, nsIThreadInternal,
+                            nsIEventTarget, nsISupportsPriority)
 
 //-----------------------------------------------------------------------------
 
@@ -934,7 +934,7 @@ nsThreadSyncDispatch::Run()
 
 //-----------------------------------------------------------------------------
 
-NS_IMPL_ISUPPORTS1(nsThread::nsNestedEventTarget, nsIEventTarget)
+NS_IMPL_ISUPPORTS(nsThread::nsNestedEventTarget, nsIEventTarget)
 
 NS_IMETHODIMP
 nsThread::nsNestedEventTarget::Dispatch(nsIRunnable *event, uint32_t flags)
diff --git a/xpcom/threads/nsThreadManager.cpp b/xpcom/threads/nsThreadManager.cpp
index 21a37abc463b0b704f255fc0228a73d9ae4eecd8..efe932109f7100f38f62e4fe0962be55e5c219be 100644
--- a/xpcom/threads/nsThreadManager.cpp
+++ b/xpcom/threads/nsThreadManager.cpp
@@ -48,8 +48,8 @@ NS_IMETHODIMP_(MozExternalRefCountType) nsThreadManager::Release() { return 1; }
 NS_IMPL_CLASSINFO(nsThreadManager, nullptr,
                   nsIClassInfo::THREADSAFE | nsIClassInfo::SINGLETON,
                   NS_THREADMANAGER_CID)
-NS_IMPL_QUERY_INTERFACE1_CI(nsThreadManager, nsIThreadManager)
-NS_IMPL_CI_INTERFACE_GETTER1(nsThreadManager, nsIThreadManager)
+NS_IMPL_QUERY_INTERFACE_CI(nsThreadManager, nsIThreadManager)
+NS_IMPL_CI_INTERFACE_GETTER(nsThreadManager, nsIThreadManager)
 
 //-----------------------------------------------------------------------------
 
diff --git a/xpcom/threads/nsThreadPool.cpp b/xpcom/threads/nsThreadPool.cpp
index 299d8f4319ccd8cedfa68d566e3570a2cffe726d..4e1b90fc692f5da0f07cd6d9c3f6e9953cb90d90 100644
--- a/xpcom/threads/nsThreadPool.cpp
+++ b/xpcom/threads/nsThreadPool.cpp
@@ -44,9 +44,9 @@ NS_IMPL_ADDREF(nsThreadPool)
 NS_IMPL_RELEASE(nsThreadPool)
 NS_IMPL_CLASSINFO(nsThreadPool, nullptr, nsIClassInfo::THREADSAFE,
                   NS_THREADPOOL_CID)
-NS_IMPL_QUERY_INTERFACE3_CI(nsThreadPool, nsIThreadPool, nsIEventTarget,
-                            nsIRunnable)
-NS_IMPL_CI_INTERFACE_GETTER2(nsThreadPool, nsIThreadPool, nsIEventTarget)
+NS_IMPL_QUERY_INTERFACE_CI(nsThreadPool, nsIThreadPool, nsIEventTarget,
+                           nsIRunnable)
+NS_IMPL_CI_INTERFACE_GETTER(nsThreadPool, nsIThreadPool, nsIEventTarget)
 
 nsThreadPool::nsThreadPool()
   : mThreadLimit(DEFAULT_THREAD_LIMIT)
diff --git a/xpcom/threads/nsTimerImpl.cpp b/xpcom/threads/nsTimerImpl.cpp
index f383647f17ee31b9c78640e5c651675178af19ef..0982631a1763e6afa2bf2f4665799b4172e24ea5 100644
--- a/xpcom/threads/nsTimerImpl.cpp
+++ b/xpcom/threads/nsTimerImpl.cpp
@@ -191,7 +191,7 @@ void TimerEventAllocator::Free(void* aPtr)
 
 } // anonymous namespace
 
-NS_IMPL_QUERY_INTERFACE1(nsTimerImpl, nsITimer)
+NS_IMPL_QUERY_INTERFACE(nsTimerImpl, nsITimer)
 NS_IMPL_ADDREF(nsTimerImpl)
 
 NS_IMETHODIMP_(MozExternalRefCountType) nsTimerImpl::Release(void)
diff --git a/xpfe/appshell/src/nsAppShellService.cpp b/xpfe/appshell/src/nsAppShellService.cpp
index b3eb5f6d675602014aea285f0d8f7e6f74cb18db..666c2de3e26dde6944f8943644019e6f5b313bb7 100644
--- a/xpfe/appshell/src/nsAppShellService.cpp
+++ b/xpfe/appshell/src/nsAppShellService.cpp
@@ -80,9 +80,9 @@ nsAppShellService::~nsAppShellService()
 /*
  * Implement the nsISupports methods...
  */
-NS_IMPL_ISUPPORTS2(nsAppShellService,
-                   nsIAppShellService,
-                   nsIObserver)
+NS_IMPL_ISUPPORTS(nsAppShellService,
+                  nsIAppShellService,
+                  nsIObserver)
 
 NS_IMETHODIMP
 nsAppShellService::CreateHiddenWindow()
diff --git a/xpfe/appshell/src/nsAppShellWindowEnumerator.cpp b/xpfe/appshell/src/nsAppShellWindowEnumerator.cpp
index 4361565c99b442bfff35c1b4d98ef9dfc48e9db2..81ab2c31ae0ebd6b3632e609fc25bbfc19e3336f 100644
--- a/xpfe/appshell/src/nsAppShellWindowEnumerator.cpp
+++ b/xpfe/appshell/src/nsAppShellWindowEnumerator.cpp
@@ -148,7 +148,7 @@ void nsWindowInfo::ReferenceSelf(bool inAge, bool inZ)
 // nsAppShellWindowEnumerator
 //
 
-NS_IMPL_ISUPPORTS1(nsAppShellWindowEnumerator, nsISimpleEnumerator)
+NS_IMPL_ISUPPORTS(nsAppShellWindowEnumerator, nsISimpleEnumerator)
 
 nsAppShellWindowEnumerator::nsAppShellWindowEnumerator(
     const char16_t* aTypeString,
diff --git a/xpfe/appshell/src/nsWebShellWindow.cpp b/xpfe/appshell/src/nsWebShellWindow.cpp
index 0ba1fb9cb147c9df66d2cf7e1f99be89c22d93fa..72ffcacc1a7dbba07a06dc874d786cb13253e0c6 100644
--- a/xpfe/appshell/src/nsWebShellWindow.cpp
+++ b/xpfe/appshell/src/nsWebShellWindow.cpp
@@ -464,7 +464,7 @@ private:
   nsRefPtr<nsWebShellWindow> mWindow;
 };
 
-NS_IMPL_ISUPPORTS1(WebShellWindowTimerCallback, nsITimerCallback)
+NS_IMPL_ISUPPORTS(WebShellWindowTimerCallback, nsITimerCallback)
 
 } // namespace mozilla
 
diff --git a/xpfe/appshell/src/nsWindowMediator.cpp b/xpfe/appshell/src/nsWindowMediator.cpp
index 0729c4cebfb6a4a5edb9b1180a4f13e2da7ac278..eb28d1d8baf7a32002edd396afd3ff95b176b003 100644
--- a/xpfe/appshell/src/nsWindowMediator.cpp
+++ b/xpfe/appshell/src/nsWindowMediator.cpp
@@ -743,7 +743,7 @@ nsWindowMediator::SortZOrderBackToFront()
   mSortingZOrder = false;
 }
 
-NS_IMPL_ISUPPORTS3(nsWindowMediator,
+NS_IMPL_ISUPPORTS(nsWindowMediator,
   nsIWindowMediator,
   nsIObserver,
   nsISupportsWeakReference)
diff --git a/xpfe/components/directory/nsDirectoryViewer.cpp b/xpfe/components/directory/nsDirectoryViewer.cpp
index ab9287d2d3243209d7db22e3ad5c09f4ec822bf9..46a362b6bbdfb83c971f314bc177b091e01cd026 100644
--- a/xpfe/components/directory/nsDirectoryViewer.cpp
+++ b/xpfe/components/directory/nsDirectoryViewer.cpp
@@ -1254,7 +1254,7 @@ nsDirectoryViewerFactory::~nsDirectoryViewerFactory()
 }
 
 
-NS_IMPL_ISUPPORTS1(nsDirectoryViewerFactory, nsIDocumentLoaderFactory)
+NS_IMPL_ISUPPORTS(nsDirectoryViewerFactory, nsIDocumentLoaderFactory)
 
 
 
diff --git a/xulrunner/examples/simple/components/src/SimpleTest.cpp b/xulrunner/examples/simple/components/src/SimpleTest.cpp
index 57bfd9f2c1823d7e6e7428c2f9f7aeaebc2820ce..0f5239fd3060b0e337b103e391d1a03579f56507 100644
--- a/xulrunner/examples/simple/components/src/SimpleTest.cpp
+++ b/xulrunner/examples/simple/components/src/SimpleTest.cpp
@@ -14,7 +14,7 @@ public:
   NS_DECL_NSISIMPLETEST
 };
 
-NS_IMPL_ISUPPORTS1(SimpleTest, nsISimpleTest)
+NS_IMPL_ISUPPORTS(SimpleTest, nsISimpleTest)
 
 NS_IMETHODIMP
 SimpleTest::Add(int32_t a, int32_t b, int32_t *r)