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

Unified Diff: chromeos/dbus/fake_bluetooth_media_transport_client.cc

Issue 1347193004: Refactor DBusThreadManager to split away BT clients. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 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 side-by-side diff with in-line comments
Download patch
Index: chromeos/dbus/fake_bluetooth_media_transport_client.cc
diff --git a/chromeos/dbus/fake_bluetooth_media_transport_client.cc b/chromeos/dbus/fake_bluetooth_media_transport_client.cc
deleted file mode 100644
index 441a66bca4af4148620ddfe03bb4d02b018829b4..0000000000000000000000000000000000000000
--- a/chromeos/dbus/fake_bluetooth_media_transport_client.cc
+++ /dev/null
@@ -1,326 +0,0 @@
-// Copyright 2014 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/fake_bluetooth_media_transport_client.h"
-
-#include <unistd.h>
-#include <sys/socket.h>
-
-#include <sstream>
-
-#include "base/bind.h"
-#include "base/stl_util.h"
-#include "chromeos/dbus/bluetooth_media_client.h"
-#include "chromeos/dbus/dbus_thread_manager.h"
-#include "chromeos/dbus/fake_bluetooth_adapter_client.h"
-#include "chromeos/dbus/fake_bluetooth_media_client.h"
-#include "chromeos/dbus/fake_bluetooth_media_endpoint_service_provider.h"
-#include "dbus/file_descriptor.h"
-
-using dbus::ObjectPath;
-
-namespace {
-
-// TODO(mcchou): Remove this constants once it is in cros_system_api.
-const char kBluetoothMediaTransportInterface[] = "org.bluez.MediaTransport1";
-const char kNotImplemented[] = "org.bluez.NotImplemented";
-const char kNotAuthorized[] = "org.bluez.NotAuthorized";
-const char kFailed[] = "org.bluez.Failed";
-const char kNotAvailable[] = "org.bluez.NotAvailable";
-
-const int kInvalidFd = -1;
-
-ObjectPath GenerateTransportPath() {
- static unsigned int sequence_number = 0;
- ++sequence_number;
- std::stringstream path;
- path << chromeos::FakeBluetoothAdapterClient::kAdapterPath
- << chromeos::FakeBluetoothMediaTransportClient::kTransportDevicePath
- << "/fd" << sequence_number;
- return ObjectPath(path.str());
-}
-
-} // namespace
-
-namespace chromeos {
-
-// static
-const char FakeBluetoothMediaTransportClient::kTransportDevicePath[] =
- "/fake_audio_source";
-const uint8_t FakeBluetoothMediaTransportClient::kTransportCodec = 0x00;
-const std::vector<uint8_t>
- FakeBluetoothMediaTransportClient::kTransportConfiguration = {
- 0x21, 0x15, 0x33, 0x2C};
-const uint16_t FakeBluetoothMediaTransportClient::kTransportDelay = 5;
-const uint16_t FakeBluetoothMediaTransportClient::kTransportVolume = 50;
-const uint16_t FakeBluetoothMediaTransportClient::kDefaultReadMtu = 20;
-const uint16_t FakeBluetoothMediaTransportClient::kDefaultWriteMtu = 25;
-
-FakeBluetoothMediaTransportClient::Properties::Properties(
- const PropertyChangedCallback& callback)
- : BluetoothMediaTransportClient::Properties(
- nullptr,
- kBluetoothMediaTransportInterface,
- callback) {
-}
-
-FakeBluetoothMediaTransportClient::Properties::~Properties() {
-}
-
-void FakeBluetoothMediaTransportClient::Properties::Get(
- dbus::PropertyBase* property,
- dbus::PropertySet::GetCallback callback) {
- VLOG(1) << "Get " << property->name();
- callback.Run(false);
-}
-
-void FakeBluetoothMediaTransportClient::Properties::GetAll() {
- VLOG(1) << "GetAll called.";
-}
-
-void FakeBluetoothMediaTransportClient::Properties::Set(
- dbus::PropertyBase* property,
- dbus::PropertySet::SetCallback callback) {
- VLOG(1) << "Set " << property->name();
- callback.Run(false);
-}
-
-FakeBluetoothMediaTransportClient::Transport::Transport(
- const ObjectPath& transport_path,
- Properties* transport_properties)
- : path(transport_path) {
- properties.reset(transport_properties);
-}
-
-FakeBluetoothMediaTransportClient::Transport::~Transport() {
-}
-
-FakeBluetoothMediaTransportClient::FakeBluetoothMediaTransportClient() {
-}
-
-FakeBluetoothMediaTransportClient::~FakeBluetoothMediaTransportClient() {
- STLDeleteValues(&endpoint_to_transport_map_);
-}
-
-// DBusClient override.
-void FakeBluetoothMediaTransportClient::Init(dbus::Bus* bus) {
-}
-
-void FakeBluetoothMediaTransportClient::AddObserver(
- BluetoothMediaTransportClient::Observer* observer) {
- observers_.AddObserver(observer);
-}
-
-void FakeBluetoothMediaTransportClient::RemoveObserver(
- BluetoothMediaTransportClient::Observer* observer) {
- observers_.RemoveObserver(observer);
-}
-
-FakeBluetoothMediaTransportClient::Properties*
-FakeBluetoothMediaTransportClient::GetProperties(
- const ObjectPath& object_path) {
- const ObjectPath& endpoint_path = GetEndpointPath(object_path);
- Transport* transport = GetTransport(endpoint_path);
- if (!transport)
- return nullptr;
- return transport->properties.get();
-}
-
-void FakeBluetoothMediaTransportClient::Acquire(
- const ObjectPath& object_path,
- const AcquireCallback& callback,
- const ErrorCallback& error_callback) {
- VLOG(1) << "Acquire - transport path: " << object_path.value();
- AcquireInternal(false, object_path, callback, error_callback);
-}
-
-void FakeBluetoothMediaTransportClient::TryAcquire(
- const ObjectPath& object_path,
- const AcquireCallback& callback,
- const ErrorCallback& error_callback) {
- VLOG(1) << "TryAcquire - transport path: " << object_path.value();
- AcquireInternal(true, object_path, callback, error_callback);
-}
-
-void FakeBluetoothMediaTransportClient::Release(
- const ObjectPath& object_path,
- const base::Closure& callback,
- const ErrorCallback& error_callback) {
- error_callback.Run(kNotImplemented, "");
-}
-
-void FakeBluetoothMediaTransportClient::SetValid(
- FakeBluetoothMediaEndpointServiceProvider* endpoint,
- bool valid) {
- FakeBluetoothMediaClient* media = static_cast<FakeBluetoothMediaClient*>(
- DBusThreadManager::Get()->GetBluetoothMediaClient());
- DCHECK(media);
-
- ObjectPath endpoint_path(endpoint->object_path());
- if (!media->IsRegistered(endpoint_path))
- return;
-
- if (valid) {
- ObjectPath transport_path = GenerateTransportPath();
- VLOG(1) << "New transport, " << transport_path.value()
- << " is created for endpoint " << endpoint_path.value();
-
- // Sets the fake property set with default values.
- scoped_ptr<Properties> properties(new Properties(
- base::Bind(&FakeBluetoothMediaTransportClient::OnPropertyChanged,
- base::Unretained(this))));
- properties->device.ReplaceValue(ObjectPath(kTransportDevicePath));
- properties->uuid.ReplaceValue(
- BluetoothMediaClient::kBluetoothAudioSinkUUID);
- properties->codec.ReplaceValue(kTransportCodec);
- properties->configuration.ReplaceValue(kTransportConfiguration);
- properties->state.ReplaceValue(BluetoothMediaTransportClient::kStateIdle);
- properties->delay.ReplaceValue(kTransportDelay);
- properties->volume.ReplaceValue(kTransportVolume);
-
- endpoint_to_transport_map_[endpoint_path] =
- new Transport(transport_path, properties.release());
- transport_to_endpoint_map_[transport_path] = endpoint_path;
- return;
- }
-
- Transport* transport = GetTransport(endpoint_path);
- if (!transport)
- return;
- ObjectPath transport_path = transport->path;
-
- // Notifies observers about the state change of the transport.
- FOR_EACH_OBSERVER(BluetoothMediaTransportClient::Observer, observers_,
- MediaTransportRemoved(transport_path));
-
- endpoint->ClearConfiguration(transport_path);
- delete transport;
- endpoint_to_transport_map_.erase(endpoint_path);
- transport_to_endpoint_map_.erase(transport_path);
-}
-
-void FakeBluetoothMediaTransportClient::SetState(
- const ObjectPath& endpoint_path,
- const std::string& state) {
- VLOG(1) << "SetState - state: " << state;
-
- Transport* transport = GetTransport(endpoint_path);
- if (!transport)
- return;
-
- transport->properties->state.ReplaceValue(state);
- FOR_EACH_OBSERVER(BluetoothMediaTransportClient::Observer, observers_,
- MediaTransportPropertyChanged(
- transport->path,
- BluetoothMediaTransportClient::kStateProperty));
-}
-
-void FakeBluetoothMediaTransportClient::SetVolume(
- const ObjectPath& endpoint_path,
- const uint16_t& volume) {
- Transport* transport = GetTransport(endpoint_path);
- if (!transport)
- return;
-
- transport->properties->volume.ReplaceValue(volume);
- FOR_EACH_OBSERVER(BluetoothMediaTransportClient::Observer, observers_,
- MediaTransportPropertyChanged(
- transport->path,
- BluetoothMediaTransportClient::kVolumeProperty));
-}
-
-void FakeBluetoothMediaTransportClient::WriteData(
- const ObjectPath& endpoint_path, const std::vector<char>& bytes) {
- VLOG(1) << "WriteData - write " << bytes.size() << " bytes";
-
- Transport* transport = GetTransport(endpoint_path);
-
- if (!transport || transport->properties->state.value() != "active") {
- VLOG(1) << "WriteData - write operation rejected, since the state isn't "
- "active for endpoint: " << endpoint_path.value();
- return;
- }
-
- if (!transport->input_fd.get()) {
- VLOG(1) << "WriteData - invalid input file descriptor";
- return;
- }
-
- ssize_t written_len =
- write(transport->input_fd->GetPlatformFile(), bytes.data(), bytes.size());
- if (written_len < 0) {
- VLOG(1) << "WriteData - failed to write to the socket";
- return;
- }
-
- VLOG(1) << "WriteData - wrote " << written_len << " bytes to the socket";
-}
-
-ObjectPath FakeBluetoothMediaTransportClient::GetTransportPath(
- const ObjectPath& endpoint_path) {
- Transport* transport = GetTransport(endpoint_path);
- return transport ? transport->path : ObjectPath("");
-}
-
-void FakeBluetoothMediaTransportClient::OnPropertyChanged(
- const std::string& property_name) {
- VLOG(1) << "Property " << property_name << " changed";
-}
-
-ObjectPath FakeBluetoothMediaTransportClient::GetEndpointPath(
- const ObjectPath& transport_path) {
- const auto& it = transport_to_endpoint_map_.find(transport_path);
- return it != transport_to_endpoint_map_.end() ? it->second : ObjectPath("");
-}
-
-FakeBluetoothMediaTransportClient::Transport*
-FakeBluetoothMediaTransportClient::GetTransport(
- const ObjectPath& endpoint_path) {
- const auto& it = endpoint_to_transport_map_.find(endpoint_path);
- return (it != endpoint_to_transport_map_.end()) ? it->second : nullptr;
-}
-
-FakeBluetoothMediaTransportClient::Transport*
-FakeBluetoothMediaTransportClient::GetTransportByPath(
- const dbus::ObjectPath& transport_path) {
- return GetTransport(GetEndpointPath(transport_path));
-}
-
-void FakeBluetoothMediaTransportClient::AcquireInternal(
- bool try_flag,
- const ObjectPath& object_path,
- const AcquireCallback& callback,
- const ErrorCallback& error_callback) {
- const ObjectPath& endpoint_path = GetEndpointPath(object_path);
- Transport* transport = GetTransport(endpoint_path);
- if (!transport) {
- error_callback.Run(kFailed, "");
- return;
- }
-
- std::string state = transport->properties->state.value();
- if (state == "active") {
- error_callback.Run(kNotAuthorized, "");
- return;
- }
- if (state != "pending") {
- error_callback.Run(try_flag ? kNotAvailable : kFailed, "");
- return;
- }
-
- int fds[2];
- if (socketpair(AF_UNIX, SOCK_STREAM, 0, fds) < 0) {
- transport->input_fd.reset();
- error_callback.Run(kFailed, "");
- return;
- }
- DCHECK((fds[0] > kInvalidFd) && (fds[1] > kInvalidFd));
- transport->input_fd.reset(new base::File(fds[0]));
-
- dbus::FileDescriptor out_fd(fds[1]);
- callback.Run(&out_fd, kDefaultReadMtu, kDefaultWriteMtu);
- SetState(endpoint_path, "active");
-}
-
-} // namespace chromeos
« no previous file with comments | « chromeos/dbus/fake_bluetooth_media_transport_client.h ('k') | chromeos/dbus/fake_bluetooth_profile_manager_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698