Commit 9b6c08a2 authored by Jacek Caban's avatar Jacek Caban Committed by Alexandre Julliard

mshtml: Added nsIURI::Clone implementation.

parent 71b881e4
......@@ -40,7 +40,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
#define NS_IOSERVICE_CLASSNAME "nsIOService"
#define NS_IOSERVICE_CONTRACTID "@mozilla.org/network/io-service;1"
static IID NS_IOSERVICE_CID =
static const IID NS_IOSERVICE_CID =
{0x9ac9e770, 0x18bc, 0x11d3, {0x93, 0x37, 0x00, 0x10, 0x4b, 0xa0, 0xfd, 0x40}};
static nsIIOService *nsio = NULL;
......@@ -75,6 +75,8 @@ typedef struct {
#define NSUPCHANNEL(x) ((nsIUploadChannel*) &(x)->lpUploadChannelVtbl)
#define NSURI(x) ((nsIURI*) &(x)->lpWineURIVtbl)
static nsresult create_uri(nsIURI*,NSContainer*,nsIURI**);
static BOOL exec_shldocvw_67(NSContainer *container, LPCWSTR url)
{
IOleCommandTarget *cmdtrg = NULL;
......@@ -1180,8 +1182,18 @@ static nsresult NSAPI nsURI_SchemeIs(nsIWineURI *iface, const char *scheme, PRBo
static nsresult NSAPI nsURI_Clone(nsIWineURI *iface, nsIURI **_retval)
{
nsURI *This = NSURI_THIS(iface);
nsIURI *uri;
nsresult nsres;
TRACE("(%p)->(%p)\n", This, _retval);
return nsIURI_Clone(This->uri, _retval);
nsres = nsIURI_Clone(This->uri, &uri);
if(NS_FAILED(nsres)) {
WARN("Clone failed: %08lx\n", nsres);
return nsres;
}
return create_uri(uri, This->container, _retval);
}
static nsresult NSAPI nsURI_Resolve(nsIWineURI *iface, const nsACString *arelativePath,
......@@ -1280,6 +1292,23 @@ static const nsIWineURIVtbl nsWineURIVtbl = {
nsURI_SetNSContainer,
};
static nsresult create_uri(nsIURI *uri, NSContainer *container, nsIURI **_retval)
{
nsURI *ret = HeapAlloc(GetProcessHeap(), 0, sizeof(nsURI));
ret->lpWineURIVtbl = &nsWineURIVtbl;
ret->ref = 1;
ret->uri = uri;
ret->container = container;
if(container)
nsIWebBrowserChrome_AddRef(NSWBCHROME(container));
TRACE("retval=%p\n", ret);
*_retval = NSURI(ret);
return NS_OK;
}
static nsresult NSAPI nsIOService_QueryInterface(nsIIOService *iface, nsIIDRef riid,
nsQIResult result)
{
......@@ -1331,7 +1360,6 @@ static nsresult NSAPI nsIOService_NewURI(nsIIOService *iface, const nsACString *
{
const char *spec = NULL;
nsIURI *uri;
nsURI *ret;
PRBool is_javascript = FALSE;
nsresult nsres;
......@@ -1368,16 +1396,7 @@ static nsresult NSAPI nsIOService_NewURI(nsIIOService *iface, const nsACString *
return NS_OK;
}
ret = HeapAlloc(GetProcessHeap(), 0, sizeof(nsURI));
ret->lpWineURIVtbl = &nsWineURIVtbl;
ret->ref = 1;
ret->uri = uri;
ret->container = NULL;
TRACE("_retval = %p\n", ret);
*_retval = NSURI(ret);
return NS_OK;
return create_uri(uri, NULL, _retval);
}
static nsresult NSAPI nsIOService_NewFileURI(nsIIOService *iface, nsIFile *aFile,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment