Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(591)

Side by Side Diff: dbus/values_util.cc

Issue 2539363004: Make base::Value::TYPE a scoped enum. (Closed)
Patch Set: Rebase Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "dbus/values_util.h" 5 #include "dbus/values_util.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/json/json_writer.h" 9 #include "base/json/json_writer.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 if (!value) 60 if (!value)
61 return false; 61 return false;
62 dictionary_value->SetWithoutPathExpansion(key_string, std::move(value)); 62 dictionary_value->SetWithoutPathExpansion(key_string, std::move(value));
63 } 63 }
64 return true; 64 return true;
65 } 65 }
66 66
67 // Gets the D-Bus type signature for the value. 67 // Gets the D-Bus type signature for the value.
68 std::string GetTypeSignature(const base::Value& value) { 68 std::string GetTypeSignature(const base::Value& value) {
69 switch (value.GetType()) { 69 switch (value.GetType()) {
70 case base::Value::TYPE_BOOLEAN: 70 case base::Value::Type::BOOLEAN:
71 return "b"; 71 return "b";
72 case base::Value::TYPE_INTEGER: 72 case base::Value::Type::INTEGER:
73 return "i"; 73 return "i";
74 case base::Value::TYPE_DOUBLE: 74 case base::Value::Type::DOUBLE:
75 return "d"; 75 return "d";
76 case base::Value::TYPE_STRING: 76 case base::Value::Type::STRING:
77 return "s"; 77 return "s";
78 case base::Value::TYPE_BINARY: 78 case base::Value::Type::BINARY:
79 return "ay"; 79 return "ay";
80 case base::Value::TYPE_DICTIONARY: 80 case base::Value::Type::DICTIONARY:
81 return "a{sv}"; 81 return "a{sv}";
82 case base::Value::TYPE_LIST: 82 case base::Value::Type::LIST:
83 return "av"; 83 return "av";
84 default: 84 default:
85 DLOG(ERROR) << "Unexpected type " << value.GetType(); 85 DLOG(ERROR) << "Unexpected type " << value.GetType();
86 return std::string(); 86 return std::string();
87 } 87 }
88 } 88 }
89 89
90 } // namespace 90 } // namespace
91 91
92 std::unique_ptr<base::Value> PopDataAsValue(MessageReader* reader) { 92 std::unique_ptr<base::Value> PopDataAsValue(MessageReader* reader) {
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
212 if (reader->PopVariant(&sub_reader)) 212 if (reader->PopVariant(&sub_reader))
213 result = PopDataAsValue(&sub_reader); 213 result = PopDataAsValue(&sub_reader);
214 break; 214 break;
215 } 215 }
216 } 216 }
217 return result; 217 return result;
218 } 218 }
219 219
220 void AppendBasicTypeValueData(MessageWriter* writer, const base::Value& value) { 220 void AppendBasicTypeValueData(MessageWriter* writer, const base::Value& value) {
221 switch (value.GetType()) { 221 switch (value.GetType()) {
222 case base::Value::TYPE_BOOLEAN: { 222 case base::Value::Type::BOOLEAN: {
223 bool bool_value = false; 223 bool bool_value = false;
224 bool success = value.GetAsBoolean(&bool_value); 224 bool success = value.GetAsBoolean(&bool_value);
225 DCHECK(success); 225 DCHECK(success);
226 writer->AppendBool(bool_value); 226 writer->AppendBool(bool_value);
227 break; 227 break;
228 } 228 }
229 case base::Value::TYPE_INTEGER: { 229 case base::Value::Type::INTEGER: {
230 int int_value = 0; 230 int int_value = 0;
231 bool success = value.GetAsInteger(&int_value); 231 bool success = value.GetAsInteger(&int_value);
232 DCHECK(success); 232 DCHECK(success);
233 writer->AppendInt32(int_value); 233 writer->AppendInt32(int_value);
234 break; 234 break;
235 } 235 }
236 case base::Value::TYPE_DOUBLE: { 236 case base::Value::Type::DOUBLE: {
237 double double_value = 0; 237 double double_value = 0;
238 bool success = value.GetAsDouble(&double_value); 238 bool success = value.GetAsDouble(&double_value);
239 DCHECK(success); 239 DCHECK(success);
240 writer->AppendDouble(double_value); 240 writer->AppendDouble(double_value);
241 break; 241 break;
242 } 242 }
243 case base::Value::TYPE_STRING: { 243 case base::Value::Type::STRING: {
244 std::string string_value; 244 std::string string_value;
245 bool success = value.GetAsString(&string_value); 245 bool success = value.GetAsString(&string_value);
246 DCHECK(success); 246 DCHECK(success);
247 writer->AppendString(string_value); 247 writer->AppendString(string_value);
248 break; 248 break;
249 } 249 }
250 default: 250 default:
251 DLOG(ERROR) << "Unexpected type " << value.GetType(); 251 DLOG(ERROR) << "Unexpected type " << value.GetType();
252 break; 252 break;
253 } 253 }
254 } 254 }
255 255
256 void AppendBasicTypeValueDataAsVariant(MessageWriter* writer, 256 void AppendBasicTypeValueDataAsVariant(MessageWriter* writer,
257 const base::Value& value) { 257 const base::Value& value) {
258 MessageWriter sub_writer(NULL); 258 MessageWriter sub_writer(NULL);
259 writer->OpenVariant(GetTypeSignature(value), &sub_writer); 259 writer->OpenVariant(GetTypeSignature(value), &sub_writer);
260 AppendBasicTypeValueData(&sub_writer, value); 260 AppendBasicTypeValueData(&sub_writer, value);
261 writer->CloseContainer(&sub_writer); 261 writer->CloseContainer(&sub_writer);
262 } 262 }
263 263
264 void AppendValueData(MessageWriter* writer, const base::Value& value) { 264 void AppendValueData(MessageWriter* writer, const base::Value& value) {
265 switch (value.GetType()) { 265 switch (value.GetType()) {
266 case base::Value::TYPE_DICTIONARY: { 266 case base::Value::Type::DICTIONARY: {
267 const base::DictionaryValue* dictionary = NULL; 267 const base::DictionaryValue* dictionary = NULL;
268 value.GetAsDictionary(&dictionary); 268 value.GetAsDictionary(&dictionary);
269 dbus::MessageWriter array_writer(NULL); 269 dbus::MessageWriter array_writer(NULL);
270 writer->OpenArray("{sv}", &array_writer); 270 writer->OpenArray("{sv}", &array_writer);
271 for (base::DictionaryValue::Iterator iter(*dictionary); 271 for (base::DictionaryValue::Iterator iter(*dictionary);
272 !iter.IsAtEnd(); iter.Advance()) { 272 !iter.IsAtEnd(); iter.Advance()) {
273 dbus::MessageWriter dict_entry_writer(NULL); 273 dbus::MessageWriter dict_entry_writer(NULL);
274 array_writer.OpenDictEntry(&dict_entry_writer); 274 array_writer.OpenDictEntry(&dict_entry_writer);
275 dict_entry_writer.AppendString(iter.key()); 275 dict_entry_writer.AppendString(iter.key());
276 AppendValueDataAsVariant(&dict_entry_writer, iter.value()); 276 AppendValueDataAsVariant(&dict_entry_writer, iter.value());
277 array_writer.CloseContainer(&dict_entry_writer); 277 array_writer.CloseContainer(&dict_entry_writer);
278 } 278 }
279 writer->CloseContainer(&array_writer); 279 writer->CloseContainer(&array_writer);
280 break; 280 break;
281 } 281 }
282 case base::Value::TYPE_LIST: { 282 case base::Value::Type::LIST: {
283 const base::ListValue* list = NULL; 283 const base::ListValue* list = NULL;
284 value.GetAsList(&list); 284 value.GetAsList(&list);
285 dbus::MessageWriter array_writer(NULL); 285 dbus::MessageWriter array_writer(NULL);
286 writer->OpenArray("v", &array_writer); 286 writer->OpenArray("v", &array_writer);
287 for (const auto& value : *list) { 287 for (const auto& value : *list) {
288 AppendValueDataAsVariant(&array_writer, *value); 288 AppendValueDataAsVariant(&array_writer, *value);
289 } 289 }
290 writer->CloseContainer(&array_writer); 290 writer->CloseContainer(&array_writer);
291 break; 291 break;
292 } 292 }
293 case base::Value::TYPE_BOOLEAN: 293 case base::Value::Type::BOOLEAN:
294 case base::Value::TYPE_INTEGER: 294 case base::Value::Type::INTEGER:
295 case base::Value::TYPE_DOUBLE: 295 case base::Value::Type::DOUBLE:
296 case base::Value::TYPE_STRING: 296 case base::Value::Type::STRING:
297 AppendBasicTypeValueData(writer, value); 297 AppendBasicTypeValueData(writer, value);
298 break; 298 break;
299 default: 299 default:
300 DLOG(ERROR) << "Unexpected type: " << value.GetType(); 300 DLOG(ERROR) << "Unexpected type: " << value.GetType();
301 } 301 }
302 } 302 }
303 303
304 void AppendValueDataAsVariant(MessageWriter* writer, const base::Value& value) { 304 void AppendValueDataAsVariant(MessageWriter* writer, const base::Value& value) {
305 MessageWriter variant_writer(NULL); 305 MessageWriter variant_writer(NULL);
306 writer->OpenVariant(GetTypeSignature(value), &variant_writer); 306 writer->OpenVariant(GetTypeSignature(value), &variant_writer);
307 AppendValueData(&variant_writer, value); 307 AppendValueData(&variant_writer, value);
308 writer->CloseContainer(&variant_writer); 308 writer->CloseContainer(&variant_writer);
309 } 309 }
310 310
311 } // namespace dbus 311 } // namespace dbus
OLDNEW
« no previous file with comments | « content/shell/browser/shell_devtools_frontend.cc ('k') | device/geolocation/network_location_request.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698