1 // Copyright 2013 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/common/value_builder.h"
6
7 namespace extensions {
8
9 // DictionaryBuilder
10
DictionaryBuilder()11 DictionaryBuilder::DictionaryBuilder() : dict_(new base::DictionaryValue) {}
12
DictionaryBuilder(const base::DictionaryValue & init)13 DictionaryBuilder::DictionaryBuilder(const base::DictionaryValue& init)
14 : dict_(init.DeepCopy()) {}
15
~DictionaryBuilder()16 DictionaryBuilder::~DictionaryBuilder() {}
17
Set(const std::string & path,int in_value)18 DictionaryBuilder& DictionaryBuilder::Set(const std::string& path,
19 int in_value) {
20 dict_->SetWithoutPathExpansion(path, new base::FundamentalValue(in_value));
21 return *this;
22 }
23
Set(const std::string & path,double in_value)24 DictionaryBuilder& DictionaryBuilder::Set(const std::string& path,
25 double in_value) {
26 dict_->SetWithoutPathExpansion(path, new base::FundamentalValue(in_value));
27 return *this;
28 }
29
Set(const std::string & path,const std::string & in_value)30 DictionaryBuilder& DictionaryBuilder::Set(const std::string& path,
31 const std::string& in_value) {
32 dict_->SetWithoutPathExpansion(path, new base::StringValue(in_value));
33 return *this;
34 }
35
Set(const std::string & path,const base::string16 & in_value)36 DictionaryBuilder& DictionaryBuilder::Set(const std::string& path,
37 const base::string16& in_value) {
38 dict_->SetWithoutPathExpansion(path, new base::StringValue(in_value));
39 return *this;
40 }
41
Set(const std::string & path,DictionaryBuilder & in_value)42 DictionaryBuilder& DictionaryBuilder::Set(const std::string& path,
43 DictionaryBuilder& in_value) {
44 dict_->SetWithoutPathExpansion(path, in_value.Build().release());
45 return *this;
46 }
47
Set(const std::string & path,ListBuilder & in_value)48 DictionaryBuilder& DictionaryBuilder::Set(const std::string& path,
49 ListBuilder& in_value) {
50 dict_->SetWithoutPathExpansion(path, in_value.Build().release());
51 return *this;
52 }
53
SetBoolean(const std::string & path,bool in_value)54 DictionaryBuilder& DictionaryBuilder::SetBoolean(
55 const std::string& path, bool in_value) {
56 dict_->SetWithoutPathExpansion(path, new base::FundamentalValue(in_value));
57 return *this;
58 }
59
60 // ListBuilder
61
ListBuilder()62 ListBuilder::ListBuilder() : list_(new base::ListValue) {}
ListBuilder(const base::ListValue & init)63 ListBuilder::ListBuilder(const base::ListValue& init) : list_(init.DeepCopy()) {
64 }
~ListBuilder()65 ListBuilder::~ListBuilder() {}
66
Append(int in_value)67 ListBuilder& ListBuilder::Append(int in_value) {
68 list_->Append(new base::FundamentalValue(in_value));
69 return *this;
70 }
71
Append(double in_value)72 ListBuilder& ListBuilder::Append(double in_value) {
73 list_->Append(new base::FundamentalValue(in_value));
74 return *this;
75 }
76
Append(const std::string & in_value)77 ListBuilder& ListBuilder::Append(const std::string& in_value) {
78 list_->Append(new base::StringValue(in_value));
79 return *this;
80 }
81
Append(const base::string16 & in_value)82 ListBuilder& ListBuilder::Append(const base::string16& in_value) {
83 list_->Append(new base::StringValue(in_value));
84 return *this;
85 }
86
Append(DictionaryBuilder & in_value)87 ListBuilder& ListBuilder::Append(DictionaryBuilder& in_value) {
88 list_->Append(in_value.Build().release());
89 return *this;
90 }
91
Append(ListBuilder & in_value)92 ListBuilder& ListBuilder::Append(ListBuilder& in_value) {
93 list_->Append(in_value.Build().release());
94 return *this;
95 }
96
AppendBoolean(bool in_value)97 ListBuilder& ListBuilder::AppendBoolean(bool in_value) {
98 list_->Append(new base::FundamentalValue(in_value));
99 return *this;
100 }
101
102 } // namespace extensions
103