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

Side by Side Diff: content/browser/renderer_host/media/audio_input_device_manager_unittest.cc

Issue 11339014: Move content\browser\renderer_host\media to content namespace. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 8 years, 1 month 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <string> 5 #include <string>
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/memory/ref_counted.h" 8 #include "base/memory/ref_counted.h"
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/message_loop.h" 10 #include "base/message_loop.h"
11 #include "content/browser/browser_thread_impl.h" 11 #include "content/browser/browser_thread_impl.h"
12 #include "content/browser/renderer_host/media/audio_input_device_manager.h" 12 #include "content/browser/renderer_host/media/audio_input_device_manager.h"
13 #include "content/browser/renderer_host/media/audio_input_device_manager_event_h andler.h" 13 #include "content/browser/renderer_host/media/audio_input_device_manager_event_h andler.h"
14 #include "content/public/common/media_stream_request.h" 14 #include "content/public/common/media_stream_request.h"
15 #include "media/audio/audio_manager_base.h" 15 #include "media/audio/audio_manager_base.h"
16 #include "testing/gmock/include/gmock/gmock.h" 16 #include "testing/gmock/include/gmock/gmock.h"
17 #include "testing/gtest/include/gtest/gtest.h" 17 #include "testing/gtest/include/gtest/gtest.h"
18 18
19 using content::BrowserThread;
20 using content::BrowserThreadImpl;
21 using media_stream::AudioInputDeviceManager;
22 using testing::_; 19 using testing::_;
23 using testing::InSequence; 20 using testing::InSequence;
24 using testing::Return; 21 using testing::Return;
25 22
26 namespace media_stream { 23 namespace content {
27 24
28 class MockAudioInputDeviceManagerListener 25 class MockAudioInputDeviceManagerListener
29 : public MediaStreamProviderListener { 26 : public MediaStreamProviderListener {
30 public: 27 public:
31 MockAudioInputDeviceManagerListener() {} 28 MockAudioInputDeviceManagerListener() {}
32 virtual ~MockAudioInputDeviceManagerListener() {} 29 virtual ~MockAudioInputDeviceManagerListener() {}
33 30
34 MOCK_METHOD2(Opened, void(MediaStreamType, const int)); 31 MOCK_METHOD2(Opened, void(MediaStreamType, const int));
35 MOCK_METHOD2(Closed, void(MediaStreamType, const int)); 32 MOCK_METHOD2(Closed, void(MediaStreamType, const int));
36 MOCK_METHOD1(DevicesEnumerated, void(const StreamDeviceInfoArray&)); 33 MOCK_METHOD1(DevicesEnumerated, void(const StreamDeviceInfoArray&));
37 MOCK_METHOD3(Error, void(MediaStreamType, int, MediaStreamProviderError)); 34 MOCK_METHOD3(Error, void(MediaStreamType, int, MediaStreamProviderError));
38 35
39 virtual void DevicesEnumerated(MediaStreamType service_type, 36 virtual void DevicesEnumerated(MediaStreamType service_type,
40 const StreamDeviceInfoArray& devices) { 37 const StreamDeviceInfoArray& devices) {
41 if (service_type != content::MEDIA_DEVICE_AUDIO_CAPTURE) 38 if (service_type != MEDIA_DEVICE_AUDIO_CAPTURE)
42 return; 39 return;
43 40
44 devices_ = devices; 41 devices_ = devices;
45 DevicesEnumerated(devices); 42 DevicesEnumerated(devices);
46 } 43 }
47 44
48 StreamDeviceInfoArray devices_; 45 StreamDeviceInfoArray devices_;
49 46
50 private: 47 private:
51 DISALLOW_COPY_AND_ASSIGN(MockAudioInputDeviceManagerListener); 48 DISALLOW_COPY_AND_ASSIGN(MockAudioInputDeviceManagerListener);
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
138 135
139 for (StreamDeviceInfoArray::const_iterator iter = 136 for (StreamDeviceInfoArray::const_iterator iter =
140 audio_input_listener_->devices_.begin(); 137 audio_input_listener_->devices_.begin();
141 iter != audio_input_listener_->devices_.end(); ++iter) { 138 iter != audio_input_listener_->devices_.end(); ++iter) {
142 // Opens/closes the devices. 139 // Opens/closes the devices.
143 int session_id = manager_->Open(*iter); 140 int session_id = manager_->Open(*iter);
144 manager_->Close(session_id); 141 manager_->Close(session_id);
145 142
146 // Expected mock call with expected return value. 143 // Expected mock call with expected return value.
147 EXPECT_CALL(*audio_input_listener_, 144 EXPECT_CALL(*audio_input_listener_,
148 Opened(content::MEDIA_DEVICE_AUDIO_CAPTURE, session_id)) 145 Opened(MEDIA_DEVICE_AUDIO_CAPTURE, session_id))
149 .Times(1); 146 .Times(1);
150 EXPECT_CALL(*audio_input_listener_, 147 EXPECT_CALL(*audio_input_listener_,
151 Closed(content::MEDIA_DEVICE_AUDIO_CAPTURE, session_id)) 148 Closed(MEDIA_DEVICE_AUDIO_CAPTURE, session_id))
152 .Times(1); 149 .Times(1);
153 150
154 // Waits for the callback. 151 // Waits for the callback.
155 message_loop_->RunAllPending(); 152 message_loop_->RunAllPending();
156 } 153 }
157 } 154 }
158 155
159 // Opens multiple devices at one time and closes them later. 156 // Opens multiple devices at one time and closes them later.
160 TEST_F(AudioInputDeviceManagerTest, OpenMultipleDevices) { 157 TEST_F(AudioInputDeviceManagerTest, OpenMultipleDevices) {
161 if (!CanRunAudioInputDeviceTests()) 158 if (!CanRunAudioInputDeviceTests())
162 return; 159 return;
163 160
164 ASSERT_FALSE(audio_input_listener_->devices_.empty()); 161 ASSERT_FALSE(audio_input_listener_->devices_.empty());
165 162
166 InSequence s; 163 InSequence s;
167 164
168 int index = 0; 165 int index = 0;
169 const int kDeviceSize = audio_input_listener_->devices_.size(); 166 const int kDeviceSize = audio_input_listener_->devices_.size();
170 scoped_array<int> session_id(new int[kDeviceSize]); 167 scoped_array<int> session_id(new int[kDeviceSize]);
171 168
172 // Opens the devices in a loop. 169 // Opens the devices in a loop.
173 for (StreamDeviceInfoArray::const_iterator iter = 170 for (StreamDeviceInfoArray::const_iterator iter =
174 audio_input_listener_->devices_.begin(); 171 audio_input_listener_->devices_.begin();
175 iter != audio_input_listener_->devices_.end(); ++iter, ++index) { 172 iter != audio_input_listener_->devices_.end(); ++iter, ++index) {
176 // Opens the devices. 173 // Opens the devices.
177 session_id[index] = manager_->Open(*iter); 174 session_id[index] = manager_->Open(*iter);
178 175
179 // Expected mock call with expected returned value. 176 // Expected mock call with expected returned value.
180 EXPECT_CALL(*audio_input_listener_, 177 EXPECT_CALL(*audio_input_listener_,
181 Opened(content::MEDIA_DEVICE_AUDIO_CAPTURE, session_id[index])) 178 Opened(MEDIA_DEVICE_AUDIO_CAPTURE, session_id[index]))
182 .Times(1); 179 .Times(1);
183 180
184 // Waits for the callback. 181 // Waits for the callback.
185 message_loop_->RunAllPending(); 182 message_loop_->RunAllPending();
186 } 183 }
187 184
188 // Checks if the session_ids are unique. 185 // Checks if the session_ids are unique.
189 for (int i = 0; i < kDeviceSize - 1; ++i) { 186 for (int i = 0; i < kDeviceSize - 1; ++i) {
190 for (int k = i+1; k < kDeviceSize; ++k) { 187 for (int k = i+1; k < kDeviceSize; ++k) {
191 EXPECT_TRUE(session_id[i] != session_id[k]); 188 EXPECT_TRUE(session_id[i] != session_id[k]);
192 } 189 }
193 } 190 }
194 191
195 for (int i = 0; i < kDeviceSize; ++i) { 192 for (int i = 0; i < kDeviceSize; ++i) {
196 // Closes the devices. 193 // Closes the devices.
197 manager_->Close(session_id[i]); 194 manager_->Close(session_id[i]);
198 EXPECT_CALL(*audio_input_listener_, 195 EXPECT_CALL(*audio_input_listener_,
199 Closed(content::MEDIA_DEVICE_AUDIO_CAPTURE, session_id[i])) 196 Closed(MEDIA_DEVICE_AUDIO_CAPTURE, session_id[i]))
200 .Times(1); 197 .Times(1);
201 198
202 // Waits for the callback. 199 // Waits for the callback.
203 message_loop_->RunAllPending(); 200 message_loop_->RunAllPending();
204 } 201 }
205 } 202 }
206 203
207 // Opens a non-existing device. 204 // Opens a non-existing device.
208 TEST_F(AudioInputDeviceManagerTest, OpenNotExistingDevice) { 205 TEST_F(AudioInputDeviceManagerTest, OpenNotExistingDevice) {
209 if (!CanRunAudioInputDeviceTests()) 206 if (!CanRunAudioInputDeviceTests())
210 return; 207 return;
211 InSequence s; 208 InSequence s;
212 209
213 MediaStreamType stream_type = content::MEDIA_DEVICE_AUDIO_CAPTURE; 210 MediaStreamType stream_type = MEDIA_DEVICE_AUDIO_CAPTURE;
214 std::string device_name("device_doesnt_exist"); 211 std::string device_name("device_doesnt_exist");
215 std::string device_id("id_doesnt_exist"); 212 std::string device_id("id_doesnt_exist");
216 StreamDeviceInfo dummy_device(stream_type, device_name, device_id, false); 213 StreamDeviceInfo dummy_device(stream_type, device_name, device_id, false);
217 214
218 int session_id = manager_->Open(dummy_device); 215 int session_id = manager_->Open(dummy_device);
219 EXPECT_CALL(*audio_input_listener_, 216 EXPECT_CALL(*audio_input_listener_,
220 Opened(content::MEDIA_DEVICE_AUDIO_CAPTURE, session_id)) 217 Opened(MEDIA_DEVICE_AUDIO_CAPTURE, session_id))
221 .Times(1); 218 .Times(1);
222 219
223 // Waits for the callback. 220 // Waits for the callback.
224 message_loop_->RunAllPending(); 221 message_loop_->RunAllPending();
225 } 222 }
226 223
227 // Opens default device twice. 224 // Opens default device twice.
228 TEST_F(AudioInputDeviceManagerTest, OpenDeviceTwice) { 225 TEST_F(AudioInputDeviceManagerTest, OpenDeviceTwice) {
229 if (!CanRunAudioInputDeviceTests()) 226 if (!CanRunAudioInputDeviceTests())
230 return; 227 return;
231 228
232 ASSERT_FALSE(audio_input_listener_->devices_.empty()); 229 ASSERT_FALSE(audio_input_listener_->devices_.empty());
233 230
234 InSequence s; 231 InSequence s;
235 232
236 // Opens and closes the default device twice. 233 // Opens and closes the default device twice.
237 int first_session_id = manager_->Open( 234 int first_session_id = manager_->Open(
238 audio_input_listener_->devices_.front()); 235 audio_input_listener_->devices_.front());
239 int second_session_id = manager_->Open( 236 int second_session_id = manager_->Open(
240 audio_input_listener_->devices_.front()); 237 audio_input_listener_->devices_.front());
241 manager_->Close(first_session_id); 238 manager_->Close(first_session_id);
242 manager_->Close(second_session_id); 239 manager_->Close(second_session_id);
243 240
244 // Expected mock calls with expected returned values. 241 // Expected mock calls with expected returned values.
245 EXPECT_NE(first_session_id, second_session_id); 242 EXPECT_NE(first_session_id, second_session_id);
246 EXPECT_CALL(*audio_input_listener_, 243 EXPECT_CALL(*audio_input_listener_,
247 Opened(content::MEDIA_DEVICE_AUDIO_CAPTURE, first_session_id)) 244 Opened(MEDIA_DEVICE_AUDIO_CAPTURE, first_session_id))
248 .Times(1); 245 .Times(1);
249 EXPECT_CALL(*audio_input_listener_, 246 EXPECT_CALL(*audio_input_listener_,
250 Opened(content::MEDIA_DEVICE_AUDIO_CAPTURE, second_session_id)) 247 Opened(MEDIA_DEVICE_AUDIO_CAPTURE, second_session_id))
251 .Times(1); 248 .Times(1);
252 EXPECT_CALL(*audio_input_listener_, 249 EXPECT_CALL(*audio_input_listener_,
253 Closed(content::MEDIA_DEVICE_AUDIO_CAPTURE, first_session_id)) 250 Closed(MEDIA_DEVICE_AUDIO_CAPTURE, first_session_id))
254 .Times(1); 251 .Times(1);
255 EXPECT_CALL(*audio_input_listener_, 252 EXPECT_CALL(*audio_input_listener_,
256 Closed(content::MEDIA_DEVICE_AUDIO_CAPTURE, second_session_id)) 253 Closed(MEDIA_DEVICE_AUDIO_CAPTURE, second_session_id))
257 .Times(1); 254 .Times(1);
258 255
259 // Waits for the callback. 256 // Waits for the callback.
260 message_loop_->RunAllPending(); 257 message_loop_->RunAllPending();
261 } 258 }
262 259
263 // Starts and closes the sessions after opening the devices. 260 // Starts and closes the sessions after opening the devices.
264 TEST_F(AudioInputDeviceManagerTest, StartAndStopSession) { 261 TEST_F(AudioInputDeviceManagerTest, StartAndStopSession) {
265 if (!CanRunAudioInputDeviceTests()) 262 if (!CanRunAudioInputDeviceTests())
266 return; 263 return;
(...skipping 13 matching lines...) Expand all
280 277
281 // Loops through the devices and calls Open()/Start()/Stop()/Close() for 278 // Loops through the devices and calls Open()/Start()/Stop()/Close() for
282 // each device. 279 // each device.
283 for (StreamDeviceInfoArray::const_iterator iter = 280 for (StreamDeviceInfoArray::const_iterator iter =
284 audio_input_listener_->devices_.begin(); 281 audio_input_listener_->devices_.begin();
285 iter != audio_input_listener_->devices_.end(); ++iter, ++index) { 282 iter != audio_input_listener_->devices_.end(); ++iter, ++index) {
286 // Note that no DeviceStopped() notification for Event Handler as we have 283 // Note that no DeviceStopped() notification for Event Handler as we have
287 // stopped the device before calling close. 284 // stopped the device before calling close.
288 session_id[index] = manager_->Open(*iter); 285 session_id[index] = manager_->Open(*iter);
289 EXPECT_CALL(*audio_input_listener_, 286 EXPECT_CALL(*audio_input_listener_,
290 Opened(content::MEDIA_DEVICE_AUDIO_CAPTURE, session_id[index])) 287 Opened(MEDIA_DEVICE_AUDIO_CAPTURE, session_id[index]))
291 .Times(1); 288 .Times(1);
292 message_loop_->RunAllPending(); 289 message_loop_->RunAllPending();
293 290
294 manager_->Start(session_id[index], audio_input_event_handler.get()); 291 manager_->Start(session_id[index], audio_input_event_handler.get());
295 EXPECT_CALL(*audio_input_event_handler, 292 EXPECT_CALL(*audio_input_event_handler,
296 DeviceStarted(session_id[index], iter->device_id)) 293 DeviceStarted(session_id[index], iter->device_id))
297 .Times(1); 294 .Times(1);
298 message_loop_->RunAllPending(); 295 message_loop_->RunAllPending();
299 296
300 manager_->Stop(session_id[index]); 297 manager_->Stop(session_id[index]);
301 manager_->Close(session_id[index]); 298 manager_->Close(session_id[index]);
302 EXPECT_CALL(*audio_input_listener_, 299 EXPECT_CALL(*audio_input_listener_,
303 Closed(content::MEDIA_DEVICE_AUDIO_CAPTURE, session_id[index])) 300 Closed(MEDIA_DEVICE_AUDIO_CAPTURE, session_id[index]))
304 .Times(1); 301 .Times(1);
305 message_loop_->RunAllPending(); 302 message_loop_->RunAllPending();
306 } 303 }
307 } 304 }
308 305
309 // Tests the behavior of calling Close() without calling Stop(). 306 // Tests the behavior of calling Close() without calling Stop().
310 TEST_F(AudioInputDeviceManagerTest, CloseWithoutStopSession) { 307 TEST_F(AudioInputDeviceManagerTest, CloseWithoutStopSession) {
311 if (!CanRunAudioInputDeviceTests()) 308 if (!CanRunAudioInputDeviceTests())
312 return; 309 return;
313 310
(...skipping 11 matching lines...) Expand all
325 new MockAudioInputDeviceManagerEventHandler(message_loop_.get())); 322 new MockAudioInputDeviceManagerEventHandler(message_loop_.get()));
326 323
327 // Loop through the devices, and calls Open()/Start()/Close() for the devices. 324 // Loop through the devices, and calls Open()/Start()/Close() for the devices.
328 // Note that we do not call stop. 325 // Note that we do not call stop.
329 for (StreamDeviceInfoArray::const_iterator iter = 326 for (StreamDeviceInfoArray::const_iterator iter =
330 audio_input_listener_->devices_.begin(); 327 audio_input_listener_->devices_.begin();
331 iter != audio_input_listener_->devices_.end(); ++iter, ++index) { 328 iter != audio_input_listener_->devices_.end(); ++iter, ++index) {
332 // Calls Open()/Start()/Close() for each device. 329 // Calls Open()/Start()/Close() for each device.
333 session_id[index] = manager_->Open(*iter); 330 session_id[index] = manager_->Open(*iter);
334 EXPECT_CALL(*audio_input_listener_, 331 EXPECT_CALL(*audio_input_listener_,
335 Opened(content::MEDIA_DEVICE_AUDIO_CAPTURE, session_id[index])) 332 Opened(MEDIA_DEVICE_AUDIO_CAPTURE, session_id[index]))
336 .Times(1); 333 .Times(1);
337 message_loop_->RunAllPending(); 334 message_loop_->RunAllPending();
338 335
339 manager_->Start(session_id[index], audio_input_event_handler.get()); 336 manager_->Start(session_id[index], audio_input_event_handler.get());
340 EXPECT_CALL(*audio_input_event_handler, 337 EXPECT_CALL(*audio_input_event_handler,
341 DeviceStarted(session_id[index], iter->device_id)) 338 DeviceStarted(session_id[index], iter->device_id))
342 .Times(1); 339 .Times(1);
343 message_loop_->RunAllPending(); 340 message_loop_->RunAllPending();
344 341
345 // Event Handler should get a stop device notification as no stop is called 342 // Event Handler should get a stop device notification as no stop is called
346 // before closing the device. 343 // before closing the device.
347 manager_->Close(session_id[index]); 344 manager_->Close(session_id[index]);
348 EXPECT_CALL(*audio_input_event_handler, 345 EXPECT_CALL(*audio_input_event_handler,
349 DeviceStopped(session_id[index])) 346 DeviceStopped(session_id[index]))
350 .Times(1); 347 .Times(1);
351 EXPECT_CALL(*audio_input_listener_, 348 EXPECT_CALL(*audio_input_listener_,
352 Closed(content::MEDIA_DEVICE_AUDIO_CAPTURE, session_id[index])) 349 Closed(MEDIA_DEVICE_AUDIO_CAPTURE, session_id[index]))
353 .Times(1); 350 .Times(1);
354 message_loop_->RunAllPending(); 351 message_loop_->RunAllPending();
355 } 352 }
356 } 353 }
357 354
358 // Starts the same device twice. 355 // Starts the same device twice.
359 TEST_F(AudioInputDeviceManagerTest, StartDeviceTwice) { 356 TEST_F(AudioInputDeviceManagerTest, StartDeviceTwice) {
360 if (!CanRunAudioInputDeviceTests()) 357 if (!CanRunAudioInputDeviceTests())
361 return; 358 return;
362 359
363 ASSERT_FALSE(audio_input_listener_->devices_.empty()); 360 ASSERT_FALSE(audio_input_listener_->devices_.empty());
364 361
365 InSequence s; 362 InSequence s;
366 363
367 // Create one EventHandler for each session. 364 // Create one EventHandler for each session.
368 scoped_ptr<MockAudioInputDeviceManagerEventHandler> 365 scoped_ptr<MockAudioInputDeviceManagerEventHandler>
369 first_event_handler( 366 first_event_handler(
370 new MockAudioInputDeviceManagerEventHandler(message_loop_.get())); 367 new MockAudioInputDeviceManagerEventHandler(message_loop_.get()));
371 scoped_ptr<MockAudioInputDeviceManagerEventHandler> 368 scoped_ptr<MockAudioInputDeviceManagerEventHandler>
372 second_event_handler( 369 second_event_handler(
373 new MockAudioInputDeviceManagerEventHandler(message_loop_.get())); 370 new MockAudioInputDeviceManagerEventHandler(message_loop_.get()));
374 371
375 // Open the default device twice. 372 // Open the default device twice.
376 StreamDeviceInfoArray::const_iterator iter = 373 StreamDeviceInfoArray::const_iterator iter =
377 audio_input_listener_->devices_.begin(); 374 audio_input_listener_->devices_.begin();
378 int first_session_id = manager_->Open(*iter); 375 int first_session_id = manager_->Open(*iter);
379 int second_session_id = manager_->Open(*iter); 376 int second_session_id = manager_->Open(*iter);
380 EXPECT_NE(first_session_id, second_session_id); 377 EXPECT_NE(first_session_id, second_session_id);
381 EXPECT_CALL(*audio_input_listener_, 378 EXPECT_CALL(*audio_input_listener_,
382 Opened(content::MEDIA_DEVICE_AUDIO_CAPTURE, first_session_id)) 379 Opened(MEDIA_DEVICE_AUDIO_CAPTURE, first_session_id))
383 .Times(1); 380 .Times(1);
384 EXPECT_CALL(*audio_input_listener_, 381 EXPECT_CALL(*audio_input_listener_,
385 Opened(content::MEDIA_DEVICE_AUDIO_CAPTURE, second_session_id)) 382 Opened(MEDIA_DEVICE_AUDIO_CAPTURE, second_session_id))
386 .Times(1); 383 .Times(1);
387 message_loop_->RunAllPending(); 384 message_loop_->RunAllPending();
388 385
389 // Calls Start()/Stop()/Close() for the default device twice. 386 // Calls Start()/Stop()/Close() for the default device twice.
390 manager_->Start(first_session_id, first_event_handler.get()); 387 manager_->Start(first_session_id, first_event_handler.get());
391 manager_->Start(second_session_id, second_event_handler.get()); 388 manager_->Start(second_session_id, second_event_handler.get());
392 EXPECT_CALL(*first_event_handler, 389 EXPECT_CALL(*first_event_handler,
393 DeviceStarted(first_session_id, 390 DeviceStarted(first_session_id,
394 media::AudioManagerBase::kDefaultDeviceId)) 391 media::AudioManagerBase::kDefaultDeviceId))
395 .Times(1); 392 .Times(1);
396 EXPECT_CALL(*second_event_handler, 393 EXPECT_CALL(*second_event_handler,
397 DeviceStarted(second_session_id, 394 DeviceStarted(second_session_id,
398 media::AudioManagerBase::kDefaultDeviceId)) 395 media::AudioManagerBase::kDefaultDeviceId))
399 .Times(1); 396 .Times(1);
400 message_loop_->RunAllPending(); 397 message_loop_->RunAllPending();
401 398
402 manager_->Stop(first_session_id); 399 manager_->Stop(first_session_id);
403 manager_->Stop(second_session_id); 400 manager_->Stop(second_session_id);
404 manager_->Close(first_session_id); 401 manager_->Close(first_session_id);
405 manager_->Close(second_session_id); 402 manager_->Close(second_session_id);
406 EXPECT_CALL(*audio_input_listener_, 403 EXPECT_CALL(*audio_input_listener_,
407 Closed(content::MEDIA_DEVICE_AUDIO_CAPTURE, first_session_id)) 404 Closed(MEDIA_DEVICE_AUDIO_CAPTURE, first_session_id))
408 .Times(1); 405 .Times(1);
409 EXPECT_CALL(*audio_input_listener_, 406 EXPECT_CALL(*audio_input_listener_,
410 Closed(content::MEDIA_DEVICE_AUDIO_CAPTURE, second_session_id)) 407 Closed(MEDIA_DEVICE_AUDIO_CAPTURE, second_session_id))
411 .Times(1); 408 .Times(1);
412 message_loop_->RunAllPending(); 409 message_loop_->RunAllPending();
413 } 410 }
414 411
415 // Starts an invalid session. 412 // Starts an invalid session.
416 TEST_F(AudioInputDeviceManagerTest, StartInvalidSession) { 413 TEST_F(AudioInputDeviceManagerTest, StartInvalidSession) {
417 if (!CanRunAudioInputDeviceTests()) 414 if (!CanRunAudioInputDeviceTests())
418 return; 415 return;
419 InSequence s; 416 InSequence s;
420 417
421 // Creates the EventHandlers for the sessions. 418 // Creates the EventHandlers for the sessions.
422 scoped_ptr<MockAudioInputDeviceManagerEventHandler> 419 scoped_ptr<MockAudioInputDeviceManagerEventHandler>
423 audio_input_event_handler( 420 audio_input_event_handler(
424 new MockAudioInputDeviceManagerEventHandler(message_loop_.get())); 421 new MockAudioInputDeviceManagerEventHandler(message_loop_.get()));
425 422
426 // Opens the first device. 423 // Opens the first device.
427 StreamDeviceInfoArray::const_iterator iter = 424 StreamDeviceInfoArray::const_iterator iter =
428 audio_input_listener_->devices_.begin(); 425 audio_input_listener_->devices_.begin();
429 int session_id = manager_->Open(*iter); 426 int session_id = manager_->Open(*iter);
430 EXPECT_CALL(*audio_input_listener_, 427 EXPECT_CALL(*audio_input_listener_,
431 Opened(content::MEDIA_DEVICE_AUDIO_CAPTURE, session_id)) 428 Opened(MEDIA_DEVICE_AUDIO_CAPTURE, session_id))
432 .Times(1); 429 .Times(1);
433 message_loop_->RunAllPending(); 430 message_loop_->RunAllPending();
434 431
435 // Starts a non-opened device. 432 // Starts a non-opened device.
436 // This should fail and trigger error code 'kDeviceNotAvailable'. 433 // This should fail and trigger error code 'kDeviceNotAvailable'.
437 int invalid_session_id = session_id + 1; 434 int invalid_session_id = session_id + 1;
438 manager_->Start(invalid_session_id, audio_input_event_handler.get()); 435 manager_->Start(invalid_session_id, audio_input_event_handler.get());
439 EXPECT_CALL(*audio_input_event_handler, 436 EXPECT_CALL(*audio_input_event_handler,
440 DeviceStarted(invalid_session_id, std::string())) 437 DeviceStarted(invalid_session_id, std::string()))
441 .Times(1); 438 .Times(1);
442 message_loop_->RunAllPending(); 439 message_loop_->RunAllPending();
443 440
444 manager_->Close(session_id); 441 manager_->Close(session_id);
445 EXPECT_CALL(*audio_input_listener_, 442 EXPECT_CALL(*audio_input_listener_,
446 Closed(content::MEDIA_DEVICE_AUDIO_CAPTURE, session_id)) 443 Closed(MEDIA_DEVICE_AUDIO_CAPTURE, session_id))
447 .Times(1); 444 .Times(1);
448 message_loop_->RunAllPending(); 445 message_loop_->RunAllPending();
449 } 446 }
450 447
451 // Starts a session twice, the first time should succeed, while the second 448 // Starts a session twice, the first time should succeed, while the second
452 // time should fail. 449 // time should fail.
453 TEST_F(AudioInputDeviceManagerTest, StartSessionTwice) { 450 TEST_F(AudioInputDeviceManagerTest, StartSessionTwice) {
454 if (!CanRunAudioInputDeviceTests()) 451 if (!CanRunAudioInputDeviceTests())
455 return; 452 return;
456 InSequence s; 453 InSequence s;
457 454
458 // Creates the EventHandlers for the sessions. 455 // Creates the EventHandlers for the sessions.
459 scoped_ptr<MockAudioInputDeviceManagerEventHandler> 456 scoped_ptr<MockAudioInputDeviceManagerEventHandler>
460 audio_input_event_handler( 457 audio_input_event_handler(
461 new MockAudioInputDeviceManagerEventHandler(message_loop_.get())); 458 new MockAudioInputDeviceManagerEventHandler(message_loop_.get()));
462 459
463 // Opens the first device. 460 // Opens the first device.
464 StreamDeviceInfoArray::const_iterator iter = 461 StreamDeviceInfoArray::const_iterator iter =
465 audio_input_listener_->devices_.begin(); 462 audio_input_listener_->devices_.begin();
466 int session_id = manager_->Open(*iter); 463 int session_id = manager_->Open(*iter);
467 EXPECT_CALL(*audio_input_listener_, 464 EXPECT_CALL(*audio_input_listener_,
468 Opened(content::MEDIA_DEVICE_AUDIO_CAPTURE, session_id)) 465 Opened(MEDIA_DEVICE_AUDIO_CAPTURE, session_id))
469 .Times(1); 466 .Times(1);
470 message_loop_->RunAllPending(); 467 message_loop_->RunAllPending();
471 468
472 // Starts the session, it should succeed. 469 // Starts the session, it should succeed.
473 manager_->Start(session_id, audio_input_event_handler.get()); 470 manager_->Start(session_id, audio_input_event_handler.get());
474 EXPECT_CALL(*audio_input_event_handler, 471 EXPECT_CALL(*audio_input_event_handler,
475 DeviceStarted(session_id, 472 DeviceStarted(session_id,
476 media::AudioManagerBase::kDefaultDeviceId)) 473 media::AudioManagerBase::kDefaultDeviceId))
477 .Times(1); 474 .Times(1);
478 message_loop_->RunAllPending(); 475 message_loop_->RunAllPending();
479 476
480 // Starts the session for the second time, it should fail. 477 // Starts the session for the second time, it should fail.
481 manager_->Start(session_id, audio_input_event_handler.get()); 478 manager_->Start(session_id, audio_input_event_handler.get());
482 EXPECT_CALL(*audio_input_event_handler, 479 EXPECT_CALL(*audio_input_event_handler,
483 DeviceStarted(session_id, std::string())) 480 DeviceStarted(session_id, std::string()))
484 .Times(1); 481 .Times(1);
485 482
486 manager_->Stop(session_id); 483 manager_->Stop(session_id);
487 manager_->Close(session_id); 484 manager_->Close(session_id);
488 EXPECT_CALL(*audio_input_listener_, 485 EXPECT_CALL(*audio_input_listener_,
489 Closed(content::MEDIA_DEVICE_AUDIO_CAPTURE, session_id)) 486 Closed(MEDIA_DEVICE_AUDIO_CAPTURE, session_id))
490 .Times(1); 487 .Times(1);
491 message_loop_->RunAllPending(); 488 message_loop_->RunAllPending();
492 } 489 }
493 490
494 } // namespace media_stream 491 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698