OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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.h" | 5 #include "cc/trees/layer_tree_host.h" |
6 | 6 |
7 #include "base/memory/weak_ptr.h" | 7 #include "base/memory/weak_ptr.h" |
8 #include "cc/layers/layer.h" | 8 #include "cc/layers/layer.h" |
9 #include "cc/layers/layer_impl.h" | 9 #include "cc/layers/layer_impl.h" |
10 #include "cc/layers/picture_layer.h" | 10 #include "cc/layers/picture_layer.h" |
(...skipping 15 matching lines...) Expand all Loading... |
26 class LayerTreeHostScrollTest : public LayerTreeTest {}; | 26 class LayerTreeHostScrollTest : public LayerTreeTest {}; |
27 | 27 |
28 class LayerTreeHostScrollTestScrollSimple : public LayerTreeHostScrollTest { | 28 class LayerTreeHostScrollTestScrollSimple : public LayerTreeHostScrollTest { |
29 public: | 29 public: |
30 LayerTreeHostScrollTestScrollSimple() | 30 LayerTreeHostScrollTestScrollSimple() |
31 : initial_scroll_(10, 20), | 31 : initial_scroll_(10, 20), |
32 second_scroll_(40, 5), | 32 second_scroll_(40, 5), |
33 scroll_amount_(2, -1), | 33 scroll_amount_(2, -1), |
34 num_scrolls_(0) {} | 34 num_scrolls_(0) {} |
35 | 35 |
36 virtual void BeginTest() override { | 36 void BeginTest() override { |
37 Layer* root_layer = layer_tree_host()->root_layer(); | 37 Layer* root_layer = layer_tree_host()->root_layer(); |
38 scoped_refptr<Layer> scroll_layer = Layer::Create(); | 38 scoped_refptr<Layer> scroll_layer = Layer::Create(); |
39 root_layer->AddChild(scroll_layer); | 39 root_layer->AddChild(scroll_layer); |
40 // Create an effective max_scroll_offset of (100, 100). | 40 // Create an effective max_scroll_offset of (100, 100). |
41 scroll_layer->SetBounds(gfx::Size(root_layer->bounds().width() + 100, | 41 scroll_layer->SetBounds(gfx::Size(root_layer->bounds().width() + 100, |
42 root_layer->bounds().height() + 100)); | 42 root_layer->bounds().height() + 100)); |
43 scroll_layer->SetIsDrawable(true); | 43 scroll_layer->SetIsDrawable(true); |
44 scroll_layer->SetIsContainerForFixedPositionLayers(true); | 44 scroll_layer->SetIsContainerForFixedPositionLayers(true); |
45 scroll_layer->SetScrollClipLayerId(root_layer->id()); | 45 scroll_layer->SetScrollClipLayerId(root_layer->id()); |
46 scroll_layer->SetScrollOffset(initial_scroll_); | 46 scroll_layer->SetScrollOffset(initial_scroll_); |
47 layer_tree_host()->RegisterViewportLayers(root_layer, scroll_layer, NULL); | 47 layer_tree_host()->RegisterViewportLayers(root_layer, scroll_layer, NULL); |
48 PostSetNeedsCommitToMainThread(); | 48 PostSetNeedsCommitToMainThread(); |
49 } | 49 } |
50 | 50 |
51 virtual void Layout() override { | 51 void Layout() override { |
52 Layer* root = layer_tree_host()->root_layer(); | 52 Layer* root = layer_tree_host()->root_layer(); |
53 Layer* scroll_layer = root->children()[0].get(); | 53 Layer* scroll_layer = root->children()[0].get(); |
54 if (!layer_tree_host()->source_frame_number()) { | 54 if (!layer_tree_host()->source_frame_number()) { |
55 EXPECT_VECTOR_EQ(initial_scroll_, scroll_layer->scroll_offset()); | 55 EXPECT_VECTOR_EQ(initial_scroll_, scroll_layer->scroll_offset()); |
56 } else { | 56 } else { |
57 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(initial_scroll_, | 57 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(initial_scroll_, |
58 scroll_amount_), | 58 scroll_amount_), |
59 scroll_layer->scroll_offset()); | 59 scroll_layer->scroll_offset()); |
60 | 60 |
61 // Pretend like Javascript updated the scroll position itself. | 61 // Pretend like Javascript updated the scroll position itself. |
62 scroll_layer->SetScrollOffset(second_scroll_); | 62 scroll_layer->SetScrollOffset(second_scroll_); |
63 } | 63 } |
64 } | 64 } |
65 | 65 |
66 virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) override { | 66 void DrawLayersOnThread(LayerTreeHostImpl* impl) override { |
67 LayerImpl* root = impl->active_tree()->root_layer(); | 67 LayerImpl* root = impl->active_tree()->root_layer(); |
68 LayerImpl* scroll_layer = root->children()[0]; | 68 LayerImpl* scroll_layer = root->children()[0]; |
69 EXPECT_VECTOR_EQ(gfx::Vector2d(), scroll_layer->ScrollDelta()); | 69 EXPECT_VECTOR_EQ(gfx::Vector2d(), scroll_layer->ScrollDelta()); |
70 | 70 |
71 scroll_layer->SetScrollClipLayer(root->id()); | 71 scroll_layer->SetScrollClipLayer(root->id()); |
72 scroll_layer->SetBounds( | 72 scroll_layer->SetBounds( |
73 gfx::Size(root->bounds().width() + 100, root->bounds().height() + 100)); | 73 gfx::Size(root->bounds().width() + 100, root->bounds().height() + 100)); |
74 scroll_layer->ScrollBy(scroll_amount_); | 74 scroll_layer->ScrollBy(scroll_amount_); |
75 | 75 |
76 switch (impl->active_tree()->source_frame_number()) { | 76 switch (impl->active_tree()->source_frame_number()) { |
77 case 0: | 77 case 0: |
78 EXPECT_VECTOR_EQ(initial_scroll_, scroll_layer->scroll_offset()); | 78 EXPECT_VECTOR_EQ(initial_scroll_, scroll_layer->scroll_offset()); |
79 EXPECT_VECTOR_EQ(scroll_amount_, scroll_layer->ScrollDelta()); | 79 EXPECT_VECTOR_EQ(scroll_amount_, scroll_layer->ScrollDelta()); |
80 PostSetNeedsCommitToMainThread(); | 80 PostSetNeedsCommitToMainThread(); |
81 break; | 81 break; |
82 case 1: | 82 case 1: |
83 EXPECT_VECTOR_EQ(scroll_layer->scroll_offset(), second_scroll_); | 83 EXPECT_VECTOR_EQ(scroll_layer->scroll_offset(), second_scroll_); |
84 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), scroll_amount_); | 84 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), scroll_amount_); |
85 EndTest(); | 85 EndTest(); |
86 break; | 86 break; |
87 } | 87 } |
88 } | 88 } |
89 | 89 |
90 virtual void ApplyViewportDeltas(const gfx::Vector2d& scroll_delta, | 90 void ApplyViewportDeltas(const gfx::Vector2d& scroll_delta, |
91 float scale, | 91 float scale, |
92 float top_controls_delta) override { | 92 float top_controls_delta) override { |
93 num_scrolls_++; | 93 num_scrolls_++; |
94 } | 94 } |
95 | 95 |
96 virtual void AfterTest() override { EXPECT_EQ(1, num_scrolls_); } | 96 void AfterTest() override { EXPECT_EQ(1, num_scrolls_); } |
97 | 97 |
98 private: | 98 private: |
99 gfx::ScrollOffset initial_scroll_; | 99 gfx::ScrollOffset initial_scroll_; |
100 gfx::ScrollOffset second_scroll_; | 100 gfx::ScrollOffset second_scroll_; |
101 gfx::Vector2dF scroll_amount_; | 101 gfx::Vector2dF scroll_amount_; |
102 int num_scrolls_; | 102 int num_scrolls_; |
103 }; | 103 }; |
104 | 104 |
105 MULTI_THREAD_TEST_F(LayerTreeHostScrollTestScrollSimple); | 105 MULTI_THREAD_TEST_F(LayerTreeHostScrollTestScrollSimple); |
106 | 106 |
107 class LayerTreeHostScrollTestScrollMultipleRedraw | 107 class LayerTreeHostScrollTestScrollMultipleRedraw |
108 : public LayerTreeHostScrollTest { | 108 : public LayerTreeHostScrollTest { |
109 public: | 109 public: |
110 LayerTreeHostScrollTestScrollMultipleRedraw() | 110 LayerTreeHostScrollTestScrollMultipleRedraw() |
111 : initial_scroll_(40, 10), scroll_amount_(-3, 17), num_scrolls_(0) {} | 111 : initial_scroll_(40, 10), scroll_amount_(-3, 17), num_scrolls_(0) {} |
112 | 112 |
113 virtual void BeginTest() override { | 113 void BeginTest() override { |
114 Layer* root_layer = layer_tree_host()->root_layer(); | 114 Layer* root_layer = layer_tree_host()->root_layer(); |
115 scroll_layer_ = Layer::Create(); | 115 scroll_layer_ = Layer::Create(); |
116 root_layer->AddChild(scroll_layer_); | 116 root_layer->AddChild(scroll_layer_); |
117 // Create an effective max_scroll_offset of (100, 100). | 117 // Create an effective max_scroll_offset of (100, 100). |
118 scroll_layer_->SetBounds(gfx::Size(root_layer->bounds().width() + 100, | 118 scroll_layer_->SetBounds(gfx::Size(root_layer->bounds().width() + 100, |
119 root_layer->bounds().height() + 100)); | 119 root_layer->bounds().height() + 100)); |
120 scroll_layer_->SetIsDrawable(true); | 120 scroll_layer_->SetIsDrawable(true); |
121 scroll_layer_->SetIsContainerForFixedPositionLayers(true); | 121 scroll_layer_->SetIsContainerForFixedPositionLayers(true); |
122 scroll_layer_->SetScrollClipLayerId(root_layer->id()); | 122 scroll_layer_->SetScrollClipLayerId(root_layer->id()); |
123 scroll_layer_->SetScrollOffset(initial_scroll_); | 123 scroll_layer_->SetScrollOffset(initial_scroll_); |
124 layer_tree_host()->RegisterViewportLayers(root_layer, scroll_layer_, NULL); | 124 layer_tree_host()->RegisterViewportLayers(root_layer, scroll_layer_, NULL); |
125 PostSetNeedsCommitToMainThread(); | 125 PostSetNeedsCommitToMainThread(); |
126 } | 126 } |
127 | 127 |
128 virtual void BeginCommitOnThread(LayerTreeHostImpl* impl) override { | 128 void BeginCommitOnThread(LayerTreeHostImpl* impl) override { |
129 switch (layer_tree_host()->source_frame_number()) { | 129 switch (layer_tree_host()->source_frame_number()) { |
130 case 0: | 130 case 0: |
131 EXPECT_VECTOR_EQ(scroll_layer_->scroll_offset(), initial_scroll_); | 131 EXPECT_VECTOR_EQ(scroll_layer_->scroll_offset(), initial_scroll_); |
132 break; | 132 break; |
133 case 1: | 133 case 1: |
134 EXPECT_VECTOR_EQ( | 134 EXPECT_VECTOR_EQ( |
135 scroll_layer_->scroll_offset(), | 135 scroll_layer_->scroll_offset(), |
136 gfx::ScrollOffsetWithDelta(initial_scroll_, | 136 gfx::ScrollOffsetWithDelta(initial_scroll_, |
137 scroll_amount_ + scroll_amount_)); | 137 scroll_amount_ + scroll_amount_)); |
138 case 2: | 138 case 2: |
139 EXPECT_VECTOR_EQ( | 139 EXPECT_VECTOR_EQ( |
140 scroll_layer_->scroll_offset(), | 140 scroll_layer_->scroll_offset(), |
141 gfx::ScrollOffsetWithDelta(initial_scroll_, | 141 gfx::ScrollOffsetWithDelta(initial_scroll_, |
142 scroll_amount_ + scroll_amount_)); | 142 scroll_amount_ + scroll_amount_)); |
143 break; | 143 break; |
144 } | 144 } |
145 } | 145 } |
146 | 146 |
147 virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) override { | 147 void DrawLayersOnThread(LayerTreeHostImpl* impl) override { |
148 LayerImpl* scroll_layer = | 148 LayerImpl* scroll_layer = |
149 impl->active_tree()->LayerById(scroll_layer_->id()); | 149 impl->active_tree()->LayerById(scroll_layer_->id()); |
150 if (impl->active_tree()->source_frame_number() == 0 && | 150 if (impl->active_tree()->source_frame_number() == 0 && |
151 impl->SourceAnimationFrameNumber() == 1) { | 151 impl->SourceAnimationFrameNumber() == 1) { |
152 // First draw after first commit. | 152 // First draw after first commit. |
153 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), gfx::Vector2d()); | 153 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), gfx::Vector2d()); |
154 scroll_layer->ScrollBy(scroll_amount_); | 154 scroll_layer->ScrollBy(scroll_amount_); |
155 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), scroll_amount_); | 155 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), scroll_amount_); |
156 | 156 |
157 EXPECT_VECTOR_EQ(scroll_layer->scroll_offset(), initial_scroll_); | 157 EXPECT_VECTOR_EQ(scroll_layer->scroll_offset(), initial_scroll_); |
(...skipping 13 matching lines...) Expand all Loading... |
171 EXPECT_GE(impl->SourceAnimationFrameNumber(), 3); | 171 EXPECT_GE(impl->SourceAnimationFrameNumber(), 3); |
172 EXPECT_VECTOR_EQ(scroll_layer_->ScrollDelta(), gfx::Vector2d()); | 172 EXPECT_VECTOR_EQ(scroll_layer_->ScrollDelta(), gfx::Vector2d()); |
173 EXPECT_VECTOR_EQ( | 173 EXPECT_VECTOR_EQ( |
174 scroll_layer_->scroll_offset(), | 174 scroll_layer_->scroll_offset(), |
175 gfx::ScrollOffsetWithDelta(initial_scroll_, | 175 gfx::ScrollOffsetWithDelta(initial_scroll_, |
176 scroll_amount_ + scroll_amount_)); | 176 scroll_amount_ + scroll_amount_)); |
177 EndTest(); | 177 EndTest(); |
178 } | 178 } |
179 } | 179 } |
180 | 180 |
181 virtual void ApplyViewportDeltas(const gfx::Vector2d& scroll_delta, | 181 void ApplyViewportDeltas(const gfx::Vector2d& scroll_delta, |
182 float scale, | 182 float scale, |
183 float top_controls_delta) override { | 183 float top_controls_delta) override { |
184 num_scrolls_++; | 184 num_scrolls_++; |
185 } | 185 } |
186 | 186 |
187 virtual void AfterTest() override { EXPECT_EQ(1, num_scrolls_); } | 187 void AfterTest() override { EXPECT_EQ(1, num_scrolls_); } |
188 | 188 |
189 private: | 189 private: |
190 gfx::ScrollOffset initial_scroll_; | 190 gfx::ScrollOffset initial_scroll_; |
191 gfx::Vector2dF scroll_amount_; | 191 gfx::Vector2dF scroll_amount_; |
192 int num_scrolls_; | 192 int num_scrolls_; |
193 scoped_refptr<Layer> scroll_layer_; | 193 scoped_refptr<Layer> scroll_layer_; |
194 }; | 194 }; |
195 | 195 |
196 MULTI_THREAD_TEST_F(LayerTreeHostScrollTestScrollMultipleRedraw); | 196 MULTI_THREAD_TEST_F(LayerTreeHostScrollTestScrollMultipleRedraw); |
197 | 197 |
198 class LayerTreeHostScrollTestScrollAbortedCommit | 198 class LayerTreeHostScrollTestScrollAbortedCommit |
199 : public LayerTreeHostScrollTest { | 199 : public LayerTreeHostScrollTest { |
200 public: | 200 public: |
201 LayerTreeHostScrollTestScrollAbortedCommit() | 201 LayerTreeHostScrollTestScrollAbortedCommit() |
202 : initial_scroll_(50, 60), | 202 : initial_scroll_(50, 60), |
203 impl_scroll_(-3, 2), | 203 impl_scroll_(-3, 2), |
204 second_main_scroll_(14, -3), | 204 second_main_scroll_(14, -3), |
205 impl_scale_(2.f), | 205 impl_scale_(2.f), |
206 num_will_begin_main_frames_(0), | 206 num_will_begin_main_frames_(0), |
207 num_did_begin_main_frames_(0), | 207 num_did_begin_main_frames_(0), |
208 num_will_commits_(0), | 208 num_will_commits_(0), |
209 num_did_commits_(0), | 209 num_did_commits_(0), |
210 num_impl_commits_(0), | 210 num_impl_commits_(0), |
211 num_impl_scrolls_(0) {} | 211 num_impl_scrolls_(0) {} |
212 | 212 |
213 virtual void BeginTest() override { PostSetNeedsCommitToMainThread(); } | 213 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
214 | 214 |
215 virtual void SetupTree() override { | 215 void SetupTree() override { |
216 LayerTreeHostScrollTest::SetupTree(); | 216 LayerTreeHostScrollTest::SetupTree(); |
217 Layer* root_layer = layer_tree_host()->root_layer(); | 217 Layer* root_layer = layer_tree_host()->root_layer(); |
218 scoped_refptr<Layer> root_scroll_layer = Layer::Create(); | 218 scoped_refptr<Layer> root_scroll_layer = Layer::Create(); |
219 root_scroll_layer->SetScrollClipLayerId(root_layer->id()); | 219 root_scroll_layer->SetScrollClipLayerId(root_layer->id()); |
220 root_scroll_layer->SetScrollOffset(initial_scroll_); | 220 root_scroll_layer->SetScrollOffset(initial_scroll_); |
221 root_scroll_layer->SetBounds(gfx::Size(200, 200)); | 221 root_scroll_layer->SetBounds(gfx::Size(200, 200)); |
222 root_scroll_layer->SetIsDrawable(true); | 222 root_scroll_layer->SetIsDrawable(true); |
223 root_scroll_layer->SetIsContainerForFixedPositionLayers(true); | 223 root_scroll_layer->SetIsContainerForFixedPositionLayers(true); |
224 root_layer->AddChild(root_scroll_layer); | 224 root_layer->AddChild(root_scroll_layer); |
225 | 225 |
226 layer_tree_host()->RegisterViewportLayers( | 226 layer_tree_host()->RegisterViewportLayers( |
227 root_layer, root_scroll_layer, NULL); | 227 root_layer, root_scroll_layer, NULL); |
228 layer_tree_host()->SetPageScaleFactorAndLimits(1.f, 0.01f, 100.f); | 228 layer_tree_host()->SetPageScaleFactorAndLimits(1.f, 0.01f, 100.f); |
229 } | 229 } |
230 | 230 |
231 virtual void WillBeginMainFrame() override { | 231 void WillBeginMainFrame() override { |
232 num_will_begin_main_frames_++; | 232 num_will_begin_main_frames_++; |
233 Layer* root_scroll_layer = | 233 Layer* root_scroll_layer = |
234 layer_tree_host()->root_layer()->children()[0].get(); | 234 layer_tree_host()->root_layer()->children()[0].get(); |
235 switch (num_will_begin_main_frames_) { | 235 switch (num_will_begin_main_frames_) { |
236 case 1: | 236 case 1: |
237 // This will not be aborted because of the initial prop changes. | 237 // This will not be aborted because of the initial prop changes. |
238 EXPECT_EQ(0, num_impl_scrolls_); | 238 EXPECT_EQ(0, num_impl_scrolls_); |
239 EXPECT_EQ(0, layer_tree_host()->source_frame_number()); | 239 EXPECT_EQ(0, layer_tree_host()->source_frame_number()); |
240 EXPECT_VECTOR_EQ(root_scroll_layer->scroll_offset(), initial_scroll_); | 240 EXPECT_VECTOR_EQ(root_scroll_layer->scroll_offset(), initial_scroll_); |
241 EXPECT_EQ(1.f, layer_tree_host()->page_scale_factor()); | 241 EXPECT_EQ(1.f, layer_tree_host()->page_scale_factor()); |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
273 impl_scroll_ + impl_scroll_ + impl_scroll_ + second_main_scroll_; | 273 impl_scroll_ + impl_scroll_ + impl_scroll_ + second_main_scroll_; |
274 EXPECT_VECTOR_EQ(root_scroll_layer->scroll_offset(), | 274 EXPECT_VECTOR_EQ(root_scroll_layer->scroll_offset(), |
275 gfx::ScrollOffsetWithDelta(initial_scroll_, delta)); | 275 gfx::ScrollOffsetWithDelta(initial_scroll_, delta)); |
276 | 276 |
277 // End the test by drawing to verify this commit is also aborted. | 277 // End the test by drawing to verify this commit is also aborted. |
278 PostSetNeedsRedrawToMainThread(); | 278 PostSetNeedsRedrawToMainThread(); |
279 break; | 279 break; |
280 } | 280 } |
281 } | 281 } |
282 | 282 |
283 virtual void DidBeginMainFrame() override { num_did_begin_main_frames_++; } | 283 void DidBeginMainFrame() override { num_did_begin_main_frames_++; } |
284 | 284 |
285 virtual void WillCommit() override { num_will_commits_++; } | 285 void WillCommit() override { num_will_commits_++; } |
286 | 286 |
287 virtual void DidCommit() override { num_did_commits_++; } | 287 void DidCommit() override { num_did_commits_++; } |
288 | 288 |
289 virtual void BeginCommitOnThread(LayerTreeHostImpl* impl) override { | 289 void BeginCommitOnThread(LayerTreeHostImpl* impl) override { |
290 num_impl_commits_++; | 290 num_impl_commits_++; |
291 } | 291 } |
292 | 292 |
293 virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) override { | 293 void DrawLayersOnThread(LayerTreeHostImpl* impl) override { |
294 LayerImpl* root_scroll_layer = | 294 LayerImpl* root_scroll_layer = |
295 impl->active_tree()->root_layer()->children()[0]; | 295 impl->active_tree()->root_layer()->children()[0]; |
296 | 296 |
297 if (impl->active_tree()->source_frame_number() == 0 && | 297 if (impl->active_tree()->source_frame_number() == 0 && |
298 impl->SourceAnimationFrameNumber() == 1) { | 298 impl->SourceAnimationFrameNumber() == 1) { |
299 // First draw | 299 // First draw |
300 EXPECT_VECTOR_EQ(root_scroll_layer->ScrollDelta(), gfx::Vector2d()); | 300 EXPECT_VECTOR_EQ(root_scroll_layer->ScrollDelta(), gfx::Vector2d()); |
301 root_scroll_layer->ScrollBy(impl_scroll_); | 301 root_scroll_layer->ScrollBy(impl_scroll_); |
302 EXPECT_VECTOR_EQ(root_scroll_layer->ScrollDelta(), impl_scroll_); | 302 EXPECT_VECTOR_EQ(root_scroll_layer->ScrollDelta(), impl_scroll_); |
303 EXPECT_VECTOR_EQ(root_scroll_layer->scroll_offset(), initial_scroll_); | 303 EXPECT_VECTOR_EQ(root_scroll_layer->scroll_offset(), initial_scroll_); |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
351 impl_scroll_ + impl_scroll_ + impl_scroll_ + second_main_scroll_; | 351 impl_scroll_ + impl_scroll_ + impl_scroll_ + second_main_scroll_; |
352 EXPECT_VECTOR_EQ(root_scroll_layer->scroll_offset(), | 352 EXPECT_VECTOR_EQ(root_scroll_layer->scroll_offset(), |
353 gfx::ScrollOffsetWithDelta(initial_scroll_, delta)); | 353 gfx::ScrollOffsetWithDelta(initial_scroll_, delta)); |
354 EndTest(); | 354 EndTest(); |
355 } else { | 355 } else { |
356 // Commit for source frame 3 is aborted. | 356 // Commit for source frame 3 is aborted. |
357 NOTREACHED(); | 357 NOTREACHED(); |
358 } | 358 } |
359 } | 359 } |
360 | 360 |
361 virtual void ApplyViewportDeltas(const gfx::Vector2d& scroll_delta, | 361 void ApplyViewportDeltas(const gfx::Vector2d& scroll_delta, |
362 float scale, | 362 float scale, |
363 float top_controls_delta) override { | 363 float top_controls_delta) override { |
364 num_impl_scrolls_++; | 364 num_impl_scrolls_++; |
365 } | 365 } |
366 | 366 |
367 virtual void AfterTest() override { | 367 void AfterTest() override { |
368 EXPECT_EQ(3, num_impl_scrolls_); | 368 EXPECT_EQ(3, num_impl_scrolls_); |
369 // Verify that the embedder sees aborted commits as real commits. | 369 // Verify that the embedder sees aborted commits as real commits. |
370 EXPECT_EQ(4, num_will_begin_main_frames_); | 370 EXPECT_EQ(4, num_will_begin_main_frames_); |
371 EXPECT_EQ(4, num_did_begin_main_frames_); | 371 EXPECT_EQ(4, num_did_begin_main_frames_); |
372 EXPECT_EQ(4, num_will_commits_); | 372 EXPECT_EQ(4, num_will_commits_); |
373 EXPECT_EQ(4, num_did_commits_); | 373 EXPECT_EQ(4, num_did_commits_); |
374 // ...but the compositor thread only sees two real ones. | 374 // ...but the compositor thread only sees two real ones. |
375 EXPECT_EQ(2, num_impl_commits_); | 375 EXPECT_EQ(2, num_impl_commits_); |
376 } | 376 } |
377 | 377 |
378 private: | 378 private: |
379 gfx::ScrollOffset initial_scroll_; | 379 gfx::ScrollOffset initial_scroll_; |
380 gfx::Vector2dF impl_scroll_; | 380 gfx::Vector2dF impl_scroll_; |
381 gfx::Vector2dF second_main_scroll_; | 381 gfx::Vector2dF second_main_scroll_; |
382 float impl_scale_; | 382 float impl_scale_; |
383 int num_will_begin_main_frames_; | 383 int num_will_begin_main_frames_; |
384 int num_did_begin_main_frames_; | 384 int num_did_begin_main_frames_; |
385 int num_will_commits_; | 385 int num_will_commits_; |
386 int num_did_commits_; | 386 int num_did_commits_; |
387 int num_impl_commits_; | 387 int num_impl_commits_; |
388 int num_impl_scrolls_; | 388 int num_impl_scrolls_; |
389 }; | 389 }; |
390 | 390 |
391 MULTI_THREAD_TEST_F(LayerTreeHostScrollTestScrollAbortedCommit); | 391 MULTI_THREAD_TEST_F(LayerTreeHostScrollTestScrollAbortedCommit); |
392 | 392 |
393 class LayerTreeHostScrollTestFractionalScroll : public LayerTreeHostScrollTest { | 393 class LayerTreeHostScrollTestFractionalScroll : public LayerTreeHostScrollTest { |
394 public: | 394 public: |
395 LayerTreeHostScrollTestFractionalScroll() : scroll_amount_(1.75, 0) {} | 395 LayerTreeHostScrollTestFractionalScroll() : scroll_amount_(1.75, 0) {} |
396 | 396 |
397 virtual void SetupTree() override { | 397 void SetupTree() override { |
398 LayerTreeHostScrollTest::SetupTree(); | 398 LayerTreeHostScrollTest::SetupTree(); |
399 Layer* root_layer = layer_tree_host()->root_layer(); | 399 Layer* root_layer = layer_tree_host()->root_layer(); |
400 scoped_refptr<Layer> root_scroll_layer = Layer::Create(); | 400 scoped_refptr<Layer> root_scroll_layer = Layer::Create(); |
401 root_scroll_layer->SetScrollClipLayerId(root_layer->id()); | 401 root_scroll_layer->SetScrollClipLayerId(root_layer->id()); |
402 root_scroll_layer->SetBounds( | 402 root_scroll_layer->SetBounds( |
403 gfx::Size(root_layer->bounds().width() + 100, | 403 gfx::Size(root_layer->bounds().width() + 100, |
404 root_layer->bounds().height() + 100)); | 404 root_layer->bounds().height() + 100)); |
405 root_scroll_layer->SetIsDrawable(true); | 405 root_scroll_layer->SetIsDrawable(true); |
406 root_scroll_layer->SetIsContainerForFixedPositionLayers(true); | 406 root_scroll_layer->SetIsContainerForFixedPositionLayers(true); |
407 root_layer->AddChild(root_scroll_layer); | 407 root_layer->AddChild(root_scroll_layer); |
408 | 408 |
409 layer_tree_host()->RegisterViewportLayers( | 409 layer_tree_host()->RegisterViewportLayers( |
410 root_layer, root_scroll_layer, NULL); | 410 root_layer, root_scroll_layer, NULL); |
411 layer_tree_host()->SetPageScaleFactorAndLimits(1.f, 0.01f, 100.f); | 411 layer_tree_host()->SetPageScaleFactorAndLimits(1.f, 0.01f, 100.f); |
412 } | 412 } |
413 | 413 |
414 virtual void BeginTest() override { | 414 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
415 PostSetNeedsCommitToMainThread(); | |
416 } | |
417 | 415 |
418 virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) override { | 416 void DrawLayersOnThread(LayerTreeHostImpl* impl) override { |
419 LayerImpl* root = impl->active_tree()->root_layer(); | 417 LayerImpl* root = impl->active_tree()->root_layer(); |
420 LayerImpl* scroll_layer = root->children()[0]; | 418 LayerImpl* scroll_layer = root->children()[0]; |
421 | 419 |
422 // Check that a fractional scroll delta is correctly accumulated over | 420 // Check that a fractional scroll delta is correctly accumulated over |
423 // multiple commits. | 421 // multiple commits. |
424 switch (impl->active_tree()->source_frame_number()) { | 422 switch (impl->active_tree()->source_frame_number()) { |
425 case 0: | 423 case 0: |
426 EXPECT_VECTOR_EQ(scroll_layer->scroll_offset(), gfx::Vector2d(0, 0)); | 424 EXPECT_VECTOR_EQ(scroll_layer->scroll_offset(), gfx::Vector2d(0, 0)); |
427 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), gfx::Vector2d(0, 0)); | 425 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), gfx::Vector2d(0, 0)); |
428 PostSetNeedsCommitToMainThread(); | 426 PostSetNeedsCommitToMainThread(); |
(...skipping 11 matching lines...) Expand all Loading... |
440 gfx::ToFlooredVector2d(scroll_amount_ + scroll_amount_)); | 438 gfx::ToFlooredVector2d(scroll_amount_ + scroll_amount_)); |
441 EXPECT_VECTOR_EQ( | 439 EXPECT_VECTOR_EQ( |
442 scroll_layer->ScrollDelta(), | 440 scroll_layer->ScrollDelta(), |
443 gfx::Vector2dF(fmod(2.0f * scroll_amount_.x(), 1.0f), 0.0f)); | 441 gfx::Vector2dF(fmod(2.0f * scroll_amount_.x(), 1.0f), 0.0f)); |
444 EndTest(); | 442 EndTest(); |
445 break; | 443 break; |
446 } | 444 } |
447 scroll_layer->ScrollBy(scroll_amount_); | 445 scroll_layer->ScrollBy(scroll_amount_); |
448 } | 446 } |
449 | 447 |
450 virtual void AfterTest() override {} | 448 void AfterTest() override {} |
451 | 449 |
452 private: | 450 private: |
453 gfx::Vector2dF scroll_amount_; | 451 gfx::Vector2dF scroll_amount_; |
454 }; | 452 }; |
455 | 453 |
456 MULTI_THREAD_TEST_F(LayerTreeHostScrollTestFractionalScroll); | 454 MULTI_THREAD_TEST_F(LayerTreeHostScrollTestFractionalScroll); |
457 | 455 |
458 class LayerTreeHostScrollTestCaseWithChild : public LayerTreeHostScrollTest { | 456 class LayerTreeHostScrollTestCaseWithChild : public LayerTreeHostScrollTest { |
459 public: | 457 public: |
460 LayerTreeHostScrollTestCaseWithChild() | 458 LayerTreeHostScrollTestCaseWithChild() |
461 : initial_offset_(10, 20), | 459 : initial_offset_(10, 20), |
462 javascript_scroll_(40, 5), | 460 javascript_scroll_(40, 5), |
463 scroll_amount_(2, -1), | 461 scroll_amount_(2, -1), |
464 num_scrolls_(0) {} | 462 num_scrolls_(0) {} |
465 | 463 |
466 virtual void SetupTree() override { | 464 void SetupTree() override { |
467 layer_tree_host()->SetDeviceScaleFactor(device_scale_factor_); | 465 layer_tree_host()->SetDeviceScaleFactor(device_scale_factor_); |
468 | 466 |
469 scoped_refptr<Layer> root_layer = Layer::Create(); | 467 scoped_refptr<Layer> root_layer = Layer::Create(); |
470 root_layer->SetBounds(gfx::Size(10, 10)); | 468 root_layer->SetBounds(gfx::Size(10, 10)); |
471 | 469 |
472 root_scroll_layer_ = FakePictureLayer::Create(&fake_content_layer_client_); | 470 root_scroll_layer_ = FakePictureLayer::Create(&fake_content_layer_client_); |
473 root_scroll_layer_->SetBounds(gfx::Size(110, 110)); | 471 root_scroll_layer_->SetBounds(gfx::Size(110, 110)); |
474 | 472 |
475 root_scroll_layer_->SetPosition(gfx::Point()); | 473 root_scroll_layer_->SetPosition(gfx::Point()); |
476 | 474 |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
509 } | 507 } |
510 | 508 |
511 expected_scroll_layer_->SetScrollOffset(initial_offset_); | 509 expected_scroll_layer_->SetScrollOffset(initial_offset_); |
512 | 510 |
513 layer_tree_host()->SetRootLayer(root_layer); | 511 layer_tree_host()->SetRootLayer(root_layer); |
514 layer_tree_host()->RegisterViewportLayers( | 512 layer_tree_host()->RegisterViewportLayers( |
515 root_layer, root_scroll_layer_, NULL); | 513 root_layer, root_scroll_layer_, NULL); |
516 LayerTreeHostScrollTest::SetupTree(); | 514 LayerTreeHostScrollTest::SetupTree(); |
517 } | 515 } |
518 | 516 |
519 virtual void BeginTest() override { PostSetNeedsCommitToMainThread(); } | 517 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
520 | 518 |
521 virtual void WillCommit() override { | 519 void WillCommit() override { |
522 // Keep the test committing (otherwise the early out for no update | 520 // Keep the test committing (otherwise the early out for no update |
523 // will stall the test). | 521 // will stall the test). |
524 if (layer_tree_host()->source_frame_number() < 2) { | 522 if (layer_tree_host()->source_frame_number() < 2) { |
525 layer_tree_host()->SetNeedsCommit(); | 523 layer_tree_host()->SetNeedsCommit(); |
526 } | 524 } |
527 } | 525 } |
528 | 526 |
529 void DidScroll() { | 527 void DidScroll() { |
530 final_scroll_offset_ = expected_scroll_layer_->scroll_offset(); | 528 final_scroll_offset_ = expected_scroll_layer_->scroll_offset(); |
531 } | 529 } |
532 | 530 |
533 virtual void ApplyViewportDeltas(const gfx::Vector2d& scroll_delta, | 531 void ApplyViewportDeltas(const gfx::Vector2d& scroll_delta, |
534 float scale, | 532 float scale, |
535 float top_controls_delta) override { | 533 float top_controls_delta) override { |
536 num_scrolls_++; | 534 num_scrolls_++; |
537 } | 535 } |
538 | 536 |
539 virtual void Layout() override { | 537 void Layout() override { |
540 EXPECT_VECTOR_EQ(gfx::Vector2d(), | 538 EXPECT_VECTOR_EQ(gfx::Vector2d(), |
541 expected_no_scroll_layer_->scroll_offset()); | 539 expected_no_scroll_layer_->scroll_offset()); |
542 | 540 |
543 switch (layer_tree_host()->source_frame_number()) { | 541 switch (layer_tree_host()->source_frame_number()) { |
544 case 0: | 542 case 0: |
545 EXPECT_VECTOR_EQ(initial_offset_, | 543 EXPECT_VECTOR_EQ(initial_offset_, |
546 expected_scroll_layer_->scroll_offset()); | 544 expected_scroll_layer_->scroll_offset()); |
547 break; | 545 break; |
548 case 1: | 546 case 1: |
549 EXPECT_VECTOR_EQ( | 547 EXPECT_VECTOR_EQ( |
550 gfx::ScrollOffsetWithDelta(initial_offset_, scroll_amount_), | 548 gfx::ScrollOffsetWithDelta(initial_offset_, scroll_amount_), |
551 expected_scroll_layer_->scroll_offset()); | 549 expected_scroll_layer_->scroll_offset()); |
552 | 550 |
553 // Pretend like Javascript updated the scroll position itself. | 551 // Pretend like Javascript updated the scroll position itself. |
554 expected_scroll_layer_->SetScrollOffset(javascript_scroll_); | 552 expected_scroll_layer_->SetScrollOffset(javascript_scroll_); |
555 break; | 553 break; |
556 case 2: | 554 case 2: |
557 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(javascript_scroll_, | 555 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(javascript_scroll_, |
558 scroll_amount_), | 556 scroll_amount_), |
559 expected_scroll_layer_->scroll_offset()); | 557 expected_scroll_layer_->scroll_offset()); |
560 break; | 558 break; |
561 } | 559 } |
562 } | 560 } |
563 | 561 |
564 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* impl) override { | 562 void DidActivateTreeOnThread(LayerTreeHostImpl* impl) override { |
565 LayerImpl* root_impl = impl->active_tree()->root_layer(); | 563 LayerImpl* root_impl = impl->active_tree()->root_layer(); |
566 FakePictureLayerImpl* root_scroll_layer_impl = | 564 FakePictureLayerImpl* root_scroll_layer_impl = |
567 static_cast<FakePictureLayerImpl*>(root_impl->children()[0]); | 565 static_cast<FakePictureLayerImpl*>(root_impl->children()[0]); |
568 FakePictureLayerImpl* child_layer_impl = static_cast<FakePictureLayerImpl*>( | 566 FakePictureLayerImpl* child_layer_impl = static_cast<FakePictureLayerImpl*>( |
569 root_scroll_layer_impl->children()[0]); | 567 root_scroll_layer_impl->children()[0]); |
570 | 568 |
571 LayerImpl* expected_scroll_layer_impl = NULL; | 569 LayerImpl* expected_scroll_layer_impl = NULL; |
572 LayerImpl* expected_no_scroll_layer_impl = NULL; | 570 LayerImpl* expected_no_scroll_layer_impl = NULL; |
573 if (scroll_child_layer_) { | 571 if (scroll_child_layer_) { |
574 expected_scroll_layer_impl = child_layer_impl; | 572 expected_scroll_layer_impl = child_layer_impl; |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
625 scroll_amount_), | 623 scroll_amount_), |
626 expected_scroll_layer_impl->scroll_offset()); | 624 expected_scroll_layer_impl->scroll_offset()); |
627 EXPECT_VECTOR_EQ(gfx::Vector2d(), | 625 EXPECT_VECTOR_EQ(gfx::Vector2d(), |
628 expected_scroll_layer_impl->ScrollDelta()); | 626 expected_scroll_layer_impl->ScrollDelta()); |
629 | 627 |
630 EndTest(); | 628 EndTest(); |
631 break; | 629 break; |
632 } | 630 } |
633 } | 631 } |
634 | 632 |
635 virtual void AfterTest() override { | 633 void AfterTest() override { |
636 if (scroll_child_layer_) { | 634 if (scroll_child_layer_) { |
637 EXPECT_EQ(0, num_scrolls_); | 635 EXPECT_EQ(0, num_scrolls_); |
638 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(javascript_scroll_, | 636 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(javascript_scroll_, |
639 scroll_amount_), | 637 scroll_amount_), |
640 final_scroll_offset_); | 638 final_scroll_offset_); |
641 } else { | 639 } else { |
642 EXPECT_EQ(2, num_scrolls_); | 640 EXPECT_EQ(2, num_scrolls_); |
643 EXPECT_VECTOR_EQ(gfx::ScrollOffset(), final_scroll_offset_); | 641 EXPECT_VECTOR_EQ(gfx::ScrollOffset(), final_scroll_offset_); |
644 } | 642 } |
645 } | 643 } |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
741 | 739 |
742 TEST_F(LayerTreeHostScrollTestCaseWithChild, | 740 TEST_F(LayerTreeHostScrollTestCaseWithChild, |
743 DeviceScaleFactor2_ScrollRootScrollLayer_DelegatingRenderer) { | 741 DeviceScaleFactor2_ScrollRootScrollLayer_DelegatingRenderer) { |
744 device_scale_factor_ = 2.f; | 742 device_scale_factor_ = 2.f; |
745 scroll_child_layer_ = false; | 743 scroll_child_layer_ = false; |
746 RunTest(true, true, true); | 744 RunTest(true, true, true); |
747 } | 745 } |
748 | 746 |
749 class ImplSidePaintingScrollTest : public LayerTreeHostScrollTest { | 747 class ImplSidePaintingScrollTest : public LayerTreeHostScrollTest { |
750 public: | 748 public: |
751 virtual void InitializeSettings(LayerTreeSettings* settings) override { | 749 void InitializeSettings(LayerTreeSettings* settings) override { |
752 settings->impl_side_painting = true; | 750 settings->impl_side_painting = true; |
753 } | 751 } |
754 | 752 |
755 virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) override { | 753 void DrawLayersOnThread(LayerTreeHostImpl* impl) override { |
756 if (impl->pending_tree()) | 754 if (impl->pending_tree()) |
757 impl->SetNeedsRedraw(); | 755 impl->SetNeedsRedraw(); |
758 } | 756 } |
759 }; | 757 }; |
760 | 758 |
761 class ImplSidePaintingScrollTestSimple : public ImplSidePaintingScrollTest { | 759 class ImplSidePaintingScrollTestSimple : public ImplSidePaintingScrollTest { |
762 public: | 760 public: |
763 ImplSidePaintingScrollTestSimple() | 761 ImplSidePaintingScrollTestSimple() |
764 : initial_scroll_(10, 20), | 762 : initial_scroll_(10, 20), |
765 main_thread_scroll_(40, 5), | 763 main_thread_scroll_(40, 5), |
766 impl_thread_scroll1_(2, -1), | 764 impl_thread_scroll1_(2, -1), |
767 impl_thread_scroll2_(-3, 10), | 765 impl_thread_scroll2_(-3, 10), |
768 num_scrolls_(0) {} | 766 num_scrolls_(0) {} |
769 | 767 |
770 virtual void SetupTree() override { | 768 void SetupTree() override { |
771 LayerTreeHostScrollTest::SetupTree(); | 769 LayerTreeHostScrollTest::SetupTree(); |
772 Layer* root_layer = layer_tree_host()->root_layer(); | 770 Layer* root_layer = layer_tree_host()->root_layer(); |
773 scoped_refptr<Layer> root_scroll_layer = Layer::Create(); | 771 scoped_refptr<Layer> root_scroll_layer = Layer::Create(); |
774 root_scroll_layer->SetScrollClipLayerId(root_layer->id()); | 772 root_scroll_layer->SetScrollClipLayerId(root_layer->id()); |
775 root_scroll_layer->SetScrollOffset(initial_scroll_); | 773 root_scroll_layer->SetScrollOffset(initial_scroll_); |
776 root_scroll_layer->SetBounds( | 774 root_scroll_layer->SetBounds( |
777 gfx::Size(root_layer->bounds().width() + 100, | 775 gfx::Size(root_layer->bounds().width() + 100, |
778 root_layer->bounds().height() + 100)); | 776 root_layer->bounds().height() + 100)); |
779 root_scroll_layer->SetIsDrawable(true); | 777 root_scroll_layer->SetIsDrawable(true); |
780 root_scroll_layer->SetIsContainerForFixedPositionLayers(true); | 778 root_scroll_layer->SetIsContainerForFixedPositionLayers(true); |
781 root_layer->AddChild(root_scroll_layer); | 779 root_layer->AddChild(root_scroll_layer); |
782 | 780 |
783 layer_tree_host()->RegisterViewportLayers( | 781 layer_tree_host()->RegisterViewportLayers( |
784 root_layer, root_scroll_layer, NULL); | 782 root_layer, root_scroll_layer, NULL); |
785 layer_tree_host()->SetPageScaleFactorAndLimits(1.f, 0.01f, 100.f); | 783 layer_tree_host()->SetPageScaleFactorAndLimits(1.f, 0.01f, 100.f); |
786 } | 784 } |
787 | 785 |
788 virtual void BeginTest() override { | 786 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
789 PostSetNeedsCommitToMainThread(); | |
790 } | |
791 | 787 |
792 virtual void Layout() override { | 788 void Layout() override { |
793 Layer* root = layer_tree_host()->root_layer(); | 789 Layer* root = layer_tree_host()->root_layer(); |
794 Layer* scroll_layer = root->children()[0].get(); | 790 Layer* scroll_layer = root->children()[0].get(); |
795 if (!layer_tree_host()->source_frame_number()) { | 791 if (!layer_tree_host()->source_frame_number()) { |
796 EXPECT_VECTOR_EQ(scroll_layer->scroll_offset(), initial_scroll_); | 792 EXPECT_VECTOR_EQ(scroll_layer->scroll_offset(), initial_scroll_); |
797 } else { | 793 } else { |
798 EXPECT_VECTOR_EQ( | 794 EXPECT_VECTOR_EQ( |
799 scroll_layer->scroll_offset(), | 795 scroll_layer->scroll_offset(), |
800 gfx::ScrollOffsetWithDelta(initial_scroll_, impl_thread_scroll1_)); | 796 gfx::ScrollOffsetWithDelta(initial_scroll_, impl_thread_scroll1_)); |
801 | 797 |
802 // Pretend like Javascript updated the scroll position itself with a | 798 // Pretend like Javascript updated the scroll position itself with a |
803 // change of main_thread_scroll. | 799 // change of main_thread_scroll. |
804 scroll_layer->SetScrollOffset( | 800 scroll_layer->SetScrollOffset( |
805 gfx::ScrollOffsetWithDelta( | 801 gfx::ScrollOffsetWithDelta( |
806 initial_scroll_, main_thread_scroll_ + impl_thread_scroll1_)); | 802 initial_scroll_, main_thread_scroll_ + impl_thread_scroll1_)); |
807 } | 803 } |
808 } | 804 } |
809 | 805 |
810 virtual void CommitCompleteOnThread(LayerTreeHostImpl* impl) override { | 806 void CommitCompleteOnThread(LayerTreeHostImpl* impl) override { |
811 // We force a second draw here of the first commit before activating | 807 // We force a second draw here of the first commit before activating |
812 // the second commit. | 808 // the second commit. |
813 if (impl->active_tree()->source_frame_number() == 0) | 809 if (impl->active_tree()->source_frame_number() == 0) |
814 impl->SetNeedsRedraw(); | 810 impl->SetNeedsRedraw(); |
815 } | 811 } |
816 | 812 |
817 virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) override { | 813 void DrawLayersOnThread(LayerTreeHostImpl* impl) override { |
818 ImplSidePaintingScrollTest::DrawLayersOnThread(impl); | 814 ImplSidePaintingScrollTest::DrawLayersOnThread(impl); |
819 | 815 |
820 LayerImpl* root = impl->active_tree()->root_layer(); | 816 LayerImpl* root = impl->active_tree()->root_layer(); |
821 LayerImpl* scroll_layer = root->children()[0]; | 817 LayerImpl* scroll_layer = root->children()[0]; |
822 LayerImpl* pending_root = | 818 LayerImpl* pending_root = |
823 impl->active_tree()->FindPendingTreeLayerById(root->id()); | 819 impl->active_tree()->FindPendingTreeLayerById(root->id()); |
824 | 820 |
825 switch (impl->active_tree()->source_frame_number()) { | 821 switch (impl->active_tree()->source_frame_number()) { |
826 case 0: | 822 case 0: |
827 if (!impl->pending_tree()) { | 823 if (!impl->pending_tree()) { |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
865 scroll_layer->scroll_offset(), | 861 scroll_layer->scroll_offset(), |
866 gfx::ScrollOffsetWithDelta( | 862 gfx::ScrollOffsetWithDelta( |
867 initial_scroll_, main_thread_scroll_ + impl_thread_scroll1_)); | 863 initial_scroll_, main_thread_scroll_ + impl_thread_scroll1_)); |
868 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), impl_thread_scroll2_); | 864 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), impl_thread_scroll2_); |
869 EXPECT_VECTOR_EQ(scroll_layer->sent_scroll_delta(), gfx::Vector2d()); | 865 EXPECT_VECTOR_EQ(scroll_layer->sent_scroll_delta(), gfx::Vector2d()); |
870 EndTest(); | 866 EndTest(); |
871 break; | 867 break; |
872 } | 868 } |
873 } | 869 } |
874 | 870 |
875 virtual void ApplyViewportDeltas(const gfx::Vector2d& scroll_delta, | 871 void ApplyViewportDeltas(const gfx::Vector2d& scroll_delta, |
876 float scale, | 872 float scale, |
877 float top_controls_delta) override { | 873 float top_controls_delta) override { |
878 num_scrolls_++; | 874 num_scrolls_++; |
879 } | 875 } |
880 | 876 |
881 virtual void AfterTest() override { EXPECT_EQ(1, num_scrolls_); } | 877 void AfterTest() override { EXPECT_EQ(1, num_scrolls_); } |
882 | 878 |
883 private: | 879 private: |
884 gfx::ScrollOffset initial_scroll_; | 880 gfx::ScrollOffset initial_scroll_; |
885 gfx::Vector2dF main_thread_scroll_; | 881 gfx::Vector2dF main_thread_scroll_; |
886 gfx::Vector2dF impl_thread_scroll1_; | 882 gfx::Vector2dF impl_thread_scroll1_; |
887 gfx::Vector2dF impl_thread_scroll2_; | 883 gfx::Vector2dF impl_thread_scroll2_; |
888 int num_scrolls_; | 884 int num_scrolls_; |
889 }; | 885 }; |
890 | 886 |
891 MULTI_THREAD_TEST_F(ImplSidePaintingScrollTestSimple); | 887 MULTI_THREAD_TEST_F(ImplSidePaintingScrollTestSimple); |
892 | 888 |
893 // This test makes sure that layers pick up scrolls that occur between | 889 // This test makes sure that layers pick up scrolls that occur between |
894 // beginning a commit and finishing a commit (aka scroll deltas not | 890 // beginning a commit and finishing a commit (aka scroll deltas not |
895 // included in sent scroll delta) still apply to layers that don't | 891 // included in sent scroll delta) still apply to layers that don't |
896 // push properties. | 892 // push properties. |
897 class ImplSidePaintingScrollTestImplOnlyScroll | 893 class ImplSidePaintingScrollTestImplOnlyScroll |
898 : public ImplSidePaintingScrollTest { | 894 : public ImplSidePaintingScrollTest { |
899 public: | 895 public: |
900 ImplSidePaintingScrollTestImplOnlyScroll() | 896 ImplSidePaintingScrollTestImplOnlyScroll() |
901 : initial_scroll_(20, 10), impl_thread_scroll_(-2, 3) {} | 897 : initial_scroll_(20, 10), impl_thread_scroll_(-2, 3) {} |
902 | 898 |
903 virtual void SetupTree() override { | 899 void SetupTree() override { |
904 LayerTreeHostScrollTest::SetupTree(); | 900 LayerTreeHostScrollTest::SetupTree(); |
905 Layer* root_layer = layer_tree_host()->root_layer(); | 901 Layer* root_layer = layer_tree_host()->root_layer(); |
906 scoped_refptr<Layer> root_scroll_layer = Layer::Create(); | 902 scoped_refptr<Layer> root_scroll_layer = Layer::Create(); |
907 root_scroll_layer->SetScrollClipLayerId(root_layer->id()); | 903 root_scroll_layer->SetScrollClipLayerId(root_layer->id()); |
908 root_scroll_layer->SetScrollOffset(initial_scroll_); | 904 root_scroll_layer->SetScrollOffset(initial_scroll_); |
909 root_scroll_layer->SetBounds( | 905 root_scroll_layer->SetBounds( |
910 gfx::Size(root_layer->bounds().width() + 100, | 906 gfx::Size(root_layer->bounds().width() + 100, |
911 root_layer->bounds().height() + 100)); | 907 root_layer->bounds().height() + 100)); |
912 root_scroll_layer->SetIsDrawable(true); | 908 root_scroll_layer->SetIsDrawable(true); |
913 root_scroll_layer->SetIsContainerForFixedPositionLayers(true); | 909 root_scroll_layer->SetIsContainerForFixedPositionLayers(true); |
914 root_layer->AddChild(root_scroll_layer); | 910 root_layer->AddChild(root_scroll_layer); |
915 | 911 |
916 layer_tree_host()->RegisterViewportLayers( | 912 layer_tree_host()->RegisterViewportLayers( |
917 root_layer, root_scroll_layer, NULL); | 913 root_layer, root_scroll_layer, NULL); |
918 layer_tree_host()->SetPageScaleFactorAndLimits(1.f, 0.01f, 100.f); | 914 layer_tree_host()->SetPageScaleFactorAndLimits(1.f, 0.01f, 100.f); |
919 } | 915 } |
920 | 916 |
921 virtual void BeginTest() override { | 917 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
922 PostSetNeedsCommitToMainThread(); | |
923 } | |
924 | 918 |
925 virtual void WillCommit() override { | 919 void WillCommit() override { |
926 Layer* root = layer_tree_host()->root_layer(); | 920 Layer* root = layer_tree_host()->root_layer(); |
927 Layer* scroll_layer = root->children()[0].get(); | 921 Layer* scroll_layer = root->children()[0].get(); |
928 switch (layer_tree_host()->source_frame_number()) { | 922 switch (layer_tree_host()->source_frame_number()) { |
929 case 0: | 923 case 0: |
930 EXPECT_TRUE(scroll_layer->needs_push_properties()); | 924 EXPECT_TRUE(scroll_layer->needs_push_properties()); |
931 break; | 925 break; |
932 case 1: | 926 case 1: |
933 // Even if this layer doesn't need push properties, it should | 927 // Even if this layer doesn't need push properties, it should |
934 // still pick up scrolls that happen on the active layer during | 928 // still pick up scrolls that happen on the active layer during |
935 // commit. | 929 // commit. |
936 EXPECT_FALSE(scroll_layer->needs_push_properties()); | 930 EXPECT_FALSE(scroll_layer->needs_push_properties()); |
937 break; | 931 break; |
938 } | 932 } |
939 } | 933 } |
940 | 934 |
941 virtual void BeginCommitOnThread(LayerTreeHostImpl* impl) override { | 935 void BeginCommitOnThread(LayerTreeHostImpl* impl) override { |
942 // Scroll after the 2nd commit has started. | 936 // Scroll after the 2nd commit has started. |
943 if (impl->active_tree()->source_frame_number() == 0) { | 937 if (impl->active_tree()->source_frame_number() == 0) { |
944 LayerImpl* active_root = impl->active_tree()->root_layer(); | 938 LayerImpl* active_root = impl->active_tree()->root_layer(); |
945 LayerImpl* active_scroll_layer = active_root->children()[0]; | 939 LayerImpl* active_scroll_layer = active_root->children()[0]; |
946 ASSERT_TRUE(active_root); | 940 ASSERT_TRUE(active_root); |
947 ASSERT_TRUE(active_scroll_layer); | 941 ASSERT_TRUE(active_scroll_layer); |
948 active_scroll_layer->ScrollBy(impl_thread_scroll_); | 942 active_scroll_layer->ScrollBy(impl_thread_scroll_); |
949 } | 943 } |
950 } | 944 } |
951 | 945 |
952 virtual void CommitCompleteOnThread(LayerTreeHostImpl* impl) override { | 946 void CommitCompleteOnThread(LayerTreeHostImpl* impl) override { |
953 // We force a second draw here of the first commit before activating | 947 // We force a second draw here of the first commit before activating |
954 // the second commit. | 948 // the second commit. |
955 LayerImpl* active_root = impl->active_tree()->root_layer(); | 949 LayerImpl* active_root = impl->active_tree()->root_layer(); |
956 LayerImpl* active_scroll_layer = | 950 LayerImpl* active_scroll_layer = |
957 active_root ? active_root->children()[0] : NULL; | 951 active_root ? active_root->children()[0] : NULL; |
958 LayerImpl* pending_root = impl->pending_tree()->root_layer(); | 952 LayerImpl* pending_root = impl->pending_tree()->root_layer(); |
959 LayerImpl* pending_scroll_layer = pending_root->children()[0]; | 953 LayerImpl* pending_scroll_layer = pending_root->children()[0]; |
960 | 954 |
961 ASSERT_TRUE(pending_root); | 955 ASSERT_TRUE(pending_root); |
962 ASSERT_TRUE(pending_scroll_layer); | 956 ASSERT_TRUE(pending_scroll_layer); |
(...skipping 28 matching lines...) Expand all Loading... |
991 gfx::ScrollOffsetWithDelta(initial_scroll_, | 985 gfx::ScrollOffsetWithDelta(initial_scroll_, |
992 impl_thread_scroll_)); | 986 impl_thread_scroll_)); |
993 EXPECT_VECTOR_EQ(pending_scroll_layer->ScrollDelta(), gfx::Vector2d()); | 987 EXPECT_VECTOR_EQ(pending_scroll_layer->ScrollDelta(), gfx::Vector2d()); |
994 EXPECT_VECTOR_EQ(pending_scroll_layer->sent_scroll_delta(), | 988 EXPECT_VECTOR_EQ(pending_scroll_layer->sent_scroll_delta(), |
995 gfx::Vector2d()); | 989 gfx::Vector2d()); |
996 EndTest(); | 990 EndTest(); |
997 break; | 991 break; |
998 } | 992 } |
999 } | 993 } |
1000 | 994 |
1001 virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) override { | 995 void DrawLayersOnThread(LayerTreeHostImpl* impl) override { |
1002 ImplSidePaintingScrollTest::DrawLayersOnThread(impl); | 996 ImplSidePaintingScrollTest::DrawLayersOnThread(impl); |
1003 | 997 |
1004 LayerImpl* root = impl->active_tree()->root_layer(); | 998 LayerImpl* root = impl->active_tree()->root_layer(); |
1005 LayerImpl* scroll_layer = root->children()[0]; | 999 LayerImpl* scroll_layer = root->children()[0]; |
1006 | 1000 |
1007 switch (impl->active_tree()->source_frame_number()) { | 1001 switch (impl->active_tree()->source_frame_number()) { |
1008 case 0: | 1002 case 0: |
1009 EXPECT_VECTOR_EQ(scroll_layer->scroll_offset(), initial_scroll_); | 1003 EXPECT_VECTOR_EQ(scroll_layer->scroll_offset(), initial_scroll_); |
1010 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), gfx::Vector2d()); | 1004 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), gfx::Vector2d()); |
1011 EXPECT_VECTOR_EQ(scroll_layer->sent_scroll_delta(), gfx::Vector2d()); | 1005 EXPECT_VECTOR_EQ(scroll_layer->sent_scroll_delta(), gfx::Vector2d()); |
1012 PostSetNeedsCommitToMainThread(); | 1006 PostSetNeedsCommitToMainThread(); |
1013 break; | 1007 break; |
1014 case 1: | 1008 case 1: |
1015 EXPECT_VECTOR_EQ(scroll_layer->scroll_offset(), initial_scroll_); | 1009 EXPECT_VECTOR_EQ(scroll_layer->scroll_offset(), initial_scroll_); |
1016 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), impl_thread_scroll_); | 1010 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), impl_thread_scroll_); |
1017 EXPECT_VECTOR_EQ(scroll_layer->sent_scroll_delta(), gfx::Vector2d()); | 1011 EXPECT_VECTOR_EQ(scroll_layer->sent_scroll_delta(), gfx::Vector2d()); |
1018 PostSetNeedsCommitToMainThread(); | 1012 PostSetNeedsCommitToMainThread(); |
1019 break; | 1013 break; |
1020 } | 1014 } |
1021 } | 1015 } |
1022 | 1016 |
1023 virtual void AfterTest() override {} | 1017 void AfterTest() override {} |
1024 | 1018 |
1025 private: | 1019 private: |
1026 gfx::ScrollOffset initial_scroll_; | 1020 gfx::ScrollOffset initial_scroll_; |
1027 gfx::Vector2dF impl_thread_scroll_; | 1021 gfx::Vector2dF impl_thread_scroll_; |
1028 }; | 1022 }; |
1029 | 1023 |
1030 MULTI_THREAD_TEST_F(ImplSidePaintingScrollTestImplOnlyScroll); | 1024 MULTI_THREAD_TEST_F(ImplSidePaintingScrollTestImplOnlyScroll); |
1031 | 1025 |
1032 class LayerTreeHostScrollTestScrollZeroMaxScrollOffset | 1026 class LayerTreeHostScrollTestScrollZeroMaxScrollOffset |
1033 : public LayerTreeHostScrollTest { | 1027 : public LayerTreeHostScrollTest { |
1034 public: | 1028 public: |
1035 LayerTreeHostScrollTestScrollZeroMaxScrollOffset() {} | 1029 LayerTreeHostScrollTestScrollZeroMaxScrollOffset() {} |
1036 | 1030 |
1037 virtual void SetupTree() override { | 1031 void SetupTree() override { |
1038 LayerTreeTest::SetupTree(); | 1032 LayerTreeTest::SetupTree(); |
1039 scoped_refptr<Layer> scroll_layer = Layer::Create(); | 1033 scoped_refptr<Layer> scroll_layer = Layer::Create(); |
1040 layer_tree_host()->root_layer()->AddChild(scroll_layer); | 1034 layer_tree_host()->root_layer()->AddChild(scroll_layer); |
1041 } | 1035 } |
1042 | 1036 |
1043 virtual void BeginTest() override { PostSetNeedsCommitToMainThread(); } | 1037 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
1044 | 1038 |
1045 virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) override { | 1039 void DrawLayersOnThread(LayerTreeHostImpl* impl) override { |
1046 LayerImpl* root = impl->active_tree()->root_layer(); | 1040 LayerImpl* root = impl->active_tree()->root_layer(); |
1047 LayerImpl* scroll_layer = root->children()[0]; | 1041 LayerImpl* scroll_layer = root->children()[0]; |
1048 scroll_layer->SetScrollClipLayer(root->id()); | 1042 scroll_layer->SetScrollClipLayer(root->id()); |
1049 | 1043 |
1050 // Set max_scroll_offset = (100, 100). | 1044 // Set max_scroll_offset = (100, 100). |
1051 scroll_layer->SetBounds( | 1045 scroll_layer->SetBounds( |
1052 gfx::Size(root->bounds().width() + 100, root->bounds().height() + 100)); | 1046 gfx::Size(root->bounds().width() + 100, root->bounds().height() + 100)); |
1053 EXPECT_EQ(InputHandler::ScrollStarted, | 1047 EXPECT_EQ(InputHandler::ScrollStarted, |
1054 scroll_layer->TryScroll(gfx::PointF(0.0f, 1.0f), | 1048 scroll_layer->TryScroll(gfx::PointF(0.0f, 1.0f), |
1055 InputHandler::Gesture)); | 1049 InputHandler::Gesture)); |
1056 | 1050 |
1057 // Set max_scroll_offset = (0, 0). | 1051 // Set max_scroll_offset = (0, 0). |
1058 scroll_layer->SetBounds(root->bounds()); | 1052 scroll_layer->SetBounds(root->bounds()); |
1059 EXPECT_EQ(InputHandler::ScrollIgnored, | 1053 EXPECT_EQ(InputHandler::ScrollIgnored, |
1060 scroll_layer->TryScroll(gfx::PointF(0.0f, 1.0f), | 1054 scroll_layer->TryScroll(gfx::PointF(0.0f, 1.0f), |
1061 InputHandler::Gesture)); | 1055 InputHandler::Gesture)); |
1062 | 1056 |
1063 // Set max_scroll_offset = (-100, -100). | 1057 // Set max_scroll_offset = (-100, -100). |
1064 scroll_layer->SetBounds(gfx::Size()); | 1058 scroll_layer->SetBounds(gfx::Size()); |
1065 EXPECT_EQ(InputHandler::ScrollIgnored, | 1059 EXPECT_EQ(InputHandler::ScrollIgnored, |
1066 scroll_layer->TryScroll(gfx::PointF(0.0f, 1.0f), | 1060 scroll_layer->TryScroll(gfx::PointF(0.0f, 1.0f), |
1067 InputHandler::Gesture)); | 1061 InputHandler::Gesture)); |
1068 | 1062 |
1069 EndTest(); | 1063 EndTest(); |
1070 } | 1064 } |
1071 | 1065 |
1072 virtual void AfterTest() override {} | 1066 void AfterTest() override {} |
1073 }; | 1067 }; |
1074 | 1068 |
1075 SINGLE_AND_MULTI_THREAD_TEST_F( | 1069 SINGLE_AND_MULTI_THREAD_TEST_F( |
1076 LayerTreeHostScrollTestScrollZeroMaxScrollOffset); | 1070 LayerTreeHostScrollTestScrollZeroMaxScrollOffset); |
1077 | 1071 |
1078 class ThreadCheckingInputHandlerClient : public InputHandlerClient { | 1072 class ThreadCheckingInputHandlerClient : public InputHandlerClient { |
1079 public: | 1073 public: |
1080 ThreadCheckingInputHandlerClient(base::SingleThreadTaskRunner* runner, | 1074 ThreadCheckingInputHandlerClient(base::SingleThreadTaskRunner* runner, |
1081 bool* received_stop_flinging) | 1075 bool* received_stop_flinging) |
1082 : task_runner_(runner), received_stop_flinging_(received_stop_flinging) {} | 1076 : task_runner_(runner), received_stop_flinging_(received_stop_flinging) {} |
1083 | 1077 |
1084 virtual void WillShutdown() override { | 1078 void WillShutdown() override { |
1085 if (!received_stop_flinging_) | 1079 if (!received_stop_flinging_) |
1086 ADD_FAILURE() << "WillShutdown() called before fling stopped"; | 1080 ADD_FAILURE() << "WillShutdown() called before fling stopped"; |
1087 } | 1081 } |
1088 | 1082 |
1089 virtual void Animate(base::TimeTicks time) override { | 1083 void Animate(base::TimeTicks time) override { |
1090 if (!task_runner_->BelongsToCurrentThread()) | 1084 if (!task_runner_->BelongsToCurrentThread()) |
1091 ADD_FAILURE() << "Animate called on wrong thread"; | 1085 ADD_FAILURE() << "Animate called on wrong thread"; |
1092 } | 1086 } |
1093 | 1087 |
1094 virtual void MainThreadHasStoppedFlinging() override { | 1088 void MainThreadHasStoppedFlinging() override { |
1095 if (!task_runner_->BelongsToCurrentThread()) | 1089 if (!task_runner_->BelongsToCurrentThread()) |
1096 ADD_FAILURE() << "MainThreadHasStoppedFlinging called on wrong thread"; | 1090 ADD_FAILURE() << "MainThreadHasStoppedFlinging called on wrong thread"; |
1097 *received_stop_flinging_ = true; | 1091 *received_stop_flinging_ = true; |
1098 } | 1092 } |
1099 | 1093 |
1100 virtual void DidOverscroll( | 1094 void DidOverscroll(const gfx::PointF& causal_event_viewport_point, |
1101 const gfx::PointF& causal_event_viewport_point, | 1095 const gfx::Vector2dF& accumulated_overscroll, |
1102 const gfx::Vector2dF& accumulated_overscroll, | 1096 const gfx::Vector2dF& latest_overscroll_delta) override { |
1103 const gfx::Vector2dF& latest_overscroll_delta) override { | |
1104 if (!task_runner_->BelongsToCurrentThread()) | 1097 if (!task_runner_->BelongsToCurrentThread()) |
1105 ADD_FAILURE() << "DidOverscroll called on wrong thread"; | 1098 ADD_FAILURE() << "DidOverscroll called on wrong thread"; |
1106 } | 1099 } |
1107 | 1100 |
1108 private: | 1101 private: |
1109 base::SingleThreadTaskRunner* task_runner_; | 1102 base::SingleThreadTaskRunner* task_runner_; |
1110 bool* received_stop_flinging_; | 1103 bool* received_stop_flinging_; |
1111 }; | 1104 }; |
1112 | 1105 |
1113 void BindInputHandlerOnCompositorThread( | 1106 void BindInputHandlerOnCompositorThread( |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1149 impl_thread.Stop(); | 1142 impl_thread.Stop(); |
1150 EXPECT_TRUE(received_stop_flinging); | 1143 EXPECT_TRUE(received_stop_flinging); |
1151 } | 1144 } |
1152 | 1145 |
1153 class LayerTreeHostScrollTestLayerStructureChange | 1146 class LayerTreeHostScrollTestLayerStructureChange |
1154 : public LayerTreeHostScrollTest { | 1147 : public LayerTreeHostScrollTest { |
1155 public: | 1148 public: |
1156 LayerTreeHostScrollTestLayerStructureChange() | 1149 LayerTreeHostScrollTestLayerStructureChange() |
1157 : scroll_destroy_whole_tree_(false) {} | 1150 : scroll_destroy_whole_tree_(false) {} |
1158 | 1151 |
1159 virtual void SetupTree() override { | 1152 void SetupTree() override { |
1160 scoped_refptr<Layer> root_layer = Layer::Create(); | 1153 scoped_refptr<Layer> root_layer = Layer::Create(); |
1161 root_layer->SetBounds(gfx::Size(10, 10)); | 1154 root_layer->SetBounds(gfx::Size(10, 10)); |
1162 | 1155 |
1163 Layer* root_scroll_layer = | 1156 Layer* root_scroll_layer = |
1164 CreateScrollLayer(root_layer.get(), &root_scroll_layer_client_); | 1157 CreateScrollLayer(root_layer.get(), &root_scroll_layer_client_); |
1165 CreateScrollLayer(root_layer.get(), &sibling_scroll_layer_client_); | 1158 CreateScrollLayer(root_layer.get(), &sibling_scroll_layer_client_); |
1166 CreateScrollLayer(root_scroll_layer, &child_scroll_layer_client_); | 1159 CreateScrollLayer(root_scroll_layer, &child_scroll_layer_client_); |
1167 | 1160 |
1168 layer_tree_host()->SetRootLayer(root_layer); | 1161 layer_tree_host()->SetRootLayer(root_layer); |
1169 LayerTreeHostScrollTest::SetupTree(); | 1162 LayerTreeHostScrollTest::SetupTree(); |
1170 } | 1163 } |
1171 | 1164 |
1172 virtual void BeginTest() override { | 1165 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
1173 PostSetNeedsCommitToMainThread(); | |
1174 } | |
1175 | 1166 |
1176 virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) override { | 1167 void DrawLayersOnThread(LayerTreeHostImpl* impl) override { |
1177 LayerImpl* root = impl->active_tree()->root_layer(); | 1168 LayerImpl* root = impl->active_tree()->root_layer(); |
1178 switch (impl->active_tree()->source_frame_number()) { | 1169 switch (impl->active_tree()->source_frame_number()) { |
1179 case 0: | 1170 case 0: |
1180 root->child_at(0)->SetScrollDelta(gfx::Vector2dF(5, 5)); | 1171 root->child_at(0)->SetScrollDelta(gfx::Vector2dF(5, 5)); |
1181 root->child_at(0)->child_at(0)->SetScrollDelta(gfx::Vector2dF(5, 5)); | 1172 root->child_at(0)->child_at(0)->SetScrollDelta(gfx::Vector2dF(5, 5)); |
1182 root->child_at(1)->SetScrollDelta(gfx::Vector2dF(5, 5)); | 1173 root->child_at(1)->SetScrollDelta(gfx::Vector2dF(5, 5)); |
1183 PostSetNeedsCommitToMainThread(); | 1174 PostSetNeedsCommitToMainThread(); |
1184 break; | 1175 break; |
1185 case 1: | 1176 case 1: |
1186 EndTest(); | 1177 EndTest(); |
1187 break; | 1178 break; |
1188 } | 1179 } |
1189 } | 1180 } |
1190 | 1181 |
1191 virtual void AfterTest() override {} | 1182 void AfterTest() override {} |
1192 | 1183 |
1193 virtual void DidScroll(Layer* layer) { | 1184 virtual void DidScroll(Layer* layer) { |
1194 if (scroll_destroy_whole_tree_) { | 1185 if (scroll_destroy_whole_tree_) { |
1195 layer_tree_host()->SetRootLayer(NULL); | 1186 layer_tree_host()->SetRootLayer(NULL); |
1196 EndTest(); | 1187 EndTest(); |
1197 return; | 1188 return; |
1198 } | 1189 } |
1199 layer->RemoveFromParent(); | 1190 layer->RemoveFromParent(); |
1200 } | 1191 } |
1201 | 1192 |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1239 RunTest(true, false, true); | 1230 RunTest(true, false, true); |
1240 } | 1231 } |
1241 | 1232 |
1242 TEST_F(LayerTreeHostScrollTestLayerStructureChange, ScrollDestroyWholeTree) { | 1233 TEST_F(LayerTreeHostScrollTestLayerStructureChange, ScrollDestroyWholeTree) { |
1243 scroll_destroy_whole_tree_ = true; | 1234 scroll_destroy_whole_tree_ = true; |
1244 RunTest(true, false, true); | 1235 RunTest(true, false, true); |
1245 } | 1236 } |
1246 | 1237 |
1247 } // namespace | 1238 } // namespace |
1248 } // namespace cc | 1239 } // namespace cc |
OLD | NEW |