summaryrefslogtreecommitdiff
path: root/chromium/content/browser/leveldb_wrapper_impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/content/browser/leveldb_wrapper_impl.cc')
-rw-r--r--chromium/content/browser/leveldb_wrapper_impl.cc48
1 files changed, 38 insertions, 10 deletions
diff --git a/chromium/content/browser/leveldb_wrapper_impl.cc b/chromium/content/browser/leveldb_wrapper_impl.cc
index d5173bf1ad1..c17743445aa 100644
--- a/chromium/content/browser/leveldb_wrapper_impl.cc
+++ b/chromium/content/browser/leveldb_wrapper_impl.cc
@@ -6,12 +6,11 @@
#include "base/bind.h"
#include "base/bind_helpers.h"
-#include "base/memory/ptr_util.h"
#include "base/metrics/histogram_macros.h"
#include "base/threading/thread_task_runner_handle.h"
#include "base/trace_event/memory_dump_manager.h"
#include "base/trace_event/process_memory_dump.h"
-#include "components/leveldb/public/cpp/util.h"
+#include "components/services/leveldb/public/cpp/util.h"
#include "content/public/browser/browser_thread.h"
namespace content {
@@ -63,7 +62,17 @@ LevelDBWrapperImpl::LevelDBWrapperImpl(
const std::string& prefix,
Delegate* delegate,
const Options& options)
- : prefix_(leveldb::StdStringToUint8Vector(prefix)),
+ : LevelDBWrapperImpl(database,
+ leveldb::StdStringToUint8Vector(prefix),
+ delegate,
+ options) {}
+
+LevelDBWrapperImpl::LevelDBWrapperImpl(
+ leveldb::mojom::LevelDBDatabase* database,
+ std::vector<uint8_t> prefix,
+ Delegate* delegate,
+ const Options& options)
+ : prefix_(std::move(prefix)),
delegate_(delegate),
database_(database),
cache_mode_(database ? options.cache_mode : CacheMode::KEYS_AND_VALUES),
@@ -105,8 +114,16 @@ std::unique_ptr<LevelDBWrapperImpl> LevelDBWrapperImpl::ForkToNewPrefix(
const std::string& new_prefix,
Delegate* delegate,
const Options& options) {
+ return ForkToNewPrefix(leveldb::StdStringToUint8Vector(new_prefix), delegate,
+ options);
+}
+
+std::unique_ptr<LevelDBWrapperImpl> LevelDBWrapperImpl::ForkToNewPrefix(
+ std::vector<uint8_t> new_prefix,
+ Delegate* delegate,
+ const Options& options) {
auto forked_wrapper = std::make_unique<LevelDBWrapperImpl>(
- database_, new_prefix, delegate, options);
+ database_, std::move(new_prefix), delegate, options);
forked_wrapper->map_state_ = MapState::LOADING_FROM_FORK;
@@ -196,13 +213,25 @@ void LevelDBWrapperImpl::SetCacheModeForTesting(CacheMode cache_mode) {
SetCacheMode(cache_mode);
}
+mojo::InterfacePtrSetElementId LevelDBWrapperImpl::AddObserver(
+ mojom::LevelDBObserverAssociatedPtr observer) {
+ if (cache_mode_ == CacheMode::KEYS_AND_VALUES)
+ observer->ShouldSendOldValueOnMutations(false);
+ return observers_.AddPtr(std::move(observer));
+}
+
+bool LevelDBWrapperImpl::HasObserver(mojo::InterfacePtrSetElementId id) {
+ return observers_.HasPtr(id);
+}
+
+mojom::LevelDBObserverAssociatedPtr LevelDBWrapperImpl::RemoveObserver(
+ mojo::InterfacePtrSetElementId id) {
+ return observers_.RemovePtr(id);
+}
+
void LevelDBWrapperImpl::AddObserver(
mojom::LevelDBObserverAssociatedPtrInfo observer) {
- mojom::LevelDBObserverAssociatedPtr observer_ptr;
- observer_ptr.Bind(std::move(observer));
- if (cache_mode_ == CacheMode::KEYS_AND_VALUES)
- observer_ptr->ShouldSendOldValueOnMutations(false);
- observers_.AddPtr(std::move(observer_ptr));
+ AddObserver(mojom::LevelDBObserverAssociatedPtr(std::move(observer)));
}
void LevelDBWrapperImpl::Put(
@@ -724,7 +753,6 @@ void LevelDBWrapperImpl::CommitChanges() {
bool has_changes = !operations.empty() ||
!commit_batch_->changed_values.empty() ||
!commit_batch_->changed_keys.empty();
-
if (commit_batch_->clear_all_first) {
BatchedOperationPtr item = BatchedOperation::New();
item->type = leveldb::mojom::BatchOperationType::DELETE_PREFIXED_KEY;