mshtml: Move TranslateUrl call to before_async_open.

Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Jacek Caban 2019-03-08 13:48:53 +01:00 committed by Alexandre Julliard
parent 73cca44bf4
commit 24603b011a
1 changed files with 15 additions and 34 deletions

View File

@ -252,6 +252,20 @@ static nsresult before_async_open(nsChannel *channel, NSContainer *container, BO
if(FAILED(hres))
return NS_ERROR_FAILURE;
if(doc->hostui) {
OLECHAR *new_url;
hres = IDocHostUIHandler_TranslateUrl(doc->hostui, 0, display_uri, &new_url);
if(hres == S_OK && new_url) {
if(strcmpW(display_uri, new_url)) {
FIXME("TranslateUrl returned new URL %s -> %s\n", debugstr_w(display_uri), debugstr_w(new_url));
CoTaskMemFree(new_url);
*cancel = TRUE;
return NS_OK;
}
CoTaskMemFree(new_url);
}
}
if(!exec_shldocvw_67(doc, display_uri)) {
SysFreeString(display_uri);
*cancel = FALSE;
@ -3859,33 +3873,6 @@ static const nsIIOServiceHookVtbl nsIOServiceHookVtbl = {
static nsIIOServiceHook nsIOServiceHook = { &nsIOServiceHookVtbl };
static BOOL translate_url(HTMLDocumentObj *doc, nsWineURI *uri)
{
OLECHAR *new_url = NULL;
WCHAR *url;
BOOL ret = FALSE;
HRESULT hres;
if(!doc->hostui || !ensure_uri(uri))
return FALSE;
hres = IUri_GetDisplayUri(uri->uri, &url);
if(FAILED(hres))
return FALSE;
hres = IDocHostUIHandler_TranslateUrl(doc->hostui, 0, url, &new_url);
if(hres == S_OK && new_url) {
if(strcmpW(url, new_url)) {
FIXME("TranslateUrl returned new URL %s -> %s\n", debugstr_w(url), debugstr_w(new_url));
ret = TRUE;
}
CoTaskMemFree(new_url);
}
SysFreeString(url);
return ret;
}
nsresult on_start_uri_open(NSContainer *nscontainer, nsIURI *uri, cpp_bool *_retval)
{
nsWineURI *wine_uri;
@ -3899,13 +3886,7 @@ nsresult on_start_uri_open(NSContainer *nscontainer, nsIURI *uri, cpp_bool *_ret
return NS_ERROR_NOT_IMPLEMENTED;
}
if(!wine_uri->is_doc_uri) {
wine_uri->is_doc_uri = TRUE;
if(nscontainer->doc)
*_retval = translate_url(nscontainer->doc, wine_uri);
}
wine_uri->is_doc_uri = TRUE;
nsIFileURL_Release(&wine_uri->nsIFileURL_iface);
return NS_OK;
}