mshtml: Added IDOMKeyboardEvent stub implementation.
Signed-off-by: Jacek Caban <jacek@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
20159346c7
commit
fff36a7896
|
@ -855,6 +855,8 @@ static HRESULT WINAPI DOMEvent_QueryInterface(IDOMEvent *iface, REFIID riid, voi
|
|||
*ppv = &This->IDOMUIEvent_iface;
|
||||
else if(This->mouse_event && IsEqualGUID(&IID_IDOMMouseEvent, riid))
|
||||
*ppv = &This->IDOMMouseEvent_iface;
|
||||
else if(This->keyboard_event && IsEqualGUID(&IID_IDOMKeyboardEvent, riid))
|
||||
*ppv = &This->IDOMKeyboardEvent_iface;
|
||||
else if(dispex_query_interface(&This->dispex, riid, ppv))
|
||||
return *ppv ? S_OK : E_NOINTERFACE;
|
||||
else {
|
||||
|
@ -1636,6 +1638,186 @@ static const IDOMMouseEventVtbl DOMMouseEventVtbl = {
|
|||
DOMMouseEvent_get_which
|
||||
};
|
||||
|
||||
static inline DOMEvent *impl_from_IDOMKeyboardEvent(IDOMKeyboardEvent *iface)
|
||||
{
|
||||
return CONTAINING_RECORD(iface, DOMEvent, IDOMKeyboardEvent_iface);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI DOMKeyboardEvent_QueryInterface(IDOMKeyboardEvent *iface, REFIID riid, void **ppv)
|
||||
{
|
||||
DOMEvent *This = impl_from_IDOMKeyboardEvent(iface);
|
||||
return IDOMEvent_QueryInterface(&This->IDOMEvent_iface, riid, ppv);
|
||||
}
|
||||
|
||||
static ULONG WINAPI DOMKeyboardEvent_AddRef(IDOMKeyboardEvent *iface)
|
||||
{
|
||||
DOMEvent *This = impl_from_IDOMKeyboardEvent(iface);
|
||||
return IDOMEvent_AddRef(&This->IDOMEvent_iface);
|
||||
}
|
||||
|
||||
static ULONG WINAPI DOMKeyboardEvent_Release(IDOMKeyboardEvent *iface)
|
||||
{
|
||||
DOMEvent *This = impl_from_IDOMKeyboardEvent(iface);
|
||||
return IDOMEvent_Release(&This->IDOMEvent_iface);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI DOMKeyboardEvent_GetTypeInfoCount(IDOMKeyboardEvent *iface, UINT *pctinfo)
|
||||
{
|
||||
DOMEvent *This = impl_from_IDOMKeyboardEvent(iface);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->dispex.IDispatchEx_iface, pctinfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI DOMKeyboardEvent_GetTypeInfo(IDOMKeyboardEvent *iface, UINT iTInfo,
|
||||
LCID lcid, ITypeInfo **ppTInfo)
|
||||
{
|
||||
DOMEvent *This = impl_from_IDOMKeyboardEvent(iface);
|
||||
return IDispatchEx_GetTypeInfo(&This->dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI DOMKeyboardEvent_GetIDsOfNames(IDOMKeyboardEvent *iface, REFIID riid,
|
||||
LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
|
||||
{
|
||||
DOMEvent *This = impl_from_IDOMKeyboardEvent(iface);
|
||||
return IDispatchEx_GetIDsOfNames(&This->dispex.IDispatchEx_iface, riid, rgszNames, cNames,
|
||||
lcid, rgDispId);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI DOMKeyboardEvent_Invoke(IDOMKeyboardEvent *iface, DISPID dispIdMember,
|
||||
REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult,
|
||||
EXCEPINFO *pExcepInfo, UINT *puArgErr)
|
||||
{
|
||||
DOMEvent *This = impl_from_IDOMKeyboardEvent(iface);
|
||||
return IDispatchEx_Invoke(&This->dispex.IDispatchEx_iface, dispIdMember, riid, lcid,
|
||||
wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI DOMKeyboardEvent_get_key(IDOMKeyboardEvent *iface, BSTR *p)
|
||||
{
|
||||
DOMEvent *This = impl_from_IDOMKeyboardEvent(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI DOMKeyboardEvent_get_location(IDOMKeyboardEvent *iface, ULONG *p)
|
||||
{
|
||||
DOMEvent *This = impl_from_IDOMKeyboardEvent(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI DOMKeyboardEvent_get_ctrlKey(IDOMKeyboardEvent *iface, VARIANT_BOOL *p)
|
||||
{
|
||||
DOMEvent *This = impl_from_IDOMKeyboardEvent(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI DOMKeyboardEvent_get_shiftKey(IDOMKeyboardEvent *iface, VARIANT_BOOL *p)
|
||||
{
|
||||
DOMEvent *This = impl_from_IDOMKeyboardEvent(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI DOMKeyboardEvent_get_altKey(IDOMKeyboardEvent *iface, VARIANT_BOOL *p)
|
||||
{
|
||||
DOMEvent *This = impl_from_IDOMKeyboardEvent(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI DOMKeyboardEvent_get_metaKey(IDOMKeyboardEvent *iface, VARIANT_BOOL *p)
|
||||
{
|
||||
DOMEvent *This = impl_from_IDOMKeyboardEvent(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI DOMKeyboardEvent_get_repeat(IDOMKeyboardEvent *iface, VARIANT_BOOL *p)
|
||||
{
|
||||
DOMEvent *This = impl_from_IDOMKeyboardEvent(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI DOMKeyboardEvent_getModifierState(IDOMKeyboardEvent *iface, BSTR key,
|
||||
VARIANT_BOOL *state)
|
||||
{
|
||||
DOMEvent *This = impl_from_IDOMKeyboardEvent(iface);
|
||||
FIXME("(%p)->(%s %p)\n", This, debugstr_w(key), state);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI DOMKeyboardEvent_initKeyboardEvent(IDOMKeyboardEvent *iface, BSTR type,
|
||||
VARIANT_BOOL can_bubble, VARIANT_BOOL cancelable, IHTMLWindow2 *view, BSTR key,
|
||||
ULONG location, BSTR modifiers_list, VARIANT_BOOL repeat, BSTR locale)
|
||||
{
|
||||
DOMEvent *This = impl_from_IDOMKeyboardEvent(iface);
|
||||
FIXME("(%p)->(%s %x %x %p %s %u %s %x %s)\n", This, debugstr_w(type), can_bubble,
|
||||
cancelable, view, debugstr_w(key), location, debugstr_w(modifiers_list),
|
||||
repeat, debugstr_w(locale));
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI DOMKeyboardEvent_get_keyCode(IDOMKeyboardEvent *iface, LONG *p)
|
||||
{
|
||||
DOMEvent *This = impl_from_IDOMKeyboardEvent(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI DOMKeyboardEvent_get_charCode(IDOMKeyboardEvent *iface, LONG *p)
|
||||
{
|
||||
DOMEvent *This = impl_from_IDOMKeyboardEvent(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI DOMKeyboardEvent_get_which(IDOMKeyboardEvent *iface, LONG *p)
|
||||
{
|
||||
DOMEvent *This = impl_from_IDOMKeyboardEvent(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI DOMKeyboardEvent_get_char(IDOMKeyboardEvent *iface, VARIANT *p)
|
||||
{
|
||||
DOMEvent *This = impl_from_IDOMKeyboardEvent(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI DOMKeyboardEvent_get_locale(IDOMKeyboardEvent *iface, BSTR *p)
|
||||
{
|
||||
DOMEvent *This = impl_from_IDOMKeyboardEvent(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static const IDOMKeyboardEventVtbl DOMKeyboardEventVtbl = {
|
||||
DOMKeyboardEvent_QueryInterface,
|
||||
DOMKeyboardEvent_AddRef,
|
||||
DOMKeyboardEvent_Release,
|
||||
DOMKeyboardEvent_GetTypeInfoCount,
|
||||
DOMKeyboardEvent_GetTypeInfo,
|
||||
DOMKeyboardEvent_GetIDsOfNames,
|
||||
DOMKeyboardEvent_Invoke,
|
||||
DOMKeyboardEvent_get_key,
|
||||
DOMKeyboardEvent_get_location,
|
||||
DOMKeyboardEvent_get_ctrlKey,
|
||||
DOMKeyboardEvent_get_shiftKey,
|
||||
DOMKeyboardEvent_get_altKey,
|
||||
DOMKeyboardEvent_get_metaKey,
|
||||
DOMKeyboardEvent_get_repeat,
|
||||
DOMKeyboardEvent_getModifierState,
|
||||
DOMKeyboardEvent_initKeyboardEvent,
|
||||
DOMKeyboardEvent_get_keyCode,
|
||||
DOMKeyboardEvent_get_charCode,
|
||||
DOMKeyboardEvent_get_which,
|
||||
DOMKeyboardEvent_get_char,
|
||||
DOMKeyboardEvent_get_locale
|
||||
};
|
||||
|
||||
static const tid_t DOMEvent_iface_tids[] = {
|
||||
IDOMEvent_tid,
|
||||
0
|
||||
|
@ -1689,6 +1871,7 @@ static DOMEvent *alloc_event(nsIDOMEvent *nsevent, eventid_t event_id)
|
|||
event->IDOMEvent_iface.lpVtbl = &DOMEventVtbl;
|
||||
event->IDOMUIEvent_iface.lpVtbl = &DOMUIEventVtbl;
|
||||
event->IDOMMouseEvent_iface.lpVtbl = &DOMMouseEventVtbl;
|
||||
event->IDOMKeyboardEvent_iface.lpVtbl = &DOMKeyboardEventVtbl;
|
||||
event->ref = 1;
|
||||
event->event_id = event_id;
|
||||
if(event_id != EVENTID_LAST) {
|
||||
|
@ -1718,6 +1901,10 @@ static DOMEvent *alloc_event(nsIDOMEvent *nsevent, eventid_t event_id)
|
|||
else
|
||||
event->mouse_event = NULL;
|
||||
|
||||
nsres = nsIDOMEvent_QueryInterface(nsevent, &IID_nsIDOMKeyEvent, (void**)&event->keyboard_event);
|
||||
if(NS_FAILED(nsres))
|
||||
event->keyboard_event = NULL;
|
||||
|
||||
init_dispex(&event->dispex, (IUnknown*)&event->IDOMEvent_iface, dispex_data);
|
||||
return event;
|
||||
}
|
||||
|
|
|
@ -61,12 +61,14 @@ typedef struct {
|
|||
IDOMEvent IDOMEvent_iface;
|
||||
IDOMUIEvent IDOMUIEvent_iface;
|
||||
IDOMMouseEvent IDOMMouseEvent_iface;
|
||||
IDOMKeyboardEvent IDOMKeyboardEvent_iface;
|
||||
|
||||
LONG ref;
|
||||
|
||||
nsIDOMEvent *nsevent;
|
||||
nsIDOMUIEvent *ui_event;
|
||||
nsIDOMMouseEvent *mouse_event;
|
||||
nsIDOMKeyEvent *keyboard_event;
|
||||
|
||||
eventid_t event_id;
|
||||
WCHAR *type;
|
||||
|
|
|
@ -2666,6 +2666,7 @@ static void test_iframe_connections(IHTMLDocument2 *doc)
|
|||
|
||||
static void test_create_event(IHTMLDocument2 *doc)
|
||||
{
|
||||
IDOMKeyboardEvent *keyboard_event;
|
||||
IDOMMouseEvent *mouse_event;
|
||||
IDocumentEvent *doc_event;
|
||||
IEventTarget *event_target;
|
||||
|
@ -2756,6 +2757,20 @@ static void test_create_event(IHTMLDocument2 *doc)
|
|||
|
||||
IDOMEvent_Release(event);
|
||||
|
||||
str = a2bstr("KeyboardEvent");
|
||||
hres = IDocumentEvent_createEvent(doc_event, str, &event);
|
||||
SysFreeString(str);
|
||||
ok(hres == S_OK, "createEvent failed: %08x\n", hres);
|
||||
|
||||
hres = IDOMEvent_QueryInterface(event, &IID_IDOMUIEvent, (void**)&ui_event);
|
||||
ok(hres == S_OK, "QueryInterface(IID_IDOMUIEvent returned %08x\n", hres);
|
||||
IDOMUIEvent_Release(ui_event);
|
||||
hres = IDOMEvent_QueryInterface(event, &IID_IDOMKeyboardEvent, (void**)&keyboard_event);
|
||||
ok(hres == S_OK, "QueryInterface(IID_IDOMKeyboardEvent returned %08x\n", hres);
|
||||
IDOMKeyboardEvent_Release(keyboard_event);
|
||||
|
||||
IDOMEvent_Release(event);
|
||||
|
||||
IDocumentEvent_Release(doc_event);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue