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

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

Issue 212603017: Remove scroll distribution code from Layer/LayerTreeHost. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 8 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 | Annotate | Revision Log
« no previous file with comments | « cc/trees/layer_tree_host.cc ('k') | webkit/renderer/compositor_bindings/web_layer_impl.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "cc/trees/layer_tree_host.h"
6
7 #include "base/memory/scoped_ptr.h"
8 #include "cc/layers/layer.h"
9 #include "cc/test/geometry_test_utils.h"
10 #include "cc/test/layer_tree_test.h"
11 #include "testing/gmock/include/gmock/gmock.h"
12 #include "testing/gtest/include/gtest/gtest.h"
13
14 using gfx::Vector2d;
15
16 namespace cc {
17 namespace {
18
19 class LayerTreeHostPinchZoomTest : public LayerTreeTest {};
20
21 // Ensure that the DistributeScrollOffsetToViewports() method of LayerTreeHost
22 // does not set values outside the scroll offset max.
23 class LayerTreeHostPinchZoomTestDistributeScrollOffsetToViewports
24 : public LayerTreeHostPinchZoomTest {
25 public:
26 // Sets up a 2X scale resulting in the following viewport configuration:
27 // +------------------------------------------------+
28 // | | | |
29 // | | | |
30 // | | | |
31 // | InnerClip |5px | |
32 // | | | |
33 // | | |10px |
34 // |--------------+ | |
35 // | 5px | |
36 // | | | 20px
37 // | Inner Scroll/Outer Clip | |
38 // | | |
39 // |-----------------------------+ |
40 // | 10px |
41 // | |
42 // | |
43 // | Outer Scroll Layer |
44 // | |
45 // | |
46 // +------------------------------------------------+
47 // 20px
48 //
49 virtual void SetupTree() OVERRIDE {
50 scoped_refptr<Layer> inner_viewport_clip_layer = Layer::Create();
51 scoped_refptr<Layer> page_scale_layer = Layer::Create();
52 scoped_refptr<Layer> inner_viewport_scroll_layer = Layer::Create();
53 scoped_refptr<Layer> outer_viewport_clip_layer = Layer::Create();
54 scoped_refptr<Layer> outer_viewport_scroll_layer = Layer::Create();
55
56 inner_viewport_scroll_layer->SetScrollClipLayerId(
57 inner_viewport_clip_layer->id());
58 inner_viewport_scroll_layer->SetUserScrollable(true, true);
59
60 inner_viewport_clip_layer->AddChild(page_scale_layer);
61 page_scale_layer->AddChild(inner_viewport_scroll_layer);
62
63 inner_viewport_scroll_layer->AddChild(outer_viewport_clip_layer);
64 outer_viewport_clip_layer->AddChild(outer_viewport_scroll_layer);
65
66 outer_viewport_scroll_layer->SetScrollClipLayerId(
67 outer_viewport_clip_layer->id());
68 outer_viewport_scroll_layer->SetUserScrollable(true, true);
69
70 layer_tree_host()->RegisterViewportLayers(page_scale_layer,
71 inner_viewport_scroll_layer,
72 outer_viewport_scroll_layer);
73
74 inner_viewport_clip_layer->SetBounds(gfx::Size(10, 10));
75 outer_viewport_clip_layer->SetAnchorPoint(gfx::PointF());
76 outer_viewport_clip_layer->SetBounds(gfx::Size(10, 10));
77
78 layer_tree_host()->SetRootLayer(inner_viewport_clip_layer);
79
80 inner_viewport_scroll_layer->SetBounds(gfx::Size(10, 10));
81 outer_viewport_scroll_layer->SetBounds(gfx::Size(20, 20));
82 layer_tree_host()->SetPageScaleFactorAndLimits(2.0f, 1.0f, 5.0f);
83
84 // Sanity check
85 EXPECT_VECTOR_EQ(Vector2d(5, 5),
86 inner_viewport_scroll_layer->MaxScrollOffset());
87 EXPECT_VECTOR_EQ(Vector2d(10, 10),
88 outer_viewport_scroll_layer->MaxScrollOffset());
89 EXPECT_VECTOR_EQ(Vector2d(0, 0),
90 inner_viewport_scroll_layer->scroll_offset());
91 EXPECT_VECTOR_EQ(Vector2d(0, 0),
92 outer_viewport_scroll_layer->scroll_offset());
93 }
94
95 virtual void BeginTest() OVERRIDE {
96 Layer *inner = layer_tree_host()->inner_viewport_scroll_layer();
97 Layer *outer = layer_tree_host()->outer_viewport_scroll_layer();
98
99 // Try to scroll beyond offset minium
100 gfx::Vector2d offset(-20, -20);
101 outer->SetScrollOffset(offset);
102 EXPECT_VECTOR_EQ(Vector2d(0, 0), inner->scroll_offset());
103 EXPECT_VECTOR_EQ(Vector2d(0, 0), outer->scroll_offset());
104
105 // Try to scroll beyond offset maximum
106 offset = gfx::Vector2d(20, 20);
107 outer->SetScrollOffset(offset);
108 EXPECT_VECTOR_EQ(Vector2d(5, 5), inner->scroll_offset());
109 EXPECT_VECTOR_EQ(Vector2d(10, 10), outer->scroll_offset());
110
111 EndTest();
112 }
113
114 virtual void AfterTest() OVERRIDE {}
115 };
116
117 TEST_F(LayerTreeHostPinchZoomTestDistributeScrollOffsetToViewports, Test) {
118 RunTest(true, false, false);
119 }
120
121 } // namespace
122 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host.cc ('k') | webkit/renderer/compositor_bindings/web_layer_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698