1f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Copyright 2013 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)
5f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "extensions/common/value_builder.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace extensions {
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// DictionaryBuilder
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
117d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)DictionaryBuilder::DictionaryBuilder() : dict_(new base::DictionaryValue) {}
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
137d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)DictionaryBuilder::DictionaryBuilder(const base::DictionaryValue& init)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    : dict_(init.DeepCopy()) {}
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)DictionaryBuilder::~DictionaryBuilder() {}
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)DictionaryBuilder& DictionaryBuilder::Set(const std::string& path,
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                          int in_value) {
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  dict_->SetWithoutPathExpansion(path, new base::FundamentalValue(in_value));
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return *this;
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)DictionaryBuilder& DictionaryBuilder::Set(const std::string& path,
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                          double in_value) {
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  dict_->SetWithoutPathExpansion(path, new base::FundamentalValue(in_value));
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return *this;
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)DictionaryBuilder& DictionaryBuilder::Set(const std::string& path,
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                          const std::string& in_value) {
322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  dict_->SetWithoutPathExpansion(path, new base::StringValue(in_value));
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return *this;
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)DictionaryBuilder& DictionaryBuilder::Set(const std::string& path,
375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                                          const base::string16& in_value) {
382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  dict_->SetWithoutPathExpansion(path, new base::StringValue(in_value));
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return *this;
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)DictionaryBuilder& DictionaryBuilder::Set(const std::string& path,
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                          DictionaryBuilder& in_value) {
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  dict_->SetWithoutPathExpansion(path, in_value.Build().release());
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return *this;
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)DictionaryBuilder& DictionaryBuilder::Set(const std::string& path,
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                          ListBuilder& in_value) {
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  dict_->SetWithoutPathExpansion(path, in_value.Build().release());
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return *this;
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)DictionaryBuilder& DictionaryBuilder::SetBoolean(
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const std::string& path, bool in_value) {
562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  dict_->SetWithoutPathExpansion(path, new base::FundamentalValue(in_value));
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return *this;
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// ListBuilder
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
627d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)ListBuilder::ListBuilder() : list_(new base::ListValue) {}
637d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)ListBuilder::ListBuilder(const base::ListValue& init) : list_(init.DeepCopy()) {
647d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)}
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ListBuilder::~ListBuilder() {}
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ListBuilder& ListBuilder::Append(int in_value) {
682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  list_->Append(new base::FundamentalValue(in_value));
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return *this;
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ListBuilder& ListBuilder::Append(double in_value) {
732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  list_->Append(new base::FundamentalValue(in_value));
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return *this;
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ListBuilder& ListBuilder::Append(const std::string& in_value) {
782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  list_->Append(new base::StringValue(in_value));
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return *this;
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
825d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)ListBuilder& ListBuilder::Append(const base::string16& in_value) {
832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  list_->Append(new base::StringValue(in_value));
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return *this;
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ListBuilder& ListBuilder::Append(DictionaryBuilder& in_value) {
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  list_->Append(in_value.Build().release());
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return *this;
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ListBuilder& ListBuilder::Append(ListBuilder& in_value) {
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  list_->Append(in_value.Build().release());
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return *this;
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ListBuilder& ListBuilder::AppendBoolean(bool in_value) {
982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  list_->Append(new base::FundamentalValue(in_value));
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return *this;
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace extensions
103