| Version 1 (modified by , 17 years ago) ( diff ) |
|---|
WebCore 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.
The 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.
The interface declaration takes an optional set of attributes:
- Conditional=CONDITIONALNAME
- 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).
- CustomMarkFunction
- 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/JSClassNameCustom.cpp for doing custom handling of garbage collection.
- DelegatingGetOwnPropertySlot
- 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.
- ExtendsDOMGlobalObject
- 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.
- LegacyParent=ParentClass
- 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.
Note:
See TracWiki
for help on using the wiki.