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 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
225 opened_device_ = device; | 225 opened_device_ = device; |
226 } | 226 } |
227 | 227 |
228 const scoped_refptr<base::SingleThreadTaskRunner> task_runner_; | 228 const scoped_refptr<base::SingleThreadTaskRunner> task_runner_; |
229 IPC::Message* current_ipc_; | 229 IPC::Message* current_ipc_; |
230 std::queue<base::Closure> quit_closures_; | 230 std::queue<base::Closure> quit_closures_; |
231 }; | 231 }; |
232 | 232 |
233 class MockMediaStreamUIProxy : public FakeMediaStreamUIProxy { | 233 class MockMediaStreamUIProxy : public FakeMediaStreamUIProxy { |
234 public: | 234 public: |
235 MOCK_METHOD2( | 235 void OnStarted( |
236 OnStarted, | 236 base::OnceClosure stop, |
237 void(const base::Closure& stop, | 237 MediaStreamUIProxy::WindowIdCallback window_id_callback) override { |
238 const MediaStreamUIProxy::WindowIdCallback& window_id_callback)); | 238 // gmock cannot handle move-only types: |
| 239 MockOnStarted(base::AdaptCallbackForRepeating(std::move(stop))); |
| 240 } |
| 241 |
| 242 MOCK_METHOD1(MockOnStarted, void(base::Closure stop)); |
239 }; | 243 }; |
240 | 244 |
241 class MediaStreamDispatcherHostTest : public testing::Test { | 245 class MediaStreamDispatcherHostTest : public testing::Test { |
242 public: | 246 public: |
243 MediaStreamDispatcherHostTest() | 247 MediaStreamDispatcherHostTest() |
244 : thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP), | 248 : thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP), |
245 old_browser_client_(NULL), | 249 old_browser_client_(NULL), |
246 origin_(GURL("https://test.com")) { | 250 origin_(GURL("https://test.com")) { |
247 audio_manager_.reset( | 251 audio_manager_.reset( |
248 new media::MockAudioManager(base::ThreadTaskRunnerHandle::Get())); | 252 new media::MockAudioManager(base::ThreadTaskRunnerHandle::Get())); |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
316 | 320 |
317 ASSERT_GT(audio_device_descriptions_.size(), 0u); | 321 ASSERT_GT(audio_device_descriptions_.size(), 0u); |
318 } | 322 } |
319 | 323 |
320 void TearDown() override { host_->OnChannelClosing(); } | 324 void TearDown() override { host_->OnChannelClosing(); } |
321 | 325 |
322 protected: | 326 protected: |
323 virtual void SetupFakeUI(bool expect_started) { | 327 virtual void SetupFakeUI(bool expect_started) { |
324 stream_ui_ = new MockMediaStreamUIProxy(); | 328 stream_ui_ = new MockMediaStreamUIProxy(); |
325 if (expect_started) { | 329 if (expect_started) { |
326 EXPECT_CALL(*stream_ui_, OnStarted(_, _)); | 330 EXPECT_CALL(*stream_ui_, MockOnStarted(_)); |
327 } | 331 } |
328 media_stream_manager_->UseFakeUIForTests( | 332 media_stream_manager_->UseFakeUIForTests( |
329 std::unique_ptr<FakeMediaStreamUIProxy>(stream_ui_)); | 333 std::unique_ptr<FakeMediaStreamUIProxy>(stream_ui_)); |
330 } | 334 } |
331 | 335 |
332 void GenerateStreamAndWaitForResult(int render_frame_id, | 336 void GenerateStreamAndWaitForResult(int render_frame_id, |
333 int page_request_id, | 337 int page_request_id, |
334 const StreamControls& controls) { | 338 const StreamControls& controls) { |
335 base::RunLoop run_loop; | 339 base::RunLoop run_loop; |
336 int expected_audio_array_size = | 340 int expected_audio_array_size = |
(...skipping 486 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
823 host_->OnChannelClosing(); | 827 host_->OnChannelClosing(); |
824 base::RunLoop().RunUntilIdle(); | 828 base::RunLoop().RunUntilIdle(); |
825 } | 829 } |
826 | 830 |
827 TEST_F(MediaStreamDispatcherHostTest, CloseFromUI) { | 831 TEST_F(MediaStreamDispatcherHostTest, CloseFromUI) { |
828 StreamControls controls(false, true); | 832 StreamControls controls(false, true); |
829 | 833 |
830 base::Closure close_callback; | 834 base::Closure close_callback; |
831 std::unique_ptr<MockMediaStreamUIProxy> stream_ui( | 835 std::unique_ptr<MockMediaStreamUIProxy> stream_ui( |
832 new MockMediaStreamUIProxy()); | 836 new MockMediaStreamUIProxy()); |
833 EXPECT_CALL(*stream_ui, OnStarted(_, _)) | 837 EXPECT_CALL(*stream_ui, MockOnStarted(_)) |
834 .WillOnce(SaveArg<0>(&close_callback)); | 838 .WillOnce(SaveArg<0>(&close_callback)); |
835 media_stream_manager_->UseFakeUIForTests(std::move(stream_ui)); | 839 media_stream_manager_->UseFakeUIForTests(std::move(stream_ui)); |
836 | 840 |
837 GenerateStreamAndWaitForResult(kRenderId, kPageRequestId, controls); | 841 GenerateStreamAndWaitForResult(kRenderId, kPageRequestId, controls); |
838 | 842 |
839 EXPECT_EQ(host_->audio_devices_.size(), 0u); | 843 EXPECT_EQ(host_->audio_devices_.size(), 0u); |
840 EXPECT_EQ(host_->video_devices_.size(), 1u); | 844 EXPECT_EQ(host_->video_devices_.size(), 1u); |
841 | 845 |
842 ASSERT_FALSE(close_callback.is_null()); | 846 ASSERT_FALSE(close_callback.is_null()); |
843 EXPECT_CALL(*host_.get(), OnDeviceStopped(kRenderId)); | 847 EXPECT_CALL(*host_.get(), OnDeviceStopped(kRenderId)); |
(...skipping 15 matching lines...) Expand all Loading... |
859 base::RunLoop run_loop; | 863 base::RunLoop run_loop; |
860 EXPECT_CALL(*host_.get(), OnDeviceStopped(kRenderId)) | 864 EXPECT_CALL(*host_.get(), OnDeviceStopped(kRenderId)) |
861 .WillOnce(testing::InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); | 865 .WillOnce(testing::InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); |
862 media_stream_manager_->media_devices_manager()->OnDevicesChanged( | 866 media_stream_manager_->media_devices_manager()->OnDevicesChanged( |
863 base::SystemMonitor::DEVTYPE_VIDEO_CAPTURE); | 867 base::SystemMonitor::DEVTYPE_VIDEO_CAPTURE); |
864 | 868 |
865 run_loop.Run(); | 869 run_loop.Run(); |
866 } | 870 } |
867 | 871 |
868 }; // namespace content | 872 }; // namespace content |
OLD | NEW |