DOMEventsClasses.cpp [plain text]
#include "config.h"
#include "WebKitDLL.h"
#include <initguid.h>
#include "DOMEventsClasses.h"
#include <WebCore/COMPtr.h>
#include <WebCore/DOMWindow.h>
#include <WebCore/Event.h>
#include <WebCore/EventNames.h>
#include <WebCore/KeyboardEvent.h>
#include <WebCore/MouseEvent.h>
#include <WebCore/ScriptExecutionContext.h>
HRESULT STDMETHODCALLTYPE DOMEventListener::QueryInterface(const IID &riid, void** ppvObject)
{
*ppvObject = 0;
if (IsEqualGUID(riid, IID_IDOMEventListener))
*ppvObject = static_cast<IDOMEventListener*>(this);
else
return DOMObject::QueryInterface(riid, ppvObject);
AddRef();
return S_OK;
}
HRESULT STDMETHODCALLTYPE DOMEventListener::handleEvent(
IDOMEvent* )
{
return E_NOTIMPL;
}
WebEventListener::WebEventListener(IDOMEventListener* i)
: EventListener(CPPEventListenerType)
, m_iDOMEventListener(i)
{
m_iDOMEventListener->AddRef();
}
WebEventListener::~WebEventListener()
{
m_iDOMEventListener->Release();
}
bool WebEventListener::operator==(const WebCore::EventListener& other)
{
return (other.type() == CPPEventListenerType
&& reinterpret_cast<const WebEventListener*>(&other)->m_iDOMEventListener == m_iDOMEventListener);
}
void WebEventListener::handleEvent(WebCore::ScriptExecutionContext* s, WebCore::Event* e)
{
RefPtr<WebCore::Event> ePtr(e);
COMPtr<IDOMEvent> domEvent = DOMEvent::createInstance(ePtr);
m_iDOMEventListener->handleEvent(domEvent.get());
}
PassRefPtr<WebEventListener> WebEventListener::create(IDOMEventListener* d)
{
return adoptRef(new WebEventListener(d));
}
DOMEvent::DOMEvent(PassRefPtr<WebCore::Event> e)
: m_event(0)
{
m_event = e;
}
DOMEvent::~DOMEvent()
{
}
IDOMEvent* DOMEvent::createInstance(PassRefPtr<WebCore::Event> e)
{
if (!e)
return 0;
HRESULT hr;
IDOMEvent* domEvent = 0;
if (e->isKeyboardEvent()) {
DOMKeyboardEvent* newEvent = new DOMKeyboardEvent(e);
hr = newEvent->QueryInterface(IID_IDOMKeyboardEvent, (void**)&domEvent);
} else if (e->isMouseEvent()) {
DOMMouseEvent* newEvent = new DOMMouseEvent(e);
hr = newEvent->QueryInterface(IID_IDOMMouseEvent, (void**)&domEvent);
} else if (e->hasInterface(WebCore::eventNames().interfaceForMutationEvent)) {
DOMMutationEvent* newEvent = new DOMMutationEvent(e);
hr = newEvent->QueryInterface(IID_IDOMMutationEvent, (void**)&domEvent);
} else if (e->hasInterface(WebCore::eventNames().interfaceForOverflowEvent)) {
DOMOverflowEvent* newEvent = new DOMOverflowEvent(e);
hr = newEvent->QueryInterface(IID_IDOMOverflowEvent, (void**)&domEvent);
} else if (e->hasInterface(WebCore::eventNames().interfaceForWheelEvent)) {
DOMWheelEvent* newEvent = new DOMWheelEvent(e);
hr = newEvent->QueryInterface(IID_IDOMWheelEvent, (void**)&domEvent);
} else if (e->isUIEvent()) {
DOMUIEvent* newEvent = new DOMUIEvent(e);
hr = newEvent->QueryInterface(IID_IDOMUIEvent, (void**)&domEvent);
} else {
DOMEvent* newEvent = new DOMEvent(e);
hr = newEvent->QueryInterface(IID_IDOMEvent, (void**)&domEvent);
}
if (FAILED(hr))
return 0;
return domEvent;
}
HRESULT STDMETHODCALLTYPE DOMEvent::QueryInterface(const IID &riid, void** ppvObject)
{
*ppvObject = 0;
if (IsEqualGUID(riid, IID_DOMEvent))
*ppvObject = this;
else if (IsEqualGUID(riid, IID_IDOMEvent))
*ppvObject = static_cast<IDOMEvent*>(this);
else
return DOMObject::QueryInterface(riid, ppvObject);
AddRef();
return S_OK;
}
HRESULT STDMETHODCALLTYPE DOMEvent::type(
BSTR* )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMEvent::target(
IDOMEventTarget** )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMEvent::currentTarget(
IDOMEventTarget** )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMEvent::eventPhase(
unsigned short* )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMEvent::bubbles(
BOOL* )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMEvent::cancelable(
BOOL* )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMEvent::timeStamp(
DOMTimeStamp* )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMEvent::stopPropagation( void)
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMEvent::preventDefault( void)
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMEvent::initEvent(
BSTR ,
BOOL ,
BOOL )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMUIEvent::QueryInterface(REFIID riid, void** ppvObject)
{
*ppvObject = 0;
if (IsEqualGUID(riid, IID_IDOMUIEvent))
*ppvObject = static_cast<IDOMUIEvent*>(this);
else
return DOMEvent::QueryInterface(riid, ppvObject);
AddRef();
return S_OK;
}
HRESULT STDMETHODCALLTYPE DOMUIEvent::view(
IDOMWindow** )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMUIEvent::detail(
long* )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMUIEvent::initUIEvent(
BSTR ,
BOOL ,
BOOL ,
IDOMWindow* ,
long )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMUIEvent::keyCode(
long* )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMUIEvent::charCode(
long* )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMUIEvent::unused1(
long* )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMUIEvent::unused2(
long* )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMUIEvent::pageX(
long* )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMUIEvent::pageY(
long* )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMUIEvent::which(
long* )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMKeyboardEvent::QueryInterface(REFIID riid, void** ppvObject)
{
*ppvObject = 0;
if (IsEqualGUID(riid, IID_IDOMKeyboardEvent))
*ppvObject = static_cast<IDOMKeyboardEvent*>(this);
else
return DOMUIEvent::QueryInterface(riid, ppvObject);
AddRef();
return S_OK;
}
HRESULT STDMETHODCALLTYPE DOMKeyboardEvent::keyIdentifier(
BSTR* )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMKeyboardEvent::keyLocation(
unsigned long* )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMKeyboardEvent::ctrlKey(
BOOL* result)
{
*result = FALSE;
if (!m_event || !m_event->isKeyboardEvent())
return E_FAIL;
WebCore::KeyboardEvent* keyEvent = static_cast<WebCore::KeyboardEvent*>(m_event.get());
*result = keyEvent->ctrlKey() ? TRUE : FALSE;
return S_OK;
}
HRESULT STDMETHODCALLTYPE DOMKeyboardEvent::shiftKey(
BOOL* result)
{
*result = FALSE;
if (!m_event || !m_event->isKeyboardEvent())
return E_FAIL;
WebCore::KeyboardEvent* keyEvent = static_cast<WebCore::KeyboardEvent*>(m_event.get());
*result = keyEvent->shiftKey() ? TRUE : FALSE;
return S_OK;
}
HRESULT STDMETHODCALLTYPE DOMKeyboardEvent::altKey(
BOOL* result)
{
*result = FALSE;
if (!m_event || !m_event->isKeyboardEvent())
return E_FAIL;
WebCore::KeyboardEvent* keyEvent = static_cast<WebCore::KeyboardEvent*>(m_event.get());
*result = keyEvent->altKey() ? TRUE : FALSE;
return S_OK;
}
HRESULT STDMETHODCALLTYPE DOMKeyboardEvent::metaKey(
BOOL* result)
{
*result = FALSE;
if (!m_event || !m_event->isKeyboardEvent())
return E_FAIL;
WebCore::KeyboardEvent* keyEvent = static_cast<WebCore::KeyboardEvent*>(m_event.get());
*result = keyEvent->metaKey() ? TRUE : FALSE;
return S_OK;
}
HRESULT STDMETHODCALLTYPE DOMKeyboardEvent::altGraphKey(
BOOL* result)
{
*result = FALSE;
if (!m_event || !m_event->isKeyboardEvent())
return E_FAIL;
WebCore::KeyboardEvent* keyEvent = static_cast<WebCore::KeyboardEvent*>(m_event.get());
*result = keyEvent->altGraphKey() ? TRUE : FALSE;
return S_OK;
}
HRESULT STDMETHODCALLTYPE DOMKeyboardEvent::getModifierState(
BSTR ,
BOOL* )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMKeyboardEvent::initKeyboardEvent(
BSTR ,
BOOL ,
BOOL ,
IDOMWindow* ,
BSTR ,
unsigned long ,
BOOL ,
BOOL ,
BOOL ,
BOOL ,
BOOL )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMMouseEvent::QueryInterface(REFIID riid, void** ppvObject)
{
*ppvObject = 0;
if (IsEqualGUID(riid, IID_IDOMMouseEvent))
*ppvObject = static_cast<IDOMMouseEvent*>(this);
else
return DOMUIEvent::QueryInterface(riid, ppvObject);
AddRef();
return S_OK;
}
HRESULT STDMETHODCALLTYPE DOMMouseEvent::screenX(
long* )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMMouseEvent::screenY(
long* )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMMouseEvent::clientX(
long* )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMMouseEvent::clientY(
long* )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMMouseEvent::ctrlKey(
BOOL* result)
{
*result = FALSE;
if (!m_event || !m_event->isMouseEvent())
return E_FAIL;
WebCore::MouseEvent* mouseEvent = static_cast<WebCore::MouseEvent*>(m_event.get());
*result = mouseEvent->ctrlKey() ? TRUE : FALSE;
return S_OK;
}
HRESULT STDMETHODCALLTYPE DOMMouseEvent::shiftKey(
BOOL* result)
{
*result = FALSE;
if (!m_event || !m_event->isMouseEvent())
return E_FAIL;
WebCore::MouseEvent* mouseEvent = static_cast<WebCore::MouseEvent*>(m_event.get());
*result = mouseEvent->shiftKey() ? TRUE : FALSE;
return S_OK;
}
HRESULT STDMETHODCALLTYPE DOMMouseEvent::altKey(
BOOL* result)
{
*result = FALSE;
if (!m_event || !m_event->isMouseEvent())
return E_FAIL;
WebCore::MouseEvent* mouseEvent = static_cast<WebCore::MouseEvent*>(m_event.get());
*result = mouseEvent->altKey() ? TRUE : FALSE;
return S_OK;
}
HRESULT STDMETHODCALLTYPE DOMMouseEvent::metaKey(
BOOL* result)
{
*result = FALSE;
if (!m_event || !m_event->isMouseEvent())
return E_FAIL;
WebCore::MouseEvent* mouseEvent = static_cast<WebCore::MouseEvent*>(m_event.get());
*result = mouseEvent->metaKey() ? TRUE : FALSE;
return S_OK;
}
HRESULT STDMETHODCALLTYPE DOMMouseEvent::button(
unsigned short* )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMMouseEvent::relatedTarget(
IDOMEventTarget** )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMMouseEvent::initMouseEvent(
BSTR ,
BOOL ,
BOOL ,
IDOMWindow* ,
long ,
long ,
long ,
long ,
long ,
BOOL ,
BOOL ,
BOOL ,
BOOL ,
unsigned short ,
IDOMEventTarget* )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMMouseEvent::offsetX(
long* )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMMouseEvent::offsetY(
long* )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMMouseEvent::x(
long* )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMMouseEvent::y(
long* )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMMouseEvent::fromElement(
IDOMNode** )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMMouseEvent::toElement(
IDOMNode** )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMMutationEvent::QueryInterface(REFIID riid, void** ppvObject)
{
*ppvObject = 0;
if (IsEqualGUID(riid, IID_IDOMMutationEvent))
*ppvObject = static_cast<IDOMMutationEvent*>(this);
else
return DOMEvent::QueryInterface(riid, ppvObject);
AddRef();
return S_OK;
}
HRESULT STDMETHODCALLTYPE DOMMutationEvent::relatedNode(
IDOMNode** )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMMutationEvent::prevValue(
BSTR* )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMMutationEvent::newValue(
BSTR* )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMMutationEvent::attrName(
BSTR* )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMMutationEvent::attrChange(
unsigned short* )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMMutationEvent::initMutationEvent(
BSTR ,
BOOL ,
BOOL ,
IDOMNode* ,
BSTR ,
BSTR ,
BSTR ,
unsigned short )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMOverflowEvent::QueryInterface(REFIID riid, void** ppvObject)
{
*ppvObject = 0;
if (IsEqualGUID(riid, IID_IDOMOverflowEvent))
*ppvObject = static_cast<IDOMOverflowEvent*>(this);
else
return DOMEvent::QueryInterface(riid, ppvObject);
AddRef();
return S_OK;
}
HRESULT STDMETHODCALLTYPE DOMOverflowEvent::orient(
unsigned short* )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMOverflowEvent::horizontalOverflow(
BOOL* )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMOverflowEvent::verticalOverflow(
BOOL* )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMWheelEvent::QueryInterface(REFIID riid, void** ppvObject)
{
*ppvObject = 0;
if (IsEqualGUID(riid, IID_IDOMWheelEvent))
*ppvObject = static_cast<IDOMWheelEvent*>(this);
else
return DOMUIEvent::QueryInterface(riid, ppvObject);
AddRef();
return S_OK;
}
HRESULT STDMETHODCALLTYPE DOMWheelEvent::screenX(
long* )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMWheelEvent::screenY(
long* )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMWheelEvent::clientX(
long* )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMWheelEvent::clientY(
long* )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMWheelEvent::ctrlKey(
BOOL* )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMWheelEvent::shiftKey(
BOOL* )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMWheelEvent::altKey(
BOOL* )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMWheelEvent::metaKey(
BOOL* )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMWheelEvent::wheelDelta(
long* )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMWheelEvent::wheelDeltaX(
long* )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMWheelEvent::wheelDeltaY(
long* )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMWheelEvent::offsetX(
long* )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMWheelEvent::offsetY(
long* )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMWheelEvent::x(
long* )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMWheelEvent::y(
long* )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMWheelEvent::isHorizontal(
BOOL* )
{
return E_NOTIMPL;
}
HRESULT STDMETHODCALLTYPE DOMWheelEvent::initWheelEvent(
long ,
long ,
IDOMWindow* ,
long ,
long ,
long ,
long ,
BOOL ,
BOOL ,
BOOL ,
BOOL )
{
return E_NOTIMPL;
}