Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(206)

Side by Side Diff: content/renderer/media/media_stream_video_renderer_sink_unittest.cc

Issue 1737253002: Handle Alpha channel in Canvas capture (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 "base/bind.h" 5 #include "base/bind.h"
6 #include "base/macros.h" 6 #include "base/macros.h"
7 #include "base/run_loop.h" 7 #include "base/run_loop.h"
8 #include "base/strings/utf_string_conversions.h" 8 #include "base/strings/utf_string_conversions.h"
9 #include "content/child/child_process.h" 9 #include "content/child/child_process.h"
10 #include "content/renderer/media/media_stream_video_renderer_sink.h" 10 #include "content/renderer/media/media_stream_video_renderer_sink.h"
(...skipping 21 matching lines...) Expand all
32 static const std::string kTestStreamUrl = "stream_url"; 32 static const std::string kTestStreamUrl = "stream_url";
33 static const std::string kTestVideoTrackId = "video_track_id"; 33 static const std::string kTestVideoTrackId = "video_track_id";
34 34
35 class MediaStreamVideoRendererSinkTest : public testing::Test { 35 class MediaStreamVideoRendererSinkTest : public testing::Test {
36 public: 36 public:
37 MediaStreamVideoRendererSinkTest() { 37 MediaStreamVideoRendererSinkTest() {
38 registry_.Init(kTestStreamUrl); 38 registry_.Init(kTestStreamUrl);
39 registry_.AddVideoTrack(kTestVideoTrackId); 39 registry_.AddVideoTrack(kTestVideoTrackId);
40 40
41 // Extract the Blink Video Track for the MSVRSink. 41 // Extract the Blink Video Track for the MSVRSink.
42 blink::WebVector<blink::WebMediaStreamTrack> video_tracks; 42 registry_.test_stream().videoTracks(video_tracks_);
43 registry_.test_stream().videoTracks(video_tracks); 43 EXPECT_EQ(1u, video_tracks_.size());
44 EXPECT_EQ(1u, video_tracks.size());
45 44
46 media_stream_video_renderer_sink_ = new MediaStreamVideoRendererSink( 45 media_stream_video_renderer_sink_ = new MediaStreamVideoRendererSink(
47 video_tracks[0], 46 video_tracks_[0],
48 base::Bind(&MediaStreamVideoRendererSinkTest::ErrorCallback, 47 base::Bind(&MediaStreamVideoRendererSinkTest::ErrorCallback,
49 base::Unretained(this)), 48 base::Unretained(this)),
50 base::Bind(&MediaStreamVideoRendererSinkTest::RepaintCallback, 49 base::Bind(&MediaStreamVideoRendererSinkTest::RepaintCallback,
51 base::Unretained(this)), 50 base::Unretained(this)),
52 message_loop_.task_runner(), message_loop_.task_runner().get(), 51 message_loop_.task_runner(), message_loop_.task_runner().get(),
53 nullptr /* gpu_factories */); 52 nullptr /* gpu_factories */);
54 53
55 EXPECT_TRUE(IsInStoppedState()); 54 EXPECT_TRUE(IsInStoppedState());
56 } 55 }
57 56
(...skipping 26 matching lines...) Expand all
84 media_stream_video_renderer_sink_->OnVideoFrame(frame, 83 media_stream_video_renderer_sink_->OnVideoFrame(frame,
85 base::TimeTicks::Now()); 84 base::TimeTicks::Now());
86 } 85 }
87 86
88 scoped_refptr<MediaStreamVideoRendererSink> media_stream_video_renderer_sink_; 87 scoped_refptr<MediaStreamVideoRendererSink> media_stream_video_renderer_sink_;
89 88
90 // A ChildProcess and a MessageLoopForUI are both needed to fool the Tracks 89 // A ChildProcess and a MessageLoopForUI are both needed to fool the Tracks
91 // and Sources in |registry_| into believing they are on the right threads. 90 // and Sources in |registry_| into believing they are on the right threads.
92 base::MessageLoopForUI message_loop_; 91 base::MessageLoopForUI message_loop_;
93 const ChildProcess child_process_; 92 const ChildProcess child_process_;
93
94 blink::WebVector<blink::WebMediaStreamTrack> video_tracks_;
94 MockMediaStreamRegistry registry_; 95 MockMediaStreamRegistry registry_;
95 96
96 private: 97 private:
97 DISALLOW_COPY_AND_ASSIGN(MediaStreamVideoRendererSinkTest); 98 DISALLOW_COPY_AND_ASSIGN(MediaStreamVideoRendererSinkTest);
98 }; 99 };
99 100
100 // Checks that the initialization-destruction sequence works fine. 101 // Checks that the initialization-destruction sequence works fine.
101 TEST_F(MediaStreamVideoRendererSinkTest, StartStop) { 102 TEST_F(MediaStreamVideoRendererSinkTest, StartStop) {
102 EXPECT_TRUE(IsInStoppedState()); 103 EXPECT_TRUE(IsInStoppedState());
103 104
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
151 message_loop_.RunUntilIdle(); 152 message_loop_.RunUntilIdle();
152 ASSERT_EQ(1u, frame_ready_cbs_.size()); 153 ASSERT_EQ(1u, frame_ready_cbs_.size());
153 154
154 EXPECT_CALL(*this, RepaintCallback(video_frame)).Times(1); 155 EXPECT_CALL(*this, RepaintCallback(video_frame)).Times(1);
155 frame_ready_cbs_[0].Run(); 156 frame_ready_cbs_[0].Run();
156 message_loop_.RunUntilIdle(); 157 message_loop_.RunUntilIdle();
157 158
158 media_stream_video_renderer_sink_->Stop(); 159 media_stream_video_renderer_sink_->Stop();
159 } 160 }
160 161
162 class MediaStreamVideoRendererSinkTransparencyTest
163 : public MediaStreamVideoRendererSinkTest {
164 public:
165 MediaStreamVideoRendererSinkTransparencyTest() {
166 media_stream_video_renderer_sink_ = new MediaStreamVideoRendererSink(
167 video_tracks_[0],
168 base::Bind(&MediaStreamVideoRendererSinkTest::ErrorCallback,
169 base::Unretained(this)),
170 base::Bind(&MediaStreamVideoRendererSinkTransparencyTest::
171 VerifyTransparentFrame,
172 base::Unretained(this)),
173 message_loop_.task_runner(), message_loop_.task_runner().get(),
174 nullptr /* gpu_factories */);
175 }
176
177 void VerifyTransparentFrame(const scoped_refptr<media::VideoFrame>& frame) {
178 EXPECT_EQ(media::PIXEL_FORMAT_YV12A, frame->format());
179 }
180 };
181
182 TEST_F(MediaStreamVideoRendererSinkTransparencyTest,
183 SendTransparentFrame) {
184 media_stream_video_renderer_sink_->Start();
185
186 InSequence s;
187 const gfx::Size size(10, 10);
mcasas 2016/02/29 23:48:01 mini nit: s/size/kSize/ ?
emircan 2016/03/01 20:07:55 Done.
188 const base::TimeDelta kTimestamp = base::TimeDelta();
189 const scoped_refptr<media::VideoFrame> video_frame =
190 media::VideoFrame::CreateFrame(media::PIXEL_FORMAT_YV12A, size,
191 gfx::Rect(size), size, kTimestamp);
192 OnVideoFrame(video_frame);
193 message_loop_.RunUntilIdle();
194
195 media_stream_video_renderer_sink_->Stop();
196
mcasas 2016/02/29 23:48:00 nit: remove l.196.
emircan 2016/03/01 20:07:55 Done.
197 }
198
161 } // namespace content 199 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698