Bug 1147572 - Remove implementation language field from DOM class info. r=jst
authorAndrew McCreight <continuation@gmail.com>
Mon, 30 Mar 2015 10:45:39 -0700
changeset 236539 8854fd9c5e7350b97d0112fe052cba3ae88a965f
parent 236538 e9b95bab1c13f9143c415e7c1e31b7c18e3b7253
child 236540 de811f56ae407b9dbc3241ba3e8859fab8877c75
push id57710
push useramccreight@mozilla.com
push dateMon, 30 Mar 2015 17:46:07 +0000
treeherdermozilla-inbound@8854fd9c5e73 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersjst
bugs1147572
milestone39.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1147572 - Remove implementation language field from DOM class info. r=jst
dom/base/nsDOMClassInfo.cpp
dom/base/nsHostObjectURI.cpp
js/xpconnect/loader/XPCOMUtils.jsm
js/xpconnect/src/XPCComponents.cpp
js/xpconnect/src/XPCRuntimeService.cpp
js/xpconnect/tests/unit/component-blob.js
js/xpconnect/tests/unit/component-file.js
js/xpconnect/tests/unit/component_import.js
modules/libjar/nsJARURI.cpp
netwerk/base/nsSimpleURI.cpp
netwerk/base/nsSocketTransport2.cpp
netwerk/base/nsStandardURL.cpp
security/manager/ssl/src/TransportSecurityInfo.cpp
security/manager/ssl/src/nsNSSCertificate.cpp
security/manager/ssl/src/nsNSSCertificateFakeTransport.cpp
security/manager/ssl/src/nsSSLStatus.cpp
storage/src/mozStorageAsyncStatement.cpp
storage/src/mozStorageStatement.cpp
toolkit/modules/tests/xpcshell/test_GMPInstallManager.js
toolkit/mozapps/update/tests/data/xpcshellUtilsAUS.js
xpcom/components/nsIClassInfo.idl
xpcom/glue/nsClassInfoImpl.cpp
xpcom/glue/nsISupportsImpl.h
xpcom/io/nsPipe3.cpp
xpcom/threads/nsThread.cpp
--- a/dom/base/nsDOMClassInfo.cpp
+++ b/dom/base/nsDOMClassInfo.cpp
@@ -38,17 +38,16 @@
 
 // General helper includes
 #include "nsGlobalWindow.h"
 #include "nsIContent.h"
 #include "nsIDocument.h"
 #include "nsIDOMDocument.h"
 #include "nsIDOMEvent.h"
 #include "nsIDOMEventListener.h"
-#include "nsIProgrammingLanguage.h"
 #include "nsContentUtils.h"
 #include "nsIDOMGlobalPropertyInitializer.h"
 #include "mozilla/Attributes.h"
 #include "mozilla/Telemetry.h"
 
 // Window scriptable helper includes
 #include "nsScriptNameSpaceManager.h"
 
@@ -860,24 +859,16 @@ nsDOMClassInfo::GetClassID(nsCID **aClas
 
 NS_IMETHODIMP
 nsDOMClassInfo::GetClassIDNoAlloc(nsCID *aClassID)
 {
   return NS_ERROR_NOT_AVAILABLE;
 }
 
 NS_IMETHODIMP
-nsDOMClassInfo::GetImplementationLanguage(uint32_t *aImplLanguage)
-{
-  *aImplLanguage = nsIProgrammingLanguage::CPLUSPLUS;
-
-  return NS_OK;
-}
-
-NS_IMETHODIMP
 nsDOMClassInfo::GetFlags(uint32_t *aFlags)
 {
   *aFlags = DOMCLASSINFO_STANDARD_FLAGS;
 
   return NS_OK;
 }
 
 // nsIXPCScriptable
--- a/dom/base/nsHostObjectURI.cpp
+++ b/dom/base/nsHostObjectURI.cpp
@@ -3,17 +3,16 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "nsHostObjectURI.h"
 
 #include "nsAutoPtr.h"
 #include "nsIObjectInputStream.h"
 #include "nsIObjectOutputStream.h"
-#include "nsIProgrammingLanguage.h"
 
 #include "mozilla/ipc/BackgroundUtils.h"
 #include "mozilla/ipc/URIUtils.h"
 
 static NS_DEFINE_CID(kHOSTOBJECTURICID, NS_HOSTOBJECTURI_CID);
 
 static NS_DEFINE_CID(kThisSimpleURIImplementationCID,
                      NS_THIS_SIMPLEURI_IMPLEMENTATION_CID);
@@ -231,23 +230,16 @@ nsHostObjectURI::GetClassID(nsCID * *aCl
   // changes to not call the virtual GetClassIDNoAlloc.
   *aClassID = (nsCID*) nsMemory::Alloc(sizeof(nsCID));
   NS_ENSURE_TRUE(*aClassID, NS_ERROR_OUT_OF_MEMORY);
 
   return GetClassIDNoAlloc(*aClassID);
 }
 
 NS_IMETHODIMP 
-nsHostObjectURI::GetImplementationLanguage(uint32_t *aImplementationLanguage)
-{
-  *aImplementationLanguage = nsIProgrammingLanguage::CPLUSPLUS;
-  return NS_OK;
-}
-
-NS_IMETHODIMP 
 nsHostObjectURI::GetFlags(uint32_t *aFlags)
 {
   *aFlags = nsIClassInfo::MAIN_THREAD_ONLY;
   return NS_OK;
 }
 
 NS_IMETHODIMP 
 nsHostObjectURI::GetClassIDNoAlloc(nsCID *aClassIDNoAlloc)
--- a/js/xpconnect/loader/XPCOMUtils.jsm
+++ b/js/xpconnect/loader/XPCOMUtils.jsm
@@ -143,17 +143,16 @@ this.XPCOMUtils = {
       getInterfaces: function XPCU_getInterfaces(countRef) {
         countRef.value = _interfaces.length;
         return _interfaces;
       },
       getScriptableHelper: function XPCU_getScriptableHelper() null,
       contractID: classInfo.contractID,
       classDescription: classInfo.classDescription,
       classID: classInfo.classID,
-      implementationLanguage: Ci.nsIProgrammingLanguage.JAVASCRIPT,
       flags: classInfo.flags,
       QueryInterface: this.generateQI([Ci.nsIClassInfo])
     };
   },
 
   /**
    * Generate a NSGetFactory function given an array of components.
    */
