Bug 1550860 - Mark implicit builtinclass interfaces explicitly. r=nika
authorAndrew McCreight <continuation@gmail.com>
Mon, 13 May 2019 19:51:49 +0000
changeset 532471 b0c2b45643a2be2ea68e114630cad0c546f23e8b
parent 532470 0eff48265098e8bac99128577b2baccde799611e
child 532472 e2bf0e06cb7564341039fe37a03a0dbe70b0a543
push id11268
push usercsabou@mozilla.com
push dateTue, 14 May 2019 15:24:22 +0000
treeherdermozilla-beta@5fb7fcd568d6 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersnika
bugs1550860
milestone68.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 1550860 - Mark implicit builtinclass interfaces explicitly. r=nika If an XPIDL interface has a method or attribute that is [notxpcom], then it is implicitly treated as [builtinclass], even if it is not marked as such. For clarity, this patch goes through and marks every place that relies on this behavior (aside from some test code). Differential Revision: https://phabricator.services.mozilla.com/D30714
caps/nsIScriptSecurityManager.idl
docshell/base/nsIDocShellTreeItem.idl
dom/base/nsIObjectLoadingContent.idl
dom/interfaces/base/nsIBrowserChild.idl
layout/base/nsILayoutHistoryState.idl
netwerk/base/nsICacheInfoChannel.idl
netwerk/base/nsICachingChannel.idl
netwerk/base/nsIIOService.idl
netwerk/base/nsINetworkPredictor.idl
netwerk/base/nsIProtocolProxyService.idl
netwerk/base/nsIProtocolProxyService2.idl
netwerk/base/nsIUDPSocket.idl
netwerk/base/nsIURI.idl
netwerk/cookie/nsICookieManager.idl
netwerk/dns/nsIDNSService.idl
netwerk/dns/nsPIDNSService.idl
netwerk/protocol/websocket/nsIWebSocketChannel.idl
security/manager/ssl/nsIX509Cert.idl
toolkit/components/browser/nsIWebBrowser.idl
tools/profiler/gecko/nsIProfiler.idl
widget/nsIGfxInfo.idl
widget/nsITransferable.idl
xpcom/ds/nsIVariant.idl
xpcom/io/nsIObjectInputStream.idl
xpcom/io/nsIObjectOutputStream.idl
xpcom/io/nsIStreamBufferAccess.idl
--- a/caps/nsIScriptSecurityManager.idl
+++ b/caps/nsIScriptSecurityManager.idl
@@ -21,17 +21,17 @@ class DomainPolicyClone;
 }
 }
 %}
 
 [ptr] native JSContextPtr(JSContext);
 [ptr] native JSObjectPtr(JSObject);
 [ptr] native DomainPolicyClonePtr(mozilla::dom::DomainPolicyClone);
 
