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 4426 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4437 .thread); | 4437 .thread); |
4438 | 4438 |
4439 // Make the test scroll delta a fractional amount, to verify that the | 4439 // Make the test scroll delta a fractional amount, to verify that the |
4440 // fixed container size delta is (1) non-zero, and (2) fractional, and | 4440 // fixed container size delta is (1) non-zero, and (2) fractional, and |
4441 // (3) matches the movement of the browser controls. | 4441 // (3) matches the movement of the browser controls. |
4442 gfx::Vector2dF top_controls_scroll_delta(0.f, 5.25f); | 4442 gfx::Vector2dF top_controls_scroll_delta(0.f, 5.25f); |
4443 host_impl_->browser_controls_manager()->ScrollBegin(); | 4443 host_impl_->browser_controls_manager()->ScrollBegin(); |
4444 host_impl_->browser_controls_manager()->ScrollBy(top_controls_scroll_delta); | 4444 host_impl_->browser_controls_manager()->ScrollBy(top_controls_scroll_delta); |
4445 host_impl_->browser_controls_manager()->ScrollEnd(); | 4445 host_impl_->browser_controls_manager()->ScrollEnd(); |
4446 | 4446 |
4447 LayerImpl* inner_viewport_scroll_layer = | |
4448 host_impl_->active_tree()->InnerViewportScrollLayer(); | |
4449 DCHECK(inner_viewport_scroll_layer); | |
4450 host_impl_->ScrollEnd(EndState().get()); | 4447 host_impl_->ScrollEnd(EndState().get()); |
| 4448 auto* property_trees = host_impl_->active_tree()->property_trees(); |
4451 EXPECT_FLOAT_EQ(top_controls_scroll_delta.y(), | 4449 EXPECT_FLOAT_EQ(top_controls_scroll_delta.y(), |
4452 inner_viewport_scroll_layer->FixedContainerSizeDelta().y()); | 4450 property_trees->inner_viewport_container_bounds_delta().y()); |
4453 } | 4451 } |
4454 | 4452 |
4455 // In this test, the outer viewport is initially unscrollable. We test that a | 4453 // In this test, the outer viewport is initially unscrollable. We test that a |
4456 // scroll initiated on the inner viewport, causing the browser controls to show | 4454 // scroll initiated on the inner viewport, causing the browser controls to show |
4457 // and thus making the outer viewport scrollable, still scrolls the outer | 4455 // and thus making the outer viewport scrollable, still scrolls the outer |
4458 // viewport. | 4456 // viewport. |
4459 TEST_F(LayerTreeHostImplBrowserControlsTest, | 4457 TEST_F(LayerTreeHostImplBrowserControlsTest, |
4460 BrowserControlsOuterViewportBecomesScrollable) { | 4458 BrowserControlsOuterViewportBecomesScrollable) { |
4461 SetupBrowserControlsAndScrollLayerWithVirtualViewport( | 4459 SetupBrowserControlsAndScrollLayerWithVirtualViewport( |
4462 gfx::Size(10, 50), gfx::Size(10, 50), gfx::Size(10, 100)); | 4460 gfx::Size(10, 50), gfx::Size(10, 50), gfx::Size(10, 100)); |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4543 | 4541 |
4544 // Test that the fixed position container delta is appropriately adjusted | 4542 // Test that the fixed position container delta is appropriately adjusted |
4545 // by the browser controls showing/hiding and page scale doesn't affect it. | 4543 // by the browser controls showing/hiding and page scale doesn't affect it. |
4546 TEST_F(LayerTreeHostImplBrowserControlsTest, FixedContainerDelta) { | 4544 TEST_F(LayerTreeHostImplBrowserControlsTest, FixedContainerDelta) { |
4547 SetupBrowserControlsAndScrollLayerWithVirtualViewport( | 4545 SetupBrowserControlsAndScrollLayerWithVirtualViewport( |
4548 gfx::Size(100, 100), gfx::Size(100, 100), gfx::Size(100, 100)); | 4546 gfx::Size(100, 100), gfx::Size(100, 100), gfx::Size(100, 100)); |
4549 DrawFrame(); | 4547 DrawFrame(); |
4550 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, 1.f, 2.f); | 4548 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, 1.f, 2.f); |
4551 | 4549 |
4552 float page_scale = 1.5f; | 4550 float page_scale = 1.5f; |
4553 LayerImpl* outer_viewport_scroll_layer = | |
4554 host_impl_->active_tree()->OuterViewportScrollLayer(); | |
4555 | |
4556 // Zoom in, since the fixed container is the outer viewport, the delta should | 4551 // Zoom in, since the fixed container is the outer viewport, the delta should |
4557 // not be scaled. | 4552 // not be scaled. |
4558 host_impl_->active_tree()->PushPageScaleFromMainThread(page_scale, 1.f, 2.f); | 4553 host_impl_->active_tree()->PushPageScaleFromMainThread(page_scale, 1.f, 2.f); |
4559 | 4554 |
4560 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, | 4555 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, |
4561 host_impl_ | 4556 host_impl_ |
4562 ->ScrollBegin(BeginState(gfx::Point()).get(), | 4557 ->ScrollBegin(BeginState(gfx::Point()).get(), |
4563 InputHandler::TOUCHSCREEN) | 4558 InputHandler::TOUCHSCREEN) |
4564 .thread); | 4559 .thread); |
4565 | 4560 |
4566 // Scroll down, the browser controls hiding should expand the viewport size so | 4561 // Scroll down, the browser controls hiding should expand the viewport size so |
4567 // the delta should be equal to the scroll distance. | 4562 // the delta should be equal to the scroll distance. |
4568 gfx::Vector2dF top_controls_scroll_delta(0.f, 20.f); | 4563 gfx::Vector2dF top_controls_scroll_delta(0.f, 20.f); |
4569 host_impl_->browser_controls_manager()->ScrollBegin(); | 4564 host_impl_->browser_controls_manager()->ScrollBegin(); |
4570 host_impl_->browser_controls_manager()->ScrollBy(top_controls_scroll_delta); | 4565 host_impl_->browser_controls_manager()->ScrollBy(top_controls_scroll_delta); |
4571 EXPECT_FLOAT_EQ(top_controls_height_ - top_controls_scroll_delta.y(), | 4566 EXPECT_FLOAT_EQ(top_controls_height_ - top_controls_scroll_delta.y(), |
4572 host_impl_->browser_controls_manager()->ContentTopOffset()); | 4567 host_impl_->browser_controls_manager()->ContentTopOffset()); |
| 4568 |
| 4569 auto* property_trees = host_impl_->active_tree()->property_trees(); |
4573 EXPECT_FLOAT_EQ(top_controls_scroll_delta.y(), | 4570 EXPECT_FLOAT_EQ(top_controls_scroll_delta.y(), |
4574 outer_viewport_scroll_layer->FixedContainerSizeDelta().y()); | 4571 property_trees->outer_viewport_container_bounds_delta().y()); |
4575 host_impl_->ScrollEnd(EndState().get()); | 4572 host_impl_->ScrollEnd(EndState().get()); |
4576 | 4573 |
4577 // Scroll past the maximum extent. The delta shouldn't be greater than the | 4574 // Scroll past the maximum extent. The delta shouldn't be greater than the |
4578 // browser controls height. | 4575 // browser controls height. |
4579 host_impl_->browser_controls_manager()->ScrollBegin(); | 4576 host_impl_->browser_controls_manager()->ScrollBegin(); |
4580 host_impl_->browser_controls_manager()->ScrollBy(top_controls_scroll_delta); | 4577 host_impl_->browser_controls_manager()->ScrollBy(top_controls_scroll_delta); |
4581 host_impl_->browser_controls_manager()->ScrollBy(top_controls_scroll_delta); | 4578 host_impl_->browser_controls_manager()->ScrollBy(top_controls_scroll_delta); |
4582 host_impl_->browser_controls_manager()->ScrollBy(top_controls_scroll_delta); | 4579 host_impl_->browser_controls_manager()->ScrollBy(top_controls_scroll_delta); |
4583 EXPECT_EQ(0.f, host_impl_->browser_controls_manager()->ContentTopOffset()); | 4580 EXPECT_EQ(0.f, host_impl_->browser_controls_manager()->ContentTopOffset()); |
4584 EXPECT_VECTOR_EQ(gfx::Vector2dF(0, top_controls_height_), | 4581 EXPECT_VECTOR_EQ(gfx::Vector2dF(0, top_controls_height_), |
4585 outer_viewport_scroll_layer->FixedContainerSizeDelta()); | 4582 property_trees->outer_viewport_container_bounds_delta()); |
4586 host_impl_->ScrollEnd(EndState().get()); | 4583 host_impl_->ScrollEnd(EndState().get()); |
4587 | 4584 |
4588 // Scroll in the direction to make the browser controls show. | 4585 // Scroll in the direction to make the browser controls show. |
4589 host_impl_->browser_controls_manager()->ScrollBegin(); | 4586 host_impl_->browser_controls_manager()->ScrollBegin(); |
4590 host_impl_->browser_controls_manager()->ScrollBy(-top_controls_scroll_delta); | 4587 host_impl_->browser_controls_manager()->ScrollBy(-top_controls_scroll_delta); |
4591 EXPECT_EQ(top_controls_scroll_delta.y(), | 4588 EXPECT_EQ(top_controls_scroll_delta.y(), |
4592 host_impl_->browser_controls_manager()->ContentTopOffset()); | 4589 host_impl_->browser_controls_manager()->ContentTopOffset()); |
4593 EXPECT_VECTOR_EQ( | 4590 EXPECT_VECTOR_EQ( |
4594 gfx::Vector2dF(0, top_controls_height_ - top_controls_scroll_delta.y()), | 4591 gfx::Vector2dF(0, top_controls_height_ - top_controls_scroll_delta.y()), |
4595 outer_viewport_scroll_layer->FixedContainerSizeDelta()); | 4592 property_trees->outer_viewport_container_bounds_delta()); |
4596 host_impl_->browser_controls_manager()->ScrollEnd(); | 4593 host_impl_->browser_controls_manager()->ScrollEnd(); |
4597 } | 4594 } |
4598 | 4595 |
4599 // Push a browser controls ratio from the main thread that we didn't send as a | 4596 // Push a browser controls ratio from the main thread that we didn't send as a |
4600 // delta and make sure that the ratio is clamped to the [0, 1] range. | 4597 // delta and make sure that the ratio is clamped to the [0, 1] range. |
4601 TEST_F(LayerTreeHostImplBrowserControlsTest, BrowserControlsPushUnsentRatio) { | 4598 TEST_F(LayerTreeHostImplBrowserControlsTest, BrowserControlsPushUnsentRatio) { |
4602 SetupBrowserControlsAndScrollLayerWithVirtualViewport( | 4599 SetupBrowserControlsAndScrollLayerWithVirtualViewport( |
4603 gfx::Size(10, 50), gfx::Size(10, 50), gfx::Size(10, 100)); | 4600 gfx::Size(10, 50), gfx::Size(10, 50), gfx::Size(10, 100)); |
4604 DrawFrame(); | 4601 DrawFrame(); |
4605 | 4602 |
(...skipping 7772 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
12378 else | 12375 else |
12379 EXPECT_FALSE(tile->HasRasterTask()); | 12376 EXPECT_FALSE(tile->HasRasterTask()); |
12380 } | 12377 } |
12381 Region expected_invalidation( | 12378 Region expected_invalidation( |
12382 raster_source->GetRectForImage(checkerable_image->uniqueID())); | 12379 raster_source->GetRectForImage(checkerable_image->uniqueID())); |
12383 EXPECT_EQ(expected_invalidation, *(root->GetPendingInvalidation())); | 12380 EXPECT_EQ(expected_invalidation, *(root->GetPendingInvalidation())); |
12384 } | 12381 } |
12385 | 12382 |
12386 } // namespace | 12383 } // namespace |
12387 } // namespace cc | 12384 } // namespace cc |
OLD | NEW |