Jacek Caban : mshtml/tests: Run textarea tests in both quirks and IE9 compat mode.

Alexandre Julliard julliard at winehq.org
Thu Feb 8 15:33:08 CST 2018


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Thu Feb  8 20:53:35 2018 +0100

mshtml/tests: Run textarea tests in both quirks and IE9 compat mode.

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

---

 dlls/mshtml/tests/dom.c | 137 ++++++++++++++++++++++++++++++------------------
 1 file changed, 87 insertions(+), 50 deletions(-)

diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c
index 2a4ae62..2ef7f38 100644
--- a/dlls/mshtml/tests/dom.c
+++ b/dlls/mshtml/tests/dom.c
@@ -43,7 +43,24 @@ static LANGID (WINAPI *pGetUserDefaultUILanguage)(void);
 
 static BOOL is_ie9plus;
 
-static const char doc_blank[] = "<html></html>";
+static enum {
+    COMPAT_NONE,
+    COMPAT_IE9
+} compat_mode = COMPAT_NONE;
+
+static const char doc_blank[] =
+    "<html></html>";
+
+static const char doc_blank_ie9[] =
+    "<!DOCTYPE html>\n"
+    "<html>"
+    " <head>"
+    "  <meta http-equiv=\"x-ua-compatible\" content=\"IE=9\" />"
+    " </head>"
+    " <body>"
+    " </body>"
+    "</html>";
+
 static const char doc_str1[] = "<html><body>test</body></html>";
 static const char range_test_str[] =
     "<html><body>test \na<font size=\"2\">bc\t123<br /> it's\r\n  \t</font>text<br /></body></html>";
