Bug 1267369 - Only generate typelib data for scriptable interfaces; r?khuey
We are currently generating typelib data for all interfaces. Apparently
typelib data is only needed for scriptable interfaces. So let's stop
generating typelib data for interfaces that aren't scriptable.
The impact of this is that some typelibs are dropped from
interfaces.xpt, resulting in ~10kb smaller interfaces.xpt:
* nsIDOMCSSValue
* nsIDOMDOMImplementation
* nsIDOMDOMCursor
* nsIProfilerStartParams
* nsIStreamingProtocolMetaData
* nsIDOMCharacterData
* nsIPrintSession
* nsIDOMDocumentFragment
* nsIDOMProcessingInstruction
* nsIDOMElement
* nsIDOMText
* nsIDOMXULElement
* nsIDOMAttr
* nsIDOMGeoPositionError
* nsIXMLHttpRequestEventTarget
* nsIDOMCSSStyleDeclaration
* nsIDOMCSSStyleSheet
* nsIDOMDocument
* nsIDOMClientRect
* nsIDOMMozNamedAttrMap
* nsIDOMNode
* nsIThreadObserver
* nsIDOMDocumentType
* nsIXMLHttpRequestUpload
* nsISelection
* nsIDOMCDATASection
* nsIDOMDOMRequest
* nsIDOMComment
* nsIDOMEvent
MozReview-Commit-ID: 3LYdNYs7Tum
--- a/xpcom/idl-parser/xpidl/typelib.py
+++ b/xpcom/idl-parser/xpidl/typelib.py
@@ -237,20 +237,20 @@ def build_interface(iface, ifaces):
function=iface.attributes.function,
builtinclass=iface.attributes.builtinclass,
main_process_scriptable_only=iface.attributes.main_process_scriptable_only)
def write_typelib(idl, fd, filename):
""" Generate the typelib. """
- # We only care about interfaces
+ # We only care about interfaces that are scriptable.
ifaces = []
for p in idl.productions:
- if p.kind == 'interface':
+ if p.kind == 'interface' and p.attributes.scriptable:
ifaces.append(build_interface(p, ifaces))
typelib = xpt.Typelib(interfaces=ifaces)
typelib.writefd(fd)
if __name__ == '__main__':
from optparse import OptionParser
o = OptionParser()