summaryrefslogtreecommitdiffstats
path: root/chromium/cc/layers/video_layer_impl_unittest.cc
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2017-09-18 14:34:04 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2017-10-04 11:15:27 +0000
commite6430e577f105ad8813c92e75c54660c4985026e (patch)
tree88115e5d1fb471fea807111924dcccbeadbf9e4f /chromium/cc/layers/video_layer_impl_unittest.cc
parent53d399fe6415a96ea6986ec0d402a9c07da72453 (diff)
BASELINE: Update Chromium to 61.0.3163.99
Change-Id: I8452f34574d88ca2b27af9bd56fc9ff3f16b1367 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'chromium/cc/layers/video_layer_impl_unittest.cc')
-rw-r--r--chromium/cc/layers/video_layer_impl_unittest.cc51
1 files changed, 48 insertions, 3 deletions
diff --git a/chromium/cc/layers/video_layer_impl_unittest.cc b/chromium/cc/layers/video_layer_impl_unittest.cc
index c4eee83ea26..7f0adc3d69d 100644
--- a/chromium/cc/layers/video_layer_impl_unittest.cc
+++ b/chromium/cc/layers/video_layer_impl_unittest.cc
@@ -7,13 +7,15 @@
#include <stddef.h>
#include "cc/layers/video_frame_provider_client_impl.h"
-#include "cc/output/context_provider.h"
#include "cc/output/output_surface.h"
#include "cc/quads/draw_quad.h"
+#include "cc/quads/stream_video_draw_quad.h"
+#include "cc/quads/texture_draw_quad.h"
#include "cc/quads/yuv_video_draw_quad.h"
#include "cc/test/fake_video_frame_provider.h"
#include "cc/test/layer_test_common.h"
#include "cc/trees/single_thread_proxy.h"
+#include "components/viz/common/gpu/context_provider.h"
#include "media/base/video_frame.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -112,7 +114,7 @@ TEST(VideoLayerImplTest, OccludesOtherLayers) {
active_tree->BuildLayerListAndPropertyTreesForTesting();
- active_tree->UpdateDrawProperties(false);
+ active_tree->UpdateDrawProperties();
// We don't have a frame yet, so the video doesn't occlude the layer below it.
EXPECT_FALSE(draw_properties.occlusion_in_content_space.IsOccluded(visible));
@@ -122,7 +124,7 @@ TEST(VideoLayerImplTest, OccludesOtherLayers) {
gfx::Size(10, 10), base::TimeDelta());
provider.set_frame(video_frame);
active_tree->set_needs_update_draw_properties();
- active_tree->UpdateDrawProperties(false);
+ active_tree->UpdateDrawProperties();
// We have a frame now, so the video occludes the layer below it.
EXPECT_TRUE(draw_properties.occlusion_in_content_space.IsOccluded(visible));
@@ -349,6 +351,8 @@ TEST(VideoLayerImplTest, NativeYUVFrameGeneratesYUVQuad) {
ASSERT_TRUE(video_frame);
video_frame->metadata()->SetBoolean(media::VideoFrameMetadata::ALLOW_OVERLAY,
true);
+ video_frame->metadata()->SetBoolean(
+ media::VideoFrameMetadata::REQUIRE_OVERLAY, true);
FakeVideoFrameProvider provider;
provider.set_frame(video_frame);
@@ -371,6 +375,47 @@ TEST(VideoLayerImplTest, NativeYUVFrameGeneratesYUVQuad) {
(yuv_draw_quad->ya_tex_size.height() + 1) / 2);
EXPECT_EQ(yuv_draw_quad->uv_tex_size.width(),
(yuv_draw_quad->ya_tex_size.width() + 1) / 2);
+ EXPECT_TRUE(yuv_draw_quad->require_overlay);
+}
+
+TEST(VideoLayerImplTest, NativeARGBFrameGeneratesTextureQuad) {
+ gfx::Size layer_size(1000, 1000);
+ gfx::Size viewport_size(1000, 1000);
+
+ LayerTestCommon::LayerImplTest impl;
+ DebugSetImplThreadAndMainThreadBlocked(impl.task_runner_provider());
+
+ gpu::MailboxHolder mailbox_holders[media::VideoFrame::kMaxPlanes];
+ mailbox_holders[0].texture_target = GL_TEXTURE_2D;
+ mailbox_holders[0].mailbox.name[0] = 1;
+
+ gfx::Size resource_size = gfx::Size(10, 10);
+ scoped_refptr<media::VideoFrame> video_frame =
+ media::VideoFrame::WrapNativeTextures(
+ media::PIXEL_FORMAT_ARGB, mailbox_holders, base::Bind(EmptyCallback),
+ resource_size, gfx::Rect(10, 10), resource_size, base::TimeDelta());
+ ASSERT_TRUE(video_frame);
+ video_frame->metadata()->SetBoolean(media::VideoFrameMetadata::ALLOW_OVERLAY,
+ true);
+ FakeVideoFrameProvider provider;
+ provider.set_frame(video_frame);
+
+ VideoLayerImpl* video_layer_impl =
+ impl.AddChildToRoot<VideoLayerImpl>(&provider, media::VIDEO_ROTATION_0);
+ video_layer_impl->SetBounds(layer_size);
+ video_layer_impl->SetDrawsContent(true);
+ impl.host_impl()->active_tree()->BuildLayerListAndPropertyTreesForTesting();
+
+ gfx::Rect occluded;
+ impl.AppendQuadsWithOcclusion(video_layer_impl, occluded);
+
+ EXPECT_EQ(1u, impl.quad_list().size());
+ const DrawQuad* draw_quad = impl.quad_list().ElementAt(0);
+ ASSERT_EQ(DrawQuad::TEXTURE_CONTENT, draw_quad->material);
+
+ const TextureDrawQuad* texture_draw_quad =
+ TextureDrawQuad::MaterialCast(draw_quad);
+ EXPECT_EQ(texture_draw_quad->resource_size_in_pixels(), resource_size);
}
} // namespace