bug #145579 (r=darin, sr=jst) send the correct referrer for images...
git-svn-id: svn://10.0.0.236/branches/MOZILLA_1_0_BRANCH@129849 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
@@ -957,12 +957,17 @@ nsHTMLImageElement::SetSrcInner(nsIURI* aBaseURL,
|
||||
|
||||
nsCOMPtr<nsIDocument> doc;
|
||||
nsCOMPtr<nsILoadGroup> loadGroup;
|
||||
nsCOMPtr<nsIURI> documentURI;
|
||||
shell->GetDocument(getter_AddRefs(doc));
|
||||
if (doc) {
|
||||
doc->GetDocumentLoadGroup(getter_AddRefs(loadGroup));
|
||||
|
||||
// Get the documment URI for the referrer.
|
||||
doc->GetDocumentURL(getter_AddRefs(documentURI));
|
||||
}
|
||||
|
||||
il->LoadImage(uri, nsnull, loadGroup, this, sup, nsIRequest::LOAD_NORMAL,
|
||||
// XXX: initialDocumentURI is NULL!
|
||||
il->LoadImage(uri, nsnull, documentURI, loadGroup, this, context, nsIRequest::LOAD_NORMAL,
|
||||
nsnull, nsnull, getter_AddRefs(mRequest));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -125,9 +125,11 @@ nsXBLResourceLoader::LoadResources(PRBool* aResult)
|
||||
if (!il) continue;
|
||||
}
|
||||
|
||||
// Now kick off the image load
|
||||
// Now kick off the image load...
|
||||
// Passing NULL for pretty much everything -- cause we don't care!
|
||||
// XXX: initialDocumentURI is NULL!
|
||||
nsCOMPtr<imgIRequest> req;
|
||||
il->LoadImage(url, nsnull, nsnull, nsnull, nsnull, nsIRequest::LOAD_BACKGROUND, nsnull, nsnull, getter_AddRefs(req));
|
||||
il->LoadImage(url, nsnull, nsnull, nsnull, nsnull, nsnull, nsIRequest::LOAD_BACKGROUND, nsnull, nsnull, getter_AddRefs(req));
|
||||
}
|
||||
else if (curr->mType == nsXBLAtoms::stylesheet) {
|
||||
if (!cssLoader) {
|
||||
|
||||
@@ -92,8 +92,6 @@ nsImageLoader::Load(nsIURI *aURI)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsCOMPtr<nsILoadGroup> loadGroup;
|
||||
nsCOMPtr<nsIURI> uri;
|
||||
nsCOMPtr<nsIURI> baseURI;
|
||||
|
||||
nsCOMPtr<nsIPresShell> shell;
|
||||
nsresult rv = mPresContext->GetShell(getter_AddRefs(shell));
|
||||
@@ -106,6 +104,10 @@ nsImageLoader::Load(nsIURI *aURI)
|
||||
// Get the document's loadgroup
|
||||
doc->GetDocumentLoadGroup(getter_AddRefs(loadGroup));
|
||||
|
||||
// Get the document URI (for the referrer).
|
||||
nsCOMPtr<nsIURI> documentURI;
|
||||
doc->GetDocumentURL(getter_AddRefs(documentURI));
|
||||
|
||||
if (mRequest) {
|
||||
nsCOMPtr<nsIURI> oldURI;
|
||||
mRequest->GetURI(getter_AddRefs(oldURI));
|
||||
@@ -119,7 +121,8 @@ nsImageLoader::Load(nsIURI *aURI)
|
||||
nsCOMPtr<imgILoader> il(do_GetService("@mozilla.org/image/loader;1", &rv));
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
return il->LoadImage(aURI, nsnull, loadGroup, NS_STATIC_CAST(imgIDecoderObserver *, this),
|
||||
// XXX: initialDocumentURI is NULL!
|
||||
return il->LoadImage(aURI, nsnull, documentURI, loadGroup, NS_STATIC_CAST(imgIDecoderObserver *, this),
|
||||
nsnull, nsIRequest::LOAD_BACKGROUND, nsnull, nsnull, getter_AddRefs(mRequest));
|
||||
}
|
||||
|
||||
|
||||
@@ -135,6 +135,16 @@ nsBulletFrame::Init(nsIPresContext* aPresContext,
|
||||
nsCOMPtr<nsIURI> imgURI;
|
||||
NS_NewURI(getter_AddRefs(imgURI), myList->mListStyleImage, nsnull, baseURI);
|
||||
|
||||
// Get the document URI for the referrer...
|
||||
nsCOMPtr<nsIURI> documentURI;
|
||||
nsCOMPtr<nsIDocument> doc;
|
||||
if (mContent) {
|
||||
(void) mContent->GetDocument(*getter_AddRefs(doc));
|
||||
if (doc) {
|
||||
doc->GetDocumentURL(getter_AddRefs(documentURI));
|
||||
}
|
||||
}
|
||||
|
||||
if (!mListener) {
|
||||
nsBulletListener *listener;
|
||||
NS_NEWXPCOM(listener, nsBulletListener);
|
||||
@@ -145,7 +155,8 @@ nsBulletFrame::Init(nsIPresContext* aPresContext,
|
||||
NS_RELEASE(listener);
|
||||
}
|
||||
|
||||
il->LoadImage(imgURI, nsnull, loadGroup, mListener, aPresContext, nsIRequest::LOAD_NORMAL, nsnull, nsnull, getter_AddRefs(mImageRequest));
|
||||
// XXX: initialDocumentURI is NULL !
|
||||
il->LoadImage(imgURI, nsnull, documentURI, loadGroup, mListener, aPresContext, nsIRequest::LOAD_NORMAL, nsnull, nsnull, getter_AddRefs(mImageRequest));
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
@@ -1481,7 +1492,19 @@ nsBulletFrame::Reflow(nsIPresContext* aPresContext,
|
||||
nsCOMPtr<nsILoadGroup> loadGroup;
|
||||
GetLoadGroup(aPresContext, getter_AddRefs(loadGroup));
|
||||
|
||||
il->LoadImage(newURI, nsnull, loadGroup, mListener, aPresContext, nsIRequest::LOAD_NORMAL, nsnull, nsnull, getter_AddRefs(mImageRequest));
|
||||
// Get the document URI for the referrer...
|
||||
nsCOMPtr<nsIURI> documentURI;
|
||||
nsCOMPtr<nsIDocument> doc;
|
||||
if (mContent) {
|
||||
(void) mContent->GetDocument(*getter_AddRefs(doc));
|
||||
if (doc) {
|
||||
doc->GetDocumentURL(getter_AddRefs(documentURI));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// XXX: initialDocumentURI is NULL !
|
||||
il->LoadImage(newURI, nsnull, documentURI, loadGroup, mListener, aPresContext, nsIRequest::LOAD_NORMAL, nsnull, nsnull, getter_AddRefs(mImageRequest));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1980,8 +1980,19 @@ nsImageFrame::RealLoadImage(const nsAString& aSpec, nsIPresContext *aPresContext
|
||||
|
||||
nsCOMPtr<nsIURI> baseURI;
|
||||
rv = aPresContext->GetBaseURL(getter_AddRefs(baseURI));
|
||||
|
||||
// Get the document URI for the referrer...
|
||||
nsCOMPtr<nsIURI> documentURI;
|
||||
nsCOMPtr<nsIDocument> doc;
|
||||
if (mContent) {
|
||||
(void) mContent->GetDocument(*getter_AddRefs(doc));
|
||||
if (doc) {
|
||||
doc->GetDocumentURL(getter_AddRefs(documentURI));
|
||||
}
|
||||
}
|
||||
|
||||
nsCOMPtr<imgIRequest> tempRequest;
|
||||
return il->LoadImage(uri, baseURI, loadGroup, mListener, aPresContext, loadFlags, nsnull, aRequest, getter_AddRefs(tempRequest));
|
||||
return il->LoadImage(uri, baseURI, documentURI, loadGroup, mListener, aPresContext, loadFlags, nsnull, aRequest, getter_AddRefs(tempRequest));
|
||||
}
|
||||
|
||||
#define INTERNAL_GOPHER_LENGTH 16 /* "internal-gopher-" length */
|
||||
|
||||
@@ -457,8 +457,18 @@ nsImageBoxFrame::UpdateImage(nsIPresContext* aPresContext, PRBool& aResize)
|
||||
nsCOMPtr<nsILoadGroup> loadGroup;
|
||||
GetLoadGroup(aPresContext, getter_AddRefs(loadGroup));
|
||||
|
||||
il->LoadImage(srcURI, nsnull, loadGroup, mListener, aPresContext, mLoadFlags, nsnull, nsnull, getter_AddRefs(mImageRequest));
|
||||
// Get the document URI for the referrer...
|
||||
nsCOMPtr<nsIURI> documentURI;
|
||||
nsCOMPtr<nsIDocument> doc;
|
||||
if (mContent) {
|
||||
(void) mContent->GetDocument(*getter_AddRefs(doc));
|
||||
if (doc) {
|
||||
doc->GetDocumentURL(getter_AddRefs(documentURI));
|
||||
}
|
||||
}
|
||||
|
||||
// XXX: initialDocumentURI is NULL!
|
||||
il->LoadImage(srcURI, nsnull, documentURI, loadGroup, mListener, aPresContext, mLoadFlags, nsnull, nsnull, getter_AddRefs(mImageRequest));
|
||||
aResize = PR_TRUE;
|
||||
}
|
||||
|
||||
|
||||
@@ -1725,8 +1725,14 @@ nsTreeBodyFrame::GetImage(PRInt32 aRowIndex, const PRUnichar* aColID, PRBool aUs
|
||||
|
||||
nsresult rv;
|
||||
nsCOMPtr<imgILoader> il(do_GetService("@mozilla.org/image/loader;1", &rv));
|
||||
|
||||
// Get the documment URI for the referrer.
|
||||
nsCOMPtr<nsIURI> documentURI;
|
||||
doc->GetDocumentURL(getter_AddRefs(documentURI));
|
||||
|
||||
mImageGuard = PR_TRUE;
|
||||
rv = il->LoadImage(srcURI, nsnull, nsnull, listener, mPresContext, nsIRequest::LOAD_NORMAL, nsnull, nsnull, getter_AddRefs(imageRequest));
|
||||
// XXX: initialDocumentURI is NULL!
|
||||
rv = il->LoadImage(srcURI, nsnull, documentURI, nsnull, listener, mPresContext, nsIRequest::LOAD_NORMAL, nsnull, nsnull, getter_AddRefs(imageRequest));
|
||||
mImageGuard = PR_FALSE;
|
||||
|
||||
// In a case it was already cached.
|
||||
|
||||
@@ -48,6 +48,8 @@ interface imgILoader : nsISupports
|
||||
/**
|
||||
* Start the load and decode of an image.
|
||||
* @param aURI the URI to load
|
||||
* @param aInitialDocumentURI the URI that 'initiated' the load -- used for 3rd party cookie blocking
|
||||
* @param aReferrerURI the 'referring' URI
|
||||
* @param aLoadGroup Loadgroup to put the image load into
|
||||
* @param aObserver the observer
|
||||
* @param aCX some random data
|
||||
@@ -57,9 +59,14 @@ interface imgILoader : nsISupports
|
||||
* @param aRequest A newly created, unused imgIRequest object or NULL for one to
|
||||
be created for you.
|
||||
*/
|
||||
imgIRequest loadImage(in nsIURI aURI, in nsIURI parentURL, in nsILoadGroup aLoadGroup,
|
||||
in imgIDecoderObserver aObserver, in nsISupports aCX,
|
||||
in nsLoadFlags aLoadFlags, in nsISupports cacheKey,
|
||||
imgIRequest loadImage(in nsIURI aURI,
|
||||
in nsIURI aInitialDocumentURL,
|
||||
in nsIURI aReferrerURI,
|
||||
in nsILoadGroup aLoadGroup,
|
||||
in imgIDecoderObserver aObserver,
|
||||
in nsISupports aCX,
|
||||
in nsLoadFlags aLoadFlags,
|
||||
in nsISupports cacheKey,
|
||||
in imgIRequest aRequest);
|
||||
|
||||
/**
|
||||
|
||||
@@ -111,11 +111,18 @@ inline int merge_flags(const nsLoadFlags& inFlags, nsLoadFlags& outFlags)
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* imgIRequest loadImage (in nsIURI aURI, in nsIURI parentURI, in nsILoadGroup aLoadGroup, in imgIDecoderObserver aObserver, in nsISupports aCX, in nsLoadFlags aLoadFlags, in nsISupports cacheKey, in imgIRequest aRequest); */
|
||||
/* imgIRequest loadImage (in nsIURI aURI, in nsIURI initialDocumentURI, in nsILoadGroup aLoadGroup, in imgIDecoderObserver aObserver, in nsISupports aCX, in nsLoadFlags aLoadFlags, in nsISupports cacheKey, in imgIRequest aRequest); */
|
||||
|
||||
NS_IMETHODIMP imgLoader::LoadImage(nsIURI *aURI, nsIURI *parentURI, nsILoadGroup *aLoadGroup,
|
||||
imgIDecoderObserver *aObserver, nsISupports *aCX, nsLoadFlags aLoadFlags,
|
||||
nsISupports *cacheKey, imgIRequest *aRequest, imgIRequest **_retval)
|
||||
NS_IMETHODIMP imgLoader::LoadImage(nsIURI *aURI,
|
||||
nsIURI *initialDocumentURI,
|
||||
nsIURI *referrerURI,
|
||||
nsILoadGroup *aLoadGroup,
|
||||
imgIDecoderObserver *aObserver,
|
||||
nsISupports *aCX,
|
||||
nsLoadFlags aLoadFlags,
|
||||
nsISupports *cacheKey,
|
||||
imgIRequest *aRequest,
|
||||
imgIRequest **_retval)
|
||||
{
|
||||
NS_ASSERTION(aURI, "imgLoader::LoadImage -- NULL URI pointer");
|
||||
|
||||
@@ -298,7 +305,7 @@ NS_IMETHODIMP imgLoader::LoadImage(nsIURI *aURI, nsIURI *parentURI, nsILoadGroup
|
||||
|
||||
nsCOMPtr<nsIHttpChannel> newHttpChannel = do_QueryInterface(newChannel);
|
||||
if (newHttpChannel) {
|
||||
newHttpChannel->SetDocumentURI(parentURI);
|
||||
newHttpChannel->SetDocumentURI(initialDocumentURI);
|
||||
}
|
||||
|
||||
if (aLoadGroup) {
|
||||
@@ -343,24 +350,8 @@ NS_IMETHODIMP imgLoader::LoadImage(nsIURI *aURI, nsIURI *parentURI, nsILoadGroup
|
||||
nsCOMPtr<nsIHttpChannel> httpChannel(do_QueryInterface(newChannel));
|
||||
|
||||
if (httpChannel) {
|
||||
nsresult rv;
|
||||
// Get the defloadRequest from the loadgroup
|
||||
nsCOMPtr<nsIRequest> defLoadRequest;
|
||||
rv = aLoadGroup->GetDefaultLoadRequest(getter_AddRefs(defLoadRequest));
|
||||
|
||||
if (NS_SUCCEEDED(rv) && defLoadRequest) {
|
||||
nsCOMPtr<nsIChannel> reqChannel(do_QueryInterface(defLoadRequest));
|
||||
|
||||
if (reqChannel) {
|
||||
// Get the referrer from the loadchannel
|
||||
nsCOMPtr<nsIURI> referrer;
|
||||
rv = reqChannel->GetURI(getter_AddRefs(referrer));
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
// Set the referrer
|
||||
httpChannel->SetReferrer(referrer, nsIHttpChannel::REFERRER_INLINES);
|
||||
}
|
||||
}
|
||||
}
|
||||
// Set the referrer
|
||||
httpChannel->SetReferrer(referrerURI, nsIHttpChannel::REFERRER_INLINES);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user