Home | History | Annotate | Download | only in win
      1 /*
      2  * Copyright (C) 2006, 2007 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 #include "config.h"
     27 #include "WebKitDLL.h"
     28 #include <initguid.h>
     29 #include "DOMEventsClasses.h"
     30 
     31 #include <WebCore/DOMWindow.h>
     32 #include <WebCore/Event.h>
     33 #include <WebCore/KeyboardEvent.h>
     34 #include <WebCore/MouseEvent.h>
     35 
     36 // DOMEventListener -----------------------------------------------------------
     37 
     38 HRESULT STDMETHODCALLTYPE DOMEventListener::QueryInterface(const IID &riid, void** ppvObject)
     39 {
     40     *ppvObject = 0;
     41     if (IsEqualGUID(riid, IID_IDOMEventListener))
     42         *ppvObject = static_cast<IDOMEventListener*>(this);
     43     else
     44         return DOMObject::QueryInterface(riid, ppvObject);
     45 
     46     AddRef();
     47     return S_OK;
     48 }
     49 
     50 HRESULT STDMETHODCALLTYPE DOMEventListener::handleEvent(
     51     /* [in] */ IDOMEvent* /*evt*/)
     52 {
     53     return E_NOTIMPL;
     54 }
     55 
     56 // DOMEvent -------------------------------------------------------------------
     57 
     58 DOMEvent::DOMEvent(PassRefPtr<WebCore::Event> e)
     59 : m_event(0)
     60 {
     61     m_event = e;
     62 }
     63 
     64 DOMEvent::~DOMEvent()
     65 {
     66 }
     67 
     68 IDOMEvent* DOMEvent::createInstance(PassRefPtr<WebCore::Event> e)
     69 {
     70     if (!e)
     71         return 0;
     72 
     73     HRESULT hr;
     74     IDOMEvent* domEvent = 0;
     75 
     76     if (e->isKeyboardEvent()) {
     77         DOMKeyboardEvent* newEvent = new DOMKeyboardEvent(e);
     78         hr = newEvent->QueryInterface(IID_IDOMKeyboardEvent, (void**)&domEvent);
     79     } else if (e->isMouseEvent()) {
     80         DOMMouseEvent* newEvent = new DOMMouseEvent(e);
     81         hr = newEvent->QueryInterface(IID_IDOMMouseEvent, (void**)&domEvent);
     82     } else if (e->isMutationEvent()) {
     83         DOMMutationEvent* newEvent = new DOMMutationEvent(e);
     84         hr = newEvent->QueryInterface(IID_IDOMMutationEvent, (void**)&domEvent);
     85     } else if (e->isOverflowEvent()) {
     86         DOMOverflowEvent* newEvent = new DOMOverflowEvent(e);
     87         hr = newEvent->QueryInterface(IID_IDOMOverflowEvent, (void**)&domEvent);
     88     } else if (e->isWheelEvent()) {
     89         DOMWheelEvent* newEvent = new DOMWheelEvent(e);
     90         hr = newEvent->QueryInterface(IID_IDOMWheelEvent, (void**)&domEvent);
     91     } else if (e->isUIEvent()) {
     92         DOMUIEvent* newEvent = new DOMUIEvent(e);
     93         hr = newEvent->QueryInterface(IID_IDOMUIEvent, (void**)&domEvent);
     94     } else {
     95         DOMEvent* newEvent = new DOMEvent(e);
     96         hr = newEvent->QueryInterface(IID_IDOMEvent, (void**)&domEvent);
     97     }
     98 
     99     if (FAILED(hr))
    100         return 0;
    101 
    102     return domEvent;
    103 }
    104 
    105 HRESULT STDMETHODCALLTYPE DOMEvent::QueryInterface(const IID &riid, void** ppvObject)
    106 {
    107     *ppvObject = 0;
    108     if (IsEqualGUID(riid, IID_DOMEvent))
    109         *ppvObject = this;
    110     else if (IsEqualGUID(riid, IID_IDOMEvent))
    111         *ppvObject = static_cast<IDOMEvent*>(this);
    112     else
    113         return DOMObject::QueryInterface(riid, ppvObject);
    114 
    115     AddRef();
    116     return S_OK;
    117 }
    118 
    119 HRESULT STDMETHODCALLTYPE DOMEvent::type(
    120     /* [retval][out] */ BSTR* /*result*/)
    121 {
    122     return E_NOTIMPL;
    123 }
    124 
    125 HRESULT STDMETHODCALLTYPE DOMEvent::target(
    126     /* [retval][out] */ IDOMEventTarget** /*result*/)
    127 {
    128     return E_NOTIMPL;
    129 }
    130 
    131 HRESULT STDMETHODCALLTYPE DOMEvent::currentTarget(
    132     /* [retval][out] */ IDOMEventTarget** /*result*/)
    133 {
    134     return E_NOTIMPL;
    135 }
    136 
    137 HRESULT STDMETHODCALLTYPE DOMEvent::eventPhase(
    138     /* [retval][out] */ unsigned short* /*result*/)
    139 {
    140     return E_NOTIMPL;
    141 }
    142 
    143 HRESULT STDMETHODCALLTYPE DOMEvent::bubbles(
    144     /* [retval][out] */ BOOL* /*result*/)
    145 {
    146     return E_NOTIMPL;
    147 }
    148 
    149 HRESULT STDMETHODCALLTYPE DOMEvent::cancelable(
    150     /* [retval][out] */ BOOL* /*result*/)
    151 {
    152     return E_NOTIMPL;
    153 }
    154 
    155 HRESULT STDMETHODCALLTYPE DOMEvent::timeStamp(
    156     /* [retval][out] */ DOMTimeStamp* /*result*/)
    157 {
    158     return E_NOTIMPL;
    159 }
    160 
    161 HRESULT STDMETHODCALLTYPE DOMEvent::stopPropagation( void)
    162 {
    163     return E_NOTIMPL;
    164 }
    165 
    166 HRESULT STDMETHODCALLTYPE DOMEvent::preventDefault( void)
    167 {
    168     return E_NOTIMPL;
    169 }
    170 
    171 HRESULT STDMETHODCALLTYPE DOMEvent::initEvent(
    172     /* [in] */ BSTR /*eventTypeArg*/,
    173     /* [in] */ BOOL /*canBubbleArg*/,
    174     /* [in] */ BOOL /*cancelableArg*/)
    175 {
    176     return E_NOTIMPL;
    177 }
    178 
    179 // DOMUIEvent -----------------------------------------------------------------
    180 
    181 HRESULT STDMETHODCALLTYPE DOMUIEvent::QueryInterface(REFIID riid, void** ppvObject)
    182 {
    183     *ppvObject = 0;
    184     if (IsEqualGUID(riid, IID_IDOMUIEvent))
    185         *ppvObject = static_cast<IDOMUIEvent*>(this);
    186     else
    187         return DOMEvent::QueryInterface(riid, ppvObject);
    188 
    189     AddRef();
    190     return S_OK;
    191 }
    192 
    193 HRESULT STDMETHODCALLTYPE DOMUIEvent::view(
    194     /* [retval][out] */ IDOMWindow** /*result*/)
    195 {
    196     return E_NOTIMPL;
    197 }
    198 
    199 HRESULT STDMETHODCALLTYPE DOMUIEvent::detail(
    200     /* [retval][out] */ long* /*result*/)
    201 {
    202     return E_NOTIMPL;
    203 }
    204 
    205 HRESULT STDMETHODCALLTYPE DOMUIEvent::initUIEvent(
    206     /* [in] */ BSTR /*type*/,
    207     /* [in] */ BOOL /*canBubble*/,
    208     /* [in] */ BOOL /*cancelable*/,
    209     /* [in] */ IDOMWindow* /*view*/,
    210     /* [in] */ long /*detail*/)
    211 {
    212     return E_NOTIMPL;
    213 }
    214 
    215 HRESULT STDMETHODCALLTYPE DOMUIEvent::keyCode(
    216     /* [retval][out] */ long* /*result*/)
    217 {
    218     return E_NOTIMPL;
    219 }
    220 
    221 HRESULT STDMETHODCALLTYPE DOMUIEvent::charCode(
    222     /* [retval][out] */ long* /*result*/)
    223 {
    224     return E_NOTIMPL;
    225 }
    226 
    227 HRESULT STDMETHODCALLTYPE DOMUIEvent::layerX(
    228     /* [retval][out] */ long* /*result*/)
    229 {
    230     return E_NOTIMPL;
    231 }
    232 
    233 HRESULT STDMETHODCALLTYPE DOMUIEvent::layerY(
    234     /* [retval][out] */ long* /*result*/)
    235 {
    236     return E_NOTIMPL;
    237 }
    238 
    239 HRESULT STDMETHODCALLTYPE DOMUIEvent::pageX(
    240     /* [retval][out] */ long* /*result*/)
    241 {
    242     return E_NOTIMPL;
    243 }
    244 
    245 HRESULT STDMETHODCALLTYPE DOMUIEvent::pageY(
    246     /* [retval][out] */ long* /*result*/)
    247 {
    248     return E_NOTIMPL;
    249 }
    250 
    251 HRESULT STDMETHODCALLTYPE DOMUIEvent::which(
    252     /* [retval][out] */ long* /*result*/)
    253 {
    254     return E_NOTIMPL;
    255 }
    256 
    257 // DOMKeyboardEvent -----------------------------------------------------------
    258 
    259 HRESULT STDMETHODCALLTYPE DOMKeyboardEvent::QueryInterface(REFIID riid, void** ppvObject)
    260 {
    261     *ppvObject = 0;
    262     if (IsEqualGUID(riid, IID_IDOMKeyboardEvent))
    263         *ppvObject = static_cast<IDOMKeyboardEvent*>(this);
    264     else
    265         return DOMUIEvent::QueryInterface(riid, ppvObject);
    266 
    267     AddRef();
    268     return S_OK;
    269 }
    270 
    271 HRESULT STDMETHODCALLTYPE DOMKeyboardEvent::keyIdentifier(
    272     /* [retval][out] */ BSTR* /*result*/)
    273 {
    274     return E_NOTIMPL;
    275 }
    276 
    277 HRESULT STDMETHODCALLTYPE DOMKeyboardEvent::keyLocation(
    278     /* [retval][out] */ unsigned long* /*result*/)
    279 {
    280     return E_NOTIMPL;
    281 }
    282 
    283 HRESULT STDMETHODCALLTYPE DOMKeyboardEvent::ctrlKey(
    284     /* [retval][out] */ BOOL* result)
    285 {
    286     *result = FALSE;
    287     if (!m_event || !m_event->isKeyboardEvent())
    288         return E_FAIL;
    289     WebCore::KeyboardEvent* keyEvent = static_cast<WebCore::KeyboardEvent*>(m_event.get());
    290 
    291     *result = keyEvent->ctrlKey() ? TRUE : FALSE;
    292     return S_OK;
    293 }
    294 
    295 HRESULT STDMETHODCALLTYPE DOMKeyboardEvent::shiftKey(
    296     /* [retval][out] */ BOOL* result)
    297 {
    298     *result = FALSE;
    299     if (!m_event || !m_event->isKeyboardEvent())
    300         return E_FAIL;
    301     WebCore::KeyboardEvent* keyEvent = static_cast<WebCore::KeyboardEvent*>(m_event.get());
    302 
    303     *result = keyEvent->shiftKey() ? TRUE : FALSE;
    304     return S_OK;
    305 }
    306 
    307 HRESULT STDMETHODCALLTYPE DOMKeyboardEvent::altKey(
    308     /* [retval][out] */ BOOL* result)
    309 {
    310     *result = FALSE;
    311     if (!m_event || !m_event->isKeyboardEvent())
    312         return E_FAIL;
    313     WebCore::KeyboardEvent* keyEvent = static_cast<WebCore::KeyboardEvent*>(m_event.get());
    314 
    315     *result = keyEvent->altKey() ? TRUE : FALSE;
    316     return S_OK;
    317 }
    318 
    319 HRESULT STDMETHODCALLTYPE DOMKeyboardEvent::metaKey(
    320     /* [retval][out] */ BOOL* result)
    321 {
    322     *result = FALSE;
    323     if (!m_event || !m_event->isKeyboardEvent())
    324         return E_FAIL;
    325     WebCore::KeyboardEvent* keyEvent = static_cast<WebCore::KeyboardEvent*>(m_event.get());
    326 
    327     *result = keyEvent->metaKey() ? TRUE : FALSE;
    328     return S_OK;
    329 }
    330 
    331 HRESULT STDMETHODCALLTYPE DOMKeyboardEvent::altGraphKey(
    332     /* [retval][out] */ BOOL* result)
    333 {
    334     *result = FALSE;
    335     if (!m_event || !m_event->isKeyboardEvent())
    336         return E_FAIL;
    337     WebCore::KeyboardEvent* keyEvent = static_cast<WebCore::KeyboardEvent*>(m_event.get());
    338 
    339     *result = keyEvent->altGraphKey() ? TRUE : FALSE;
    340     return S_OK;
    341 }
    342 
    343 HRESULT STDMETHODCALLTYPE DOMKeyboardEvent::getModifierState(
    344     /* [in] */ BSTR /*keyIdentifierArg*/,
    345     /* [retval][out] */ BOOL* /*result*/)
    346 {
    347     return E_NOTIMPL;
    348 }
    349 
    350 HRESULT STDMETHODCALLTYPE DOMKeyboardEvent::initKeyboardEvent(
    351     /* [in] */ BSTR /*type*/,
    352     /* [in] */ BOOL /*canBubble*/,
    353     /* [in] */ BOOL /*cancelable*/,
    354     /* [in] */ IDOMWindow* /*view*/,
    355     /* [in] */ BSTR /*keyIdentifier*/,
    356     /* [in] */ unsigned long /*keyLocation*/,
    357     /* [in] */ BOOL /*ctrlKey*/,
    358     /* [in] */ BOOL /*altKey*/,
    359     /* [in] */ BOOL /*shiftKey*/,
    360     /* [in] */ BOOL /*metaKey*/,
    361     /* [in] */ BOOL /*graphKey*/)
    362 {
    363     return E_NOTIMPL;
    364 }
    365 
    366 // DOMMouseEvent --------------------------------------------------------------
    367 
    368 HRESULT STDMETHODCALLTYPE DOMMouseEvent::QueryInterface(REFIID riid, void** ppvObject)
    369 {
    370     *ppvObject = 0;
    371     if (IsEqualGUID(riid, IID_IDOMMouseEvent))
    372         *ppvObject = static_cast<IDOMMouseEvent*>(this);
    373     else
    374         return DOMUIEvent::QueryInterface(riid, ppvObject);
    375 
    376     AddRef();
    377     return S_OK;
    378 }
    379 
    380 HRESULT STDMETHODCALLTYPE DOMMouseEvent::screenX(
    381     /* [retval][out] */ long* /*result*/)
    382 {
    383     return E_NOTIMPL;
    384 }
    385 
    386 HRESULT STDMETHODCALLTYPE DOMMouseEvent::screenY(
    387     /* [retval][out] */ long* /*result*/)
    388 {
    389     return E_NOTIMPL;
    390 }
    391 
    392 HRESULT STDMETHODCALLTYPE DOMMouseEvent::clientX(
    393     /* [retval][out] */ long* /*result*/)
    394 {
    395     return E_NOTIMPL;
    396 }
    397 
    398 HRESULT STDMETHODCALLTYPE DOMMouseEvent::clientY(
    399     /* [retval][out] */ long* /*result*/)
    400 {
    401     return E_NOTIMPL;
    402 }
    403 
    404 HRESULT STDMETHODCALLTYPE DOMMouseEvent::ctrlKey(
    405     /* [retval][out] */ BOOL* result)
    406 {
    407     *result = FALSE;
    408     if (!m_event || !m_event->isMouseEvent())
    409         return E_FAIL;
    410     WebCore::MouseEvent* mouseEvent = static_cast<WebCore::MouseEvent*>(m_event.get());
    411 
    412     *result = mouseEvent->ctrlKey() ? TRUE : FALSE;
    413     return S_OK;
    414 }
    415 
    416 HRESULT STDMETHODCALLTYPE DOMMouseEvent::shiftKey(
    417     /* [retval][out] */ BOOL* result)
    418 {
    419     *result = FALSE;
    420     if (!m_event || !m_event->isMouseEvent())
    421         return E_FAIL;
    422     WebCore::MouseEvent* mouseEvent = static_cast<WebCore::MouseEvent*>(m_event.get());
    423 
    424     *result = mouseEvent->shiftKey() ? TRUE : FALSE;
    425     return S_OK;
    426 }
    427 
    428 HRESULT STDMETHODCALLTYPE DOMMouseEvent::altKey(
    429     /* [retval][out] */ BOOL* result)
    430 {
    431     *result = FALSE;
    432     if (!m_event || !m_event->isMouseEvent())
    433         return E_FAIL;
    434     WebCore::MouseEvent* mouseEvent = static_cast<WebCore::MouseEvent*>(m_event.get());
    435 
    436     *result = mouseEvent->altKey() ? TRUE : FALSE;
    437     return S_OK;
    438 }
    439 
    440 HRESULT STDMETHODCALLTYPE DOMMouseEvent::metaKey(
    441     /* [retval][out] */ BOOL* result)
    442 {
    443     *result = FALSE;
    444     if (!m_event || !m_event->isMouseEvent())
    445         return E_FAIL;
    446     WebCore::MouseEvent* mouseEvent = static_cast<WebCore::MouseEvent*>(m_event.get());
    447 
    448     *result = mouseEvent->metaKey() ? TRUE : FALSE;
    449     return S_OK;
    450 }
    451 
    452 HRESULT STDMETHODCALLTYPE DOMMouseEvent::button(
    453     /* [retval][out] */ unsigned short* /*result*/)
    454 {
    455     return E_NOTIMPL;
    456 }
    457 
    458 HRESULT STDMETHODCALLTYPE DOMMouseEvent::relatedTarget(
    459     /* [retval][out] */ IDOMEventTarget** /*result*/)
    460 {
    461     return E_NOTIMPL;
    462 }
    463 
    464 HRESULT STDMETHODCALLTYPE DOMMouseEvent::initMouseEvent(
    465     /* [in] */ BSTR /*type*/,
    466     /* [in] */ BOOL /*canBubble*/,
    467     /* [in] */ BOOL /*cancelable*/,
    468     /* [in] */ IDOMWindow* /*view*/,
    469     /* [in] */ long /*detail*/,
    470     /* [in] */ long /*screenX*/,
    471     /* [in] */ long /*screenY*/,
    472     /* [in] */ long /*clientX*/,
    473     /* [in] */ long /*clientY*/,
    474     /* [in] */ BOOL /*ctrlKey*/,
    475     /* [in] */ BOOL /*altKey*/,
    476     /* [in] */ BOOL /*shiftKey*/,
    477     /* [in] */ BOOL /*metaKey*/,
    478     /* [in] */ unsigned short /*button*/,
    479     /* [in] */ IDOMEventTarget* /*relatedTarget*/)
    480 {
    481     return E_NOTIMPL;
    482 }
    483 
    484 HRESULT STDMETHODCALLTYPE DOMMouseEvent::offsetX(
    485     /* [retval][out] */ long* /*result*/)
    486 {
    487     return E_NOTIMPL;
    488 }
    489 
    490 HRESULT STDMETHODCALLTYPE DOMMouseEvent::offsetY(
    491     /* [retval][out] */ long* /*result*/)
    492 {
    493     return E_NOTIMPL;
    494 }
    495 
    496 HRESULT STDMETHODCALLTYPE DOMMouseEvent::x(
    497     /* [retval][out] */ long* /*result*/)
    498 {
    499     return E_NOTIMPL;
    500 }
    501 
    502 HRESULT STDMETHODCALLTYPE DOMMouseEvent::y(
    503     /* [retval][out] */ long* /*result*/)
    504 {
    505     return E_NOTIMPL;
    506 }
    507 
    508 HRESULT STDMETHODCALLTYPE DOMMouseEvent::fromElement(
    509     /* [retval][out] */ IDOMNode** /*result*/)
    510 {
    511     return E_NOTIMPL;
    512 }
    513 
    514 HRESULT STDMETHODCALLTYPE DOMMouseEvent::toElement(
    515     /* [retval][out] */ IDOMNode** /*result*/)
    516 {
    517     return E_NOTIMPL;
    518 }
    519 
    520 // DOMMutationEvent -----------------------------------------------------------
    521 
    522 HRESULT STDMETHODCALLTYPE DOMMutationEvent::QueryInterface(REFIID riid, void** ppvObject)
    523 {
    524     *ppvObject = 0;
    525     if (IsEqualGUID(riid, IID_IDOMMutationEvent))
    526         *ppvObject = static_cast<IDOMMutationEvent*>(this);
    527     else
    528         return DOMEvent::QueryInterface(riid, ppvObject);
    529 
    530     AddRef();
    531     return S_OK;
    532 }
    533 
    534 HRESULT STDMETHODCALLTYPE DOMMutationEvent::relatedNode(
    535     /* [retval][out] */ IDOMNode** /*result*/)
    536 {
    537     return E_NOTIMPL;
    538 }
    539 
    540 HRESULT STDMETHODCALLTYPE DOMMutationEvent::prevValue(
    541     /* [retval][out] */ BSTR* /*result*/)
    542 {
    543     return E_NOTIMPL;
    544 }
    545 
    546 HRESULT STDMETHODCALLTYPE DOMMutationEvent::newValue(
    547     /* [retval][out] */ BSTR* /*result*/)
    548 {
    549     return E_NOTIMPL;
    550 }
    551 
    552 HRESULT STDMETHODCALLTYPE DOMMutationEvent::attrName(
    553     /* [retval][out] */ BSTR* /*result*/)
    554 {
    555     return E_NOTIMPL;
    556 }
    557 
    558 HRESULT STDMETHODCALLTYPE DOMMutationEvent::attrChange(
    559     /* [retval][out] */ unsigned short* /*result*/)
    560 {
    561     return E_NOTIMPL;
    562 }
    563 
    564 HRESULT STDMETHODCALLTYPE DOMMutationEvent::initMutationEvent(
    565     /* [in] */ BSTR /*type*/,
    566     /* [in] */ BOOL /*canBubble*/,
    567     /* [in] */ BOOL /*cancelable*/,
    568     /* [in] */ IDOMNode* /*relatedNode*/,
    569     /* [in] */ BSTR /*prevValue*/,
    570     /* [in] */ BSTR /*newValue*/,
    571     /* [in] */ BSTR /*attrName*/,
    572     /* [in] */ unsigned short /*attrChange*/)
    573 {
    574     return E_NOTIMPL;
    575 }
    576 
    577 // DOMOverflowEvent -----------------------------------------------------------
    578 
    579 HRESULT STDMETHODCALLTYPE DOMOverflowEvent::QueryInterface(REFIID riid, void** ppvObject)
    580 {
    581     *ppvObject = 0;
    582     if (IsEqualGUID(riid, IID_IDOMOverflowEvent))
    583         *ppvObject = static_cast<IDOMOverflowEvent*>(this);
    584     else
    585         return DOMEvent::QueryInterface(riid, ppvObject);
    586 
    587     AddRef();
    588     return S_OK;
    589 }
    590 
    591 HRESULT STDMETHODCALLTYPE DOMOverflowEvent::orient(
    592     /* [retval][out] */ unsigned short* /*result*/)
    593 {
    594     return E_NOTIMPL;
    595 }
    596 
    597 HRESULT STDMETHODCALLTYPE DOMOverflowEvent::horizontalOverflow(
    598     /* [retval][out] */ BOOL* /*result*/)
    599 {
    600     return E_NOTIMPL;
    601 }
    602 
    603 HRESULT STDMETHODCALLTYPE DOMOverflowEvent::verticalOverflow(
    604     /* [retval][out] */ BOOL* /*result*/)
    605 {
    606     return E_NOTIMPL;
    607 }
    608 
    609 // DOMWheelEvent --------------------------------------------------------------
    610 
    611 HRESULT STDMETHODCALLTYPE DOMWheelEvent::QueryInterface(REFIID riid, void** ppvObject)
    612 {
    613     *ppvObject = 0;
    614     if (IsEqualGUID(riid, IID_IDOMWheelEvent))
    615         *ppvObject = static_cast<IDOMWheelEvent*>(this);
    616     else
    617         return DOMUIEvent::QueryInterface(riid, ppvObject);
    618 
    619     AddRef();
    620     return S_OK;
    621 }
    622 
    623 HRESULT STDMETHODCALLTYPE DOMWheelEvent::screenX(
    624     /* [retval][out] */ long* /*result*/)
    625 {
    626     return E_NOTIMPL;
    627 }
    628 
    629 HRESULT STDMETHODCALLTYPE DOMWheelEvent::screenY(
    630     /* [retval][out] */ long* /*result*/)
    631 {
    632     return E_NOTIMPL;
    633 }
    634 
    635 HRESULT STDMETHODCALLTYPE DOMWheelEvent::clientX(
    636     /* [retval][out] */ long* /*result*/)
    637 {
    638     return E_NOTIMPL;
    639 }
    640 
    641 HRESULT STDMETHODCALLTYPE DOMWheelEvent::clientY(
    642     /* [retval][out] */ long* /*result*/)
    643 {
    644     return E_NOTIMPL;
    645 }
    646 
    647 HRESULT STDMETHODCALLTYPE DOMWheelEvent::ctrlKey(
    648     /* [retval][out] */ BOOL* /*result*/)
    649 {
    650     return E_NOTIMPL;
    651 }
    652 
    653 HRESULT STDMETHODCALLTYPE DOMWheelEvent::shiftKey(
    654     /* [retval][out] */ BOOL* /*result*/)
    655 {
    656     return E_NOTIMPL;
    657 }
    658 
    659 HRESULT STDMETHODCALLTYPE DOMWheelEvent::altKey(
    660     /* [retval][out] */ BOOL* /*result*/)
    661 {
    662     return E_NOTIMPL;
    663 }
    664 
    665 HRESULT STDMETHODCALLTYPE DOMWheelEvent::metaKey(
    666     /* [retval][out] */ BOOL* /*result*/)
    667 {
    668     return E_NOTIMPL;
    669 }
    670 
    671 HRESULT STDMETHODCALLTYPE DOMWheelEvent::wheelDelta(
    672     /* [retval][out] */ long* /*result*/)
    673 {
    674     return E_NOTIMPL;
    675 }
    676 
    677 HRESULT STDMETHODCALLTYPE DOMWheelEvent::wheelDeltaX(
    678     /* [retval][out] */ long* /*result*/)
    679 {
    680     return E_NOTIMPL;
    681 }
    682 
    683 HRESULT STDMETHODCALLTYPE DOMWheelEvent::wheelDeltaY(
    684     /* [retval][out] */ long* /*result*/)
    685 {
    686     return E_NOTIMPL;
    687 }
    688 
    689 HRESULT STDMETHODCALLTYPE DOMWheelEvent::offsetX(
    690     /* [retval][out] */ long* /*result*/)
    691 {
    692     return E_NOTIMPL;
    693 }
    694 
    695 HRESULT STDMETHODCALLTYPE DOMWheelEvent::offsetY(
    696     /* [retval][out] */ long* /*result*/)
    697 {
    698     return E_NOTIMPL;
    699 }
    700 
    701 HRESULT STDMETHODCALLTYPE DOMWheelEvent::x(
    702     /* [retval][out] */ long* /*result*/)
    703 {
    704     return E_NOTIMPL;
    705 }
    706 
    707 HRESULT STDMETHODCALLTYPE DOMWheelEvent::y(
    708     /* [retval][out] */ long* /*result*/)
    709 {
    710     return E_NOTIMPL;
    711 }
    712 
    713 HRESULT STDMETHODCALLTYPE DOMWheelEvent::isHorizontal(
    714     /* [retval][out] */ BOOL* /*result*/)
    715 {
    716     return E_NOTIMPL;
    717 }
    718 
    719 HRESULT STDMETHODCALLTYPE DOMWheelEvent::initWheelEvent(
    720     /* [in] */ long /*wheelDeltaX*/,
    721     /* [in] */ long /*wheelDeltaY*/,
    722     /* [in] */ IDOMWindow* /*view*/,
    723     /* [in] */ long /*screenX*/,
    724     /* [in] */ long /*screenY*/,
    725     /* [in] */ long /*clientX*/,
    726     /* [in] */ long /*clientY*/,
    727     /* [in] */ BOOL /*ctrlKey*/,
    728     /* [in] */ BOOL /*altKey*/,
    729     /* [in] */ BOOL /*shiftKey*/,
    730     /* [in] */ BOOL /*metaKey*/)
    731 {
    732     return E_NOTIMPL;
    733 }
    734