urlmon: Added URLDownloadToFile tests.

This commit is contained in:
Jacek Caban 2008-02-18 01:04:34 +01:00 committed by Alexandre Julliard
parent 74b0897cf0
commit 1b79f4dbee
1 changed files with 154 additions and 42 deletions

View File

@ -43,7 +43,6 @@
#define CHECK_EXPECT2(func) \ #define CHECK_EXPECT2(func) \
do { \ do { \
ok(expect_ ##func, "unexpected call " #func "\n"); \ ok(expect_ ##func, "unexpected call " #func "\n"); \
if(0) trace("%s\n", #func); \
called_ ## func = TRUE; \ called_ ## func = TRUE; \
}while(0) }while(0)
@ -145,10 +144,11 @@ static const WCHAR wszWineHQIP[] =
{'2','0','9','.','3','2','.','1','4','1','.','3',0}; {'2','0','9','.','3','2','.','1','4','1','.','3',0};
static const WCHAR wszIndexHtml[] = {'i','n','d','e','x','.','h','t','m','l',0}; static const WCHAR wszIndexHtml[] = {'i','n','d','e','x','.','h','t','m','l',0};
static const WCHAR cache_fileW[] = {'c',':','\\','c','a','c','h','e','.','h','t','m',0}; static const WCHAR cache_fileW[] = {'c',':','\\','c','a','c','h','e','.','h','t','m',0};
static const WCHAR dwl_htmlW[] = {'d','w','l','.','h','t','m','l',0};
static const WCHAR emptyW[] = {0}; static const WCHAR emptyW[] = {0};
static BOOL stopped_binding = FALSE, stopped_obj_binding = FALSE, emulate_protocol = FALSE, static BOOL stopped_binding = FALSE, stopped_obj_binding = FALSE, emulate_protocol = FALSE,
data_available = FALSE, http_is_first = TRUE, bind_to_object = FALSE; data_available = FALSE, http_is_first = TRUE, bind_to_object = FALSE, filedwl_api;
static DWORD read = 0, bindf = 0, prot_state = 0, thread_id, tymed; static DWORD read = 0, bindf = 0, prot_state = 0, thread_id, tymed;
static CHAR mime_type[512]; static CHAR mime_type[512];
static IInternetProtocolSink *protocol_sink = NULL; static IInternetProtocolSink *protocol_sink = NULL;
@ -165,6 +165,8 @@ static LPCWSTR urls[] = {
MK_URL MK_URL
}; };
static WCHAR file_url[INTERNET_MAX_URL_LENGTH];
static enum { static enum {
HTTP_TEST, HTTP_TEST,
ABOUT_TEST, ABOUT_TEST,
@ -363,13 +365,14 @@ static HRESULT WINAPI Protocol_Start(IInternetProtocol *iface, LPCWSTR szUrl,
read = 0; read = 0;
ok(szUrl && !lstrcmpW(szUrl, urls[test_protocol]), "wrong url\n"); if(!filedwl_api) /* FIXME */
ok(szUrl && !lstrcmpW(szUrl, urls[test_protocol]), "wrong url %s\n", debugstr_w(szUrl));
ok(pOIProtSink != NULL, "pOIProtSink == NULL\n"); ok(pOIProtSink != NULL, "pOIProtSink == NULL\n");
ok(pOIBindInfo != NULL, "pOIBindInfo == NULL\n"); ok(pOIBindInfo != NULL, "pOIBindInfo == NULL\n");
ok(grfPI == 0, "grfPI=%d, expected 0\n", grfPI); ok(grfPI == 0, "grfPI=%d, expected 0\n", grfPI);
ok(dwReserved == 0, "dwReserved=%d, expected 0\n", dwReserved); ok(dwReserved == 0, "dwReserved=%d, expected 0\n", dwReserved);
if(binding_hres != S_OK) { if(!filedwl_api && binding_hres != S_OK) {
SET_EXPECT(OnStopBinding); SET_EXPECT(OnStopBinding);
SET_EXPECT(Terminate); SET_EXPECT(Terminate);
hres = IInternetProtocolSink_ReportResult(pOIProtSink, binding_hres, 0, NULL); hres = IInternetProtocolSink_ReportResult(pOIProtSink, binding_hres, 0, NULL);
@ -385,14 +388,16 @@ static HRESULT WINAPI Protocol_Start(IInternetProtocol *iface, LPCWSTR szUrl,
hres = IInternetBindInfo_GetBindInfo(pOIBindInfo, &bindf, &bindinfo); hres = IInternetBindInfo_GetBindInfo(pOIBindInfo, &bindf, &bindinfo);
ok(hres == S_OK, "GetBindInfo failed: %08x\n", hres); ok(hres == S_OK, "GetBindInfo failed: %08x\n", hres);
if(tymed == TYMED_ISTREAM if(filedwl_api) {
ok(bindf == (BINDF_PULLDATA|BINDF_FROMURLMON|BINDF_NEEDFILE), "bindf=%08x\n", bindf);
}else if(tymed == TYMED_ISTREAM
&& (test_protocol == FILE_TEST || test_protocol == MK_TEST || test_protocol == HTTP_TEST)) { && (test_protocol == FILE_TEST || test_protocol == MK_TEST || test_protocol == HTTP_TEST)) {
ok(bindf == (BINDF_ASYNCHRONOUS|BINDF_ASYNCSTORAGE|BINDF_PULLDATA ok(bindf == (BINDF_ASYNCHRONOUS|BINDF_ASYNCSTORAGE|BINDF_PULLDATA
|BINDF_FROMURLMON), |BINDF_FROMURLMON),
"bindf=%08x\n", bindf); "bindf=%08x\n", bindf);
}else { }else {
ok(bindf == (BINDF_ASYNCHRONOUS|BINDF_ASYNCSTORAGE|BINDF_PULLDATA| ok(bindf == (BINDF_ASYNCHRONOUS|BINDF_ASYNCSTORAGE|BINDF_PULLDATA
BINDF_FROMURLMON|BINDF_NEEDFILE), |BINDF_FROMURLMON|BINDF_NEEDFILE),
"bindf=%08x\n", bindf); "bindf=%08x\n", bindf);
} }
@ -520,7 +525,7 @@ static HRESULT WINAPI Protocol_Start(IInternetProtocol *iface, LPCWSTR szUrl,
if(test_protocol == FILE_TEST) { if(test_protocol == FILE_TEST) {
hres = IInternetProtocolSink_ReportProgress(pOIProtSink, hres = IInternetProtocolSink_ReportProgress(pOIProtSink,
BINDSTATUS_CACHEFILENAMEAVAILABLE, INDEX_HTML+7); BINDSTATUS_CACHEFILENAMEAVAILABLE, file_url+8);
ok(hres == S_OK, ok(hres == S_OK,
"ReportProgress(BINDSTATUS_CACHEFILENAMEAVAILABLE) failed: %08x\n", hres); "ReportProgress(BINDSTATUS_CACHEFILENAMEAVAILABLE) failed: %08x\n", hres);
@ -573,7 +578,8 @@ static HRESULT WINAPI Protocol_Start(IInternetProtocol *iface, LPCWSTR szUrl,
SET_EXPECT(OnProgress_CACHEFILENAMEAVAILABLE); SET_EXPECT(OnProgress_CACHEFILENAMEAVAILABLE);
SET_EXPECT(OnProgress_ENDDOWNLOADDATA); SET_EXPECT(OnProgress_ENDDOWNLOADDATA);
SET_EXPECT(LockRequest); SET_EXPECT(LockRequest);
SET_EXPECT(OnDataAvailable); if(!filedwl_api)
SET_EXPECT(OnDataAvailable);
SET_EXPECT(OnStopBinding); SET_EXPECT(OnStopBinding);
} }
@ -605,7 +611,8 @@ static HRESULT WINAPI Protocol_Start(IInternetProtocol *iface, LPCWSTR szUrl,
CHECK_CALLED(OnProgress_CACHEFILENAMEAVAILABLE); CHECK_CALLED(OnProgress_CACHEFILENAMEAVAILABLE);
CHECK_CALLED(OnProgress_ENDDOWNLOADDATA); CHECK_CALLED(OnProgress_ENDDOWNLOADDATA);
CHECK_CALLED(LockRequest); CHECK_CALLED(LockRequest);
CHECK_CALLED(OnDataAvailable); if(!filedwl_api)
CHECK_CALLED(OnDataAvailable);
CHECK_CALLED(OnStopBinding); CHECK_CALLED(OnStopBinding);
} }
@ -1155,8 +1162,13 @@ static HRESULT WINAPI statusclb_OnProgress(IBindStatusCallback *iface, ULONG ulP
else else
CHECK_EXPECT(OnProgress_BEGINDOWNLOADDATA); CHECK_EXPECT(OnProgress_BEGINDOWNLOADDATA);
ok(szStatusText != NULL, "szStatusText == NULL\n"); ok(szStatusText != NULL, "szStatusText == NULL\n");
if(szStatusText) if(szStatusText) {
ok(!lstrcmpW(szStatusText, urls[test_protocol]), "wrong szStatusText\n"); if(filedwl_api) {
/* FIXME */
}else {
ok(!lstrcmpW(szStatusText, urls[test_protocol]), "wrong szStatusText %s\n", debugstr_w(szStatusText));
}
}
if(!bind_to_object) if(!bind_to_object)
ok(download_state == BEFORE_DOWNLOAD, "Download state was %d, expected BEFORE_DOWNLOAD\n", ok(download_state == BEFORE_DOWNLOAD, "Download state was %d, expected BEFORE_DOWNLOAD\n",
download_state); download_state);
@ -1175,14 +1187,18 @@ static HRESULT WINAPI statusclb_OnProgress(IBindStatusCallback *iface, ULONG ulP
else else
CHECK_EXPECT(OnProgress_ENDDOWNLOADDATA); CHECK_EXPECT(OnProgress_ENDDOWNLOADDATA);
ok(szStatusText != NULL, "szStatusText == NULL\n"); ok(szStatusText != NULL, "szStatusText == NULL\n");
if(szStatusText) if(szStatusText) {
ok(!lstrcmpW(szStatusText, urls[test_protocol]), "wrong szStatusText\n"); if(filedwl_api) {
/* FIXME */
}else {
ok(!lstrcmpW(szStatusText, urls[test_protocol]), "wrong szStatusText %s\n", debugstr_w(szStatusText));
}
}
ok(download_state == DOWNLOADING, "Download state was %d, expected DOWNLOADING\n", ok(download_state == DOWNLOADING, "Download state was %d, expected DOWNLOADING\n",
download_state); download_state);
download_state = END_DOWNLOAD; download_state = END_DOWNLOAD;
break; break;
case BINDSTATUS_CACHEFILENAMEAVAILABLE: case BINDSTATUS_CACHEFILENAMEAVAILABLE:
trace("%s\n", debugstr_w(szStatusText));
if(test_protocol != HTTP_TEST) { if(test_protocol != HTTP_TEST) {
if(iface == &objbsc) if(iface == &objbsc)
CHECK_EXPECT(Obj_OnProgress_CACHEFILENAMEAVAILABLE); CHECK_EXPECT(Obj_OnProgress_CACHEFILENAMEAVAILABLE);
@ -1195,7 +1211,7 @@ static HRESULT WINAPI statusclb_OnProgress(IBindStatusCallback *iface, ULONG ulP
ok(szStatusText != NULL, "szStatusText == NULL\n"); ok(szStatusText != NULL, "szStatusText == NULL\n");
if(szStatusText && test_protocol == FILE_TEST) if(szStatusText && test_protocol == FILE_TEST)
ok(!lstrcmpW(INDEX_HTML+7, szStatusText), "wrong szStatusText\n"); ok(!lstrcmpW(file_url+8, szStatusText), "wrong szStatusText %s\n", debugstr_w(szStatusText));
break; break;
case BINDSTATUS_CLASSIDAVAILABLE: case BINDSTATUS_CLASSIDAVAILABLE:
{ {
@ -1247,7 +1263,10 @@ static HRESULT WINAPI statusclb_OnStopBinding(IBindStatusCallback *iface, HRESUL
if (hresult == HRESULT_FROM_WIN32(ERROR_INTERNET_NAME_NOT_RESOLVED)) if (hresult == HRESULT_FROM_WIN32(ERROR_INTERNET_NAME_NOT_RESOLVED))
return S_OK; return S_OK;
ok(hresult == binding_hres, "binding failed: %08x, expected %08x\n", hresult, binding_hres); if(filedwl_api)
ok(SUCCEEDED(hresult), "binding failed: %08x\n", hresult);
else
ok(hresult == binding_hres, "binding failed: %08x, expected %08x\n", hresult, binding_hres);
ok(szError == NULL, "szError should be NULL\n"); ok(szError == NULL, "szError should be NULL\n");
if(test_protocol == HTTP_TEST && emulate_protocol) { if(test_protocol == HTTP_TEST && emulate_protocol) {
@ -1932,18 +1951,23 @@ static void test_RegisterBindStatusCallback(void)
IBindCtx_Release(bindctx); IBindCtx_Release(bindctx);
} }
static void init_bind_test(int protocol, BOOL emul, BOOL bto, DWORD t) #define BINDTEST_EMULATE 1
#define BINDTEST_TOOBJECT 2
#define BINDTEST_FILEDWLAPI 4
static void init_bind_test(int protocol, DWORD flags, DWORD t)
{ {
test_protocol = protocol; test_protocol = protocol;
emulate_protocol = emul; emulate_protocol = (flags & BINDTEST_EMULATE) != 0;
download_state = BEFORE_DOWNLOAD; download_state = BEFORE_DOWNLOAD;
stopped_binding = FALSE; stopped_binding = FALSE;
stopped_obj_binding = FALSE; stopped_obj_binding = FALSE;
data_available = FALSE; data_available = FALSE;
mime_type[0] = 0; mime_type[0] = 0;
binding_hres = S_OK; binding_hres = S_OK;
bind_to_object = bto; bind_to_object = (flags & BINDTEST_TOOBJECT) != 0;
tymed = t; tymed = t;
filedwl_api = (flags & BINDTEST_FILEDWLAPI) != 0;
} }
static void test_BindToStorage(int protocol, BOOL emul, DWORD t) static void test_BindToStorage(int protocol, BOOL emul, DWORD t)
@ -1957,7 +1981,7 @@ static void test_BindToStorage(int protocol, BOOL emul, DWORD t)
IUnknown *unk = (IUnknown*)0x00ff00ff; IUnknown *unk = (IUnknown*)0x00ff00ff;
IBinding *bind; IBinding *bind;
init_bind_test(protocol, emul, FALSE, t); init_bind_test(protocol, emul ? BINDTEST_EMULATE : 0, t);
SET_EXPECT(QueryInterface_IServiceProvider); SET_EXPECT(QueryInterface_IServiceProvider);
hres = CreateAsyncBindCtx(0, &bsc, NULL, &bctx); hres = CreateAsyncBindCtx(0, &bsc, NULL, &bctx);
@ -1974,16 +1998,13 @@ static void test_BindToStorage(int protocol, BOOL emul, DWORD t)
if(previousclb) if(previousclb)
IBindStatusCallback_Release(previousclb); IBindStatusCallback_Release(previousclb);
hres = CreateURLMoniker(NULL, urls[test_protocol], &mon); hres = CreateURLMoniker(NULL, test_protocol == FILE_TEST ? file_url : urls[test_protocol], &mon);
ok(SUCCEEDED(hres), "failed to create moniker: %08x\n", hres); ok(SUCCEEDED(hres), "failed to create moniker: %08x\n", hres);
if(FAILED(hres)) { if(FAILED(hres)) {
IBindCtx_Release(bctx); IBindCtx_Release(bctx);
return; return;
} }
if(test_protocol == FILE_TEST && INDEX_HTML[7] == '/')
memmove(INDEX_HTML+7, INDEX_HTML+8, lstrlenW(INDEX_HTML+7)*sizeof(WCHAR));
hres = IMoniker_QueryInterface(mon, &IID_IBinding, (void**)&bind); hres = IMoniker_QueryInterface(mon, &IID_IBinding, (void**)&bind);
ok(hres == E_NOINTERFACE, "IMoniker should not have IBinding interface\n"); ok(hres == E_NOINTERFACE, "IMoniker should not have IBinding interface\n");
if(SUCCEEDED(hres)) if(SUCCEEDED(hres))
@ -2133,7 +2154,7 @@ static void test_BindToObject(int protocol, BOOL emul)
IUnknown *unk = (IUnknown*)0x00ff00ff; IUnknown *unk = (IUnknown*)0x00ff00ff;
IBinding *bind; IBinding *bind;
init_bind_test(protocol, emul, TRUE, TYMED_ISTREAM); init_bind_test(protocol, BINDTEST_TOOBJECT | (emul ? BINDTEST_EMULATE : 0), TYMED_ISTREAM);
if(emul) if(emul)
CoRegisterClassObject(&CLSID_HTMLDocument, (IUnknown *)&mime_cf, CoRegisterClassObject(&CLSID_HTMLDocument, (IUnknown *)&mime_cf,
@ -2146,16 +2167,13 @@ static void test_BindToObject(int protocol, BOOL emul)
if(FAILED(hres)) if(FAILED(hres))
return; return;
hres = CreateURLMoniker(NULL, urls[test_protocol], &mon); hres = CreateURLMoniker(NULL, test_protocol == FILE_TEST ? file_url : urls[test_protocol], &mon);
ok(SUCCEEDED(hres), "failed to create moniker: %08x\n", hres); ok(SUCCEEDED(hres), "failed to create moniker: %08x\n", hres);
if(FAILED(hres)) { if(FAILED(hres)) {
IBindCtx_Release(bctx); IBindCtx_Release(bctx);
return; return;
} }
if(test_protocol == FILE_TEST && INDEX_HTML[7] == '/')
memmove(INDEX_HTML+7, INDEX_HTML+8, lstrlenW(INDEX_HTML+7)*sizeof(WCHAR));
hres = IMoniker_QueryInterface(mon, &IID_IBinding, (void**)&bind); hres = IMoniker_QueryInterface(mon, &IID_IBinding, (void**)&bind);
ok(hres == E_NOINTERFACE, "IMoniker should not have IBinding interface\n"); ok(hres == E_NOINTERFACE, "IMoniker should not have IBinding interface\n");
if(SUCCEEDED(hres)) if(SUCCEEDED(hres))
@ -2206,7 +2224,7 @@ static void test_BindToObject(int protocol, BOOL emul)
if (test_protocol == HTTP_TEST && hres == HRESULT_FROM_WIN32(ERROR_INTERNET_NAME_NOT_RESOLVED)) if (test_protocol == HTTP_TEST && hres == HRESULT_FROM_WIN32(ERROR_INTERNET_NAME_NOT_RESOLVED))
{ {
trace( "Network unreachable, skipping tests\n" ); skip( "Network unreachable, skipping tests\n" );
return; return;
} }
@ -2294,18 +2312,106 @@ static void test_BindToObject(int protocol, BOOL emul)
http_is_first = FALSE; http_is_first = FALSE;
} }
static void test_URLDownloadToFile(DWORD prot, BOOL emul)
{
BOOL res;
HRESULT hres;
init_bind_test(prot, BINDTEST_FILEDWLAPI | (emul ? BINDTEST_EMULATE : 0), TYMED_FILE);
SET_EXPECT(GetBindInfo);
SET_EXPECT(QueryInterface_IInternetProtocol);
if(!emulate_protocol) {
SET_EXPECT(QueryInterface_IServiceProvider);
SET_EXPECT(QueryService_IInternetProtocol);
}
SET_EXPECT(OnStartBinding);
if(emulate_protocol) {
SET_EXPECT(Start);
SET_EXPECT(UnlockRequest);
}else {
if(test_protocol == HTTP_TEST) {
SET_EXPECT(QueryInterface_IHttpNegotiate);
SET_EXPECT(BeginningTransaction);
SET_EXPECT(QueryInterface_IHttpNegotiate2);
SET_EXPECT(GetRootSecurityId);
}
if(test_protocol == HTTP_TEST || test_protocol == FILE_TEST)
SET_EXPECT(OnProgress_SENDINGREQUEST);
if(test_protocol == HTTP_TEST)
SET_EXPECT(OnResponse);
SET_EXPECT(OnProgress_MIMETYPEAVAILABLE);
SET_EXPECT(OnProgress_BEGINDOWNLOADDATA);
if(test_protocol == FILE_TEST)
SET_EXPECT(OnProgress_CACHEFILENAMEAVAILABLE);
if(test_protocol == HTTP_TEST)
SET_EXPECT(OnProgress_DOWNLOADINGDATA);
SET_EXPECT(OnProgress_ENDDOWNLOADDATA);
SET_EXPECT(OnStopBinding);
}
hres = URLDownloadToFileW(NULL, test_protocol == FILE_TEST ? file_url : urls[test_protocol], dwl_htmlW, 0, &bsc);
ok(hres == S_OK, "URLDownloadToFile failed: %08x\n", hres);
CHECK_CALLED(GetBindInfo);
CHECK_CALLED(QueryInterface_IInternetProtocol);
if(!emulate_protocol) {
CHECK_CALLED(QueryInterface_IServiceProvider);
CHECK_CALLED(QueryService_IInternetProtocol);
}
CHECK_CALLED(OnStartBinding);
if(emulate_protocol) {
CHECK_CALLED(Start);
CHECK_CALLED(UnlockRequest);
}else {
if(test_protocol == HTTP_TEST) {
CHECK_CALLED(QueryInterface_IHttpNegotiate);
CHECK_CALLED(BeginningTransaction);
CHECK_CALLED(QueryInterface_IHttpNegotiate2);
CHECK_CALLED(GetRootSecurityId);
}
if(test_protocol == HTTP_TEST || test_protocol == FILE_TEST)
CHECK_CALLED(OnProgress_SENDINGREQUEST);
if(test_protocol == HTTP_TEST)
CHECK_CALLED(OnResponse);
CHECK_CALLED(OnProgress_MIMETYPEAVAILABLE);
CHECK_CALLED(OnProgress_BEGINDOWNLOADDATA);
if(test_protocol == FILE_TEST)
CHECK_CALLED(OnProgress_CACHEFILENAMEAVAILABLE);
if(test_protocol == HTTP_TEST)
CLEAR_CALLED(OnProgress_DOWNLOADINGDATA);
CHECK_CALLED(OnProgress_ENDDOWNLOADDATA);
CHECK_CALLED(OnStopBinding);
}
res = DeleteFileW(dwl_htmlW);
ok(res, "DeleteFile failed: %u\n", GetLastError());
if(prot != FILE_TEST || emul)
return;
hres = URLDownloadToFileW(NULL, urls[test_protocol], dwl_htmlW, 0, NULL);
ok(hres == S_OK, "URLDownloadToFile failed: %08x\n", hres);
res = DeleteFileW(dwl_htmlW);
ok(res, "DeleteFile failed: %u\n", GetLastError());
}
static void set_file_url(void) static void set_file_url(void)
{ {
int len; int len;
static const WCHAR wszFile[] = {'f','i','l','e',':','/','/'}; static const WCHAR wszFile[] = {'f','i','l','e',':','/','/'};
memcpy(INDEX_HTML, wszFile, sizeof(wszFile)); memcpy(file_url, wszFile, sizeof(wszFile));
len = sizeof(wszFile)/sizeof(WCHAR); len = sizeof(wszFile)/sizeof(WCHAR);
INDEX_HTML[len++] = '/'; file_url[len++] = '/';
len += GetCurrentDirectoryW(sizeof(INDEX_HTML)/sizeof(WCHAR)-len, INDEX_HTML+len); len += GetCurrentDirectoryW(sizeof(file_url)/sizeof(WCHAR)-len, file_url+len);
INDEX_HTML[len++] = '\\'; file_url[len++] = '\\';
memcpy(INDEX_HTML+len, wszIndexHtml, sizeof(wszIndexHtml)); memcpy(file_url+len, wszIndexHtml, sizeof(wszIndexHtml));
memcpy(INDEX_HTML, wszFile, sizeof(wszIndexHtml));
memmove(INDEX_HTML+7, file_url+8, (lstrlenW(file_url+8)+1)*sizeof(WCHAR));
} }
static void create_file(void) static void create_file(void)
@ -2334,7 +2440,7 @@ static void test_ReportResult(HRESULT exhres)
IUnknown *unk = (void*)0xdeadbeef; IUnknown *unk = (void*)0xdeadbeef;
HRESULT hres; HRESULT hres;
init_bind_test(ABOUT_TEST, TRUE, FALSE, TYMED_ISTREAM); init_bind_test(ABOUT_TEST, BINDTEST_EMULATE, TYMED_ISTREAM);
binding_hres = exhres; binding_hres = exhres;
hres = CreateURLMoniker(NULL, ABOUT_BLANK, &mon); hres = CreateURLMoniker(NULL, ABOUT_BLANK, &mon);
@ -2432,6 +2538,7 @@ START_TEST(url)
complete_event = CreateEvent(NULL, FALSE, FALSE, NULL); complete_event = CreateEvent(NULL, FALSE, FALSE, NULL);
complete_event2 = CreateEvent(NULL, FALSE, FALSE, NULL); complete_event2 = CreateEvent(NULL, FALSE, FALSE, NULL);
thread_id = GetCurrentThreadId(); thread_id = GetCurrentThreadId();
create_file();
test_create(); test_create();
test_CreateAsyncBindCtx(); test_CreateAsyncBindCtx();
@ -2451,12 +2558,10 @@ START_TEST(url)
test_BindToObject(HTTP_TEST, FALSE); test_BindToObject(HTTP_TEST, FALSE);
trace("synchronous file test...\n"); trace("synchronous file test...\n");
create_file();
test_BindToStorage(FILE_TEST, FALSE, TYMED_ISTREAM); test_BindToStorage(FILE_TEST, FALSE, TYMED_ISTREAM);
trace("synchronous file test (to object)...\n"); trace("synchronous file test (to object)...\n");
test_BindToObject(FILE_TEST, FALSE); test_BindToObject(FILE_TEST, FALSE);
DeleteFileW(wszIndexHtml);
bindf = BINDF_ASYNCHRONOUS | BINDF_ASYNCSTORAGE | BINDF_PULLDATA; bindf = BINDF_ASYNCHRONOUS | BINDF_ASYNCSTORAGE | BINDF_PULLDATA;
@ -2505,7 +2610,6 @@ START_TEST(url)
test_BindToObject(ABOUT_TEST, TRUE); test_BindToObject(ABOUT_TEST, TRUE);
trace("file test...\n"); trace("file test...\n");
create_file();
test_BindToStorage(FILE_TEST, FALSE, TYMED_ISTREAM); test_BindToStorage(FILE_TEST, FALSE, TYMED_ISTREAM);
trace("file test (to file)...\n"); trace("file test (to file)...\n");
@ -2513,10 +2617,8 @@ START_TEST(url)
trace("file test (to object)...\n"); trace("file test (to object)...\n");
test_BindToObject(FILE_TEST, FALSE); test_BindToObject(FILE_TEST, FALSE);
DeleteFileW(wszIndexHtml);
trace("emulated file test...\n"); trace("emulated file test...\n");
set_file_url();
test_BindToStorage(FILE_TEST, TRUE, TYMED_ISTREAM); test_BindToStorage(FILE_TEST, TRUE, TYMED_ISTREAM);
trace("emulated file test (to file)...\n"); trace("emulated file test (to file)...\n");
@ -2534,9 +2636,19 @@ START_TEST(url)
trace("emulated mk test...\n"); trace("emulated mk test...\n");
test_BindToStorage(MK_TEST, TRUE, TYMED_ISTREAM); test_BindToStorage(MK_TEST, TRUE, TYMED_ISTREAM);
trace("test URLDownloadToFile for file protocol...\n");
test_URLDownloadToFile(FILE_TEST, FALSE);
trace("test URLDownloadToFile for emulated file protocol...\n");
test_URLDownloadToFile(FILE_TEST, TRUE);
trace("test URLDownloadToFile for http protocol...\n");
test_URLDownloadToFile(HTTP_TEST, FALSE);
trace("test failures...\n"); trace("test failures...\n");
test_BindToStorage_fail(); test_BindToStorage_fail();
DeleteFileW(wszIndexHtml);
CloseHandle(complete_event); CloseHandle(complete_event);
CloseHandle(complete_event2); CloseHandle(complete_event2);
CoUninitialize(); CoUninitialize();