1a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "extensions/browser/value_store/value_store_change.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/json/json_writer.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/logging.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// static 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::string ValueStoreChange::ToJson( 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const ValueStoreChangeList& changes) { 135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::DictionaryValue changes_value; 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (ValueStoreChangeList::const_iterator it = changes.begin(); 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) it != changes.end(); ++it) { 165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::DictionaryValue* change_value = new base::DictionaryValue(); 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (it->old_value()) { 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) change_value->Set("oldValue", it->old_value()->DeepCopy()); 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (it->new_value()) { 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) change_value->Set("newValue", it->new_value()->DeepCopy()); 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) changes_value.SetWithoutPathExpansion(it->key(), change_value); 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string json; 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::JSONWriter::Write(&changes_value, &json); 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return json; 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ValueStoreChange::ValueStoreChange( 315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const std::string& key, base::Value* old_value, base::Value* new_value) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : inner_(new Inner(key, old_value, new_value)) {} 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ValueStoreChange::~ValueStoreChange() {} 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const std::string& ValueStoreChange::key() const { 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(inner_.get()); 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return inner_->key_; 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)const base::Value* ValueStoreChange::old_value() const { 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(inner_.get()); 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return inner_->old_value_.get(); 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)const base::Value* ValueStoreChange::new_value() const { 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(inner_.get()); 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return inner_->new_value_.get(); 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ValueStoreChange::Inner::Inner( 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& key, base::Value* old_value, base::Value* new_value) 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : key_(key), old_value_(old_value), new_value_(new_value) {} 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ValueStoreChange::Inner::~Inner() {} 56