Loading core/java/android/webkit/WebView.java +16 −9 Original line number Original line Diff line number Diff line Loading @@ -6041,7 +6041,6 @@ public class WebView extends AbsoluteLayout if (shouldForwardTouchEvent()) { if (shouldForwardTouchEvent()) { if (removeEvents) { if (removeEvents) { mWebViewCore.removeMessages(EventHub.TOUCH_EVENT); mWebViewCore.removeMessages(EventHub.TOUCH_EVENT); mTouchEventQueue.ignoreCurrentlyMissingEvents(); } } TouchEventData ted = new TouchEventData(); TouchEventData ted = new TouchEventData(); ted.mIds = new int[1]; ted.mIds = new int[1]; Loading @@ -6058,6 +6057,12 @@ public class WebView extends AbsoluteLayout ted.mSequence = mTouchEventQueue.nextTouchSequence(); ted.mSequence = mTouchEventQueue.nextTouchSequence(); mWebViewCore.sendMessage(EventHub.TOUCH_EVENT, ted); mWebViewCore.sendMessage(EventHub.TOUCH_EVENT, ted); mPreventDefault = PREVENT_DEFAULT_IGNORE; mPreventDefault = PREVENT_DEFAULT_IGNORE; if (removeEvents) { // Mark this after sending the message above; we should // be willing to ignore the cancel event that we just sent. mTouchEventQueue.ignoreCurrentlyMissingEvents(); } } } } } Loading Loading @@ -7251,17 +7256,18 @@ public class WebView extends AbsoluteLayout * been queued will also be processed in their proper order. * been queued will also be processed in their proper order. * * * @param ted Touch data to be processed in order. * @param ted Touch data to be processed in order. * @return true if the event was processed before returning, false if it was just enqueued. */ */ public void enqueueTouchEvent(TouchEventData ted) { public boolean enqueueTouchEvent(TouchEventData ted) { if (ted.mSequence < mLastHandledTouchSequence) { if (ted.mSequence < mLastHandledTouchSequence) { // Stale event and we already moved on; drop it. (Should not be common.) // Stale event and we already moved on; drop it. (Should not be common.) Log.w(LOGTAG, "Stale touch event " + MotionEvent.actionToString(ted.mAction) + Log.w(LOGTAG, "Stale touch event " + MotionEvent.actionToString(ted.mAction) + " received from webcore; ignoring"); " received from webcore; ignoring"); return; return false; } } if (dropStaleGestures(ted.mMotionEvent, ted.mSequence)) { if (dropStaleGestures(ted.mMotionEvent, ted.mSequence)) { return; return false; } } if (mLastHandledTouchSequence + 1 == ted.mSequence) { if (mLastHandledTouchSequence + 1 == ted.mSequence) { Loading @@ -7283,6 +7289,7 @@ public class WebView extends AbsoluteLayout QueuedTouch qd = obtainQueuedTouch().set(ted); QueuedTouch qd = obtainQueuedTouch().set(ted); mTouchEventQueue = mTouchEventQueue == null ? qd : mTouchEventQueue.add(qd); mTouchEventQueue = mTouchEventQueue == null ? qd : mTouchEventQueue.add(qd); } } return true; } } /** /** Loading Loading @@ -7839,11 +7846,11 @@ public class WebView extends AbsoluteLayout } } TouchEventData ted = (TouchEventData) msg.obj; TouchEventData ted = (TouchEventData) msg.obj; if (mTouchEventQueue.enqueueTouchEvent(ted)) { // WebCore is responding to us; remove pending timeout. // WebCore is responding to us; remove pending timeout. // It will be re-posted when needed. // It will be re-posted when needed. removeMessages(PREVENT_DEFAULT_TIMEOUT); removeMessages(PREVENT_DEFAULT_TIMEOUT); } mTouchEventQueue.enqueueTouchEvent(ted); break; break; case REQUEST_KEYBOARD: case REQUEST_KEYBOARD: Loading Loading
core/java/android/webkit/WebView.java +16 −9 Original line number Original line Diff line number Diff line Loading @@ -6041,7 +6041,6 @@ public class WebView extends AbsoluteLayout if (shouldForwardTouchEvent()) { if (shouldForwardTouchEvent()) { if (removeEvents) { if (removeEvents) { mWebViewCore.removeMessages(EventHub.TOUCH_EVENT); mWebViewCore.removeMessages(EventHub.TOUCH_EVENT); mTouchEventQueue.ignoreCurrentlyMissingEvents(); } } TouchEventData ted = new TouchEventData(); TouchEventData ted = new TouchEventData(); ted.mIds = new int[1]; ted.mIds = new int[1]; Loading @@ -6058,6 +6057,12 @@ public class WebView extends AbsoluteLayout ted.mSequence = mTouchEventQueue.nextTouchSequence(); ted.mSequence = mTouchEventQueue.nextTouchSequence(); mWebViewCore.sendMessage(EventHub.TOUCH_EVENT, ted); mWebViewCore.sendMessage(EventHub.TOUCH_EVENT, ted); mPreventDefault = PREVENT_DEFAULT_IGNORE; mPreventDefault = PREVENT_DEFAULT_IGNORE; if (removeEvents) { // Mark this after sending the message above; we should // be willing to ignore the cancel event that we just sent. mTouchEventQueue.ignoreCurrentlyMissingEvents(); } } } } } Loading Loading @@ -7251,17 +7256,18 @@ public class WebView extends AbsoluteLayout * been queued will also be processed in their proper order. * been queued will also be processed in their proper order. * * * @param ted Touch data to be processed in order. * @param ted Touch data to be processed in order. * @return true if the event was processed before returning, false if it was just enqueued. */ */ public void enqueueTouchEvent(TouchEventData ted) { public boolean enqueueTouchEvent(TouchEventData ted) { if (ted.mSequence < mLastHandledTouchSequence) { if (ted.mSequence < mLastHandledTouchSequence) { // Stale event and we already moved on; drop it. (Should not be common.) // Stale event and we already moved on; drop it. (Should not be common.) Log.w(LOGTAG, "Stale touch event " + MotionEvent.actionToString(ted.mAction) + Log.w(LOGTAG, "Stale touch event " + MotionEvent.actionToString(ted.mAction) + " received from webcore; ignoring"); " received from webcore; ignoring"); return; return false; } } if (dropStaleGestures(ted.mMotionEvent, ted.mSequence)) { if (dropStaleGestures(ted.mMotionEvent, ted.mSequence)) { return; return false; } } if (mLastHandledTouchSequence + 1 == ted.mSequence) { if (mLastHandledTouchSequence + 1 == ted.mSequence) { Loading @@ -7283,6 +7289,7 @@ public class WebView extends AbsoluteLayout QueuedTouch qd = obtainQueuedTouch().set(ted); QueuedTouch qd = obtainQueuedTouch().set(ted); mTouchEventQueue = mTouchEventQueue == null ? qd : mTouchEventQueue.add(qd); mTouchEventQueue = mTouchEventQueue == null ? qd : mTouchEventQueue.add(qd); } } return true; } } /** /** Loading Loading @@ -7839,11 +7846,11 @@ public class WebView extends AbsoluteLayout } } TouchEventData ted = (TouchEventData) msg.obj; TouchEventData ted = (TouchEventData) msg.obj; if (mTouchEventQueue.enqueueTouchEvent(ted)) { // WebCore is responding to us; remove pending timeout. // WebCore is responding to us; remove pending timeout. // It will be re-posted when needed. // It will be re-posted when needed. removeMessages(PREVENT_DEFAULT_TIMEOUT); removeMessages(PREVENT_DEFAULT_TIMEOUT); } mTouchEventQueue.enqueueTouchEvent(ted); break; break; case REQUEST_KEYBOARD: case REQUEST_KEYBOARD: Loading