Index: components/dom_distiller/core/dom_distiller_database.h |
diff --git a/components/dom_distiller/core/dom_distiller_database.h b/components/dom_distiller/core/dom_distiller_database.h |
index 0f70d2e58639da2cf33c9b8a52bd21f1190c8881..d50568b096ccfd9969eacdecda6423902fd2ac5b 100644 |
--- a/components/dom_distiller/core/dom_distiller_database.h |
+++ b/components/dom_distiller/core/dom_distiller_database.h |
@@ -14,6 +14,7 @@ |
#include "base/memory/scoped_ptr.h" |
#include "base/memory/scoped_vector.h" |
#include "base/memory/weak_ptr.h" |
+#include "base/threading/thread_checker.h" |
#include "components/dom_distiller/core/article_entry.h" |
namespace base { |
@@ -40,11 +41,6 @@ class DomDistillerDatabaseInterface { |
virtual ~DomDistillerDatabaseInterface() {} |
- // Asynchronously destroys the object after all in-progress file operations |
- // have completed. The callbacks for in-progress operations will still be |
- // called. |
- virtual void Destroy() {} |
- |
// Asynchronously initializes the object. |callback| will be invoked on the UI |
// thread when complete. |
virtual void Init(const base::FilePath& database_dir, |
@@ -60,6 +56,8 @@ class DomDistillerDatabaseInterface { |
virtual void LoadEntries(LoadCallback callback) = 0; |
}; |
+// When the DomDistillerDatabase instance is deleted, in-progress asynchronous |
+// operations will be completed and the corresponding callbacks will be called. |
class DomDistillerDatabase |
: public DomDistillerDatabaseInterface { |
public: |
@@ -72,6 +70,8 @@ class DomDistillerDatabase |
virtual ~Database() {} |
}; |
+ // Once constructed, function calls and destruction should all occur on the |
+ // same thread (not necessarily the same as the constructor). |
class LevelDB : public Database { |
public: |
LevelDB(); |
@@ -81,7 +81,7 @@ class DomDistillerDatabase |
virtual bool Load(EntryVector* entries) OVERRIDE; |
private: |
- |
+ base::ThreadChecker thread_checker_; |
scoped_ptr<leveldb::DB> db_; |
}; |
@@ -90,7 +90,6 @@ class DomDistillerDatabase |
virtual ~DomDistillerDatabase(); |
// DomDistillerDatabaseInterface implementation. |
- virtual void Destroy() OVERRIDE; |
virtual void Init(const base::FilePath& database_dir, |
InitCallback callback) OVERRIDE; |
virtual void SaveEntries(scoped_ptr<EntryVector> entries_to_save, |
@@ -103,37 +102,13 @@ class DomDistillerDatabase |
InitCallback callback); |
private: |
- // Whether currently being run by |task_runner_|. |
- bool IsRunByTaskRunner() const; |
- |
- // Whether currently being run on |main_loop_|. |
- bool IsRunOnMainLoop() const; |
- |
- // Deletes |this|. |
- void DestroyFromTaskRunner(); |
- |
- // Initializes the database in |database_dir| and updates |success|. |
- void InitFromTaskRunner(const base::FilePath& database_dir, bool* success); |
- |
- // Saves data to disk and updates |success|. |
- void SaveEntriesFromTaskRunner(scoped_ptr<EntryVector> entries_to_save, |
- bool* success); |
- |
- // Loads entries from disk and updates |success|. |
- void LoadEntriesFromTaskRunner(EntryVector* entries, bool* success); |
- |
- // The MessageLoop that the database was created on. |
- base::MessageLoop* main_loop_; |
+ base::ThreadChecker thread_checker_; |
// Used to run blocking tasks in-order. |
scoped_refptr<base::SequencedTaskRunner> task_runner_; |
scoped_ptr<Database> db_; |
- // Note: This should remain the last member so it'll be destroyed and |
- // invalidate its weak pointers before any other members are destroyed. |
- base::WeakPtrFactory<DomDistillerDatabase> weak_ptr_factory_; |
- |
DISALLOW_COPY_AND_ASSIGN(DomDistillerDatabase); |
}; |