diff options
Diffstat (limited to 'chromium/extensions/browser/value_store/value_store_change.cc')
-rw-r--r-- | chromium/extensions/browser/value_store/value_store_change.cc | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/chromium/extensions/browser/value_store/value_store_change.cc b/chromium/extensions/browser/value_store/value_store_change.cc new file mode 100644 index 00000000000..3bbad592d06 --- /dev/null +++ b/chromium/extensions/browser/value_store/value_store_change.cc @@ -0,0 +1,57 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "extensions/browser/value_store/value_store_change.h" + +#include "base/json/json_writer.h" +#include "base/logging.h" + +// static +std::string ValueStoreChange::ToJson( + const ValueStoreChangeList& changes) { + base::DictionaryValue changes_value; + for (ValueStoreChangeList::const_iterator it = changes.begin(); + it != changes.end(); ++it) { + base::DictionaryValue* change_value = new base::DictionaryValue(); + if (it->old_value()) { + change_value->Set("oldValue", it->old_value()->DeepCopy()); + } + if (it->new_value()) { + change_value->Set("newValue", it->new_value()->DeepCopy()); + } + changes_value.SetWithoutPathExpansion(it->key(), change_value); + } + std::string json; + base::JSONWriter::Write(changes_value, &json); + return json; +} + +ValueStoreChange::ValueStoreChange( + const std::string& key, base::Value* old_value, base::Value* new_value) + : inner_(new Inner(key, old_value, new_value)) {} + +ValueStoreChange::ValueStoreChange(const ValueStoreChange& other) = default; + +ValueStoreChange::~ValueStoreChange() {} + +const std::string& ValueStoreChange::key() const { + DCHECK(inner_.get()); + return inner_->key_; +} + +const base::Value* ValueStoreChange::old_value() const { + DCHECK(inner_.get()); + return inner_->old_value_.get(); +} + +const base::Value* ValueStoreChange::new_value() const { + DCHECK(inner_.get()); + return inner_->new_value_.get(); +} + +ValueStoreChange::Inner::Inner( + const std::string& key, base::Value* old_value, base::Value* new_value) + : key_(key), old_value_(old_value), new_value_(new_value) {} + +ValueStoreChange::Inner::~Inner() {} |