Jacek Caban : mshtml: Initialize HTMLDOMChildrenCollection object with compat mode.

Alexandre Julliard julliard at winehq.org
Tue Mar 16 16:39:04 CDT 2021


Module: wine
Branch: master
Commit: fe5860e42b13181b1ec7a3b664c0498da028ae93
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=fe5860e42b13181b1ec7a3b664c0498da028ae93

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Tue Mar 16 19:57:08 2021 +0100

mshtml: Initialize HTMLDOMChildrenCollection object with compat mode.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/mshtml/htmldoc.c        | 14 +++++++-------
 dlls/mshtml/htmlelem.c       | 14 +++++++-------
 dlls/mshtml/htmlnode.c       | 38 +++++++++++++++++++-------------------
 dlls/mshtml/mshtml_private.h |  2 +-
 4 files changed, 34 insertions(+), 34 deletions(-)

diff --git a/dlls/mshtml/htmldoc.c b/dlls/mshtml/htmldoc.c
index 6eb6fcc1f49..27ff9c00349 100644
--- a/dlls/mshtml/htmldoc.c
+++ b/dlls/mshtml/htmldoc.c
@@ -4349,21 +4349,21 @@ static HRESULT WINAPI DocumentSelector_querySelectorAll(IDocumentSelector *iface
     HTMLDocument *This = impl_from_IDocumentSelector(iface);
     nsIDOMNodeList *node_list;
     nsAString nsstr;
-    nsresult nsres;
+    HRESULT hres;
 
     TRACE("(%p)->(%s %p)\n", This, debugstr_w(v), pel);
 
     nsAString_InitDepend(&nsstr, v);
-    nsres = nsIDOMHTMLDocument_QuerySelectorAll(This->doc_node->nsdoc, &nsstr, &node_list);
+    hres = map_nsresult(nsIDOMHTMLDocument_QuerySelectorAll(This->doc_node->nsdoc, &nsstr, &node_list));
     nsAString_Finish(&nsstr);
-    if(NS_FAILED(nsres)) {
-        ERR("QuerySelectorAll failed: %08x\n", nsres);
-        return E_FAIL;
+    if(FAILED(hres)) {
+        ERR("QuerySelectorAll failed: %08x\n", hres);
+        return hres;
     }
 
-    *pel = create_child_collection(node_list);
+    hres = create_child_collection(node_list, dispex_compat_mode(&This->doc_node->node.event_target.dispex), pel);
     nsIDOMNodeList_Release(node_list);
-    return *pel ? S_OK : E_OUTOFMEMORY;
+    return hres;
 }
 
 static const IDocumentSelectorVtbl DocumentSelectorVtbl = {
diff --git a/dlls/mshtml/htmlelem.c b/dlls/mshtml/htmlelem.c
index 04e59eafdae..8e79da70571 100644
--- a/dlls/mshtml/htmlelem.c
+++ b/dlls/mshtml/htmlelem.c
@@ -5740,7 +5740,7 @@ static HRESULT WINAPI ElementSelector_querySelectorAll(IElementSelector *iface,
     HTMLElement *This = impl_from_IElementSelector(iface);
     nsIDOMNodeList *node_list;
     nsAString nsstr;
-    nsresult nsres;
+    HRESULT hres;
 
     TRACE("(%p)->(%s %p)\n", This, debugstr_w(v), pel);
 
@@ -5750,16 +5750,16 @@ static HRESULT WINAPI ElementSelector_querySelectorAll(IElementSelector *iface,
     }
 
     nsAString_InitDepend(&nsstr, v);
-    nsres = nsIDOMElement_QuerySelectorAll(This->dom_element, &nsstr, &node_list);
+    hres = map_nsresult(nsIDOMElement_QuerySelectorAll(This->dom_element, &nsstr, &node_list));
     nsAString_Finish(&nsstr);
-    if(NS_FAILED(nsres)) {
-        ERR("QuerySelectorAll failed: %08x\n", nsres);
-        return E_FAIL;
+    if(FAILED(hres)) {
+        ERR("QuerySelectorAll failed: %08x\n", hres);
+        return hres;
     }
 
-    *pel = create_child_collection(node_list);
+    hres = create_child_collection(node_list, dispex_compat_mode(&This->node.event_target.dispex), pel);
     nsIDOMNodeList_Release(node_list);
-    return *pel ? S_OK : E_OUTOFMEMORY;
+    return hres;
 }
 
 static const IElementSelectorVtbl ElementSelectorVtbl = {
diff --git a/dlls/mshtml/htmlnode.c b/dlls/mshtml/htmlnode.c
index b2d35f46601..89160aaa0b1 100644
--- a/dlls/mshtml/htmlnode.c
+++ b/dlls/mshtml/htmlnode.c
@@ -436,24 +436,24 @@ static dispex_static_data_t HTMLDOMChildrenCollection_dispex = {
     HTMLDOMNode_init_dispex_info
 };
 
-IHTMLDOMChildrenCollection *create_child_collection(nsIDOMNodeList *nslist)
+HRESULT create_child_collection(nsIDOMNodeList *nslist, compat_mode_t compat_mode, IHTMLDOMChildrenCollection **ret)
 {
-    HTMLDOMChildrenCollection *ret;
+    HTMLDOMChildrenCollection *collection;
 
-    ret = heap_alloc_zero(sizeof(*ret));
-    if(!ret)
-        return NULL;
+    if(!(collection = heap_alloc_zero(sizeof(*collection))))
+        return E_OUTOFMEMORY;
 
-    ret->IHTMLDOMChildrenCollection_iface.lpVtbl = &HTMLDOMChildrenCollectionVtbl;
-    ret->ref = 1;
+    collection->IHTMLDOMChildrenCollection_iface.lpVtbl = &HTMLDOMChildrenCollectionVtbl;
+    collection->ref = 1;
 
     nsIDOMNodeList_AddRef(nslist);
-    ret->nslist = nslist;
+    collection->nslist = nslist;
 
-    init_dispex(&ret->dispex, (IUnknown*)&ret->IHTMLDOMChildrenCollection_iface,
-            &HTMLDOMChildrenCollection_dispex);
+    init_dispex_with_compat_mode(&collection->dispex, (IUnknown*)&collection->IHTMLDOMChildrenCollection_iface,
+                                 &HTMLDOMChildrenCollection_dispex, compat_mode);
 
-    return &ret->IHTMLDOMChildrenCollection_iface;
+    *ret = &collection->IHTMLDOMChildrenCollection_iface;
+    return S_OK;
 }
 
 static inline HTMLDOMNode *impl_from_IHTMLDOMNode(IHTMLDOMNode *iface)
@@ -611,20 +611,20 @@ static HRESULT WINAPI HTMLDOMNode_get_childNodes(IHTMLDOMNode *iface, IDispatch
 {
     HTMLDOMNode *This = impl_from_IHTMLDOMNode(iface);
     nsIDOMNodeList *nslist;
-    nsresult nsres;
+    HRESULT hres;
 
     TRACE("(%p)->(%p)\n", This, p);
 
-    nsres = nsIDOMNode_GetChildNodes(This->nsnode, &nslist);
-    if(NS_FAILED(nsres)) {
-        ERR("GetChildNodes failed: %08x\n", nsres);
-        return E_FAIL;
+    hres = map_nsresult(nsIDOMNode_GetChildNodes(This->nsnode, &nslist));
+    if(FAILED(hres)) {
+        ERR("GetChildNodes failed: %08x\n", hres);
+        return hres;
     }
 
-    *p = (IDispatch*)create_child_collection(nslist);
+    hres = create_child_collection(nslist, dispex_compat_mode(&This->event_target.dispex),
+                                   (IHTMLDOMChildrenCollection**)p);
     nsIDOMNodeList_Release(nslist);
-
-    return *p ? S_OK : E_OUTOFMEMORY;
+    return hres;
 }
 
 static HRESULT WINAPI HTMLDOMNode_get_attributes(IHTMLDOMNode *iface, IDispatch **p)
diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h
index c58a6a563df..5e52eb3d7ad 100644
--- a/dlls/mshtml/mshtml_private.h
+++ b/dlls/mshtml/mshtml_private.h
@@ -1143,7 +1143,7 @@ HRESULT wrap_iface(IUnknown*,IUnknown*,IUnknown**) DECLSPEC_HIDDEN;
 IHTMLElementCollection *create_all_collection(HTMLDOMNode*,BOOL) DECLSPEC_HIDDEN;
 IHTMLElementCollection *create_collection_from_nodelist(nsIDOMNodeList*,compat_mode_t) DECLSPEC_HIDDEN;
 IHTMLElementCollection *create_collection_from_htmlcol(nsIDOMHTMLCollection*,compat_mode_t) DECLSPEC_HIDDEN;
-IHTMLDOMChildrenCollection *create_child_collection(nsIDOMNodeList*) DECLSPEC_HIDDEN;
+HRESULT create_child_collection(nsIDOMNodeList*,compat_mode_t,IHTMLDOMChildrenCollection**) DECLSPEC_HIDDEN;
 
 HRESULT attr_value_to_string(VARIANT*) DECLSPEC_HIDDEN;
 HRESULT get_elem_attr_value_by_dispid(HTMLElement*,DISPID,VARIANT*) DECLSPEC_HIDDEN;




More information about the wine-cvs mailing list