Jacek Caban : mshtml: Use user agent string in IOmNavigator::get_appVersion .

Alexandre Julliard julliard at winehq.org
Mon Mar 15 12:19:36 CDT 2010


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Sat Mar 13 16:46:18 2010 +0100

mshtml: Use user agent string in IOmNavigator::get_appVersion.

---

 dlls/mshtml/omnavigator.c |   23 ++++++++++++++++-------
 dlls/mshtml/tests/dom.c   |   10 ++++++++++
 2 files changed, 26 insertions(+), 7 deletions(-)

diff --git a/dlls/mshtml/omnavigator.c b/dlls/mshtml/omnavigator.c
index dc0fb4a..d127eef 100644
--- a/dlls/mshtml/omnavigator.c
+++ b/dlls/mshtml/omnavigator.c
@@ -160,19 +160,28 @@ static HRESULT WINAPI OmNavigator_get_appVersion(IOmNavigator *iface, BSTR *p)
 {
     OmNavigator *This = OMNAVIGATOR_THIS(iface);
 
-    /* FIXME: Should we return something smarter? */
-    static const WCHAR app_verW[] =
-        {'4','.','0',' ','(','c','o','m','p','a','t','i','b','l','e',';',
-         ' ','M','S','I','E',' ','7','.','0',';',
-         ' ','W','i','n','d','o','w','s',' ','N','T',' ','5','.','1',';',
-         ' ','M','o','z','i','l','l','a','/','4','.','0',')',0};
+    char user_agent[512];
+    DWORD size;
+    HRESULT hres;
 
     TRACE("(%p)->(%p)\n", This, p);
 
-    *p = SysAllocString(app_verW);
+    size = sizeof(user_agent);
+    hres = ObtainUserAgentString(0, user_agent, &size);
+    if(FAILED(hres))
+        return hres;
+
+    if(strncmp(user_agent, "Mozilla/", 8)) {
+        FIXME("Unsupported user agent\n");
+        return E_FAIL;
+    }
+
+    size = MultiByteToWideChar(CP_ACP, 0, user_agent+8, -1, NULL, 0);
+    *p = SysAllocStringLen(NULL, size-1);
     if(!*p)
         return E_OUTOFMEMORY;
 
+    MultiByteToWideChar(CP_ACP, 0, user_agent+8, -1, *p, size);
     return S_OK;
 }
 
diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c
index 25bf764..264f9fb 100644
--- a/dlls/mshtml/tests/dom.c
+++ b/dlls/mshtml/tests/dom.c
@@ -3173,6 +3173,16 @@ static void test_navigator(IHTMLDocument2 *doc)
     ok(!strcmp_wa(bstr, buf), "userAgent returned %s, expected \"%s\"\n", wine_dbgstr_w(bstr), buf);
     SysFreeString(bstr);
 
+    if(!strncmp(buf, "Mozilla/", 8)) {
+        bstr = NULL;
+        hres = IOmNavigator_get_appVersion(navigator, &bstr);
+        ok(hres == S_OK, "get_appVersion failed: %08x\n", hres);
+        ok(!strcmp_wa(bstr, buf+8), "appVersion returned %s, expected \"%s\"\n", wine_dbgstr_w(bstr), buf+8);
+        SysFreeString(bstr);
+    }else {
+        skip("nonstandard user agent\n");
+    }
+
     ref = IOmNavigator_Release(navigator);
     ok(!ref, "navigator should be destroyed here\n");
 }




More information about the wine-cvs mailing list