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

Side by Side Diff: android_webview/javatests/src/org/chromium/android_webview/test/AwScrollOffsetManagerTest.java

Issue 23533051: [android_webview] Use a fraction to calculate scroll offset. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 package org.chromium.android_webview.test; 5 package org.chromium.android_webview.test;
6 6
7 import android.content.Context; 7 import android.content.Context;
8 import android.graphics.Rect; 8 import android.graphics.Rect;
9 import android.test.InstrumentationTestCase; 9 import android.test.InstrumentationTestCase;
10 import android.test.suitebuilder.annotation.SmallTest; 10 import android.test.suitebuilder.annotation.SmallTest;
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 public void testWhenContentSizeMatchesView() { 121 public void testWhenContentSizeMatchesView() {
122 TestScrollOffsetManagerDelegate delegate = new TestScrollOffsetManagerDe legate(); 122 TestScrollOffsetManagerDelegate delegate = new TestScrollOffsetManagerDe legate();
123 OverScroller scroller = new OverScroller(getInstrumentation().getContext ()); 123 OverScroller scroller = new OverScroller(getInstrumentation().getContext ());
124 AwScrollOffsetManager offsetManager = new AwScrollOffsetManager(delegate , scroller); 124 AwScrollOffsetManager offsetManager = new AwScrollOffsetManager(delegate , scroller);
125 125
126 final int width = 132; 126 final int width = 132;
127 final int height = 212; 127 final int height = 212;
128 final int scrollX = 11; 128 final int scrollX = 11;
129 final int scrollY = 13; 129 final int scrollY = 13;
130 130
131 offsetManager.setContentSize(width, height); 131 offsetManager.setMaxScrollOffset(0, 0);
132 offsetManager.setContainerViewSize(width, height); 132 offsetManager.setContainerViewSize(width, height);
133 133
134 assertEquals(width, offsetManager.computeHorizontalScrollRange()); 134 assertEquals(width, offsetManager.computeHorizontalScrollRange());
135 assertEquals(height, offsetManager.computeVerticalScrollRange()); 135 assertEquals(height, offsetManager.computeVerticalScrollRange());
136 136
137 // Since the view size and contents size are equal no scrolling should b e possible. 137 // Since the view size and contents size are equal no scrolling should b e possible.
138 assertEquals(0, offsetManager.computeMaximumHorizontalScrollOffset()); 138 assertEquals(0, offsetManager.computeMaximumHorizontalScrollOffset());
139 assertEquals(0, offsetManager.computeMaximumVerticalScrollOffset()); 139 assertEquals(0, offsetManager.computeMaximumVerticalScrollOffset());
140 140
141 // Scrolling should generate overscroll but not update the scroll offset . 141 // Scrolling should generate overscroll but not update the scroll offset .
(...skipping 27 matching lines...) Expand all
169 private static final int CONTENT_WIDTH = VIEW_WIDTH + MAX_HORIZONTAL_OFFSET; 169 private static final int CONTENT_WIDTH = VIEW_WIDTH + MAX_HORIZONTAL_OFFSET;
170 private static final int CONTENT_HEIGHT = VIEW_HEIGHT + MAX_VERTICAL_OFFSET; 170 private static final int CONTENT_HEIGHT = VIEW_HEIGHT + MAX_VERTICAL_OFFSET;
171 171
172 @SmallTest 172 @SmallTest
173 @Feature({"AndroidWebView"}) 173 @Feature({"AndroidWebView"})
174 public void testScrollRangeAndMaxOffset() { 174 public void testScrollRangeAndMaxOffset() {
175 TestScrollOffsetManagerDelegate delegate = new TestScrollOffsetManagerDe legate(); 175 TestScrollOffsetManagerDelegate delegate = new TestScrollOffsetManagerDe legate();
176 OverScroller scroller = new OverScroller(getInstrumentation().getContext ()); 176 OverScroller scroller = new OverScroller(getInstrumentation().getContext ());
177 AwScrollOffsetManager offsetManager = new AwScrollOffsetManager(delegate , scroller); 177 AwScrollOffsetManager offsetManager = new AwScrollOffsetManager(delegate , scroller);
178 178
179 offsetManager.setContentSize(CONTENT_WIDTH, CONTENT_HEIGHT); 179 offsetManager.setMaxScrollOffset(MAX_HORIZONTAL_OFFSET, MAX_VERTICAL_OFF SET);
180 offsetManager.setContainerViewSize(VIEW_WIDTH, VIEW_HEIGHT); 180 offsetManager.setContainerViewSize(VIEW_WIDTH, VIEW_HEIGHT);
181 181
182 assertEquals(CONTENT_WIDTH, offsetManager.computeHorizontalScrollRange() ); 182 assertEquals(CONTENT_WIDTH, offsetManager.computeHorizontalScrollRange() );
183 assertEquals(CONTENT_HEIGHT, offsetManager.computeVerticalScrollRange()) ; 183 assertEquals(CONTENT_HEIGHT, offsetManager.computeVerticalScrollRange()) ;
184 184
185 assertEquals(MAX_HORIZONTAL_OFFSET, offsetManager.computeMaximumHorizont alScrollOffset()); 185 assertEquals(MAX_HORIZONTAL_OFFSET, offsetManager.computeMaximumHorizont alScrollOffset());
186 assertEquals(MAX_VERTICAL_OFFSET, offsetManager.computeMaximumVerticalSc rollOffset()); 186 assertEquals(MAX_VERTICAL_OFFSET, offsetManager.computeMaximumVerticalSc rollOffset());
187 187
188 // Scrolling beyond the maximum should be clamped. 188 // Scrolling beyond the maximum should be clamped.
189 final int scrollX = MAX_HORIZONTAL_OFFSET + 10; 189 final int scrollX = MAX_HORIZONTAL_OFFSET + 10;
(...skipping 17 matching lines...) Expand all
207 // The onScrollChanged method is callable by third party code and should also be clamped 207 // The onScrollChanged method is callable by third party code and should also be clamped
208 offsetManager.onContainerViewScrollChanged(scrollX, scrollY); 208 offsetManager.onContainerViewScrollChanged(scrollX, scrollY);
209 assertEquals(MAX_HORIZONTAL_OFFSET, delegate.getNativeScrollX()); 209 assertEquals(MAX_HORIZONTAL_OFFSET, delegate.getNativeScrollX());
210 assertEquals(MAX_VERTICAL_OFFSET, delegate.getNativeScrollY()); 210 assertEquals(MAX_VERTICAL_OFFSET, delegate.getNativeScrollY());
211 211
212 offsetManager.onContainerViewScrollChanged(-scrollX, -scrollY); 212 offsetManager.onContainerViewScrollChanged(-scrollX, -scrollY);
213 assertEquals(0, delegate.getNativeScrollX()); 213 assertEquals(0, delegate.getNativeScrollX());
214 assertEquals(0, delegate.getNativeScrollY()); 214 assertEquals(0, delegate.getNativeScrollY());
215 } 215 }
216 216
217
218 @SmallTest
219 @Feature({"AndroidWebView"})
220 public void testScrollDeferredOnInvalidContentSize() {
221 TestScrollOffsetManagerDelegate delegate = new TestScrollOffsetManagerDe legate();
222 OverScroller scroller = new OverScroller(getInstrumentation().getContext ());
223 AwScrollOffsetManager offsetManager = new AwScrollOffsetManager(delegate , scroller);
224
225 offsetManager.setContentSize(0, 0);
226 offsetManager.setContainerViewSize(VIEW_WIDTH, VIEW_HEIGHT);
227
228 final int firstScrollX = MAX_HORIZONTAL_OFFSET + 10;
229 final int firstScrollY = MAX_VERTICAL_OFFSET + 11;
230 int expectedCallCount = delegate.getOverScrollCallCount();
231 offsetManager.scrollContainerViewTo(firstScrollX, firstScrollY);
232 assertEquals(expectedCallCount, delegate.getOverScrollCallCount());
233 assertEquals(0, delegate.getOverScrollDeltaX() + delegate.getScrollX());
234 assertEquals(0, delegate.getOverScrollDeltaY() + delegate.getScrollY());
235
236 // Repeated scrolls will also be deferred, overwriting any previous defe rred scroll offset.
237 final int secondScrollX = MAX_HORIZONTAL_OFFSET;
238 final int secondScrollY = MAX_VERTICAL_OFFSET;
239 offsetManager.scrollContainerViewTo(secondScrollX, secondScrollY);
240 assertEquals(expectedCallCount, delegate.getOverScrollCallCount());
241 assertEquals(0, delegate.getOverScrollDeltaX() + delegate.getScrollX());
242 assertEquals(0, delegate.getOverScrollDeltaY() + delegate.getScrollY());
243
244 // Setting a valid size will release the deferred container scroll offse t.
245 expectedCallCount++;
246 offsetManager.setContentSize(CONTENT_WIDTH, CONTENT_HEIGHT);
247 assertEquals(expectedCallCount, delegate.getOverScrollCallCount());
248 assertEquals(secondScrollX, delegate.getOverScrollDeltaX() + delegate.ge tScrollX());
249 assertEquals(secondScrollY, delegate.getOverScrollDeltaY() + delegate.ge tScrollY());
250 offsetManager.onContainerViewOverScrolled(secondScrollX, secondScrollY, false, false);
251
252 assertEquals(secondScrollX, delegate.getOverScrollDeltaX());
253 assertEquals(secondScrollY, delegate.getOverScrollDeltaY());
254 assertEquals(MAX_HORIZONTAL_OFFSET, delegate.getScrollX());
255 assertEquals(MAX_VERTICAL_OFFSET, delegate.getScrollY());
256
257 // Subsequently setting valid content sizes should not release another s croll update.
258 offsetManager.setContentSize(CONTENT_WIDTH + 10, CONTENT_HEIGHT + 10);
259 assertEquals(expectedCallCount, delegate.getOverScrollCallCount());
260 offsetManager.setContentSize(CONTENT_WIDTH, CONTENT_HEIGHT);
261 assertEquals(expectedCallCount, delegate.getOverScrollCallCount());
262 }
263
264
265 @SmallTest 217 @SmallTest
266 @Feature({"AndroidWebView"}) 218 @Feature({"AndroidWebView"})
267 public void testDelegateCanOverrideScroll() { 219 public void testDelegateCanOverrideScroll() {
268 final int overrideScrollX = 10; 220 final int overrideScrollX = 10;
269 final int overrideScrollY = 10; 221 final int overrideScrollY = 10;
270 222
271 TestScrollOffsetManagerDelegate delegate = new TestScrollOffsetManagerDe legate() { 223 TestScrollOffsetManagerDelegate delegate = new TestScrollOffsetManagerDe legate() {
272 @Override 224 @Override
273 public int getContainerViewScrollX() { 225 public int getContainerViewScrollX() {
274 return overrideScrollX; 226 return overrideScrollX;
275 } 227 }
276 228
277 @Override 229 @Override
278 public int getContainerViewScrollY() { 230 public int getContainerViewScrollY() {
279 return overrideScrollY; 231 return overrideScrollY;
280 } 232 }
281 }; 233 };
282 OverScroller scroller = new OverScroller(getInstrumentation().getContext ()); 234 OverScroller scroller = new OverScroller(getInstrumentation().getContext ());
283 AwScrollOffsetManager offsetManager = new AwScrollOffsetManager(delegate , scroller); 235 AwScrollOffsetManager offsetManager = new AwScrollOffsetManager(delegate , scroller);
284 236
285 offsetManager.setContentSize(CONTENT_WIDTH, CONTENT_HEIGHT); 237 offsetManager.setMaxScrollOffset(MAX_HORIZONTAL_OFFSET, MAX_VERTICAL_OFF SET);
286 offsetManager.setContainerViewSize(VIEW_WIDTH, VIEW_HEIGHT); 238 offsetManager.setContainerViewSize(VIEW_WIDTH, VIEW_HEIGHT);
287 239
288 offsetManager.onContainerViewOverScrolled(0, 0, false, false); 240 offsetManager.onContainerViewOverScrolled(0, 0, false, false);
289 assertEquals(overrideScrollX, delegate.getNativeScrollX()); 241 assertEquals(overrideScrollX, delegate.getNativeScrollX());
290 assertEquals(overrideScrollY, delegate.getNativeScrollY()); 242 assertEquals(overrideScrollY, delegate.getNativeScrollY());
291 } 243 }
292 244
293 @SmallTest 245 @SmallTest
294 @Feature({"AndroidWebView"}) 246 @Feature({"AndroidWebView"})
295 public void testDelegateOverridenScrollsDontExceedBounds() { 247 public void testDelegateOverridenScrollsDontExceedBounds() {
296 final int overrideScrollX = MAX_HORIZONTAL_OFFSET + 10; 248 final int overrideScrollX = MAX_HORIZONTAL_OFFSET + 10;
297 final int overrideScrollY = MAX_VERTICAL_OFFSET + 20; 249 final int overrideScrollY = MAX_VERTICAL_OFFSET + 20;
298 TestScrollOffsetManagerDelegate delegate = new TestScrollOffsetManagerDe legate() { 250 TestScrollOffsetManagerDelegate delegate = new TestScrollOffsetManagerDe legate() {
299 @Override 251 @Override
300 public int getContainerViewScrollX() { 252 public int getContainerViewScrollX() {
301 return overrideScrollX; 253 return overrideScrollX;
302 } 254 }
303 255
304 @Override 256 @Override
305 public int getContainerViewScrollY() { 257 public int getContainerViewScrollY() {
306 return overrideScrollY; 258 return overrideScrollY;
307 } 259 }
308 }; 260 };
309 OverScroller scroller = new OverScroller(getInstrumentation().getContext ()); 261 OverScroller scroller = new OverScroller(getInstrumentation().getContext ());
310 AwScrollOffsetManager offsetManager = new AwScrollOffsetManager(delegate , scroller); 262 AwScrollOffsetManager offsetManager = new AwScrollOffsetManager(delegate , scroller);
311 263
312 offsetManager.setContentSize(CONTENT_WIDTH, CONTENT_HEIGHT); 264 offsetManager.setMaxScrollOffset(MAX_HORIZONTAL_OFFSET, MAX_VERTICAL_OFF SET);
313 offsetManager.setContainerViewSize(VIEW_WIDTH, VIEW_HEIGHT); 265 offsetManager.setContainerViewSize(VIEW_WIDTH, VIEW_HEIGHT);
314 266
315 offsetManager.onContainerViewOverScrolled(0, 0, false, false); 267 offsetManager.onContainerViewOverScrolled(0, 0, false, false);
316 assertEquals(MAX_HORIZONTAL_OFFSET, delegate.getNativeScrollX()); 268 assertEquals(MAX_HORIZONTAL_OFFSET, delegate.getNativeScrollX());
317 assertEquals(MAX_VERTICAL_OFFSET, delegate.getNativeScrollY()); 269 assertEquals(MAX_VERTICAL_OFFSET, delegate.getNativeScrollY());
318 } 270 }
319 271
320 @SmallTest 272 @SmallTest
321 @Feature({"AndroidWebView"}) 273 @Feature({"AndroidWebView"})
322 public void testScrollContainerViewTo() { 274 public void testScrollContainerViewTo() {
323 TestScrollOffsetManagerDelegate delegate = new TestScrollOffsetManagerDe legate(); 275 TestScrollOffsetManagerDelegate delegate = new TestScrollOffsetManagerDe legate();
324 OverScroller scroller = new OverScroller(getInstrumentation().getContext ()); 276 OverScroller scroller = new OverScroller(getInstrumentation().getContext ());
325 AwScrollOffsetManager offsetManager = new AwScrollOffsetManager(delegate , scroller); 277 AwScrollOffsetManager offsetManager = new AwScrollOffsetManager(delegate , scroller);
326 278
327 final int scrollX = 31; 279 final int scrollX = 31;
328 final int scrollY = 41; 280 final int scrollY = 41;
329 281
330 offsetManager.setContentSize(CONTENT_WIDTH, CONTENT_HEIGHT); 282 offsetManager.setMaxScrollOffset(MAX_HORIZONTAL_OFFSET, MAX_VERTICAL_OFF SET);
331 offsetManager.setContainerViewSize(VIEW_WIDTH, VIEW_HEIGHT); 283 offsetManager.setContainerViewSize(VIEW_WIDTH, VIEW_HEIGHT);
332 284
333 assertEquals(0, delegate.getOverScrollDeltaX()); 285 assertEquals(0, delegate.getOverScrollDeltaX());
334 assertEquals(0, delegate.getOverScrollDeltaY()); 286 assertEquals(0, delegate.getOverScrollDeltaY());
335 int callCount = delegate.getOverScrollCallCount(); 287 int callCount = delegate.getOverScrollCallCount();
336 288
337 offsetManager.scrollContainerViewTo(scrollX, scrollY); 289 offsetManager.scrollContainerViewTo(scrollX, scrollY);
338 assertEquals(callCount + 1, delegate.getOverScrollCallCount()); 290 assertEquals(callCount + 1, delegate.getOverScrollCallCount());
339 assertEquals(scrollX, delegate.getOverScrollDeltaX()); 291 assertEquals(scrollX, delegate.getOverScrollDeltaX());
340 assertEquals(scrollY, delegate.getOverScrollDeltaY()); 292 assertEquals(scrollY, delegate.getOverScrollDeltaY());
341 } 293 }
342 294
343 @SmallTest 295 @SmallTest
344 @Feature({"AndroidWebView"}) 296 @Feature({"AndroidWebView"})
345 public void testOnContainerViewOverScrolled() { 297 public void testOnContainerViewOverScrolled() {
346 TestScrollOffsetManagerDelegate delegate = new TestScrollOffsetManagerDe legate(); 298 TestScrollOffsetManagerDelegate delegate = new TestScrollOffsetManagerDe legate();
347 OverScroller scroller = new OverScroller(getInstrumentation().getContext ()); 299 OverScroller scroller = new OverScroller(getInstrumentation().getContext ());
348 AwScrollOffsetManager offsetManager = new AwScrollOffsetManager(delegate , scroller); 300 AwScrollOffsetManager offsetManager = new AwScrollOffsetManager(delegate , scroller);
349 301
350 final int scrollX = 31; 302 final int scrollX = 31;
351 final int scrollY = 41; 303 final int scrollY = 41;
352 304
353 offsetManager.setContentSize(CONTENT_WIDTH, CONTENT_HEIGHT); 305 offsetManager.setMaxScrollOffset(MAX_HORIZONTAL_OFFSET, MAX_VERTICAL_OFF SET);
354 offsetManager.setContainerViewSize(VIEW_WIDTH, VIEW_HEIGHT); 306 offsetManager.setContainerViewSize(VIEW_WIDTH, VIEW_HEIGHT);
355 307
356 assertEquals(0, delegate.getScrollX()); 308 assertEquals(0, delegate.getScrollX());
357 assertEquals(0, delegate.getScrollY()); 309 assertEquals(0, delegate.getScrollY());
358 assertEquals(0, delegate.getNativeScrollX()); 310 assertEquals(0, delegate.getNativeScrollX());
359 assertEquals(0, delegate.getNativeScrollY()); 311 assertEquals(0, delegate.getNativeScrollY());
360 312
361 offsetManager.onContainerViewOverScrolled(scrollX, scrollY, false, false ); 313 offsetManager.onContainerViewOverScrolled(scrollX, scrollY, false, false );
362 assertEquals(scrollX, delegate.getScrollX()); 314 assertEquals(scrollX, delegate.getScrollX());
363 assertEquals(scrollY, delegate.getScrollY()); 315 assertEquals(scrollY, delegate.getScrollY());
364 assertEquals(scrollX, delegate.getNativeScrollX()); 316 assertEquals(scrollX, delegate.getNativeScrollX());
365 assertEquals(scrollY, delegate.getNativeScrollY()); 317 assertEquals(scrollY, delegate.getNativeScrollY());
366 } 318 }
367 319
368 @SmallTest 320 @SmallTest
369 @Feature({"AndroidWebView"}) 321 @Feature({"AndroidWebView"})
370 public void testDefersScrollUntilTouchEnd() { 322 public void testDefersScrollUntilTouchEnd() {
371 TestScrollOffsetManagerDelegate delegate = new TestScrollOffsetManagerDe legate(); 323 TestScrollOffsetManagerDelegate delegate = new TestScrollOffsetManagerDe legate();
372 OverScroller scroller = new OverScroller(getInstrumentation().getContext ()); 324 OverScroller scroller = new OverScroller(getInstrumentation().getContext ());
373 AwScrollOffsetManager offsetManager = new AwScrollOffsetManager(delegate , scroller); 325 AwScrollOffsetManager offsetManager = new AwScrollOffsetManager(delegate , scroller);
374 326
375 final int scrollX = 31; 327 final int scrollX = 31;
376 final int scrollY = 41; 328 final int scrollY = 41;
377 329
378 offsetManager.setContentSize(CONTENT_WIDTH, CONTENT_HEIGHT); 330 offsetManager.setMaxScrollOffset(MAX_HORIZONTAL_OFFSET, MAX_VERTICAL_OFF SET);
379 offsetManager.setContainerViewSize(VIEW_WIDTH, VIEW_HEIGHT); 331 offsetManager.setContainerViewSize(VIEW_WIDTH, VIEW_HEIGHT);
380 332
381 offsetManager.setProcessingTouchEvent(true); 333 offsetManager.setProcessingTouchEvent(true);
382 offsetManager.onContainerViewOverScrolled(scrollX, scrollY, false, false ); 334 offsetManager.onContainerViewOverScrolled(scrollX, scrollY, false, false );
383 assertEquals(scrollX, delegate.getScrollX()); 335 assertEquals(scrollX, delegate.getScrollX());
384 assertEquals(scrollY, delegate.getScrollY()); 336 assertEquals(scrollY, delegate.getScrollY());
385 assertEquals(0, delegate.getNativeScrollX()); 337 assertEquals(0, delegate.getNativeScrollX());
386 assertEquals(0, delegate.getNativeScrollY()); 338 assertEquals(0, delegate.getNativeScrollY());
387 339
388 offsetManager.setProcessingTouchEvent(false); 340 offsetManager.setProcessingTouchEvent(false);
(...skipping 21 matching lines...) Expand all
410 assertEquals(111, (int) scroller.getCurrVelocity()); 362 assertEquals(111, (int) scroller.getCurrVelocity());
411 } 363 }
412 364
413 @SmallTest 365 @SmallTest
414 @Feature({"AndroidWebView"}) 366 @Feature({"AndroidWebView"})
415 public void testRequestChildRectangleOnScreenDontScrollIfAlreadyThere() { 367 public void testRequestChildRectangleOnScreenDontScrollIfAlreadyThere() {
416 TestScrollOffsetManagerDelegate delegate = new TestScrollOffsetManagerDe legate(); 368 TestScrollOffsetManagerDelegate delegate = new TestScrollOffsetManagerDe legate();
417 OverScroller scroller = new OverScroller(getInstrumentation().getContext ()); 369 OverScroller scroller = new OverScroller(getInstrumentation().getContext ());
418 AwScrollOffsetManager offsetManager = new AwScrollOffsetManager(delegate , scroller); 370 AwScrollOffsetManager offsetManager = new AwScrollOffsetManager(delegate , scroller);
419 371
420 offsetManager.setContentSize(CONTENT_WIDTH, CONTENT_HEIGHT); 372 offsetManager.setMaxScrollOffset(MAX_HORIZONTAL_OFFSET, MAX_VERTICAL_OFF SET);
421 offsetManager.setContainerViewSize(VIEW_WIDTH, VIEW_HEIGHT); 373 offsetManager.setContainerViewSize(VIEW_WIDTH, VIEW_HEIGHT);
422 374
423 offsetManager.requestChildRectangleOnScreen(0, 0, 375 offsetManager.requestChildRectangleOnScreen(0, 0,
424 new Rect(0, 0, VIEW_WIDTH / 4, VIEW_HEIGHT / 4), true); 376 new Rect(0, 0, VIEW_WIDTH / 4, VIEW_HEIGHT / 4), true);
425 assertEquals(0, delegate.getOverScrollDeltaX()); 377 assertEquals(0, delegate.getOverScrollDeltaX());
426 assertEquals(0, delegate.getOverScrollDeltaY()); 378 assertEquals(0, delegate.getOverScrollDeltaY());
427 assertEquals(0, delegate.getScrollX()); 379 assertEquals(0, delegate.getScrollX());
428 assertEquals(0, delegate.getScrollY()); 380 assertEquals(0, delegate.getScrollY());
429 381
430 offsetManager.requestChildRectangleOnScreen(3 * VIEW_WIDTH / 4, 3 * VIEW _HEIGHT / 4, 382 offsetManager.requestChildRectangleOnScreen(3 * VIEW_WIDTH / 4, 3 * VIEW _HEIGHT / 4,
431 new Rect(0, 0, VIEW_WIDTH / 4, VIEW_HEIGHT / 4), true); 383 new Rect(0, 0, VIEW_WIDTH / 4, VIEW_HEIGHT / 4), true);
432 assertEquals(0, delegate.getOverScrollDeltaX()); 384 assertEquals(0, delegate.getOverScrollDeltaX());
433 assertEquals(0, delegate.getOverScrollDeltaY()); 385 assertEquals(0, delegate.getOverScrollDeltaY());
434 assertEquals(0, delegate.getScrollX()); 386 assertEquals(0, delegate.getScrollX());
435 assertEquals(0, delegate.getScrollY()); 387 assertEquals(0, delegate.getScrollY());
436 } 388 }
437 389
438 @SmallTest 390 @SmallTest
439 @Feature({"AndroidWebView"}) 391 @Feature({"AndroidWebView"})
440 public void testRequestChildRectangleOnScreenScrollToBottom() { 392 public void testRequestChildRectangleOnScreenScrollToBottom() {
441 TestScrollOffsetManagerDelegate delegate = new TestScrollOffsetManagerDe legate(); 393 TestScrollOffsetManagerDelegate delegate = new TestScrollOffsetManagerDe legate();
442 OverScroller scroller = new OverScroller(getInstrumentation().getContext ()); 394 OverScroller scroller = new OverScroller(getInstrumentation().getContext ());
443 AwScrollOffsetManager offsetManager = new AwScrollOffsetManager(delegate , scroller); 395 AwScrollOffsetManager offsetManager = new AwScrollOffsetManager(delegate , scroller);
444 396
445 final int rectWidth = 2; 397 final int rectWidth = 2;
446 final int rectHeight = 3; 398 final int rectHeight = 3;
447 399
448 offsetManager.setContentSize(CONTENT_WIDTH, CONTENT_HEIGHT); 400 offsetManager.setMaxScrollOffset(MAX_HORIZONTAL_OFFSET, MAX_VERTICAL_OFF SET);
449 offsetManager.setContainerViewSize(VIEW_WIDTH, VIEW_HEIGHT); 401 offsetManager.setContainerViewSize(VIEW_WIDTH, VIEW_HEIGHT);
450 402
451 offsetManager.requestChildRectangleOnScreen(CONTENT_WIDTH - rectWidth, 403 offsetManager.requestChildRectangleOnScreen(CONTENT_WIDTH - rectWidth,
452 CONTENT_HEIGHT - rectHeight, new Rect(0, 0, rectWidth, rectHeigh t), true); 404 CONTENT_HEIGHT - rectHeight, new Rect(0, 0, rectWidth, rectHeigh t), true);
453 simlateOverScrollPropagation(offsetManager, delegate); 405 simlateOverScrollPropagation(offsetManager, delegate);
454 assertEquals(MAX_HORIZONTAL_OFFSET, delegate.getOverScrollDeltaX()); 406 assertEquals(MAX_HORIZONTAL_OFFSET, delegate.getOverScrollDeltaX());
455 assertEquals(CONTENT_HEIGHT - rectHeight - VIEW_HEIGHT / 3, delegate.get OverScrollDeltaY()); 407 assertEquals(CONTENT_HEIGHT - rectHeight - VIEW_HEIGHT / 3, delegate.get OverScrollDeltaY());
456 assertEquals(MAX_HORIZONTAL_OFFSET, delegate.getScrollX()); 408 assertEquals(MAX_HORIZONTAL_OFFSET, delegate.getScrollX());
457 assertEquals(MAX_VERTICAL_OFFSET, delegate.getScrollY()); 409 assertEquals(MAX_VERTICAL_OFFSET, delegate.getScrollY());
458 } 410 }
459 411
460 @SmallTest 412 @SmallTest
461 @Feature({"AndroidWebView"}) 413 @Feature({"AndroidWebView"})
462 public void testRequestChildRectangleOnScreenScrollToBottomLargeRect() { 414 public void testRequestChildRectangleOnScreenScrollToBottomLargeRect() {
463 TestScrollOffsetManagerDelegate delegate = new TestScrollOffsetManagerDe legate(); 415 TestScrollOffsetManagerDelegate delegate = new TestScrollOffsetManagerDe legate();
464 OverScroller scroller = new OverScroller(getInstrumentation().getContext ()); 416 OverScroller scroller = new OverScroller(getInstrumentation().getContext ());
465 AwScrollOffsetManager offsetManager = new AwScrollOffsetManager(delegate , scroller); 417 AwScrollOffsetManager offsetManager = new AwScrollOffsetManager(delegate , scroller);
466 418
467 final int rectWidth = VIEW_WIDTH; 419 final int rectWidth = VIEW_WIDTH;
468 final int rectHeight = VIEW_HEIGHT; 420 final int rectHeight = VIEW_HEIGHT;
469 421
470 offsetManager.setContentSize(CONTENT_WIDTH, CONTENT_HEIGHT); 422 offsetManager.setMaxScrollOffset(MAX_HORIZONTAL_OFFSET, MAX_VERTICAL_OFF SET);
471 offsetManager.setContainerViewSize(VIEW_WIDTH, VIEW_HEIGHT); 423 offsetManager.setContainerViewSize(VIEW_WIDTH, VIEW_HEIGHT);
472 424
473 offsetManager.requestChildRectangleOnScreen(CONTENT_WIDTH - rectWidth, 425 offsetManager.requestChildRectangleOnScreen(CONTENT_WIDTH - rectWidth,
474 CONTENT_HEIGHT - rectHeight, new Rect(0, 0, rectWidth, rectHeigh t), true); 426 CONTENT_HEIGHT - rectHeight, new Rect(0, 0, rectWidth, rectHeigh t), true);
475 simlateOverScrollPropagation(offsetManager, delegate); 427 simlateOverScrollPropagation(offsetManager, delegate);
476 assertEquals(MAX_HORIZONTAL_OFFSET, delegate.getOverScrollDeltaX()); 428 assertEquals(MAX_HORIZONTAL_OFFSET, delegate.getOverScrollDeltaX());
477 assertEquals(MAX_VERTICAL_OFFSET, delegate.getOverScrollDeltaY()); 429 assertEquals(MAX_VERTICAL_OFFSET, delegate.getOverScrollDeltaY());
478 assertEquals(MAX_HORIZONTAL_OFFSET, delegate.getScrollX()); 430 assertEquals(MAX_HORIZONTAL_OFFSET, delegate.getScrollX());
479 assertEquals(MAX_VERTICAL_OFFSET, delegate.getScrollY()); 431 assertEquals(MAX_VERTICAL_OFFSET, delegate.getScrollY());
480 } 432 }
481 433
482 @SmallTest 434 @SmallTest
483 @Feature({"AndroidWebView"}) 435 @Feature({"AndroidWebView"})
484 public void testRequestChildRectangleOnScreenScrollToTop() { 436 public void testRequestChildRectangleOnScreenScrollToTop() {
485 TestScrollOffsetManagerDelegate delegate = new TestScrollOffsetManagerDe legate(); 437 TestScrollOffsetManagerDelegate delegate = new TestScrollOffsetManagerDe legate();
486 OverScroller scroller = new OverScroller(getInstrumentation().getContext ()); 438 OverScroller scroller = new OverScroller(getInstrumentation().getContext ());
487 AwScrollOffsetManager offsetManager = new AwScrollOffsetManager(delegate , scroller); 439 AwScrollOffsetManager offsetManager = new AwScrollOffsetManager(delegate , scroller);
488 440
489 final int rectWidth = 2; 441 final int rectWidth = 2;
490 final int rectHeight = 3; 442 final int rectHeight = 3;
491 443
492 offsetManager.setContentSize(CONTENT_WIDTH, CONTENT_HEIGHT); 444 offsetManager.setMaxScrollOffset(MAX_HORIZONTAL_OFFSET, MAX_VERTICAL_OFF SET);
493 offsetManager.setContainerViewSize(VIEW_WIDTH, VIEW_HEIGHT); 445 offsetManager.setContainerViewSize(VIEW_WIDTH, VIEW_HEIGHT);
494 simulateScrolling(offsetManager, delegate, 446 simulateScrolling(offsetManager, delegate,
495 CONTENT_WIDTH - VIEW_WIDTH, CONTENT_HEIGHT - VIEW_HEIGHT); 447 CONTENT_WIDTH - VIEW_WIDTH, CONTENT_HEIGHT - VIEW_HEIGHT);
496 448
497 offsetManager.requestChildRectangleOnScreen(0, 0, 449 offsetManager.requestChildRectangleOnScreen(0, 0,
498 new Rect(0, 0, rectWidth, rectHeight), true); 450 new Rect(0, 0, rectWidth, rectHeight), true);
499 simlateOverScrollPropagation(offsetManager, delegate); 451 simlateOverScrollPropagation(offsetManager, delegate);
500 assertEquals(-CONTENT_WIDTH + VIEW_WIDTH, delegate.getOverScrollDeltaX() ); 452 assertEquals(-CONTENT_WIDTH + VIEW_WIDTH, delegate.getOverScrollDeltaX() );
501 assertEquals(-CONTENT_HEIGHT + VIEW_HEIGHT, delegate.getOverScrollDeltaY ()); 453 assertEquals(-CONTENT_HEIGHT + VIEW_HEIGHT, delegate.getOverScrollDeltaY ());
502 assertEquals(0, delegate.getScrollX()); 454 assertEquals(0, delegate.getScrollX());
503 assertEquals(0, delegate.getScrollX()); 455 assertEquals(0, delegate.getScrollX());
504 } 456 }
505 } 457 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698