From: Gabriel Ivăncescu gabrielopcode@gmail.com
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/mshtml/htmlattr.c | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-)
diff --git a/dlls/mshtml/htmlattr.c b/dlls/mshtml/htmlattr.c index 2631b935f0a..5e38215057c 100644 --- a/dlls/mshtml/htmlattr.c +++ b/dlls/mshtml/htmlattr.c @@ -38,28 +38,16 @@ static inline HTMLDOMAttribute *impl_from_IHTMLDOMAttribute(IHTMLDOMAttribute *i }
static HRESULT WINAPI HTMLDOMAttribute_QueryInterface(IHTMLDOMAttribute *iface, - REFIID riid, void **ppv) + REFIID riid, void **ppv) { HTMLDOMAttribute *This = impl_from_IHTMLDOMAttribute(iface);
- TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - - if(IsEqualGUID(&IID_IUnknown, riid)) { - *ppv = &This->IHTMLDOMAttribute_iface; - }else if(IsEqualGUID(&IID_IHTMLDOMAttribute, riid)) { - *ppv = &This->IHTMLDOMAttribute_iface; - }else if(IsEqualGUID(&IID_IHTMLDOMAttribute2, riid)) { - *ppv = &This->IHTMLDOMAttribute2_iface; - }else if(dispex_query_interface(&This->dispex, riid, ppv)) { + if(dispex_query_interface(&This->dispex, riid, ppv)) return *ppv ? S_OK : E_NOINTERFACE; - }else { - WARN("%s not supported\n", debugstr_mshtml_guid(riid)); - *ppv = NULL; - return E_NOINTERFACE; - }
- IUnknown_AddRef((IUnknown*)*ppv); - return S_OK; + *ppv = NULL; + WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); + return E_NOINTERFACE; }
static ULONG WINAPI HTMLDOMAttribute_AddRef(IHTMLDOMAttribute *iface) @@ -477,6 +465,18 @@ static inline HTMLDOMAttribute *impl_from_DispatchEx(DispatchEx *iface) return CONTAINING_RECORD(iface, HTMLDOMAttribute, dispex); }
+static void *HTMLDOMAttribute_query_interface(DispatchEx *dispex, REFIID riid) +{ + HTMLDOMAttribute *This = impl_from_DispatchEx(dispex); + + if(IsEqualGUID(&IID_IHTMLDOMAttribute, riid)) + return &This->IHTMLDOMAttribute_iface; + if(IsEqualGUID(&IID_IHTMLDOMAttribute2, riid)) + return &This->IHTMLDOMAttribute2_iface; + + return NULL; +} + static void HTMLDOMAttribute_traverse(DispatchEx *dispex, nsCycleCollectionTraversalCallback *cb) { HTMLDOMAttribute *This = impl_from_DispatchEx(dispex); @@ -499,6 +499,7 @@ static void HTMLDOMAttribute_destructor(DispatchEx *dispex) }
static const dispex_static_data_vtbl_t HTMLDOMAttribute_dispex_vtbl = { + .query_interface = HTMLDOMAttribute_query_interface, .destructor = HTMLDOMAttribute_destructor, .traverse = HTMLDOMAttribute_traverse, .unlink = HTMLDOMAttribute_unlink
From: Gabriel Ivăncescu gabrielopcode@gmail.com
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/mshtml/htmlevent.c | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-)
diff --git a/dlls/mshtml/htmlevent.c b/dlls/mshtml/htmlevent.c index f8a418a8027..1d79b404eff 100644 --- a/dlls/mshtml/htmlevent.c +++ b/dlls/mshtml/htmlevent.c @@ -363,22 +363,12 @@ static HRESULT WINAPI HTMLEventObj_QueryInterface(IHTMLEventObj *iface, REFIID r { HTMLEventObj *This = impl_from_IHTMLEventObj(iface);
- TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - - if(IsEqualGUID(&IID_IUnknown, riid)) { - *ppv = &This->IHTMLEventObj_iface; - }else if(IsEqualGUID(&IID_IHTMLEventObj, riid)) { - *ppv = &This->IHTMLEventObj_iface; - }else if(dispex_query_interface(&This->dispex, riid, ppv)) { + if(dispex_query_interface(&This->dispex, riid, ppv)) return *ppv ? S_OK : E_NOINTERFACE; - }else { - *ppv = NULL; - WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - return E_NOINTERFACE; - }
- IUnknown_AddRef((IUnknown*)*ppv); - return S_OK; + *ppv = NULL; + WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); + return E_NOINTERFACE; }
static ULONG WINAPI HTMLEventObj_AddRef(IHTMLEventObj *iface) @@ -883,6 +873,16 @@ static inline HTMLEventObj *HTMLEventObj_from_DispatchEx(DispatchEx *iface) return CONTAINING_RECORD(iface, HTMLEventObj, dispex); }
+static void *HTMLEventObj_query_interface(DispatchEx *dispex, REFIID riid) +{ + HTMLEventObj *This = HTMLEventObj_from_DispatchEx(dispex); + + if(IsEqualGUID(&IID_IHTMLEventObj, riid)) + return &This->IHTMLEventObj_iface; + + return NULL; +} + static void HTMLEventObj_traverse(DispatchEx *dispex, nsCycleCollectionTraversalCallback *cb) { HTMLEventObj *This = HTMLEventObj_from_DispatchEx(dispex); @@ -907,6 +907,7 @@ static void HTMLEventObj_destructor(DispatchEx *dispex) }
static const dispex_static_data_vtbl_t HTMLEventObj_dispex_vtbl = { + .query_interface = HTMLEventObj_query_interface, .destructor = HTMLEventObj_destructor, .traverse = HTMLEventObj_traverse, .unlink = HTMLEventObj_unlink
From: Gabriel Ivăncescu gabrielopcode@gmail.com
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/mshtml/htmlevent.c | 38 ++++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 14 deletions(-)
diff --git a/dlls/mshtml/htmlevent.c b/dlls/mshtml/htmlevent.c index 1d79b404eff..024dfa2a2dd 100644 --- a/dlls/mshtml/htmlevent.c +++ b/dlls/mshtml/htmlevent.c @@ -970,22 +970,12 @@ static HRESULT WINAPI DOMEvent_QueryInterface(IDOMEvent *iface, REFIID riid, voi { DOMEvent *This = impl_from_IDOMEvent(iface);
- TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - - if(IsEqualGUID(&IID_IUnknown, riid)) - *ppv = &This->IDOMEvent_iface; - else if(IsEqualGUID(&IID_IDOMEvent, riid)) - *ppv = &This->IDOMEvent_iface; - else if(dispex_query_interface(&This->dispex, riid, ppv)) + if(dispex_query_interface(&This->dispex, riid, ppv)) return *ppv ? S_OK : E_NOINTERFACE; - else if(!This->query_interface || !(*ppv = This->query_interface(This, riid))) { - *ppv = NULL; - WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - return E_NOINTERFACE; - }
- IUnknown_AddRef((IUnknown*)*ppv); - return S_OK; + *ppv = NULL; + WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); + return E_NOINTERFACE; }
static ULONG WINAPI DOMEvent_AddRef(IDOMEvent *iface) @@ -1268,6 +1258,18 @@ static inline DOMEvent *DOMEvent_from_DispatchEx(DispatchEx *iface) return CONTAINING_RECORD(iface, DOMEvent, dispex); }
+static void *DOMEvent_query_interface(DispatchEx *dispex, REFIID riid) +{ + DOMEvent *This = DOMEvent_from_DispatchEx(dispex); + + if(IsEqualGUID(&IID_IDOMEvent, riid)) + return &This->IDOMEvent_iface; + if(This->query_interface) + return This->query_interface(This, riid); + + return NULL; +} + static void DOMEvent_traverse(DispatchEx *dispex, nsCycleCollectionTraversalCallback *cb) { DOMEvent *This = DOMEvent_from_DispatchEx(dispex); @@ -3035,6 +3037,7 @@ static void DOMStorageEvent_destructor(DispatchEx *dispex) }
static const dispex_static_data_vtbl_t DOMEvent_dispex_vtbl = { + .query_interface = DOMEvent_query_interface, .destructor = DOMEvent_destructor, .traverse = DOMEvent_traverse, .unlink = DOMEvent_unlink @@ -3053,6 +3056,7 @@ static dispex_static_data_t DOMEvent_dispex = { };
static const dispex_static_data_vtbl_t DOMUIEvent_dispex_vtbl = { + .query_interface = DOMEvent_query_interface, .destructor = DOMEvent_destructor, .traverse = DOMUIEvent_traverse, .unlink = DOMUIEvent_unlink @@ -3072,6 +3076,7 @@ static dispex_static_data_t DOMUIEvent_dispex = { };
static const dispex_static_data_vtbl_t DOMMouseEvent_dispex_vtbl = { + .query_interface = DOMEvent_query_interface, .destructor = DOMEvent_destructor, .traverse = DOMMouseEvent_traverse, .unlink = DOMMouseEvent_unlink @@ -3092,6 +3097,7 @@ static dispex_static_data_t DOMMouseEvent_dispex = { };
static const dispex_static_data_vtbl_t DOMKeyboardEvent_dispex_vtbl = { + .query_interface = DOMEvent_query_interface, .destructor = DOMEvent_destructor, .traverse = DOMKeyboardEvent_traverse, .unlink = DOMKeyboardEvent_unlink @@ -3126,6 +3132,7 @@ static dispex_static_data_t DOMPageTransitionEvent_dispex = { };
static const dispex_static_data_vtbl_t DOMCustomEvent_dispex_vtbl = { + .query_interface = DOMEvent_query_interface, .destructor = DOMCustomEvent_destructor, .traverse = DOMCustomEvent_traverse, .unlink = DOMCustomEvent_unlink @@ -3145,6 +3152,7 @@ static dispex_static_data_t DOMCustomEvent_dispex = { };
static const dispex_static_data_vtbl_t DOMMessageEvent_dispex_vtbl = { + .query_interface = DOMEvent_query_interface, .destructor = DOMMessageEvent_destructor, .traverse = DOMMessageEvent_traverse, .unlink = DOMMessageEvent_unlink @@ -3164,6 +3172,7 @@ static dispex_static_data_t DOMMessageEvent_dispex = { };
static const dispex_static_data_vtbl_t DOMProgressEvent_dispex_vtbl = { + .query_interface = DOMEvent_query_interface, .destructor = DOMEvent_destructor, .traverse = DOMProgressEvent_traverse, .unlink = DOMProgressEvent_unlink @@ -3183,6 +3192,7 @@ static dispex_static_data_t DOMProgressEvent_dispex = { };
static const dispex_static_data_vtbl_t DOMStorageEvent_dispex_vtbl = { + .query_interface = DOMEvent_query_interface, .destructor = DOMStorageEvent_destructor, .traverse = DOMEvent_traverse, .unlink = DOMEvent_unlink
From: Gabriel Ivăncescu gabrielopcode@gmail.com
Just use the dispex's query_interface.
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/mshtml/htmlevent.c | 112 +++++++++++++++++++++------------------- dlls/mshtml/htmlevent.h | 2 - 2 files changed, 58 insertions(+), 56 deletions(-)
diff --git a/dlls/mshtml/htmlevent.c b/dlls/mshtml/htmlevent.c index 024dfa2a2dd..4a062dc2971 100644 --- a/dlls/mshtml/htmlevent.c +++ b/dlls/mshtml/htmlevent.c @@ -1264,8 +1264,6 @@ static void *DOMEvent_query_interface(DispatchEx *dispex, REFIID riid)
if(IsEqualGUID(&IID_IDOMEvent, riid)) return &This->IDOMEvent_iface; - if(This->query_interface) - return This->query_interface(This, riid);
return NULL; } @@ -1437,12 +1435,13 @@ static const IDOMUIEventVtbl DOMUIEventVtbl = { DOMUIEvent_initUIEvent };
-static void *DOMUIEvent_query_interface(DOMEvent *event, REFIID riid) +static void *DOMUIEvent_query_interface(DispatchEx *dispex, REFIID riid) { - DOMUIEvent *This = DOMUIEvent_from_DOMEvent(event); + DOMUIEvent *This = DOMUIEvent_from_DOMEvent(DOMEvent_from_DispatchEx(dispex)); + if(IsEqualGUID(&IID_IDOMUIEvent, riid)) return &This->IDOMUIEvent_iface; - return NULL; + return DOMEvent_query_interface(&This->event.dispex, riid); }
static void DOMUIEvent_traverse(DispatchEx *dispex, nsCycleCollectionTraversalCallback *cb) @@ -1975,14 +1974,15 @@ static DOMMouseEvent *DOMMouseEvent_from_DOMEvent(DOMEvent *event) return CONTAINING_RECORD(event, DOMMouseEvent, ui_event.event); }
-static void *DOMMouseEvent_query_interface(DOMEvent *event, REFIID riid) +static void *DOMMouseEvent_query_interface(DispatchEx *dispex, REFIID riid) { - DOMMouseEvent *This = DOMMouseEvent_from_DOMEvent(event); + DOMMouseEvent *This = DOMMouseEvent_from_DOMEvent(DOMEvent_from_DispatchEx(dispex)); + if(IsEqualGUID(&IID_IDOMMouseEvent, riid)) return &This->IDOMMouseEvent_iface; if(IsEqualGUID(&IID_IDOMUIEvent, riid)) return &This->ui_event.IDOMUIEvent_iface; - return NULL; + return DOMEvent_query_interface(&This->ui_event.event.dispex, riid); }
static void DOMMouseEvent_traverse(DispatchEx *dispex, nsCycleCollectionTraversalCallback *cb) @@ -2282,14 +2282,15 @@ static DOMKeyboardEvent *DOMKeyboardEvent_from_DOMEvent(DOMEvent *event) return CONTAINING_RECORD(event, DOMKeyboardEvent, ui_event.event); }
-static void *DOMKeyboardEvent_query_interface(DOMEvent *event, REFIID riid) +static void *DOMKeyboardEvent_query_interface(DispatchEx *dispex, REFIID riid) { - DOMKeyboardEvent *This = DOMKeyboardEvent_from_DOMEvent(event); + DOMKeyboardEvent *This = DOMKeyboardEvent_from_DOMEvent(DOMEvent_from_DispatchEx(dispex)); + if(IsEqualGUID(&IID_IDOMKeyboardEvent, riid)) return &This->IDOMKeyboardEvent_iface; if(IsEqualGUID(&IID_IDOMUIEvent, riid)) return &This->ui_event.IDOMUIEvent_iface; - return NULL; + return DOMEvent_query_interface(&This->ui_event.event.dispex, riid); }
static void DOMKeyboardEvent_traverse(DispatchEx *dispex, nsCycleCollectionTraversalCallback *cb) @@ -2391,12 +2392,13 @@ static DOMPageTransitionEvent *DOMPageTransitionEvent_from_DOMEvent(DOMEvent *ev return CONTAINING_RECORD(event, DOMPageTransitionEvent, event); }
-static void *DOMPageTransitionEvent_query_interface(DOMEvent *event, REFIID riid) +static void *DOMPageTransitionEvent_query_interface(DispatchEx *dispex, REFIID riid) { - DOMPageTransitionEvent *page_transition_event = DOMPageTransitionEvent_from_DOMEvent(event); + DOMPageTransitionEvent *page_transition_event = DOMPageTransitionEvent_from_DOMEvent(DOMEvent_from_DispatchEx(dispex)); + if(IsEqualGUID(&IID_IWinePageTransitionEvent, riid)) return &page_transition_event->IWinePageTransitionEvent_iface; - return NULL; + return DOMEvent_query_interface(&page_transition_event->event.dispex, riid); }
typedef struct { @@ -2500,12 +2502,13 @@ static DOMCustomEvent *DOMCustomEvent_from_DOMEvent(DOMEvent *event) return CONTAINING_RECORD(event, DOMCustomEvent, event); }
-static void *DOMCustomEvent_query_interface(DOMEvent *event, REFIID riid) +static void *DOMCustomEvent_query_interface(DispatchEx *dispex, REFIID riid) { - DOMCustomEvent *custom_event = DOMCustomEvent_from_DOMEvent(event); + DOMCustomEvent *custom_event = DOMCustomEvent_from_DOMEvent(DOMEvent_from_DispatchEx(dispex)); + if(IsEqualGUID(&IID_IDOMCustomEvent, riid)) return &custom_event->IDOMCustomEvent_iface; - return NULL; + return DOMEvent_query_interface(&custom_event->event.dispex, riid); }
static void DOMCustomEvent_traverse(DispatchEx *dispex, nsCycleCollectionTraversalCallback *cb) @@ -2659,12 +2662,13 @@ static DOMMessageEvent *DOMMessageEvent_from_DOMEvent(DOMEvent *event) return CONTAINING_RECORD(event, DOMMessageEvent, event); }
-static void *DOMMessageEvent_query_interface(DOMEvent *event, REFIID riid) +static void *DOMMessageEvent_query_interface(DispatchEx *dispex, REFIID riid) { - DOMMessageEvent *message_event = DOMMessageEvent_from_DOMEvent(event); + DOMMessageEvent *message_event = DOMMessageEvent_from_DOMEvent(DOMEvent_from_DispatchEx(dispex)); + if(IsEqualGUID(&IID_IDOMMessageEvent, riid)) return &message_event->IDOMMessageEvent_iface; - return NULL; + return DOMEvent_query_interface(&message_event->event.dispex, riid); }
static void DOMMessageEvent_traverse(DispatchEx *dispex, nsCycleCollectionTraversalCallback *cb) @@ -2847,12 +2851,13 @@ static DOMProgressEvent *DOMProgressEvent_from_DOMEvent(DOMEvent *event) return CONTAINING_RECORD(event, DOMProgressEvent, event); }
-static void *DOMProgressEvent_query_interface(DOMEvent *event, REFIID riid) +static void *DOMProgressEvent_query_interface(DispatchEx *dispex, REFIID riid) { - DOMProgressEvent *This = DOMProgressEvent_from_DOMEvent(event); + DOMProgressEvent *This = DOMProgressEvent_from_DOMEvent(DOMEvent_from_DispatchEx(dispex)); + if(IsEqualGUID(&IID_IDOMProgressEvent, riid)) return &This->IDOMProgressEvent_iface; - return NULL; + return DOMEvent_query_interface(&This->event.dispex, riid); }
static void DOMProgressEvent_traverse(DispatchEx *dispex, nsCycleCollectionTraversalCallback *cb) @@ -3018,12 +3023,13 @@ static DOMStorageEvent *DOMStorageEvent_from_DOMEvent(DOMEvent *event) return CONTAINING_RECORD(event, DOMStorageEvent, event); }
-static void *DOMStorageEvent_query_interface(DOMEvent *event, REFIID riid) +static void *DOMStorageEvent_query_interface(DispatchEx *dispex, REFIID riid) { - DOMStorageEvent *storage_event = DOMStorageEvent_from_DOMEvent(event); + DOMStorageEvent *storage_event = DOMStorageEvent_from_DOMEvent(DOMEvent_from_DispatchEx(dispex)); + if(IsEqualGUID(&IID_IDOMStorageEvent, riid)) return &storage_event->IDOMStorageEvent_iface; - return NULL; + return DOMEvent_query_interface(&storage_event->event.dispex, riid); }
static void DOMStorageEvent_destructor(DispatchEx *dispex) @@ -3056,7 +3062,7 @@ static dispex_static_data_t DOMEvent_dispex = { };
static const dispex_static_data_vtbl_t DOMUIEvent_dispex_vtbl = { - .query_interface = DOMEvent_query_interface, + .query_interface = DOMUIEvent_query_interface, .destructor = DOMEvent_destructor, .traverse = DOMUIEvent_traverse, .unlink = DOMUIEvent_unlink @@ -3076,7 +3082,7 @@ static dispex_static_data_t DOMUIEvent_dispex = { };
static const dispex_static_data_vtbl_t DOMMouseEvent_dispex_vtbl = { - .query_interface = DOMEvent_query_interface, + .query_interface = DOMMouseEvent_query_interface, .destructor = DOMEvent_destructor, .traverse = DOMMouseEvent_traverse, .unlink = DOMMouseEvent_unlink @@ -3097,7 +3103,7 @@ static dispex_static_data_t DOMMouseEvent_dispex = { };
static const dispex_static_data_vtbl_t DOMKeyboardEvent_dispex_vtbl = { - .query_interface = DOMEvent_query_interface, + .query_interface = DOMKeyboardEvent_query_interface, .destructor = DOMEvent_destructor, .traverse = DOMKeyboardEvent_traverse, .unlink = DOMKeyboardEvent_unlink @@ -3123,16 +3129,23 @@ static void DOMPageTransitionEvent_init_dispex_info(dispex_data_t *info, compat_ dispex_info_add_interface(info, IWinePageTransitionEvent_tid, NULL); }
+static const dispex_static_data_vtbl_t DOMPageTransitionEvent_dispex_vtbl = { + .query_interface = DOMPageTransitionEvent_query_interface, + .destructor = DOMEvent_destructor, + .traverse = DOMEvent_traverse, + .unlink = DOMEvent_unlink +}; + static dispex_static_data_t DOMPageTransitionEvent_dispex = { "PageTransitionEvent", - &DOMEvent_dispex_vtbl, + &DOMPageTransitionEvent_dispex_vtbl, DispDOMEvent_tid, DOMEvent_iface_tids, DOMPageTransitionEvent_init_dispex_info };
static const dispex_static_data_vtbl_t DOMCustomEvent_dispex_vtbl = { - .query_interface = DOMEvent_query_interface, + .query_interface = DOMCustomEvent_query_interface, .destructor = DOMCustomEvent_destructor, .traverse = DOMCustomEvent_traverse, .unlink = DOMCustomEvent_unlink @@ -3152,7 +3165,7 @@ static dispex_static_data_t DOMCustomEvent_dispex = { };
static const dispex_static_data_vtbl_t DOMMessageEvent_dispex_vtbl = { - .query_interface = DOMEvent_query_interface, + .query_interface = DOMMessageEvent_query_interface, .destructor = DOMMessageEvent_destructor, .traverse = DOMMessageEvent_traverse, .unlink = DOMMessageEvent_unlink @@ -3172,7 +3185,7 @@ static dispex_static_data_t DOMMessageEvent_dispex = { };
static const dispex_static_data_vtbl_t DOMProgressEvent_dispex_vtbl = { - .query_interface = DOMEvent_query_interface, + .query_interface = DOMProgressEvent_query_interface, .destructor = DOMEvent_destructor, .traverse = DOMProgressEvent_traverse, .unlink = DOMProgressEvent_unlink @@ -3192,7 +3205,7 @@ static dispex_static_data_t DOMProgressEvent_dispex = { };
static const dispex_static_data_vtbl_t DOMStorageEvent_dispex_vtbl = { - .query_interface = DOMEvent_query_interface, + .query_interface = DOMStorageEvent_query_interface, .destructor = DOMStorageEvent_destructor, .traverse = DOMEvent_traverse, .unlink = DOMEvent_unlink @@ -3211,15 +3224,14 @@ static dispex_static_data_t DOMStorageEvent_dispex = { DOMStorageEvent_iface_tids };
-static void *event_ctor(unsigned size, dispex_static_data_t *dispex_data, void *(*query_interface)(DOMEvent*,REFIID), - nsIDOMEvent *nsevent, eventid_t event_id, compat_mode_t compat_mode) +static void *event_ctor(unsigned size, dispex_static_data_t *dispex_data, nsIDOMEvent *nsevent, eventid_t event_id, + compat_mode_t compat_mode) { DOMEvent *event = calloc(1, size);
if(!event) return NULL; event->IDOMEvent_iface.lpVtbl = &DOMEventVtbl; - event->query_interface = query_interface; event->event_id = event_id; if(event_id != EVENTID_LAST) { event->type = wcsdup(event_info[event_id].name); @@ -3246,13 +3258,12 @@ static void fill_parent_ui_event(nsIDOMEvent *nsevent, DOMUIEvent *ui_event)
static DOMEvent *generic_event_ctor(void *iface, nsIDOMEvent *nsevent, eventid_t event_id, compat_mode_t compat_mode) { - return event_ctor(sizeof(DOMEvent), &DOMEvent_dispex, NULL, nsevent, event_id, compat_mode); + return event_ctor(sizeof(DOMEvent), &DOMEvent_dispex, nsevent, event_id, compat_mode); }
static DOMEvent *ui_event_ctor(void *iface, nsIDOMEvent *nsevent, eventid_t event_id, compat_mode_t compat_mode) { - DOMUIEvent *ui_event = event_ctor(sizeof(DOMUIEvent), &DOMUIEvent_dispex, - DOMUIEvent_query_interface, nsevent, event_id, compat_mode); + DOMUIEvent *ui_event = event_ctor(sizeof(DOMUIEvent), &DOMUIEvent_dispex, nsevent, event_id, compat_mode); if(!ui_event) return NULL; ui_event->IDOMUIEvent_iface.lpVtbl = &DOMUIEventVtbl; ui_event->nsevent = iface; @@ -3261,8 +3272,7 @@ static DOMEvent *ui_event_ctor(void *iface, nsIDOMEvent *nsevent, eventid_t even
static DOMEvent *mouse_event_ctor(void *iface, nsIDOMEvent *nsevent, eventid_t event_id, compat_mode_t compat_mode) { - DOMMouseEvent *mouse_event = event_ctor(sizeof(DOMMouseEvent), &DOMMouseEvent_dispex, - DOMMouseEvent_query_interface, nsevent, event_id, compat_mode); + DOMMouseEvent *mouse_event = event_ctor(sizeof(DOMMouseEvent), &DOMMouseEvent_dispex, nsevent, event_id, compat_mode); if(!mouse_event) return NULL; mouse_event->IDOMMouseEvent_iface.lpVtbl = &DOMMouseEventVtbl; mouse_event->nsevent = iface; @@ -3272,8 +3282,7 @@ static DOMEvent *mouse_event_ctor(void *iface, nsIDOMEvent *nsevent, eventid_t e
static DOMEvent *keyboard_event_ctor(void *iface, nsIDOMEvent *nsevent, eventid_t event_id, compat_mode_t compat_mode) { - DOMKeyboardEvent *keyboard_event = event_ctor(sizeof(DOMKeyboardEvent), &DOMKeyboardEvent_dispex, - DOMKeyboardEvent_query_interface, nsevent, event_id, compat_mode); + DOMKeyboardEvent *keyboard_event = event_ctor(sizeof(DOMKeyboardEvent), &DOMKeyboardEvent_dispex, nsevent, event_id, compat_mode); if(!keyboard_event) return NULL; keyboard_event->IDOMKeyboardEvent_iface.lpVtbl = &DOMKeyboardEventVtbl; keyboard_event->nsevent = iface; @@ -3283,8 +3292,7 @@ static DOMEvent *keyboard_event_ctor(void *iface, nsIDOMEvent *nsevent, eventid_
static DOMEvent *page_transition_event_ctor(void *iface, nsIDOMEvent *nsevent, eventid_t event_id, compat_mode_t compat_mode) { - DOMPageTransitionEvent *page_transition_event = event_ctor(sizeof(DOMCustomEvent), &DOMPageTransitionEvent_dispex, - DOMPageTransitionEvent_query_interface, nsevent, event_id, compat_mode); + DOMPageTransitionEvent *page_transition_event = event_ctor(sizeof(DOMCustomEvent), &DOMPageTransitionEvent_dispex, nsevent, event_id, compat_mode); if(!page_transition_event) return NULL; page_transition_event->IWinePageTransitionEvent_iface.lpVtbl = &DOMPageTransitionEventVtbl; return &page_transition_event->event; @@ -3292,8 +3300,7 @@ static DOMEvent *page_transition_event_ctor(void *iface, nsIDOMEvent *nsevent, e
static DOMEvent *custom_event_ctor(void *iface, nsIDOMEvent *nsevent, eventid_t event_id, compat_mode_t compat_mode) { - DOMCustomEvent *custom_event = event_ctor(sizeof(DOMCustomEvent), &DOMCustomEvent_dispex, - DOMCustomEvent_query_interface, nsevent, event_id, compat_mode); + DOMCustomEvent *custom_event = event_ctor(sizeof(DOMCustomEvent), &DOMCustomEvent_dispex, nsevent, event_id, compat_mode); if(!custom_event) return NULL; custom_event->IDOMCustomEvent_iface.lpVtbl = &DOMCustomEventVtbl; nsIDOMCustomEvent_Release(iface); @@ -3304,8 +3311,7 @@ static DOMEvent *progress_event_ctor(void *iface, nsIDOMEvent *nsevent, eventid_ { DOMProgressEvent *progress_event;
- if(!(progress_event = event_ctor(sizeof(DOMProgressEvent), &DOMProgressEvent_dispex, - DOMProgressEvent_query_interface, nsevent, event_id, compat_mode))) + if(!(progress_event = event_ctor(sizeof(DOMProgressEvent), &DOMProgressEvent_dispex, nsevent, event_id, compat_mode))) return NULL; progress_event->IDOMProgressEvent_iface.lpVtbl = &DOMProgressEventVtbl; progress_event->nsevent = iface; @@ -3314,8 +3320,7 @@ static DOMEvent *progress_event_ctor(void *iface, nsIDOMEvent *nsevent, eventid_
static DOMEvent *message_event_ctor(void *iface, nsIDOMEvent *nsevent, eventid_t event_id, compat_mode_t compat_mode) { - DOMMessageEvent *message_event = event_ctor(sizeof(DOMMessageEvent), &DOMMessageEvent_dispex, - DOMMessageEvent_query_interface, nsevent, event_id, compat_mode); + DOMMessageEvent *message_event = event_ctor(sizeof(DOMMessageEvent), &DOMMessageEvent_dispex, nsevent, event_id, compat_mode); if(!message_event) return NULL; message_event->IDOMMessageEvent_iface.lpVtbl = &DOMMessageEventVtbl; return &message_event->event; @@ -3323,8 +3328,7 @@ static DOMEvent *message_event_ctor(void *iface, nsIDOMEvent *nsevent, eventid_t
static DOMEvent *storage_event_ctor(void *iface, nsIDOMEvent *nsevent, eventid_t event_id, compat_mode_t compat_mode) { - DOMStorageEvent *storage_event = event_ctor(sizeof(DOMStorageEvent), &DOMStorageEvent_dispex, - DOMStorageEvent_query_interface, nsevent, event_id, compat_mode); + DOMStorageEvent *storage_event = event_ctor(sizeof(DOMStorageEvent), &DOMStorageEvent_dispex, nsevent, event_id, compat_mode); if(!storage_event) return NULL; storage_event->IDOMStorageEvent_iface.lpVtbl = &DOMStorageEventVtbl; return &storage_event->event; diff --git a/dlls/mshtml/htmlevent.h b/dlls/mshtml/htmlevent.h index 9150e04b239..9d3de6426ba 100644 --- a/dlls/mshtml/htmlevent.h +++ b/dlls/mshtml/htmlevent.h @@ -76,8 +76,6 @@ typedef struct DOMEvent { DispatchEx dispex; IDOMEvent IDOMEvent_iface;
- void *(*query_interface)(struct DOMEvent*,REFIID); - nsIDOMEvent *nsevent;
eventid_t event_id;
From: Gabriel Ivăncescu gabrielopcode@gmail.com
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/mshtml/mutation.c | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-)
diff --git a/dlls/mshtml/mutation.c b/dlls/mshtml/mutation.c index 7c93d27d829..e9656a0e2d2 100644 --- a/dlls/mshtml/mutation.c +++ b/dlls/mshtml/mutation.c @@ -1093,20 +1093,12 @@ static HRESULT WINAPI MutationObserver_QueryInterface(IWineMSHTMLMutationObserve { struct mutation_observer *This = impl_from_IWineMSHTMLMutationObserver(iface);
- TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - - if(IsEqualGUID(&IID_IUnknown, riid) || IsEqualGUID(&IID_IWineMSHTMLMutationObserver, riid)) { - *ppv = &This->IWineMSHTMLMutationObserver_iface; - } else if(dispex_query_interface(&This->dispex, riid, ppv)) { + if(dispex_query_interface(&This->dispex, riid, ppv)) return *ppv ? S_OK : E_NOINTERFACE; - } else { - WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - *ppv = NULL; - return E_NOINTERFACE; - }
- IUnknown_AddRef((IUnknown*)*ppv); - return S_OK; + *ppv = NULL; + WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); + return E_NOINTERFACE; }
static ULONG WINAPI MutationObserver_AddRef(IWineMSHTMLMutationObserver *iface) @@ -1211,6 +1203,16 @@ static inline struct mutation_observer *mutation_observer_from_DispatchEx(Dispat return CONTAINING_RECORD(iface, struct mutation_observer, dispex); }
+static void *mutation_observer_query_interface(DispatchEx *dispex, REFIID riid) +{ + struct mutation_observer *This = mutation_observer_from_DispatchEx(dispex); + + if(IsEqualGUID(&IID_IWineMSHTMLMutationObserver, riid)) + return &This->IWineMSHTMLMutationObserver_iface; + + return NULL; +} + static void mutation_observer_traverse(DispatchEx *dispex, nsCycleCollectionTraversalCallback *cb) { struct mutation_observer *This = mutation_observer_from_DispatchEx(dispex); @@ -1231,6 +1233,7 @@ static void mutation_observer_destructor(DispatchEx *dispex) }
static const dispex_static_data_vtbl_t mutation_observer_dispex_vtbl = { + .query_interface = mutation_observer_query_interface, .destructor = mutation_observer_destructor, .traverse = mutation_observer_traverse, .unlink = mutation_observer_unlink
From: Gabriel Ivăncescu gabrielopcode@gmail.com
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/mshtml/htmlelem.c | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-)
diff --git a/dlls/mshtml/htmlelem.c b/dlls/mshtml/htmlelem.c index 4726d22a98b..b1da45cea35 100644 --- a/dlls/mshtml/htmlelem.c +++ b/dlls/mshtml/htmlelem.c @@ -7383,22 +7383,12 @@ static HRESULT WINAPI token_list_QueryInterface(IWineDOMTokenList *iface, REFIID { struct token_list *token_list = impl_from_IWineDOMTokenList(iface);
- TRACE("(%p)->(%s %p)\n", token_list, debugstr_mshtml_guid(riid), ppv); - - if(IsEqualGUID(&IID_IUnknown, riid)) { - *ppv = &token_list->IWineDOMTokenList_iface; - }else if(IsEqualGUID(&IID_IWineDOMTokenList, riid)) { - *ppv = &token_list->IWineDOMTokenList_iface; - }else if(dispex_query_interface(&token_list->dispex, riid, ppv)) { + if(dispex_query_interface(&token_list->dispex, riid, ppv)) return *ppv ? S_OK : E_NOINTERFACE; - }else { - WARN("(%p)->(%s %p)\n", token_list, debugstr_mshtml_guid(riid), ppv); - *ppv = NULL; - return E_NOINTERFACE; - }
- IUnknown_AddRef((IUnknown*)*ppv); - return S_OK; + *ppv = NULL; + WARN("(%p)->(%s %p)\n", token_list, debugstr_mshtml_guid(riid), ppv); + return E_NOINTERFACE; }
static ULONG WINAPI token_list_AddRef(IWineDOMTokenList *iface) @@ -7735,6 +7725,16 @@ static inline struct token_list *token_list_from_DispatchEx(DispatchEx *iface) return CONTAINING_RECORD(iface, struct token_list, dispex); }
+static void *token_list_query_interface(DispatchEx *dispex, REFIID riid) +{ + struct token_list *token_list = token_list_from_DispatchEx(dispex); + + if(IsEqualGUID(&IID_IWineDOMTokenList, riid)) + return &token_list->IWineDOMTokenList_iface; + + return NULL; +} + static void token_list_traverse(DispatchEx *dispex, nsCycleCollectionTraversalCallback *cb) { struct token_list *token_list = token_list_from_DispatchEx(dispex); @@ -7829,6 +7829,7 @@ static HRESULT token_list_invoke(DispatchEx *dispex, DISPID id, LCID lcid, WORD }
static const dispex_static_data_vtbl_t token_list_dispex_vtbl = { + .query_interface = token_list_query_interface, .destructor = token_list_destructor, .traverse = token_list_traverse, .unlink = token_list_unlink,
From: Gabriel Ivăncescu gabrielopcode@gmail.com
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/mshtml/htmlelem.c | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-)
diff --git a/dlls/mshtml/htmlelem.c b/dlls/mshtml/htmlelem.c index b1da45cea35..b2beec5873b 100644 --- a/dlls/mshtml/htmlelem.c +++ b/dlls/mshtml/htmlelem.c @@ -541,24 +541,12 @@ static HRESULT WINAPI HTMLRect_QueryInterface(IHTMLRect *iface, REFIID riid, voi { HTMLRect *This = impl_from_IHTMLRect(iface);
- TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - - if(IsEqualGUID(&IID_IUnknown, riid)) { - *ppv = &This->IHTMLRect_iface; - }else if(IsEqualGUID(&IID_IHTMLRect, riid)) { - *ppv = &This->IHTMLRect_iface; - }else if (IsEqualGUID(&IID_IHTMLRect2, riid)) { - *ppv = &This->IHTMLRect2_iface; - }else if(dispex_query_interface(&This->dispex, riid, ppv)) { + if(dispex_query_interface(&This->dispex, riid, ppv)) return *ppv ? S_OK : E_NOINTERFACE; - }else { - FIXME("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - *ppv = NULL; - return E_NOINTERFACE; - }
- IUnknown_AddRef((IUnknown*)*ppv); - return S_OK; + *ppv = NULL; + WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); + return E_NOINTERFACE; }
static ULONG WINAPI HTMLRect_AddRef(IHTMLRect *iface) @@ -835,6 +823,18 @@ static inline HTMLRect *HTMLRect_from_DispatchEx(DispatchEx *iface) return CONTAINING_RECORD(iface, HTMLRect, dispex); }
+static void *HTMLRect_query_interface(DispatchEx *dispex, REFIID riid) +{ + HTMLRect *This = HTMLRect_from_DispatchEx(dispex); + + if(IsEqualGUID(&IID_IHTMLRect, riid)) + return &This->IHTMLRect_iface; + if(IsEqualGUID(&IID_IHTMLRect2, riid)) + return &This->IHTMLRect2_iface; + + return NULL; +} + static void HTMLRect_traverse(DispatchEx *dispex, nsCycleCollectionTraversalCallback *cb) { HTMLRect *This = HTMLRect_from_DispatchEx(dispex); @@ -861,6 +861,7 @@ void HTMLRect_init_dispex_info(dispex_data_t *info, compat_mode_t mode) }
static const dispex_static_data_vtbl_t HTMLRect_dispex_vtbl = { + .query_interface = HTMLRect_query_interface, .destructor = HTMLRect_destructor, .traverse = HTMLRect_traverse, .unlink = HTMLRect_unlink
From: Gabriel Ivăncescu gabrielopcode@gmail.com
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/mshtml/range.c | 64 ++++++++++++++++++++++++--------------------- 1 file changed, 34 insertions(+), 30 deletions(-)
diff --git a/dlls/mshtml/range.c b/dlls/mshtml/range.c index 71e225a587e..a83ed316345 100644 --- a/dlls/mshtml/range.c +++ b/dlls/mshtml/range.c @@ -814,24 +814,12 @@ static HRESULT WINAPI HTMLTxtRange_QueryInterface(IHTMLTxtRange *iface, REFIID r { HTMLTxtRange *This = impl_from_IHTMLTxtRange(iface);
- TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - - if(IsEqualGUID(&IID_IUnknown, riid)) { - *ppv = &This->IHTMLTxtRange_iface; - }else if(IsEqualGUID(&IID_IHTMLTxtRange, riid)) { - *ppv = &This->IHTMLTxtRange_iface; - }else if(IsEqualGUID(&IID_IOleCommandTarget, riid)) { - *ppv = &This->IOleCommandTarget_iface; - }else if(dispex_query_interface(&This->dispex, riid, ppv)) { + if(dispex_query_interface(&This->dispex, riid, ppv)) return *ppv ? S_OK : E_NOINTERFACE; - }else { - *ppv = NULL; - WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv); - return E_NOINTERFACE; - }
- IUnknown_AddRef((IUnknown*)*ppv); - return S_OK; + *ppv = NULL; + WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); + return E_NOINTERFACE; }
static ULONG WINAPI HTMLTxtRange_AddRef(IHTMLTxtRange *iface) @@ -1710,6 +1698,18 @@ static inline HTMLTxtRange *HTMLTxtRange_from_DispatchEx(DispatchEx *iface) return CONTAINING_RECORD(iface, HTMLTxtRange, dispex); }
+static void *HTMLTxtRange_query_interface(DispatchEx *dispex, REFIID riid) +{ + HTMLTxtRange *This = HTMLTxtRange_from_DispatchEx(dispex); + + if(IsEqualGUID(&IID_IHTMLTxtRange, riid)) + return &This->IHTMLTxtRange_iface; + if(IsEqualGUID(&IID_IOleCommandTarget, riid)) + return &This->IOleCommandTarget_iface; + + return NULL; +} + static void HTMLTxtRange_traverse(DispatchEx *dispex, nsCycleCollectionTraversalCallback *cb) { HTMLTxtRange *This = HTMLTxtRange_from_DispatchEx(dispex); @@ -1734,6 +1734,7 @@ static void HTMLTxtRange_destructor(DispatchEx *dispex) }
static const dispex_static_data_vtbl_t HTMLTxtRange_dispex_vtbl = { + .query_interface = HTMLTxtRange_query_interface, .destructor = HTMLTxtRange_destructor, .traverse = HTMLTxtRange_traverse, .unlink = HTMLTxtRange_unlink @@ -1784,22 +1785,12 @@ static HRESULT WINAPI HTMLDOMRange_QueryInterface(IHTMLDOMRange *iface, REFIID r { HTMLDOMRange *This = impl_from_IHTMLDOMRange(iface);
- TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - - if(IsEqualGUID(&IID_IUnknown, riid)) { - *ppv = &This->IHTMLDOMRange_iface; - }else if(IsEqualGUID(&IID_IHTMLDOMRange, riid)) { - *ppv = &This->IHTMLDOMRange_iface; - }else if(dispex_query_interface(&This->dispex, riid, ppv)) { + if(dispex_query_interface(&This->dispex, riid, ppv)) return *ppv ? S_OK : E_NOINTERFACE; - }else { - *ppv = NULL; - WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv); - return E_NOINTERFACE; - }
- IUnknown_AddRef((IUnknown*)*ppv); - return S_OK; + *ppv = NULL; + WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); + return E_NOINTERFACE; }
static ULONG WINAPI HTMLDOMRange_AddRef(IHTMLDOMRange *iface) @@ -2081,6 +2072,18 @@ static inline HTMLDOMRange *HTMLDOMRange_from_DispatchEx(DispatchEx *iface) return CONTAINING_RECORD(iface, HTMLDOMRange, dispex); }
+static void *HTMLDOMRange_query_interface(DispatchEx *dispex, REFIID riid) +{ + HTMLDOMRange *This = HTMLDOMRange_from_DispatchEx(dispex); + + if(IsEqualGUID(&IID_IUnknown, riid)) + return &This->IHTMLDOMRange_iface; + if(IsEqualGUID(&IID_IHTMLDOMRange, riid)) + return &This->IHTMLDOMRange_iface; + + return NULL; +} + static void HTMLDOMRange_traverse(DispatchEx *dispex, nsCycleCollectionTraversalCallback *cb) { HTMLDOMRange *This = HTMLDOMRange_from_DispatchEx(dispex); @@ -2101,6 +2104,7 @@ static void HTMLDOMRange_destructor(DispatchEx *dispex) }
static const dispex_static_data_vtbl_t HTMLDOMRange_dispex_vtbl = { + .query_interface = HTMLDOMRange_query_interface, .destructor = HTMLDOMRange_destructor, .traverse = HTMLDOMRange_traverse, .unlink = HTMLDOMRange_unlink
From: Gabriel Ivăncescu gabrielopcode@gmail.com
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/mshtml/selection.c | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-)
diff --git a/dlls/mshtml/selection.c b/dlls/mshtml/selection.c index 97f65a2b22c..76e1b2bc5eb 100644 --- a/dlls/mshtml/selection.c +++ b/dlls/mshtml/selection.c @@ -52,26 +52,12 @@ static HRESULT WINAPI HTMLSelectionObject_QueryInterface(IHTMLSelectionObject *i { HTMLSelectionObject *This = impl_from_IHTMLSelectionObject(iface);
- TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - - if(IsEqualGUID(&IID_IUnknown, riid)) { - *ppv = &This->IHTMLSelectionObject_iface; - }else if(IsEqualGUID(&IID_IDispatch, riid)) { - *ppv = &This->IHTMLSelectionObject_iface; - }else if(IsEqualGUID(&IID_IHTMLSelectionObject, riid)) { - *ppv = &This->IHTMLSelectionObject_iface; - }else if(IsEqualGUID(&IID_IHTMLSelectionObject2, riid)) { - *ppv = &This->IHTMLSelectionObject2_iface; - }else if(dispex_query_interface(&This->dispex, riid, ppv)) { + if(dispex_query_interface(&This->dispex, riid, ppv)) return *ppv ? S_OK : E_NOINTERFACE; - }else { - *ppv = NULL; - WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv); - return E_NOINTERFACE; - }
- IUnknown_AddRef((IUnknown*)*ppv); - return S_OK; + *ppv = NULL; + WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); + return E_NOINTERFACE; }
static ULONG WINAPI HTMLSelectionObject_AddRef(IHTMLSelectionObject *iface) @@ -323,6 +309,18 @@ static inline HTMLSelectionObject *impl_from_DispatchEx(DispatchEx *iface) return CONTAINING_RECORD(iface, HTMLSelectionObject, dispex); }
+static void *HTMLSelectionObject_query_interface(DispatchEx *dispex, REFIID riid) +{ + HTMLSelectionObject *This = impl_from_DispatchEx(dispex); + + if(IsEqualGUID(&IID_IHTMLSelectionObject, riid)) + return &This->IHTMLSelectionObject_iface; + if(IsEqualGUID(&IID_IHTMLSelectionObject2, riid)) + return &This->IHTMLSelectionObject2_iface; + + return NULL; +} + static void HTMLSelectionObject_traverse(DispatchEx *dispex, nsCycleCollectionTraversalCallback *cb) { HTMLSelectionObject *This = impl_from_DispatchEx(dispex); @@ -347,6 +345,7 @@ static void HTMLSelectionObject_destructor(DispatchEx *dispex) }
static const dispex_static_data_vtbl_t HTMLSelectionObject_dispex_vtbl = { + .query_interface = HTMLSelectionObject_query_interface, .destructor = HTMLSelectionObject_destructor, .traverse = HTMLSelectionObject_traverse, .unlink = HTMLSelectionObject_unlink
From: Gabriel Ivăncescu gabrielopcode@gmail.com
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/mshtml/omnavigator.c | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-)
diff --git a/dlls/mshtml/omnavigator.c b/dlls/mshtml/omnavigator.c index 85a8cd0e41a..103bbd9b7a6 100644 --- a/dlls/mshtml/omnavigator.c +++ b/dlls/mshtml/omnavigator.c @@ -60,22 +60,12 @@ static HRESULT WINAPI HTMLDOMImplementation_QueryInterface(IHTMLDOMImplementatio { HTMLDOMImplementation *This = impl_from_IHTMLDOMImplementation(iface);
- TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - - if(IsEqualGUID(&IID_IUnknown, riid) || IsEqualGUID(&IID_IHTMLDOMImplementation, riid)) { - *ppv = &This->IHTMLDOMImplementation_iface; - }else if(IsEqualGUID(&IID_IHTMLDOMImplementation2, riid)) { - *ppv = &This->IHTMLDOMImplementation2_iface; - }else if(dispex_query_interface(&This->dispex, riid, ppv)) { + if(dispex_query_interface(&This->dispex, riid, ppv)) return *ppv ? S_OK : E_NOINTERFACE; - }else { - WARN("Unsupported interface %s\n", debugstr_mshtml_guid(riid)); - *ppv = NULL; - return E_NOINTERFACE; - }
- IUnknown_AddRef((IUnknown*)*ppv); - return S_OK; + *ppv = NULL; + WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); + return E_NOINTERFACE; }
static ULONG WINAPI HTMLDOMImplementation_AddRef(IHTMLDOMImplementation *iface) @@ -287,6 +277,18 @@ static inline HTMLDOMImplementation *HTMLDOMImplementation_from_DispatchEx(Dispa return CONTAINING_RECORD(iface, HTMLDOMImplementation, dispex); }
+static void *HTMLDOMImplementation_query_interface(DispatchEx *dispex, REFIID riid) +{ + HTMLDOMImplementation *This = HTMLDOMImplementation_from_DispatchEx(dispex); + + if(IsEqualGUID(&IID_IHTMLDOMImplementation, riid)) + return &This->IHTMLDOMImplementation_iface; + if(IsEqualGUID(&IID_IHTMLDOMImplementation2, riid)) + return &This->IHTMLDOMImplementation2_iface; + + return NULL; +} + static void HTMLDOMImplementation_traverse(DispatchEx *dispex, nsCycleCollectionTraversalCallback *cb) { HTMLDOMImplementation *This = HTMLDOMImplementation_from_DispatchEx(dispex); @@ -308,6 +310,7 @@ static void HTMLDOMImplementation_destructor(DispatchEx *dispex) }
static const dispex_static_data_vtbl_t HTMLDOMImplementation_dispex_vtbl = { + .query_interface = HTMLDOMImplementation_query_interface, .destructor = HTMLDOMImplementation_destructor, .traverse = HTMLDOMImplementation_traverse, .unlink = HTMLDOMImplementation_unlink
From: Gabriel Ivăncescu gabrielopcode@gmail.com
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/mshtml/omnavigator.c | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-)
diff --git a/dlls/mshtml/omnavigator.c b/dlls/mshtml/omnavigator.c index 103bbd9b7a6..342416e240f 100644 --- a/dlls/mshtml/omnavigator.c +++ b/dlls/mshtml/omnavigator.c @@ -384,22 +384,12 @@ static HRESULT WINAPI HTMLScreen_QueryInterface(IHTMLScreen *iface, REFIID riid, { HTMLScreen *This = impl_from_IHTMLScreen(iface);
- TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - - if(IsEqualGUID(&IID_IUnknown, riid)) { - *ppv = &This->IHTMLScreen_iface; - }else if(IsEqualGUID(&IID_IHTMLScreen, riid)) { - *ppv = &This->IHTMLScreen_iface; - }else if(dispex_query_interface(&This->dispex, riid, ppv)) { + if(dispex_query_interface(&This->dispex, riid, ppv)) return *ppv ? S_OK : E_NOINTERFACE; - }else { - *ppv = NULL; - WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - return E_NOINTERFACE; - }
- IUnknown_AddRef((IUnknown*)*ppv); - return S_OK; + *ppv = NULL; + WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); + return E_NOINTERFACE; }
static ULONG WINAPI HTMLScreen_AddRef(IHTMLScreen *iface) @@ -572,6 +562,16 @@ static inline HTMLScreen *HTMLScreen_from_DispatchEx(DispatchEx *iface) return CONTAINING_RECORD(iface, HTMLScreen, dispex); }
+static void *HTMLScreen_query_interface(DispatchEx *dispex, REFIID riid) +{ + HTMLScreen *This = HTMLScreen_from_DispatchEx(dispex); + + if(IsEqualGUID(&IID_IHTMLScreen, riid)) + return &This->IHTMLScreen_iface; + + return NULL; +} + static void HTMLScreen_destructor(DispatchEx *dispex) { HTMLScreen *This = HTMLScreen_from_DispatchEx(dispex); @@ -579,6 +579,7 @@ static void HTMLScreen_destructor(DispatchEx *dispex) }
static const dispex_static_data_vtbl_t HTMLScreen_dispex_vtbl = { + .query_interface = HTMLScreen_query_interface, .destructor = HTMLScreen_destructor, };
This merge request was approved by Jacek Caban.