diff options
author | pastarmovj@chromium.org <pastarmovj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-12-06 12:02:23 +0000 |
---|---|---|
committer | pastarmovj@chromium.org <pastarmovj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-12-06 12:02:23 +0000 |
commit | 2d0f89a1b3414922704f97c01b373d3a09139dd7 (patch) | |
tree | 86cdcd5f75ef79e8be271405ec5d27856be8ac83 /chrome/browser/net/chrome_url_request_context.cc | |
parent | 3a3e66a3e243094e83c829ceccac699076d90e55 (diff) | |
download | chromium_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.cc | 18 |
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 |