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

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

Issue 10949030: This converts the Shill clients to allow propagation of shill errors (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Created 8 years, 3 months 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 "chromeos/dbus/shill_manager_client.h" 5 #include "chromeos/dbus/shill_manager_client.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/chromeos/chromeos_version.h" 8 #include "base/chromeos/chromeos_version.h"
9 #include "base/message_loop.h" 9 #include "base/message_loop.h"
10 #include "base/values.h" 10 #include "base/values.h"
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
50 class ShillManagerClientImpl : public ShillManagerClient { 50 class ShillManagerClientImpl : public ShillManagerClient {
51 public: 51 public:
52 explicit ShillManagerClientImpl(dbus::Bus* bus) 52 explicit ShillManagerClientImpl(dbus::Bus* bus)
53 : proxy_(bus->GetObjectProxy( 53 : proxy_(bus->GetObjectProxy(
54 flimflam::kFlimflamServiceName, 54 flimflam::kFlimflamServiceName,
55 dbus::ObjectPath(flimflam::kFlimflamServicePath))), 55 dbus::ObjectPath(flimflam::kFlimflamServicePath))),
56 helper_(bus, proxy_) { 56 helper_(bus, proxy_) {
57 helper_.MonitorPropertyChanged(flimflam::kFlimflamManagerInterface); 57 helper_.MonitorPropertyChanged(flimflam::kFlimflamManagerInterface);
58 } 58 }
59 59
60 // ShillManagerClient overrides: 60 ////////////////////////////////////
61 virtual void SetPropertyChangedHandler( 61 // ShillManagerClient overrides.
62 const PropertyChangedHandler& handler) OVERRIDE { 62 virtual void AddPropertyChangedObserver(
63 helper_.SetPropertyChangedHandler(handler); 63 PropertyChangedObserver* observer) OVERRIDE {
64 helper_.AddPropertyChangedObserver(observer);
64 } 65 }
65 66
66 virtual void ResetPropertyChangedHandler() OVERRIDE { 67 virtual void RemovePropertyChangedObserver(
67 helper_.ResetPropertyChangedHandler(); 68 PropertyChangedObserver* observer) OVERRIDE {
69 helper_.RemovePropertyChangedObserver(observer);
68 } 70 }
69 71
70 virtual void GetProperties(const DictionaryValueCallback& callback) OVERRIDE { 72 virtual void GetProperties(const DictionaryValueCallback& callback) OVERRIDE {
71 dbus::MethodCall method_call(flimflam::kFlimflamManagerInterface, 73 dbus::MethodCall method_call(flimflam::kFlimflamManagerInterface,
72 flimflam::kGetPropertiesFunction); 74 flimflam::kGetPropertiesFunction);
73 helper_.CallDictionaryValueMethod(&method_call, callback); 75 helper_.CallDictionaryValueMethod(&method_call, callback);
74 } 76 }
75 77
76 virtual base::DictionaryValue* CallGetPropertiesAndBlock() OVERRIDE { 78 virtual base::DictionaryValue* CallGetPropertiesAndBlock() OVERRIDE {
77 dbus::MethodCall method_call(flimflam::kFlimflamManagerInterface, 79 dbus::MethodCall method_call(flimflam::kFlimflamManagerInterface,
78 flimflam::kGetPropertiesFunction); 80 flimflam::kGetPropertiesFunction);
79 return helper_.CallDictionaryValueMethodAndBlock(&method_call); 81 return helper_.CallDictionaryValueMethodAndBlock(&method_call);
80 } 82 }
81 83
82 virtual void SetProperty(const std::string& name, 84 virtual void SetProperty(const std::string& name,
83 const base::Value& value, 85 const base::Value& value,
84 const VoidDBusMethodCallback& callback) OVERRIDE { 86 const base::Closure& callback,
87 const ErrorCallback& error_callback) OVERRIDE {
85 dbus::MethodCall method_call(flimflam::kFlimflamManagerInterface, 88 dbus::MethodCall method_call(flimflam::kFlimflamManagerInterface,
86 flimflam::kSetPropertyFunction); 89 flimflam::kSetPropertyFunction);
87 dbus::MessageWriter writer(&method_call); 90 dbus::MessageWriter writer(&method_call);
88 writer.AppendString(name); 91 writer.AppendString(name);
89 ShillClientHelper::AppendValueDataAsVariant(&writer, value); 92 ShillClientHelper::AppendValueDataAsVariant(&writer, value);
90 helper_.CallVoidMethod(&method_call, callback); 93 helper_.CallVoidMethodWithErrorCallback(&method_call,
94 callback,
95 error_callback);
91 } 96 }
92 97
93 virtual void RequestScan(const std::string& type, 98 virtual void RequestScan(const std::string& type,
94 const VoidDBusMethodCallback& callback) OVERRIDE { 99 const base::Closure& callback,
100 const ErrorCallback& error_callback) OVERRIDE {
95 dbus::MethodCall method_call(flimflam::kFlimflamManagerInterface, 101 dbus::MethodCall method_call(flimflam::kFlimflamManagerInterface,
96 flimflam::kRequestScanFunction); 102 flimflam::kRequestScanFunction);
97 dbus::MessageWriter writer(&method_call); 103 dbus::MessageWriter writer(&method_call);
98 writer.AppendString(type); 104 writer.AppendString(type);
99 helper_.CallVoidMethod(&method_call, callback); 105 helper_.CallVoidMethodWithErrorCallback(&method_call,
106 callback,
107 error_callback);
100 } 108 }
101 109
102 virtual void EnableTechnology( 110 virtual void EnableTechnology(
103 const std::string& type, 111 const std::string& type,
104 const VoidDBusMethodCallback& callback) OVERRIDE { 112 const base::Closure& callback,
113 const ErrorCallback& error_callback) OVERRIDE {
105 dbus::MethodCall method_call(flimflam::kFlimflamManagerInterface, 114 dbus::MethodCall method_call(flimflam::kFlimflamManagerInterface,
106 flimflam::kEnableTechnologyFunction); 115 flimflam::kEnableTechnologyFunction);
107 dbus::MessageWriter writer(&method_call); 116 dbus::MessageWriter writer(&method_call);
108 writer.AppendString(type); 117 writer.AppendString(type);
109 helper_.CallVoidMethod(&method_call, callback); 118 helper_.CallVoidMethodWithErrorCallback(&method_call,
119 callback,
120 error_callback);
110 } 121 }
111 122
112 virtual void DisableTechnology( 123 virtual void DisableTechnology(
113 const std::string& type, 124 const std::string& type,
114 const VoidDBusMethodCallback& callback) OVERRIDE { 125 const base::Closure& callback,
126 const ErrorCallback& error_callback) OVERRIDE {
115 dbus::MethodCall method_call(flimflam::kFlimflamManagerInterface, 127 dbus::MethodCall method_call(flimflam::kFlimflamManagerInterface,
116 flimflam::kDisableTechnologyFunction); 128 flimflam::kDisableTechnologyFunction);
117 dbus::MessageWriter writer(&method_call); 129 dbus::MessageWriter writer(&method_call);
118 writer.AppendString(type); 130 writer.AppendString(type);
119 helper_.CallVoidMethod(&method_call, callback); 131 helper_.CallVoidMethodWithErrorCallback(&method_call,
132 callback,
133 error_callback);
120 } 134 }
121 135
122 virtual void ConfigureService( 136 virtual void ConfigureService(
123 const base::DictionaryValue& properties, 137 const base::DictionaryValue& properties,
124 const VoidDBusMethodCallback& callback) OVERRIDE { 138 const base::Closure& callback,
139 const ErrorCallback& error_callback) OVERRIDE {
125 DCHECK(AreServicePropertiesValid(properties)); 140 DCHECK(AreServicePropertiesValid(properties));
126 dbus::MethodCall method_call(flimflam::kFlimflamManagerInterface, 141 dbus::MethodCall method_call(flimflam::kFlimflamManagerInterface,
127 flimflam::kConfigureServiceFunction); 142 flimflam::kConfigureServiceFunction);
128 dbus::MessageWriter writer(&method_call); 143 dbus::MessageWriter writer(&method_call);
129 AppendServicePropertiesDictionary(&writer, properties); 144 AppendServicePropertiesDictionary(&writer, properties);
130 helper_.CallVoidMethod(&method_call, callback); 145 helper_.CallVoidMethodWithErrorCallback(&method_call,
146 callback,
147 error_callback);
131 } 148 }
132 149
133 virtual void GetService( 150 virtual void GetService(
134 const base::DictionaryValue& properties, 151 const base::DictionaryValue& properties,
135 const ObjectPathDBusMethodCallback& callback) OVERRIDE { 152 const ObjectPathDBusMethodCallback& callback,
153 const ErrorCallback& error_callback) OVERRIDE {
136 dbus::MethodCall method_call(flimflam::kFlimflamManagerInterface, 154 dbus::MethodCall method_call(flimflam::kFlimflamManagerInterface,
137 flimflam::kGetServiceFunction); 155 flimflam::kGetServiceFunction);
138 dbus::MessageWriter writer(&method_call); 156 dbus::MessageWriter writer(&method_call);
139 AppendServicePropertiesDictionary(&writer, properties); 157 AppendServicePropertiesDictionary(&writer, properties);
140 helper_.CallObjectPathMethod(&method_call, callback); 158 helper_.CallObjectPathMethodWithErrorCallback(&method_call,
159 callback,
160 error_callback);
141 } 161 }
142 162
143 private: 163 private:
144 dbus::ObjectProxy* proxy_; 164 dbus::ObjectProxy* proxy_;
145 ShillClientHelper helper_; 165 ShillClientHelper helper_;
146 166
147 DISALLOW_COPY_AND_ASSIGN(ShillManagerClientImpl); 167 DISALLOW_COPY_AND_ASSIGN(ShillManagerClientImpl);
148 }; 168 };
149 169
150 // A stub implementation of ShillManagerClient. 170 // A stub implementation of ShillManagerClient.
151 // Implemented: Stub cellular DeviceList entry for SMS testing. 171 // Implemented: Stub cellular DeviceList entry for SMS testing.
152 class ShillManagerClientStubImpl : public ShillManagerClient { 172 class ShillManagerClientStubImpl : public ShillManagerClient {
153 public: 173 public:
154 ShillManagerClientStubImpl() : weak_ptr_factory_(this) { 174 ShillManagerClientStubImpl() : weak_ptr_factory_(this) {
155 base::ListValue* device_list = new base::ListValue; 175 base::ListValue* device_list = new base::ListValue;
156 // Note: names match Device stub map. 176 // Note: names match Device stub map.
157 const char kStubCellular1[] = "stub_cellular1"; 177 const char kStubCellular1[] = "stub_cellular1";
158 const char kStubCellular2[] = "stub_cellular2"; 178 const char kStubCellular2[] = "stub_cellular2";
159 device_list->Append(base::Value::CreateStringValue(kStubCellular1)); 179 device_list->Append(base::Value::CreateStringValue(kStubCellular1));
160 device_list->Append(base::Value::CreateStringValue(kStubCellular2)); 180 device_list->Append(base::Value::CreateStringValue(kStubCellular2));
161 stub_properties_.Set(flimflam::kDevicesProperty, device_list); 181 stub_properties_.Set(flimflam::kDevicesProperty, device_list);
162 } 182 }
163 183
164 virtual ~ShillManagerClientStubImpl() {} 184 virtual ~ShillManagerClientStubImpl() {}
165 185
166 // ShillManagerClient override. 186 //////////////////////////////////
167 virtual void SetPropertyChangedHandler( 187 // ShillManagerClient overrides.
168 const PropertyChangedHandler& handler) OVERRIDE {} 188 virtual void AddPropertyChangedObserver(
189 PropertyChangedObserver* observer) OVERRIDE {}
169 190
170 // ShillManagerClient override. 191 virtual void RemovePropertyChangedObserver(
171 virtual void ResetPropertyChangedHandler() OVERRIDE {} 192 PropertyChangedObserver* observer) OVERRIDE {}
172 193
173 // ShillManagerClient override. 194 // ShillManagerClient override.
174 virtual void GetProperties(const DictionaryValueCallback& callback) OVERRIDE { 195 virtual void GetProperties(const DictionaryValueCallback& callback) OVERRIDE {
175 MessageLoop::current()->PostTask( 196 MessageLoop::current()->PostTask(
176 FROM_HERE, base::Bind( 197 FROM_HERE, base::Bind(
177 &ShillManagerClientStubImpl::PassStubProperties, 198 &ShillManagerClientStubImpl::PassStubProperties,
178 weak_ptr_factory_.GetWeakPtr(), 199 weak_ptr_factory_.GetWeakPtr(),
179 callback)); 200 callback));
180 } 201 }
181 202
182 // ShillManagerClient override. 203 // ShillManagerClient override.
183 virtual base::DictionaryValue* CallGetPropertiesAndBlock() OVERRIDE { 204 virtual base::DictionaryValue* CallGetPropertiesAndBlock() OVERRIDE {
184 return new base::DictionaryValue; 205 return new base::DictionaryValue;
185 } 206 }
186 207
187 // ShillManagerClient override. 208 // ShillManagerClient override.
188 virtual void SetProperty(const std::string& name, 209 virtual void SetProperty(const std::string& name,
189 const base::Value& value, 210 const base::Value& value,
190 const VoidDBusMethodCallback& callback) OVERRIDE { 211 const base::Closure& callback,
212 const ErrorCallback& error_callback) OVERRIDE {
191 stub_properties_.Set(name, value.DeepCopy()); 213 stub_properties_.Set(name, value.DeepCopy());
192 MessageLoop::current()->PostTask(FROM_HERE, 214 MessageLoop::current()->PostTask(FROM_HERE, callback);
193 base::Bind(callback,
194 DBUS_METHOD_CALL_SUCCESS));
195 } 215 }
196 216
197 // ShillManagerClient override. 217 // ShillManagerClient override.
198 virtual void RequestScan(const std::string& type, 218 virtual void RequestScan(const std::string& type,
199 const VoidDBusMethodCallback& callback) OVERRIDE { 219 const base::Closure& callback,
200 MessageLoop::current()->PostTask(FROM_HERE, 220 const ErrorCallback& error_callback) OVERRIDE {
201 base::Bind(callback, 221 MessageLoop::current()->PostTask(FROM_HERE, callback);
202 DBUS_METHOD_CALL_SUCCESS));
203 } 222 }
204 223
205 // ShillManagerClient override. 224 // ShillManagerClient override.
206 virtual void EnableTechnology( 225 virtual void EnableTechnology(
207 const std::string& type, 226 const std::string& type,
208 const VoidDBusMethodCallback& callback) OVERRIDE { 227 const base::Closure& callback,
209 MessageLoop::current()->PostTask(FROM_HERE, 228 const ErrorCallback& error_callback) OVERRIDE {
210 base::Bind(callback, 229 MessageLoop::current()->PostTask(FROM_HERE, callback);
211 DBUS_METHOD_CALL_SUCCESS));
212 } 230 }
213 231
214 // ShillManagerClient override. 232 // ShillManagerClient override.
215 virtual void DisableTechnology( 233 virtual void DisableTechnology(
216 const std::string& type, 234 const std::string& type,
217 const VoidDBusMethodCallback& callback) OVERRIDE { 235 const base::Closure& callback,
218 MessageLoop::current()->PostTask(FROM_HERE, 236 const ErrorCallback& error_callback) OVERRIDE {
219 base::Bind(callback, 237 MessageLoop::current()->PostTask(FROM_HERE, callback);
220 DBUS_METHOD_CALL_SUCCESS));
221 } 238 }
222 239
223 // ShillManagerClient override. 240 // ShillManagerClient override.
224 virtual void ConfigureService( 241 virtual void ConfigureService(
225 const base::DictionaryValue& properties, 242 const base::DictionaryValue& properties,
226 const VoidDBusMethodCallback& callback) OVERRIDE { 243 const base::Closure& callback,
227 MessageLoop::current()->PostTask(FROM_HERE, 244 const ErrorCallback& error_callback) OVERRIDE {
228 base::Bind(callback, 245 MessageLoop::current()->PostTask(FROM_HERE, callback);
229 DBUS_METHOD_CALL_SUCCESS));
230 } 246 }
231 247
232 // ShillManagerClient override. 248 // ShillManagerClient override.
233 virtual void GetService( 249 virtual void GetService(
234 const base::DictionaryValue& properties, 250 const base::DictionaryValue& properties,
235 const ObjectPathDBusMethodCallback& callback) OVERRIDE { 251 const ObjectPathDBusMethodCallback& callback,
252 const ErrorCallback& error_callback) OVERRIDE {
236 MessageLoop::current()->PostTask(FROM_HERE, 253 MessageLoop::current()->PostTask(FROM_HERE,
237 base::Bind(callback, 254 base::Bind(callback,
238 DBUS_METHOD_CALL_SUCCESS, 255 DBUS_METHOD_CALL_SUCCESS,
239 dbus::ObjectPath())); 256 dbus::ObjectPath()));
240 } 257 }
241 258
242 private: 259 private:
243 void PassStubProperties(const DictionaryValueCallback& callback) const { 260 void PassStubProperties(const DictionaryValueCallback& callback) const {
244 callback.Run(DBUS_METHOD_CALL_SUCCESS, stub_properties_); 261 callback.Run(DBUS_METHOD_CALL_SUCCESS, stub_properties_);
245 } 262 }
(...skipping 17 matching lines...) Expand all
263 ShillManagerClient* ShillManagerClient::Create( 280 ShillManagerClient* ShillManagerClient::Create(
264 DBusClientImplementationType type, 281 DBusClientImplementationType type,
265 dbus::Bus* bus) { 282 dbus::Bus* bus) {
266 if (type == REAL_DBUS_CLIENT_IMPLEMENTATION) 283 if (type == REAL_DBUS_CLIENT_IMPLEMENTATION)
267 return new ShillManagerClientImpl(bus); 284 return new ShillManagerClientImpl(bus);
268 DCHECK_EQ(STUB_DBUS_CLIENT_IMPLEMENTATION, type); 285 DCHECK_EQ(STUB_DBUS_CLIENT_IMPLEMENTATION, type);
269 return new ShillManagerClientStubImpl(); 286 return new ShillManagerClientStubImpl();
270 } 287 }
271 288
272 } // namespace chromeos 289 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698