Jacek Caban : mshtml: Added IOmNavigator::get_*Language implementations.

Alexandre Julliard julliard at winehq.org
Mon Aug 1 13:22:10 CDT 2011


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Sun Jul 31 16:45:26 2011 +0200

mshtml: Added IOmNavigator::get_*Language implementations.

---

 dlls/mshtml/omnavigator.c |   44 ++++++++++++++++++++++++++++++++++++++------
 1 files changed, 38 insertions(+), 6 deletions(-)

diff --git a/dlls/mshtml/omnavigator.c b/dlls/mshtml/omnavigator.c
index b4b5c15..73e55dd 100644
--- a/dlls/mshtml/omnavigator.c
+++ b/dlls/mshtml/omnavigator.c
@@ -621,25 +621,57 @@ static HRESULT WINAPI OmNavigator_get_cpuClass(IOmNavigator *iface, BSTR *p)
     return *p ? S_OK : E_OUTOFMEMORY;
 }
 
+static HRESULT get_language_string(LCID lcid, BSTR *p)
+{
+    BSTR ret;
+    int len;
+
+    len = LCIDToLocaleName(lcid, NULL, 0, 0);
+    if(!len) {
+        WARN("LCIDToLocaleName failed: %u\n", GetLastError());
+        return E_FAIL;
+    }
+
+    ret = SysAllocStringLen(NULL, len-1);
+    if(!ret)
+        return E_OUTOFMEMORY;
+
+    len = LCIDToLocaleName(lcid, ret, len, 0);
+    if(!len) {
+        WARN("LCIDToLocaleName failed: %u\n", GetLastError());
+        SysFreeString(ret);
+        return E_FAIL;
+    }
+
+    *p = ret;
+    return S_OK;
+}
+
 static HRESULT WINAPI OmNavigator_get_systemLanguage(IOmNavigator *iface, BSTR *p)
 {
     OmNavigator *This = impl_from_IOmNavigator(iface);
-    FIXME("(%p)->(%p)\n", This, p);
-    return E_NOTIMPL;
+
+    TRACE("(%p)->(%p)\n", This, p);
+
+    return get_language_string(LOCALE_SYSTEM_DEFAULT, p);
 }
 
 static HRESULT WINAPI OmNavigator_get_browserLanguage(IOmNavigator *iface, BSTR *p)
 {
     OmNavigator *This = impl_from_IOmNavigator(iface);
-    FIXME("(%p)->(%p)\n", This, p);
-    return E_NOTIMPL;
+
+    TRACE("(%p)->(%p)\n", This, p);
+
+    return get_language_string(GetUserDefaultUILanguage(), p);
 }
 
 static HRESULT WINAPI OmNavigator_get_userLanguage(IOmNavigator *iface, BSTR *p)
 {
     OmNavigator *This = impl_from_IOmNavigator(iface);
-    FIXME("(%p)->(%p)\n", This, p);
-    return E_NOTIMPL;
+
+    TRACE("(%p)->(%p)\n", This, p);
+
+    return get_language_string(LOCALE_USER_DEFAULT, p);
 }
 
 static HRESULT WINAPI OmNavigator_get_platform(IOmNavigator *iface, BSTR *p)




More information about the wine-cvs mailing list