From 25a40601faec93e314ff4c12ce9002d21a635d4d Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Sat, 25 Jun 2011 19:03:38 +0200 Subject: [PATCH] mshtml: Get rid of wine_url in nsWineURI object. --- dlls/mshtml/nsio.c | 85 +++++++--------------------------------------- 1 file changed, 13 insertions(+), 72 deletions(-) diff --git a/dlls/mshtml/nsio.c b/dlls/mshtml/nsio.c index 322252215e4..c87f8e2bd6a 100644 --- a/dlls/mshtml/nsio.c +++ b/dlls/mshtml/nsio.c @@ -19,6 +19,7 @@ #include "config.h" #include +#include #define COBJMACROS @@ -63,7 +64,6 @@ struct nsWineURI { NSContainer *container; windowref_t *window_ref; nsChannelBSC *channel_bsc; - BSTR wine_url; IUri *uri; IUriBuilder *uri_builder; BOOL is_doc_uri; @@ -73,23 +73,14 @@ static BOOL ensure_uri(nsWineURI *This) { HRESULT hres; - if(This->uri) - return TRUE; + assert(This->uri || This->uri_builder); - if(This->uri_builder) { + if(!This->uri) { hres = IUriBuilder_CreateUriSimple(This->uri_builder, 0, 0, &This->uri); if(FAILED(hres)) { WARN("CreateUriSimple failed: %08x\n", hres); return FALSE; } - - return TRUE; - } - - hres = CreateUri(This->wine_url, 0, 0, &This->uri); - if(FAILED(hres)) { - WARN("CreateUri failed: %08x\n", hres); - return FALSE; } return TRUE; @@ -155,6 +146,7 @@ static BOOL exec_shldocvw_67(HTMLDocumentObj *doc, BSTR url) static nsresult before_async_open(nsChannel *channel, NSContainer *container, BOOL *cancel) { HTMLDocumentObj *doc = container->doc; + BSTR display_uri; DWORD hlnf = 0; HRESULT hres; @@ -172,23 +164,23 @@ static nsresult before_async_open(nsChannel *channel, NSContainer *container, BO return NS_OK; } + hres = IUri_GetDisplayUri(channel->uri->uri, &display_uri); + if(FAILED(hres)) + return NS_ERROR_FAILURE; + if(!hlnf) { - BSTR display_uri; BOOL b; - hres = IUri_GetDisplayUri(channel->uri->uri, &display_uri); - if(FAILED(hres)) - return NS_ERROR_FAILURE; - b = !exec_shldocvw_67(doc, display_uri); - SysFreeString(display_uri); if(b) { + SysFreeString(display_uri); *cancel = FALSE; return NS_OK; } } - hres = hlink_frame_navigate(&doc->basedoc, channel->uri->wine_url, channel, hlnf, cancel); + hres = hlink_frame_navigate(&doc->basedoc, display_uri, channel, hlnf, cancel); + SysFreeString(display_uri); if(FAILED(hres)) *cancel = TRUE; return NS_OK; @@ -230,26 +222,6 @@ HRESULT load_nsuri(HTMLWindow *window, nsWineURI *uri, nsChannelBSC *channelbsc, return S_OK; } -static HRESULT set_wine_url(nsWineURI *This, LPCWSTR url) -{ - TRACE("(%p)->(%s)\n", This, debugstr_w(url)); - - if(url) { - BSTR new_url; - - new_url = SysAllocString(url); - if(!new_url) - return E_OUTOFMEMORY; - SysFreeString(This->wine_url); - This->wine_url = new_url; - }else { - heap_free(This->wine_url); - This->wine_url = NULL; - } - - return S_OK; -} - static void set_uri_nscontainer(nsWineURI *This, NSContainer *nscontainer) { if(This->container) { @@ -966,7 +938,7 @@ static nsresult NSAPI nsChannel_AsyncOpen(nsIHttpChannel *iface, nsIStreamListen BOOL cancel = FALSE; nsresult nsres = NS_OK; - TRACE("(%p)->(%p %p) opening %s\n", This, aListener, aContext, debugstr_w(This->uri->wine_url)); + TRACE("(%p)->(%p %p)\n", This, aListener, aContext); if(!ensure_uri(This->uri)) return NS_ERROR_FAILURE; @@ -1574,23 +1546,6 @@ static BOOL ensure_uri_builder(nsWineURI *This) return TRUE; } -/* Temporary helper */ -static void sync_wine_url(nsWineURI *This) -{ - BSTR new_url; - HRESULT hres; - - if(!ensure_uri(This)) - return; - - hres = IUri_GetDisplayUri(This->uri, &new_url); - if(FAILED(hres)) - return; - - SysFreeString(This->wine_url); - This->wine_url = new_url; -} - static nsresult get_uri_string(nsWineURI *This, Uri_PROPERTY prop, nsACString *ret) { char *vala; @@ -1679,7 +1634,6 @@ static nsrefcnt NSAPI nsURI_Release(nsIURL *iface) nsIURI_Release(This->nsuri); if(This->uri) IUri_Release(This->uri); - SysFreeString(This->wine_url); heap_free(This); } @@ -1724,7 +1678,6 @@ static nsresult NSAPI nsURI_SetSpec(nsIURL *iface, const nsACString *aSpec) } This->uri = uri; - sync_wine_url(This); return NS_OK; } @@ -1788,7 +1741,6 @@ static nsresult NSAPI nsURI_SetScheme(nsIURL *iface, const nsACString *aScheme) if(FAILED(hres)) return NS_ERROR_UNEXPECTED; - sync_wine_url(This); return NS_OK; } @@ -1850,7 +1802,6 @@ static nsresult NSAPI nsURI_SetUsername(nsIURL *iface, const nsACString *aUserna if(FAILED(hres)) return NS_ERROR_UNEXPECTED; - sync_wine_url(This); return NS_OK; } @@ -1885,7 +1836,6 @@ static nsresult NSAPI nsURI_SetPassword(nsIURL *iface, const nsACString *aPasswo if(FAILED(hres)) return NS_ERROR_UNEXPECTED; - sync_wine_url(This); return NS_OK; } @@ -1964,7 +1914,6 @@ static nsresult NSAPI nsURI_SetHost(nsIURL *iface, const nsACString *aHost) if(FAILED(hres)) return NS_ERROR_UNEXPECTED; - sync_wine_url(This); return NS_OK; } @@ -2038,7 +1987,6 @@ static nsresult NSAPI nsURI_SetPath(nsIURL *iface, const nsACString *aPath) if(FAILED(hres)) return NS_ERROR_UNEXPECTED; - sync_wine_url(This); return NS_OK; } @@ -2117,8 +2065,6 @@ static nsresult NSAPI nsURI_Clone(nsIURL *iface, nsIURI **_retval) return nsres; } - sync_wine_url(wine_uri); - *_retval = (nsIURI*)&wine_uri->nsIURL_iface; return NS_OK; } @@ -2274,7 +2220,6 @@ static nsresult NSAPI nsURL_SetQuery(nsIURL *iface, const nsACString *aQuery) if(FAILED(hres)) return NS_ERROR_UNEXPECTED; - sync_wine_url(This); return NS_OK; } @@ -2326,7 +2271,6 @@ static nsresult NSAPI nsURL_SetRef(nsIURL *iface, const nsACString *aRef) if(FAILED(hres)) return NS_ERROR_UNEXPECTED; - sync_wine_url(This); return NS_OK; } @@ -2551,7 +2495,6 @@ HRESULT create_doc_uri(HTMLWindow *window, WCHAR *url, nsWineURI **ret) if(NS_FAILED(nsres)) return E_FAIL; - set_wine_url(uri, url); uri->is_doc_uri = TRUE; *ret = uri; @@ -2609,7 +2552,6 @@ HRESULT create_redirect_nschannel(const WCHAR *url, nsChannel *orig_channel, nsC if(NS_FAILED(nsres)) return E_FAIL; - sync_wine_url(uri); nsres = create_nschannel(uri, &channel); nsIURL_Release(&uri->nsIURL_iface); if(NS_FAILED(nsres)) @@ -2935,8 +2877,7 @@ static nsresult NSAPI nsIOService_NewURI(nsIIOService *iface, const nsACString * if(NS_FAILED(nsres)) return nsres; - sync_wine_url(wine_uri); - *_retval = (nsIURI*)wine_uri; + *_retval = (nsIURI*)&wine_uri->nsIURL_iface; return nsres; }