Changes between Initial Version and Version 1 of IdlAttributes

Jul 17, 2009 1:17:34 PM (13 years ago)



  • IdlAttributes

    v1 v1  
     1WebCore contains a set of [ IDL files] which define the public interface that WebCore classes expose to Javascript and ObjectiveC. These IDL files are parsed and code is automatically generated which maintains a "binding" between an external interface (e.g. a Javascript object) and the internal WebCore implementations.
     3The format of these files are fairly well documented and (mostly) adhere to the syntax described in the [ w3c specification], but there are several differences which are noted below.
     5The ''interface'' declaration takes an optional set of attributes:
     7 Conditional=''CONDITIONALNAME''::
     8  Wraps the generated binding code in "#if ENABLE(''CONDITIONALNAME'')". Typically used to allow turning off features on certain platforms (or to disable new features while they are under development).
     10  CustomMarkFunction::
     11  Adds a "virtual void mark()" declaration to the generated header file for the binding class. This allows a custom binding implementation to provide their own mark() function in WebCore/bindings/js/JS''ClassName''Custom.cpp for doing custom handling of garbage collection.
     13  DelegatingGetOwnPropertySlot::
     14  Used when a given instance wants to customize the lookup of properties. Examples are the HTML History object, which needs to enforce restrictions on which attributes are visible cross-domain, or WorkerContext, which wants to delegate lookup to the global object before looking up properties in its own prototype.
     16  ExtendsDOMGlobalObject::
     17  Does not expose the object prototype externally, as the class cannot be derived from externally. Also uses this object internally whenever it needs to access the JSDOMGlobalObject.
     19  LegacyParent=''ParentClass''::
     20  Allows setting the base class for the generated binding. Otherwise, the base class would be set to DOMObject or the explicitly specified parent class in the interface definition.