Jacek Caban : mshtml: Added IOmNavigator::get_userAgent implementation.

Alexandre Julliard julliard at winehq.org
Wed Sep 2 09:31:01 CDT 2009


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Wed Sep  2 12:28:07 2009 +0200

mshtml: Added IOmNavigator::get_userAgent implementation.

---

 dlls/mshtml/omnavigator.c |   20 ++++++++++++++++++--
 dlls/mshtml/tests/dom.c   |   12 ++++++++++++
 2 files changed, 30 insertions(+), 2 deletions(-)

diff --git a/dlls/mshtml/omnavigator.c b/dlls/mshtml/omnavigator.c
index 207464f..dc0fb4a 100644
--- a/dlls/mshtml/omnavigator.c
+++ b/dlls/mshtml/omnavigator.c
@@ -179,8 +179,24 @@ static HRESULT WINAPI OmNavigator_get_appVersion(IOmNavigator *iface, BSTR *p)
 static HRESULT WINAPI OmNavigator_get_userAgent(IOmNavigator *iface, BSTR *p)
 {
     OmNavigator *This = OMNAVIGATOR_THIS(iface);
-    FIXME("(%p)->(%p)\n", This, p);
-    return E_NOTIMPL;
+    char user_agent[512];
+    DWORD size;
+    HRESULT hres;
+
+    TRACE("(%p)->(%p)\n", This, p);
+
+    size = sizeof(user_agent);
+    hres = ObtainUserAgentString(0, user_agent, &size);
+    if(FAILED(hres))
+        return hres;
+
+    size = MultiByteToWideChar(CP_ACP, 0, user_agent, -1, NULL, 0);
+    *p = SysAllocStringLen(NULL, size-1);
+    if(!*p)
+        return E_OUTOFMEMORY;
+
+    MultiByteToWideChar(CP_ACP, 0, user_agent, -1, *p, size);
+    return S_OK;
 }
 
 static HRESULT WINAPI OmNavigator_javaEnabled(IOmNavigator *iface, VARIANT_BOOL *enabled)
diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c
index 266c63d..6c03b0e 100644
--- a/dlls/mshtml/tests/dom.c
+++ b/dlls/mshtml/tests/dom.c
@@ -2444,6 +2444,8 @@ static void test_navigator(IHTMLDocument2 *doc)
 {
     IHTMLWindow2 *window;
     IOmNavigator *navigator, *navigator2;
+    char buf[512];
+    DWORD size;
     ULONG ref;
     BSTR bstr;
     HRESULT hres;
@@ -2501,6 +2503,16 @@ static void test_navigator(IHTMLDocument2 *doc)
     ok(!strcmp_wa(bstr, "[object]"), "toString returned %s\n", wine_dbgstr_w(bstr));
     SysFreeString(bstr);
 
+    size = sizeof(buf);
+    hres = ObtainUserAgentString(0, buf, &size);
+    ok(hres == S_OK, "ObtainUserAgentString failed: %08x\n", hres);
+
+    bstr = NULL;
+    hres = IOmNavigator_get_userAgent(navigator, &bstr);
+    ok(hres == S_OK, "get_userAgent failed: %08x\n", hres);
+    ok(!strcmp_wa(bstr, buf), "userAgent returned %s, expected \"%s\"\n", wine_dbgstr_w(bstr), buf);
+    SysFreeString(bstr);
+
     ref = IOmNavigator_Release(navigator);
     ok(!ref, "navigator should be destroyed here\n");
 }




More information about the wine-cvs mailing list