From akhaldi@svn.reactos.org Thu Oct 2 09:51:46 2014 From: akhaldi@svn.reactos.org To: ros-diffs@reactos.org Subject: [ros-diffs] [akhaldi] 64459: [MSHTML_WINETEST] * Sync with Wine 1.7.27. CORE-8540 Date: Thu, 02 Oct 2014 09:51:45 +0000 Message-ID: <167036564047.185962.6079760584121069257.generated@iserv.reactos.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============2682200439291166459==" --===============2682200439291166459== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Author: akhaldi Date: Thu Oct 2 09:51:45 2014 New Revision: 64459 URL: http://svn.reactos.org/svn/reactos?rev=3D64459&view=3Drev Log: [MSHTML_WINETEST] * Sync with Wine 1.7.27. CORE-8540 Modified: trunk/rostests/winetests/mshtml/activex.c trunk/rostests/winetests/mshtml/dom.c trunk/rostests/winetests/mshtml/events.c trunk/rostests/winetests/mshtml/events.html trunk/rostests/winetests/mshtml/exectest.html trunk/rostests/winetests/mshtml/htmldoc.c trunk/rostests/winetests/mshtml/jstest.html trunk/rostests/winetests/mshtml/nav_test.html trunk/rostests/winetests/mshtml/script.c trunk/rostests/winetests/mshtml/style.c trunk/rostests/winetests/mshtml/vbtest.html Modified: trunk/rostests/winetests/mshtml/activex.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/mshtml/activ= ex.c?rev=3D64459&r1=3D64458&r2=3D64459&view=3Ddiff =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D --- trunk/rostests/winetests/mshtml/activex.c [iso-8859-1] (original) +++ trunk/rostests/winetests/mshtml/activex.c [iso-8859-1] Thu Oct 2 09:51:4= 5 2014 @@ -2702,12 +2702,6 @@ IHTMLDocument5 *doc; HRESULT hres; =20 - static const WCHAR xW[] =3D {'x',0}; - static const WCHAR yW[] =3D {'y',0}; - - if(!lstrcmpW(xW, yW)) - return FALSE; - hres =3D CoCreateInstance(&CLSID_HTMLDocument, NULL, CLSCTX_INPROC_SERVE= R|CLSCTX_INPROC_HANDLER, &IID_IHTMLDocument5, (void**)&doc); if(FAILED(hres)) Modified: trunk/rostests/winetests/mshtml/dom.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/mshtml/dom.c= ?rev=3D64459&r1=3D64458&r2=3D64459&view=3Ddiff =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D --- trunk/rostests/winetests/mshtml/dom.c [iso-8859-1] (original) +++ trunk/rostests/winetests/mshtml/dom.c [iso-8859-1] Thu Oct 2 09:51:45 20= 14 @@ -56,7 +56,7 @@ "" "" "" - "=
td1 texttd2 text
" + "
= td1 texttd2 text
" "" "" "" @@ -1142,6 +1142,17 @@ IHTMLElement_Release(elem); } =20 +#define test_elem_source_index(a,b) _test_elem_source_index(__LINE__,a,b) +static void _test_elem_source_index(unsigned line, IHTMLElement *elem, int i= ndex) +{ + LONG l =3D 0xdeadbeef; + HRESULT hres; + + hres =3D IHTMLElement_get_sourceIndex(elem, &l); + ok_(__FILE__,line)(hres =3D=3D S_OK, "get_sourceIndex failed: %08x\n", h= res); + ok_(__FILE__,line)(l =3D=3D index, "sourceIndex =3D %d, expected %d\n", = l, index); +} + #define get_doc_node(d) _get_doc_node(__LINE__,d) static IHTMLDocument2 *_get_doc_node(unsigned line, IHTMLDocument2 *doc) { @@ -1741,6 +1752,8 @@ IHTMLWindow2_Release(window); ok_(__FILE__,line) (hres =3D=3D S_OK, "get_Option failed: %08x\n", hres); =20 + test_disp((IUnknown*)factory, &IID_IHTMLOptionElementFactory, "[object]"= ); + V_VT(&text) =3D VT_BSTR; V_BSTR(&text) =3D a2bstr(txt); V_VT(&value) =3D VT_BSTR; @@ -2103,14 +2116,37 @@ IHTMLElement_Release(elem); } =20 +#define get_elem_col_item_idx(a,b) _get_elem_col_item_idx(__LINE__,a,b) +static IHTMLElement *_get_elem_col_item_idx(unsigned line, IHTMLElementColle= ction *col, int i) +{ + VARIANT name, index; + IHTMLElement *elem; + IDispatch *disp; + HRESULT hres; + + V_VT(&index) =3D VT_EMPTY; + V_VT(&name) =3D VT_I4; + V_I4(&name) =3D i; + hres =3D IHTMLElementCollection_item(col, name, index, &disp); + ok_(__FILE__,line)(hres =3D=3D S_OK, "item failed: %08x\n", hres); + ok_(__FILE__,line)(disp !=3D NULL, "disp =3D=3D NULL\n"); + + elem =3D _get_elem_iface(line, (IUnknown*)disp); + IDispatch_Release(disp); + return elem; +} + #define test_elem_collection(c,t,l) _test_elem_collection(__LINE__,c,t,l) static void _test_elem_collection(unsigned line, IUnknown *unk, const elem_type_t *elem_types, LONG exlen) { IHTMLElementCollection *col; + IEnumVARIANT *enum_var; + IUnknown *enum_unk; + ULONG fetched; LONG len; DWORD i; - VARIANT name, index; + VARIANT name, index, v, vs[5]; IDispatch *disp, *disp2; HRESULT hres; =20 @@ -2127,6 +2163,13 @@ len =3D exlen; =20 V_VT(&index) =3D VT_EMPTY; + + hres =3D IHTMLElementCollection_get__newEnum(col, &enum_unk); + ok_(__FILE__,line)(hres =3D=3D S_OK, "_newEnum failed: %08x\n", hres); + + hres =3D IUnknown_QueryInterface(enum_unk, &IID_IEnumVARIANT, (void**)&e= num_var); + IUnknown_Release(enum_unk); + ok_(__FILE__,line)(hres =3D=3D S_OK, "Could not get IEnumVARIANT iface: = %08x\n", hres); =20 for(i=3D0; i 2 ? len-2 : 0); + ok_(__FILE__,line)(hres =3D=3D S_OK, "Skip failed: %08x\n", hres); + + memset(vs, 0, sizeof(vs)); + fetched =3D 0; + hres =3D IEnumVARIANT_Next(enum_var, sizeof(vs)/sizeof(*vs), vs, &fetche= d); + ok_(__FILE__,line)(hres =3D=3D S_FALSE, "Next failed: %08x\n", hres); + ok_(__FILE__,line)(fetched =3D=3D (len > 2 ? 2 : len), "fetched =3D %d\n= ", fetched); + if(len) { + ok_(__FILE__,line)(V_VT(vs) =3D=3D VT_DISPATCH && V_DISPATCH(vs), "V= _VT(vs[0]) =3D %d\n", V_VT(vs)); + IDispatch_Release(V_DISPATCH(vs)); + } + if(len > 1) { + ok_(__FILE__,line)(V_VT(vs+1) =3D=3D VT_DISPATCH && V_DISPATCH(vs+1)= , "V_VT(vs[1]) =3D %d\n", V_VT(vs+1)); + IDispatch_Release(V_DISPATCH(vs+1)); + } + + hres =3D IEnumVARIANT_Reset(enum_var); + ok_(__FILE__,line)(hres =3D=3D S_OK, "Reset failed: %08x\n", hres); + + hres =3D IEnumVARIANT_Skip(enum_var, len+1); + ok_(__FILE__,line)(hres =3D=3D S_FALSE, "Skip failed: %08x\n", hres); + + IEnumVARIANT_Release(enum_var); =20 V_VT(&name) =3D VT_I4; V_I4(&name) =3D len; @@ -2226,20 +2321,8 @@ =20 HeapFree(GetProcessHeap(), 0, types); =20 - if(ret) { - IDispatch *disp; - VARIANT v; - - V_VT(&v) =3D VT_I4; - V_I4(&v) =3D 0; - disp =3D NULL; - hres =3D IHTMLElementCollection_item(col, v, v, &disp); - ok(hres =3D=3D S_OK, "item failed: %08x\n", hres); - ok(disp !=3D NULL, "disp =3D=3D NULL\n"); - *ret =3D _get_elem_iface(line, (IUnknown*)disp); - IDispatch_Release(disp); - } - + if(ret) + *ret =3D get_elem_col_item_idx(col, 0); IHTMLElementCollection_Release(col); } =20 @@ -2497,6 +2580,24 @@ _test_elem3_get_disabled(line, (IUnknown*)select, exb); } =20 +static void test_select_remove(IHTMLSelectElement *select) +{ + HRESULT hres; + + hres =3D IHTMLSelectElement_remove(select, 3); + ok(hres =3D=3D S_OK, "remove failed: %08x, expected S_OK\n", hres); + test_select_length(select, 2); + + hres =3D IHTMLSelectElement_remove(select, -1); + todo_wine + ok(hres =3D=3D E_INVALIDARG, "remove failed: %08x, expected E_INVALIDARG= \n", hres); + test_select_length(select, 2); + + hres =3D IHTMLSelectElement_remove(select, 0); + ok(hres =3D=3D S_OK, "remove failed:%08x\n", hres); + test_select_length(select, 1); +} + #define test_text_length(u,l) _test_text_length(__LINE__,u,l) static void _test_text_length(unsigned line, IUnknown *unk, LONG l) { @@ -2701,6 +2802,24 @@ _test_img_alt(line, unk, alt); } =20 +#define test_img_align(u,a) _test_img_align(__LINE__,u,a) +static void _test_img_align(unsigned line, IUnknown *unk, const char *align) +{ + IHTMLImgElement *img =3D _get_img_iface(line, unk); + BSTR tmp; + HRESULT hres; + + tmp =3D a2bstr(align); + hres =3D IHTMLImgElement_put_align(img, tmp); + ok_(__FILE__,line) (hres =3D=3D S_OK, "put_align failed: %08x\n", hres); + SysFreeString(tmp); + + hres =3D IHTMLImgElement_get_align(img, &tmp); + ok_(__FILE__,line) (hres =3D=3D S_OK, "put_align failed: %08x\n", hres); + ok_(__FILE__,line) (!strcmp_wa(tmp, align), "Expect %s, got %s\n", align= , wine_dbgstr_w(tmp)); + SysFreeString(tmp); +} + #define test_img_name(u, c) _test_img_name(__LINE__,u, c) static void _test_img_name(unsigned line, IUnknown *unk, const char *pValue) { @@ -2725,6 +2844,25 @@ hres =3D IHTMLImgElement_get_complete(img, &b); ok_(__FILE__,line) (hres =3D=3D S_OK, "get_complete failed: %08x\n", hre= s); ok_(__FILE__,line) (b =3D=3D exb, "complete =3D %x, expected %x\n", b, e= xb); + IHTMLImgElement_Release(img); +} + +#define test_img_isMap(u, c) _test_img_isMap(__LINE__,u, c) +static void _test_img_isMap(unsigned line, IUnknown *unk, VARIANT_BOOL v) +{ + IHTMLImgElement *img =3D _get_img_iface(line, unk); + VARIANT_BOOL b =3D 100; + HRESULT hres; + + hres =3D IHTMLImgElement_put_isMap(img, v); + ok_(__FILE__,line) (hres =3D=3D S_OK, "put_isMap failed: %08x\n", hres); + + hres =3D IHTMLImgElement_get_isMap(img, &b); + ok_(__FILE__,line) (hres =3D=3D S_OK, "get_isMap failed: %08x\n", hres); + ok_(__FILE__,line) (b =3D=3D v, "isMap =3D %x, expected %x\n", b, v); + + hres =3D IHTMLImgElement_get_isMap(img, NULL); + ok_(__FILE__,line) (hres =3D=3D E_INVALIDARG, "ret =3D %08x, expected E_= INVALIDARG\n", hres); IHTMLImgElement_Release(img); } =20 @@ -2950,6 +3088,65 @@ ok_(__FILE__,line)(specified =3D=3D expected, "specified =3D %x, expecte= d %x\n", specified, expected); } =20 +#define test_elem_id(e,i) _test_elem_id(__LINE__,e,i) +static void _test_elem_id(unsigned line, IUnknown *unk, const char *exid) +{ + IHTMLElement *elem =3D _get_elem_iface(line, unk); + BSTR id =3D (void*)0xdeadbeef; + HRESULT hres; + + hres =3D IHTMLElement_get_id(elem, &id); + IHTMLElement_Release(elem); + ok_(__FILE__,line) (hres =3D=3D S_OK, "get_id failed: %08x\n", hres); + + if(exid) + ok_(__FILE__,line) (!strcmp_wa(id, exid), "unexpected id %s\n", wine= _dbgstr_w(id)); + else + ok_(__FILE__,line) (!id, "id=3D%s\n", wine_dbgstr_w(id)); + + SysFreeString(id); +} + +#define test_elem_put_id(u,i) _test_elem_put_id(__LINE__,u,i) +static void _test_elem_put_id(unsigned line, IUnknown *unk, const char *new_= id) +{ + IHTMLElement *elem =3D _get_elem_iface(line, unk); + BSTR tmp =3D a2bstr(new_id); + HRESULT hres; + + hres =3D IHTMLElement_put_id(elem, tmp); + IHTMLElement_Release(elem); + SysFreeString(tmp); + ok_(__FILE__,line) (hres =3D=3D S_OK, "put_id failed: %08x\n", hres); + + _test_elem_id(line, unk, new_id); +} + +static void test_contenteditable(IUnknown *unk) +{ + IHTMLElement3 *elem3 =3D get_elem3_iface(unk); + HRESULT hres; + BSTR str, strDefault; + + hres =3D IHTMLElement3_get_contentEditable(elem3, &strDefault); + ok(hres =3D=3D S_OK, "get_contentEditable failed: 0x%08x\n", hres); + + str =3D a2bstr("true"); + hres =3D IHTMLElement3_put_contentEditable(elem3, str); + ok(hres =3D=3D S_OK, "put_contentEditable(%s) failed: 0x%08x\n", wine_db= gstr_w(str), hres); + SysFreeString(str); + hres =3D IHTMLElement3_get_contentEditable(elem3, &str); + ok(hres =3D=3D S_OK, "get_contentEditable failed: 0x%08x\n", hres); + ok(!strcmp_wa(str, "true"), "Got %s, expected %s\n", wine_dbgstr_w(str),= "true"); + + /* Restore origin contentEditable */ + hres =3D IHTMLElement3_put_contentEditable(elem3, strDefault); + ok(hres =3D=3D S_OK, "put_contentEditable(%s) failed: 0x%08x\n", wine_db= gstr_w(strDefault), hres); + SysFreeString(strDefault); + + IHTMLElement3_Release(elem3); +} + #define test_input_type(i,t) _test_input_type(__LINE__,i,t) static void _test_input_type(unsigned line, IHTMLInputElement *input, const = char *extype) { @@ -3102,6 +3299,45 @@ IHTMLInputElement_Release(input); } =20 +#define test_input_get_form(o, t) _test_input_get_form(__LINE__, o, t) +static void _test_input_get_form(unsigned line, IUnknown *unk, const char *i= d) +{ + IHTMLInputElement *input; + IHTMLFormElement *form; + IHTMLElement *elem; + HRESULT hres; + + ok_(__FILE__,line) (unk !=3D NULL, "unk is NULL!\n"); + hres =3D IUnknown_QueryInterface(unk, &IID_IHTMLInputElement, (void**)&i= nput); + ok_(__FILE__,line) (hres =3D=3D S_OK, "Could not get IHTMLInputElement: = %08x\n", hres); + ok_(__FILE__,line) (input !=3D NULL, "input =3D=3D NULL\n"); + if(FAILED(hres) || input =3D=3D NULL) + return; + + hres =3D IHTMLInputElement_get_form(input, &form); + ok_(__FILE__, line) (hres =3D=3D S_OK, "get_form failed: %08x\n", hres); + ok_(__FILE__, line) (form !=3D NULL, "form =3D=3D NULL\n"); + if(FAILED(hres) || form =3D=3D NULL){ + IHTMLInputElement_Release(input); + return; + } + + hres =3D IHTMLFormElement_QueryInterface(form, &IID_IHTMLElement, (void = **)&elem); + ok_(__FILE__, line) (hres =3D=3D S_OK, "QueryInterface(IID_IHTMLElement)= failed: %08x\n", hres); + ok_(__FILE__, line) (elem !=3D NULL, "elem =3D=3D NULL\n"); + if(FAILED(hres) || elem =3D=3D NULL){ + IHTMLInputElement_Release(input); + IHTMLFormElement_Release(form); + return; + } + + _test_elem_id(line, (IUnknown*)elem, id); + + IHTMLInputElement_Release(input); + IHTMLFormElement_Release(form); + IHTMLElement_Release(elem); +} + #define test_input_put_value(o,v) _test_input_put_value(__LINE__,o,v) static void _test_input_put_value(unsigned line, IUnknown *unk, const char *= val) { @@ -3195,6 +3431,43 @@ _test_input_src(line, input, src); } =20 +#define test_input_set_size(u,s,r) _test_input_set_size(__LINE__,u,s,r) +static void _test_input_set_size(unsigned line, IHTMLInputElement *input, LO= NG size, HRESULT exret) +{ + HRESULT hres; + + hres =3D IHTMLInputElement_put_size(input, size); + ok_(__FILE__,line) (hres =3D=3D exret, "Expect ret =3D %08x, got: %08x\n= ", exret, hres); +} + +#define test_input_get_size(u,s) _test_input_get_size(__LINE__,u,s) +static void _test_input_get_size(unsigned line, IHTMLInputElement *input, LO= NG exsize) +{ + HRESULT hres; + LONG size; + + hres =3D IHTMLInputElement_get_size(input, &size); + ok_(__FILE__,line) (hres =3D=3D S_OK, "get_size failed: %08x\n", hres); + ok_(__FILE__,line) (size =3D=3D exsize, "Expect %d, got %d\n", exsize, s= ize); + + hres =3D IHTMLInputElement_get_size(input, NULL); + ok_(__FILE__,line) (hres =3D=3D E_INVALIDARG, "Expect ret E_INVALIDARG, = got: %08x\n", hres); +} + +#define test_input_readOnly(u,b) _test_input_readOnly(__LINE__,u,b) +static void _test_input_readOnly(unsigned line, IHTMLInputElement *input, VA= RIANT_BOOL v) +{ + HRESULT hres; + VARIANT_BOOL b =3D 100; + + hres =3D IHTMLInputElement_put_readOnly(input, v); + ok_(__FILE__,line)(hres =3D=3D S_OK, "put readOnly failed: %08x\n", hres= ); + + hres =3D IHTMLInputElement_get_readOnly(input, &b); + ok_(__FILE__,line)(hres =3D=3D S_OK, "get readOnly failed: %08x\n", hres= ); + ok_(__FILE__,line)(v =3D=3D b, "Expect %x, got %x\n", v, b); +} + #define test_elem_class(u,c) _test_elem_class(__LINE__,u,c) static void _test_elem_class(unsigned line, IUnknown *unk, const char *excla= ss) { @@ -3355,40 +3628,6 @@ _test_elem_class(line, unk, class); } =20 -#define test_elem_id(e,i) _test_elem_id(__LINE__,e,i) -static void _test_elem_id(unsigned line, IUnknown *unk, const char *exid) -{ - IHTMLElement *elem =3D _get_elem_iface(line, unk); - BSTR id =3D (void*)0xdeadbeef; - HRESULT hres; - - hres =3D IHTMLElement_get_id(elem, &id); - IHTMLElement_Release(elem); - ok_(__FILE__,line) (hres =3D=3D S_OK, "get_id failed: %08x\n", hres); - - if(exid) - ok_(__FILE__,line) (!strcmp_wa(id, exid), "unexpected id %s\n", wine= _dbgstr_w(id)); - else - ok_(__FILE__,line) (!id, "id=3D%s\n", wine_dbgstr_w(id)); - - SysFreeString(id); -} - -#define test_elem_put_id(u,i) _test_elem_put_id(__LINE__,u,i) -static void _test_elem_put_id(unsigned line, IUnknown *unk, const char *new_= id) -{ - IHTMLElement *elem =3D _get_elem_iface(line, unk); - BSTR tmp =3D a2bstr(new_id); - HRESULT hres; - - hres =3D IHTMLElement_put_id(elem, tmp); - IHTMLElement_Release(elem); - SysFreeString(tmp); - ok_(__FILE__,line) (hres =3D=3D S_OK, "put_id failed: %08x\n", hres); - - _test_elem_id(line, unk, new_id); -} - #define test_elem_title(u,t) _test_elem_title(__LINE__,u,t) static void _test_elem_title(unsigned line, IUnknown *unk, const char *extit= le) { @@ -3657,13 +3896,44 @@ IHTMLFormElement_Release(form); } =20 +#define test_form_reset(a) _test_form_reset(__LINE__,a) +static void _test_form_reset(unsigned line, IUnknown *unk) +{ + IHTMLFormElement *form =3D _get_form_iface(line, unk); + HRESULT hres; + + hres =3D IHTMLFormElement_reset(form); + ok_(__FILE__,line)(hres =3D=3D S_OK, "reset failed: %08x\n", hres); + + IHTMLFormElement_Release(form); +} + +static void test_form_target(IUnknown *unk) +{ + IHTMLFormElement *form =3D get_form_iface(unk); + HRESULT hres; + BSTR str; + static const char target[] =3D "_blank"; + + str =3D a2bstr(target); + hres =3D IHTMLFormElement_put_target(form, str); + ok(hres =3D=3D S_OK, "put_target(%s) failed: %08x\n", target, hres); + SysFreeString(str); + + hres =3D IHTMLFormElement_get_target(form, &str); + ok(hres =3D=3D S_OK, "get_target failed: %08x\n", hres); + ok(!strcmp_wa(str, target), "Expected %s, got %s\n", target, wine_dbgstr= _w(str)); + SysFreeString(str); + + IHTMLFormElement_Release(form); +} + #define test_meta_name(a,b) _test_meta_name(__LINE__,a,b) static void _test_meta_name(unsigned line, IUnknown *unk, const char *exname) { IHTMLMetaElement *meta; BSTR name =3D NULL; HRESULT hres; - =20 meta =3D _get_metaelem_iface(line, unk); hres =3D IHTMLMetaElement_get_name(meta, &name); @@ -3680,7 +3950,6 @@ BSTR content =3D NULL; HRESULT hres; =20 - meta =3D _get_metaelem_iface(line, unk); hres =3D IHTMLMetaElement_get_content(meta, &content); ok_(__FILE__,line)(hres =3D=3D S_OK, "get_content failed: %08x\n", hres); @@ -3696,7 +3965,6 @@ BSTR val =3D NULL; HRESULT hres; =20 - meta =3D _get_metaelem_iface(line, unk); hres =3D IHTMLMetaElement_get_httpEquiv(meta, &val); ok_(__FILE__,line)(hres =3D=3D S_OK, "get_httpEquiv failed: %08x\n", hre= s); @@ -3705,6 +3973,59 @@ IHTMLMetaElement_Release(meta); } =20 +#define test_meta_charset(a,b) _test_meta_charset(__LINE__,a,b) +static void _test_meta_charset(unsigned line, IUnknown *unk, const char *exv= al) +{ + IHTMLMetaElement *meta; + BSTR val =3D NULL; + HRESULT hres; + + meta =3D _get_metaelem_iface(line, unk); + hres =3D IHTMLMetaElement_get_charset(meta, &val); + ok_(__FILE__,line)(hres =3D=3D S_OK, "get_charset failed: %08x\n", hres); + if(exval) + ok_(__FILE__,line)(!strcmp_wa(val, exval), "charset =3D %s, expected= %s\n", wine_dbgstr_w(val), exval); + else + ok_(__FILE__,line)(!val, "charset =3D %s, expected NULL\n", wine_dbg= str_w(val)); + SysFreeString(val); + IHTMLMetaElement_Release(meta); +} + +#define set_meta_charset(a,b) _set_meta_charset(__LINE__,a,b) +static void _set_meta_charset(unsigned line, IUnknown *unk, const char *vala) +{ + BSTR val =3D a2bstr(vala); + IHTMLMetaElement *meta; + HRESULT hres; + + meta =3D _get_metaelem_iface(line, unk); + hres =3D IHTMLMetaElement_put_charset(meta, val); + ok_(__FILE__,line)(hres =3D=3D S_OK, "put_charset failed: %08x\n", hres); + SysFreeString(val); + IHTMLMetaElement_Release(meta); + + _test_meta_charset(line, unk, vala); +} + +#define test_link_media(a,b) _test_link_media(__LINE__,a,b) +static void _test_link_media(unsigned line, IHTMLElement *elem, const char *= exval) +{ + IHTMLLinkElement *link =3D _get_link_iface(line, (IUnknown*)elem); + HRESULT hres; + BSTR str; + + str =3D a2bstr(exval); + hres =3D IHTMLLinkElement_put_media(link, str); + ok_(__FILE__,line)(hres =3D=3D S_OK, "put_media(%s) failed: %08x\n", exv= al, hres); + SysFreeString(str); + + hres =3D IHTMLLinkElement_get_media(link, &str); + ok_(__FILE__,line)(hres =3D=3D S_OK, "get_media failed: %08x\n", hres); + ok_(__FILE__,line)(!strcmp_wa(str, exval), "got %s, expected %s\n", wine= _dbgstr_w(str), exval); + SysFreeString(str); + IHTMLLinkElement_Release(link); +} + #define test_link_disabled(a,b) _test_link_disabled(__LINE__,a,b) static void _test_link_disabled(unsigned line, IHTMLElement *elem, VARIANT_B= OOL v) { @@ -3760,6 +4081,37 @@ SysFreeString(str); IHTMLLinkElement_Release(link); _test_link_rel(line, elem, v); +} + +#define test_link_rev(a,b) _test_link_rev(__LINE__,a,b) +static void _test_link_rev(unsigned line, IHTMLElement *elem, const char *v) +{ + IHTMLLinkElement *link =3D _get_link_iface(line, (IUnknown*)elem); + BSTR rev; + HRESULT hres; + + hres =3D IHTMLLinkElement_get_rev(link, &rev); + ok_(__FILE__,line)(hres =3D=3D S_OK, "get_rev failed: %08x\n", hres); + if(v) + ok_(__FILE__,line)(!strcmp_wa(rev, v), "rev =3D %s, expected %s\n", = wine_dbgstr_w(rev), v); + else + ok_(__FILE__,line)(!rev, "rev =3D %s, expected NULL\n", wine_dbgstr_= w(rev)); + + IHTMLLinkElement_Release(link); +} + +#define link_put_rev(a,b) _link_put_rev(__LINE__,a,b) +static void _link_put_rev(unsigned line, IHTMLElement *elem, const char *v) +{ + IHTMLLinkElement *link =3D _get_link_iface(line, (IUnknown*)elem); + BSTR str =3D a2bstr(v); + HRESULT hres; + + hres =3D IHTMLLinkElement_put_rev(link, str); + ok_(__FILE__,line)(hres =3D=3D S_OK, "put_disabled failed: %08x\n", hres= ); + SysFreeString(str); + IHTMLLinkElement_Release(link); + _test_link_rev(line, elem, v); } =20 #define test_link_type(a,b) _test_link_type(__LINE__,a,b) @@ -3884,8 +4236,17 @@ HRESULT hres; =20 hres =3D IHTMLDOMAttribute_get_nodeValue(attr, v); - ok_(__FILE__,line) (hres =3D=3D S_OK, "get_nodeValue failed: %08x, expec= ted VT_BSTR\n", hres); + ok_(__FILE__,line) (hres =3D=3D S_OK, "get_nodeValue failed: %08x\n", hr= es); ok_(__FILE__,line) (V_VT(v) =3D=3D vt, "vt=3D%d, expected %d\n", V_VT(v)= , vt); +} + +#define put_attr_node_value(a,b) _put_attr_node_value(__LINE__,a,b) +static void _put_attr_node_value(unsigned line, IHTMLDOMAttribute *attr, VAR= IANT v) +{ + HRESULT hres; + + hres =3D IHTMLDOMAttribute_put_nodeValue(attr, v); + ok_(__FILE__,line) (hres =3D=3D S_OK, "put_nodeValue failed: %08x\n", hr= es); } =20 #define get_window_doc(e) _get_window_doc(__LINE__,e) @@ -4237,6 +4598,7 @@ =20 test_select_multiple(select, VARIANT_FALSE); test_select_set_multiple(select, VARIANT_TRUE); + test_select_remove(select); } =20 static void test_form_item(IHTMLElement *elem) @@ -4890,6 +5252,25 @@ } } =20 +#define test_table_length(t,l) _test_table_length(__LINE__,t,l) +static void _test_table_length(unsigned line, IHTMLTable *table, LONG expect) +{ + IHTMLElementCollection *col; + HRESULT hres; + LONG len; + + hres =3D IHTMLTable_get_rows(table, &col); + ok_(__FILE__,line)(hres =3D=3D S_OK, "get_rows failed: %08x\n", hres); + ok_(__FILE__,line)(col !=3D NULL, "col =3D NULL\n"); + if (hres !=3D S_OK || col =3D=3D NULL) + return; + hres =3D IHTMLElementCollection_get_length(col, &len); + ok_(__FILE__,line)(hres =3D=3D S_OK, "get_length failed: %08x\n", hres); + ok_(__FILE__,line)(len =3D=3D expect, "Expect %d, got %d\n", expect, len= ); + + IHTMLElementCollection_Release(col); +} + static void test_navigator(IHTMLDocument2 *doc) { IHTMLWindow2 *window; @@ -5116,9 +5497,16 @@ IHTMLElement *elem; IHTMLDocument3 *doc3; HRESULT hres; + BSTR bstr; =20 hres =3D IHTMLDocument2_QueryInterface(doc, &IID_IHTMLDocument3, (void**= )&doc3); ok(hres =3D=3D S_OK, "QueryInterface(IID_IHTMLDocument3) failed: %08x\n"= , hres); + + hres =3D IHTMLDocument2_toString(doc, &bstr); + ok(hres =3D=3D S_OK, "toString failed: %08x\n", hres); + ok(!strcmp_wa(bstr, "[object]"), + "toString returned %s, expected [object]\n", wine_dbgstr_w(bstr)= ); + SysFreeString(bstr); =20 hres =3D IHTMLDocument3_get_documentElement(doc3, &elem); IHTMLDocument3_Release(doc3); @@ -5239,7 +5627,7 @@ =20 hres =3D IHTMLBodyElement_get_bgColor(body, &vbg); ok(hres =3D=3D S_OK, "get_bgColor failed: %08x\n", hres); - ok(V_VT(&vDefaultbg) =3D=3D VT_BSTR, "V_VT(&vDefaultbg) !=3D VT_BSTR\n"); + ok(V_VT(&vbg) =3D=3D VT_BSTR, "V_VT(&vbg) !=3D VT_BSTR\n"); ok(!strcmp_wa(V_BSTR(&vbg), "#ff0000"), "Unexpected bgcolor %s\n", wine_= dbgstr_w(V_BSTR(&vbg))); VariantClear(&vbg); =20 @@ -5368,6 +5756,33 @@ IHTMLWindow2_Release(window); } =20 +static void test_dom_implementation(IHTMLDocument2 *doc) +{ + IHTMLDocument5 *doc5 =3D get_htmldoc5_iface((IUnknown*)doc); + IHTMLDOMImplementation *dom_implementation; + VARIANT_BOOL b; + VARIANT v; + BSTR str; + HRESULT hres; + + hres =3D IHTMLDocument5_get_implementation(doc5, &dom_implementation); + IHTMLDocument5_Release(doc5); + ok(hres =3D=3D S_OK, "get_implementation failed: %08x\n", hres); + ok(dom_implementation !=3D NULL, "dom_implementation =3D=3D NULL\n"); + + str =3D a2bstr("test"); + V_VT(&v) =3D VT_BSTR; + V_BSTR(&v) =3D a2bstr("1.0"); + b =3D 100; + hres =3D IHTMLDOMImplementation_hasFeature(dom_implementation, str, v, &= b); + SysFreeString(str); + VariantClear(&v); + ok(hres =3D=3D S_OK, "hasFeature failed: %08x\n", hres); + ok(!b, "hasFeature returned %x\n", b); + + IHTMLDOMImplementation_Release(dom_implementation); +} + static void test_defaults(IHTMLDocument2 *doc) { IHTMLStyleSheetsCollection *stylesheetcol; @@ -5502,6 +5917,7 @@ =20 test_default_selection(doc); test_doc_title(doc, ""); + test_dom_implementation(doc); } =20 #define test_button_name(a,b) _test_button_name(__LINE__,a,b) @@ -5571,6 +5987,57 @@ set_button_name(elem, "button name"); } =20 +#define test_tr_possess(e,r,l,i) _test_tr_possess(__LINE__,e,r,l,i) +static void _test_tr_possess(unsigned line, IHTMLElement *elem, + IHTMLTableRow *row, LONG len, const char *id) +{ + IHTMLElementCollection *col; + IDispatch *disp; + HRESULT hres; + LONG lval; + VARIANT var; + + hres =3D IHTMLTableRow_get_cells(row, &col); + ok_(__FILE__, line)(hres =3D=3D S_OK, "get_cells failed: %08x\n", hres); + ok_(__FILE__, line)(col !=3D NULL, "get_cells returned NULL\n"); + + hres =3D IHTMLElementCollection_get_length(col, &lval); + ok_(__FILE__, line)(hres =3D=3D S_OK, "get length failed: %08x\n", hres); + ok_(__FILE__, line)(lval =3D=3D len, "expected len =3D %d, got %d\n", le= n, lval); + + V_VT(&var) =3D VT_BSTR; + V_BSTR(&var) =3D a2bstr(id); + hres =3D IHTMLElementCollection_tags(col, var, &disp); + ok_(__FILE__, line)(hres =3D=3D S_OK, "search by tags(%s) failed: %08x\n= ", id, hres); + ok_(__FILE__, line)(disp !=3D NULL, "disp =3D=3D NULL\n"); + + VariantClear(&var); + IDispatch_Release(disp); + IHTMLElementCollection_Release(col); +} + +static void test_tr_modify(IHTMLElement *elem, IHTMLTableRow *row) +{ + HRESULT hres; + IDispatch *disp; + IHTMLTableCell *cell; + + hres =3D IHTMLTableRow_deleteCell(row, 0); + ok(hres =3D=3D S_OK, "deleteCell failed: %08x\n", hres); + test_tr_possess(elem, row, 1, "td2"); + + hres =3D IHTMLTableRow_insertCell(row, 0, &disp); + ok(hres =3D=3D S_OK, "insertCell failed: %08x\n", hres); + ok(disp !=3D NULL, "disp =3D=3D NULL\n"); + hres =3D IDispatch_QueryInterface(disp, &IID_IHTMLTableCell, (void **)&c= ell); + ok(hres =3D=3D S_OK, "Could not get IID_IHTMLTableCell interface: %08x\n= ", hres); + ok(cell !=3D NULL, "cell =3D=3D NULL\n"); + if (SUCCEEDED(hres)) + IHTMLTableCell_Release(cell); + test_tr_possess(elem, row, 2, "td2"); + IDispatch_Release(disp); +} + static void test_tr_elem(IHTMLElement *elem) { IHTMLElementCollection *col; @@ -5642,7 +6109,7 @@ =20 hres =3D IHTMLTableRow_get_bgColor(row, &vbg); ok(hres =3D=3D S_OK, "get_bgColor failed: %08x\n", hres); - ok(V_VT(&vDefaultbg) =3D=3D VT_BSTR, "V_VT(&vDefaultbg) !=3D VT_BSTR\n"); + ok(V_VT(&vbg) =3D=3D VT_BSTR, "V_VT(&vbg) !=3D VT_BSTR\n"); ok(!strcmp_wa(V_BSTR(&vbg), "#ff0000"), "Unexpected bgcolor %s\n", wine_= dbgstr_w(V_BSTR(&vbg))); VariantClear(&vbg); =20 @@ -5654,7 +6121,7 @@ =20 hres =3D IHTMLTableRow_get_bgColor(row, &vbg); ok(hres =3D=3D S_OK, "get_bgColor failed: %08x\n", hres); - ok(V_VT(&vDefaultbg) =3D=3D VT_BSTR, "V_VT(&vDefaultbg) !=3D VT_BSTR\n"); + ok(V_VT(&vbg) =3D=3D VT_BSTR, "V_VT(&vbg) !=3D VT_BSTR\n"); ok(!strcmp_wa(V_BSTR(&vbg), "#ff0000"), "Unexpected bgcolor %s\n", wine_= dbgstr_w(V_BSTR(&vbg))); VariantClear(&vbg); =20 @@ -5663,7 +6130,78 @@ ok(hres =3D=3D S_OK, "put_bgColor failed: %08x\n", hres); VariantClear(&vDefaultbg); =20 + test_tr_modify(elem, row); + IHTMLTableRow_Release(row); +} + +static void test_td_elem(IHTMLElement *elem) +{ + IHTMLTableCell *cell; + HRESULT hres; + LONG lval; + BSTR str; + VARIANT vbg, vDefaultbg; + + hres =3D IHTMLElement_QueryInterface(elem, &IID_IHTMLTableCell, (void**)= &cell); + ok(hres =3D=3D S_OK, "Could not get IHTMLTableRow iface: %08x\n", hres); + if(FAILED(hres)) + return; + + lval =3D 0xdeadbeef; + hres =3D IHTMLTableCell_get_cellIndex(cell, &lval); + ok(hres =3D=3D S_OK, "get cellIndex failed: %08x\n", hres); + ok(lval =3D=3D 1, "Expected 1, got %d\n", lval); + + str =3D a2bstr("left"); + hres =3D IHTMLTableCell_put_align(cell, str); + ok(hres =3D=3D S_OK, "put_align failed: %08x\n", hres); + SysFreeString(str); + + str =3D NULL; + hres =3D IHTMLTableCell_get_align(cell, &str); + ok(hres =3D=3D S_OK, "get_align failed: %08x\n", hres); + ok(str !=3D NULL, "str is NULL\n"); + if (str !=3D NULL && hres =3D=3D S_OK) { + ok(!strcmp_wa(str, "left"), "got %s\n", wine_dbgstr_w(str)); + SysFreeString(str); + } + + hres =3D IHTMLTableCell_get_bgColor(cell, &vDefaultbg); + ok(hres =3D=3D S_OK, "get_bgColor failed: %08x\n", hres); + ok(V_VT(&vDefaultbg) =3D=3D VT_BSTR, "bstr !=3D NULL\n"); + ok(!V_BSTR(&vDefaultbg), "V_BSTR(bgColor) =3D %s\n", wine_dbgstr_w(V_BST= R(&vDefaultbg))); + + V_VT(&vbg) =3D VT_BSTR; + V_BSTR(&vbg) =3D a2bstr("red"); + hres =3D IHTMLTableCell_put_bgColor(cell, vbg); + ok(hres =3D=3D S_OK, "put_bgColor failed: %08x\n", hres); + VariantClear(&vbg); + + hres =3D IHTMLTableCell_get_bgColor(cell, &vbg); + ok(hres =3D=3D S_OK, "get_bgColor failed: %08x\n", hres); + ok(V_VT(&vbg) =3D=3D VT_BSTR, "V_VT(&vbg) !=3D VT_BSTR\n"); + ok(!strcmp_wa(V_BSTR(&vbg), "#ff0000"), "Unexpected bgcolor %s\n", wine_= dbgstr_w(V_BSTR(&vbg))); + VariantClear(&vbg); + + V_VT(&vbg) =3D VT_I4; + V_I4(&vbg) =3D 0xff0000; + hres =3D IHTMLTableCell_put_bgColor(cell, vbg); + ok(hres =3D=3D S_OK, "put_bgColor failed: %08x\n", hres); + VariantClear(&vbg); + + hres =3D IHTMLTableCell_get_bgColor(cell, &vbg); + ok(hres =3D=3D S_OK, "get_bgColor failed: %08x\n", hres); + ok(V_VT(&vbg) =3D=3D VT_BSTR, "V_VT(&vbg) !=3D VT_BSTR\n"); + ok(!strcmp_wa(V_BSTR(&vbg), "#ff0000"), "Unexpected bgcolor %s\n", wine_= dbgstr_w(V_BSTR(&vbg))); + VariantClear(&vbg); + + /* Restore Originial */ + hres =3D IHTMLTableCell_put_bgColor(cell, vDefaultbg); + ok(hres =3D=3D S_OK, "put_bgColor failed: %08x\n", hres); + VariantClear(&vDefaultbg); + + IHTMLTableCell_Release(cell); } =20 static void test_label_elem(IHTMLElement *elem) @@ -5721,10 +6259,45 @@ VariantClear(&v); } =20 +static void test_table_modify(IHTMLTable *table) +{ + IDispatch *disp; + IHTMLTableRow *row; + HRESULT hres; + LONG index; + + test_table_length(table, 2); + + hres =3D IHTMLTable_insertRow(table, 0, &disp); + ok(hres =3D=3D S_OK, "insertRow failed: %08x\n", hres); + ok(disp !=3D NULL, "disp =3D=3D NULL\n"); + test_table_length(table, 3); + if (hres !=3D S_OK || disp =3D=3D NULL) + return; + + hres =3D IDispatch_QueryInterface(disp, &IID_IHTMLTableRow, (void**)&row= ); + IDispatch_Release(disp); + + ok(hres =3D=3D S_OK, "QueryInterface failed: %08x\n", hres); + ok(row !=3D NULL, "row =3D=3D NULL\n"); + + index =3D 0xdeadbeef; + hres =3D IHTMLTableRow_get_rowIndex(row, &index); + ok(hres =3D=3D S_OK, "get_rowIndex failed: %08x\n", hres); + ok(index =3D=3D 0, "index =3D %d, expected 0\n", index); + + IHTMLTableRow_Release(row); + + hres =3D IHTMLTable_deleteRow(table, 0); + ok(hres =3D=3D S_OK, "deleteRow failed: %08x\n", hres); + test_table_length(table, 2); +} + static void test_table_elem(IHTMLElement *elem) { IHTMLElementCollection *col; IHTMLTable *table; + IHTMLTable3 *table3; IHTMLDOMNode *node; VARIANT v; HRESULT hres; @@ -5737,6 +6310,11 @@ =20 hres =3D IHTMLElement_QueryInterface(elem, &IID_IHTMLTable, (void**)&tab= le); ok(hres =3D=3D S_OK, "Could not get IHTMLTable iface: %08x\n", hres); + if(FAILED(hres)) + return; + + hres =3D IHTMLElement_QueryInterface(elem, &IID_IHTMLTable3, (void**)&ta= ble3); + ok(hres =3D=3D S_OK, "Could not get IHTMLTable3 iface: %08x\n", hres); if(FAILED(hres)) return; =20 @@ -5808,7 +6386,7 @@ =20 hres =3D IHTMLTable_get_bgColor(table, &vbg); ok(hres =3D=3D S_OK, "get_bgColor failed: %08x\n", hres); - ok(V_VT(&vDefaultbg) =3D=3D VT_BSTR, "V_VT(&vDefaultbg) !=3D VT_BSTR\n"); + ok(V_VT(&vbg) =3D=3D VT_BSTR, "V_VT(&vbg) !=3D VT_BSTR\n"); ok(!strcmp_wa(V_BSTR(&vbg), "#ff0000"), "Unexpected bgcolor %s\n", wine_= dbgstr_w(V_BSTR(&vbg))); VariantClear(&vbg); =20 @@ -5820,7 +6398,7 @@ =20 hres =3D IHTMLTable_get_bgColor(table, &vbg); ok(hres =3D=3D S_OK, "get_bgColor failed: %08x\n", hres); - ok(V_VT(&vDefaultbg) =3D=3D VT_BSTR, "V_VT(&vDefaultbg) !=3D VT_BSTR\n"); + ok(V_VT(&vbg) =3D=3D VT_BSTR, "V_VT(&vbg) !=3D VT_BSTR\n"); ok(!strcmp_wa(V_BSTR(&vbg), "#ff0000"), "Unexpected bgcolor %s\n", wine_= dbgstr_w(V_BSTR(&vbg))); VariantClear(&vbg); =20 @@ -5829,6 +6407,76 @@ ok(hres =3D=3D S_OK, "put_bgColor failed: %08x\n", hres); VariantClear(&vDefaultbg); =20 + V_VT(&v) =3D VT_BSTR; + V_BSTR(&v) =3D a2bstr("11"); + hres =3D IHTMLTable_put_width(table, v); + ok(hres =3D=3D S_OK, "put_width =3D %08x\n", hres); + VariantClear(&v); + IHTMLTable_get_width(table, &v); + ok(hres =3D=3D S_OK, "get_width =3D %08x\n", hres); + ok(!strcmp_wa(V_BSTR(&v), "11"), "Expected 11, got %s\n", wine_dbgstr_w(= V_BSTR(&v))); + VariantClear(&v); + + V_VT(&v) =3D VT_BSTR; + V_BSTR(&v) =3D a2bstr("11.9"); + hres =3D IHTMLTable_put_width(table, v); + ok(hres =3D=3D S_OK, "put_width =3D %08x\n", hres); + VariantClear(&v); + IHTMLTable_get_width(table, &v); + ok(hres =3D=3D S_OK, "get_width =3D %08x\n", hres); + ok(!strcmp_wa(V_BSTR(&v), "11"), "Expected 11, got %s\n", wine_dbgstr_w(= V_BSTR(&v))); + VariantClear(&v); + + V_VT(&v) =3D VT_BSTR; + V_BSTR(&v) =3D a2bstr("40.2%"); + hres =3D IHTMLTable_put_width(table, v); + ok(hres =3D=3D S_OK, "put_width =3D %08x\n", hres); + VariantClear(&v); + IHTMLTable_get_width(table, &v); + ok(hres =3D=3D S_OK, "get_width =3D %08x\n", hres); + ok(!strcmp_wa(V_BSTR(&v), "40.2%"), "Expected 40.2%%, got %s\n", wine_db= gstr_w(V_BSTR(&v))); + VariantClear(&v); + + V_VT(&v) =3D VT_I4; + V_I4(&v) =3D 11; + hres =3D IHTMLTable_put_width(table, v); + ok(hres =3D=3D S_OK, "put_width =3D %08x\n", hres); + IHTMLTable_get_width(table, &v); + ok(hres =3D=3D S_OK, "get_width =3D %08x\n", hres); + ok(!strcmp_wa(V_BSTR(&v), "11"), "Expected 11, got %s\n", wine_dbgstr_w(= V_BSTR(&v))); + VariantClear(&v); + + V_VT(&v) =3D VT_R8; + V_R8(&v) =3D 11.9; + hres =3D IHTMLTable_put_width(table, v); + ok(hres =3D=3D S_OK, "put_width =3D %08x\n", hres); + IHTMLTable_get_width(table, &v); + ok(hres =3D=3D S_OK, "get_width =3D %08x\n", hres); + ok(!strcmp_wa(V_BSTR(&v), "11"), "Expected 11, got %s\n", wine_dbgstr_w(= V_BSTR(&v))); + VariantClear(&v); + + + bstr =3D a2bstr("box"); + hres =3D IHTMLTable_put_frame(table, bstr); + ok(hres =3D=3D S_OK, "put_frame =3D %08x\n", hres); + SysFreeString(bstr); + hres =3D IHTMLTable_get_frame(table, &bstr); + ok(hres =3D=3D S_OK, "get_frame =3D %08x\n", hres); + ok(!strcmp_wa(bstr, "box"), "Expected box, got %s\n", wine_dbgstr_w(bstr= )); + SysFreeString(bstr); + + test_table_modify(table); + bstr =3D a2bstr("summary"); + hres =3D IHTMLTable3_put_summary(table3, bstr); + ok(hres =3D=3D S_OK, "put_summary =3D %08x\n", hres); + SysFreeString(bstr); + + hres =3D IHTMLTable3_get_summary(table3, &bstr); + ok(hres =3D=3D S_OK, "get_summary =3D %08x\n", hres); + ok(!strcmp_wa(bstr, "summary"), "Expected summary, got %s\n", wine_dbgst= r_w(bstr)); + SysFreeString(bstr); + + IHTMLTable3_Release(table3); IHTMLTable_Release(table); } =20 @@ -6087,6 +6735,8 @@ hres =3D IHTMLStyleSheet_get_rules(stylesheet, &col); ok(hres =3D=3D S_OK, "get_rules failed: %08x\n", hres); ok(col !=3D NULL, "col =3D=3D NULL\n"); + + test_disp2((IUnknown*)col, &DIID_DispHTMLStyleSheetRulesCollection, &IID= _IHTMLStyleSheetRulesCollection, "[object]"); IHTMLStyleSheetRulesCollection_Release(col); =20 href =3D (void*)0xdeadbeef; @@ -6180,7 +6830,55 @@ IDispatchEx_Release(dispex); } =20 - +static void test_enum_children(IUnknown *unk, unsigned len) +{ + IEnumVARIANT *enum_var; + ULONG i, fetched; + VARIANT v; + HRESULT hres; + + hres =3D IUnknown_QueryInterface(unk, &IID_IEnumVARIANT, (void**)&enum_v= ar); + ok(hres =3D=3D S_OK, "Could not get IEnumVARIANT iface: %08x\n", hres); + + for(i=3D0; i 2 ? len-2 : 0); + ok(hres =3D=3D S_OK, "Skip failed: %08x\n", hres); + + hres =3D IEnumVARIANT_Reset(enum_var); + ok(hres =3D=3D S_OK, "Reset failed: %08x\n", hres); + + hres =3D IEnumVARIANT_Skip(enum_var, len+1); + ok(hres =3D=3D S_FALSE, "Skip failed: %08x\n", hres); + + IEnumVARIANT_Release(enum_var); +} =20 static void test_elems(IHTMLDocument2 *doc) { @@ -6239,6 +6937,15 @@ ok(hres =3D=3D S_OK, "get_all failed: %08x\n", hres); test_elem_collection((IUnknown*)col, all_types, sizeof(all_types)/sizeof= (all_types[0])); test_elem_col_item(col, "x", item_types, sizeof(item_types)/sizeof(item_= types[0])); + + elem =3D get_elem_col_item_idx(col, 0); + test_elem_source_index(elem, 0); + IHTMLElement_Release(elem); + + elem =3D get_elem_col_item_idx(col, 3); + test_elem_source_index(elem, 3); + IHTMLElement_Release(elem); + IHTMLElementCollection_Release(col); =20 hres =3D IHTMLDocument2_get_images(doc, &collection); @@ -6337,10 +7044,12 @@ test_elem_contains(elem, elem3, VARIANT_FALSE); test_elem_contains(elem, elem2, VARIANT_FALSE); test_elem_contains(elem, elem, VARIANT_TRUE); + test_elem_contains(elem, NULL, VARIANT_FALSE); IHTMLElement_Release(elem2); =20 elem2 =3D test_elem_get_parent((IUnknown*)elem3); ok(elem2 =3D=3D NULL, "elem2 !=3D NULL\n"); + test_elem_source_index(elem3, 0); IHTMLElement_Release(elem3); =20 test_elem_getelembytag((IUnknown*)elem, ET_OPTION, 2, NULL); @@ -6405,8 +7114,10 @@ ok(hres =3D=3D S_OK, "get_type failed: %08x\n", hres); ok(type =3D=3D NULL, "Unexpected type %s\n", wine_dbgstr_w(type)= ); =20 - hres =3D IHTMLScriptElement_put_type (script, a2bstr ("text/java= script")); + type =3D a2bstr("text/javascript"); + hres =3D IHTMLScriptElement_put_type (script, type); ok(hres =3D=3D S_OK, "put_type failed: %08x\n", hres); + SysFreeString(type); hres =3D IHTMLScriptElement_get_type(script, &type); ok(hres =3D=3D S_OK, "get_type failed: %08x\n", hres); ok(!strcmp_wa(type, "text/javascript"), "Unexpected type %s\n", = wine_dbgstr_w(type)); @@ -6482,12 +7193,24 @@ test_input_src(input, NULL); test_input_set_src(input, "about:blank"); =20 + test_input_set_size(input, 15, S_OK); + test_input_get_size(input, 15); + test_input_set_size(input, -100, CTL_E_INVALIDPROPERTYVALUE); + test_input_get_size(input, 15); + test_input_set_size(input, 0, CTL_E_INVALIDPROPERTYVALUE); + test_input_get_size(input, 15); + + test_input_readOnly(input, VARIANT_TRUE); + test_input_readOnly(input, VARIANT_FALSE); + IHTMLInputElement_Release(input); IHTMLElement_Release(elem); } =20 elem =3D get_elem_by_id(doc, "imgid", TRUE); if(elem) { + test_img_align((IUnknown*)elem, "left"); + test_img_name((IUnknown*)elem, "WineImg"); test_img_src((IUnknown*)elem, "", NULL); test_img_set_src((IUnknown*)elem, "about:blank"); test_img_src((IUnknown*)elem, "about:blank", NULL); @@ -6495,6 +7218,8 @@ test_img_set_alt((IUnknown*)elem, "alt test"); test_img_name((IUnknown*)elem, "WineImg"); test_img_complete(elem, VARIANT_FALSE); + test_img_isMap((IUnknown*)elem, VARIANT_TRUE); + test_img_isMap((IUnknown*)elem, VARIANT_FALSE); IHTMLElement_Release(elem); } =20 @@ -6502,6 +7227,7 @@ if(elem) { test_dynamic_properties(elem); test_attr_collection(elem); + test_contenteditable((IUnknown*)elem); IHTMLElement_Release(elem); } =20 @@ -6525,6 +7251,13 @@ ok(elem !=3D NULL, "elem =3D=3D NULL\n"); if(elem) { test_label_elem(elem); + IHTMLElement_Release(elem); + } + + elem =3D get_doc_elem_by_id(doc, "td2"); + ok(elem !=3D NULL, "elem =3D=3D NULL\n"); + if(elem) { + test_td_elem(elem); IHTMLElement_Release(elem); } =20 @@ -6609,6 +7342,8 @@ test_meta_name((IUnknown*)elem, "meta name"); test_meta_content((IUnknown*)elem, "text/html; charset=3Dutf-8"); test_meta_httpequiv((IUnknown*)elem, "Content-Type"); + test_meta_charset((IUnknown*)elem, NULL); + set_meta_charset((IUnknown*)elem, "utf-8"); IHTMLElement_Release(elem); } =20 @@ -6640,6 +7375,7 @@ child_col =3D get_child_nodes((IUnknown*)elem); ok(child_col !=3D NULL, "child_coll =3D=3D NULL\n"); if(child_col) { + IUnknown *enum_unk; LONG length =3D 0; =20 test_disp((IUnknown*)child_col, &DIID_DispDOMChildrenCollection, "[o= bject]"); @@ -6690,6 +7426,13 @@ ok(hres =3D=3D E_INVALIDARG, "item failed: %08x, expected E_INVALIDA= RG\n", hres); =20 test_child_col_disp(child_col); + + hres =3D IHTMLDOMChildrenCollection_get__newEnum(child_col, &enum_un= k); + ok(hres =3D=3D S_OK, "get__newEnum failed: %08x\n", hres); + + test_enum_children(enum_unk, length); + + IUnknown_Release(enum_unk); =20 IHTMLDOMChildrenCollection_Release(child_col); } @@ -6814,12 +7557,31 @@ ok(!strcmp_wa(V_BSTR(&v), "divid"), "V_BSTR(v) =3D %s\n", wine_dbgstr_w(= V_BSTR(&v))); VariantClear(&v); =20 + V_VT(&v) =3D VT_BSTR; + V_BSTR(&v) =3D a2bstr("divid2"); + put_attr_node_value(attr, v); + + get_attr_node_value(attr, &v, VT_BSTR); + ok(!strcmp_wa(V_BSTR(&v), "divid2"), "V_BSTR(v) =3D %s\n", wine_dbgstr_w= (V_BSTR(&v))); + VariantClear(&v); + IHTMLDOMAttribute_Release(attr); =20 attr =3D get_elem_attr_node((IUnknown*)elem, "emptyattr", TRUE); get_attr_node_value(attr, &v, VT_BSTR); ok(!V_BSTR(&v), "V_BSTR(v) =3D %s\n", wine_dbgstr_w(V_BSTR(&v))); VariantClear(&v); + + V_VT(&v) =3D VT_BSTR; + V_BSTR(&v) =3D a2bstr("newvalue"); + put_attr_node_value(attr, v); + VariantClear(&v); + + attr =3D get_elem_attr_node((IUnknown*)elem, "emptyattr", TRUE); + get_attr_node_value(attr, &v, VT_BSTR); + ok(!strcmp_wa(V_BSTR(&v), "newvalue"), "V_BSTR(v) =3D %s\n", wine_dbgstr= _w(V_BSTR(&v))); + VariantClear(&v); + test_attr_specified(attr, VARIANT_TRUE); IHTMLDOMAttribute_Release(attr); =20 @@ -6830,6 +7592,14 @@ get_attr_node_value(attr, &v, VT_I4); ok(V_I4(&v) =3D=3D 100, "V_I4(v) =3D %d\n", V_I4(&v)); test_attr_specified(attr, VARIANT_TRUE); + + V_VT(&v) =3D VT_I4; + V_I4(&v) =3D 150; + put_attr_node_value(attr, v); + + get_attr_node_value(attr, &v, VT_I4); + ok(V_I4(&v) =3D=3D 150, "V_I4(v) =3D %d\n", V_I4(&v)); + IHTMLDOMAttribute_Release(attr); =20 attr =3D get_elem_attr_node((IUnknown*)elem, "tabIndex", TRUE); @@ -6925,10 +7695,13 @@ if(elem) { test_link_disabled(elem, VARIANT_FALSE); test_link_rel(elem, "stylesheet"); + test_link_rev(elem, NULL); test_link_type(elem, "text/css"); test_link_href(elem, "about:blank"); + test_link_media(elem, "all"); link_put_disabled(elem, VARIANT_TRUE); link_put_rel(elem, "prev"); + link_put_rev(elem, "next"); link_put_type(elem, "text/plain"); link_put_href(elem, "about:prev"); IHTMLElement_Release(elem); @@ -6974,7 +7747,7 @@ test_insert_adjacent_elems(doc, div); =20 test_elem_set_innerhtml((IUnknown*)div, - "
"); + "
"); elem =3D get_elem_by_id(doc, "form", TRUE); if(elem) { test_form_length((IUnknown*)elem, 2); @@ -6993,6 +7766,12 @@ 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 =3D get_elem_by_id(doc, "inputid", TRUE); + test_input_get_form((IUnknown*)elem, "form"); IHTMLElement_Release(elem); } =20 @@ -7023,6 +7802,7 @@ ok(type =3D=3D 1, "type=3D%d\n", type); test_ifaces((IUnknown*)elem, elem_iids); test_disp((IUnknown*)elem, &DIID_DispHTMLGenericElement, "[object]"); + test_elem_source_index(elem, -1); =20 body =3D doc_get_body(doc); test_node_has_child((IUnknown*)body, VARIANT_FALSE); @@ -7619,7 +8399,9 @@ ok(location =3D=3D (void*)0xdeadbeef, "location changed\n"); =20 br =3D test_create_elem(doc, "BR"); + test_elem_source_index(br, -1); test_node_append_child((IUnknown*)frag, (IUnknown*)br); + test_elem_source_index(br, 0); IHTMLElement_Release(br); =20 div =3D get_elem_by_id(doc, "divid", TRUE); Modified: trunk/rostests/winetests/mshtml/events.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/mshtml/event= s.c?rev=3D64459&r1=3D64458&r2=3D64459&view=3Ddiff =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D --- trunk/rostests/winetests/mshtml/events.c [iso-8859-1] (original) +++ trunk/rostests/winetests/mshtml/events.c [iso-8859-1] Thu Oct 2 09:51:45= 2014 @@ -88,7 +88,6 @@ static HWND container_hwnd =3D NULL; static IHTMLWindow2 *window; static IOleDocumentView *view; -static BOOL xy_todo; static BOOL is_ie9plus; =20 typedef struct { @@ -1638,8 +1637,6 @@ CHECK_CALLED(invoke_onclick); } =20 - xy_todo =3D TRUE; - SET_EXPECT(div_onclick); SET_EXPECT(div_onclick_attached); SET_EXPECT(body_onclick); @@ -1847,7 +1844,7 @@ ok(V_DISPATCH(&v) =3D=3D (IDispatch*)&img_onerror_obj, "V_DISPATCH(onerr= or) !=3D onerrorFunc\n"); VariantClear(&v); =20 - str =3D a2bstr("http://www.winehq.org/images/winehq_logo_text.png"); + str =3D a2bstr("https://www.winehq.org/images/winehq_logo_text.png"); hres =3D IHTMLImgElement_put_src(img, str); ok(hres =3D=3D S_OK, "put_src failed: %08x\n", hres); SysFreeString(str); @@ -2757,7 +2754,6 @@ MSG msg; HRESULT hres; =20 - xy_todo =3D FALSE; doc =3D create_document(); if (!doc) return; Modified: trunk/rostests/winetests/mshtml/events.html URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/mshtml/event= s.html?rev=3D64459&r1=3D64458&r2=3D64459&view=3Ddiff =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D --- trunk/rostests/winetests/mshtml/events.html [iso-8859-1] (original) +++ trunk/rostests/winetests/mshtml/events.html [iso-8859-1] Thu Oct 2 09:51= :45 2014 @@ -114,13 +114,15 @@ ok(calls =3D=3D "div2,div2*,div1,div1*,body,body*", "calls =3D " + calls= ); } =20 -function runTests(t) { +window.onload =3D function() { try { ok(cnt =3D=3D 1, "cnt=3D" + cnt + " exception during loading?"); - ok(t =3D=3D=3D window, "t !=3D=3D window"); + ok(this =3D=3D=3D window, "this !=3D=3D window"); =20 ok(typeof(window.onload) =3D=3D=3D "function", "typeof(window.onload= ) =3D " + typeof(window.onload)); ok(document.body.onload =3D=3D=3D window.onload, "document.body.onlo= ad !=3D=3D window.onload"); + + ok(img_onload_called, "img.onload not called before window.onload"); =20 test_scriptfor(); ondataavailable_test(); @@ -132,8 +134,18 @@ external.reportSuccess(); } + - +
+ Modified: trunk/rostests/winetests/mshtml/exectest.html URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/mshtml/exect= est.html?rev=3D64459&r1=3D64458&r2=3D64459&view=3Ddiff =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D --- trunk/rostests/winetests/mshtml/exectest.html [iso-8859-1] (original) +++ trunk/rostests/winetests/mshtml/exectest.html [iso-8859-1] Thu Oct 2 09:= 51:45 2014 @@ -55,7 +55,7 @@ testPutSrc(); testPutText(); }catch(e) { - ok(false, "Got an exception"); + ok(false, "Got an exception " + e.message); } =20 function testPutSrc2() { @@ -123,7 +123,7 @@ testPutSrc2(); testPutText2(); }catch(e) { - ok(false, "got an exception"); + ok(false, "got an exception " + e.message); } =20 external.reportSuccess(); Modified: trunk/rostests/winetests/mshtml/htmldoc.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/mshtml/htmld= oc.c?rev=3D64459&r1=3D64458&r2=3D64459&view=3Ddiff =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D --- trunk/rostests/winetests/mshtml/htmldoc.c [iso-8859-1] (original) +++ trunk/rostests/winetests/mshtml/htmldoc.c [iso-8859-1] Thu Oct 2 09:51:4= 5 2014 @@ -978,6 +978,7 @@ case 3000029: case 3000030: case 3000031: + case 3000032: /* TODO */ return S_OK; } @@ -2855,6 +2856,7 @@ test_readyState(NULL); return S_OK; case OLECMDID_UPDATETRAVELENTRY_DATARECOVERY: + case OLECMDID_PAGEAVAILABLE: case 6058: return E_FAIL; /* FIXME */ default: @@ -2864,7 +2866,7 @@ } =20 if(IsEqualGUID(&CGID_ShellDocView, pguidCmdGroup)) { - if(nCmdID !=3D 63 && (!is_refresh || nCmdID !=3D 37)) + if(nCmdID !=3D 63 && nCmdID !=3D 178 && (!is_refresh || nCmdID !=3D = 37)) test_readyState(NULL); ok(nCmdexecopt =3D=3D 0, "nCmdexecopts=3D%08x\n", nCmdexecopt); =20 @@ -2976,13 +2978,16 @@ =20 case 83: case 102: + case 133: case 134: /* TODO */ case 135: case 136: /* TODO */ + case 137: case 139: /* TODO */ case 143: /* TODO */ case 144: /* TODO */ case 178: + case 179: return E_NOTIMPL; =20 default: @@ -3162,7 +3167,9 @@ ok(puArgErr !=3D NULL, "puArgErr =3D=3D NULL\n"); ok(V_VT(pVarResult) =3D=3D 0, "V_VT(pVarResult)=3D%d, expected 0\n", V_V= T(pVarResult)); ok(wFlags =3D=3D DISPATCH_PROPERTYGET, "wFlags=3D%08x, expected DISPATCH= _PROPERTYGET\n", wFlags); - test_readyState(NULL); + + if(dispIdMember !=3D DISPID_AMBIENT_SILENT && dispIdMember !=3D DISPID_A= MBIENT_OFFLINEIFNOTCONNECTED) + test_readyState(NULL); =20 switch(dispIdMember) { case DISPID_AMBIENT_USERMODE: @@ -3290,13 +3297,15 @@ { static const IID IID_IIETravelLog2 =3D {0xb67cefd2,0xe3f1,0x478a,{0x9b,0= xfa,0xd8,0x93,0x70,0x37,0x5e,0x94}}; static const IID IID_unk_travellog =3D {0x6afc8b7f,0xbc17,0x4a95,{0x90,0= x2f,0x6f,0x5c,0xb5,0x54,0xc3,0xd8}}; + static const IID IID_unk_travellog2 =3D {0xf6d02767,0x9c80,0x428d,{0xb9,= 0x74,0x3f,0x17,0x29,0x45,0x3f,0xdb}}; =20 if(IsEqualGUID(&IID_IUnknown, riid) || IsEqualGUID(&IID_ITravelLog, riid= )) { *ppv =3D iface; return S_OK; } =20 - if(!IsEqualGUID(&IID_IIETravelLog2, riid) && !IsEqualGUID(&IID_unk_trave= llog, riid)) + if(!IsEqualGUID(&IID_IIETravelLog2, riid) && !IsEqualGUID(&IID_unk_trave= llog, riid) + && !IsEqualGUID(&IID_unk_travellog2, riid)) ok(0, "unexpected call %s\n", wine_dbgstr_guid(riid)); =20 *ppv =3D NULL; @@ -3430,7 +3439,7 @@ =20 ok(!pDispatch, "pDispatch =3D %p\n", pDispatch); ok(!strcmp_wa(lpszUrl, nav_url), "lpszUrl =3D %s, expected %s\n", wine_d= bgstr_w(lpszUrl), nav_url); - ok(dwFlags =3D=3D 0x40 || !dwFlags || dwFlags =3D=3D 0x50, "dwFlags =3D = %x\n", dwFlags); + ok(dwFlags =3D=3D 0x140 /* IE11*/ || dwFlags =3D=3D 0x40 || !dwFlags || = dwFlags =3D=3D 0x50, "dwFlags =3D %x\n", dwFlags); ok(!lpszFrameName, "lpszFrameName =3D %s\n", wine_dbgstr_w(lpszFrameName= )); if(!testing_submit) { ok(!pPostData, "pPostData =3D %p\n", pPostData); @@ -5291,7 +5300,7 @@ switch(load_state) { case LD_DOLOAD: case LD_NO: - if(!nav_url) + if(!nav_url && !editmode) ok(!elem, "elem !=3D NULL\n"); default: break; @@ -5453,8 +5462,29 @@ hres =3D IConnectionPoint_Advise(cp, (IUnknown*)&PropertyNotifySink,= NULL); ok(hres =3D=3D S_OK, "Advise failed: %08x\n", hres); } else if(IsEqualGUID(&IID_IDispatch, riid)) { + IEnumConnections *enum_conn; + CONNECTDATA conn_data; + ULONG fetched; + hres =3D IConnectionPoint_Advise(cp, (IUnknown*)&EventDispatch, &coo= kie); ok(hres =3D=3D S_OK, "Advise failed: %08x\n", hres); + + hres =3D IConnectionPoint_EnumConnections(cp, &enum_conn); + ok(hres =3D=3D S_OK, "EnumConnections failed: %08x\n", hres); + + fetched =3D 0; + hres =3D IEnumConnections_Next(enum_conn, 1, &conn_data, &fetched); + ok(hres =3D=3D S_OK, "Next failed: %08x\n", hres); + ok(conn_data.pUnk =3D=3D (IUnknown*)&EventDispatch, "conn_data.pUnk = =3D=3D EventDispatch\n"); + ok(conn_data.dwCookie =3D=3D cookie, "conn_data.dwCookie !=3D cookie= \n"); + IUnknown_Release(conn_data.pUnk); + + fetched =3D 0xdeadbeef; + hres =3D IEnumConnections_Next(enum_conn, 1, &conn_data, &fetched); + ok(hres =3D=3D S_FALSE, "Next failed: %08x\n", hres); + ok(!fetched, "fetched =3D %d\n", fetched); + + IEnumConnections_Release(enum_conn); } =20 IConnectionPoint_Release(cp); @@ -5722,6 +5752,8 @@ SET_EXPECT(NavigateWithBindCtx); SET_EXPECT(Exec_Explorer_38); /* todo_wine */ } + if(editmode || is_refresh) + SET_EXPECT(Exec_ShellDocView_138); expect_status_text =3D (LPWSTR)0xdeadbeef; /* TODO */ =20 while(!*b && GetMessageW(&msg, NULL, 0, 0)) { @@ -5844,6 +5876,8 @@ CHECK_CALLED(NavigateWithBindCtx); todo_wine CHECK_NOT_CALLED(Exec_Explorer_38); } + if(editmode || is_refresh) + CLEAR_CALLED(Exec_ShellDocView_138); /* IE11 */ =20 if(!is_extern) load_state =3D LD_COMPLETE; @@ -5949,7 +5983,7 @@ CHECK_CALLED(TranslateUrl); if(support_wbapp) { CHECK_CALLED(FireBeforeNavigate2); - CHECK_CALLED(Exec_ShellDocView_67); + CLEAR_CALLED(Exec_ShellDocView_67); /* Not called by IE11 */ if(!is_hash) { CHECK_CALLED(Invoke_AMBIENT_SILENT); CHECK_CALLED(Invoke_AMBIENT_OFFLINEIFNOTCONNECTED); @@ -6015,7 +6049,7 @@ ok(hres =3D=3D S_OK, "SuperNavigate failed: %08x\n", hres); =20 CHECK_CALLED(TranslateUrl); - CHECK_CALLED(Exec_ShellDocView_67); + CLEAR_CALLED(Exec_ShellDocView_67); /* Not called by IE11 */ CHECK_CALLED(Invoke_AMBIENT_SILENT); CHECK_CALLED(Invoke_AMBIENT_OFFLINEIFNOTCONNECTED); CHECK_CALLED(Exec_ShellDocView_63); @@ -6086,8 +6120,8 @@ hres =3D IPersistHistory_LoadHistory(per_hist, history_stream, NULL); ok(hres =3D=3D S_OK, "LoadHistory failed: %08x\n", hres); =20 - CHECK_CALLED_BROKEN(Exec_ShellDocView_138); - CHECK_CALLED(Exec_ShellDocView_67); + CLEAR_CALLED(Exec_ShellDocView_138); /* Not called by IE11 */ + CLEAR_CALLED(Exec_ShellDocView_67); /* Not called by IE11 */ CHECK_CALLED(FireBeforeNavigate2); CHECK_CALLED(Invoke_AMBIENT_SILENT); CHECK_CALLED(Invoke_AMBIENT_OFFLINEIFNOTCONNECTED); @@ -7810,11 +7844,11 @@ =20 CHECK_CALLED(TranslateUrl); CHECK_CALLED(FireBeforeNavigate2); - CHECK_CALLED(Exec_ShellDocView_67); + CLEAR_CALLED(Exec_ShellDocView_67); /* Not called by IE11 */ CHECK_CALLED(Invoke_AMBIENT_SILENT); CHECK_CALLED(Invoke_AMBIENT_OFFLINEIFNOTCONNECTED); CHECK_CALLED(Exec_ShellDocView_63); - todo_wine CHECK_CALLED(Exec_ShellDocView_84); + CLEAR_CALLED(Exec_ShellDocView_84); /* Not called by IE11 */ CHECK_CALLED(CreateInstance); CHECK_CALLED(Start); CHECK_CALLED(Protocol_Read); Modified: trunk/rostests/winetests/mshtml/jstest.html URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/mshtml/jstes= t.html?rev=3D64459&r1=3D64458&r2=3D64459&view=3Ddiff =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D --- trunk/rostests/winetests/mshtml/jstest.html [iso-8859-1] (original) +++ trunk/rostests/winetests/mshtml/jstest.html [iso-8859-1] Thu Oct 2 09:51= :45 2014 @@ -165,6 +165,9 @@ =20 var tmp =3D div.addBehavior(); ok(tmp =3D=3D=3D "test", "div.addBehavior() =3D " + tmp); + + tmp =3D String(div.attachEvent); + ok(tmp =3D=3D "\nfunction attachEvent() {\n [native code]\n}\n", "Str= ing(div.attachEvent) =3D " + tmp); } =20 function test_forin() { @@ -245,7 +248,7 @@ try { runTests(); }catch(e) { - ok(false, "got exception"); + ok(false, "got exception " + e.message); } =20 external.reportSuccess(); Modified: trunk/rostests/winetests/mshtml/nav_test.html URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/mshtml/nav_t= est.html?rev=3D64459&r1=3D64458&r2=3D64459&view=3Ddiff =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D --- trunk/rostests/winetests/mshtml/nav_test.html [iso-8859-1] (original) +++ trunk/rostests/winetests/mshtml/nav_test.html [iso-8859-1] Thu Oct 2 09:= 51:45 2014 @@ -18,6 +18,7 @@ } =20 iframe.onload =3D function() { + iframe.onload =3D null; var href =3D iframe.contentWindow.location.href; ok(/.*blank2.html/.test(href), "Unexpected href " + href); next_test(); @@ -27,8 +28,24 @@ subframe.src =3D "blank.html"; } =20 +function window_navigate_test() { + external.trace("Runnint window.navigate() tests..."); + + var iframe =3D document.getElementById("testframe"); + + iframe.onload =3D function() { + iframe.onlod =3D null; + var href =3D iframe.contentWindow.location.href; + ok(href =3D=3D=3D "about:blank", "Unexpected href " + href); + next_test(); + } + + iframe.contentWindow.navigate("about:blank"); +} + var tests =3D [ nav_back_test, + window_navigate_test, function() { external.reportSuccess(); } ]; =20 Modified: trunk/rostests/winetests/mshtml/script.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/mshtml/scrip= t.c?rev=3D64459&r1=3D64458&r2=3D64459&view=3Ddiff =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D --- trunk/rostests/winetests/mshtml/script.c [iso-8859-1] (original) +++ trunk/rostests/winetests/mshtml/script.c [iso-8859-1] Thu Oct 2 09:51:45= 2014 @@ -132,6 +132,8 @@ DEFINE_EXPECT(AXSetInterfaceSafetyOptions_IDispatchEx_caller); DEFINE_EXPECT(external_success); DEFINE_EXPECT(QS_VariantConversion); +DEFINE_EXPECT(QS_IActiveScriptSite); +DEFINE_EXPECT(QS_GetCaller); DEFINE_EXPECT(ChangeType); =20 #define TESTSCRIPT_CLSID "{178fc163-f585-4e24-9c13-4bb7faf80746}" @@ -162,6 +164,9 @@ static HRESULT ax_setopt_disp_caller_hres =3D S_OK, ax_setopt_disp_data_hres= =3D S_OK; static BOOL skip_loadobject_tests; =20 +static IActiveScriptSite *site; +static SCRIPTSTATE state; + static int strcmp_wa(LPCWSTR strw, const char *stra) { CHAR buf[512]; @@ -330,6 +335,19 @@ ok(IsEqualGUID(riid, &IID_IVariantChangeType), "uenxpected riid %s\n= ", wine_dbgstr_guid(riid)); *ppv =3D &VChangeType; return S_OK; + } + + if(IsEqualGUID(guidService, &IID_IActiveScriptSite)) { + CHECK_EXPECT(QS_IActiveScriptSite); + ok(IsEqualGUID(riid, &IID_IOleCommandTarget), "uenxpected riid %s\n"= , wine_dbgstr_guid(riid)); + return IActiveScriptSite_QueryInterface(site, riid, ppv); + } + + if(IsEqualGUID(guidService, &SID_GetCaller)) { + CHECK_EXPECT(QS_GetCaller); + ok(IsEqualGUID(riid, &IID_IServiceProvider), "uenxpected riid %s\n",= wine_dbgstr_guid(riid)); + *ppv =3D NULL; + return E_NOINTERFACE; } =20 ok(0, "unexpected service %s\n", wine_dbgstr_guid(guidService)); @@ -1280,9 +1298,6 @@ IHTMLElement_Release(body); } =20 -static IActiveScriptSite *site; -static SCRIPTSTATE state; - static HRESULT WINAPI ObjectSafety_QueryInterface(IObjectSafety *iface, REFI= ID riid, void **ppv) { *ppv =3D NULL; @@ -1902,6 +1917,22 @@ hres =3D dispex_propput(obj, id, 0, &var, NULL); ok(hres =3D=3D E_NOTIMPL, "InvokeEx failed: %08x\n", hres); =20 + hres =3D dispex_propget(dispex, DISPID_VALUE, &var, NULL); + ok(hres =3D=3D E_ACCESSDENIED, "InvokeEx returned: %08x, expected E_ACCE= SSDENIED\n", hres); + if(SUCCEEDED(hres)) + VariantClear(&var); + + SET_EXPECT(QS_IActiveScriptSite); + SET_EXPECT(QS_GetCaller); + hres =3D dispex_propget(dispex, DISPID_VALUE, &var, &caller_sp); + ok(hres =3D=3D S_OK, "InvokeEx returned: %08x, expected S_OK\n", hres); + ok(V_VT(&var) =3D=3D VT_BSTR, "V_VT(var) =3D %d\n", V_VT(&var)); + ok(!strcmp_wa(V_BSTR(&var), "\nfunction toString() {\n [native code]\= n}\n"), + "V_BSTR(var) =3D %s\n", wine_dbgstr_w(V_BSTR(&var))); + VariantClear(&var); + todo_wine CHECK_CALLED(QS_IActiveScriptSite); + todo_wine CHECK_CALLED(QS_GetCaller); + IDispatchEx_Release(dispex); } =20 @@ -2054,11 +2085,18 @@ test_elem_disabled(elem, VARIANT_TRUE); =20 V_VT(&v) =3D VT_I4; - V_BSTR(&v) =3D 0; + V_I4(&v) =3D 0; hres =3D dispex_propput(dispex, DISPID_IHTMLELEMENT3_DISABLED, 0, &v, NU= LL); ok(hres =3D=3D S_OK, "InvokeEx failed: %08x\n", hres); =20 test_elem_disabled(elem, VARIANT_FALSE); + + V_VT(&v) =3D VT_I4; + V_I4(&v) =3D 1; + hres =3D dispex_propput(dispex, DISPID_IHTMLELEMENT3_DISABLED, DISPATCH_= PROPERTYPUTREF, &v, NULL); + ok(hres =3D=3D S_OK, "InvokeEx failed: %08x\n", hres); + + test_elem_disabled(elem, VARIANT_TRUE); =20 IHTMLElement_Release(elem); IDispatchEx_Release(dispex); Modified: trunk/rostests/winetests/mshtml/style.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/mshtml/style= .c?rev=3D64459&r1=3D64458&r2=3D64459&view=3Ddiff =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D --- trunk/rostests/winetests/mshtml/style.c [iso-8859-1] (original) +++ trunk/rostests/winetests/mshtml/style.c [iso-8859-1] Thu Oct 2 09:51:45 = 2014 @@ -59,6 +59,22 @@ return ret; } =20 +static const WCHAR *strstr_wa(const WCHAR *str, const char *suba) +{ + BSTR sub; + const WCHAR *ret =3D NULL; + sub =3D a2bstr(suba); + while (*str) + { + const WCHAR *p1 =3D str, *p2 =3D sub; + while (*p1 && *p2 && *p1 =3D=3D *p2) { p1++; p2++; } + if (!*p2) {ret =3D str; break;} + str++; + } + SysFreeString(sub); + return ret; +} + #define test_var_bstr(a,b) _test_var_bstr(__LINE__,a,b) static void _test_var_bstr(unsigned line, const VARIANT *v, const char *expe= ct) { @@ -421,6 +437,18 @@ hres =3D IHTMLStyle2_get_overflowY(style2, &str); ok(hres =3D=3D S_OK, "get_overflowY failed: %08x\n", hres); ok(!strcmp_wa(str, "hidden"), "overflowX =3D %s\n", wine_dbgstr_w(str)); + + /* tableLayout */ + str =3D a2bstr("fixed"); + hres =3D IHTMLStyle2_put_tableLayout(style2, str); + ok(hres =3D=3D S_OK, "put_tableLayout failed: %08x\n", hres); + SysFreeString(str); + + str =3D (void*)0xdeadbeef; + hres =3D IHTMLStyle2_get_tableLayout(style2, &str); + ok(hres =3D=3D S_OK, "get_tableLayout failed: %08x\n", hres); + ok(!strcmp_wa(str, "fixed"), "tableLayout =3D %s\n", wine_dbgstr_w(str)); + SysFreeString(str); } =20 static void test_style3(IHTMLStyle3 *style3) @@ -471,6 +499,57 @@ VariantClear(&vdefault); } =20 +static void test_style5(IHTMLStyle5 *style5) +{ + HRESULT hres; + VARIANT v; + VARIANT vdefault; + + /* minWidth */ + hres =3D IHTMLStyle5_get_minWidth(style5, &vdefault); + ok(hres =3D=3D S_OK, "get_minWidth failed: %08x\n", hres); + + V_VT(&v) =3D VT_BSTR; + V_BSTR(&v) =3D a2bstr("12px"); + hres =3D IHTMLStyle5_put_minWidth(style5, v); + ok(hres =3D=3D S_OK, "put_minWidth failed: %08x\n", hres); + VariantClear(&v); + + hres =3D IHTMLStyle5_get_minWidth(style5, &v); + ok(hres =3D=3D S_OK, "get_minWidth failed: %08x\n", hres); + ok(V_VT(&v) =3D=3D VT_BSTR, "V_VT(v) =3D %d\n", V_VT(&v)); + ok(!strcmp_wa(V_BSTR(&v), "12px"), "expect 12px got (%s)\n", wine_dbgstr= _w(V_BSTR(&v))); + VariantClear(&v); + + V_VT(&v) =3D VT_BSTR; + V_BSTR(&v) =3D a2bstr("10%"); + hres =3D IHTMLStyle5_put_minWidth(style5, v); + ok(hres =3D=3D S_OK, "put_minWidth failed: %08x\n", hres); + VariantClear(&v); + + hres =3D IHTMLStyle5_get_minWidth(style5, &v); + ok(hres =3D=3D S_OK, "get_minWidth failed: %08x\n", hres); + ok(V_VT(&v) =3D=3D VT_BSTR, "V_VT(v) =3D %d\n", V_VT(&v)); + ok(!strcmp_wa(V_BSTR(&v), "10%"), "expect 10%% got (%s)\n", wine_dbgstr_= w(V_BSTR(&v))); + VariantClear(&v); + + V_VT(&v) =3D VT_BSTR; + V_BSTR(&v) =3D a2bstr("10"); + hres =3D IHTMLStyle5_put_minWidth(style5, v); + ok(hres =3D=3D S_OK, "put_minWidth failed: %08x\n", hres); + VariantClear(&v); + + hres =3D IHTMLStyle5_get_minWidth(style5, &v); + ok(hres =3D=3D S_OK, "get_minWidth failed: %08x\n", hres); + ok(V_VT(&v) =3D=3D VT_BSTR, "V_VT(v) =3D %d\n", V_VT(&v)); + ok(!strcmp_wa(V_BSTR(&v), "10px"), "expect 10px got (%s)\n", wine_dbgstr= _w(V_BSTR(&v))); + VariantClear(&v); + + hres =3D IHTMLStyle5_put_minWidth(style5, vdefault); + ok(hres =3D=3D S_OK, "put_minWidth failed: %08x\n", hres); + VariantClear(&vdefault); +} + static void test_style6(IHTMLStyle6 *style) { BSTR str; @@ -516,6 +595,7 @@ IHTMLStyle2 *style2; IHTMLStyle3 *style3; IHTMLStyle4 *style4; + IHTMLStyle5 *style5; IHTMLStyle6 *style6; VARIANT_BOOL b; VARIANT v; @@ -742,6 +822,28 @@ todo_wine ok(!strcmp_wa(V_BSTR(&v), "#00fdfd"), "V_BSTR(color) =3D %s\n", wine_dbg= str_w(V_BSTR(&v))); =20 + V_VT(&v) =3D VT_I4; + V_I4(&v) =3D 3; + hres =3D IHTMLStyle_put_lineHeight(style, v); + ok(hres =3D=3D S_OK, "put_lineHeight failed: %08x\n", hres); + + hres =3D IHTMLStyle_get_lineHeight(style, &v); + ok(hres =3D=3D S_OK, "get_lineHeight failed: %08x\n", hres); + ok(V_VT(&v) =3D=3D VT_BSTR, "V_VT(lineHeight) =3D %d, expect VT_BSTR\n",= V_VT(&v)); + ok(!strcmp_wa(V_BSTR(&v), "3"), "V_BSTR(lineHeight) =3D %s\n", wine_dbgs= tr_w(V_BSTR(&v))); + + V_VT(&v) =3D VT_BSTR; + V_BSTR(&v) =3D a2bstr("300%"); + hres =3D IHTMLStyle_put_lineHeight(style, v); + ok(hres =3D=3D S_OK, "put_lineHeight failed: %08x\n", hres); + VariantClear(&v); + + hres =3D IHTMLStyle_get_lineHeight(style, &v); + ok(hres =3D=3D S_OK, "get_lineHeight failed: %08x\n", hres); + ok(V_VT(&v) =3D=3D VT_BSTR, "V_VT(lineHeight) =3D %d, expect VT_BSTR\n",= V_VT(&v)); + ok(!strcmp_wa(V_BSTR(&v), "300%"), "V_BSTR(lineHeight) =3D %s\n", wine_d= bgstr_w(V_BSTR(&v))); + VariantClear(&v); + b =3D 0xfefe; hres =3D IHTMLStyle_get_textDecorationUnderline(style, &b); ok(hres =3D=3D S_OK, "get_textDecorationUnderline failed: %08x\n", hres); @@ -861,6 +963,11 @@ f =3D=3D 2.2f, /* IE8 */ "f =3D %f\n", f); =20 + l =3D 0xdeadbeef; + hres =3D IHTMLStyle_get_pixelWidth(style, &l); + ok(hres =3D=3D S_OK, "get_pixelWidth failed: %08x\n", hres); + ok(l =3D=3D 2, "pixelWidth =3D %d\n", l); + V_VT(&v) =3D VT_BSTR; V_BSTR(&v) =3D a2bstr("auto"); hres =3D IHTMLStyle_put_width(style, v); @@ -879,6 +986,11 @@ hres =3D IHTMLStyle_put_width(style, v); ok(hres =3D=3D S_OK, "put_width failed: %08x\n", hres); =20 + l =3D 0xdeadbeef; + hres =3D IHTMLStyle_get_pixelWidth(style, &l); + ok(hres =3D=3D S_OK, "get_pixelWidth failed: %08x\n", hres); + ok(l =3D=3D 100, "pixelWidth =3D %d\n", l); + V_VT(&v) =3D VT_EMPTY; hres =3D IHTMLStyle_get_width(style, &v); ok(hres =3D=3D S_OK, "get_width failed: %08x\n", hres); @@ -888,6 +1000,14 @@ =20 hres =3D IHTMLStyle_put_pixelWidth(style, 50); ok(hres =3D=3D S_OK, "put_pixelWidth failed: %08x\n", hres); + + l =3D 0xdeadbeef; + hres =3D IHTMLStyle_get_pixelWidth(style, &l); + ok(hres =3D=3D S_OK, "get_pixelWidth failed: %08x\n", hres); + ok(l =3D=3D 50, "pixelWidth =3D %d\n", l); + + hres =3D IHTMLStyle_get_pixelWidth(style, NULL); + ok(hres =3D=3D E_POINTER, "get_pixelWidth failed: %08x\n", hres); =20 V_VT(&v) =3D VT_EMPTY; hres =3D IHTMLStyle_get_width(style, &v); @@ -1062,6 +1182,9 @@ ok(hres =3D=3D S_OK, "get_pixelLeft failed: %08x\n", hres); ok(l =3D=3D 6, "pixelLeft =3D %d\n", l); =20 + hres =3D IHTMLStyle_get_pixelLeft(style, NULL); + ok(hres =3D=3D E_POINTER, "get_pixelLeft failed: %08x\n", hres); + V_VT(&v) =3D VT_EMPTY; hres =3D IHTMLStyle_get_left(style, &v); ok(hres =3D=3D S_OK, "get_left failed: %08x\n", hres); @@ -1087,6 +1210,17 @@ f =3D=3D 4.9f, /* IE8 */ "expected 4.0 or 4.9 (IE8) got %f\n", f); =20 + hres =3D IHTMLStyle_put_pixelTop(style, 6); + ok(hres =3D=3D S_OK, "put_pixelTop failed: %08x\n", hres); + + l =3D 0xdeadbeef; + hres =3D IHTMLStyle_get_pixelTop(style, &l); + ok(hres =3D=3D S_OK, "get_pixelTop failed: %08x\n", hres); + ok(l =3D=3D 6, "pixelTop =3D %d\n", l); + + hres =3D IHTMLStyle_get_pixelTop(style, NULL); + ok(hres =3D=3D E_POINTER, "get_pixelTop failed: %08x\n", hres); + V_VT(&v) =3D VT_BSTR; V_BSTR(&v) =3D a2bstr("3px"); hres =3D IHTMLStyle_put_top(style, v); @@ -1104,6 +1238,11 @@ ok(hres =3D=3D S_OK, "get_posTop failed: %08x\n", hres); ok(f =3D=3D 3.0, "expected 3.0 got %f\n", f); =20 + l =3D 0xdeadbeef; + hres =3D IHTMLStyle_get_pixelTop(style, &l); + ok(hres =3D=3D S_OK, "get_pixelTop failed: %08x\n", hres); + ok(l =3D=3D 3, "pixelTop =3D %d\n", l); + V_VT(&v) =3D VT_NULL; hres =3D IHTMLStyle_put_top(style, v); ok(hres =3D=3D S_OK, "put_top failed: %08x\n", hres); @@ -1115,6 +1254,11 @@ ok(!V_BSTR(&v), "V_BSTR(v) !=3D NULL\n"); VariantClear(&v); =20 + l =3D 0xdeadbeef; + hres =3D IHTMLStyle_get_pixelTop(style, &l); + ok(hres =3D=3D S_OK, "get_pixelTop failed: %08x\n", hres); + ok(!l, "pixelTop =3D %d\n", l); + /* Test posHeight */ hres =3D IHTMLStyle_get_posHeight(style, NULL); ok(hres =3D=3D E_POINTER, "get_posHeight failed: %08x\n", hres); @@ -1131,6 +1275,11 @@ ok(hres =3D=3D S_OK, "get_posHeight failed: %08x\n", hres); ok(f =3D=3D 0.0, "expected 0.0 got %f\n", f); =20 + l =3D 0xdeadbeef; + hres =3D IHTMLStyle_get_pixelHeight(style, &l); + ok(hres =3D=3D S_OK, "get_pixelHeight failed: %08x\n", hres); + ok(!l, "pixelHeight =3D %d\n", l); + hres =3D IHTMLStyle_put_posHeight(style, 4.9f); ok(hres =3D=3D S_OK, "put_posHeight failed: %08x\n", hres); =20 @@ -1140,6 +1289,13 @@ f =3D=3D 4.9f, /* IE8 */ "expected 4.0 or 4.9 (IE8) got %f\n", f); =20 + l =3D 0xdeadbeef; + hres =3D IHTMLStyle_get_pixelHeight(style, &l); + ok(hres =3D=3D S_OK, "get_pixelHeight failed: %08x\n", hres); + ok(l =3D=3D 4 || + l =3D=3D 5, /* IE8 */ + "pixelHeight =3D %d\n", l); + V_VT(&v) =3D VT_BSTR; V_BSTR(&v) =3D a2bstr("70px"); hres =3D IHTMLStyle_put_height(style, v); @@ -1153,6 +1309,11 @@ ok(!strcmp_wa(V_BSTR(&v), "70px"), "V_BSTR(v) =3D %s\n", wine_dbgstr_w(V= _BSTR(&v))); VariantClear(&v); =20 + l =3D 0xdeadbeef; + hres =3D IHTMLStyle_get_pixelHeight(style, &l); + ok(hres =3D=3D S_OK, "get_pixelHeight failed: %08x\n", hres); + ok(l =3D=3D 70, "pixelHeight =3D %d\n", l); + V_VT(&v) =3D VT_BSTR; V_BSTR(&v) =3D NULL; hres =3D IHTMLStyle_put_height(style, v); @@ -1166,6 +1327,22 @@ ok(!V_BSTR(&v), "V_BSTR(v) =3D %s, expected NULL\n", wine_dbgstr_w(V_BST= R(&v))); VariantClear(&v); =20 + l =3D 0xdeadbeef; + hres =3D IHTMLStyle_get_pixelHeight(style, &l); + ok(hres =3D=3D S_OK, "get_pixelHeight failed: %08x\n", hres); + ok(!l, "pixelHeight =3D %d\n", l); + + hres =3D IHTMLStyle_put_pixelHeight(style, 50); + ok(hres =3D=3D S_OK, "put_pixelHeight failed: %08x\n", hres); + + l =3D 0xdeadbeef; + hres =3D IHTMLStyle_get_pixelHeight(style, &l); + ok(hres =3D=3D S_OK, "get_pixelHeight failed: %08x\n", hres); + ok(l =3D=3D 50, "pixelHeight =3D %d\n", l); + + hres =3D IHTMLStyle_get_pixelHeight(style, NULL); + ok(hres =3D=3D E_POINTER, "get_pixelHeight failed: %08x\n", hres); + V_VT(&v) =3D VT_I4; V_I4(&v) =3D 64; hres =3D IHTMLStyle_put_height(style, v); @@ -1182,6 +1359,11 @@ ok(hres =3D=3D S_OK, "get_posHeight failed: %08x\n", hres); ok(f =3D=3D 64.0, "expected 64.0 got %f\n", f); =20 + l =3D 0xdeadbeef; + hres =3D IHTMLStyle_get_pixelHeight(style, &l); + ok(hres =3D=3D S_OK, "get_pixelHeight failed: %08x\n", hres); + ok(l =3D=3D 64, "pixelHeight =3D %d\n", l); + str =3D (void*)0xdeadbeef; hres =3D IHTMLStyle_get_cursor(style, &str); ok(hres =3D=3D S_OK, "get_cursor failed: %08x\n", hres); @@ -1248,6 +1430,39 @@ ok(!strcmp_wa(str, "center"), "textAlign =3D %s\n", wine_dbgstr_w(V_BSTR= (&v))); SysFreeString(str); =20 + V_VT(&v) =3D VT_NULL; + hres =3D IHTMLStyle_get_textIndent(style, &v); + ok(hres =3D=3D S_OK, "get_textIndent failed: %08x\n", hres); + ok(V_VT(&v) =3D=3D VT_BSTR, "V_VT(textIndent) =3D %d\n", V_VT(&v)); + ok(!V_BSTR(&v), "V_BSTR(textIndent) =3D %s\n", wine_dbgstr_w(V_BSTR(&v))= ); + + V_VT(&v) =3D VT_I4; + V_I4(&v) =3D 6; + hres =3D IHTMLStyle_put_textIndent(style, v); + ok(hres =3D=3D S_OK, "put_textIndent failed: %08x\n", hres); + + V_VT(&v) =3D VT_NULL; + hres =3D IHTMLStyle_get_textIndent(style, &v); + ok(hres =3D=3D S_OK, "get_textIndent failed: %08x\n", hres); + ok(V_VT(&v) =3D=3D VT_BSTR, "V_VT(textIndent) =3D %d\n", V_VT(&v)); + ok(!strcmp_wa(V_BSTR(&v), "6px"), "V_BSTR(textIndent) =3D %s\n", wine_db= gstr_w(V_BSTR(&v))); + + str =3D (void*)0xdeadbeef; + hres =3D IHTMLStyle_get_textTransform(style, &str); + ok(hres =3D=3D S_OK, "get_textTransform failed: %08x\n", hres); + ok(!str, "textTransform !=3D NULL\n"); + + str =3D a2bstr("lowercase"); + hres =3D IHTMLStyle_put_textTransform(style, str); + ok(hres =3D=3D S_OK, "put_textTransform failed: %08x\n", hres); + SysFreeString(str); + + str =3D NULL; + hres =3D IHTMLStyle_get_textTransform(style, &str); + ok(hres =3D=3D S_OK, "get_textTransform failed: %08x\n", hres); + ok(!strcmp_wa(str, "lowercase"), "textTransform =3D %s\n", wine_dbgstr_w= (V_BSTR(&v))); + SysFreeString(str); + str =3D (void*)0xdeadbeef; hres =3D IHTMLStyle_get_filter(style, &str); ok(hres =3D=3D S_OK, "get_filter failed: %08x\n", hres); @@ -1477,6 +1692,16 @@ ok(V_VT(&v) =3D=3D VT_BSTR, "type failed: %d\n", V_VT(&v)); ok(!strcmp_wa(V_BSTR(&v), "red"), "str=3D%s\n", wine_dbgstr_w(V_BSTR(&v)= )); VariantClear(&v); + + str =3D a2bstr("fixed"); + hres =3D IHTMLStyle_put_backgroundAttachment(style, str); + ok(hres =3D=3D S_OK, "put_backgroundAttachment failed: %08x\n", hres); + SysFreeString(str); + + hres =3D IHTMLStyle_get_backgroundAttachment(style, &str); + ok(hres =3D=3D S_OK, "get_backgroundAttachment failed: %08x\n", hres); + ok(!strcmp_wa(str, "fixed"), "ret =3D %s\n", wine_dbgstr_w(str)); + SysFreeString(str); =20 /* padding */ hres =3D IHTMLStyle_get_padding(style, &str); @@ -2106,7 +2331,34 @@ hres =3D IHTMLStyle_get_listStyleType(style, &str); ok(hres =3D=3D S_OK, "get_listStyleType failed: %08x\n", hres); ok(!strcmp_wa(str, "square"), "listStyleType =3D %s\n", wine_dbgstr_w(st= r)); - SysFreeString(str); + + str =3D a2bstr("inside"); + hres =3D IHTMLStyle_put_listStylePosition(style, str); + ok(hres =3D=3D S_OK, "put_listStylePosition failed: %08x\n", hres); + SysFreeString(str); + + hres =3D IHTMLStyle_get_listStylePosition(style, &str); + ok(hres =3D=3D S_OK, "get_listStylePosition failed: %08x\n", hres); + ok(!strcmp_wa(str, "inside"), "listStyleType =3D %s\n", wine_dbgstr_w(st= r)); + SysFreeString(str); + + str =3D a2bstr("decimal-leading-zero none inside"); + hres =3D IHTMLStyle_put_listStyle(style, str); + ok(hres =3D=3D S_OK || broken(hres =3D=3D E_INVALIDARG), /* win 2000 */ + "put_listStyle(%s) failed: %08x\n", wine_dbgstr_w(str), hres); + SysFreeString(str); + + if (hres !=3D E_INVALIDARG) { + hres =3D IHTMLStyle_get_listStyle(style, &str); + ok(hres =3D=3D S_OK, "get_listStyle failed: %08x\n", hres); + ok(strstr_wa(str, "decimal-leading-zero") && + strstr_wa(str, "none") !=3D NULL && + strstr_wa(str, "inside") !=3D NULL, + "listStyle =3D %s\n", wine_dbgstr_w(str)); + SysFreeString(str); + } else { + win_skip("IHTMLStyle_put_listStyle already failed\n"); + } =20 hres =3D IHTMLStyle_QueryInterface(style, &IID_IHTMLStyle2, (void**)&sty= le2); ok(hres =3D=3D S_OK, "Could not get IHTMLStyle2 iface: %08x\n", hres); @@ -2127,6 +2379,14 @@ if(SUCCEEDED(hres)) { test_style4(style4); IHTMLStyle4_Release(style4); + } + + hres =3D IHTMLStyle_QueryInterface(style, &IID_IHTMLStyle5, (void**)&sty= le5); + if(SUCCEEDED(hres)) { + test_style5(style5); + IHTMLStyle5_Release(style5); + }else { + win_skip("IHTMLStyle5 not available\n"); } =20 hres =3D IHTMLStyle_QueryInterface(style, &IID_IHTMLStyle6, (void**)&sty= le6); @@ -2490,6 +2750,10 @@ ok(V_VT(&v) =3D=3D VT_BSTR, "V_VT(v) =3D %d\n", V_VT(&v)); VariantClear(&v); =20 + hres =3D IHTMLCurrentStyle_get_textTransform(current_style, &str); + ok(hres =3D=3D S_OK, "get_textTransform failed: %08x\n", hres); + SysFreeString(str); + current_style2 =3D get_current_style2_iface((IUnknown*)current_style); =20 b =3D 100; Modified: trunk/rostests/winetests/mshtml/vbtest.html URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/mshtml/vbtes= t.html?rev=3D64459&r1=3D64458&r2=3D64459&view=3Ddiff =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D --- trunk/rostests/winetests/mshtml/vbtest.html [iso-8859-1] (original) +++ trunk/rostests/winetests/mshtml/vbtest.html [iso-8859-1] Thu Oct 2 09:51= :45 2014 @@ -24,7 +24,7 @@ counter++; incCounter(2); }catch(e) { - ok(false, "got an exception"); + ok(false, "got an exception " + e.message); }