Jacek Caban : mshtml: Added nsIURL::GetQuery implementation.

Alexandre Julliard julliard at winehq.org
Sat Sep 18 07:42:24 CDT 2010


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Fri Sep 17 18:33:45 2010 +0200

mshtml: Added nsIURL::GetQuery implementation.

---

 dlls/mshtml/nsio.c |   31 +++++++++++++++++++++++++++++--
 1 files changed, 29 insertions(+), 2 deletions(-)

diff --git a/dlls/mshtml/nsio.c b/dlls/mshtml/nsio.c
index d5a32e4..35a35f0 100644
--- a/dlls/mshtml/nsio.c
+++ b/dlls/mshtml/nsio.c
@@ -2105,14 +2105,41 @@ static nsresult NSAPI nsURL_SetParam(nsIURL *iface, const nsACString *aParam)
 static nsresult NSAPI nsURL_GetQuery(nsIURL *iface, nsACString *aQuery)
 {
     nsWineURI *This = NSURI_THIS(iface);
+    URL_COMPONENTSW url = {sizeof(URL_COMPONENTSW)};
+    WCHAR *ptr_end, *ptr;
+    char *query;
+    int len;
 
     TRACE("(%p)->(%p)\n", This, aQuery);
 
     if(This->nsurl)
         return nsIURL_GetQuery(This->nsurl, aQuery);
 
-    FIXME("default action not implemented\n");
-    return NS_ERROR_NOT_IMPLEMENTED;
+    url.dwExtraInfoLength = 1;
+    if(!InternetCrackUrlW(This->wine_url, 0, 0, &url)) {
+        WARN("InternetCrackUrlW failed: 0x%08x\n", GetLastError());
+        nsACString_SetData(aQuery, "");
+        return NS_OK;
+    }
+
+    ptr_end = url.lpszExtraInfo+url.dwExtraInfoLength;
+    for(ptr = url.lpszExtraInfo; ptr < ptr_end; ptr++) {
+        if(*ptr == '#')
+            break;
+    }
+
+    ptr = url.lpszExtraInfo;
+    len = WideCharToMultiByte(CP_ACP, 0, ptr, ptr_end-ptr, NULL, 0, NULL, NULL);
+    query = heap_alloc(len+1);
+    if(!query)
+        return NS_ERROR_OUT_OF_MEMORY;
+    WideCharToMultiByte(CP_ACP, 0, ptr, ptr_end-ptr, query, len, NULL, NULL);
+    query[len] = 0;
+    nsACString_SetData(aQuery, query);
+
+    TRACE("ret %s\n", debugstr_a(query));
+    heap_free(query);
+    return NS_OK;
 }
 
 static nsresult NSAPI nsURL_SetQuery(nsIURL *iface, const nsACString *aQuery)




More information about the wine-cvs mailing list