Jacek Caban : mshtml: Added IHTMLElement::lang property implementation.
Alexandre Julliard
julliard at wine.codeweavers.com
Tue Jan 5 12:18:33 CST 2016
Module: wine
Branch: master
Commit: 467981c29b9346e7065299a4619c8d2941e279d1
URL: http://source.winehq.org/git/wine.git/?a=commit;h=467981c29b9346e7065299a4619c8d2941e279d1
Author: Jacek Caban <jacek at codeweavers.com>
Date: Tue Jan 5 15:58:48 2016 +0100
mshtml: Added IHTMLElement::lang property implementation.
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/mshtml/htmlelem.c | 36 ++++++++++++++++++++++++++++++++----
dlls/mshtml/tests/dom.c | 33 +++++++++++++++++++++++++++++++++
2 files changed, 65 insertions(+), 4 deletions(-)
diff --git a/dlls/mshtml/htmlelem.c b/dlls/mshtml/htmlelem.c
index 6c948d3..ce9d859 100644
--- a/dlls/mshtml/htmlelem.c
+++ b/dlls/mshtml/htmlelem.c
@@ -1265,15 +1265,43 @@ static HRESULT WINAPI HTMLElement_get_recordNumber(IHTMLElement *iface, VARIANT
static HRESULT WINAPI HTMLElement_put_lang(IHTMLElement *iface, BSTR v)
{
HTMLElement *This = impl_from_IHTMLElement(iface);
- FIXME("(%p)->(%s)\n", This, debugstr_w(v));
- return E_NOTIMPL;
+ nsAString nsstr;
+ nsresult nsres;
+
+ TRACE("(%p)->(%s)\n", This, debugstr_w(v));
+
+ if(!This->nselem) {
+ FIXME("NULL nselem\n");
+ return E_NOTIMPL;
+ }
+
+ nsAString_InitDepend(&nsstr, v);
+ nsres = nsIDOMHTMLElement_SetLang(This->nselem, &nsstr);
+ nsAString_Finish(&nsstr);
+ if(NS_FAILED(nsres)) {
+ ERR("SetLang failed: %08x\n", nsres);
+ return E_FAIL;
+ }
+
+ return S_OK;
}
static HRESULT WINAPI HTMLElement_get_lang(IHTMLElement *iface, BSTR *p)
{
HTMLElement *This = impl_from_IHTMLElement(iface);
- FIXME("(%p)->(%p)\n", This, p);
- return E_NOTIMPL;
+ nsAString nsstr;
+ nsresult nsres;
+
+ TRACE("(%p)->(%p)\n", This, p);
+
+ if(!This->nselem) {
+ FIXME("NULL nselem\n");
+ return E_NOTIMPL;
+ }
+
+ nsAString_Init(&nsstr, NULL);
+ nsres = nsIDOMHTMLElement_GetLang(This->nselem, &nsstr);
+ return return_nsstr(nsres, &nsstr, p);
}
static HRESULT WINAPI HTMLElement_get_offsetLeft(IHTMLElement *iface, LONG *p)
diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c
index 9d09acd..bcb016d 100644
--- a/dlls/mshtml/tests/dom.c
+++ b/dlls/mshtml/tests/dom.c
@@ -3586,6 +3586,36 @@ static void _set_elem_language(unsigned line, IHTMLElement *elem, const char *la
_test_elem_language(line, elem, lang);
}
+#define test_elem_lang(e,i) _test_elem_lang(__LINE__,e,i)
+static void _test_elem_lang(unsigned line, IHTMLElement *elem, const char *exlang)
+{
+ BSTR lang = (void*)0xdeadbeef;
+ HRESULT hres;
+
+ hres = IHTMLElement_get_lang(elem, &lang);
+ ok_(__FILE__,line) (hres == S_OK, "get_lang failed: %08x\n", hres);
+
+ if(exlang)
+ ok_(__FILE__,line) (!strcmp_wa(lang, exlang), "unexpected lang %s\n", wine_dbgstr_w(lang));
+ else
+ ok_(__FILE__,line) (!lang, "lang=%s\n", wine_dbgstr_w(lang));
+
+ SysFreeString(lang);
+}
+
+#define set_elem_lang(e,i) _set_elem_lang(__LINE__,e,i)
+static void _set_elem_lang(unsigned line, IHTMLElement *elem, const char *lang)
+{
+ BSTR str = a2bstr(lang);
+ HRESULT hres;
+
+ hres = IHTMLElement_put_lang(elem, str);
+ ok_(__FILE__,line) (hres == S_OK, "get_lang failed: %08x\n", hres);
+ SysFreeString(str);
+
+ _test_elem_lang(line, elem, lang);
+}
+
#define test_elem_put_id(u,i) _test_elem_put_id(__LINE__,u,i)
static void _test_elem_put_id(unsigned line, IUnknown *unk, const char *new_id)
{
@@ -8034,6 +8064,9 @@ static void test_elems(IHTMLDocument2 *doc)
test_input_readOnly(input, VARIANT_TRUE);
test_input_readOnly(input, VARIANT_FALSE);
+ test_elem_lang(elem, NULL);
+ set_elem_lang(elem, "en-us");
+
IHTMLInputElement_Release(input);
IHTMLElement_Release(elem);
}
More information about the wine-cvs
mailing list