@@ -757,7 +774,7 @@ static void _test_disp2(unsigned line, IUnknown *unk, const IID *diid, const IID
     IID iid;
     HRESULT hres;
 
-    if(_test_get_dispid(line, unk, &iid))
+    if(_test_get_dispid(line, unk, &iid) && compat_mode < COMPAT_IE9)
         ok_(__FILE__,line) (IsEqualGUID(&iid, diid) || broken(diid2 && IsEqualGUID(&iid, diid2)),
                 "unexpected guid %s\n", wine_dbgstr_guid(&iid));
 
@@ -773,7 +790,7 @@ static void _test_disp2(unsigned line, IUnknown *unk, const IID *diid, const IID
     ok_(__FILE__,line)(hres == E_NOINTERFACE, "Got IManagedObject iface\n");
     ok_(__FILE__,line)(!u, "u = %p\n", u);
 
-    if(val)
+    if(val && compat_mode < COMPAT_IE9) /* FIXME: Enable those tests in IE9+ mode */
         _test_disp_value(line, unk, val);
 
     if(clsid) {
@@ -9230,53 +9247,6 @@ static void test_elems2(IHTMLDocument2 *doc)
     test_elem_all((IUnknown*)div, outer_types, 1);
     IHTMLElement_Release(elem2);
 
-    test_elem_set_innerhtml((IUnknown*)div, "<textarea id=\"ta\"></textarea>");
-    elem = get_elem_by_id(doc, "ta", TRUE);
-    if(elem) {
-        IHTMLFormElement *form;
-
-        test_textarea_value((IUnknown*)elem, NULL);
-        test_textarea_put_value((IUnknown*)elem, "test");
-        test_textarea_defaultvalue((IUnknown*)elem, NULL);
-        test_textarea_put_defaultvalue((IUnknown*)elem, "defval text");
-        test_textarea_put_value((IUnknown*)elem, "test");
-        test_textarea_readonly((IUnknown*)elem, VARIANT_FALSE);
-        test_textarea_put_readonly((IUnknown*)elem, VARIANT_TRUE);
-        test_textarea_put_readonly((IUnknown*)elem, VARIANT_FALSE);
-        test_textarea_type((IUnknown*)elem);
-
-        form = get_textarea_form((IUnknown*)elem);
-        ok(!form, "form = %p\n", form);
-
-        test_elem_istextedit(elem, VARIANT_TRUE);
-
-        IHTMLElement_Release(elem);
-    }
-
-    test_elem_set_innerhtml((IUnknown*)div, "<textarea id=\"ta\">default text</textarea>");
-    elem = get_elem_by_id(doc, "ta", TRUE);
-    if(elem) {
-        test_textarea_defaultvalue((IUnknown*)elem, "default text");
-        IHTMLElement_Release(elem);
-    }
-
-    test_elem_set_innerhtml((IUnknown*)div, "<form id=\"fid\"><textarea id=\"ta\"></textarea></form>");
-    elem = get_elem_by_id(doc, "ta", TRUE);
-    if(elem) {
-        IHTMLFormElement *form;
-
-        elem2 = get_elem_by_id(doc, "fid", TRUE);
-        ok(elem2 != NULL, "elem2 == NULL\n");
-
-        form = get_textarea_form((IUnknown*)elem);
-        ok(form != NULL, "form = NULL\n");
-        ok(iface_cmp((IUnknown*)form, (IUnknown*)elem2), "form != elem2\n");
-
-        IHTMLFormElement_Release(form);
-        IHTMLElement_Release(elem2);
-        IHTMLElement_Release(elem);
-    }
-
     test_elem_set_innerhtml((IUnknown*)div,
             "<input value=\"val\" id =\"inputid\"  />");
     elem = get_elem_by_id(doc, "inputid", TRUE);
@@ -9376,6 +9346,67 @@ static void test_elems2(IHTMLDocument2 *doc)
     IHTMLElement_Release(div);
 }
 
+static void test_textarea_element(IHTMLDocument2 *doc, IHTMLElement *parent)
+{
+    IHTMLElement *form_elem, *elem;
+    IHTMLFormElement *form;
+
+    test_elem_set_innerhtml((IUnknown*)parent,
+                            "<form id=\"fid\"><textarea id=\"ta\"></textarea></form>");
+    elem = get_elem_by_id(doc, "ta", TRUE);
+    test_elem_type((IUnknown*)elem, ET_TEXTAREA);
+
+    form_elem = get_elem_by_id(doc, "fid", TRUE);
+    ok(form_elem != NULL, "form_elem == NULL\n");
+
+    form = get_textarea_form((IUnknown*)elem);
+    ok(form != NULL, "form = NULL\n");
+    ok(iface_cmp((IUnknown*)form, (IUnknown*)form_elem), "form != form_elem\n");
+
+    IHTMLFormElement_Release(form);
+    IHTMLElement_Release(form_elem);
+    IHTMLElement_Release(elem);
+
+    test_elem_set_innerhtml((IUnknown*)parent, "<textarea id=\"ta\"></textarea>");
+    elem = get_elem_by_id(doc, "ta", TRUE);
+
+    test_textarea_value((IUnknown*)elem, NULL);
+    test_textarea_put_value((IUnknown*)elem, "test");
+    test_textarea_defaultvalue((IUnknown*)elem, NULL);
+    test_textarea_put_defaultvalue((IUnknown*)elem, "defval text");
+    test_textarea_put_value((IUnknown*)elem, "test");
+    test_textarea_readonly((IUnknown*)elem, VARIANT_FALSE);
+    test_textarea_put_readonly((IUnknown*)elem, VARIANT_TRUE);
+    test_textarea_put_readonly((IUnknown*)elem, VARIANT_FALSE);
+    test_textarea_type((IUnknown*)elem);
+
+    form = get_textarea_form((IUnknown*)elem);
+    ok(!form, "form = %p\n", form);
+
+    test_elem_istextedit(elem, VARIANT_TRUE);
+
+    IHTMLElement_Release(elem);
+
+    test_elem_set_innerhtml((IUnknown*)parent, "<textarea id=\"ta\">default text</textarea>");
+    elem = get_elem_by_id(doc, "ta", TRUE);
+    test_textarea_defaultvalue((IUnknown*)elem, "default text");
+    IHTMLElement_Release(elem);
+}
+
+static void test_dom_elements(IHTMLDocument2 *doc)
+{
+    IHTMLElement *body, *div;
+
+    body = doc_get_body(doc);
+    test_elem_set_innerhtml((IUnknown*)body, "<div id=\"parentdiv\"></div>");
+    div = get_doc_elem_by_id(doc, "parentdiv");
+
+    test_textarea_element(doc, div);
+
+    IHTMLElement_Release(body);
+    IHTMLElement_Release(div);
+}
+
 static void test_create_elems(IHTMLDocument2 *doc)
 {
     IHTMLElement *elem, *body, *elem2;
@@ -10719,6 +10750,12 @@ START_TEST(dom)
     if (winetest_interactive || ! is_ie_hardened()) {
         run_domtest(elem_test_str, test_elems);
         run_domtest(elem_test2_str, test_elems2);
+        run_domtest(doc_blank, test_dom_elements);
+        if(is_ie9plus) {
+            compat_mode = COMPAT_IE9;
+            run_domtest(doc_blank_ie9, test_dom_elements);
+            compat_mode = COMPAT_NONE;
+        }
         run_domtest(noscript_str, test_noscript);
     }else {
         skip("IE running in Enhanced Security Configuration\n");




More information about the wine-cvs mailing list