Module: wine Branch: master Commit: 639a42a8fd304fc639018d91671688aa736bde73 URL: http://source.winehq.org/git/wine.git/?a=commit;h=639a42a8fd304fc639018d9167...
Author: Jacek Caban jacek@codeweavers.com Date: Wed Nov 28 16:57:24 2012 +0100
mshtml: Added IHTMLInputElement::defaultValue property implementation.
---
dlls/mshtml/htmlinput.c | 26 ++++++++++++++++++--- dlls/mshtml/tests/dom.c | 56 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 78 insertions(+), 4 deletions(-)
diff --git a/dlls/mshtml/htmlinput.c b/dlls/mshtml/htmlinput.c index 4d25c41..fb0e80b 100644 --- a/dlls/mshtml/htmlinput.c +++ b/dlls/mshtml/htmlinput.c @@ -355,15 +355,33 @@ static HRESULT WINAPI HTMLInputElement_get_onselect(IHTMLInputElement *iface, VA static HRESULT WINAPI HTMLInputElement_put_defaultValue(IHTMLInputElement *iface, BSTR v) { HTMLInputElement *This = impl_from_IHTMLInputElement(iface); - FIXME("(%p)->(%s)\n", This, debugstr_w(v)); - return E_NOTIMPL; + nsAString nsstr; + nsresult nsres; + + TRACE("(%p)->(%s)\n", This, debugstr_w(v)); + + nsAString_InitDepend(&nsstr, v); + nsres = nsIDOMHTMLInputElement_SetDefaultValue(This->nsinput, &nsstr); + nsAString_Finish(&nsstr); + if(NS_FAILED(nsres)) { + ERR("SetValue failed: %08x\n", nsres); + return E_FAIL; + } + + return S_OK; }
static HRESULT WINAPI HTMLInputElement_get_defaultValue(IHTMLInputElement *iface, BSTR *p) { HTMLInputElement *This = impl_from_IHTMLInputElement(iface); - FIXME("(%p)->(%p)\n", This, p); - return E_NOTIMPL; + nsAString nsstr; + nsresult nsres; + + TRACE("(%p)->(%p)\n", This, p); + + nsAString_Init(&nsstr, NULL); + nsres = nsIDOMHTMLInputElement_GetDefaultValue(This->nsinput, &nsstr); + return return_nsstr(nsres, &nsstr, p); }
static HRESULT WINAPI HTMLInputElement_put_readOnly(IHTMLInputElement *iface, VARIANT_BOOL v) diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c index 6bd7837..d45a1fe 100644 --- a/dlls/mshtml/tests/dom.c +++ b/dlls/mshtml/tests/dom.c @@ -2946,6 +2946,49 @@ static void _test_input_put_value(unsigned line, IUnknown *unk, const char *val) _test_input_value(line, unk, val); }
+#define test_input_defaultValue(o,t) _test_input_defaultValue(__LINE__,o,t) +static void _test_input_defaultValue(unsigned line, IUnknown *unk, const char *exval) +{ + IHTMLInputElement *input; + BSTR str; + HRESULT hres; + + hres = IUnknown_QueryInterface(unk, &IID_IHTMLInputElement, (void**)&input); + ok_(__FILE__,line) (hres == S_OK, "Could not get IHTMLInputElement: %08x\n", hres); + if(FAILED(hres)) + return; + + hres = IHTMLInputElement_get_defaultValue(input, &str); + ok_(__FILE__,line) (hres == S_OK, "get_defaultValue failed: %08x\n", hres); + if(exval) + ok_(__FILE__,line) (!strcmp_wa(str, exval), "defaultValue=%s\n", wine_dbgstr_w(str)); + else + ok_(__FILE__,line) (!str, "exval != NULL\n"); + SysFreeString(str); + IHTMLInputElement_Release(input); +} + +#define test_input_put_defaultValue(o,v) _test_input_put_defaultValue(__LINE__,o,v) +static void _test_input_put_defaultValue(unsigned line, IUnknown *unk, const char *val) +{ + IHTMLInputElement *input; + BSTR str; + HRESULT hres; + + hres = IUnknown_QueryInterface(unk, &IID_IHTMLInputElement, (void**)&input); + ok_(__FILE__,line) (hres == S_OK, "Could not get IHTMLInputElement: %08x\n", hres); + if(FAILED(hres)) + return; + + str = a2bstr(val); + hres = IHTMLInputElement_put_defaultValue(input, str); + ok_(__FILE__,line) (hres == S_OK, "get_defaultValue failed: %08x\n", hres); + SysFreeString(str); + IHTMLInputElement_Release(input); + + _test_input_defaultValue(line, unk, val); +} + #define test_input_src(i,s) _test_input_src(__LINE__,i,s) static void _test_input_src(unsigned line, IHTMLInputElement *input, const char *exsrc) { @@ -5882,7 +5925,9 @@ static void test_elems(IHTMLDocument2 *doc) test_node_put_value_str((IUnknown*)elem, "test"); test_node_get_value_str((IUnknown*)elem, NULL); test_input_value((IUnknown*)elem, NULL); + test_input_defaultValue((IUnknown*)elem, NULL); test_input_put_value((IUnknown*)elem, "test"); + test_input_defaultValue((IUnknown*)elem, NULL); test_elem_class((IUnknown*)elem, "testclass"); test_elem_tabindex((IUnknown*)elem, 2); test_elem_set_tabindex((IUnknown*)elem, 3); @@ -6307,6 +6352,17 @@ static void test_elems2(IHTMLDocument2 *doc) }
test_elem_set_innerhtml((IUnknown*)div, + "<input value="val" id ="inputid" />"); + elem = get_elem_by_id(doc, "inputid", TRUE); + if(elem) { + test_input_defaultValue((IUnknown*)elem, "val"); + test_input_put_value((IUnknown*)elem, "test"); + test_input_put_defaultValue((IUnknown*)elem, "new val"); + test_input_value((IUnknown*)elem, "test"); + IHTMLElement_Release(elem); + } + + test_elem_set_innerhtml((IUnknown*)div, "<form id="form"><input type="button" /><div><input type="text" /></div></textarea>"); elem = get_elem_by_id(doc, "form", TRUE); if(elem) {