mshtml: Added IHTMLFormElement::item implementation.
This commit is contained in:
parent
68e9bd281e
commit
5bb9172af2
|
@ -299,7 +299,20 @@ static HRESULT WINAPI HTMLFormElement_item(IHTMLFormElement *iface, VARIANT name
|
|||
VARIANT index, IDispatch **pdisp)
|
||||
{
|
||||
HTMLFormElement *This = HTMLFORM_THIS(iface);
|
||||
FIXME("(%p)->(v v %p)\n", This, pdisp);
|
||||
|
||||
TRACE("(%p)->(%s %s %p)\n", This, debugstr_variant(&name), debugstr_variant(&index), pdisp);
|
||||
|
||||
if(!pdisp)
|
||||
return E_INVALIDARG;
|
||||
*pdisp = NULL;
|
||||
|
||||
if(V_VT(&name) == VT_I4) {
|
||||
if(V_I4(&name) < 0)
|
||||
return E_INVALIDARG;
|
||||
return htmlform_item(This, V_I4(&name), pdisp);
|
||||
}
|
||||
|
||||
FIXME("Unsupported args\n");
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
|
|
@ -2964,6 +2964,48 @@ static void test_select_elem(IHTMLSelectElement *select)
|
|||
IDispatch_Release(disp);
|
||||
}
|
||||
|
||||
static void test_form_item(IHTMLElement *elem)
|
||||
{
|
||||
IHTMLFormElement *form = get_form_iface((IUnknown*)elem);
|
||||
IDispatch *disp, *disp2;
|
||||
VARIANT name, index;
|
||||
HRESULT hres;
|
||||
|
||||
V_VT(&index) = VT_EMPTY;
|
||||
V_VT(&name) = VT_I4;
|
||||
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);
|
||||
ok(!disp, "disp = %p\n", disp);
|
||||
|
||||
V_I4(&name) = 2;
|
||||
disp = (void*)0xdeadbeef;
|
||||
hres = IHTMLFormElement_item(form, name, index, &disp);
|
||||
ok(hres == S_OK, "item failed: %08x\n", hres);
|
||||
ok(!disp, "disp = %p\n", disp);
|
||||
|
||||
V_I4(&name) = 1;
|
||||
hres = IHTMLFormElement_item(form, name, index, NULL);
|
||||
ok(hres == E_INVALIDARG, "item failed: %08x, expected E_INVALIDARG\n", hres);
|
||||
|
||||
disp = NULL;
|
||||
hres = IHTMLFormElement_item(form, name, index, &disp);
|
||||
ok(hres == S_OK, "item failed: %08x\n", hres);
|
||||
ok(disp != NULL, "disp = NULL\n");
|
||||
test_disp((IUnknown*)disp, &DIID_DispHTMLInputElement, NULL);
|
||||
|
||||
V_VT(&index) = VT_I4;
|
||||
V_I4(&index) = 1;
|
||||
disp2 = NULL;
|
||||
hres = IHTMLFormElement_item(form, name, index, &disp2);
|
||||
ok(hres == S_OK, "item failed: %08x\n", hres);
|
||||
ok(disp2 != NULL, "disp = NULL\n");
|
||||
ok(iface_cmp((IUnknown*)disp, (IUnknown*)disp2), "disp != disp2\n");
|
||||
IDispatch_Release(disp2);
|
||||
IDispatch_Release(disp);
|
||||
}
|
||||
|
||||
static void test_create_option_elem(IHTMLDocument2 *doc)
|
||||
{
|
||||
IHTMLOptionElement *option;
|
||||
|
@ -6112,6 +6154,15 @@ static void test_elems2(IHTMLDocument2 *doc)
|
|||
IHTMLElement_Release(elem);
|
||||
}
|
||||
|
||||
test_elem_set_innerhtml((IUnknown*)div,
|
||||
"<form id=\"form\"><input type=\"button\"></input><input type=\"text\"></input></textarea>");
|
||||
elem = get_elem_by_id(doc, "form", TRUE);
|
||||
if(elem) {
|
||||
test_form_length((IUnknown*)elem, 2);
|
||||
test_form_item(elem);
|
||||
IHTMLElement_Release(elem);
|
||||
}
|
||||
|
||||
IHTMLElement_Release(div);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue