Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1078)

Unified Diff: chrome/browser/net/chrome_url_request_context.cc

Issue 5430004: Refactored cookies persistent store clean-up on shutdown. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Whitespace fix. Created 10 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/net/chrome_url_request_context.cc
diff --git a/chrome/browser/net/chrome_url_request_context.cc b/chrome/browser/net/chrome_url_request_context.cc
index 81a04020d9eb4ef6aa21e578882356545cfef0d0..f036322c4f99d043f112f0a57be5159738bc815d 100644
--- a/chrome/browser/net/chrome_url_request_context.cc
+++ b/chrome/browser/net/chrome_url_request_context.cc
@@ -46,6 +46,8 @@
#include "chrome/browser/chromeos/proxy_config_service.h"
#endif // defined(OS_CHROMEOS)
+using net::CookieMonster;
Randy Smith (Not in Mondays) 2010/12/01 20:39:50 The Chrome style guide forbids "using" directives.
pastarmovj 2010/12/02 14:54:36 Done.
+
namespace {
// ----------------------------------------------------------------------------
@@ -542,6 +544,13 @@ ChromeURLRequestContextGetter::ChromeURLRequestContextGetter(
ChromeURLRequestContextGetter::~ChromeURLRequestContextGetter() {
CheckCurrentlyOnIOThread();
+ // Clean up the local state of the context if it was created.
+ if (url_request_context_.get()) {
+ ChromeURLRequestContext* chrome_url_request_context =
+ static_cast<ChromeURLRequestContext*>(url_request_context_.get());
+ chrome_url_request_context->ClearLocalState();
+ }
Randy Smith (Not in Mondays) 2010/12/01 20:39:50 It looks to me as if the other url request context
+
DCHECK(registrar_.IsEmpty()) << "Probably didn't call CleanupOnUIThread";
// Either we already transformed the factory into a URLRequestContext, or
@@ -705,6 +714,15 @@ void ChromeURLRequestContextGetter::Observe(
this,
&ChromeURLRequestContextGetter::OnDefaultCharsetChange,
default_charset));
+ } else if (*pref_name_in == prefs::kClearSiteDataOnExit) {
+ bool clear_site_data =
+ prefs->GetBoolean(prefs::kClearSiteDataOnExit);
+ BrowserThread::PostTask(
+ BrowserThread::IO, FROM_HERE,
+ NewRunnableMethod(
+ this,
+ &ChromeURLRequestContextGetter::OnClearSiteDataOnExitChange,
+ clear_site_data));
}
} else {
NOTREACHED();
@@ -717,6 +735,7 @@ void ChromeURLRequestContextGetter::RegisterPrefsObserver(Profile* profile) {
registrar_.Init(profile->GetPrefs());
registrar_.Add(prefs::kAcceptLanguages, this);
registrar_.Add(prefs::kDefaultCharset, this);
+ registrar_.Add(prefs::kClearSiteDataOnExit, this);
}
// static
@@ -742,6 +761,11 @@ void ChromeURLRequestContextGetter::OnDefaultCharsetChange(
GetIOContext()->OnDefaultCharsetChange(default_charset);
}
+void ChromeURLRequestContextGetter::OnClearSiteDataOnExitChange(
+ bool clear_site_data) {
+ GetIOContext()->set_clear_local_state_on_exit(clear_site_data);
+}
+
void ChromeURLRequestContextGetter::GetCookieStoreAsyncHelper(
base::WaitableEvent* completion,
net::CookieStore** result) {
@@ -844,6 +868,7 @@ ChromeURLRequestContext::ChromeURLRequestContext(
blob_storage_context_ = other->blob_storage_context_;
browser_file_system_context_ = other->browser_file_system_context_;
extension_info_map_ = other->extension_info_map_;
+ clear_local_state_on_exit_ = other->clear_local_state_on_exit_;
}
void ChromeURLRequestContext::OnAcceptLanguageChange(
@@ -861,6 +886,22 @@ void ChromeURLRequestContext::OnDefaultCharsetChange(
net::HttpUtil::GenerateAcceptCharsetHeader(default_charset);
}
+void ChromeURLRequestContext::ClearLocalState()
+{
Mattias Nissler (ping if slow) 2010/12/01 17:23:24 brace goes on previous line.
pastarmovj 2010/12/02 14:54:36 Done.
+ CheckCurrentlyOnIOThread();
+ if (clear_local_state_on_exit_) {
+ scoped_refptr<CookieMonster::PersistentCookieStore> store =
+ cookie_store_->GetCookieMonster()->GetPersistentCookieStore();
+ cookie_store_->GetCookieMonster()->DetachPersistentCookieStore();
+ BrowserThread::PostTask(
+ BrowserThread::FILE,
+ FROM_HERE,
+ NewRunnableMethod(
+ store.get(),
+ &CookieMonster::PersistentCookieStore::ClearLocalState));
+ }
+}
+
// ----------------------------------------------------------------------------
// ChromeURLRequestContextFactory
// ----------------------------------------------------------------------------
@@ -882,6 +923,7 @@ ChromeURLRequestContextFactory::ChromeURLRequestContextFactory(Profile* profile)
std::string default_charset = prefs->GetString(prefs::kDefaultCharset);
accept_charset_ =
net::HttpUtil::GenerateAcceptCharsetHeader(default_charset);
+ clear_local_state_on_exit_ = prefs->GetBoolean(prefs::kClearSiteDataOnExit);
// At this point, we don't know the charset of the referring page
// where a url request originates from. This is used to get a suggested
@@ -938,4 +980,5 @@ void ChromeURLRequestContextFactory::ApplyProfileParametersToContext(
context->set_blob_storage_context(blob_storage_context_);
context->set_browser_file_system_context(browser_file_system_context_);
context->set_extension_info_map(extension_info_map_);
+ context->set_clear_local_state_on_exit(clear_local_state_on_exit_);
}

Powered by Google App Engine
This is Rietveld 408576698