Jacek Caban : mshtml: Added IHTMLSelectElement::put_value implementation.
Alexandre Julliard
julliard at winehq.org
Wed Jun 25 04:47:10 CDT 2008
Module: wine
Branch: master
Commit: c2759cb80d8fc046a9b11d9a4b458758b06db73e
URL: http://source.winehq.org/git/wine.git/?a=commit;h=c2759cb80d8fc046a9b11d9a4b458758b06db73e
Author: Jacek Caban <jacek at codeweavers.com>
Date: Tue Jun 24 15:22:54 2008 -0500
mshtml: Added IHTMLSelectElement::put_value implementation.
---
dlls/mshtml/htmlselect.c | 14 ++++++++++++--
dlls/mshtml/tests/dom.c | 31 ++++++++++++++++++++++++++++++-
2 files changed, 42 insertions(+), 3 deletions(-)
diff --git a/dlls/mshtml/htmlselect.c b/dlls/mshtml/htmlselect.c
index 1783bab..433945d 100644
--- a/dlls/mshtml/htmlselect.c
+++ b/dlls/mshtml/htmlselect.c
@@ -228,8 +228,18 @@ static HRESULT WINAPI HTMLSelectElement_get_type(IHTMLSelectElement *iface, BSTR
static HRESULT WINAPI HTMLSelectElement_put_value(IHTMLSelectElement *iface, BSTR v)
{
HTMLSelectElement *This = HTMLSELECT_THIS(iface);
- FIXME("(%p)->(%s)\n", This, debugstr_w(v));
- return E_NOTIMPL;
+ nsAString value_str;
+ nsresult nsres;
+
+ TRACE("(%p)->(%s)\n", This, debugstr_w(v));
+
+ nsAString_Init(&value_str, v);
+ nsres = nsIDOMHTMLSelectElement_SetValue(This->nsselect, &value_str);
+ nsAString_Finish(&value_str);
+ if(NS_FAILED(nsres))
+ ERR("SetValue failed: %08x\n", nsres);
+
+ return S_OK;
}
static HRESULT WINAPI HTMLSelectElement_get_value(IHTMLSelectElement *iface, BSTR *p)
diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c
index 9ee1f07..f909c4f 100644
--- a/dlls/mshtml/tests/dom.c
+++ b/dlls/mshtml/tests/dom.c
@@ -43,7 +43,7 @@ static const char elem_test_str[] =
"<body>text test<!-- a comment -->"
"<a href=\"http://test\" name=\"x\">link</a>"
"<input id=\"in\" class=\"testclass\" tabIndex=\"2\" />"
- "<select id=\"s\"><option id=\"x\">opt1</option><option id=\"y\">opt2</option></select>"
+ "<select id=\"s\"><option id=\"x\" value=\"val1\">opt1</option><option id=\"y\">opt2</option></select>"
"<textarea id=\"X\">text text</textarea>"
"<table><tbody></tbody></table>"
"<script id=\"sc\" type=\"text/javascript\"></script>"
@@ -630,6 +630,32 @@ static void _test_select_put_selidx(unsigned line, IHTMLSelectElement *select, l
_test_select_selidx(line, select, index);
}
+#define test_select_value(s,v) _test_select_value(__LINE__,s,v)
+static void _test_select_value(unsigned line, IHTMLSelectElement *select, const char *exval)
+{
+ BSTR val;
+ HRESULT hres;
+
+ hres = IHTMLSelectElement_get_value(select, &val);
+ ok_(__FILE__,line) (hres == S_OK, "get_value failed: %08x\n", hres);
+ if(exval)
+ ok_(__FILE__,line) (!strcmp_wa(val, exval), "unexpected value %s\n", dbgstr_w(val));
+ else
+ ok_(__FILE__,line) (val == NULL, "val=%s, expected NULL\n", dbgstr_w(val));
+}
+
+#define test_select_set_value(s,v) _test_select_set_value(__LINE__,s,v)
+static void _test_select_set_value(unsigned line, IHTMLSelectElement *select, const char *val)
+{
+ BSTR bstr;
+ HRESULT hres;
+
+ bstr = a2bstr(val);
+ hres = IHTMLSelectElement_put_value(select, bstr);
+ SysFreeString(bstr);
+ ok_(__FILE__,line) (hres == S_OK, "put_value failed: %08x\n", hres);
+}
+
#define test_range_text(r,t) _test_range_text(__LINE__,r,t)
static void _test_range_text(unsigned line, IHTMLTxtRange *range, const char *extext)
{
@@ -1301,6 +1327,9 @@ static void test_select_elem(IHTMLSelectElement *select)
test_select_length(select, 2);
test_select_selidx(select, 0);
test_select_put_selidx(select, 1);
+
+ test_select_set_value(select, "val1");
+ test_select_value(select, "val1");
}
static void test_create_option_elem(IHTMLDocument2 *doc)
More information about the wine-cvs
mailing list