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

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

Issue 22887040: Merge 218265 "[android_webview] Implement requestChildRectangleO..." (Closed) Base URL: svn://svn.chromium.org/chrome/branches/1599/src/
Patch Set: Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « android_webview/java/src/org/chromium/android_webview/AwScrollOffsetManager.java ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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.view.View; 8 import android.graphics.Rect;
9 import android.view.View.MeasureSpec;
10 import android.widget.OverScroller;
11 import android.test.InstrumentationTestCase; 9 import android.test.InstrumentationTestCase;
12 import android.test.suitebuilder.annotation.SmallTest; 10 import android.test.suitebuilder.annotation.SmallTest;
11 import android.view.View.MeasureSpec;
12 import android.view.View;
13 import android.widget.OverScroller;
13 14
14 import org.chromium.android_webview.AwScrollOffsetManager; 15 import org.chromium.android_webview.AwScrollOffsetManager;
15 import org.chromium.base.test.util.Feature; 16 import org.chromium.base.test.util.Feature;
16 17
17 public class AwScrollOffsetManagerTest extends InstrumentationTestCase { 18 public class AwScrollOffsetManagerTest extends InstrumentationTestCase {
18 private static class TestScrollOffsetManagerDelegate implements AwScrollOffs etManager.Delegate { 19 private static class TestScrollOffsetManagerDelegate implements AwScrollOffs etManager.Delegate {
19 private int mOverScrollDeltaX; 20 private int mOverScrollDeltaX;
20 private int mOverScrollDeltaY; 21 private int mOverScrollDeltaY;
21 private int mOverScrollCallCount; 22 private int mOverScrollCallCount;
22 private int mScrollX; 23 private int mScrollX;
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 int callCount = delegate.getOverScrollCallCount(); 100 int callCount = delegate.getOverScrollCallCount();
100 offsetManager.scrollContainerViewTo(scrollX, scrollY); 101 offsetManager.scrollContainerViewTo(scrollX, scrollY);
101 // The manager then asks the delegate to overscroll the view. 102 // The manager then asks the delegate to overscroll the view.
102 assertEquals(callCount + 1, delegate.getOverScrollCallCount()); 103 assertEquals(callCount + 1, delegate.getOverScrollCallCount());
103 assertEquals(scrollX, delegate.getOverScrollDeltaX() + delegate.getScrol lX()); 104 assertEquals(scrollX, delegate.getOverScrollDeltaX() + delegate.getScrol lX());
104 assertEquals(scrollY, delegate.getOverScrollDeltaY() + delegate.getScrol lY()); 105 assertEquals(scrollY, delegate.getOverScrollDeltaY() + delegate.getScrol lY());
105 // As a response to that the menager expects the view to call back with the new scroll. 106 // As a response to that the menager expects the view to call back with the new scroll.
106 offsetManager.onContainerViewOverScrolled(scrollX, scrollY, false, false ); 107 offsetManager.onContainerViewOverScrolled(scrollX, scrollY, false, false );
107 } 108 }
108 109
110 private void simlateOverScrollPropagation(AwScrollOffsetManager offsetManage r,
111 TestScrollOffsetManagerDelegate delegate) {
112 assertTrue(delegate.getOverScrollCallCount() > 0);
113
114 offsetManager.onContainerViewOverScrolled(
115 delegate.getOverScrollDeltaX() + delegate.getScrollX(),
116 delegate.getOverScrollDeltaY() + delegate.getScrollY(), false, f alse);
117 }
118
109 @SmallTest 119 @SmallTest
110 @Feature({"AndroidWebView"}) 120 @Feature({"AndroidWebView"})
111 public void testWhenContentSizeMatchesView() { 121 public void testWhenContentSizeMatchesView() {
112 TestScrollOffsetManagerDelegate delegate = new TestScrollOffsetManagerDe legate(); 122 TestScrollOffsetManagerDelegate delegate = new TestScrollOffsetManagerDe legate();
113 OverScroller scroller = new OverScroller(getInstrumentation().getContext ()); 123 OverScroller scroller = new OverScroller(getInstrumentation().getContext ());
114 AwScrollOffsetManager offsetManager = new AwScrollOffsetManager(delegate , scroller); 124 AwScrollOffsetManager offsetManager = new AwScrollOffsetManager(delegate , scroller);
115 125
116 final int width = 132; 126 final int width = 132;
117 final int height = 212; 127 final int height = 212;
118 final int scrollX = 11; 128 final int scrollX = 11;
(...skipping 28 matching lines...) Expand all
147 assertEquals(-scrollX, delegate.getOverScrollDeltaX()); 157 assertEquals(-scrollX, delegate.getOverScrollDeltaX());
148 assertEquals(-scrollY, delegate.getOverScrollDeltaY()); 158 assertEquals(-scrollY, delegate.getOverScrollDeltaY());
149 assertEquals(0, delegate.getScrollX()); 159 assertEquals(0, delegate.getScrollX());
150 assertEquals(0, delegate.getScrollY()); 160 assertEquals(0, delegate.getScrollY());
151 assertEquals(0, delegate.getNativeScrollX()); 161 assertEquals(0, delegate.getNativeScrollX());
152 assertEquals(0, delegate.getNativeScrollY()); 162 assertEquals(0, delegate.getNativeScrollY());
153 } 163 }
154 164
155 private static final int VIEW_WIDTH = 211; 165 private static final int VIEW_WIDTH = 211;
156 private static final int VIEW_HEIGHT = 312; 166 private static final int VIEW_HEIGHT = 312;
157 private static final int MAX_HORIZONTAL_OFFSET = 61; 167 private static final int MAX_HORIZONTAL_OFFSET = 757;
158 private static final int MAX_VERTICAL_OFFSET = 42; 168 private static final int MAX_VERTICAL_OFFSET = 127;
159 private static final int CONTENT_WIDTH = VIEW_WIDTH + MAX_HORIZONTAL_OFFSET; 169 private static final int CONTENT_WIDTH = VIEW_WIDTH + MAX_HORIZONTAL_OFFSET;
160 private static final int CONTENT_HEIGHT = VIEW_HEIGHT + MAX_VERTICAL_OFFSET; 170 private static final int CONTENT_HEIGHT = VIEW_HEIGHT + MAX_VERTICAL_OFFSET;
161 171
162 @SmallTest 172 @SmallTest
163 @Feature({"AndroidWebView"}) 173 @Feature({"AndroidWebView"})
164 public void testScrollRangeAndMaxOffset() { 174 public void testScrollRangeAndMaxOffset() {
165 TestScrollOffsetManagerDelegate delegate = new TestScrollOffsetManagerDe legate(); 175 TestScrollOffsetManagerDelegate delegate = new TestScrollOffsetManagerDe legate();
166 OverScroller scroller = new OverScroller(getInstrumentation().getContext ()); 176 OverScroller scroller = new OverScroller(getInstrumentation().getContext ());
167 AwScrollOffsetManager offsetManager = new AwScrollOffsetManager(delegate , scroller); 177 AwScrollOffsetManager offsetManager = new AwScrollOffsetManager(delegate , scroller);
168 178
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
228 offsetManager.setContainerViewSize(VIEW_WIDTH, VIEW_HEIGHT); 238 offsetManager.setContainerViewSize(VIEW_WIDTH, VIEW_HEIGHT);
229 239
230 offsetManager.onContainerViewOverScrolled(0, 0, false, false); 240 offsetManager.onContainerViewOverScrolled(0, 0, false, false);
231 assertEquals(overrideScrollX, delegate.getNativeScrollX()); 241 assertEquals(overrideScrollX, delegate.getNativeScrollX());
232 assertEquals(overrideScrollY, delegate.getNativeScrollY()); 242 assertEquals(overrideScrollY, delegate.getNativeScrollY());
233 } 243 }
234 244
235 @SmallTest 245 @SmallTest
236 @Feature({"AndroidWebView"}) 246 @Feature({"AndroidWebView"})
237 public void testDelegateOverridenScrollsDontExceedBounds() { 247 public void testDelegateOverridenScrollsDontExceedBounds() {
238 final int overrideScrollX = 222; 248 final int overrideScrollX = MAX_HORIZONTAL_OFFSET + 10;
239 final int overrideScrollY = 333; 249 final int overrideScrollY = MAX_VERTICAL_OFFSET + 20;
240 TestScrollOffsetManagerDelegate delegate = new TestScrollOffsetManagerDe legate() { 250 TestScrollOffsetManagerDelegate delegate = new TestScrollOffsetManagerDe legate() {
241 @Override 251 @Override
242 public int getContainerViewScrollX() { 252 public int getContainerViewScrollX() {
243 return overrideScrollX; 253 return overrideScrollX;
244 } 254 }
245 255
246 @Override 256 @Override
247 public int getContainerViewScrollY() { 257 public int getContainerViewScrollY() {
248 return overrideScrollY; 258 return overrideScrollY;
249 } 259 }
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
344 offsetManager.flingScroll(0, 101); 354 offsetManager.flingScroll(0, 101);
345 assertTrue(!scroller.isFinished()); 355 assertTrue(!scroller.isFinished());
346 assertTrue(delegate.getInvalidateCount() == 1); 356 assertTrue(delegate.getInvalidateCount() == 1);
347 assertEquals(101, (int) scroller.getCurrVelocity()); 357 assertEquals(101, (int) scroller.getCurrVelocity());
348 358
349 offsetManager.flingScroll(111, 0); 359 offsetManager.flingScroll(111, 0);
350 assertTrue(!scroller.isFinished()); 360 assertTrue(!scroller.isFinished());
351 assertTrue(delegate.getInvalidateCount() == 2); 361 assertTrue(delegate.getInvalidateCount() == 2);
352 assertEquals(111, (int) scroller.getCurrVelocity()); 362 assertEquals(111, (int) scroller.getCurrVelocity());
353 } 363 }
364
365 @SmallTest
366 @Feature({"AndroidWebView"})
367 public void testRequestChildRectangleOnScreenDontScrollIfAlreadyThere() {
368 TestScrollOffsetManagerDelegate delegate = new TestScrollOffsetManagerDe legate();
369 OverScroller scroller = new OverScroller(getInstrumentation().getContext ());
370 AwScrollOffsetManager offsetManager = new AwScrollOffsetManager(delegate , scroller);
371
372 offsetManager.setContentSize(CONTENT_WIDTH, CONTENT_HEIGHT);
373 offsetManager.setContainerViewSize(VIEW_WIDTH, VIEW_HEIGHT);
374
375 offsetManager.requestChildRectangleOnScreen(0, 0,
376 new Rect(0, 0, VIEW_WIDTH / 4, VIEW_HEIGHT / 4), true);
377 assertEquals(0, delegate.getOverScrollDeltaX());
378 assertEquals(0, delegate.getOverScrollDeltaY());
379 assertEquals(0, delegate.getScrollX());
380 assertEquals(0, delegate.getScrollY());
381
382 offsetManager.requestChildRectangleOnScreen(3 * VIEW_WIDTH / 4, 3 * VIEW _HEIGHT / 4,
383 new Rect(0, 0, VIEW_WIDTH / 4, VIEW_HEIGHT / 4), true);
384 assertEquals(0, delegate.getOverScrollDeltaX());
385 assertEquals(0, delegate.getOverScrollDeltaY());
386 assertEquals(0, delegate.getScrollX());
387 assertEquals(0, delegate.getScrollY());
388 }
389
390 @SmallTest
391 @Feature({"AndroidWebView"})
392 public void testRequestChildRectangleOnScreenScrollToBottom() {
393 TestScrollOffsetManagerDelegate delegate = new TestScrollOffsetManagerDe legate();
394 OverScroller scroller = new OverScroller(getInstrumentation().getContext ());
395 AwScrollOffsetManager offsetManager = new AwScrollOffsetManager(delegate , scroller);
396
397 final int rectWidth = 2;
398 final int rectHeight = 3;
399
400 offsetManager.setContentSize(CONTENT_WIDTH, CONTENT_HEIGHT);
401 offsetManager.setContainerViewSize(VIEW_WIDTH, VIEW_HEIGHT);
402
403 offsetManager.requestChildRectangleOnScreen(CONTENT_WIDTH - rectWidth,
404 CONTENT_HEIGHT - rectHeight, new Rect(0, 0, rectWidth, rectHeigh t), true);
405 simlateOverScrollPropagation(offsetManager, delegate);
406 assertEquals(MAX_HORIZONTAL_OFFSET, delegate.getOverScrollDeltaX());
407 assertEquals(CONTENT_HEIGHT - rectHeight - VIEW_HEIGHT / 3, delegate.get OverScrollDeltaY());
408 assertEquals(MAX_HORIZONTAL_OFFSET, delegate.getScrollX());
409 assertEquals(MAX_VERTICAL_OFFSET, delegate.getScrollY());
410 }
411
412 @SmallTest
413 @Feature({"AndroidWebView"})
414 public void testRequestChildRectangleOnScreenScrollToBottomLargeRect() {
415 TestScrollOffsetManagerDelegate delegate = new TestScrollOffsetManagerDe legate();
416 OverScroller scroller = new OverScroller(getInstrumentation().getContext ());
417 AwScrollOffsetManager offsetManager = new AwScrollOffsetManager(delegate , scroller);
418
419 final int rectWidth = VIEW_WIDTH;
420 final int rectHeight = VIEW_HEIGHT;
421
422 offsetManager.setContentSize(CONTENT_WIDTH, CONTENT_HEIGHT);
423 offsetManager.setContainerViewSize(VIEW_WIDTH, VIEW_HEIGHT);
424
425 offsetManager.requestChildRectangleOnScreen(CONTENT_WIDTH - rectWidth,
426 CONTENT_HEIGHT - rectHeight, new Rect(0, 0, rectWidth, rectHeigh t), true);
427 simlateOverScrollPropagation(offsetManager, delegate);
428 assertEquals(MAX_HORIZONTAL_OFFSET, delegate.getOverScrollDeltaX());
429 assertEquals(MAX_VERTICAL_OFFSET, delegate.getOverScrollDeltaY());
430 assertEquals(MAX_HORIZONTAL_OFFSET, delegate.getScrollX());
431 assertEquals(MAX_VERTICAL_OFFSET, delegate.getScrollY());
432 }
433
434 @SmallTest
435 @Feature({"AndroidWebView"})
436 public void testRequestChildRectangleOnScreenScrollToTop() {
437 TestScrollOffsetManagerDelegate delegate = new TestScrollOffsetManagerDe legate();
438 OverScroller scroller = new OverScroller(getInstrumentation().getContext ());
439 AwScrollOffsetManager offsetManager = new AwScrollOffsetManager(delegate , scroller);
440
441 final int rectWidth = 2;
442 final int rectHeight = 3;
443
444 offsetManager.setContentSize(CONTENT_WIDTH, CONTENT_HEIGHT);
445 offsetManager.setContainerViewSize(VIEW_WIDTH, VIEW_HEIGHT);
446 simulateScrolling(offsetManager, delegate,
447 CONTENT_WIDTH - VIEW_WIDTH, CONTENT_HEIGHT - VIEW_HEIGHT);
448
449 offsetManager.requestChildRectangleOnScreen(0, 0,
450 new Rect(0, 0, rectWidth, rectHeight), true);
451 simlateOverScrollPropagation(offsetManager, delegate);
452 assertEquals(-CONTENT_WIDTH + VIEW_WIDTH, delegate.getOverScrollDeltaX() );
453 assertEquals(-CONTENT_HEIGHT + VIEW_HEIGHT, delegate.getOverScrollDeltaY ());
454 assertEquals(0, delegate.getScrollX());
455 assertEquals(0, delegate.getScrollX());
456 }
354 } 457 }
OLDNEW
« no previous file with comments | « android_webview/java/src/org/chromium/android_webview/AwScrollOffsetManager.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698