summaryrefslogtreecommitdiffstats
path: root/chrome/browser/net/chrome_url_request_context.cc
diff options
context:
space:
mode:
authorpastarmovj@chromium.org <pastarmovj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-12-06 12:02:23 +0000
committerpastarmovj@chromium.org <pastarmovj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-12-06 12:02:23 +0000
commit2d0f89a1b3414922704f97c01b373d3a09139dd7 (patch)
tree86cdcd5f75ef79e8be271405ec5d27856be8ac83 /chrome/browser/net/chrome_url_request_context.cc
parent3a3e66a3e243094e83c829ceccac699076d90e55 (diff)
downloadchromium_src-2d0f89a1b3414922704f97c01b373d3a09139dd7.zip
chromium_src-2d0f89a1b3414922704f97c01b373d3a09139dd7.tar.gz
chromium_src-2d0f89a1b3414922704f97c01b373d3a09139dd7.tar.bz2
Refactored cookies persistent store clean-up on shutdown.
Changed the static call of SQLitePersistantCookieStore::ClearLocalState to a call of a virtual method PersistantCookieStore::ClearLocalState from inside the destruction sequence of the owning UrlRequestContext. Thus the code will now work with any other persistancy implementation and allow for better parallelism. To test. Enable deleting of cookies and user data on shutdown and check if the Cookies file in the profile directory has been deleted. BUG=64920 TEST=Manual. Review URL: http://codereview.chromium.org/5430004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@68343 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/net/chrome_url_request_context.cc')
-rw-r--r--chrome/browser/net/chrome_url_request_context.cc18
1 files changed, 18 insertions, 0 deletions
diff --git a/chrome/browser/net/chrome_url_request_context.cc b/chrome/browser/net/chrome_url_request_context.cc
index 8aa95da..a551857 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