| Index: extensions/browser/value_store/lazy_leveldb.cc
|
| diff --git a/extensions/browser/value_store/lazy_leveldb.cc b/extensions/browser/value_store/lazy_leveldb.cc
|
| index ca5501d075f90b056b7d8a160d15dbf76e26d90e..1d972f849111fe28b4ef84ffc92502f9380edcf2 100644
|
| --- a/extensions/browser/value_store/lazy_leveldb.cc
|
| +++ b/extensions/browser/value_store/lazy_leveldb.cc
|
| @@ -8,6 +8,8 @@
|
| #include "base/json/json_reader.h"
|
| #include "base/memory/ptr_util.h"
|
| #include "base/strings/string_util.h"
|
| +#include "base/threading/sequenced_task_runner_handle.h"
|
| +#include "base/threading/thread_restrictions.h"
|
| #include "content/public/browser/browser_thread.h"
|
| #include "third_party/leveldatabase/env_chromium.h"
|
| #include "third_party/leveldatabase/src/include/leveldb/iterator.h"
|
| @@ -50,7 +52,7 @@ ValueStore::StatusCode LevelDbToValueStoreStatusCode(
|
| }
|
|
|
| leveldb::Status DeleteValue(leveldb::DB* db, const std::string& key) {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::FILE);
|
| + base::ThreadRestrictions::AssertIOAllowed();
|
|
|
| leveldb::WriteBatch batch;
|
| batch.Delete(key);
|
| @@ -86,13 +88,12 @@ LazyLevelDb::LazyLevelDb(const std::string& uma_client_name,
|
| }
|
|
|
| LazyLevelDb::~LazyLevelDb() {
|
| - if (db_ && !BrowserThread::CurrentlyOn(BrowserThread::FILE))
|
| - BrowserThread::DeleteSoon(BrowserThread::FILE, FROM_HERE, db_.release());
|
| + base::ThreadRestrictions::AssertIOAllowed();
|
| }
|
|
|
| ValueStore::Status LazyLevelDb::Read(const std::string& key,
|
| std::unique_ptr<base::Value>* value) {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::FILE);
|
| + base::ThreadRestrictions::AssertIOAllowed();
|
| DCHECK(value);
|
|
|
| std::string value_as_json;
|
| @@ -118,7 +119,7 @@ ValueStore::Status LazyLevelDb::Read(const std::string& key,
|
| }
|
|
|
| ValueStore::Status LazyLevelDb::Delete(const std::string& key) {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::FILE);
|
| + base::ThreadRestrictions::AssertIOAllowed();
|
|
|
| ValueStore::Status status = EnsureDbIsOpen();
|
| if (!status.ok())
|
| @@ -154,7 +155,7 @@ ValueStore::BackingStoreRestoreStatus LazyLevelDb::LogRestoreStatus(
|
|
|
| ValueStore::BackingStoreRestoreStatus LazyLevelDb::FixCorruption(
|
| const std::string* key) {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::FILE);
|
| + base::ThreadRestrictions::AssertIOAllowed();
|
| leveldb::Status s;
|
| if (key && db_) {
|
| s = DeleteValue(db_.get(), *key);
|
| @@ -222,7 +223,7 @@ ValueStore::BackingStoreRestoreStatus LazyLevelDb::FixCorruption(
|
| }
|
|
|
| ValueStore::Status LazyLevelDb::EnsureDbIsOpen() {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::FILE);
|
| + base::ThreadRestrictions::AssertIOAllowed();
|
|
|
| if (db_)
|
| return ValueStore::Status();
|
| @@ -268,7 +269,7 @@ ValueStore::Status LazyLevelDb::ToValueStoreError(
|
| }
|
|
|
| bool LazyLevelDb::DeleteDbFile() {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::FILE);
|
| + base::ThreadRestrictions::AssertIOAllowed();
|
| db_.reset(); // release any lock on the directory
|
| if (!base::DeleteFile(db_path_, true /* recursive */)) {
|
| LOG(WARNING) << "Failed to delete leveldb database at " << db_path_.value();
|
|
|