summaryrefslogtreecommitdiffstats
path: root/core/java
diff options
context:
space:
mode:
authorJohn Reck <jreck@google.com>2012-04-19 14:52:34 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-04-19 14:52:34 -0700
commit675035d77403080e65308e2d37db624d4c4b8c78 (patch)
treedf24c949ca76a8fcbeadc089fd96ef5dd8164af0 /core/java
parentad36d1e1f88fab977f9b87bc69c380dc64b777c5 (diff)
parenta60a18965e5f671905172f2e05d31201a1b2f421 (diff)
downloadframeworks_base-675035d77403080e65308e2d37db624d4c4b8c78.zip
frameworks_base-675035d77403080e65308e2d37db624d4c4b8c78.tar.gz
frameworks_base-675035d77403080e65308e2d37db624d4c4b8c78.tar.bz2
Merge "Remove code preventing scrollTo(0,0)"
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/webkit/WebViewClassic.java105
1 files changed, 6 insertions, 99 deletions
diff --git a/core/java/android/webkit/WebViewClassic.java b/core/java/android/webkit/WebViewClassic.java
index f1eacff..c8cfb0a 100644
--- a/core/java/android/webkit/WebViewClassic.java
+++ b/core/java/android/webkit/WebViewClassic.java
@@ -1074,7 +1074,6 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc
private static final int STD_SPEED = 480; // pixels per second
// time for the longest scroll animation
private static final int MAX_DURATION = 750; // milliseconds
- private static final int SLIDE_TITLE_DURATION = 500; // milliseconds
// Used by OverScrollGlow
OverScroller mScroller;
@@ -4012,17 +4011,6 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc
* @param url The URL of the page which has finished loading.
*/
/* package */ void onPageFinished(String url) {
- if (mPageThatNeedsToSlideTitleBarOffScreen != null) {
- // If the user is now on a different page, or has scrolled the page
- // past the point where the title bar is offscreen, ignore the
- // scroll request.
- if (mPageThatNeedsToSlideTitleBarOffScreen.equals(url)
- && getScrollX() == 0 && getScrollY() == 0) {
- pinScrollTo(0, mYDistanceToSlideTitleOffScreen, true,
- SLIDE_TITLE_DURATION);
- }
- mPageThatNeedsToSlideTitleBarOffScreen = null;
- }
mZoomManager.onPageFinished(url);
injectAccessibilityForUrl(url);
}
@@ -4134,93 +4122,16 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc
return -1;
}
- /**
- * The URL of a page that sent a message to scroll the title bar off screen.
- *
- * Many mobile sites tell the page to scroll to (0,1) in order to scroll the
- * title bar off the screen. Sometimes, the scroll position is set before
- * the page finishes loading. Rather than scrolling while the page is still
- * loading, keep track of the URL and new scroll position so we can perform
- * the scroll once the page finishes loading.
- */
- private String mPageThatNeedsToSlideTitleBarOffScreen;
-
- /**
- * The destination Y scroll position to be used when the page finishes
- * loading. See mPageThatNeedsToSlideTitleBarOffScreen.
- */
- private int mYDistanceToSlideTitleOffScreen;
-
- // scale from content to view coordinates, and pin
- // return true if pin caused the final x/y different than the request cx/cy,
- // and a future scroll may reach the request cx/cy after our size has
- // changed
- // return false if the view scroll to the exact position as it is requested,
- // where negative numbers are taken to mean 0
- private boolean setContentScrollTo(int cx, int cy) {
- if (mDrawHistory) {
- // disallow WebView to change the scroll position as History Picture
- // is used in the view system.
- // One known case where this is called is that WebCore tries to
- // restore the scroll position. As history Picture already uses the
- // saved scroll position, it is ok to skip this.
- return false;
- }
- int vx;
- int vy;
- if ((cx | cy) == 0) {
- // If the page is being scrolled to (0,0), do not add in the title
- // bar's height, and simply scroll to (0,0). (The only other work
- // in contentToView_ is to multiply, so this would not change 0.)
- vx = 0;
- vy = 0;
- } else {
- vx = contentToViewX(cx);
- vy = contentToViewY(cy);
- }
-// Log.d(LOGTAG, "content scrollTo [" + cx + " " + cy + "] view=[" +
-// vx + " " + vy + "]");
- // Some mobile sites attempt to scroll the title bar off the page by
- // scrolling to (0,1). If we are at the top left corner of the
- // page, assume this is an attempt to scroll off the title bar, and
- // animate the title bar off screen slowly enough that the user can see
- // it.
- if (cx == 0 && cy == 1 && getScrollX() == 0 && getScrollY() == 0
- && getTitleHeight() > 0) {
- // FIXME: 100 should be defined somewhere as our max progress.
- if (getProgress() < 100) {
- // Wait to scroll the title bar off screen until the page has
- // finished loading. Keep track of the URL and the destination
- // Y position
- mPageThatNeedsToSlideTitleBarOffScreen = getUrl();
- mYDistanceToSlideTitleOffScreen = vy;
- } else {
- pinScrollTo(vx, vy, true, SLIDE_TITLE_DURATION);
- }
- // Since we are animating, we have not yet reached the desired
- // scroll position. Do not return true to request another attempt
- return false;
- }
- pinScrollTo(vx, vy, false, 0);
- // If the request was to scroll to a negative coordinate, treat it as if
- // it was a request to scroll to 0
- if ((getScrollX() != vx && cx >= 0) || (getScrollY() != vy && cy >= 0)) {
- return true;
- } else {
- return false;
- }
- }
-
// scale from content to view coordinates, and pin
- private void spawnContentScrollTo(int cx, int cy) {
+ private void contentScrollTo(int cx, int cy, boolean animate) {
if (mDrawHistory) {
// disallow WebView to change the scroll position as History Picture
// is used in the view system.
return;
}
- int vx = contentToViewDimension(cx - mScrollOffset.x);
- int vy = contentToViewDimension(cy - mScrollOffset.y);
- pinScrollBy(vx, vy, true, 0);
+ int vx = contentToViewX(cx);
+ int vy = contentToViewY(cy);
+ pinScrollTo(vx, vy, animate, 0);
}
/**
@@ -7427,11 +7338,7 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc
}
}
final Point p = (Point) msg.obj;
- if (msg.arg1 == 1) {
- spawnContentScrollTo(p.x, p.y);
- } else {
- setContentScrollTo(p.x, p.y);
- }
+ contentScrollTo(p.x, p.y, msg.arg1 == 1);
break;
}
case UPDATE_ZOOM_RANGE: {
@@ -8072,7 +7979,7 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc
int scrollX = viewState.mShouldStartScrolledRight
? getContentWidth() : viewState.mScrollX;
int scrollY = viewState.mScrollY;
- setContentScrollTo(scrollX, scrollY);
+ contentScrollTo(scrollX, scrollY, false);
if (!mDrawHistory) {
// As we are on a new page, hide the keyboard
hideSoftKeyboard();