Jacek Caban : mshtml: Skip set_style_property fixups in IE9+ mode.

Alexandre Julliard julliard at winehq.org
Wed Aug 29 16:10:44 CDT 2018


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Wed Aug 29 14:09:15 2018 +0200

mshtml: Skip set_style_property fixups in IE9+ mode.

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

---

 dlls/mshtml/htmlstyle.c   |  5 +++--
 dlls/mshtml/tests/style.c | 42 +++---------------------------------------
 2 files changed, 6 insertions(+), 41 deletions(-)

diff --git a/dlls/mshtml/htmlstyle.c b/dlls/mshtml/htmlstyle.c
index 31d38c8..5c48a24 100644
--- a/dlls/mshtml/htmlstyle.c
+++ b/dlls/mshtml/htmlstyle.c
@@ -565,7 +565,7 @@ static inline HRESULT set_style_property(HTMLStyle *style, styleid_t sid, const
     WCHAR *val = NULL;
     HRESULT hres;
 
-    if(value && *value) {
+    if(value && *value && dispex_compat_mode(&style->dispex) < COMPAT_MODE_IE9) {
         unsigned flags = style_tbl[sid].flags;
 
         if(style_tbl[sid].allowed_values) {
@@ -4780,7 +4780,8 @@ HRESULT HTMLStyle_Create(HTMLElement *elem, HTMLStyle **ret)
 
     nsIDOMCSSStyleDeclaration_AddRef(nsstyle);
 
-    init_dispex(&style->dispex, (IUnknown*)&style->IHTMLStyle_iface, &HTMLStyle_dispex);
+    init_dispex_with_compat_mode(&style->dispex, (IUnknown*)&style->IHTMLStyle_iface, &HTMLStyle_dispex,
+                                 dispex_compat_mode(&elem->node.event_target.dispex));
 
     *ret = style;
     return S_OK;
diff --git a/dlls/mshtml/tests/style.c b/dlls/mshtml/tests/style.c
index 12877e9..1fc26c2 100644
--- a/dlls/mshtml/tests/style.c
+++ b/dlls/mshtml/tests/style.c
@@ -284,7 +284,6 @@ static void _test_border_styles(unsigned line, IHTMLStyle *pStyle, BSTR Name)
         if(compat_mode < COMPAT_IE9)
             ok_(__FILE__,line) (FAILED(hres), "invalid value passed.\n");
         else
-            todo_wine
             ok_(__FILE__,line) (hres == S_OK, "invalid value returned: %08x\n", hres);
         VariantClear(&arg);
 
@@ -364,21 +363,6 @@ static void _test_text_decoration(unsigned line, IHTMLStyle *style, const char *
     SysFreeString(str);
 }
 
-#define test_text_decoration_todo(a,b) _test_text_decoration_todo(__LINE__,a,b)
-static void _test_text_decoration_todo(unsigned line, IHTMLStyle *style, const char *exdec)
-{
-    BSTR str;
-    HRESULT hres;
-
-    hres = IHTMLStyle_get_textDecoration(style, &str);
-    ok_(__FILE__,line)(hres == S_OK, "get_textDecoration failed: %08x\n", hres);
-    if(exdec)
-        todo_wine ok_(__FILE__,line)(!strcmp_wa(str, exdec), "textDecoration = %s, expected %s\n", wine_dbgstr_w(str), exdec);
-    else
-        todo_wine ok_(__FILE__,line)(!str, "textDecoration = %s, expected NULL\n", wine_dbgstr_w(str));
-    SysFreeString(str);
-}
-
 static void test_set_csstext(IHTMLStyle *style)
 {
     VARIANT v;
@@ -639,10 +623,7 @@ static void test_style5(IHTMLStyle5 *style5)
 
     hres = IHTMLStyle5_get_minWidth(style5, &v);
     ok(hres == S_OK, "get_minWidth failed: %08x\n", hres);
-    if(compat_mode < COMPAT_IE9)
-        test_var_bstr(&v, "10px");
-    else
-        test_var_bstr_todo(&v, "10%");
+    test_var_bstr(&v, compat_mode < COMPAT_IE9 ? "10px" : "10%");
     VariantClear(&v);
 
     hres = IHTMLStyle5_put_minWidth(style5, vdefault);
@@ -717,10 +698,7 @@ static void test_style5(IHTMLStyle5 *style5)
 
     hres = IHTMLStyle5_get_maxHeight(style5, &v);
     ok(hres == S_OK, "get_maxHeight failed: %08x\n", hres);
-    if(compat_mode < COMPAT_IE9)
-        test_var_bstr(&v, "100px");
-    else
-        test_var_bstr_todo(&v, "70%");
+    test_var_bstr(&v, compat_mode < COMPAT_IE9 ? "100px" : "70%");
     VariantClear(&v);
 
     hres = IHTMLStyle5_put_maxHeight(style5, vdefault);
@@ -873,7 +851,6 @@ static void test_body_style(IHTMLStyle *style)
 
     str = a2bstr("test");
     hres = IHTMLStyle_put_fontWeight(style, str);
-    todo_wine_if(compat_mode >= COMPAT_IE9)
     ok(hres == (compat_mode < COMPAT_IE9 ? E_INVALIDARG : S_OK),
        "put_fontWeight failed: %08x\n", hres);
     SysFreeString(str);
@@ -971,7 +948,6 @@ static void test_body_style(IHTMLStyle *style)
 
     str = a2bstr("test");
     hres = IHTMLStyle_put_fontVariant(style, str);
-    todo_wine_if(compat_mode >= COMPAT_IE9)
     ok(hres == (compat_mode < COMPAT_IE9 ? E_INVALIDARG : S_OK),
        "fontVariant failed: %08x\n", hres);
     SysFreeString(str);
@@ -1141,7 +1117,6 @@ static void test_body_style(IHTMLStyle *style)
 
     str = a2bstr("invalid");
     hres = IHTMLStyle_put_textDecoration(style, str);
-    todo_wine_if(compat_mode >= COMPAT_IE9)
     ok(hres == (compat_mode < COMPAT_IE9 ? E_INVALIDARG : S_OK),
        "put_textDecoration failed: %08x\n", hres);
     SysFreeString(str);
@@ -1158,14 +1133,10 @@ static void test_body_style(IHTMLStyle *style)
 
     str = a2bstr("invalid");
     hres = IHTMLStyle_put_textDecoration(style, str);
-    todo_wine_if(compat_mode >= COMPAT_IE9)
     ok(hres == (compat_mode < COMPAT_IE9 ? E_INVALIDARG : S_OK),
        "put_textDecoration failed: %08x\n", hres);
     SysFreeString(str);
-    if(compat_mode < COMPAT_IE9)
-        test_text_decoration(style, NULL);
-    else
-        test_text_decoration_todo(style, "blink");
+    test_text_decoration(style, compat_mode < COMPAT_IE9 ? NULL : "blink");
 
     hres = IHTMLStyle_put_textDecoration(style, sDefault);
     ok(hres == S_OK, "put_textDecoration failed: %08x\n", hres);
@@ -1799,7 +1770,6 @@ static void test_body_style(IHTMLStyle *style)
 
     str = a2bstr("test");
     hres = IHTMLStyle_put_fontStyle(style, str);
-    todo_wine_if(compat_mode >= COMPAT_IE9)
     ok(hres == (compat_mode < COMPAT_IE9 ? E_INVALIDARG : S_OK),
        "put_fontStyle failed: %08x\n", hres);
     SysFreeString(str);
@@ -1832,7 +1802,6 @@ static void test_body_style(IHTMLStyle *style)
 
     str = a2bstr("test");
     hres = IHTMLStyle_put_overflow(style, str);
-    todo_wine_if(compat_mode >= COMPAT_IE9)
     ok(hres == (compat_mode < COMPAT_IE9 ? E_INVALIDARG : S_OK),
        "put_overflow failed: %08x\n", hres);
     SysFreeString(str);
@@ -2111,7 +2080,6 @@ static void test_body_style(IHTMLStyle *style)
     if(compat_mode < COMPAT_IE9)
         ok(!strcmp_wa(V_BSTR(&v), "10px"), "paddingLeft = %s\n", wine_dbgstr_w(V_BSTR(&v)));
     else
-        todo_wine
         ok(!V_BSTR(&v), "paddingLeft = %s\n", wine_dbgstr_w(V_BSTR(&v)));
     VariantClear(&v);
 
@@ -2124,7 +2092,6 @@ static void test_body_style(IHTMLStyle *style)
 
     str = a2bstr("invalid");
     hres = IHTMLStyle_put_backgroundRepeat(style, str);
-    todo_wine_if(compat_mode >= COMPAT_IE9)
     ok(hres == (compat_mode < COMPAT_IE9 ? E_INVALIDARG : S_OK),
        "put_backgroundRepeat failed: %08x\n", hres);
     SysFreeString(str);
@@ -2410,7 +2377,6 @@ static void test_body_style(IHTMLStyle *style)
 
     hres = IHTMLStyle_get_borderRightWidth(style, &v);
     ok(hres == S_OK, "get_borderRightWidth: %08x\n", hres);
-    todo_wine_if(compat_mode >= COMPAT_IE9)
     ok(!strcmp_wa(V_BSTR(&v), compat_mode < COMPAT_IE9 ? "10px" : "1px"),
        "borderRightWidth = %s\n", wine_dbgstr_w(V_BSTR(&v)));
     VariantClear(&v);
@@ -2431,7 +2397,6 @@ static void test_body_style(IHTMLStyle *style)
 
     hres = IHTMLStyle_get_borderBottomWidth(style, &v);
     ok(hres == S_OK, "get_borderBottomWidth: %08x\n", hres);
-    todo_wine_if(compat_mode >= COMPAT_IE9)
     ok(!strcmp_wa(V_BSTR(&v), compat_mode < COMPAT_IE9 ? "10px" : "1px"),
        "borderBottomWidth = %s\n", wine_dbgstr_w(V_BSTR(&v)));
     VariantClear(&v);
@@ -2452,7 +2417,6 @@ static void test_body_style(IHTMLStyle *style)
 
     hres = IHTMLStyle_get_borderLeftWidth(style, &v);
     ok(hres == S_OK, "get_borderLeftWidth: %08x\n", hres);
-    todo_wine_if(compat_mode >= COMPAT_IE9)
     ok(!strcmp_wa(V_BSTR(&v), compat_mode < COMPAT_IE9 ? "10px" : "1px"),
        "expected 10px = %s\n", wine_dbgstr_w(V_BSTR(&v)));
     VariantClear(&v);




More information about the wine-cvs mailing list