2
* Copyright (C) 2006, 2007 Apple Inc. All rights reserved.
4
* Redistribution and use in source and binary forms, with or without
5
* modification, are permitted provided that the following conditions
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.
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.
27
#include "WebKitDLL.h"
29
#include "DOMEventsClasses.h"
31
#pragma warning( push, 0 )
32
#include <WebCore/DOMWindow.h>
33
#include <WebCore/Event.h>
34
#include <WebCore/KeyboardEvent.h>
35
#include <WebCore/MouseEvent.h>
36
#pragma warning( pop )
38
// DOMEventListener -----------------------------------------------------------
40
HRESULT STDMETHODCALLTYPE DOMEventListener::QueryInterface(const IID &riid, void** ppvObject)
43
if (IsEqualGUID(riid, IID_IDOMEventListener))
44
*ppvObject = static_cast<IDOMEventListener*>(this);
46
return DOMObject::QueryInterface(riid, ppvObject);
52
HRESULT STDMETHODCALLTYPE DOMEventListener::handleEvent(
53
/* [in] */ IDOMEvent* /*evt*/)
58
// DOMEvent -------------------------------------------------------------------
60
DOMEvent::DOMEvent(PassRefPtr<WebCore::Event> e)
70
IDOMEvent* DOMEvent::createInstance(PassRefPtr<WebCore::Event> e)
76
IDOMEvent* domEvent = 0;
78
if (e->isKeyboardEvent()) {
79
DOMKeyboardEvent* newEvent = new DOMKeyboardEvent(e);
80
hr = newEvent->QueryInterface(IID_IDOMKeyboardEvent, (void**)&domEvent);
81
} else if (e->isMouseEvent()) {
82
DOMMouseEvent* newEvent = new DOMMouseEvent(e);
83
hr = newEvent->QueryInterface(IID_IDOMMouseEvent, (void**)&domEvent);
84
} else if (e->isMutationEvent()) {
85
DOMMutationEvent* newEvent = new DOMMutationEvent(e);
86
hr = newEvent->QueryInterface(IID_IDOMMutationEvent, (void**)&domEvent);
87
} else if (e->isOverflowEvent()) {
88
DOMOverflowEvent* newEvent = new DOMOverflowEvent(e);
89
hr = newEvent->QueryInterface(IID_IDOMOverflowEvent, (void**)&domEvent);
90
} else if (e->isWheelEvent()) {
91
DOMWheelEvent* newEvent = new DOMWheelEvent(e);
92
hr = newEvent->QueryInterface(IID_IDOMWheelEvent, (void**)&domEvent);
93
} else if (e->isUIEvent()) {
94
DOMUIEvent* newEvent = new DOMUIEvent(e);
95
hr = newEvent->QueryInterface(IID_IDOMUIEvent, (void**)&domEvent);
97
DOMEvent* newEvent = new DOMEvent(e);
98
hr = newEvent->QueryInterface(IID_IDOMEvent, (void**)&domEvent);
107
HRESULT STDMETHODCALLTYPE DOMEvent::QueryInterface(const IID &riid, void** ppvObject)
110
if (IsEqualGUID(riid, IID_DOMEvent))
112
else if (IsEqualGUID(riid, IID_IDOMEvent))
113
*ppvObject = static_cast<IDOMEvent*>(this);
115
return DOMObject::QueryInterface(riid, ppvObject);
121
HRESULT STDMETHODCALLTYPE DOMEvent::type(
122
/* [retval][out] */ BSTR* /*result*/)
127
HRESULT STDMETHODCALLTYPE DOMEvent::target(
128
/* [retval][out] */ IDOMEventTarget** /*result*/)
133
HRESULT STDMETHODCALLTYPE DOMEvent::currentTarget(
134
/* [retval][out] */ IDOMEventTarget** /*result*/)
139
HRESULT STDMETHODCALLTYPE DOMEvent::eventPhase(
140
/* [retval][out] */ unsigned short* /*result*/)
145
HRESULT STDMETHODCALLTYPE DOMEvent::bubbles(
146
/* [retval][out] */ BOOL* /*result*/)
151
HRESULT STDMETHODCALLTYPE DOMEvent::cancelable(
152
/* [retval][out] */ BOOL* /*result*/)
157
HRESULT STDMETHODCALLTYPE DOMEvent::timeStamp(
158
/* [retval][out] */ DOMTimeStamp* /*result*/)
163
HRESULT STDMETHODCALLTYPE DOMEvent::stopPropagation( void)
168
HRESULT STDMETHODCALLTYPE DOMEvent::preventDefault( void)
173
HRESULT STDMETHODCALLTYPE DOMEvent::initEvent(
174
/* [in] */ BSTR /*eventTypeArg*/,
175
/* [in] */ BOOL /*canBubbleArg*/,
176
/* [in] */ BOOL /*cancelableArg*/)
181
// DOMUIEvent -----------------------------------------------------------------
183
HRESULT STDMETHODCALLTYPE DOMUIEvent::QueryInterface(REFIID riid, void** ppvObject)
186
if (IsEqualGUID(riid, IID_IDOMUIEvent))
187
*ppvObject = static_cast<IDOMUIEvent*>(this);
189
return DOMEvent::QueryInterface(riid, ppvObject);
195
HRESULT STDMETHODCALLTYPE DOMUIEvent::view(
196
/* [retval][out] */ IDOMWindow** /*result*/)
201
HRESULT STDMETHODCALLTYPE DOMUIEvent::detail(
202
/* [retval][out] */ long* /*result*/)
207
HRESULT STDMETHODCALLTYPE DOMUIEvent::initUIEvent(
208
/* [in] */ BSTR /*type*/,
209
/* [in] */ BOOL /*canBubble*/,
210
/* [in] */ BOOL /*cancelable*/,
211
/* [in] */ IDOMWindow* /*view*/,
212
/* [in] */ long /*detail*/)
217
HRESULT STDMETHODCALLTYPE DOMUIEvent::keyCode(
218
/* [retval][out] */ long* /*result*/)
223
HRESULT STDMETHODCALLTYPE DOMUIEvent::charCode(
224
/* [retval][out] */ long* /*result*/)
229
HRESULT STDMETHODCALLTYPE DOMUIEvent::layerX(
230
/* [retval][out] */ long* /*result*/)
235
HRESULT STDMETHODCALLTYPE DOMUIEvent::layerY(
236
/* [retval][out] */ long* /*result*/)
241
HRESULT STDMETHODCALLTYPE DOMUIEvent::pageX(
242
/* [retval][out] */ long* /*result*/)
247
HRESULT STDMETHODCALLTYPE DOMUIEvent::pageY(
248
/* [retval][out] */ long* /*result*/)
253
HRESULT STDMETHODCALLTYPE DOMUIEvent::which(
254
/* [retval][out] */ long* /*result*/)
259
// DOMKeyboardEvent -----------------------------------------------------------
261
HRESULT STDMETHODCALLTYPE DOMKeyboardEvent::QueryInterface(REFIID riid, void** ppvObject)
264
if (IsEqualGUID(riid, IID_IDOMKeyboardEvent))
265
*ppvObject = static_cast<IDOMKeyboardEvent*>(this);
267
return DOMUIEvent::QueryInterface(riid, ppvObject);
273
HRESULT STDMETHODCALLTYPE DOMKeyboardEvent::keyIdentifier(
274
/* [retval][out] */ BSTR* /*result*/)
279
HRESULT STDMETHODCALLTYPE DOMKeyboardEvent::keyLocation(
280
/* [retval][out] */ unsigned long* /*result*/)
285
HRESULT STDMETHODCALLTYPE DOMKeyboardEvent::ctrlKey(
286
/* [retval][out] */ BOOL* result)
289
if (!m_event || !m_event->isKeyboardEvent())
291
WebCore::KeyboardEvent* keyEvent = static_cast<WebCore::KeyboardEvent*>(m_event.get());
293
*result = keyEvent->ctrlKey() ? TRUE : FALSE;
297
HRESULT STDMETHODCALLTYPE DOMKeyboardEvent::shiftKey(
298
/* [retval][out] */ BOOL* result)
301
if (!m_event || !m_event->isKeyboardEvent())
303
WebCore::KeyboardEvent* keyEvent = static_cast<WebCore::KeyboardEvent*>(m_event.get());
305
*result = keyEvent->shiftKey() ? TRUE : FALSE;
309
HRESULT STDMETHODCALLTYPE DOMKeyboardEvent::altKey(
310
/* [retval][out] */ BOOL* result)
313
if (!m_event || !m_event->isKeyboardEvent())
315
WebCore::KeyboardEvent* keyEvent = static_cast<WebCore::KeyboardEvent*>(m_event.get());
317
*result = keyEvent->altKey() ? TRUE : FALSE;
321
HRESULT STDMETHODCALLTYPE DOMKeyboardEvent::metaKey(
322
/* [retval][out] */ BOOL* result)
325
if (!m_event || !m_event->isKeyboardEvent())
327
WebCore::KeyboardEvent* keyEvent = static_cast<WebCore::KeyboardEvent*>(m_event.get());
329
*result = keyEvent->metaKey() ? TRUE : FALSE;
333
HRESULT STDMETHODCALLTYPE DOMKeyboardEvent::altGraphKey(
334
/* [retval][out] */ BOOL* result)
337
if (!m_event || !m_event->isKeyboardEvent())
339
WebCore::KeyboardEvent* keyEvent = static_cast<WebCore::KeyboardEvent*>(m_event.get());
341
*result = keyEvent->altGraphKey() ? TRUE : FALSE;
345
HRESULT STDMETHODCALLTYPE DOMKeyboardEvent::getModifierState(
346
/* [in] */ BSTR /*keyIdentifierArg*/,
347
/* [retval][out] */ BOOL* /*result*/)
352
HRESULT STDMETHODCALLTYPE DOMKeyboardEvent::initKeyboardEvent(
353
/* [in] */ BSTR /*type*/,
354
/* [in] */ BOOL /*canBubble*/,
355
/* [in] */ BOOL /*cancelable*/,
356
/* [in] */ IDOMWindow* /*view*/,
357
/* [in] */ BSTR /*keyIdentifier*/,
358
/* [in] */ unsigned long /*keyLocation*/,
359
/* [in] */ BOOL /*ctrlKey*/,
360
/* [in] */ BOOL /*altKey*/,
361
/* [in] */ BOOL /*shiftKey*/,
362
/* [in] */ BOOL /*metaKey*/,
363
/* [in] */ BOOL /*graphKey*/)
368
// DOMMouseEvent --------------------------------------------------------------
370
HRESULT STDMETHODCALLTYPE DOMMouseEvent::QueryInterface(REFIID riid, void** ppvObject)
373
if (IsEqualGUID(riid, IID_IDOMMouseEvent))
374
*ppvObject = static_cast<IDOMMouseEvent*>(this);
376
return DOMUIEvent::QueryInterface(riid, ppvObject);
382
HRESULT STDMETHODCALLTYPE DOMMouseEvent::screenX(
383
/* [retval][out] */ long* /*result*/)
388
HRESULT STDMETHODCALLTYPE DOMMouseEvent::screenY(
389
/* [retval][out] */ long* /*result*/)
394
HRESULT STDMETHODCALLTYPE DOMMouseEvent::clientX(
395
/* [retval][out] */ long* /*result*/)
400
HRESULT STDMETHODCALLTYPE DOMMouseEvent::clientY(
401
/* [retval][out] */ long* /*result*/)
406
HRESULT STDMETHODCALLTYPE DOMMouseEvent::ctrlKey(
407
/* [retval][out] */ BOOL* result)
410
if (!m_event || !m_event->isMouseEvent())
412
WebCore::MouseEvent* mouseEvent = static_cast<WebCore::MouseEvent*>(m_event.get());
414
*result = mouseEvent->ctrlKey() ? TRUE : FALSE;
418
HRESULT STDMETHODCALLTYPE DOMMouseEvent::shiftKey(
419
/* [retval][out] */ BOOL* result)
422
if (!m_event || !m_event->isMouseEvent())
424
WebCore::MouseEvent* mouseEvent = static_cast<WebCore::MouseEvent*>(m_event.get());
426
*result = mouseEvent->shiftKey() ? TRUE : FALSE;
430
HRESULT STDMETHODCALLTYPE DOMMouseEvent::altKey(
431
/* [retval][out] */ BOOL* result)
434
if (!m_event || !m_event->isMouseEvent())
436
WebCore::MouseEvent* mouseEvent = static_cast<WebCore::MouseEvent*>(m_event.get());
438
*result = mouseEvent->altKey() ? TRUE : FALSE;
442
HRESULT STDMETHODCALLTYPE DOMMouseEvent::metaKey(
443
/* [retval][out] */ BOOL* result)
446
if (!m_event || !m_event->isMouseEvent())
448
WebCore::MouseEvent* mouseEvent = static_cast<WebCore::MouseEvent*>(m_event.get());
450
*result = mouseEvent->metaKey() ? TRUE : FALSE;
454
HRESULT STDMETHODCALLTYPE DOMMouseEvent::button(
455
/* [retval][out] */ unsigned short* /*result*/)
460
HRESULT STDMETHODCALLTYPE DOMMouseEvent::relatedTarget(
461
/* [retval][out] */ IDOMEventTarget** /*result*/)
466
HRESULT STDMETHODCALLTYPE DOMMouseEvent::initMouseEvent(
467
/* [in] */ BSTR /*type*/,
468
/* [in] */ BOOL /*canBubble*/,
469
/* [in] */ BOOL /*cancelable*/,
470
/* [in] */ IDOMWindow* /*view*/,
471
/* [in] */ long /*detail*/,
472
/* [in] */ long /*screenX*/,
473
/* [in] */ long /*screenY*/,
474
/* [in] */ long /*clientX*/,
475
/* [in] */ long /*clientY*/,
476
/* [in] */ BOOL /*ctrlKey*/,
477
/* [in] */ BOOL /*altKey*/,
478
/* [in] */ BOOL /*shiftKey*/,
479
/* [in] */ BOOL /*metaKey*/,
480
/* [in] */ unsigned short /*button*/,
481
/* [in] */ IDOMEventTarget* /*relatedTarget*/)
486
HRESULT STDMETHODCALLTYPE DOMMouseEvent::offsetX(
487
/* [retval][out] */ long* /*result*/)
492
HRESULT STDMETHODCALLTYPE DOMMouseEvent::offsetY(
493
/* [retval][out] */ long* /*result*/)
498
HRESULT STDMETHODCALLTYPE DOMMouseEvent::x(
499
/* [retval][out] */ long* /*result*/)
504
HRESULT STDMETHODCALLTYPE DOMMouseEvent::y(
505
/* [retval][out] */ long* /*result*/)
510
HRESULT STDMETHODCALLTYPE DOMMouseEvent::fromElement(
511
/* [retval][out] */ IDOMNode** /*result*/)
516
HRESULT STDMETHODCALLTYPE DOMMouseEvent::toElement(
517
/* [retval][out] */ IDOMNode** /*result*/)
522
// DOMMutationEvent -----------------------------------------------------------
524
HRESULT STDMETHODCALLTYPE DOMMutationEvent::QueryInterface(REFIID riid, void** ppvObject)
527
if (IsEqualGUID(riid, IID_IDOMMutationEvent))
528
*ppvObject = static_cast<IDOMMutationEvent*>(this);
530
return DOMEvent::QueryInterface(riid, ppvObject);
536
HRESULT STDMETHODCALLTYPE DOMMutationEvent::relatedNode(
537
/* [retval][out] */ IDOMNode** /*result*/)
542
HRESULT STDMETHODCALLTYPE DOMMutationEvent::prevValue(
543
/* [retval][out] */ BSTR* /*result*/)
548
HRESULT STDMETHODCALLTYPE DOMMutationEvent::newValue(
549
/* [retval][out] */ BSTR* /*result*/)
554
HRESULT STDMETHODCALLTYPE DOMMutationEvent::attrName(
555
/* [retval][out] */ BSTR* /*result*/)
560
HRESULT STDMETHODCALLTYPE DOMMutationEvent::attrChange(
561
/* [retval][out] */ unsigned short* /*result*/)
566
HRESULT STDMETHODCALLTYPE DOMMutationEvent::initMutationEvent(
567
/* [in] */ BSTR /*type*/,
568
/* [in] */ BOOL /*canBubble*/,
569
/* [in] */ BOOL /*cancelable*/,
570
/* [in] */ IDOMNode* /*relatedNode*/,
571
/* [in] */ BSTR /*prevValue*/,
572
/* [in] */ BSTR /*newValue*/,
573
/* [in] */ BSTR /*attrName*/,
574
/* [in] */ unsigned short /*attrChange*/)
579
// DOMOverflowEvent -----------------------------------------------------------
581
HRESULT STDMETHODCALLTYPE DOMOverflowEvent::QueryInterface(REFIID riid, void** ppvObject)
584
if (IsEqualGUID(riid, IID_IDOMOverflowEvent))
585
*ppvObject = static_cast<IDOMOverflowEvent*>(this);
587
return DOMEvent::QueryInterface(riid, ppvObject);
593
HRESULT STDMETHODCALLTYPE DOMOverflowEvent::orient(
594
/* [retval][out] */ unsigned short* /*result*/)
599
HRESULT STDMETHODCALLTYPE DOMOverflowEvent::horizontalOverflow(
600
/* [retval][out] */ BOOL* /*result*/)
605
HRESULT STDMETHODCALLTYPE DOMOverflowEvent::verticalOverflow(
606
/* [retval][out] */ BOOL* /*result*/)
611
// DOMWheelEvent --------------------------------------------------------------
613
HRESULT STDMETHODCALLTYPE DOMWheelEvent::QueryInterface(REFIID riid, void** ppvObject)
616
if (IsEqualGUID(riid, IID_IDOMWheelEvent))
617
*ppvObject = static_cast<IDOMWheelEvent*>(this);
619
return DOMUIEvent::QueryInterface(riid, ppvObject);
625
HRESULT STDMETHODCALLTYPE DOMWheelEvent::screenX(
626
/* [retval][out] */ long* /*result*/)
631
HRESULT STDMETHODCALLTYPE DOMWheelEvent::screenY(
632
/* [retval][out] */ long* /*result*/)
637
HRESULT STDMETHODCALLTYPE DOMWheelEvent::clientX(
638
/* [retval][out] */ long* /*result*/)
643
HRESULT STDMETHODCALLTYPE DOMWheelEvent::clientY(
644
/* [retval][out] */ long* /*result*/)
649
HRESULT STDMETHODCALLTYPE DOMWheelEvent::ctrlKey(
650
/* [retval][out] */ BOOL* /*result*/)
655
HRESULT STDMETHODCALLTYPE DOMWheelEvent::shiftKey(
656
/* [retval][out] */ BOOL* /*result*/)
661
HRESULT STDMETHODCALLTYPE DOMWheelEvent::altKey(
662
/* [retval][out] */ BOOL* /*result*/)
667
HRESULT STDMETHODCALLTYPE DOMWheelEvent::metaKey(
668
/* [retval][out] */ BOOL* /*result*/)
673
HRESULT STDMETHODCALLTYPE DOMWheelEvent::wheelDelta(
674
/* [retval][out] */ long* /*result*/)
679
HRESULT STDMETHODCALLTYPE DOMWheelEvent::wheelDeltaX(
680
/* [retval][out] */ long* /*result*/)
685
HRESULT STDMETHODCALLTYPE DOMWheelEvent::wheelDeltaY(
686
/* [retval][out] */ long* /*result*/)
691
HRESULT STDMETHODCALLTYPE DOMWheelEvent::offsetX(
692
/* [retval][out] */ long* /*result*/)
697
HRESULT STDMETHODCALLTYPE DOMWheelEvent::offsetY(
698
/* [retval][out] */ long* /*result*/)
703
HRESULT STDMETHODCALLTYPE DOMWheelEvent::x(
704
/* [retval][out] */ long* /*result*/)
709
HRESULT STDMETHODCALLTYPE DOMWheelEvent::y(
710
/* [retval][out] */ long* /*result*/)
715
HRESULT STDMETHODCALLTYPE DOMWheelEvent::isHorizontal(
716
/* [retval][out] */ BOOL* /*result*/)
721
HRESULT STDMETHODCALLTYPE DOMWheelEvent::initWheelEvent(
722
/* [in] */ long /*wheelDeltaX*/,
723
/* [in] */ long /*wheelDeltaY*/,
724
/* [in] */ IDOMWindow* /*view*/,
725
/* [in] */ long /*screenX*/,
726
/* [in] */ long /*screenY*/,
727
/* [in] */ long /*clientX*/,
728
/* [in] */ long /*clientY*/,
729
/* [in] */ BOOL /*ctrlKey*/,
730
/* [in] */ BOOL /*altKey*/,
731
/* [in] */ BOOL /*shiftKey*/,
732
/* [in] */ BOOL /*metaKey*/)