Jacek Caban : mshtml/tests: Run form element tests in both quirks and IE9 compat mode.
Alexandre Julliard
julliard at winehq.org
Thu Feb 8 15:33:09 CST 2018
Module: wine
Branch: master
Commit: f7b95a77c30d1915f64ece310942844459db3e02
URL: https://source.winehq.org/git/wine.git/?a=commit;h=f7b95a77c30d1915f64ece310942844459db3e02
Author: Jacek Caban <jacek at codeweavers.com>
Date: Thu Feb 8 20:54:09 2018 +0100
mshtml/tests: Run form element 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 | 95 ++++++++++++++++++++++++++++++-------------------
1 file changed, 59 insertions(+), 36 deletions(-)
diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c
index 2ef7f38..f9d2690 100644
--- a/dlls/mshtml/tests/dom.c
+++ b/dlls/mshtml/tests/dom.c
@@ -2752,7 +2752,10 @@ static void _test_elem_collection(unsigned line, IUnknown *unk,
V_I4(&name) = -1;
disp = (void*)0xdeadbeef;
hres = IHTMLElementCollection_item(col, name, index, &disp);
- ok_(__FILE__,line) (hres == E_INVALIDARG, "item failed: %08x, expected E_INVALIDARG\n", hres);
+ if(compat_mode < COMPAT_IE9)
+ ok_(__FILE__,line) (hres == E_INVALIDARG, "item failed: %08x, expected E_INVALIDARG\n", hres);
+ else
+ ok_(__FILE__,line) (hres == S_OK, "item failed: %08x\n", hres);
ok_(__FILE__,line) (disp == NULL, "disp != NULL\n");
IHTMLElementCollection_Release(col);
@@ -4577,8 +4580,9 @@ static void _test_form_put_encoding(unsigned line, IUnknown *unk, HRESULT exp_hr
_test_form_encoding(line, unk, encoding);
}
-#define test_form_elements(a) _test_form_elements(__LINE__,a)
-static void _test_form_elements(unsigned line, IUnknown *unk)
+#define test_form_elements(a,b,c) _test_form_elements(__LINE__,a,b,c)
+static void _test_form_elements(unsigned line, IUnknown *unk, const elem_type_t *elem_types,
+ LONG elem_types_cnt)
{
IHTMLFormElement *form = _get_form_iface(line, unk);
IDispatch *disp;
@@ -4588,7 +4592,10 @@ static void _test_form_elements(unsigned line, IUnknown *unk)
hres = IHTMLFormElement_get_elements(form, &disp);
ok_(__FILE__,line)(hres == S_OK, "get_elements failed: %08x\n", hres);
ok_(__FILE__,line)(disp != NULL, "disp = NULL\n");
- ok_(__FILE__,line)(iface_cmp((IUnknown*)form, (IUnknown*)disp), "disp != form\n");
+ if(compat_mode < COMPAT_IE9)
+ ok_(__FILE__,line)(iface_cmp((IUnknown*)form, (IUnknown*)disp), "disp != form\n");
+ else
+ _test_elem_collection(line, (IUnknown*)disp, elem_types, elem_types_cnt);
IDispatch_Release(disp);
IHTMLFormElement_Release(form);
@@ -4640,7 +4647,7 @@ static void test_select_form(IUnknown *uselect, IUnknown *uform)
ok(form != NULL, "form == NULL\n");
test_form_length((IUnknown*)form, 2);
- test_form_elements((IUnknown*)form);
+ test_form_elements((IUnknown*)form, NULL, 0);
test_form_name((IUnknown*)form, "form_name");
ok(iface_cmp(uform, (IUnknown*)form), "Expected %p, got %p\n", uform, form);
@@ -5378,7 +5385,10 @@ static void test_form_item(IHTMLElement *elem)
V_I4(&name) = -1;
disp = (void*)0xdeadbeef;
hres = IHTMLFormElement_item(form, name, index, &disp);
- ok(hres == E_INVALIDARG, "item failed: %08x, expected E_INVALIDARG\n", hres);
+ if(compat_mode < COMPAT_IE9)
+ ok(hres == E_INVALIDARG, "item failed: %08x, expected E_INVALIDARG\n", hres);
+ else
+ ok(hres == S_OK, "item failed: %08x\n", hres);
ok(!disp, "disp = %p\n", disp);
V_I4(&name) = 2;
@@ -8882,7 +8892,7 @@ static void test_elems(IHTMLDocument2 *doc)
ok(elem != NULL, "elem == NULL\n");
if(elem) {
test_form_length((IUnknown*)elem, 0);
- test_form_elements((IUnknown*)elem);
+ test_form_elements((IUnknown*)elem, NULL, 0);
IHTMLElement_Release(elem);
}
@@ -9262,35 +9272,6 @@ static void test_elems2(IHTMLDocument2 *doc)
test_insert_adjacent_elems(doc, div);
test_elem_set_innerhtml((IUnknown*)div,
- "<form id=\"form\"><input type=\"button\" /><div><input type=\"text\" id=\"inputid\"/></div></textarea>");
- elem = get_elem_by_id(doc, "form", TRUE);
- if(elem) {
- test_form_length((IUnknown*)elem, 2);
- test_form_item(elem);
- test_form_action((IUnknown*)elem, NULL);
- test_form_put_action((IUnknown*)elem, "about:blank");
- test_form_method((IUnknown*)elem, "get");
- test_form_put_method((IUnknown*)elem, S_OK, "post");
- test_form_put_method((IUnknown*)elem, E_INVALIDARG, "put");
- test_form_method((IUnknown*)elem, "post");
- test_form_name((IUnknown*)elem, NULL);
- test_form_put_name((IUnknown*)elem, "Name");
- test_form_encoding((IUnknown*)elem, "application/x-www-form-urlencoded");
- test_form_put_encoding((IUnknown*)elem, S_OK, "text/plain");
- test_form_put_encoding((IUnknown*)elem, S_OK, "multipart/form-data");
- test_form_put_encoding((IUnknown*)elem, E_INVALIDARG, "image/png");
- test_form_encoding((IUnknown*)elem, "multipart/form-data");
- test_form_elements((IUnknown*)elem);
- test_form_reset((IUnknown*)elem);
- test_form_target((IUnknown*)elem);
- IHTMLElement_Release(elem);
-
- elem = get_elem_by_id(doc, "inputid", TRUE);
- test_input_get_form((IUnknown*)elem, "form");
- IHTMLElement_Release(elem);
- }
-
- test_elem_set_innerhtml((IUnknown*)div,
"<form id=\"form\" name=\"form_name\"><select id=\"sform\"><option id=\"oform\"></option></select><button id=\"btnid\"></button></form>");
elem = get_elem_by_id(doc, "sform", TRUE);
elem2 = get_elem_by_id(doc, "form", TRUE);
@@ -9393,6 +9374,47 @@ static void test_textarea_element(IHTMLDocument2 *doc, IHTMLElement *parent)
IHTMLElement_Release(elem);
}
+static void test_form_element(IHTMLDocument2 *doc, IHTMLElement *parent)
+{
+ IHTMLElement *elem, *input_elem;
+
+ static const elem_type_t elems_textarea_input[] = { ET_TEXTAREA, ET_INPUT };
+
+ test_elem_set_innerhtml((IUnknown*)parent,
+ "<form id=\"form\">"
+ "<textarea></textarea>"
+ "<div><input type=\"text\" id=\"inputid\" /></div>"
+ "</form>");
+ elem = get_elem_by_id(doc, "form", TRUE);
+ test_elem_type((IUnknown*)elem, ET_FORM);
+
+ test_form_length((IUnknown*)elem, 2);
+ test_form_item(elem);
+ test_form_action((IUnknown*)elem, NULL);
+ test_form_put_action((IUnknown*)elem, "about:blank");
+ test_form_method((IUnknown*)elem, "get");
+ test_form_put_method((IUnknown*)elem, S_OK, "post");
+ test_form_put_method((IUnknown*)elem, E_INVALIDARG, "put");
+ test_form_method((IUnknown*)elem, "post");
+ test_form_name((IUnknown*)elem, NULL);
+ test_form_put_name((IUnknown*)elem, "Name");
+ test_form_encoding((IUnknown*)elem, "application/x-www-form-urlencoded");
+ test_form_put_encoding((IUnknown*)elem, S_OK, "text/plain");
+ test_form_put_encoding((IUnknown*)elem, S_OK, "multipart/form-data");
+ test_form_put_encoding((IUnknown*)elem, E_INVALIDARG, "image/png");
+ test_form_encoding((IUnknown*)elem, "multipart/form-data");
+ test_form_elements((IUnknown*)elem, elems_textarea_input,
+ sizeof(elems_textarea_input)/sizeof(*elems_textarea_input));
+ test_form_reset((IUnknown*)elem);
+ test_form_target((IUnknown*)elem);
+
+ input_elem = get_elem_by_id(doc, "inputid", TRUE);
+ test_input_get_form((IUnknown*)input_elem, "form");
+ IHTMLElement_Release(input_elem);
+
+ IHTMLElement_Release(elem);
+}
+
static void test_dom_elements(IHTMLDocument2 *doc)
{
IHTMLElement *body, *div;
@@ -9402,6 +9424,7 @@ static void test_dom_elements(IHTMLDocument2 *doc)
div = get_doc_elem_by_id(doc, "parentdiv");
test_textarea_element(doc, div);
+ test_form_element(doc, div);
IHTMLElement_Release(body);
IHTMLElement_Release(div);
More information about the wine-cvs
mailing list