| Index: components/leveldb_proto/proto_database_impl.h
|
| diff --git a/components/leveldb_proto/proto_database_impl.h b/components/leveldb_proto/proto_database_impl.h
|
| index da02eed13876f266f1a45fc883aeae95c061039f..9997d382877a98ac3f7482c7495f20df0783e6bf 100644
|
| --- a/components/leveldb_proto/proto_database_impl.h
|
| +++ b/components/leveldb_proto/proto_database_impl.h
|
| @@ -53,6 +53,8 @@ class ProtoDatabaseImpl : public ProtoDatabase<T> {
|
| const typename ProtoDatabase<T>::UpdateCallback& callback) override;
|
| void LoadEntries(
|
| const typename ProtoDatabase<T>::LoadCallback& callback) override;
|
| + void LoadKeys(
|
| + const typename ProtoDatabase<T>::LoadKeysCallback& callback) override;
|
| void GetEntry(
|
| const std::string& key,
|
| const typename ProtoDatabase<T>::GetCallback& callback) override;
|
| @@ -94,12 +96,20 @@ void RunUpdateCallback(
|
|
|
| template <typename T>
|
| void RunLoadCallback(const typename ProtoDatabase<T>::LoadCallback& callback,
|
| - const bool* success,
|
| + bool* success,
|
| std::unique_ptr<std::vector<T>> entries) {
|
| callback.Run(*success, std::move(entries));
|
| }
|
|
|
| template <typename T>
|
| +void RunLoadKeysCallback(
|
| + const typename ProtoDatabase<T>::LoadKeysCallback& callback,
|
| + std::unique_ptr<bool> success,
|
| + std::unique_ptr<std::vector<std::string>> keys) {
|
| + callback.Run(*success, std::move(keys));
|
| +}
|
| +
|
| +template <typename T>
|
| void RunGetCallback(const typename ProtoDatabase<T>::GetCallback& callback,
|
| const bool* success,
|
| const bool* found,
|
| @@ -171,6 +181,15 @@ void LoadEntriesFromTaskRunner(LevelDB* database,
|
| }
|
| }
|
|
|
| +void LoadKeysFromTaskRunner(LevelDB* database,
|
| + std::vector<std::string>* keys,
|
| + bool* success) {
|
| + DCHECK(success);
|
| + DCHECK(keys);
|
| + keys->clear();
|
| + *success = database->LoadKeys(keys);
|
| +}
|
| +
|
| template <typename T>
|
| void GetEntryFromTaskRunner(LevelDB* database,
|
| const std::string& key,
|
| @@ -286,6 +305,21 @@ void ProtoDatabaseImpl<T>::LoadEntries(
|
| }
|
|
|
| template <typename T>
|
| +void ProtoDatabaseImpl<T>::LoadKeys(
|
| + const typename ProtoDatabase<T>::LoadKeysCallback& callback) {
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| + auto success = base::MakeUnique<bool>(false);
|
| + auto keys = base::MakeUnique<std::vector<std::string>>();
|
| + auto load_task =
|
| + base::Bind(LoadKeysFromTaskRunner, base::Unretained(db_.get()),
|
| + keys.get(), success.get());
|
| + task_runner_->PostTaskAndReply(
|
| + FROM_HERE, load_task,
|
| + base::Bind(RunLoadKeysCallback<T>, callback, base::Passed(&success),
|
| + base::Passed(&keys)));
|
| +}
|
| +
|
| +template <typename T>
|
| void ProtoDatabaseImpl<T>::GetEntry(
|
| const std::string& key,
|
| const typename ProtoDatabase<T>::GetCallback& callback) {
|
|
|