Module: wine Branch: master Commit: c4bc5be2625b61b4d4e9ec6f70f735014f30118d URL: http://source.winehq.org/git/wine.git/?a=commit;h=c4bc5be2625b61b4d4e9ec6f70...
Author: Jacek Caban jacek@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"); }