Index: media/filters/skcanvas_video_renderer_unittest.cc |
diff --git a/media/filters/skcanvas_video_renderer_unittest.cc b/media/filters/skcanvas_video_renderer_unittest.cc |
index 2a8b174837102a43f7ae22434b4b922db02e05c9..358ce0ab1e03184013e171da84fbd76bf80c0850 100644 |
--- a/media/filters/skcanvas_video_renderer_unittest.cc |
+++ b/media/filters/skcanvas_video_renderer_unittest.cc |
@@ -56,8 +56,11 @@ class SkCanvasVideoRendererTest : public testing::Test { |
void PaintRotated(VideoFrame* video_frame, |
SkCanvas* canvas, |
Color color, |
+ SkXfermode::Mode mode, |
VideoRotation video_rotation); |
+ void Copy(VideoFrame* video_frame, SkCanvas* canvas); |
+ |
// Getters for various frame sizes. |
VideoFrame* natural_frame() { return natural_frame_.get(); } |
VideoFrame* larger_frame() { return larger_frame_.get(); } |
@@ -189,18 +192,25 @@ SkCanvasVideoRendererTest::SkCanvasVideoRendererTest() |
SkCanvasVideoRendererTest::~SkCanvasVideoRendererTest() {} |
void SkCanvasVideoRendererTest::PaintWithoutFrame(SkCanvas* canvas) { |
- renderer_.Paint(NULL, canvas, kNaturalRect, 0xFF, VIDEO_ROTATION_0); |
+ renderer_.Paint(NULL, |
+ canvas, |
+ kNaturalRect, |
+ 0xFF, |
+ SkXfermode::kSrcOver_Mode, |
+ VIDEO_ROTATION_0); |
} |
void SkCanvasVideoRendererTest::Paint(VideoFrame* video_frame, |
SkCanvas* canvas, |
Color color) { |
- PaintRotated(video_frame, canvas, color, VIDEO_ROTATION_0); |
+ PaintRotated( |
+ video_frame, canvas, color, SkXfermode::kSrcOver_Mode, VIDEO_ROTATION_0); |
} |
void SkCanvasVideoRendererTest::PaintRotated(VideoFrame* video_frame, |
SkCanvas* canvas, |
Color color, |
+ SkXfermode::Mode mode, |
VideoRotation video_rotation) { |
switch (color) { |
case kNone: |
@@ -215,7 +225,13 @@ void SkCanvasVideoRendererTest::PaintRotated(VideoFrame* video_frame, |
media::FillYUV(video_frame, 29, 255, 107); |
break; |
} |
- renderer_.Paint(video_frame, canvas, kNaturalRect, 0xFF, video_rotation); |
+ renderer_.Paint( |
+ video_frame, canvas, kNaturalRect, 0xFF, mode, video_rotation); |
+} |
+ |
+void SkCanvasVideoRendererTest::Copy(VideoFrame* video_frame, |
+ SkCanvas* canvas) { |
+ renderer_.Copy(video_frame, canvas); |
} |
TEST_F(SkCanvasVideoRendererTest, NoFrame) { |
@@ -226,11 +242,31 @@ TEST_F(SkCanvasVideoRendererTest, NoFrame) { |
} |
TEST_F(SkCanvasVideoRendererTest, TransparentFrame) { |
- // Test that we don't blend with existing canvas contents. |
FillCanvas(target_canvas(), SK_ColorRED); |
- Paint(VideoFrame::CreateTransparentFrame(gfx::Size(kWidth, kHeight)), |
- target_canvas(), |
- kNone); |
+ PaintRotated(VideoFrame::CreateTransparentFrame(gfx::Size(kWidth, kHeight)), |
+ target_canvas(), |
+ kNone, |
+ SkXfermode::kSrcOver_Mode, |
+ VIDEO_ROTATION_0); |
+ EXPECT_EQ(static_cast<SkColor>(SK_ColorRED), GetColor(target_canvas())); |
+} |
+ |
+TEST_F(SkCanvasVideoRendererTest, TransparentFrameSrcMode) { |
+ FillCanvas(target_canvas(), SK_ColorRED); |
+ // SRC mode completely overwrites the buffer. |
+ PaintRotated(VideoFrame::CreateTransparentFrame(gfx::Size(kWidth, kHeight)), |
+ target_canvas(), |
+ kNone, |
+ SkXfermode::kSrc_Mode, |
+ VIDEO_ROTATION_0); |
+ EXPECT_EQ(static_cast<SkColor>(SK_ColorTRANSPARENT), |
+ GetColor(target_canvas())); |
+} |
+ |
+TEST_F(SkCanvasVideoRendererTest, CopyTransparentFrame) { |
+ FillCanvas(target_canvas(), SK_ColorRED); |
+ Copy(VideoFrame::CreateTransparentFrame(gfx::Size(kWidth, kHeight)), |
+ target_canvas()); |
EXPECT_EQ(static_cast<SkColor>(SK_ColorTRANSPARENT), |
GetColor(target_canvas())); |
} |
@@ -325,7 +361,11 @@ TEST_F(SkCanvasVideoRendererTest, CroppedFrame_NoScaling) { |
TEST_F(SkCanvasVideoRendererTest, Video_Rotation_90) { |
SkCanvas canvas(AllocBitmap(kWidth, kHeight)); |
const gfx::Rect crop_rect = cropped_frame()->visible_rect(); |
- PaintRotated(cropped_frame(), &canvas, kNone, VIDEO_ROTATION_90); |
+ PaintRotated(cropped_frame(), |
+ &canvas, |
+ kNone, |
+ SkXfermode::kSrcOver_Mode, |
+ VIDEO_ROTATION_90); |
// Check the corners. |
EXPECT_EQ(SK_ColorGREEN, GetColorAt(&canvas, 0, 0)); |
EXPECT_EQ(SK_ColorBLACK, GetColorAt(&canvas, kWidth - 1, 0)); |
@@ -336,7 +376,11 @@ TEST_F(SkCanvasVideoRendererTest, Video_Rotation_90) { |
TEST_F(SkCanvasVideoRendererTest, Video_Rotation_180) { |
SkCanvas canvas(AllocBitmap(kWidth, kHeight)); |
const gfx::Rect crop_rect = cropped_frame()->visible_rect(); |
- PaintRotated(cropped_frame(), &canvas, kNone, VIDEO_ROTATION_180); |
+ PaintRotated(cropped_frame(), |
+ &canvas, |
+ kNone, |
+ SkXfermode::kSrcOver_Mode, |
+ VIDEO_ROTATION_180); |
// Check the corners. |
EXPECT_EQ(SK_ColorBLUE, GetColorAt(&canvas, 0, 0)); |
EXPECT_EQ(SK_ColorGREEN, GetColorAt(&canvas, kWidth - 1, 0)); |
@@ -347,7 +391,11 @@ TEST_F(SkCanvasVideoRendererTest, Video_Rotation_180) { |
TEST_F(SkCanvasVideoRendererTest, Video_Rotation_270) { |
SkCanvas canvas(AllocBitmap(kWidth, kHeight)); |
const gfx::Rect crop_rect = cropped_frame()->visible_rect(); |
- PaintRotated(cropped_frame(), &canvas, kNone, VIDEO_ROTATION_270); |
+ PaintRotated(cropped_frame(), |
+ &canvas, |
+ kNone, |
+ SkXfermode::kSrcOver_Mode, |
+ VIDEO_ROTATION_270); |
// Check the corners. |
EXPECT_EQ(SK_ColorRED, GetColorAt(&canvas, 0, 0)); |
EXPECT_EQ(SK_ColorBLUE, GetColorAt(&canvas, kWidth - 1, 0)); |