shdocvw: Call try_application_url after BindToObject failure.
This commit is contained in:
parent
b5f387997c
commit
f427951d04
|
@ -461,6 +461,7 @@ static void on_before_navigate2(DocHost *This, LPCWSTR url, const BYTE *post_dat
|
||||||
SafeArrayDestroy(V_ARRAY(&var_post_data));
|
SafeArrayDestroy(V_ARRAY(&var_post_data));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* FIXME: urlmon should handle it */
|
||||||
static BOOL try_application_url(LPCWSTR url)
|
static BOOL try_application_url(LPCWSTR url)
|
||||||
{
|
{
|
||||||
SHELLEXECUTEINFOW exec_info;
|
SHELLEXECUTEINFOW exec_info;
|
||||||
|
@ -564,6 +565,8 @@ static HRESULT bind_to_object(DocHost *This, IMoniker *mon, LPCWSTR url, IBindCt
|
||||||
hres = S_OK;
|
hres = S_OK;
|
||||||
if(unk)
|
if(unk)
|
||||||
IUnknown_Release(unk);
|
IUnknown_Release(unk);
|
||||||
|
}else if(try_application_url(This->url)) {
|
||||||
|
hres = S_OK;
|
||||||
}else {
|
}else {
|
||||||
FIXME("BindToObject failed: %08x\n", hres);
|
FIXME("BindToObject failed: %08x\n", hres);
|
||||||
}
|
}
|
||||||
|
@ -666,7 +669,6 @@ static HRESULT navigate_hlink(DocHost *This, IMoniker *mon, IBindCtx *bindctx,
|
||||||
IBindStatusCallback *callback)
|
IBindStatusCallback *callback)
|
||||||
{
|
{
|
||||||
IHttpNegotiate *http_negotiate;
|
IHttpNegotiate *http_negotiate;
|
||||||
LPWSTR url = NULL;
|
|
||||||
PBYTE post_data = NULL;
|
PBYTE post_data = NULL;
|
||||||
ULONG post_data_len = 0;
|
ULONG post_data_len = 0;
|
||||||
LPWSTR headers = NULL;
|
LPWSTR headers = NULL;
|
||||||
|
@ -674,9 +676,6 @@ static HRESULT navigate_hlink(DocHost *This, IMoniker *mon, IBindCtx *bindctx,
|
||||||
DWORD bindf = 0;
|
DWORD bindf = 0;
|
||||||
HRESULT hres;
|
HRESULT hres;
|
||||||
|
|
||||||
IMoniker_GetDisplayName(mon, NULL, NULL, &url);
|
|
||||||
TRACE("navigating to %s\n", debugstr_w(url));
|
|
||||||
|
|
||||||
hres = IBindStatusCallback_QueryInterface(callback, &IID_IHttpNegotiate,
|
hres = IBindStatusCallback_QueryInterface(callback, &IID_IHttpNegotiate,
|
||||||
(void**)&http_negotiate);
|
(void**)&http_negotiate);
|
||||||
if(SUCCEEDED(hres)) {
|
if(SUCCEEDED(hres)) {
|
||||||
|
@ -698,15 +697,8 @@ static HRESULT navigate_hlink(DocHost *This, IMoniker *mon, IBindCtx *bindctx,
|
||||||
post_data = bindinfo.stgmedData.u.hGlobal;
|
post_data = bindinfo.stgmedData.u.hGlobal;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* FIXME: We should do it after BindToObject call */
|
|
||||||
if(try_application_url(url)) {
|
|
||||||
CoTaskMemFree(url);
|
|
||||||
return S_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
hres = navigate_mon(This, mon, post_data, post_data_len, headers);
|
hres = navigate_mon(This, mon, post_data, post_data_len, headers);
|
||||||
|
|
||||||
CoTaskMemFree(url);
|
|
||||||
CoTaskMemFree(headers);
|
CoTaskMemFree(headers);
|
||||||
ReleaseBindInfo(&bindinfo);
|
ReleaseBindInfo(&bindinfo);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue