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 8aa95dabc35b39c1efdcf8a216925af15e9c6914..a5518578998592ca73ff9eb4223108ac9d59a58b 100644 |
--- a/chrome/browser/net/chrome_url_request_context.cc |
+++ b/chrome/browser/net/chrome_url_request_context.cc |
@@ -315,6 +315,7 @@ ChromeURLRequestContext* FactoryForOriginal::Create() { |
scoped_refptr<SQLitePersistentCookieStore> cookie_db = |
new SQLitePersistentCookieStore(cookie_store_path_); |
+ cookie_db->SetClearLocalStateOnExit(clear_local_state_on_exit_); |
context->set_cookie_store(new net::CookieMonster(cookie_db.get(), |
cookie_monster_delegate_)); |
} |
@@ -705,6 +706,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 +727,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 +753,12 @@ void ChromeURLRequestContextGetter::OnDefaultCharsetChange( |
GetIOContext()->OnDefaultCharsetChange(default_charset); |
} |
+void ChromeURLRequestContextGetter::OnClearSiteDataOnExitChange( |
+ bool clear_site_data) { |
+ GetCookieStore()->GetCookieMonster()-> |
+ SetClearPersistentStoreOnExit(clear_site_data); |
+} |
+ |
void ChromeURLRequestContextGetter::GetCookieStoreAsyncHelper( |
base::WaitableEvent* completion, |
net::CookieStore** result) { |
@@ -882,6 +899,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 |