From 0d03b91407aecab52d0fe8b6f849a0398878a2c1 Mon Sep 17 00:00:00 2001 From: Grace Kloba Date: Sun, 27 Sep 2009 17:46:31 -0700 Subject: [PATCH] Before we send VIEW_SIZE_CHANGED after first layout, we should remove VIEW_SIZE_CHANGED in the queue if there is any as we are going to send the message in the front of the queue. Fix http://b/issue?id=2133222 --- core/java/android/webkit/WebViewCore.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/core/java/android/webkit/WebViewCore.java b/core/java/android/webkit/WebViewCore.java index 53024d69f40c7..8b6746efcd794 100644 --- a/core/java/android/webkit/WebViewCore.java +++ b/core/java/android/webkit/WebViewCore.java @@ -1980,6 +1980,13 @@ final class WebViewCore { data.mTextWrapWidth = data.mWidth; data.mScale = -1.0f; data.mIgnoreHeight = false; + // send VIEW_SIZE_CHANGED to the front of the queue so that we can + // avoid pushing the wrong picture to the WebView side. If there is + // a VIEW_SIZE_CHANGED in the queue, probably from WebView side, + // ignore it as we have a new size. If we leave VIEW_SIZE_CHANGED + // in the queue, as mLastHeightSent has been updated here, we may + // miss the requestLayout in WebView side after the new picture. + mEventHub.removeMessages(EventHub.VIEW_SIZE_CHANGED); mEventHub.sendMessageAtFrontOfQueue(Message.obtain(null, EventHub.VIEW_SIZE_CHANGED, data)); } else if (mSettings.getUseWideViewPort()) { @@ -2001,6 +2008,9 @@ final class WebViewCore { data.mTextWrapWidth = Math.round(webViewWidth / mRestoreState.mTextWrapScale); data.mIgnoreHeight = false; + // send VIEW_SIZE_CHANGED to the front of the queue so that we + // can avoid pushing the wrong picture to the WebView side. + mEventHub.removeMessages(EventHub.VIEW_SIZE_CHANGED); mEventHub.sendMessageAtFrontOfQueue(Message.obtain(null, EventHub.VIEW_SIZE_CHANGED, data)); }