Index: trunk/src/content/renderer/media/webrtc/media_stream_remote_video_source_unittest.cc |
=================================================================== |
--- trunk/src/content/renderer/media/webrtc/media_stream_remote_video_source_unittest.cc (revision 262817) |
+++ trunk/src/content/renderer/media/webrtc/media_stream_remote_video_source_unittest.cc (working copy) |
@@ -1,160 +0,0 @@ |
-// Copyright 2014 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "base/strings/utf_string_conversions.h" |
-#include "content/public/renderer/media_stream_video_sink.h" |
-#include "content/renderer/media/media_stream_video_track.h" |
-#include "content/renderer/media/mock_media_stream_dependency_factory.h" |
-#include "content/renderer/media/webrtc/media_stream_remote_video_source.h" |
-#include "media/base/video_frame.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
-#include "third_party/libjingle/source/talk/media/webrtc/webrtcvideoframe.h" |
- |
-namespace content { |
- |
-class MockVideoSink : public MediaStreamVideoSink { |
- public: |
- MockVideoSink() |
- : number_of_frames_(0), |
- state_(blink::WebMediaStreamSource::ReadyStateLive) { |
- } |
- |
- virtual void OnVideoFrame( |
- const scoped_refptr<media::VideoFrame>& frame) OVERRIDE { |
- ++number_of_frames_; |
- } |
- |
- virtual void OnReadyStateChanged( |
- blink::WebMediaStreamSource::ReadyState state) OVERRIDE { |
- state_ = state; |
- } |
- |
- int number_of_frames() const { return number_of_frames_; } |
- blink::WebMediaStreamSource::ReadyState state() const { return state_; } |
- |
- private: |
- int number_of_frames_; |
- blink::WebMediaStreamSource::ReadyState state_; |
-}; |
- |
-class MediaStreamRemoteVideoSourceUnderTest |
- : public MediaStreamRemoteVideoSource { |
- public: |
- MediaStreamRemoteVideoSourceUnderTest(webrtc::VideoTrackInterface* track) |
- : MediaStreamRemoteVideoSource(track) { |
- } |
- using MediaStreamRemoteVideoSource::RenderFrame; |
-}; |
- |
-class MediaStreamRemoteVideoSourceTest |
- : public ::testing::Test { |
- public: |
- MediaStreamRemoteVideoSourceTest() |
- : mock_factory_(new MockMediaStreamDependencyFactory()), |
- webrtc_video_track_( |
- mock_factory_->CreateLocalVideoTrack( |
- "test", |
- static_cast<cricket::VideoCapturer*>(NULL))), |
- remote_source_( |
- new MediaStreamRemoteVideoSourceUnderTest(webrtc_video_track_)), |
- number_of_successful_constraints_applied_(0), |
- number_of_failed_constraints_applied_(0) { |
- webkit_source_.initialize(base::UTF8ToUTF16("dummy_source_id"), |
- blink::WebMediaStreamSource::TypeVideo, |
- base::UTF8ToUTF16("dummy_source_name")); |
- webkit_source_.setExtraData(remote_source_); |
- } |
- virtual ~MediaStreamRemoteVideoSourceTest() {} |
- |
- MediaStreamRemoteVideoSourceUnderTest* source() { |
- return remote_source_; |
- } |
- |
- MediaStreamVideoTrack* CreateTrack() { |
- bool enabled = true; |
- blink::WebMediaConstraints constraints; |
- constraints.initialize(); |
- MediaStreamDependencyFactory* factory = NULL; |
- return new MediaStreamVideoTrack( |
- source(), |
- constraints, |
- base::Bind( |
- &MediaStreamRemoteVideoSourceTest::OnConstraintsApplied, |
- base::Unretained(this)), |
- enabled, factory); |
- } |
- |
- int NumberOfSuccessConstraintsCallbacks() const { |
- return number_of_successful_constraints_applied_; |
- } |
- |
- int NumberOfFailedConstraintsCallbacks() const { |
- return number_of_failed_constraints_applied_; |
- } |
- |
- void StopWebRtcTrack() { |
- static_cast<MockWebRtcVideoTrack*>(webrtc_video_track_.get())->set_state( |
- webrtc::MediaStreamTrackInterface::kEnded); |
- } |
- |
- base::MessageLoop* message_loop() { return &message_loop_; } |
- |
- const blink::WebMediaStreamSource& webkit_source() const { |
- return webkit_source_; |
- } |
- |
- private: |
- void OnConstraintsApplied(MediaStreamSource* source, bool success) { |
- ASSERT_EQ(source, remote_source_); |
- if (success) |
- ++number_of_successful_constraints_applied_; |
- else |
- ++number_of_failed_constraints_applied_; |
- } |
- |
- base::MessageLoop message_loop_; |
- scoped_ptr<MockMediaStreamDependencyFactory> mock_factory_; |
- scoped_refptr<webrtc::VideoTrackInterface> webrtc_video_track_; |
- // |remote_source_| is owned by |webkit_source_|. |
- MediaStreamRemoteVideoSourceUnderTest* remote_source_; |
- blink::WebMediaStreamSource webkit_source_; |
- int number_of_successful_constraints_applied_; |
- int number_of_failed_constraints_applied_; |
-}; |
- |
-TEST_F(MediaStreamRemoteVideoSourceTest, StartTrack) { |
- scoped_ptr<MediaStreamVideoTrack> track(CreateTrack()); |
- EXPECT_EQ(0, NumberOfSuccessConstraintsCallbacks()); |
- |
- MockVideoSink sink; |
- track->AddSink(&sink); |
- |
- cricket::WebRtcVideoFrame webrtc_frame; |
- webrtc_frame.InitToBlack(320, 240, 1, 1, 0, 1); |
- source()->RenderFrame(&webrtc_frame); |
- message_loop()->RunUntilIdle(); |
- |
- EXPECT_EQ(1, NumberOfSuccessConstraintsCallbacks()); |
- EXPECT_EQ(1, sink.number_of_frames()); |
- track->RemoveSink(&sink); |
-} |
- |
-TEST_F(MediaStreamRemoteVideoSourceTest, RemoteTrackStop) { |
- scoped_ptr<MediaStreamVideoTrack> track(CreateTrack()); |
- |
- MockVideoSink sink; |
- track->AddSink(&sink); |
- |
- EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateLive, sink.state()); |
- EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateLive, |
- webkit_source().readyState()); |
- StopWebRtcTrack(); |
- EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateEnded, |
- webkit_source().readyState()); |
- EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateEnded, sink.state()); |
- |
- track->RemoveSink(&sink); |
-} |
- |
-} // namespace content |