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

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

Issue 5430004: Refactored cookies persistent store clean-up on shutdown. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Lock protected the clear on exit flag. Created 10 years 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/sqlite_persistent_cookie_store.cc
diff --git a/chrome/browser/net/sqlite_persistent_cookie_store.cc b/chrome/browser/net/sqlite_persistent_cookie_store.cc
index 88b7bb9bc8026b7d4fa938ca72fe20b5c694789d..6a77e7fd73d2e97cfe9158fa9e6a1fad11d4d42d 100644
--- a/chrome/browser/net/sqlite_persistent_cookie_store.cc
+++ b/chrome/browser/net/sqlite_persistent_cookie_store.cc
@@ -31,7 +31,8 @@ class SQLitePersistentCookieStore::Backend
explicit Backend(const FilePath& path)
: path_(path),
db_(NULL),
- num_pending_(0) {
+ num_pending_(0),
+ clear_local_state_on_exit_(false) {
}
// Creates or load the SQLite database.
@@ -50,6 +51,8 @@ class SQLitePersistentCookieStore::Backend
// before the object is destructed.
void Close();
+ void SetClearLocalStateOnExit(bool clear_local_state);
+
private:
friend class base::RefCountedThreadSafe<SQLitePersistentCookieStore::Backend>;
@@ -98,7 +101,10 @@ class SQLitePersistentCookieStore::Backend
typedef std::list<PendingOperation*> PendingOperationsList;
PendingOperationsList pending_;
PendingOperationsList::size_type num_pending_;
- Lock pending_lock_; // Guard pending_ and num_pending_
+ // True if the persistent store should be deleted upon destruction.
+ bool clear_local_state_on_exit_;
+ // Guard |pending_|, |num_pending_| and |clear_local_state_on_exit_|.
+ Lock lock_;
DISALLOW_COPY_AND_ASSIGN(Backend);
};
@@ -297,7 +303,7 @@ void SQLitePersistentCookieStore::Backend::BatchOperation(
PendingOperationsList::size_type num_pending;
{
- AutoLock locked(pending_lock_);
+ AutoLock locked(lock_);
pending_.push_back(po.release());
num_pending = ++num_pending_;
}
@@ -319,7 +325,7 @@ void SQLitePersistentCookieStore::Backend::Commit() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
PendingOperationsList ops;
{
- AutoLock locked(pending_lock_);
+ AutoLock locked(lock_);
pending_.swap(ops);
num_pending_ = 0;
}
@@ -420,8 +426,16 @@ void SQLitePersistentCookieStore::Backend::InternalBackgroundClose() {
Commit();
db_.reset();
+
+ if (clear_local_state_on_exit_)
+ file_util::Delete(path_, false);
}
+void SQLitePersistentCookieStore::Backend::SetClearLocalStateOnExit(
+ bool clear_local_state) {
+ AutoLock locked(lock_);
+ clear_local_state_on_exit_ = clear_local_state;
+}
SQLitePersistentCookieStore::SQLitePersistentCookieStore(const FilePath& path)
: backend_(new Backend(path)) {
}
@@ -458,8 +472,8 @@ void SQLitePersistentCookieStore::DeleteCookie(
backend_->DeleteCookie(cc);
}
-// static
-void SQLitePersistentCookieStore::ClearLocalState(
- const FilePath& path) {
- file_util::Delete(path, false);
+void SQLitePersistentCookieStore::SetClearLocalStateOnExit(
+ bool clear_local_state) {
+ if (backend_.get())
+ backend_->SetClearLocalStateOnExit(clear_local_state);
}
« no previous file with comments | « chrome/browser/net/sqlite_persistent_cookie_store.h ('k') | chrome/browser/net/sqlite_persistent_cookie_store_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698