| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "content/browser/renderer_host/media/media_devices_manager.h" | 5 #include "content/browser/renderer_host/media/media_devices_manager.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 160 DISALLOW_COPY_AND_ASSIGN(MediaDevicesManagerTest); | 160 DISALLOW_COPY_AND_ASSIGN(MediaDevicesManagerTest); |
| 161 }; | 161 }; |
| 162 | 162 |
| 163 TEST_F(MediaDevicesManagerTest, EnumerateNoCacheAudioInput) { | 163 TEST_F(MediaDevicesManagerTest, EnumerateNoCacheAudioInput) { |
| 164 EXPECT_CALL(*audio_manager_, MockGetAudioInputDeviceNames(_)) | 164 EXPECT_CALL(*audio_manager_, MockGetAudioInputDeviceNames(_)) |
| 165 .Times(kNumCalls); | 165 .Times(kNumCalls); |
| 166 EXPECT_CALL(*video_capture_device_factory_, MockGetDeviceDescriptors()) | 166 EXPECT_CALL(*video_capture_device_factory_, MockGetDeviceDescriptors()) |
| 167 .Times(0); | 167 .Times(0); |
| 168 EXPECT_CALL(*audio_manager_, MockGetAudioOutputDeviceNames(_)).Times(0); | 168 EXPECT_CALL(*audio_manager_, MockGetAudioOutputDeviceNames(_)).Times(0); |
| 169 EXPECT_CALL(*this, MockCallback(_)).Times(kNumCalls); | 169 EXPECT_CALL(*this, MockCallback(_)).Times(kNumCalls); |
| 170 MediaDevicesManager::BoolDeviceTypes devices_to_enumerate; |
| 171 devices_to_enumerate[MEDIA_DEVICE_TYPE_AUDIO_INPUT] = true; |
| 170 for (int i = 0; i < kNumCalls; i++) { | 172 for (int i = 0; i < kNumCalls; i++) { |
| 171 base::RunLoop run_loop; | 173 base::RunLoop run_loop; |
| 172 media_devices_manager_->EnumerateDevices( | 174 media_devices_manager_->EnumerateDevices( |
| 173 {{true, false, false}}, | 175 devices_to_enumerate, |
| 174 base::Bind(&MediaDevicesManagerTest::EnumerateCallback, | 176 base::Bind(&MediaDevicesManagerTest::EnumerateCallback, |
| 175 base::Unretained(this), &run_loop)); | 177 base::Unretained(this), &run_loop)); |
| 176 run_loop.Run(); | 178 run_loop.Run(); |
| 177 } | 179 } |
| 178 } | 180 } |
| 179 | 181 |
| 180 TEST_F(MediaDevicesManagerTest, EnumerateNoCacheVideoInput) { | 182 TEST_F(MediaDevicesManagerTest, EnumerateNoCacheVideoInput) { |
| 181 EXPECT_CALL(*audio_manager_, MockGetAudioInputDeviceNames(_)).Times(0); | 183 EXPECT_CALL(*audio_manager_, MockGetAudioInputDeviceNames(_)).Times(0); |
| 182 EXPECT_CALL(*video_capture_device_factory_, MockGetDeviceDescriptors()) | 184 EXPECT_CALL(*video_capture_device_factory_, MockGetDeviceDescriptors()) |
| 183 .Times(kNumCalls); | 185 .Times(kNumCalls); |
| 184 EXPECT_CALL(*audio_manager_, MockGetAudioOutputDeviceNames(_)).Times(0); | 186 EXPECT_CALL(*audio_manager_, MockGetAudioOutputDeviceNames(_)).Times(0); |
| 185 EXPECT_CALL(*this, MockCallback(_)).Times(kNumCalls); | 187 EXPECT_CALL(*this, MockCallback(_)).Times(kNumCalls); |
| 188 MediaDevicesManager::BoolDeviceTypes devices_to_enumerate; |
| 189 devices_to_enumerate[MEDIA_DEVICE_TYPE_VIDEO_INPUT] = true; |
| 186 for (int i = 0; i < kNumCalls; i++) { | 190 for (int i = 0; i < kNumCalls; i++) { |
| 187 base::RunLoop run_loop; | 191 base::RunLoop run_loop; |
| 188 media_devices_manager_->EnumerateDevices( | 192 media_devices_manager_->EnumerateDevices( |
| 189 {{false, true, false}}, | 193 devices_to_enumerate, |
| 190 base::Bind(&MediaDevicesManagerTest::EnumerateCallback, | 194 base::Bind(&MediaDevicesManagerTest::EnumerateCallback, |
| 191 base::Unretained(this), &run_loop)); | 195 base::Unretained(this), &run_loop)); |
| 192 run_loop.Run(); | 196 run_loop.Run(); |
| 193 } | 197 } |
| 194 } | 198 } |
| 195 | 199 |
| 196 TEST_F(MediaDevicesManagerTest, EnumerateNoCacheAudioOutput) { | 200 TEST_F(MediaDevicesManagerTest, EnumerateNoCacheAudioOutput) { |
| 197 EXPECT_CALL(*audio_manager_, MockGetAudioInputDeviceNames(_)).Times(0); | 201 EXPECT_CALL(*audio_manager_, MockGetAudioInputDeviceNames(_)).Times(0); |
| 198 EXPECT_CALL(*video_capture_device_factory_, MockGetDeviceDescriptors()) | 202 EXPECT_CALL(*video_capture_device_factory_, MockGetDeviceDescriptors()) |
| 199 .Times(0); | 203 .Times(0); |
| 200 EXPECT_CALL(*audio_manager_, MockGetAudioOutputDeviceNames(_)) | 204 EXPECT_CALL(*audio_manager_, MockGetAudioOutputDeviceNames(_)) |
| 201 .Times(kNumCalls); | 205 .Times(kNumCalls); |
| 202 EXPECT_CALL(*this, MockCallback(_)).Times(kNumCalls); | 206 EXPECT_CALL(*this, MockCallback(_)).Times(kNumCalls); |
| 207 MediaDevicesManager::BoolDeviceTypes devices_to_enumerate; |
| 208 devices_to_enumerate[MEDIA_DEVICE_TYPE_AUDIO_OUTPUT] = true; |
| 203 for (int i = 0; i < kNumCalls; i++) { | 209 for (int i = 0; i < kNumCalls; i++) { |
| 204 base::RunLoop run_loop; | 210 base::RunLoop run_loop; |
| 205 media_devices_manager_->EnumerateDevices( | 211 media_devices_manager_->EnumerateDevices( |
| 206 {{false, false, true}}, | 212 devices_to_enumerate, |
| 207 base::Bind(&MediaDevicesManagerTest::EnumerateCallback, | 213 base::Bind(&MediaDevicesManagerTest::EnumerateCallback, |
| 208 base::Unretained(this), &run_loop)); | 214 base::Unretained(this), &run_loop)); |
| 209 run_loop.Run(); | 215 run_loop.Run(); |
| 210 } | 216 } |
| 211 } | 217 } |
| 212 | 218 |
| 213 TEST_F(MediaDevicesManagerTest, EnumerateNoCacheAudio) { | 219 TEST_F(MediaDevicesManagerTest, EnumerateNoCacheAudio) { |
| 214 EXPECT_CALL(*audio_manager_, MockGetAudioOutputDeviceNames(_)) | 220 EXPECT_CALL(*audio_manager_, MockGetAudioOutputDeviceNames(_)) |
| 215 .Times(kNumCalls); | 221 .Times(kNumCalls); |
| 216 EXPECT_CALL(*audio_manager_, MockGetAudioInputDeviceNames(_)) | 222 EXPECT_CALL(*audio_manager_, MockGetAudioInputDeviceNames(_)) |
| 217 .Times(kNumCalls); | 223 .Times(kNumCalls); |
| 218 EXPECT_CALL(*this, MockCallback(_)).Times(kNumCalls); | 224 EXPECT_CALL(*this, MockCallback(_)).Times(kNumCalls); |
| 225 MediaDevicesManager::BoolDeviceTypes devices_to_enumerate; |
| 226 devices_to_enumerate[MEDIA_DEVICE_TYPE_AUDIO_INPUT] = true; |
| 227 devices_to_enumerate[MEDIA_DEVICE_TYPE_AUDIO_OUTPUT] = true; |
| 219 for (int i = 0; i < kNumCalls; i++) { | 228 for (int i = 0; i < kNumCalls; i++) { |
| 220 base::RunLoop run_loop; | 229 base::RunLoop run_loop; |
| 221 media_devices_manager_->EnumerateDevices( | 230 media_devices_manager_->EnumerateDevices( |
| 222 {{true, false, true}}, | 231 devices_to_enumerate, |
| 223 base::Bind(&MediaDevicesManagerTest::EnumerateCallback, | 232 base::Bind(&MediaDevicesManagerTest::EnumerateCallback, |
| 224 base::Unretained(this), &run_loop)); | 233 base::Unretained(this), &run_loop)); |
| 225 run_loop.Run(); | 234 run_loop.Run(); |
| 226 } | 235 } |
| 227 } | 236 } |
| 228 | 237 |
| 229 TEST_F(MediaDevicesManagerTest, EnumerateCacheAudio) { | 238 TEST_F(MediaDevicesManagerTest, EnumerateCacheAudio) { |
| 230 EXPECT_CALL(*audio_manager_, MockGetAudioInputDeviceNames(_)).Times(1); | 239 EXPECT_CALL(*audio_manager_, MockGetAudioInputDeviceNames(_)).Times(1); |
| 231 EXPECT_CALL(*video_capture_device_factory_, MockGetDeviceDescriptors()) | 240 EXPECT_CALL(*video_capture_device_factory_, MockGetDeviceDescriptors()) |
| 232 .Times(0); | 241 .Times(0); |
| 233 EXPECT_CALL(*audio_manager_, MockGetAudioOutputDeviceNames(_)).Times(1); | 242 EXPECT_CALL(*audio_manager_, MockGetAudioOutputDeviceNames(_)).Times(1); |
| 234 EXPECT_CALL(*this, MockCallback(_)).Times(kNumCalls); | 243 EXPECT_CALL(*this, MockCallback(_)).Times(kNumCalls); |
| 235 EnableCache(MEDIA_DEVICE_TYPE_AUDIO_INPUT); | 244 EnableCache(MEDIA_DEVICE_TYPE_AUDIO_INPUT); |
| 236 EnableCache(MEDIA_DEVICE_TYPE_AUDIO_OUTPUT); | 245 EnableCache(MEDIA_DEVICE_TYPE_AUDIO_OUTPUT); |
| 246 MediaDevicesManager::BoolDeviceTypes devices_to_enumerate; |
| 247 devices_to_enumerate[MEDIA_DEVICE_TYPE_AUDIO_INPUT] = true; |
| 248 devices_to_enumerate[MEDIA_DEVICE_TYPE_AUDIO_OUTPUT] = true; |
| 237 for (int i = 0; i < kNumCalls; i++) { | 249 for (int i = 0; i < kNumCalls; i++) { |
| 238 base::RunLoop run_loop; | 250 base::RunLoop run_loop; |
| 239 media_devices_manager_->EnumerateDevices( | 251 media_devices_manager_->EnumerateDevices( |
| 240 {{true, false, true}}, | 252 devices_to_enumerate, |
| 241 base::Bind(&MediaDevicesManagerTest::EnumerateCallback, | 253 base::Bind(&MediaDevicesManagerTest::EnumerateCallback, |
| 242 base::Unretained(this), &run_loop)); | 254 base::Unretained(this), &run_loop)); |
| 243 run_loop.Run(); | 255 run_loop.Run(); |
| 244 } | 256 } |
| 245 } | 257 } |
| 246 | 258 |
| 247 TEST_F(MediaDevicesManagerTest, EnumerateCacheVideo) { | 259 TEST_F(MediaDevicesManagerTest, EnumerateCacheVideo) { |
| 248 EXPECT_CALL(*audio_manager_, MockGetAudioInputDeviceNames(_)).Times(0); | 260 EXPECT_CALL(*audio_manager_, MockGetAudioInputDeviceNames(_)).Times(0); |
| 249 EXPECT_CALL(*video_capture_device_factory_, MockGetDeviceDescriptors()) | 261 EXPECT_CALL(*video_capture_device_factory_, MockGetDeviceDescriptors()) |
| 250 .Times(1); | 262 .Times(1); |
| 251 EXPECT_CALL(*audio_manager_, MockGetAudioOutputDeviceNames(_)).Times(0); | 263 EXPECT_CALL(*audio_manager_, MockGetAudioOutputDeviceNames(_)).Times(0); |
| 252 EXPECT_CALL(*this, MockCallback(_)).Times(kNumCalls); | 264 EXPECT_CALL(*this, MockCallback(_)).Times(kNumCalls); |
| 253 EnableCache(MEDIA_DEVICE_TYPE_VIDEO_INPUT); | 265 EnableCache(MEDIA_DEVICE_TYPE_VIDEO_INPUT); |
| 266 MediaDevicesManager::BoolDeviceTypes devices_to_enumerate; |
| 267 devices_to_enumerate[MEDIA_DEVICE_TYPE_VIDEO_INPUT] = true; |
| 254 for (int i = 0; i < kNumCalls; i++) { | 268 for (int i = 0; i < kNumCalls; i++) { |
| 255 base::RunLoop run_loop; | 269 base::RunLoop run_loop; |
| 256 media_devices_manager_->EnumerateDevices( | 270 media_devices_manager_->EnumerateDevices( |
| 257 {{false, true, false}}, | 271 devices_to_enumerate, |
| 258 base::Bind(&MediaDevicesManagerTest::EnumerateCallback, | 272 base::Bind(&MediaDevicesManagerTest::EnumerateCallback, |
| 259 base::Unretained(this), &run_loop)); | 273 base::Unretained(this), &run_loop)); |
| 260 run_loop.Run(); | 274 run_loop.Run(); |
| 261 } | 275 } |
| 262 } | 276 } |
| 263 | 277 |
| 264 TEST_F(MediaDevicesManagerTest, EnumerateCacheAudioWithDeviceChanges) { | 278 TEST_F(MediaDevicesManagerTest, EnumerateCacheAudioWithDeviceChanges) { |
| 265 MediaDeviceEnumeration enumeration; | 279 MediaDeviceEnumeration enumeration; |
| 266 EXPECT_CALL(*audio_manager_, MockGetAudioOutputDeviceNames(_)).Times(2); | 280 EXPECT_CALL(*audio_manager_, MockGetAudioOutputDeviceNames(_)).Times(2); |
| 267 EXPECT_CALL(*video_capture_device_factory_, MockGetDeviceDescriptors()) | 281 EXPECT_CALL(*video_capture_device_factory_, MockGetDeviceDescriptors()) |
| 268 .Times(0); | 282 .Times(0); |
| 269 EXPECT_CALL(*audio_manager_, MockGetAudioInputDeviceNames(_)).Times(2); | 283 EXPECT_CALL(*audio_manager_, MockGetAudioInputDeviceNames(_)).Times(2); |
| 270 EXPECT_CALL(*this, MockCallback(_)) | 284 EXPECT_CALL(*this, MockCallback(_)) |
| 271 .Times(2 * kNumCalls) | 285 .Times(2 * kNumCalls) |
| 272 .WillRepeatedly(SaveArg<0>(&enumeration)); | 286 .WillRepeatedly(SaveArg<0>(&enumeration)); |
| 273 | 287 |
| 274 size_t num_audio_input_devices = 5; | 288 size_t num_audio_input_devices = 5; |
| 275 size_t num_audio_output_devices = 3; | 289 size_t num_audio_output_devices = 3; |
| 276 audio_manager_->SetNumAudioInputDevices(num_audio_input_devices); | 290 audio_manager_->SetNumAudioInputDevices(num_audio_input_devices); |
| 277 audio_manager_->SetNumAudioOutputDevices(num_audio_output_devices); | 291 audio_manager_->SetNumAudioOutputDevices(num_audio_output_devices); |
| 278 EnableCache(MEDIA_DEVICE_TYPE_AUDIO_INPUT); | 292 EnableCache(MEDIA_DEVICE_TYPE_AUDIO_INPUT); |
| 279 EnableCache(MEDIA_DEVICE_TYPE_AUDIO_OUTPUT); | 293 EnableCache(MEDIA_DEVICE_TYPE_AUDIO_OUTPUT); |
| 294 MediaDevicesManager::BoolDeviceTypes devices_to_enumerate; |
| 295 devices_to_enumerate[MEDIA_DEVICE_TYPE_AUDIO_INPUT] = true; |
| 296 devices_to_enumerate[MEDIA_DEVICE_TYPE_AUDIO_OUTPUT] = true; |
| 280 for (int i = 0; i < kNumCalls; i++) { | 297 for (int i = 0; i < kNumCalls; i++) { |
| 281 base::RunLoop run_loop; | 298 base::RunLoop run_loop; |
| 282 media_devices_manager_->EnumerateDevices( | 299 media_devices_manager_->EnumerateDevices( |
| 283 {{true, false, true}}, | 300 devices_to_enumerate, |
| 284 base::Bind(&MediaDevicesManagerTest::EnumerateCallback, | 301 base::Bind(&MediaDevicesManagerTest::EnumerateCallback, |
| 285 base::Unretained(this), &run_loop)); | 302 base::Unretained(this), &run_loop)); |
| 286 run_loop.Run(); | 303 run_loop.Run(); |
| 287 EXPECT_EQ(num_audio_input_devices, | 304 EXPECT_EQ(num_audio_input_devices, |
| 288 enumeration[MEDIA_DEVICE_TYPE_AUDIO_INPUT].size()); | 305 enumeration[MEDIA_DEVICE_TYPE_AUDIO_INPUT].size()); |
| 289 EXPECT_EQ(num_audio_output_devices, | 306 EXPECT_EQ(num_audio_output_devices, |
| 290 enumeration[MEDIA_DEVICE_TYPE_AUDIO_OUTPUT].size()); | 307 enumeration[MEDIA_DEVICE_TYPE_AUDIO_OUTPUT].size()); |
| 291 } | 308 } |
| 292 | 309 |
| 293 // Simulate device change | 310 // Simulate device change |
| 294 num_audio_input_devices = 3; | 311 num_audio_input_devices = 3; |
| 295 num_audio_output_devices = 4; | 312 num_audio_output_devices = 4; |
| 296 audio_manager_->SetNumAudioInputDevices(num_audio_input_devices); | 313 audio_manager_->SetNumAudioInputDevices(num_audio_input_devices); |
| 297 audio_manager_->SetNumAudioOutputDevices(num_audio_output_devices); | 314 audio_manager_->SetNumAudioOutputDevices(num_audio_output_devices); |
| 298 media_devices_manager_->OnDevicesChanged(base::SystemMonitor::DEVTYPE_AUDIO); | 315 media_devices_manager_->OnDevicesChanged(base::SystemMonitor::DEVTYPE_AUDIO); |
| 299 | 316 |
| 300 for (int i = 0; i < kNumCalls; i++) { | 317 for (int i = 0; i < kNumCalls; i++) { |
| 301 base::RunLoop run_loop; | 318 base::RunLoop run_loop; |
| 302 media_devices_manager_->EnumerateDevices( | 319 media_devices_manager_->EnumerateDevices( |
| 303 {{true, false, true}}, | 320 devices_to_enumerate, |
| 304 base::Bind(&MediaDevicesManagerTest::EnumerateCallback, | 321 base::Bind(&MediaDevicesManagerTest::EnumerateCallback, |
| 305 base::Unretained(this), &run_loop)); | 322 base::Unretained(this), &run_loop)); |
| 306 run_loop.Run(); | 323 run_loop.Run(); |
| 307 EXPECT_EQ(num_audio_input_devices, | 324 EXPECT_EQ(num_audio_input_devices, |
| 308 enumeration[MEDIA_DEVICE_TYPE_AUDIO_INPUT].size()); | 325 enumeration[MEDIA_DEVICE_TYPE_AUDIO_INPUT].size()); |
| 309 EXPECT_EQ(num_audio_output_devices, | 326 EXPECT_EQ(num_audio_output_devices, |
| 310 enumeration[MEDIA_DEVICE_TYPE_AUDIO_OUTPUT].size()); | 327 enumeration[MEDIA_DEVICE_TYPE_AUDIO_OUTPUT].size()); |
| 311 } | 328 } |
| 312 } | 329 } |
| 313 | 330 |
| 314 TEST_F(MediaDevicesManagerTest, EnumerateCacheVideoWithDeviceChanges) { | 331 TEST_F(MediaDevicesManagerTest, EnumerateCacheVideoWithDeviceChanges) { |
| 315 MediaDeviceEnumeration enumeration; | 332 MediaDeviceEnumeration enumeration; |
| 316 EXPECT_CALL(*audio_manager_, MockGetAudioOutputDeviceNames(_)).Times(0); | 333 EXPECT_CALL(*audio_manager_, MockGetAudioOutputDeviceNames(_)).Times(0); |
| 317 EXPECT_CALL(*video_capture_device_factory_, MockGetDeviceDescriptors()) | 334 EXPECT_CALL(*video_capture_device_factory_, MockGetDeviceDescriptors()) |
| 318 .Times(2); | 335 .Times(2); |
| 319 EXPECT_CALL(*audio_manager_, MockGetAudioInputDeviceNames(_)).Times(0); | 336 EXPECT_CALL(*audio_manager_, MockGetAudioInputDeviceNames(_)).Times(0); |
| 320 EXPECT_CALL(*this, MockCallback(_)) | 337 EXPECT_CALL(*this, MockCallback(_)) |
| 321 .Times(2 * kNumCalls) | 338 .Times(2 * kNumCalls) |
| 322 .WillRepeatedly(SaveArg<0>(&enumeration)); | 339 .WillRepeatedly(SaveArg<0>(&enumeration)); |
| 323 | 340 |
| 324 // Simulate device change | 341 // Simulate device change |
| 325 size_t num_video_input_devices = 5; | 342 size_t num_video_input_devices = 5; |
| 326 video_capture_device_factory_->set_number_of_devices(num_video_input_devices); | 343 video_capture_device_factory_->set_number_of_devices(num_video_input_devices); |
| 327 EnableCache(MEDIA_DEVICE_TYPE_VIDEO_INPUT); | 344 EnableCache(MEDIA_DEVICE_TYPE_VIDEO_INPUT); |
| 345 MediaDevicesManager::BoolDeviceTypes devices_to_enumerate; |
| 346 devices_to_enumerate[MEDIA_DEVICE_TYPE_VIDEO_INPUT] = true; |
| 328 for (int i = 0; i < kNumCalls; i++) { | 347 for (int i = 0; i < kNumCalls; i++) { |
| 329 base::RunLoop run_loop; | 348 base::RunLoop run_loop; |
| 330 media_devices_manager_->EnumerateDevices( | 349 media_devices_manager_->EnumerateDevices( |
| 331 {{false, true, false}}, | 350 devices_to_enumerate, |
| 332 base::Bind(&MediaDevicesManagerTest::EnumerateCallback, | 351 base::Bind(&MediaDevicesManagerTest::EnumerateCallback, |
| 333 base::Unretained(this), &run_loop)); | 352 base::Unretained(this), &run_loop)); |
| 334 run_loop.Run(); | 353 run_loop.Run(); |
| 335 EXPECT_EQ(num_video_input_devices, | 354 EXPECT_EQ(num_video_input_devices, |
| 336 enumeration[MEDIA_DEVICE_TYPE_VIDEO_INPUT].size()); | 355 enumeration[MEDIA_DEVICE_TYPE_VIDEO_INPUT].size()); |
| 337 } | 356 } |
| 338 | 357 |
| 339 // Simulate device change | 358 // Simulate device change |
| 340 num_video_input_devices = 9; | 359 num_video_input_devices = 9; |
| 341 video_capture_device_factory_->set_number_of_devices(num_video_input_devices); | 360 video_capture_device_factory_->set_number_of_devices(num_video_input_devices); |
| 342 media_devices_manager_->OnDevicesChanged( | 361 media_devices_manager_->OnDevicesChanged( |
| 343 base::SystemMonitor::DEVTYPE_VIDEO_CAPTURE); | 362 base::SystemMonitor::DEVTYPE_VIDEO_CAPTURE); |
| 344 | 363 |
| 345 for (int i = 0; i < kNumCalls; i++) { | 364 for (int i = 0; i < kNumCalls; i++) { |
| 346 base::RunLoop run_loop; | 365 base::RunLoop run_loop; |
| 347 media_devices_manager_->EnumerateDevices( | 366 media_devices_manager_->EnumerateDevices( |
| 348 {{false, true, false}}, | 367 devices_to_enumerate, |
| 349 base::Bind(&MediaDevicesManagerTest::EnumerateCallback, | 368 base::Bind(&MediaDevicesManagerTest::EnumerateCallback, |
| 350 base::Unretained(this), &run_loop)); | 369 base::Unretained(this), &run_loop)); |
| 351 run_loop.Run(); | 370 run_loop.Run(); |
| 352 EXPECT_EQ(num_video_input_devices, | 371 EXPECT_EQ(num_video_input_devices, |
| 353 enumeration[MEDIA_DEVICE_TYPE_VIDEO_INPUT].size()); | 372 enumeration[MEDIA_DEVICE_TYPE_VIDEO_INPUT].size()); |
| 354 } | 373 } |
| 355 } | 374 } |
| 356 | 375 |
| 357 TEST_F(MediaDevicesManagerTest, EnumerateCacheAllWithDeviceChanges) { | 376 TEST_F(MediaDevicesManagerTest, EnumerateCacheAllWithDeviceChanges) { |
| 358 MediaDeviceEnumeration enumeration; | 377 MediaDeviceEnumeration enumeration; |
| 359 EXPECT_CALL(*audio_manager_, MockGetAudioOutputDeviceNames(_)).Times(2); | 378 EXPECT_CALL(*audio_manager_, MockGetAudioOutputDeviceNames(_)).Times(2); |
| 360 EXPECT_CALL(*video_capture_device_factory_, MockGetDeviceDescriptors()) | 379 EXPECT_CALL(*video_capture_device_factory_, MockGetDeviceDescriptors()) |
| 361 .Times(2); | 380 .Times(2); |
| 362 EXPECT_CALL(*audio_manager_, MockGetAudioInputDeviceNames(_)).Times(2); | 381 EXPECT_CALL(*audio_manager_, MockGetAudioInputDeviceNames(_)).Times(2); |
| 363 EXPECT_CALL(*this, MockCallback(_)) | 382 EXPECT_CALL(*this, MockCallback(_)) |
| 364 .Times(2 * kNumCalls) | 383 .Times(2 * kNumCalls) |
| 365 .WillRepeatedly(SaveArg<0>(&enumeration)); | 384 .WillRepeatedly(SaveArg<0>(&enumeration)); |
| 366 | 385 |
| 367 size_t num_audio_input_devices = 5; | 386 size_t num_audio_input_devices = 5; |
| 368 size_t num_video_input_devices = 4; | 387 size_t num_video_input_devices = 4; |
| 369 size_t num_audio_output_devices = 3; | 388 size_t num_audio_output_devices = 3; |
| 370 audio_manager_->SetNumAudioInputDevices(num_audio_input_devices); | 389 audio_manager_->SetNumAudioInputDevices(num_audio_input_devices); |
| 371 video_capture_device_factory_->set_number_of_devices(num_video_input_devices); | 390 video_capture_device_factory_->set_number_of_devices(num_video_input_devices); |
| 372 audio_manager_->SetNumAudioOutputDevices(num_audio_output_devices); | 391 audio_manager_->SetNumAudioOutputDevices(num_audio_output_devices); |
| 373 EnableCache(MEDIA_DEVICE_TYPE_AUDIO_INPUT); | 392 EnableCache(MEDIA_DEVICE_TYPE_AUDIO_INPUT); |
| 374 EnableCache(MEDIA_DEVICE_TYPE_AUDIO_OUTPUT); | 393 EnableCache(MEDIA_DEVICE_TYPE_AUDIO_OUTPUT); |
| 375 EnableCache(MEDIA_DEVICE_TYPE_VIDEO_INPUT); | 394 EnableCache(MEDIA_DEVICE_TYPE_VIDEO_INPUT); |
| 395 MediaDevicesManager::BoolDeviceTypes devices_to_enumerate; |
| 396 devices_to_enumerate[MEDIA_DEVICE_TYPE_AUDIO_INPUT] = true; |
| 397 devices_to_enumerate[MEDIA_DEVICE_TYPE_VIDEO_INPUT] = true; |
| 398 devices_to_enumerate[MEDIA_DEVICE_TYPE_AUDIO_OUTPUT] = true; |
| 376 for (int i = 0; i < kNumCalls; i++) { | 399 for (int i = 0; i < kNumCalls; i++) { |
| 377 base::RunLoop run_loop; | 400 base::RunLoop run_loop; |
| 378 media_devices_manager_->EnumerateDevices( | 401 media_devices_manager_->EnumerateDevices( |
| 379 {{true, true, true}}, | 402 devices_to_enumerate, |
| 380 base::Bind(&MediaDevicesManagerTest::EnumerateCallback, | 403 base::Bind(&MediaDevicesManagerTest::EnumerateCallback, |
| 381 base::Unretained(this), &run_loop)); | 404 base::Unretained(this), &run_loop)); |
| 382 run_loop.Run(); | 405 run_loop.Run(); |
| 383 EXPECT_EQ(num_audio_input_devices, | 406 EXPECT_EQ(num_audio_input_devices, |
| 384 enumeration[MEDIA_DEVICE_TYPE_AUDIO_INPUT].size()); | 407 enumeration[MEDIA_DEVICE_TYPE_AUDIO_INPUT].size()); |
| 385 EXPECT_EQ(num_video_input_devices, | 408 EXPECT_EQ(num_video_input_devices, |
| 386 enumeration[MEDIA_DEVICE_TYPE_VIDEO_INPUT].size()); | 409 enumeration[MEDIA_DEVICE_TYPE_VIDEO_INPUT].size()); |
| 387 EXPECT_EQ(num_audio_output_devices, | 410 EXPECT_EQ(num_audio_output_devices, |
| 388 enumeration[MEDIA_DEVICE_TYPE_AUDIO_OUTPUT].size()); | 411 enumeration[MEDIA_DEVICE_TYPE_AUDIO_OUTPUT].size()); |
| 389 } | 412 } |
| 390 | 413 |
| 391 // Simulate device changes | 414 // Simulate device changes |
| 392 num_audio_input_devices = 3; | 415 num_audio_input_devices = 3; |
| 393 num_video_input_devices = 2; | 416 num_video_input_devices = 2; |
| 394 num_audio_output_devices = 4; | 417 num_audio_output_devices = 4; |
| 395 audio_manager_->SetNumAudioInputDevices(num_audio_input_devices); | 418 audio_manager_->SetNumAudioInputDevices(num_audio_input_devices); |
| 396 video_capture_device_factory_->set_number_of_devices(num_video_input_devices); | 419 video_capture_device_factory_->set_number_of_devices(num_video_input_devices); |
| 397 audio_manager_->SetNumAudioOutputDevices(num_audio_output_devices); | 420 audio_manager_->SetNumAudioOutputDevices(num_audio_output_devices); |
| 398 media_devices_manager_->OnDevicesChanged(base::SystemMonitor::DEVTYPE_AUDIO); | 421 media_devices_manager_->OnDevicesChanged(base::SystemMonitor::DEVTYPE_AUDIO); |
| 399 media_devices_manager_->OnDevicesChanged( | 422 media_devices_manager_->OnDevicesChanged( |
| 400 base::SystemMonitor::DEVTYPE_VIDEO_CAPTURE); | 423 base::SystemMonitor::DEVTYPE_VIDEO_CAPTURE); |
| 401 | 424 |
| 402 for (int i = 0; i < kNumCalls; i++) { | 425 for (int i = 0; i < kNumCalls; i++) { |
| 403 base::RunLoop run_loop; | 426 base::RunLoop run_loop; |
| 404 media_devices_manager_->EnumerateDevices( | 427 media_devices_manager_->EnumerateDevices( |
| 405 {{true, true, true}}, | 428 devices_to_enumerate, |
| 406 base::Bind(&MediaDevicesManagerTest::EnumerateCallback, | 429 base::Bind(&MediaDevicesManagerTest::EnumerateCallback, |
| 407 base::Unretained(this), &run_loop)); | 430 base::Unretained(this), &run_loop)); |
| 408 run_loop.Run(); | 431 run_loop.Run(); |
| 409 EXPECT_EQ(num_audio_input_devices, | 432 EXPECT_EQ(num_audio_input_devices, |
| 410 enumeration[MEDIA_DEVICE_TYPE_AUDIO_INPUT].size()); | 433 enumeration[MEDIA_DEVICE_TYPE_AUDIO_INPUT].size()); |
| 411 EXPECT_EQ(num_video_input_devices, | 434 EXPECT_EQ(num_video_input_devices, |
| 412 enumeration[MEDIA_DEVICE_TYPE_VIDEO_INPUT].size()); | 435 enumeration[MEDIA_DEVICE_TYPE_VIDEO_INPUT].size()); |
| 413 EXPECT_EQ(num_audio_output_devices, | 436 EXPECT_EQ(num_audio_output_devices, |
| 414 enumeration[MEDIA_DEVICE_TYPE_AUDIO_OUTPUT].size()); | 437 enumeration[MEDIA_DEVICE_TYPE_AUDIO_OUTPUT].size()); |
| 415 } | 438 } |
| 416 } | 439 } |
| 417 | 440 |
| 418 } // namespace content | 441 } // namespace content |
| OLD | NEW |