Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(385)

Side by Side Diff: cc/trees/layer_tree_host_impl_unittest.cc

Issue 1766053002: Clean LayerImpl's scroll offset callers in unit tests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 271 matching lines...) Expand 10 before | Expand all | Expand 10 after
282 282
283 scoped_ptr<LayerImpl> root = 283 scoped_ptr<LayerImpl> root =
284 LayerImpl::Create(layer_tree_impl, 1); 284 LayerImpl::Create(layer_tree_impl, 1);
285 root->SetBounds(content_size); 285 root->SetBounds(content_size);
286 root->SetPosition(gfx::PointF()); 286 root->SetPosition(gfx::PointF());
287 root->SetForceRenderSurface(true); 287 root->SetForceRenderSurface(true);
288 288
289 scoped_ptr<LayerImpl> inner_scroll = 289 scoped_ptr<LayerImpl> inner_scroll =
290 LayerImpl::Create(layer_tree_impl, kInnerViewportScrollLayerId); 290 LayerImpl::Create(layer_tree_impl, kInnerViewportScrollLayerId);
291 inner_scroll->SetIsContainerForFixedPositionLayers(true); 291 inner_scroll->SetIsContainerForFixedPositionLayers(true);
292 inner_scroll->PushScrollOffsetFromMainThread(gfx::ScrollOffset()); 292 inner_scroll->layer_tree_impl()
293 ->property_trees()
294 ->scroll_tree.UpdateScrollOffsetBaseForTesting(inner_scroll->id(),
295 gfx::ScrollOffset());
293 296
294 scoped_ptr<LayerImpl> inner_clip = 297 scoped_ptr<LayerImpl> inner_clip =
295 LayerImpl::Create(layer_tree_impl, kInnerViewportClipLayerId); 298 LayerImpl::Create(layer_tree_impl, kInnerViewportClipLayerId);
296 inner_clip->SetBounds( 299 inner_clip->SetBounds(
297 gfx::Size(content_size.width() / 2, content_size.height() / 2)); 300 gfx::Size(content_size.width() / 2, content_size.height() / 2));
298 301
299 scoped_ptr<LayerImpl> page_scale = 302 scoped_ptr<LayerImpl> page_scale =
300 LayerImpl::Create(layer_tree_impl, kPageScaleLayerId); 303 LayerImpl::Create(layer_tree_impl, kPageScaleLayerId);
301 304
302 inner_scroll->SetScrollClipLayer(inner_clip->id()); 305 inner_scroll->SetScrollClipLayer(inner_clip->id());
303 inner_scroll->SetBounds(content_size); 306 inner_scroll->SetBounds(content_size);
304 inner_scroll->SetPosition(gfx::PointF()); 307 inner_scroll->SetPosition(gfx::PointF());
305 308
306 scoped_ptr<LayerImpl> outer_clip = 309 scoped_ptr<LayerImpl> outer_clip =
307 LayerImpl::Create(layer_tree_impl, kOuterViewportClipLayerId); 310 LayerImpl::Create(layer_tree_impl, kOuterViewportClipLayerId);
308 outer_clip->SetBounds(content_size); 311 outer_clip->SetBounds(content_size);
309 outer_clip->SetIsContainerForFixedPositionLayers(true); 312 outer_clip->SetIsContainerForFixedPositionLayers(true);
310 313
311 scoped_ptr<LayerImpl> outer_scroll = 314 scoped_ptr<LayerImpl> outer_scroll =
312 LayerImpl::Create(layer_tree_impl, kOuterViewportScrollLayerId); 315 LayerImpl::Create(layer_tree_impl, kOuterViewportScrollLayerId);
313 outer_scroll->SetScrollClipLayer(outer_clip->id()); 316 outer_scroll->SetScrollClipLayer(outer_clip->id());
314 outer_scroll->PushScrollOffsetFromMainThread(gfx::ScrollOffset()); 317 outer_scroll->layer_tree_impl()
318 ->property_trees()
319 ->scroll_tree.UpdateScrollOffsetBaseForTesting(outer_scroll->id(),
320 gfx::ScrollOffset());
315 outer_scroll->SetBounds(content_size); 321 outer_scroll->SetBounds(content_size);
316 outer_scroll->SetPosition(gfx::PointF()); 322 outer_scroll->SetPosition(gfx::PointF());
317 323
318 scoped_ptr<LayerImpl> contents = 324 scoped_ptr<LayerImpl> contents =
319 LayerImpl::Create(layer_tree_impl, kContentLayerId); 325 LayerImpl::Create(layer_tree_impl, kContentLayerId);
320 contents->SetDrawsContent(true); 326 contents->SetDrawsContent(true);
321 contents->SetBounds(content_size); 327 contents->SetBounds(content_size);
322 contents->SetPosition(gfx::PointF()); 328 contents->SetPosition(gfx::PointF());
323 329
324 outer_scroll->AddChild(std::move(contents)); 330 outer_scroll->AddChild(std::move(contents));
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
452 virtual scoped_ptr<OutputSurface> CreateOutputSurface() { 458 virtual scoped_ptr<OutputSurface> CreateOutputSurface() {
453 return FakeOutputSurface::Create3d(); 459 return FakeOutputSurface::Create3d();
454 } 460 }
455 461
456 void DrawOneFrame() { 462 void DrawOneFrame() {
457 LayerTreeHostImpl::FrameData frame_data; 463 LayerTreeHostImpl::FrameData frame_data;
458 PrepareToDrawFrame(&frame_data); 464 PrepareToDrawFrame(&frame_data);
459 host_impl_->DidDrawAllLayers(frame_data); 465 host_impl_->DidDrawAllLayers(frame_data);
460 } 466 }
461 467
468 void SetScrollOffsetDelta(LayerImpl* layer_impl,
ajuma 2016/03/07 19:10:19 This can be static.
sunxd 2016/03/09 01:51:20 Done.
469 const gfx::Vector2dF& delta) {
470 layer_impl->SetCurrentScrollOffset(
471 layer_impl->synced_scroll_offset()->ActiveBase() +
472 gfx::ScrollOffset(delta));
473 }
474
462 FakeImplTaskRunnerProvider task_runner_provider_; 475 FakeImplTaskRunnerProvider task_runner_provider_;
463 DebugScopedSetMainThreadBlocked always_main_thread_blocked_; 476 DebugScopedSetMainThreadBlocked always_main_thread_blocked_;
464 477
465 TestSharedBitmapManager shared_bitmap_manager_; 478 TestSharedBitmapManager shared_bitmap_manager_;
466 TestGpuMemoryBufferManager gpu_memory_buffer_manager_; 479 TestGpuMemoryBufferManager gpu_memory_buffer_manager_;
467 TestTaskGraphRunner task_graph_runner_; 480 TestTaskGraphRunner task_graph_runner_;
468 scoped_ptr<OutputSurface> output_surface_; 481 scoped_ptr<OutputSurface> output_surface_;
469 scoped_ptr<LayerTreeHostImpl> host_impl_; 482 scoped_ptr<LayerTreeHostImpl> host_impl_;
470 FakeRenderingStatsInstrumentation stats_instrumentation_; 483 FakeRenderingStatsInstrumentation stats_instrumentation_;
471 bool on_can_draw_state_changed_called_; 484 bool on_can_draw_state_changed_called_;
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
593 { 606 {
594 scoped_ptr<LayerImpl> root_clip = 607 scoped_ptr<LayerImpl> root_clip =
595 LayerImpl::Create(host_impl_->active_tree(), 2); 608 LayerImpl::Create(host_impl_->active_tree(), 2);
596 scoped_ptr<LayerImpl> root = 609 scoped_ptr<LayerImpl> root =
597 LayerImpl::Create(host_impl_->active_tree(), 1); 610 LayerImpl::Create(host_impl_->active_tree(), 1);
598 root_clip->SetBounds(gfx::Size(10, 10)); 611 root_clip->SetBounds(gfx::Size(10, 10));
599 LayerImpl* root_layer = root.get(); 612 LayerImpl* root_layer = root.get();
600 root_clip->AddChild(std::move(root)); 613 root_clip->AddChild(std::move(root));
601 root_layer->SetBounds(gfx::Size(110, 110)); 614 root_layer->SetBounds(gfx::Size(110, 110));
602 root_layer->SetScrollClipLayer(root_clip->id()); 615 root_layer->SetScrollClipLayer(root_clip->id());
603 root_layer->PushScrollOffsetFromMainThread(scroll_offset); 616 root_layer->layer_tree_impl()
617 ->property_trees()
618 ->scroll_tree.UpdateScrollOffsetBaseForTesting(root_layer->id(),
619 scroll_offset);
604 host_impl_->active_tree()->SetRootLayer(std::move(root_clip)); 620 host_impl_->active_tree()->SetRootLayer(std::move(root_clip));
605 host_impl_->active_tree()->BuildPropertyTreesForTesting(); 621 host_impl_->active_tree()->BuildPropertyTreesForTesting();
606 root_layer->ScrollBy(scroll_delta); 622 root_layer->ScrollBy(scroll_delta);
607 } 623 }
608 624
609 LayerImpl* root = 625 LayerImpl* root =
610 host_impl_->active_tree()->root_layer()->children()[0].get(); 626 host_impl_->active_tree()->root_layer()->children()[0].get();
611 627
612 scoped_ptr<ScrollAndScaleSet> scroll_info; 628 scoped_ptr<ScrollAndScaleSet> scroll_info;
613 629
(...skipping 511 matching lines...) Expand 10 before | Expand all | Expand 10 after
1125 1141
1126 TEST_F(LayerTreeHostImplTest, ScrollWithUserUnscrollableLayers) { 1142 TEST_F(LayerTreeHostImplTest, ScrollWithUserUnscrollableLayers) {
1127 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(200, 200)); 1143 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(200, 200));
1128 host_impl_->SetViewportSize(gfx::Size(100, 100)); 1144 host_impl_->SetViewportSize(gfx::Size(100, 100));
1129 1145
1130 gfx::Size overflow_size(400, 400); 1146 gfx::Size overflow_size(400, 400);
1131 ASSERT_EQ(1u, scroll_layer->children().size()); 1147 ASSERT_EQ(1u, scroll_layer->children().size());
1132 LayerImpl* overflow = scroll_layer->children()[0].get(); 1148 LayerImpl* overflow = scroll_layer->children()[0].get();
1133 overflow->SetBounds(overflow_size); 1149 overflow->SetBounds(overflow_size);
1134 overflow->SetScrollClipLayer(scroll_layer->parent()->parent()->id()); 1150 overflow->SetScrollClipLayer(scroll_layer->parent()->parent()->id());
1135 overflow->PushScrollOffsetFromMainThread(gfx::ScrollOffset()); 1151 overflow->layer_tree_impl()
1152 ->property_trees()
1153 ->scroll_tree.UpdateScrollOffsetBaseForTesting(overflow->id(),
1154 gfx::ScrollOffset());
1136 overflow->SetPosition(gfx::PointF()); 1155 overflow->SetPosition(gfx::PointF());
1137 1156
1138 SetNeedsRebuildPropertyTrees(); 1157 SetNeedsRebuildPropertyTrees();
1139 DrawFrame(); 1158 DrawFrame();
1140 gfx::Point scroll_position(10, 10); 1159 gfx::Point scroll_position(10, 10);
1141 1160
1142 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, 1161 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD,
1143 host_impl_->ScrollBegin(BeginState(scroll_position).get(), 1162 host_impl_->ScrollBegin(BeginState(scroll_position).get(),
1144 InputHandler::WHEEL) 1163 InputHandler::WHEEL)
1145 .thread); 1164 .thread);
(...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after
1471 EXPECT_EQ(gfx::Size(50, 50), container_layer->bounds()); 1490 EXPECT_EQ(gfx::Size(50, 50), container_layer->bounds());
1472 1491
1473 float min_page_scale = 1.f, max_page_scale = 4.f; 1492 float min_page_scale = 1.f, max_page_scale = 4.f;
1474 float page_scale_factor = 1.f; 1493 float page_scale_factor = 1.f;
1475 1494
1476 // The impl-based pinch zoom should adjust the max scroll position. 1495 // The impl-based pinch zoom should adjust the max scroll position.
1477 { 1496 {
1478 host_impl_->active_tree()->PushPageScaleFromMainThread( 1497 host_impl_->active_tree()->PushPageScaleFromMainThread(
1479 page_scale_factor, min_page_scale, max_page_scale); 1498 page_scale_factor, min_page_scale, max_page_scale);
1480 host_impl_->active_tree()->SetPageScaleOnActiveTree(page_scale_factor); 1499 host_impl_->active_tree()->SetPageScaleOnActiveTree(page_scale_factor);
1481 scroll_layer->SetScrollDelta(gfx::Vector2d()); 1500 SetScrollOffsetDelta(scroll_layer, gfx::Vector2d());
1482 1501
1483 float page_scale_delta = 2.f; 1502 float page_scale_delta = 2.f;
1484 1503
1485 host_impl_->ScrollBegin(BeginState(gfx::Point(50, 50)).get(), 1504 host_impl_->ScrollBegin(BeginState(gfx::Point(50, 50)).get(),
1486 InputHandler::GESTURE); 1505 InputHandler::GESTURE);
1487 host_impl_->PinchGestureBegin(); 1506 host_impl_->PinchGestureBegin();
1488 host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point(50, 50)); 1507 host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point(50, 50));
1489 host_impl_->PinchGestureEnd(); 1508 host_impl_->PinchGestureEnd();
1490 host_impl_->ScrollEnd(EndState().get()); 1509 host_impl_->ScrollEnd(EndState().get());
1491 EXPECT_FALSE(did_request_next_frame_); 1510 EXPECT_FALSE(did_request_next_frame_);
1492 EXPECT_TRUE(did_request_redraw_); 1511 EXPECT_TRUE(did_request_redraw_);
1493 EXPECT_TRUE(did_request_commit_); 1512 EXPECT_TRUE(did_request_commit_);
1494 EXPECT_EQ(gfx::Size(50, 50), container_layer->bounds()); 1513 EXPECT_EQ(gfx::Size(50, 50), container_layer->bounds());
1495 1514
1496 scoped_ptr<ScrollAndScaleSet> scroll_info = 1515 scoped_ptr<ScrollAndScaleSet> scroll_info =
1497 host_impl_->ProcessScrollDeltas(); 1516 host_impl_->ProcessScrollDeltas();
1498 EXPECT_EQ(scroll_info->page_scale_delta, page_scale_delta); 1517 EXPECT_EQ(scroll_info->page_scale_delta, page_scale_delta);
1499 1518
1500 EXPECT_EQ(gfx::ScrollOffset(75.0, 75.0).ToString(), 1519 EXPECT_EQ(gfx::ScrollOffset(75.0, 75.0).ToString(),
1501 scroll_layer->MaxScrollOffset().ToString()); 1520 scroll_layer->MaxScrollOffset().ToString());
1502 } 1521 }
1503 1522
1504 // Scrolling after a pinch gesture should always be in local space. The 1523 // Scrolling after a pinch gesture should always be in local space. The
1505 // scroll deltas have the page scale factor applied. 1524 // scroll deltas have the page scale factor applied.
1506 { 1525 {
1507 host_impl_->active_tree()->PushPageScaleFromMainThread( 1526 host_impl_->active_tree()->PushPageScaleFromMainThread(
1508 page_scale_factor, min_page_scale, max_page_scale); 1527 page_scale_factor, min_page_scale, max_page_scale);
1509 host_impl_->active_tree()->SetPageScaleOnActiveTree(page_scale_factor); 1528 host_impl_->active_tree()->SetPageScaleOnActiveTree(page_scale_factor);
1510 scroll_layer->SetScrollDelta(gfx::Vector2d()); 1529 SetScrollOffsetDelta(scroll_layer, gfx::Vector2d());
1511 1530
1512 float page_scale_delta = 2.f; 1531 float page_scale_delta = 2.f;
1513 host_impl_->ScrollBegin(BeginState(gfx::Point()).get(), 1532 host_impl_->ScrollBegin(BeginState(gfx::Point()).get(),
1514 InputHandler::GESTURE); 1533 InputHandler::GESTURE);
1515 host_impl_->PinchGestureBegin(); 1534 host_impl_->PinchGestureBegin();
1516 host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point()); 1535 host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point());
1517 host_impl_->PinchGestureEnd(); 1536 host_impl_->PinchGestureEnd();
1518 host_impl_->ScrollEnd(EndState().get()); 1537 host_impl_->ScrollEnd(EndState().get());
1519 1538
1520 gfx::Vector2d scroll_delta(0, 10); 1539 gfx::Vector2d scroll_delta(0, 10);
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after
1739 host_impl_->PinchGestureUpdate(2, anchor); 1758 host_impl_->PinchGestureUpdate(2, anchor);
1740 host_impl_->PinchGestureEnd(); 1759 host_impl_->PinchGestureEnd();
1741 host_impl_->ScrollEnd(EndState().get()); 1760 host_impl_->ScrollEnd(EndState().get());
1742 1761
1743 EXPECT_VECTOR_EQ( 1762 EXPECT_VECTOR_EQ(
1744 gfx::Vector2dF(250, 250), 1763 gfx::Vector2dF(250, 250),
1745 host_impl_->InnerViewportScrollLayer()->CurrentScrollOffset()); 1764 host_impl_->InnerViewportScrollLayer()->CurrentScrollOffset());
1746 1765
1747 // Reset. 1766 // Reset.
1748 host_impl_->active_tree()->SetPageScaleOnActiveTree(1.f); 1767 host_impl_->active_tree()->SetPageScaleOnActiveTree(1.f);
1749 host_impl_->InnerViewportScrollLayer()->SetScrollDelta(gfx::Vector2d()); 1768 SetScrollOffsetDelta(host_impl_->InnerViewportScrollLayer(), gfx::Vector2d());
1750 host_impl_->OuterViewportScrollLayer()->SetScrollDelta(gfx::Vector2d()); 1769 SetScrollOffsetDelta(host_impl_->OuterViewportScrollLayer(), gfx::Vector2d());
1751 1770
1752 // Pinch in within the margins. The scroll should stay exactly locked to the 1771 // Pinch in within the margins. The scroll should stay exactly locked to the
1753 // top and left. 1772 // top and left.
1754 anchor = gfx::Point(offsetFromEdge, offsetFromEdge); 1773 anchor = gfx::Point(offsetFromEdge, offsetFromEdge);
1755 host_impl_->ScrollBegin(BeginState(anchor).get(), InputHandler::GESTURE); 1774 host_impl_->ScrollBegin(BeginState(anchor).get(), InputHandler::GESTURE);
1756 host_impl_->PinchGestureBegin(); 1775 host_impl_->PinchGestureBegin();
1757 host_impl_->PinchGestureUpdate(2, anchor); 1776 host_impl_->PinchGestureUpdate(2, anchor);
1758 host_impl_->PinchGestureEnd(); 1777 host_impl_->PinchGestureEnd();
1759 host_impl_->ScrollEnd(EndState().get()); 1778 host_impl_->ScrollEnd(EndState().get());
1760 1779
1761 EXPECT_VECTOR_EQ( 1780 EXPECT_VECTOR_EQ(
1762 gfx::Vector2dF(0, 0), 1781 gfx::Vector2dF(0, 0),
1763 host_impl_->InnerViewportScrollLayer()->CurrentScrollOffset()); 1782 host_impl_->InnerViewportScrollLayer()->CurrentScrollOffset());
1764 1783
1765 // Reset. 1784 // Reset.
1766 host_impl_->active_tree()->SetPageScaleOnActiveTree(1.f); 1785 host_impl_->active_tree()->SetPageScaleOnActiveTree(1.f);
1767 host_impl_->InnerViewportScrollLayer()->SetScrollDelta(gfx::Vector2d()); 1786 SetScrollOffsetDelta(host_impl_->InnerViewportScrollLayer(), gfx::Vector2d());
1768 host_impl_->OuterViewportScrollLayer()->SetScrollDelta(gfx::Vector2d()); 1787 SetScrollOffsetDelta(host_impl_->OuterViewportScrollLayer(), gfx::Vector2d());
1769 1788
1770 // Pinch in just outside the margin. There should be no snapping. 1789 // Pinch in just outside the margin. There should be no snapping.
1771 offsetFromEdge = Viewport::kPinchZoomSnapMarginDips; 1790 offsetFromEdge = Viewport::kPinchZoomSnapMarginDips;
1772 anchor = gfx::Point(offsetFromEdge, offsetFromEdge); 1791 anchor = gfx::Point(offsetFromEdge, offsetFromEdge);
1773 host_impl_->ScrollBegin(BeginState(anchor).get(), InputHandler::GESTURE); 1792 host_impl_->ScrollBegin(BeginState(anchor).get(), InputHandler::GESTURE);
1774 host_impl_->PinchGestureBegin(); 1793 host_impl_->PinchGestureBegin();
1775 host_impl_->PinchGestureUpdate(2, anchor); 1794 host_impl_->PinchGestureUpdate(2, anchor);
1776 host_impl_->PinchGestureEnd(); 1795 host_impl_->PinchGestureEnd();
1777 host_impl_->ScrollEnd(EndState().get()); 1796 host_impl_->ScrollEnd(EndState().get());
1778 1797
1779 EXPECT_VECTOR_EQ( 1798 EXPECT_VECTOR_EQ(
1780 gfx::Vector2dF(50, 50), 1799 gfx::Vector2dF(50, 50),
1781 host_impl_->InnerViewportScrollLayer()->CurrentScrollOffset()); 1800 host_impl_->InnerViewportScrollLayer()->CurrentScrollOffset());
1782 1801
1783 // Reset. 1802 // Reset.
1784 host_impl_->active_tree()->SetPageScaleOnActiveTree(1.f); 1803 host_impl_->active_tree()->SetPageScaleOnActiveTree(1.f);
1785 host_impl_->InnerViewportScrollLayer()->SetScrollDelta(gfx::Vector2d()); 1804 SetScrollOffsetDelta(host_impl_->InnerViewportScrollLayer(), gfx::Vector2d());
1786 host_impl_->OuterViewportScrollLayer()->SetScrollDelta(gfx::Vector2d()); 1805 SetScrollOffsetDelta(host_impl_->OuterViewportScrollLayer(), gfx::Vector2d());
1787 1806
1788 // Pinch in just outside the margin. There should be no snapping. 1807 // Pinch in just outside the margin. There should be no snapping.
1789 offsetFromEdge = Viewport::kPinchZoomSnapMarginDips; 1808 offsetFromEdge = Viewport::kPinchZoomSnapMarginDips;
1790 anchor = gfx::Point(viewport_size.width() - offsetFromEdge, 1809 anchor = gfx::Point(viewport_size.width() - offsetFromEdge,
1791 viewport_size.height() - offsetFromEdge); 1810 viewport_size.height() - offsetFromEdge);
1792 host_impl_->ScrollBegin(BeginState(anchor).get(), InputHandler::GESTURE); 1811 host_impl_->ScrollBegin(BeginState(anchor).get(), InputHandler::GESTURE);
1793 host_impl_->PinchGestureBegin(); 1812 host_impl_->PinchGestureBegin();
1794 host_impl_->PinchGestureUpdate(2, anchor); 1813 host_impl_->PinchGestureUpdate(2, anchor);
1795 host_impl_->PinchGestureEnd(); 1814 host_impl_->PinchGestureEnd();
1796 host_impl_->ScrollEnd(EndState().get()); 1815 host_impl_->ScrollEnd(EndState().get());
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
1984 LayerImpl* scroll_layer = host_impl_->InnerViewportScrollLayer(); 2003 LayerImpl* scroll_layer = host_impl_->InnerViewportScrollLayer();
1985 DCHECK(scroll_layer); 2004 DCHECK(scroll_layer);
1986 2005
1987 float min_page_scale = 1.f; 2006 float min_page_scale = 1.f;
1988 float max_page_scale = 4.f; 2007 float max_page_scale = 4.f;
1989 2008
1990 // Basic pinch zoom in gesture 2009 // Basic pinch zoom in gesture
1991 { 2010 {
1992 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, min_page_scale, 2011 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, min_page_scale,
1993 max_page_scale); 2012 max_page_scale);
1994 scroll_layer->SetScrollDelta(gfx::Vector2d()); 2013 SetScrollOffsetDelta(scroll_layer, gfx::Vector2d());
1995 2014
1996 float page_scale_delta = 2.f; 2015 float page_scale_delta = 2.f;
1997 host_impl_->ScrollBegin(BeginState(gfx::Point(50, 50)).get(), 2016 host_impl_->ScrollBegin(BeginState(gfx::Point(50, 50)).get(),
1998 InputHandler::GESTURE); 2017 InputHandler::GESTURE);
1999 host_impl_->PinchGestureBegin(); 2018 host_impl_->PinchGestureBegin();
2000 host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point(50, 50)); 2019 host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point(50, 50));
2001 host_impl_->PinchGestureEnd(); 2020 host_impl_->PinchGestureEnd();
2002 host_impl_->ScrollEnd(EndState().get()); 2021 host_impl_->ScrollEnd(EndState().get());
2003 EXPECT_FALSE(did_request_next_frame_); 2022 EXPECT_FALSE(did_request_next_frame_);
2004 EXPECT_TRUE(did_request_redraw_); 2023 EXPECT_TRUE(did_request_redraw_);
2005 EXPECT_TRUE(did_request_commit_); 2024 EXPECT_TRUE(did_request_commit_);
2006 2025
2007 scoped_ptr<ScrollAndScaleSet> scroll_info = 2026 scoped_ptr<ScrollAndScaleSet> scroll_info =
2008 host_impl_->ProcessScrollDeltas(); 2027 host_impl_->ProcessScrollDeltas();
2009 EXPECT_EQ(scroll_info->page_scale_delta, page_scale_delta); 2028 EXPECT_EQ(scroll_info->page_scale_delta, page_scale_delta);
2010 } 2029 }
2011 2030
2012 // Zoom-in clamping 2031 // Zoom-in clamping
2013 { 2032 {
2014 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, min_page_scale, 2033 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, min_page_scale,
2015 max_page_scale); 2034 max_page_scale);
2016 scroll_layer->SetScrollDelta(gfx::Vector2d()); 2035 SetScrollOffsetDelta(scroll_layer, gfx::Vector2d());
2017 float page_scale_delta = 10.f; 2036 float page_scale_delta = 10.f;
2018 2037
2019 host_impl_->ScrollBegin(BeginState(gfx::Point(50, 50)).get(), 2038 host_impl_->ScrollBegin(BeginState(gfx::Point(50, 50)).get(),
2020 InputHandler::GESTURE); 2039 InputHandler::GESTURE);
2021 host_impl_->PinchGestureBegin(); 2040 host_impl_->PinchGestureBegin();
2022 host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point(50, 50)); 2041 host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point(50, 50));
2023 host_impl_->PinchGestureEnd(); 2042 host_impl_->PinchGestureEnd();
2024 host_impl_->ScrollEnd(EndState().get()); 2043 host_impl_->ScrollEnd(EndState().get());
2025 2044
2026 scoped_ptr<ScrollAndScaleSet> scroll_info = 2045 scoped_ptr<ScrollAndScaleSet> scroll_info =
2027 host_impl_->ProcessScrollDeltas(); 2046 host_impl_->ProcessScrollDeltas();
2028 EXPECT_EQ(scroll_info->page_scale_delta, max_page_scale); 2047 EXPECT_EQ(scroll_info->page_scale_delta, max_page_scale);
2029 } 2048 }
2030 2049
2031 // Zoom-out clamping 2050 // Zoom-out clamping
2032 { 2051 {
2033 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, min_page_scale, 2052 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, min_page_scale,
2034 max_page_scale); 2053 max_page_scale);
2035 scroll_layer->SetScrollDelta(gfx::Vector2d()); 2054 SetScrollOffsetDelta(scroll_layer, gfx::Vector2d());
2036 scroll_layer->synced_scroll_offset()->PullDeltaForMainThread(); 2055 scroll_layer->synced_scroll_offset()->PullDeltaForMainThread();
2037 scroll_layer->PushScrollOffsetFromMainThread(gfx::ScrollOffset(50, 50)); 2056 scroll_layer->layer_tree_impl()
2057 ->property_trees()
2058 ->scroll_tree.UpdateScrollOffsetBaseForTesting(
2059 scroll_layer->id(), gfx::ScrollOffset(50, 50));
2038 2060
2039 float page_scale_delta = 0.1f; 2061 float page_scale_delta = 0.1f;
2040 host_impl_->ScrollBegin(BeginState(gfx::Point()).get(), 2062 host_impl_->ScrollBegin(BeginState(gfx::Point()).get(),
2041 InputHandler::GESTURE); 2063 InputHandler::GESTURE);
2042 host_impl_->PinchGestureBegin(); 2064 host_impl_->PinchGestureBegin();
2043 host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point()); 2065 host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point());
2044 host_impl_->PinchGestureEnd(); 2066 host_impl_->PinchGestureEnd();
2045 host_impl_->ScrollEnd(EndState().get()); 2067 host_impl_->ScrollEnd(EndState().get());
2046 2068
2047 scoped_ptr<ScrollAndScaleSet> scroll_info = 2069 scoped_ptr<ScrollAndScaleSet> scroll_info =
2048 host_impl_->ProcessScrollDeltas(); 2070 host_impl_->ProcessScrollDeltas();
2049 EXPECT_EQ(scroll_info->page_scale_delta, min_page_scale); 2071 EXPECT_EQ(scroll_info->page_scale_delta, min_page_scale);
2050 2072
2051 EXPECT_TRUE(scroll_info->scrolls.empty()); 2073 EXPECT_TRUE(scroll_info->scrolls.empty());
2052 } 2074 }
2053 2075
2054 // Two-finger panning should not happen based on pinch events only 2076 // Two-finger panning should not happen based on pinch events only
2055 { 2077 {
2056 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, min_page_scale, 2078 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, min_page_scale,
2057 max_page_scale); 2079 max_page_scale);
2058 scroll_layer->SetScrollDelta(gfx::Vector2d()); 2080 SetScrollOffsetDelta(scroll_layer, gfx::Vector2d());
2059 scroll_layer->synced_scroll_offset()->PullDeltaForMainThread(); 2081 scroll_layer->synced_scroll_offset()->PullDeltaForMainThread();
2060 scroll_layer->PushScrollOffsetFromMainThread(gfx::ScrollOffset(20, 20)); 2082 scroll_layer->layer_tree_impl()
2083 ->property_trees()
2084 ->scroll_tree.UpdateScrollOffsetBaseForTesting(
2085 scroll_layer->id(), gfx::ScrollOffset(20, 20));
2061 2086
2062 float page_scale_delta = 1.f; 2087 float page_scale_delta = 1.f;
2063 host_impl_->ScrollBegin(BeginState(gfx::Point(10, 10)).get(), 2088 host_impl_->ScrollBegin(BeginState(gfx::Point(10, 10)).get(),
2064 InputHandler::GESTURE); 2089 InputHandler::GESTURE);
2065 host_impl_->PinchGestureBegin(); 2090 host_impl_->PinchGestureBegin();
2066 host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point(10, 10)); 2091 host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point(10, 10));
2067 host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point(20, 20)); 2092 host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point(20, 20));
2068 host_impl_->PinchGestureEnd(); 2093 host_impl_->PinchGestureEnd();
2069 host_impl_->ScrollEnd(EndState().get()); 2094 host_impl_->ScrollEnd(EndState().get());
2070 2095
2071 scoped_ptr<ScrollAndScaleSet> scroll_info = 2096 scoped_ptr<ScrollAndScaleSet> scroll_info =
2072 host_impl_->ProcessScrollDeltas(); 2097 host_impl_->ProcessScrollDeltas();
2073 EXPECT_EQ(scroll_info->page_scale_delta, page_scale_delta); 2098 EXPECT_EQ(scroll_info->page_scale_delta, page_scale_delta);
2074 EXPECT_TRUE(scroll_info->scrolls.empty()); 2099 EXPECT_TRUE(scroll_info->scrolls.empty());
2075 } 2100 }
2076 2101
2077 // Two-finger panning should work with interleaved scroll events 2102 // Two-finger panning should work with interleaved scroll events
2078 { 2103 {
2079 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, min_page_scale, 2104 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, min_page_scale,
2080 max_page_scale); 2105 max_page_scale);
2081 scroll_layer->SetScrollDelta(gfx::Vector2d()); 2106 SetScrollOffsetDelta(scroll_layer, gfx::Vector2d());
2082 scroll_layer->synced_scroll_offset()->PullDeltaForMainThread(); 2107 scroll_layer->synced_scroll_offset()->PullDeltaForMainThread();
2083 scroll_layer->PushScrollOffsetFromMainThread(gfx::ScrollOffset(20, 20)); 2108 scroll_layer->layer_tree_impl()
2109 ->property_trees()
2110 ->scroll_tree.UpdateScrollOffsetBaseForTesting(
2111 scroll_layer->id(), gfx::ScrollOffset(20, 20));
2084 2112
2085 float page_scale_delta = 1.f; 2113 float page_scale_delta = 1.f;
2086 host_impl_->ScrollBegin(BeginState(gfx::Point(10, 10)).get(), 2114 host_impl_->ScrollBegin(BeginState(gfx::Point(10, 10)).get(),
2087 InputHandler::GESTURE); 2115 InputHandler::GESTURE);
2088 host_impl_->PinchGestureBegin(); 2116 host_impl_->PinchGestureBegin();
2089 host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point(10, 10)); 2117 host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point(10, 10));
2090 host_impl_->ScrollBy( 2118 host_impl_->ScrollBy(
2091 UpdateState(gfx::Point(10, 10), gfx::Vector2d(-10, -10)).get()); 2119 UpdateState(gfx::Point(10, 10), gfx::Vector2d(-10, -10)).get());
2092 host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point(20, 20)); 2120 host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point(20, 20));
2093 host_impl_->PinchGestureEnd(); 2121 host_impl_->PinchGestureEnd();
2094 host_impl_->ScrollEnd(EndState().get()); 2122 host_impl_->ScrollEnd(EndState().get());
2095 2123
2096 scoped_ptr<ScrollAndScaleSet> scroll_info = 2124 scoped_ptr<ScrollAndScaleSet> scroll_info =
2097 host_impl_->ProcessScrollDeltas(); 2125 host_impl_->ProcessScrollDeltas();
2098 EXPECT_EQ(scroll_info->page_scale_delta, page_scale_delta); 2126 EXPECT_EQ(scroll_info->page_scale_delta, page_scale_delta);
2099 EXPECT_TRUE(ScrollInfoContains(*scroll_info, scroll_layer->id(), 2127 EXPECT_TRUE(ScrollInfoContains(*scroll_info, scroll_layer->id(),
2100 gfx::Vector2d(-10, -10))); 2128 gfx::Vector2d(-10, -10)));
2101 } 2129 }
2102 2130
2103 // Two-finger panning should work when starting fully zoomed out. 2131 // Two-finger panning should work when starting fully zoomed out.
2104 { 2132 {
2105 host_impl_->active_tree()->PushPageScaleFromMainThread(0.5f, 0.5f, 4.f); 2133 host_impl_->active_tree()->PushPageScaleFromMainThread(0.5f, 0.5f, 4.f);
2106 scroll_layer->SetScrollDelta(gfx::Vector2d()); 2134 SetScrollOffsetDelta(scroll_layer, gfx::Vector2d());
2107 scroll_layer->synced_scroll_offset()->PullDeltaForMainThread(); 2135 scroll_layer->synced_scroll_offset()->PullDeltaForMainThread();
2108 scroll_layer->PushScrollOffsetFromMainThread(gfx::ScrollOffset(0, 0)); 2136 scroll_layer->layer_tree_impl()
2137 ->property_trees()
2138 ->scroll_tree.UpdateScrollOffsetBaseForTesting(scroll_layer->id(),
2139 gfx::ScrollOffset(0, 0));
2109 2140
2110 host_impl_->ScrollBegin(BeginState(gfx::Point(0, 0)).get(), 2141 host_impl_->ScrollBegin(BeginState(gfx::Point(0, 0)).get(),
2111 InputHandler::GESTURE); 2142 InputHandler::GESTURE);
2112 host_impl_->PinchGestureBegin(); 2143 host_impl_->PinchGestureBegin();
2113 host_impl_->PinchGestureUpdate(2.f, gfx::Point(0, 0)); 2144 host_impl_->PinchGestureUpdate(2.f, gfx::Point(0, 0));
2114 host_impl_->PinchGestureUpdate(1.f, gfx::Point(0, 0)); 2145 host_impl_->PinchGestureUpdate(1.f, gfx::Point(0, 0));
2115 2146
2116 // Needed so layer transform includes page scale. 2147 // Needed so layer transform includes page scale.
2117 DrawFrame(); 2148 DrawFrame();
2118 2149
(...skipping 27 matching lines...) Expand all
2146 base::TimeTicks halfway_through_animation = start_time + duration / 2; 2177 base::TimeTicks halfway_through_animation = start_time + duration / 2;
2147 base::TimeTicks end_time = start_time + duration; 2178 base::TimeTicks end_time = start_time + duration;
2148 2179
2149 BeginFrameArgs begin_frame_args = 2180 BeginFrameArgs begin_frame_args =
2150 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE); 2181 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE);
2151 2182
2152 // Non-anchor zoom-in 2183 // Non-anchor zoom-in
2153 { 2184 {
2154 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, min_page_scale, 2185 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, min_page_scale,
2155 max_page_scale); 2186 max_page_scale);
2156 scroll_layer->PushScrollOffsetFromMainThread(gfx::ScrollOffset(50, 50)); 2187 scroll_layer->layer_tree_impl()
2188 ->property_trees()
2189 ->scroll_tree.UpdateScrollOffsetBaseForTesting(
2190 scroll_layer->id(), gfx::ScrollOffset(50, 50));
2157 2191
2158 did_request_redraw_ = false; 2192 did_request_redraw_ = false;
2159 did_request_next_frame_ = false; 2193 did_request_next_frame_ = false;
2160 host_impl_->active_tree()->SetPendingPageScaleAnimation( 2194 host_impl_->active_tree()->SetPendingPageScaleAnimation(
2161 scoped_ptr<PendingPageScaleAnimation>(new PendingPageScaleAnimation( 2195 scoped_ptr<PendingPageScaleAnimation>(new PendingPageScaleAnimation(
2162 gfx::Vector2d(), 2196 gfx::Vector2d(),
2163 false, 2197 false,
2164 2.f, 2198 2.f,
2165 duration))); 2199 duration)));
2166 host_impl_->ActivateSyncTree(); 2200 host_impl_->ActivateSyncTree();
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
2203 } 2237 }
2204 2238
2205 start_time += base::TimeDelta::FromSeconds(10); 2239 start_time += base::TimeDelta::FromSeconds(10);
2206 halfway_through_animation += base::TimeDelta::FromSeconds(10); 2240 halfway_through_animation += base::TimeDelta::FromSeconds(10);
2207 end_time += base::TimeDelta::FromSeconds(10); 2241 end_time += base::TimeDelta::FromSeconds(10);
2208 2242
2209 // Anchor zoom-out 2243 // Anchor zoom-out
2210 { 2244 {
2211 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, min_page_scale, 2245 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, min_page_scale,
2212 max_page_scale); 2246 max_page_scale);
2213 scroll_layer->PushScrollOffsetFromMainThread(gfx::ScrollOffset(50, 50)); 2247 scroll_layer->layer_tree_impl()
2248 ->property_trees()
2249 ->scroll_tree.UpdateScrollOffsetBaseForTesting(
2250 scroll_layer->id(), gfx::ScrollOffset(50, 50));
2214 2251
2215 did_request_redraw_ = false; 2252 did_request_redraw_ = false;
2216 did_request_next_frame_ = false; 2253 did_request_next_frame_ = false;
2217 host_impl_->active_tree()->SetPendingPageScaleAnimation( 2254 host_impl_->active_tree()->SetPendingPageScaleAnimation(
2218 scoped_ptr<PendingPageScaleAnimation> (new PendingPageScaleAnimation( 2255 scoped_ptr<PendingPageScaleAnimation> (new PendingPageScaleAnimation(
2219 gfx::Vector2d(25, 25), 2256 gfx::Vector2d(25, 25),
2220 true, 2257 true,
2221 min_page_scale, 2258 min_page_scale,
2222 duration))); 2259 duration)));
2223 host_impl_->ActivateSyncTree(); 2260 host_impl_->ActivateSyncTree();
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
2269 base::TimeTicks halfway_through_animation = start_time + duration / 2; 2306 base::TimeTicks halfway_through_animation = start_time + duration / 2;
2270 base::TimeTicks end_time = start_time + duration; 2307 base::TimeTicks end_time = start_time + duration;
2271 2308
2272 BeginFrameArgs begin_frame_args = 2309 BeginFrameArgs begin_frame_args =
2273 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE); 2310 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE);
2274 2311
2275 // Anchor zoom with unchanged page scale should not change scroll or scale. 2312 // Anchor zoom with unchanged page scale should not change scroll or scale.
2276 { 2313 {
2277 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, min_page_scale, 2314 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, min_page_scale,
2278 max_page_scale); 2315 max_page_scale);
2279 scroll_layer->PushScrollOffsetFromMainThread(gfx::ScrollOffset(50, 50)); 2316 scroll_layer->layer_tree_impl()
2317 ->property_trees()
2318 ->scroll_tree.UpdateScrollOffsetBaseForTesting(
2319 scroll_layer->id(), gfx::ScrollOffset(50, 50));
2280 2320
2281 host_impl_->active_tree()->SetPendingPageScaleAnimation( 2321 host_impl_->active_tree()->SetPendingPageScaleAnimation(
2282 scoped_ptr<PendingPageScaleAnimation>(new PendingPageScaleAnimation( 2322 scoped_ptr<PendingPageScaleAnimation>(new PendingPageScaleAnimation(
2283 gfx::Vector2d(), 2323 gfx::Vector2d(),
2284 true, 2324 true,
2285 1.f, 2325 1.f,
2286 duration))); 2326 duration)));
2287 host_impl_->ActivateSyncTree(); 2327 host_impl_->ActivateSyncTree();
2288 begin_frame_args.frame_time = start_time; 2328 begin_frame_args.frame_time = start_time;
2289 host_impl_->WillBeginImplFrame(begin_frame_args); 2329 host_impl_->WillBeginImplFrame(begin_frame_args);
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
2332 base::TimeDelta::FromSeconds(1); 2372 base::TimeDelta::FromSeconds(1);
2333 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(100); 2373 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(100);
2334 base::TimeTicks third_through_animation = start_time + duration / 3; 2374 base::TimeTicks third_through_animation = start_time + duration / 3;
2335 base::TimeTicks halfway_through_animation = start_time + duration / 2; 2375 base::TimeTicks halfway_through_animation = start_time + duration / 2;
2336 base::TimeTicks end_time = start_time + duration; 2376 base::TimeTicks end_time = start_time + duration;
2337 float target_scale = 2.f; 2377 float target_scale = 2.f;
2338 2378
2339 BeginFrameArgs begin_frame_args = 2379 BeginFrameArgs begin_frame_args =
2340 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE); 2380 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE);
2341 2381
2342 scroll_layer->PushScrollOffsetFromMainThread(gfx::ScrollOffset(50, 50)); 2382 scroll_layer->layer_tree_impl()
2383 ->property_trees()
2384 ->scroll_tree.UpdateScrollOffsetBaseForTesting(scroll_layer->id(),
2385 gfx::ScrollOffset(50, 50));
2343 2386
2344 // Make sure TakePageScaleAnimation works properly. 2387 // Make sure TakePageScaleAnimation works properly.
2345 2388
2346 host_impl_->sync_tree()->SetPendingPageScaleAnimation( 2389 host_impl_->sync_tree()->SetPendingPageScaleAnimation(
2347 scoped_ptr<PendingPageScaleAnimation>(new PendingPageScaleAnimation( 2390 scoped_ptr<PendingPageScaleAnimation>(new PendingPageScaleAnimation(
2348 gfx::Vector2d(), 2391 gfx::Vector2d(),
2349 false, 2392 false,
2350 target_scale, 2393 target_scale,
2351 duration))); 2394 duration)));
2352 scoped_ptr<PendingPageScaleAnimation> psa = 2395 scoped_ptr<PendingPageScaleAnimation> psa =
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
2444 base::TimeTicks start_time = 2487 base::TimeTicks start_time =
2445 base::TimeTicks() + base::TimeDelta::FromSeconds(1); 2488 base::TimeTicks() + base::TimeDelta::FromSeconds(1);
2446 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(100); 2489 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(100);
2447 base::TimeTicks halfway_through_animation = start_time + duration / 2; 2490 base::TimeTicks halfway_through_animation = start_time + duration / 2;
2448 base::TimeTicks end_time = start_time + duration; 2491 base::TimeTicks end_time = start_time + duration;
2449 2492
2450 BeginFrameArgs begin_frame_args = 2493 BeginFrameArgs begin_frame_args =
2451 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE); 2494 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE);
2452 2495
2453 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, 0.5f, 4.f); 2496 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, 0.5f, 4.f);
2454 scroll_layer->PushScrollOffsetFromMainThread(gfx::ScrollOffset(50, 50)); 2497 scroll_layer->layer_tree_impl()
2498 ->property_trees()
2499 ->scroll_tree.UpdateScrollOffsetBaseForTesting(scroll_layer->id(),
2500 gfx::ScrollOffset(50, 50));
2455 2501
2456 did_complete_page_scale_animation_ = false; 2502 did_complete_page_scale_animation_ = false;
2457 host_impl_->active_tree()->SetPendingPageScaleAnimation( 2503 host_impl_->active_tree()->SetPendingPageScaleAnimation(
2458 scoped_ptr<PendingPageScaleAnimation>(new PendingPageScaleAnimation( 2504 scoped_ptr<PendingPageScaleAnimation>(new PendingPageScaleAnimation(
2459 gfx::Vector2d(), false, 2.f, duration))); 2505 gfx::Vector2d(), false, 2.f, duration)));
2460 host_impl_->ActivateSyncTree(); 2506 host_impl_->ActivateSyncTree();
2461 begin_frame_args.frame_time = start_time; 2507 begin_frame_args.frame_time = start_time;
2462 host_impl_->WillBeginImplFrame(begin_frame_args); 2508 host_impl_->WillBeginImplFrame(begin_frame_args);
2463 host_impl_->Animate(); 2509 host_impl_->Animate();
2464 EXPECT_FALSE(did_complete_page_scale_animation_); 2510 EXPECT_FALSE(did_complete_page_scale_animation_);
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
2654 EXPECT_TRUE(did_request_next_frame_); 2700 EXPECT_TRUE(did_request_next_frame_);
2655 did_request_next_frame_ = false; 2701 did_request_next_frame_ = false;
2656 EXPECT_TRUE(did_request_redraw_); 2702 EXPECT_TRUE(did_request_redraw_);
2657 did_request_redraw_ = false; 2703 did_request_redraw_ = false;
2658 EXPECT_EQ(base::TimeDelta(), requested_animation_delay_); 2704 EXPECT_EQ(base::TimeDelta(), requested_animation_delay_);
2659 EXPECT_TRUE(animation_task_.Equals(base::Closure())); 2705 EXPECT_TRUE(animation_task_.Equals(base::Closure()));
2660 host_impl_->DidFinishImplFrame(); 2706 host_impl_->DidFinishImplFrame();
2661 2707
2662 // Setting the scroll offset outside a scroll should also cause the 2708 // Setting the scroll offset outside a scroll should also cause the
2663 // scrollbar to appear and to schedule a scrollbar animation. 2709 // scrollbar to appear and to schedule a scrollbar animation.
2664 host_impl_->InnerViewportScrollLayer()->PushScrollOffsetFromMainThread( 2710 if (host_impl_->active_tree()
2665 gfx::ScrollOffset(5, 5)); 2711 ->property_trees()
2712 ->scroll_tree.UpdateScrollOffsetBaseForTesting(
2713 host_impl_->InnerViewportScrollLayer()->id(),
2714 gfx::ScrollOffset(5, 5)))
2715 host_impl_->InnerViewportScrollLayer()->DidUpdateScrollOffset();
2666 EXPECT_FALSE(did_request_next_frame_); 2716 EXPECT_FALSE(did_request_next_frame_);
2667 EXPECT_FALSE(did_request_redraw_); 2717 EXPECT_FALSE(did_request_redraw_);
2668 EXPECT_EQ(base::TimeDelta::FromMilliseconds(20), 2718 EXPECT_EQ(base::TimeDelta::FromMilliseconds(20),
2669 requested_animation_delay_); 2719 requested_animation_delay_);
2670 EXPECT_FALSE(animation_task_.Equals(base::Closure())); 2720 EXPECT_FALSE(animation_task_.Equals(base::Closure()));
2671 requested_animation_delay_ = base::TimeDelta(); 2721 requested_animation_delay_ = base::TimeDelta();
2672 animation_task_ = base::Closure(); 2722 animation_task_ = base::Closure();
2673 2723
2674 // Scrolling should have stopped the animation, so we should not be getting 2724 // Scrolling should have stopped the animation, so we should not be getting
2675 // redraws. 2725 // redraws.
(...skipping 1009 matching lines...) Expand 10 before | Expand all | Expand 10 after
3685 gfx::Size(100, 100)); 3735 gfx::Size(100, 100));
3686 host_impl_->pending_tree()->BuildPropertyTreesForTesting(); 3736 host_impl_->pending_tree()->BuildPropertyTreesForTesting();
3687 host_impl_->ActivateSyncTree(); 3737 host_impl_->ActivateSyncTree();
3688 3738
3689 host_impl_->CreatePendingTree(); 3739 host_impl_->CreatePendingTree();
3690 const gfx::ScrollOffset pending_scroll = gfx::ScrollOffset(-100, -100); 3740 const gfx::ScrollOffset pending_scroll = gfx::ScrollOffset(-100, -100);
3691 LayerImpl* active_outer_layer = 3741 LayerImpl* active_outer_layer =
3692 host_impl_->active_tree()->OuterViewportScrollLayer(); 3742 host_impl_->active_tree()->OuterViewportScrollLayer();
3693 LayerImpl* pending_outer_layer = 3743 LayerImpl* pending_outer_layer =
3694 host_impl_->pending_tree()->OuterViewportScrollLayer(); 3744 host_impl_->pending_tree()->OuterViewportScrollLayer();
3695 pending_outer_layer->PushScrollOffsetFromMainThread(pending_scroll); 3745 pending_outer_layer->layer_tree_impl()
3746 ->property_trees()
3747 ->scroll_tree.UpdateScrollOffsetBaseForTesting(pending_outer_layer->id(),
3748 pending_scroll);
3696 3749
3697 host_impl_->ActivateSyncTree(); 3750 host_impl_->ActivateSyncTree();
3698 // Scrolloffsets on the active tree will be clamped after activation. 3751 // Scrolloffsets on the active tree will be clamped after activation.
3699 EXPECT_EQ(active_outer_layer->CurrentScrollOffset(), gfx::ScrollOffset(0, 0)); 3752 EXPECT_EQ(active_outer_layer->CurrentScrollOffset(), gfx::ScrollOffset(0, 0));
3700 } 3753 }
3701 3754
3702 class LayerTreeHostImplTopControlsTest : public LayerTreeHostImplTest { 3755 class LayerTreeHostImplTopControlsTest : public LayerTreeHostImplTest {
3703 public: 3756 public:
3704 LayerTreeHostImplTopControlsTest() 3757 LayerTreeHostImplTopControlsTest()
3705 // Make the clip size the same as the layer (content) size so the layer is 3758 // Make the clip size the same as the layer (content) size so the layer is
(...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after
4066 LayerImpl::Create(host_impl_->active_tree(), id + 3); 4119 LayerImpl::Create(host_impl_->active_tree(), id + 3);
4067 4120
4068 child_clip->SetBounds(sub_content_layer_size); 4121 child_clip->SetBounds(sub_content_layer_size);
4069 child->SetScrollClipLayer(child_clip->id()); 4122 child->SetScrollClipLayer(child_clip->id());
4070 child->SetBounds(sub_content_size); 4123 child->SetBounds(sub_content_size);
4071 child->SetPosition(gfx::PointF()); 4124 child->SetPosition(gfx::PointF());
4072 child->SetDrawsContent(true); 4125 child->SetDrawsContent(true);
4073 child->SetIsContainerForFixedPositionLayers(true); 4126 child->SetIsContainerForFixedPositionLayers(true);
4074 4127
4075 // scroll child to limit 4128 // scroll child to limit
4076 child->SetScrollDelta(gfx::Vector2dF(0, 100.f)); 4129 SetScrollOffsetDelta(child.get(), gfx::Vector2dF(0, 100.f));
4077 child_clip->AddChild(std::move(child)); 4130 child_clip->AddChild(std::move(child));
4078 outer_viewport_scroll_layer->AddChild(std::move(child_clip)); 4131 outer_viewport_scroll_layer->AddChild(std::move(child_clip));
4079 4132
4080 // Scroll 25px to hide top controls 4133 // Scroll 25px to hide top controls
4081 gfx::Vector2dF scroll_delta(0.f, 25.f); 4134 gfx::Vector2dF scroll_delta(0.f, 25.f);
4082 host_impl_->active_tree()->property_trees()->needs_rebuild = true; 4135 host_impl_->active_tree()->property_trees()->needs_rebuild = true;
4083 host_impl_->active_tree()->BuildPropertyTreesForTesting(); 4136 host_impl_->active_tree()->BuildPropertyTreesForTesting();
4084 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, 4137 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD,
4085 host_impl_->ScrollBegin(BeginState(gfx::Point()).get(), 4138 host_impl_->ScrollBegin(BeginState(gfx::Point()).get(),
4086 InputHandler::GESTURE) 4139 InputHandler::GESTURE)
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
4226 SetupTopControlsAndScrollLayerWithVirtualViewport( 4279 SetupTopControlsAndScrollLayerWithVirtualViewport(
4227 gfx::Size(100, 100), gfx::Size(200, 200), gfx::Size(200, 400)); 4280 gfx::Size(100, 100), gfx::Size(200, 200), gfx::Size(200, 400));
4228 DrawFrame(); 4281 DrawFrame();
4229 4282
4230 EXPECT_EQ(1.f, host_impl_->active_tree()->CurrentTopControlsShownRatio()); 4283 EXPECT_EQ(1.f, host_impl_->active_tree()->CurrentTopControlsShownRatio());
4231 4284
4232 LayerImpl* outer_scroll = host_impl_->OuterViewportScrollLayer(); 4285 LayerImpl* outer_scroll = host_impl_->OuterViewportScrollLayer();
4233 LayerImpl* inner_scroll = host_impl_->InnerViewportScrollLayer(); 4286 LayerImpl* inner_scroll = host_impl_->InnerViewportScrollLayer();
4234 4287
4235 // Scroll the viewports to max scroll offset. 4288 // Scroll the viewports to max scroll offset.
4236 outer_scroll->SetScrollDelta(gfx::Vector2dF(0, 200.f)); 4289 SetScrollOffsetDelta(outer_scroll, gfx::Vector2dF(0, 200.f));
4237 inner_scroll->SetScrollDelta(gfx::Vector2dF(100, 100.f)); 4290 SetScrollOffsetDelta(inner_scroll, gfx::Vector2dF(100, 100.f));
4238 4291
4239 gfx::ScrollOffset viewport_offset = 4292 gfx::ScrollOffset viewport_offset =
4240 host_impl_->active_tree()->TotalScrollOffset(); 4293 host_impl_->active_tree()->TotalScrollOffset();
4241 EXPECT_EQ(host_impl_->active_tree()->TotalMaxScrollOffset(), viewport_offset); 4294 EXPECT_EQ(host_impl_->active_tree()->TotalMaxScrollOffset(), viewport_offset);
4242 4295
4243 // Hide the top controls by 25px. 4296 // Hide the top controls by 25px.
4244 gfx::Vector2dF scroll_delta(0.f, 25.f); 4297 gfx::Vector2dF scroll_delta(0.f, 25.f);
4245 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, 4298 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD,
4246 host_impl_->ScrollBegin(BeginState(gfx::Point()).get(), 4299 host_impl_->ScrollBegin(BeginState(gfx::Point()).get(),
4247 InputHandler::GESTURE) 4300 InputHandler::GESTURE)
(...skipping 27 matching lines...) Expand all
4275 InputHandler::GESTURE) 4328 InputHandler::GESTURE)
4276 .thread); 4329 .thread);
4277 host_impl_->ScrollBy(UpdateState(gfx::Point(), scroll_delta).get()); 4330 host_impl_->ScrollBy(UpdateState(gfx::Point(), scroll_delta).get());
4278 host_impl_->ScrollEnd(EndState().get()); 4331 host_impl_->ScrollEnd(EndState().get());
4279 4332
4280 // The viewport offset shouldn't have changed. 4333 // The viewport offset shouldn't have changed.
4281 EXPECT_EQ(viewport_offset, 4334 EXPECT_EQ(viewport_offset,
4282 host_impl_->active_tree()->TotalScrollOffset()); 4335 host_impl_->active_tree()->TotalScrollOffset());
4283 4336
4284 // Scroll the viewports to max scroll offset. 4337 // Scroll the viewports to max scroll offset.
4285 outer_scroll->SetScrollDelta(gfx::Vector2dF(0, 200.f)); 4338 SetScrollOffsetDelta(outer_scroll, gfx::Vector2dF(0, 200.f));
4286 inner_scroll->SetScrollDelta(gfx::Vector2dF(100, 100.f)); 4339 SetScrollOffsetDelta(inner_scroll, gfx::Vector2dF(100, 100.f));
4287 EXPECT_EQ(host_impl_->active_tree()->TotalMaxScrollOffset(), 4340 EXPECT_EQ(host_impl_->active_tree()->TotalMaxScrollOffset(),
4288 host_impl_->active_tree()->TotalScrollOffset()); 4341 host_impl_->active_tree()->TotalScrollOffset());
4289 } 4342 }
4290 4343
4291 // Test that the top controls coming in and out maintains the same aspect ratio 4344 // Test that the top controls coming in and out maintains the same aspect ratio
4292 // between the inner and outer viewports. 4345 // between the inner and outer viewports.
4293 TEST_F(LayerTreeHostImplTopControlsTest, TopControlsAspectRatio) { 4346 TEST_F(LayerTreeHostImplTopControlsTest, TopControlsAspectRatio) {
4294 SetupTopControlsAndScrollLayerWithVirtualViewport( 4347 SetupTopControlsAndScrollLayerWithVirtualViewport(
4295 gfx::Size(100, 100), gfx::Size(200, 200), gfx::Size(200, 400)); 4348 gfx::Size(100, 100), gfx::Size(200, 200), gfx::Size(200, 400));
4296 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, 0.5f, 2.f); 4349 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, 0.5f, 2.f);
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
4364 host_impl_->ScrollBy(UpdateState(gfx::Point(), scroll_delta).get()); 4417 host_impl_->ScrollBy(UpdateState(gfx::Point(), scroll_delta).get());
4365 4418
4366 EXPECT_EQ(0, host_impl_->top_controls_manager()->ContentTopOffset()); 4419 EXPECT_EQ(0, host_impl_->top_controls_manager()->ContentTopOffset());
4367 EXPECT_EQ(host_impl_->InnerViewportScrollLayer(), 4420 EXPECT_EQ(host_impl_->InnerViewportScrollLayer(),
4368 host_impl_->CurrentlyScrollingLayer()); 4421 host_impl_->CurrentlyScrollingLayer());
4369 4422
4370 host_impl_->ScrollEnd(EndState().get()); 4423 host_impl_->ScrollEnd(EndState().get());
4371 4424
4372 // Position the viewports such that the inner viewport will be scrolled. 4425 // Position the viewports such that the inner viewport will be scrolled.
4373 gfx::Vector2dF inner_viewport_offset(0.f, 25.f); 4426 gfx::Vector2dF inner_viewport_offset(0.f, 25.f);
4374 host_impl_->OuterViewportScrollLayer()->SetScrollDelta(gfx::Vector2dF()); 4427 SetScrollOffsetDelta(host_impl_->OuterViewportScrollLayer(),
4375 host_impl_->InnerViewportScrollLayer()->SetScrollDelta(inner_viewport_offset); 4428 gfx::Vector2dF());
4429 SetScrollOffsetDelta(host_impl_->InnerViewportScrollLayer(),
4430 inner_viewport_offset);
4376 4431
4377 scroll_delta = gfx::Vector2dF(0.f, -65.f); 4432 scroll_delta = gfx::Vector2dF(0.f, -65.f);
4378 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, 4433 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD,
4379 host_impl_->ScrollBegin(BeginState(gfx::Point()).get(), 4434 host_impl_->ScrollBegin(BeginState(gfx::Point()).get(),
4380 InputHandler::GESTURE) 4435 InputHandler::GESTURE)
4381 .thread); 4436 .thread);
4382 host_impl_->ScrollBy(UpdateState(gfx::Point(), scroll_delta).get()); 4437 host_impl_->ScrollBy(UpdateState(gfx::Point(), scroll_delta).get());
4383 4438
4384 EXPECT_EQ(top_controls_height_, 4439 EXPECT_EQ(top_controls_height_,
4385 host_impl_->top_controls_manager()->ContentTopOffset()); 4440 host_impl_->top_controls_manager()->ContentTopOffset());
(...skipping 417 matching lines...) Expand 10 before | Expand all | Expand 10 after
4803 scoped_ptr<LayerImpl> child = 4858 scoped_ptr<LayerImpl> child =
4804 CreateScrollableLayer(2, content_size, root.get()); 4859 CreateScrollableLayer(2, content_size, root.get());
4805 LayerImpl* grand_child_layer = grand_child.get(); 4860 LayerImpl* grand_child_layer = grand_child.get();
4806 child->AddChild(std::move(grand_child)); 4861 child->AddChild(std::move(grand_child));
4807 4862
4808 LayerImpl* child_layer = child.get(); 4863 LayerImpl* child_layer = child.get();
4809 root->AddChild(std::move(child)); 4864 root->AddChild(std::move(child));
4810 host_impl_->active_tree()->SetRootLayer(std::move(root)); 4865 host_impl_->active_tree()->SetRootLayer(std::move(root));
4811 host_impl_->active_tree()->DidBecomeActive(); 4866 host_impl_->active_tree()->DidBecomeActive();
4812 host_impl_->SetViewportSize(surface_size); 4867 host_impl_->SetViewportSize(surface_size);
4813 grand_child_layer->PushScrollOffsetFromMainThread(gfx::ScrollOffset(0, 5)); 4868 grand_child_layer->layer_tree_impl()
4814 child_layer->PushScrollOffsetFromMainThread(gfx::ScrollOffset(3, 0)); 4869 ->property_trees()
4870 ->scroll_tree.UpdateScrollOffsetBaseForTesting(grand_child_layer->id(),
4871 gfx::ScrollOffset(0, 5));
4872 child_layer->layer_tree_impl()
4873 ->property_trees()
4874 ->scroll_tree.UpdateScrollOffsetBaseForTesting(child_layer->id(),
4875 gfx::ScrollOffset(3, 0));
4815 4876
4816 SetNeedsRebuildPropertyTrees(); 4877 SetNeedsRebuildPropertyTrees();
4817 DrawFrame(); 4878 DrawFrame();
4818 { 4879 {
4819 gfx::Vector2d scroll_delta(-8, -7); 4880 gfx::Vector2d scroll_delta(-8, -7);
4820 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, 4881 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD,
4821 host_impl_->ScrollBegin(BeginState(gfx::Point()).get(), 4882 host_impl_->ScrollBegin(BeginState(gfx::Point()).get(),
4822 InputHandler::WHEEL) 4883 InputHandler::WHEEL)
4823 .thread); 4884 .thread);
4824 host_impl_->ScrollBy(UpdateState(gfx::Point(), scroll_delta).get()); 4885 host_impl_->ScrollBy(UpdateState(gfx::Point(), scroll_delta).get());
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
4865 root_scrolling->AddChild(std::move(child)); 4926 root_scrolling->AddChild(std::move(child));
4866 root_clip->AddChild(std::move(root_scrolling)); 4927 root_clip->AddChild(std::move(root_scrolling));
4867 EXPECT_EQ(viewport_size, root_clip->bounds()); 4928 EXPECT_EQ(viewport_size, root_clip->bounds());
4868 root_ptr->AddChild(std::move(root_clip)); 4929 root_ptr->AddChild(std::move(root_clip));
4869 host_impl_->active_tree()->SetRootLayer(std::move(root_ptr)); 4930 host_impl_->active_tree()->SetRootLayer(std::move(root_ptr));
4870 host_impl_->active_tree()->SetViewportLayersFromIds(Layer::INVALID_ID, 1, 3, 4931 host_impl_->active_tree()->SetViewportLayersFromIds(Layer::INVALID_ID, 1, 3,
4871 Layer::INVALID_ID); 4932 Layer::INVALID_ID);
4872 host_impl_->active_tree()->DidBecomeActive(); 4933 host_impl_->active_tree()->DidBecomeActive();
4873 host_impl_->SetViewportSize(viewport_size); 4934 host_impl_->SetViewportSize(viewport_size);
4874 4935
4875 grand_child_layer->PushScrollOffsetFromMainThread(gfx::ScrollOffset(0, 2)); 4936 grand_child_layer->layer_tree_impl()
4876 child_layer->PushScrollOffsetFromMainThread(gfx::ScrollOffset(0, 3)); 4937 ->property_trees()
4938 ->scroll_tree.UpdateScrollOffsetBaseForTesting(grand_child_layer->id(),
4939 gfx::ScrollOffset(0, 2));
4940 child_layer->layer_tree_impl()
4941 ->property_trees()
4942 ->scroll_tree.UpdateScrollOffsetBaseForTesting(child_layer->id(),
4943 gfx::ScrollOffset(0, 3));
4877 4944
4878 SetNeedsRebuildPropertyTrees(); 4945 SetNeedsRebuildPropertyTrees();
4879 DrawFrame(); 4946 DrawFrame();
4880 { 4947 {
4881 gfx::Vector2d scroll_delta(0, -10); 4948 gfx::Vector2d scroll_delta(0, -10);
4882 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, 4949 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD,
4883 host_impl_->ScrollBegin(BeginState(gfx::Point()).get(), 4950 host_impl_->ScrollBegin(BeginState(gfx::Point()).get(),
4884 InputHandler::NON_BUBBLING_GESTURE) 4951 InputHandler::NON_BUBBLING_GESTURE)
4885 .thread); 4952 .thread);
4886 host_impl_->ScrollBy(UpdateState(gfx::Point(), scroll_delta).get()); 4953 host_impl_->ScrollBy(UpdateState(gfx::Point(), scroll_delta).get());
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
5085 .thread); 5152 .thread);
5086 host_impl_->ScrollBy(UpdateState(gfx::Point(), gesture_scroll_delta).get()); 5153 host_impl_->ScrollBy(UpdateState(gfx::Point(), gesture_scroll_delta).get());
5087 host_impl_->ScrollEnd(EndState().get()); 5154 host_impl_->ScrollEnd(EndState().get());
5088 5155
5089 // The layer should have scrolled down in its local coordinates. 5156 // The layer should have scrolled down in its local coordinates.
5090 scoped_ptr<ScrollAndScaleSet> scroll_info = host_impl_->ProcessScrollDeltas(); 5157 scoped_ptr<ScrollAndScaleSet> scroll_info = host_impl_->ProcessScrollDeltas();
5091 EXPECT_TRUE(ScrollInfoContains(*scroll_info.get(), scroll_layer->id(), 5158 EXPECT_TRUE(ScrollInfoContains(*scroll_info.get(), scroll_layer->id(),
5092 gfx::Vector2d(0, gesture_scroll_delta.x()))); 5159 gfx::Vector2d(0, gesture_scroll_delta.x())));
5093 5160
5094 // Reset and scroll down with the wheel. 5161 // Reset and scroll down with the wheel.
5095 scroll_layer->SetScrollDelta(gfx::Vector2dF()); 5162 SetScrollOffsetDelta(scroll_layer, gfx::Vector2dF());
5096 gfx::Vector2d wheel_scroll_delta(0, 10); 5163 gfx::Vector2d wheel_scroll_delta(0, 10);
5097 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, 5164 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD,
5098 host_impl_->ScrollBegin(BeginState(gfx::Point()).get(), 5165 host_impl_->ScrollBegin(BeginState(gfx::Point()).get(),
5099 InputHandler::WHEEL) 5166 InputHandler::WHEEL)
5100 .thread); 5167 .thread);
5101 host_impl_->ScrollBy(UpdateState(gfx::Point(), wheel_scroll_delta).get()); 5168 host_impl_->ScrollBy(UpdateState(gfx::Point(), wheel_scroll_delta).get());
5102 host_impl_->ScrollEnd(EndState().get()); 5169 host_impl_->ScrollEnd(EndState().get());
5103 5170
5104 // The layer should have scrolled down in its local coordinates. 5171 // The layer should have scrolled down in its local coordinates.
5105 scroll_info = host_impl_->ProcessScrollDeltas(); 5172 scroll_info = host_impl_->ProcessScrollDeltas();
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
5159 host_impl_->ProcessScrollDeltas(); 5226 host_impl_->ProcessScrollDeltas();
5160 EXPECT_TRUE(ScrollInfoContains(*scroll_info.get(), child_layer_id, 5227 EXPECT_TRUE(ScrollInfoContains(*scroll_info.get(), child_layer_id,
5161 expected_scroll_delta)); 5228 expected_scroll_delta));
5162 5229
5163 // The root scroll layer should not have scrolled, because the input delta 5230 // The root scroll layer should not have scrolled, because the input delta
5164 // was close to the layer's axis of movement. 5231 // was close to the layer's axis of movement.
5165 EXPECT_EQ(scroll_info->scrolls.size(), 1u); 5232 EXPECT_EQ(scroll_info->scrolls.size(), 1u);
5166 } 5233 }
5167 { 5234 {
5168 // Now reset and scroll the same amount horizontally. 5235 // Now reset and scroll the same amount horizontally.
5169 child_ptr->SetScrollDelta(gfx::Vector2dF()); 5236 SetScrollOffsetDelta(child_ptr, gfx::Vector2dF());
5170 gfx::Vector2d gesture_scroll_delta(10, 0); 5237 gfx::Vector2d gesture_scroll_delta(10, 0);
5171 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, 5238 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD,
5172 host_impl_->ScrollBegin(BeginState(gfx::Point(1, 1)).get(), 5239 host_impl_->ScrollBegin(BeginState(gfx::Point(1, 1)).get(),
5173 InputHandler::GESTURE) 5240 InputHandler::GESTURE)
5174 .thread); 5241 .thread);
5175 host_impl_->ScrollBy(UpdateState(gfx::Point(), gesture_scroll_delta).get()); 5242 host_impl_->ScrollBy(UpdateState(gfx::Point(), gesture_scroll_delta).get());
5176 host_impl_->ScrollEnd(EndState().get()); 5243 host_impl_->ScrollEnd(EndState().get());
5177 5244
5178 // The child layer shouldn't have scrolled. 5245 // The child layer shouldn't have scrolled.
5179 gfx::Vector2d expected_scroll_delta( 5246 gfx::Vector2d expected_scroll_delta(
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
5240 expected_scroll_deltas[2] = gfx::Vector2d(4, 0); 5307 expected_scroll_deltas[2] = gfx::Vector2d(4, 0);
5241 expected_scroll_deltas[3] = gfx::Vector2d(4, 0); 5308 expected_scroll_deltas[3] = gfx::Vector2d(4, 0);
5242 5309
5243 gfx::Point viewport_point(1, 1); 5310 gfx::Point viewport_point(1, 1);
5244 5311
5245 SetNeedsRebuildPropertyTrees(); 5312 SetNeedsRebuildPropertyTrees();
5246 // Scroll in screen coordinates with a gesture. Each scroll starts 5313 // Scroll in screen coordinates with a gesture. Each scroll starts
5247 // where the previous scroll ended, but the scroll position is reset 5314 // where the previous scroll ended, but the scroll position is reset
5248 // for each scroll. 5315 // for each scroll.
5249 for (int i = 0; i < 4; ++i) { 5316 for (int i = 0; i < 4; ++i) {
5250 child_ptr->SetScrollDelta(gfx::Vector2dF()); 5317 SetScrollOffsetDelta(child_ptr, gfx::Vector2dF());
5251 DrawFrame(); 5318 DrawFrame();
5252 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, 5319 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD,
5253 host_impl_->ScrollBegin(BeginState(viewport_point).get(), 5320 host_impl_->ScrollBegin(BeginState(viewport_point).get(),
5254 InputHandler::GESTURE) 5321 InputHandler::GESTURE)
5255 .thread); 5322 .thread);
5256 host_impl_->ScrollBy( 5323 host_impl_->ScrollBy(
5257 UpdateState(viewport_point, gesture_scroll_deltas[i]).get()); 5324 UpdateState(viewport_point, gesture_scroll_deltas[i]).get());
5258 viewport_point += gesture_scroll_deltas[i]; 5325 viewport_point += gesture_scroll_deltas[i];
5259 host_impl_->ScrollEnd(EndState().get()); 5326 host_impl_->ScrollEnd(EndState().get());
5260 5327
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
5292 host_impl_->ScrollBy(UpdateState(gfx::Point(), scroll_delta).get()); 5359 host_impl_->ScrollBy(UpdateState(gfx::Point(), scroll_delta).get());
5293 host_impl_->ScrollEnd(EndState().get()); 5360 host_impl_->ScrollEnd(EndState().get());
5294 5361
5295 // The layer should have scrolled down in its local coordinates, but half the 5362 // The layer should have scrolled down in its local coordinates, but half the
5296 // amount. 5363 // amount.
5297 scoped_ptr<ScrollAndScaleSet> scroll_info = host_impl_->ProcessScrollDeltas(); 5364 scoped_ptr<ScrollAndScaleSet> scroll_info = host_impl_->ProcessScrollDeltas();
5298 EXPECT_TRUE(ScrollInfoContains(*scroll_info.get(), scroll_layer->id(), 5365 EXPECT_TRUE(ScrollInfoContains(*scroll_info.get(), scroll_layer->id(),
5299 gfx::Vector2d(0, scroll_delta.y() / scale))); 5366 gfx::Vector2d(0, scroll_delta.y() / scale)));
5300 5367
5301 // Reset and scroll down with the wheel. 5368 // Reset and scroll down with the wheel.
5302 scroll_layer->SetScrollDelta(gfx::Vector2dF()); 5369 SetScrollOffsetDelta(scroll_layer, gfx::Vector2dF());
5303 gfx::Vector2d wheel_scroll_delta(0, 10); 5370 gfx::Vector2d wheel_scroll_delta(0, 10);
5304 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, 5371 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD,
5305 host_impl_->ScrollBegin(BeginState(gfx::Point()).get(), 5372 host_impl_->ScrollBegin(BeginState(gfx::Point()).get(),
5306 InputHandler::WHEEL) 5373 InputHandler::WHEEL)
5307 .thread); 5374 .thread);
5308 host_impl_->ScrollBy(UpdateState(gfx::Point(), wheel_scroll_delta).get()); 5375 host_impl_->ScrollBy(UpdateState(gfx::Point(), wheel_scroll_delta).get());
5309 host_impl_->ScrollEnd(EndState().get()); 5376 host_impl_->ScrollEnd(EndState().get());
5310 5377
5311 // It should apply the scale factor to the scroll delta for the wheel event. 5378 // It should apply the scale factor to the scroll delta for the wheel event.
5312 scroll_info = host_impl_->ProcessScrollDeltas(); 5379 scroll_info = host_impl_->ProcessScrollDeltas();
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
5400 host_impl_->SetViewportSize(gfx::Size(10, 20)); 5467 host_impl_->SetViewportSize(gfx::Size(10, 20));
5401 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 100)); 5468 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 100));
5402 LayerImpl* clip_layer = scroll_layer->parent()->parent(); 5469 LayerImpl* clip_layer = scroll_layer->parent()->parent();
5403 SetNeedsRebuildPropertyTrees(); 5470 SetNeedsRebuildPropertyTrees();
5404 clip_layer->SetBounds(gfx::Size(10, 20)); 5471 clip_layer->SetBounds(gfx::Size(10, 20));
5405 RebuildPropertyTrees(); 5472 RebuildPropertyTrees();
5406 5473
5407 host_impl_->BindToClient(&scroll_watcher); 5474 host_impl_->BindToClient(&scroll_watcher);
5408 5475
5409 gfx::Vector2dF initial_scroll_delta(10.f, 10.f); 5476 gfx::Vector2dF initial_scroll_delta(10.f, 10.f);
5410 scroll_layer->PushScrollOffsetFromMainThread(gfx::ScrollOffset()); 5477 scroll_layer->layer_tree_impl()
5411 scroll_layer->SetScrollDelta(initial_scroll_delta); 5478 ->property_trees()
5479 ->scroll_tree.UpdateScrollOffsetBaseForTesting(scroll_layer->id(),
5480 gfx::ScrollOffset());
5481 SetScrollOffsetDelta(scroll_layer, initial_scroll_delta);
5412 5482
5413 EXPECT_EQ(gfx::ScrollOffset(), scroll_watcher.last_set_scroll_offset()); 5483 EXPECT_EQ(gfx::ScrollOffset(), scroll_watcher.last_set_scroll_offset());
5414 5484
5415 // Requesting an update results in the current scroll offset being set. 5485 // Requesting an update results in the current scroll offset being set.
5416 host_impl_->RequestUpdateForSynchronousInputHandler(); 5486 host_impl_->RequestUpdateForSynchronousInputHandler();
5417 EXPECT_EQ(gfx::ScrollOffset(initial_scroll_delta), 5487 EXPECT_EQ(gfx::ScrollOffset(initial_scroll_delta),
5418 scroll_watcher.last_set_scroll_offset()); 5488 scroll_watcher.last_set_scroll_offset());
5419 5489
5420 // Setting the delegate results in the scrollable_size, max_scroll_offset, 5490 // Setting the delegate results in the scrollable_size, max_scroll_offset,
5421 // page_scale_factor and {min|max}_page_scale_factor being set. 5491 // page_scale_factor and {min|max}_page_scale_factor being set.
(...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after
5672 CreateScrollableLayer(3, surface_size, root_clip.get()); 5742 CreateScrollableLayer(3, surface_size, root_clip.get());
5673 5743
5674 scoped_ptr<LayerImpl> child = 5744 scoped_ptr<LayerImpl> child =
5675 CreateScrollableLayer(2, surface_size, root_clip.get()); 5745 CreateScrollableLayer(2, surface_size, root_clip.get());
5676 LayerImpl* grand_child_layer = grand_child.get(); 5746 LayerImpl* grand_child_layer = grand_child.get();
5677 child->AddChild(std::move(grand_child)); 5747 child->AddChild(std::move(grand_child));
5678 5748
5679 LayerImpl* child_layer = child.get(); 5749 LayerImpl* child_layer = child.get();
5680 root->AddChild(std::move(child)); 5750 root->AddChild(std::move(child));
5681 root_clip->AddChild(std::move(root)); 5751 root_clip->AddChild(std::move(root));
5682 child_layer->PushScrollOffsetFromMainThread(gfx::ScrollOffset(0, 3)); 5752 child_layer->layer_tree_impl()
5683 grand_child_layer->PushScrollOffsetFromMainThread(gfx::ScrollOffset(0, 2)); 5753 ->property_trees()
5754 ->scroll_tree.UpdateScrollOffsetBaseForTesting(child_layer->id(),
5755 gfx::ScrollOffset(0, 3));
5756 grand_child_layer->layer_tree_impl()
5757 ->property_trees()
5758 ->scroll_tree.UpdateScrollOffsetBaseForTesting(grand_child_layer->id(),
5759 gfx::ScrollOffset(0, 2));
5684 host_impl_->active_tree()->SetRootLayer(std::move(root_clip)); 5760 host_impl_->active_tree()->SetRootLayer(std::move(root_clip));
5685 host_impl_->active_tree()->DidBecomeActive(); 5761 host_impl_->active_tree()->DidBecomeActive();
5686 host_impl_->SetViewportSize(surface_size); 5762 host_impl_->SetViewportSize(surface_size);
5687 SetNeedsRebuildPropertyTrees(); 5763 SetNeedsRebuildPropertyTrees();
5688 DrawFrame(); 5764 DrawFrame();
5689 { 5765 {
5690 gfx::Vector2d scroll_delta(0, -10); 5766 gfx::Vector2d scroll_delta(0, -10);
5691 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, 5767 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD,
5692 host_impl_->ScrollBegin(BeginState(gfx::Point()).get(), 5768 host_impl_->ScrollBegin(BeginState(gfx::Point()).get(),
5693 InputHandler::NON_BUBBLING_GESTURE) 5769 InputHandler::NON_BUBBLING_GESTURE)
(...skipping 1513 matching lines...) Expand 10 before | Expand all | Expand 10 after
7207 3, raster_source); 7283 3, raster_source);
7208 LayerImpl* content_layer = scoped_content_layer.get(); 7284 LayerImpl* content_layer = scoped_content_layer.get();
7209 scrolling_layer->AddChild(std::move(scoped_content_layer)); 7285 scrolling_layer->AddChild(std::move(scoped_content_layer));
7210 content_layer->SetBounds(content_layer_bounds); 7286 content_layer->SetBounds(content_layer_bounds);
7211 content_layer->SetDrawsContent(true); 7287 content_layer->SetDrawsContent(true);
7212 7288
7213 root->SetBounds(root_size); 7289 root->SetBounds(root_size);
7214 7290
7215 gfx::ScrollOffset scroll_offset(100000, 0); 7291 gfx::ScrollOffset scroll_offset(100000, 0);
7216 scrolling_layer->SetScrollClipLayer(root->id()); 7292 scrolling_layer->SetScrollClipLayer(root->id());
7217 scrolling_layer->PushScrollOffsetFromMainThread(scroll_offset); 7293 scrolling_layer->layer_tree_impl()
7294 ->property_trees()
7295 ->scroll_tree.UpdateScrollOffsetBaseForTesting(scrolling_layer->id(),
7296 scroll_offset);
7218 7297
7219 host_impl_->pending_tree()->BuildPropertyTreesForTesting(); 7298 host_impl_->pending_tree()->BuildPropertyTreesForTesting();
7220 host_impl_->ActivateSyncTree(); 7299 host_impl_->ActivateSyncTree();
7221 7300
7222 bool update_lcd_text = false; 7301 bool update_lcd_text = false;
7223 host_impl_->active_tree()->UpdateDrawProperties(update_lcd_text); 7302 host_impl_->active_tree()->UpdateDrawProperties(update_lcd_text);
7224 ASSERT_EQ(1u, host_impl_->active_tree()->RenderSurfaceLayerList().size()); 7303 ASSERT_EQ(1u, host_impl_->active_tree()->RenderSurfaceLayerList().size());
7225 7304
7226 LayerTreeHostImpl::FrameData frame; 7305 LayerTreeHostImpl::FrameData frame;
7227 EXPECT_EQ(DRAW_SUCCESS, PrepareToDrawFrame(&frame)); 7306 EXPECT_EQ(DRAW_SUCCESS, PrepareToDrawFrame(&frame));
(...skipping 380 matching lines...) Expand 10 before | Expand all | Expand 10 after
7608 // Scroll a child layer beyond its maximum scroll range and make sure the 7687 // Scroll a child layer beyond its maximum scroll range and make sure the
7609 // the scroll doesn't bubble up to the parent layer. 7688 // the scroll doesn't bubble up to the parent layer.
7610 gfx::Size surface_size(10, 10); 7689 gfx::Size surface_size(10, 10);
7611 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); 7690 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1);
7612 root->SetForceRenderSurface(true); 7691 root->SetForceRenderSurface(true);
7613 scoped_ptr<LayerImpl> root_scrolling = 7692 scoped_ptr<LayerImpl> root_scrolling =
7614 CreateScrollableLayer(2, surface_size, root.get()); 7693 CreateScrollableLayer(2, surface_size, root.get());
7615 7694
7616 scoped_ptr<LayerImpl> grand_child = 7695 scoped_ptr<LayerImpl> grand_child =
7617 CreateScrollableLayer(4, surface_size, root.get()); 7696 CreateScrollableLayer(4, surface_size, root.get());
7618 grand_child->PushScrollOffsetFromMainThread(gfx::ScrollOffset(0, 2)); 7697 grand_child->layer_tree_impl()
7698 ->property_trees()
7699 ->scroll_tree.UpdateScrollOffsetBaseForTesting(grand_child->id(),
7700 gfx::ScrollOffset(0, 2));
7619 7701
7620 scoped_ptr<LayerImpl> child = 7702 scoped_ptr<LayerImpl> child =
7621 CreateScrollableLayer(3, surface_size, root.get()); 7703 CreateScrollableLayer(3, surface_size, root.get());
7622 child->PushScrollOffsetFromMainThread(gfx::ScrollOffset(0, 4)); 7704 child->layer_tree_impl()
7705 ->property_trees()
7706 ->scroll_tree.UpdateScrollOffsetBaseForTesting(child->id(),
7707 gfx::ScrollOffset(0, 4));
7623 child->AddChild(std::move(grand_child)); 7708 child->AddChild(std::move(grand_child));
7624 7709
7625 root_scrolling->AddChild(std::move(child)); 7710 root_scrolling->AddChild(std::move(child));
7626 root->AddChild(std::move(root_scrolling)); 7711 root->AddChild(std::move(root_scrolling));
7627 host_impl_->active_tree()->SetRootLayer(std::move(root)); 7712 host_impl_->active_tree()->SetRootLayer(std::move(root));
7628 host_impl_->active_tree()->DidBecomeActive(); 7713 host_impl_->active_tree()->DidBecomeActive();
7629 host_impl_->SetViewportSize(surface_size); 7714 host_impl_->SetViewportSize(surface_size);
7630 SetNeedsRebuildPropertyTrees(); 7715 SetNeedsRebuildPropertyTrees();
7631 DrawFrame(); 7716 DrawFrame();
7632 { 7717 {
(...skipping 533 matching lines...) Expand 10 before | Expand all | Expand 10 after
8166 host_impl_->active_tree()->SetCurrentTopControlsShownRatio(1.f); 8251 host_impl_->active_tree()->SetCurrentTopControlsShownRatio(1.f);
8167 } 8252 }
8168 8253
8169 protected: 8254 protected:
8170 static const int top_controls_height_; 8255 static const int top_controls_height_;
8171 }; 8256 };
8172 8257
8173 const int LayerTreeHostImplWithTopControlsTest::top_controls_height_ = 50; 8258 const int LayerTreeHostImplWithTopControlsTest::top_controls_height_ = 50;
8174 8259
8175 TEST_F(LayerTreeHostImplWithTopControlsTest, NoIdleAnimations) { 8260 TEST_F(LayerTreeHostImplWithTopControlsTest, NoIdleAnimations) {
8176 SetupScrollAndContentsLayers(gfx::Size(100, 100)) 8261 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 100));
8177 ->PushScrollOffsetFromMainThread(gfx::ScrollOffset(0, 10)); 8262 scroll_layer->layer_tree_impl()
8263 ->property_trees()
8264 ->scroll_tree.UpdateScrollOffsetBaseForTesting(scroll_layer->id(),
8265 gfx::ScrollOffset(0, 10));
8178 BeginFrameArgs begin_frame_args = 8266 BeginFrameArgs begin_frame_args =
8179 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE); 8267 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE);
8180 host_impl_->WillBeginImplFrame(begin_frame_args); 8268 host_impl_->WillBeginImplFrame(begin_frame_args);
8181 host_impl_->Animate(); 8269 host_impl_->Animate();
8182 EXPECT_FALSE(did_request_redraw_); 8270 EXPECT_FALSE(did_request_redraw_);
8183 host_impl_->DidFinishImplFrame(); 8271 host_impl_->DidFinishImplFrame();
8184 } 8272 }
8185 8273
8186 TEST_F(LayerTreeHostImplWithTopControlsTest, TopControlsHeightIsCommitted) { 8274 TEST_F(LayerTreeHostImplWithTopControlsTest, TopControlsHeightIsCommitted) {
8187 SetupScrollAndContentsLayers(gfx::Size(100, 100)); 8275 SetupScrollAndContentsLayers(gfx::Size(100, 100));
(...skipping 14 matching lines...) Expand all
8202 host_impl_->ActivateSyncTree(); 8290 host_impl_->ActivateSyncTree();
8203 EXPECT_EQ(0.f, host_impl_->top_controls_manager()->ControlsTopOffset()); 8291 EXPECT_EQ(0.f, host_impl_->top_controls_manager()->ControlsTopOffset());
8204 8292
8205 host_impl_->CreatePendingTree(); 8293 host_impl_->CreatePendingTree();
8206 host_impl_->sync_tree()->set_top_controls_height(50); 8294 host_impl_->sync_tree()->set_top_controls_height(50);
8207 host_impl_->ActivateSyncTree(); 8295 host_impl_->ActivateSyncTree();
8208 EXPECT_EQ(0.f, host_impl_->top_controls_manager()->ControlsTopOffset()); 8296 EXPECT_EQ(0.f, host_impl_->top_controls_manager()->ControlsTopOffset());
8209 } 8297 }
8210 8298
8211 TEST_F(LayerTreeHostImplWithTopControlsTest, TopControlsAnimationScheduling) { 8299 TEST_F(LayerTreeHostImplWithTopControlsTest, TopControlsAnimationScheduling) {
8212 SetupScrollAndContentsLayers(gfx::Size(100, 100)) 8300 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 100));
8213 ->PushScrollOffsetFromMainThread(gfx::ScrollOffset(0, 10)); 8301 scroll_layer->layer_tree_impl()
8302 ->property_trees()
8303 ->scroll_tree.UpdateScrollOffsetBaseForTesting(scroll_layer->id(),
8304 gfx::ScrollOffset(0, 10));
8214 host_impl_->DidChangeTopControlsPosition(); 8305 host_impl_->DidChangeTopControlsPosition();
8215 EXPECT_TRUE(did_request_next_frame_); 8306 EXPECT_TRUE(did_request_next_frame_);
8216 EXPECT_TRUE(did_request_redraw_); 8307 EXPECT_TRUE(did_request_redraw_);
8217 } 8308 }
8218 8309
8219 TEST_F(LayerTreeHostImplWithTopControlsTest, ScrollHandledByTopControls) { 8310 TEST_F(LayerTreeHostImplWithTopControlsTest, ScrollHandledByTopControls) {
8220 InputHandlerScrollResult result; 8311 InputHandlerScrollResult result;
8221 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 200)); 8312 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 200));
8222 host_impl_->SetViewportSize(gfx::Size(100, 100)); 8313 host_impl_->SetViewportSize(gfx::Size(100, 100));
8223 host_impl_->top_controls_manager()->UpdateTopControlsState( 8314 host_impl_->top_controls_manager()->UpdateTopControlsState(
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
8400 } 8491 }
8401 EXPECT_FALSE(host_impl_->top_controls_manager()->has_animation()); 8492 EXPECT_FALSE(host_impl_->top_controls_manager()->has_animation());
8402 } 8493 }
8403 8494
8404 TEST_F(LayerTreeHostImplWithTopControlsTest, TopControlsAnimationAfterScroll) { 8495 TEST_F(LayerTreeHostImplWithTopControlsTest, TopControlsAnimationAfterScroll) {
8405 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 200)); 8496 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 200));
8406 host_impl_->SetViewportSize(gfx::Size(100, 100)); 8497 host_impl_->SetViewportSize(gfx::Size(100, 100));
8407 host_impl_->top_controls_manager()->UpdateTopControlsState( 8498 host_impl_->top_controls_manager()->UpdateTopControlsState(
8408 BOTH, SHOWN, false); 8499 BOTH, SHOWN, false);
8409 float initial_scroll_offset = 50; 8500 float initial_scroll_offset = 50;
8410 scroll_layer->PushScrollOffsetFromMainThread( 8501 scroll_layer->layer_tree_impl()
8411 gfx::ScrollOffset(0, initial_scroll_offset)); 8502 ->property_trees()
8503 ->scroll_tree.UpdateScrollOffsetBaseForTesting(
8504 scroll_layer->id(), gfx::ScrollOffset(0, initial_scroll_offset));
8412 DrawFrame(); 8505 DrawFrame();
8413 8506
8414 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, 8507 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD,
8415 host_impl_->ScrollBegin(BeginState(gfx::Point()).get(), 8508 host_impl_->ScrollBegin(BeginState(gfx::Point()).get(),
8416 InputHandler::GESTURE) 8509 InputHandler::GESTURE)
8417 .thread); 8510 .thread);
8418 EXPECT_EQ(0, host_impl_->top_controls_manager()->ControlsTopOffset()); 8511 EXPECT_EQ(0, host_impl_->top_controls_manager()->ControlsTopOffset());
8419 EXPECT_EQ(gfx::Vector2dF(0, initial_scroll_offset).ToString(), 8512 EXPECT_EQ(gfx::Vector2dF(0, initial_scroll_offset).ToString(),
8420 scroll_layer->CurrentScrollOffset().ToString()); 8513 scroll_layer->CurrentScrollOffset().ToString());
8421 8514
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
8471 host_impl_->top_controls_manager()->ControlsTopOffset()); 8564 host_impl_->top_controls_manager()->ControlsTopOffset());
8472 } 8565 }
8473 8566
8474 TEST_F(LayerTreeHostImplWithTopControlsTest, 8567 TEST_F(LayerTreeHostImplWithTopControlsTest,
8475 TopControlsAnimationAfterMainThreadFlingStopped) { 8568 TopControlsAnimationAfterMainThreadFlingStopped) {
8476 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 200)); 8569 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 200));
8477 host_impl_->SetViewportSize(gfx::Size(100, 100)); 8570 host_impl_->SetViewportSize(gfx::Size(100, 100));
8478 host_impl_->top_controls_manager()->UpdateTopControlsState(BOTH, SHOWN, 8571 host_impl_->top_controls_manager()->UpdateTopControlsState(BOTH, SHOWN,
8479 false); 8572 false);
8480 float initial_scroll_offset = 50; 8573 float initial_scroll_offset = 50;
8481 scroll_layer->PushScrollOffsetFromMainThread( 8574 scroll_layer->layer_tree_impl()
8482 gfx::ScrollOffset(0, initial_scroll_offset)); 8575 ->property_trees()
8576 ->scroll_tree.UpdateScrollOffsetBaseForTesting(
8577 scroll_layer->id(), gfx::ScrollOffset(0, initial_scroll_offset));
8483 DrawFrame(); 8578 DrawFrame();
8484 8579
8485 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, 8580 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD,
8486 host_impl_->ScrollBegin(BeginState(gfx::Point()).get(), 8581 host_impl_->ScrollBegin(BeginState(gfx::Point()).get(),
8487 InputHandler::GESTURE) 8582 InputHandler::GESTURE)
8488 .thread); 8583 .thread);
8489 EXPECT_EQ(0, host_impl_->top_controls_manager()->ControlsTopOffset()); 8584 EXPECT_EQ(0, host_impl_->top_controls_manager()->ControlsTopOffset());
8490 EXPECT_EQ(gfx::Vector2dF(0, initial_scroll_offset).ToString(), 8585 EXPECT_EQ(gfx::Vector2dF(0, initial_scroll_offset).ToString(),
8491 scroll_layer->CurrentScrollOffset().ToString()); 8586 scroll_layer->CurrentScrollOffset().ToString());
8492 8587
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
8624 LayerTreeImpl* layer_tree_impl = host_impl_->active_tree(); 8719 LayerTreeImpl* layer_tree_impl = host_impl_->active_tree();
8625 const int kOuterViewportClipLayerId = 6; 8720 const int kOuterViewportClipLayerId = 6;
8626 const int kOuterViewportScrollLayerId = 7; 8721 const int kOuterViewportScrollLayerId = 7;
8627 const int kInnerViewportScrollLayerId = 2; 8722 const int kInnerViewportScrollLayerId = 2;
8628 const int kInnerViewportClipLayerId = 4; 8723 const int kInnerViewportClipLayerId = 4;
8629 const int kPageScaleLayerId = 5; 8724 const int kPageScaleLayerId = 5;
8630 8725
8631 scoped_ptr<LayerImpl> inner_scroll = 8726 scoped_ptr<LayerImpl> inner_scroll =
8632 LayerImpl::Create(layer_tree_impl, kInnerViewportScrollLayerId); 8727 LayerImpl::Create(layer_tree_impl, kInnerViewportScrollLayerId);
8633 inner_scroll->SetIsContainerForFixedPositionLayers(true); 8728 inner_scroll->SetIsContainerForFixedPositionLayers(true);
8634 inner_scroll->PushScrollOffsetFromMainThread(gfx::ScrollOffset()); 8729 inner_scroll->layer_tree_impl()
8730 ->property_trees()
8731 ->scroll_tree.UpdateScrollOffsetBaseForTesting(inner_scroll->id(),
8732 gfx::ScrollOffset());
8635 8733
8636 scoped_ptr<LayerImpl> inner_clip = 8734 scoped_ptr<LayerImpl> inner_clip =
8637 LayerImpl::Create(layer_tree_impl, kInnerViewportClipLayerId); 8735 LayerImpl::Create(layer_tree_impl, kInnerViewportClipLayerId);
8638 inner_clip->SetBounds(inner_viewport); 8736 inner_clip->SetBounds(inner_viewport);
8639 8737
8640 scoped_ptr<LayerImpl> page_scale = 8738 scoped_ptr<LayerImpl> page_scale =
8641 LayerImpl::Create(layer_tree_impl, kPageScaleLayerId); 8739 LayerImpl::Create(layer_tree_impl, kPageScaleLayerId);
8642 8740
8643 inner_scroll->SetScrollClipLayer(inner_clip->id()); 8741 inner_scroll->SetScrollClipLayer(inner_clip->id());
8644 inner_scroll->SetBounds(outer_viewport); 8742 inner_scroll->SetBounds(outer_viewport);
8645 inner_scroll->SetPosition(gfx::PointF()); 8743 inner_scroll->SetPosition(gfx::PointF());
8646 8744
8647 scoped_ptr<LayerImpl> outer_clip = 8745 scoped_ptr<LayerImpl> outer_clip =
8648 LayerImpl::Create(layer_tree_impl, kOuterViewportClipLayerId); 8746 LayerImpl::Create(layer_tree_impl, kOuterViewportClipLayerId);
8649 outer_clip->SetBounds(outer_viewport); 8747 outer_clip->SetBounds(outer_viewport);
8650 outer_clip->SetIsContainerForFixedPositionLayers(true); 8748 outer_clip->SetIsContainerForFixedPositionLayers(true);
8651 8749
8652 scoped_ptr<LayerImpl> outer_scroll = 8750 scoped_ptr<LayerImpl> outer_scroll =
8653 LayerImpl::Create(layer_tree_impl, kOuterViewportScrollLayerId); 8751 LayerImpl::Create(layer_tree_impl, kOuterViewportScrollLayerId);
8654 outer_scroll->SetScrollClipLayer(outer_clip->id()); 8752 outer_scroll->SetScrollClipLayer(outer_clip->id());
8655 outer_scroll->PushScrollOffsetFromMainThread(gfx::ScrollOffset()); 8753 outer_scroll->layer_tree_impl()
8754 ->property_trees()
8755 ->scroll_tree.UpdateScrollOffsetBaseForTesting(outer_scroll->id(),
8756 gfx::ScrollOffset());
8656 outer_scroll->SetBounds(content_size); 8757 outer_scroll->SetBounds(content_size);
8657 outer_scroll->SetPosition(gfx::PointF()); 8758 outer_scroll->SetPosition(gfx::PointF());
8658 8759
8659 scoped_ptr<LayerImpl> contents = 8760 scoped_ptr<LayerImpl> contents =
8660 LayerImpl::Create(layer_tree_impl, 8); 8761 LayerImpl::Create(layer_tree_impl, 8);
8661 contents->SetDrawsContent(true); 8762 contents->SetDrawsContent(true);
8662 contents->SetBounds(content_size); 8763 contents->SetBounds(content_size);
8663 contents->SetPosition(gfx::PointF()); 8764 contents->SetPosition(gfx::PointF());
8664 8765
8665 outer_scroll->AddChild(std::move(contents)); 8766 outer_scroll->AddChild(std::move(contents));
(...skipping 1079 matching lines...) Expand 10 before | Expand all | Expand 10 after
9745 EXPECT_EQ(scroll_layer, host_impl_->InnerViewportScrollLayer()); 9846 EXPECT_EQ(scroll_layer, host_impl_->InnerViewportScrollLayer());
9746 9847
9747 float min_page_scale = 1.f, max_page_scale = 4.f; 9848 float min_page_scale = 1.f, max_page_scale = 4.f;
9748 float page_scale_factor = 1.f; 9849 float page_scale_factor = 1.f;
9749 9850
9750 // The scroll deltas should have the page scale factor applied. 9851 // The scroll deltas should have the page scale factor applied.
9751 { 9852 {
9752 host_impl_->active_tree()->PushPageScaleFromMainThread( 9853 host_impl_->active_tree()->PushPageScaleFromMainThread(
9753 page_scale_factor, min_page_scale, max_page_scale); 9854 page_scale_factor, min_page_scale, max_page_scale);
9754 host_impl_->active_tree()->SetPageScaleOnActiveTree(page_scale_factor); 9855 host_impl_->active_tree()->SetPageScaleOnActiveTree(page_scale_factor);
9755 scroll_layer->SetScrollDelta(gfx::Vector2d()); 9856 SetScrollOffsetDelta(scroll_layer, gfx::Vector2d());
9756 9857
9757 float page_scale_delta = 2.f; 9858 float page_scale_delta = 2.f;
9758 host_impl_->ScrollBegin(BeginState(gfx::Point()).get(), 9859 host_impl_->ScrollBegin(BeginState(gfx::Point()).get(),
9759 InputHandler::GESTURE); 9860 InputHandler::GESTURE);
9760 host_impl_->PinchGestureBegin(); 9861 host_impl_->PinchGestureBegin();
9761 host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point()); 9862 host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point());
9762 host_impl_->PinchGestureEnd(); 9863 host_impl_->PinchGestureEnd();
9763 host_impl_->ScrollEnd(EndState().get()); 9864 host_impl_->ScrollEnd(EndState().get());
9764 9865
9765 gfx::Vector2dF scroll_delta(0, 5); 9866 gfx::Vector2dF scroll_delta(0, 5);
(...skipping 452 matching lines...) Expand 10 before | Expand all | Expand 10 after
10218 // There should not be any jitter measured till we hit the fixed point hits 10319 // There should not be any jitter measured till we hit the fixed point hits
10219 // threshold. 10320 // threshold.
10220 float expected_jitter = 10321 float expected_jitter =
10221 (i == pending_tree->kFixedPointHitsThreshold) ? 500 : 0; 10322 (i == pending_tree->kFixedPointHitsThreshold) ? 500 : 0;
10222 EXPECT_EQ(jitter, expected_jitter); 10323 EXPECT_EQ(jitter, expected_jitter);
10223 } 10324 }
10224 } 10325 }
10225 10326
10226 } // namespace 10327 } // namespace
10227 } // namespace cc 10328 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698