Home | History | Annotate | Download | only in Interfaces
      1 /*
      2  * Copyright (C) 2006, 2007, 2008 Apple Inc.  All rights reserved.
      3  *
      4  * Redistribution and use in source and binary forms, with or without
      5  * modification, are permitted provided that the following conditions
      6  * are met:
      7  * 1. Redistributions of source code must retain the above copyright
      8  *    notice, this list of conditions and the following disclaimer.
      9  * 2. Redistributions in binary form must reproduce the above copyright
     10  *    notice, this list of conditions and the following disclaimer in the
     11  *    documentation and/or other materials provided with the distribution.
     12  *
     13  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
     14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
     17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
     18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
     19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
     20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
     21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     24  */
     25 
     26 #ifndef DO_NO_IMPORTS
     27 import "oaidl.idl";
     28 import "ocidl.idl";
     29 import "DOMCore.idl";
     30 import "DOMWindow.idl";
     31 #endif
     32 
     33 interface IDOMEvent;
     34 interface IDOMEventException;
     35 interface IDOMEventTarget;
     36 interface IDOMKeyboardEvent;
     37 interface IDOMMouseEvent;
     38 interface IDOMMutationEvent;
     39 interface IDOMNode;
     40 interface IDOMOverflowEvent;
     41 interface IDOMUIEvent;
     42 interface IDOMWheelEvent;
     43 interface IDOMWindow;
     44 
     45 typedef long long DOMTimeStamp;
     46 
     47 [
     48     object,
     49     oleautomation,
     50     uuid(7f8a0a96-f864-44fb-87fb-c5f03666e8e6),
     51     pointer_default(unique)
     52 ]
     53 interface IDOMEventListener : IDOMObject
     54 {
     55     //void               handleEvent(in Event evt);
     56     HRESULT handleEvent([in] IDOMEvent* evt);
     57 }
     58 
     59 [
     60     object,
     61     oleautomation,
     62     uuid(62343a9e-a779-4e91-818a-14fc178cf4c2),
     63     pointer_default(unique)
     64 ]
     65 interface IDOMEvent : IDOMObject
     66 {
     67     // DOM PhaseType
     68     const unsigned short DOMEVENT_CAPTURING_PHASE     = 1;
     69     const unsigned short DOMEVENT_AT_TARGET           = 2;
     70     const unsigned short DOMEVENT_BUBBLING_PHASE      = 3;
     71 
     72     // Reverse-engineered from Netscape
     73     const unsigned short DOMEVENT_MOUSEDOWN           = 1;
     74     const unsigned short DOMEVENT_MOUSEUP             = 2;
     75     const unsigned short DOMEVENT_MOUSEOVER           = 4;
     76     const unsigned short DOMEVENT_MOUSEOUT            = 8;
     77     const unsigned short DOMEVENT_MOUSEMOVE           = 16;
     78     const unsigned short DOMEVENT_MOUSEDRAG           = 32;
     79     const unsigned short DOMEVENT_CLICK               = 64;
     80     const unsigned short DOMEVENT_DBLCLICK            = 128;
     81     const unsigned short DOMEVENT_KEYDOWN             = 256;
     82     const unsigned short DOMEVENT_KEYUP               = 512;
     83     const unsigned short DOMEVENT_KEYPRESS            = 1024;
     84     const unsigned short DOMEVENT_DRAGDROP            = 2048;
     85     const unsigned short DOMEVENT_FOCUS               = 4096;
     86     const unsigned short DOMEVENT_BLUR                = 8192;
     87     const unsigned short DOMEVENT_SELECT              = 16384;
     88     const unsigned short DOMEVENT_CHANGE              = 32768;
     89 
     90     //readonly attribute DOMString        type;
     91     HRESULT type([out, retval] BSTR* result);
     92 
     93     //readonly attribute EventTarget      target;
     94     HRESULT target([out, retval] IDOMEventTarget** result);
     95 
     96     //readonly attribute EventTarget      currentTarget;
     97     HRESULT currentTarget([out, retval] IDOMEventTarget** result);
     98 
     99     //readonly attribute unsigned short   eventPhase;
    100     HRESULT eventPhase([out, retval] unsigned short* result);
    101 
    102     //readonly attribute boolean          bubbles;
    103     HRESULT bubbles([out, retval] BOOL* result);
    104 
    105     //readonly attribute boolean          cancelable;
    106     HRESULT cancelable([out, retval] BOOL* result);
    107 
    108     //readonly attribute DOMTimeStamp     timeStamp;
    109     HRESULT timeStamp([out, retval] DOMTimeStamp* result);
    110 
    111     //void               stopPropagation();
    112     HRESULT stopPropagation();
    113 
    114     //void               preventDefault();
    115     HRESULT preventDefault();
    116 
    117     //[OldStyleObjC] void initEvent(in DOMString eventTypeArg,
    118     //                              in boolean canBubbleArg,
    119     //                              in boolean cancelableArg);
    120     HRESULT initEvent([in] BSTR eventTypeArg, [in] BOOL canBubbleArg, [in] BOOL cancelableArg);
    121 }
    122 
    123 [
    124     object,
    125     oleautomation,
    126     uuid(c7cf7d84-d755-40bc-b664-84bc79eff709),
    127     pointer_default(unique)
    128 ]
    129 interface IDOMEventTarget : IUnknown
    130 {
    131     //void               addEventListener(in DOMString type,
    132     //                                    in EventListener listener,
    133     //                                    in boolean useCapture);
    134     HRESULT addEventListener([in] BSTR type, [in] IDOMEventListener* listener, [in] BOOL useCapture);
    135 
    136     //void               removeEventListener(in DOMString type,
    137     //                                       in EventListener listener,
    138     //                                       in boolean useCapture);
    139     HRESULT removeEventListener([in] BSTR type, [in] IDOMEventListener* listener, [in] BOOL useCapture);
    140 
    141     //boolean            dispatchEvent(in Event event)
    142     HRESULT dispatchEvent([in] IDOMEvent* event, [out, retval] BOOL* result);
    143 }
    144 
    145 [
    146     object,
    147     oleautomation,
    148     uuid(55AAF192-68CD-409f-A551-89710DC7240A),
    149     pointer_default(unique)
    150 ]
    151 interface IDOMDocumentEvent : IUnknown
    152 {
    153     //Event              createEvent(in DOMString eventType)
    154     //    raises(DOMException);
    155     HRESULT createEvent([in] BSTR eventType, [out, retval] IDOMEvent** result);
    156 }
    157 
    158 [
    159     object,
    160     oleautomation,
    161     uuid(76bc4e46-67df-40d3-89b0-a94dcc2ed507),
    162     pointer_default(unique)
    163 ]
    164 interface IDOMKeyboardEvent : IDOMUIEvent
    165 {
    166     // KeyLocationCode
    167     const unsigned long       DOMKEYBOARDEVENT_KEY_LOCATION_STANDARD      = 0x00;
    168     const unsigned long       DOMKEYBOARDEVENT_KEY_LOCATION_LEFT          = 0x01;
    169     const unsigned long       DOMKEYBOARDEVENT_KEY_LOCATION_RIGHT         = 0x02;
    170     const unsigned long       DOMKEYBOARDEVENT_KEY_LOCATION_NUMPAD        = 0x03;
    171 
    172     //readonly attribute DOMString        keyIdentifier;
    173     HRESULT keyIdentifier([out, retval] BSTR* result);
    174 
    175     //readonly attribute unsigned long    keyLocation;
    176     HRESULT keyLocation([out, retval] unsigned long* result);
    177 
    178     //readonly attribute boolean          ctrlKey;
    179     HRESULT ctrlKey([out, retval] BOOL* result);
    180 
    181     //readonly attribute boolean          shiftKey;
    182     HRESULT shiftKey([out, retval] BOOL* result);
    183 
    184     //readonly attribute boolean          altKey;
    185     HRESULT altKey([out, retval] BOOL* result);
    186 
    187     //readonly attribute boolean          metaKey;
    188     HRESULT metaKey([out, retval] BOOL* result);
    189 
    190     //readonly attribute boolean          altGraphKey;
    191     HRESULT altGraphKey([out, retval] BOOL* result);
    192 
    193     //boolean getModifierState(in DOMString keyIdentifierArg);
    194     HRESULT getModifierState([in] BSTR keyIdentifierArg, [out, retval] BOOL* result);
    195 
    196     // FIXME: this does not match the version in the DOM spec.
    197     //void initKeyboardEvent(in AtomicString type,
    198     //                       in boolean canBubble,
    199     //                       in boolean cancelable,
    200     //                       in DOMWindow view,
    201     //                       in DOMString keyIdentifier,
    202     //                       in unsigned long keyLocation,
    203     //                       in boolean ctrlKey,
    204     //                       in boolean altKey,
    205     //                       in boolean shiftKey,
    206     //                       in boolean metaKey,
    207     //                       in boolean altGraphKey);
    208     HRESULT initKeyboardEvent([in] BSTR type, [in] BOOL canBubble, [in] BOOL cancelable, [in] IDOMWindow* view, [in] BSTR keyIdentifier, [in] unsigned long keyLocation, [in] BOOL ctrlKey, [in] BOOL altKey, [in] BOOL shiftKey, [in] BOOL metaKey, [in] BOOL graphKey);
    209 
    210     // WebKit Extensions
    211     //readonly attribute long             keyCode;
    212     //HRESULT keyCode([out, retval] long* result);
    213 
    214     //readonly attribute long             charCode;
    215     //HRESULT charCode([out, retval] long* result);
    216 
    217     //void initKeyboardEvent(in AtomicString type,
    218     //                       in boolean canBubble,
    219     //                       in boolean cancelable,
    220     //                       in DOMWindow view,
    221     //                       in DOMString keyIdentifier,
    222     //                       in unsigned long keyLocation,
    223     //                       in boolean ctrlKey,
    224     //                       in boolean altKey,
    225     //                       in boolean shiftKey,
    226     //                       in boolean metaKey);
    227 }
    228 
    229 [
    230     object,
    231     oleautomation,
    232     uuid(bdd97151-5f6a-4ba4-a902-9b008392eb54),
    233     pointer_default(unique)
    234 ]
    235 interface IDOMMouseEvent : IDOMUIEvent
    236 {
    237     //readonly attribute long             screenX;
    238     HRESULT screenX([out, retval] long* result);
    239 
    240     //readonly attribute long             screenY;
    241     HRESULT screenY([out, retval] long* result);
    242 
    243     //readonly attribute long             clientX;
    244     HRESULT clientX([out, retval] long* result);
    245 
    246     //readonly attribute long             clientY;
    247     HRESULT clientY([out, retval] long* result);
    248 
    249     //readonly attribute boolean          ctrlKey;
    250     HRESULT ctrlKey([out, retval] BOOL* result);
    251 
    252     //readonly attribute boolean          shiftKey;
    253     HRESULT shiftKey([out, retval] BOOL* result);
    254 
    255     //readonly attribute boolean          altKey;
    256     HRESULT altKey([out, retval] BOOL* result);
    257 
    258     //readonly attribute boolean          metaKey;
    259     HRESULT metaKey([out, retval] BOOL* result);
    260 
    261     //readonly attribute unsigned short   button;
    262     HRESULT button([out, retval] unsigned short* result);
    263 
    264     //readonly attribute EventTarget      relatedTarget;
    265     HRESULT relatedTarget([out, retval] IDOMEventTarget** result);
    266 
    267     //[OldStyleObjC] void initMouseEvent(in AtomicString type,
    268     //                                   in boolean canBubble,
    269     //                                   in boolean cancelable,
    270     //                                   in DOMWindow view,
    271     //                                   in long detail,
    272     //                                   in long screenX,
    273     //                                   in long screenY,
    274     //                                   in long clientX,
    275     //                                   in long clientY,
    276     //                                   in boolean ctrlKey,
    277     //                                   in boolean altKey,
    278     //                                   in boolean shiftKey,
    279     //                                   in boolean metaKey,
    280     //                                   in unsigned short button,
    281     //                                   in EventTarget relatedTarget);
    282     HRESULT initMouseEvent([in] BSTR type, [in] BOOL canBubble, [in] BOOL cancelable, [in] IDOMWindow* view, [in] long detail, [in] long screenX, [in] long screenY, [in] long clientX, [in] long clientY, [in] BOOL ctrlKey, [in] BOOL altKey, [in] BOOL shiftKey, [in] BOOL metaKey, [in] unsigned short button, [in] IDOMEventTarget* relatedTarget);
    283 
    284     // extensions
    285     //readonly attribute long             offsetX;
    286     HRESULT offsetX([out, retval] long* result);
    287 
    288     //readonly attribute long             offsetY;
    289     HRESULT offsetY([out, retval] long* result);
    290 
    291     //readonly attribute long             x;
    292     HRESULT x([out, retval] long* result);
    293 
    294     //readonly attribute long             y;
    295     HRESULT y([out, retval] long* result);
    296 
    297     //readonly attribute Node             fromElement;
    298     HRESULT fromElement([out, retval] IDOMNode** result);
    299 
    300     //readonly attribute Node             toElement;
    301     HRESULT toElement([out, retval] IDOMNode** result);
    302 }
    303 
    304 [
    305     object,
    306     oleautomation,
    307     uuid(6345d228-ea67-48ee-93c8-ff6e9c6356e9),
    308     pointer_default(unique)
    309 ]
    310 interface IDOMMutationEvent : IDOMEvent
    311 {
    312     // attrChangeType
    313     const unsigned short DOMMUTATIONEVENT_MODIFICATION = 1;
    314     const unsigned short DOMMUTATIONEVENT_ADDITION     = 2;
    315     const unsigned short DOMMUTATIONEVENT_REMOVAL      = 3;
    316 
    317     //readonly attribute Node           relatedNode;
    318     HRESULT relatedNode([out, retval] IDOMNode** result);
    319 
    320     //readonly attribute DOMString      prevValue;
    321     HRESULT prevValue([out, retval] BSTR* result);
    322 
    323     //readonly attribute DOMString      newValue;
    324     HRESULT newValue([out, retval] BSTR* result);
    325 
    326     //readonly attribute DOMString      attrName;
    327     HRESULT attrName([out, retval] BSTR* result);
    328 
    329     //readonly attribute unsigned short attrChange;
    330     HRESULT attrChange([out, retval] unsigned short* result);
    331 
    332     //[OldStyleObjC] void initMutationEvent(in AtomicString type,
    333     //                                      in boolean canBubble,
    334     //                                      in boolean cancelable,
    335     //                                      in Node relatedNode,
    336     //                                      in DOMString prevValue,
    337     //                                      in DOMString newValue,
    338     //                                      in DOMString attrName,
    339     //                                      in unsigned short attrChange);
    340     HRESULT initMutationEvent([in] BSTR type, [in] BOOL canBubble, [in] BOOL cancelable, [in] IDOMNode* relatedNode, [in] BSTR prevValue, [in] BSTR newValue, [in] BSTR attrName, [in] unsigned short attrChange);
    341 }
    342 
    343 [
    344     object,
    345     oleautomation,
    346     uuid(6048369e-e444-401b-950d-c9daef9384d2),
    347     pointer_default(unique)
    348 ]
    349 interface IDOMOverflowEvent : IDOMEvent
    350 {
    351     const unsigned short DOMOVERFLOWEVENT_HORIZONTAL = 0;
    352     const unsigned short DOMOVERFLOWEVENT_VERTICAL   = 1;
    353     const unsigned short DOMOVERFLOWEVENT_BOTH       = 2;
    354 
    355     //readonly attribute unsigned short orient;
    356     HRESULT orient([out, retval] unsigned short* result);
    357 
    358     //readonly attribute boolean horizontalOverflow;
    359     HRESULT horizontalOverflow([out, retval] BOOL* result);
    360 
    361     //readonly attribute boolean verticalOverflow;
    362     HRESULT verticalOverflow([out, retval] BOOL* result);
    363 }
    364 
    365 [
    366     object,
    367     oleautomation,
    368     uuid(b928261d-7c9e-4156-af71-6f698bd97788),
    369     pointer_default(unique)
    370 ]
    371 interface IDOMUIEvent : IDOMEvent
    372 {
    373     //readonly attribute DOMWindow            view;
    374     HRESULT view([out, retval] IDOMWindow** result);
    375 
    376     //readonly attribute long                 detail;
    377     HRESULT detail([out, retval] long* result);
    378 
    379     //[OldStyleObjC] void initUIEvent(in AtomicString type,
    380     //                                in boolean canBubble,
    381     //                                in boolean cancelable,
    382     //                                in DOMWindow view,
    383     //                                in long detail);
    384     HRESULT initUIEvent([in] BSTR type, [in] BOOL canBubble, [in] BOOL cancelable, [in] IDOMWindow* view, [in] long detail);
    385 
    386     // extentsions
    387     //readonly attribute long                 keyCode;
    388     HRESULT keyCode([out, retval] long* result);
    389 
    390     //readonly attribute long                 charCode;
    391     HRESULT charCode([out, retval] long* result);
    392 
    393     //readonly attribute long                 layerX;
    394     HRESULT layerX([out, retval] long* result);
    395 
    396     //readonly attribute long                 layerY;
    397     HRESULT layerY([out, retval] long* result);
    398 
    399     //readonly attribute long                 pageX;
    400     HRESULT pageX([out, retval] long* result);
    401 
    402     //readonly attribute long                 pageY;
    403     HRESULT pageY([out, retval] long* result);
    404 
    405     //readonly attribute long                 which;
    406     HRESULT which([out, retval] long* result);
    407 }
    408 
    409 [
    410     object,
    411     oleautomation,
    412     uuid(5404e6d9-a2bb-4c74-8070-ce9d2599bd00),
    413     pointer_default(unique)
    414 ]
    415 interface IDOMWheelEvent : IDOMUIEvent
    416 {
    417     //readonly attribute long    screenX;
    418     HRESULT screenX([out, retval] long* result);
    419 
    420     //readonly attribute long    screenY;
    421     HRESULT screenY([out, retval] long* result);
    422 
    423     //readonly attribute long    clientX;
    424     HRESULT clientX([out, retval] long* result);
    425 
    426     //readonly attribute long    clientY;
    427     HRESULT clientY([out, retval] long* result);
    428 
    429     //readonly attribute boolean ctrlKey;
    430     HRESULT ctrlKey([out, retval] BOOL* result);
    431 
    432     //readonly attribute boolean shiftKey;
    433     HRESULT shiftKey([out, retval] BOOL* result);
    434 
    435     //readonly attribute boolean altKey;
    436     HRESULT altKey([out, retval] BOOL* result);
    437 
    438     //readonly attribute boolean metaKey;
    439     HRESULT metaKey([out, retval] BOOL* result);
    440 
    441     //readonly attribute long    wheelDelta;
    442     HRESULT wheelDelta([out, retval] long* result);
    443 
    444     //readonly attribute long    wheelDeltaX;
    445     HRESULT wheelDeltaX([out, retval] long* result);
    446 
    447     //readonly attribute long    wheelDeltaY;
    448     HRESULT wheelDeltaY([out, retval] long* result);
    449 
    450     // WebKit Extensions
    451     //readonly attribute long    offsetX;
    452     HRESULT offsetX([out, retval] long* result);
    453 
    454     //readonly attribute long    offsetY;
    455     HRESULT offsetY([out, retval] long* result);
    456 
    457     //readonly attribute long    x;
    458     HRESULT x([out, retval] long* result);
    459 
    460     //readonly attribute long    y;
    461     HRESULT y([out, retval] long* result);
    462 
    463     //readonly attribute boolean isHorizontal;
    464     HRESULT isHorizontal([out, retval] BOOL* result);
    465 
    466     //void initWheelEvent(in long wheelDeltaX,
    467     //                    in long wheelDeltaY,
    468     //                    in DOMWindow view,
    469     //                    in long screenX,
    470     //                    in long screenY,
    471     //                    in long clientX,
    472     //                    in long clientY,
    473     //                    in boolean ctrlKey,
    474     //                    in boolean altKey,
    475     //                    in boolean shiftKey,
    476     //                    in boolean metaKey);
    477     HRESULT initWheelEvent([in] long wheelDeltaX, [in] long wheelDeltaY, [in] IDOMWindow* view, [in] long screenX, [in] long screenY, [in] long clientX, [in] long clientY, [in] BOOL ctrlKey, [in] BOOL altKey, [in] BOOL shiftKey, [in] BOOL metaKey);
    478 }
    479