-[scriptable, uuid(51daad87-3a0c-44cc-b620-7356801c9022)]
+[scriptable, builtinclass, uuid(51daad87-3a0c-44cc-b620-7356801c9022)]
 interface nsIScriptSecurityManager : nsISupports
 {
     /**
      * For each of these hooks returning NS_OK means 'let the action continue'.
      * Returning an error code means 'veto the action'. XPConnect will return
      * false to the js engine if the action is vetoed. The implementor of this
      * interface is responsible for setting a JS exception into the JSContext
      * if that is appropriate.
--- a/docshell/base/nsIDocShellTreeItem.idl
+++ b/docshell/base/nsIDocShellTreeItem.idl
@@ -13,17 +13,17 @@ interface nsPIDOMWindowOuter;
 webidl Document;
 
 /**
  * The nsIDocShellTreeItem supplies the methods that are required of any item
  * that wishes to be able to live within the docshell tree either as a middle
  * node or a leaf. 
  */
 
-[scriptable, uuid(9b7c586f-9214-480c-a2c4-49b526fff1a6)]
+[scriptable, builtinclass, uuid(9b7c586f-9214-480c-a2c4-49b526fff1a6)]
 interface nsIDocShellTreeItem : nsISupports
 {
 	/*
 	name of the DocShellTreeItem
 	*/
 	attribute AString name;
 
         /**
--- a/dom/base/nsIObjectLoadingContent.idl
+++ b/dom/base/nsIObjectLoadingContent.idl
@@ -18,17 +18,17 @@ class nsNPAPIPluginInstance;
 
 /**
  * This interface represents a content node that loads objects.
  *
  * Please make sure to update the MozObjectLoadingContent WebIDL
  * interface to mirror this interface when changing it.
  */
 
-[scriptable, uuid(2eb3195e-3eea-4083-bb1d-d2d70fa35ccb)]
+[scriptable, builtinclass, uuid(2eb3195e-3eea-4083-bb1d-d2d70fa35ccb)]
 interface nsIObjectLoadingContent : nsISupports
 {
   /**
    * See notes in nsObjectLoadingContent.h
    */
   const unsigned long TYPE_LOADING     = 0;
   const unsigned long TYPE_IMAGE       = 1;
   const unsigned long TYPE_PLUGIN      = 2;
--- a/dom/interfaces/base/nsIBrowserChild.idl
+++ b/dom/interfaces/base/nsIBrowserChild.idl
@@ -8,17 +8,17 @@
 
 interface nsIWebBrowserChrome3;
 
 webidl ContentFrameMessageManager;
 
 native CommandsArray(nsTArray<nsCString>);
 [ref] native CommandsArrayRef(nsTArray<nsCString>);
 
-[scriptable, uuid(1fb79c27-e760-4088-b19c-1ce3673ec24e)]
+[scriptable, builtinclass, uuid(1fb79c27-e760-4088-b19c-1ce3673ec24e)]
 interface nsIBrowserChild : nsISupports
 {
   readonly attribute ContentFrameMessageManager messageManager;
 
   attribute nsIWebBrowserChrome3 webBrowserChrome;
 
   [notxpcom] void sendRequestFocus(in boolean canFocus);
 
--- a/layout/base/nsILayoutHistoryState.idl
+++ b/layout/base/nsILayoutHistoryState.idl
@@ -22,17 +22,17 @@ native constBool(const bool);
 
 namespace mozilla {
 class PresState;
 } // namespace mozilla
 
 template<typename> struct already_AddRefed;
 %}
 
-[scriptable, uuid(aef27cb3-4df9-4eeb-b0b0-ac56cf861d04)]
+[scriptable, builtinclass, uuid(aef27cb3-4df9-4eeb-b0b0-ac56cf861d04)]
 interface nsILayoutHistoryState : nsISupports
 {
   /**
   * Whether this LayoutHistoryState contains any PresStates.
   */
   readonly attribute boolean hasStates;
 
   /**
--- a/netwerk/base/nsICacheInfoChannel.idl
+++ b/netwerk/base/nsICacheInfoChannel.idl
@@ -18,17 +18,17 @@ class PreferredAlternativeDataTypeParams
 [ref] native ConstPreferredAlternativeDataTypeArray(const nsTArray<mozilla::net::PreferredAlternativeDataTypeParams>);
 
 [scriptable, uuid(1fb8ccf2-5fa5-45ec-bc57-8c8022a5d0d3)]
 interface nsIInputStreamReceiver : nsISupports
 {
   void onInputStreamReady(in nsIInputStream aStream);
 };
 
-[scriptable, uuid(72c34415-c6eb-48af-851f-772fa9ee5972)]
+[scriptable, builtinclass, uuid(72c34415-c6eb-48af-851f-772fa9ee5972)]
 interface nsICacheInfoChannel : nsISupports
 {
   /**
    * Get the number of times the cache entry has been opened. This attribute is
    * equivalent to nsICachingChannel.cacheToken.fetchCount.
    *
    * @throws NS_ERROR_NOT_AVAILABLE if the cache entry or the alternate data
    *         cache entry cannot be read.
--- a/netwerk/base/nsICachingChannel.idl
+++ b/netwerk/base/nsICachingChannel.idl
@@ -12,17 +12,17 @@ interface nsIFile;
  * to affect its behavior with respect to how it uses the cache service.
  *
  * This interface provides:
  *   1) Support for "stream as file" semantics (for JAR and plugins).
  *   2) Support for "pinning" cached data in the cache (for printing and save-as).
  *   3) Support for uniquely identifying cached data in cases when the URL
  *      is insufficient (e.g., HTTP form submission).
  */
-[scriptable, uuid(dd1d6122-5ecf-4fe4-8f0f-995e7ab3121a)]
+[scriptable, builtinclass, uuid(dd1d6122-5ecf-4fe4-8f0f-995e7ab3121a)]
 interface nsICachingChannel : nsICacheInfoChannel
 {
     /**
      * Set/get the cache token... uniquely identifies the data in the cache.
      * Holding a reference to this token prevents the cached data from being
      * removed.
      * 
      * A cache token retrieved from a particular instance of nsICachingChannel
--- a/netwerk/base/nsIIOService.idl
+++ b/netwerk/base/nsIIOService.idl
@@ -32,17 +32,17 @@ class ServiceWorkerDescriptor;
  * nsIIOService provides a set of network utility functions.  This interface
  * duplicates many of the nsIProtocolHandler methods in a protocol handler
  * independent way (e.g., NewURI inspects the scheme in order to delegate
  * creation of the new URI to the appropriate protocol handler).  nsIIOService
  * also provides a set of URL parsing utility functions.  These are provided
  * as a convenience to the programmer and in some cases to improve performance
  * by eliminating intermediate data structures and interfaces.
  */
-[scriptable, uuid(4286de5a-b2ea-446f-8f70-e2a461f42694)]
+[scriptable, builtinclass, uuid(4286de5a-b2ea-446f-8f70-e2a461f42694)]
 interface nsIIOService : nsISupports
 {
     /**
      * Returns a protocol handler for a given URI scheme.
      *
      * @param aScheme the URI scheme
      * @return reference to corresponding nsIProtocolHandler
      */
--- a/netwerk/base/nsINetworkPredictor.idl
+++ b/netwerk/base/nsINetworkPredictor.idl
@@ -16,17 +16,17 @@ typedef unsigned long PredictorLearnReas
 [ref] native OriginAttributes(const mozilla::OriginAttributes);
 
 /**
  * nsINetworkPredictor - learn about pages users visit, and allow us to take
  *                       predictive actions upon future visits.
  *                       NOTE: nsINetworkPredictor should only
  *                       be used on the main thread.
  */
-[scriptable, uuid(acc88e7c-3f39-42c7-ac31-6377c2c3d73e)]
+[scriptable, builtinclass, uuid(acc88e7c-3f39-42c7-ac31-6377c2c3d73e)]
 interface nsINetworkPredictor : nsISupports
 {
   /**
    * Prediction reasons
    *
    * PREDICT_LINK - we are being asked to take predictive action because
    * the user is hovering over a link.
    *
--- a/netwerk/base/nsIProtocolProxyService.idl
+++ b/netwerk/base/nsIProtocolProxyService.idl
@@ -14,17 +14,17 @@ interface nsIProxyInfo;
 interface nsIChannel;
 interface nsIURI;
 interface nsIEventTarget;
 
 /**
  * nsIProtocolProxyService provides methods to access information about
  * various network proxies.
  */
-[scriptable, uuid(ef57c8b6-e09d-4cd4-9222-2a5d2402e15d)]
+[scriptable, builtinclass, uuid(ef57c8b6-e09d-4cd4-9222-2a5d2402e15d)]
 interface nsIProtocolProxyService : nsISupports
 {
     /** Flag 1 << 0 is unused **/
 
     /**
      * When the proxy configuration is manual this flag may be passed to the
      * resolve and asyncResolve methods to request to prefer the SOCKS proxy
      * to HTTP ones.
--- a/netwerk/base/nsIProtocolProxyService2.idl
+++ b/netwerk/base/nsIProtocolProxyService2.idl
@@ -4,17 +4,17 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "nsIProtocolProxyService.idl"
 
 /**
  * An extension of nsIProtocolProxyService
  */
-[scriptable, uuid(b2e5b2c0-e21e-4845-b336-be6d60a38951)]
+[scriptable, builtinclass, uuid(b2e5b2c0-e21e-4845-b336-be6d60a38951)]
 interface nsIProtocolProxyService2 : nsIProtocolProxyService
 {
   /**
    * Call this method to cause the PAC file (if any is configured) to be
    * reloaded.  The PAC file is loaded asynchronously.
    */
   void reloadPAC();
 
--- a/netwerk/base/nsIUDPSocket.idl
+++ b/netwerk/base/nsIUDPSocket.idl
@@ -322,17 +322,17 @@ interface nsIUDPSocketListener : nsISupp
     void onStopListening(in nsIUDPSocket aSocket, in nsresult aStatus);
 };
 
 /**
  * nsIUDPMessage
  *
  * This interface is used to encapsulate an incomming UDP message
  */
-[scriptable, uuid(afdc743f-9cc0-40d8-b442-695dc54bbb74)]
+[scriptable, builtinclass, uuid(afdc743f-9cc0-40d8-b442-695dc54bbb74)]
 interface nsIUDPMessage : nsISupports
 {
     /**
      * Address of the source of the message
      */
     readonly attribute nsINetAddr fromAddr;
 
     /**
--- a/netwerk/base/nsIURI.idl
+++ b/netwerk/base/nsIURI.idl
@@ -16,18 +16,18 @@
  * <pre>
  *      ftp://username:password@hostname:portnumber/pathname?query#ref
  *      \ /   \               / \      / \        /\       / \   / \ /
  *       -     ---------------   ------   --------  -------   ---   -
  *       |            |             |        |         |       |    |
  *       |            |             |        |      FilePath Query Ref
  *       |            |             |       Port       \            /
  *       |            |            Host      /          ------------
- *       |         UserPass                 /	              |
- *     Scheme                              /	             Path
+ *       |         UserPass                 /                |
+ *     Scheme                              /                Path
  *       \                                /
  *        --------------------------------
  *                       |
  *                    PrePath
  * </pre>
  * The definition of the URI components has been extended to allow for
  * internationalized domain names [2] and the more generic IRI structure [3].
  *
@@ -58,17 +58,17 @@ interface nsIURIMutator;
  * nsIURI - interface for an uniform resource identifier w/ i18n support.
  *
  * AUTF8String attributes may contain unescaped UTF-8 characters.
  * Consumers should be careful to escape the UTF-8 strings as necessary, but
  * should always try to "display" the UTF-8 version as provided by this
  * interface.
  *
  * AUTF8String attributes may also contain escaped characters.
- * 
+ *
  * Unescaping URI segments is unadvised unless there is intimate
  * knowledge of the underlying charset or there is no plan to display (or
  * otherwise enforce a charset on) the resulting URI substring.
  *
  * The correct way to create an nsIURI from a string is via
  * nsIIOService.newURI.
  *
  * NOTE: nsBinaryInputStream::ReadObject contains a hackaround to intercept the
--- a/netwerk/cookie/nsICookieManager.idl
+++ b/netwerk/cookie/nsICookieManager.idl
@@ -23,17 +23,17 @@ interface nsIPrivateModeCallback : nsISu
   void callback();
 };
 
 /** 
  * An optional interface for accessing or removing the cookies
  * that are in the cookie list
  */
 
-[scriptable, uuid(AAAB6710-0F2C-11d5-A53B-0010A401EB10)]
+[scriptable, builtinclass, uuid(AAAB6710-0F2C-11d5-A53B-0010A401EB10)]
 interface nsICookieManager : nsISupports
 {
 
   /**
    * Called to remove all cookies from the cookie list
    */
   void removeAll();
 
--- a/netwerk/dns/nsIDNSService.idl
+++ b/netwerk/dns/nsIDNSService.idl
@@ -21,17 +21,17 @@ namespace mozilla { namespace net {
 %}
 
 [ptr] native EntriesArray(nsTArray<mozilla::net::DNSCacheEntries>);
 [ref] native OriginAttributes(const mozilla::OriginAttributes);
 
 /**
  * nsIDNSService
  */
-[scriptable, uuid(de5642c6-61fc-4fcf-9a47-03226b0d4e21)]
+[scriptable, builtinclass, uuid(de5642c6-61fc-4fcf-9a47-03226b0d4e21)]
 interface nsIDNSService : nsISupports
 {
     /**
      * kicks off an asynchronous host lookup.
      *
      * @param aHostName
      *        the hostname or IP-address-literal to resolve.
      * @param aFlags
--- a/netwerk/dns/nsPIDNSService.idl
+++ b/netwerk/dns/nsPIDNSService.idl
@@ -5,17 +5,17 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "nsIDNSService.idl"
 
 /**
  * This is a private interface used by the internals of the networking library.
  * It will never be frozen.  Do not use it in external code.
  */
-[scriptable, uuid(24e598fd-7b1a-436c-9154-14d8b38df8a5)]
+[scriptable, builtinclass, uuid(24e598fd-7b1a-436c-9154-14d8b38df8a5)]
 interface nsPIDNSService : nsIDNSService
 {
     /**
      * called to initialize the DNS service.
      */
     void init();
 
     /**
--- a/netwerk/protocol/websocket/nsIWebSocketChannel.idl
+++ b/netwerk/protocol/websocket/nsIWebSocketChannel.idl
@@ -20,17 +20,17 @@ webidl Node;
 
 /**
  * Low-level websocket API: handles network protocol.  
  *
  * This is primarly intended for use by the higher-level nsIWebSocket.idl.
  * We are also making it scriptable for now, but this may change once we have
  * WebSockets for Workers.
  */
-[scriptable, uuid(ce71d028-322a-4105-a947-a894689b52bf)]
+[scriptable, builtinclass, uuid(ce71d028-322a-4105-a947-a894689b52bf)]
 interface nsIWebSocketChannel : nsISupports
 {
     /**
      * The original URI used to construct the protocol connection. This is used
      * in the case of a redirect or URI "resolution" (e.g. resolving a
      * resource: URI to a file: URI) so that the original pre-redirect
      * URI can still be obtained.  This is never null.
      */
--- a/security/manager/ssl/nsIX509Cert.idl
+++ b/security/manager/ssl/nsIX509Cert.idl
@@ -20,17 +20,17 @@ interface nsICertVerificationListener;
 /**
  * This represents a X.509 certificate.
  *
  * NOTE: Service workers persist x.509 certs in object form on disk.  If you
  *       change this uuid you probably need a hack in nsBinaryInputStream to
  *       read the old uuid.  If you change the format of the object
  *       serialization then more complex changes will be needed.
  */
-[scriptable, uuid(bdc3979a-5422-4cd5-8589-696b6e96ea83)]
+[scriptable, builtinclass, uuid(bdc3979a-5422-4cd5-8589-696b6e96ea83)]
 interface nsIX509Cert : nsISupports {
 
   /**
    *  The primary email address of the certificate, if present.
    */
   readonly attribute AString emailAddress;
 
   /**
--- a/toolkit/components/browser/nsIWebBrowser.idl
+++ b/toolkit/components/browser/nsIWebBrowser.idl
@@ -23,17 +23,17 @@ class OriginAttributes;
 
 /**
  * The nsIWebBrowser interface is implemented by web browser objects.
  * Embedders use this interface during initialisation to associate
  * the new web browser instance with the embedders chrome and
  * to register any listeners. The interface may also be used at runtime
  * to obtain the content DOM window and from that the rest of the DOM.
  */
-[scriptable, uuid(4052b6da-4faa-4646-b3a1-7e16a01c2dc2)]
+[scriptable, builtinclass, uuid(4052b6da-4faa-4646-b3a1-7e16a01c2dc2)]
 interface nsIWebBrowser : nsISupports
 {
     /**
      * The chrome object associated with the browser instance. The embedder
      * must create one chrome object for <I>each</I> browser object
      * that is instantiated. The embedder must associate the two by setting
      * this property to point to the chrome object before creating the browser
      * window via the browser's <CODE>nsIBaseWindow</CODE> interface. 
--- a/tools/profiler/gecko/nsIProfiler.idl
+++ b/tools/profiler/gecko/nsIProfiler.idl
@@ -25,17 +25,17 @@ interface nsIProfilerStartParams : nsISu
   readonly attribute uint32_t entries;
   readonly attribute double duration;
   readonly attribute double interval;
   readonly attribute uint32_t features;
 
   [noscript, notxpcom, nostdcall] StringArrayRef getFilters();
 };
 
-[scriptable, uuid(ead3f75c-0e0e-4fbb-901c-1e5392ef5b2a)]
+[scriptable, builtinclass, uuid(ead3f75c-0e0e-4fbb-901c-1e5392ef5b2a)]
 interface nsIProfiler : nsISupports
 {
   boolean CanProfile();
   void StartProfiler(in uint32_t aEntries, in double aInterval,
                       [array, size_is(aFeatureCount)] in string aFeatures,
                       in uint32_t aFeatureCount,
                       [array, size_is(aFilterCount), optional] in string aFilters,
                       [optional] in uint32_t aFilterCount,
--- a/widget/nsIGfxInfo.idl
+++ b/widget/nsIGfxInfo.idl
@@ -2,17 +2,17 @@
  *
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "nsISupports.idl"
 
 /* NOTE: this interface is completely undesigned, not stable and likely to change */
-[scriptable, uuid(1accd618-4c80-4703-9d29-ecf257d397c8)]
+[scriptable, builtinclass, uuid(1accd618-4c80-4703-9d29-ecf257d397c8)]
 interface nsIGfxInfo : nsISupports
 {
   /*
    * These are win32-specific
    */
   readonly attribute boolean D2DEnabled;
   readonly attribute boolean DWriteEnabled;
   readonly attribute boolean usingGPUProcess;
--- a/widget/nsITransferable.idl
+++ b/widget/nsITransferable.idl
@@ -86,17 +86,17 @@ interface nsIFlavorDataProvider : nsISup
     * @param  aTransferable (in parameter) the transferable we're being called for.
     * @param  aFlavor (in parameter) the flavor of data to retrieve
     * @param  aData the data. Some variant of class in nsISupportsPrimitives.idl
     */
   void getFlavorData(in nsITransferable aTransferable, in string aFlavor, out nsISupports aData);
 };
 
 
-[scriptable, uuid(97e0c418-1c1e-4106-bad1-9fcb11dff2fe)]
+[scriptable, builtinclass, uuid(97e0c418-1c1e-4106-bad1-9fcb11dff2fe)]
 interface nsITransferable : nsISupports
 {
   /**
    * Initializes a transferable object.  This should be called on all
    * transferable objects.  Failure to do so will result in fatal assertions in
    * debug builds.
    *
    * The load context is used to track whether the transferable is storing privacy-
--- a/xpcom/ds/nsIVariant.idl
+++ b/xpcom/ds/nsIVariant.idl
@@ -56,17 +56,17 @@ struct nsIDataType
 /**
  * XPConnect has magic to transparently convert between nsIVariant and JS types.
  * We mark the interface [scriptable] so that JS can use methods
  * that refer to this interface. But we mark all the methods and attributes
  * [noscript] since any nsIVariant object will be automatically converted to a
  * JS type anyway.
  */
 
-[scriptable, uuid(81e4c2de-acac-4ad6-901a-b5fb1b851a0d)]
+[scriptable, builtinclass, uuid(81e4c2de-acac-4ad6-901a-b5fb1b851a0d)]
 interface nsIVariant : nsISupports
 {
     [notxpcom,nostdcall] readonly attribute uint16_t     dataType;
 
     [noscript] uint8_t      getAsInt8();
     [noscript] int16_t      getAsInt16();
     [noscript] int32_t      getAsInt32();
     [noscript] int64_t      getAsInt64();
@@ -83,40 +83,40 @@ interface nsIVariant : nsISupports
     [noscript] AString      getAsAString();
     [noscript] ACString     getAsACString();
     [noscript] AUTF8String  getAsAUTF8String();
     [noscript] string       getAsString();
     [noscript] wstring      getAsWString();
     [noscript] nsISupports  getAsISupports();
     [noscript] jsval        getAsJSVal();
 
-    [noscript] void getAsInterface(out nsIIDPtr iid, 
+    [noscript] void getAsInterface(out nsIIDPtr iid,
                                    [iid_is(iid), retval] out nsQIResult iface);
 
     [notxpcom] nsresult getAsArray(out uint16_t type, out nsIID iid,
                                    out uint32_t count, out voidPtr ptr);
 
-    [noscript] void getAsStringWithSize(out uint32_t size, 
+    [noscript] void getAsStringWithSize(out uint32_t size,
                                         [size_is(size), retval] out string str);
-    
-    [noscript] void getAsWStringWithSize(out uint32_t size, 
+
+    [noscript] void getAsWStringWithSize(out uint32_t size,
                                          [size_is(size), retval] out wstring str);
 };
 
 /**
  * An object that implements nsIVariant may or may NOT also implement this
  * nsIWritableVariant.
- * 
+ *
  * If the 'writable' attribute is false then attempts to call any of the 'set'
  * methods can be expected to fail. Setting the 'writable' attribute may or
  * may not succeed.
  *
  */
 
-[scriptable, uuid(5586a590-8c82-11d5-90f3-0010a4e73d9a)]
+[scriptable, builtinclass, uuid(5586a590-8c82-11d5-90f3-0010a4e73d9a)]
 interface nsIWritableVariant : nsIVariant
 {
     attribute boolean writable;
 
     void setAsInt8(in uint8_t aValue);
     void setAsInt16(in int16_t aValue);
     void setAsInt32(in int32_t aValue);
     void setAsInt64(in int64_t aValue);
@@ -132,26 +132,26 @@ interface nsIWritableVariant : nsIVarian
     void setAsID(in nsIDRef aValue);
     void setAsAString(in AString aValue);
     void setAsACString(in ACString aValue);
     void setAsAUTF8String(in AUTF8String aValue);
     void setAsString(in string aValue);
     void setAsWString(in wstring aValue);
     void setAsISupports(in nsISupports aValue);
 
-    void setAsInterface(in nsIIDRef iid, 
+    void setAsInterface(in nsIIDRef iid,
                         [iid_is(iid)] in nsQIResult iface);
 
     [noscript] void setAsArray(in uint16_t type, in nsIIDPtr iid,
                                in uint32_t count, in voidPtr ptr);
 
-    void setAsStringWithSize(in uint32_t size, 
+    void setAsStringWithSize(in uint32_t size,
                              [size_is(size)] in string str);
-    
-    void setAsWStringWithSize(in uint32_t size, 
+
+    void setAsWStringWithSize(in uint32_t size,
                               [size_is(size)] in wstring str);
 
     void setAsVoid();
     void setAsEmpty();
     void setAsEmptyArray();
 
     void setFromVariant(in nsIVariant aValue);
 };
--- a/xpcom/io/nsIObjectInputStream.idl
+++ b/xpcom/io/nsIObjectInputStream.idl
@@ -5,17 +5,17 @@
 
 #include "nsIBinaryInputStream.idl"
 
 /**
  * @see nsIObjectOutputStream
  * @see nsIBinaryInputStream
  */
 
-[scriptable, uuid(6c248606-4eae-46fa-9df0-ba58502368eb)]
+[scriptable, builtinclass, uuid(6c248606-4eae-46fa-9df0-ba58502368eb)]
 interface nsIObjectInputStream : nsIBinaryInputStream
 {
     /**
      * Read an object from this stream to satisfy a strong or weak reference
      * to one of its interfaces.  If the interface was not along the primary
      * inheritance chain ending in the "root" or XPCOM-identity nsISupports,
      * readObject will QueryInterface from the deserialized object root to the
      * correct interface, which was specified when the object was serialized.
--- a/xpcom/io/nsIObjectOutputStream.idl
+++ b/xpcom/io/nsIObjectOutputStream.idl
@@ -5,17 +5,17 @@
 
 #include "nsIBinaryOutputStream.idl"
 
 /**
  * @See nsIObjectInputStream
  * @See nsIBinaryOutputStream
  */
 
-[scriptable, uuid(92c898ac-5fde-4b99-87b3-5d486422094b)]
+[scriptable, builtinclass, uuid(92c898ac-5fde-4b99-87b3-5d486422094b)]
 interface nsIObjectOutputStream : nsIBinaryOutputStream
 {
     /**
      * Write the object whose "root" or XPCOM-identity nsISupports is aObject.
      * The cause for writing this object is a strong or weak reference, so the
      * aIsStrongRef argument must tell which kind of pointer is being followed
      * here during serialization.
      *
--- a/xpcom/io/nsIStreamBufferAccess.idl
+++ b/xpcom/io/nsIStreamBufferAccess.idl
@@ -9,17 +9,17 @@
  * An interface for access to a buffering stream implementation's underlying
  * memory buffer.
  *
  * Stream implementations that QueryInterface to nsIStreamBufferAccess must
  * ensure that all buffers are aligned on the most restrictive type size for
  * the current architecture (e.g., sizeof(double) for RISCy CPUs).  malloc(3)
  * satisfies this requirement.
  */
-[scriptable, uuid(ac923b72-ac87-4892-ac7a-ca385d429435)]
+[scriptable, builtinclass, uuid(ac923b72-ac87-4892-ac7a-ca385d429435)]
 interface nsIStreamBufferAccess : nsISupports
 {
     /**
      * Get access to a contiguous, aligned run of bytes in the stream's buffer.
      * Exactly one successful getBuffer call must occur before a putBuffer call
      * taking the non-null pointer returned by the successful getBuffer.
      *
      * The run of bytes are the next bytes (modulo alignment padding) to read