diff options
-rw-r--r-- | core/java/android/webkit/WebView.java | 6 | ||||
-rw-r--r-- | core/java/android/webkit/WebViewCore.java | 13 |
2 files changed, 15 insertions, 4 deletions
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java index adb585d..de0b06d 100644 --- a/core/java/android/webkit/WebView.java +++ b/core/java/android/webkit/WebView.java @@ -3814,6 +3814,8 @@ public class WebView extends AbsoluteLayout } else { mTouchMode = TOUCH_INIT_MODE; mPreventDrag = mForwardTouchEvents; + mWebViewCore.sendMessage( + EventHub.UPDATE_FRAME_CACHE_IF_LOADING); if (mLogEvent && eventTime - mLastTouchUpTime < 1000) { EventLog.writeEvent(EVENT_LOG_DOUBLE_TAP_DURATION, (eventTime - mLastTouchUpTime), eventTime); @@ -4681,7 +4683,7 @@ public class WebView extends AbsoluteLayout // mLastTouchX and mLastTouchY are the point in the current viewport int contentX = viewToContent((int) mLastTouchX + mScrollX); int contentY = viewToContent((int) mLastTouchY + mScrollY); - int left = nativeGetBlockLeftEdge(contentX, contentY); + int left = nativeGetBlockLeftEdge(contentX, contentY, mActualScale); if (left != NO_LEFTEDGE) { // add a 5pt padding to the left edge. Re-calculate the zoom // center so that the new scroll x will be on the left edge. @@ -5656,5 +5658,5 @@ public class WebView extends AbsoluteLayout private native void nativeUpdatePluginReceivesEvents(); // return NO_LEFTEDGE means failure. private static final int NO_LEFTEDGE = -1; - private native int nativeGetBlockLeftEdge(int x, int y); + private native int nativeGetBlockLeftEdge(int x, int y, float scale); } diff --git a/core/java/android/webkit/WebViewCore.java b/core/java/android/webkit/WebViewCore.java index 8ec8174..2f9e153 100644 --- a/core/java/android/webkit/WebViewCore.java +++ b/core/java/android/webkit/WebViewCore.java @@ -648,6 +648,7 @@ final class WebViewCore { } static final String[] HandlerDebugString = { + "UPDATE_FRAME_CACHE_IF_LOADING", // = 98 "SCROLL_TEXT_INPUT", // = 99 "LOAD_URL", // = 100; "STOP_LOADING", // = 101; @@ -699,6 +700,7 @@ final class WebViewCore { class EventHub { // Message Ids + static final int UPDATE_FRAME_CACHE_IF_LOADING = 98; static final int SCROLL_TEXT_INPUT = 99; static final int LOAD_URL = 100; static final int STOP_LOADING = 101; @@ -805,10 +807,11 @@ final class WebViewCore { @Override public void handleMessage(Message msg) { if (DebugFlags.WEB_VIEW_CORE) { - Log.v(LOGTAG, (msg.what < SCROLL_TEXT_INPUT || msg.what + Log.v(LOGTAG, (msg.what < UPDATE_FRAME_CACHE_IF_LOADING + || msg.what > FREE_MEMORY ? Integer.toString(msg.what) : HandlerDebugString[msg.what - - SCROLL_TEXT_INPUT]) + - UPDATE_FRAME_CACHE_IF_LOADING]) + " arg1=" + msg.arg1 + " arg2=" + msg.arg2 + " obj=" + msg.obj); } @@ -825,6 +828,10 @@ final class WebViewCore { mNativeClass = 0; break; + case UPDATE_FRAME_CACHE_IF_LOADING: + nativeUpdateFrameCacheIfLoading(); + break; + case SCROLL_TEXT_INPUT: nativeScrollFocusedTextInput(msg.arg1, msg.arg2); break; @@ -1938,6 +1945,8 @@ final class WebViewCore { WebView.CLEAR_TEXT_ENTRY).sendToTarget(); } + private native void nativeUpdateFrameCacheIfLoading(); + /** * Scroll the focused textfield to (x, y) in document space */ |