Home | History | Annotate | Download | only in value_store
      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