Jacek Caban : mshtml: Set nsURI's moniker in NewURI.
Alexandre Julliard
julliard at wine.codeweavers.com
Wed Aug 9 10:37:28 CDT 2006
Module: wine
Branch: refs/heads/master
Commit: f1757623407963e86eb48b0544efbae399d67a5a
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=f1757623407963e86eb48b0544efbae399d67a5a
Author: Jacek Caban <jacek at codeweavers.com>
Date: Wed Aug 9 16:42:37 2006 +0200
mshtml: Set nsURI's moniker in NewURI.
---
dlls/mshtml/nsio.c | 22 ++++++++++++++++++++++
1 files changed, 22 insertions(+), 0 deletions(-)
diff --git a/dlls/mshtml/nsio.c b/dlls/mshtml/nsio.c
index abd2e48..cf689b7 100644
--- a/dlls/mshtml/nsio.c
+++ b/dlls/mshtml/nsio.c
@@ -1608,6 +1608,7 @@ static nsresult NSAPI nsIOService_NewURI
NSContainer *nscontainer = NULL;
nsIURI *uri = NULL;
PRBool is_javascript = FALSE;
+ IMoniker *base_mon = NULL;
nsresult nsres;
nsACString_GetData(aSpec, &spec, NULL);
@@ -1651,6 +1652,7 @@ static nsresult NSAPI nsIOService_NewURI
nsres = nsIURI_QueryInterface(aBaseURI, &IID_nsIWineURI, (void**)&wine_uri);
if(NS_SUCCEEDED(nsres)) {
nsIWineURI_GetNSContainer(wine_uri, &nscontainer);
+ nsIWineURI_GetMoniker(wine_uri, &base_mon);
nsIWineURI_Release(wine_uri);
}else {
ERR("Could not get nsIWineURI: %08lx\n", nsres);
@@ -1662,6 +1664,26 @@ static nsresult NSAPI nsIOService_NewURI
if(nscontainer)
nsIWebBrowserChrome_Release(NSWBCHROME(nscontainer));
+ if(base_mon) {
+ LPWSTR url;
+ IMoniker *mon;
+ DWORD len;
+ HRESULT hres;
+
+ len = MultiByteToWideChar(CP_ACP, 0, spec, -1, NULL, 0);
+ url = HeapAlloc(GetProcessHeap(), 0, len*sizeof(WCHAR));
+ MultiByteToWideChar(CP_ACP, 0, spec, -1, url, -1);
+
+ hres = CreateURLMoniker(base_mon, url, &mon);
+ HeapFree(GetProcessHeap(), 0, url);
+ if(SUCCEEDED(hres)) {
+ nsIWineURI_SetMoniker((nsIWineURI*)*_retval, mon);
+ IMoniker_Release(mon);
+ }else {
+ WARN("CreateURLMoniker failed: %08lx\n", hres);
+ }
+ }
+
return nsres;
}
More information about the wine-cvs
mailing list