Merge change 26148 into eclair
* changes:
Use icon URI as icon cache key in search dialog
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java
index fb33561..b378553 100644
--- a/core/java/android/webkit/WebView.java
+++ b/core/java/android/webkit/WebView.java
@@ -420,6 +420,7 @@
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
private Scroller mScroller;
private boolean mWrapContent;
@@ -2419,7 +2420,6 @@
private boolean pinScrollBy(int dx, int dy, boolean animate, int animationDuration) {
return pinScrollTo(mScrollX + dx, mScrollY + dy, animate, animationDuration);
}
-
// helper to pin the scrollTo parameters (already in view coordinates)
// returns true if the scroll was changed
private boolean pinScrollTo(int x, int y, boolean animate, int animationDuration) {
@@ -2431,15 +2431,6 @@
if ((dx | dy) == 0) {
return false;
}
- // By this point we have added in the title bar's height. If the site
- // is trying to scroll to the top of the page, scroll it to the top
- // of the WebView including showing the title bar.
- // mobile sites prefer to scroll to (0, 1), thus the + 1 below
- if (getVisibleTitleHeight() > 0 && x == 0
- && y <= getTitleHeight() + 1) {
- y = 0;
- animate = false;
- }
if (animate) {
// Log.d(LOGTAG, "startScroll: " + dx + " " + dy);
mScroller.startScroll(mScrollX, mScrollY, dx, dy,
@@ -2502,6 +2493,17 @@
int 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,0) or (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 && mScrollX == 0 && mScrollY == 0) {
+ 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