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

Side by Side Diff: third_party/WebKit/Source/platform/scroll/ScrollAnimatorTest.cpp

Issue 1738243002: Removed main-thread one dimensional scrolling paths. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@removeStepFromUserScroll
Patch Set: Rebase Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2010 Google Inc. All rights reserved. 2 * Copyright (C) 2010 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 EXPECT_CALL(*scrollableArea, registerForAnimation()).Times(2); 118 EXPECT_CALL(*scrollableArea, registerForAnimation()).Times(2);
119 EXPECT_CALL(*scrollableArea, scheduleAnimation()).Times(AtLeast(1)) 119 EXPECT_CALL(*scrollableArea, scheduleAnimation()).Times(AtLeast(1))
120 .WillRepeatedly(Return(true)); 120 .WillRepeatedly(Return(true));
121 121
122 // Idle 122 // Idle
123 EXPECT_FALSE(scrollAnimator->hasAnimationThatRequiresService()); 123 EXPECT_FALSE(scrollAnimator->hasAnimationThatRequiresService());
124 EXPECT_EQ(scrollAnimator->m_runState, 124 EXPECT_EQ(scrollAnimator->m_runState,
125 ScrollAnimatorCompositorCoordinator::RunState::Idle); 125 ScrollAnimatorCompositorCoordinator::RunState::Idle);
126 126
127 // WaitingToSendToCompositor 127 // WaitingToSendToCompositor
128 scrollAnimator->userScroll(HorizontalScrollbar, ScrollByLine, 10); 128 scrollAnimator->userScroll(ScrollByLine, FloatSize(10, 0));
129 EXPECT_EQ(scrollAnimator->m_runState, 129 EXPECT_EQ(scrollAnimator->m_runState,
130 ScrollAnimatorCompositorCoordinator::RunState::WaitingToSendToCompositor ); 130 ScrollAnimatorCompositorCoordinator::RunState::WaitingToSendToCompositor );
131 131
132 // RunningOnMainThread 132 // RunningOnMainThread
133 gMockedTime += 0.05; 133 gMockedTime += 0.05;
134 scrollAnimator->updateCompositorAnimations(); 134 scrollAnimator->updateCompositorAnimations();
135 EXPECT_EQ(scrollAnimator->m_runState, 135 EXPECT_EQ(scrollAnimator->m_runState,
136 ScrollAnimatorCompositorCoordinator::RunState::RunningOnMainThread); 136 ScrollAnimatorCompositorCoordinator::RunState::RunningOnMainThread);
137 scrollAnimator->tickAnimation(getMockedTime()); 137 scrollAnimator->tickAnimation(getMockedTime());
138 EXPECT_EQ(scrollAnimator->m_runState, 138 EXPECT_EQ(scrollAnimator->m_runState,
(...skipping 19 matching lines...) Expand all
158 OwnPtrWillBeRawPtr<ScrollAnimator> scrollAnimator = adoptPtrWillBeNoop(new S crollAnimator(scrollableArea.get(), getMockedTime)); 158 OwnPtrWillBeRawPtr<ScrollAnimator> scrollAnimator = adoptPtrWillBeNoop(new S crollAnimator(scrollableArea.get(), getMockedTime));
159 159
160 EXPECT_CALL(*scrollableArea, minimumScrollPosition()).Times(AtLeast(1)).Will Repeatedly(Return(IntPoint())); 160 EXPECT_CALL(*scrollableArea, minimumScrollPosition()).Times(AtLeast(1)).Will Repeatedly(Return(IntPoint()));
161 EXPECT_CALL(*scrollableArea, maximumScrollPosition()).Times(AtLeast(1)).Will Repeatedly(Return(IntPoint(1000, 1000))); 161 EXPECT_CALL(*scrollableArea, maximumScrollPosition()).Times(AtLeast(1)).Will Repeatedly(Return(IntPoint(1000, 1000)));
162 EXPECT_CALL(*scrollableArea, setScrollOffset(_, _)).Times(9); 162 EXPECT_CALL(*scrollableArea, setScrollOffset(_, _)).Times(9);
163 EXPECT_CALL(*scrollableArea, registerForAnimation()).Times(6); 163 EXPECT_CALL(*scrollableArea, registerForAnimation()).Times(6);
164 EXPECT_CALL(*scrollableArea, scheduleAnimation()).Times(AtLeast(1)).WillRepe atedly(Return(true)); 164 EXPECT_CALL(*scrollableArea, scheduleAnimation()).Times(AtLeast(1)).WillRepe atedly(Return(true));
165 165
166 EXPECT_FALSE(scrollAnimator->hasAnimationThatRequiresService()); 166 EXPECT_FALSE(scrollAnimator->hasAnimationThatRequiresService());
167 167
168 ScrollResultOneDimensional result = scrollAnimator->userScroll(HorizontalScr ollbar, ScrollByLine, -100); 168 ScrollResult result = scrollAnimator->userScroll(ScrollByLine, FloatSize(-10 0, 0));
169 EXPECT_FALSE(scrollAnimator->hasAnimationThatRequiresService()); 169 EXPECT_FALSE(scrollAnimator->hasAnimationThatRequiresService());
170 EXPECT_FALSE(result.didScroll); 170 EXPECT_FALSE(result.didScrollX);
171 EXPECT_FLOAT_EQ(-100.0f, result.unusedScrollDelta); 171 EXPECT_FLOAT_EQ(-100.0f, result.unusedScrollDeltaX);
172 172
173 result = scrollAnimator->userScroll(HorizontalScrollbar, ScrollByLine, 100); 173 result = scrollAnimator->userScroll(ScrollByLine, FloatSize(100, 0));
174 EXPECT_TRUE(scrollAnimator->hasAnimationThatRequiresService()); 174 EXPECT_TRUE(scrollAnimator->hasAnimationThatRequiresService());
175 EXPECT_TRUE(result.didScroll); 175 EXPECT_TRUE(result.didScrollX);
176 EXPECT_FLOAT_EQ(0.0, result.unusedScrollDelta); 176 EXPECT_FLOAT_EQ(0.0, result.unusedScrollDeltaX);
177 177
178 gMockedTime += 0.05; 178 gMockedTime += 0.05;
179 scrollAnimator->updateCompositorAnimations(); 179 scrollAnimator->updateCompositorAnimations();
180 scrollAnimator->tickAnimation(getMockedTime()); 180 scrollAnimator->tickAnimation(getMockedTime());
181 181
182 EXPECT_NE(100, scrollAnimator->currentPosition().x()); 182 EXPECT_NE(100, scrollAnimator->currentPosition().x());
183 EXPECT_NE(0, scrollAnimator->currentPosition().x()); 183 EXPECT_NE(0, scrollAnimator->currentPosition().x());
184 EXPECT_EQ(0, scrollAnimator->currentPosition().y()); 184 EXPECT_EQ(0, scrollAnimator->currentPosition().y());
185 reset(*scrollAnimator); 185 reset(*scrollAnimator);
186 186
187 scrollAnimator->userScroll(HorizontalScrollbar, ScrollByPage, 100); 187 scrollAnimator->userScroll(ScrollByPage, FloatSize(100, 0));
188 EXPECT_TRUE(scrollAnimator->hasAnimationThatRequiresService()); 188 EXPECT_TRUE(scrollAnimator->hasAnimationThatRequiresService());
189 189
190 gMockedTime += 0.05; 190 gMockedTime += 0.05;
191 scrollAnimator->updateCompositorAnimations(); 191 scrollAnimator->updateCompositorAnimations();
192 scrollAnimator->tickAnimation(getMockedTime()); 192 scrollAnimator->tickAnimation(getMockedTime());
193 193
194 EXPECT_NE(100, scrollAnimator->currentPosition().x()); 194 EXPECT_NE(100, scrollAnimator->currentPosition().x());
195 EXPECT_NE(0, scrollAnimator->currentPosition().x()); 195 EXPECT_NE(0, scrollAnimator->currentPosition().x());
196 EXPECT_EQ(0, scrollAnimator->currentPosition().y()); 196 EXPECT_EQ(0, scrollAnimator->currentPosition().y());
197 reset(*scrollAnimator); 197 reset(*scrollAnimator);
198 198
199 scrollAnimator->userScroll(HorizontalScrollbar, ScrollByPixel, 100); 199 scrollAnimator->userScroll(ScrollByPixel, FloatSize(100, 0));
200 EXPECT_TRUE(scrollAnimator->hasAnimationThatRequiresService()); 200 EXPECT_TRUE(scrollAnimator->hasAnimationThatRequiresService());
201 201
202 gMockedTime += 0.05; 202 gMockedTime += 0.05;
203 scrollAnimator->updateCompositorAnimations(); 203 scrollAnimator->updateCompositorAnimations();
204 scrollAnimator->tickAnimation(getMockedTime()); 204 scrollAnimator->tickAnimation(getMockedTime());
205 205
206 EXPECT_NE(100, scrollAnimator->currentPosition().x()); 206 EXPECT_NE(100, scrollAnimator->currentPosition().x());
207 EXPECT_NE(0, scrollAnimator->currentPosition().x()); 207 EXPECT_NE(0, scrollAnimator->currentPosition().x());
208 EXPECT_EQ(0, scrollAnimator->currentPosition().y()); 208 EXPECT_EQ(0, scrollAnimator->currentPosition().y());
209 209
210 gMockedTime += 1.0; 210 gMockedTime += 1.0;
211 scrollAnimator->updateCompositorAnimations(); 211 scrollAnimator->updateCompositorAnimations();
212 scrollAnimator->tickAnimation(getMockedTime()); 212 scrollAnimator->tickAnimation(getMockedTime());
213 213
214 gMockedTime += 0.05; 214 gMockedTime += 0.05;
215 scrollAnimator->updateCompositorAnimations(); 215 scrollAnimator->updateCompositorAnimations();
216 EXPECT_FALSE(scrollAnimator->hasAnimationThatRequiresService()); 216 EXPECT_FALSE(scrollAnimator->hasAnimationThatRequiresService());
217 EXPECT_EQ(100, scrollAnimator->currentPosition().x()); 217 EXPECT_EQ(100, scrollAnimator->currentPosition().x());
218 218
219 reset(*scrollAnimator); 219 reset(*scrollAnimator);
220 220
221 scrollAnimator->userScroll(HorizontalScrollbar, ScrollByPrecisePixel, 100); 221 scrollAnimator->userScroll(ScrollByPrecisePixel, FloatSize(100, 0));
222 EXPECT_FALSE(scrollAnimator->hasAnimationThatRequiresService()); 222 EXPECT_FALSE(scrollAnimator->hasAnimationThatRequiresService());
223 223
224 EXPECT_EQ(100, scrollAnimator->currentPosition().x()); 224 EXPECT_EQ(100, scrollAnimator->currentPosition().x());
225 EXPECT_NE(0, scrollAnimator->currentPosition().x()); 225 EXPECT_NE(0, scrollAnimator->currentPosition().x());
226 EXPECT_EQ(0, scrollAnimator->currentPosition().y()); 226 EXPECT_EQ(0, scrollAnimator->currentPosition().y());
227 reset(*scrollAnimator); 227 reset(*scrollAnimator);
228 } 228 }
229 229
230 // Test that a smooth scroll offset animation is aborted when followed by a 230 // Test that a smooth scroll offset animation is aborted when followed by a
231 // non-smooth scroll offset animation. 231 // non-smooth scroll offset animation.
232 TEST(ScrollAnimatorTest, AnimatedScrollAborted) 232 TEST(ScrollAnimatorTest, AnimatedScrollAborted)
233 { 233 {
234 OwnPtrWillBeRawPtr<MockScrollableArea> scrollableArea = 234 OwnPtrWillBeRawPtr<MockScrollableArea> scrollableArea =
235 MockScrollableArea::create(true); 235 MockScrollableArea::create(true);
236 OwnPtrWillBeRawPtr<ScrollAnimator> scrollAnimator = adoptPtrWillBeNoop( 236 OwnPtrWillBeRawPtr<ScrollAnimator> scrollAnimator = adoptPtrWillBeNoop(
237 new ScrollAnimator(scrollableArea.get(), getMockedTime)); 237 new ScrollAnimator(scrollableArea.get(), getMockedTime));
238 238
239 EXPECT_CALL(*scrollableArea, minimumScrollPosition()).Times(AtLeast(1)) 239 EXPECT_CALL(*scrollableArea, minimumScrollPosition()).Times(AtLeast(1))
240 .WillRepeatedly(Return(IntPoint())); 240 .WillRepeatedly(Return(IntPoint()));
241 EXPECT_CALL(*scrollableArea, maximumScrollPosition()).Times(AtLeast(1)) 241 EXPECT_CALL(*scrollableArea, maximumScrollPosition()).Times(AtLeast(1))
242 .WillRepeatedly(Return(IntPoint(1000, 1000))); 242 .WillRepeatedly(Return(IntPoint(1000, 1000)));
243 EXPECT_CALL(*scrollableArea, setScrollOffset(_, _)).Times(3); 243 EXPECT_CALL(*scrollableArea, setScrollOffset(_, _)).Times(3);
244 EXPECT_CALL(*scrollableArea, registerForAnimation()).Times(2); 244 EXPECT_CALL(*scrollableArea, registerForAnimation()).Times(2);
245 EXPECT_CALL(*scrollableArea, scheduleAnimation()).Times(AtLeast(1)) 245 EXPECT_CALL(*scrollableArea, scheduleAnimation()).Times(AtLeast(1))
246 .WillRepeatedly(Return(true)); 246 .WillRepeatedly(Return(true));
247 247
248 EXPECT_FALSE(scrollAnimator->hasAnimationThatRequiresService()); 248 EXPECT_FALSE(scrollAnimator->hasAnimationThatRequiresService());
249 249
250 // Smooth scroll. 250 // Smooth scroll.
251 ScrollResultOneDimensional result = scrollAnimator->userScroll( 251 ScrollResult result = scrollAnimator->userScroll(ScrollByLine, FloatSize(100 , 0));
252 HorizontalScrollbar, ScrollByLine, 100);
253 EXPECT_TRUE(scrollAnimator->hasAnimationThatRequiresService()); 252 EXPECT_TRUE(scrollAnimator->hasAnimationThatRequiresService());
254 EXPECT_TRUE(result.didScroll); 253 EXPECT_TRUE(result.didScrollX);
255 EXPECT_FLOAT_EQ(0.0, result.unusedScrollDelta); 254 EXPECT_FLOAT_EQ(0.0, result.unusedScrollDeltaX);
256 EXPECT_TRUE(scrollAnimator->hasRunningAnimation()); 255 EXPECT_TRUE(scrollAnimator->hasRunningAnimation());
257 256
258 gMockedTime += 0.05; 257 gMockedTime += 0.05;
259 scrollAnimator->updateCompositorAnimations(); 258 scrollAnimator->updateCompositorAnimations();
260 scrollAnimator->tickAnimation(getMockedTime()); 259 scrollAnimator->tickAnimation(getMockedTime());
261 260
262 EXPECT_NE(100, scrollAnimator->currentPosition().x()); 261 EXPECT_NE(100, scrollAnimator->currentPosition().x());
263 EXPECT_NE(0, scrollAnimator->currentPosition().x()); 262 EXPECT_NE(0, scrollAnimator->currentPosition().x());
264 EXPECT_EQ(0, scrollAnimator->currentPosition().y()); 263 EXPECT_EQ(0, scrollAnimator->currentPosition().y());
265 264
266 float x = scrollAnimator->currentPosition().x(); 265 float x = scrollAnimator->currentPosition().x();
267 266
268 // Instant scroll. 267 // Instant scroll.
269 result = scrollAnimator->userScroll( 268 result = scrollAnimator->userScroll(ScrollByPrecisePixel, FloatSize(100, 0)) ;
270 HorizontalScrollbar, ScrollByPrecisePixel, 100); 269 EXPECT_TRUE(result.didScrollX);
271 EXPECT_TRUE(result.didScroll);
272 gMockedTime += 0.05; 270 gMockedTime += 0.05;
273 scrollAnimator->updateCompositorAnimations(); 271 scrollAnimator->updateCompositorAnimations();
274 EXPECT_FALSE(scrollAnimator->hasRunningAnimation()); 272 EXPECT_FALSE(scrollAnimator->hasRunningAnimation());
275 EXPECT_EQ(x + 100, scrollAnimator->currentPosition().x()); 273 EXPECT_EQ(x + 100, scrollAnimator->currentPosition().x());
276 EXPECT_EQ(0, scrollAnimator->currentPosition().y()); 274 EXPECT_EQ(0, scrollAnimator->currentPosition().y());
277 275
278 reset(*scrollAnimator); 276 reset(*scrollAnimator);
279 } 277 }
280 278
281 TEST(ScrollAnimatorTest, Disabled) 279 TEST(ScrollAnimatorTest, Disabled)
282 { 280 {
283 OwnPtrWillBeRawPtr<MockScrollableArea> scrollableArea = MockScrollableArea:: create(false); 281 OwnPtrWillBeRawPtr<MockScrollableArea> scrollableArea = MockScrollableArea:: create(false);
284 OwnPtrWillBeRawPtr<ScrollAnimator> scrollAnimator = adoptPtrWillBeNoop(new S crollAnimator(scrollableArea.get(), getMockedTime)); 282 OwnPtrWillBeRawPtr<ScrollAnimator> scrollAnimator = adoptPtrWillBeNoop(new S crollAnimator(scrollableArea.get(), getMockedTime));
285 283
286 EXPECT_CALL(*scrollableArea, minimumScrollPosition()).Times(AtLeast(1)).Will Repeatedly(Return(IntPoint())); 284 EXPECT_CALL(*scrollableArea, minimumScrollPosition()).Times(AtLeast(1)).Will Repeatedly(Return(IntPoint()));
287 EXPECT_CALL(*scrollableArea, maximumScrollPosition()).Times(AtLeast(1)).Will Repeatedly(Return(IntPoint(1000, 1000))); 285 EXPECT_CALL(*scrollableArea, maximumScrollPosition()).Times(AtLeast(1)).Will Repeatedly(Return(IntPoint(1000, 1000)));
288 EXPECT_CALL(*scrollableArea, setScrollOffset(_, _)).Times(8); 286 EXPECT_CALL(*scrollableArea, setScrollOffset(_, _)).Times(8);
289 EXPECT_CALL(*scrollableArea, registerForAnimation()).Times(0); 287 EXPECT_CALL(*scrollableArea, registerForAnimation()).Times(0);
290 288
291 scrollAnimator->userScroll(HorizontalScrollbar, ScrollByLine, 100); 289 scrollAnimator->userScroll(ScrollByLine, FloatSize(100, 0));
292 EXPECT_EQ(100, scrollAnimator->currentPosition().x()); 290 EXPECT_EQ(100, scrollAnimator->currentPosition().x());
293 EXPECT_EQ(0, scrollAnimator->currentPosition().y()); 291 EXPECT_EQ(0, scrollAnimator->currentPosition().y());
294 reset(*scrollAnimator); 292 reset(*scrollAnimator);
295 293
296 scrollAnimator->userScroll(HorizontalScrollbar, ScrollByPage, 100); 294 scrollAnimator->userScroll(ScrollByPage, FloatSize(100, 0));
297 EXPECT_EQ(100, scrollAnimator->currentPosition().x()); 295 EXPECT_EQ(100, scrollAnimator->currentPosition().x());
298 EXPECT_EQ(0, scrollAnimator->currentPosition().y()); 296 EXPECT_EQ(0, scrollAnimator->currentPosition().y());
299 reset(*scrollAnimator); 297 reset(*scrollAnimator);
300 298
301 scrollAnimator->userScroll(HorizontalScrollbar, ScrollByDocument, 100); 299 scrollAnimator->userScroll(ScrollByDocument, FloatSize(100, 0));
302 EXPECT_EQ(100, scrollAnimator->currentPosition().x()); 300 EXPECT_EQ(100, scrollAnimator->currentPosition().x());
303 EXPECT_EQ(0, scrollAnimator->currentPosition().y()); 301 EXPECT_EQ(0, scrollAnimator->currentPosition().y());
304 reset(*scrollAnimator); 302 reset(*scrollAnimator);
305 303
306 scrollAnimator->userScroll(HorizontalScrollbar, ScrollByPixel, 100); 304 scrollAnimator->userScroll(ScrollByPixel, FloatSize(100, 0));
307 EXPECT_EQ(100, scrollAnimator->currentPosition().x()); 305 EXPECT_EQ(100, scrollAnimator->currentPosition().x());
308 EXPECT_EQ(0, scrollAnimator->currentPosition().y()); 306 EXPECT_EQ(0, scrollAnimator->currentPosition().y());
309 reset(*scrollAnimator); 307 reset(*scrollAnimator);
310 } 308 }
311 309
312 } // namespace blink 310 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698