| Index: cc/trees/layer_tree_host_unittest.cc
|
| diff --git a/cc/trees/layer_tree_host_unittest.cc b/cc/trees/layer_tree_host_unittest.cc
|
| index b62f4eec880ed7d71c7f12b3d4b7d963f18b4b68..706185e90de85246525eac4ea57e4cdb88c9f66f 100644
|
| --- a/cc/trees/layer_tree_host_unittest.cc
|
| +++ b/cc/trees/layer_tree_host_unittest.cc
|
| @@ -46,6 +46,7 @@
|
| #include "cc/test/geometry_test_utils.h"
|
| #include "cc/test/layer_internals_for_test.h"
|
| #include "cc/test/layer_tree_test.h"
|
| +#include "cc/test/render_pass_test_utils.h"
|
| #include "cc/test/skia_common.h"
|
| #include "cc/test/test_delegating_output_surface.h"
|
| #include "cc/test/test_shared_bitmap_manager.h"
|
| @@ -7045,5 +7046,90 @@ class GpuRasterizationSucceedsWithLargeImage : public LayerTreeHostTest {
|
|
|
| SINGLE_AND_MULTI_THREAD_TEST_F(GpuRasterizationSucceedsWithLargeImage);
|
|
|
| +class LayerTreeHostTestSubmitFrameMetadata : public LayerTreeHostTest {
|
| + protected:
|
| + void BeginTest() override {
|
| + layer_tree()->SetPageScaleFactorAndLimits(1.f, 0.5f, 4.f);
|
| + PostSetNeedsCommitToMainThread();
|
| + }
|
| +
|
| + DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl,
|
| + LayerTreeHostImpl::FrameData* frame_data,
|
| + DrawResult draw_result) override {
|
| + EXPECT_EQ(DRAW_SUCCESS, draw_result);
|
| + EXPECT_EQ(0, num_swaps_);
|
| + drawn_viewport_ = host_impl->DeviceViewport();
|
| + return draw_result;
|
| + }
|
| +
|
| + void DisplayReceivedCompositorFrameOnThread(
|
| + const CompositorFrame& frame) override {
|
| + EXPECT_EQ(1, ++num_swaps_);
|
| +
|
| + DelegatedFrameData* last_frame_data = frame.delegated_frame_data.get();
|
| + ASSERT_TRUE(frame.delegated_frame_data);
|
| + EXPECT_FALSE(frame.gl_frame_data);
|
| + EXPECT_EQ(drawn_viewport_,
|
| + last_frame_data->render_pass_list.back()->output_rect);
|
| + EXPECT_EQ(0.5f, frame.metadata.min_page_scale_factor);
|
| + EXPECT_EQ(4.f, frame.metadata.max_page_scale_factor);
|
| +
|
| + EXPECT_EQ(0u, frame.delegated_frame_data->resource_list.size());
|
| + EXPECT_EQ(1u, frame.delegated_frame_data->render_pass_list.size());
|
| +
|
| + EndTest();
|
| + }
|
| +
|
| + void AfterTest() override {}
|
| +
|
| + int num_swaps_ = 0;
|
| + gfx::Rect drawn_viewport_;
|
| +};
|
| +
|
| +SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestSubmitFrameMetadata);
|
| +
|
| +class LayerTreeHostTestSubmitFrameResources : public LayerTreeHostTest {
|
| + protected:
|
| + void BeginTest() override { PostSetNeedsCommitToMainThread(); }
|
| +
|
| + DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl,
|
| + LayerTreeHostImpl::FrameData* frame,
|
| + DrawResult draw_result) override {
|
| + frame->render_passes.clear();
|
| +
|
| + RenderPass* child_pass =
|
| + AddRenderPass(&frame->render_passes, RenderPassId(2, 1),
|
| + gfx::Rect(3, 3, 10, 10), gfx::Transform());
|
| + gpu::SyncToken mailbox_sync_token;
|
| + AddOneOfEveryQuadType(child_pass, host_impl->resource_provider(),
|
| + RenderPassId(0, 0), &mailbox_sync_token);
|
| +
|
| + RenderPass* pass = AddRenderPass(&frame->render_passes, RenderPassId(1, 1),
|
| + gfx::Rect(3, 3, 10, 10), gfx::Transform());
|
| + AddOneOfEveryQuadType(pass, host_impl->resource_provider(), child_pass->id,
|
| + &mailbox_sync_token);
|
| + return draw_result;
|
| + }
|
| +
|
| + void DisplayReceivedCompositorFrameOnThread(
|
| + const CompositorFrame& frame) override {
|
| + ASSERT_TRUE(frame.delegated_frame_data);
|
| +
|
| + EXPECT_EQ(2u, frame.delegated_frame_data->render_pass_list.size());
|
| + // Each render pass has 10 resources in it. And the root render pass has a
|
| + // mask resource used when drawing the child render pass, as well as its
|
| + // replica (it's added twice). The number 10 may change if
|
| + // AppendOneOfEveryQuadType() is updated, and the value here should be
|
| + // updated accordingly.
|
| + EXPECT_EQ(22u, frame.delegated_frame_data->resource_list.size());
|
| +
|
| + EndTest();
|
| + }
|
| +
|
| + void AfterTest() override {}
|
| +};
|
| +
|
| +SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestSubmitFrameResources);
|
| +
|
| } // namespace
|
| } // namespace cc
|
|
|