OLD | NEW |
1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 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 "cc/trees/layer_tree_host.h" | 5 #include "cc/trees/layer_tree_host.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <algorithm> | 10 #include <algorithm> |
(...skipping 28 matching lines...) Expand all Loading... |
39 #include "cc/test/fake_painted_scrollbar_layer.h" | 39 #include "cc/test/fake_painted_scrollbar_layer.h" |
40 #include "cc/test/fake_picture_layer.h" | 40 #include "cc/test/fake_picture_layer.h" |
41 #include "cc/test/fake_picture_layer_impl.h" | 41 #include "cc/test/fake_picture_layer_impl.h" |
42 #include "cc/test/fake_proxy.h" | 42 #include "cc/test/fake_proxy.h" |
43 #include "cc/test/fake_recording_source.h" | 43 #include "cc/test/fake_recording_source.h" |
44 #include "cc/test/fake_scoped_ui_resource.h" | 44 #include "cc/test/fake_scoped_ui_resource.h" |
45 #include "cc/test/fake_video_frame_provider.h" | 45 #include "cc/test/fake_video_frame_provider.h" |
46 #include "cc/test/geometry_test_utils.h" | 46 #include "cc/test/geometry_test_utils.h" |
47 #include "cc/test/layer_internals_for_test.h" | 47 #include "cc/test/layer_internals_for_test.h" |
48 #include "cc/test/layer_tree_test.h" | 48 #include "cc/test/layer_tree_test.h" |
| 49 #include "cc/test/render_pass_test_utils.h" |
49 #include "cc/test/skia_common.h" | 50 #include "cc/test/skia_common.h" |
50 #include "cc/test/test_delegating_output_surface.h" | 51 #include "cc/test/test_delegating_output_surface.h" |
51 #include "cc/test/test_shared_bitmap_manager.h" | 52 #include "cc/test/test_shared_bitmap_manager.h" |
52 #include "cc/test/test_web_graphics_context_3d.h" | 53 #include "cc/test/test_web_graphics_context_3d.h" |
53 #include "cc/trees/effect_node.h" | 54 #include "cc/trees/effect_node.h" |
54 #include "cc/trees/layer_tree_host_common.h" | 55 #include "cc/trees/layer_tree_host_common.h" |
55 #include "cc/trees/layer_tree_host_impl.h" | 56 #include "cc/trees/layer_tree_host_impl.h" |
56 #include "cc/trees/layer_tree_impl.h" | 57 #include "cc/trees/layer_tree_impl.h" |
57 #include "cc/trees/single_thread_proxy.h" | 58 #include "cc/trees/single_thread_proxy.h" |
58 #include "cc/trees/transform_node.h" | 59 #include "cc/trees/transform_node.h" |
(...skipping 6979 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7038 void AfterTest() override {} | 7039 void AfterTest() override {} |
7039 | 7040 |
7040 private: | 7041 private: |
7041 FakeContentLayerClient client_; | 7042 FakeContentLayerClient client_; |
7042 const gfx::Size viewport_size_; | 7043 const gfx::Size viewport_size_; |
7043 const gfx::Size large_image_size_; | 7044 const gfx::Size large_image_size_; |
7044 }; | 7045 }; |
7045 | 7046 |
7046 SINGLE_AND_MULTI_THREAD_TEST_F(GpuRasterizationSucceedsWithLargeImage); | 7047 SINGLE_AND_MULTI_THREAD_TEST_F(GpuRasterizationSucceedsWithLargeImage); |
7047 | 7048 |
| 7049 class LayerTreeHostTestSubmitFrameMetadata : public LayerTreeHostTest { |
| 7050 protected: |
| 7051 void BeginTest() override { |
| 7052 layer_tree()->SetPageScaleFactorAndLimits(1.f, 0.5f, 4.f); |
| 7053 PostSetNeedsCommitToMainThread(); |
| 7054 } |
| 7055 |
| 7056 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, |
| 7057 LayerTreeHostImpl::FrameData* frame_data, |
| 7058 DrawResult draw_result) override { |
| 7059 EXPECT_EQ(DRAW_SUCCESS, draw_result); |
| 7060 EXPECT_EQ(0, num_swaps_); |
| 7061 drawn_viewport_ = host_impl->DeviceViewport(); |
| 7062 return draw_result; |
| 7063 } |
| 7064 |
| 7065 void DisplayReceivedCompositorFrameOnThread( |
| 7066 const CompositorFrame& frame) override { |
| 7067 EXPECT_EQ(1, ++num_swaps_); |
| 7068 |
| 7069 DelegatedFrameData* last_frame_data = frame.delegated_frame_data.get(); |
| 7070 ASSERT_TRUE(frame.delegated_frame_data); |
| 7071 EXPECT_FALSE(frame.gl_frame_data); |
| 7072 EXPECT_EQ(drawn_viewport_, |
| 7073 last_frame_data->render_pass_list.back()->output_rect); |
| 7074 EXPECT_EQ(0.5f, frame.metadata.min_page_scale_factor); |
| 7075 EXPECT_EQ(4.f, frame.metadata.max_page_scale_factor); |
| 7076 |
| 7077 EXPECT_EQ(0u, frame.delegated_frame_data->resource_list.size()); |
| 7078 EXPECT_EQ(1u, frame.delegated_frame_data->render_pass_list.size()); |
| 7079 |
| 7080 EndTest(); |
| 7081 } |
| 7082 |
| 7083 void AfterTest() override {} |
| 7084 |
| 7085 int num_swaps_ = 0; |
| 7086 gfx::Rect drawn_viewport_; |
| 7087 }; |
| 7088 |
| 7089 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestSubmitFrameMetadata); |
| 7090 |
| 7091 class LayerTreeHostTestSubmitFrameResources : public LayerTreeHostTest { |
| 7092 protected: |
| 7093 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
| 7094 |
| 7095 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, |
| 7096 LayerTreeHostImpl::FrameData* frame, |
| 7097 DrawResult draw_result) override { |
| 7098 frame->render_passes.clear(); |
| 7099 |
| 7100 RenderPass* child_pass = |
| 7101 AddRenderPass(&frame->render_passes, RenderPassId(2, 1), |
| 7102 gfx::Rect(3, 3, 10, 10), gfx::Transform()); |
| 7103 gpu::SyncToken mailbox_sync_token; |
| 7104 AddOneOfEveryQuadType(child_pass, host_impl->resource_provider(), |
| 7105 RenderPassId(0, 0), &mailbox_sync_token); |
| 7106 |
| 7107 RenderPass* pass = AddRenderPass(&frame->render_passes, RenderPassId(1, 1), |
| 7108 gfx::Rect(3, 3, 10, 10), gfx::Transform()); |
| 7109 AddOneOfEveryQuadType(pass, host_impl->resource_provider(), child_pass->id, |
| 7110 &mailbox_sync_token); |
| 7111 return draw_result; |
| 7112 } |
| 7113 |
| 7114 void DisplayReceivedCompositorFrameOnThread( |
| 7115 const CompositorFrame& frame) override { |
| 7116 ASSERT_TRUE(frame.delegated_frame_data); |
| 7117 |
| 7118 EXPECT_EQ(2u, frame.delegated_frame_data->render_pass_list.size()); |
| 7119 // Each render pass has 10 resources in it. And the root render pass has a |
| 7120 // mask resource used when drawing the child render pass, as well as its |
| 7121 // replica (it's added twice). The number 10 may change if |
| 7122 // AppendOneOfEveryQuadType() is updated, and the value here should be |
| 7123 // updated accordingly. |
| 7124 EXPECT_EQ(22u, frame.delegated_frame_data->resource_list.size()); |
| 7125 |
| 7126 EndTest(); |
| 7127 } |
| 7128 |
| 7129 void AfterTest() override {} |
| 7130 }; |
| 7131 |
| 7132 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestSubmitFrameResources); |
| 7133 |
7048 } // namespace | 7134 } // namespace |
7049 } // namespace cc | 7135 } // namespace cc |
OLD | NEW |