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.
5 #include "extensions/common/value_builder.h"
7 #include "base/json/json_writer.h"
13 DictionaryBuilder::DictionaryBuilder() : dict_(new base::DictionaryValue
) {}
15 DictionaryBuilder::DictionaryBuilder(const base::DictionaryValue
& init
)
16 : dict_(init
.DeepCopy()) {}
18 DictionaryBuilder::~DictionaryBuilder() {}
20 std::string
DictionaryBuilder::ToJSON() const {
22 base::JSONWriter::WriteWithOptions(
23 *dict_
, base::JSONWriter::OPTIONS_PRETTY_PRINT
, &json
);
27 DictionaryBuilder
& DictionaryBuilder::Set(const std::string
& path
,
29 dict_
->SetWithoutPathExpansion(path
, new base::FundamentalValue(in_value
));
33 DictionaryBuilder
& DictionaryBuilder::Set(const std::string
& path
,
35 dict_
->SetWithoutPathExpansion(path
, new base::FundamentalValue(in_value
));
39 DictionaryBuilder
& DictionaryBuilder::Set(const std::string
& path
,
40 const std::string
& in_value
) {
41 dict_
->SetWithoutPathExpansion(path
, new base::StringValue(in_value
));
45 DictionaryBuilder
& DictionaryBuilder::Set(const std::string
& path
,
46 const base::string16
& in_value
) {
47 dict_
->SetWithoutPathExpansion(path
, new base::StringValue(in_value
));
51 DictionaryBuilder
& DictionaryBuilder::Set(const std::string
& path
,
52 DictionaryBuilder
& in_value
) {
53 dict_
->SetWithoutPathExpansion(path
, in_value
.Build().Pass());
57 DictionaryBuilder
& DictionaryBuilder::Set(const std::string
& path
,
58 ListBuilder
& in_value
) {
59 dict_
->SetWithoutPathExpansion(path
, in_value
.Build().Pass());
63 DictionaryBuilder
& DictionaryBuilder::Set(const std::string
& path
,
64 scoped_ptr
<base::Value
> in_value
) {
65 dict_
->SetWithoutPathExpansion(path
, in_value
.Pass());
69 DictionaryBuilder
& DictionaryBuilder::SetBoolean(
70 const std::string
& path
, bool in_value
) {
71 dict_
->SetWithoutPathExpansion(path
, new base::FundamentalValue(in_value
));
77 ListBuilder::ListBuilder() : list_(new base::ListValue
) {}
78 ListBuilder::ListBuilder(const base::ListValue
& init
) : list_(init
.DeepCopy()) {
80 ListBuilder::~ListBuilder() {}
82 ListBuilder
& ListBuilder::Append(int in_value
) {
83 list_
->Append(new base::FundamentalValue(in_value
));
87 ListBuilder
& ListBuilder::Append(double in_value
) {
88 list_
->Append(new base::FundamentalValue(in_value
));
92 ListBuilder
& ListBuilder::Append(const std::string
& in_value
) {
93 list_
->Append(new base::StringValue(in_value
));
97 ListBuilder
& ListBuilder::Append(const base::string16
& in_value
) {
98 list_
->Append(new base::StringValue(in_value
));
102 ListBuilder
& ListBuilder::Append(DictionaryBuilder
& in_value
) {
103 list_
->Append(in_value
.Build().Pass());
107 ListBuilder
& ListBuilder::Append(ListBuilder
& in_value
) {
108 list_
->Append(in_value
.Build().Pass());
112 ListBuilder
& ListBuilder::AppendBoolean(bool in_value
) {
113 list_
->Append(new base::FundamentalValue(in_value
));
117 } // namespace extensions