mirror of
https://github.com/reactos/reactos.git
synced 2024-10-02 07:26:47 +00:00
sync urlmon to wine 1.1.14
svn path=/trunk/; revision=39266
This commit is contained in:
parent
05b450ba65
commit
fbed23740e
|
@ -1183,6 +1183,8 @@ static HRESULT WINAPI InternetProtocolSink_ReportProgress(IInternetProtocolSink
|
||||||
case BINDSTATUS_DIRECTBIND:
|
case BINDSTATUS_DIRECTBIND:
|
||||||
This->report_mime = FALSE;
|
This->report_mime = FALSE;
|
||||||
break;
|
break;
|
||||||
|
case BINDSTATUS_ACCEPTRANGES:
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
FIXME("Unhandled status code %d\n", ulStatusCode);
|
FIXME("Unhandled status code %d\n", ulStatusCode);
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
|
|
|
@ -486,6 +486,7 @@ static HRESULT WINAPI BPInternetProtocolSink_ReportProgress(IInternetProtocolSin
|
||||||
case BINDSTATUS_SENDINGREQUEST:
|
case BINDSTATUS_SENDINGREQUEST:
|
||||||
case BINDSTATUS_CACHEFILENAMEAVAILABLE:
|
case BINDSTATUS_CACHEFILENAMEAVAILABLE:
|
||||||
case BINDSTATUS_DIRECTBIND:
|
case BINDSTATUS_DIRECTBIND:
|
||||||
|
case BINDSTATUS_ACCEPTRANGES:
|
||||||
case BINDSTATUS_MIMETYPEAVAILABLE:
|
case BINDSTATUS_MIMETYPEAVAILABLE:
|
||||||
if(!This->protocol_sink)
|
if(!This->protocol_sink)
|
||||||
return S_OK;
|
return S_OK;
|
||||||
|
|
|
@ -63,6 +63,7 @@ typedef struct {
|
||||||
const IInternetProtocolVtbl *lpInternetProtocolVtbl;
|
const IInternetProtocolVtbl *lpInternetProtocolVtbl;
|
||||||
const IInternetPriorityVtbl *lpInternetPriorityVtbl;
|
const IInternetPriorityVtbl *lpInternetPriorityVtbl;
|
||||||
|
|
||||||
|
BOOL https;
|
||||||
DWORD flags, grfBINDF;
|
DWORD flags, grfBINDF;
|
||||||
BINDINFO bind_info;
|
BINDINFO bind_info;
|
||||||
IInternetProtocolSink *protocol_sink;
|
IInternetProtocolSink *protocol_sink;
|
||||||
|
@ -309,7 +310,8 @@ static HRESULT WINAPI HttpProtocol_Start(IInternetProtocol *iface, LPCWSTR szUrl
|
||||||
LPOLESTR user_agent = NULL, accept_mimes[257];
|
LPOLESTR user_agent = NULL, accept_mimes[257];
|
||||||
HRESULT hres;
|
HRESULT hres;
|
||||||
|
|
||||||
static const WCHAR wszHttp[] = {'h','t','t','p',':'};
|
static const WCHAR httpW[] = {'h','t','t','p',':'};
|
||||||
|
static const WCHAR httpsW[] = {'h','t','t','p','s',':'};
|
||||||
static const WCHAR wszBindVerb[BINDVERB_CUSTOM][5] =
|
static const WCHAR wszBindVerb[BINDVERB_CUSTOM][5] =
|
||||||
{{'G','E','T',0},
|
{{'G','E','T',0},
|
||||||
{'P','O','S','T',0},
|
{'P','O','S','T',0},
|
||||||
|
@ -330,8 +332,9 @@ static HRESULT WINAPI HttpProtocol_Start(IInternetProtocol *iface, LPCWSTR szUrl
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (strlenW(szUrl) < sizeof(wszHttp)/sizeof(WCHAR)
|
if(This->https
|
||||||
|| memcmp(szUrl, wszHttp, sizeof(wszHttp)))
|
? strncmpW(szUrl, httpsW, sizeof(httpsW)/sizeof(WCHAR))
|
||||||
|
: strncmpW(szUrl, httpW, sizeof(httpW)/sizeof(WCHAR)))
|
||||||
{
|
{
|
||||||
hres = MK_E_SYNTAX;
|
hres = MK_E_SYNTAX;
|
||||||
goto done;
|
goto done;
|
||||||
|
@ -351,7 +354,7 @@ static HRESULT WINAPI HttpProtocol_Start(IInternetProtocol *iface, LPCWSTR szUrl
|
||||||
user = strndupW(url.lpszUserName, url.dwUserNameLength);
|
user = strndupW(url.lpszUserName, url.dwUserNameLength);
|
||||||
pass = strndupW(url.lpszPassword, url.dwPasswordLength);
|
pass = strndupW(url.lpszPassword, url.dwPasswordLength);
|
||||||
if (!url.nPort)
|
if (!url.nPort)
|
||||||
url.nPort = INTERNET_DEFAULT_HTTP_PORT;
|
url.nPort = This->https ? INTERNET_DEFAULT_HTTPS_PORT : INTERNET_DEFAULT_HTTP_PORT;
|
||||||
|
|
||||||
if(!(This->grfBINDF & BINDF_FROMURLMON))
|
if(!(This->grfBINDF & BINDF_FROMURLMON))
|
||||||
IInternetProtocolSink_ReportProgress(This->protocol_sink, BINDSTATUS_DIRECTBIND, NULL);
|
IInternetProtocolSink_ReportProgress(This->protocol_sink, BINDSTATUS_DIRECTBIND, NULL);
|
||||||
|
@ -397,7 +400,9 @@ static HRESULT WINAPI HttpProtocol_Start(IInternetProtocol *iface, LPCWSTR szUrl
|
||||||
InternetSetStatusCallbackW(This->internet, HTTPPROTOCOL_InternetStatusCallback);
|
InternetSetStatusCallbackW(This->internet, HTTPPROTOCOL_InternetStatusCallback);
|
||||||
|
|
||||||
This->connect = InternetConnectW(This->internet, host, url.nPort, user,
|
This->connect = InternetConnectW(This->internet, host, url.nPort, user,
|
||||||
pass, INTERNET_SERVICE_HTTP, 0, (DWORD_PTR)This);
|
pass, INTERNET_SERVICE_HTTP,
|
||||||
|
This->https ? INTERNET_FLAG_SECURE : 0,
|
||||||
|
(DWORD_PTR)This);
|
||||||
if (!This->connect)
|
if (!This->connect)
|
||||||
{
|
{
|
||||||
WARN("InternetConnect failed: %d\n", GetLastError());
|
WARN("InternetConnect failed: %d\n", GetLastError());
|
||||||
|
@ -421,6 +426,8 @@ static HRESULT WINAPI HttpProtocol_Start(IInternetProtocol *iface, LPCWSTR szUrl
|
||||||
request_flags |= INTERNET_FLAG_NO_CACHE_WRITE;
|
request_flags |= INTERNET_FLAG_NO_CACHE_WRITE;
|
||||||
if (This->grfBINDF & BINDF_NEEDFILE)
|
if (This->grfBINDF & BINDF_NEEDFILE)
|
||||||
request_flags |= INTERNET_FLAG_NEED_FILE;
|
request_flags |= INTERNET_FLAG_NEED_FILE;
|
||||||
|
if (This->https)
|
||||||
|
request_flags |= INTERNET_FLAG_SECURE;
|
||||||
This->request = HttpOpenRequestW(This->connect, This->bind_info.dwBindVerb < BINDVERB_CUSTOM ?
|
This->request = HttpOpenRequestW(This->connect, This->bind_info.dwBindVerb < BINDVERB_CUSTOM ?
|
||||||
wszBindVerb[This->bind_info.dwBindVerb] :
|
wszBindVerb[This->bind_info.dwBindVerb] :
|
||||||
This->bind_info.szCustomVerb,
|
This->bind_info.szCustomVerb,
|
||||||
|
@ -618,6 +625,9 @@ static HRESULT WINAPI HttpProtocol_Continue(IInternetProtocol *iface, PROTOCOLDA
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(This->https)
|
||||||
|
IInternetProtocolSink_ReportProgress(This->protocol_sink, BINDSTATUS_ACCEPTRANGES, NULL);
|
||||||
|
|
||||||
len = 0;
|
len = 0;
|
||||||
if ((!HttpQueryInfoW(This->request, HTTP_QUERY_CONTENT_TYPE, content_type, &len, NULL) &&
|
if ((!HttpQueryInfoW(This->request, HTTP_QUERY_CONTENT_TYPE, content_type, &len, NULL) &&
|
||||||
GetLastError() != ERROR_INSUFFICIENT_BUFFER) ||
|
GetLastError() != ERROR_INSUFFICIENT_BUFFER) ||
|
||||||
|
@ -923,36 +933,36 @@ static const IInternetProtocolVtbl HttpProtocolVtbl = {
|
||||||
HttpProtocol_UnlockRequest
|
HttpProtocol_UnlockRequest
|
||||||
};
|
};
|
||||||
|
|
||||||
HRESULT HttpProtocol_Construct(IUnknown *pUnkOuter, LPVOID *ppobj)
|
HRESULT create_http_protocol(BOOL https, void **ppobj)
|
||||||
{
|
{
|
||||||
HttpProtocol *ret;
|
HttpProtocol *ret;
|
||||||
|
|
||||||
TRACE("(%p %p)\n", pUnkOuter, ppobj);
|
ret = heap_alloc_zero(sizeof(HttpProtocol));
|
||||||
|
if(!ret)
|
||||||
URLMON_LockModule();
|
return E_OUTOFMEMORY;
|
||||||
|
|
||||||
ret = heap_alloc(sizeof(HttpProtocol));
|
|
||||||
|
|
||||||
ret->lpInternetProtocolVtbl = &HttpProtocolVtbl;
|
ret->lpInternetProtocolVtbl = &HttpProtocolVtbl;
|
||||||
ret->lpInternetPriorityVtbl = &HttpPriorityVtbl;
|
ret->lpInternetPriorityVtbl = &HttpPriorityVtbl;
|
||||||
ret->flags = ret->grfBINDF = 0;
|
|
||||||
memset(&ret->bind_info, 0, sizeof(ret->bind_info));
|
ret->https = https;
|
||||||
ret->protocol_sink = 0;
|
|
||||||
ret->http_negotiate = 0;
|
|
||||||
ret->internet = ret->connect = ret->request = 0;
|
|
||||||
ret->full_header = 0;
|
|
||||||
ret->lock = 0;
|
|
||||||
ret->current_position = ret->content_length = ret->available_bytes = 0;
|
|
||||||
ret->priority = 0;
|
|
||||||
ret->ref = 1;
|
ret->ref = 1;
|
||||||
|
|
||||||
*ppobj = PROTOCOL(ret);
|
*ppobj = PROTOCOL(ret);
|
||||||
|
|
||||||
|
URLMON_LockModule();
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HRESULT HttpProtocol_Construct(IUnknown *pUnkOuter, LPVOID *ppobj)
|
||||||
|
{
|
||||||
|
TRACE("(%p %p)\n", pUnkOuter, ppobj);
|
||||||
|
|
||||||
|
return create_http_protocol(FALSE, ppobj);
|
||||||
|
}
|
||||||
|
|
||||||
HRESULT HttpSProtocol_Construct(IUnknown *pUnkOuter, LPVOID *ppobj)
|
HRESULT HttpSProtocol_Construct(IUnknown *pUnkOuter, LPVOID *ppobj)
|
||||||
{
|
{
|
||||||
FIXME("(%p %p)\n", pUnkOuter, ppobj);
|
TRACE("(%p %p)\n", pUnkOuter, ppobj);
|
||||||
return E_NOINTERFACE;
|
|
||||||
|
return create_http_protocol(TRUE, ppobj);
|
||||||
}
|
}
|
||||||
|
|
|
@ -532,7 +532,6 @@ static HRESULT URLMonikerImpl_BindToStorage_hack(LPCWSTR URLName, IBindCtx* pbc,
|
||||||
if(SUCCEEDED(hres)) {
|
if(SUCCEEDED(hres)) {
|
||||||
URL_COMPONENTSW url;
|
URL_COMPONENTSW url;
|
||||||
WCHAR *host, *path, *user, *pass;
|
WCHAR *host, *path, *user, *pass;
|
||||||
DWORD lensz = sizeof(bind->expected_size);
|
|
||||||
DWORD dwService = 0;
|
DWORD dwService = 0;
|
||||||
BOOL bSuccess;
|
BOOL bSuccess;
|
||||||
|
|
||||||
|
@ -597,12 +596,6 @@ static HRESULT URLMonikerImpl_BindToStorage_hack(LPCWSTR URLName, IBindCtx* pbc,
|
||||||
url.nPort = INTERNET_DEFAULT_GOPHER_PORT;
|
url.nPort = INTERNET_DEFAULT_GOPHER_PORT;
|
||||||
dwService = INTERNET_SERVICE_GOPHER;
|
dwService = INTERNET_SERVICE_GOPHER;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case INTERNET_SCHEME_HTTPS:
|
|
||||||
if (!url.nPort)
|
|
||||||
url.nPort = INTERNET_DEFAULT_HTTPS_PORT;
|
|
||||||
dwService = INTERNET_SERVICE_HTTP;
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bind->hconnect = InternetConnectW(bind->hinternet, host, url.nPort, user, pass,
|
bind->hconnect = InternetConnectW(bind->hinternet, host, url.nPort, user, pass,
|
||||||
|
@ -648,28 +641,6 @@ static HRESULT URLMonikerImpl_BindToStorage_hack(LPCWSTR URLName, IBindCtx* pbc,
|
||||||
else
|
else
|
||||||
hres = HRESULT_FROM_WIN32(GetLastError());
|
hres = HRESULT_FROM_WIN32(GetLastError());
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case INTERNET_SERVICE_HTTP:
|
|
||||||
bind->hrequest = HttpOpenRequestW(bind->hconnect, NULL, path, NULL, NULL, NULL, 0, (DWORD_PTR)bind);
|
|
||||||
if (!bind->hrequest)
|
|
||||||
{
|
|
||||||
hres = HRESULT_FROM_WIN32(GetLastError());
|
|
||||||
}
|
|
||||||
else if (!HttpSendRequestW(bind->hrequest, NULL, 0, NULL, 0))
|
|
||||||
{
|
|
||||||
hres = HRESULT_FROM_WIN32(GetLastError());
|
|
||||||
InternetCloseHandle(bind->hrequest);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
HttpQueryInfoW(bind->hrequest,
|
|
||||||
HTTP_QUERY_CONTENT_LENGTH | HTTP_QUERY_FLAG_NUMBER,
|
|
||||||
&bind->expected_size,
|
|
||||||
&lensz,
|
|
||||||
NULL);
|
|
||||||
bSuccess = TRUE;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
if(bSuccess)
|
if(bSuccess)
|
||||||
{
|
{
|
||||||
|
@ -734,8 +705,7 @@ static HRESULT WINAPI URLMonikerImpl_BindToStorage(IMoniker* iface,
|
||||||
}
|
}
|
||||||
|
|
||||||
if(IsEqualGUID(&IID_IStream, riid) &&
|
if(IsEqualGUID(&IID_IStream, riid) &&
|
||||||
( url.nScheme == INTERNET_SCHEME_HTTPS
|
( url.nScheme == INTERNET_SCHEME_FTP
|
||||||
|| url.nScheme == INTERNET_SCHEME_FTP
|
|
||||||
|| url.nScheme == INTERNET_SCHEME_GOPHER))
|
|| url.nScheme == INTERNET_SCHEME_GOPHER))
|
||||||
return URLMonikerImpl_BindToStorage_hack(This->URLName, pbc, ppvObject);
|
return URLMonikerImpl_BindToStorage_hack(This->URLName, pbc, ppvObject);
|
||||||
|
|
||||||
|
@ -1281,6 +1251,17 @@ HRESULT WINAPI URLDownloadToCacheFileW(LPUNKNOWN lpUnkCaller, LPCWSTR szURL, LPW
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* HlinkSimpleNavigateToMoniker (URLMON.@)
|
||||||
|
*/
|
||||||
|
HRESULT WINAPI HlinkSimpleNavigateToMoniker(IMoniker *pmkTarget,
|
||||||
|
LPCWSTR szLocation, LPCWSTR szTargetFrameName, IUnknown *pUnk,
|
||||||
|
IBindCtx *pbc, IBindStatusCallback *pbsc, DWORD grfHLNF, DWORD dwReserved)
|
||||||
|
{
|
||||||
|
FIXME("stub\n");
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* HlinkSimpleNavigateToString (URLMON.@)
|
* HlinkSimpleNavigateToString (URLMON.@)
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -48,7 +48,7 @@
|
||||||
@ stub HlinkGoForward
|
@ stub HlinkGoForward
|
||||||
@ stub HlinkNavigateMoniker
|
@ stub HlinkNavigateMoniker
|
||||||
@ stdcall HlinkNavigateString(ptr wstr)
|
@ stdcall HlinkNavigateString(ptr wstr)
|
||||||
@ stub HlinkSimpleNavigateToMoniker
|
@ stdcall HlinkSimpleNavigateToMoniker(ptr wstr wstr ptr ptr ptr long long)
|
||||||
@ stdcall HlinkSimpleNavigateToString(wstr wstr wstr ptr ptr ptr long long)
|
@ stdcall HlinkSimpleNavigateToString(wstr wstr wstr ptr ptr ptr long long)
|
||||||
@ stdcall IsAsyncMoniker(ptr)
|
@ stdcall IsAsyncMoniker(ptr)
|
||||||
@ stdcall IsLoggingEnabledA(str)
|
@ stdcall IsLoggingEnabledA(str)
|
||||||
|
|
Loading…
Reference in a new issue