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

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

Issue 2286423002: chromeos: Remove unused AP manager D-Bus client library (Closed)
Patch Set: rebase Created 4 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
« no previous file with comments | « chromeos/dbus/ap_manager_client.h ('k') | chromeos/dbus/dbus_client_bundle.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2015 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.
4
5 #include "chromeos/dbus/ap_manager_client.h"
6
7 #include "base/bind.h"
8 #include "base/location.h"
9 #include "base/logging.h"
10 #include "base/macros.h"
11 #include "base/memory/weak_ptr.h"
12 #include "base/observer_list.h"
13 #include "base/single_thread_task_runner.h"
14 #include "base/threading/thread_task_runner_handle.h"
15 #include "dbus/bus.h"
16 #include "dbus/message.h"
17 #include "dbus/object_manager.h"
18 #include "dbus/object_proxy.h"
19 #include "dbus/values_util.h"
20
21 namespace chromeos {
22
23 // TODO(benchan): Move these constants to system_api.
24 namespace apmanager {
25 const char kApManagerServiceName[] = "org.chromium.apmanager";
26 const char kApManagerServicePath[] = "/org/chromium/apmanager";
27 const char kApManagerManagerPath[] = "/org/chromium/apmanager/Manager";
28 const char kManagerInterfaceName[] = "org.chromium.apmanager.Manager";
29 const char kConfigInterfaceName[] = "org.chromium.apmanager.Config";
30 const char kDeviceInterfaceName[] = "org.chromium.apmanager.Device";
31 const char kServiceInterfaceName[] = "org.chromium.apmanager.Service";
32 const char kCreateServiceMethod[] = "CreateService";
33 const char kRemoveServiceMethod[] = "RemoveService";
34 const char kStartMethod[] = "Start";
35 const char kStopMethod[] = "Stop";
36 const char kSsidProperty[] = "Ssid";
37 const char kInterfaceNameProperty[] = "InterfaceName";
38 const char kSecurityModeProperty[] = "SecurityMode";
39 const char kPassphraseProperty[] = "Passphrase";
40 const char kHwModeProperty[] = "HwMode";
41 const char kOperationModeProperty[] = "OperationMode";
42 const char kChannelProperty[] = "Channel";
43 const char kHiddenNetworkProperty[] = "HiddenNetwork";
44 const char kBridgeInterfaceProperty[] = "BridgeInterface";
45 const char kServiceAddressIndexProperty[] = "ServerAddressIndex";
46 const char kDeviceNameProperty[] = "DeviceName";
47 const char kInUsedProperty[] = "InUsed";
48 const char kPreferredApInterfaceProperty[] = "PreferredApInterface";
49 const char kConfigName[] = "Config";
50 const char kStateName[] = "State";
51
52 } // namespace apmanager
53
54 namespace {
55
56 // Since there is no property associated with Manager objects, an empty callback
57 // is used.
58 void ManagerPropertyChanged(const std::string& property_name) {
59 }
60
61 // The ApManagerClient implementation used in production.
62 class ApManagerClientImpl : public ApManagerClient,
63 public dbus::ObjectManager::Interface {
64 public:
65 ApManagerClientImpl();
66 ~ApManagerClientImpl() override;
67
68 // ApManagerClient overrides.
69 void AddObserver(Observer* observer) override;
70 void RemoveObserver(Observer* observer) override;
71 void CreateService(const ObjectPathDBusMethodCallback& callback) override;
72 void RemoveService(const dbus::ObjectPath& object_path,
73 const VoidDBusMethodCallback& callback) override;
74 void StartService(const dbus::ObjectPath& object_path,
75 const VoidDBusMethodCallback& callback) override;
76 void StopService(const dbus::ObjectPath& object_path,
77 const VoidDBusMethodCallback& callback) override;
78 ConfigProperties* GetConfigProperties(
79 const dbus::ObjectPath& object_path) override;
80 const DeviceProperties* GetDeviceProperties(
81 const dbus::ObjectPath& object_path) override;
82 const ServiceProperties* GetServiceProperties(
83 const dbus::ObjectPath& object_path) override;
84
85 // DBusClient overrides.
86 void Init(dbus::Bus* bus) override;
87
88 // dbus::ObjectManager::Interface overrides.
89 dbus::PropertySet* CreateProperties(
90 dbus::ObjectProxy* object_proxy,
91 const dbus::ObjectPath& object_path,
92 const std::string& interface_name) override;
93 void ObjectAdded(const dbus::ObjectPath& object_path,
94 const std::string& interface_name) override;
95 void ObjectRemoved(const dbus::ObjectPath& object_path,
96 const std::string& interface_name) override;
97
98 private:
99 // Called by dbus::PropertySet when a property value is changed,
100 // either by result of a signal or response to a GetAll() or Get()
101 // call. Informs observers.
102 void OnConfigPropertyChanged(const dbus::ObjectPath& object_path,
103 const std::string& property_name);
104 void OnDevicePropertyChanged(const dbus::ObjectPath& object_path,
105 const std::string& property_name);
106 void OnServicePropertyChanged(const dbus::ObjectPath& object_path,
107 const std::string& property_name);
108
109 void OnObjectPathDBusMethod(const ObjectPathDBusMethodCallback& callback,
110 dbus::Response* response);
111 void OnStringDBusMethod(const StringDBusMethodCallback& callback,
112 dbus::Response* response);
113 void OnVoidDBusMethod(const VoidDBusMethodCallback& callback,
114 dbus::Response* response);
115
116 // List of observers interested in event notifications from us.
117 base::ObserverList<Observer> observers_;
118 dbus::ObjectManager* object_manager_;
119 base::WeakPtrFactory<ApManagerClientImpl> weak_ptr_factory_;
120
121 DISALLOW_COPY_AND_ASSIGN(ApManagerClientImpl);
122 };
123
124 ApManagerClientImpl::ApManagerClientImpl()
125 : object_manager_(nullptr), weak_ptr_factory_(this) {
126 }
127
128 ApManagerClientImpl::~ApManagerClientImpl() {
129 if (object_manager_) {
130 object_manager_->UnregisterInterface(apmanager::kManagerInterfaceName);
131 object_manager_->UnregisterInterface(apmanager::kConfigInterfaceName);
132 object_manager_->UnregisterInterface(apmanager::kDeviceInterfaceName);
133 object_manager_->UnregisterInterface(apmanager::kServiceInterfaceName);
134 }
135 }
136
137 void ApManagerClientImpl::AddObserver(Observer* observer) {
138 DCHECK(observer);
139 observers_.AddObserver(observer);
140 }
141
142 void ApManagerClientImpl::RemoveObserver(Observer* observer) {
143 DCHECK(observer);
144 observers_.RemoveObserver(observer);
145 }
146
147 void ApManagerClientImpl::CreateService(
148 const ObjectPathDBusMethodCallback& callback) {
149 dbus::ObjectProxy* object_proxy = object_manager_->GetObjectProxy(
150 dbus::ObjectPath(apmanager::kApManagerManagerPath));
151 if (!object_proxy) {
152 base::ThreadTaskRunnerHandle::Get()->PostTask(
153 FROM_HERE,
154 base::Bind(&ApManagerClientImpl::OnObjectPathDBusMethod,
155 weak_ptr_factory_.GetWeakPtr(), callback, nullptr));
156 return;
157 }
158
159 dbus::MethodCall method_call(apmanager::kManagerInterfaceName,
160 apmanager::kCreateServiceMethod);
161 dbus::MessageWriter writer(&method_call);
162 object_proxy->CallMethod(
163 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
164 base::Bind(&ApManagerClientImpl::OnObjectPathDBusMethod,
165 weak_ptr_factory_.GetWeakPtr(), callback));
166 }
167
168 void ApManagerClientImpl::RemoveService(
169 const dbus::ObjectPath& object_path,
170 const VoidDBusMethodCallback& callback) {
171 dbus::ObjectProxy* object_proxy = object_manager_->GetObjectProxy(
172 dbus::ObjectPath(apmanager::kApManagerManagerPath));
173 if (!object_proxy) {
174 base::ThreadTaskRunnerHandle::Get()->PostTask(
175 FROM_HERE,
176 base::Bind(&ApManagerClientImpl::OnVoidDBusMethod,
177 weak_ptr_factory_.GetWeakPtr(), callback, nullptr));
178 return;
179 }
180
181 dbus::MethodCall method_call(apmanager::kManagerInterfaceName,
182 apmanager::kRemoveServiceMethod);
183 dbus::MessageWriter writer(&method_call);
184 writer.AppendObjectPath(object_path);
185 object_proxy->CallMethod(
186 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
187 base::Bind(&ApManagerClientImpl::OnVoidDBusMethod,
188 weak_ptr_factory_.GetWeakPtr(), callback));
189 }
190
191 void ApManagerClientImpl::StartService(const dbus::ObjectPath& object_path,
192 const VoidDBusMethodCallback& callback) {
193 dbus::ObjectProxy* object_proxy =
194 object_manager_->GetObjectProxy(object_path);
195 if (!object_proxy) {
196 base::ThreadTaskRunnerHandle::Get()->PostTask(
197 FROM_HERE,
198 base::Bind(&ApManagerClientImpl::OnVoidDBusMethod,
199 weak_ptr_factory_.GetWeakPtr(), callback, nullptr));
200 return;
201 }
202
203 dbus::MethodCall method_call(apmanager::kServiceInterfaceName,
204 apmanager::kStartMethod);
205 dbus::MessageWriter writer(&method_call);
206 object_proxy->CallMethod(
207 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
208 base::Bind(&ApManagerClientImpl::OnVoidDBusMethod,
209 weak_ptr_factory_.GetWeakPtr(), callback));
210 }
211
212 void ApManagerClientImpl::StopService(const dbus::ObjectPath& object_path,
213 const VoidDBusMethodCallback& callback) {
214 dbus::ObjectProxy* object_proxy =
215 object_manager_->GetObjectProxy(object_path);
216 if (!object_proxy) {
217 base::ThreadTaskRunnerHandle::Get()->PostTask(
218 FROM_HERE,
219 base::Bind(&ApManagerClientImpl::OnVoidDBusMethod,
220 weak_ptr_factory_.GetWeakPtr(), callback, nullptr));
221 return;
222 }
223
224 dbus::MethodCall method_call(apmanager::kServiceInterfaceName,
225 apmanager::kStopMethod);
226 dbus::MessageWriter writer(&method_call);
227 object_proxy->CallMethod(
228 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
229 base::Bind(&ApManagerClientImpl::OnVoidDBusMethod,
230 weak_ptr_factory_.GetWeakPtr(), callback));
231 }
232
233 ApManagerClient::ConfigProperties* ApManagerClientImpl::GetConfigProperties(
234 const dbus::ObjectPath& object_path) {
235 return static_cast<ConfigProperties*>(object_manager_->GetProperties(
236 object_path, apmanager::kConfigInterfaceName));
237 }
238
239 const ApManagerClient::DeviceProperties*
240 ApManagerClientImpl::GetDeviceProperties(const dbus::ObjectPath& object_path) {
241 return static_cast<DeviceProperties*>(object_manager_->GetProperties(
242 object_path, apmanager::kDeviceInterfaceName));
243 }
244
245 const ApManagerClient::ServiceProperties*
246 ApManagerClientImpl::GetServiceProperties(const dbus::ObjectPath& object_path) {
247 return static_cast<ServiceProperties*>(object_manager_->GetProperties(
248 object_path, apmanager::kServiceInterfaceName));
249 }
250
251 void ApManagerClientImpl::Init(dbus::Bus* bus) {
252 object_manager_ =
253 bus->GetObjectManager(apmanager::kApManagerServiceName,
254 dbus::ObjectPath(apmanager::kApManagerServicePath));
255 object_manager_->RegisterInterface(apmanager::kManagerInterfaceName, this);
256 object_manager_->RegisterInterface(apmanager::kConfigInterfaceName, this);
257 object_manager_->RegisterInterface(apmanager::kDeviceInterfaceName, this);
258 object_manager_->RegisterInterface(apmanager::kServiceInterfaceName, this);
259 }
260
261 dbus::PropertySet* ApManagerClientImpl::CreateProperties(
262 dbus::ObjectProxy* object_proxy,
263 const dbus::ObjectPath& object_path,
264 const std::string& interface_name) {
265 dbus::PropertySet* properties = nullptr;
266 if (interface_name == apmanager::kManagerInterfaceName) {
267 properties = new dbus::PropertySet(object_proxy, interface_name,
268 base::Bind(&ManagerPropertyChanged));
269 } else if (interface_name == apmanager::kConfigInterfaceName) {
270 properties = new ConfigProperties(
271 object_proxy, interface_name,
272 base::Bind(&ApManagerClientImpl::OnConfigPropertyChanged,
273 weak_ptr_factory_.GetWeakPtr(), object_path));
274 } else if (interface_name == apmanager::kDeviceInterfaceName) {
275 properties = new DeviceProperties(
276 object_proxy, interface_name,
277 base::Bind(&ApManagerClientImpl::OnDevicePropertyChanged,
278 weak_ptr_factory_.GetWeakPtr(), object_path));
279 } else if (interface_name == apmanager::kServiceInterfaceName) {
280 properties = new ServiceProperties(
281 object_proxy, interface_name,
282 base::Bind(&ApManagerClientImpl::OnServicePropertyChanged,
283 weak_ptr_factory_.GetWeakPtr(), object_path));
284 } else {
285 NOTREACHED() << "Unhandled interface name " << interface_name;
286 }
287 return properties;
288 }
289
290 void ApManagerClientImpl::ObjectAdded(const dbus::ObjectPath& object_path,
291 const std::string& interface_name) {
292 if (interface_name == apmanager::kManagerInterfaceName) {
293 FOR_EACH_OBSERVER(Observer, observers_, ManagerAdded());
294 } else if (interface_name == apmanager::kConfigInterfaceName) {
295 FOR_EACH_OBSERVER(Observer, observers_, ConfigAdded(object_path));
296 } else if (interface_name == apmanager::kDeviceInterfaceName) {
297 FOR_EACH_OBSERVER(Observer, observers_, DeviceAdded(object_path));
298 } else if (interface_name == apmanager::kServiceInterfaceName) {
299 FOR_EACH_OBSERVER(Observer, observers_, ServiceAdded(object_path));
300 } else {
301 NOTREACHED() << "Unhandled interface name " << interface_name;
302 }
303 }
304
305 void ApManagerClientImpl::ObjectRemoved(const dbus::ObjectPath& object_path,
306 const std::string& interface_name) {
307 if (interface_name == apmanager::kManagerInterfaceName) {
308 FOR_EACH_OBSERVER(Observer, observers_, ManagerRemoved());
309 } else if (interface_name == apmanager::kConfigInterfaceName) {
310 FOR_EACH_OBSERVER(Observer, observers_, ConfigRemoved(object_path));
311 } else if (interface_name == apmanager::kDeviceInterfaceName) {
312 FOR_EACH_OBSERVER(Observer, observers_, DeviceRemoved(object_path));
313 } else if (interface_name == apmanager::kServiceInterfaceName) {
314 FOR_EACH_OBSERVER(Observer, observers_, ServiceRemoved(object_path));
315 } else {
316 NOTREACHED() << "Unhandled interface name " << interface_name;
317 }
318 }
319
320 void ApManagerClientImpl::OnConfigPropertyChanged(
321 const dbus::ObjectPath& object_path,
322 const std::string& property_name) {
323 FOR_EACH_OBSERVER(Observer, observers_,
324 ConfigPropertyChanged(object_path, property_name));
325 }
326
327 void ApManagerClientImpl::OnDevicePropertyChanged(
328 const dbus::ObjectPath& object_path,
329 const std::string& property_name) {
330 FOR_EACH_OBSERVER(Observer, observers_,
331 ConfigPropertyChanged(object_path, property_name));
332 }
333
334 void ApManagerClientImpl::OnServicePropertyChanged(
335 const dbus::ObjectPath& object_path,
336 const std::string& property_name) {
337 FOR_EACH_OBSERVER(Observer, observers_,
338 ServicePropertyChanged(object_path, property_name));
339 }
340
341 void ApManagerClientImpl::OnObjectPathDBusMethod(
342 const ObjectPathDBusMethodCallback& callback,
343 dbus::Response* response) {
344 if (!response) {
345 callback.Run(DBUS_METHOD_CALL_FAILURE, dbus::ObjectPath());
346 return;
347 }
348
349 dbus::MessageReader reader(response);
350 dbus::ObjectPath result;
351 if (!reader.PopObjectPath(&result)) {
352 callback.Run(DBUS_METHOD_CALL_FAILURE, result);
353 return;
354 }
355
356 callback.Run(DBUS_METHOD_CALL_SUCCESS, result);
357 }
358
359 void ApManagerClientImpl::OnStringDBusMethod(
360 const StringDBusMethodCallback& callback,
361 dbus::Response* response) {
362 if (!response) {
363 callback.Run(DBUS_METHOD_CALL_FAILURE, std::string());
364 return;
365 }
366
367 dbus::MessageReader reader(response);
368 std::string result;
369 if (!reader.PopString(&result)) {
370 callback.Run(DBUS_METHOD_CALL_FAILURE, std::string());
371 return;
372 }
373
374 callback.Run(DBUS_METHOD_CALL_SUCCESS, result);
375 }
376
377 void ApManagerClientImpl::OnVoidDBusMethod(
378 const VoidDBusMethodCallback& callback,
379 dbus::Response* response) {
380 callback.Run(response ? DBUS_METHOD_CALL_SUCCESS : DBUS_METHOD_CALL_FAILURE);
381 }
382
383 } // namespace
384
385 ApManagerClient::ConfigProperties::ConfigProperties(
386 dbus::ObjectProxy* object_proxy,
387 const std::string& dbus_interface_name,
388 const PropertyChangedCallback& callback)
389 : dbus::PropertySet(object_proxy, dbus_interface_name, callback) {
390 RegisterProperty(apmanager::kSsidProperty, &ssid_);
391 RegisterProperty(apmanager::kInterfaceNameProperty, &interface_name_);
392 RegisterProperty(apmanager::kSecurityModeProperty, &security_mode_);
393 RegisterProperty(apmanager::kPassphraseProperty, &passphrase_);
394 RegisterProperty(apmanager::kHwModeProperty, &hw_mode_);
395 RegisterProperty(apmanager::kOperationModeProperty, &operation_mode_);
396 RegisterProperty(apmanager::kChannelProperty, &channel_);
397 RegisterProperty(apmanager::kHiddenNetworkProperty, &hidden_network_);
398 RegisterProperty(apmanager::kBridgeInterfaceProperty, &bridge_interface_);
399 RegisterProperty(apmanager::kServiceAddressIndexProperty,
400 &server_address_index_);
401 }
402
403 ApManagerClient::ConfigProperties::~ConfigProperties() {
404 }
405
406 ApManagerClient::DeviceProperties::DeviceProperties(
407 dbus::ObjectProxy* object_proxy,
408 const std::string& interface_name,
409 const PropertyChangedCallback& callback)
410 : dbus::PropertySet(object_proxy, interface_name, callback) {
411 RegisterProperty(apmanager::kDeviceNameProperty, &device_name_);
412 RegisterProperty(apmanager::kInUsedProperty, &in_used_);
413 RegisterProperty(apmanager::kPreferredApInterfaceProperty,
414 &preferred_ap_interface_);
415 }
416
417 ApManagerClient::DeviceProperties::~DeviceProperties() {
418 }
419
420 ApManagerClient::ServiceProperties::ServiceProperties(
421 dbus::ObjectProxy* object_proxy,
422 const std::string& interface_name,
423 const PropertyChangedCallback& callback)
424 : dbus::PropertySet(object_proxy, interface_name, callback) {
425 RegisterProperty(apmanager::kConfigName, &config_);
426 RegisterProperty(apmanager::kStateName, &state_);
427 }
428
429 ApManagerClient::ServiceProperties::~ServiceProperties() {
430 }
431
432 ApManagerClient::Observer::~Observer() {
433 }
434
435 void ApManagerClient::Observer::ManagerAdded() {
436 }
437
438 void ApManagerClient::Observer::ManagerRemoved() {
439 }
440
441 void ApManagerClient::Observer::ConfigAdded(
442 const dbus::ObjectPath& object_path) {
443 }
444
445 void ApManagerClient::Observer::ConfigRemoved(
446 const dbus::ObjectPath& object_path) {
447 }
448
449 void ApManagerClient::Observer::DeviceAdded(
450 const dbus::ObjectPath& object_path) {
451 }
452
453 void ApManagerClient::Observer::DeviceRemoved(
454 const dbus::ObjectPath& object_path) {
455 }
456
457 void ApManagerClient::Observer::ServiceAdded(
458 const dbus::ObjectPath& object_path) {
459 }
460
461 void ApManagerClient::Observer::ServiceRemoved(
462 const dbus::ObjectPath& object_path) {
463 }
464
465 void ApManagerClient::Observer::ConfigPropertyChanged(
466 const dbus::ObjectPath& object_path,
467 const std::string& property_name) {
468 }
469
470 void ApManagerClient::Observer::DevicePropertyChanged(
471 const dbus::ObjectPath& object_path,
472 const std::string& property_name) {
473 }
474
475 void ApManagerClient::Observer::ServicePropertyChanged(
476 const dbus::ObjectPath& object_path,
477 const std::string& property_name) {
478 }
479
480 ApManagerClient::ApManagerClient() {
481 }
482
483 ApManagerClient::~ApManagerClient() {
484 }
485
486 // static
487 ApManagerClient* ApManagerClient::Create() {
488 return new ApManagerClientImpl();
489 }
490
491 } // namespace chromeos
OLDNEW
« no previous file with comments | « chromeos/dbus/ap_manager_client.h ('k') | chromeos/dbus/dbus_client_bundle.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698