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

Side by Side Diff: chromeos/dbus/nfc_client_helpers.cc

Issue 99903003: nfc: Various fixes to the NFC D-Bus client in chromeos/dbus. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed clang error. Created 7 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 | Annotate | Revision Log
« no previous file with comments | « chromeos/dbus/nfc_client_helpers.h ('k') | chromeos/dbus/nfc_client_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 9
9 namespace chromeos { 10 namespace chromeos {
10 namespace nfc_client_helpers { 11 namespace nfc_client_helpers {
11 12
12 const char kNoResponseError[] = "org.chromium.Error.NoResponse"; 13 const char kNoResponseError[] = "org.chromium.Error.NoResponse";
13 const char kUnknownObjectError[] = "org.chromium.Error.UnknownObject"; 14 const char kUnknownObjectError[] = "org.chromium.Error.UnknownObject";
14 15
15 void OnSuccess(const base::Closure& callback, dbus::Response* response) { 16 void OnSuccess(const base::Closure& callback, dbus::Response* response) {
16 DCHECK(response); 17 DCHECK(response);
17 callback.Run(); 18 callback.Run();
18 } 19 }
19 20
20 void OnError(const ErrorCallback& error_callback, 21 void OnError(const ErrorCallback& error_callback,
21 dbus::ErrorResponse* response) { 22 dbus::ErrorResponse* response) {
22 // Error response has optional error message argument. 23 // Error response has optional error message argument.
23 std::string error_name; 24 std::string error_name;
24 std::string error_message; 25 std::string error_message;
25 if (response) { 26 if (response) {
26 dbus::MessageReader reader(response); 27 dbus::MessageReader reader(response);
27 error_name = response->GetErrorName(); 28 error_name = response->GetErrorName();
28 reader.PopString(&error_message); 29 reader.PopString(&error_message);
29 } else { 30 } else {
30 error_name = kNoResponseError; 31 error_name = kNoResponseError;
31 error_message = ""; 32 error_message = "";
32 } 33 }
33 error_callback.Run(error_name, error_message); 34 error_callback.Run(error_name, error_message);
34 } 35 }
35 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
36 DBusObjectMap::DBusObjectMap(const std::string& service_name, 86 DBusObjectMap::DBusObjectMap(const std::string& service_name,
37 Delegate* delegate, 87 Delegate* delegate,
38 dbus::Bus* bus) 88 dbus::Bus* bus)
39 : bus_(bus), 89 : bus_(bus),
40 service_name_(service_name), 90 service_name_(service_name),
41 delegate_(delegate) { 91 delegate_(delegate) {
42 DCHECK(bus_); 92 DCHECK(bus_);
43 DCHECK(delegate_); 93 DCHECK(delegate_);
44 } 94 }
45 95
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after
234 NfcPropertySet* properties = 284 NfcPropertySet* properties =
235 object_map->GetObjectProperties(object_proxy_path); 285 object_map->GetObjectProperties(object_proxy_path);
236 if (properties) 286 if (properties)
237 return properties; 287 return properties;
238 } 288 }
239 return NULL; 289 return NULL;
240 } 290 }
241 291
242 } // namespace nfc_client_helpers 292 } // namespace nfc_client_helpers
243 } // namespace chromeos 293 } // namespace chromeos
OLDNEW
« no previous file with comments | « chromeos/dbus/nfc_client_helpers.h ('k') | chromeos/dbus/nfc_client_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698