• Sahel Sharify's avatar
    Do not bubble GFS events from oopif. · dc59b447
    Sahel Sharify authored
    With browser side fling instead of queuing a GFS in gesture event queue
    the fling controller processes the event immediately. It means that it is
    possible to process the GFS before arrival of the GSB's ack. This behavior
    does not cause any issues since after processing the GFS event the fling
    controller starts to generate GSU events at every begin frame. Since the
    generated GSU events are queued in gesture event queue they will wait for
    the ack of the GSB before getting processed.
    
    The only issue with the logic above is when we are bubbling GFS:
    It is possible that the fling controller processes the GFS before the
    ack of the GSB is arrived. In this case we won't bubble the GFS since
    we only bubble the rest of the scroll events in a sequence only when
    the GSB of the sequence is bubbled.
    
    This cl changes the scroll bubbling logic to avoid GFS bubbling. With
    this change the GFS won't get bubbled and the fling controller of the
    oopif will generate GSU events which will get bubbled. When the bubbling
    target did not consume a generated GSU event it will tell the oopif's fling
    controller (via RWH_input_event_router) to stop flinging.
    
    The first three tests are not new. They just show that the flinging on
    the oopif still causes the parent to scroll when we are bubbling scroll.
    The last test shows that the child's fling controller stops flinging when
    the parent's renderer does not consumed the generated GSUs that are bubbled.
    
    I also changed the following tests to be browser tests since instead of the
    fling controller cancelling the fling when generated GSUs are not consumed
    the RWHV_* calls stop fling. This change is necessary since the RWHV_* knows
    when the scroll is getting bubbled but the fling controller does not:
    -Early[Touchpad|Touchscreen]FlingCancelationOnInertialGSUAckNotConsumed
    
    BrowserSideFlingBrowserTest.TouchscreenInertialGSUsBubblesFromOOPIF,
    BrowserSideFlingBrowserTest.InertialGSEGetsBubbledFromOOPIF,
    BrowserSideFlingBrowserTest.InertialGSUBubblingStopsWhenParentCannotScroll
    
    Bug: 900357
    Test: BrowserSideFlingBrowserTest.TouchpadInertialGSUsBubblesFromOOPIF,
    Change-Id: I784aa03b561d0482a95341544133761e40a1917f
    Reviewed-on: https://chromium-review.googlesource.com/c/1308598Reviewed-by: default avatarNavid Zolghadr <nzolghadr@chromium.org>
    Reviewed-by: default avatarKen Buchanan <kenrb@chromium.org>
    Reviewed-by: default avatarFady Samuel <fsamuel@chromium.org>
    Reviewed-by: default avatarKevin McNee <mcnee@chromium.org>
    Reviewed-by: default avatarCharlie Reis <creis@chromium.org>
    Commit-Queue: Sahel Sharify <sahel@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#607726}
    dc59b447
fling_controller_unittest.cc 19.8 KB