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
4e1ff0b8
Commit
4e1ff0b8
authored
Dec 08, 2010
by
Thomas Mullaly
Committed by
Alexandre Julliard
Dec 09, 2010
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
urlmon: Added pluggable protocol support to CoInternetParseIUri.
parent
f7192d32
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
64 additions
and
22 deletions
+64
-22
uri.c
dlls/urlmon/tests/uri.c
+51
-2
uri.c
dlls/urlmon/uri.c
+13
-20
No files found.
dlls/urlmon/tests/uri.c
View file @
4e1ff0b8
...
...
@@ -62,6 +62,7 @@
}while(0)
DEFINE_EXPECT
(
CombineUrl
);
DEFINE_EXPECT
(
ParseUrl
);
static
HRESULT
(
WINAPI
*
pCreateUri
)(
LPCWSTR
,
DWORD
,
DWORD_PTR
,
IUri
**
);
static
HRESULT
(
WINAPI
*
pCreateUriWithFragment
)(
LPCWSTR
,
LPCWSTR
,
DWORD
,
DWORD_PTR
,
IUri
**
);
...
...
@@ -83,6 +84,12 @@ static const WCHAR combine_resultW[] = {'z','i','p',':','t','e','s','t',0};
static
const
WCHAR
winetestW
[]
=
{
'w'
,
'i'
,
'n'
,
'e'
,
't'
,
'e'
,
's'
,
't'
,
0
};
static
const
WCHAR
parse_urlW
[]
=
{
'w'
,
'i'
,
'n'
,
'e'
,
't'
,
'e'
,
's'
,
't'
,
':'
,
't'
,
'e'
,
's'
,
't'
,
0
};
static
const
WCHAR
parse_resultW
[]
=
{
'z'
,
'i'
,
'p'
,
':'
,
't'
,
'e'
,
's'
,
't'
,
0
};
static
PARSEACTION
parse_action
;
static
DWORD
parse_flags
;
typedef
struct
_uri_create_flag_test
{
DWORD
flags
;
HRESULT
expected
;
...
...
@@ -9300,8 +9307,17 @@ static HRESULT WINAPI InternetProtocolInfo_ParseUrl(IInternetProtocolInfo *iface
PARSEACTION
ParseAction
,
DWORD
dwParseFlags
,
LPWSTR
pwzResult
,
DWORD
cchResult
,
DWORD
*
pcchResult
,
DWORD
dwReserved
)
{
ok
(
0
,
"unexpected call %d
\n
"
,
ParseAction
);
return
E_NOTIMPL
;
CHECK_EXPECT
(
ParseUrl
);
ok
(
!
lstrcmpW
(
pwzUrl
,
parse_urlW
),
"Error: Expected %s, but got %s instead.
\n
"
,
wine_dbgstr_w
(
parse_urlW
),
wine_dbgstr_w
(
pwzUrl
));
ok
(
ParseAction
==
parse_action
,
"Error: Expected %d, but got %d.
\n
"
,
parse_action
,
ParseAction
);
ok
(
dwParseFlags
==
parse_flags
,
"Error: Expected 0x%08x, but got 0x%08x.
\n
"
,
parse_flags
,
dwParseFlags
);
ok
(
cchResult
==
200
,
"Error: Got %d.
\n
"
,
cchResult
);
memcpy
(
pwzResult
,
parse_resultW
,
sizeof
(
parse_resultW
));
*
pcchResult
=
lstrlenW
(
parse_resultW
);
return
S_OK
;
}
static
HRESULT
WINAPI
InternetProtocolInfo_CombineUrl
(
IInternetProtocolInfo
*
iface
,
...
...
@@ -9725,6 +9741,36 @@ static void test_CoInternetParseIUri(void) {
}
}
static
void
test_CoInternetParseIUri_Pluggable
(
void
)
{
HRESULT
hr
;
IUri
*
uri
=
NULL
;
hr
=
pCreateUri
(
parse_urlW
,
0
,
0
,
&
uri
);
ok
(
SUCCEEDED
(
hr
),
"Error: Expected CreateUri to succeed, but got 0x%08x.
\n
"
,
hr
);
if
(
SUCCEEDED
(
hr
))
{
WCHAR
result
[
200
];
DWORD
result_len
;
SET_EXPECT
(
ParseUrl
);
parse_action
=
PARSE_CANONICALIZE
;
parse_flags
=
URL_UNESCAPE
|
URL_ESCAPE_UNSAFE
;
hr
=
pCoInternetParseIUri
(
uri
,
parse_action
,
parse_flags
,
result
,
200
,
&
result_len
,
0
);
ok
(
hr
==
S_OK
,
"Error: CoInternetParseIUri returned 0x%08x, expected 0x%08x.
\n
"
,
hr
,
S_OK
);
CHECK_CALLED
(
ParseUrl
);
if
(
SUCCEEDED
(
hr
))
{
ok
(
result_len
==
lstrlenW
(
parse_resultW
),
"Error: Expected %d, but got %d.
\n
"
,
lstrlenW
(
parse_resultW
),
result_len
);
ok
(
!
lstrcmpW
(
result
,
parse_resultW
),
"Error: Expected %s, but got %s.
\n
"
,
wine_dbgstr_w
(
parse_resultW
),
wine_dbgstr_w
(
result
));
}
}
if
(
uri
)
IUri_Release
(
uri
);
}
START_TEST
(
uri
)
{
HMODULE
hurlmon
;
...
...
@@ -9831,5 +9877,8 @@ START_TEST(uri) {
trace
(
"test CoInternetCombineUrlEx Pluggable...
\n
"
);
test_CoInternetCombineUrlEx_Pluggable
();
trace
(
"test CoInternetParseIUri pluggable...
\n
"
);
test_CoInternetParseIUri_Pluggable
();
unregister_protocols
();
}
dlls/urlmon/uri.c
View file @
4e1ff0b8
...
...
@@ -6203,6 +6203,7 @@ static HRESULT parse_canonicalize(const Uri *uri, DWORD flags, LPWSTR output,
!
(
flags
&
URL_ESCAPE_SPACES_ONLY
)
&&
!
(
flags
&
URL_ESCAPE_PERCENT
);
/* Check if the dot segments need to be removed from the
* path component.
*/
...
...
@@ -6612,6 +6613,7 @@ HRESULT WINAPI CoInternetParseIUri(IUri *pIUri, PARSEACTION ParseAction, DWORD d
{
HRESULT
hr
;
Uri
*
uri
;
IInternetProtocolInfo
*
info
;
TRACE
(
"(%p %d %x %p %d %p %x)
\n
"
,
pIUri
,
ParseAction
,
dwFlags
,
pwzResult
,
cchResult
,
pcchResult
,
(
DWORD
)
dwReserved
);
...
...
@@ -6624,44 +6626,35 @@ HRESULT WINAPI CoInternetParseIUri(IUri *pIUri, PARSEACTION ParseAction, DWORD d
return
E_INVALIDARG
;
}
switch
(
ParseAction
)
{
case
PARSE_CANONICALIZE
:
if
(
!
(
uri
=
get_uri_obj
(
pIUri
)))
{
*
pcchResult
=
0
;
FIXME
(
"(%p %d %x %p %d %p %x) Unknown IUri's not supported for this action.
\n
"
,
pIUri
,
ParseAction
,
dwFlags
,
pwzResult
,
cchResult
,
pcchResult
,
(
DWORD
)
dwReserved
);
return
E_NOTIMPL
;
}
info
=
get_protocol_info
(
uri
->
canon_uri
);
if
(
info
)
{
hr
=
IInternetProtocolInfo_ParseUrl
(
info
,
uri
->
canon_uri
,
ParseAction
,
dwFlags
,
pwzResult
,
cchResult
,
pcchResult
,
0
);
IInternetProtocolInfo_Release
(
info
);
if
(
SUCCEEDED
(
hr
))
return
hr
;
}
switch
(
ParseAction
)
{
case
PARSE_CANONICALIZE
:
hr
=
parse_canonicalize
(
uri
,
dwFlags
,
pwzResult
,
cchResult
,
pcchResult
);
break
;
case
PARSE_FRIENDLY
:
hr
=
parse_friendly
(
pIUri
,
pwzResult
,
cchResult
,
pcchResult
);
break
;
case
PARSE_ROOTDOCUMENT
:
if
(
!
(
uri
=
get_uri_obj
(
pIUri
)))
{
*
pcchResult
=
0
;
FIXME
(
"(%p %d %x %p %d %p %x) Unknown IUri's not supported for this action.
\n
"
,
pIUri
,
ParseAction
,
dwFlags
,
pwzResult
,
cchResult
,
pcchResult
,
(
DWORD
)
dwReserved
);
return
E_NOTIMPL
;
}
hr
=
parse_rootdocument
(
uri
,
pwzResult
,
cchResult
,
pcchResult
);
break
;
case
PARSE_DOCUMENT
:
if
(
!
(
uri
=
get_uri_obj
(
pIUri
)))
{
*
pcchResult
=
0
;
FIXME
(
"(%p %d %x %p %d %p %x) Unknown IUri's not supported for this action.
\n
"
,
pIUri
,
ParseAction
,
dwFlags
,
pwzResult
,
cchResult
,
pcchResult
,
(
DWORD
)
dwReserved
);
return
E_NOTIMPL
;
}
hr
=
parse_document
(
uri
,
pwzResult
,
cchResult
,
pcchResult
);
break
;
case
PARSE_PATH_FROM_URL
:
if
(
!
(
uri
=
get_uri_obj
(
pIUri
)))
{
*
pcchResult
=
0
;
FIXME
(
"(%p %d %x %p %d %p %x) Unknown IUri's not supported for this action.
\n
"
,
pIUri
,
ParseAction
,
dwFlags
,
pwzResult
,
cchResult
,
pcchResult
,
(
DWORD
)
dwReserved
);
return
E_NOTIMPL
;
}
hr
=
parse_path_from_url
(
uri
,
pwzResult
,
cchResult
,
pcchResult
);
break
;
case
PARSE_URL_FROM_PATH
:
...
...
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