| OLD | NEW |
| 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 "content/browser/renderer_host/media/media_stream_dispatcher_host.h" | 5 #include "content/browser/renderer_host/media/media_stream_dispatcher_host.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <memory> | 8 #include <memory> |
| 9 #include <queue> | 9 #include <queue> |
| 10 #include <string> | 10 #include <string> |
| (...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 230 }; | 230 }; |
| 231 | 231 |
| 232 class MockMediaStreamUIProxy : public FakeMediaStreamUIProxy { | 232 class MockMediaStreamUIProxy : public FakeMediaStreamUIProxy { |
| 233 public: | 233 public: |
| 234 MOCK_METHOD2( | 234 MOCK_METHOD2( |
| 235 OnStarted, | 235 OnStarted, |
| 236 void(const base::Closure& stop, | 236 void(const base::Closure& stop, |
| 237 const MediaStreamUIProxy::WindowIdCallback& window_id_callback)); | 237 const MediaStreamUIProxy::WindowIdCallback& window_id_callback)); |
| 238 }; | 238 }; |
| 239 | 239 |
| 240 class MockVideoCaptureSystem : public media::VideoCaptureSystem { | 240 class MockVideoCaptureProvider : public VideoCaptureProvider { |
| 241 public: | 241 public: |
| 242 MOCK_METHOD1(GetDeviceInfosAsync, | 242 MOCK_METHOD1(GetDeviceInfosAsync, |
| 243 void(const base::Callback< | 243 void(const base::Callback< |
| 244 void(const std::vector<media::VideoCaptureDeviceInfo>&)>& | 244 void(const std::vector<media::VideoCaptureDeviceInfo>&)>& |
| 245 result_callback)); | 245 result_callback)); |
| 246 | 246 |
| 247 MOCK_METHOD1( | 247 MOCK_METHOD2(CreateBuildableDevice, |
| 248 CreateDevice, | 248 std::unique_ptr<BuildableVideoCaptureDevice>( |
| 249 std::unique_ptr<media::VideoCaptureDevice>(const std::string& device_id)); | 249 const std::string& device_id, |
| 250 MediaStreamType stream_type)); |
| 250 }; | 251 }; |
| 251 | 252 |
| 252 class MediaStreamDispatcherHostTest : public testing::Test { | 253 class MediaStreamDispatcherHostTest : public testing::Test { |
| 253 public: | 254 public: |
| 254 MediaStreamDispatcherHostTest() | 255 MediaStreamDispatcherHostTest() |
| 255 : thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP), | 256 : thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP), |
| 256 old_browser_client_(NULL), | 257 old_browser_client_(NULL), |
| 257 origin_(GURL("https://test.com")) { | 258 origin_(GURL("https://test.com")) { |
| 258 audio_manager_.reset( | 259 audio_manager_.reset( |
| 259 new media::MockAudioManager(base::ThreadTaskRunnerHandle::Get())); | 260 new media::MockAudioManager(base::ThreadTaskRunnerHandle::Get())); |
| 260 audio_system_ = media::AudioSystemImpl::Create(audio_manager_.get()); | 261 audio_system_ = media::AudioSystemImpl::Create(audio_manager_.get()); |
| 261 // Make sure we use fake devices to avoid long delays. | 262 // Make sure we use fake devices to avoid long delays. |
| 262 base::CommandLine::ForCurrentProcess()->AppendSwitch( | 263 base::CommandLine::ForCurrentProcess()->AppendSwitch( |
| 263 switches::kUseFakeDeviceForMediaStream); | 264 switches::kUseFakeDeviceForMediaStream); |
| 264 auto mock_video_capture_system = base::MakeUnique<MockVideoCaptureSystem>(); | 265 auto mock_video_capture_provider = |
| 265 mock_video_capture_system_ = mock_video_capture_system.get(); | 266 base::MakeUnique<MockVideoCaptureProvider>(); |
| 267 mock_video_capture_provider_ = mock_video_capture_provider.get(); |
| 266 // Create our own MediaStreamManager. | 268 // Create our own MediaStreamManager. |
| 267 media_stream_manager_ = base::MakeUnique<MediaStreamManager>( | 269 media_stream_manager_ = base::MakeUnique<MediaStreamManager>( |
| 268 audio_system_.get(), std::move(mock_video_capture_system), | 270 audio_system_.get(), std::move(mock_video_capture_provider)); |
| 269 base::ThreadTaskRunnerHandle::Get()); | |
| 270 | 271 |
| 271 MockResourceContext* mock_resource_context = | 272 MockResourceContext* mock_resource_context = |
| 272 static_cast<MockResourceContext*>( | 273 static_cast<MockResourceContext*>( |
| 273 browser_context_.GetResourceContext()); | 274 browser_context_.GetResourceContext()); |
| 274 | 275 |
| 275 host_ = new MockMediaStreamDispatcherHost( | 276 host_ = new MockMediaStreamDispatcherHost( |
| 276 mock_resource_context->GetMediaDeviceIDSalt(), | 277 mock_resource_context->GetMediaDeviceIDSalt(), |
| 277 base::ThreadTaskRunnerHandle::Get(), media_stream_manager_.get()); | 278 base::ThreadTaskRunnerHandle::Get(), media_stream_manager_.get()); |
| 278 | 279 |
| 279 // Use the fake content client and browser. | 280 // Use the fake content client and browser. |
| 280 content_client_.reset(new TestContentClient()); | 281 content_client_.reset(new TestContentClient()); |
| 281 SetContentClient(content_client_.get()); | 282 SetContentClient(content_client_.get()); |
| 282 old_browser_client_ = SetBrowserClientForTesting(host_.get()); | 283 old_browser_client_ = SetBrowserClientForTesting(host_.get()); |
| 283 | 284 |
| 284 #if defined(OS_CHROMEOS) | 285 #if defined(OS_CHROMEOS) |
| 285 chromeos::CrasAudioHandler::InitializeForTesting(); | 286 chromeos::CrasAudioHandler::InitializeForTesting(); |
| 286 #endif | 287 #endif |
| 287 } | 288 } |
| 288 | 289 |
| 289 ~MediaStreamDispatcherHostTest() override { | 290 ~MediaStreamDispatcherHostTest() override { |
| 290 #if defined(OS_CHROMEOS) | 291 #if defined(OS_CHROMEOS) |
| 291 chromeos::CrasAudioHandler::Shutdown(); | 292 chromeos::CrasAudioHandler::Shutdown(); |
| 292 #endif | 293 #endif |
| 293 } | 294 } |
| 294 | 295 |
| 295 void SetUp() override { | 296 void SetUp() override { |
| 296 stub_video_device_ids_.emplace_back(kRegularVideoDeviceId); | 297 stub_video_device_ids_.emplace_back(kRegularVideoDeviceId); |
| 297 stub_video_device_ids_.emplace_back(kDepthVideoDeviceId); | 298 stub_video_device_ids_.emplace_back(kDepthVideoDeviceId); |
| 298 ON_CALL(*mock_video_capture_system_, GetDeviceInfosAsync(_)) | 299 ON_CALL(*mock_video_capture_provider_, GetDeviceInfosAsync(_)) |
| 299 .WillByDefault(Invoke( | 300 .WillByDefault(Invoke( |
| 300 [this](const base::Callback<void( | 301 [this](const base::Callback<void( |
| 301 const std::vector<media::VideoCaptureDeviceInfo>&)>& | 302 const std::vector<media::VideoCaptureDeviceInfo>&)>& |
| 302 result_callback) { | 303 result_callback) { |
| 303 std::vector<media::VideoCaptureDeviceInfo> result; | 304 std::vector<media::VideoCaptureDeviceInfo> result; |
| 304 for (const auto& device_id : stub_video_device_ids_) { | 305 for (const auto& device_id : stub_video_device_ids_) { |
| 305 media::VideoCaptureDeviceInfo info; | 306 media::VideoCaptureDeviceInfo info; |
| 306 info.descriptor.device_id = device_id; | 307 info.descriptor.device_id = device_id; |
| 307 info.descriptor.capture_api = kStubCaptureApi; | 308 info.descriptor.capture_api = kStubCaptureApi; |
| 308 if (device_id == kDepthVideoDeviceId) { | 309 if (device_id == kDepthVideoDeviceId) { |
| (...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 466 std::unique_ptr<media::AudioManager, media::AudioManagerDeleter> | 467 std::unique_ptr<media::AudioManager, media::AudioManagerDeleter> |
| 467 audio_manager_; | 468 audio_manager_; |
| 468 std::unique_ptr<media::AudioSystem> audio_system_; | 469 std::unique_ptr<media::AudioSystem> audio_system_; |
| 469 MockMediaStreamUIProxy* stream_ui_; | 470 MockMediaStreamUIProxy* stream_ui_; |
| 470 ContentBrowserClient* old_browser_client_; | 471 ContentBrowserClient* old_browser_client_; |
| 471 std::unique_ptr<ContentClient> content_client_; | 472 std::unique_ptr<ContentClient> content_client_; |
| 472 content::TestBrowserContext browser_context_; | 473 content::TestBrowserContext browser_context_; |
| 473 media::AudioDeviceDescriptions audio_device_descriptions_; | 474 media::AudioDeviceDescriptions audio_device_descriptions_; |
| 474 std::vector<std::string> stub_video_device_ids_; | 475 std::vector<std::string> stub_video_device_ids_; |
| 475 url::Origin origin_; | 476 url::Origin origin_; |
| 476 MockVideoCaptureSystem* mock_video_capture_system_; | 477 MockVideoCaptureProvider* mock_video_capture_provider_; |
| 477 }; | 478 }; |
| 478 | 479 |
| 479 TEST_F(MediaStreamDispatcherHostTest, GenerateStreamWithVideoOnly) { | 480 TEST_F(MediaStreamDispatcherHostTest, GenerateStreamWithVideoOnly) { |
| 480 StreamControls controls(false, true); | 481 StreamControls controls(false, true); |
| 481 | 482 |
| 482 SetupFakeUI(true); | 483 SetupFakeUI(true); |
| 483 GenerateStreamAndWaitForResult(kRenderId, kPageRequestId, controls); | 484 GenerateStreamAndWaitForResult(kRenderId, kPageRequestId, controls); |
| 484 | 485 |
| 485 EXPECT_EQ(host_->audio_devices_.size(), 0u); | 486 EXPECT_EQ(host_->audio_devices_.size(), 0u); |
| 486 EXPECT_EQ(host_->video_devices_.size(), 1u); | 487 EXPECT_EQ(host_->video_devices_.size(), 1u); |
| (...skipping 393 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 880 base::RunLoop run_loop; | 881 base::RunLoop run_loop; |
| 881 EXPECT_CALL(*host_.get(), OnDeviceStopped(kRenderId)) | 882 EXPECT_CALL(*host_.get(), OnDeviceStopped(kRenderId)) |
| 882 .WillOnce(testing::InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); | 883 .WillOnce(testing::InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); |
| 883 media_stream_manager_->media_devices_manager()->OnDevicesChanged( | 884 media_stream_manager_->media_devices_manager()->OnDevicesChanged( |
| 884 base::SystemMonitor::DEVTYPE_VIDEO_CAPTURE); | 885 base::SystemMonitor::DEVTYPE_VIDEO_CAPTURE); |
| 885 | 886 |
| 886 run_loop.Run(); | 887 run_loop.Run(); |
| 887 } | 888 } |
| 888 | 889 |
| 889 }; // namespace content | 890 }; // namespace content |
| OLD | NEW |