Jacek Caban : mshtml: Added IHTMLDocument::cookie tests.
Alexandre Julliard
julliard at winehq.org
Wed Dec 2 10:22:12 CST 2009
Module: wine
Branch: master
Commit: 0909e8b18c13ab1f61f337665fc73d3dc2700f74
URL: http://source.winehq.org/git/wine.git/?a=commit;h=0909e8b18c13ab1f61f337665fc73d3dc2700f74
Author: Jacek Caban <jacek at codeweavers.com>
Date: Tue Dec 1 22:51:27 2009 +0100
mshtml: Added IHTMLDocument::cookie tests.
---
dlls/mshtml/tests/Makefile.in | 2 +-
dlls/mshtml/tests/htmldoc.c | 78 +++++++++++++++++++++++++++++++++++++++--
2 files changed, 76 insertions(+), 4 deletions(-)
diff --git a/dlls/mshtml/tests/Makefile.in b/dlls/mshtml/tests/Makefile.in
index d2815ae..04f8494 100644
--- a/dlls/mshtml/tests/Makefile.in
+++ b/dlls/mshtml/tests/Makefile.in
@@ -3,7 +3,7 @@ TOPOBJDIR = ../../..
SRCDIR = @srcdir@
VPATH = @srcdir@
TESTDLL = mshtml.dll
-IMPORTS = ole32 oleaut32 user32 urlmon gdi32 advapi32 kernel32
+IMPORTS = ole32 oleaut32 wininet user32 urlmon gdi32 advapi32 kernel32
CTESTS = \
dom.c \
diff --git a/dlls/mshtml/tests/htmldoc.c b/dlls/mshtml/tests/htmldoc.c
index 26ea5ef..0be3021 100644
--- a/dlls/mshtml/tests/htmldoc.c
+++ b/dlls/mshtml/tests/htmldoc.c
@@ -29,6 +29,7 @@
#include "ole2.h"
#include "mshtml.h"
#include "docobj.h"
+#include "wininet.h"
#include "mshtmhst.h"
#include "mshtmdid.h"
#include "mshtmcid.h"
@@ -179,6 +180,9 @@ static const char html_page[] =
static const char css_data[] = "body {color: red}";
+static const WCHAR http_urlW[] =
+ {'h','t','t','p',':','/','/','w','w','w','.','w','i','n','e','h','q','.','o','r','g',0};
+
static const WCHAR doc_url[] = {'w','i','n','e','t','e','s','t',':','d','o','c',0};
static const WCHAR about_blank_url[] = {'a','b','o','u','t',':','b','l','a','n','k',0};
@@ -212,6 +216,18 @@ static int strcmp_wa(LPCWSTR strw, const char *stra)
return lstrcmpA(stra, buf);
}
+static const WCHAR *strstrW( const WCHAR *str, const WCHAR *sub )
+{
+ while (*str)
+ {
+ const WCHAR *p1 = str, *p2 = sub;
+ while (*p1 && *p2 && *p1 == *p2) { p1++; p2++; }
+ if (!*p2) return str;
+ str++;
+ }
+ return NULL;
+}
+
static BSTR a2bstr(const char *str)
{
BSTR ret;
@@ -764,6 +780,7 @@ static HRESULT WINAPI PropertyNotifySink_OnChanged(IPropertyNotifySink *iface, D
case 1012:
CHECK_EXPECT(OnChanged_1012);
return S_OK;
+ case 1030:
case 3000029:
case 3000030:
/* TODO */
@@ -4119,6 +4136,63 @@ static void test_HTMLDocument_hlink(void)
ok(ref == 0, "ref=%d, expected 0\n", ref);
}
+static void test_cookies(IUnknown *unk)
+{
+ WCHAR buf[1024];
+ IHTMLDocument2 *doc;
+ DWORD size;
+ BSTR str, str2;
+ BOOL b;
+ HRESULT hres;
+
+ hres = IUnknown_QueryInterface(unk, &IID_IHTMLDocument2, (void**)&doc);
+ ok(hres == S_OK, "QueryInterface(IID_IHTMLDocument2) failed: %08x\n", hres);
+
+ hres = IHTMLDocument2_get_cookie(doc, &str);
+ ok(hres == S_OK, "get_cookie failed: %08x\n", hres);
+ if(str) {
+ size = sizeof(buf)/sizeof(WCHAR);
+ b = InternetGetCookieExW(http_urlW, NULL, buf, &size, 0, NULL);
+ ok(b, "InternetGetCookieEx failed: %08x\n", GetLastError());
+ ok(!lstrcmpW(buf, str), "cookie = %s, expected %s\n", wine_dbgstr_w(str), wine_dbgstr_w(buf));
+ SysFreeString(str);
+ }
+
+ str = a2bstr("test=testval");
+ hres = IHTMLDocument2_put_cookie(doc, str);
+ ok(hres == S_OK, "put_cookie failed: %08x\n", hres);
+
+ str2 = NULL;
+ hres = IHTMLDocument2_get_cookie(doc, &str2);
+ ok(hres == S_OK, "get_cookie failed: %08x\n", hres);
+ ok(str2 != NULL, "cookie = NULL\n");
+ size = sizeof(buf)/sizeof(WCHAR);
+ b = InternetGetCookieExW(http_urlW, NULL, buf, &size, 0, NULL);
+ ok(b, "InternetGetCookieEx failed: %08x\n", GetLastError());
+ ok(!lstrcmpW(buf, str2), "cookie = %s, expected %s\n", wine_dbgstr_w(str2), wine_dbgstr_w(buf));
+ ok(strstrW(str2, str) != NULL, "could not find %s in %s\n", wine_dbgstr_w(str), wine_dbgstr_w(str2));
+ SysFreeString(str);
+ SysFreeString(str2);
+
+ str = a2bstr("test=testval2");
+ hres = IHTMLDocument2_put_cookie(doc, str);
+ ok(hres == S_OK, "put_cookie failed: %08x\n", hres);
+
+ str2 = NULL;
+ hres = IHTMLDocument2_get_cookie(doc, &str2);
+ ok(hres == S_OK, "get_cookie failed: %08x\n", hres);
+ ok(str2 != NULL, "cookie = NULL\n");
+ size = sizeof(buf)/sizeof(WCHAR);
+ b = InternetGetCookieExW(http_urlW, NULL, buf, &size, 0, NULL);
+ ok(b, "InternetGetCookieEx failed: %08x\n", GetLastError());
+ ok(!lstrcmpW(buf, str2), "cookie = %s, expected %s\n", wine_dbgstr_w(str2), wine_dbgstr_w(buf));
+ ok(strstrW(str2, str) != NULL, "could not find %s in %s\n", wine_dbgstr_w(str), wine_dbgstr_w(str2));
+ SysFreeString(str);
+ SysFreeString(str2);
+
+ IHTMLDocument2_Release(doc);
+}
+
static void test_HTMLDocument_http(void)
{
IMoniker *http_mon;
@@ -4126,9 +4200,6 @@ static void test_HTMLDocument_http(void)
ULONG ref;
HRESULT hres;
- static const WCHAR http_urlW[] =
- {'h','t','t','p',':','/','/','w','w','w','.','w','i','n','e','h','q','.','o','r','g',0};
-
trace("Testing HTMLDocument (http)...\n");
hres = CreateURLMoniker(NULL, http_urlW, &http_mon);
@@ -4156,6 +4227,7 @@ static void test_HTMLDocument_http(void)
else
win_skip("IE running in Enhanced Security Configuration\n");
+ test_cookies(unk);
test_IsDirty(unk, S_FALSE);
test_MSHTML_QueryStatus(unk, OLECMDF_SUPPORTED);
More information about the wine-cvs
mailing list