From f427951d0415e700428ff5cbd53bd0c5f7f5be4a Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Thu, 3 Jan 2008 16:41:31 +0100 Subject: [PATCH] shdocvw: Call try_application_url after BindToObject failure. --- dlls/shdocvw/navigate.c | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/dlls/shdocvw/navigate.c b/dlls/shdocvw/navigate.c index da45694a5de..c8bfe2eba4a 100644 --- a/dlls/shdocvw/navigate.c +++ b/dlls/shdocvw/navigate.c @@ -461,6 +461,7 @@ static void on_before_navigate2(DocHost *This, LPCWSTR url, const BYTE *post_dat SafeArrayDestroy(V_ARRAY(&var_post_data)); } +/* FIXME: urlmon should handle it */ static BOOL try_application_url(LPCWSTR url) { SHELLEXECUTEINFOW exec_info; @@ -564,6 +565,8 @@ static HRESULT bind_to_object(DocHost *This, IMoniker *mon, LPCWSTR url, IBindCt hres = S_OK; if(unk) IUnknown_Release(unk); + }else if(try_application_url(This->url)) { + hres = S_OK; }else { FIXME("BindToObject failed: %08x\n", hres); } @@ -666,7 +669,6 @@ static HRESULT navigate_hlink(DocHost *This, IMoniker *mon, IBindCtx *bindctx, IBindStatusCallback *callback) { IHttpNegotiate *http_negotiate; - LPWSTR url = NULL; PBYTE post_data = NULL; ULONG post_data_len = 0; LPWSTR headers = NULL; @@ -674,9 +676,6 @@ static HRESULT navigate_hlink(DocHost *This, IMoniker *mon, IBindCtx *bindctx, DWORD bindf = 0; HRESULT hres; - IMoniker_GetDisplayName(mon, NULL, NULL, &url); - TRACE("navigating to %s\n", debugstr_w(url)); - hres = IBindStatusCallback_QueryInterface(callback, &IID_IHttpNegotiate, (void**)&http_negotiate); if(SUCCEEDED(hres)) { @@ -698,15 +697,8 @@ static HRESULT navigate_hlink(DocHost *This, IMoniker *mon, IBindCtx *bindctx, 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); - CoTaskMemFree(url); CoTaskMemFree(headers); ReleaseBindInfo(&bindinfo);