• jdduke's avatar
    Allow repeated handler removal/addition with the TouchEventQueue · c883176f
    jdduke authored
    A valid scenario, observed in the wild, is a touchstart handler removing
    itself and adding a touchmove handler. If those are the only touch
    handlers on the document, the renderer will forward two distinct handler
    existence notifications to the browser. This causes the TouchEventQueue
    to effectively drop the remainder of the touch sequence, even though the
    element targetted by the touchstart now has a touchmove.
    
    Fix this scenario by making the TouchEventQueue effectively idempotent
    to repeated addition and removal of touch handlers. In practice, this
    means simplifying its statefulness and instead relying on the existing
    pointer id state map to determine whether to forward touches for the
    remainder of the sequence.
    
    BUG=412723
    
    Review URL: https://codereview.chromium.org/586553002
    
    Cr-Commit-Position: refs/heads/master@{#296205}
    c883176f
touch_event_queue.cc 28.3 KB