mshtml/tests: Added dynamic properties accessing tests.
This commit is contained in:
parent
ff449dd1d7
commit
1d4d1068cd
|
@ -55,6 +55,7 @@ static const char elem_test_str[] =
|
||||||
"<img id=\"imgid\" name=\"WineImg\"/>"
|
"<img id=\"imgid\" name=\"WineImg\"/>"
|
||||||
"<iframe src=\"about:blank\" id=\"ifr\"></iframe>"
|
"<iframe src=\"about:blank\" id=\"ifr\"></iframe>"
|
||||||
"<form id=\"frm\"></form>"
|
"<form id=\"frm\"></form>"
|
||||||
|
"<div id=\"attr\" attr1=\"attr1\" attr2 attr3=\"attr3\"></div>"
|
||||||
"</body></html>";
|
"</body></html>";
|
||||||
static const char elem_test2_str[] =
|
static const char elem_test2_str[] =
|
||||||
"<html><head><title>test</title><style>.body { margin-right: 0px; }</style>"
|
"<html><head><title>test</title><style>.body { margin-right: 0px; }</style>"
|
||||||
|
@ -2338,6 +2339,49 @@ static void _test_img_name(unsigned line, IUnknown *unk, const char *pValue)
|
||||||
SysFreeString(sName);
|
SysFreeString(sName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void test_dynamic_properties(IHTMLElement *elem)
|
||||||
|
{
|
||||||
|
static const WCHAR attr1W[] = {'a','t','t','r','1',0};
|
||||||
|
IDispatchEx *dispex;
|
||||||
|
BSTR name, attr1 = SysAllocString(attr1W);
|
||||||
|
VARIANT_BOOL succ;
|
||||||
|
VARIANT val;
|
||||||
|
int checked_no = 0;
|
||||||
|
DISPID id = DISPID_STARTENUM;
|
||||||
|
HRESULT hres;
|
||||||
|
|
||||||
|
hres = IHTMLElement_QueryInterface(elem, &IID_IDispatchEx, (void**)&dispex);
|
||||||
|
ok(hres == S_OK, "QueryInterface failed: %08x\n", hres);
|
||||||
|
|
||||||
|
hres = IHTMLElement_removeAttribute(elem, attr1, 0, &succ);
|
||||||
|
ok(hres == S_OK, "removeAttribute failed: %08x\n", hres);
|
||||||
|
ok(succ, "removeAttribute set succ to FALSE\n");
|
||||||
|
|
||||||
|
while(1) {
|
||||||
|
hres = IDispatchEx_GetNextDispID(dispex, fdexEnumAll, id, &id);
|
||||||
|
ok(hres==S_OK || hres==S_FALSE, "GetNextDispID failed: %08x\n", hres);
|
||||||
|
if(hres != S_OK)
|
||||||
|
break;
|
||||||
|
|
||||||
|
hres = IDispatchEx_GetMemberName(dispex, id, &name);
|
||||||
|
ok(hres == S_OK, "GetMemberName failed: %08x\n", hres);
|
||||||
|
|
||||||
|
if(!strcmp_wa(name, "attr1"))
|
||||||
|
ok(0, "attr1 should be removed\n");
|
||||||
|
else if(!strcmp_wa(name, "attr2") || !strcmp_wa(name, "attr3"))
|
||||||
|
checked_no++;
|
||||||
|
SysFreeString(name);
|
||||||
|
}
|
||||||
|
ok(checked_no == 2, "checked_no=%d, expected 2\n", checked_no);
|
||||||
|
IDispatchEx_Release(dispex);
|
||||||
|
|
||||||
|
V_VT(&val) = VT_BSTR;
|
||||||
|
V_BSTR(&val) = attr1;
|
||||||
|
hres = IHTMLElement_setAttribute(elem, attr1, val, 0);
|
||||||
|
ok(hres == S_OK, "setAttribute failed: %08x\n", hres);
|
||||||
|
SysFreeString(attr1);
|
||||||
|
}
|
||||||
|
|
||||||
#define test_input_type(i,t) _test_input_type(__LINE__,i,t)
|
#define test_input_type(i,t) _test_input_type(__LINE__,i,t)
|
||||||
static void _test_input_type(unsigned line, IHTMLInputElement *input, const char *extype)
|
static void _test_input_type(unsigned line, IHTMLInputElement *input, const char *extype)
|
||||||
{
|
{
|
||||||
|
@ -4664,7 +4708,8 @@ static void test_elems(IHTMLDocument2 *doc)
|
||||||
ET_EMBED,
|
ET_EMBED,
|
||||||
ET_IMG,
|
ET_IMG,
|
||||||
ET_IFRAME,
|
ET_IFRAME,
|
||||||
ET_FORM
|
ET_FORM,
|
||||||
|
ET_DIV
|
||||||
};
|
};
|
||||||
|
|
||||||
static const elem_type_t item_types[] = {
|
static const elem_type_t item_types[] = {
|
||||||
|
@ -4911,6 +4956,12 @@ static void test_elems(IHTMLDocument2 *doc)
|
||||||
IHTMLElement_Release(elem);
|
IHTMLElement_Release(elem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
elem = get_elem_by_id(doc, "attr", TRUE);
|
||||||
|
if(elem) {
|
||||||
|
test_dynamic_properties(elem);
|
||||||
|
IHTMLElement_Release(elem);
|
||||||
|
}
|
||||||
|
|
||||||
elem = get_elem_by_id(doc, "styleid", TRUE);
|
elem = get_elem_by_id(doc, "styleid", TRUE);
|
||||||
if(elem) {
|
if(elem) {
|
||||||
test_style_media((IUnknown*)elem, NULL);
|
test_style_media((IUnknown*)elem, NULL);
|
||||||
|
|
Loading…
Reference in New Issue