| Index: cc/trees/layer_tree_host_impl_unittest.cc
|
| diff --git a/cc/trees/layer_tree_host_impl_unittest.cc b/cc/trees/layer_tree_host_impl_unittest.cc
|
| index 600047c81a574844922f1a18491968e58273646d..cff2049bc1ed7bf4d133b53e0775e5bb92f2b634 100644
|
| --- a/cc/trees/layer_tree_host_impl_unittest.cc
|
| +++ b/cc/trees/layer_tree_host_impl_unittest.cc
|
| @@ -413,6 +413,13 @@ class LayerTreeHostImplTest : public testing::Test,
|
| host_impl_->DidDrawAllLayers(frame);
|
| }
|
|
|
| + void DrawFrameWithoutRebuildPropertyTrees() {
|
| + LayerTreeHostImpl::FrameData frame;
|
| + EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
|
| + host_impl_->DrawLayers(&frame);
|
| + host_impl_->DidDrawAllLayers(frame);
|
| + }
|
| +
|
| void RebuildPropertyTrees() {
|
| host_impl_->active_tree()->property_trees()->needs_rebuild = true;
|
| host_impl_->active_tree()->BuildPropertyTreesForTesting();
|
| @@ -2447,6 +2454,31 @@ TEST_F(LayerTreeHostImplTest, PageScaleAnimationCompletedNotification) {
|
| host_impl_->DidFinishImplFrame();
|
| }
|
|
|
| +TEST_F(LayerTreeHostImplTest, MaxScrollOffsetAffectedByBoundsDelta) {
|
| + SetupScrollAndContentsLayers(gfx::Size(100, 100));
|
| + host_impl_->SetViewportSize(gfx::Size(50, 50));
|
| + host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, 0.5f, 4.f);
|
| + DrawFrame();
|
| +
|
| + LayerImpl* inner_scroll = host_impl_->InnerViewportScrollLayer();
|
| + LayerImpl* inner_container = inner_scroll->scroll_clip_layer();
|
| + DCHECK(inner_scroll);
|
| + DCHECK(inner_container);
|
| + EXPECT_EQ(gfx::ScrollOffset(50, 50), inner_scroll->MaxScrollOffset());
|
| +
|
| + inner_container->SetBoundsDelta(gfx::Vector2dF(15.f, 15.f));
|
| + inner_scroll->SetBoundsDelta(gfx::Vector2dF(7.f, 7.f));
|
| + EXPECT_EQ(gfx::ScrollOffset(42, 42), inner_scroll->MaxScrollOffset());
|
| +
|
| + inner_container->SetBoundsDelta(gfx::Vector2dF());
|
| + inner_scroll->SetBoundsDelta(gfx::Vector2dF());
|
| + inner_scroll->SetBounds(gfx::Size());
|
| + DrawFrame();
|
| +
|
| + inner_scroll->SetBoundsDelta(gfx::Vector2dF(60.f, 60.f));
|
| + EXPECT_EQ(gfx::ScrollOffset(10, 10), inner_scroll->MaxScrollOffset());
|
| +}
|
| +
|
| class LayerTreeHostImplOverridePhysicalTime : public LayerTreeHostImpl {
|
| public:
|
| LayerTreeHostImplOverridePhysicalTime(
|
| @@ -5241,6 +5273,7 @@ TEST_F(LayerTreeHostImplTest, ScrollViewportRounding) {
|
| SetupScrollAndContentsLayers(gfx::Size(width, height));
|
| host_impl_->active_tree()->InnerViewportContainerLayer()->SetBounds(
|
| gfx::Size(width * scale - 1, height * scale));
|
| + RebuildPropertyTrees();
|
| host_impl_->active_tree()->SetDeviceScaleFactor(scale);
|
| host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, 0.5f, 4.f);
|
|
|
| @@ -5319,6 +5352,7 @@ TEST_F(LayerTreeHostImplTest, RootLayerScrollOffsetDelegation) {
|
| LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 100));
|
| LayerImpl* clip_layer = scroll_layer->parent()->parent();
|
| clip_layer->SetBounds(gfx::Size(10, 20));
|
| + RebuildPropertyTrees();
|
|
|
| host_impl_->BindToClient(&scroll_watcher);
|
|
|
| @@ -5689,6 +5723,7 @@ TEST_F(LayerTreeHostImplTest, OverscrollAlways) {
|
| LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(50, 50));
|
| LayerImpl* clip_layer = scroll_layer->parent()->parent();
|
| clip_layer->SetBounds(gfx::Size(50, 50));
|
| + RebuildPropertyTrees();
|
| host_impl_->SetViewportSize(gfx::Size(50, 50));
|
| host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, 0.5f, 4.f);
|
| DrawFrame();
|
| @@ -7665,7 +7700,8 @@ TEST_F(LayerTreeHostImplTest, ScrollUnknownScrollAncestorMismatch) {
|
| child_scroll->SetPosition(gfx::PointF(10.f, 10.f));
|
|
|
| child_scroll->AddChild(std::move(occluder_layer));
|
| - scroll_layer->AddChild(std::move(child_scroll));
|
| + child_scroll_clip->AddChild(std::move(child_scroll));
|
| + scroll_layer->AddChild(std::move(child_scroll_clip));
|
|
|
| DrawFrame();
|
|
|
| @@ -8413,7 +8449,7 @@ TEST_F(LayerTreeHostImplWithTopControlsTest,
|
| host_impl_->SetViewportSize(gfx::Size(100, 100));
|
| host_impl_->top_controls_manager()->UpdateTopControlsState(BOTH, SHOWN,
|
| false);
|
| - DrawFrame();
|
| + DrawFrameWithoutRebuildPropertyTrees();
|
|
|
| EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD,
|
| host_impl_->ScrollBegin(BeginState(gfx::Point()).get(),
|
| @@ -9902,7 +9938,8 @@ TEST_F(LayerTreeHostImplTest, UpdatePageScaleFactorOnActiveTree) {
|
| TransformNode* active_tree_node =
|
| host_impl_->active_tree()->property_trees()->transform_tree.Node(
|
| page_scale_layer->transform_tree_index());
|
| - EXPECT_EQ(active_tree_node->data.post_local_scale_factor, 1.f);
|
| + // SetPageScaleOnActiveTree also updates the factors in property trees.
|
| + EXPECT_EQ(active_tree_node->data.post_local_scale_factor, 2.f);
|
| EXPECT_EQ(host_impl_->active_tree()->current_page_scale_factor(), 2.f);
|
|
|
| TransformNode* pending_tree_node =
|
|
|