Changes between Version 88 and Version 89 of WebKitIDL


Ignore:
Timestamp:
Apr 26, 2013 12:38:12 AM (11 years ago)
Author:
Christophe Dumez
Comment:

Drop Supplemental in favor of partial interfaces due to r149170

Legend:

Unmodified
Added
Removed
Modified
  • WebKitIDL

    v88 v89  
    2525 - [#URL URL(a)][[br]]
    2626 - [#JSWindowEventListener JSWindowEventListener(a)][[br]]
    27  - [#Supplemental Supplemental(i)][[br]]
    2827 - [#Constructor Constructor(i), CallWith(i,m,a), ConstructorRaisesException(i)][[br]]
    2928 - [#ConstructorTemplate ConstructorTemplate(i), InitializedByEventConstructor(a)][[br]]
     
    789788ADD EXPLANATIONS
    790789
    791 == [Supplemental](i) == #Supplemental
    792 
    793  * [http://dev.w3.org/2006/webapi/WebIDL/#dfn-supplemental-interface The spec of Supplemental]
    794 
    795  * [http://old.nabble.com/Things-missing-from-Web-IDL-for-HTML5-td24873773.html Easy explanation of Supplemental]
    796 
    797 Summary: [Supplemental] helps WebKit modularization.
    798 [Supplemental] makes it possible to add XXX's APIs (e.g. XXX=WebAudio, WebSocket, Blob, GamePad, ...etc) without modifying code outside of WebCore/Modules/XXX/.
    799 This helps make XXX a "self-contained module".
    800 
    801 Usage: The possible usage is
    802 {{{
    803     interface [
    804         Supplemental=YYY
    805     ] XXX {
    806     };
    807 }}}
    808 where XXX implements YYY.
    809 [Supplemental] can be specified on interfaces.
    810 
    811 Without [Supplemental], if you want to add XXX's attributes or methods to DOMWindow,
    812 
    813  * you need to modify WebCore/page/DOMWindow.idl to add the XXX's attributes or methods
    814 
    815  * you need to modify WebCore/page/DOMWindow.{h,cpp} to add the WebCore implementation of the attribute getters and setters or the method callbacks.
    816 
    817 On the other hand, in the modularized world with [Supplemental], you just need to modify the code under WebCore/Modules/XXX/:
    818 
    819  * WebCore/Modules/XXX/DOMWindowXXX.idl
    820 
    821 {{{
    822    interface [
    823        Conditional=XXX,
    824        Supplemental=DOMWindow    // The attributes and methods of this interface are exposed as those of DOMWindow.
    825    ] DOMWindowXXX {
    826        attribute int foo;
    827        void bar();
    828    };
    829 }}}
    830 
    831  * WebCore/Modules/XXX/DOMWindowXXX.h
    832 
    833 {{{
    834    DOMWindowXXX::foo(...) { ... }   // The WebCore implementation of the foo attribute getter.
    835    DOMWindowXXX::setFoo(...) { ... }   // The WebCore implementation of the foo attribute setter.
    836    DOMWindowXXX::bar(...) { ... }   // The WebCore implementation of the bar() method callback.
    837 }}}
    838 
    839 As shown above, [Supplemental=DOMWindow] indicates that all the attributes and methods of DOMWindowXXX should be exposed on DOMWindow,
    840 but should be implemented in DOMWindowXXX.
    841 In this way, you can implement the attributes and methods without modifying code of DOMWindow.{h,cpp,idl}.
    842 
    843 If you want to add APIs whose implementations are likely to be independent from WebCore,
    844 it is strongly recommended to put the APIs and .h/.cpp files into WebCore/Modules/XXX/ using [Supplemental].
    845 On the other hand, if the implementations need to touch WebCore much,
    846 the APIs might not be good candidates for [Supplemental].
    847 
    848790== [Constructor](i), [CallWith](i,m,a), [ConstructorRaisesException](i) == #Constructor
    849791