diff options
Diffstat (limited to 'chromium/content/browser/leveldb_wrapper_impl.cc')
-rw-r--r-- | chromium/content/browser/leveldb_wrapper_impl.cc | 48 |
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; |