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