Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
2e59b5ac
Commit
2e59b5ac
authored
Oct 04, 2010
by
Jacek Caban
Committed by
Alexandre Julliard
Oct 04, 2010
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
urlmon: Added Abort tests.
parent
159c23e1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
66 additions
and
15 deletions
+66
-15
protocol.c
dlls/urlmon/tests/protocol.c
+66
-15
No files found.
dlls/urlmon/tests/protocol.c
View file @
2e59b5ac
...
...
@@ -147,7 +147,7 @@ static BOOL binding_test;
static
PROTOCOLDATA
protocoldata
,
*
pdata
,
continue_protdata
;
static
DWORD
prot_read
,
pi
,
filter_state
;
static
BOOL
security_problem
;
static
BOOL
async_read_pending
,
mimefilter_test
,
direct_read
,
wait_for_switch
,
emulate_prot
,
short_read
;
static
BOOL
async_read_pending
,
mimefilter_test
,
direct_read
,
wait_for_switch
,
emulate_prot
,
short_read
,
test_abort
;
static
enum
{
FILE_TEST
,
...
...
@@ -823,7 +823,7 @@ static HRESULT WINAPI ProtocolSink_ReportResult(IInternetProtocolSink *iface, HR
else
ok
(
hrResult
==
expect_hrResult
,
"hrResult = %08x, expected: %08x
\n
"
,
hrResult
,
expect_hrResult
);
if
(
SUCCEEDED
(
hrResult
)
||
tested_protocol
==
FTP_TEST
)
if
(
SUCCEEDED
(
hrResult
)
||
tested_protocol
==
FTP_TEST
||
test_abort
)
ok
(
dwError
==
ERROR_SUCCESS
,
"dwError = %d, expected ERROR_SUCCESS
\n
"
,
dwError
);
else
ok
(
dwError
!=
ERROR_SUCCESS
||
...
...
@@ -1959,14 +1959,15 @@ static const IClassFactoryVtbl MimeFilterCFVtbl = {
static
IClassFactory
mimefilter_cf
=
{
&
MimeFilterCFVtbl
};
#define TEST_BINDING 0x01
#define TEST_FILTER 0x02
#define TEST_FIRST_HTTP 0x04
#define TEST_DIRECT_READ 0x08
#define TEST_POST 0x10
#define TEST_EMULATEPROT 0x20
#define TEST_SHORT_READ 0x40
#define TEST_REDIRECT 0x80
#define TEST_BINDING 0x0001
#define TEST_FILTER 0x0002
#define TEST_FIRST_HTTP 0x0004
#define TEST_DIRECT_READ 0x0008
#define TEST_POST 0x0010
#define TEST_EMULATEPROT 0x0020
#define TEST_SHORT_READ 0x0040
#define TEST_REDIRECT 0x0080
#define TEST_ABORT 0x0100
static
void
init_test
(
int
prot
,
DWORD
flags
)
{
...
...
@@ -1993,6 +1994,7 @@ static void init_test(int prot, DWORD flags)
wait_for_switch
=
TRUE
;
short_read
=
(
flags
&
TEST_SHORT_READ
)
!=
0
;
test_redirect
=
(
flags
&
TEST_REDIRECT
)
!=
0
;
test_abort
=
(
flags
&
TEST_ABORT
)
!=
0
;
}
static
void
test_priority
(
IInternetProtocol
*
protocol
)
...
...
@@ -2021,6 +2023,24 @@ static void test_priority(IInternetProtocol *protocol)
IInternetPriority_Release
(
priority
);
}
static
void
test_early_abort
(
const
CLSID
*
clsid
)
{
IInternetProtocol
*
protocol
;
HRESULT
hres
;
hres
=
CoCreateInstance
(
clsid
,
NULL
,
CLSCTX_INPROC_SERVER
|
CLSCTX_INPROC_HANDLER
,
&
IID_IInternetProtocol
,
(
void
**
)
&
protocol
);
ok
(
hres
==
S_OK
,
"CoCreateInstance failed: %08x
\n
"
,
hres
);
hres
=
IInternetProtocol_Abort
(
protocol
,
E_ABORT
,
0
);
ok
(
hres
==
S_OK
,
"Abort failed: %08x
\n
"
,
hres
);
hres
=
IInternetProtocol_Abort
(
protocol
,
E_FAIL
,
0
);
ok
(
hres
==
S_OK
,
"Abort failed: %08x
\n
"
,
hres
);
IInternetProtocol_Release
(
protocol
);
}
static
BOOL
file_protocol_start
(
IInternetProtocol
*
protocol
,
LPCWSTR
url
,
IInternetProtocolEx
*
protocolex
,
IUri
*
uri
,
BOOL
is_first
)
{
...
...
@@ -2413,7 +2433,7 @@ static void test_protocol_terminate(IInternetProtocol *protocol)
ok
(
hres
==
S_OK
,
"LockRequest failed: %08x
\n
"
,
hres
);
hres
=
IInternetProtocol_Read
(
protocol
,
buf
,
1
,
&
cb
);
ok
(
hres
==
S_FALSE
,
"Read failed: %08x
\n
"
,
hres
);
ok
(
hres
==
test_abort
?
S_OK
:
S_FALSE
,
"Read failed: %08x
\n
"
,
hres
);
hres
=
IInternetProtocol_Terminate
(
protocol
,
0
);
ok
(
hres
==
S_OK
,
"Terminate failed: %08x
\n
"
,
hres
);
...
...
@@ -2507,9 +2527,9 @@ static void test_http_protocol_url(LPCWSTR url, int prot, DWORD flags)
if
(
!
http_protocol_start
(
url
))
return
;
if
(
!
direct_read
)
if
(
!
direct_read
&&
!
test_abort
)
SET_EXPECT
(
ReportResult
);
expect_hrResult
=
S_OK
;
expect_hrResult
=
test_abort
?
E_ABORT
:
S_OK
;
if
(
direct_read
)
{
while
(
wait_for_switch
)
{
...
...
@@ -2547,6 +2567,19 @@ static void test_http_protocol_url(LPCWSTR url, int prot, DWORD flags)
CHECK_CALLED
(
Switch
);
else
CHECK_CALLED
(
ReportData
);
if
(
test_abort
)
{
HRESULT
hres
;
SET_EXPECT
(
ReportResult
);
hres
=
IInternetProtocol_Abort
(
async_protocol
,
E_ABORT
,
0
);
ok
(
hres
==
S_OK
,
"Abort failed: %08x
\n
"
,
hres
);
CHECK_CALLED
(
ReportResult
);
hres
=
IInternetProtocol_Abort
(
async_protocol
,
E_ABORT
,
0
);
ok
(
hres
==
INET_E_RESULT_DISPATCHED
,
"Abort failed: %08x
\n
"
,
hres
);
break
;
}
}
else
{
if
(
bindf
&
BINDF_FROMURLMON
)
CHECK_NOT_CALLED
(
Switch
);
...
...
@@ -2555,15 +2588,24 @@ static void test_http_protocol_url(LPCWSTR url, int prot, DWORD flags)
if
(
cb
==
0
)
break
;
}
}
if
(
!
test_abort
)
{
ok
(
hres
==
S_FALSE
,
"Read failed: %08x
\n
"
,
hres
);
CHECK_CALLED
(
ReportResult
);
}
}
if
(
prot
==
HTTPS_TEST
)
CLEAR_CALLED
(
ReportProgress_SENDINGREQUEST
);
hres
=
IInternetProtocol_Abort
(
async_protocol
,
E_ABORT
,
0
);
ok
(
hres
==
INET_E_RESULT_DISPATCHED
,
"Abort failed: %08x
\n
"
,
hres
);
test_protocol_terminate
(
async_protocol
);
hres
=
IInternetProtocol_Abort
(
async_protocol
,
E_ABORT
,
0
);
ok
(
hres
==
S_OK
,
"Abort failed: %08x
\n
"
,
hres
);
ref
=
IInternetProtocol_Release
(
async_protocol
);
ok
(
!
ref
,
"ref=%x
\n
"
,
hres
);
ok
(
!
ref
,
"ref=%x
\n
"
,
ref
);
}
IClassFactory_Release
(
factory
);
...
...
@@ -2607,6 +2649,12 @@ static void test_http_protocol(void)
trace
(
"Testing http protocol (redirected)...
\n
"
);
bindf
=
BINDF_ASYNCHRONOUS
|
BINDF_ASYNCSTORAGE
|
BINDF_PULLDATA
|
BINDF_FROMURLMON
;
test_http_protocol_url
(
redirect_url
,
HTTP_TEST
,
TEST_REDIRECT
);
trace
(
"Testing http protocol abort...
\n
"
);
test_http_protocol_url
(
winehq_url
,
HTTP_TEST
,
TEST_ABORT
);
test_early_abort
(
&
CLSID_HttpProtocol
);
test_early_abort
(
&
CLSID_HttpSProtocol
);
}
static
void
test_https_protocol
(
void
)
...
...
@@ -2684,7 +2732,6 @@ static void test_ftp_protocol(void)
WaitForSingleObject
(
event_complete
,
INFINITE
);
while
(
1
)
{
hres
=
IInternetProtocol_Read
(
async_protocol
,
buf
,
sizeof
(
buf
),
&
cb
);
if
(
hres
==
E_PENDING
)
WaitForSingleObject
(
event_complete
,
INFINITE
);
...
...
@@ -2700,6 +2747,8 @@ static void test_ftp_protocol(void)
ref
=
IInternetProtocol_Release
(
async_protocol
);
ok
(
!
ref
,
"ref=%d
\n
"
,
ref
);
test_early_abort
(
&
CLSID_FtpProtocol
);
}
static
void
test_gopher_protocol
(
void
)
...
...
@@ -2735,6 +2784,8 @@ static void test_gopher_protocol(void)
test_priority
(
async_protocol
);
IInternetProtocol_Release
(
async_protocol
);
test_early_abort
(
&
CLSID_GopherProtocol
);
}
static
void
test_mk_protocol
(
void
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment