diff options
author | wangxianzhu@chromium.org <wangxianzhu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-12 00:20:34 +0000 |
---|---|---|
committer | wangxianzhu@chromium.org <wangxianzhu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-12 00:20:34 +0000 |
commit | d28b8a30108e6dd5463e8ea182c78089da5a6e41 (patch) | |
tree | 3a89c48f730505dda37aa96d283cf87357cef808 | |
parent | 5229bdbc653e73e08f53511e2544771dcc7bf493 (diff) | |
download | chromium_src-d28b8a30108e6dd5463e8ea182c78089da5a6e41.zip chromium_src-d28b8a30108e6dd5463e8ea182c78089da5a6e41.tar.gz chromium_src-d28b8a30108e6dd5463e8ea182c78089da5a6e41.tar.bz2 |
Merge 205322 "Fix stack overflow in confirmTouchEvent()"
> Fix stack overflow in confirmTouchEvent()
>
> confirmTouchEvent() may be called synchronously before sendTouchEvent()
> returns. In the PENDING_ACK_ORIGINAL_EVENT state of TouchEventTimeoutHandler,
> the Java stack will overflow if confirmTouchEvent() is called synchronously.
>
> Set state before send the event.
>
> NOTRY=true
> BUG=247683
> R=yusufo@chromium.org
> TBR=tedchoc@chromium.org
>
> Review URL: https://chromiumcodereview.appspot.com/16739014
TBR=wangxianzhu@chromium.org
Review URL: https://codereview.chromium.org/16347018
git-svn-id: svn://svn.chromium.org/chrome/branches/1500/src@205683 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | content/public/android/java/src/org/chromium/content/browser/ContentViewGestureHandler.java | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/content/public/android/java/src/org/chromium/content/browser/ContentViewGestureHandler.java b/content/public/android/java/src/org/chromium/content/browser/ContentViewGestureHandler.java index 13919ec..42483bd 100644 --- a/content/public/android/java/src/org/chromium/content/browser/ContentViewGestureHandler.java +++ b/content/public/android/java/src/org/chromium/content/browser/ContentViewGestureHandler.java @@ -206,15 +206,15 @@ class ContentViewGestureHandler implements LongPressDelegate { case PENDING_ACK_ORIGINAL_EVENT: // The ACK to the original event is received after timeout. // Inject a touchcancel event. + mPendingAckState = PENDING_ACK_CANCEL_EVENT; mMotionEventDelegate.sendTouchEvent(mEventTime + TOUCH_EVENT_TIMEOUT, TouchPoint.TOUCH_EVENT_TYPE_CANCEL, mTouchPoints); mTouchPoints = null; - mPendingAckState = PENDING_ACK_CANCEL_EVENT; return true; case PENDING_ACK_CANCEL_EVENT: // The ACK to the injected touchcancel event is received. - drainAllPendingEventsUntilNextDown(); mPendingAckState = PENDING_ACK_NONE; + drainAllPendingEventsUntilNextDown(); return true; default: assert false : "Never reached"; |