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

Side by Side Diff: chromeos/dbus/fake_bluetooth_media_transport_client.cc

Issue 939753004: device/bluetooth: Implement Unregister() of BlueotoothAudioSinkChromeOS and disconnection-related c… (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Changed volume_ back to uint16_t with a defined range. Created 5 years, 9 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chromeos/dbus/fake_bluetooth_media_transport_client.h" 5 #include "chromeos/dbus/fake_bluetooth_media_transport_client.h"
6 6
7 #include <sstream>
8
7 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/stl_util.h"
8 #include "chromeos/dbus/bluetooth_media_client.h" 11 #include "chromeos/dbus/bluetooth_media_client.h"
9 #include "chromeos/dbus/dbus_thread_manager.h" 12 #include "chromeos/dbus/dbus_thread_manager.h"
13 #include "chromeos/dbus/fake_bluetooth_adapter_client.h"
10 #include "chromeos/dbus/fake_bluetooth_media_client.h" 14 #include "chromeos/dbus/fake_bluetooth_media_client.h"
15 #include "chromeos/dbus/fake_bluetooth_media_endpoint_service_provider.h"
11 16
12 using dbus::ObjectPath; 17 using dbus::ObjectPath;
13 18
14 namespace { 19 namespace {
15 20
16 // TODO(mcchou): Remove this constants once it is in cros_system_api. 21 // TODO(mcchou): Remove this constants once it is in cros_system_api.
17 const char kBluetoothMediaTransportInterface[] = "org.bluez.MediaTransport1"; 22 const char kBluetoothMediaTransportInterface[] = "org.bluez.MediaTransport1";
18 const char kNotImplemented[] = "org.bluez.NotImplemented"; 23 const char kNotImplemented[] = "org.bluez.NotImplemented";
19 24
25 ObjectPath GenerateTransportPath() {
26 static unsigned int sequence_number = 0;
27 ++sequence_number;
28 std::stringstream path;
29 path << chromeos::FakeBluetoothAdapterClient::kAdapterPath
30 << "/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.
31 return ObjectPath(path.str());
32 }
33
20 } // namespace 34 } // namespace
21 35
22 namespace chromeos { 36 namespace chromeos {
23 37
24 // static 38 // static
25 const char FakeBluetoothMediaTransportClient::kTransportPath[] =
26 "/fake/hci0/dev_00_00_00_00_00_00/fd0";
27 const char FakeBluetoothMediaTransportClient::kTransportDevicePath[] = 39 const char FakeBluetoothMediaTransportClient::kTransportDevicePath[] =
28 "/fake/hci0/dev_00_00_00_00_00_00"; 40 "/fake_audio_source";
29 const uint8_t FakeBluetoothMediaTransportClient::kTransportCodec = 0x00; 41 const uint8_t FakeBluetoothMediaTransportClient::kTransportCodec = 0x00;
30 const std::vector<uint8_t> 42 const std::vector<uint8_t>
31 FakeBluetoothMediaTransportClient::kTransportConfiguration = { 43 FakeBluetoothMediaTransportClient::kTransportConfiguration = {
32 0x21, 0x15, 0x33, 0x2C}; 44 0x21, 0x15, 0x33, 0x2C};
33 const uint16_t FakeBluetoothMediaTransportClient::kTransportDelay = 5; 45 const uint16_t FakeBluetoothMediaTransportClient::kTransportDelay = 5;
34 const uint16_t FakeBluetoothMediaTransportClient::kTransportVolume = 10; 46 const uint16_t FakeBluetoothMediaTransportClient::kTransportVolume = 10;
35 47
36 FakeBluetoothMediaTransportClient::Properties::Properties( 48 FakeBluetoothMediaTransportClient::Properties::Properties(
37 const PropertyChangedCallback& callback) 49 const PropertyChangedCallback& callback)
38 : BluetoothMediaTransportClient::Properties( 50 : BluetoothMediaTransportClient::Properties(
(...skipping 18 matching lines...) Expand all
57 VLOG(1) << "GetAll called."; 69 VLOG(1) << "GetAll called.";
58 } 70 }
59 71
60 void FakeBluetoothMediaTransportClient::Properties::Set( 72 void FakeBluetoothMediaTransportClient::Properties::Set(
61 dbus::PropertyBase* property, 73 dbus::PropertyBase* property,
62 dbus::PropertySet::SetCallback callback) { 74 dbus::PropertySet::SetCallback callback) {
63 VLOG(1) << "Set " << property->name(); 75 VLOG(1) << "Set " << property->name();
64 callback.Run(false); 76 callback.Run(false);
65 } 77 }
66 78
67 FakeBluetoothMediaTransportClient::FakeBluetoothMediaTransportClient() 79 FakeBluetoothMediaTransportClient::FakeBluetoothMediaTransportClient() {
68 : object_path_(ObjectPath(kTransportPath)) {
69 // TODO(mcchou): Multiple endpoints are sharing one property set for now. 80 // TODO(mcchou): Multiple endpoints are sharing one property set for now.
70 // Add property sets accordingly to separate the 81 // Add property sets accordingly to separate the
71 // MediaTransportPropertiesChanged events for different endpoints. 82 // MediaTransportPropertiesChanged events for different endpoints.
72 83
73 // Sets fake property set with default values. 84 // Sets fake property set with default values.
74 properties_.reset(new Properties( 85 properties_.reset(new Properties(
75 base::Bind(&FakeBluetoothMediaTransportClient::OnPropertyChanged, 86 base::Bind(&FakeBluetoothMediaTransportClient::OnPropertyChanged,
76 base::Unretained(this)))); 87 base::Unretained(this))));
77 properties_->device.ReplaceValue(ObjectPath(kTransportDevicePath)); 88 properties_->device.ReplaceValue(ObjectPath(kTransportDevicePath));
78 properties_->uuid.ReplaceValue(BluetoothMediaClient::kBluetoothAudioSinkUUID); 89 properties_->uuid.ReplaceValue(BluetoothMediaClient::kBluetoothAudioSinkUUID);
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
123 } 134 }
124 135
125 void FakeBluetoothMediaTransportClient::Release( 136 void FakeBluetoothMediaTransportClient::Release(
126 const ObjectPath& object_path, 137 const ObjectPath& object_path,
127 const base::Closure& callback, 138 const base::Closure& callback,
128 const ErrorCallback& error_callback) { 139 const ErrorCallback& error_callback) {
129 error_callback.Run(kNotImplemented, ""); 140 error_callback.Run(kNotImplemented, "");
130 } 141 }
131 142
132 void FakeBluetoothMediaTransportClient::SetValid( 143 void FakeBluetoothMediaTransportClient::SetValid(
133 const ObjectPath& endpoint_path, 144 FakeBluetoothMediaEndpointServiceProvider* endpoint,
134 bool valid) { 145 bool valid) {
146 FakeBluetoothMediaClient* media = static_cast<FakeBluetoothMediaClient*>(
147 DBusThreadManager::Get()->GetBluetoothMediaClient());
148 DCHECK(media);
149
150 ObjectPath endpoint_path(endpoint->object_path());
151 if (!media->IsRegistered(endpoint_path))
152 return;
153
135 if (valid) { 154 if (valid) {
136 endpoints_[endpoint_path] = valid; 155 ObjectPath transport_path = GenerateTransportPath();
156 VLOG(1) << "New transport, " << transport_path.value()
157 << " is created for endpoint " << endpoint_path.value();
158 endpoints_[endpoint_path] = transport_path;
137 return; 159 return;
138 } 160 }
139 endpoints_.erase(endpoint_path);
140
141 // TODO(mcchou): Since there is only one transport path, all observers will
142 // be notified. Shades irrelevant observers.
143 161
144 // Notifies observers about the state change of the transport. 162 // Notifies observers about the state change of the transport.
145 FOR_EACH_OBSERVER(BluetoothMediaTransportClient::Observer, observers_, 163 FOR_EACH_OBSERVER(BluetoothMediaTransportClient::Observer, observers_,
146 MediaTransportRemoved(object_path_)); 164 MediaTransportRemoved(endpoints_[endpoint_path]));
165 endpoints_.erase(endpoint_path);
166 endpoint->ClearConfiguration(GetTransportPath(endpoint_path));
167 }
168
169 ObjectPath FakeBluetoothMediaTransportClient::GetTransportPath(
170 const ObjectPath& endpoint_path) {
171 if (ContainsKey(endpoints_, endpoint_path))
172 return endpoints_[endpoint_path];
173 return ObjectPath("");
147 } 174 }
148 175
149 void FakeBluetoothMediaTransportClient::OnPropertyChanged( 176 void FakeBluetoothMediaTransportClient::OnPropertyChanged(
150 const std::string& property_name) { 177 const std::string& property_name) {
151 VLOG(1) << "Property " << property_name << " changed"; 178 VLOG(1) << "Property " << property_name << " changed";
152 } 179 }
153 180
154 } // namespace chromeos 181 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698