1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "extensions/browser/value_store/value_store_change.h" 6 7 #include "base/json/json_writer.h" 8 #include "base/logging.h" 9 10 // static 11 std::string ValueStoreChange::ToJson( 12 const ValueStoreChangeList& changes) { 13 base::DictionaryValue changes_value; 14 for (ValueStoreChangeList::const_iterator it = changes.begin(); 15 it != changes.end(); ++it) { 16 base::DictionaryValue* change_value = new base::DictionaryValue(); 17 if (it->old_value()) { 18 change_value->Set("oldValue", it->old_value()->DeepCopy()); 19 } 20 if (it->new_value()) { 21 change_value->Set("newValue", it->new_value()->DeepCopy()); 22 } 23 changes_value.SetWithoutPathExpansion(it->key(), change_value); 24 } 25 std::string json; 26 base::JSONWriter::Write(&changes_value, &json); 27 return json; 28 } 29 30 ValueStoreChange::ValueStoreChange( 31 const std::string& key, base::Value* old_value, base::Value* new_value) 32 : inner_(new Inner(key, old_value, new_value)) {} 33 34 ValueStoreChange::~ValueStoreChange() {} 35 36 const std::string& ValueStoreChange::key() const { 37 DCHECK(inner_.get()); 38 return inner_->key_; 39 } 40 41 const base::Value* ValueStoreChange::old_value() const { 42 DCHECK(inner_.get()); 43 return inner_->old_value_.get(); 44 } 45 46 const base::Value* ValueStoreChange::new_value() const { 47 DCHECK(inner_.get()); 48 return inner_->new_value_.get(); 49 } 50 51 ValueStoreChange::Inner::Inner( 52 const std::string& key, base::Value* old_value, base::Value* new_value) 53 : key_(key), old_value_(old_value), new_value_(new_value) {} 54 55 ValueStoreChange::Inner::~Inner() {} 56