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

Unified Diff: chrome/browser/appcache/chrome_appcache_service.cc

Issue 6077005: Refactored app cache clear on exit code to happen in the object owning the files. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed multithreading and added unit tests. Created 9 years, 12 months 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/appcache/chrome_appcache_service.cc
diff --git a/chrome/browser/appcache/chrome_appcache_service.cc b/chrome/browser/appcache/chrome_appcache_service.cc
index c01b1d7d36cff67b7171ac9f09885cc7d73dd386..5313d06b6c9e9c650a17b6d08b081a2098e44d63 100644
--- a/chrome/browser/appcache/chrome_appcache_service.cc
+++ b/chrome/browser/appcache/chrome_appcache_service.cc
@@ -22,7 +22,8 @@ ChromeAppCacheService::ChromeAppCacheService() {
void ChromeAppCacheService::InitializeOnIOThread(
const FilePath& profile_path, bool is_incognito,
- scoped_refptr<HostContentSettingsMap> content_settings_map) {
+ scoped_refptr<HostContentSettingsMap> content_settings_map,
+ bool clear_local_state_on_exit) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
if (!has_initialized_thread_ids) {
@@ -33,16 +34,23 @@ void ChromeAppCacheService::InitializeOnIOThread(
host_contents_settings_map_ = content_settings_map;
registrar_.Add(
this, NotificationType::PURGE_MEMORY, NotificationService::AllSources());
+ SetClearLocalStateOnExit(clear_local_state_on_exit);
+ if (!is_incognito)
+ cache_path_ = profile_path.Append(chrome::kAppCacheDirname);
// Init our base class.
- Initialize(
- is_incognito ? FilePath() : profile_path.Append(chrome::kAppCacheDirname),
- BrowserThread::GetMessageLoopProxyForThread(BrowserThread::CACHE));
+ Initialize(cache_path_ ,
+ BrowserThread::GetMessageLoopProxyForThread(BrowserThread::CACHE));
set_appcache_policy(this);
}
ChromeAppCacheService::~ChromeAppCacheService() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
+
+ if (clear_local_state_on_exit_ && !cache_path_.empty())
+ BrowserThread::PostTask(
+ BrowserThread::FILE, FROM_HERE,
+ NewRunnableFunction(file_util::Delete, cache_path_, true));
michaeln 2011/01/05 00:59:14 I think if this task was posted to the DB thread f
pastarmovj 2011/01/05 10:47:07 After discussing this with Jochen, we decided that
}
void ChromeAppCacheService::SetOriginQuotaInMemory(
@@ -58,9 +66,9 @@ void ChromeAppCacheService::ResetOriginQuotaInMemory(const GURL& origin) {
storage()->ResetOriginQuotaInMemory(origin);
}
-// static
-void ChromeAppCacheService::ClearLocalState(const FilePath& profile_path) {
- file_util::Delete(profile_path.Append(chrome::kAppCacheDirname), true);
+void ChromeAppCacheService::SetClearLocalStateOnExit(bool clear_local_state) {
+ AutoLock lock(lock_);
michaeln 2011/01/05 00:59:14 Instead of a lock, it might be better to post a ta
pastarmovj 2011/01/05 10:47:07 Done.
+ clear_local_state_on_exit_ = clear_local_state;
}
bool ChromeAppCacheService::CanLoadAppCache(const GURL& manifest_url) {
« no previous file with comments | « chrome/browser/appcache/chrome_appcache_service.h ('k') | chrome/browser/appcache/chrome_appcache_service_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698