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

Side by Side Diff: device/bluetooth/bluetooth_audio_sink_bluez_unittest.cc

Issue 1367663002: Add Linux support for the Bluetooth API. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@refactor_dbus
Patch Set: rebase Created 5 years, 2 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 <vector> 5 #include <vector>
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/memory/ref_counted.h" 9 #include "base/memory/ref_counted.h"
10 #include "base/message_loop/message_loop.h" 10 #include "base/message_loop/message_loop.h"
11 #include "dbus/object_path.h" 11 #include "dbus/object_path.h"
12 #include "device/bluetooth/bluetooth_adapter.h" 12 #include "device/bluetooth/bluetooth_adapter.h"
13 #include "device/bluetooth/bluetooth_adapter_factory.h" 13 #include "device/bluetooth/bluetooth_adapter_factory.h"
14 #include "device/bluetooth/bluetooth_audio_sink.h" 14 #include "device/bluetooth/bluetooth_audio_sink.h"
15 #include "device/bluetooth/bluetooth_audio_sink_chromeos.h" 15 #include "device/bluetooth/bluetooth_audio_sink_bluez.h"
16 #include "device/bluetooth/dbus/bluetooth_media_client.h" 16 #include "device/bluetooth/dbus/bluetooth_media_client.h"
17 #include "device/bluetooth/dbus/bluetooth_media_endpoint_service_provider.h" 17 #include "device/bluetooth/dbus/bluetooth_media_endpoint_service_provider.h"
18 #include "device/bluetooth/dbus/bluetooth_media_transport_client.h" 18 #include "device/bluetooth/dbus/bluetooth_media_transport_client.h"
19 #include "device/bluetooth/dbus/bluez_dbus_manager.h" 19 #include "device/bluetooth/dbus/bluez_dbus_manager.h"
20 #include "device/bluetooth/dbus/fake_bluetooth_media_client.h" 20 #include "device/bluetooth/dbus/fake_bluetooth_media_client.h"
21 #include "device/bluetooth/dbus/fake_bluetooth_media_endpoint_service_provider.h " 21 #include "device/bluetooth/dbus/fake_bluetooth_media_endpoint_service_provider.h "
22 #include "device/bluetooth/dbus/fake_bluetooth_media_transport_client.h" 22 #include "device/bluetooth/dbus/fake_bluetooth_media_transport_client.h"
23 #include "testing/gtest/include/gtest/gtest.h" 23 #include "testing/gtest/include/gtest/gtest.h"
24 24
25 using dbus::ObjectPath; 25 using dbus::ObjectPath;
26 using device::BluetoothAdapter; 26 using device::BluetoothAdapter;
27 using device::BluetoothAdapterFactory; 27 using device::BluetoothAdapterFactory;
28 using device::BluetoothAudioSink; 28 using device::BluetoothAudioSink;
29 29
30 namespace chromeos { 30 namespace bluez {
31 31
32 class TestAudioSinkObserver : public BluetoothAudioSink::Observer { 32 class TestAudioSinkObserver : public BluetoothAudioSink::Observer {
33 public: 33 public:
34 explicit TestAudioSinkObserver(scoped_refptr<BluetoothAudioSink> audio_sink) 34 explicit TestAudioSinkObserver(scoped_refptr<BluetoothAudioSink> audio_sink)
35 : state_changed_count_(0), 35 : state_changed_count_(0),
36 volume_changed_count_(0), 36 volume_changed_count_(0),
37 total_read_(0), 37 total_read_(0),
38 state_(audio_sink->GetState()), 38 state_(audio_sink->GetState()),
39 audio_sink_(audio_sink) { 39 audio_sink_(audio_sink) {
40 audio_sink_->AddObserver(this); 40 audio_sink_->AddObserver(this);
(...skipping 30 matching lines...) Expand all
71 int data_available_count_; 71 int data_available_count_;
72 size_t total_read_; 72 size_t total_read_;
73 std::vector<char> data_; 73 std::vector<char> data_;
74 uint16_t read_mtu_; 74 uint16_t read_mtu_;
75 BluetoothAudioSink::State state_; 75 BluetoothAudioSink::State state_;
76 76
77 private: 77 private:
78 scoped_refptr<BluetoothAudioSink> audio_sink_; 78 scoped_refptr<BluetoothAudioSink> audio_sink_;
79 }; 79 };
80 80
81 class BluetoothAudioSinkChromeOSTest : public testing::Test { 81 class BluetoothAudioSinkBlueZTest : public testing::Test {
82 public: 82 public:
83 void SetUp() override { 83 void SetUp() override {
84 bluez::BluezDBusManager::Initialize(NULL, true); 84 bluez::BluezDBusManager::Initialize(NULL, true);
85 85
86 callback_count_ = 0; 86 callback_count_ = 0;
87 error_callback_count_ = 0; 87 error_callback_count_ = 0;
88 88
89 fake_media_ = static_cast<bluez::FakeBluetoothMediaClient*>( 89 fake_media_ = static_cast<bluez::FakeBluetoothMediaClient*>(
90 bluez::BluezDBusManager::Get()->GetBluetoothMediaClient()); 90 bluez::BluezDBusManager::Get()->GetBluetoothMediaClient());
91 fake_transport_ = static_cast<bluez::FakeBluetoothMediaTransportClient*>( 91 fake_transport_ = static_cast<bluez::FakeBluetoothMediaTransportClient*>(
(...skipping 25 matching lines...) Expand all
117 117
118 // The adapter should outlive audio sink. 118 // The adapter should outlive audio sink.
119 audio_sink_ = nullptr; 119 audio_sink_ = nullptr;
120 adapter_ = nullptr; 120 adapter_ = nullptr;
121 bluez::BluezDBusManager::Shutdown(); 121 bluez::BluezDBusManager::Shutdown();
122 } 122 }
123 123
124 // Gets the existing Bluetooth adapter. 124 // Gets the existing Bluetooth adapter.
125 void GetAdapter() { 125 void GetAdapter() {
126 BluetoothAdapterFactory::GetAdapter( 126 BluetoothAdapterFactory::GetAdapter(
127 base::Bind(&BluetoothAudioSinkChromeOSTest::GetAdapterCallback, 127 base::Bind(&BluetoothAudioSinkBlueZTest::GetAdapterCallback,
128 base::Unretained(this))); 128 base::Unretained(this)));
129 } 129 }
130 130
131 // Called whenever BluetoothAdapter is retrieved successfully. 131 // Called whenever BluetoothAdapter is retrieved successfully.
132 void GetAdapterCallback(scoped_refptr<BluetoothAdapter> adapter) { 132 void GetAdapterCallback(scoped_refptr<BluetoothAdapter> adapter) {
133 adapter_ = adapter; 133 adapter_ = adapter;
134 134
135 ASSERT_NE(adapter_.get(), nullptr); 135 ASSERT_NE(adapter_.get(), nullptr);
136 ASSERT_TRUE(adapter_->IsInitialized()); 136 ASSERT_TRUE(adapter_->IsInitialized());
137 adapter_->SetPowered( 137 adapter_->SetPowered(true,
138 true, 138 base::Bind(&BluetoothAudioSinkBlueZTest::Callback,
139 base::Bind(&BluetoothAudioSinkChromeOSTest::Callback, 139 base::Unretained(this)),
140 base::Unretained(this)), 140 base::Bind(&BluetoothAudioSinkBlueZTest::ErrorCallback,
141 base::Bind(&BluetoothAudioSinkChromeOSTest::ErrorCallback, 141 base::Unretained(this)));
142 base::Unretained(this)));
143 ASSERT_TRUE(adapter_->IsPresent()); 142 ASSERT_TRUE(adapter_->IsPresent());
144 ASSERT_TRUE(adapter_->IsPowered()); 143 ASSERT_TRUE(adapter_->IsPowered());
145 EXPECT_EQ(callback_count_, 1); 144 EXPECT_EQ(callback_count_, 1);
146 EXPECT_EQ(error_callback_count_, 0); 145 EXPECT_EQ(error_callback_count_, 0);
147 146
148 // Resets callback_count_. 147 // Resets callback_count_.
149 --callback_count_; 148 --callback_count_;
150 } 149 }
151 150
152 // Registers BluetoothAudioSinkChromeOS with default codec and capabilities. 151 // Registers BluetoothAudioSinkBlueZ with default codec and capabilities.
153 // If the audio sink is retrieved successfully, the state changes to 152 // If the audio sink is retrieved successfully, the state changes to
154 // STATE_DISCONNECTED. 153 // STATE_DISCONNECTED.
155 void GetAudioSink() { 154 void GetAudioSink() {
156 // Sets up valid codec and capabilities. 155 // Sets up valid codec and capabilities.
157 BluetoothAudioSink::Options options; 156 BluetoothAudioSink::Options options;
158 ASSERT_EQ(options.codec, 0x00); 157 ASSERT_EQ(options.codec, 0x00);
159 ASSERT_EQ(options.capabilities, 158 ASSERT_EQ(options.capabilities,
160 std::vector<uint8_t>({0x3f, 0xff, 0x12, 0x35})); 159 std::vector<uint8_t>({0x3f, 0xff, 0x12, 0x35}));
161 160
162 // Registers |audio_sink_| with valid codec and capabilities 161 // Registers |audio_sink_| with valid codec and capabilities
163 adapter_->RegisterAudioSink( 162 adapter_->RegisterAudioSink(
164 options, 163 options, base::Bind(&BluetoothAudioSinkBlueZTest::RegisterCallback,
165 base::Bind(&BluetoothAudioSinkChromeOSTest::RegisterCallback, 164 base::Unretained(this)),
166 base::Unretained(this)), 165 base::Bind(&BluetoothAudioSinkBlueZTest::RegisterErrorCallback,
167 base::Bind(&BluetoothAudioSinkChromeOSTest::RegisterErrorCallback,
168 base::Unretained(this))); 166 base::Unretained(this)));
169 167
170 observer_.reset(new TestAudioSinkObserver(audio_sink_)); 168 observer_.reset(new TestAudioSinkObserver(audio_sink_));
171 EXPECT_EQ(callback_count_, 1); 169 EXPECT_EQ(callback_count_, 1);
172 EXPECT_EQ(error_callback_count_, 0); 170 EXPECT_EQ(error_callback_count_, 0);
173 EXPECT_EQ(observer_->state_changed_count_, 0); 171 EXPECT_EQ(observer_->state_changed_count_, 0);
174 EXPECT_EQ(observer_->volume_changed_count_, 0); 172 EXPECT_EQ(observer_->volume_changed_count_, 0);
175 } 173 }
176 174
177 void GetFakeMediaEndpoint() { 175 void GetFakeMediaEndpoint() {
178 BluetoothAudioSinkChromeOS* audio_sink_chromeos = 176 BluetoothAudioSinkBlueZ* audio_sink_bluez =
179 static_cast<BluetoothAudioSinkChromeOS*>(audio_sink_.get()); 177 static_cast<BluetoothAudioSinkBlueZ*>(audio_sink_.get());
180 ASSERT_NE(audio_sink_chromeos, nullptr); 178 ASSERT_NE(audio_sink_bluez, nullptr);
181 179
182 media_endpoint_ = 180 media_endpoint_ =
183 static_cast<bluez::FakeBluetoothMediaEndpointServiceProvider*>( 181 static_cast<bluez::FakeBluetoothMediaEndpointServiceProvider*>(
184 audio_sink_chromeos->GetEndpointServiceProvider()); 182 audio_sink_bluez->GetEndpointServiceProvider());
185 } 183 }
186 184
187 // Called whenever RegisterAudioSink is completed successfully. 185 // Called whenever RegisterAudioSink is completed successfully.
188 void RegisterCallback( 186 void RegisterCallback(scoped_refptr<BluetoothAudioSink> audio_sink) {
189 scoped_refptr<BluetoothAudioSink> audio_sink) {
190 ++callback_count_; 187 ++callback_count_;
191 audio_sink_ = audio_sink; 188 audio_sink_ = audio_sink;
192 189
193 GetFakeMediaEndpoint(); 190 GetFakeMediaEndpoint();
194 ASSERT_NE(media_endpoint_, nullptr); 191 ASSERT_NE(media_endpoint_, nullptr);
195 fake_media_->SetEndpointRegistered(media_endpoint_, true); 192 fake_media_->SetEndpointRegistered(media_endpoint_, true);
196 193
197 ASSERT_NE(audio_sink_.get(), nullptr); 194 ASSERT_NE(audio_sink_.get(), nullptr);
198 ASSERT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_DISCONNECTED); 195 ASSERT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_DISCONNECTED);
199 } 196 }
(...skipping 12 matching lines...) Expand all
212 // audio sink in GetAudioSink(). 209 // audio sink in GetAudioSink().
213 EXPECT_EQ(capabilities, std::vector<uint8_t>({0x3f, 0xff, 0x12, 0x35})); 210 EXPECT_EQ(capabilities, std::vector<uint8_t>({0x3f, 0xff, 0x12, 0x35}));
214 } 211 }
215 212
216 void UnregisterErrorCallback(BluetoothAudioSink::ErrorCode error_code) { 213 void UnregisterErrorCallback(BluetoothAudioSink::ErrorCode error_code) {
217 ++error_callback_count_; 214 ++error_callback_count_;
218 EXPECT_EQ(error_code, BluetoothAudioSink::ERROR_NOT_UNREGISTERED); 215 EXPECT_EQ(error_code, BluetoothAudioSink::ERROR_NOT_UNREGISTERED);
219 } 216 }
220 217
221 // Generic callbacks. 218 // Generic callbacks.
222 void Callback() { 219 void Callback() { ++callback_count_; }
223 ++callback_count_;
224 }
225 220
226 void ErrorCallback() { 221 void ErrorCallback() { ++error_callback_count_; }
227 ++error_callback_count_;
228 }
229 222
230 protected: 223 protected:
231 int callback_count_; 224 int callback_count_;
232 int error_callback_count_; 225 int error_callback_count_;
233 226
234 base::MessageLoopForIO message_loop_; 227 base::MessageLoopForIO message_loop_;
235 228
236 bluez::FakeBluetoothMediaClient* fake_media_; 229 bluez::FakeBluetoothMediaClient* fake_media_;
237 bluez::FakeBluetoothMediaTransportClient* fake_transport_; 230 bluez::FakeBluetoothMediaTransportClient* fake_transport_;
238 bluez::FakeBluetoothMediaEndpointServiceProvider* media_endpoint_; 231 bluez::FakeBluetoothMediaEndpointServiceProvider* media_endpoint_;
239 scoped_ptr<TestAudioSinkObserver> observer_; 232 scoped_ptr<TestAudioSinkObserver> observer_;
240 scoped_refptr<BluetoothAdapter> adapter_; 233 scoped_refptr<BluetoothAdapter> adapter_;
241 scoped_refptr<BluetoothAudioSink> audio_sink_; 234 scoped_refptr<BluetoothAudioSink> audio_sink_;
242 235
243 // The default property set used while calling SetConfiguration on a media 236 // The default property set used while calling SetConfiguration on a media
244 // endpoint object. 237 // endpoint object.
245 bluez::BluetoothMediaEndpointServiceProvider::Delegate::TransportProperties 238 bluez::BluetoothMediaEndpointServiceProvider::Delegate::TransportProperties
246 properties_; 239 properties_;
247 }; 240 };
248 241
249 TEST_F(BluetoothAudioSinkChromeOSTest, RegisterSucceeded) { 242 TEST_F(BluetoothAudioSinkBlueZTest, RegisterSucceeded) {
250 GetAudioSink(); 243 GetAudioSink();
251 } 244 }
252 245
253 TEST_F(BluetoothAudioSinkChromeOSTest, RegisterFailedWithInvalidOptions) { 246 TEST_F(BluetoothAudioSinkBlueZTest, RegisterFailedWithInvalidOptions) {
254 // Sets options with an invalid codec and valid capabilities. 247 // Sets options with an invalid codec and valid capabilities.
255 BluetoothAudioSink::Options options; 248 BluetoothAudioSink::Options options;
256 options.codec = 0xff; 249 options.codec = 0xff;
257 options.capabilities = std::vector<uint8_t>({0x3f, 0xff, 0x12, 0x35}); 250 options.capabilities = std::vector<uint8_t>({0x3f, 0xff, 0x12, 0x35});
258 251
259 adapter_->RegisterAudioSink( 252 adapter_->RegisterAudioSink(
260 options, 253 options, base::Bind(&BluetoothAudioSinkBlueZTest::RegisterCallback,
261 base::Bind(&BluetoothAudioSinkChromeOSTest::RegisterCallback, 254 base::Unretained(this)),
262 base::Unretained(this)), 255 base::Bind(&BluetoothAudioSinkBlueZTest::RegisterErrorCallback,
263 base::Bind(&BluetoothAudioSinkChromeOSTest::RegisterErrorCallback,
264 base::Unretained(this))); 256 base::Unretained(this)));
265 257
266 EXPECT_EQ(callback_count_, 0); 258 EXPECT_EQ(callback_count_, 0);
267 EXPECT_EQ(error_callback_count_, 1); 259 EXPECT_EQ(error_callback_count_, 1);
268 260
269 // Sets options with a valid codec and invalid capabilities. 261 // Sets options with a valid codec and invalid capabilities.
270 options.codec = 0x00; 262 options.codec = 0x00;
271 options.capabilities.clear(); 263 options.capabilities.clear();
272 adapter_->RegisterAudioSink( 264 adapter_->RegisterAudioSink(
273 options, 265 options, base::Bind(&BluetoothAudioSinkBlueZTest::RegisterCallback,
274 base::Bind(&BluetoothAudioSinkChromeOSTest::RegisterCallback, 266 base::Unretained(this)),
275 base::Unretained(this)), 267 base::Bind(&BluetoothAudioSinkBlueZTest::RegisterErrorCallback,
276 base::Bind(&BluetoothAudioSinkChromeOSTest::RegisterErrorCallback,
277 base::Unretained(this))); 268 base::Unretained(this)));
278 269
279 EXPECT_EQ(callback_count_, 0); 270 EXPECT_EQ(callback_count_, 0);
280 EXPECT_EQ(error_callback_count_, 2); 271 EXPECT_EQ(error_callback_count_, 2);
281 } 272 }
282 273
283 TEST_F(BluetoothAudioSinkChromeOSTest, SelectConfiguration) { 274 TEST_F(BluetoothAudioSinkBlueZTest, SelectConfiguration) {
284 GetAudioSink(); 275 GetAudioSink();
285 276
286 // Simulates calling SelectConfiguration on the media endpoint object owned by 277 // Simulates calling SelectConfiguration on the media endpoint object owned by
287 // |audio_sink_| with some fake capabilities. 278 // |audio_sink_| with some fake capabilities.
288 media_endpoint_->SelectConfiguration( 279 media_endpoint_->SelectConfiguration(
289 std::vector<uint8_t>({0x21, 0x15, 0x33, 0x2C}), 280 std::vector<uint8_t>({0x21, 0x15, 0x33, 0x2C}),
290 base::Bind(&BluetoothAudioSinkChromeOSTest::SelectConfigurationCallback, 281 base::Bind(&BluetoothAudioSinkBlueZTest::SelectConfigurationCallback,
291 base::Unretained(this))); 282 base::Unretained(this)));
292 283
293 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_DISCONNECTED); 284 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_DISCONNECTED);
294 EXPECT_EQ(callback_count_, 2); 285 EXPECT_EQ(callback_count_, 2);
295 EXPECT_EQ(error_callback_count_, 0); 286 EXPECT_EQ(error_callback_count_, 0);
296 EXPECT_EQ(observer_->state_changed_count_, 0); 287 EXPECT_EQ(observer_->state_changed_count_, 0);
297 EXPECT_EQ(observer_->volume_changed_count_, 0); 288 EXPECT_EQ(observer_->volume_changed_count_, 0);
298 } 289 }
299 290
300 TEST_F(BluetoothAudioSinkChromeOSTest, SetConfiguration) { 291 TEST_F(BluetoothAudioSinkBlueZTest, SetConfiguration) {
301 GetAudioSink(); 292 GetAudioSink();
302 293
303 media_endpoint_->SelectConfiguration( 294 media_endpoint_->SelectConfiguration(
304 std::vector<uint8_t>({0x21, 0x15, 0x33, 0x2C}), 295 std::vector<uint8_t>({0x21, 0x15, 0x33, 0x2C}),
305 base::Bind(&BluetoothAudioSinkChromeOSTest::SelectConfigurationCallback, 296 base::Bind(&BluetoothAudioSinkBlueZTest::SelectConfigurationCallback,
306 base::Unretained(this))); 297 base::Unretained(this)));
307 298
308 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_DISCONNECTED); 299 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_DISCONNECTED);
309 EXPECT_EQ(callback_count_, 2); 300 EXPECT_EQ(callback_count_, 2);
310 EXPECT_EQ(error_callback_count_, 0); 301 EXPECT_EQ(error_callback_count_, 0);
311 EXPECT_EQ(observer_->state_changed_count_, 0); 302 EXPECT_EQ(observer_->state_changed_count_, 0);
312 EXPECT_EQ(observer_->volume_changed_count_, 0); 303 EXPECT_EQ(observer_->volume_changed_count_, 0);
313 304
314 // Simulates calling SetConfiguration on the media endpoint object owned by 305 // Simulates calling SetConfiguration on the media endpoint object owned by
315 // |audio_sink_| with a fake transport path and a 306 // |audio_sink_| with a fake transport path and a
316 // Delegate::TransportProperties structure. 307 // Delegate::TransportProperties structure.
317 media_endpoint_->SetConfiguration( 308 media_endpoint_->SetConfiguration(
318 fake_transport_->GetTransportPath(media_endpoint_->object_path()), 309 fake_transport_->GetTransportPath(media_endpoint_->object_path()),
319 properties_); 310 properties_);
320 311
321 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_IDLE); 312 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_IDLE);
322 EXPECT_EQ(callback_count_, 2); 313 EXPECT_EQ(callback_count_, 2);
323 EXPECT_EQ(error_callback_count_, 0); 314 EXPECT_EQ(error_callback_count_, 0);
324 EXPECT_EQ(observer_->state_changed_count_, 1); 315 EXPECT_EQ(observer_->state_changed_count_, 1);
325 EXPECT_EQ(observer_->volume_changed_count_, 1); 316 EXPECT_EQ(observer_->volume_changed_count_, 1);
326 } 317 }
327 318
328 TEST_F(BluetoothAudioSinkChromeOSTest, SetConfigurationWithUnexpectedState) { 319 TEST_F(BluetoothAudioSinkBlueZTest, SetConfigurationWithUnexpectedState) {
329 GetAudioSink(); 320 GetAudioSink();
330 321
331 media_endpoint_->SelectConfiguration( 322 media_endpoint_->SelectConfiguration(
332 std::vector<uint8_t>({0x21, 0x15, 0x33, 0x2C}), 323 std::vector<uint8_t>({0x21, 0x15, 0x33, 0x2C}),
333 base::Bind(&BluetoothAudioSinkChromeOSTest::SelectConfigurationCallback, 324 base::Bind(&BluetoothAudioSinkBlueZTest::SelectConfigurationCallback,
334 base::Unretained(this))); 325 base::Unretained(this)));
335 326
336 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_DISCONNECTED); 327 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_DISCONNECTED);
337 EXPECT_EQ(callback_count_, 2); 328 EXPECT_EQ(callback_count_, 2);
338 EXPECT_EQ(error_callback_count_, 0); 329 EXPECT_EQ(error_callback_count_, 0);
339 EXPECT_EQ(observer_->state_changed_count_, 0); 330 EXPECT_EQ(observer_->state_changed_count_, 0);
340 EXPECT_EQ(observer_->volume_changed_count_, 0); 331 EXPECT_EQ(observer_->volume_changed_count_, 0);
341 332
342 // Set state of Delegate::TransportProperties with an unexpected value. 333 // Set state of Delegate::TransportProperties with an unexpected value.
343 properties_.state = "pending"; 334 properties_.state = "pending";
344 335
345 media_endpoint_->SetConfiguration( 336 media_endpoint_->SetConfiguration(
346 fake_transport_->GetTransportPath(media_endpoint_->object_path()), 337 fake_transport_->GetTransportPath(media_endpoint_->object_path()),
347 properties_); 338 properties_);
348 339
349 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_DISCONNECTED); 340 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_DISCONNECTED);
350 EXPECT_EQ(callback_count_, 2); 341 EXPECT_EQ(callback_count_, 2);
351 EXPECT_EQ(error_callback_count_, 0); 342 EXPECT_EQ(error_callback_count_, 0);
352 EXPECT_EQ(observer_->state_changed_count_, 0); 343 EXPECT_EQ(observer_->state_changed_count_, 0);
353 EXPECT_EQ(observer_->volume_changed_count_, 0); 344 EXPECT_EQ(observer_->volume_changed_count_, 0);
354 } 345 }
355 346
356 // Checks if the observer is notified on media-removed event when the state of 347 // Checks if the observer is notified on media-removed event when the state of
357 // |audio_sink_| is STATE_DISCONNECTED. Once the media object is removed, the 348 // |audio_sink_| is STATE_DISCONNECTED. Once the media object is removed, the
358 // audio sink is no longer valid. 349 // audio sink is no longer valid.
359 TEST_F(BluetoothAudioSinkChromeOSTest, MediaRemovedDuringDisconnectedState) { 350 TEST_F(BluetoothAudioSinkBlueZTest, MediaRemovedDuringDisconnectedState) {
360 GetAudioSink(); 351 GetAudioSink();
361 352
362 // Gets the media object and makes it invisible to see if the state of the 353 // Gets the media object and makes it invisible to see if the state of the
363 // audio sink changes accordingly. 354 // audio sink changes accordingly.
364 fake_media_->SetVisible(false); 355 fake_media_->SetVisible(false);
365 356
366 GetFakeMediaEndpoint(); 357 GetFakeMediaEndpoint();
367 358
368 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_INVALID); 359 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_INVALID);
369 EXPECT_EQ(media_endpoint_, nullptr); 360 EXPECT_EQ(media_endpoint_, nullptr);
370 EXPECT_EQ(observer_->state_changed_count_, 1); 361 EXPECT_EQ(observer_->state_changed_count_, 1);
371 EXPECT_EQ(observer_->volume_changed_count_, 0); 362 EXPECT_EQ(observer_->volume_changed_count_, 0);
372 } 363 }
373 364
374 // Checks if the observer is notified on media-removed event when the state of 365 // Checks if the observer is notified on media-removed event when the state of
375 // |audio_sink_| is STATE_IDLE. Once the media object is removed, the audio sink 366 // |audio_sink_| is STATE_IDLE. Once the media object is removed, the audio sink
376 // is no longer valid. 367 // is no longer valid.
377 TEST_F(BluetoothAudioSinkChromeOSTest, MediaRemovedDuringIdleState) { 368 TEST_F(BluetoothAudioSinkBlueZTest, MediaRemovedDuringIdleState) {
378 GetAudioSink(); 369 GetAudioSink();
379 370
380 media_endpoint_->SelectConfiguration( 371 media_endpoint_->SelectConfiguration(
381 std::vector<uint8_t>({0x21, 0x15, 0x33, 0x2C}), 372 std::vector<uint8_t>({0x21, 0x15, 0x33, 0x2C}),
382 base::Bind(&BluetoothAudioSinkChromeOSTest::SelectConfigurationCallback, 373 base::Bind(&BluetoothAudioSinkBlueZTest::SelectConfigurationCallback,
383 base::Unretained(this))); 374 base::Unretained(this)));
384 375
385 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_DISCONNECTED); 376 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_DISCONNECTED);
386 EXPECT_EQ(callback_count_, 2); 377 EXPECT_EQ(callback_count_, 2);
387 EXPECT_EQ(error_callback_count_, 0); 378 EXPECT_EQ(error_callback_count_, 0);
388 EXPECT_EQ(observer_->state_changed_count_, 0); 379 EXPECT_EQ(observer_->state_changed_count_, 0);
389 EXPECT_EQ(observer_->volume_changed_count_, 0); 380 EXPECT_EQ(observer_->volume_changed_count_, 0);
390 381
391 media_endpoint_->SetConfiguration( 382 media_endpoint_->SetConfiguration(
392 fake_transport_->GetTransportPath(media_endpoint_->object_path()), 383 fake_transport_->GetTransportPath(media_endpoint_->object_path()),
(...skipping 14 matching lines...) Expand all
407 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_INVALID); 398 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_INVALID);
408 EXPECT_EQ(media_endpoint_, nullptr); 399 EXPECT_EQ(media_endpoint_, nullptr);
409 400
410 // The state becomes disconnted and then invalid, since the removal of 401 // The state becomes disconnted and then invalid, since the removal of
411 // transport object should happend before media becomes invisible. 402 // transport object should happend before media becomes invisible.
412 // State: STATE_IDLE -> STATE_DISCONNECTED -> STATE_INVALID 403 // State: STATE_IDLE -> STATE_DISCONNECTED -> STATE_INVALID
413 EXPECT_EQ(observer_->state_changed_count_, 3); 404 EXPECT_EQ(observer_->state_changed_count_, 3);
414 EXPECT_EQ(observer_->volume_changed_count_, 2); 405 EXPECT_EQ(observer_->volume_changed_count_, 2);
415 } 406 }
416 407
417 TEST_F(BluetoothAudioSinkChromeOSTest, MediaRemovedDuringActiveState) { 408 TEST_F(BluetoothAudioSinkBlueZTest, MediaRemovedDuringActiveState) {
418 GetAudioSink(); 409 GetAudioSink();
419 410
420 media_endpoint_->SelectConfiguration( 411 media_endpoint_->SelectConfiguration(
421 std::vector<uint8_t>({0x21, 0x15, 0x33, 0x2C}), 412 std::vector<uint8_t>({0x21, 0x15, 0x33, 0x2C}),
422 base::Bind(&BluetoothAudioSinkChromeOSTest::SelectConfigurationCallback, 413 base::Bind(&BluetoothAudioSinkBlueZTest::SelectConfigurationCallback,
423 base::Unretained(this))); 414 base::Unretained(this)));
424 415
425 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_DISCONNECTED); 416 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_DISCONNECTED);
426 EXPECT_EQ(callback_count_, 2); 417 EXPECT_EQ(callback_count_, 2);
427 EXPECT_EQ(error_callback_count_, 0); 418 EXPECT_EQ(error_callback_count_, 0);
428 EXPECT_EQ(observer_->state_changed_count_, 0); 419 EXPECT_EQ(observer_->state_changed_count_, 0);
429 EXPECT_EQ(observer_->volume_changed_count_, 0); 420 EXPECT_EQ(observer_->volume_changed_count_, 0);
430 421
431 media_endpoint_->SetConfiguration( 422 media_endpoint_->SetConfiguration(
432 fake_transport_->GetTransportPath(media_endpoint_->object_path()), 423 fake_transport_->GetTransportPath(media_endpoint_->object_path()),
(...skipping 27 matching lines...) Expand all
460 // The state becomes disconnted and then invalid, since the removal of 451 // The state becomes disconnted and then invalid, since the removal of
461 // transport object should happend before media becomes invisible. 452 // transport object should happend before media becomes invisible.
462 // State: STATE_ACTIVE -> STATE_DISCONNECTED -> STATE_INVALID 453 // State: STATE_ACTIVE -> STATE_DISCONNECTED -> STATE_INVALID
463 EXPECT_EQ(observer_->state_changed_count_, 5); 454 EXPECT_EQ(observer_->state_changed_count_, 5);
464 EXPECT_EQ(observer_->volume_changed_count_, 2); 455 EXPECT_EQ(observer_->volume_changed_count_, 2);
465 } 456 }
466 457
467 // Checks if the observer is notified on transport-removed event when the state 458 // Checks if the observer is notified on transport-removed event when the state
468 // of |audio_sink_| is STATE_IDEL. Once the media transport object is removed, 459 // of |audio_sink_| is STATE_IDEL. Once the media transport object is removed,
469 // the audio sink is disconnected. 460 // the audio sink is disconnected.
470 TEST_F(BluetoothAudioSinkChromeOSTest, TransportRemovedDuringIdleState) { 461 TEST_F(BluetoothAudioSinkBlueZTest, TransportRemovedDuringIdleState) {
471 GetAudioSink(); 462 GetAudioSink();
472 463
473 media_endpoint_->SelectConfiguration( 464 media_endpoint_->SelectConfiguration(
474 std::vector<uint8_t>({0x21, 0x15, 0x33, 0x2C}), 465 std::vector<uint8_t>({0x21, 0x15, 0x33, 0x2C}),
475 base::Bind(&BluetoothAudioSinkChromeOSTest::SelectConfigurationCallback, 466 base::Bind(&BluetoothAudioSinkBlueZTest::SelectConfigurationCallback,
476 base::Unretained(this))); 467 base::Unretained(this)));
477 468
478 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_DISCONNECTED); 469 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_DISCONNECTED);
479 EXPECT_EQ(callback_count_, 2); 470 EXPECT_EQ(callback_count_, 2);
480 EXPECT_EQ(error_callback_count_, 0); 471 EXPECT_EQ(error_callback_count_, 0);
481 EXPECT_EQ(observer_->state_changed_count_, 0); 472 EXPECT_EQ(observer_->state_changed_count_, 0);
482 EXPECT_EQ(observer_->volume_changed_count_, 0); 473 EXPECT_EQ(observer_->volume_changed_count_, 0);
483 474
484 media_endpoint_->SetConfiguration( 475 media_endpoint_->SetConfiguration(
485 fake_transport_->GetTransportPath(media_endpoint_->object_path()), 476 fake_transport_->GetTransportPath(media_endpoint_->object_path()),
486 properties_); 477 properties_);
487 478
488 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_IDLE); 479 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_IDLE);
489 EXPECT_EQ(callback_count_, 2); 480 EXPECT_EQ(callback_count_, 2);
490 EXPECT_EQ(error_callback_count_, 0); 481 EXPECT_EQ(error_callback_count_, 0);
491 EXPECT_EQ(observer_->state_changed_count_, 1); 482 EXPECT_EQ(observer_->state_changed_count_, 1);
492 EXPECT_EQ(observer_->volume_changed_count_, 1); 483 EXPECT_EQ(observer_->volume_changed_count_, 1);
493 484
494 // Makes the transport object invalid to see if the state of the audio sink 485 // Makes the transport object invalid to see if the state of the audio sink
495 // changes accordingly. 486 // changes accordingly.
496 fake_transport_->SetValid(media_endpoint_, false); 487 fake_transport_->SetValid(media_endpoint_, false);
497 488
498 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_DISCONNECTED); 489 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_DISCONNECTED);
499 EXPECT_NE(media_endpoint_, nullptr); 490 EXPECT_NE(media_endpoint_, nullptr);
500 EXPECT_EQ(observer_->state_changed_count_, 2); 491 EXPECT_EQ(observer_->state_changed_count_, 2);
501 EXPECT_EQ(observer_->volume_changed_count_, 2); 492 EXPECT_EQ(observer_->volume_changed_count_, 2);
502 } 493 }
503 494
504 TEST_F(BluetoothAudioSinkChromeOSTest, TransportRemovedDuringActiveState) { 495 TEST_F(BluetoothAudioSinkBlueZTest, TransportRemovedDuringActiveState) {
505 GetAudioSink(); 496 GetAudioSink();
506 497
507 media_endpoint_->SelectConfiguration( 498 media_endpoint_->SelectConfiguration(
508 std::vector<uint8_t>({0x21, 0x15, 0x33, 0x2C}), 499 std::vector<uint8_t>({0x21, 0x15, 0x33, 0x2C}),
509 base::Bind(&BluetoothAudioSinkChromeOSTest::SelectConfigurationCallback, 500 base::Bind(&BluetoothAudioSinkBlueZTest::SelectConfigurationCallback,
510 base::Unretained(this))); 501 base::Unretained(this)));
511 502
512 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_DISCONNECTED); 503 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_DISCONNECTED);
513 EXPECT_EQ(callback_count_, 2); 504 EXPECT_EQ(callback_count_, 2);
514 EXPECT_EQ(error_callback_count_, 0); 505 EXPECT_EQ(error_callback_count_, 0);
515 EXPECT_EQ(observer_->state_changed_count_, 0); 506 EXPECT_EQ(observer_->state_changed_count_, 0);
516 EXPECT_EQ(observer_->volume_changed_count_, 0); 507 EXPECT_EQ(observer_->volume_changed_count_, 0);
517 508
518 media_endpoint_->SetConfiguration( 509 media_endpoint_->SetConfiguration(
519 fake_transport_->GetTransportPath(media_endpoint_->object_path()), 510 fake_transport_->GetTransportPath(media_endpoint_->object_path()),
(...skipping 18 matching lines...) Expand all
538 // Makes the transport object invalid to see if the state of the audio sink 529 // Makes the transport object invalid to see if the state of the audio sink
539 // changes accordingly. 530 // changes accordingly.
540 fake_transport_->SetValid(media_endpoint_, false); 531 fake_transport_->SetValid(media_endpoint_, false);
541 532
542 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_DISCONNECTED); 533 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_DISCONNECTED);
543 EXPECT_NE(media_endpoint_, nullptr); 534 EXPECT_NE(media_endpoint_, nullptr);
544 EXPECT_EQ(observer_->state_changed_count_, 4); 535 EXPECT_EQ(observer_->state_changed_count_, 4);
545 EXPECT_EQ(observer_->volume_changed_count_, 2); 536 EXPECT_EQ(observer_->volume_changed_count_, 2);
546 } 537 }
547 538
548 TEST_F(BluetoothAudioSinkChromeOSTest, 539 TEST_F(BluetoothAudioSinkBlueZTest,
549 AdapterPoweredChangedDuringDisconnectedState) { 540 AdapterPoweredChangedDuringDisconnectedState) {
550 GetAudioSink(); 541 GetAudioSink();
551 542
552 adapter_->SetPowered( 543 adapter_->SetPowered(false, base::Bind(&BluetoothAudioSinkBlueZTest::Callback,
553 false, 544 base::Unretained(this)),
554 base::Bind(&BluetoothAudioSinkChromeOSTest::Callback, 545 base::Bind(&BluetoothAudioSinkBlueZTest::ErrorCallback,
555 base::Unretained(this)), 546 base::Unretained(this)));
556 base::Bind(&BluetoothAudioSinkChromeOSTest::ErrorCallback,
557 base::Unretained(this)));
558 547
559 EXPECT_TRUE(adapter_->IsPresent()); 548 EXPECT_TRUE(adapter_->IsPresent());
560 EXPECT_FALSE(adapter_->IsPowered()); 549 EXPECT_FALSE(adapter_->IsPowered());
561 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_DISCONNECTED); 550 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_DISCONNECTED);
562 EXPECT_EQ(callback_count_, 2); 551 EXPECT_EQ(callback_count_, 2);
563 EXPECT_EQ(error_callback_count_, 0); 552 EXPECT_EQ(error_callback_count_, 0);
564 EXPECT_EQ(observer_->state_changed_count_, 0); 553 EXPECT_EQ(observer_->state_changed_count_, 0);
565 EXPECT_EQ(observer_->volume_changed_count_, 0); 554 EXPECT_EQ(observer_->volume_changed_count_, 0);
566 555
567 adapter_->SetPowered( 556 adapter_->SetPowered(true, base::Bind(&BluetoothAudioSinkBlueZTest::Callback,
568 true, 557 base::Unretained(this)),
569 base::Bind(&BluetoothAudioSinkChromeOSTest::Callback, 558 base::Bind(&BluetoothAudioSinkBlueZTest::ErrorCallback,
570 base::Unretained(this)), 559 base::Unretained(this)));
571 base::Bind(&BluetoothAudioSinkChromeOSTest::ErrorCallback,
572 base::Unretained(this)));
573 560
574 EXPECT_TRUE(adapter_->IsPresent()); 561 EXPECT_TRUE(adapter_->IsPresent());
575 EXPECT_TRUE(adapter_->IsPowered()); 562 EXPECT_TRUE(adapter_->IsPowered());
576 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_DISCONNECTED); 563 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_DISCONNECTED);
577 EXPECT_EQ(callback_count_, 3); 564 EXPECT_EQ(callback_count_, 3);
578 EXPECT_EQ(error_callback_count_, 0); 565 EXPECT_EQ(error_callback_count_, 0);
579 EXPECT_EQ(observer_->state_changed_count_, 0); 566 EXPECT_EQ(observer_->state_changed_count_, 0);
580 EXPECT_EQ(observer_->volume_changed_count_, 0); 567 EXPECT_EQ(observer_->volume_changed_count_, 0);
581 } 568 }
582 569
583 TEST_F(BluetoothAudioSinkChromeOSTest, AdapterPoweredChangedDuringIdleState) { 570 TEST_F(BluetoothAudioSinkBlueZTest, AdapterPoweredChangedDuringIdleState) {
584 GetAudioSink(); 571 GetAudioSink();
585 572
586 media_endpoint_->SelectConfiguration( 573 media_endpoint_->SelectConfiguration(
587 std::vector<uint8_t>({0x21, 0x15, 0x33, 0x2C}), 574 std::vector<uint8_t>({0x21, 0x15, 0x33, 0x2C}),
588 base::Bind(&BluetoothAudioSinkChromeOSTest::SelectConfigurationCallback, 575 base::Bind(&BluetoothAudioSinkBlueZTest::SelectConfigurationCallback,
589 base::Unretained(this))); 576 base::Unretained(this)));
590 577
591 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_DISCONNECTED); 578 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_DISCONNECTED);
592 EXPECT_EQ(callback_count_, 2); 579 EXPECT_EQ(callback_count_, 2);
593 EXPECT_EQ(error_callback_count_, 0); 580 EXPECT_EQ(error_callback_count_, 0);
594 EXPECT_EQ(observer_->state_changed_count_, 0); 581 EXPECT_EQ(observer_->state_changed_count_, 0);
595 EXPECT_EQ(observer_->volume_changed_count_, 0); 582 EXPECT_EQ(observer_->volume_changed_count_, 0);
596 583
597 media_endpoint_->SetConfiguration( 584 media_endpoint_->SetConfiguration(
598 fake_transport_->GetTransportPath(media_endpoint_->object_path()), 585 fake_transport_->GetTransportPath(media_endpoint_->object_path()),
599 properties_); 586 properties_);
600 587
601 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_IDLE); 588 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_IDLE);
602 EXPECT_EQ(callback_count_, 2); 589 EXPECT_EQ(callback_count_, 2);
603 EXPECT_EQ(error_callback_count_, 0); 590 EXPECT_EQ(error_callback_count_, 0);
604 EXPECT_EQ(observer_->state_changed_count_, 1); 591 EXPECT_EQ(observer_->state_changed_count_, 1);
605 EXPECT_EQ(observer_->volume_changed_count_, 1); 592 EXPECT_EQ(observer_->volume_changed_count_, 1);
606 593
607 adapter_->SetPowered( 594 adapter_->SetPowered(false, base::Bind(&BluetoothAudioSinkBlueZTest::Callback,
608 false, 595 base::Unretained(this)),
609 base::Bind(&BluetoothAudioSinkChromeOSTest::Callback, 596 base::Bind(&BluetoothAudioSinkBlueZTest::ErrorCallback,
610 base::Unretained(this)), 597 base::Unretained(this)));
611 base::Bind(&BluetoothAudioSinkChromeOSTest::ErrorCallback,
612 base::Unretained(this)));
613 GetFakeMediaEndpoint(); 598 GetFakeMediaEndpoint();
614 599
615 EXPECT_TRUE(adapter_->IsPresent()); 600 EXPECT_TRUE(adapter_->IsPresent());
616 EXPECT_FALSE(adapter_->IsPowered()); 601 EXPECT_FALSE(adapter_->IsPowered());
617 EXPECT_NE(media_endpoint_, nullptr); 602 EXPECT_NE(media_endpoint_, nullptr);
618 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_DISCONNECTED); 603 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_DISCONNECTED);
619 EXPECT_EQ(callback_count_, 3); 604 EXPECT_EQ(callback_count_, 3);
620 EXPECT_EQ(error_callback_count_, 0); 605 EXPECT_EQ(error_callback_count_, 0);
621 EXPECT_EQ(observer_->state_changed_count_, 2); 606 EXPECT_EQ(observer_->state_changed_count_, 2);
622 EXPECT_EQ(observer_->volume_changed_count_, 2); 607 EXPECT_EQ(observer_->volume_changed_count_, 2);
623 } 608 }
624 609
625 TEST_F(BluetoothAudioSinkChromeOSTest, 610 TEST_F(BluetoothAudioSinkBlueZTest,
626 UnregisterAudioSinkDuringDisconnectedState) { 611 UnregisterAudioSinkDuringDisconnectedState) {
627 GetAudioSink(); 612 GetAudioSink();
628 613
629 audio_sink_->Unregister( 614 audio_sink_->Unregister(
630 base::Bind(&BluetoothAudioSinkChromeOSTest::Callback, 615 base::Bind(&BluetoothAudioSinkBlueZTest::Callback,
631 base::Unretained(this)), 616 base::Unretained(this)),
632 base::Bind(&BluetoothAudioSinkChromeOSTest::UnregisterErrorCallback, 617 base::Bind(&BluetoothAudioSinkBlueZTest::UnregisterErrorCallback,
633 base::Unretained(this))); 618 base::Unretained(this)));
634 619
635 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_INVALID); 620 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_INVALID);
636 EXPECT_EQ(callback_count_, 2); 621 EXPECT_EQ(callback_count_, 2);
637 EXPECT_EQ(error_callback_count_, 0); 622 EXPECT_EQ(error_callback_count_, 0);
638 EXPECT_EQ(observer_->state_changed_count_, 1); 623 EXPECT_EQ(observer_->state_changed_count_, 1);
639 EXPECT_EQ(observer_->volume_changed_count_, 0); 624 EXPECT_EQ(observer_->volume_changed_count_, 0);
640 } 625 }
641 626
642 TEST_F(BluetoothAudioSinkChromeOSTest, UnregisterAudioSinkDuringIdleState) { 627 TEST_F(BluetoothAudioSinkBlueZTest, UnregisterAudioSinkDuringIdleState) {
643 GetAudioSink(); 628 GetAudioSink();
644 629
645 media_endpoint_->SelectConfiguration( 630 media_endpoint_->SelectConfiguration(
646 std::vector<uint8_t>({0x21, 0x15, 0x33, 0x2C}), 631 std::vector<uint8_t>({0x21, 0x15, 0x33, 0x2C}),
647 base::Bind(&BluetoothAudioSinkChromeOSTest::SelectConfigurationCallback, 632 base::Bind(&BluetoothAudioSinkBlueZTest::SelectConfigurationCallback,
648 base::Unretained(this))); 633 base::Unretained(this)));
649 634
650 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_DISCONNECTED); 635 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_DISCONNECTED);
651 EXPECT_EQ(callback_count_, 2); 636 EXPECT_EQ(callback_count_, 2);
652 EXPECT_EQ(error_callback_count_, 0); 637 EXPECT_EQ(error_callback_count_, 0);
653 EXPECT_EQ(observer_->state_changed_count_, 0); 638 EXPECT_EQ(observer_->state_changed_count_, 0);
654 EXPECT_EQ(observer_->volume_changed_count_, 0); 639 EXPECT_EQ(observer_->volume_changed_count_, 0);
655 640
656 media_endpoint_->SetConfiguration( 641 media_endpoint_->SetConfiguration(
657 fake_transport_->GetTransportPath(media_endpoint_->object_path()), 642 fake_transport_->GetTransportPath(media_endpoint_->object_path()),
658 properties_); 643 properties_);
659 644
660 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_IDLE); 645 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_IDLE);
661 EXPECT_EQ(callback_count_, 2); 646 EXPECT_EQ(callback_count_, 2);
662 EXPECT_EQ(error_callback_count_, 0); 647 EXPECT_EQ(error_callback_count_, 0);
663 EXPECT_EQ(observer_->state_changed_count_, 1); 648 EXPECT_EQ(observer_->state_changed_count_, 1);
664 EXPECT_EQ(observer_->volume_changed_count_, 1); 649 EXPECT_EQ(observer_->volume_changed_count_, 1);
665 650
666 audio_sink_->Unregister( 651 audio_sink_->Unregister(
667 base::Bind(&BluetoothAudioSinkChromeOSTest::Callback, 652 base::Bind(&BluetoothAudioSinkBlueZTest::Callback,
668 base::Unretained(this)), 653 base::Unretained(this)),
669 base::Bind(&BluetoothAudioSinkChromeOSTest::UnregisterErrorCallback, 654 base::Bind(&BluetoothAudioSinkBlueZTest::UnregisterErrorCallback,
670 base::Unretained(this))); 655 base::Unretained(this)));
671 656
672 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_INVALID); 657 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_INVALID);
673 EXPECT_EQ(callback_count_, 3); 658 EXPECT_EQ(callback_count_, 3);
674 EXPECT_EQ(error_callback_count_, 0); 659 EXPECT_EQ(error_callback_count_, 0);
675 660
676 // The state becomes disconnted and then invalid, since the removal of 661 // The state becomes disconnted and then invalid, since the removal of
677 // transport object should happend before the unregistration of endpoint. 662 // transport object should happend before the unregistration of endpoint.
678 // State: STATE_IDLE -> STATE_DISCONNECTED -> STATE_INVALID 663 // State: STATE_IDLE -> STATE_DISCONNECTED -> STATE_INVALID
679 EXPECT_EQ(observer_->state_changed_count_, 3); 664 EXPECT_EQ(observer_->state_changed_count_, 3);
680 EXPECT_EQ(observer_->volume_changed_count_, 2); 665 EXPECT_EQ(observer_->volume_changed_count_, 2);
681 } 666 }
682 667
683 TEST_F(BluetoothAudioSinkChromeOSTest, UnregisterAudioSinkDuringActiveState) { 668 TEST_F(BluetoothAudioSinkBlueZTest, UnregisterAudioSinkDuringActiveState) {
684 GetAudioSink(); 669 GetAudioSink();
685 670
686 media_endpoint_->SelectConfiguration( 671 media_endpoint_->SelectConfiguration(
687 std::vector<uint8_t>({0x21, 0x15, 0x33, 0x2C}), 672 std::vector<uint8_t>({0x21, 0x15, 0x33, 0x2C}),
688 base::Bind(&BluetoothAudioSinkChromeOSTest::SelectConfigurationCallback, 673 base::Bind(&BluetoothAudioSinkBlueZTest::SelectConfigurationCallback,
689 base::Unretained(this))); 674 base::Unretained(this)));
690 675
691 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_DISCONNECTED); 676 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_DISCONNECTED);
692 EXPECT_EQ(callback_count_, 2); 677 EXPECT_EQ(callback_count_, 2);
693 EXPECT_EQ(error_callback_count_, 0); 678 EXPECT_EQ(error_callback_count_, 0);
694 EXPECT_EQ(observer_->state_changed_count_, 0); 679 EXPECT_EQ(observer_->state_changed_count_, 0);
695 EXPECT_EQ(observer_->volume_changed_count_, 0); 680 EXPECT_EQ(observer_->volume_changed_count_, 0);
696 681
697 media_endpoint_->SetConfiguration( 682 media_endpoint_->SetConfiguration(
698 fake_transport_->GetTransportPath(media_endpoint_->object_path()), 683 fake_transport_->GetTransportPath(media_endpoint_->object_path()),
699 properties_); 684 properties_);
700 685
701 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_IDLE); 686 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_IDLE);
702 EXPECT_EQ(callback_count_, 2); 687 EXPECT_EQ(callback_count_, 2);
703 EXPECT_EQ(error_callback_count_, 0); 688 EXPECT_EQ(error_callback_count_, 0);
704 EXPECT_EQ(observer_->state_changed_count_, 1); 689 EXPECT_EQ(observer_->state_changed_count_, 1);
705 EXPECT_EQ(observer_->volume_changed_count_, 1); 690 EXPECT_EQ(observer_->volume_changed_count_, 1);
706 691
707 fake_transport_->SetState(media_endpoint_->object_path(), "pending"); 692 fake_transport_->SetState(media_endpoint_->object_path(), "pending");
708 693
709 message_loop_.RunUntilIdle(); 694 message_loop_.RunUntilIdle();
710 695
711 // Acquire is called when the state of |audio_sink_| becomes STATE_PENDING, 696 // Acquire is called when the state of |audio_sink_| becomes STATE_PENDING,
712 // and Acquire will trigger state change. Therefore, the state will be 697 // and Acquire will trigger state change. Therefore, the state will be
713 // STATE_ACTIVE right after STATE_PENDING. 698 // STATE_ACTIVE right after STATE_PENDING.
714 // State: STATE_IDLE -> STATE_PENDING -> STATE_ACTIVE 699 // State: STATE_IDLE -> STATE_PENDING -> STATE_ACTIVE
715 EXPECT_EQ(observer_->state_changed_count_, 3); 700 EXPECT_EQ(observer_->state_changed_count_, 3);
716 701
717 audio_sink_->Unregister( 702 audio_sink_->Unregister(
718 base::Bind(&BluetoothAudioSinkChromeOSTest::Callback, 703 base::Bind(&BluetoothAudioSinkBlueZTest::Callback,
719 base::Unretained(this)), 704 base::Unretained(this)),
720 base::Bind(&BluetoothAudioSinkChromeOSTest::UnregisterErrorCallback, 705 base::Bind(&BluetoothAudioSinkBlueZTest::UnregisterErrorCallback,
721 base::Unretained(this))); 706 base::Unretained(this)));
722 707
723 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_INVALID); 708 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_INVALID);
724 EXPECT_EQ(callback_count_, 3); 709 EXPECT_EQ(callback_count_, 3);
725 EXPECT_EQ(error_callback_count_, 0); 710 EXPECT_EQ(error_callback_count_, 0);
726 EXPECT_EQ(observer_->state_changed_count_, 5); 711 EXPECT_EQ(observer_->state_changed_count_, 5);
727 EXPECT_EQ(observer_->volume_changed_count_, 2); 712 EXPECT_EQ(observer_->volume_changed_count_, 2);
728 } 713 }
729 714
730 TEST_F(BluetoothAudioSinkChromeOSTest, StateChanged) { 715 TEST_F(BluetoothAudioSinkBlueZTest, StateChanged) {
731 GetAudioSink(); 716 GetAudioSink();
732 717
733 media_endpoint_->SelectConfiguration( 718 media_endpoint_->SelectConfiguration(
734 std::vector<uint8_t>({0x21, 0x15, 0x33, 0x2C}), 719 std::vector<uint8_t>({0x21, 0x15, 0x33, 0x2C}),
735 base::Bind(&BluetoothAudioSinkChromeOSTest::SelectConfigurationCallback, 720 base::Bind(&BluetoothAudioSinkBlueZTest::SelectConfigurationCallback,
736 base::Unretained(this))); 721 base::Unretained(this)));
737 722
738 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_DISCONNECTED); 723 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_DISCONNECTED);
739 EXPECT_EQ(callback_count_, 2); 724 EXPECT_EQ(callback_count_, 2);
740 EXPECT_EQ(error_callback_count_, 0); 725 EXPECT_EQ(error_callback_count_, 0);
741 EXPECT_EQ(observer_->state_changed_count_, 0); 726 EXPECT_EQ(observer_->state_changed_count_, 0);
742 EXPECT_EQ(observer_->volume_changed_count_, 0); 727 EXPECT_EQ(observer_->volume_changed_count_, 0);
743 728
744 media_endpoint_->SetConfiguration( 729 media_endpoint_->SetConfiguration(
745 fake_transport_->GetTransportPath(media_endpoint_->object_path()), 730 fake_transport_->GetTransportPath(media_endpoint_->object_path()),
746 properties_); 731 properties_);
747 732
748 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_IDLE); 733 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_IDLE);
749 EXPECT_EQ(callback_count_, 2); 734 EXPECT_EQ(callback_count_, 2);
750 EXPECT_EQ(error_callback_count_, 0); 735 EXPECT_EQ(error_callback_count_, 0);
751 EXPECT_EQ(observer_->state_changed_count_, 1); 736 EXPECT_EQ(observer_->state_changed_count_, 1);
752 EXPECT_EQ(observer_->volume_changed_count_, 1); 737 EXPECT_EQ(observer_->volume_changed_count_, 1);
753 738
754 // Changes the current state of transport to pending. 739 // Changes the current state of transport to pending.
755 fake_transport_->SetState(media_endpoint_->object_path(), "pending"); 740 fake_transport_->SetState(media_endpoint_->object_path(), "pending");
756 741
757 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_PENDING); 742 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_PENDING);
758 EXPECT_EQ(observer_->state_changed_count_, 3); 743 EXPECT_EQ(observer_->state_changed_count_, 3);
759 EXPECT_EQ(observer_->volume_changed_count_, 1); 744 EXPECT_EQ(observer_->volume_changed_count_, 1);
760 } 745 }
761 746
762 TEST_F(BluetoothAudioSinkChromeOSTest, VolumeChanged) { 747 TEST_F(BluetoothAudioSinkBlueZTest, VolumeChanged) {
763 GetAudioSink(); 748 GetAudioSink();
764 749
765 media_endpoint_->SelectConfiguration( 750 media_endpoint_->SelectConfiguration(
766 std::vector<uint8_t>({0x21, 0x15, 0x33, 0x2C}), 751 std::vector<uint8_t>({0x21, 0x15, 0x33, 0x2C}),
767 base::Bind(&BluetoothAudioSinkChromeOSTest::SelectConfigurationCallback, 752 base::Bind(&BluetoothAudioSinkBlueZTest::SelectConfigurationCallback,
768 base::Unretained(this))); 753 base::Unretained(this)));
769 754
770 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_DISCONNECTED); 755 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_DISCONNECTED);
771 EXPECT_EQ(callback_count_, 2); 756 EXPECT_EQ(callback_count_, 2);
772 EXPECT_EQ(error_callback_count_, 0); 757 EXPECT_EQ(error_callback_count_, 0);
773 EXPECT_EQ(observer_->state_changed_count_, 0); 758 EXPECT_EQ(observer_->state_changed_count_, 0);
774 EXPECT_EQ(observer_->volume_changed_count_, 0); 759 EXPECT_EQ(observer_->volume_changed_count_, 0);
775 760
776 media_endpoint_->SetConfiguration( 761 media_endpoint_->SetConfiguration(
777 fake_transport_->GetTransportPath(media_endpoint_->object_path()), 762 fake_transport_->GetTransportPath(media_endpoint_->object_path()),
(...skipping 20 matching lines...) Expand all
798 783
799 // Changes volume to an invalid level. 784 // Changes volume to an invalid level.
800 fake_transport_->SetVolume(media_endpoint_->object_path(), 200); 785 fake_transport_->SetVolume(media_endpoint_->object_path(), 200);
801 786
802 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_IDLE); 787 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_IDLE);
803 EXPECT_EQ(observer_->state_changed_count_, 1); 788 EXPECT_EQ(observer_->state_changed_count_, 1);
804 EXPECT_EQ(observer_->volume_changed_count_, 3); 789 EXPECT_EQ(observer_->volume_changed_count_, 3);
805 EXPECT_EQ(audio_sink_->GetVolume(), BluetoothAudioSink::kInvalidVolume); 790 EXPECT_EQ(audio_sink_->GetVolume(), BluetoothAudioSink::kInvalidVolume);
806 } 791 }
807 792
808 TEST_F(BluetoothAudioSinkChromeOSTest, AcquireFD) { 793 TEST_F(BluetoothAudioSinkBlueZTest, AcquireFD) {
809 GetAudioSink(); 794 GetAudioSink();
810 795
811 media_endpoint_->SelectConfiguration( 796 media_endpoint_->SelectConfiguration(
812 std::vector<uint8_t>({0x21, 0x15, 0x33, 0x2C}), 797 std::vector<uint8_t>({0x21, 0x15, 0x33, 0x2C}),
813 base::Bind(&BluetoothAudioSinkChromeOSTest::SelectConfigurationCallback, 798 base::Bind(&BluetoothAudioSinkBlueZTest::SelectConfigurationCallback,
814 base::Unretained(this))); 799 base::Unretained(this)));
815 800
816 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_DISCONNECTED); 801 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_DISCONNECTED);
817 EXPECT_EQ(callback_count_, 2); 802 EXPECT_EQ(callback_count_, 2);
818 EXPECT_EQ(error_callback_count_, 0); 803 EXPECT_EQ(error_callback_count_, 0);
819 EXPECT_EQ(observer_->state_changed_count_, 0); 804 EXPECT_EQ(observer_->state_changed_count_, 0);
820 EXPECT_EQ(observer_->volume_changed_count_, 0); 805 EXPECT_EQ(observer_->volume_changed_count_, 0);
821 806
822 media_endpoint_->SetConfiguration( 807 media_endpoint_->SetConfiguration(
823 fake_transport_->GetTransportPath(media_endpoint_->object_path()), 808 fake_transport_->GetTransportPath(media_endpoint_->object_path()),
(...skipping 17 matching lines...) Expand all
841 // STATE_ACTIVE right after STATE_PENDING. 826 // STATE_ACTIVE right after STATE_PENDING.
842 // State: STATE_IDLE -> STATE_PENDING -> STATE_ACTIVE 827 // State: STATE_IDLE -> STATE_PENDING -> STATE_ACTIVE
843 EXPECT_EQ(observer_->state_changed_count_, 3); 828 EXPECT_EQ(observer_->state_changed_count_, 3);
844 EXPECT_EQ(observer_->total_read_, data_one.size()); 829 EXPECT_EQ(observer_->total_read_, data_one.size());
845 EXPECT_EQ(observer_->data_, data_one); 830 EXPECT_EQ(observer_->data_, data_one);
846 EXPECT_EQ(observer_->read_mtu_, 831 EXPECT_EQ(observer_->read_mtu_,
847 bluez::FakeBluetoothMediaTransportClient::kDefaultReadMtu); 832 bluez::FakeBluetoothMediaTransportClient::kDefaultReadMtu);
848 } 833 }
849 834
850 // Tests the case where the remote device pauses and resume audio streaming. 835 // Tests the case where the remote device pauses and resume audio streaming.
851 TEST_F(BluetoothAudioSinkChromeOSTest, PauseAndResume) { 836 TEST_F(BluetoothAudioSinkBlueZTest, PauseAndResume) {
852 GetAudioSink(); 837 GetAudioSink();
853 838
854 media_endpoint_->SelectConfiguration( 839 media_endpoint_->SelectConfiguration(
855 std::vector<uint8_t>({0x21, 0x15, 0x33, 0x2C}), 840 std::vector<uint8_t>({0x21, 0x15, 0x33, 0x2C}),
856 base::Bind(&BluetoothAudioSinkChromeOSTest::SelectConfigurationCallback, 841 base::Bind(&BluetoothAudioSinkBlueZTest::SelectConfigurationCallback,
857 base::Unretained(this))); 842 base::Unretained(this)));
858 843
859 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_DISCONNECTED); 844 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_DISCONNECTED);
860 EXPECT_EQ(callback_count_, 2); 845 EXPECT_EQ(callback_count_, 2);
861 EXPECT_EQ(error_callback_count_, 0); 846 EXPECT_EQ(error_callback_count_, 0);
862 EXPECT_EQ(observer_->state_changed_count_, 0); 847 EXPECT_EQ(observer_->state_changed_count_, 0);
863 EXPECT_EQ(observer_->volume_changed_count_, 0); 848 EXPECT_EQ(observer_->volume_changed_count_, 0);
864 849
865 media_endpoint_->SetConfiguration( 850 media_endpoint_->SetConfiguration(
866 fake_transport_->GetTransportPath(media_endpoint_->object_path()), 851 fake_transport_->GetTransportPath(media_endpoint_->object_path()),
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
899 884
900 message_loop_.RunUntilIdle(); 885 message_loop_.RunUntilIdle();
901 886
902 EXPECT_EQ(observer_->data_, data_two); 887 EXPECT_EQ(observer_->data_, data_two);
903 EXPECT_EQ(observer_->read_mtu_, 888 EXPECT_EQ(observer_->read_mtu_,
904 bluez::FakeBluetoothMediaTransportClient::kDefaultReadMtu); 889 bluez::FakeBluetoothMediaTransportClient::kDefaultReadMtu);
905 EXPECT_EQ(observer_->state_changed_count_, 6); 890 EXPECT_EQ(observer_->state_changed_count_, 6);
906 EXPECT_EQ(observer_->total_read_, data_two.size()); 891 EXPECT_EQ(observer_->total_read_, data_two.size());
907 } 892 }
908 893
909 TEST_F(BluetoothAudioSinkChromeOSTest, ContinuouslyStreaming) { 894 TEST_F(BluetoothAudioSinkBlueZTest, ContinuouslyStreaming) {
910 GetAudioSink(); 895 GetAudioSink();
911 896
912 media_endpoint_->SelectConfiguration( 897 media_endpoint_->SelectConfiguration(
913 std::vector<uint8_t>({0x21, 0x15, 0x33, 0x2C}), 898 std::vector<uint8_t>({0x21, 0x15, 0x33, 0x2C}),
914 base::Bind(&BluetoothAudioSinkChromeOSTest::SelectConfigurationCallback, 899 base::Bind(&BluetoothAudioSinkBlueZTest::SelectConfigurationCallback,
915 base::Unretained(this))); 900 base::Unretained(this)));
916 901
917 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_DISCONNECTED); 902 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_DISCONNECTED);
918 EXPECT_EQ(callback_count_, 2); 903 EXPECT_EQ(callback_count_, 2);
919 EXPECT_EQ(error_callback_count_, 0); 904 EXPECT_EQ(error_callback_count_, 0);
920 EXPECT_EQ(observer_->state_changed_count_, 0); 905 EXPECT_EQ(observer_->state_changed_count_, 0);
921 EXPECT_EQ(observer_->volume_changed_count_, 0); 906 EXPECT_EQ(observer_->volume_changed_count_, 0);
922 907
923 media_endpoint_->SetConfiguration( 908 media_endpoint_->SetConfiguration(
924 fake_transport_->GetTransportPath(media_endpoint_->object_path()), 909 fake_transport_->GetTransportPath(media_endpoint_->object_path()),
(...skipping 23 matching lines...) Expand all
948 933
949 message_loop_.RunUntilIdle(); 934 message_loop_.RunUntilIdle();
950 935
951 EXPECT_EQ(observer_->data_, data_two); 936 EXPECT_EQ(observer_->data_, data_two);
952 EXPECT_EQ(observer_->read_mtu_, 937 EXPECT_EQ(observer_->read_mtu_,
953 bluez::FakeBluetoothMediaTransportClient::kDefaultReadMtu); 938 bluez::FakeBluetoothMediaTransportClient::kDefaultReadMtu);
954 EXPECT_EQ(observer_->state_changed_count_, 3); 939 EXPECT_EQ(observer_->state_changed_count_, 3);
955 EXPECT_EQ(observer_->total_read_, data_one.size() + data_two.size()); 940 EXPECT_EQ(observer_->total_read_, data_one.size() + data_two.size());
956 } 941 }
957 942
958 } // namespace chromeos 943 } // namespace bluez
OLDNEW
« no previous file with comments | « device/bluetooth/bluetooth_audio_sink_bluez.cc ('k') | device/bluetooth/bluetooth_audio_sink_chromeos.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698