Jacek Caban : mshtml: Added IHTMLDocument2::get_cookie implementation.

Alexandre Julliard julliard at winehq.org
Wed Dec 2 10:22:12 CST 2009


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Tue Dec  1 22:50:43 2009 +0100

mshtml: Added IHTMLDocument2::get_cookie implementation.

---

 dlls/mshtml/htmldoc.c |   39 +++++++++++++++++++++++++++++++++++++--
 1 files changed, 37 insertions(+), 2 deletions(-)

diff --git a/dlls/mshtml/htmldoc.c b/dlls/mshtml/htmldoc.c
index e746fb0..048b4ae 100644
--- a/dlls/mshtml/htmldoc.c
+++ b/dlls/mshtml/htmldoc.c
@@ -26,6 +26,7 @@
 #include "windef.h"
 #include "winbase.h"
 #include "winuser.h"
+#include "wininet.h"
 #include "ole2.h"
 #include "perhist.h"
 #include "mshtmdid.h"
@@ -617,8 +618,42 @@ static HRESULT WINAPI HTMLDocument_put_cookie(IHTMLDocument2 *iface, BSTR v)
 static HRESULT WINAPI HTMLDocument_get_cookie(IHTMLDocument2 *iface, BSTR *p)
 {
     HTMLDocument *This = HTMLDOC_THIS(iface);
-    FIXME("(%p)->(%p)\n", This, p);
-    return E_NOTIMPL;
+    DWORD size;
+    BOOL bret;
+
+    TRACE("(%p)->(%p)\n", This, p);
+
+    size = 0;
+    bret = InternetGetCookieExW(This->window->url, NULL, NULL, &size, 0, NULL);
+    if(!bret) {
+        switch(GetLastError()) {
+        case ERROR_INSUFFICIENT_BUFFER:
+            break;
+        case ERROR_NO_MORE_ITEMS:
+            *p = NULL;
+            return S_OK;
+        default:
+            FIXME("InternetGetCookieExW failed: %u\n", GetLastError());
+            return HRESULT_FROM_WIN32(GetLastError());
+        }
+    }
+
+    if(!size) {
+        *p = NULL;
+        return S_OK;
+    }
+
+    *p = SysAllocStringLen(NULL, size-1);
+    if(!*p)
+        return E_OUTOFMEMORY;
+
+    bret = InternetGetCookieExW(This->window->url, NULL, *p, &size, 0, NULL);
+    if(!bret) {
+        ERR("InternetGetCookieExW failed: %u\n", GetLastError());
+        return E_FAIL;
+    }
+
+    return S_OK;
 }
 
 static HRESULT WINAPI HTMLDocument_put_expando(IHTMLDocument2 *iface, VARIANT_BOOL v)




More information about the wine-cvs mailing list