diff options
author | Jean-François Rameau <jframeau@cvs.gnome.org> | 2006-06-02 03:35:32 +0800 |
---|---|---|
committer | Jean-François Rameau <jframeau@src.gnome.org> | 2006-06-02 03:35:32 +0800 |
commit | ae4e4736818f442abd435274cb3b75f8da02ad33 (patch) | |
tree | e552affa908143effd9f1fba8993eaa8ecf4e5f6 /embed/mozilla/EphySingle.cpp | |
parent | 5d471eec3390f8f188037ac6a3c87a59aa77ec8e (diff) | |
download | gsoc2013-epiphany-ae4e4736818f442abd435274cb3b75f8da02ad33.tar gsoc2013-epiphany-ae4e4736818f442abd435274cb3b75f8da02ad33.tar.gz gsoc2013-epiphany-ae4e4736818f442abd435274cb3b75f8da02ad33.tar.bz2 gsoc2013-epiphany-ae4e4736818f442abd435274cb3b75f8da02ad33.tar.lz gsoc2013-epiphany-ae4e4736818f442abd435274cb3b75f8da02ad33.tar.xz gsoc2013-epiphany-ae4e4736818f442abd435274cb3b75f8da02ad33.tar.zst gsoc2013-epiphany-ae4e4736818f442abd435274cb3b75f8da02ad33.zip |
Don't set cookies from favicon downloads. Bug #337835.
2006-06-01 Jean-François Rameau <jframeau@cvs.gnome.org>
* embed/ephy-embed-persist.h:
* embed/ephy-favicon-cache.c: (ephy_favicon_cache_download):
* embed/mozilla/EphySingle.cpp:
(Init, Detach, ExamineCookies, ExamineResponse, ExamineRequest, Observe):
* embed/mozilla/EphySingle.h:
* embed/mozilla/MozDownload.cpp: (InitiateMozillaDownload):
Don't set cookies from favicon downloads. Bug #337835.
Diffstat (limited to 'embed/mozilla/EphySingle.cpp')
-rw-r--r-- | embed/mozilla/EphySingle.cpp | 51 |
1 files changed, 50 insertions, 1 deletions
diff --git a/embed/mozilla/EphySingle.cpp b/embed/mozilla/EphySingle.cpp index e6e82a4f6..ec8eb0b84 100644 --- a/embed/mozilla/EphySingle.cpp +++ b/embed/mozilla/EphySingle.cpp @@ -27,9 +27,12 @@ #include <nsICookie.h> #include <nsICookie2.h> #include <nsICookieManager.h> +#include <nsIHttpChannel.h> #include <nsIObserverService.h> #include <nsIPermission.h> #include <nsIPermissionManager.h> +#include <nsIPropertyBag2.h> +#include <nsIServiceManager.h> #include <nsIURI.h> #include <nsServiceManagerUtils.h> #include <nsWeakReference.h> @@ -63,6 +66,8 @@ EphySingle::Init (EphyEmbedSingle *aOwner) rv |= mObserverService->AddObserver (this, "perm-changed", PR_FALSE); rv |= mObserverService->AddObserver (this, "network:offline-status-changed", PR_FALSE); rv |= mObserverService->AddObserver (this, "signonChanged", PR_FALSE); + rv |= mObserverService->AddObserver (this, "http-on-examine-response", PR_FALSE); + rv |= mObserverService->AddObserver (this, "http-on-modify-request", PR_FALSE); NS_ENSURE_SUCCESS (rv, NS_ERROR_FAILURE); mOwner = aOwner; @@ -84,6 +89,8 @@ EphySingle::Detach () mObserverService->RemoveObserver (this, "perm-changed"); mObserverService->RemoveObserver (this, "signonChanged"); mObserverService->RemoveObserver (this, "network:offline-status-changed"); + mObserverService->RemoveObserver (this, "http-on-examine-response"); + mObserverService->RemoveObserver (this, "http-on-modify-request"); #if 1 /* HACK: Work around https://bugzilla.mozilla.org/show_bug.cgi?id=292699 */ @@ -138,6 +145,40 @@ EphySingle::EmitPermissionNotification (const char *name, return NS_OK; } +nsresult +EphySingle::ExamineCookies (nsISupports *aSubject) +{ + nsCOMPtr<nsIPropertyBag2> props = do_QueryInterface(aSubject); + NS_ENSURE_TRUE (props, NS_ERROR_FAILURE); + + PRBool isBlockingCookiesChannel = PR_FALSE; + props->GetPropertyAsBool( + NS_LITERAL_STRING("epiphany-blocking-cookies"), + &isBlockingCookiesChannel); + if (isBlockingCookiesChannel) + { + nsCOMPtr<nsIHttpChannel> channel = do_QueryInterface(aSubject); + NS_ENSURE_TRUE (channel, NS_ERROR_FAILURE); + + channel->SetRequestHeader(NS_LITERAL_CSTRING("Cookie"), + EmptyCString(), PR_FALSE); + } + + return NS_OK; +} + +nsresult +EphySingle::ExamineResponse (nsISupports *aSubject) +{ + return ExamineCookies (aSubject); +} + +nsresult +EphySingle::ExamineRequest (nsISupports *aSubject) +{ + return ExamineCookies (aSubject); +} + /* void observe (in nsISupports aSubject, in string aTopic, in wstring aData); */ NS_IMETHODIMP EphySingle::Observe(nsISupports *aSubject, const char *aTopic, @@ -147,7 +188,15 @@ NS_IMETHODIMP EphySingle::Observe(nsISupports *aSubject, LOG ("EphySingle::Observe topic %s", aTopic); - if (strcmp (aTopic, "cookie-changed") == 0) + if (strcmp (aTopic, "http-on-examine-response") == 0) + { + rv = ExamineResponse (aSubject); + } + else if (strcmp (aTopic, "http-on-modify-request") == 0) + { + rv = ExamineRequest (aSubject); + } + else if (strcmp (aTopic, "cookie-changed") == 0) { /* "added" */ if (aData[0] == 'a') |