Commit 6d996f32 authored by Thomas Mullaly's avatar Thomas Mullaly Committed by Alexandre Julliard

urlmon: Implementation for PARSE_FRIENDLY in CoInternetParseIUri.

parent 8cf81d91
...@@ -5921,7 +5921,11 @@ static const uri_parse_test uri_parse_tests[] = { ...@@ -5921,7 +5921,11 @@ static const uri_parse_test uri_parse_tests[] = {
{"http://google.com/test/../",Uri_CREATE_NO_CANONICALIZE,PARSE_CANONICALIZE,URL_NO_META,"http://google.com/test/../",S_OK,FALSE}, {"http://google.com/test/../",Uri_CREATE_NO_CANONICALIZE,PARSE_CANONICALIZE,URL_NO_META,"http://google.com/test/../",S_OK,FALSE},
{"http://google.com/test/../",Uri_CREATE_NO_CANONICALIZE,PARSE_CANONICALIZE,0,"http://google.com/",S_OK,FALSE}, {"http://google.com/test/../",Uri_CREATE_NO_CANONICALIZE,PARSE_CANONICALIZE,0,"http://google.com/",S_OK,FALSE},
{"zip://google.com/test/../",Uri_CREATE_NO_CANONICALIZE,PARSE_CANONICALIZE,0,"zip://google.com/",S_OK,FALSE}, {"zip://google.com/test/../",Uri_CREATE_NO_CANONICALIZE,PARSE_CANONICALIZE,0,"zip://google.com/",S_OK,FALSE},
{"file:///c:/test/../test",Uri_CREATE_NO_CANONICALIZE,PARSE_CANONICALIZE,URL_DONT_SIMPLIFY,"file:///c:/test/../test",S_OK,FALSE} {"file:///c:/test/../test",Uri_CREATE_NO_CANONICALIZE,PARSE_CANONICALIZE,URL_DONT_SIMPLIFY,"file:///c:/test/../test",S_OK,FALSE},
/* PARSE_FRIENDLY tests. */
{"http://test@google.com/test#test",0,PARSE_FRIENDLY,0,"http://google.com/test#test",S_OK,FALSE},
{"zip://test@google.com/test",0,PARSE_FRIENDLY,0,"zip://test@google.com/test",S_OK,FALSE}
}; };
static inline LPWSTR a2w(LPCSTR str) { static inline LPWSTR a2w(LPCSTR str) {
......
...@@ -6186,6 +6186,34 @@ static HRESULT parse_canonicalize(const Uri *uri, DWORD flags, LPWSTR output, ...@@ -6186,6 +6186,34 @@ static HRESULT parse_canonicalize(const Uri *uri, DWORD flags, LPWSTR output,
return S_OK; return S_OK;
} }
static HRESULT parse_friendly(IUri *uri, LPWSTR output, DWORD output_len,
DWORD *result_len)
{
HRESULT hr;
DWORD display_len;
BSTR display;
hr = IUri_GetPropertyLength(uri, Uri_PROPERTY_DISPLAY_URI, &display_len, 0);
if(FAILED(hr)) {
*result_len = 0;
return hr;
}
*result_len = display_len;
if(display_len+1 > output_len)
return STRSAFE_E_INSUFFICIENT_BUFFER;
hr = IUri_GetDisplayUri(uri, &display);
if(FAILED(hr)) {
*result_len = 0;
return hr;
}
memcpy(output, display, (display_len+1)*sizeof(WCHAR));
SysFreeString(display);
return S_OK;
}
/*********************************************************************** /***********************************************************************
* CoInternetParseIUri (urlmon.@) * CoInternetParseIUri (urlmon.@)
*/ */
...@@ -6217,6 +6245,9 @@ HRESULT WINAPI CoInternetParseIUri(IUri *pIUri, PARSEACTION ParseAction, DWORD d ...@@ -6217,6 +6245,9 @@ HRESULT WINAPI CoInternetParseIUri(IUri *pIUri, PARSEACTION ParseAction, DWORD d
} }
hr = parse_canonicalize(uri, dwFlags, pwzResult, cchResult, pcchResult); hr = parse_canonicalize(uri, dwFlags, pwzResult, cchResult, pcchResult);
break; break;
case PARSE_FRIENDLY:
hr = parse_friendly(pIUri, pwzResult, cchResult, pcchResult);
break;
case PARSE_SECURITY_URL: case PARSE_SECURITY_URL:
case PARSE_MIME: case PARSE_MIME:
case PARSE_SERVER: case PARSE_SERVER:
......
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