Module: wine Branch: master Commit: f7b95a77c30d1915f64ece310942844459db3e02 URL: https://source.winehq.org/git/wine.git/?a=commit;h=f7b95a77c30d1915f64ece310...
Author: Jacek Caban jacek@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@codeweavers.com Signed-off-by: Alexandre Julliard julliard@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);