diff options
| author | 2011-03-08 16:00:30 -0800 | |
|---|---|---|
| committer | 2011-03-08 16:01:37 -0800 | |
| commit | ae9d2640f3502eae7bd5bed2cfc7d8f190d1fcb4 (patch) | |
| tree | 7d13da1f2871bea526e47dda4c112537d80fd979 | |
| parent | 949d0c8c384437d92fc1432b750da6da59df1fa7 (diff) | |
Bug 3509417 - Refine touch event serialization
Fix an issue with single-touch events handled by webkit.
Change-Id: Ief4e9ec91cda7dd3940241c684d0907cb8c9890f
| -rw-r--r-- | core/java/android/webkit/WebView.java | 21 | ||||
| -rw-r--r-- | core/java/android/webkit/WebViewCore.java | 1 |
2 files changed, 12 insertions, 10 deletions
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java index 1316235670a5..58e4d9a81c65 100644 --- a/core/java/android/webkit/WebView.java +++ b/core/java/android/webkit/WebView.java @@ -5571,7 +5571,7 @@ public class WebView extends AbsoluteLayout ted.mReprocess = mDeferTouchProcess; ted.mNativeLayer = nativeScrollableLayer( contentX, contentY, ted.mNativeLayerRect, null); - ted.mDontEnqueueResult = true; + ted.mSequence = mTouchEventQueue.nextTouchSequence(); mWebViewCore.sendMessage(EventHub.TOUCH_EVENT, ted); if (mDeferTouchProcess) { // still needs to set them for compute deltaX/Y @@ -5618,7 +5618,7 @@ public class WebView extends AbsoluteLayout ted.mReprocess = mDeferTouchProcess; ted.mNativeLayer = mScrollingLayer; ted.mNativeLayerRect.set(mScrollingLayerRect); - ted.mDontEnqueueResult = true; + ted.mSequence = mTouchEventQueue.nextTouchSequence(); mWebViewCore.sendMessage(EventHub.TOUCH_EVENT, ted); mLastSentTouchTime = eventTime; if (mDeferTouchProcess) { @@ -5800,7 +5800,7 @@ public class WebView extends AbsoluteLayout ted.mReprocess = mDeferTouchProcess; ted.mNativeLayer = mScrollingLayer; ted.mNativeLayerRect.set(mScrollingLayerRect); - ted.mDontEnqueueResult = true; + ted.mSequence = mTouchEventQueue.nextTouchSequence(); mWebViewCore.sendMessage(EventHub.TOUCH_EVENT, ted); } mLastTouchUpTime = eventTime; @@ -5823,7 +5823,7 @@ public class WebView extends AbsoluteLayout ted.mNativeLayer = nativeScrollableLayer( contentX, contentY, ted.mNativeLayerRect, null); - ted.mDontEnqueueResult = true; + ted.mSequence = mTouchEventQueue.nextTouchSequence(); mWebViewCore.sendMessage(EventHub.TOUCH_EVENT, ted); } else if (mPreventDefault != PREVENT_DEFAULT_YES){ mZoomManager.handleDoubleTap(mLastTouchX, mLastTouchY); @@ -6041,7 +6041,7 @@ public class WebView extends AbsoluteLayout ted.mAction = MotionEvent.ACTION_CANCEL; ted.mNativeLayer = nativeScrollableLayer( x, y, ted.mNativeLayerRect, null); - ted.mDontEnqueueResult = true; + ted.mSequence = mTouchEventQueue.nextTouchSequence(); mWebViewCore.sendMessage(EventHub.TOUCH_EVENT, ted); mPreventDefault = PREVENT_DEFAULT_IGNORE; } @@ -7525,7 +7525,7 @@ public class WebView extends AbsoluteLayout ted.mNativeLayer = nativeScrollableLayer( ted.mPoints[0].x, ted.mPoints[0].y, ted.mNativeLayerRect, null); - ted.mDontEnqueueResult = true; + ted.mSequence = mTouchEventQueue.nextTouchSequence(); mWebViewCore.sendMessage(EventHub.TOUCH_EVENT, ted); } else if (mPreventDefault != PREVENT_DEFAULT_YES) { mTouchMode = TOUCH_DONE_MODE; @@ -7741,9 +7741,12 @@ public class WebView extends AbsoluteLayout break; } TouchEventData ted = (TouchEventData) msg.obj; - if (!ted.mDontEnqueueResult) { - mTouchEventQueue.enqueueTouchEvent(ted); - } + + // WebCore is responding to us; remove pending timeout. + // It will be re-posted when needed. + removeMessages(PREVENT_DEFAULT_TIMEOUT); + + mTouchEventQueue.enqueueTouchEvent(ted); break; case REQUEST_KEYBOARD: diff --git a/core/java/android/webkit/WebViewCore.java b/core/java/android/webkit/WebViewCore.java index f367b93820de..b920a30fd2a9 100644 --- a/core/java/android/webkit/WebViewCore.java +++ b/core/java/android/webkit/WebViewCore.java @@ -827,7 +827,6 @@ final class WebViewCore { Rect mNativeLayerRect = new Rect(); long mSequence; boolean mNativeResult; - boolean mDontEnqueueResult; } static class GeolocationPermissionsData { |