• Jun Mukai's avatar
    Process touch events during the tab-dragging window move · 402ea29b
    Jun Mukai authored
    When the touch events move very quickly on detaching, some
    touch events are already queued, those queued touch events
    aren't processed properly.
    
    - Detach() aren't releasing the capture on the source widget.
      This means those queued touch events are targeted to the
      source widget instead of the moving widget, but the touch
      history is already transferred to the moving widget, which
      makes troubles on gesture recognition. We can release the
      capture on the detach on this specific situation.
    - the recognized gestures are sent to the root window of
      the moving widget and nobody can handle. The new class
      RemainingGestureEventHandler handles them.
    - RemainingGestureEventHandler should not handle events
      originated from ET_TOUCH_CANCELLED -- some test cases
      actually fail if so. ET_TOUCH_CANCELLED can happen internally
      within the browser (like Window::CleanupGestureState()),
      but that's not the intention of this class.
    
    Bug: 943316
    Test: the new test case in interactive_ui_tests
    Change-Id: I679562d7707342874960dd7ff4d70d749f1ad437
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1545113Reviewed-by: default avatarJun Mukai <mukai@chromium.org>
    Reviewed-by: default avatarScott Violet <sky@chromium.org>
    Commit-Queue: Jun Mukai <mukai@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#647789}
    402ea29b
window_tree_host_mus.cc 14.2 KB