--- a/js/xpconnect/src/XPCComponents.cpp
+++ b/js/xpconnect/src/XPCComponents.cpp
@@ -25,17 +25,16 @@
 #include "mozilla/dom/DOMException.h"
 #include "mozilla/dom/DOMExceptionBinding.h"
 #include "mozilla/dom/BindingUtils.h"
 #include "mozilla/dom/StructuredCloneTags.h"
 #include "mozilla/dom/WindowBinding.h"
 #include "nsZipArchive.h"
 #include "nsIDOMFile.h"
 #include "nsIDOMFileList.h"
-#include "nsIProgrammingLanguage.h"
 #include "nsWindowMemoryReporter.h"
 #include "nsDOMClassInfo.h"
 #include "ShimInterfaceInfo.h"
 
 using namespace mozilla;
 using namespace JS;
 using namespace js;
 using namespace xpc;
@@ -182,24 +181,16 @@ nsXPCComponents_Interfaces::GetClassDesc
 /* readonly attribute nsCIDPtr classID; */
 NS_IMETHODIMP
 nsXPCComponents_Interfaces::GetClassID(nsCID * *aClassID)
 {
     *aClassID = nullptr;
     return NS_OK;
 }
 
-/* readonly attribute uint32_t implementationLanguage; */
-NS_IMETHODIMP
-nsXPCComponents_Interfaces::GetImplementationLanguage(uint32_t* aImplementationLanguage)
-{
-    *aImplementationLanguage = nsIProgrammingLanguage::CPLUSPLUS;
-    return NS_OK;
-}
-
 /* readonly attribute uint32_t flags; */
 NS_IMETHODIMP
 nsXPCComponents_Interfaces::GetFlags(uint32_t* aFlags)
 {
     // Mark ourselves as a DOM object so that instances may be created in
     // unprivileged scopes.
     *aFlags = nsIClassInfo::DOM_OBJECT;
     return NS_OK;
@@ -425,24 +416,16 @@ nsXPCComponents_InterfacesByID::GetClass
 /* readonly attribute nsCIDPtr classID; */
 NS_IMETHODIMP
 nsXPCComponents_InterfacesByID::GetClassID(nsCID * *aClassID)
 {
     *aClassID = nullptr;
     return NS_OK;
 }
 
-/* readonly attribute uint32_t implementationLanguage; */
-NS_IMETHODIMP
-nsXPCComponents_InterfacesByID::GetImplementationLanguage(uint32_t* aImplementationLanguage)
-{
-    *aImplementationLanguage = nsIProgrammingLanguage::CPLUSPLUS;
-    return NS_OK;
-}
-
 /* readonly attribute uint32_t flags; */
 NS_IMETHODIMP
 nsXPCComponents_InterfacesByID::GetFlags(uint32_t* aFlags)
 {
     // Mark ourselves as a DOM object so that instances may be created in
     // unprivileged scopes.
     *aFlags = nsIClassInfo::DOM_OBJECT;
     return NS_OK;
@@ -670,24 +653,16 @@ nsXPCComponents_Classes::GetClassDescrip
 /* readonly attribute nsCIDPtr classID; */
 NS_IMETHODIMP
 nsXPCComponents_Classes::GetClassID(nsCID * *aClassID)
 {
     *aClassID = nullptr;
     return NS_OK;
 }
 
-/* readonly attribute uint32_t implementationLanguage; */
-NS_IMETHODIMP
-nsXPCComponents_Classes::GetImplementationLanguage(uint32_t* aImplementationLanguage)
-{
-    *aImplementationLanguage = nsIProgrammingLanguage::CPLUSPLUS;
-    return NS_OK;
-}
-
 /* readonly attribute uint32_t flags; */
 NS_IMETHODIMP
 nsXPCComponents_Classes::GetFlags(uint32_t* aFlags)
 {
     *aFlags = 0;
     return NS_OK;
 }
 
@@ -895,24 +870,16 @@ nsXPCComponents_ClassesByID::GetClassDes
 /* readonly attribute nsCIDPtr classID; */
 NS_IMETHODIMP
 nsXPCComponents_ClassesByID::GetClassID(nsCID * *aClassID)
 {
     *aClassID = nullptr;
     return NS_OK;
 }
 
-/* readonly attribute uint32_t implementationLanguage; */
-NS_IMETHODIMP
-nsXPCComponents_ClassesByID::GetImplementationLanguage(uint32_t* aImplementationLanguage)
-{
-    *aImplementationLanguage = nsIProgrammingLanguage::CPLUSPLUS;
-    return NS_OK;
-}
-
 /* readonly attribute uint32_t flags; */
 NS_IMETHODIMP
 nsXPCComponents_ClassesByID::GetFlags(uint32_t* aFlags)
 {
     *aFlags = 0;
     return NS_OK;
 }
 
@@ -1143,24 +1110,16 @@ nsXPCComponents_Results::GetClassDescrip
 /* readonly attribute nsCIDPtr classID; */
 NS_IMETHODIMP
 nsXPCComponents_Results::GetClassID(nsCID * *aClassID)
 {
     *aClassID = nullptr;
     return NS_OK;
 }
 
-/* readonly attribute uint32_t implementationLanguage; */
-NS_IMETHODIMP
-nsXPCComponents_Results::GetImplementationLanguage(uint32_t* aImplementationLanguage)
-{
-    *aImplementationLanguage = nsIProgrammingLanguage::CPLUSPLUS;
-    return NS_OK;
-}
-
 /* readonly attribute uint32_t flags; */
 NS_IMETHODIMP
 nsXPCComponents_Results::GetFlags(uint32_t* aFlags)
 {
     // Mark ourselves as a DOM object so that instances may be created in
     // unprivileged scopes.
     *aFlags = nsIClassInfo::DOM_OBJECT;
     return NS_OK;
@@ -1348,24 +1307,16 @@ nsXPCComponents_ID::GetClassDescription(
 /* readonly attribute nsCIDPtr classID; */
 NS_IMETHODIMP
 nsXPCComponents_ID::GetClassID(nsCID * *aClassID)
 {
     *aClassID = nullptr;
     return NS_OK;
 }
 
-/* readonly attribute uint32_t implementationLanguage; */
-NS_IMETHODIMP
-nsXPCComponents_ID::GetImplementationLanguage(uint32_t* aImplementationLanguage)
-{
-    *aImplementationLanguage = nsIProgrammingLanguage::CPLUSPLUS;
-    return NS_OK;
-}
-
 /* readonly attribute uint32_t flags; */
 NS_IMETHODIMP
 nsXPCComponents_ID::GetFlags(uint32_t* aFlags)
 {
     *aFlags = 0;
     return NS_OK;
 }
 
@@ -1564,24 +1515,16 @@ nsXPCComponents_Exception::GetClassDescr
 /* readonly attribute nsCIDPtr classID; */
 NS_IMETHODIMP
 nsXPCComponents_Exception::GetClassID(nsCID * *aClassID)
 {
     *aClassID = nullptr;
     return NS_OK;
 }
 
-/* readonly attribute uint32_t implementationLanguage; */
-NS_IMETHODIMP
-nsXPCComponents_Exception::GetImplementationLanguage(uint32_t* aImplementationLanguage)
-{
-    *aImplementationLanguage = nsIProgrammingLanguage::CPLUSPLUS;
-    return NS_OK;
-}
-
 /* readonly attribute uint32_t flags; */
 NS_IMETHODIMP
 nsXPCComponents_Exception::GetFlags(uint32_t* aFlags)
 {
     *aFlags = 0;
     return NS_OK;
 }
 
@@ -1953,24 +1896,16 @@ nsXPCConstructor::GetClassDescription(ch
 /* readonly attribute nsCIDPtr classID; */
 NS_IMETHODIMP
 nsXPCConstructor::GetClassID(nsCID * *aClassID)
 {
     *aClassID = nullptr;
     return NS_OK;
 }
 
-/* readonly attribute uint32_t implementationLanguage; */
-NS_IMETHODIMP
-nsXPCConstructor::GetImplementationLanguage(uint32_t* aImplementationLanguage)
-{
-    *aImplementationLanguage = nsIProgrammingLanguage::CPLUSPLUS;
-    return NS_OK;
-}
-
 /* readonly attribute uint32_t flags; */
 NS_IMETHODIMP
 nsXPCConstructor::GetFlags(uint32_t* aFlags)
 {
     *aFlags = 0;
     return NS_OK;
 }
 
@@ -2207,24 +2142,16 @@ nsXPCComponents_Constructor::GetClassDes
 /* readonly attribute nsCIDPtr classID; */
 NS_IMETHODIMP
 nsXPCComponents_Constructor::GetClassID(nsCID * *aClassID)
 {
     *aClassID = nullptr;
     return NS_OK;
 }
 
-/* readonly attribute uint32_t implementationLanguage; */
-NS_IMETHODIMP
-nsXPCComponents_Constructor::GetImplementationLanguage(uint32_t* aImplementationLanguage)
-{
-    *aImplementationLanguage = nsIProgrammingLanguage::CPLUSPLUS;
-    return NS_OK;
-}
-
 /* readonly attribute uint32_t flags; */
 NS_IMETHODIMP
 nsXPCComponents_Constructor::GetFlags(uint32_t* aFlags)
 {
     *aFlags = 0;
     return NS_OK;
 }
 
--- a/js/xpconnect/src/XPCRuntimeService.cpp
+++ b/js/xpconnect/src/XPCRuntimeService.cpp
@@ -3,17 +3,16 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "xpcprivate.h"
 
 #include "nsContentUtils.h"
 #include "BackstagePass.h"
-#include "nsIProgrammingLanguage.h"
 #include "nsDOMClassInfo.h"
 #include "nsIPrincipal.h"
 #include "mozilla/dom/BindingUtils.h"
 
 NS_INTERFACE_MAP_BEGIN(BackstagePass)
   NS_INTERFACE_MAP_ENTRY(nsIGlobalObject)
   NS_INTERFACE_MAP_ENTRY(nsIXPCScriptable)
   NS_INTERFACE_MAP_ENTRY(nsIClassInfo)
@@ -143,24 +142,16 @@ BackstagePass::GetClassDescription(char 
 /* readonly attribute nsCIDPtr classID; */
 NS_IMETHODIMP
 BackstagePass::GetClassID(nsCID * *aClassID)
 {
     *aClassID = nullptr;
     return NS_OK;
 }
 
-/* readonly attribute uint32_t implementationLanguage; */
-NS_IMETHODIMP
-BackstagePass::GetImplementationLanguage(uint32_t* aImplementationLanguage)
-{
-    *aImplementationLanguage = nsIProgrammingLanguage::CPLUSPLUS;
-    return NS_OK;
-}
-
 /* readonly attribute uint32_t flags; */
 NS_IMETHODIMP
 BackstagePass::GetFlags(uint32_t* aFlags)
 {
     *aFlags = nsIClassInfo::MAIN_THREAD_ONLY;
     return NS_OK;
 }
 
--- a/js/xpconnect/tests/unit/component-blob.js
+++ b/js/xpconnect/tests/unit/component-blob.js
@@ -54,17 +54,16 @@ BlobComponent.prototype =
   },
 
   // nsIClassInfo + information for XPCOM registration code in XPCOMUtils.jsm
   classDescription: "Blob in components scope code",
   classID: Components.ID("{06215993-a3c2-41e3-bdfd-0a3a2cc0b65c}"),
   contractID: "@mozilla.org/tests/component-blob;1",
 
   // nsIClassInfo
-  implementationLanguage: Components.interfaces.nsIProgrammingLanguage.JAVASCRIPT,
   flags: 0,
 
   getInterfaces: function getInterfaces(aCount) {
     var interfaces = [Components.interfaces.nsIClassInfo];
     aCount.value = interfaces.length;
     return interfaces;
   },
 
--- a/js/xpconnect/tests/unit/component-file.js
+++ b/js/xpconnect/tests/unit/component-file.js
@@ -79,17 +79,16 @@ FileComponent.prototype =
   },
 
   // nsIClassInfo + information for XPCOM registration code in XPCOMUtils.jsm
   classDescription: "File in components scope code",
   classID: Components.ID("{da332370-91d4-464f-a730-018e14769cab}"),
   contractID: "@mozilla.org/tests/component-file;1",
 
   // nsIClassInfo
-  implementationLanguage: Components.interfaces.nsIProgrammingLanguage.JAVASCRIPT,
   flags: 0,
 
   getInterfaces: function getInterfaces(aCount) {
     var interfaces = [Components.interfaces.nsIClassInfo];
     aCount.value = interfaces.length;
     return interfaces;
   },
 
--- a/js/xpconnect/tests/unit/component_import.js
+++ b/js/xpconnect/tests/unit/component_import.js
@@ -10,33 +10,32 @@ function FooComponent() {
 FooComponent.prototype =
 {
   // nsIClassInfo + information for XPCOM registration code in XPCOMUtils.jsm
   classDescription:  "Foo Component",
   classID:           Components.ID("{6b933fe6-6eba-4622-ac86-e4f654f1b474}"),
   contractID:       "@mozilla.org/tests/module-importer;1",
 
   // nsIClassInfo
-  implementationLanguage: Components.interfaces.nsIProgrammingLanguage.JAVASCRIPT,
   flags: 0,
 
   getInterfaces: function getInterfaces(aCount) {
     var interfaces = [Components.interfaces.nsIClassInfo];
     aCount.value = interfaces.length;
 
     // Guerilla test for line numbers hiding in this method
     var threw = true;
     try {
       thereIsNoSuchIdentifier;
       threw = false;
     } catch (ex) {
-      do_check_true(ex.lineNumber == 28);
+      do_check_true(ex.lineNumber == 27);
     }
     do_check_true(threw);
-    
+
     return interfaces;
   },
 
   getScriptableHelper: function getScriptableHelper() {
     return null;
   },
 
   // nsISupports
@@ -54,17 +53,16 @@ function BarComponent() {
 BarComponent.prototype =
 {
   // nsIClassInfo + information for XPCOM registration code in XPCOMUtils.jsm
   classDescription: "Module importer test 2",
   classID: Components.ID("{708a896a-b48d-4bff-906e-fc2fd134b296}"),
   contractID: "@mozilla.org/tests/module-importer;2",
 
   // nsIClassInfo
-  implementationLanguage: Components.interfaces.nsIProgrammingLanguage.JAVASCRIPT,
   flags: 0,
 
   getInterfaces: function getInterfaces(aCount) {
     var interfaces = [Components.interfaces.nsIClassInfo];
     aCount.value = interfaces.length;
     return interfaces;
   },
 
--- a/modules/libjar/nsJARURI.cpp
+++ b/modules/libjar/nsJARURI.cpp
@@ -14,17 +14,16 @@
 #include "nsIComponentManager.h"
 #include "nsIServiceManager.h"
 #include "nsIZipReader.h"
 #include "nsReadableUtils.h"
 #include "nsAutoPtr.h"
 #include "nsNetCID.h"
 #include "nsIObjectInputStream.h"
 #include "nsIObjectOutputStream.h"
-#include "nsIProgrammingLanguage.h"
 #include "mozilla/ipc/URIUtils.h"
 
 using namespace mozilla::ipc;
 
 static NS_DEFINE_CID(kJARURICID, NS_JARURI_CID);
 
 ////////////////////////////////////////////////////////////////////////////////
  
@@ -191,23 +190,16 @@ nsJARURI::GetClassID(nsCID * *aClassID)
 {
     *aClassID = (nsCID*) nsMemory::Alloc(sizeof(nsCID));
     if (!*aClassID)
         return NS_ERROR_OUT_OF_MEMORY;
     return GetClassIDNoAlloc(*aClassID);
 }
 
 NS_IMETHODIMP 
-nsJARURI::GetImplementationLanguage(uint32_t *aImplementationLanguage)
-{
-    *aImplementationLanguage = nsIProgrammingLanguage::CPLUSPLUS;
-    return NS_OK;
-}
-
-NS_IMETHODIMP 
 nsJARURI::GetFlags(uint32_t *aFlags)
 {
     // XXX We implement THREADSAFE addref/release, but probably shouldn't.
     *aFlags = nsIClassInfo::MAIN_THREAD_ONLY;
     return NS_OK;
 }
 
 NS_IMETHODIMP 
--- a/netwerk/base/nsSimpleURI.cpp
+++ b/netwerk/base/nsSimpleURI.cpp
@@ -13,17 +13,16 @@
 #include "nsString.h"
 #include "plstr.h"
 #include "nsURLHelper.h"
 #include "nsNetCID.h"
 #include "nsIObjectInputStream.h"
 #include "nsIObjectOutputStream.h"
 #include "nsEscape.h"
 #include "nsError.h"
-#include "nsIProgrammingLanguage.h"
 #include "nsIIPCSerializableURI.h"
 #include "mozilla/MemoryReporting.h"
 #include "mozilla/ipc/URIUtils.h"
 
 using namespace mozilla::ipc;
 
 static NS_DEFINE_CID(kThisSimpleURIImplementationCID,
                      NS_THIS_SIMPLEURI_IMPLEMENTATION_CID);
@@ -586,23 +585,16 @@ nsSimpleURI::GetClassID(nsCID * *aClassI
     // changes to not call the virtual GetClassIDNoAlloc.
     *aClassID = (nsCID*) nsMemory::Alloc(sizeof(nsCID));
     if (!*aClassID)
         return NS_ERROR_OUT_OF_MEMORY;
     return GetClassIDNoAlloc(*aClassID);
 }
 
 NS_IMETHODIMP 
-nsSimpleURI::GetImplementationLanguage(uint32_t *aImplementationLanguage)
-{
-    *aImplementationLanguage = nsIProgrammingLanguage::CPLUSPLUS;
-    return NS_OK;
-}
-
-NS_IMETHODIMP 
 nsSimpleURI::GetFlags(uint32_t *aFlags)
 {
     *aFlags = nsIClassInfo::MAIN_THREAD_ONLY;
     return NS_OK;
 }
 
 NS_IMETHODIMP 
 nsSimpleURI::GetClassIDNoAlloc(nsCID *aClassIDNoAlloc)
--- a/netwerk/base/nsSocketTransport2.cpp
+++ b/netwerk/base/nsSocketTransport2.cpp
@@ -23,17 +23,16 @@
 #include "NSSErrorsService.h"
 #include "mozilla/net/NeckoChild.h"
 #include "mozilla/VisualEventTracer.h"
 #include "nsThreadUtils.h"
 #include "nsISocketProviderService.h"
 #include "nsISocketProvider.h"
 #include "nsISSLSocketControl.h"
 #include "nsIPipe.h"
-#include "nsIProgrammingLanguage.h"
 #include "nsIClassInfoImpl.h"
 #include "nsURLHelper.h"
 #include "nsIDNSService.h"
 #include "nsIDNSRecord.h"
 #include "nsICancelable.h"
 #include <algorithm>
 
 #include "nsPrintfCString.h"
@@ -2462,23 +2461,16 @@ nsSocketTransport::GetClassDescription(c
 NS_IMETHODIMP
 nsSocketTransport::GetClassID(nsCID * *aClassID)
 {
     *aClassID = nullptr;
     return NS_OK;
 }
 
 NS_IMETHODIMP
-nsSocketTransport::GetImplementationLanguage(uint32_t *aImplementationLanguage)
-{
-    *aImplementationLanguage = nsIProgrammingLanguage::CPLUSPLUS;
-    return NS_OK;
-}
-
-NS_IMETHODIMP
 nsSocketTransport::GetFlags(uint32_t *aFlags)
 {
     *aFlags = nsIClassInfo::THREADSAFE;
     return NS_OK;
 }
 
 NS_IMETHODIMP
 nsSocketTransport::GetClassIDNoAlloc(nsCID *aClassIDNoAlloc)
--- a/netwerk/base/nsStandardURL.cpp
+++ b/netwerk/base/nsStandardURL.cpp
@@ -12,17 +12,16 @@
 #include "nsIFile.h"
 #include "nsIObjectInputStream.h"
 #include "nsIObjectOutputStream.h"
 #include "nsIPrefService.h"
 #include "nsIPrefBranch.h"
 #include "nsIIDNService.h"
 #include "prlog.h"
 #include "nsAutoPtr.h"
-#include "nsIProgrammingLanguage.h"
 #include "nsIURLParser.h"
 #include "nsNetCID.h"
 #include "mozilla/MemoryReporting.h"
 #include "mozilla/ipc/URIUtils.h"
 #include <algorithm>
 #include "mozilla/dom/EncodingUtils.h"
 #include "nsContentUtils.h"
 
@@ -3204,23 +3203,16 @@ nsStandardURL::GetClassID(nsCID * *aClas
 {
     *aClassID = (nsCID*) nsMemory::Alloc(sizeof(nsCID));
     if (!*aClassID)
         return NS_ERROR_OUT_OF_MEMORY;
     return GetClassIDNoAlloc(*aClassID);
 }
 
 NS_IMETHODIMP 
-nsStandardURL::GetImplementationLanguage(uint32_t *aImplementationLanguage)
-{
-    *aImplementationLanguage = nsIProgrammingLanguage::CPLUSPLUS;
-    return NS_OK;
-}
-
-NS_IMETHODIMP 
 nsStandardURL::GetFlags(uint32_t *aFlags)
 {
     *aFlags = nsIClassInfo::MAIN_THREAD_ONLY;
     return NS_OK;
 }
 
 NS_IMETHODIMP 
 nsStandardURL::GetClassIDNoAlloc(nsCID *aClassIDNoAlloc)
--- a/security/manager/ssl/src/TransportSecurityInfo.cpp
+++ b/security/manager/ssl/src/TransportSecurityInfo.cpp
@@ -12,17 +12,16 @@
 #include "nsNSSCertificate.h"
 #include "nsIX509CertValidity.h"
 #include "nsIDateTimeFormat.h"
 #include "nsDateTimeFormatCID.h"
 #include "nsICertOverrideService.h"
 #include "nsIObjectInputStream.h"
 #include "nsIObjectOutputStream.h"
 #include "nsNSSCertHelper.h"
-#include "nsIProgrammingLanguage.h"
 #include "nsIArray.h"
 #include "nsComponentManagerUtils.h"
 #include "nsReadableUtils.h"
 #include "nsServiceManagerUtils.h"
 #include "nsXULAppAPI.h"
 #include "PSMRunnable.h"
 
 #include "secerr.h"
@@ -472,24 +471,16 @@ TransportSecurityInfo::GetClassID(nsCID 
 {
   *aClassID = (nsCID*) nsMemory::Alloc(sizeof(nsCID));
   if (!*aClassID)
     return NS_ERROR_OUT_OF_MEMORY;
   return GetClassIDNoAlloc(*aClassID);
 }
 
 NS_IMETHODIMP
-TransportSecurityInfo::GetImplementationLanguage(
-  uint32_t *aImplementationLanguage)
-{
-  *aImplementationLanguage = nsIProgrammingLanguage::CPLUSPLUS;
-  return NS_OK;
-}
-
-NS_IMETHODIMP
 TransportSecurityInfo::GetFlags(uint32_t *aFlags)
 {
   *aFlags = 0;
   return NS_OK;
 }
 
 static NS_DEFINE_CID(kNSSSocketInfoCID, TRANSPORTSECURITYINFO_CID);
 
--- a/security/manager/ssl/src/nsNSSCertificate.cpp
+++ b/security/manager/ssl/src/nsNSSCertificate.cpp
@@ -31,17 +31,16 @@
 #include "nsICertificateDialogs.h"
 #include "nsNSSCertHelper.h"
 #include "nsISupportsPrimitives.h"
 #include "nsUnicharUtils.h"
 #include "nsThreadUtils.h"
 #include "nsCertVerificationThread.h"
 #include "nsIObjectOutputStream.h"
 #include "nsIObjectInputStream.h"
-#include "nsIProgrammingLanguage.h"
 #include "nsXULAppAPI.h"
 #include "nsProxyRelease.h"
 #include "mozilla/Base64.h"
 #include "NSSCertDBTrustDomain.h"
 #include "nspr.h"
 #include "certdb.h"
 #include "pkix/pkixtypes.h"
 #include "secerr.h"
@@ -1946,23 +1945,16 @@ nsNSSCertificate::GetClassID(nsCID** aCl
 {
   *aClassID = (nsCID*) nsMemory::Alloc(sizeof(nsCID));
   if (!*aClassID)
     return NS_ERROR_OUT_OF_MEMORY;
   return GetClassIDNoAlloc(*aClassID);
 }
 
 NS_IMETHODIMP
-nsNSSCertificate::GetImplementationLanguage(uint32_t* aImplementationLanguage)
-{
-  *aImplementationLanguage = nsIProgrammingLanguage::CPLUSPLUS;
-  return NS_OK;
-}
-
-NS_IMETHODIMP
 nsNSSCertificate::GetFlags(uint32_t* aFlags)
 {
   *aFlags = nsIClassInfo::THREADSAFE;
   return NS_OK;
 }
 
 NS_IMETHODIMP
 nsNSSCertificate::GetClassIDNoAlloc(nsCID* aClassIDNoAlloc)
--- a/security/manager/ssl/src/nsNSSCertificateFakeTransport.cpp
+++ b/security/manager/ssl/src/nsNSSCertificateFakeTransport.cpp
@@ -3,17 +3,16 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "nsNSSCertificateFakeTransport.h"
 
 #include "nsIClassInfoImpl.h"
 #include "nsIObjectInputStream.h"
 #include "nsIObjectOutputStream.h"
-#include "nsIProgrammingLanguage.h"
 #include "nsISupportsPrimitives.h"
 #include "nsNSSCertificate.h"
 #include "nsString.h"
 #include "nsXPIDLString.h"
 
 NS_IMPL_ISUPPORTS(nsNSSCertificateFakeTransport,
                   nsIX509Cert,
                   nsISerializable,
@@ -315,24 +314,16 @@ nsNSSCertificateFakeTransport::GetClassI
 {
   *aClassID = (nsCID*) nsMemory::Alloc(sizeof(nsCID));
   if (!*aClassID)
     return NS_ERROR_OUT_OF_MEMORY;
   return GetClassIDNoAlloc(*aClassID);
 }
 
 NS_IMETHODIMP
-nsNSSCertificateFakeTransport::GetImplementationLanguage(
-  uint32_t* aImplementationLanguage)
-{
-  *aImplementationLanguage = nsIProgrammingLanguage::CPLUSPLUS;
-  return NS_OK;
-}
-
-NS_IMETHODIMP
 nsNSSCertificateFakeTransport::GetFlags(uint32_t* aFlags)
 {
   *aFlags = nsIClassInfo::THREADSAFE;
   return NS_OK;
 }
 
 NS_IMETHODIMP
 nsNSSCertificateFakeTransport::GetClassIDNoAlloc(nsCID* aClassIDNoAlloc)
--- a/security/manager/ssl/src/nsSSLStatus.cpp
+++ b/security/manager/ssl/src/nsSSLStatus.cpp
@@ -2,17 +2,16 @@
  *
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "nsSSLStatus.h"
 #include "plstr.h"
 #include "nsIClassInfoImpl.h"
-#include "nsIProgrammingLanguage.h"
 #include "nsIObjectOutputStream.h"
 #include "nsIObjectInputStream.h"
 #include "ssl.h"
 
 NS_IMETHODIMP
 nsSSLStatus::GetServerCert(nsIX509Cert** aServerCert)
 {
   NS_ENSURE_ARG_POINTER(aServerCert);
@@ -240,23 +239,16 @@ nsSSLStatus::GetClassID(nsCID** aClassID
   *aClassID = (nsCID*) nsMemory::Alloc(sizeof(nsCID));
   if (!*aClassID) {
     return NS_ERROR_OUT_OF_MEMORY;
   }
   return GetClassIDNoAlloc(*aClassID);
 }
 
 NS_IMETHODIMP
-nsSSLStatus::GetImplementationLanguage(uint32_t* aImplementationLanguage)
-{
-  *aImplementationLanguage = nsIProgrammingLanguage::CPLUSPLUS;
-  return NS_OK;
-}
-
-NS_IMETHODIMP
 nsSSLStatus::GetFlags(uint32_t* aFlags)
 {
   *aFlags = 0;
   return NS_OK;
 }
 
 static NS_DEFINE_CID(kSSLStatusCID, NS_SSLSTATUS_CID);
 
--- a/storage/src/mozStorageAsyncStatement.cpp
+++ b/storage/src/mozStorageAsyncStatement.cpp
@@ -7,17 +7,16 @@
 #include <limits.h>
 #include <stdio.h>
 
 #include "nsError.h"
 #include "nsMemory.h"
 #include "nsProxyRelease.h"
 #include "nsThreadUtils.h"
 #include "nsIClassInfoImpl.h"
-#include "nsIProgrammingLanguage.h"
 #include "Variant.h"
 
 #include "mozIStorageError.h"
 
 #include "mozStorageBindingParams.h"
 #include "mozStorageConnection.h"
 #include "mozStorageAsyncStatementJSHelper.h"
 #include "mozStorageAsyncStatementParams.h"
@@ -82,23 +81,16 @@ public:
   NS_IMETHODIMP
   GetClassID(nsCID **_id) override
   {
     *_id = nullptr;
     return NS_OK;
   }
 
   NS_IMETHODIMP
-  GetImplementationLanguage(uint32_t *_language) override
-  {
-    *_language = nsIProgrammingLanguage::CPLUSPLUS;
-    return NS_OK;
-  }
-
-  NS_IMETHODIMP
   GetFlags(uint32_t *_flags) override
   {
     *_flags = 0;
     return NS_OK;
   }
 
   NS_IMETHODIMP
   GetClassIDNoAlloc(nsCID *_cid) override
--- a/storage/src/mozStorageStatement.cpp
+++ b/storage/src/mozStorageStatement.cpp
@@ -6,17 +6,16 @@
 
 #include <limits.h>
 #include <stdio.h>
 
 #include "nsError.h"
 #include "nsMemory.h"
 #include "nsThreadUtils.h"
 #include "nsIClassInfoImpl.h"
-#include "nsIProgrammingLanguage.h"
 #include "Variant.h"
 
 #include "mozIStorageError.h"
 
 #include "mozStorageBindingParams.h"
 #include "mozStorageConnection.h"
 #include "mozStorageStatementJSHelper.h"
 #include "mozStoragePrivateHelpers.h"
@@ -84,23 +83,16 @@ public:
   NS_IMETHODIMP
   GetClassID(nsCID **_id) override
   {
     *_id = nullptr;
     return NS_OK;
   }
 
   NS_IMETHODIMP
-  GetImplementationLanguage(uint32_t *_language) override
-  {
-    *_language = nsIProgrammingLanguage::CPLUSPLUS;
-    return NS_OK;
-  }
-
-  NS_IMETHODIMP
   GetFlags(uint32_t *_flags) override
   {
     *_flags = 0;
     return NS_OK;
   }
 
   NS_IMETHODIMP
   GetClassIDNoAlloc(nsCID *_cid) override
--- a/toolkit/modules/tests/xpcshell/test_GMPInstallManager.js
+++ b/toolkit/modules/tests/xpcshell/test_GMPInstallManager.js
@@ -748,17 +748,16 @@ xhr.prototype = {
         do_print("Notifying " + item + ", but there are no listeners");
       }
     }
   },
   addEventListener: function(aEvent, aValue, aCapturing) {
     eval("this._on" + aEvent + " = aValue");
   },
   flags: Ci.nsIClassInfo.SINGLETON,
-  implementationLanguage: Ci.nsIProgrammingLanguage.JAVASCRIPT,
   getScriptableHelper: function() null,
   getInterfaces: function(aCount) {
     let interfaces = [Ci.nsISupports];
     aCount.value = interfaces.length;
     return interfaces;
   },
   classDescription: "XMLHttpRequest",
   contractID: "@mozilla.org/xmlextras/xmlhttprequest;1",
--- a/toolkit/mozapps/update/tests/data/xpcshellUtilsAUS.js
+++ b/toolkit/mozapps/update/tests/data/xpcshellUtilsAUS.js
@@ -3023,17 +3023,16 @@ xhr.prototype = {
   get onerror() { return this._onerror; },
   _onload: null,
   set onload(aValue) { this._onload = makeHandler(aValue); },
   get onload() { return this._onload; },
   addEventListener: function(aEvent, aValue, aCapturing) {
     eval("this._on" + aEvent + " = aValue");
   },
   flags: Ci.nsIClassInfo.SINGLETON,
-  implementationLanguage: Ci.nsIProgrammingLanguage.JAVASCRIPT,
   getScriptableHelper: function() null,
   getInterfaces: function(aCount) {
     let interfaces = [Ci.nsISupports];
     aCount.value = interfaces.length;
     return interfaces;
   },
   get wrappedJSObject() { return this; },
   QueryInterface: XPCOMUtils.generateQI([Ci.nsIClassInfo])
@@ -3071,17 +3070,16 @@ function UpdatePrompt(aCallback) {
       callback.apply(this._callback,
                      Array.prototype.slice.call(arguments));
     }
   });
 }
 
 UpdatePrompt.prototype = {
   flags: Ci.nsIClassInfo.SINGLETON,
-  implementationLanguage: Ci.nsIProgrammingLanguage.JAVASCRIPT,
   getScriptableHelper: function() null,
   getInterfaces: function(aCount) {
     let interfaces = [Ci.nsISupports, Ci.nsIUpdatePrompt];
     aCount.value = interfaces.length;
     return interfaces;
   },
   QueryInterface: XPCOMUtils.generateQI([Ci.nsIClassInfo, Ci.nsIUpdatePrompt])
 };
--- a/xpcom/components/nsIClassInfo.idl
+++ b/xpcom/components/nsIClassInfo.idl
@@ -9,17 +9,17 @@
 interface nsIXPCScriptable;
 
 /**
  * Provides information about a specific implementation class.  If you want
  * your class to implement nsIClassInfo, see nsIClassInfoImpl.h for
  * instructions--you most likely do not want to inherit from nsIClassInfo.
  */
 
-[scriptable, uuid(7a633335-18cc-4794-9ddd-26ac7cab7be6)]
+[scriptable, uuid(a60569d7-d401-4677-ba63-2aa5971af25d)]
 interface nsIClassInfo : nsISupports
 {
     /**
      * Get an ordered list of the interface ids that instances of the class 
      * promise to implement. Note that nsISupports is an implicit member 
      * of any such list and need not be included. 
      *
      * Should set *count = 0 and *array = null and return NS_OK if getting the 
@@ -47,37 +47,31 @@ interface nsIClassInfo : nsISupports
 
     /**
      * A class ID through which an instance of this class can be created
      * (or accessed as a service, if |flags & SINGLETON|), or null.
      */
     readonly attribute nsCIDPtr classID;
 
     /**
-     * Return language type from list in nsIProgrammingLanguage
-     */
-
-    readonly attribute uint32_t implementationLanguage;
-
-    /**
      * Bitflags for 'flags' attribute.
      */
     const uint32_t SINGLETON            = 1 << 0;
     const uint32_t THREADSAFE           = 1 << 1;
     const uint32_t MAIN_THREAD_ONLY     = 1 << 2;
     const uint32_t DOM_OBJECT           = 1 << 3;
     const uint32_t PLUGIN_OBJECT        = 1 << 4;
     const uint32_t SINGLETON_CLASSINFO  = 1 << 5;
 
     /**
      * 'flags' attribute bitflag: whether objects of this type implement
      * nsIContent.
      */
     const uint32_t CONTENT_NODE         = 1 << 6;
-    
+
     // The high order bit is RESERVED for consumers of these flags. 
     // No implementor of this interface should ever return flags 
     // with this bit set.
     const uint32_t RESERVED             = 1 << 31;
 
 
     readonly attribute uint32_t flags;
 
--- a/xpcom/glue/nsClassInfoImpl.cpp
+++ b/xpcom/glue/nsClassInfoImpl.cpp
@@ -1,16 +1,15 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "nsIClassInfoImpl.h"
-#include "nsIProgrammingLanguage.h"
 
 NS_IMETHODIMP_(MozExternalRefCountType)
 GenericClassInfo::AddRef()
 {
   return 2;
 }
 
 NS_IMETHODIMP_(MozExternalRefCountType)
@@ -55,23 +54,16 @@ NS_IMETHODIMP
 GenericClassInfo::GetClassID(nsCID** aClassID)
 {
   NS_ERROR("GetClassID not implemented");
   *aClassID = nullptr;
   return NS_ERROR_NOT_IMPLEMENTED;
 }
 
 NS_IMETHODIMP
-GenericClassInfo::GetImplementationLanguage(uint32_t* aLanguage)
-{
-  *aLanguage = nsIProgrammingLanguage::CPLUSPLUS;
-  return NS_OK;
-}
-
-NS_IMETHODIMP
 GenericClassInfo::GetFlags(uint32_t* aFlags)
 {
   *aFlags = mData->flags;
   return NS_OK;
 }
 
 NS_IMETHODIMP
 GenericClassInfo::GetClassIDNoAlloc(nsCID* aClassIDNoAlloc)
--- a/xpcom/glue/nsISupportsImpl.h
+++ b/xpcom/glue/nsISupportsImpl.h
@@ -1104,23 +1104,16 @@ NS_IMETHODIMP                           
 NS_IMETHODIMP                                                                 \
 _class::GetClassID(nsCID** _classID)                                          \
 {                                                                             \
   *_classID = nullptr;                                                        \
   return NS_OK;                                                               \
 }                                                                             \
                                                                               \
 NS_IMETHODIMP                                                                 \
-_class::GetImplementationLanguage(uint32_t* _language)                        \
-{                                                                             \
-  *_language = nsIProgrammingLanguage::CPLUSPLUS;                             \
-  return NS_OK;                                                               \
-}                                                                             \
-                                                                              \
-NS_IMETHODIMP                                                                 \
 _class::GetFlags(uint32_t* _flags)                                            \
 {                                                                             \
   *_flags = nsIClassInfo::THREADSAFE;                                         \
   return NS_OK;                                                               \
 }                                                                             \
                                                                               \
 NS_IMETHODIMP                                                                 \
 _class::GetClassIDNoAlloc(nsCID* _classIDNoAlloc)                             \
--- a/xpcom/io/nsPipe3.cpp
+++ b/xpcom/io/nsPipe3.cpp
@@ -6,17 +6,16 @@
 
 #include <algorithm>
 #include "mozilla/Attributes.h"
 #include "mozilla/ReentrantMonitor.h"
 #include "nsICloneableInputStream.h"
 #include "nsIPipe.h"
 #include "nsIEventTarget.h"
 #include "nsISeekableStream.h"
-#include "nsIProgrammingLanguage.h"
 #include "nsRefPtr.h"
 #include "nsSegmentedBuffer.h"
 #include "nsStreamUtils.h"
 #include "nsCOMPtr.h"
 #include "nsCRT.h"
 #include "prlog.h"
 #include "nsIClassInfoImpl.h"
 #include "nsAlgorithm.h"
--- a/xpcom/threads/nsThread.cpp
+++ b/xpcom/threads/nsThread.cpp
@@ -149,23 +149,16 @@ nsThreadClassInfo::GetClassDescription(c
 NS_IMETHODIMP
 nsThreadClassInfo::GetClassID(nsCID** aResult)
 {
   *aResult = nullptr;
   return NS_OK;
 }
 
 NS_IMETHODIMP
-nsThreadClassInfo::GetImplementationLanguage(uint32_t* aResult)
-{
-  *aResult = nsIProgrammingLanguage::CPLUSPLUS;
-  return NS_OK;
-}
-
-NS_IMETHODIMP
 nsThreadClassInfo::GetFlags(uint32_t* aResult)
 {
   *aResult = THREADSAFE;
   return NS_OK;
 }
 
 NS_IMETHODIMP
 nsThreadClassInfo::GetClassIDNoAlloc(nsCID* aResult)