| 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_impl.h" | 5 #include "cc/trees/layer_tree_host_impl.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <cmath> | 10 #include <cmath> |
| (...skipping 12 matching lines...) Expand all Loading... |
| 23 #include "cc/input/browser_controls_offset_manager.h" | 23 #include "cc/input/browser_controls_offset_manager.h" |
| 24 #include "cc/input/main_thread_scrolling_reason.h" | 24 #include "cc/input/main_thread_scrolling_reason.h" |
| 25 #include "cc/input/page_scale_animation.h" | 25 #include "cc/input/page_scale_animation.h" |
| 26 #include "cc/layers/append_quads_data.h" | 26 #include "cc/layers/append_quads_data.h" |
| 27 #include "cc/layers/heads_up_display_layer_impl.h" | 27 #include "cc/layers/heads_up_display_layer_impl.h" |
| 28 #include "cc/layers/layer_impl.h" | 28 #include "cc/layers/layer_impl.h" |
| 29 #include "cc/layers/painted_scrollbar_layer_impl.h" | 29 #include "cc/layers/painted_scrollbar_layer_impl.h" |
| 30 #include "cc/layers/render_surface_impl.h" | 30 #include "cc/layers/render_surface_impl.h" |
| 31 #include "cc/layers/solid_color_layer_impl.h" | 31 #include "cc/layers/solid_color_layer_impl.h" |
| 32 #include "cc/layers/solid_color_scrollbar_layer_impl.h" | 32 #include "cc/layers/solid_color_scrollbar_layer_impl.h" |
| 33 #include "cc/layers/surface_layer_impl.h" |
| 33 #include "cc/layers/texture_layer_impl.h" | 34 #include "cc/layers/texture_layer_impl.h" |
| 34 #include "cc/layers/video_layer_impl.h" | 35 #include "cc/layers/video_layer_impl.h" |
| 35 #include "cc/layers/viewport.h" | 36 #include "cc/layers/viewport.h" |
| 36 #include "cc/output/begin_frame_args.h" | 37 #include "cc/output/begin_frame_args.h" |
| 37 #include "cc/output/compositor_frame_metadata.h" | 38 #include "cc/output/compositor_frame_metadata.h" |
| 38 #include "cc/output/copy_output_request.h" | 39 #include "cc/output/copy_output_request.h" |
| 39 #include "cc/output/copy_output_result.h" | 40 #include "cc/output/copy_output_result.h" |
| 40 #include "cc/output/gl_renderer.h" | 41 #include "cc/output/gl_renderer.h" |
| 41 #include "cc/output/latency_info_swap_promise.h" | 42 #include "cc/output/latency_info_swap_promise.h" |
| 42 #include "cc/quads/render_pass_draw_quad.h" | 43 #include "cc/quads/render_pass_draw_quad.h" |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 86 using ::testing::Mock; | 87 using ::testing::Mock; |
| 87 using ::testing::Return; | 88 using ::testing::Return; |
| 88 using ::testing::AnyNumber; | 89 using ::testing::AnyNumber; |
| 89 using ::testing::AtLeast; | 90 using ::testing::AtLeast; |
| 90 using ::testing::_; | 91 using ::testing::_; |
| 91 using media::VideoFrame; | 92 using media::VideoFrame; |
| 92 | 93 |
| 93 namespace cc { | 94 namespace cc { |
| 94 namespace { | 95 namespace { |
| 95 | 96 |
| 97 SurfaceId MakeSurfaceId(const FrameSinkId& frame_sink_id, uint32_t local_id) { |
| 98 return SurfaceId( |
| 99 frame_sink_id, |
| 100 LocalSurfaceId(local_id, base::UnguessableToken::Deserialize(0, 1u))); |
| 101 } |
| 102 |
| 96 struct TestFrameData : public LayerTreeHostImpl::FrameData { | 103 struct TestFrameData : public LayerTreeHostImpl::FrameData { |
| 97 TestFrameData() { | 104 TestFrameData() { |
| 98 // Set ack to something valid, so DCHECKs don't complain. | 105 // Set ack to something valid, so DCHECKs don't complain. |
| 99 begin_frame_ack = BeginFrameAck(0, 1, 1, true); | 106 begin_frame_ack = BeginFrameAck(0, 1, 1, true); |
| 100 } | 107 } |
| 101 }; | 108 }; |
| 102 | 109 |
| 103 class LayerTreeHostImplTest : public testing::Test, | 110 class LayerTreeHostImplTest : public testing::Test, |
| 104 public LayerTreeHostImplClient { | 111 public LayerTreeHostImplClient { |
| 105 public: | 112 public: |
| (...skipping 3368 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3474 } | 3481 } |
| 3475 | 3482 |
| 3476 TEST_F(LayerTreeHostImplTest, MouseMoveAtWithDeviceScaleOf1) { | 3483 TEST_F(LayerTreeHostImplTest, MouseMoveAtWithDeviceScaleOf1) { |
| 3477 SetupMouseMoveAtWithDeviceScale(1.f); | 3484 SetupMouseMoveAtWithDeviceScale(1.f); |
| 3478 } | 3485 } |
| 3479 | 3486 |
| 3480 TEST_F(LayerTreeHostImplTest, MouseMoveAtWithDeviceScaleOf2) { | 3487 TEST_F(LayerTreeHostImplTest, MouseMoveAtWithDeviceScaleOf2) { |
| 3481 SetupMouseMoveAtWithDeviceScale(2.f); | 3488 SetupMouseMoveAtWithDeviceScale(2.f); |
| 3482 } | 3489 } |
| 3483 | 3490 |
| 3491 // This test verifies that only SurfaceLayers in the viewport are included |
| 3492 // in CompositorFrameMetadata's |embedded_surfaces|. |
| 3493 TEST_F(LayerTreeHostImplTest, EmbeddedSurfacesInMetadata) { |
| 3494 SetupScrollAndContentsLayers(gfx::Size(100, 100)); |
| 3495 host_impl_->SetViewportSize(gfx::Size(50, 50)); |
| 3496 LayerImpl* root = host_impl_->active_tree()->root_layer_for_testing(); |
| 3497 |
| 3498 std::vector<SurfaceId> children = {MakeSurfaceId(FrameSinkId(1, 1), 1), |
| 3499 MakeSurfaceId(FrameSinkId(2, 2), 2), |
| 3500 MakeSurfaceId(FrameSinkId(3, 3), 3)}; |
| 3501 for (size_t i = 0; i < children.size(); ++i) { |
| 3502 std::unique_ptr<SurfaceLayerImpl> child = |
| 3503 SurfaceLayerImpl::Create(host_impl_->active_tree(), i + 6); |
| 3504 child->SetPosition(gfx::PointF(25.f * i, 0.f)); |
| 3505 child->SetBounds(gfx::Size(1, 1)); |
| 3506 child->SetDrawsContent(true); |
| 3507 child->SetPrimarySurfaceInfo( |
| 3508 SurfaceInfo(children[i], 1.f /* device_scale_factor */, |
| 3509 gfx::Size(10, 10) /* size_in_pixels */)); |
| 3510 root->test_properties()->AddChild(std::move(child)); |
| 3511 } |
| 3512 |
| 3513 host_impl_->active_tree()->BuildPropertyTreesForTesting(); |
| 3514 DrawFrame(); |
| 3515 |
| 3516 FakeCompositorFrameSink* fake_compositor_frame_sink = |
| 3517 static_cast<FakeCompositorFrameSink*>( |
| 3518 host_impl_->compositor_frame_sink()); |
| 3519 const CompositorFrameMetadata& metadata = |
| 3520 fake_compositor_frame_sink->last_sent_frame()->metadata; |
| 3521 EXPECT_THAT(metadata.embedded_surfaces, |
| 3522 testing::UnorderedElementsAre(children[0], children[1])); |
| 3523 EXPECT_THAT( |
| 3524 metadata.referenced_surfaces, |
| 3525 testing::UnorderedElementsAre(children[0], children[1], children[2])); |
| 3526 } |
| 3527 |
| 3484 TEST_F(LayerTreeHostImplTest, CompositorFrameMetadata) { | 3528 TEST_F(LayerTreeHostImplTest, CompositorFrameMetadata) { |
| 3485 SetupScrollAndContentsLayers(gfx::Size(100, 100)); | 3529 SetupScrollAndContentsLayers(gfx::Size(100, 100)); |
| 3486 host_impl_->SetViewportSize(gfx::Size(50, 50)); | 3530 host_impl_->SetViewportSize(gfx::Size(50, 50)); |
| 3487 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, 0.5f, 4.f); | 3531 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, 0.5f, 4.f); |
| 3488 DrawFrame(); | 3532 DrawFrame(); |
| 3489 { | 3533 { |
| 3490 CompositorFrameMetadata metadata = | 3534 CompositorFrameMetadata metadata = |
| 3491 host_impl_->MakeCompositorFrameMetadata(); | 3535 host_impl_->MakeCompositorFrameMetadata(); |
| 3492 EXPECT_EQ(gfx::Vector2dF(), metadata.root_scroll_offset); | 3536 EXPECT_EQ(gfx::Vector2dF(), metadata.root_scroll_offset); |
| 3493 EXPECT_EQ(1.f, metadata.page_scale_factor); | 3537 EXPECT_EQ(1.f, metadata.page_scale_factor); |
| (...skipping 8758 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 12252 else | 12296 else |
| 12253 EXPECT_FALSE(tile->HasRasterTask()); | 12297 EXPECT_FALSE(tile->HasRasterTask()); |
| 12254 } | 12298 } |
| 12255 Region expected_invalidation( | 12299 Region expected_invalidation( |
| 12256 raster_source->GetRectForImage(checkerable_image->uniqueID())); | 12300 raster_source->GetRectForImage(checkerable_image->uniqueID())); |
| 12257 EXPECT_EQ(expected_invalidation, *(root->GetPendingInvalidation())); | 12301 EXPECT_EQ(expected_invalidation, *(root->GetPendingInvalidation())); |
| 12258 } | 12302 } |
| 12259 | 12303 |
| 12260 } // namespace | 12304 } // namespace |
| 12261 } // namespace cc | 12305 } // namespace cc |
| OLD | NEW |