Index: content/renderer/media/media_stream_video_track_unittest.cc |
diff --git a/content/renderer/media/media_stream_video_track_unittest.cc b/content/renderer/media/media_stream_video_track_unittest.cc |
index f071e08e7be8aefacc1e2a3d170d7ad882897a46..7e6bb3b1bd29b3d2698539de1b266be7958b3230 100644 |
--- a/content/renderer/media/media_stream_video_track_unittest.cc |
+++ b/content/renderer/media/media_stream_video_track_unittest.cc |
@@ -10,8 +10,10 @@ |
#include "base/message_loop/message_loop.h" |
#include "base/run_loop.h" |
#include "base/strings/utf_string_conversions.h" |
+#include "base/test/scoped_feature_list.h" |
#include "base/threading/thread_checker_impl.h" |
#include "content/child/child_process.h" |
+#include "content/public/common/content_features.h" |
#include "content/renderer/media/media_stream_video_track.h" |
#include "content/renderer/media/mock_media_stream_video_sink.h" |
#include "content/renderer/media/mock_media_stream_video_source.h" |
@@ -23,6 +25,8 @@ namespace content { |
const uint8_t kBlackValue = 0x00; |
const uint8_t kColorValue = 0xAB; |
+const int kMockSourceWidth = 640; |
+const int kMockSourceHeight = 480; |
ACTION_P(RunClosure, closure) { |
closure.Run(); |
@@ -32,14 +36,8 @@ class MediaStreamVideoTrackTest : public ::testing::Test { |
public: |
MediaStreamVideoTrackTest() |
: child_process_(new ChildProcess()), |
- mock_source_(new MockMediaStreamVideoSource(false)), |
- source_started_(false) { |
- blink_source_.initialize(blink::WebString::fromASCII("dummy_source_id"), |
- blink::WebMediaStreamSource::TypeVideo, |
- blink::WebString::fromASCII("dummy_source_name"), |
- false /* remote */); |
- blink_source_.setExtraData(mock_source_); |
- } |
+ mock_source_(nullptr), |
+ source_started_(false) {} |
~MediaStreamVideoTrackTest() override {} |
@@ -66,15 +64,27 @@ class MediaStreamVideoTrackTest : public ::testing::Test { |
return child_process_->io_message_loop(); |
} |
+ void InitializeSource() { |
+ blink_source_.reset(); |
+ mock_source_ = IsOldVideoConstraints() |
+ ? new MockMediaStreamVideoSource(false) |
+ : new MockMediaStreamVideoSource( |
+ media::VideoCaptureFormat( |
+ gfx::Size(kMockSourceWidth, kMockSourceHeight), |
+ 30.0, media::PIXEL_FORMAT_I420), |
+ false); |
+ blink_source_.initialize(blink::WebString::fromASCII("dummy_source_id"), |
+ blink::WebMediaStreamSource::TypeVideo, |
+ blink::WebString::fromASCII("dummy_source_name"), |
+ false /* remote */); |
+ blink_source_.setExtraData(mock_source_); |
+ } |
+ |
// Create a track that's associated with |mock_source_|. |
blink::WebMediaStreamTrack CreateTrack() { |
- blink::WebMediaConstraints constraints; |
- constraints.initialize(); |
const bool enabled = true; |
- blink::WebMediaStreamTrack track = |
- MediaStreamVideoTrack::CreateVideoTrack( |
- mock_source_, constraints, |
- MediaStreamSource::ConstraintsCallback(), enabled); |
+ blink::WebMediaStreamTrack track = MediaStreamVideoTrack::CreateVideoTrack( |
+ mock_source_, MediaStreamSource::ConstraintsCallback(), enabled); |
if (!source_started_) { |
mock_source_->StartMockedSource(); |
source_started_ = true; |
@@ -84,7 +94,13 @@ class MediaStreamVideoTrackTest : public ::testing::Test { |
void UpdateVideoSourceToRespondToRequestRefreshFrame() { |
blink_source_.reset(); |
- mock_source_ = new MockMediaStreamVideoSource(false, true); |
+ mock_source_ = IsOldVideoConstraints() |
+ ? new MockMediaStreamVideoSource(false, true) |
+ : new MockMediaStreamVideoSource( |
+ media::VideoCaptureFormat( |
+ gfx::Size(kMockSourceWidth, kMockSourceHeight), |
+ 30.0, media::PIXEL_FORMAT_I420), |
+ true); |
blink_source_.initialize(blink::WebString::fromASCII("dummy_source_id"), |
blink::WebMediaStreamSource::TypeVideo, |
blink::WebString::fromASCII("dummy_source_name"), |
@@ -107,6 +123,7 @@ class MediaStreamVideoTrackTest : public ::testing::Test { |
}; |
TEST_F(MediaStreamVideoTrackTest, AddAndRemoveSink) { |
+ InitializeSource(); |
MockMediaStreamVideoSink sink; |
blink::WebMediaStreamTrack track = CreateTrack(); |
sink.ConnectToTrack(track); |
@@ -155,6 +172,7 @@ void CheckThreadVideoFrameReceiver( |
// Checks that the callback given to the track is reset on the right thread. |
TEST_F(MediaStreamVideoTrackTest, ResetCallbackOnThread) { |
+ InitializeSource(); |
MockMediaStreamVideoSink sink; |
blink::WebMediaStreamTrack track = CreateTrack(); |
@@ -171,6 +189,7 @@ TEST_F(MediaStreamVideoTrackTest, ResetCallbackOnThread) { |
} |
TEST_F(MediaStreamVideoTrackTest, SetEnabled) { |
+ InitializeSource(); |
MockMediaStreamVideoSink sink; |
blink::WebMediaStreamTrack track = CreateTrack(); |
sink.ConnectToTrack(track); |
@@ -198,6 +217,7 @@ TEST_F(MediaStreamVideoTrackTest, SetEnabled) { |
} |
TEST_F(MediaStreamVideoTrackTest, SourceStopped) { |
+ InitializeSource(); |
MockMediaStreamVideoSink sink; |
blink::WebMediaStreamTrack track = CreateTrack(); |
sink.ConnectToTrack(track); |
@@ -209,6 +229,7 @@ TEST_F(MediaStreamVideoTrackTest, SourceStopped) { |
} |
TEST_F(MediaStreamVideoTrackTest, StopLastTrack) { |
+ InitializeSource(); |
MockMediaStreamVideoSink sink1; |
blink::WebMediaStreamTrack track1 = CreateTrack(); |
sink1.ConnectToTrack(track1); |
@@ -239,7 +260,32 @@ TEST_F(MediaStreamVideoTrackTest, StopLastTrack) { |
sink2.DisconnectFromTrack(); |
} |
+// TODO(guidou): Remove this test. http://crbug.com/706408 |
+TEST_F(MediaStreamVideoTrackTest, |
+ CheckTrackRequestsFrameOldConstraintsOldConstraints) { |
+ base::test::ScopedFeatureList scoped_feature_list; |
+ scoped_feature_list.InitAndEnableFeature( |
+ features::kMediaStreamOldVideoConstraints); |
+ UpdateVideoSourceToRespondToRequestRefreshFrame(); |
+ blink::WebMediaStreamTrack track = CreateTrack(); |
+ |
+ // Add sink and expect to get a frame. |
+ MockMediaStreamVideoSink sink; |
+ base::RunLoop run_loop; |
+ base::Closure quit_closure = run_loop.QuitClosure(); |
+ EXPECT_CALL(sink, OnVideoFrame()).WillOnce(RunClosure(quit_closure)); |
+ sink.ConnectToTrack(track); |
+ run_loop.Run(); |
+ EXPECT_EQ(1, sink.number_of_frames()); |
+ |
+ sink.DisconnectFromTrack(); |
+} |
+ |
TEST_F(MediaStreamVideoTrackTest, CheckTrackRequestsFrame) { |
+ base::test::ScopedFeatureList scoped_feature_list; |
+ scoped_feature_list.InitAndDisableFeature( |
+ features::kMediaStreamOldVideoConstraints); |
+ InitializeSource(); |
UpdateVideoSourceToRespondToRequestRefreshFrame(); |
blink::WebMediaStreamTrack track = CreateTrack(); |
@@ -255,7 +301,29 @@ TEST_F(MediaStreamVideoTrackTest, CheckTrackRequestsFrame) { |
sink.DisconnectFromTrack(); |
} |
+// TODO(guidou): Remove this test. http://crbug.com/706408 |
+TEST_F(MediaStreamVideoTrackTest, GetSettingsOldConstraints) { |
+ base::test::ScopedFeatureList scoped_feature_list; |
+ scoped_feature_list.InitAndEnableFeature( |
+ features::kMediaStreamOldVideoConstraints); |
+ InitializeSource(); |
+ blink::WebMediaStreamTrack track = CreateTrack(); |
+ MediaStreamVideoTrack* const native_track = |
+ MediaStreamVideoTrack::GetVideoTrack(track); |
+ blink::WebMediaStreamTrack::Settings settings; |
+ native_track->getSettings(settings); |
+ // These values come straight from the mock video track implementation. |
+ EXPECT_EQ(640, settings.width); |
+ EXPECT_EQ(480, settings.height); |
+ EXPECT_EQ(30.0, settings.frameRate); |
+ EXPECT_EQ(blink::WebMediaStreamTrack::FacingMode::None, settings.facingMode); |
+} |
+ |
TEST_F(MediaStreamVideoTrackTest, GetSettings) { |
+ base::test::ScopedFeatureList scoped_feature_list; |
+ scoped_feature_list.InitAndDisableFeature( |
+ features::kMediaStreamOldVideoConstraints); |
+ InitializeSource(); |
blink::WebMediaStreamTrack track = CreateTrack(); |
MediaStreamVideoTrack* const native_track = |
MediaStreamVideoTrack::GetVideoTrack(track); |