Skip to content
  • Kartikaya Gupta's avatar
    Bug 1465935 - Fix hit-testing for fixed-pos items inside iframes. r=mstange · 9b664db1
    Kartikaya Gupta authored
    Without this patch, the scrollId for display items inside a fixed-pos
    item end as the ASR of the item. In the case of fixed-pos items that are
    inside iframes, the ASR is the outer document's root scrollframe. This
    means that e.g. wheel-scrolling while over a fixed-pos item inside an
    iframe ends up scrolling the outer document's root scrollframe instead
    of the iframe's root scrollframe.
    
    In the non-WR codepath, there some APZ machinery that walks up in the
    HitTestingTreeNode tree from the hit result, looking to see if that node
    has a fixed-pos ancestor, and if so, uses the fixed-pos item's target
    APZ as the real hit result. This machinery doesn't exist in WR, because
    we don't use the HitTestingTreeNode tree for hit-testing in APZ.
    Instead, we need to make sure that the item tag for those display items
    already has the appropriate scrollid set.
    
    This patch accomplishes this by introducing a new RAII class that is
    pushed into the wr::DisplayListBuilder while we are building display
    items inside a nsDisplayFixedPosition, and allows the desired scroll id to
    be set on the hit-testing display items.
    
    This behaviour is exercised by test_group_wheelevents, which can now be
    enabled with this fix.
    
    MozReview-Commit-ID: L2erPVzJeql
    
    --HG--
    extra : rebase_source : 1db630513cb1dc16d4e38649812e81f62c8da99c
    9b664db1