Jacek Caban : mshtml: Added nsIURI::GetPrePath implementation.
Alexandre Julliard
julliard at wine.codeweavers.com
Thu Nov 20 09:54:15 CST 2014
Module: wine
Branch: master
Commit: 9a68ef40dd25394dcf396342b8d7ea5a26d9378a
URL: http://source.winehq.org/git/wine.git/?a=commit;h=9a68ef40dd25394dcf396342b8d7ea5a26d9378a
Author: Jacek Caban <jacek at codeweavers.com>
Date: Thu Nov 20 14:45:35 2014 +0100
mshtml: Added nsIURI::GetPrePath implementation.
---
dlls/mshtml/nsio.c | 38 ++++++++++++++++++++++++++++++++++++--
1 file changed, 36 insertions(+), 2 deletions(-)
diff --git a/dlls/mshtml/nsio.c b/dlls/mshtml/nsio.c
index c016914..d8e1712 100644
--- a/dlls/mshtml/nsio.c
+++ b/dlls/mshtml/nsio.c
@@ -2076,8 +2076,42 @@ static nsresult NSAPI nsURI_SetSpec(nsIFileURL *iface, const nsACString *aSpec)
static nsresult NSAPI nsURI_GetPrePath(nsIFileURL *iface, nsACString *aPrePath)
{
nsWineURI *This = impl_from_nsIFileURL(iface);
- FIXME("(%p)->(%p)\n", This, aPrePath);
- return NS_ERROR_NOT_IMPLEMENTED;
+ IUriBuilder *uri_builder;
+ BSTR display_uri;
+ IUri *uri;
+ int len;
+ nsresult nsres;
+ HRESULT hres;
+
+ TRACE("(%p)->(%p)\n", This, aPrePath);
+
+ if(!ensure_uri(This))
+ return NS_ERROR_UNEXPECTED;
+
+ hres = CreateIUriBuilder(This->uri, 0, 0, &uri_builder);
+ if(FAILED(hres))
+ return NS_ERROR_FAILURE;
+
+ hres = IUriBuilder_RemoveProperties(uri_builder, Uri_HAS_PATH|Uri_HAS_QUERY|Uri_HAS_FRAGMENT);
+ if(SUCCEEDED(hres))
+ hres = IUriBuilder_CreateUriSimple(uri_builder, 0, 0, &uri);
+ IUriBuilder_Release(uri_builder);
+ if(FAILED(hres))
+ return NS_ERROR_FAILURE;
+
+ hres = IUri_GetDisplayUri(uri, &display_uri);
+ IUri_Release(uri);
+ if(FAILED(hres))
+ return NS_ERROR_FAILURE;
+
+ /* Remove trailing slash that may be appended as default path. */
+ len = SysStringLen(display_uri);
+ if(len && display_uri[len-1] == '/')
+ display_uri[len-1] = 0;
+
+ nsres = return_wstr_nsacstr(aPrePath, display_uri, -1);
+ SysFreeString(display_uri);
+ return nsres;
}
static nsresult NSAPI nsURI_GetScheme(nsIFileURL *iface, nsACString *aScheme)
More information about the wine-cvs
mailing list