OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 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 "chromeos/dbus/nfc_client_helpers.h" | 5 #include "chromeos/dbus/nfc_client_helpers.h" |
6 | 6 |
7 #include "base/stl_util.h" | 7 #include "base/stl_util.h" |
8 #include "dbus/values_util.h" | 8 #include "dbus/values_util.h" |
9 | 9 |
10 namespace chromeos { | 10 namespace chromeos { |
(...skipping 16 matching lines...) Expand all Loading... |
27 dbus::MessageReader reader(response); | 27 dbus::MessageReader reader(response); |
28 error_name = response->GetErrorName(); | 28 error_name = response->GetErrorName(); |
29 reader.PopString(&error_message); | 29 reader.PopString(&error_message); |
30 } else { | 30 } else { |
31 error_name = kNoResponseError; | 31 error_name = kNoResponseError; |
32 error_message = ""; | 32 error_message = ""; |
33 } | 33 } |
34 error_callback.Run(error_name, error_message); | 34 error_callback.Run(error_name, error_message); |
35 } | 35 } |
36 | 36 |
37 void AppendValueDataAsVariant(dbus::MessageWriter* writer, | |
38 const base::Value& value) { | |
39 switch (value.GetType()) { | |
40 case base::Value::TYPE_DICTIONARY: { | |
41 const base::DictionaryValue* dictionary = NULL; | |
42 value.GetAsDictionary(&dictionary); | |
43 dbus::MessageWriter variant_writer(NULL); | |
44 dbus::MessageWriter array_writer(NULL); | |
45 writer->OpenVariant("a{sv}", &variant_writer); | |
46 variant_writer.OpenArray("{sv}", &array_writer); | |
47 for (base::DictionaryValue::Iterator iter(*dictionary); | |
48 !iter.IsAtEnd(); iter.Advance()) { | |
49 dbus::MessageWriter entry_writer(NULL); | |
50 array_writer.OpenDictEntry(&entry_writer); | |
51 entry_writer.AppendString(iter.key()); | |
52 AppendValueDataAsVariant(&entry_writer, iter.value()); | |
53 array_writer.CloseContainer(&entry_writer); | |
54 } | |
55 variant_writer.CloseContainer(&array_writer); | |
56 writer->CloseContainer(&variant_writer); | |
57 break; | |
58 } | |
59 case base::Value::TYPE_LIST: { | |
60 const base::ListValue* list = NULL; | |
61 value.GetAsList(&list); | |
62 dbus::MessageWriter variant_writer(NULL); | |
63 dbus::MessageWriter array_writer(NULL); | |
64 writer->OpenVariant("av", &variant_writer); | |
65 variant_writer.OpenArray("v", &array_writer); | |
66 for (base::ListValue::const_iterator iter = list->begin(); | |
67 iter != list->end(); ++iter) { | |
68 const base::Value* value = *iter; | |
69 AppendValueDataAsVariant(&array_writer, *value); | |
70 } | |
71 variant_writer.CloseContainer(&array_writer); | |
72 writer->CloseContainer(&variant_writer); | |
73 break; | |
74 } | |
75 case base::Value::TYPE_BOOLEAN: | |
76 case base::Value::TYPE_INTEGER: | |
77 case base::Value::TYPE_DOUBLE: | |
78 case base::Value::TYPE_STRING: | |
79 dbus::AppendBasicTypeValueDataAsVariant(writer, value); | |
80 break; | |
81 default: | |
82 DLOG(ERROR) << "Unexpected type: " << value.GetType(); | |
83 } | |
84 } | |
85 | |
86 DBusObjectMap::DBusObjectMap(const std::string& service_name, | 37 DBusObjectMap::DBusObjectMap(const std::string& service_name, |
87 Delegate* delegate, | 38 Delegate* delegate, |
88 dbus::Bus* bus) | 39 dbus::Bus* bus) |
89 : bus_(bus), | 40 : bus_(bus), |
90 service_name_(service_name), | 41 service_name_(service_name), |
91 delegate_(delegate) { | 42 delegate_(delegate) { |
92 DCHECK(bus_); | 43 DCHECK(bus_); |
93 DCHECK(delegate_); | 44 DCHECK(delegate_); |
94 } | 45 } |
95 | 46 |
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
293 NfcPropertySet* properties = | 244 NfcPropertySet* properties = |
294 object_map->GetObjectProperties(object_proxy_path); | 245 object_map->GetObjectProperties(object_proxy_path); |
295 if (properties) | 246 if (properties) |
296 return properties; | 247 return properties; |
297 } | 248 } |
298 return NULL; | 249 return NULL; |
299 } | 250 } |
300 | 251 |
301 } // namespace nfc_client_helpers | 252 } // namespace nfc_client_helpers |
302 } // namespace chromeos | 253 } // namespace chromeos |
OLD | NEW |