Commit e018a5e2 authored by Hans Leidekker's avatar Hans Leidekker Committed by Alexandre Julliard

wininet: Add a test for status callbacks on ftp connections.

parent 5f082498
...@@ -42,6 +42,7 @@ ...@@ -42,6 +42,7 @@
static BOOL (WINAPI *pFtpCommandA)(HINTERNET,BOOL,DWORD,LPCSTR,DWORD_PTR,HINTERNET*); static BOOL (WINAPI *pFtpCommandA)(HINTERNET,BOOL,DWORD,LPCSTR,DWORD_PTR,HINTERNET*);
static INTERNET_STATUS_CALLBACK (WINAPI *pInternetSetStatusCallbackA)(HINTERNET,INTERNET_STATUS_CALLBACK);
static void test_getfile_no_open(void) static void test_getfile_no_open(void)
...@@ -908,6 +909,51 @@ static void test_get_current_dir(HINTERNET hFtp, HINTERNET hConnect) ...@@ -908,6 +909,51 @@ static void test_get_current_dir(HINTERNET hFtp, HINTERNET hConnect)
ok ( GetLastError() == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got: %d\n", GetLastError()); ok ( GetLastError() == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got: %d\n", GetLastError());
} }
static void WINAPI status_callback(HINTERNET handle, DWORD_PTR ctx, DWORD status, LPVOID info, DWORD info_len)
{
switch (status)
{
case INTERNET_STATUS_RESOLVING_NAME:
case INTERNET_STATUS_NAME_RESOLVED:
case INTERNET_STATUS_CONNECTING_TO_SERVER:
case INTERNET_STATUS_CONNECTED_TO_SERVER:
trace("%p %lx %u %s %u\n", handle, ctx, status, (char *)info, info_len);
break;
default:
break;
}
}
static void test_status_callbacks(HINTERNET hInternet)
{
INTERNET_STATUS_CALLBACK cb;
HINTERNET hFtp;
BOOL ret;
if (!pInternetSetStatusCallbackA)
{
win_skip("InternetSetStatusCallbackA() is not available, skipping test\n");
return;
}
cb = pInternetSetStatusCallbackA(hInternet, status_callback);
ok(cb == NULL, "expected NULL got %p\n", cb);
hFtp = InternetConnect(hInternet, "ftp.winehq.org", INTERNET_DEFAULT_FTP_PORT, "anonymous", NULL,
INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 1);
if (!hFtp)
{
skip("No ftp connection could be made to ftp.winehq.org %u\n", GetLastError());
return;
}
ret = InternetCloseHandle(hFtp);
ok(ret, "InternetCloseHandle failed %u\n", GetLastError());
cb = pInternetSetStatusCallbackA(hInternet, NULL);
ok(cb == status_callback, "expected check_status got %p\n", cb);
}
START_TEST(ftp) START_TEST(ftp)
{ {
HMODULE hWininet; HMODULE hWininet;
...@@ -915,6 +961,7 @@ START_TEST(ftp) ...@@ -915,6 +961,7 @@ START_TEST(ftp)
hWininet = GetModuleHandleA("wininet.dll"); hWininet = GetModuleHandleA("wininet.dll");
pFtpCommandA = (void*)GetProcAddress(hWininet, "FtpCommandA"); pFtpCommandA = (void*)GetProcAddress(hWininet, "FtpCommandA");
pInternetSetStatusCallbackA = (void*)GetProcAddress(hWininet, "InternetSetStatusCallbackA");
SetLastError(0xdeadbeef); SetLastError(0xdeadbeef);
hInternet = InternetOpen("winetest", 0, NULL, NULL, 0); hInternet = InternetOpen("winetest", 0, NULL, NULL, 0);
...@@ -956,6 +1003,7 @@ START_TEST(ftp) ...@@ -956,6 +1003,7 @@ START_TEST(ftp)
test_command(hFtp, hHttp); test_command(hFtp, hHttp);
test_find_first_file(hFtp, hHttp); test_find_first_file(hFtp, hHttp);
test_get_current_dir(hFtp, hHttp); test_get_current_dir(hFtp, hHttp);
test_status_callbacks(hInternet);
InternetCloseHandle(hHttp); InternetCloseHandle(hHttp);
InternetCloseHandle(hFtp); InternetCloseHandle(hFtp);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment