Chromium Code Reviews| 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 |
| index 26fb832d431df651c0e8ae47cb248e6ffec021cb..a3f4e1597fa8d268a996491def270e613c729b4f 100644 |
| --- a/chromeos/dbus/fake_bluetooth_media_transport_client.cc |
| +++ b/chromeos/dbus/fake_bluetooth_media_transport_client.cc |
| @@ -4,10 +4,15 @@ |
| #include "chromeos/dbus/fake_bluetooth_media_transport_client.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" |
| using dbus::ObjectPath; |
| @@ -17,15 +22,22 @@ namespace { |
| const char kBluetoothMediaTransportInterface[] = "org.bluez.MediaTransport1"; |
| const char kNotImplemented[] = "org.bluez.NotImplemented"; |
| +ObjectPath GenerateTransportPath() { |
| + static unsigned int sequence_number = 0; |
| + ++sequence_number; |
| + std::stringstream path; |
| + path << chromeos::FakeBluetoothAdapterClient::kAdapterPath |
| + << "/fake_audio_source/fd" << sequence_number; |
|
armansito
2015/02/24 01:38:05
nit: use chromeos::FakeBluetoothAdapterClient::kTr
Miao
2015/02/24 05:11:38
Done.
|
| + return ObjectPath(path.str()); |
| +} |
| + |
| } // namespace |
| namespace chromeos { |
| // static |
| -const char FakeBluetoothMediaTransportClient::kTransportPath[] = |
| - "/fake/hci0/dev_00_00_00_00_00_00/fd0"; |
| const char FakeBluetoothMediaTransportClient::kTransportDevicePath[] = |
| - "/fake/hci0/dev_00_00_00_00_00_00"; |
| + "/fake_audio_source"; |
| const uint8_t FakeBluetoothMediaTransportClient::kTransportCodec = 0x00; |
| const std::vector<uint8_t> |
| FakeBluetoothMediaTransportClient::kTransportConfiguration = { |
| @@ -64,8 +76,7 @@ void FakeBluetoothMediaTransportClient::Properties::Set( |
| callback.Run(false); |
| } |
| -FakeBluetoothMediaTransportClient::FakeBluetoothMediaTransportClient() |
| - : object_path_(ObjectPath(kTransportPath)) { |
| +FakeBluetoothMediaTransportClient::FakeBluetoothMediaTransportClient() { |
| // TODO(mcchou): Multiple endpoints are sharing one property set for now. |
| // Add property sets accordingly to separate the |
| // MediaTransportPropertiesChanged events for different endpoints. |
| @@ -130,20 +141,36 @@ void FakeBluetoothMediaTransportClient::Release( |
| } |
| void FakeBluetoothMediaTransportClient::SetValid( |
| - const ObjectPath& endpoint_path, |
| + 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) { |
| - endpoints_[endpoint_path] = valid; |
| + ObjectPath transport_path = GenerateTransportPath(); |
| + VLOG(1) << "New transport, " << transport_path.value() |
| + << " is created for endpoint " << endpoint_path.value(); |
| + endpoints_[endpoint_path] = transport_path; |
| return; |
| } |
| - endpoints_.erase(endpoint_path); |
| - |
| - // TODO(mcchou): Since there is only one transport path, all observers will |
| - // be notified. Shades irrelevant observers. |
| // Notifies observers about the state change of the transport. |
| FOR_EACH_OBSERVER(BluetoothMediaTransportClient::Observer, observers_, |
| - MediaTransportRemoved(object_path_)); |
| + MediaTransportRemoved(endpoints_[endpoint_path])); |
| + endpoints_.erase(endpoint_path); |
| + endpoint->ClearConfiguration(GetTransportPath(endpoint_path)); |
| +} |
| + |
| +ObjectPath FakeBluetoothMediaTransportClient::GetTransportPath( |
| + const ObjectPath& endpoint_path) { |
| + if (ContainsKey(endpoints_, endpoint_path)) |
| + return endpoints_[endpoint_path]; |
| + return ObjectPath(""); |
| } |
| void FakeBluetoothMediaTransportClient::OnPropertyChanged( |