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

Alexandre Julliard julliard at winehq.org
Mon Mar 15 16:59:13 CDT 2021


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Mon Mar 15 16:18:31 2021 +0100

mshtml: Initialize HTMLStyleSheetRule object with compat mode.

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

---

 dlls/mshtml/htmlstylesheet.c | 30 ++++++++++++++++--------------
 1 file changed, 16 insertions(+), 14 deletions(-)

diff --git a/dlls/mshtml/htmlstylesheet.c b/dlls/mshtml/htmlstylesheet.c
index b3ea09e8333..74f8fc9dace 100644
--- a/dlls/mshtml/htmlstylesheet.c
+++ b/dlls/mshtml/htmlstylesheet.c
@@ -207,29 +207,32 @@ static dispex_static_data_t HTMLStyleSheetRule_dispex = {
     HTMLStyleSheetRule_iface_tids
 };
 
-static IHTMLStyleSheetRule *HTMLStyleSheetRule_Create(nsIDOMCSSRule *nsstylesheetrule)
+static HRESULT create_style_sheet_rule(nsIDOMCSSRule *nsstylesheetrule, compat_mode_t compat_mode,
+                                       IHTMLStyleSheetRule **ret)
 {
-    HTMLStyleSheetRule *ret;
+    HTMLStyleSheetRule *rule;
     nsresult nsres;
 
-    if(!(ret = heap_alloc(sizeof(*ret))))
-        return NULL;
+    if(!(rule = heap_alloc(sizeof(*rule))))
+        return E_OUTOFMEMORY;
 
-    ret->IHTMLStyleSheetRule_iface.lpVtbl = &HTMLStyleSheetRuleVtbl;
-    ret->ref = 1;
-    ret->nsstylesheetrule = NULL;
+    rule->IHTMLStyleSheetRule_iface.lpVtbl = &HTMLStyleSheetRuleVtbl;
+    rule->ref = 1;
+    rule->nsstylesheetrule = NULL;
 
-    init_dispex(&ret->dispex, (IUnknown *)&ret->IHTMLStyleSheetRule_iface, &HTMLStyleSheetRule_dispex);
+    init_dispex_with_compat_mode(&rule->dispex, (IUnknown *)&rule->IHTMLStyleSheetRule_iface, &HTMLStyleSheetRule_dispex,
+                                 compat_mode);
 
     if (nsstylesheetrule)
     {
         nsres = nsIDOMCSSRule_QueryInterface(nsstylesheetrule, &IID_nsIDOMCSSRule,
-                (void **)&ret->nsstylesheetrule);
+                (void **)&rule->nsstylesheetrule);
         if (NS_FAILED(nsres))
             ERR("Could not get nsIDOMCSSRule interface: %08x\n", nsres);
     }
 
-    return &ret->IHTMLStyleSheetRule_iface;
+    *ret = &rule->IHTMLStyleSheetRule_iface;
+    return S_OK;
 }
 
 static inline HTMLStyleSheetRulesCollection *impl_from_IHTMLStyleSheetRulesCollection(IHTMLStyleSheetRulesCollection *iface)
@@ -339,13 +342,13 @@ static HRESULT WINAPI HTMLStyleSheetRulesCollection_get_length(IHTMLStyleSheetRu
 }
 
 static HRESULT WINAPI HTMLStyleSheetRulesCollection_item(IHTMLStyleSheetRulesCollection *iface,
-        LONG index, IHTMLStyleSheetRule **ppHTMLStyleSheetRule)
+        LONG index, IHTMLStyleSheetRule **p)
 {
     HTMLStyleSheetRulesCollection *This = impl_from_IHTMLStyleSheetRulesCollection(iface);
     nsIDOMCSSRule *nsstylesheetrule;
     nsresult nsres;
 
-    TRACE("(%p)->(%d %p)\n", This, index, ppHTMLStyleSheetRule);
+    TRACE("(%p)->(%d %p)\n", This, index, p);
 
     nsres = nsIDOMCSSRuleList_Item(This->nslist, index, &nsstylesheetrule);
     if(NS_FAILED(nsres))
@@ -353,8 +356,7 @@ static HRESULT WINAPI HTMLStyleSheetRulesCollection_item(IHTMLStyleSheetRulesCol
     if(!nsstylesheetrule)
         return E_INVALIDARG;
 
-    *ppHTMLStyleSheetRule = HTMLStyleSheetRule_Create(nsstylesheetrule);
-    return *ppHTMLStyleSheetRule ? S_OK : E_OUTOFMEMORY;
+    return create_style_sheet_rule(nsstylesheetrule, dispex_compat_mode(&This->dispex), p);
 }
 
 static const IHTMLStyleSheetRulesCollectionVtbl HTMLStyleSheetRulesCollectionVtbl = {




More information about the wine-cvs mailing list