Index: chromeos/dbus/bluetooth_adapter_client.cc |
diff --git a/chromeos/dbus/bluetooth_adapter_client.cc b/chromeos/dbus/bluetooth_adapter_client.cc |
deleted file mode 100644 |
index 741dc03e29804ca3b200630f4a8918b09b88b4cd..0000000000000000000000000000000000000000 |
--- a/chromeos/dbus/bluetooth_adapter_client.cc |
+++ /dev/null |
@@ -1,369 +0,0 @@ |
-// Copyright 2013 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "chromeos/dbus/bluetooth_adapter_client.h" |
- |
-#include "base/bind.h" |
-#include "base/logging.h" |
-#include "dbus/bus.h" |
-#include "dbus/message.h" |
-#include "dbus/object_manager.h" |
-#include "dbus/object_proxy.h" |
-#include "third_party/cros_system_api/dbus/service_constants.h" |
- |
-namespace chromeos { |
- |
-BluetoothAdapterClient::DiscoveryFilter::DiscoveryFilter() { |
-} |
- |
-BluetoothAdapterClient::DiscoveryFilter::~DiscoveryFilter() { |
-} |
- |
-void BluetoothAdapterClient::DiscoveryFilter::CopyFrom( |
- const DiscoveryFilter& filter) { |
- if (filter.rssi.get()) |
- rssi.reset(new int16_t(*filter.rssi)); |
- else |
- rssi.reset(); |
- |
- if (filter.pathloss.get()) |
- pathloss.reset(new uint16_t(*filter.pathloss)); |
- else |
- pathloss.reset(); |
- |
- if (filter.transport.get()) |
- transport.reset(new std::string(*filter.transport)); |
- else |
- transport.reset(); |
- |
- if (filter.uuids.get()) |
- uuids.reset(new std::vector<std::string>(*filter.uuids)); |
- else |
- uuids.reset(); |
-} |
- |
-const char BluetoothAdapterClient::kNoResponseError[] = |
- "org.chromium.Error.NoResponse"; |
-const char BluetoothAdapterClient::kUnknownAdapterError[] = |
- "org.chromium.Error.UnknownAdapter"; |
- |
-BluetoothAdapterClient::Properties::Properties( |
- dbus::ObjectProxy* object_proxy, |
- const std::string& interface_name, |
- const PropertyChangedCallback& callback) |
- : dbus::PropertySet(object_proxy, interface_name, callback) { |
- RegisterProperty(bluetooth_adapter::kAddressProperty, &address); |
- RegisterProperty(bluetooth_adapter::kNameProperty, &name); |
- RegisterProperty(bluetooth_adapter::kAliasProperty, &alias); |
- RegisterProperty(bluetooth_adapter::kClassProperty, &bluetooth_class); |
- RegisterProperty(bluetooth_adapter::kPoweredProperty, &powered); |
- RegisterProperty(bluetooth_adapter::kDiscoverableProperty, &discoverable); |
- RegisterProperty(bluetooth_adapter::kPairableProperty, &pairable); |
- RegisterProperty(bluetooth_adapter::kPairableTimeoutProperty, |
- &pairable_timeout); |
- RegisterProperty(bluetooth_adapter::kDiscoverableTimeoutProperty, |
- &discoverable_timeout); |
- RegisterProperty(bluetooth_adapter::kDiscoveringProperty, &discovering); |
- RegisterProperty(bluetooth_adapter::kUUIDsProperty, &uuids); |
- RegisterProperty(bluetooth_adapter::kModaliasProperty, &modalias); |
-} |
- |
-BluetoothAdapterClient::Properties::~Properties() { |
-} |
- |
- |
-// The BluetoothAdapterClient implementation used in production. |
-class BluetoothAdapterClientImpl |
- : public BluetoothAdapterClient, |
- public dbus::ObjectManager::Interface { |
- public: |
- BluetoothAdapterClientImpl() |
- : object_manager_(NULL), weak_ptr_factory_(this) {} |
- |
- ~BluetoothAdapterClientImpl() override { |
- object_manager_->UnregisterInterface( |
- bluetooth_adapter::kBluetoothAdapterInterface); |
- } |
- |
- // BluetoothAdapterClient override. |
- void AddObserver(BluetoothAdapterClient::Observer* observer) override { |
- DCHECK(observer); |
- observers_.AddObserver(observer); |
- } |
- |
- // BluetoothAdapterClient override. |
- void RemoveObserver(BluetoothAdapterClient::Observer* observer) override { |
- DCHECK(observer); |
- observers_.RemoveObserver(observer); |
- } |
- |
- // Returns the list of adapter object paths known to the system. |
- std::vector<dbus::ObjectPath> GetAdapters() override { |
- return object_manager_->GetObjectsWithInterface( |
- bluetooth_adapter::kBluetoothAdapterInterface); |
- } |
- |
- // dbus::ObjectManager::Interface override. |
- dbus::PropertySet* CreateProperties( |
- dbus::ObjectProxy* object_proxy, |
- const dbus::ObjectPath& object_path, |
- const std::string& interface_name) override { |
- Properties* properties = new Properties( |
- object_proxy, |
- interface_name, |
- base::Bind(&BluetoothAdapterClientImpl::OnPropertyChanged, |
- weak_ptr_factory_.GetWeakPtr(), |
- object_path)); |
- return static_cast<dbus::PropertySet*>(properties); |
- } |
- |
- // BluetoothAdapterClient override. |
- Properties* GetProperties(const dbus::ObjectPath& object_path) override { |
- return static_cast<Properties*>( |
- object_manager_->GetProperties( |
- object_path, |
- bluetooth_adapter::kBluetoothAdapterInterface)); |
- } |
- |
- // BluetoothAdapterClient override. |
- void StartDiscovery(const dbus::ObjectPath& object_path, |
- const base::Closure& callback, |
- const ErrorCallback& error_callback) override { |
- dbus::MethodCall method_call( |
- bluetooth_adapter::kBluetoothAdapterInterface, |
- bluetooth_adapter::kStartDiscovery); |
- |
- dbus::ObjectProxy* object_proxy = |
- object_manager_->GetObjectProxy(object_path); |
- if (!object_proxy) { |
- error_callback.Run(kUnknownAdapterError, ""); |
- return; |
- } |
- |
- object_proxy->CallMethodWithErrorCallback( |
- &method_call, |
- dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, |
- base::Bind(&BluetoothAdapterClientImpl::OnSuccess, |
- weak_ptr_factory_.GetWeakPtr(), callback), |
- base::Bind(&BluetoothAdapterClientImpl::OnError, |
- weak_ptr_factory_.GetWeakPtr(), error_callback)); |
- } |
- |
- // BluetoothAdapterClient override. |
- void StopDiscovery(const dbus::ObjectPath& object_path, |
- const base::Closure& callback, |
- const ErrorCallback& error_callback) override { |
- dbus::MethodCall method_call( |
- bluetooth_adapter::kBluetoothAdapterInterface, |
- bluetooth_adapter::kStopDiscovery); |
- |
- dbus::ObjectProxy* object_proxy = |
- object_manager_->GetObjectProxy(object_path); |
- if (!object_proxy) { |
- error_callback.Run(kUnknownAdapterError, ""); |
- return; |
- } |
- |
- object_proxy->CallMethodWithErrorCallback( |
- &method_call, |
- dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, |
- base::Bind(&BluetoothAdapterClientImpl::OnSuccess, |
- weak_ptr_factory_.GetWeakPtr(), callback), |
- base::Bind(&BluetoothAdapterClientImpl::OnError, |
- weak_ptr_factory_.GetWeakPtr(), error_callback)); |
- } |
- |
- // BluetoothAdapterClient override. |
- void RemoveDevice(const dbus::ObjectPath& object_path, |
- const dbus::ObjectPath& device_path, |
- const base::Closure& callback, |
- const ErrorCallback& error_callback) override { |
- dbus::MethodCall method_call( |
- bluetooth_adapter::kBluetoothAdapterInterface, |
- bluetooth_adapter::kRemoveDevice); |
- |
- dbus::MessageWriter writer(&method_call); |
- writer.AppendObjectPath(device_path); |
- |
- dbus::ObjectProxy* object_proxy = |
- object_manager_->GetObjectProxy(object_path); |
- if (!object_proxy) { |
- error_callback.Run(kUnknownAdapterError, ""); |
- return; |
- } |
- |
- object_proxy->CallMethodWithErrorCallback( |
- &method_call, |
- dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, |
- base::Bind(&BluetoothAdapterClientImpl::OnSuccess, |
- weak_ptr_factory_.GetWeakPtr(), callback), |
- base::Bind(&BluetoothAdapterClientImpl::OnError, |
- weak_ptr_factory_.GetWeakPtr(), error_callback)); |
- } |
- |
- // BluetoothAdapterClient override. |
- void SetDiscoveryFilter(const dbus::ObjectPath& object_path, |
- const DiscoveryFilter& discovery_filter, |
- const base::Closure& callback, |
- const ErrorCallback& error_callback) override { |
- dbus::MethodCall method_call(bluetooth_adapter::kBluetoothAdapterInterface, |
- bluetooth_adapter::kSetDiscoveryFilter); |
- |
- dbus::MessageWriter writer(&method_call); |
- dbus::MessageWriter dict_writer(nullptr); |
- |
- dbus::ObjectProxy* object_proxy = |
- object_manager_->GetObjectProxy(object_path); |
- if (!object_proxy) { |
- error_callback.Run(kUnknownAdapterError, ""); |
- return; |
- } |
- |
- writer.OpenArray("{sv}", &dict_writer); |
- |
- if (discovery_filter.uuids.get()) { |
- std::vector<std::string>* uuids = discovery_filter.uuids.get(); |
- dbus::MessageWriter uuids_entry_writer(nullptr); |
- dict_writer.OpenDictEntry(&uuids_entry_writer); |
- uuids_entry_writer.AppendString( |
- bluetooth_adapter::kDiscoveryFilterParameterUUIDs); |
- |
- dbus::MessageWriter uuids_array_variant(nullptr); |
- uuids_entry_writer.OpenVariant("as", &uuids_array_variant); |
- dbus::MessageWriter uuids_array(nullptr); |
- uuids_array_variant.OpenArray("s", &uuids_array); |
- |
- for (auto& it : *uuids) |
- uuids_array.AppendString(it); |
- |
- uuids_array_variant.CloseContainer(&uuids_array); |
- uuids_entry_writer.CloseContainer(&uuids_array_variant); |
- dict_writer.CloseContainer(&uuids_entry_writer); |
- } |
- |
- if (discovery_filter.rssi.get()) { |
- dbus::MessageWriter rssi_entry_writer(nullptr); |
- dict_writer.OpenDictEntry(&rssi_entry_writer); |
- rssi_entry_writer.AppendString( |
- bluetooth_adapter::kDiscoveryFilterParameterRSSI); |
- rssi_entry_writer.AppendVariantOfInt16(*discovery_filter.rssi.get()); |
- dict_writer.CloseContainer(&rssi_entry_writer); |
- } |
- |
- if (discovery_filter.pathloss.get()) { |
- dbus::MessageWriter pathloss_entry_writer(nullptr); |
- dict_writer.OpenDictEntry(&pathloss_entry_writer); |
- pathloss_entry_writer.AppendString( |
- bluetooth_adapter::kDiscoveryFilterParameterPathloss); |
- pathloss_entry_writer.AppendVariantOfUint16( |
- *discovery_filter.pathloss.get()); |
- dict_writer.CloseContainer(&pathloss_entry_writer); |
- } |
- |
- if (discovery_filter.transport.get()) { |
- dbus::MessageWriter transport_entry_writer(nullptr); |
- dict_writer.OpenDictEntry(&transport_entry_writer); |
- transport_entry_writer.AppendString( |
- bluetooth_adapter::kDiscoveryFilterParameterTransport); |
- transport_entry_writer.AppendVariantOfString( |
- *discovery_filter.transport.get()); |
- dict_writer.CloseContainer(&transport_entry_writer); |
- } |
- |
- writer.CloseContainer(&dict_writer); |
- |
- object_proxy->CallMethodWithErrorCallback( |
- &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, |
- base::Bind(&BluetoothAdapterClientImpl::OnSuccess, |
- weak_ptr_factory_.GetWeakPtr(), callback), |
- base::Bind(&BluetoothAdapterClientImpl::OnError, |
- weak_ptr_factory_.GetWeakPtr(), error_callback)); |
- } |
- |
- protected: |
- void Init(dbus::Bus* bus) override { |
- object_manager_ = bus->GetObjectManager( |
- bluetooth_object_manager::kBluetoothObjectManagerServiceName, |
- dbus::ObjectPath( |
- bluetooth_object_manager::kBluetoothObjectManagerServicePath)); |
- object_manager_->RegisterInterface( |
- bluetooth_adapter::kBluetoothAdapterInterface, this); |
- } |
- |
- private: |
- // Called by dbus::ObjectManager when an object with the adapter interface |
- // is created. Informs observers. |
- void ObjectAdded(const dbus::ObjectPath& object_path, |
- const std::string& interface_name) override { |
- FOR_EACH_OBSERVER(BluetoothAdapterClient::Observer, observers_, |
- AdapterAdded(object_path)); |
- } |
- |
- // Called by dbus::ObjectManager when an object with the adapter interface |
- // is removed. Informs observers. |
- void ObjectRemoved(const dbus::ObjectPath& object_path, |
- const std::string& interface_name) override { |
- FOR_EACH_OBSERVER(BluetoothAdapterClient::Observer, observers_, |
- AdapterRemoved(object_path)); |
- } |
- |
- // Called by dbus::PropertySet when a property value is changed, |
- // either by result of a signal or response to a GetAll() or Get() |
- // call. Informs observers. |
- void OnPropertyChanged(const dbus::ObjectPath& object_path, |
- const std::string& property_name) { |
- FOR_EACH_OBSERVER(BluetoothAdapterClient::Observer, observers_, |
- AdapterPropertyChanged(object_path, property_name)); |
- } |
- |
- // Called when a response for successful method call is received. |
- void OnSuccess(const base::Closure& callback, |
- dbus::Response* response) { |
- DCHECK(response); |
- callback.Run(); |
- } |
- |
- // Called when a response for a failed method call is received. |
- void OnError(const ErrorCallback& error_callback, |
- dbus::ErrorResponse* response) { |
- // Error response has optional error message argument. |
- std::string error_name; |
- std::string error_message; |
- if (response) { |
- dbus::MessageReader reader(response); |
- error_name = response->GetErrorName(); |
- reader.PopString(&error_message); |
- } else { |
- error_name = kNoResponseError; |
- error_message = ""; |
- } |
- error_callback.Run(error_name, error_message); |
- } |
- |
- dbus::ObjectManager* object_manager_; |
- |
- // List of observers interested in event notifications from us. |
- base::ObserverList<BluetoothAdapterClient::Observer> observers_; |
- |
- // Weak pointer factory for generating 'this' pointers that might live longer |
- // than we do. |
- // Note: This should remain the last member so it'll be destroyed and |
- // invalidate its weak pointers before any other members are destroyed. |
- base::WeakPtrFactory<BluetoothAdapterClientImpl> |
- weak_ptr_factory_; |
- |
- DISALLOW_COPY_AND_ASSIGN(BluetoothAdapterClientImpl); |
-}; |
- |
-BluetoothAdapterClient::BluetoothAdapterClient() { |
-} |
- |
-BluetoothAdapterClient::~BluetoothAdapterClient() { |
-} |
- |
-BluetoothAdapterClient* BluetoothAdapterClient::Create() { |
- return new BluetoothAdapterClientImpl; |
-} |
- |
-} // namespace chromeos |