shdocvw: Call try_application_url after BindToObject failure.

This commit is contained in:
Jacek Caban 2008-01-03 16:41:31 +01:00 committed by Alexandre Julliard
parent b5f387997c
commit f427951d04
1 changed files with 3 additions and 11 deletions

View File

@ -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);