Jacek Caban : mshtml: Added IHTMLButtonElement:: value property implementation.

Alexandre Julliard julliard at winehq.org
Fri Jun 17 10:35:01 CDT 2016


Module: wine
Branch: master
Commit: 5a07f80ebeef3aa164e6172eea79348589de17b8
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=5a07f80ebeef3aa164e6172eea79348589de17b8

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Thu Jun 16 19:30:18 2016 +0200

mshtml: Added IHTMLButtonElement::value property implementation.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/mshtml/htmlinput.c | 26 ++++++++++++++++++++++----
 dlls/mshtml/tests/dom.c | 34 ++++++++++++++++++++++++++++++++++
 2 files changed, 56 insertions(+), 4 deletions(-)

diff --git a/dlls/mshtml/htmlinput.c b/dlls/mshtml/htmlinput.c
index 0b6eb33..5e0d53b 100644
--- a/dlls/mshtml/htmlinput.c
+++ b/dlls/mshtml/htmlinput.c
@@ -1634,15 +1634,33 @@ static HRESULT WINAPI HTMLButtonElement_get_type(IHTMLButtonElement *iface, BSTR
 static HRESULT WINAPI HTMLButtonElement_put_value(IHTMLButtonElement *iface, BSTR v)
 {
     HTMLButtonElement *This = impl_from_IHTMLButtonElement(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 = nsIDOMHTMLButtonElement_SetValue(This->nsbutton, &nsstr);
+    nsAString_Finish(&nsstr);
+    if(NS_FAILED(nsres)) {
+        ERR("SetValue failed: %08x\n", nsres);
+        return E_FAIL;
+    }
+
+    return S_OK;
 }
 
 static HRESULT WINAPI HTMLButtonElement_get_value(IHTMLButtonElement *iface, BSTR *p)
 {
     HTMLButtonElement *This = impl_from_IHTMLButtonElement(iface);
-    FIXME("(%p)->(%p)\n", This, p);
-    return E_NOTIMPL;
+    nsAString value_str;
+    nsresult nsres;
+
+    TRACE("(%p)->(%p)\n", This, p);
+
+    nsAString_Init(&value_str, NULL);
+    nsres = nsIDOMHTMLButtonElement_GetValue(This->nsbutton, &value_str);
+    return return_nsstr(nsres, &value_str, p);
 }
 
 static HRESULT WINAPI HTMLButtonElement_put_name(IHTMLButtonElement *iface, BSTR v)
diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c
index 9788e56..27af54d 100644
--- a/dlls/mshtml/tests/dom.c
+++ b/dlls/mshtml/tests/dom.c
@@ -6944,11 +6944,45 @@ static void _test_button_type(unsigned line, IHTMLElement *elem, const char *ext
     IHTMLButtonElement_Release(button);
 }
 
+#define test_button_value(a,b) _test_button_value(__LINE__,a,b)
+static void _test_button_value(unsigned line, IHTMLElement *elem, const char *exvalue)
+{
+    IHTMLButtonElement *button = _get_button_iface(line, (IUnknown*)elem);
+    BSTR str;
+    HRESULT hres;
+
+    hres = IHTMLButtonElement_get_value(button, &str);
+    ok_(__FILE__,line)(hres == S_OK, "get_value failed: %08x\n", hres);
+    if(exvalue)
+        ok_(__FILE__,line)(!strcmp_wa(str, exvalue), "value = %s, expected %s\n", wine_dbgstr_w(str), exvalue);
+    else
+        ok_(__FILE__,line)(!str, "value = %s, expected NULL\n", wine_dbgstr_w(str));
+    SysFreeString(str);
+
+    IHTMLButtonElement_Release(button);
+}
+
+#define set_button_value(a,b) _set_button_value(__LINE__,a,b)
+static void _set_button_value(unsigned line, IHTMLElement *elem, const char *value)
+{
+    IHTMLButtonElement *button = _get_button_iface(line, (IUnknown*)elem);
+    BSTR str = a2bstr(value);
+    HRESULT hres;
+
+    hres = IHTMLButtonElement_put_value(button, str);
+    ok_(__FILE__,line)(hres == S_OK, "put_value failed: %08x\n", hres);
+    IHTMLButtonElement_Release(button);
+
+    _test_button_value(line, elem, value);
+}
+
 static void test_button_elem(IHTMLElement *elem)
 {
     test_button_name(elem, NULL);
     set_button_name(elem, "button name");
     test_button_type(elem, "submit");
+    test_button_value(elem, NULL);
+    set_button_value(elem, "val");
 
     test_elem_istextedit(elem, VARIANT_TRUE);
 }




More information about the wine-cvs mailing list