-- v2: mshtml: Get rid of the custom qi for CSS Styles. mshtml: Forward objects' IUnknown methods to the DispatchEx. mshtml: Get rid of `outer` in DispatchEx. mshtml: Use query_interface in the dispex vtbl for PerformanceTiming. mshtml: Use query_interface in the dispex vtbl for PerformanceNavigation. mshtml: Use query_interface in the dispex vtbl for Performance. mshtml: Use query_interface in the dispex vtbl for MediaQueryList. mshtml: Use query_interface in the dispex vtbl for Console. mshtml: Use query_interface in the dispex vtbl for Navigator. mshtml: Use query_interface in the dispex vtbl for History.
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 342416e240f..5d221d700d6 100644 --- a/dlls/mshtml/omnavigator.c +++ b/dlls/mshtml/omnavigator.c @@ -619,22 +619,12 @@ static HRESULT WINAPI OmHistory_QueryInterface(IOmHistory *iface, REFIID riid, v { OmHistory *This = impl_from_IOmHistory(iface);
- TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - - if(IsEqualGUID(&IID_IUnknown, riid)) { - *ppv = &This->IOmHistory_iface; - }else if(IsEqualGUID(&IID_IOmHistory, riid)) { - *ppv = &This->IOmHistory_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 OmHistory_AddRef(IOmHistory *iface) @@ -746,6 +736,16 @@ static inline OmHistory *OmHistory_from_DispatchEx(DispatchEx *iface) return CONTAINING_RECORD(iface, OmHistory, dispex); }
+static void *OmHistory_query_interface(DispatchEx *dispex, REFIID riid) +{ + OmHistory *This = OmHistory_from_DispatchEx(dispex); + + if(IsEqualGUID(&IID_IOmHistory, riid)) + return &This->IOmHistory_iface; + + return NULL; +} + static void OmHistory_destructor(DispatchEx *dispex) { OmHistory *This = OmHistory_from_DispatchEx(dispex); @@ -753,6 +753,7 @@ static void OmHistory_destructor(DispatchEx *dispex) }
static const dispex_static_data_vtbl_t OmHistory_dispex_vtbl = { + .query_interface = OmHistory_query_interface, .destructor = OmHistory_destructor, };
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 5d221d700d6..aa57ba4f447 100644 --- a/dlls/mshtml/omnavigator.c +++ b/dlls/mshtml/omnavigator.c @@ -1129,22 +1129,12 @@ static HRESULT WINAPI OmNavigator_QueryInterface(IOmNavigator *iface, REFIID rii { OmNavigator *This = impl_from_IOmNavigator(iface);
- TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - - if(IsEqualGUID(&IID_IUnknown, riid)) { - *ppv = &This->IOmNavigator_iface; - }else if(IsEqualGUID(&IID_IOmNavigator, riid)) { - *ppv = &This->IOmNavigator_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 OmNavigator_AddRef(IOmNavigator *iface) @@ -1514,6 +1504,16 @@ static inline OmNavigator *OmNavigator_from_DispatchEx(DispatchEx *iface) return CONTAINING_RECORD(iface, OmNavigator, dispex); }
+static void *OmNavigator_query_interface(DispatchEx *dispex, REFIID riid) +{ + OmNavigator *This = OmNavigator_from_DispatchEx(dispex); + + if(IsEqualGUID(&IID_IOmNavigator, riid)) + return &This->IOmNavigator_iface; + + return NULL; +} + static void OmNavigator_unlink(DispatchEx *dispex) { OmNavigator *This = OmNavigator_from_DispatchEx(dispex); @@ -1534,6 +1534,7 @@ static void OmNavigator_destructor(DispatchEx *dispex) }
static const dispex_static_data_vtbl_t OmNavigator_dispex_vtbl = { + .query_interface = OmNavigator_query_interface, .destructor = OmNavigator_destructor, .unlink = OmNavigator_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 aa57ba4f447..ca78787a46a 100644 --- a/dlls/mshtml/omnavigator.c +++ b/dlls/mshtml/omnavigator.c @@ -2595,22 +2595,12 @@ static HRESULT WINAPI console_QueryInterface(IWineMSHTMLConsole *iface, REFIID r { struct console *console = impl_from_IWineMSHTMLConsole(iface);
- TRACE("(%p)->(%s %p)\n", console, debugstr_mshtml_guid(riid), ppv); - - if(IsEqualGUID(&IID_IUnknown, riid)) { - *ppv = &console->IWineMSHTMLConsole_iface; - }else if(IsEqualGUID(&IID_IWineMSHTMLConsole, riid)) { - *ppv = &console->IWineMSHTMLConsole_iface; - }else if(dispex_query_interface(&console->dispex, riid, ppv)) { + if(dispex_query_interface(&console->dispex, riid, ppv)) return *ppv ? S_OK : E_NOINTERFACE; - }else { - WARN("(%p)->(%s %p)\n", console, debugstr_mshtml_guid(riid), ppv); - *ppv = NULL; - return E_NOINTERFACE; - }
- IUnknown_AddRef((IUnknown*)*ppv); - return S_OK; + *ppv = NULL; + WARN("(%p)->(%s %p)\n", console, debugstr_mshtml_guid(riid), ppv); + return E_NOINTERFACE; }
static ULONG WINAPI console_AddRef(IWineMSHTMLConsole *iface) @@ -2810,6 +2800,16 @@ static inline struct console *console_from_DispatchEx(DispatchEx *iface) return CONTAINING_RECORD(iface, struct console, dispex); }
+static void *console_query_interface(DispatchEx *dispex, REFIID riid) +{ + struct console *console = console_from_DispatchEx(dispex); + + if(IsEqualGUID(&IID_IWineMSHTMLConsole, riid)) + return &console->IWineMSHTMLConsole_iface; + + return NULL; +} + static void console_destructor(DispatchEx *dispex) { struct console *console = console_from_DispatchEx(dispex); @@ -2817,6 +2817,7 @@ static void console_destructor(DispatchEx *dispex) }
static const dispex_static_data_vtbl_t console_dispex_vtbl = { + .query_interface = console_query_interface, .destructor = console_destructor, };
From: Gabriel Ivăncescu gabrielopcode@gmail.com
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/mshtml/omnavigator.c | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-)
diff --git a/dlls/mshtml/omnavigator.c b/dlls/mshtml/omnavigator.c index ca78787a46a..01c6b99f355 100644 --- a/dlls/mshtml/omnavigator.c +++ b/dlls/mshtml/omnavigator.c @@ -2878,19 +2878,12 @@ static HRESULT WINAPI media_query_list_QueryInterface(IWineMSHTMLMediaQueryList { struct media_query_list *media_query_list = impl_from_IWineMSHTMLMediaQueryList(iface);
- TRACE("(%p)->(%s %p)\n", media_query_list, debugstr_mshtml_guid(riid), ppv); - - if(IsEqualGUID(&IID_IUnknown, riid) || IsEqualGUID(&IID_IWineMSHTMLMediaQueryList, riid)) { - *ppv = &media_query_list->IWineMSHTMLMediaQueryList_iface; - }else if(dispex_query_interface(&media_query_list->dispex, riid, ppv)) { + if(dispex_query_interface(&media_query_list->dispex, riid, ppv)) return *ppv ? S_OK : E_NOINTERFACE; - }else { - *ppv = NULL; - return E_NOINTERFACE; - }
- IUnknown_AddRef((IUnknown*)*ppv); - return S_OK; + *ppv = NULL; + WARN("(%p)->(%s %p)\n", media_query_list, debugstr_mshtml_guid(riid), ppv); + return E_NOINTERFACE; }
static ULONG WINAPI media_query_list_AddRef(IWineMSHTMLMediaQueryList *iface) @@ -3134,6 +3127,16 @@ static inline struct media_query_list *media_query_list_from_DispatchEx(Dispatch return CONTAINING_RECORD(iface, struct media_query_list, dispex); }
+static void *media_query_list_query_interface(DispatchEx *dispex, REFIID riid) +{ + struct media_query_list *media_query_list = media_query_list_from_DispatchEx(dispex); + + if(IsEqualGUID(&IID_IWineMSHTMLMediaQueryList, riid)) + return &media_query_list->IWineMSHTMLMediaQueryList_iface; + + return NULL; +} + static void media_query_list_traverse(DispatchEx *dispex, nsCycleCollectionTraversalCallback *cb) { struct media_query_list *media_query_list = media_query_list_from_DispatchEx(dispex); @@ -3167,6 +3170,7 @@ static void media_query_list_destructor(DispatchEx *dispex) }
static const dispex_static_data_vtbl_t media_query_list_dispex_vtbl = { + .query_interface = media_query_list_query_interface, .destructor = media_query_list_destructor, .traverse = media_query_list_traverse, .unlink = media_query_list_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 01c6b99f355..55ace6385b2 100644 --- a/dlls/mshtml/omnavigator.c +++ b/dlls/mshtml/omnavigator.c @@ -2188,22 +2188,12 @@ static HRESULT WINAPI HTMLPerformance_QueryInterface(IHTMLPerformance *iface, RE { HTMLPerformance *This = impl_from_IHTMLPerformance(iface);
- TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - - if(IsEqualGUID(&IID_IUnknown, riid)) { - *ppv = &This->IHTMLPerformance_iface; - }else if(IsEqualGUID(&IID_IHTMLPerformance, riid)) { - *ppv = &This->IHTMLPerformance_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 HTMLPerformance_AddRef(IHTMLPerformance *iface) @@ -2351,6 +2341,16 @@ static inline HTMLPerformance *HTMLPerformance_from_DispatchEx(DispatchEx *iface return CONTAINING_RECORD(iface, HTMLPerformance, dispex); }
+static void *HTMLPerformance_query_interface(DispatchEx *dispex, REFIID riid) +{ + HTMLPerformance *This = HTMLPerformance_from_DispatchEx(dispex); + + if(IsEqualGUID(&IID_IHTMLPerformance, riid)) + return &This->IHTMLPerformance_iface; + + return NULL; +} + static void HTMLPerformance_traverse(DispatchEx *dispex, nsCycleCollectionTraversalCallback *cb) { HTMLPerformance *This = HTMLPerformance_from_DispatchEx(dispex); @@ -2381,6 +2381,7 @@ static void HTMLPerformance_destructor(DispatchEx *dispex) }
static const dispex_static_data_vtbl_t HTMLPerformance_dispex_vtbl = { + .query_interface = HTMLPerformance_query_interface, .destructor = HTMLPerformance_destructor, .traverse = HTMLPerformance_traverse, .unlink = HTMLPerformance_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 55ace6385b2..9ab0b7bc4e2 100644 --- a/dlls/mshtml/omnavigator.c +++ b/dlls/mshtml/omnavigator.c @@ -2002,22 +2002,12 @@ static HRESULT WINAPI HTMLPerformanceNavigation_QueryInterface(IHTMLPerformanceN { HTMLPerformanceNavigation *This = impl_from_IHTMLPerformanceNavigation(iface);
- TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - - if(IsEqualGUID(&IID_IUnknown, riid)) { - *ppv = &This->IHTMLPerformanceNavigation_iface; - }else if(IsEqualGUID(&IID_IHTMLPerformanceNavigation, riid)) { - *ppv = &This->IHTMLPerformanceNavigation_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 HTMLPerformanceNavigation_AddRef(IHTMLPerformanceNavigation *iface) @@ -2130,6 +2120,16 @@ static inline HTMLPerformanceNavigation *HTMLPerformanceNavigation_from_Dispatch return CONTAINING_RECORD(iface, HTMLPerformanceNavigation, dispex); }
+static void *HTMLPerformanceNavigation_query_interface(DispatchEx *dispex, REFIID riid) +{ + HTMLPerformanceNavigation *This = HTMLPerformanceNavigation_from_DispatchEx(dispex); + + if(IsEqualGUID(&IID_IHTMLPerformanceNavigation, riid)) + return &This->IHTMLPerformanceNavigation_iface; + + return NULL; +} + static void HTMLPerformanceNavigation_traverse(DispatchEx *dispex, nsCycleCollectionTraversalCallback *cb) { HTMLPerformanceNavigation *This = HTMLPerformanceNavigation_from_DispatchEx(dispex); @@ -2154,6 +2154,7 @@ static void HTMLPerformanceNavigation_destructor(DispatchEx *dispex) }
static const dispex_static_data_vtbl_t HTMLPerformanceNavigation_dispex_vtbl = { + .query_interface = HTMLPerformanceNavigation_query_interface, .destructor = HTMLPerformanceNavigation_destructor, .traverse = HTMLPerformanceNavigation_traverse, .unlink = HTMLPerformanceNavigation_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 9ab0b7bc4e2..2b6a3578f98 100644 --- a/dlls/mshtml/omnavigator.c +++ b/dlls/mshtml/omnavigator.c @@ -1582,22 +1582,12 @@ static HRESULT WINAPI HTMLPerformanceTiming_QueryInterface(IHTMLPerformanceTimin { HTMLPerformanceTiming *This = impl_from_IHTMLPerformanceTiming(iface);
- TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - - if(IsEqualGUID(&IID_IUnknown, riid)) { - *ppv = &This->IHTMLPerformanceTiming_iface; - }else if(IsEqualGUID(&IID_IHTMLPerformanceTiming, riid)) { - *ppv = &This->IHTMLPerformanceTiming_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 HTMLPerformanceTiming_AddRef(IHTMLPerformanceTiming *iface) @@ -1946,6 +1936,16 @@ static inline HTMLPerformanceTiming *HTMLPerformanceTiming_from_DispatchEx(Dispa return CONTAINING_RECORD(iface, HTMLPerformanceTiming, dispex); }
+static void *HTMLPerformanceTiming_query_interface(DispatchEx *dispex, REFIID riid) +{ + HTMLPerformanceTiming *This = HTMLPerformanceTiming_from_DispatchEx(dispex); + + if(IsEqualGUID(&IID_IHTMLPerformanceTiming, riid)) + return &This->IHTMLPerformanceTiming_iface; + + return NULL; +} + static void HTMLPerformanceTiming_traverse(DispatchEx *dispex, nsCycleCollectionTraversalCallback *cb) { HTMLPerformanceTiming *This = HTMLPerformanceTiming_from_DispatchEx(dispex); @@ -1970,6 +1970,7 @@ static void HTMLPerformanceTiming_destructor(DispatchEx *dispex) }
static const dispex_static_data_vtbl_t HTMLPerformanceTiming_dispex_vtbl = { + .query_interface = HTMLPerformanceTiming_query_interface, .destructor = HTMLPerformanceTiming_destructor, .traverse = HTMLPerformanceTiming_traverse, .unlink = HTMLPerformanceTiming_unlink
From: Gabriel Ivăncescu gabrielopcode@gmail.com
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/mshtml/dispex.c | 136 ++++++++++++----------------------- dlls/mshtml/htmlattr.c | 3 +- dlls/mshtml/htmlelem.c | 13 ++-- dlls/mshtml/htmlelemcol.c | 3 +- dlls/mshtml/htmlevent.c | 9 ++- dlls/mshtml/htmlimg.c | 3 +- dlls/mshtml/htmllocation.c | 3 +- dlls/mshtml/htmlnode.c | 5 +- dlls/mshtml/htmlselect.c | 3 +- dlls/mshtml/htmlstorage.c | 3 +- dlls/mshtml/htmlstyle.c | 3 +- dlls/mshtml/htmlstylesheet.c | 12 ++-- dlls/mshtml/htmlwindow.c | 3 +- dlls/mshtml/mshtml_private.h | 5 +- dlls/mshtml/mutation.c | 59 +-------------- dlls/mshtml/omnavigator.c | 33 ++++----- dlls/mshtml/range.c | 5 +- dlls/mshtml/selection.c | 3 +- dlls/mshtml/xmlhttprequest.c | 6 +- 19 files changed, 90 insertions(+), 220 deletions(-)
diff --git a/dlls/mshtml/dispex.c b/dlls/mshtml/dispex.c index b2af8722b45..c72e23e11a6 100644 --- a/dlls/mshtml/dispex.c +++ b/dlls/mshtml/dispex.c @@ -774,7 +774,7 @@ static HRESULT typeinfo_invoke(DispatchEx *This, func_info_t *func, WORD flags, return hres; }
- hres = IUnknown_QueryInterface(This->outer, tid_ids[func->tid], (void**)&unk); + hres = IDispatchEx_QueryInterface(&This->IDispatchEx_iface, tid_ids[func->tid], (void**)&unk); if(FAILED(hres)) { ERR("Could not get iface %s: %08lx\n", debugstr_mshtml_guid(tid_ids[func->tid]), hres); return E_FAIL; @@ -786,56 +786,6 @@ static HRESULT typeinfo_invoke(DispatchEx *This, func_info_t *func, WORD flags, return hres; }
-static inline func_disp_t *impl_from_IUnknown(IUnknown *iface) -{ - return CONTAINING_RECORD(iface, func_disp_t, IUnknown_iface); -} - -static HRESULT WINAPI Function_QueryInterface(IUnknown *iface, REFIID riid, void **ppv) -{ - func_disp_t *This = impl_from_IUnknown(iface); - - TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - - if(IsEqualGUID(&IID_IUnknown, riid)) { - *ppv = &This->IUnknown_iface; - }else if(dispex_query_interface(&This->dispex, riid, ppv)) { - return *ppv ? S_OK : E_NOINTERFACE; - }else { - *ppv = NULL; - return E_NOINTERFACE; - } - - IUnknown_AddRef((IUnknown*)*ppv); - return S_OK; -} - -static ULONG WINAPI Function_AddRef(IUnknown *iface) -{ - func_disp_t *This = impl_from_IUnknown(iface); - LONG ref = dispex_ref_incr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; -} - -static ULONG WINAPI Function_Release(IUnknown *iface) -{ - func_disp_t *This = impl_from_IUnknown(iface); - LONG ref = dispex_ref_decr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; -} - -static const IUnknownVtbl FunctionUnkVtbl = { - Function_QueryInterface, - Function_AddRef, - Function_Release -}; - static inline func_disp_t *impl_from_DispatchEx(DispatchEx *iface) { return CONTAINING_RECORD(iface, func_disp_t, dispex); @@ -925,8 +875,7 @@ static func_disp_t *create_func_disp(DispatchEx *obj, func_info_t *info) if(!ret) return NULL;
- ret->IUnknown_iface.lpVtbl = &FunctionUnkVtbl; - init_dispatch(&ret->dispex, &ret->IUnknown_iface, &function_dispex, dispex_compat_mode(obj)); + init_dispatch(&ret->dispex, &function_dispex, dispex_compat_mode(obj)); ret->obj = obj; ret->info = info;
@@ -1115,7 +1064,7 @@ static HRESULT builtin_propget(DispatchEx *This, func_info_t *func, DISPPARAMS *
assert(func->get_vtbl_off);
- hres = IUnknown_QueryInterface(This->outer, tid_ids[func->tid], (void**)&iface); + hres = IDispatchEx_QueryInterface(&This->IDispatchEx_iface, tid_ids[func->tid], (void**)&iface); if(SUCCEEDED(hres)) { switch(func->prop_vt) { #define CASE_VT(vt,type,access) \ @@ -1172,7 +1121,7 @@ static HRESULT builtin_propput(DispatchEx *This, func_info_t *func, DISPPARAMS * v = &tmpv; }
- hres = IUnknown_QueryInterface(This->outer, tid_ids[func->tid], (void**)&iface); + hres = IDispatchEx_QueryInterface(&This->IDispatchEx_iface, tid_ids[func->tid], (void**)&iface); if(SUCCEEDED(hres)) { switch(func->prop_vt) { #define CASE_VT(vt,type,access) \ @@ -1216,7 +1165,7 @@ static HRESULT invoke_builtin_function(DispatchEx *This, func_info_t *func, DISP return E_INVALIDARG; }
- hres = IUnknown_QueryInterface(This->outer, tid_ids[func->tid], (void**)&iface); + hres = IDispatchEx_QueryInterface(&This->IDispatchEx_iface, tid_ids[func->tid], (void**)&iface); if(FAILED(hres)) return hres;
@@ -1591,21 +1540,57 @@ static HRESULT WINAPI DispatchEx_QueryInterface(IDispatchEx *iface, REFIID riid, { DispatchEx *This = impl_from_IDispatchEx(iface);
- return IUnknown_QueryInterface(This->outer, riid, ppv); + TRACE("%s (%p)->(%s %p)\n", This->info->desc->name, This, debugstr_mshtml_guid(riid), ppv); + + if(This->info->desc->vtbl->query_interface) { + *ppv = This->info->desc->vtbl->query_interface(This, riid); + if(*ppv) + goto ret; + } + + if(IsEqualGUID(&IID_IUnknown, riid) || IsEqualGUID(&IID_IDispatch, riid) || IsEqualGUID(&IID_IDispatchEx, riid)) + *ppv = &This->IDispatchEx_iface; + else if(IsEqualGUID(&IID_nsXPCOMCycleCollectionParticipant, riid)) { + *ppv = &dispex_ccp; + return S_OK; + }else if(IsEqualGUID(&IID_nsCycleCollectionISupports, riid)) { + *ppv = &This->IDispatchEx_iface; + return S_OK; + }else if(IsEqualGUID(&IID_IDispatchJS, riid) || + IsEqualGUID(&IID_UndocumentedScriptIface, riid) || + IsEqualGUID(&IID_IMarshal, riid) || + IsEqualGUID(&IID_IManagedObject, riid)) { + *ppv = NULL; + return E_NOINTERFACE; + }else { + *ppv = NULL; + WARN("%s (%p)->(%s %p)\n", This->info->desc->name, This, debugstr_mshtml_guid(riid), ppv); + return E_NOINTERFACE; + } + +ret: + IDispatchEx_AddRef(&This->IDispatchEx_iface); + return S_OK; }
static ULONG WINAPI DispatchEx_AddRef(IDispatchEx *iface) { DispatchEx *This = impl_from_IDispatchEx(iface); + LONG ref = dispex_ref_incr(This); + + TRACE("%s (%p) ref=%ld\n", This->info->desc->name, This, ref);
- return IUnknown_AddRef(This->outer); + return ref; }
static ULONG WINAPI DispatchEx_Release(IDispatchEx *iface) { DispatchEx *This = impl_from_IDispatchEx(iface); + LONG ref = dispex_ref_decr(This); + + TRACE("%s (%p) ref=%ld\n", This->info->desc->name, This, ref);
- return IUnknown_Release(This->outer); + return ref; }
static HRESULT WINAPI DispatchEx_GetTypeInfoCount(IDispatchEx *iface, UINT *pctinfo) @@ -1968,35 +1953,7 @@ static IDispatchExVtbl DispatchExVtbl = {
BOOL dispex_query_interface(DispatchEx *This, REFIID riid, void **ppv) { - TRACE("%s (%p)->(%s %p)\n", This->info->desc->name, This, debugstr_mshtml_guid(riid), ppv); - - if(This->info->desc->vtbl->query_interface) { - *ppv = This->info->desc->vtbl->query_interface(This, riid); - if(*ppv) - goto ret; - } - - if(IsEqualGUID(&IID_IUnknown, riid) || IsEqualGUID(&IID_IDispatch, riid) || IsEqualGUID(&IID_IDispatchEx, riid)) - *ppv = &This->IDispatchEx_iface; - else if(IsEqualGUID(&IID_nsXPCOMCycleCollectionParticipant, riid)) { - *ppv = &dispex_ccp; - return TRUE; - }else if(IsEqualGUID(&IID_nsCycleCollectionISupports, riid)) { - *ppv = &This->IDispatchEx_iface; - return TRUE; - }else if(IsEqualGUID(&IID_IDispatchJS, riid) || - IsEqualGUID(&IID_UndocumentedScriptIface, riid) || - IsEqualGUID(&IID_IMarshal, riid) || - IsEqualGUID(&IID_IManagedObject, riid)) { - *ppv = NULL; - return TRUE; - }else { - return FALSE; - } - -ret: - IDispatchEx_AddRef(&This->IDispatchEx_iface); - return TRUE; + return IDispatchEx_QueryInterface(&This->IDispatchEx_iface, riid, ppv) == S_OK; }
LONG dispex_ref_decr(DispatchEx *dispex) @@ -2137,12 +2094,11 @@ const void *dispex_get_vtbl(DispatchEx *dispex) return dispex->info->desc->vtbl; }
-void init_dispatch(DispatchEx *dispex, IUnknown *outer, dispex_static_data_t *data, compat_mode_t compat_mode) +void init_dispatch(DispatchEx *dispex, dispex_static_data_t *data, compat_mode_t compat_mode) { assert(compat_mode < COMPAT_MODE_CNT);
dispex->IDispatchEx_iface.lpVtbl = &DispatchExVtbl; - dispex->outer = outer; dispex->dynamic_data = NULL; ccref_init(&dispex->ccref, 1);
diff --git a/dlls/mshtml/htmlattr.c b/dlls/mshtml/htmlattr.c index 5e38215057c..9e78ed625f7 100644 --- a/dlls/mshtml/htmlattr.c +++ b/dlls/mshtml/htmlattr.c @@ -537,8 +537,7 @@ HRESULT HTMLDOMAttribute_Create(const WCHAR *name, HTMLElement *elem, DISPID dis ret->dispid = dispid; ret->elem = elem;
- init_dispatch(&ret->dispex, (IUnknown*)&ret->IHTMLDOMAttribute_iface, - &HTMLDOMAttribute_dispex, compat_mode); + init_dispatch(&ret->dispex, &HTMLDOMAttribute_dispex, compat_mode);
/* For attributes attached to an element, (elem,dispid) pair should be valid used for its operation. */ if(elem) { diff --git a/dlls/mshtml/htmlelem.c b/dlls/mshtml/htmlelem.c index b2beec5873b..00b6d402ad2 100644 --- a/dlls/mshtml/htmlelem.c +++ b/dlls/mshtml/htmlelem.c @@ -890,7 +890,7 @@ static HRESULT create_html_rect(nsIDOMClientRect *nsrect, compat_mode_t compat_m rect->IHTMLRect_iface.lpVtbl = &HTMLRectVtbl; rect->IHTMLRect2_iface.lpVtbl = &HTMLRect2Vtbl;
- init_dispatch(&rect->dispex, (IUnknown*)&rect->IHTMLRect_iface, &HTMLRect_dispex, compat_mode); + init_dispatch(&rect->dispex, &HTMLRect_dispex, compat_mode);
nsIDOMClientRect_AddRef(nsrect); rect->nsrect = nsrect; @@ -3331,8 +3331,7 @@ static HRESULT WINAPI HTMLElement2_getClientRects(IHTMLElement2 *iface, IHTMLRec
rects->IHTMLRectCollection_iface.lpVtbl = &HTMLRectCollectionVtbl; rects->rect_list = rect_list; - init_dispatch(&rects->dispex, (IUnknown*)&rects->IHTMLRectCollection_iface, - &HTMLRectCollection_dispex, dispex_compat_mode(&This->node.event_target.dispex)); + init_dispatch(&rects->dispex, &HTMLRectCollection_dispex, dispex_compat_mode(&This->node.event_target.dispex));
*pRectCol = &rects->IHTMLRectCollection_iface; return S_OK; @@ -7863,7 +7862,7 @@ static HRESULT create_token_list(compat_mode_t compat_mode, IHTMLElement *elemen }
obj->IWineDOMTokenList_iface.lpVtbl = &WineDOMTokenListVtbl; - init_dispatch(&obj->dispex, (IUnknown*)&obj->IWineDOMTokenList_iface, &token_list_dispex, compat_mode); + init_dispatch(&obj->dispex, &token_list_dispex, compat_mode); IHTMLElement_AddRef(element); obj->element = element;
@@ -8281,8 +8280,7 @@ static HRESULT create_filters_collection(compat_mode_t compat_mode, IHTMLFilters
collection->IHTMLFiltersCollection_iface.lpVtbl = &HTMLFiltersCollectionVtbl;
- init_dispatch(&collection->dispex, (IUnknown*)&collection->IHTMLFiltersCollection_iface, - &HTMLFiltersCollection_dispex, min(compat_mode, COMPAT_MODE_IE8)); + init_dispatch(&collection->dispex, &HTMLFiltersCollection_dispex, min(compat_mode, COMPAT_MODE_IE8));
*ret = &collection->IHTMLFiltersCollection_iface; return S_OK; @@ -9067,8 +9065,7 @@ HRESULT HTMLElement_get_attr_col(HTMLDOMNode *iface, HTMLAttributeCollection **a
This->attrs->elem = This; list_init(&This->attrs->attrs); - init_dispatch(&This->attrs->dispex, (IUnknown*)&This->attrs->IHTMLAttributeCollection_iface, - &HTMLAttributeCollection_dispex, dispex_compat_mode(&iface->event_target.dispex)); + init_dispatch(&This->attrs->dispex, &HTMLAttributeCollection_dispex, dispex_compat_mode(&iface->event_target.dispex));
*ac = This->attrs; IHTMLAttributeCollection_AddRef(&This->attrs->IHTMLAttributeCollection_iface); diff --git a/dlls/mshtml/htmlelemcol.c b/dlls/mshtml/htmlelemcol.c index 6a6d549799e..42194da838d 100644 --- a/dlls/mshtml/htmlelemcol.c +++ b/dlls/mshtml/htmlelemcol.c @@ -873,8 +873,7 @@ static IHTMLElementCollection *HTMLElementCollection_Create(HTMLElement **elems, ret->elems = elems; ret->len = len;
- init_dispatch(&ret->dispex, (IUnknown*)&ret->IHTMLElementCollection_iface, - &HTMLElementCollection_dispex, compat_mode); + init_dispatch(&ret->dispex, &HTMLElementCollection_dispex, compat_mode);
TRACE("ret=%p len=%ld\n", ret, len);
diff --git a/dlls/mshtml/htmlevent.c b/dlls/mshtml/htmlevent.c index 4a062dc2971..a01b24c9973 100644 --- a/dlls/mshtml/htmlevent.c +++ b/dlls/mshtml/htmlevent.c @@ -938,7 +938,7 @@ static HTMLEventObj *alloc_event_obj(DOMEvent *event, compat_mode_t compat_mode) if(event) IDOMEvent_AddRef(&event->IDOMEvent_iface);
- init_dispatch(&event_obj->dispex, (IUnknown*)&event_obj->IHTMLEventObj_iface, &HTMLEventObj_dispex, compat_mode); + init_dispatch(&event_obj->dispex, &HTMLEventObj_dispex, compat_mode); return event_obj; }
@@ -3246,7 +3246,7 @@ static void *event_ctor(unsigned size, dispex_static_data_t *dispex_data, nsIDOM
event->time_stamp = get_time_stamp();
- init_dispatch(&event->dispex, (IUnknown*)&event->IDOMEvent_iface, dispex_data, compat_mode); + init_dispatch(&event->dispex, dispex_data, compat_mode); return event; }
@@ -4609,10 +4609,9 @@ static int event_id_cmp(const void *key, const struct wine_rb_entry *entry) return wcscmp(key, WINE_RB_ENTRY_VALUE(entry, listener_container_t, entry)->type); }
-void EventTarget_Init(EventTarget *event_target, IUnknown *outer, dispex_static_data_t *dispex_data, - compat_mode_t compat_mode) +void EventTarget_Init(EventTarget *event_target, dispex_static_data_t *dispex_data, compat_mode_t compat_mode) { - init_dispatch(&event_target->dispex, outer, dispex_data, compat_mode); + init_dispatch(&event_target->dispex, dispex_data, compat_mode); event_target->IEventTarget_iface.lpVtbl = &EventTargetVtbl; wine_rb_init(&event_target->handler_map, event_id_cmp); } diff --git a/dlls/mshtml/htmlimg.c b/dlls/mshtml/htmlimg.c index 0a26554818d..70fab4a3876 100644 --- a/dlls/mshtml/htmlimg.c +++ b/dlls/mshtml/htmlimg.c @@ -984,8 +984,7 @@ HRESULT HTMLImageElementFactory_Create(HTMLInnerWindow *window, HTMLImageElement ret->IHTMLImageElementFactory_iface.lpVtbl = &HTMLImageElementFactoryVtbl; ret->window = window;
- init_dispatch(&ret->dispex, (IUnknown*)&ret->IHTMLImageElementFactory_iface, - &HTMLImageElementFactory_dispex, dispex_compat_mode(&window->event_target.dispex)); + init_dispatch(&ret->dispex, &HTMLImageElementFactory_dispex, dispex_compat_mode(&window->event_target.dispex));
*ret_val = ret; return S_OK; diff --git a/dlls/mshtml/htmllocation.c b/dlls/mshtml/htmllocation.c index 809ea3f5d35..5f3e41407ca 100644 --- a/dlls/mshtml/htmllocation.c +++ b/dlls/mshtml/htmllocation.c @@ -667,8 +667,7 @@ HRESULT create_location(HTMLOuterWindow *window, HTMLLocation **ret) location->window = window; IHTMLWindow2_AddRef(&window->base.IHTMLWindow2_iface);
- init_dispatch(&location->dispex, (IUnknown*)&location->IHTMLLocation_iface, &HTMLLocation_dispex, - COMPAT_MODE_QUIRKS); + init_dispatch(&location->dispex, &HTMLLocation_dispex, COMPAT_MODE_QUIRKS);
*ret = location; return S_OK; diff --git a/dlls/mshtml/htmlnode.c b/dlls/mshtml/htmlnode.c index a4f1046cc2b..6646cec2564 100644 --- a/dlls/mshtml/htmlnode.c +++ b/dlls/mshtml/htmlnode.c @@ -477,8 +477,7 @@ HRESULT create_child_collection(nsIDOMNodeList *nslist, compat_mode_t compat_mod nsIDOMNodeList_AddRef(nslist); collection->nslist = nslist;
- init_dispatch(&collection->dispex, (IUnknown*)&collection->IHTMLDOMChildrenCollection_iface, - &HTMLDOMChildrenCollection_dispex, compat_mode); + init_dispatch(&collection->dispex, &HTMLDOMChildrenCollection_dispex, compat_mode);
*ret = &collection->IHTMLDOMChildrenCollection_iface; return S_OK; @@ -1522,7 +1521,7 @@ void HTMLDOMNode_Init(HTMLDocumentNode *doc, HTMLDOMNode *node, nsIDOMNode *nsno node->IHTMLDOMNode2_iface.lpVtbl = &HTMLDOMNode2Vtbl; node->IHTMLDOMNode3_iface.lpVtbl = &HTMLDOMNode3Vtbl;
- EventTarget_Init(&node->event_target, (IUnknown*)&node->IHTMLDOMNode_iface, dispex_data, doc->document_mode); + EventTarget_Init(&node->event_target, dispex_data, doc->document_mode);
if(&doc->node != node) IHTMLDOMNode_AddRef(&doc->node.IHTMLDOMNode_iface); diff --git a/dlls/mshtml/htmlselect.c b/dlls/mshtml/htmlselect.c index 2fefe4ed8f4..8b27068d4e3 100644 --- a/dlls/mshtml/htmlselect.c +++ b/dlls/mshtml/htmlselect.c @@ -631,8 +631,7 @@ HRESULT HTMLOptionElementFactory_Create(HTMLInnerWindow *window, HTMLOptionEleme ret->IHTMLOptionElementFactory_iface.lpVtbl = &HTMLOptionElementFactoryVtbl; ret->window = window;
- init_dispatch(&ret->dispex, (IUnknown*)&ret->IHTMLOptionElementFactory_iface, - &HTMLOptionElementFactory_dispex, dispex_compat_mode(&window->event_target.dispex)); + init_dispatch(&ret->dispex, &HTMLOptionElementFactory_dispex, dispex_compat_mode(&window->event_target.dispex));
*ret_ptr = ret; return S_OK; diff --git a/dlls/mshtml/htmlstorage.c b/dlls/mshtml/htmlstorage.c index e4454c03d89..a986bbead3d 100644 --- a/dlls/mshtml/htmlstorage.c +++ b/dlls/mshtml/htmlstorage.c @@ -1479,8 +1479,7 @@ HRESULT create_html_storage(HTMLInnerWindow *window, BOOL local, IHTMLStorage ** storage->IHTMLStorage_iface.lpVtbl = &HTMLStorageVtbl; storage->window = window;
- init_dispatch(&storage->dispex, (IUnknown*)&storage->IHTMLStorage_iface, &HTMLStorage_dispex, - dispex_compat_mode(&window->event_target.dispex)); + init_dispatch(&storage->dispex, &HTMLStorage_dispex, dispex_compat_mode(&window->event_target.dispex));
*p = &storage->IHTMLStorage_iface; return S_OK; diff --git a/dlls/mshtml/htmlstyle.c b/dlls/mshtml/htmlstyle.c index 74549b402b3..7fd8521db85 100644 --- a/dlls/mshtml/htmlstyle.c +++ b/dlls/mshtml/htmlstyle.c @@ -10082,8 +10082,7 @@ void init_css_style(CSSStyle *style, nsIDOMCSSStyleDeclaration *nsstyle, style_q style->nsstyle = nsstyle; nsIDOMCSSStyleDeclaration_AddRef(nsstyle);
- init_dispatch(&style->dispex, (IUnknown*)&style->IHTMLCSSStyleDeclaration_iface, - dispex_info, compat_mode); + init_dispatch(&style->dispex, dispex_info, compat_mode); }
HRESULT HTMLStyle_Create(HTMLElement *elem, HTMLStyle **ret) diff --git a/dlls/mshtml/htmlstylesheet.c b/dlls/mshtml/htmlstylesheet.c index d14339d974b..26431b3645a 100644 --- a/dlls/mshtml/htmlstylesheet.c +++ b/dlls/mshtml/htmlstylesheet.c @@ -244,8 +244,7 @@ static HRESULT create_style_sheet_rule(nsIDOMCSSRule *nsstylesheetrule, compat_m rule->IHTMLStyleSheetRule_iface.lpVtbl = &HTMLStyleSheetRuleVtbl; rule->nsstylesheetrule = NULL;
- init_dispatch(&rule->dispex, (IUnknown *)&rule->IHTMLStyleSheetRule_iface, &HTMLStyleSheetRule_dispex, - compat_mode); + init_dispatch(&rule->dispex, &HTMLStyleSheetRule_dispex, compat_mode);
if (nsstylesheetrule) { @@ -522,8 +521,7 @@ static HRESULT create_style_sheet_rules_collection(nsIDOMCSSRuleList *nslist, co collection->IHTMLStyleSheetRulesCollection_iface.lpVtbl = &HTMLStyleSheetRulesCollectionVtbl; collection->nslist = nslist;
- init_dispatch(&collection->dispex, (IUnknown*)&collection->IHTMLStyleSheetRulesCollection_iface, - &HTMLStyleSheetRulesCollection_dispex, compat_mode); + init_dispatch(&collection->dispex, &HTMLStyleSheetRulesCollection_dispex, compat_mode);
if(nslist) nsIDOMCSSRuleList_AddRef(nslist); @@ -964,8 +962,7 @@ HRESULT create_style_sheet_collection(nsIDOMStyleSheetList *nslist, compat_mode_ nsIDOMStyleSheetList_AddRef(nslist); collection->nslist = nslist;
- init_dispatch(&collection->dispex, (IUnknown*)&collection->IHTMLStyleSheetsCollection_iface, - &HTMLStyleSheetsCollection_dispex, compat_mode); + init_dispatch(&collection->dispex, &HTMLStyleSheetsCollection_dispex, compat_mode);
*ret = &collection->IHTMLStyleSheetsCollection_iface; return S_OK; @@ -1554,8 +1551,7 @@ HRESULT create_style_sheet(nsIDOMStyleSheet *nsstylesheet, compat_mode_t compat_ style_sheet->IHTMLStyleSheet4_iface.lpVtbl = &HTMLStyleSheet4Vtbl; style_sheet->nsstylesheet = NULL;
- init_dispatch(&style_sheet->dispex, (IUnknown*)&style_sheet->IHTMLStyleSheet_iface, - &HTMLStyleSheet_dispex, compat_mode); + init_dispatch(&style_sheet->dispex, &HTMLStyleSheet_dispex, compat_mode);
if(nsstylesheet) { nsres = nsIDOMStyleSheet_QueryInterface(nsstylesheet, &IID_nsIDOMCSSStyleSheet, diff --git a/dlls/mshtml/htmlwindow.c b/dlls/mshtml/htmlwindow.c index 469ed683606..fe896128aeb 100644 --- a/dlls/mshtml/htmlwindow.c +++ b/dlls/mshtml/htmlwindow.c @@ -4441,8 +4441,7 @@ static HRESULT create_inner_window(HTMLOuterWindow *outer_window, IMoniker *mon, window->base.outer_window = outer_window; window->base.inner_window = window;
- EventTarget_Init(&window->event_target, (IUnknown*)&window->base.IHTMLWindow2_iface, - &HTMLWindow_dispex, COMPAT_MODE_NONE); + EventTarget_Init(&window->event_target, &HTMLWindow_dispex, COMPAT_MODE_NONE);
window->task_magic = get_task_target_magic();
diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index 3c5fc6de949..27c66811019 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -405,7 +405,6 @@ typedef struct { struct DispatchEx { IDispatchEx IDispatchEx_iface;
- IUnknown *outer; nsCycleCollectingAutoRefCnt ccref;
dispex_data_t *info; @@ -439,7 +438,7 @@ static inline LONG dispex_ref_incr(DispatchEx *dispex) } extern LONG dispex_ref_decr(DispatchEx*);
-void init_dispatch(DispatchEx*,IUnknown*,dispex_static_data_t*,compat_mode_t); +void init_dispatch(DispatchEx*,dispex_static_data_t*,compat_mode_t); BOOL dispex_query_interface(DispatchEx*,REFIID,void**); void dispex_props_unlink(DispatchEx*); HRESULT change_type(VARIANT*,VARIANT*,VARTYPE,IServiceProvider*); @@ -1209,7 +1208,7 @@ HRESULT create_svg_element(HTMLDocumentNode*,nsIDOMSVGElement*,const WCHAR*,HTML void HTMLDOMNode_Init(HTMLDocumentNode*,HTMLDOMNode*,nsIDOMNode*,dispex_static_data_t*); void HTMLElement_Init(HTMLElement*,HTMLDocumentNode*,nsIDOMElement*,dispex_static_data_t*);
-void EventTarget_Init(EventTarget*,IUnknown*,dispex_static_data_t*,compat_mode_t); +void EventTarget_Init(EventTarget*,dispex_static_data_t*,compat_mode_t); void *EventTarget_query_interface(EventTarget*,REFIID); void EventTarget_init_dispex_info(dispex_data_t*,compat_mode_t);
diff --git a/dlls/mshtml/mutation.c b/dlls/mshtml/mutation.c index e9656a0e2d2..c53a059c242 100644 --- a/dlls/mshtml/mutation.c +++ b/dlls/mshtml/mutation.c @@ -1265,8 +1265,7 @@ static HRESULT create_mutation_observer(compat_mode_t compat_mode, IDispatch *ca }
obj->IWineMSHTMLMutationObserver_iface.lpVtbl = &WineMSHTMLMutationObserverVtbl; - init_dispatch(&obj->dispex, (IUnknown*)&obj->IWineMSHTMLMutationObserver_iface, - &mutation_observer_dispex, compat_mode); + init_dispatch(&obj->dispex, &mutation_observer_dispex, compat_mode);
IDispatch_AddRef(callback); obj->callback = callback; @@ -1275,66 +1274,14 @@ static HRESULT create_mutation_observer(compat_mode_t compat_mode, IDispatch *ca }
struct mutation_observer_ctor { - IUnknown IUnknown_iface; DispatchEx dispex; };
-static inline struct mutation_observer_ctor *mutation_observer_ctor_from_IUnknown(IUnknown *iface) -{ - return CONTAINING_RECORD(iface, struct mutation_observer_ctor, IUnknown_iface); -} - static inline struct mutation_observer_ctor *mutation_observer_ctor_from_DispatchEx(DispatchEx *iface) { return CONTAINING_RECORD(iface, struct mutation_observer_ctor, dispex); }
-static HRESULT WINAPI mutation_observer_ctor_QueryInterface(IUnknown *iface, REFIID riid, void **ppv) -{ - struct mutation_observer_ctor *This = mutation_observer_ctor_from_IUnknown(iface); - - TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - - if(IsEqualGUID(&IID_IUnknown, riid)) { - *ppv = &This->IUnknown_iface; - }else 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; -} - -static ULONG WINAPI mutation_observer_ctor_AddRef(IUnknown *iface) -{ - struct mutation_observer_ctor *This = mutation_observer_ctor_from_IUnknown(iface); - LONG ref = dispex_ref_incr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; -} - -static ULONG WINAPI mutation_observer_ctor_Release(IUnknown *iface) -{ - struct mutation_observer_ctor *This = mutation_observer_ctor_from_IUnknown(iface); - LONG ref = dispex_ref_decr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; -} - -static const IUnknownVtbl mutation_observer_ctor_vtbl = { - mutation_observer_ctor_QueryInterface, - mutation_observer_ctor_AddRef, - mutation_observer_ctor_Release, -}; - static void mutation_observer_ctor_destructor(DispatchEx *dispex) { struct mutation_observer_ctor *This = mutation_observer_ctor_from_DispatchEx(dispex); @@ -1417,9 +1364,7 @@ HRESULT create_mutation_observer_ctor(compat_mode_t compat_mode, IDispatch **ret return E_OUTOFMEMORY; }
- obj->IUnknown_iface.lpVtbl = &mutation_observer_ctor_vtbl; - init_dispatch(&obj->dispex, (IUnknown*)&obj->IUnknown_iface, - &mutation_observer_ctor_dispex, compat_mode); + init_dispatch(&obj->dispex, &mutation_observer_ctor_dispex, compat_mode);
*ret = (IDispatch *)&obj->dispex.IDispatchEx_iface; return S_OK; diff --git a/dlls/mshtml/omnavigator.c b/dlls/mshtml/omnavigator.c index 2b6a3578f98..08577245ef1 100644 --- a/dlls/mshtml/omnavigator.c +++ b/dlls/mshtml/omnavigator.c @@ -350,8 +350,7 @@ HRESULT create_dom_implementation(HTMLDocumentNode *doc_node, IHTMLDOMImplementa dom_implementation->IHTMLDOMImplementation2_iface.lpVtbl = &HTMLDOMImplementation2Vtbl; dom_implementation->browser = doc_node->browser;
- init_dispatch(&dom_implementation->dispex, (IUnknown*)&dom_implementation->IHTMLDOMImplementation_iface, - &HTMLDOMImplementation_dispex, doc_node->document_mode); + init_dispatch(&dom_implementation->dispex, &HTMLDOMImplementation_dispex, doc_node->document_mode);
nsres = nsIDOMDocument_GetImplementation(doc_node->dom_document, &dom_implementation->implementation); if(NS_FAILED(nsres)) { @@ -604,7 +603,7 @@ HRESULT create_html_screen(compat_mode_t compat_mode, IHTMLScreen **ret)
screen->IHTMLScreen_iface.lpVtbl = &HTMLSreenVtbl;
- init_dispatch(&screen->dispex, (IUnknown*)&screen->IHTMLScreen_iface, &HTMLScreen_dispex, compat_mode); + init_dispatch(&screen->dispex, &HTMLScreen_dispex, compat_mode);
*ret = &screen->IHTMLScreen_iface; return S_OK; @@ -777,8 +776,7 @@ HRESULT create_history(HTMLInnerWindow *window, OmHistory **ret) if(!history) return E_OUTOFMEMORY;
- init_dispatch(&history->dispex, (IUnknown*)&history->IOmHistory_iface, &OmHistory_dispex, - dispex_compat_mode(&window->event_target.dispex)); + init_dispatch(&history->dispex, &OmHistory_dispex, dispex_compat_mode(&window->event_target.dispex)); history->IOmHistory_iface.lpVtbl = &OmHistoryVtbl;
history->window = window; @@ -952,8 +950,7 @@ static HRESULT create_plugins_collection(OmNavigator *navigator, HTMLPluginsColl col->IHTMLPluginsCollection_iface.lpVtbl = &HTMLPluginsCollectionVtbl; col->navigator = navigator;
- init_dispatch(&col->dispex, (IUnknown*)&col->IHTMLPluginsCollection_iface, - &HTMLPluginsCollection_dispex, dispex_compat_mode(&navigator->dispex)); + init_dispatch(&col->dispex, &HTMLPluginsCollection_dispex, dispex_compat_mode(&navigator->dispex));
*ret = col; return S_OK; @@ -1113,8 +1110,7 @@ static HRESULT create_mime_types_collection(OmNavigator *navigator, HTMLMimeType col->IHTMLMimeTypesCollection_iface.lpVtbl = &HTMLMimeTypesCollectionVtbl; col->navigator = navigator;
- init_dispatch(&col->dispex, (IUnknown*)&col->IHTMLMimeTypesCollection_iface, - &HTMLMimeTypesCollection_dispex, dispex_compat_mode(&navigator->dispex)); + init_dispatch(&col->dispex, &HTMLMimeTypesCollection_dispex, dispex_compat_mode(&navigator->dispex));
*ret = col; return S_OK; @@ -1560,7 +1556,7 @@ HRESULT create_navigator(compat_mode_t compat_mode, IOmNavigator **navigator)
ret->IOmNavigator_iface.lpVtbl = &OmNavigatorVtbl;
- init_dispatch(&ret->dispex, (IUnknown*)&ret->IOmNavigator_iface, &OmNavigator_dispex, compat_mode); + init_dispatch(&ret->dispex, &OmNavigator_dispex, compat_mode);
*navigator = &ret->IOmNavigator_iface; return S_OK; @@ -2271,8 +2267,7 @@ static HRESULT WINAPI HTMLPerformance_get_navigation(IHTMLPerformance *iface, navigation->window = This->window; IHTMLWindow2_AddRef(&This->window->base.IHTMLWindow2_iface);
- init_dispatch(&navigation->dispex, (IUnknown*)&navigation->IHTMLPerformanceNavigation_iface, - &HTMLPerformanceNavigation_dispex, dispex_compat_mode(&This->dispex)); + init_dispatch(&navigation->dispex, &HTMLPerformanceNavigation_dispex, dispex_compat_mode(&This->dispex));
This->navigation = &navigation->IHTMLPerformanceNavigation_iface; } @@ -2298,8 +2293,7 @@ static HRESULT WINAPI HTMLPerformance_get_timing(IHTMLPerformance *iface, IHTMLP timing->window = This->window; IHTMLWindow2_AddRef(&This->window->base.IHTMLWindow2_iface);
- init_dispatch(&timing->dispex, (IUnknown*)&timing->IHTMLPerformanceTiming_iface, - &HTMLPerformanceTiming_dispex, dispex_compat_mode(&This->dispex)); + init_dispatch(&timing->dispex, &HTMLPerformanceTiming_dispex, dispex_compat_mode(&This->dispex));
This->timing = &timing->IHTMLPerformanceTiming_iface; } @@ -2413,8 +2407,7 @@ HRESULT create_performance(HTMLInnerWindow *window, IHTMLPerformance **ret) performance->window = window; IHTMLWindow2_AddRef(&window->base.IHTMLWindow2_iface);
- init_dispatch(&performance->dispex, (IUnknown*)&performance->IHTMLPerformance_iface, - &HTMLPerformance_dispex, compat_mode); + init_dispatch(&performance->dispex, &HTMLPerformance_dispex, compat_mode);
*ret = &performance->IHTMLPerformance_iface; return S_OK; @@ -2578,8 +2571,7 @@ HRESULT create_namespace_collection(compat_mode_t compat_mode, IHTMLNamespaceCol return E_OUTOFMEMORY;
namespaces->IHTMLNamespaceCollection_iface.lpVtbl = &HTMLNamespaceCollectionVtbl; - init_dispatch(&namespaces->dispex, (IUnknown*)&namespaces->IHTMLNamespaceCollection_iface, - &HTMLNamespaceCollection_dispex, compat_mode); + init_dispatch(&namespaces->dispex, &HTMLNamespaceCollection_dispex, compat_mode); *ret = &namespaces->IHTMLNamespaceCollection_iface; return S_OK; } @@ -2847,7 +2839,7 @@ void create_console(compat_mode_t compat_mode, IWineMSHTMLConsole **ret) }
obj->IWineMSHTMLConsole_iface.lpVtbl = &WineMSHTMLConsoleVtbl; - init_dispatch(&obj->dispex, (IUnknown*)&obj->IWineMSHTMLConsole_iface, &console_dispex, compat_mode); + init_dispatch(&obj->dispex, &console_dispex, compat_mode);
*ret = &obj->IWineMSHTMLConsole_iface; } @@ -3228,8 +3220,7 @@ HRESULT create_media_query_list(HTMLWindow *window, BSTR media_query, IDispatch
media_query_list->IWineMSHTMLMediaQueryList_iface.lpVtbl = &media_query_list_vtbl; list_init(&media_query_list->listeners); - init_dispatch(&media_query_list->dispex, (IUnknown*)&media_query_list->IWineMSHTMLMediaQueryList_iface, - &media_query_list_dispex, dispex_compat_mode(&window->inner_window->event_target.dispex)); + init_dispatch(&media_query_list->dispex, &media_query_list_dispex, dispex_compat_mode(&window->inner_window->event_target.dispex));
*ret = (IDispatch*)&media_query_list->IWineMSHTMLMediaQueryList_iface; return S_OK; diff --git a/dlls/mshtml/range.c b/dlls/mshtml/range.c index a83ed316345..cbf9ac930cb 100644 --- a/dlls/mshtml/range.c +++ b/dlls/mshtml/range.c @@ -1759,8 +1759,7 @@ HRESULT HTMLTxtRange_Create(HTMLDocumentNode *doc, nsIDOMRange *nsrange, IHTMLTx if(!ret) return E_OUTOFMEMORY;
- init_dispatch(&ret->dispex, (IUnknown*)&ret->IHTMLTxtRange_iface, &HTMLTxtRange_dispex, - dispex_compat_mode(&doc->node.event_target.dispex)); + init_dispatch(&ret->dispex, &HTMLTxtRange_dispex, dispex_compat_mode(&doc->node.event_target.dispex));
ret->IHTMLTxtRange_iface.lpVtbl = &HTMLTxtRangeVtbl; ret->IOleCommandTarget_iface.lpVtbl = &OleCommandTargetVtbl; @@ -2130,7 +2129,7 @@ HRESULT create_dom_range(nsIDOMRange *nsrange, compat_mode_t compat_mode, IHTMLD if(!ret) return E_OUTOFMEMORY;
- init_dispatch(&ret->dispex, (IUnknown*)&ret->IHTMLDOMRange_iface, &HTMLDOMRange_dispex, compat_mode); + init_dispatch(&ret->dispex, &HTMLDOMRange_dispex, compat_mode);
ret->IHTMLDOMRange_iface.lpVtbl = &HTMLDOMRangeVtbl;
diff --git a/dlls/mshtml/selection.c b/dlls/mshtml/selection.c index 76e1b2bc5eb..9985af99a39 100644 --- a/dlls/mshtml/selection.c +++ b/dlls/mshtml/selection.c @@ -371,8 +371,7 @@ HRESULT HTMLSelectionObject_Create(HTMLDocumentNode *doc, nsISelection *nsselect if(!selection) return E_OUTOFMEMORY;
- init_dispatch(&selection->dispex, (IUnknown*)&selection->IHTMLSelectionObject_iface, - &HTMLSelectionObject_dispex, dispex_compat_mode(&doc->node.event_target.dispex)); + init_dispatch(&selection->dispex, &HTMLSelectionObject_dispex, dispex_compat_mode(&doc->node.event_target.dispex));
selection->IHTMLSelectionObject_iface.lpVtbl = &HTMLSelectionObjectVtbl; selection->IHTMLSelectionObject2_iface.lpVtbl = &HTMLSelectionObject2Vtbl; diff --git a/dlls/mshtml/xmlhttprequest.c b/dlls/mshtml/xmlhttprequest.c index fffe4807d6c..f887893c96e 100644 --- a/dlls/mshtml/xmlhttprequest.c +++ b/dlls/mshtml/xmlhttprequest.c @@ -1739,8 +1739,7 @@ static HRESULT WINAPI HTMLXMLHttpRequestFactory_create(IHTMLXMLHttpRequestFactor ret->IHTMLXMLHttpRequest2_iface.lpVtbl = &HTMLXMLHttpRequest2Vtbl; ret->IWineXMLHttpRequestPrivate_iface.lpVtbl = &WineXMLHttpRequestPrivateVtbl; ret->IProvideClassInfo2_iface.lpVtbl = &ProvideClassInfo2Vtbl; - EventTarget_Init(&ret->event_target, (IUnknown*)&ret->IHTMLXMLHttpRequest_iface, - &HTMLXMLHttpRequest_dispex, This->window->doc->document_mode); + EventTarget_Init(&ret->event_target, &HTMLXMLHttpRequest_dispex, This->window->doc->document_mode);
/* Always register the handlers because we need them to track state */ event_listener->nsIDOMEventListener_iface.lpVtbl = &XMLHttpReqEventListenerVtbl; @@ -1853,8 +1852,7 @@ HRESULT HTMLXMLHttpRequestFactory_Create(HTMLInnerWindow* window, HTMLXMLHttpReq ret->IHTMLXMLHttpRequestFactory_iface.lpVtbl = &HTMLXMLHttpRequestFactoryVtbl; ret->window = window;
- init_dispatch(&ret->dispex, (IUnknown*)&ret->IHTMLXMLHttpRequestFactory_iface, - &HTMLXMLHttpRequestFactory_dispex, dispex_compat_mode(&window->event_target.dispex)); + init_dispatch(&ret->dispex, &HTMLXMLHttpRequestFactory_dispex, dispex_compat_mode(&window->event_target.dispex));
*ret_ptr = ret; return S_OK;
From: Gabriel Ivăncescu gabrielopcode@gmail.com
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/mshtml/dispex.c | 34 ++--- dlls/mshtml/htmlattr.c | 20 +-- dlls/mshtml/htmlelem.c | 100 +++------------ dlls/mshtml/htmlelemcol.c | 20 +-- dlls/mshtml/htmlevent.c | 40 +----- dlls/mshtml/htmlimg.c | 20 +-- dlls/mshtml/htmllocation.c | 20 +-- dlls/mshtml/htmlnode.c | 40 +----- dlls/mshtml/htmlselect.c | 20 +-- dlls/mshtml/htmlstorage.c | 20 +-- dlls/mshtml/htmlstyle.c | 20 +-- dlls/mshtml/htmlstylesheet.c | 80 ++---------- dlls/mshtml/htmlwindow.c | 20 +-- dlls/mshtml/mshtml_private.h | 7 - dlls/mshtml/mutation.c | 20 +-- dlls/mshtml/omnavigator.c | 240 ++++++----------------------------- dlls/mshtml/range.c | 40 +----- dlls/mshtml/selection.c | 20 +-- dlls/mshtml/xmlhttprequest.c | 40 +----- 19 files changed, 128 insertions(+), 693 deletions(-)
diff --git a/dlls/mshtml/dispex.c b/dlls/mshtml/dispex.c index c72e23e11a6..28e7d746165 100644 --- a/dlls/mshtml/dispex.c +++ b/dlls/mshtml/dispex.c @@ -1576,7 +1576,7 @@ ret: static ULONG WINAPI DispatchEx_AddRef(IDispatchEx *iface) { DispatchEx *This = impl_from_IDispatchEx(iface); - LONG ref = dispex_ref_incr(This); + LONG ref = ccref_incr(&This->ccref, (nsISupports*)&This->IDispatchEx_iface);
TRACE("%s (%p) ref=%ld\n", This->info->desc->name, This, ref);
@@ -1586,10 +1586,19 @@ static ULONG WINAPI DispatchEx_AddRef(IDispatchEx *iface) static ULONG WINAPI DispatchEx_Release(IDispatchEx *iface) { DispatchEx *This = impl_from_IDispatchEx(iface); - LONG ref = dispex_ref_decr(This); + LONG ref = ccref_decr(&This->ccref, (nsISupports*)&This->IDispatchEx_iface, &dispex_ccp);
TRACE("%s (%p) ref=%ld\n", This->info->desc->name, This, ref);
+ /* Gecko ccref may not free the object immediately when ref count reaches 0, so we need + * an extra care for objects that need an immediate clean up. See Gecko's + * NS_IMPL_CYCLE_COLLECTING_NATIVE_RELEASE_WITH_LAST_RELEASE for details. */ + if(!ref && This->info->desc->vtbl->last_release) { + ccref_incr(&This->ccref, (nsISupports*)&This->IDispatchEx_iface); + This->info->desc->vtbl->last_release(This); + ccref_decr(&This->ccref, (nsISupports*)&This->IDispatchEx_iface, &dispex_ccp); + } + return ref; }
@@ -1951,27 +1960,6 @@ static IDispatchExVtbl DispatchExVtbl = { DispatchEx_GetNameSpaceParent };
-BOOL dispex_query_interface(DispatchEx *This, REFIID riid, void **ppv) -{ - return IDispatchEx_QueryInterface(&This->IDispatchEx_iface, riid, ppv) == S_OK; -} - -LONG dispex_ref_decr(DispatchEx *dispex) -{ - LONG ref = ccref_decr(&dispex->ccref, (nsISupports*)&dispex->IDispatchEx_iface, &dispex_ccp); - - /* Gecko ccref may not free the object immediatelly when ref count reaches 0, so we need - * an extra care for objects that need an immediate clean up. See - * NS_IMPL_CYCLE_COLLECTING_NATIVE_RELEASE_WITH_LAST_RELEASE for details. */ - if(!ref && dispex->info->desc->vtbl->last_release) { - ccref_incr(&dispex->ccref, (nsISupports*)&dispex->IDispatchEx_iface); - dispex->info->desc->vtbl->last_release(dispex); - ccref_decr(&dispex->ccref, (nsISupports*)&dispex->IDispatchEx_iface, &dispex_ccp); - } - - return ref; -} - static nsresult NSAPI dispex_traverse(void *ccp, void *p, nsCycleCollectionTraversalCallback *cb) { DispatchEx *This = impl_from_IDispatchEx(p); diff --git a/dlls/mshtml/htmlattr.c b/dlls/mshtml/htmlattr.c index 9e78ed625f7..4d9e9908c22 100644 --- a/dlls/mshtml/htmlattr.c +++ b/dlls/mshtml/htmlattr.c @@ -41,33 +41,19 @@ static HRESULT WINAPI HTMLDOMAttribute_QueryInterface(IHTMLDOMAttribute *iface, REFIID riid, void **ppv) { HTMLDOMAttribute *This = impl_from_IHTMLDOMAttribute(iface); - - if(dispex_query_interface(&This->dispex, riid, ppv)) - return *ppv ? S_OK : E_NOINTERFACE; - - *ppv = NULL; - WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - return E_NOINTERFACE; + return IDispatchEx_QueryInterface(&This->dispex.IDispatchEx_iface, riid, ppv); }
static ULONG WINAPI HTMLDOMAttribute_AddRef(IHTMLDOMAttribute *iface) { HTMLDOMAttribute *This = impl_from_IHTMLDOMAttribute(iface); - LONG ref = dispex_ref_incr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_AddRef(&This->dispex.IDispatchEx_iface); }
static ULONG WINAPI HTMLDOMAttribute_Release(IHTMLDOMAttribute *iface) { HTMLDOMAttribute *This = impl_from_IHTMLDOMAttribute(iface); - LONG ref = dispex_ref_decr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_Release(&This->dispex.IDispatchEx_iface); }
static HRESULT WINAPI HTMLDOMAttribute_GetTypeInfoCount(IHTMLDOMAttribute *iface, UINT *pctinfo) diff --git a/dlls/mshtml/htmlelem.c b/dlls/mshtml/htmlelem.c index 00b6d402ad2..933662f0d5d 100644 --- a/dlls/mshtml/htmlelem.c +++ b/dlls/mshtml/htmlelem.c @@ -540,33 +540,19 @@ static inline HTMLRect *impl_from_IHTMLRect(IHTMLRect *iface) static HRESULT WINAPI HTMLRect_QueryInterface(IHTMLRect *iface, REFIID riid, void **ppv) { HTMLRect *This = impl_from_IHTMLRect(iface); - - if(dispex_query_interface(&This->dispex, riid, ppv)) - return *ppv ? S_OK : E_NOINTERFACE; - - *ppv = NULL; - WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - return E_NOINTERFACE; + return IDispatchEx_QueryInterface(&This->dispex.IDispatchEx_iface, riid, ppv); }
static ULONG WINAPI HTMLRect_AddRef(IHTMLRect *iface) { HTMLRect *This = impl_from_IHTMLRect(iface); - LONG ref = dispex_ref_incr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_AddRef(&This->dispex.IDispatchEx_iface); }
static ULONG WINAPI HTMLRect_Release(IHTMLRect *iface) { HTMLRect *This = impl_from_IHTMLRect(iface); - LONG ref = dispex_ref_decr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_Release(&This->dispex.IDispatchEx_iface); }
static HRESULT WINAPI HTMLRect_GetTypeInfoCount(IHTMLRect *iface, UINT *pctinfo) @@ -1047,33 +1033,19 @@ static inline HTMLRectCollection *impl_from_IHTMLRectCollection(IHTMLRectCollect static HRESULT WINAPI HTMLRectCollection_QueryInterface(IHTMLRectCollection *iface, REFIID riid, void **ppv) { HTMLRectCollection *This = impl_from_IHTMLRectCollection(iface); - - if(dispex_query_interface(&This->dispex, riid, ppv)) - return *ppv ? S_OK : E_NOINTERFACE; - - *ppv = NULL; - WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - return E_NOINTERFACE; + return IDispatchEx_QueryInterface(&This->dispex.IDispatchEx_iface, riid, ppv); }
static ULONG WINAPI HTMLRectCollection_AddRef(IHTMLRectCollection *iface) { HTMLRectCollection *This = impl_from_IHTMLRectCollection(iface); - LONG ref = dispex_ref_incr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_AddRef(&This->dispex.IDispatchEx_iface); }
static ULONG WINAPI HTMLRectCollection_Release(IHTMLRectCollection *iface) { HTMLRectCollection *This = impl_from_IHTMLRectCollection(iface); - LONG ref = dispex_ref_decr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_Release(&This->dispex.IDispatchEx_iface); }
static HRESULT WINAPI HTMLRectCollection_GetTypeInfoCount(IHTMLRectCollection *iface, UINT *pctinfo) @@ -7382,33 +7354,19 @@ static inline struct token_list *impl_from_IWineDOMTokenList(IWineDOMTokenList * static HRESULT WINAPI token_list_QueryInterface(IWineDOMTokenList *iface, REFIID riid, void **ppv) { struct token_list *token_list = impl_from_IWineDOMTokenList(iface); - - if(dispex_query_interface(&token_list->dispex, riid, ppv)) - return *ppv ? S_OK : E_NOINTERFACE; - - *ppv = NULL; - WARN("(%p)->(%s %p)\n", token_list, debugstr_mshtml_guid(riid), ppv); - return E_NOINTERFACE; + return IDispatchEx_QueryInterface(&token_list->dispex.IDispatchEx_iface, riid, ppv); }
static ULONG WINAPI token_list_AddRef(IWineDOMTokenList *iface) { struct token_list *token_list = impl_from_IWineDOMTokenList(iface); - LONG ref = dispex_ref_incr(&token_list->dispex); - - TRACE("(%p) ref=%ld\n", token_list, ref); - - return ref; + return IDispatchEx_AddRef(&token_list->dispex.IDispatchEx_iface); }
static ULONG WINAPI token_list_Release(IWineDOMTokenList *iface) { struct token_list *token_list = impl_from_IWineDOMTokenList(iface); - LONG ref = dispex_ref_decr(&token_list->dispex); - - TRACE("(%p) ref=%ld\n", token_list, ref); - - return ref; + return IDispatchEx_Release(&token_list->dispex.IDispatchEx_iface); }
static HRESULT WINAPI token_list_GetTypeInfoCount(IWineDOMTokenList *iface, UINT *pctinfo) @@ -8093,33 +8051,19 @@ HRESULT get_element(nsIDOMElement *nselem, HTMLElement **ret) static HRESULT WINAPI HTMLFiltersCollection_QueryInterface(IHTMLFiltersCollection *iface, REFIID riid, void **ppv) { HTMLFiltersCollection *This = impl_from_IHTMLFiltersCollection(iface); - - if(dispex_query_interface(&This->dispex, riid, ppv)) - return *ppv ? S_OK : E_NOINTERFACE; - - *ppv = NULL; - WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - return E_NOINTERFACE; + return IDispatchEx_QueryInterface(&This->dispex.IDispatchEx_iface, riid, ppv); }
static ULONG WINAPI HTMLFiltersCollection_AddRef(IHTMLFiltersCollection *iface) { HTMLFiltersCollection *This = impl_from_IHTMLFiltersCollection(iface); - LONG ref = dispex_ref_incr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_AddRef(&This->dispex.IDispatchEx_iface); }
static ULONG WINAPI HTMLFiltersCollection_Release(IHTMLFiltersCollection *iface) { HTMLFiltersCollection *This = impl_from_IHTMLFiltersCollection(iface); - LONG ref = dispex_ref_decr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_Release(&This->dispex.IDispatchEx_iface); }
static HRESULT WINAPI HTMLFiltersCollection_GetTypeInfoCount(IHTMLFiltersCollection *iface, UINT *pctinfo) @@ -8542,33 +8486,19 @@ static inline HTMLAttributeCollection *impl_from_IHTMLAttributeCollection(IHTMLA static HRESULT WINAPI HTMLAttributeCollection_QueryInterface(IHTMLAttributeCollection *iface, REFIID riid, void **ppv) { HTMLAttributeCollection *This = impl_from_IHTMLAttributeCollection(iface); - - if(dispex_query_interface(&This->dispex, riid, ppv)) - return *ppv ? S_OK : E_NOINTERFACE; - - *ppv = NULL; - WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - return E_NOINTERFACE; + return IDispatchEx_QueryInterface(&This->dispex.IDispatchEx_iface, riid, ppv); }
static ULONG WINAPI HTMLAttributeCollection_AddRef(IHTMLAttributeCollection *iface) { HTMLAttributeCollection *This = impl_from_IHTMLAttributeCollection(iface); - LONG ref = dispex_ref_incr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_AddRef(&This->dispex.IDispatchEx_iface); }
static ULONG WINAPI HTMLAttributeCollection_Release(IHTMLAttributeCollection *iface) { HTMLAttributeCollection *This = impl_from_IHTMLAttributeCollection(iface); - LONG ref = dispex_ref_decr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_Release(&This->dispex.IDispatchEx_iface); }
static HRESULT WINAPI HTMLAttributeCollection_GetTypeInfoCount(IHTMLAttributeCollection *iface, UINT *pctinfo) diff --git a/dlls/mshtml/htmlelemcol.c b/dlls/mshtml/htmlelemcol.c index 42194da838d..8ebe741c309 100644 --- a/dlls/mshtml/htmlelemcol.c +++ b/dlls/mshtml/htmlelemcol.c @@ -214,33 +214,19 @@ static HRESULT WINAPI HTMLElementCollection_QueryInterface(IHTMLElementCollectio REFIID riid, void **ppv) { HTMLElementCollection *This = impl_from_IHTMLElementCollection(iface); - - if(dispex_query_interface(&This->dispex, riid, ppv)) - return *ppv ? S_OK : E_NOINTERFACE; - - *ppv = NULL; - WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - return E_NOINTERFACE; + return IDispatchEx_QueryInterface(&This->dispex.IDispatchEx_iface, riid, ppv); }
static ULONG WINAPI HTMLElementCollection_AddRef(IHTMLElementCollection *iface) { HTMLElementCollection *This = impl_from_IHTMLElementCollection(iface); - LONG ref = dispex_ref_incr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_AddRef(&This->dispex.IDispatchEx_iface); }
static ULONG WINAPI HTMLElementCollection_Release(IHTMLElementCollection *iface) { HTMLElementCollection *This = impl_from_IHTMLElementCollection(iface); - LONG ref = dispex_ref_decr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_Release(&This->dispex.IDispatchEx_iface); }
static HRESULT WINAPI HTMLElementCollection_GetTypeInfoCount(IHTMLElementCollection *iface, diff --git a/dlls/mshtml/htmlevent.c b/dlls/mshtml/htmlevent.c index a01b24c9973..ccf7db052a3 100644 --- a/dlls/mshtml/htmlevent.c +++ b/dlls/mshtml/htmlevent.c @@ -362,33 +362,19 @@ static inline HTMLEventObj *impl_from_IHTMLEventObj(IHTMLEventObj *iface) static HRESULT WINAPI HTMLEventObj_QueryInterface(IHTMLEventObj *iface, REFIID riid, void **ppv) { HTMLEventObj *This = impl_from_IHTMLEventObj(iface); - - if(dispex_query_interface(&This->dispex, riid, ppv)) - return *ppv ? S_OK : E_NOINTERFACE; - - *ppv = NULL; - WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - return E_NOINTERFACE; + return IDispatchEx_QueryInterface(&This->dispex.IDispatchEx_iface, riid, ppv); }
static ULONG WINAPI HTMLEventObj_AddRef(IHTMLEventObj *iface) { HTMLEventObj *This = impl_from_IHTMLEventObj(iface); - LONG ref = dispex_ref_incr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_AddRef(&This->dispex.IDispatchEx_iface); }
static ULONG WINAPI HTMLEventObj_Release(IHTMLEventObj *iface) { HTMLEventObj *This = impl_from_IHTMLEventObj(iface); - LONG ref = dispex_ref_decr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_Release(&This->dispex.IDispatchEx_iface); }
static HRESULT WINAPI HTMLEventObj_GetTypeInfoCount(IHTMLEventObj *iface, UINT *pctinfo) @@ -969,33 +955,19 @@ static inline DOMEvent *unsafe_impl_from_IDOMEvent(IDOMEvent *iface) static HRESULT WINAPI DOMEvent_QueryInterface(IDOMEvent *iface, REFIID riid, void **ppv) { DOMEvent *This = impl_from_IDOMEvent(iface); - - if(dispex_query_interface(&This->dispex, riid, ppv)) - return *ppv ? S_OK : E_NOINTERFACE; - - *ppv = NULL; - WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - return E_NOINTERFACE; + return IDispatchEx_QueryInterface(&This->dispex.IDispatchEx_iface, riid, ppv); }
static ULONG WINAPI DOMEvent_AddRef(IDOMEvent *iface) { DOMEvent *This = impl_from_IDOMEvent(iface); - LONG ref = dispex_ref_incr(&This->dispex); - - TRACE("(%p) ref=%lu\n", This, ref); - - return ref; + return IDispatchEx_AddRef(&This->dispex.IDispatchEx_iface); }
static ULONG WINAPI DOMEvent_Release(IDOMEvent *iface) { DOMEvent *This = impl_from_IDOMEvent(iface); - LONG ref = dispex_ref_decr(&This->dispex); - - TRACE("(%p) ref=%lu\n", This, ref); - - return ref; + return IDispatchEx_Release(&This->dispex.IDispatchEx_iface); }
static HRESULT WINAPI DOMEvent_GetTypeInfoCount(IDOMEvent *iface, UINT *pctinfo) diff --git a/dlls/mshtml/htmlimg.c b/dlls/mshtml/htmlimg.c index 70fab4a3876..1a9266b2295 100644 --- a/dlls/mshtml/htmlimg.c +++ b/dlls/mshtml/htmlimg.c @@ -757,33 +757,19 @@ static HRESULT WINAPI HTMLImageElementFactory_QueryInterface(IHTMLImageElementFa REFIID riid, void **ppv) { HTMLImageElementFactory *This = impl_from_IHTMLImageElementFactory(iface); - - if(dispex_query_interface(&This->dispex, riid, ppv)) - return *ppv ? S_OK : E_NOINTERFACE; - - *ppv = NULL; - WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - return E_NOINTERFACE; + return IDispatchEx_QueryInterface(&This->dispex.IDispatchEx_iface, riid, ppv); }
static ULONG WINAPI HTMLImageElementFactory_AddRef(IHTMLImageElementFactory *iface) { HTMLImageElementFactory *This = impl_from_IHTMLImageElementFactory(iface); - LONG ref = dispex_ref_incr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_AddRef(&This->dispex.IDispatchEx_iface); }
static ULONG WINAPI HTMLImageElementFactory_Release(IHTMLImageElementFactory *iface) { HTMLImageElementFactory *This = impl_from_IHTMLImageElementFactory(iface); - LONG ref = dispex_ref_decr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_Release(&This->dispex.IDispatchEx_iface); }
static HRESULT WINAPI HTMLImageElementFactory_GetTypeInfoCount(IHTMLImageElementFactory *iface, diff --git a/dlls/mshtml/htmllocation.c b/dlls/mshtml/htmllocation.c index 5f3e41407ca..92701cb42bc 100644 --- a/dlls/mshtml/htmllocation.c +++ b/dlls/mshtml/htmllocation.c @@ -62,33 +62,19 @@ static inline HTMLLocation *impl_from_IHTMLLocation(IHTMLLocation *iface) static HRESULT WINAPI HTMLLocation_QueryInterface(IHTMLLocation *iface, REFIID riid, void **ppv) { HTMLLocation *This = impl_from_IHTMLLocation(iface); - - if(dispex_query_interface(&This->dispex, riid, ppv)) - return *ppv ? S_OK : E_NOINTERFACE; - - *ppv = NULL; - WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - return E_NOINTERFACE; + return IDispatchEx_QueryInterface(&This->dispex.IDispatchEx_iface, riid, ppv); }
static ULONG WINAPI HTMLLocation_AddRef(IHTMLLocation *iface) { HTMLLocation *This = impl_from_IHTMLLocation(iface); - LONG ref = dispex_ref_incr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_AddRef(&This->dispex.IDispatchEx_iface); }
static ULONG WINAPI HTMLLocation_Release(IHTMLLocation *iface) { HTMLLocation *This = impl_from_IHTMLLocation(iface); - LONG ref = dispex_ref_decr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_Release(&This->dispex.IDispatchEx_iface); }
static HRESULT WINAPI HTMLLocation_GetTypeInfoCount(IHTMLLocation *iface, UINT *pctinfo) diff --git a/dlls/mshtml/htmlnode.c b/dlls/mshtml/htmlnode.c index 6646cec2564..407142f828c 100644 --- a/dlls/mshtml/htmlnode.c +++ b/dlls/mshtml/htmlnode.c @@ -199,33 +199,19 @@ static inline HTMLDOMChildrenCollection *impl_from_IHTMLDOMChildrenCollection(IH static HRESULT WINAPI HTMLDOMChildrenCollection_QueryInterface(IHTMLDOMChildrenCollection *iface, REFIID riid, void **ppv) { HTMLDOMChildrenCollection *This = impl_from_IHTMLDOMChildrenCollection(iface); - - if(dispex_query_interface(&This->dispex, riid, ppv)) - return *ppv ? S_OK : E_NOINTERFACE; - - *ppv = NULL; - WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - return E_NOINTERFACE; + return IDispatchEx_QueryInterface(&This->dispex.IDispatchEx_iface, riid, ppv); }
static ULONG WINAPI HTMLDOMChildrenCollection_AddRef(IHTMLDOMChildrenCollection *iface) { HTMLDOMChildrenCollection *This = impl_from_IHTMLDOMChildrenCollection(iface); - LONG ref = dispex_ref_incr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_AddRef(&This->dispex.IDispatchEx_iface); }
static ULONG WINAPI HTMLDOMChildrenCollection_Release(IHTMLDOMChildrenCollection *iface) { HTMLDOMChildrenCollection *This = impl_from_IHTMLDOMChildrenCollection(iface); - LONG ref = dispex_ref_decr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_Release(&This->dispex.IDispatchEx_iface); }
static HRESULT WINAPI HTMLDOMChildrenCollection_GetTypeInfoCount(IHTMLDOMChildrenCollection *iface, UINT *pctinfo) @@ -492,33 +478,19 @@ static HRESULT WINAPI HTMLDOMNode_QueryInterface(IHTMLDOMNode *iface, REFIID riid, void **ppv) { HTMLDOMNode *This = impl_from_IHTMLDOMNode(iface); - - if(dispex_query_interface(&This->event_target.dispex, riid, ppv)) - return *ppv ? S_OK : E_NOINTERFACE; - - *ppv = NULL; - WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - return E_NOINTERFACE; + return IDispatchEx_QueryInterface(&This->event_target.dispex.IDispatchEx_iface, riid, ppv); }
static ULONG WINAPI HTMLDOMNode_AddRef(IHTMLDOMNode *iface) { HTMLDOMNode *This = impl_from_IHTMLDOMNode(iface); - LONG ref = dispex_ref_incr(&This->event_target.dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_AddRef(&This->event_target.dispex.IDispatchEx_iface); }
static ULONG WINAPI HTMLDOMNode_Release(IHTMLDOMNode *iface) { HTMLDOMNode *This = impl_from_IHTMLDOMNode(iface); - LONG ref = dispex_ref_decr(&This->event_target.dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_Release(&This->event_target.dispex.IDispatchEx_iface); }
static HRESULT WINAPI HTMLDOMNode_GetTypeInfoCount(IHTMLDOMNode *iface, UINT *pctinfo) diff --git a/dlls/mshtml/htmlselect.c b/dlls/mshtml/htmlselect.c index 8b27068d4e3..ba620021822 100644 --- a/dlls/mshtml/htmlselect.c +++ b/dlls/mshtml/htmlselect.c @@ -429,33 +429,19 @@ static HRESULT WINAPI HTMLOptionElementFactory_QueryInterface(IHTMLOptionElement REFIID riid, void **ppv) { HTMLOptionElementFactory *This = impl_from_IHTMLOptionElementFactory(iface); - - if(dispex_query_interface(&This->dispex, riid, ppv)) - return *ppv ? S_OK : E_NOINTERFACE; - - *ppv = NULL; - WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - return E_NOINTERFACE; + return IDispatchEx_QueryInterface(&This->dispex.IDispatchEx_iface, riid, ppv); }
static ULONG WINAPI HTMLOptionElementFactory_AddRef(IHTMLOptionElementFactory *iface) { HTMLOptionElementFactory *This = impl_from_IHTMLOptionElementFactory(iface); - LONG ref = dispex_ref_incr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_AddRef(&This->dispex.IDispatchEx_iface); }
static ULONG WINAPI HTMLOptionElementFactory_Release(IHTMLOptionElementFactory *iface) { HTMLOptionElementFactory *This = impl_from_IHTMLOptionElementFactory(iface); - LONG ref = dispex_ref_decr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_Release(&This->dispex.IDispatchEx_iface); }
static HRESULT WINAPI HTMLOptionElementFactory_GetTypeInfoCount(IHTMLOptionElementFactory *iface, UINT *pctinfo) diff --git a/dlls/mshtml/htmlstorage.c b/dlls/mshtml/htmlstorage.c index a986bbead3d..d3bbb30580e 100644 --- a/dlls/mshtml/htmlstorage.c +++ b/dlls/mshtml/htmlstorage.c @@ -362,33 +362,19 @@ done: static HRESULT WINAPI HTMLStorage_QueryInterface(IHTMLStorage *iface, REFIID riid, void **ppv) { HTMLStorage *This = impl_from_IHTMLStorage(iface); - - if(dispex_query_interface(&This->dispex, riid, ppv)) - return *ppv ? S_OK : E_NOINTERFACE; - - *ppv = NULL; - WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - return E_NOINTERFACE; + return IDispatchEx_QueryInterface(&This->dispex.IDispatchEx_iface, riid, ppv); }
static ULONG WINAPI HTMLStorage_AddRef(IHTMLStorage *iface) { HTMLStorage *This = impl_from_IHTMLStorage(iface); - LONG ref = dispex_ref_incr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_AddRef(&This->dispex.IDispatchEx_iface); }
static ULONG WINAPI HTMLStorage_Release(IHTMLStorage *iface) { HTMLStorage *This = impl_from_IHTMLStorage(iface); - LONG ref = dispex_ref_decr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_Release(&This->dispex.IDispatchEx_iface); }
static HRESULT WINAPI HTMLStorage_GetTypeInfoCount(IHTMLStorage *iface, UINT *pctinfo) diff --git a/dlls/mshtml/htmlstyle.c b/dlls/mshtml/htmlstyle.c index 7fd8521db85..8ce2521fcc1 100644 --- a/dlls/mshtml/htmlstyle.c +++ b/dlls/mshtml/htmlstyle.c @@ -4734,33 +4734,19 @@ static HRESULT WINAPI HTMLCSSStyleDeclaration_QueryInterface(IHTMLCSSStyleDeclar REFIID riid, void **ppv) { CSSStyle *This = impl_from_IHTMLCSSStyleDeclaration(iface); - - if(dispex_query_interface(&This->dispex, riid, ppv)) - return *ppv ? S_OK : E_NOINTERFACE; - - *ppv = NULL; - WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - return E_NOINTERFACE; + return IDispatchEx_QueryInterface(&This->dispex.IDispatchEx_iface, riid, ppv); }
static ULONG WINAPI HTMLCSSStyleDeclaration_AddRef(IHTMLCSSStyleDeclaration *iface) { CSSStyle *This = impl_from_IHTMLCSSStyleDeclaration(iface); - LONG ref = dispex_ref_incr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_AddRef(&This->dispex.IDispatchEx_iface); }
static ULONG WINAPI HTMLCSSStyleDeclaration_Release(IHTMLCSSStyleDeclaration *iface) { CSSStyle *This = impl_from_IHTMLCSSStyleDeclaration(iface); - LONG ref = dispex_ref_decr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_Release(&This->dispex.IDispatchEx_iface); }
static HRESULT WINAPI HTMLCSSStyleDeclaration_GetTypeInfoCount(IHTMLCSSStyleDeclaration *iface, diff --git a/dlls/mshtml/htmlstylesheet.c b/dlls/mshtml/htmlstylesheet.c index 26431b3645a..496eabb485a 100644 --- a/dlls/mshtml/htmlstylesheet.c +++ b/dlls/mshtml/htmlstylesheet.c @@ -78,33 +78,19 @@ static HRESULT WINAPI HTMLStyleSheetRule_QueryInterface(IHTMLStyleSheetRule *ifa REFIID riid, void **ppv) { HTMLStyleSheetRule *This = impl_from_IHTMLStyleSheetRule(iface); - - if(dispex_query_interface(&This->dispex, riid, ppv)) - return *ppv ? S_OK : E_NOINTERFACE; - - *ppv = NULL; - WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - return E_NOINTERFACE; + return IDispatchEx_QueryInterface(&This->dispex.IDispatchEx_iface, riid, ppv); }
static ULONG WINAPI HTMLStyleSheetRule_AddRef(IHTMLStyleSheetRule *iface) { HTMLStyleSheetRule *This = impl_from_IHTMLStyleSheetRule(iface); - LONG ref = dispex_ref_incr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_AddRef(&This->dispex.IDispatchEx_iface); }
static ULONG WINAPI HTMLStyleSheetRule_Release(IHTMLStyleSheetRule *iface) { HTMLStyleSheetRule *This = impl_from_IHTMLStyleSheetRule(iface); - LONG ref = dispex_ref_decr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_Release(&This->dispex.IDispatchEx_iface); }
static HRESULT WINAPI HTMLStyleSheetRule_GetTypeInfoCount( @@ -267,33 +253,19 @@ static HRESULT WINAPI HTMLStyleSheetRulesCollection_QueryInterface(IHTMLStyleShe REFIID riid, void **ppv) { HTMLStyleSheetRulesCollection *This = impl_from_IHTMLStyleSheetRulesCollection(iface); - - if(dispex_query_interface(&This->dispex, riid, ppv)) - return *ppv ? S_OK : E_NOINTERFACE; - - *ppv = NULL; - WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - return E_NOINTERFACE; + return IDispatchEx_QueryInterface(&This->dispex.IDispatchEx_iface, riid, ppv); }
static ULONG WINAPI HTMLStyleSheetRulesCollection_AddRef(IHTMLStyleSheetRulesCollection *iface) { HTMLStyleSheetRulesCollection *This = impl_from_IHTMLStyleSheetRulesCollection(iface); - LONG ref = dispex_ref_incr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_AddRef(&This->dispex.IDispatchEx_iface); }
static ULONG WINAPI HTMLStyleSheetRulesCollection_Release(IHTMLStyleSheetRulesCollection *iface) { HTMLStyleSheetRulesCollection *This = impl_from_IHTMLStyleSheetRulesCollection(iface); - LONG ref = dispex_ref_decr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_Release(&This->dispex.IDispatchEx_iface); }
static HRESULT WINAPI HTMLStyleSheetRulesCollection_GetTypeInfoCount( @@ -663,33 +635,19 @@ static HRESULT WINAPI HTMLStyleSheetsCollection_QueryInterface(IHTMLStyleSheetsC REFIID riid, void **ppv) { HTMLStyleSheetsCollection *This = impl_from_IHTMLStyleSheetsCollection(iface); - - if(dispex_query_interface(&This->dispex, riid, ppv)) - return *ppv ? S_OK : E_NOINTERFACE; - - *ppv = NULL; - WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - return E_NOINTERFACE; + return IDispatchEx_QueryInterface(&This->dispex.IDispatchEx_iface, riid, ppv); }
static ULONG WINAPI HTMLStyleSheetsCollection_AddRef(IHTMLStyleSheetsCollection *iface) { HTMLStyleSheetsCollection *This = impl_from_IHTMLStyleSheetsCollection(iface); - LONG ref = dispex_ref_incr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_AddRef(&This->dispex.IDispatchEx_iface); }
static ULONG WINAPI HTMLStyleSheetsCollection_Release(IHTMLStyleSheetsCollection *iface) { HTMLStyleSheetsCollection *This = impl_from_IHTMLStyleSheetsCollection(iface); - LONG ref = dispex_ref_decr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_Release(&This->dispex.IDispatchEx_iface); }
static HRESULT WINAPI HTMLStyleSheetsCollection_GetTypeInfoCount(IHTMLStyleSheetsCollection *iface, @@ -976,33 +934,19 @@ static inline HTMLStyleSheet *impl_from_IHTMLStyleSheet(IHTMLStyleSheet *iface) static HRESULT WINAPI HTMLStyleSheet_QueryInterface(IHTMLStyleSheet *iface, REFIID riid, void **ppv) { HTMLStyleSheet *This = impl_from_IHTMLStyleSheet(iface); - - if(dispex_query_interface(&This->dispex, riid, ppv)) - return *ppv ? S_OK : E_NOINTERFACE; - - *ppv = NULL; - WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - return E_NOINTERFACE; + return IDispatchEx_QueryInterface(&This->dispex.IDispatchEx_iface, riid, ppv); }
static ULONG WINAPI HTMLStyleSheet_AddRef(IHTMLStyleSheet *iface) { HTMLStyleSheet *This = impl_from_IHTMLStyleSheet(iface); - LONG ref = dispex_ref_incr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_AddRef(&This->dispex.IDispatchEx_iface); }
static ULONG WINAPI HTMLStyleSheet_Release(IHTMLStyleSheet *iface) { HTMLStyleSheet *This = impl_from_IHTMLStyleSheet(iface); - LONG ref = dispex_ref_decr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_Release(&This->dispex.IDispatchEx_iface); }
static HRESULT WINAPI HTMLStyleSheet_GetTypeInfoCount(IHTMLStyleSheet *iface, UINT *pctinfo) diff --git a/dlls/mshtml/htmlwindow.c b/dlls/mshtml/htmlwindow.c index fe896128aeb..ebdde0abe2b 100644 --- a/dlls/mshtml/htmlwindow.c +++ b/dlls/mshtml/htmlwindow.c @@ -208,33 +208,19 @@ static void *base_query_interface(HTMLWindow *This, REFIID riid) static HRESULT WINAPI HTMLWindow2_QueryInterface(IHTMLWindow2 *iface, REFIID riid, void **ppv) { HTMLInnerWindow *This = HTMLInnerWindow_from_IHTMLWindow2(iface); - - if(dispex_query_interface(&This->event_target.dispex, riid, ppv)) - return *ppv ? S_OK : E_NOINTERFACE; - - *ppv = NULL; - WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - return E_NOINTERFACE; + return IDispatchEx_QueryInterface(&This->event_target.dispex.IDispatchEx_iface, riid, ppv); }
static ULONG WINAPI HTMLWindow2_AddRef(IHTMLWindow2 *iface) { HTMLInnerWindow *This = HTMLInnerWindow_from_IHTMLWindow2(iface); - LONG ref = dispex_ref_incr(&This->event_target.dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_AddRef(&This->event_target.dispex.IDispatchEx_iface); }
static ULONG WINAPI HTMLWindow2_Release(IHTMLWindow2 *iface) { HTMLInnerWindow *This = HTMLInnerWindow_from_IHTMLWindow2(iface); - LONG ref = dispex_ref_decr(&This->event_target.dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_Release(&This->event_target.dispex.IDispatchEx_iface); }
static HRESULT WINAPI outer_window_QueryInterface(IHTMLWindow2 *iface, REFIID riid, void **ppv) diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index 27c66811019..59fbffa078c 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -432,14 +432,7 @@ extern void (__cdecl *ccp_init)(ExternalCycleCollectionParticipant*,const CCObjC extern void (__cdecl *describe_cc_node)(nsCycleCollectingAutoRefCnt*,const char*,nsCycleCollectionTraversalCallback*); extern void (__cdecl *note_cc_edge)(nsISupports*,const char*,nsCycleCollectionTraversalCallback*);
-static inline LONG dispex_ref_incr(DispatchEx *dispex) -{ - return ccref_incr(&dispex->ccref, (nsISupports*)&dispex->IDispatchEx_iface); -} -extern LONG dispex_ref_decr(DispatchEx*); - void init_dispatch(DispatchEx*,dispex_static_data_t*,compat_mode_t); -BOOL dispex_query_interface(DispatchEx*,REFIID,void**); void dispex_props_unlink(DispatchEx*); HRESULT change_type(VARIANT*,VARIANT*,VARTYPE,IServiceProvider*); HRESULT dispex_get_dprop_ref(DispatchEx*,const WCHAR*,BOOL,VARIANT**); diff --git a/dlls/mshtml/mutation.c b/dlls/mshtml/mutation.c index c53a059c242..a1438debd6f 100644 --- a/dlls/mshtml/mutation.c +++ b/dlls/mshtml/mutation.c @@ -1092,33 +1092,19 @@ static inline struct mutation_observer *impl_from_IWineMSHTMLMutationObserver(IW static HRESULT WINAPI MutationObserver_QueryInterface(IWineMSHTMLMutationObserver *iface, REFIID riid, void **ppv) { struct mutation_observer *This = impl_from_IWineMSHTMLMutationObserver(iface); - - if(dispex_query_interface(&This->dispex, riid, ppv)) - return *ppv ? S_OK : E_NOINTERFACE; - - *ppv = NULL; - WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - return E_NOINTERFACE; + return IDispatchEx_QueryInterface(&This->dispex.IDispatchEx_iface, riid, ppv); }
static ULONG WINAPI MutationObserver_AddRef(IWineMSHTMLMutationObserver *iface) { struct mutation_observer *This = impl_from_IWineMSHTMLMutationObserver(iface); - LONG ref = dispex_ref_incr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_AddRef(&This->dispex.IDispatchEx_iface); }
static ULONG WINAPI MutationObserver_Release(IWineMSHTMLMutationObserver *iface) { struct mutation_observer *This = impl_from_IWineMSHTMLMutationObserver(iface); - LONG ref = dispex_ref_decr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_Release(&This->dispex.IDispatchEx_iface); }
static HRESULT WINAPI MutationObserver_GetTypeInfoCount(IWineMSHTMLMutationObserver *iface, UINT *pctinfo) diff --git a/dlls/mshtml/omnavigator.c b/dlls/mshtml/omnavigator.c index 08577245ef1..58cd0c78fb2 100644 --- a/dlls/mshtml/omnavigator.c +++ b/dlls/mshtml/omnavigator.c @@ -59,33 +59,19 @@ static inline HTMLDOMImplementation *impl_from_IHTMLDOMImplementation(IHTMLDOMIm static HRESULT WINAPI HTMLDOMImplementation_QueryInterface(IHTMLDOMImplementation *iface, REFIID riid, void **ppv) { HTMLDOMImplementation *This = impl_from_IHTMLDOMImplementation(iface); - - if(dispex_query_interface(&This->dispex, riid, ppv)) - return *ppv ? S_OK : E_NOINTERFACE; - - *ppv = NULL; - WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - return E_NOINTERFACE; + return IDispatchEx_QueryInterface(&This->dispex.IDispatchEx_iface, riid, ppv); }
static ULONG WINAPI HTMLDOMImplementation_AddRef(IHTMLDOMImplementation *iface) { HTMLDOMImplementation *This = impl_from_IHTMLDOMImplementation(iface); - LONG ref = dispex_ref_incr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_AddRef(&This->dispex.IDispatchEx_iface); }
static ULONG WINAPI HTMLDOMImplementation_Release(IHTMLDOMImplementation *iface) { HTMLDOMImplementation *This = impl_from_IHTMLDOMImplementation(iface); - LONG ref = dispex_ref_decr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_Release(&This->dispex.IDispatchEx_iface); }
static HRESULT WINAPI HTMLDOMImplementation_GetTypeInfoCount(IHTMLDOMImplementation *iface, UINT *pctinfo) @@ -382,33 +368,19 @@ static inline HTMLScreen *impl_from_IHTMLScreen(IHTMLScreen *iface) static HRESULT WINAPI HTMLScreen_QueryInterface(IHTMLScreen *iface, REFIID riid, void **ppv) { HTMLScreen *This = impl_from_IHTMLScreen(iface); - - if(dispex_query_interface(&This->dispex, riid, ppv)) - return *ppv ? S_OK : E_NOINTERFACE; - - *ppv = NULL; - WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - return E_NOINTERFACE; + return IDispatchEx_QueryInterface(&This->dispex.IDispatchEx_iface, riid, ppv); }
static ULONG WINAPI HTMLScreen_AddRef(IHTMLScreen *iface) { HTMLScreen *This = impl_from_IHTMLScreen(iface); - LONG ref = dispex_ref_incr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_AddRef(&This->dispex.IDispatchEx_iface); }
static ULONG WINAPI HTMLScreen_Release(IHTMLScreen *iface) { HTMLScreen *This = impl_from_IHTMLScreen(iface); - LONG ref = dispex_ref_decr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_Release(&This->dispex.IDispatchEx_iface); }
static HRESULT WINAPI HTMLScreen_GetTypeInfoCount(IHTMLScreen *iface, UINT *pctinfo) @@ -617,33 +589,19 @@ static inline OmHistory *impl_from_IOmHistory(IOmHistory *iface) static HRESULT WINAPI OmHistory_QueryInterface(IOmHistory *iface, REFIID riid, void **ppv) { OmHistory *This = impl_from_IOmHistory(iface); - - if(dispex_query_interface(&This->dispex, riid, ppv)) - return *ppv ? S_OK : E_NOINTERFACE; - - *ppv = NULL; - WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - return E_NOINTERFACE; + return IDispatchEx_QueryInterface(&This->dispex.IDispatchEx_iface, riid, ppv); }
static ULONG WINAPI OmHistory_AddRef(IOmHistory *iface) { OmHistory *This = impl_from_IOmHistory(iface); - LONG ref = dispex_ref_incr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_AddRef(&This->dispex.IDispatchEx_iface); }
static ULONG WINAPI OmHistory_Release(IOmHistory *iface) { OmHistory *This = impl_from_IOmHistory(iface); - LONG ref = dispex_ref_decr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_Release(&This->dispex.IDispatchEx_iface); }
static HRESULT WINAPI OmHistory_GetTypeInfoCount(IOmHistory *iface, UINT *pctinfo) @@ -800,33 +758,19 @@ static inline HTMLPluginsCollection *impl_from_IHTMLPluginsCollection(IHTMLPlugi static HRESULT WINAPI HTMLPluginsCollection_QueryInterface(IHTMLPluginsCollection *iface, REFIID riid, void **ppv) { HTMLPluginsCollection *This = impl_from_IHTMLPluginsCollection(iface); - - if(dispex_query_interface(&This->dispex, riid, ppv)) - return *ppv ? S_OK : E_NOINTERFACE; - - *ppv = NULL; - WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - return E_NOINTERFACE; + return IDispatchEx_QueryInterface(&This->dispex.IDispatchEx_iface, riid, ppv); }
static ULONG WINAPI HTMLPluginsCollection_AddRef(IHTMLPluginsCollection *iface) { HTMLPluginsCollection *This = impl_from_IHTMLPluginsCollection(iface); - LONG ref = dispex_ref_incr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_AddRef(&This->dispex.IDispatchEx_iface); }
static ULONG WINAPI HTMLPluginsCollection_Release(IHTMLPluginsCollection *iface) { HTMLPluginsCollection *This = impl_from_IHTMLPluginsCollection(iface); - LONG ref = dispex_ref_decr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_Release(&This->dispex.IDispatchEx_iface); }
static HRESULT WINAPI HTMLPluginsCollection_GetTypeInfoCount(IHTMLPluginsCollection *iface, UINT *pctinfo) @@ -971,33 +915,19 @@ static inline HTMLMimeTypesCollection *impl_from_IHTMLMimeTypesCollection(IHTMLM static HRESULT WINAPI HTMLMimeTypesCollection_QueryInterface(IHTMLMimeTypesCollection *iface, REFIID riid, void **ppv) { HTMLMimeTypesCollection *This = impl_from_IHTMLMimeTypesCollection(iface); - - if(dispex_query_interface(&This->dispex, riid, ppv)) - return *ppv ? S_OK : E_NOINTERFACE; - - *ppv = NULL; - WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - return E_NOINTERFACE; + return IDispatchEx_QueryInterface(&This->dispex.IDispatchEx_iface, riid, ppv); }
static ULONG WINAPI HTMLMimeTypesCollection_AddRef(IHTMLMimeTypesCollection *iface) { HTMLMimeTypesCollection *This = impl_from_IHTMLMimeTypesCollection(iface); - LONG ref = dispex_ref_incr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_AddRef(&This->dispex.IDispatchEx_iface); }
static ULONG WINAPI HTMLMimeTypesCollection_Release(IHTMLMimeTypesCollection *iface) { HTMLMimeTypesCollection *This = impl_from_IHTMLMimeTypesCollection(iface); - LONG ref = dispex_ref_decr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_Release(&This->dispex.IDispatchEx_iface); }
static HRESULT WINAPI HTMLMimeTypesCollection_GetTypeInfoCount(IHTMLMimeTypesCollection *iface, UINT *pctinfo) @@ -1124,33 +1054,19 @@ static inline OmNavigator *impl_from_IOmNavigator(IOmNavigator *iface) static HRESULT WINAPI OmNavigator_QueryInterface(IOmNavigator *iface, REFIID riid, void **ppv) { OmNavigator *This = impl_from_IOmNavigator(iface); - - if(dispex_query_interface(&This->dispex, riid, ppv)) - return *ppv ? S_OK : E_NOINTERFACE; - - *ppv = NULL; - WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - return E_NOINTERFACE; + return IDispatchEx_QueryInterface(&This->dispex.IDispatchEx_iface, riid, ppv); }
static ULONG WINAPI OmNavigator_AddRef(IOmNavigator *iface) { OmNavigator *This = impl_from_IOmNavigator(iface); - LONG ref = dispex_ref_incr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_AddRef(&This->dispex.IDispatchEx_iface); }
static ULONG WINAPI OmNavigator_Release(IOmNavigator *iface) { OmNavigator *This = impl_from_IOmNavigator(iface); - LONG ref = dispex_ref_decr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_Release(&This->dispex.IDispatchEx_iface); }
static HRESULT WINAPI OmNavigator_GetTypeInfoCount(IOmNavigator *iface, UINT *pctinfo) @@ -1577,33 +1493,19 @@ static inline HTMLPerformanceTiming *impl_from_IHTMLPerformanceTiming(IHTMLPerfo static HRESULT WINAPI HTMLPerformanceTiming_QueryInterface(IHTMLPerformanceTiming *iface, REFIID riid, void **ppv) { HTMLPerformanceTiming *This = impl_from_IHTMLPerformanceTiming(iface); - - if(dispex_query_interface(&This->dispex, riid, ppv)) - return *ppv ? S_OK : E_NOINTERFACE; - - *ppv = NULL; - WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - return E_NOINTERFACE; + return IDispatchEx_QueryInterface(&This->dispex.IDispatchEx_iface, riid, ppv); }
static ULONG WINAPI HTMLPerformanceTiming_AddRef(IHTMLPerformanceTiming *iface) { HTMLPerformanceTiming *This = impl_from_IHTMLPerformanceTiming(iface); - LONG ref = dispex_ref_incr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_AddRef(&This->dispex.IDispatchEx_iface); }
static ULONG WINAPI HTMLPerformanceTiming_Release(IHTMLPerformanceTiming *iface) { HTMLPerformanceTiming *This = impl_from_IHTMLPerformanceTiming(iface); - LONG ref = dispex_ref_decr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_Release(&This->dispex.IDispatchEx_iface); }
static HRESULT WINAPI HTMLPerformanceTiming_GetTypeInfoCount(IHTMLPerformanceTiming *iface, UINT *pctinfo) @@ -1998,33 +1900,19 @@ static inline HTMLPerformanceNavigation *impl_from_IHTMLPerformanceNavigation(IH static HRESULT WINAPI HTMLPerformanceNavigation_QueryInterface(IHTMLPerformanceNavigation *iface, REFIID riid, void **ppv) { HTMLPerformanceNavigation *This = impl_from_IHTMLPerformanceNavigation(iface); - - if(dispex_query_interface(&This->dispex, riid, ppv)) - return *ppv ? S_OK : E_NOINTERFACE; - - *ppv = NULL; - WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - return E_NOINTERFACE; + return IDispatchEx_QueryInterface(&This->dispex.IDispatchEx_iface, riid, ppv); }
static ULONG WINAPI HTMLPerformanceNavigation_AddRef(IHTMLPerformanceNavigation *iface) { HTMLPerformanceNavigation *This = impl_from_IHTMLPerformanceNavigation(iface); - LONG ref = dispex_ref_incr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_AddRef(&This->dispex.IDispatchEx_iface); }
static ULONG WINAPI HTMLPerformanceNavigation_Release(IHTMLPerformanceNavigation *iface) { HTMLPerformanceNavigation *This = impl_from_IHTMLPerformanceNavigation(iface); - LONG ref = dispex_ref_decr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_Release(&This->dispex.IDispatchEx_iface); }
static HRESULT WINAPI HTMLPerformanceNavigation_GetTypeInfoCount(IHTMLPerformanceNavigation *iface, UINT *pctinfo) @@ -2185,33 +2073,19 @@ static inline HTMLPerformance *impl_from_IHTMLPerformance(IHTMLPerformance *ifac static HRESULT WINAPI HTMLPerformance_QueryInterface(IHTMLPerformance *iface, REFIID riid, void **ppv) { HTMLPerformance *This = impl_from_IHTMLPerformance(iface); - - if(dispex_query_interface(&This->dispex, riid, ppv)) - return *ppv ? S_OK : E_NOINTERFACE; - - *ppv = NULL; - WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - return E_NOINTERFACE; + return IDispatchEx_QueryInterface(&This->dispex.IDispatchEx_iface, riid, ppv); }
static ULONG WINAPI HTMLPerformance_AddRef(IHTMLPerformance *iface) { HTMLPerformance *This = impl_from_IHTMLPerformance(iface); - LONG ref = dispex_ref_incr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_AddRef(&This->dispex.IDispatchEx_iface); }
static ULONG WINAPI HTMLPerformance_Release(IHTMLPerformance *iface) { HTMLPerformance *This = impl_from_IHTMLPerformance(iface); - LONG ref = dispex_ref_decr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_Release(&This->dispex.IDispatchEx_iface); }
static HRESULT WINAPI HTMLPerformance_GetTypeInfoCount(IHTMLPerformance *iface, UINT *pctinfo) @@ -2426,33 +2300,19 @@ static inline HTMLNamespaceCollection *impl_from_IHTMLNamespaceCollection(IHTMLN static HRESULT WINAPI HTMLNamespaceCollection_QueryInterface(IHTMLNamespaceCollection *iface, REFIID riid, void **ppv) { HTMLNamespaceCollection *This = impl_from_IHTMLNamespaceCollection(iface); - - if(dispex_query_interface(&This->dispex, riid, ppv)) - return *ppv ? S_OK : E_NOINTERFACE; - - *ppv = NULL; - WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - return E_NOINTERFACE; + return IDispatchEx_QueryInterface(&This->dispex.IDispatchEx_iface, riid, ppv); }
static ULONG WINAPI HTMLNamespaceCollection_AddRef(IHTMLNamespaceCollection *iface) { HTMLNamespaceCollection *This = impl_from_IHTMLNamespaceCollection(iface); - LONG ref = dispex_ref_incr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_AddRef(&This->dispex.IDispatchEx_iface); }
static ULONG WINAPI HTMLNamespaceCollection_Release(IHTMLNamespaceCollection *iface) { HTMLNamespaceCollection *This = impl_from_IHTMLNamespaceCollection(iface); - LONG ref = dispex_ref_decr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_Release(&This->dispex.IDispatchEx_iface); }
static HRESULT WINAPI HTMLNamespaceCollection_GetTypeInfoCount(IHTMLNamespaceCollection *iface, UINT *pctinfo) @@ -2589,33 +2449,19 @@ static inline struct console *impl_from_IWineMSHTMLConsole(IWineMSHTMLConsole *i static HRESULT WINAPI console_QueryInterface(IWineMSHTMLConsole *iface, REFIID riid, void **ppv) { struct console *console = impl_from_IWineMSHTMLConsole(iface); - - if(dispex_query_interface(&console->dispex, riid, ppv)) - return *ppv ? S_OK : E_NOINTERFACE; - - *ppv = NULL; - WARN("(%p)->(%s %p)\n", console, debugstr_mshtml_guid(riid), ppv); - return E_NOINTERFACE; + return IDispatchEx_QueryInterface(&console->dispex.IDispatchEx_iface, riid, ppv); }
static ULONG WINAPI console_AddRef(IWineMSHTMLConsole *iface) { struct console *console = impl_from_IWineMSHTMLConsole(iface); - LONG ref = dispex_ref_incr(&console->dispex); - - TRACE("(%p) ref=%ld\n", console, ref); - - return ref; + return IDispatchEx_AddRef(&console->dispex.IDispatchEx_iface); }
static ULONG WINAPI console_Release(IWineMSHTMLConsole *iface) { struct console *console = impl_from_IWineMSHTMLConsole(iface); - LONG ref = dispex_ref_decr(&console->dispex); - - TRACE("(%p) ref=%ld\n", console, ref); - - return ref; + return IDispatchEx_Release(&console->dispex.IDispatchEx_iface); }
static HRESULT WINAPI console_GetTypeInfoCount(IWineMSHTMLConsole *iface, UINT *pctinfo) @@ -2872,33 +2718,19 @@ static inline struct media_query_list *impl_from_IWineMSHTMLMediaQueryList(IWine static HRESULT WINAPI media_query_list_QueryInterface(IWineMSHTMLMediaQueryList *iface, REFIID riid, void **ppv) { struct media_query_list *media_query_list = impl_from_IWineMSHTMLMediaQueryList(iface); - - if(dispex_query_interface(&media_query_list->dispex, riid, ppv)) - return *ppv ? S_OK : E_NOINTERFACE; - - *ppv = NULL; - WARN("(%p)->(%s %p)\n", media_query_list, debugstr_mshtml_guid(riid), ppv); - return E_NOINTERFACE; + return IDispatchEx_QueryInterface(&media_query_list->dispex.IDispatchEx_iface, riid, ppv); }
static ULONG WINAPI media_query_list_AddRef(IWineMSHTMLMediaQueryList *iface) { struct media_query_list *media_query_list = impl_from_IWineMSHTMLMediaQueryList(iface); - LONG ref = dispex_ref_incr(&media_query_list->dispex); - - TRACE("(%p) ref=%ld\n", media_query_list, ref); - - return ref; + return IDispatchEx_AddRef(&media_query_list->dispex.IDispatchEx_iface); }
static ULONG WINAPI media_query_list_Release(IWineMSHTMLMediaQueryList *iface) { struct media_query_list *media_query_list = impl_from_IWineMSHTMLMediaQueryList(iface); - LONG ref = dispex_ref_decr(&media_query_list->dispex); - - TRACE("(%p) ref=%ld\n", media_query_list, ref); - - return ref; + return IDispatchEx_Release(&media_query_list->dispex.IDispatchEx_iface); }
static HRESULT WINAPI media_query_list_GetTypeInfoCount(IWineMSHTMLMediaQueryList *iface, UINT *pctinfo) diff --git a/dlls/mshtml/range.c b/dlls/mshtml/range.c index cbf9ac930cb..738818d93fb 100644 --- a/dlls/mshtml/range.c +++ b/dlls/mshtml/range.c @@ -813,33 +813,19 @@ static inline HTMLTxtRange *impl_from_IHTMLTxtRange(IHTMLTxtRange *iface) static HRESULT WINAPI HTMLTxtRange_QueryInterface(IHTMLTxtRange *iface, REFIID riid, void **ppv) { HTMLTxtRange *This = impl_from_IHTMLTxtRange(iface); - - if(dispex_query_interface(&This->dispex, riid, ppv)) - return *ppv ? S_OK : E_NOINTERFACE; - - *ppv = NULL; - WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - return E_NOINTERFACE; + return IDispatchEx_QueryInterface(&This->dispex.IDispatchEx_iface, riid, ppv); }
static ULONG WINAPI HTMLTxtRange_AddRef(IHTMLTxtRange *iface) { HTMLTxtRange *This = impl_from_IHTMLTxtRange(iface); - LONG ref = dispex_ref_incr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_AddRef(&This->dispex.IDispatchEx_iface); }
static ULONG WINAPI HTMLTxtRange_Release(IHTMLTxtRange *iface) { HTMLTxtRange *This = impl_from_IHTMLTxtRange(iface); - LONG ref = dispex_ref_decr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_Release(&This->dispex.IDispatchEx_iface); }
static HRESULT WINAPI HTMLTxtRange_GetTypeInfoCount(IHTMLTxtRange *iface, UINT *pctinfo) @@ -1783,33 +1769,19 @@ static inline HTMLDOMRange *impl_from_IHTMLDOMRange(IHTMLDOMRange *iface) static HRESULT WINAPI HTMLDOMRange_QueryInterface(IHTMLDOMRange *iface, REFIID riid, void **ppv) { HTMLDOMRange *This = impl_from_IHTMLDOMRange(iface); - - if(dispex_query_interface(&This->dispex, riid, ppv)) - return *ppv ? S_OK : E_NOINTERFACE; - - *ppv = NULL; - WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - return E_NOINTERFACE; + return IDispatchEx_QueryInterface(&This->dispex.IDispatchEx_iface, riid, ppv); }
static ULONG WINAPI HTMLDOMRange_AddRef(IHTMLDOMRange *iface) { HTMLDOMRange *This = impl_from_IHTMLDOMRange(iface); - LONG ref = dispex_ref_incr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_AddRef(&This->dispex.IDispatchEx_iface); }
static ULONG WINAPI HTMLDOMRange_Release(IHTMLDOMRange *iface) { HTMLDOMRange *This = impl_from_IHTMLDOMRange(iface); - LONG ref = dispex_ref_decr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_Release(&This->dispex.IDispatchEx_iface); }
static HRESULT WINAPI HTMLDOMRange_GetTypeInfoCount(IHTMLDOMRange *iface, UINT *pctinfo) diff --git a/dlls/mshtml/selection.c b/dlls/mshtml/selection.c index 9985af99a39..0da2246a69e 100644 --- a/dlls/mshtml/selection.c +++ b/dlls/mshtml/selection.c @@ -51,33 +51,19 @@ static HRESULT WINAPI HTMLSelectionObject_QueryInterface(IHTMLSelectionObject *i REFIID riid, void **ppv) { HTMLSelectionObject *This = impl_from_IHTMLSelectionObject(iface); - - if(dispex_query_interface(&This->dispex, riid, ppv)) - return *ppv ? S_OK : E_NOINTERFACE; - - *ppv = NULL; - WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - return E_NOINTERFACE; + return IDispatchEx_QueryInterface(&This->dispex.IDispatchEx_iface, riid, ppv); }
static ULONG WINAPI HTMLSelectionObject_AddRef(IHTMLSelectionObject *iface) { HTMLSelectionObject *This = impl_from_IHTMLSelectionObject(iface); - LONG ref = dispex_ref_incr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_AddRef(&This->dispex.IDispatchEx_iface); }
static ULONG WINAPI HTMLSelectionObject_Release(IHTMLSelectionObject *iface) { HTMLSelectionObject *This = impl_from_IHTMLSelectionObject(iface); - LONG ref = dispex_ref_decr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_Release(&This->dispex.IDispatchEx_iface); }
static HRESULT WINAPI HTMLSelectionObject_GetTypeInfoCount(IHTMLSelectionObject *iface, UINT *pctinfo) diff --git a/dlls/mshtml/xmlhttprequest.c b/dlls/mshtml/xmlhttprequest.c index f887893c96e..a76532e972f 100644 --- a/dlls/mshtml/xmlhttprequest.c +++ b/dlls/mshtml/xmlhttprequest.c @@ -507,33 +507,19 @@ static inline HTMLXMLHttpRequest *impl_from_IHTMLXMLHttpRequest(IHTMLXMLHttpRequ static HRESULT WINAPI HTMLXMLHttpRequest_QueryInterface(IHTMLXMLHttpRequest *iface, REFIID riid, void **ppv) { HTMLXMLHttpRequest *This = impl_from_IHTMLXMLHttpRequest(iface); - - if(dispex_query_interface(&This->event_target.dispex, riid, ppv)) - return *ppv ? S_OK : E_NOINTERFACE; - - *ppv = NULL; - WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - return E_NOINTERFACE; + return IDispatchEx_QueryInterface(&This->event_target.dispex.IDispatchEx_iface, riid, ppv); }
static ULONG WINAPI HTMLXMLHttpRequest_AddRef(IHTMLXMLHttpRequest *iface) { HTMLXMLHttpRequest *This = impl_from_IHTMLXMLHttpRequest(iface); - LONG ref = dispex_ref_incr(&This->event_target.dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_AddRef(&This->event_target.dispex.IDispatchEx_iface); }
static ULONG WINAPI HTMLXMLHttpRequest_Release(IHTMLXMLHttpRequest *iface) { HTMLXMLHttpRequest *This = impl_from_IHTMLXMLHttpRequest(iface); - LONG ref = dispex_ref_decr(&This->event_target.dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_Release(&This->event_target.dispex.IDispatchEx_iface); }
static HRESULT WINAPI HTMLXMLHttpRequest_GetTypeInfoCount(IHTMLXMLHttpRequest *iface, UINT *pctinfo) @@ -1640,33 +1626,19 @@ static inline HTMLXMLHttpRequestFactory *impl_from_IHTMLXMLHttpRequestFactory(IH static HRESULT WINAPI HTMLXMLHttpRequestFactory_QueryInterface(IHTMLXMLHttpRequestFactory *iface, REFIID riid, void **ppv) { HTMLXMLHttpRequestFactory *This = impl_from_IHTMLXMLHttpRequestFactory(iface); - - if(dispex_query_interface(&This->dispex, riid, ppv)) - return *ppv ? S_OK : E_NOINTERFACE; - - *ppv = NULL; - WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - return E_NOINTERFACE; + return IDispatchEx_QueryInterface(&This->dispex.IDispatchEx_iface, riid, ppv); }
static ULONG WINAPI HTMLXMLHttpRequestFactory_AddRef(IHTMLXMLHttpRequestFactory *iface) { HTMLXMLHttpRequestFactory *This = impl_from_IHTMLXMLHttpRequestFactory(iface); - LONG ref = dispex_ref_incr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_AddRef(&This->dispex.IDispatchEx_iface); }
static ULONG WINAPI HTMLXMLHttpRequestFactory_Release(IHTMLXMLHttpRequestFactory *iface) { HTMLXMLHttpRequestFactory *This = impl_from_IHTMLXMLHttpRequestFactory(iface); - LONG ref = dispex_ref_decr(&This->dispex); - - TRACE("(%p) ref=%ld\n", This, ref); - - return ref; + return IDispatchEx_Release(&This->dispex.IDispatchEx_iface); }
static HRESULT WINAPI HTMLXMLHttpRequestFactory_GetTypeInfoCount(IHTMLXMLHttpRequestFactory *iface, UINT *pctinfo)
From: Gabriel Ivăncescu gabrielopcode@gmail.com
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/mshtml/htmlcurstyle.c | 39 +++++++++++--------- dlls/mshtml/htmlstyle.c | 75 ++++++++++++++++++-------------------- dlls/mshtml/htmlstyle.h | 17 ++++++--- 3 files changed, 70 insertions(+), 61 deletions(-)
diff --git a/dlls/mshtml/htmlcurstyle.c b/dlls/mshtml/htmlcurstyle.c index 8b16e97f357..27ad42410c1 100644 --- a/dlls/mshtml/htmlcurstyle.c +++ b/dlls/mshtml/htmlcurstyle.c @@ -72,20 +72,6 @@ static inline HTMLCurrentStyle *impl_from_IHTMLCurrentStyle4(IHTMLCurrentStyle4 return CONTAINING_RECORD(iface, HTMLCurrentStyle, IHTMLCurrentStyle4_iface); }
-static void *HTMLCurrentStyle_QI(CSSStyle *css_style, REFIID riid) -{ - HTMLCurrentStyle *This = CONTAINING_RECORD(css_style, HTMLCurrentStyle, css_style); - if(IsEqualGUID(&IID_IHTMLCurrentStyle, riid)) - return &This->IHTMLCurrentStyle_iface; - if(IsEqualGUID(&IID_IHTMLCurrentStyle2, riid)) - return &This->IHTMLCurrentStyle2_iface; - if(IsEqualGUID(&IID_IHTMLCurrentStyle3, riid)) - return &This->IHTMLCurrentStyle3_iface; - if(IsEqualGUID(&IID_IHTMLCurrentStyle4, riid)) - return &This->IHTMLCurrentStyle4_iface; - return NULL; -} - static HRESULT WINAPI HTMLCurrentStyle_QueryInterface(IHTMLCurrentStyle *iface, REFIID riid, void **ppv) { HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface); @@ -1292,6 +1278,26 @@ static const IHTMLCurrentStyle4Vtbl HTMLCurrentStyle4Vtbl = { HTMLCurrentStyle4_get_maxWidth };
+static void *HTMLCurrentStyle_query_interface(DispatchEx *dispex, REFIID riid) +{ + HTMLCurrentStyle *This = CONTAINING_RECORD(dispex, HTMLCurrentStyle, css_style.dispex); + + if(IsEqualGUID(&IID_IHTMLCurrentStyle, riid)) + return &This->IHTMLCurrentStyle_iface; + if(IsEqualGUID(&IID_IHTMLCurrentStyle2, riid)) + return &This->IHTMLCurrentStyle2_iface; + if(IsEqualGUID(&IID_IHTMLCurrentStyle3, riid)) + return &This->IHTMLCurrentStyle3_iface; + if(IsEqualGUID(&IID_IHTMLCurrentStyle4, riid)) + return &This->IHTMLCurrentStyle4_iface; + return CSSStyle_query_interface(&This->css_style.dispex, riid); +} + +static const dispex_static_data_vtbl_t HTMLCurrentStyle_dispex_vtbl = { + CSSSTYLE_DISPEX_VTBL_ENTRIES, + .query_interface = HTMLCurrentStyle_query_interface +}; + static const tid_t HTMLCurrentStyle_iface_tids[] = { IHTMLCurrentStyle_tid, IHTMLCurrentStyle2_tid, @@ -1301,7 +1307,7 @@ static const tid_t HTMLCurrentStyle_iface_tids[] = { }; static dispex_static_data_t HTMLCurrentStyle_dispex = { "MSCurrentStyleCSSProperties", - &CSSStyle_dispex_vtbl, + &HTMLCurrentStyle_dispex_vtbl, DispHTMLCurrentStyle_tid, HTMLCurrentStyle_iface_tids, CSSStyle_init_dispex_info @@ -1356,8 +1362,7 @@ HRESULT HTMLCurrentStyle_Create(HTMLElement *elem, IHTMLCurrentStyle **p) ret->IHTMLCurrentStyle3_iface.lpVtbl = &HTMLCurrentStyle3Vtbl; ret->IHTMLCurrentStyle4_iface.lpVtbl = &HTMLCurrentStyle4Vtbl;
- init_css_style(&ret->css_style, nsstyle, HTMLCurrentStyle_QI, &HTMLCurrentStyle_dispex, - dispex_compat_mode(&elem->node.event_target.dispex)); + init_css_style(&ret->css_style, nsstyle, &HTMLCurrentStyle_dispex, dispex_compat_mode(&elem->node.event_target.dispex)); nsIDOMCSSStyleDeclaration_Release(nsstyle);
IHTMLElement_AddRef(&elem->IHTMLElement_iface); diff --git a/dlls/mshtml/htmlstyle.c b/dlls/mshtml/htmlstyle.c index 8ce2521fcc1..8c4af46836f 100644 --- a/dlls/mshtml/htmlstyle.c +++ b/dlls/mshtml/htmlstyle.c @@ -1115,25 +1115,6 @@ static BOOL is_valid_border_style(BSTR v) wcsicmp(v, L"outset") == 0; }
-static void *HTMLStyle_QI(CSSStyle *css_style, REFIID riid) -{ - HTMLStyle *This = CONTAINING_RECORD(css_style, HTMLStyle, css_style); - - if(IsEqualGUID(&IID_IHTMLStyle, riid)) - return &This->IHTMLStyle_iface; - if(IsEqualGUID(&IID_IHTMLStyle2, riid)) - return &This->IHTMLStyle2_iface; - if(IsEqualGUID(&IID_IHTMLStyle3, riid)) - return &This->IHTMLStyle3_iface; - if(IsEqualGUID(&IID_IHTMLStyle4, riid)) - return &This->IHTMLStyle4_iface; - if(IsEqualGUID(&IID_IHTMLStyle5, riid)) - return &This->IHTMLStyle5_iface; - if(IsEqualGUID(&IID_IHTMLStyle6, riid)) - return &This->IHTMLStyle6_iface; - return NULL; -} - static inline HTMLStyle *impl_from_IHTMLStyle(IHTMLStyle *iface) { return CONTAINING_RECORD(iface, HTMLStyle, IHTMLStyle_iface); @@ -9936,7 +9917,7 @@ static inline CSSStyle *impl_from_DispatchEx(DispatchEx *dispex) return CONTAINING_RECORD(dispex, CSSStyle, dispex); }
-static void *CSSStyle_query_interface(DispatchEx *dispex, REFIID riid) +void *CSSStyle_query_interface(DispatchEx *dispex, REFIID riid) { CSSStyle *This = impl_from_DispatchEx(dispex);
@@ -9944,32 +9925,30 @@ static void *CSSStyle_query_interface(DispatchEx *dispex, REFIID riid) return &This->IHTMLCSSStyleDeclaration_iface; if(IsEqualGUID(&IID_IHTMLCSSStyleDeclaration2, riid)) return &This->IHTMLCSSStyleDeclaration2_iface; - if(This->qi) - return This->qi(This, riid);
return NULL; }
-static void CSSStyle_traverse(DispatchEx *dispex, nsCycleCollectionTraversalCallback *cb) +void CSSStyle_traverse(DispatchEx *dispex, nsCycleCollectionTraversalCallback *cb) { CSSStyle *This = impl_from_DispatchEx(dispex); if(This->nsstyle) note_cc_edge((nsISupports*)This->nsstyle, "nsstyle", cb); }
-static void CSSStyle_unlink(DispatchEx *dispex) +void CSSStyle_unlink(DispatchEx *dispex) { CSSStyle *This = impl_from_DispatchEx(dispex); unlink_ref(&This->nsstyle); }
-static void CSSStyle_destructor(DispatchEx *dispex) +void CSSStyle_destructor(DispatchEx *dispex) { CSSStyle *This = impl_from_DispatchEx(dispex); free(This); }
-static HRESULT CSSStyle_get_dispid(DispatchEx *dispex, BSTR name, DWORD flags, DISPID *dispid) +HRESULT CSSStyle_get_dispid(DispatchEx *dispex, BSTR name, DWORD flags, DISPID *dispid) { CSSStyle *This = impl_from_DispatchEx(dispex); const style_tbl_entry_t *style_entry; @@ -9988,6 +9967,25 @@ static HRESULT CSSStyle_get_dispid(DispatchEx *dispex, BSTR name, DWORD flags, D return DISP_E_UNKNOWNNAME; }
+static void *HTMLStyle_query_interface(DispatchEx *dispex, REFIID riid) +{ + HTMLStyle *This = CONTAINING_RECORD(dispex, HTMLStyle, css_style.dispex); + + if(IsEqualGUID(&IID_IHTMLStyle, riid)) + return &This->IHTMLStyle_iface; + if(IsEqualGUID(&IID_IHTMLStyle2, riid)) + return &This->IHTMLStyle2_iface; + if(IsEqualGUID(&IID_IHTMLStyle3, riid)) + return &This->IHTMLStyle3_iface; + if(IsEqualGUID(&IID_IHTMLStyle4, riid)) + return &This->IHTMLStyle4_iface; + if(IsEqualGUID(&IID_IHTMLStyle5, riid)) + return &This->IHTMLStyle5_iface; + if(IsEqualGUID(&IID_IHTMLStyle6, riid)) + return &This->IHTMLStyle6_iface; + return CSSStyle_query_interface(&This->css_style.dispex, riid); +} + void CSSStyle_init_dispex_info(dispex_data_t *info, compat_mode_t mode) { if(mode >= COMPAT_MODE_IE9) @@ -9996,12 +9994,9 @@ void CSSStyle_init_dispex_info(dispex_data_t *info, compat_mode_t mode) dispex_info_add_interface(info, IHTMLCSSStyleDeclaration2_tid, NULL); }
-const dispex_static_data_vtbl_t CSSStyle_dispex_vtbl = { - .query_interface = CSSStyle_query_interface, - .destructor = CSSStyle_destructor, - .traverse = CSSStyle_traverse, - .unlink = CSSStyle_unlink, - .get_dispid = CSSStyle_get_dispid, +static const dispex_static_data_vtbl_t CSSStyle_dispex_vtbl = { + CSSSTYLE_DISPEX_VTBL_ENTRIES, + .query_interface = HTMLStyle_query_interface };
static const tid_t HTMLStyle_iface_tids[] = { @@ -10059,12 +10054,10 @@ static HRESULT get_style_from_elem(HTMLElement *elem, nsIDOMCSSStyleDeclaration return E_NOTIMPL; }
-void init_css_style(CSSStyle *style, nsIDOMCSSStyleDeclaration *nsstyle, style_qi_t qi, - dispex_static_data_t *dispex_info, compat_mode_t compat_mode) +void init_css_style(CSSStyle *style, nsIDOMCSSStyleDeclaration *nsstyle, dispex_static_data_t *dispex_info, compat_mode_t compat_mode) { style->IHTMLCSSStyleDeclaration_iface.lpVtbl = &HTMLCSSStyleDeclarationVtbl; style->IHTMLCSSStyleDeclaration2_iface.lpVtbl = &HTMLCSSStyleDeclaration2Vtbl; - style->qi = qi; style->nsstyle = nsstyle; nsIDOMCSSStyleDeclaration_AddRef(nsstyle);
@@ -10096,20 +10089,24 @@ HRESULT HTMLStyle_Create(HTMLElement *elem, HTMLStyle **ret)
style->elem = elem;
- init_css_style(&style->css_style, nsstyle, HTMLStyle_QI, &HTMLStyle_dispex, - dispex_compat_mode(&elem->node.event_target.dispex)); + init_css_style(&style->css_style, nsstyle, &HTMLStyle_dispex, dispex_compat_mode(&elem->node.event_target.dispex)); nsIDOMCSSStyleDeclaration_Release(nsstyle);
*ret = style; return S_OK; }
+static const dispex_static_data_vtbl_t HTMLW3CComputedStyle_dispex_vtbl = { + CSSSTYLE_DISPEX_VTBL_ENTRIES, + .query_interface = CSSStyle_query_interface +}; + static const tid_t HTMLW3CComputedStyle_iface_tids[] = { 0 }; static dispex_static_data_t HTMLW3CComputedStyle_dispex = { "CSSStyleDeclaration", - &CSSStyle_dispex_vtbl, + &HTMLW3CComputedStyle_dispex_vtbl, DispHTMLW3CComputedStyle_tid, HTMLW3CComputedStyle_iface_tids, CSSStyle_init_dispex_info @@ -10122,7 +10119,7 @@ HRESULT create_computed_style(nsIDOMCSSStyleDeclaration *nsstyle, compat_mode_t if(!(style = calloc(1, sizeof(*style)))) return E_OUTOFMEMORY;
- init_css_style(style, nsstyle, NULL, &HTMLW3CComputedStyle_dispex, compat_mode); + init_css_style(style, nsstyle, &HTMLW3CComputedStyle_dispex, compat_mode); *p = &style->IHTMLCSSStyleDeclaration_iface; return S_OK; } diff --git a/dlls/mshtml/htmlstyle.h b/dlls/mshtml/htmlstyle.h index caae7d6ffa0..5246e799ce5 100644 --- a/dlls/mshtml/htmlstyle.h +++ b/dlls/mshtml/htmlstyle.h @@ -17,13 +17,11 @@ */
typedef struct CSSStyle CSSStyle; -typedef void *(*style_qi_t)(CSSStyle*,REFIID);
struct CSSStyle { DispatchEx dispex; IHTMLCSSStyleDeclaration IHTMLCSSStyleDeclaration_iface; IHTMLCSSStyleDeclaration2 IHTMLCSSStyleDeclaration2_iface; - style_qi_t qi;
nsIDOMCSSStyleDeclaration *nsstyle; }; @@ -151,14 +149,23 @@ typedef enum {
HRESULT HTMLStyle_Create(HTMLElement*,HTMLStyle**); HRESULT create_computed_style(nsIDOMCSSStyleDeclaration*,compat_mode_t,IHTMLCSSStyleDeclaration**); -void init_css_style(CSSStyle*,nsIDOMCSSStyleDeclaration*,style_qi_t, - dispex_static_data_t*,compat_mode_t); +void init_css_style(CSSStyle*,nsIDOMCSSStyleDeclaration*,dispex_static_data_t*,compat_mode_t);
+void *CSSStyle_query_interface(DispatchEx*,REFIID); +void CSSStyle_traverse(DispatchEx*,nsCycleCollectionTraversalCallback*); +void CSSStyle_unlink(DispatchEx*); +void CSSStyle_destructor(DispatchEx*); +HRESULT CSSStyle_get_dispid(DispatchEx*,BSTR,DWORD,DISPID*); void CSSStyle_init_dispex_info(dispex_data_t *info, compat_mode_t mode); -extern const dispex_static_data_vtbl_t CSSStyle_dispex_vtbl;
HRESULT get_style_property(CSSStyle*,styleid_t,BSTR*); HRESULT get_style_property_var(CSSStyle*,styleid_t,VARIANT*);
HRESULT get_elem_style(HTMLElement*,styleid_t,BSTR*); HRESULT set_elem_style(HTMLElement*,styleid_t,const WCHAR*); + +#define CSSSTYLE_DISPEX_VTBL_ENTRIES \ + .destructor = CSSStyle_destructor, \ + .traverse = CSSStyle_traverse, \ + .unlink = CSSStyle_unlink, \ + .get_dispid = CSSStyle_get_dispid
This merge request was approved by Jacek Caban.