--- /dev/null
+Index: content/html/content/src/nsHTMLImageElement.cpp\r
+===================================================================\r
+RCS file: /cvsroot/mozilla/content/html/content/src/nsHTMLImageElement.cpp,v\r
+retrieving revision 1.121\r
+diff -u -r1.121 nsHTMLImageElement.cpp\r
+--- mozilla/content/html/content/src/nsHTMLImageElement.cpp 24 Aug 2002 14:40:45 -0000 1.121\r
++++ mozilla/content/html/content/src/nsHTMLImageElement.cpp 17 Sep 2002 04:07:27 -0000\r
+@@ -957,12 +957,17 @@\r
+ \r
+ nsCOMPtr<nsIDocument> doc;\r
+ nsCOMPtr<nsILoadGroup> loadGroup;\r
++ nsCOMPtr<nsIURI> documentURI;\r
+ shell->GetDocument(getter_AddRefs(doc));\r
+ if (doc) {\r
+ doc->GetDocumentLoadGroup(getter_AddRefs(loadGroup));\r
++\r
++ // Get the documment URI for the referrer.\r
++ doc->GetDocumentURL(getter_AddRefs(documentURI));\r
+ }\r
+ \r
+- il->LoadImage(uri, nsnull, loadGroup, this, sup, nsIRequest::LOAD_NORMAL,\r
++ // XXX: initialDocumentURI is NULL!\r
++ il->LoadImage(uri, nsnull, documentURI, loadGroup, this, context, nsIRequest::LOAD_NORMAL,\r
+ nsnull, nsnull, getter_AddRefs(mRequest));\r
+ }\r
+ }\r
+Index: content/xbl/src/nsXBLResourceLoader.cpp\r
+===================================================================\r
+RCS file: /cvsroot/mozilla/content/xbl/src/nsXBLResourceLoader.cpp,v\r
+retrieving revision 1.7\r
+diff -u -r1.7 nsXBLResourceLoader.cpp\r
+--- mozilla/content/xbl/src/nsXBLResourceLoader.cpp 7 Sep 2002 17:08:43 -0000 1.7\r
++++ mozilla/content/xbl/src/nsXBLResourceLoader.cpp 17 Sep 2002 04:07:29 -0000\r
+@@ -127,9 +127,11 @@\r
+ if (!il) continue;\r
+ }\r
+ \r
+- // Now kick off the image load\r
++ // Now kick off the image load...\r
++ // Passing NULL for pretty much everything -- cause we don't care!\r
++ // XXX: initialDocumentURI is NULL! \r
+ nsCOMPtr<imgIRequest> req;\r
+- il->LoadImage(url, nsnull, nsnull, nsnull, nsnull, nsIRequest::LOAD_BACKGROUND, nsnull, nsnull, getter_AddRefs(req));\r
++ il->LoadImage(url, nsnull, nsnull, nsnull, nsnull, nsnull, nsIRequest::LOAD_BACKGROUND, nsnull, nsnull, getter_AddRefs(req));\r
+ }\r
+ else if (curr->mType == nsXBLAtoms::stylesheet) {\r
+ if (!cssLoader) {\r
+Index: layout/base/src/nsImageLoader.cpp\r
+===================================================================\r
+RCS file: /cvsroot/mozilla/layout/base/src/nsImageLoader.cpp,v\r
+retrieving revision 3.11\r
+diff -u -r3.11 nsImageLoader.cpp\r
+--- mozilla/layout/base/src/nsImageLoader.cpp 26 Apr 2002 20:44:37 -0000 3.11\r
++++ mozilla/layout/base/src/nsImageLoader.cpp 17 Sep 2002 04:07:48 -0000\r
+@@ -92,8 +92,6 @@\r
+ return NS_ERROR_FAILURE;\r
+ \r
+ nsCOMPtr<nsILoadGroup> loadGroup;\r
+- nsCOMPtr<nsIURI> uri;\r
+- nsCOMPtr<nsIURI> baseURI;\r
+ \r
+ nsCOMPtr<nsIPresShell> shell;\r
+ nsresult rv = mPresContext->GetShell(getter_AddRefs(shell));\r
+@@ -106,6 +104,10 @@\r
+ // Get the document's loadgroup\r
+ doc->GetDocumentLoadGroup(getter_AddRefs(loadGroup));\r
+ \r
++ // Get the document URI (for the referrer).\r
++ nsCOMPtr<nsIURI> documentURI;\r
++ doc->GetDocumentURL(getter_AddRefs(documentURI));\r
++\r
+ if (mRequest) {\r
+ nsCOMPtr<nsIURI> oldURI;\r
+ mRequest->GetURI(getter_AddRefs(oldURI));\r
+@@ -119,7 +121,8 @@\r
+ nsCOMPtr<imgILoader> il(do_GetService("@mozilla.org/image/loader;1", &rv));\r
+ if (NS_FAILED(rv)) return rv;\r
+ \r
+- return il->LoadImage(aURI, nsnull, loadGroup, NS_STATIC_CAST(imgIDecoderObserver *, this), \r
++ // XXX: initialDocumentURI is NULL!\r
++ return il->LoadImage(aURI, nsnull, documentURI, loadGroup, NS_STATIC_CAST(imgIDecoderObserver *, this), \r
+ nsnull, nsIRequest::LOAD_BACKGROUND, nsnull, nsnull, getter_AddRefs(mRequest));\r
+ }\r
+ \r
+Index: layout/html/base/src/nsBulletFrame.cpp\r
+===================================================================\r
+RCS file: /cvsroot/mozilla/layout/html/base/src/nsBulletFrame.cpp,v\r
+retrieving revision 1.79\r
+diff -u -r1.79 nsBulletFrame.cpp\r
+--- mozilla/layout/html/base/src/nsBulletFrame.cpp 12 Jul 2002 20:46:19 -0000 1.79\r
++++ mozilla/layout/html/base/src/nsBulletFrame.cpp 17 Sep 2002 04:07:49 -0000\r
+@@ -134,6 +134,16 @@\r
+ nsCOMPtr<nsIURI> imgURI;\r
+ NS_NewURI(getter_AddRefs(imgURI), myList->mListStyleImage, nsnull, baseURI);\r
+ \r
++ // Get the document URI for the referrer...\r
++ nsCOMPtr<nsIURI> documentURI;\r
++ nsCOMPtr<nsIDocument> doc;\r
++ if (mContent) {\r
++ (void) mContent->GetDocument(*getter_AddRefs(doc));\r
++ if (doc) {\r
++ doc->GetDocumentURL(getter_AddRefs(documentURI));\r
++ }\r
++ }\r
++\r
+ if (!mListener) {\r
+ nsBulletListener *listener;\r
+ NS_NEWXPCOM(listener, nsBulletListener);\r
+@@ -144,7 +154,8 @@\r
+ NS_RELEASE(listener);\r
+ }\r
+ \r
+- il->LoadImage(imgURI, nsnull, loadGroup, mListener, aPresContext, nsIRequest::LOAD_NORMAL, nsnull, nsnull, getter_AddRefs(mImageRequest));\r
++ // XXX: initialDocumentURI is NULL !\r
++ il->LoadImage(imgURI, nsnull, documentURI, loadGroup, mListener, aPresContext, nsIRequest::LOAD_NORMAL, nsnull, nsnull, getter_AddRefs(mImageRequest));\r
+ }\r
+ \r
+ return NS_OK;\r
+@@ -1529,7 +1540,19 @@\r
+ nsCOMPtr<nsILoadGroup> loadGroup;\r
+ GetLoadGroup(aPresContext, getter_AddRefs(loadGroup));\r
+ \r
+- il->LoadImage(newURI, nsnull, loadGroup, mListener, aPresContext, nsIRequest::LOAD_NORMAL, nsnull, nsnull, getter_AddRefs(mImageRequest));\r
++ // Get the document URI for the referrer...\r
++ nsCOMPtr<nsIURI> documentURI;\r
++ nsCOMPtr<nsIDocument> doc;\r
++ if (mContent) {\r
++ (void) mContent->GetDocument(*getter_AddRefs(doc));\r
++ if (doc) {\r
++ doc->GetDocumentURL(getter_AddRefs(documentURI));\r
++ }\r
++ }\r
++\r
++\r
++ // XXX: initialDocumentURI is NULL !\r
++ il->LoadImage(newURI, nsnull, documentURI, loadGroup, mListener, aPresContext, nsIRequest::LOAD_NORMAL, nsnull, nsnull, getter_AddRefs(mImageRequest));\r
+ }\r
+ }\r
+ }\r
+Index: layout/html/base/src/nsImageFrame.cpp\r
+===================================================================\r
+RCS file: /cvsroot/mozilla/layout/html/base/src/nsImageFrame.cpp,v\r
+retrieving revision 1.248\r
+diff -u -r1.248 nsImageFrame.cpp\r
+--- mozilla/layout/html/base/src/nsImageFrame.cpp 3 Sep 2002 22:49:51 -0000 1.248\r
++++ mozilla/layout/html/base/src/nsImageFrame.cpp 17 Sep 2002 04:07:49 -0000\r
+@@ -2001,8 +2001,19 @@\r
+ \r
+ nsCOMPtr<nsIURI> baseURI;\r
+ rv = aPresContext->GetBaseURL(getter_AddRefs(baseURI));\r
++\r
++ // Get the document URI for the referrer...\r
++ nsCOMPtr<nsIURI> documentURI;\r
++ nsCOMPtr<nsIDocument> doc;\r
++ if (mContent) {\r
++ (void) mContent->GetDocument(*getter_AddRefs(doc));\r
++ if (doc) {\r
++ doc->GetDocumentURL(getter_AddRefs(documentURI));\r
++ }\r
++ }\r
++\r
+ nsCOMPtr<imgIRequest> tempRequest;\r
+- return il->LoadImage(uri, baseURI, loadGroup, mListener, aPresContext, loadFlags, nsnull, aRequest, getter_AddRefs(tempRequest));\r
++ return il->LoadImage(uri, baseURI, documentURI, loadGroup, mListener, aPresContext, loadFlags, nsnull, aRequest, getter_AddRefs(tempRequest));\r
+ }\r
+ \r
+ #define INTERNAL_GOPHER_LENGTH 16 /* "internal-gopher-" length */\r
+Index: layout/xul/base/src/nsImageBoxFrame.cpp\r
+===================================================================\r
+RCS file: /cvsroot/mozilla/layout/xul/base/src/nsImageBoxFrame.cpp,v\r
+retrieving revision 1.39\r
+diff -u -r1.39 nsImageBoxFrame.cpp\r
+--- mozilla/layout/xul/base/src/nsImageBoxFrame.cpp 23 May 2002 00:00:32 -0000 1.39\r
++++ mozilla/layout/xul/base/src/nsImageBoxFrame.cpp 17 Sep 2002 04:07:54 -0000\r
+@@ -456,7 +456,18 @@\r
+ nsCOMPtr<nsILoadGroup> loadGroup;\r
+ GetLoadGroup(aPresContext, getter_AddRefs(loadGroup));\r
+ \r
+- il->LoadImage(srcURI, nsnull, loadGroup, mListener, aPresContext, mLoadFlags, nsnull, nsnull, getter_AddRefs(mImageRequest));\r
++ // Get the document URI for the referrer...\r
++ nsCOMPtr<nsIURI> documentURI;\r
++ nsCOMPtr<nsIDocument> doc;\r
++ if (mContent) {\r
++ (void) mContent->GetDocument(*getter_AddRefs(doc));\r
++ if (doc) {\r
++ doc->GetDocumentURL(getter_AddRefs(documentURI));\r
++ }\r
++ }\r
++\r
++ // XXX: initialDocumentURI is NULL!\r
++ il->LoadImage(srcURI, nsnull, documentURI, loadGroup, mListener, aPresContext, mLoadFlags, nsnull, nsnull, getter_AddRefs(mImageRequest));\r
+ \r
+ aResize = PR_TRUE;\r
+ }\r
+Index: layout/xul/base/src/tree/src/nsTreeBodyFrame.cpp\r
+===================================================================\r
+RCS file: /cvsroot/mozilla/layout/xul/base/src/tree/src/nsTreeBodyFrame.cpp,v\r
+retrieving revision 1.136\r
+diff -u -r1.136 nsTreeBodyFrame.cpp\r
+--- mozilla/layout/xul/base/src/tree/src/nsTreeBodyFrame.cpp 7 Sep 2002 05:37:42 -0000 1.136\r
++++ mozilla/layout/xul/base/src/tree/src/nsTreeBodyFrame.cpp 17 Sep 2002 04:07:54 -0000\r
+@@ -1862,8 +1862,14 @@\r
+ \r
+ nsresult rv;\r
+ nsCOMPtr<imgILoader> il(do_GetService("@mozilla.org/image/loader;1", &rv));\r
++\r
++ // Get the documment URI for the referrer.\r
++ nsCOMPtr<nsIURI> documentURI;\r
++ doc->GetDocumentURL(getter_AddRefs(documentURI));\r
++\r
+ mImageGuard = PR_TRUE;\r
+- rv = il->LoadImage(srcURI, nsnull, nsnull, listener, mPresContext, nsIRequest::LOAD_NORMAL, nsnull, nsnull, getter_AddRefs(imageRequest));\r
++ // XXX: initialDocumentURI is NULL!\r
++ rv = il->LoadImage(srcURI, nsnull, documentURI, nsnull, listener, mPresContext, nsIRequest::LOAD_NORMAL, nsnull, nsnull, getter_AddRefs(imageRequest));\r
+ mImageGuard = PR_FALSE;\r
+ \r
+ // In a case it was already cached.\r
+Index: modules/libpr0n/public/imgILoader.idl\r
+===================================================================\r
+RCS file: /cvsroot/mozilla/modules/libpr0n/public/imgILoader.idl,v\r
+retrieving revision 1.8\r
+diff -u -r1.8 imgILoader.idl\r
+--- mozilla/modules/libpr0n/public/imgILoader.idl 23 Mar 2002 13:21:27 -0000 1.8\r
++++ mozilla/modules/libpr0n/public/imgILoader.idl 17 Sep 2002 04:08:04 -0000\r
+@@ -48,6 +48,8 @@\r
+ /**\r
+ * Start the load and decode of an image.\r
+ * @param aURI the URI to load\r
++ * @param aInitialDocumentURI the URI that 'initiated' the load -- used for 3rd party cookie blocking\r
++ * @param aReferrerURI the 'referring' URI\r
+ * @param aLoadGroup Loadgroup to put the image load into\r
+ * @param aObserver the observer\r
+ * @param aCX some random data\r
+@@ -57,9 +59,14 @@\r
+ * @param aRequest A newly created, unused imgIRequest object or NULL for one to\r
+ be created for you.\r
+ */\r
+- imgIRequest loadImage(in nsIURI aURI, in nsIURI parentURL, in nsILoadGroup aLoadGroup,\r
+- in imgIDecoderObserver aObserver, in nsISupports aCX,\r
+- in nsLoadFlags aLoadFlags, in nsISupports cacheKey,\r
++ imgIRequest loadImage(in nsIURI aURI,\r
++ in nsIURI aInitialDocumentURL,\r
++ in nsIURI aReferrerURI,\r
++ in nsILoadGroup aLoadGroup,\r
++ in imgIDecoderObserver aObserver,\r
++ in nsISupports aCX,\r
++ in nsLoadFlags aLoadFlags,\r
++ in nsISupports cacheKey,\r
+ in imgIRequest aRequest);\r
+ \r
+ /**\r
+Index: modules/libpr0n/src/imgLoader.cpp\r
+===================================================================\r
+RCS file: /cvsroot/mozilla/modules/libpr0n/src/imgLoader.cpp,v\r
+retrieving revision 1.50\r
+diff -u -r1.50 imgLoader.cpp\r
+--- mozilla/modules/libpr0n/src/imgLoader.cpp 12 Sep 2002 08:42:39 -0000 1.50\r
++++ mozilla/modules/libpr0n/src/imgLoader.cpp 17 Sep 2002 04:08:04 -0000\r
+@@ -112,11 +112,18 @@\r
+ return 1;\r
+ }\r
+ \r
+-/* 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); */\r
++/* 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); */\r
+ \r
+-NS_IMETHODIMP imgLoader::LoadImage(nsIURI *aURI, nsIURI *parentURI, nsILoadGroup *aLoadGroup,\r
+- imgIDecoderObserver *aObserver, nsISupports *aCX, nsLoadFlags aLoadFlags,\r
+- nsISupports *cacheKey, imgIRequest *aRequest, imgIRequest **_retval)\r
++NS_IMETHODIMP imgLoader::LoadImage(nsIURI *aURI, \r
++ nsIURI *initialDocumentURI,\r
++ nsIURI *referrerURI,\r
++ nsILoadGroup *aLoadGroup,\r
++ imgIDecoderObserver *aObserver,\r
++ nsISupports *aCX,\r
++ nsLoadFlags aLoadFlags,\r
++ nsISupports *cacheKey,\r
++ imgIRequest *aRequest,\r
++ imgIRequest **_retval)\r
+ {\r
+ NS_ASSERTION(aURI, "imgLoader::LoadImage -- NULL URI pointer");\r
+ \r
+@@ -301,7 +308,7 @@\r
+ \r
+ nsCOMPtr<nsIHttpChannel> newHttpChannel = do_QueryInterface(newChannel);\r
+ if (newHttpChannel) {\r
+- newHttpChannel->SetDocumentURI(parentURI);\r
++ newHttpChannel->SetDocumentURI(initialDocumentURI);\r
+ }\r
+ \r
+ if (aLoadGroup) {\r
+@@ -348,24 +355,8 @@\r
+ nsCOMPtr<nsIHttpChannel> httpChannel(do_QueryInterface(newChannel));\r
+ \r
+ if (httpChannel) {\r
+- nsresult rv;\r
+- // Get the defloadRequest from the loadgroup\r
+- nsCOMPtr<nsIRequest> defLoadRequest;\r
+- rv = aLoadGroup->GetDefaultLoadRequest(getter_AddRefs(defLoadRequest));\r
+-\r
+- if (NS_SUCCEEDED(rv) && defLoadRequest) {\r
+- nsCOMPtr<nsIChannel> reqChannel(do_QueryInterface(defLoadRequest));\r
+-\r
+- if (reqChannel) {\r
+- // Get the referrer from the loadchannel\r
+- nsCOMPtr<nsIURI> referrer;\r
+- rv = reqChannel->GetURI(getter_AddRefs(referrer));\r
+- if (NS_SUCCEEDED(rv)) {\r
+- // Set the referrer\r
+- httpChannel->SetReferrer(referrer, nsIHttpChannel::REFERRER_INLINES);\r
+- }\r
+- } \r
+- }\r
++ // Set the referrer\r
++ httpChannel->SetReferrer(referrerURI, nsIHttpChannel::REFERRER_INLINES);\r
+ }\r
+ }\r
+ \r