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

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

Issue 584503005: Make scroll offset type of float in cc (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: update unittests Created 6 years, 3 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 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 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
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 virtual 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_VECTOR2DF_EQ(initial_scroll_, scroll_layer->scroll_offset());
danakj 2014/09/18 21:23:49 EXPECT_EQ?
Yufeng Shen (Slow to review) 2014/09/18 22:47:55 Done.
56 } else { 56 } else {
57 EXPECT_VECTOR_EQ(initial_scroll_ + scroll_amount_, 57 EXPECT_VECTOR2DF_EQ(initial_scroll_ + scroll_amount_,
58 scroll_layer->scroll_offset()); 58 scroll_layer->scroll_offset());
59 59
60 // Pretend like Javascript updated the scroll position itself. 60 // Pretend like Javascript updated the scroll position itself.
61 scroll_layer->SetScrollOffset(second_scroll_); 61 scroll_layer->SetScrollOffset(second_scroll_);
62 } 62 }
63 } 63 }
64 64
65 virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) OVERRIDE { 65 virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) OVERRIDE {
66 LayerImpl* root = impl->active_tree()->root_layer(); 66 LayerImpl* root = impl->active_tree()->root_layer();
67 LayerImpl* scroll_layer = root->children()[0]; 67 LayerImpl* scroll_layer = root->children()[0];
68 EXPECT_VECTOR_EQ(gfx::Vector2d(), scroll_layer->ScrollDelta()); 68 EXPECT_VECTOR2DF_EQ(gfx::Vector2dF(), scroll_layer->ScrollDelta());
69 69
70 scroll_layer->SetScrollClipLayer(root->id()); 70 scroll_layer->SetScrollClipLayer(root->id());
71 scroll_layer->SetBounds( 71 scroll_layer->SetBounds(
72 gfx::Size(root->bounds().width() + 100, root->bounds().height() + 100)); 72 gfx::Size(root->bounds().width() + 100, root->bounds().height() + 100));
73 scroll_layer->ScrollBy(scroll_amount_); 73 scroll_layer->ScrollBy(scroll_amount_);
74 74
75 switch (impl->active_tree()->source_frame_number()) { 75 switch (impl->active_tree()->source_frame_number()) {
76 case 0: 76 case 0:
77 EXPECT_VECTOR_EQ(initial_scroll_, scroll_layer->scroll_offset()); 77 EXPECT_VECTOR2DF_EQ(initial_scroll_, scroll_layer->scroll_offset());
78 EXPECT_VECTOR_EQ(scroll_amount_, scroll_layer->ScrollDelta()); 78 EXPECT_VECTOR2DF_EQ(scroll_amount_, scroll_layer->ScrollDelta());
79 PostSetNeedsCommitToMainThread(); 79 PostSetNeedsCommitToMainThread();
80 break; 80 break;
81 case 1: 81 case 1:
82 EXPECT_VECTOR_EQ(scroll_layer->scroll_offset(), second_scroll_); 82 EXPECT_VECTOR2DF_EQ(scroll_layer->scroll_offset(), second_scroll_);
83 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), scroll_amount_); 83 EXPECT_VECTOR2DF_EQ(scroll_layer->ScrollDelta(), scroll_amount_);
84 EndTest(); 84 EndTest();
85 break; 85 break;
86 } 86 }
87 } 87 }
88 88
89 virtual void ApplyViewportDeltas(const gfx::Vector2d& scroll_delta, 89 virtual void ApplyViewportDeltas(const gfx::Vector2d& scroll_delta,
90 float scale, 90 float scale,
91 float top_controls_delta) OVERRIDE { 91 float top_controls_delta) OVERRIDE {
92 num_scrolls_++; 92 num_scrolls_++;
93 } 93 }
(...skipping 26 matching lines...) Expand all
120 scroll_layer_->SetIsContainerForFixedPositionLayers(true); 120 scroll_layer_->SetIsContainerForFixedPositionLayers(true);
121 scroll_layer_->SetScrollClipLayerId(root_layer->id()); 121 scroll_layer_->SetScrollClipLayerId(root_layer->id());
122 scroll_layer_->SetScrollOffset(initial_scroll_); 122 scroll_layer_->SetScrollOffset(initial_scroll_);
123 layer_tree_host()->RegisterViewportLayers(root_layer, scroll_layer_, NULL); 123 layer_tree_host()->RegisterViewportLayers(root_layer, scroll_layer_, NULL);
124 PostSetNeedsCommitToMainThread(); 124 PostSetNeedsCommitToMainThread();
125 } 125 }
126 126
127 virtual void BeginCommitOnThread(LayerTreeHostImpl* impl) OVERRIDE { 127 virtual void BeginCommitOnThread(LayerTreeHostImpl* impl) OVERRIDE {
128 switch (layer_tree_host()->source_frame_number()) { 128 switch (layer_tree_host()->source_frame_number()) {
129 case 0: 129 case 0:
130 EXPECT_VECTOR_EQ(scroll_layer_->scroll_offset(), initial_scroll_); 130 EXPECT_VECTOR2DF_EQ(scroll_layer_->scroll_offset(), initial_scroll_);
131 break; 131 break;
132 case 1: 132 case 1:
133 EXPECT_VECTOR_EQ(scroll_layer_->scroll_offset(), 133 EXPECT_VECTOR2DF_EQ(scroll_layer_->scroll_offset(),
134 initial_scroll_ + scroll_amount_ + scroll_amount_); 134 initial_scroll_ + scroll_amount_ + scroll_amount_);
135 case 2: 135 case 2:
136 EXPECT_VECTOR_EQ(scroll_layer_->scroll_offset(), 136 EXPECT_VECTOR2DF_EQ(scroll_layer_->scroll_offset(),
137 initial_scroll_ + scroll_amount_ + scroll_amount_); 137 initial_scroll_ + scroll_amount_ + scroll_amount_);
138 break; 138 break;
139 } 139 }
140 } 140 }
141 141
142 virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) OVERRIDE { 142 virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) OVERRIDE {
143 LayerImpl* scroll_layer = 143 LayerImpl* scroll_layer =
144 impl->active_tree()->LayerById(scroll_layer_->id()); 144 impl->active_tree()->LayerById(scroll_layer_->id());
145 if (impl->active_tree()->source_frame_number() == 0 && 145 if (impl->active_tree()->source_frame_number() == 0 &&
146 impl->SourceAnimationFrameNumber() == 1) { 146 impl->SourceAnimationFrameNumber() == 1) {
147 // First draw after first commit. 147 // First draw after first commit.
148 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), gfx::Vector2d()); 148 EXPECT_VECTOR2DF_EQ(scroll_layer->ScrollDelta(), gfx::Vector2dF());
149 scroll_layer->ScrollBy(scroll_amount_); 149 scroll_layer->ScrollBy(scroll_amount_);
150 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), scroll_amount_); 150 EXPECT_VECTOR2DF_EQ(scroll_layer->ScrollDelta(), scroll_amount_);
151 151
152 EXPECT_VECTOR_EQ(scroll_layer->scroll_offset(), initial_scroll_); 152 EXPECT_VECTOR2DF_EQ(scroll_layer->scroll_offset(), initial_scroll_);
153 PostSetNeedsRedrawToMainThread(); 153 PostSetNeedsRedrawToMainThread();
154 } else if (impl->active_tree()->source_frame_number() == 0 && 154 } else if (impl->active_tree()->source_frame_number() == 0 &&
155 impl->SourceAnimationFrameNumber() == 2) { 155 impl->SourceAnimationFrameNumber() == 2) {
156 // Second draw after first commit. 156 // Second draw after first commit.
157 EXPECT_EQ(scroll_layer->ScrollDelta(), scroll_amount_); 157 EXPECT_EQ(scroll_layer->ScrollDelta(), scroll_amount_);
158 scroll_layer->ScrollBy(scroll_amount_); 158 scroll_layer->ScrollBy(scroll_amount_);
159 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), 159 EXPECT_VECTOR2DF_EQ(scroll_layer->ScrollDelta(),
160 scroll_amount_ + scroll_amount_); 160 scroll_amount_ + scroll_amount_);
161 161
162 EXPECT_VECTOR_EQ(scroll_layer_->scroll_offset(), initial_scroll_); 162 EXPECT_VECTOR2DF_EQ(scroll_layer_->scroll_offset(), initial_scroll_);
163 PostSetNeedsCommitToMainThread(); 163 PostSetNeedsCommitToMainThread();
164 } else if (impl->active_tree()->source_frame_number() == 1) { 164 } else if (impl->active_tree()->source_frame_number() == 1) {
165 // Third or later draw after second commit. 165 // Third or later draw after second commit.
166 EXPECT_GE(impl->SourceAnimationFrameNumber(), 3); 166 EXPECT_GE(impl->SourceAnimationFrameNumber(), 3);
167 EXPECT_VECTOR_EQ(scroll_layer_->ScrollDelta(), gfx::Vector2d()); 167 EXPECT_VECTOR2DF_EQ(scroll_layer_->ScrollDelta(), gfx::Vector2dF());
168 EXPECT_VECTOR_EQ(scroll_layer_->scroll_offset(), 168 EXPECT_VECTOR2DF_EQ(scroll_layer_->scroll_offset(),
169 initial_scroll_ + scroll_amount_ + scroll_amount_); 169 initial_scroll_ + scroll_amount_ + scroll_amount_);
170 EndTest(); 170 EndTest();
171 } 171 }
172 } 172 }
173 173
174 virtual void ApplyViewportDeltas(const gfx::Vector2d& scroll_delta, 174 virtual void ApplyViewportDeltas(const gfx::Vector2d& scroll_delta,
175 float scale, 175 float scale,
176 float top_controls_delta) OVERRIDE { 176 float top_controls_delta) OVERRIDE {
177 num_scrolls_++; 177 num_scrolls_++;
178 } 178 }
179 179
180 virtual void AfterTest() OVERRIDE { EXPECT_EQ(1, num_scrolls_); } 180 virtual void AfterTest() OVERRIDE { EXPECT_EQ(1, num_scrolls_); }
181 181
182 private: 182 private:
183 gfx::Vector2d initial_scroll_; 183 gfx::Vector2dF initial_scroll_;
184 gfx::Vector2d scroll_amount_; 184 gfx::Vector2dF scroll_amount_;
185 int num_scrolls_; 185 int num_scrolls_;
186 scoped_refptr<Layer> scroll_layer_; 186 scoped_refptr<Layer> scroll_layer_;
187 }; 187 };
188 188
189 MULTI_THREAD_TEST_F(LayerTreeHostScrollTestScrollMultipleRedraw); 189 MULTI_THREAD_TEST_F(LayerTreeHostScrollTestScrollMultipleRedraw);
190 190
191 class LayerTreeHostScrollTestScrollAbortedCommit 191 class LayerTreeHostScrollTestScrollAbortedCommit
192 : public LayerTreeHostScrollTest { 192 : public LayerTreeHostScrollTest {
193 public: 193 public:
194 LayerTreeHostScrollTestScrollAbortedCommit() 194 LayerTreeHostScrollTestScrollAbortedCommit()
(...skipping 28 matching lines...) Expand all
223 223
224 virtual void WillBeginMainFrame() OVERRIDE { 224 virtual void WillBeginMainFrame() OVERRIDE {
225 num_will_begin_main_frames_++; 225 num_will_begin_main_frames_++;
226 Layer* root_scroll_layer = 226 Layer* root_scroll_layer =
227 layer_tree_host()->root_layer()->children()[0].get(); 227 layer_tree_host()->root_layer()->children()[0].get();
228 switch (num_will_begin_main_frames_) { 228 switch (num_will_begin_main_frames_) {
229 case 1: 229 case 1:
230 // This will not be aborted because of the initial prop changes. 230 // This will not be aborted because of the initial prop changes.
231 EXPECT_EQ(0, num_impl_scrolls_); 231 EXPECT_EQ(0, num_impl_scrolls_);
232 EXPECT_EQ(0, layer_tree_host()->source_frame_number()); 232 EXPECT_EQ(0, layer_tree_host()->source_frame_number());
233 EXPECT_VECTOR_EQ(root_scroll_layer->scroll_offset(), initial_scroll_); 233 EXPECT_VECTOR2DF_EQ(root_scroll_layer->scroll_offset(),
234 initial_scroll_);
234 EXPECT_EQ(1.f, layer_tree_host()->page_scale_factor()); 235 EXPECT_EQ(1.f, layer_tree_host()->page_scale_factor());
235 break; 236 break;
236 case 2: 237 case 2:
237 // This commit will be aborted, and another commit will be 238 // This commit will be aborted, and another commit will be
238 // initiated from the redraw. 239 // initiated from the redraw.
239 EXPECT_EQ(1, num_impl_scrolls_); 240 EXPECT_EQ(1, num_impl_scrolls_);
240 EXPECT_EQ(1, layer_tree_host()->source_frame_number()); 241 EXPECT_EQ(1, layer_tree_host()->source_frame_number());
241 EXPECT_VECTOR_EQ(root_scroll_layer->scroll_offset(), 242 EXPECT_VECTOR2DF_EQ(root_scroll_layer->scroll_offset(),
242 initial_scroll_ + impl_scroll_); 243 initial_scroll_ + impl_scroll_);
243 EXPECT_EQ(impl_scale_, layer_tree_host()->page_scale_factor()); 244 EXPECT_EQ(impl_scale_, layer_tree_host()->page_scale_factor());
244 PostSetNeedsRedrawToMainThread(); 245 PostSetNeedsRedrawToMainThread();
245 break; 246 break;
246 case 3: 247 case 3:
247 // This commit will not be aborted because of the scroll change. 248 // This commit will not be aborted because of the scroll change.
248 EXPECT_EQ(2, num_impl_scrolls_); 249 EXPECT_EQ(2, num_impl_scrolls_);
249 // The source frame number still increases even with the abort. 250 // The source frame number still increases even with the abort.
250 EXPECT_EQ(2, layer_tree_host()->source_frame_number()); 251 EXPECT_EQ(2, layer_tree_host()->source_frame_number());
251 EXPECT_VECTOR_EQ(root_scroll_layer->scroll_offset(), 252 EXPECT_VECTOR2DF_EQ(root_scroll_layer->scroll_offset(),
252 initial_scroll_ + impl_scroll_ + impl_scroll_); 253 initial_scroll_ + impl_scroll_ + impl_scroll_);
253 EXPECT_EQ(impl_scale_ * impl_scale_, 254 EXPECT_EQ(impl_scale_ * impl_scale_,
254 layer_tree_host()->page_scale_factor()); 255 layer_tree_host()->page_scale_factor());
255 root_scroll_layer->SetScrollOffset(root_scroll_layer->scroll_offset() + 256 root_scroll_layer->SetScrollOffset(root_scroll_layer->scroll_offset() +
256 second_main_scroll_); 257 second_main_scroll_);
257 break; 258 break;
258 case 4: 259 case 4:
259 // This commit will also be aborted. 260 // This commit will also be aborted.
260 EXPECT_EQ(3, num_impl_scrolls_); 261 EXPECT_EQ(3, num_impl_scrolls_);
261 EXPECT_EQ(3, layer_tree_host()->source_frame_number()); 262 EXPECT_EQ(3, layer_tree_host()->source_frame_number());
262 EXPECT_VECTOR_EQ(root_scroll_layer->scroll_offset(), 263 EXPECT_VECTOR2DF_EQ(root_scroll_layer->scroll_offset(),
263 initial_scroll_ + impl_scroll_ + impl_scroll_ + 264 initial_scroll_ + impl_scroll_ + impl_scroll_ +
264 impl_scroll_ + second_main_scroll_); 265 impl_scroll_ + second_main_scroll_);
265 // End the test by drawing to verify this commit is also aborted. 266 // End the test by drawing to verify this commit is also aborted.
266 PostSetNeedsRedrawToMainThread(); 267 PostSetNeedsRedrawToMainThread();
267 break; 268 break;
268 } 269 }
269 } 270 }
270 271
271 virtual void DidBeginMainFrame() OVERRIDE { num_did_begin_main_frames_++; } 272 virtual void DidBeginMainFrame() OVERRIDE { num_did_begin_main_frames_++; }
272 273
273 virtual void WillCommit() OVERRIDE { num_will_commits_++; } 274 virtual void WillCommit() OVERRIDE { num_will_commits_++; }
274 275
275 virtual void DidCommit() OVERRIDE { num_did_commits_++; } 276 virtual void DidCommit() OVERRIDE { num_did_commits_++; }
276 277
277 virtual void BeginCommitOnThread(LayerTreeHostImpl* impl) OVERRIDE { 278 virtual void BeginCommitOnThread(LayerTreeHostImpl* impl) OVERRIDE {
278 num_impl_commits_++; 279 num_impl_commits_++;
279 } 280 }
280 281
281 virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) OVERRIDE { 282 virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) OVERRIDE {
282 LayerImpl* root_scroll_layer = 283 LayerImpl* root_scroll_layer =
283 impl->active_tree()->root_layer()->children()[0]; 284 impl->active_tree()->root_layer()->children()[0];
284 285
285 if (impl->active_tree()->source_frame_number() == 0 && 286 if (impl->active_tree()->source_frame_number() == 0 &&
286 impl->SourceAnimationFrameNumber() == 1) { 287 impl->SourceAnimationFrameNumber() == 1) {
287 // First draw 288 // First draw
288 EXPECT_VECTOR_EQ(root_scroll_layer->ScrollDelta(), gfx::Vector2d()); 289 EXPECT_VECTOR2DF_EQ(root_scroll_layer->ScrollDelta(), gfx::Vector2dF());
289 root_scroll_layer->ScrollBy(impl_scroll_); 290 root_scroll_layer->ScrollBy(impl_scroll_);
290 EXPECT_VECTOR_EQ(root_scroll_layer->ScrollDelta(), impl_scroll_); 291 EXPECT_VECTOR2DF_EQ(root_scroll_layer->ScrollDelta(), impl_scroll_);
291 EXPECT_VECTOR_EQ(root_scroll_layer->scroll_offset(), initial_scroll_); 292 EXPECT_VECTOR2DF_EQ(root_scroll_layer->scroll_offset(), initial_scroll_);
292 293
293 EXPECT_EQ(1.f, impl->active_tree()->page_scale_delta()); 294 EXPECT_EQ(1.f, impl->active_tree()->page_scale_delta());
294 EXPECT_EQ(1.f, impl->active_tree()->total_page_scale_factor()); 295 EXPECT_EQ(1.f, impl->active_tree()->total_page_scale_factor());
295 impl->active_tree()->SetPageScaleDelta(impl_scale_); 296 impl->active_tree()->SetPageScaleDelta(impl_scale_);
296 EXPECT_EQ(impl_scale_, impl->active_tree()->page_scale_delta()); 297 EXPECT_EQ(impl_scale_, impl->active_tree()->page_scale_delta());
297 EXPECT_EQ(impl_scale_, impl->active_tree()->total_page_scale_factor()); 298 EXPECT_EQ(impl_scale_, impl->active_tree()->total_page_scale_factor());
298 299
299 // To simplify the testing flow, don't redraw here, just commit. 300 // To simplify the testing flow, don't redraw here, just commit.
300 impl->SetNeedsCommit(); 301 impl->SetNeedsCommit();
301 } else if (impl->active_tree()->source_frame_number() == 0 && 302 } else if (impl->active_tree()->source_frame_number() == 0 &&
302 impl->SourceAnimationFrameNumber() == 2) { 303 impl->SourceAnimationFrameNumber() == 2) {
303 // Test a second draw after an aborted commit. 304 // Test a second draw after an aborted commit.
304 // The scroll/scale values should be baked into the offset/scale factor 305 // The scroll/scale values should be baked into the offset/scale factor
305 // since the main thread consumed but aborted the begin frame. 306 // since the main thread consumed but aborted the begin frame.
306 EXPECT_VECTOR_EQ(root_scroll_layer->ScrollDelta(), gfx::Vector2d()); 307 EXPECT_VECTOR2DF_EQ(root_scroll_layer->ScrollDelta(), gfx::Vector2dF());
307 root_scroll_layer->ScrollBy(impl_scroll_); 308 root_scroll_layer->ScrollBy(impl_scroll_);
308 EXPECT_VECTOR_EQ(root_scroll_layer->ScrollDelta(), impl_scroll_); 309 EXPECT_VECTOR2DF_EQ(root_scroll_layer->ScrollDelta(), impl_scroll_);
309 EXPECT_VECTOR_EQ(root_scroll_layer->scroll_offset(), 310 EXPECT_VECTOR2DF_EQ(root_scroll_layer->scroll_offset(),
310 initial_scroll_ + impl_scroll_); 311 initial_scroll_ + impl_scroll_);
311 312
312 EXPECT_EQ(1.f, impl->active_tree()->page_scale_delta()); 313 EXPECT_EQ(1.f, impl->active_tree()->page_scale_delta());
313 EXPECT_EQ(impl_scale_, impl->active_tree()->total_page_scale_factor()); 314 EXPECT_EQ(impl_scale_, impl->active_tree()->total_page_scale_factor());
314 impl->active_tree()->SetPageScaleDelta(impl_scale_); 315 impl->active_tree()->SetPageScaleDelta(impl_scale_);
315 EXPECT_EQ(impl_scale_, impl->active_tree()->page_scale_delta()); 316 EXPECT_EQ(impl_scale_, impl->active_tree()->page_scale_delta());
316 EXPECT_EQ(impl_scale_ * impl_scale_, 317 EXPECT_EQ(impl_scale_ * impl_scale_,
317 impl->active_tree()->total_page_scale_factor()); 318 impl->active_tree()->total_page_scale_factor());
318 319
319 impl->SetNeedsCommit(); 320 impl->SetNeedsCommit();
320 } else if (impl->active_tree()->source_frame_number() == 1) { 321 } else if (impl->active_tree()->source_frame_number() == 1) {
321 // Commit for source frame 1 is aborted. 322 // Commit for source frame 1 is aborted.
322 NOTREACHED(); 323 NOTREACHED();
323 } else if (impl->active_tree()->source_frame_number() == 2 && 324 } else if (impl->active_tree()->source_frame_number() == 2 &&
324 impl->SourceAnimationFrameNumber() == 3) { 325 impl->SourceAnimationFrameNumber() == 3) {
325 // Third draw after the second full commit. 326 // Third draw after the second full commit.
326 EXPECT_EQ(root_scroll_layer->ScrollDelta(), gfx::Vector2d()); 327 EXPECT_EQ(root_scroll_layer->ScrollDelta(), gfx::Vector2dF());
327 root_scroll_layer->ScrollBy(impl_scroll_); 328 root_scroll_layer->ScrollBy(impl_scroll_);
328 impl->SetNeedsCommit(); 329 impl->SetNeedsCommit();
329 EXPECT_VECTOR_EQ(root_scroll_layer->ScrollDelta(), impl_scroll_); 330 EXPECT_VECTOR2DF_EQ(root_scroll_layer->ScrollDelta(), impl_scroll_);
330 EXPECT_VECTOR_EQ( 331 EXPECT_VECTOR2DF_EQ(
331 root_scroll_layer->scroll_offset(), 332 root_scroll_layer->scroll_offset(),
332 initial_scroll_ + impl_scroll_ + impl_scroll_ + second_main_scroll_); 333 initial_scroll_ + impl_scroll_ + impl_scroll_ + second_main_scroll_);
333 } else if (impl->active_tree()->source_frame_number() == 2 && 334 } else if (impl->active_tree()->source_frame_number() == 2 &&
334 impl->SourceAnimationFrameNumber() == 4) { 335 impl->SourceAnimationFrameNumber() == 4) {
335 // Final draw after the second aborted commit. 336 // Final draw after the second aborted commit.
336 EXPECT_VECTOR_EQ(root_scroll_layer->ScrollDelta(), gfx::Vector2d()); 337 EXPECT_VECTOR2DF_EQ(root_scroll_layer->ScrollDelta(), gfx::Vector2dF());
337 EXPECT_VECTOR_EQ(root_scroll_layer->scroll_offset(), 338 EXPECT_VECTOR2DF_EQ(root_scroll_layer->scroll_offset(),
338 initial_scroll_ + impl_scroll_ + impl_scroll_ + 339 initial_scroll_ + impl_scroll_ + impl_scroll_ +
339 impl_scroll_ + second_main_scroll_); 340 impl_scroll_ + second_main_scroll_);
340 EndTest(); 341 EndTest();
341 } else { 342 } else {
342 // Commit for source frame 3 is aborted. 343 // Commit for source frame 3 is aborted.
343 NOTREACHED(); 344 NOTREACHED();
344 } 345 }
345 } 346 }
346 347
347 virtual void ApplyViewportDeltas(const gfx::Vector2d& scroll_delta, 348 virtual void ApplyViewportDeltas(const gfx::Vector2d& scroll_delta,
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
402 } 403 }
403 404
404 virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) OVERRIDE { 405 virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) OVERRIDE {
405 LayerImpl* root = impl->active_tree()->root_layer(); 406 LayerImpl* root = impl->active_tree()->root_layer();
406 LayerImpl* scroll_layer = root->children()[0]; 407 LayerImpl* scroll_layer = root->children()[0];
407 408
408 // Check that a fractional scroll delta is correctly accumulated over 409 // Check that a fractional scroll delta is correctly accumulated over
409 // multiple commits. 410 // multiple commits.
410 switch (impl->active_tree()->source_frame_number()) { 411 switch (impl->active_tree()->source_frame_number()) {
411 case 0: 412 case 0:
412 EXPECT_VECTOR_EQ(scroll_layer->scroll_offset(), gfx::Vector2d(0, 0)); 413 EXPECT_VECTOR2DF_EQ(scroll_layer->scroll_offset(),
413 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), gfx::Vector2d(0, 0)); 414 gfx::Vector2dF(0, 0));
415 EXPECT_VECTOR2DF_EQ(scroll_layer->ScrollDelta(), gfx::Vector2dF(0, 0));
414 PostSetNeedsCommitToMainThread(); 416 PostSetNeedsCommitToMainThread();
415 break; 417 break;
416 case 1: 418 case 1:
417 EXPECT_VECTOR_EQ(scroll_layer->scroll_offset(), 419 EXPECT_VECTOR2DF_EQ(scroll_layer->scroll_offset(), scroll_amount_);
418 gfx::ToFlooredVector2d(scroll_amount_)); 420 EXPECT_VECTOR2DF_EQ(scroll_layer->ScrollDelta(), gfx::Vector2dF(0, 0));
419 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(),
420 gfx::Vector2dF(fmod(scroll_amount_.x(), 1.0f), 0.0f));
421 PostSetNeedsCommitToMainThread(); 421 PostSetNeedsCommitToMainThread();
422 break; 422 break;
423 case 2: 423 case 2:
424 EXPECT_VECTOR_EQ( 424 EXPECT_VECTOR2DF_EQ(scroll_layer->scroll_offset(),
425 scroll_layer->scroll_offset(), 425 scroll_amount_ + scroll_amount_);
426 gfx::ToFlooredVector2d(scroll_amount_ + scroll_amount_)); 426 EXPECT_VECTOR2DF_EQ(scroll_layer->ScrollDelta(), gfx::Vector2dF(0, 0));
427 EXPECT_VECTOR_EQ(
428 scroll_layer->ScrollDelta(),
429 gfx::Vector2dF(fmod(2.0f * scroll_amount_.x(), 1.0f), 0.0f));
430 EndTest(); 427 EndTest();
431 break; 428 break;
432 } 429 }
433 scroll_layer->ScrollBy(scroll_amount_); 430 scroll_layer->ScrollBy(scroll_amount_);
434 } 431 }
435 432
436 virtual void AfterTest() OVERRIDE {} 433 virtual void AfterTest() OVERRIDE {}
437 434
438 private: 435 private:
439 gfx::Vector2dF scroll_amount_; 436 gfx::Vector2dF scroll_amount_;
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
516 final_scroll_offset_ = expected_scroll_layer_->scroll_offset(); 513 final_scroll_offset_ = expected_scroll_layer_->scroll_offset();
517 } 514 }
518 515
519 virtual void ApplyViewportDeltas(const gfx::Vector2d& scroll_delta, 516 virtual void ApplyViewportDeltas(const gfx::Vector2d& scroll_delta,
520 float scale, 517 float scale,
521 float top_controls_delta) OVERRIDE { 518 float top_controls_delta) OVERRIDE {
522 num_scrolls_++; 519 num_scrolls_++;
523 } 520 }
524 521
525 virtual void Layout() OVERRIDE { 522 virtual void Layout() OVERRIDE {
526 EXPECT_VECTOR_EQ(gfx::Vector2d(), 523 EXPECT_VECTOR2DF_EQ(gfx::Vector2dF(),
527 expected_no_scroll_layer_->scroll_offset()); 524 expected_no_scroll_layer_->scroll_offset());
528 525
529 switch (layer_tree_host()->source_frame_number()) { 526 switch (layer_tree_host()->source_frame_number()) {
530 case 0: 527 case 0:
531 EXPECT_VECTOR_EQ(initial_offset_, 528 EXPECT_VECTOR2DF_EQ(initial_offset_,
532 expected_scroll_layer_->scroll_offset()); 529 expected_scroll_layer_->scroll_offset());
533 break; 530 break;
534 case 1: 531 case 1:
535 EXPECT_VECTOR_EQ(initial_offset_ + scroll_amount_, 532 EXPECT_VECTOR2DF_EQ(initial_offset_ + scroll_amount_,
536 expected_scroll_layer_->scroll_offset()); 533 expected_scroll_layer_->scroll_offset());
537 534
538 // Pretend like Javascript updated the scroll position itself. 535 // Pretend like Javascript updated the scroll position itself.
539 expected_scroll_layer_->SetScrollOffset(javascript_scroll_); 536 expected_scroll_layer_->SetScrollOffset(javascript_scroll_);
540 break; 537 break;
541 case 2: 538 case 2:
542 EXPECT_VECTOR_EQ(javascript_scroll_ + scroll_amount_, 539 EXPECT_VECTOR2DF_EQ(javascript_scroll_ + scroll_amount_,
543 expected_scroll_layer_->scroll_offset()); 540 expected_scroll_layer_->scroll_offset());
544 break; 541 break;
545 } 542 }
546 } 543 }
547 544
548 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* impl) OVERRIDE { 545 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* impl) OVERRIDE {
549 LayerImpl* root_impl = impl->active_tree()->root_layer(); 546 LayerImpl* root_impl = impl->active_tree()->root_layer();
550 FakePictureLayerImpl* root_scroll_layer_impl = 547 FakePictureLayerImpl* root_scroll_layer_impl =
551 static_cast<FakePictureLayerImpl*>(root_impl->children()[0]); 548 static_cast<FakePictureLayerImpl*>(root_impl->children()[0]);
552 FakePictureLayerImpl* child_layer_impl = static_cast<FakePictureLayerImpl*>( 549 FakePictureLayerImpl* child_layer_impl = static_cast<FakePictureLayerImpl*>(
553 root_scroll_layer_impl->children()[0]); 550 root_scroll_layer_impl->children()[0]);
554 551
555 LayerImpl* expected_scroll_layer_impl = NULL; 552 LayerImpl* expected_scroll_layer_impl = NULL;
556 LayerImpl* expected_no_scroll_layer_impl = NULL; 553 LayerImpl* expected_no_scroll_layer_impl = NULL;
557 if (scroll_child_layer_) { 554 if (scroll_child_layer_) {
558 expected_scroll_layer_impl = child_layer_impl; 555 expected_scroll_layer_impl = child_layer_impl;
559 expected_no_scroll_layer_impl = root_scroll_layer_impl; 556 expected_no_scroll_layer_impl = root_scroll_layer_impl;
560 } else { 557 } else {
561 expected_scroll_layer_impl = root_scroll_layer_impl; 558 expected_scroll_layer_impl = root_scroll_layer_impl;
562 expected_no_scroll_layer_impl = child_layer_impl; 559 expected_no_scroll_layer_impl = child_layer_impl;
563 } 560 }
564 561
565 EXPECT_VECTOR_EQ(gfx::Vector2d(), root_impl->ScrollDelta()); 562 EXPECT_VECTOR2DF_EQ(gfx::Vector2dF(), root_impl->ScrollDelta());
566 EXPECT_VECTOR_EQ(gfx::Vector2d(), 563 EXPECT_VECTOR2DF_EQ(gfx::Vector2dF(),
567 expected_no_scroll_layer_impl->ScrollDelta()); 564 expected_no_scroll_layer_impl->ScrollDelta());
568 565
569 // Ensure device scale factor is affecting the layers. 566 // Ensure device scale factor is affecting the layers.
570 EXPECT_FLOAT_EQ(device_scale_factor_, 567 EXPECT_FLOAT_EQ(device_scale_factor_,
571 root_scroll_layer_impl->HighResTiling()->contents_scale()); 568 root_scroll_layer_impl->HighResTiling()->contents_scale());
572 569
573 EXPECT_FLOAT_EQ(device_scale_factor_, 570 EXPECT_FLOAT_EQ(device_scale_factor_,
574 child_layer_impl->HighResTiling()->contents_scale()); 571 child_layer_impl->HighResTiling()->contents_scale());
575 572
576 switch (impl->active_tree()->source_frame_number()) { 573 switch (impl->active_tree()->source_frame_number()) {
577 case 0: { 574 case 0: {
578 // Gesture scroll on impl thread. 575 // Gesture scroll on impl thread.
579 InputHandler::ScrollStatus status = impl->ScrollBegin( 576 InputHandler::ScrollStatus status = impl->ScrollBegin(
580 gfx::ToCeiledPoint(expected_scroll_layer_impl->position() - 577 gfx::ToCeiledPoint(expected_scroll_layer_impl->position() -
581 gfx::Vector2dF(0.5f, 0.5f)), 578 gfx::Vector2dF(0.5f, 0.5f)),
582 InputHandler::Gesture); 579 InputHandler::Gesture);
583 EXPECT_EQ(InputHandler::ScrollStarted, status); 580 EXPECT_EQ(InputHandler::ScrollStarted, status);
584 impl->ScrollBy(gfx::Point(), scroll_amount_); 581 impl->ScrollBy(gfx::Point(), scroll_amount_);
585 impl->ScrollEnd(); 582 impl->ScrollEnd();
586 583
587 // Check the scroll is applied as a delta. 584 // Check the scroll is applied as a delta.
588 EXPECT_VECTOR_EQ(initial_offset_, 585 EXPECT_VECTOR2DF_EQ(initial_offset_,
589 expected_scroll_layer_impl->scroll_offset()); 586 expected_scroll_layer_impl->scroll_offset());
590 EXPECT_VECTOR_EQ(scroll_amount_, 587 EXPECT_VECTOR2DF_EQ(scroll_amount_,
591 expected_scroll_layer_impl->ScrollDelta()); 588 expected_scroll_layer_impl->ScrollDelta());
592 break; 589 break;
593 } 590 }
594 case 1: { 591 case 1: {
595 // Wheel scroll on impl thread. 592 // Wheel scroll on impl thread.
596 InputHandler::ScrollStatus status = impl->ScrollBegin( 593 InputHandler::ScrollStatus status = impl->ScrollBegin(
597 gfx::ToCeiledPoint(expected_scroll_layer_impl->position() + 594 gfx::ToCeiledPoint(expected_scroll_layer_impl->position() +
598 gfx::Vector2dF(0.5f, 0.5f)), 595 gfx::Vector2dF(0.5f, 0.5f)),
599 InputHandler::Wheel); 596 InputHandler::Wheel);
600 EXPECT_EQ(InputHandler::ScrollStarted, status); 597 EXPECT_EQ(InputHandler::ScrollStarted, status);
601 impl->ScrollBy(gfx::Point(), scroll_amount_); 598 impl->ScrollBy(gfx::Point(), scroll_amount_);
602 impl->ScrollEnd(); 599 impl->ScrollEnd();
603 600
604 // Check the scroll is applied as a delta. 601 // Check the scroll is applied as a delta.
605 EXPECT_VECTOR_EQ(javascript_scroll_, 602 EXPECT_VECTOR2DF_EQ(javascript_scroll_,
606 expected_scroll_layer_impl->scroll_offset()); 603 expected_scroll_layer_impl->scroll_offset());
607 EXPECT_VECTOR_EQ(scroll_amount_, 604 EXPECT_VECTOR2DF_EQ(scroll_amount_,
608 expected_scroll_layer_impl->ScrollDelta()); 605 expected_scroll_layer_impl->ScrollDelta());
609 break; 606 break;
610 } 607 }
611 case 2: 608 case 2:
612 609
613 EXPECT_VECTOR_EQ(javascript_scroll_ + scroll_amount_, 610 EXPECT_VECTOR2DF_EQ(javascript_scroll_ + scroll_amount_,
614 expected_scroll_layer_impl->scroll_offset()); 611 expected_scroll_layer_impl->scroll_offset());
615 EXPECT_VECTOR_EQ(gfx::Vector2d(), 612 EXPECT_VECTOR2DF_EQ(gfx::Vector2dF(),
616 expected_scroll_layer_impl->ScrollDelta()); 613 expected_scroll_layer_impl->ScrollDelta());
617 614
618 EndTest(); 615 EndTest();
619 break; 616 break;
620 } 617 }
621 } 618 }
622 619
623 virtual void AfterTest() OVERRIDE { 620 virtual void AfterTest() OVERRIDE {
624 if (scroll_child_layer_) { 621 if (scroll_child_layer_) {
625 EXPECT_EQ(0, num_scrolls_); 622 EXPECT_EQ(0, num_scrolls_);
626 EXPECT_VECTOR_EQ(javascript_scroll_ + scroll_amount_, 623 EXPECT_VECTOR_EQ(javascript_scroll_ + scroll_amount_,
627 final_scroll_offset_); 624 final_scroll_offset_);
628 } else { 625 } else {
629 EXPECT_EQ(2, num_scrolls_); 626 EXPECT_EQ(2, num_scrolls_);
630 EXPECT_VECTOR_EQ(gfx::Vector2d(), final_scroll_offset_); 627 EXPECT_VECTOR2DF_EQ(gfx::Vector2dF(), final_scroll_offset_);
631 } 628 }
632 } 629 }
633 630
634 protected: 631 protected:
635 float device_scale_factor_; 632 float device_scale_factor_;
636 bool scroll_child_layer_; 633 bool scroll_child_layer_;
637 634
638 gfx::Vector2d initial_offset_; 635 gfx::Vector2dF initial_offset_;
639 gfx::Vector2d javascript_scroll_; 636 gfx::Vector2dF javascript_scroll_;
640 gfx::Vector2d scroll_amount_; 637 gfx::Vector2dF scroll_amount_;
641 int num_scrolls_; 638 int num_scrolls_;
642 gfx::Vector2d final_scroll_offset_; 639 gfx::Vector2dF final_scroll_offset_;
643 640
644 FakeContentLayerClient fake_content_layer_client_; 641 FakeContentLayerClient fake_content_layer_client_;
645 642
646 scoped_refptr<Layer> root_scroll_layer_; 643 scoped_refptr<Layer> root_scroll_layer_;
647 scoped_refptr<Layer> child_layer_; 644 scoped_refptr<Layer> child_layer_;
648 scoped_refptr<Layer> expected_scroll_layer_; 645 scoped_refptr<Layer> expected_scroll_layer_;
649 scoped_refptr<Layer> expected_no_scroll_layer_; 646 scoped_refptr<Layer> expected_no_scroll_layer_;
650 }; 647 };
651 648
652 TEST_F(LayerTreeHostScrollTestCaseWithChild, 649 TEST_F(LayerTreeHostScrollTestCaseWithChild,
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
773 } 770 }
774 771
775 virtual void BeginTest() OVERRIDE { 772 virtual void BeginTest() OVERRIDE {
776 PostSetNeedsCommitToMainThread(); 773 PostSetNeedsCommitToMainThread();
777 } 774 }
778 775
779 virtual void Layout() OVERRIDE { 776 virtual void Layout() OVERRIDE {
780 Layer* root = layer_tree_host()->root_layer(); 777 Layer* root = layer_tree_host()->root_layer();
781 Layer* scroll_layer = root->children()[0].get(); 778 Layer* scroll_layer = root->children()[0].get();
782 if (!layer_tree_host()->source_frame_number()) { 779 if (!layer_tree_host()->source_frame_number()) {
783 EXPECT_VECTOR_EQ(scroll_layer->scroll_offset(), initial_scroll_); 780 EXPECT_VECTOR2DF_EQ(scroll_layer->scroll_offset(), initial_scroll_);
784 } else { 781 } else {
785 EXPECT_VECTOR_EQ(scroll_layer->scroll_offset(), 782 EXPECT_VECTOR2DF_EQ(scroll_layer->scroll_offset(),
786 initial_scroll_ + impl_thread_scroll1_); 783 initial_scroll_ + impl_thread_scroll1_);
787 784
788 // Pretend like Javascript updated the scroll position itself with a 785 // Pretend like Javascript updated the scroll position itself with a
789 // change of main_thread_scroll. 786 // change of main_thread_scroll.
790 scroll_layer->SetScrollOffset(initial_scroll_ + main_thread_scroll_ + 787 scroll_layer->SetScrollOffset(initial_scroll_ + main_thread_scroll_ +
791 impl_thread_scroll1_); 788 impl_thread_scroll1_);
792 } 789 }
793 } 790 }
794 791
795 virtual void CommitCompleteOnThread(LayerTreeHostImpl* impl) OVERRIDE { 792 virtual void CommitCompleteOnThread(LayerTreeHostImpl* impl) OVERRIDE {
796 // We force a second draw here of the first commit before activating 793 // We force a second draw here of the first commit before activating
797 // the second commit. 794 // the second commit.
798 if (impl->active_tree()->source_frame_number() == 0) 795 if (impl->active_tree()->source_frame_number() == 0)
799 impl->SetNeedsRedraw(); 796 impl->SetNeedsRedraw();
800 } 797 }
801 798
802 virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) OVERRIDE { 799 virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) OVERRIDE {
803 ImplSidePaintingScrollTest::DrawLayersOnThread(impl); 800 ImplSidePaintingScrollTest::DrawLayersOnThread(impl);
804 801
805 LayerImpl* root = impl->active_tree()->root_layer(); 802 LayerImpl* root = impl->active_tree()->root_layer();
806 LayerImpl* scroll_layer = root->children()[0]; 803 LayerImpl* scroll_layer = root->children()[0];
807 LayerImpl* pending_root = 804 LayerImpl* pending_root =
808 impl->active_tree()->FindPendingTreeLayerById(root->id()); 805 impl->active_tree()->FindPendingTreeLayerById(root->id());
809 806
810 switch (impl->active_tree()->source_frame_number()) { 807 switch (impl->active_tree()->source_frame_number()) {
811 case 0: 808 case 0:
812 if (!impl->pending_tree()) { 809 if (!impl->pending_tree()) {
813 impl->BlockNotifyReadyToActivateForTesting(true); 810 impl->BlockNotifyReadyToActivateForTesting(true);
814 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), gfx::Vector2d()); 811 EXPECT_VECTOR2DF_EQ(scroll_layer->ScrollDelta(), gfx::Vector2dF());
815 scroll_layer->ScrollBy(impl_thread_scroll1_); 812 scroll_layer->ScrollBy(impl_thread_scroll1_);
816 813
817 EXPECT_VECTOR_EQ(scroll_layer->scroll_offset(), initial_scroll_); 814 EXPECT_VECTOR2DF_EQ(scroll_layer->scroll_offset(), initial_scroll_);
818 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), impl_thread_scroll1_); 815 EXPECT_VECTOR2DF_EQ(scroll_layer->ScrollDelta(),
819 EXPECT_VECTOR_EQ(scroll_layer->sent_scroll_delta(), gfx::Vector2d()); 816 impl_thread_scroll1_);
817 EXPECT_VECTOR2DF_EQ(scroll_layer->sent_scroll_delta(),
818 gfx::Vector2dF());
820 PostSetNeedsCommitToMainThread(); 819 PostSetNeedsCommitToMainThread();
821 820
822 // CommitCompleteOnThread will trigger this function again 821 // CommitCompleteOnThread will trigger this function again
823 // and cause us to take the else clause. 822 // and cause us to take the else clause.
824 } else { 823 } else {
825 impl->BlockNotifyReadyToActivateForTesting(false); 824 impl->BlockNotifyReadyToActivateForTesting(false);
826 ASSERT_TRUE(pending_root); 825 ASSERT_TRUE(pending_root);
827 EXPECT_EQ(impl->pending_tree()->source_frame_number(), 1); 826 EXPECT_EQ(impl->pending_tree()->source_frame_number(), 1);
828 827
829 scroll_layer->ScrollBy(impl_thread_scroll2_); 828 scroll_layer->ScrollBy(impl_thread_scroll2_);
830 EXPECT_VECTOR_EQ(scroll_layer->scroll_offset(), initial_scroll_); 829 EXPECT_VECTOR2DF_EQ(scroll_layer->scroll_offset(), initial_scroll_);
831 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), 830 EXPECT_VECTOR2DF_EQ(scroll_layer->ScrollDelta(),
832 impl_thread_scroll1_ + impl_thread_scroll2_); 831 impl_thread_scroll1_ + impl_thread_scroll2_);
833 EXPECT_VECTOR_EQ(scroll_layer->sent_scroll_delta(), 832 EXPECT_VECTOR2DF_EQ(scroll_layer->sent_scroll_delta(),
834 impl_thread_scroll1_); 833 impl_thread_scroll1_);
835 834
836 LayerImpl* pending_scroll_layer = pending_root->children()[0]; 835 LayerImpl* pending_scroll_layer = pending_root->children()[0];
837 EXPECT_VECTOR_EQ( 836 EXPECT_VECTOR2DF_EQ(
838 pending_scroll_layer->scroll_offset(), 837 pending_scroll_layer->scroll_offset(),
839 initial_scroll_ + main_thread_scroll_ + impl_thread_scroll1_); 838 initial_scroll_ + main_thread_scroll_ + impl_thread_scroll1_);
840 EXPECT_VECTOR_EQ(pending_scroll_layer->ScrollDelta(), 839 EXPECT_VECTOR2DF_EQ(pending_scroll_layer->ScrollDelta(),
841 impl_thread_scroll2_); 840 impl_thread_scroll2_);
842 EXPECT_VECTOR_EQ(pending_scroll_layer->sent_scroll_delta(), 841 EXPECT_VECTOR2DF_EQ(pending_scroll_layer->sent_scroll_delta(),
843 gfx::Vector2d()); 842 gfx::Vector2dF());
844 } 843 }
845 break; 844 break;
846 case 1: 845 case 1:
847 EXPECT_FALSE(impl->pending_tree()); 846 EXPECT_FALSE(impl->pending_tree());
848 EXPECT_VECTOR_EQ( 847 EXPECT_VECTOR2DF_EQ(
849 scroll_layer->scroll_offset(), 848 scroll_layer->scroll_offset(),
850 initial_scroll_ + main_thread_scroll_ + impl_thread_scroll1_); 849 initial_scroll_ + main_thread_scroll_ + impl_thread_scroll1_);
851 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), impl_thread_scroll2_); 850 EXPECT_VECTOR2DF_EQ(scroll_layer->ScrollDelta(), impl_thread_scroll2_);
852 EXPECT_VECTOR_EQ(scroll_layer->sent_scroll_delta(), gfx::Vector2d()); 851 EXPECT_VECTOR2DF_EQ(scroll_layer->sent_scroll_delta(),
852 gfx::Vector2dF());
853 EndTest(); 853 EndTest();
854 break; 854 break;
855 } 855 }
856 } 856 }
857 857
858 virtual void ApplyViewportDeltas(const gfx::Vector2d& scroll_delta, 858 virtual void ApplyViewportDeltas(const gfx::Vector2d& scroll_delta,
859 float scale, 859 float scale,
860 float top_controls_delta) OVERRIDE { 860 float top_controls_delta) OVERRIDE {
861 num_scrolls_++; 861 num_scrolls_++;
862 } 862 }
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
938 LayerImpl* active_root = impl->active_tree()->root_layer(); 938 LayerImpl* active_root = impl->active_tree()->root_layer();
939 LayerImpl* active_scroll_layer = 939 LayerImpl* active_scroll_layer =
940 active_root ? active_root->children()[0] : NULL; 940 active_root ? active_root->children()[0] : NULL;
941 LayerImpl* pending_root = impl->pending_tree()->root_layer(); 941 LayerImpl* pending_root = impl->pending_tree()->root_layer();
942 LayerImpl* pending_scroll_layer = pending_root->children()[0]; 942 LayerImpl* pending_scroll_layer = pending_root->children()[0];
943 943
944 ASSERT_TRUE(pending_root); 944 ASSERT_TRUE(pending_root);
945 ASSERT_TRUE(pending_scroll_layer); 945 ASSERT_TRUE(pending_scroll_layer);
946 switch (impl->pending_tree()->source_frame_number()) { 946 switch (impl->pending_tree()->source_frame_number()) {
947 case 0: 947 case 0:
948 EXPECT_VECTOR_EQ(pending_scroll_layer->scroll_offset(), 948 EXPECT_VECTOR2DF_EQ(pending_scroll_layer->scroll_offset(),
949 initial_scroll_); 949 initial_scroll_);
950 EXPECT_VECTOR_EQ(pending_scroll_layer->ScrollDelta(), gfx::Vector2d()); 950 EXPECT_VECTOR2DF_EQ(pending_scroll_layer->ScrollDelta(),
951 EXPECT_VECTOR_EQ(pending_scroll_layer->sent_scroll_delta(), 951 gfx::Vector2dF());
952 gfx::Vector2d()); 952 EXPECT_VECTOR2DF_EQ(pending_scroll_layer->sent_scroll_delta(),
953 gfx::Vector2dF());
953 EXPECT_FALSE(active_root); 954 EXPECT_FALSE(active_root);
954 break; 955 break;
955 case 1: 956 case 1:
956 // Even though the scroll happened during the commit, both layers 957 // Even though the scroll happened during the commit, both layers
957 // should have the appropriate scroll delta. 958 // should have the appropriate scroll delta.
958 EXPECT_VECTOR_EQ(pending_scroll_layer->scroll_offset(), 959 EXPECT_VECTOR2DF_EQ(pending_scroll_layer->scroll_offset(),
959 initial_scroll_); 960 initial_scroll_);
960 EXPECT_VECTOR_EQ(pending_scroll_layer->ScrollDelta(), 961 EXPECT_VECTOR2DF_EQ(pending_scroll_layer->ScrollDelta(),
961 impl_thread_scroll_); 962 impl_thread_scroll_);
962 EXPECT_VECTOR_EQ(pending_scroll_layer->sent_scroll_delta(), 963 EXPECT_VECTOR2DF_EQ(pending_scroll_layer->sent_scroll_delta(),
963 gfx::Vector2d()); 964 gfx::Vector2dF());
964 ASSERT_TRUE(active_root); 965 ASSERT_TRUE(active_root);
965 EXPECT_VECTOR_EQ(active_scroll_layer->scroll_offset(), initial_scroll_); 966 EXPECT_VECTOR2DF_EQ(active_scroll_layer->scroll_offset(),
966 EXPECT_VECTOR_EQ(active_scroll_layer->ScrollDelta(), 967 initial_scroll_);
968 EXPECT_VECTOR2DF_EQ(active_scroll_layer->ScrollDelta(),
967 impl_thread_scroll_); 969 impl_thread_scroll_);
968 EXPECT_VECTOR_EQ(active_scroll_layer->sent_scroll_delta(), 970 EXPECT_VECTOR2DF_EQ(active_scroll_layer->sent_scroll_delta(),
969 gfx::Vector2d()); 971 gfx::Vector2dF());
970 break; 972 break;
971 case 2: 973 case 2:
972 // On the next commit, this delta should have been sent and applied. 974 // On the next commit, this delta should have been sent and applied.
973 EXPECT_VECTOR_EQ(pending_scroll_layer->scroll_offset(), 975 EXPECT_VECTOR2DF_EQ(pending_scroll_layer->scroll_offset(),
974 initial_scroll_ + impl_thread_scroll_); 976 initial_scroll_ + impl_thread_scroll_);
975 EXPECT_VECTOR_EQ(pending_scroll_layer->ScrollDelta(), gfx::Vector2d()); 977 EXPECT_VECTOR2DF_EQ(pending_scroll_layer->ScrollDelta(),
976 EXPECT_VECTOR_EQ(pending_scroll_layer->sent_scroll_delta(), 978 gfx::Vector2dF());
977 gfx::Vector2d()); 979 EXPECT_VECTOR2DF_EQ(pending_scroll_layer->sent_scroll_delta(),
980 gfx::Vector2dF());
978 EndTest(); 981 EndTest();
979 break; 982 break;
980 } 983 }
981 } 984 }
982 985
983 virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) OVERRIDE { 986 virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) OVERRIDE {
984 ImplSidePaintingScrollTest::DrawLayersOnThread(impl); 987 ImplSidePaintingScrollTest::DrawLayersOnThread(impl);
985 988
986 LayerImpl* root = impl->active_tree()->root_layer(); 989 LayerImpl* root = impl->active_tree()->root_layer();
987 LayerImpl* scroll_layer = root->children()[0]; 990 LayerImpl* scroll_layer = root->children()[0];
988 991
989 switch (impl->active_tree()->source_frame_number()) { 992 switch (impl->active_tree()->source_frame_number()) {
990 case 0: 993 case 0:
991 EXPECT_VECTOR_EQ(scroll_layer->scroll_offset(), initial_scroll_); 994 EXPECT_VECTOR2DF_EQ(scroll_layer->scroll_offset(), initial_scroll_);
992 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), gfx::Vector2d()); 995 EXPECT_VECTOR2DF_EQ(scroll_layer->ScrollDelta(), gfx::Vector2dF());
993 EXPECT_VECTOR_EQ(scroll_layer->sent_scroll_delta(), gfx::Vector2d()); 996 EXPECT_VECTOR2DF_EQ(scroll_layer->sent_scroll_delta(),
997 gfx::Vector2dF());
994 PostSetNeedsCommitToMainThread(); 998 PostSetNeedsCommitToMainThread();
995 break; 999 break;
996 case 1: 1000 case 1:
997 EXPECT_VECTOR_EQ(scroll_layer->scroll_offset(), initial_scroll_); 1001 EXPECT_VECTOR2DF_EQ(scroll_layer->scroll_offset(), initial_scroll_);
998 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), impl_thread_scroll_); 1002 EXPECT_VECTOR2DF_EQ(scroll_layer->ScrollDelta(), impl_thread_scroll_);
999 EXPECT_VECTOR_EQ(scroll_layer->sent_scroll_delta(), gfx::Vector2d()); 1003 EXPECT_VECTOR2DF_EQ(scroll_layer->sent_scroll_delta(),
1004 gfx::Vector2dF());
1000 PostSetNeedsCommitToMainThread(); 1005 PostSetNeedsCommitToMainThread();
1001 break; 1006 break;
1002 } 1007 }
1003 } 1008 }
1004 1009
1005 virtual void AfterTest() OVERRIDE {} 1010 virtual void AfterTest() OVERRIDE {}
1006 1011
1007 private: 1012 private:
1008 gfx::Vector2d initial_scroll_; 1013 gfx::Vector2d initial_scroll_;
1009 gfx::Vector2d impl_thread_scroll_; 1014 gfx::Vector2d impl_thread_scroll_;
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after
1220 RunTest(true, false, true); 1225 RunTest(true, false, true);
1221 } 1226 }
1222 1227
1223 TEST_F(LayerTreeHostScrollTestLayerStructureChange, ScrollDestroyWholeTree) { 1228 TEST_F(LayerTreeHostScrollTestLayerStructureChange, ScrollDestroyWholeTree) {
1224 scroll_destroy_whole_tree_ = true; 1229 scroll_destroy_whole_tree_ = true;
1225 RunTest(true, false, true); 1230 RunTest(true, false, true);
1226 } 1231 }
1227 1232
1228 } // namespace 1233 } // namespace
1229 } // namespace cc 1234 } // namespace cc
OLDNEW
« cc/trees/layer_tree_host_impl_unittest.cc ('K') | « cc/trees/layer_tree_host_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698