OLD | NEW |
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 <stddef.h> | 5 #include <stddef.h> |
6 | 6 |
7 #include "content/public/renderer/media_stream_renderer_factory.h" | 7 #include "content/public/renderer/media_stream_renderer_factory.h" |
8 #include "content/renderer/media/webmediaplayer_ms.h" | 8 #include "content/renderer/media/webmediaplayer_ms.h" |
9 #include "content/renderer/media/webmediaplayer_ms_compositor.h" | 9 #include "content/renderer/media/webmediaplayer_ms_compositor.h" |
10 #include "content/renderer/render_frame_impl.h" | 10 #include "content/renderer/render_frame_impl.h" |
11 #include "media/base/test_helpers.h" | 11 #include "media/base/test_helpers.h" |
12 #include "media/base/video_frame.h" | 12 #include "media/base/video_frame.h" |
| 13 #include "third_party/WebKit/public/platform/WebMediaElementSource.h" |
13 #include "third_party/WebKit/public/platform/WebMediaPlayer.h" | 14 #include "third_party/WebKit/public/platform/WebMediaPlayer.h" |
14 #include "third_party/WebKit/public/platform/WebMediaPlayerClient.h" | 15 #include "third_party/WebKit/public/platform/WebMediaPlayerClient.h" |
15 | 16 |
16 namespace content { | 17 namespace content { |
17 | 18 |
18 enum class FrameType { | 19 enum class FrameType { |
19 NORMAL_FRAME = 0, | 20 NORMAL_FRAME = 0, |
20 BROKEN_FRAME = -1, | 21 BROKEN_FRAME = -1, |
21 TEST_BRAKE = -2, // Signal to pause message loop. | 22 TEST_BRAKE = -2, // Signal to pause message loop. |
22 MIN_TYPE = TEST_BRAKE | 23 MIN_TYPE = TEST_BRAKE |
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
266 // WebMediaPlayerMS::load(). | 267 // WebMediaPlayerMS::load(). |
267 class MockRenderFactory : public MediaStreamRendererFactory { | 268 class MockRenderFactory : public MediaStreamRendererFactory { |
268 public: | 269 public: |
269 MockRenderFactory( | 270 MockRenderFactory( |
270 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, | 271 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, |
271 ReusableMessageLoopEvent* message_loop_controller) | 272 ReusableMessageLoopEvent* message_loop_controller) |
272 : task_runner_(task_runner), | 273 : task_runner_(task_runner), |
273 message_loop_controller_(message_loop_controller) {} | 274 message_loop_controller_(message_loop_controller) {} |
274 | 275 |
275 scoped_refptr<VideoFrameProvider> GetVideoFrameProvider( | 276 scoped_refptr<VideoFrameProvider> GetVideoFrameProvider( |
276 const GURL& url, | 277 const blink::WebMediaStream& web_stream, |
277 const base::Closure& error_cb, | 278 const base::Closure& error_cb, |
278 const VideoFrameProvider::RepaintCB& repaint_cb, | 279 const VideoFrameProvider::RepaintCB& repaint_cb, |
279 const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner, | 280 const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner, |
280 const scoped_refptr<base::TaskRunner>& worker_task_runner, | 281 const scoped_refptr<base::TaskRunner>& worker_task_runner, |
281 media::GpuVideoAcceleratorFactories* gpu_factories) override; | 282 media::GpuVideoAcceleratorFactories* gpu_factories) override; |
282 | 283 |
283 MockVideoFrameProvider* provider() { | 284 MockVideoFrameProvider* provider() { |
284 return static_cast<MockVideoFrameProvider*>(provider_.get()); | 285 return static_cast<MockVideoFrameProvider*>(provider_.get()); |
285 } | 286 } |
286 | 287 |
287 scoped_refptr<MediaStreamAudioRenderer> GetAudioRenderer( | 288 scoped_refptr<MediaStreamAudioRenderer> GetAudioRenderer( |
288 const GURL& url, | 289 const blink::WebMediaStream& web_stream, |
289 int render_frame_id, | 290 int render_frame_id, |
290 const std::string& device_id, | 291 const std::string& device_id, |
291 const url::Origin& security_origin) override { | 292 const url::Origin& security_origin) override { |
292 return nullptr; | 293 return nullptr; |
293 } | 294 } |
294 | 295 |
295 private: | 296 private: |
296 const scoped_refptr<base::SingleThreadTaskRunner> task_runner_; | 297 const scoped_refptr<base::SingleThreadTaskRunner> task_runner_; |
297 scoped_refptr<VideoFrameProvider> provider_; | 298 scoped_refptr<VideoFrameProvider> provider_; |
298 ReusableMessageLoopEvent* const message_loop_controller_; | 299 ReusableMessageLoopEvent* const message_loop_controller_; |
299 }; | 300 }; |
300 | 301 |
301 scoped_refptr<VideoFrameProvider> MockRenderFactory::GetVideoFrameProvider( | 302 scoped_refptr<VideoFrameProvider> MockRenderFactory::GetVideoFrameProvider( |
302 const GURL& url, | 303 const blink::WebMediaStream& web_stream, |
303 const base::Closure& error_cb, | 304 const base::Closure& error_cb, |
304 const VideoFrameProvider::RepaintCB& repaint_cb, | 305 const VideoFrameProvider::RepaintCB& repaint_cb, |
305 const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner, | 306 const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner, |
306 const scoped_refptr<base::TaskRunner>& worker_task_runner, | 307 const scoped_refptr<base::TaskRunner>& worker_task_runner, |
307 media::GpuVideoAcceleratorFactories* gpu_factories) { | 308 media::GpuVideoAcceleratorFactories* gpu_factories) { |
308 provider_ = new MockVideoFrameProvider(task_runner_, message_loop_controller_, | 309 provider_ = new MockVideoFrameProvider(task_runner_, message_loop_controller_, |
309 error_cb, repaint_cb); | 310 error_cb, repaint_cb); |
310 | 311 |
311 return provider_; | 312 return provider_; |
312 } | 313 } |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
428 | 429 |
429 MockVideoFrameProvider* WebMediaPlayerMSTest::LoadAndGetFrameProvider( | 430 MockVideoFrameProvider* WebMediaPlayerMSTest::LoadAndGetFrameProvider( |
430 bool algorithm_enabled) { | 431 bool algorithm_enabled) { |
431 EXPECT_FALSE(!!render_factory_->provider()) << "There should not be a " | 432 EXPECT_FALSE(!!render_factory_->provider()) << "There should not be a " |
432 "FrameProvider yet."; | 433 "FrameProvider yet."; |
433 | 434 |
434 EXPECT_CALL( | 435 EXPECT_CALL( |
435 *this, DoNetworkStateChanged(blink::WebMediaPlayer::NetworkStateLoading)); | 436 *this, DoNetworkStateChanged(blink::WebMediaPlayer::NetworkStateLoading)); |
436 EXPECT_CALL( | 437 EXPECT_CALL( |
437 *this, DoReadyStateChanged(blink::WebMediaPlayer::ReadyStateHaveNothing)); | 438 *this, DoReadyStateChanged(blink::WebMediaPlayer::ReadyStateHaveNothing)); |
438 player_.load(blink::WebMediaPlayer::LoadTypeURL, blink::WebURL(), | 439 player_.load(blink::WebMediaPlayer::LoadTypeURL, |
| 440 blink::WebMediaElementSource(), |
439 blink::WebMediaPlayer::CORSModeUnspecified); | 441 blink::WebMediaPlayer::CORSModeUnspecified); |
440 compositor_ = player_.compositor_.get(); | 442 compositor_ = player_.compositor_.get(); |
441 EXPECT_TRUE(!!compositor_); | 443 EXPECT_TRUE(!!compositor_); |
442 compositor_->SetAlgorithmEnabledForTesting(algorithm_enabled); | 444 compositor_->SetAlgorithmEnabledForTesting(algorithm_enabled); |
443 | 445 |
444 MockVideoFrameProvider* const provider = render_factory_->provider(); | 446 MockVideoFrameProvider* const provider = render_factory_->provider(); |
445 EXPECT_TRUE(!!provider); | 447 EXPECT_TRUE(!!provider); |
446 EXPECT_TRUE(provider->Started()); | 448 EXPECT_TRUE(provider->Started()); |
447 | 449 |
448 testing::Mock::VerifyAndClearExpectations(this); | 450 testing::Mock::VerifyAndClearExpectations(this); |
(...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
747 EXPECT_TRUE(player_.paused()); | 749 EXPECT_TRUE(player_.paused()); |
748 | 750 |
749 // OnShown() should restart after a forced suspension. | 751 // OnShown() should restart after a forced suspension. |
750 player_.OnShown(); | 752 player_.OnShown(); |
751 EXPECT_FALSE(player_.paused()); | 753 EXPECT_FALSE(player_.paused()); |
752 EXPECT_CALL(*this, DoSetWebLayer(false)); | 754 EXPECT_CALL(*this, DoSetWebLayer(false)); |
753 } | 755 } |
754 #endif | 756 #endif |
755 | 757 |
756 } // namespace content | 758 } // namespace content |
OLD | NEW |