Index: device/bluetooth/bluetooth_profile_chromeos.cc |
diff --git a/device/bluetooth/bluetooth_profile_chromeos.cc b/device/bluetooth/bluetooth_profile_chromeos.cc |
deleted file mode 100644 |
index 878f51a863b8cb5d9f77cff3c49cc122ea7c299a..0000000000000000000000000000000000000000 |
--- a/device/bluetooth/bluetooth_profile_chromeos.cc |
+++ /dev/null |
@@ -1,330 +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 "device/bluetooth/bluetooth_profile_chromeos.h" |
- |
-#include <string> |
- |
-#include "base/basictypes.h" |
-#include "base/bind.h" |
-#include "base/callback.h" |
-#include "base/logging.h" |
-#include "base/memory/scoped_ptr.h" |
-#include "base/memory/weak_ptr.h" |
-#include "base/message_loop/message_loop.h" |
-#include "base/strings/string_util.h" |
-#include "base/task_runner_util.h" |
-#include "base/threading/thread_restrictions.h" |
-#include "base/threading/worker_pool.h" |
-#include "chromeos/dbus/bluetooth_profile_manager_client.h" |
-#include "chromeos/dbus/bluetooth_profile_service_provider.h" |
-#include "chromeos/dbus/dbus_thread_manager.h" |
-#include "dbus/bus.h" |
-#include "dbus/file_descriptor.h" |
-#include "dbus/object_path.h" |
-#include "device/bluetooth/bluetooth_adapter_chromeos.h" |
-#include "device/bluetooth/bluetooth_adapter_factory.h" |
-#include "device/bluetooth/bluetooth_device.h" |
-#include "device/bluetooth/bluetooth_device_chromeos.h" |
-#include "device/bluetooth/bluetooth_profile.h" |
-#include "device/bluetooth/bluetooth_socket.h" |
-#include "device/bluetooth/bluetooth_socket_chromeos.h" |
-#include "device/bluetooth/bluetooth_socket_thread.h" |
-#include "third_party/cros_system_api/dbus/service_constants.h" |
- |
-using device::BluetoothAdapter; |
-using device::BluetoothAdapterFactory; |
-using device::BluetoothDevice; |
-using device::BluetoothProfile; |
-using device::BluetoothSocket; |
- |
-namespace { |
- |
-// Check the validity of a file descriptor received from D-Bus. Must be run |
-// on a thread where i/o is permitted. |
-scoped_ptr<dbus::FileDescriptor> CheckValidity( |
- scoped_ptr<dbus::FileDescriptor> fd) { |
- base::ThreadRestrictions::AssertIOAllowed(); |
- fd->CheckValidity(); |
- return fd.Pass(); |
-} |
- |
-} // namespace |
- |
- |
-namespace chromeos { |
- |
-BluetoothProfileChromeOS::BluetoothProfileChromeOS( |
- scoped_refptr<base::SequencedTaskRunner> ui_task_runner, |
- scoped_refptr<device::BluetoothSocketThread> socket_thread) |
- : ui_task_runner_(ui_task_runner), |
- socket_thread_(socket_thread), |
- weak_ptr_factory_(this) { |
-} |
- |
-BluetoothProfileChromeOS::~BluetoothProfileChromeOS() { |
- DCHECK(object_path_.value().empty()); |
- DCHECK(profile_.get() == NULL); |
- |
- if (adapter_.get()) { |
- adapter_->RemoveObserver(this); |
- adapter_ = NULL; |
- } |
-} |
- |
-void BluetoothProfileChromeOS::Init( |
- const device::BluetoothUUID& uuid, |
- const device::BluetoothProfile::Options& options, |
- const ProfileCallback& callback) { |
- DCHECK(object_path_.value().empty()); |
- DCHECK(profile_.get() == NULL); |
- |
- if (!uuid.IsValid()) { |
- callback.Run(NULL); |
- return; |
- } |
- |
- uuid_ = uuid; |
- |
- options_.name = options.name; |
- options_.service = uuid.canonical_value(); |
- options_.channel = options.channel; |
- options_.psm = options.psm; |
- options_.require_authentication = options.require_authentication; |
- options_.require_authorization = options.require_authorization; |
- options_.auto_connect = options.auto_connect; |
- options_.version = options.version; |
- options_.features = options.features; |
- |
- // The object path is relatively meaningless, but has to be unique, so we |
- // use the UUID of the profile. |
- std::string uuid_path; |
- base::ReplaceChars(uuid.canonical_value(), ":-", "_", &uuid_path); |
- |
- object_path_ = dbus::ObjectPath("/org/chromium/bluetooth_profile/" + |
- uuid_path); |
- |
- dbus::Bus* system_bus = DBusThreadManager::Get()->GetSystemBus(); |
- profile_.reset(BluetoothProfileServiceProvider::Create( |
- system_bus, object_path_, this)); |
- DCHECK(profile_.get()); |
- |
- // Now the profile object is registered we need an adapter to register it |
- // with. |
- BluetoothAdapterFactory::GetAdapter( |
- base::Bind(&BluetoothProfileChromeOS::OnGetAdapter, |
- weak_ptr_factory_.GetWeakPtr(), |
- callback)); |
-} |
- |
-void BluetoothProfileChromeOS::Unregister() { |
- DCHECK(!object_path_.value().empty()); |
- DCHECK(profile_.get()); |
- |
- profile_.reset(); |
- |
- VLOG(1) << object_path_.value() << ": Unregister profile"; |
- DBusThreadManager::Get()->GetBluetoothProfileManagerClient()-> |
- UnregisterProfile( |
- object_path_, |
- base::Bind(&BluetoothProfileChromeOS::OnUnregisterProfile, |
- weak_ptr_factory_.GetWeakPtr()), |
- base::Bind(&BluetoothProfileChromeOS::OnUnregisterProfileError, |
- weak_ptr_factory_.GetWeakPtr())); |
-} |
- |
-void BluetoothProfileChromeOS::SetConnectionCallback( |
- const ConnectionCallback& callback) { |
- connection_callback_ = callback; |
-} |
- |
-void BluetoothProfileChromeOS::AdapterPresentChanged(BluetoothAdapter* adapter, |
- bool present) { |
- if (!present) |
- return; |
- |
- VLOG(1) << object_path_.value() << ": Register profile"; |
- DBusThreadManager::Get()->GetBluetoothProfileManagerClient()-> |
- RegisterProfile( |
- object_path_, |
- uuid_.canonical_value(), |
- options_, |
- base::Bind(&BluetoothProfileChromeOS::OnInternalRegisterProfile, |
- weak_ptr_factory_.GetWeakPtr()), |
- base::Bind(&BluetoothProfileChromeOS::OnInternalRegisterProfileError, |
- weak_ptr_factory_.GetWeakPtr())); |
-} |
- |
-void BluetoothProfileChromeOS::OnGetAdapter( |
- const ProfileCallback& callback, |
- scoped_refptr<device::BluetoothAdapter> adapter) { |
- DCHECK(!adapter_.get()); |
- adapter_ = adapter; |
- adapter_->AddObserver(this); |
- |
- VLOG(1) << object_path_.value() << ": Register profile"; |
- DBusThreadManager::Get()->GetBluetoothProfileManagerClient()-> |
- RegisterProfile( |
- object_path_, |
- uuid_.canonical_value(), |
- options_, |
- base::Bind(&BluetoothProfileChromeOS::OnRegisterProfile, |
- weak_ptr_factory_.GetWeakPtr(), |
- callback), |
- base::Bind(&BluetoothProfileChromeOS::OnRegisterProfileError, |
- weak_ptr_factory_.GetWeakPtr(), |
- callback)); |
-} |
- |
-void BluetoothProfileChromeOS::Released() { |
- VLOG(1) << object_path_.value() << ": Release"; |
-} |
- |
-void BluetoothProfileChromeOS::NewConnection( |
- const dbus::ObjectPath& device_path, |
- scoped_ptr<dbus::FileDescriptor> fd, |
- const BluetoothProfileServiceProvider::Delegate::Options& options, |
- const ConfirmationCallback& callback) { |
- VLOG(1) << object_path_.value() << ": New connection from device: " |
- << device_path.value(); |
- if (connection_callback_.is_null()) { |
- callback.Run(REJECTED); |
- return; |
- } |
- |
- // Punt descriptor validity check to a worker thread where i/o is permitted; |
- // on return we'll call the connection callback. |
- // |
- // base::Passed is used to take ownership of the file descriptor during the |
- // CheckValidity() call and pass that ownership to callback. |
- base::PostTaskAndReplyWithResult( |
- base::WorkerPool::GetTaskRunner(false).get(), |
- FROM_HERE, |
- base::Bind(&CheckValidity, base::Passed(&fd)), |
- base::Bind(&BluetoothProfileChromeOS::OnCheckValidity, |
- weak_ptr_factory_.GetWeakPtr(), |
- device_path, |
- options, |
- callback)); |
-} |
- |
-void BluetoothProfileChromeOS::RequestDisconnection( |
- const dbus::ObjectPath& device_path, |
- const ConfirmationCallback& callback) { |
- VLOG(1) << object_path_.value() << ": Request disconnection"; |
- callback.Run(SUCCESS); |
-} |
- |
-void BluetoothProfileChromeOS::Cancel() { |
- VLOG(1) << object_path_.value() << ": Cancel"; |
-} |
- |
-void BluetoothProfileChromeOS::OnInternalRegisterProfile() { |
- VLOG(1) << object_path_.value() << ": Profile registered"; |
-} |
- |
-void BluetoothProfileChromeOS::OnInternalRegisterProfileError( |
- const std::string& error_name, |
- const std::string& error_message) { |
- // It's okay if the profile already exists, it means we registered it on |
- // initialization. |
- if (error_name == bluetooth_profile_manager::kErrorAlreadyExists) |
- return; |
- |
- LOG(WARNING) << object_path_.value() << ": Failed to register profile: " |
- << error_name << ": " << error_message; |
-} |
- |
-void BluetoothProfileChromeOS::OnRegisterProfile( |
- const ProfileCallback& callback) { |
- VLOG(1) << object_path_.value() << ": Profile registered"; |
- callback.Run(this); |
-} |
- |
-void BluetoothProfileChromeOS::OnRegisterProfileError( |
- const ProfileCallback& callback, |
- const std::string& error_name, |
- const std::string& error_message) { |
- // It's okay if the profile already exists, it means we registered it when |
- // we first saw the adapter. |
- if (error_name == bluetooth_profile_manager::kErrorAlreadyExists) |
- return; |
- |
- LOG(WARNING) << object_path_.value() << ": Failed to register profile: " |
- << error_name << ": " << error_message; |
- callback.Run(NULL); |
-} |
- |
-void BluetoothProfileChromeOS::OnUnregisterProfile() { |
- VLOG(1) << object_path_.value() << ": Profile unregistered"; |
- object_path_ = dbus::ObjectPath(""); |
- delete this; |
-} |
- |
-void BluetoothProfileChromeOS::OnUnregisterProfileError( |
- const std::string& error_name, |
- const std::string& error_message) { |
- // It's okay if the profile didn't exist, it means we never saw an adapter. |
- if (error_name == bluetooth_profile_manager::kErrorDoesNotExist) |
- return; |
- |
- LOG(WARNING) << object_path_.value() << ": Failed to unregister profile: " |
- << error_name << ": " << error_message; |
- object_path_ = dbus::ObjectPath(""); |
- delete this; |
-} |
- |
-void BluetoothProfileChromeOS::OnCheckValidity( |
- const dbus::ObjectPath& device_path, |
- const BluetoothProfileServiceProvider::Delegate::Options& options, |
- const ConfirmationCallback& callback, |
- scoped_ptr<dbus::FileDescriptor> fd) { |
- VLOG(1) << object_path_.value() << ": Validity check complete"; |
- if (!fd->is_valid()) { |
- callback.Run(REJECTED); |
- return; |
- } |
- |
- scoped_refptr<BluetoothSocketChromeOS> socket = |
- BluetoothSocketChromeOS::CreateBluetoothSocket( |
- ui_task_runner_, |
- socket_thread_, |
- NULL, |
- net::NetLog::Source()); |
- socket->Connect(fd.Pass(), |
- base::Bind(&BluetoothProfileChromeOS::OnConnect, |
- weak_ptr_factory_.GetWeakPtr(), |
- device_path, |
- socket, |
- callback), |
- base::Bind(&BluetoothProfileChromeOS::OnConnectError, |
- weak_ptr_factory_.GetWeakPtr(), |
- callback)); |
-} |
- |
-void BluetoothProfileChromeOS::OnConnect( |
- const dbus::ObjectPath& device_path, |
- scoped_refptr<BluetoothSocketChromeOS> socket, |
- const ConfirmationCallback& callback) { |
- VLOG(1) << object_path_.value() << ": Profile connection complete"; |
- |
- BluetoothDeviceChromeOS* device = |
- static_cast<BluetoothAdapterChromeOS*>(adapter_.get())-> |
- GetDeviceWithPath(device_path); |
- DCHECK(device); |
- |
- connection_callback_.Run(device, socket); |
- callback.Run(SUCCESS); |
-} |
- |
-void BluetoothProfileChromeOS::OnConnectError( |
- const ConfirmationCallback& callback, |
- const std::string& error_message) { |
- VLOG(1) << object_path_.value() << ": Profile connection failed: " |
- << error_message; |
- |
- callback.Run(REJECTED); |
-} |
- |
-} // namespace chromeos |