diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index ee92806f0f5..7d4d00ac619 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -468,6 +468,7 @@ typedef struct { nsISupports *owner; nsLoadFlags load_flags; nsIURI *original_uri; + nsIURI *referrer; char *content_type; char *charset; PRUint32 response_status; diff --git a/dlls/mshtml/nsio.c b/dlls/mshtml/nsio.c index d288a6b6900..46988f667a9 100644 --- a/dlls/mshtml/nsio.c +++ b/dlls/mshtml/nsio.c @@ -491,6 +491,8 @@ static nsrefcnt NSAPI nsChannel_Release(nsIHttpChannel *iface) nsIInterfaceRequestor_Release(This->notif_callback); if(This->original_uri) nsIURI_Release(This->original_uri); + if(This->referrer) + nsIURI_Release(This->referrer); free_http_headers(&This->response_headers); free_http_headers(&This->request_headers); @@ -1072,17 +1074,25 @@ static nsresult NSAPI nsChannel_GetReferrer(nsIHttpChannel *iface, nsIURI **aRef { nsChannel *This = NSCHANNEL_THIS(iface); - FIXME("(%p)->(%p)\n", This, aReferrer); + TRACE("(%p)->(%p)\n", This, aReferrer); - return NS_ERROR_NOT_IMPLEMENTED; + if(This->referrer) + nsIURI_AddRef(This->referrer); + *aReferrer = This->referrer; + return NS_OK; } static nsresult NSAPI nsChannel_SetReferrer(nsIHttpChannel *iface, nsIURI *aReferrer) { nsChannel *This = NSCHANNEL_THIS(iface); - FIXME("(%p)->(%p)\n", This, aReferrer); + TRACE("(%p)->(%p)\n", This, aReferrer); + if(aReferrer) + nsIURI_AddRef(aReferrer); + if(This->referrer) + nsIURI_Release(This->referrer); + This->referrer = aReferrer; return NS_OK; }