Open Bug 1692807 Opened 4 years ago Updated 4 years ago

Investigate how we generate malformed hit testing tree and stop doing it

Categories

(Core :: Panning and Zooming, task)

task

Tracking

()

People

(Reporter: hiro, Unassigned)

References

Details

In bug 1691997, we saw malformed hit testing trees both on https://pdf.wondershare.com/buy/pdfelement-windows.html and https://www.lecho.be/entreprises/general/les-hommes-de-pouvoir-portent-un-brocelet/10168713.html.

In the case of pdfelement-windows case, the tree looks like;

HitTestingTreeNode (0x7f53bec7cd40) APZC (0x7f53bb73a000) g=({ l=0x100000001, p=1, v=3 }) r=({ }) t=([ I ]) c=([0,0,1276,1145])
  HitTestingTreeNode (0x7f53acd2fa60) APZC ((nil)) g=(l=0x100000001) r=({ }) t=([ 1 0; 0 1; 0 74; ]) c=(none)
    HitTestingTreeNode (0x7f53acd2f2e0) APZC ((nil)) g=(l=0x10000000b) r=({ }) t=([ I ]) c=(none)
      HitTestingTreeNode (0x7f53af5435c0) APZC ((nil)) g=(l=0x10000000b) r=({ }) t=([ I ]) c=(none) scrollbar
        HitTestingTreeNode (0x7f53a9ff9200) APZC ((nil)) g=(l=0x10000000b) r=({ }) t=([ I ]) c=(none) scrollbar scrollthumb
      HitTestingTreeNode (0x7f53af2e4a60) APZC (0x7f53acc81000) g=({ l=0x10000000b, p=2, v=3 }) r=({ }) t=([ I ]) c=([0,0,1264,1071])
      HitTestingTreeNode (0x7f53af2e4e20) APZC ((nil)) g=(l=0x10000000b) fixed=3 r=({ }) t=([ I ]) c=(none)
      HitTestingTreeNode (0x7f53a9fd5100) APZC (0x7f53acc81000) g=({ l=0x10000000b, p=2, v=3 }) r=({ }) t=([ I ]) c=([0,0,1264,1071])
      HitTestingTreeNode (0x7f53a9ff9020) APZC ((nil)) g=(l=0x10000000b) fixed=3 r=({ }) t=([ I ]) c=(none)
      HitTestingTreeNode (0x7f53acd2fe20) APZC ((nil)) g=(l=0x10000000b) fixed=3 r=({ }) t=([ I ]) c=(none)
        HitTestingTreeNode (0x7f53aa069200) APZC ((nil)) g=(l=0x10000000b) r=({ }) t=([ 1 0; 0 1; 0 1071; ]) c=(none)
          HitTestingTreeNode (0x7f53af2e4880) APZC (0x7f53acc81000) g=({ l=0x10000000b, p=2, v=3 }) r=({ }) t=([ I ]) c=([0,0,1264,1071])
            HitTestingTreeNode (0x7f53aa069020) APZC ((nil)) g=(l=0x10000000b) r=({ }) t=([ I ]) c=(none)
      HitTestingTreeNode (0x7f53acd2f6a0) APZC ((nil)) g=(l=0x10000000b) fixed=3 r=({ }) t=([ I ]) c=(none)
      HitTestingTreeNode (0x7f53acd2e200) APZC ((nil)) g=(l=0x10000000b) fixed=3 r=({ }) t=([ I ]) c=(none)

In the case of lecho.de, it looks like;

HitTestingTreeNode (0x7f3fdbd5ea60) APZC (0x7f3fdbdd8000) g=({ l=0x100000001, p=1, v=3 }) r=({ }) t=([ I ]) c=([0,0,1280,1609])
  HitTestingTreeNode (0x7f3fca514a60) APZC (0x7f3fca4b0000) g=({ l=0x100000001, p=1, v=5 }) r=({ }) t=([ I ]) c=([284,39,921,67])
  HitTestingTreeNode (0x7f3fcd7e4980) APZC ((nil)) g=(l=0x100000001) r=({ }) t=([ I ]) c=(none)
  HitTestingTreeNode (0x7f3fcbd6df20) APZC ((nil)) g=(l=0x100000001) r=({ }) t=([ 1 0; 0 1; 0 74; ]) c=(none)
    HitTestingTreeNode (0x7f3fcf9c3d40) APZC ((nil)) g=(l=0x10000000d) r=({ }) t=([ I ]) c=(none)
      HitTestingTreeNode (0x7f3fc82974c0) APZC ((nil)) g=(l=0x10000000d) r=({ }) t=([ I ]) c=(none) scrollbar
        HitTestingTreeNode (0x7f3fcd7bcb60) APZC ((nil)) g=(l=0x10000000d) r=({ }) t=([ I ]) c=(none) scrollbar scrollthumb
      HitTestingTreeNode (0x7f3fcf9c37a0) APZC ((nil)) g=(l=0x10000000d) r=({ }) t=([ I ]) c=(none)
        HitTestingTreeNode (0x7f3fcf9c46a0) APZC (0x7f3fcd4e4000) g=({ l=0x10000000d, p=2, v=3 }) r=({ }) t=([ I ]) c=(none)
        HitTestingTreeNode (0x7f3fca53a200) APZC ((nil)) g=(l=0x10000000d) fixed=3 r=({ }) t=([ I ]) c=(none)
          HitTestingTreeNode (0x7f3fca9f5b60) APZC ((nil)) g=(l=0x10000000d) r=({ }) t=([ 1 0; 0 1; 214 -166; ]) c=(none)
            HitTestingTreeNode (0x7f3fca9f55c0) APZC ((nil)) g=(l=0x10000000f) r=({ }) t=([ I ]) c=(none)
              HitTestingTreeNode (0x7f3fc8297880) APZC (0x7f3fc93fe000) g=({ l=0x10000000f, p=3, v=3 }) r=({ }) t=([ I ]) c=([0,0,840,150])
        HitTestingTreeNode (0x7f3fca52f020) APZC (0x7f3fcd4e4000) g=({ l=0x10000000d, p=2, v=3 }) r=({ }) t=([ I ]) c=(none)
        HitTestingTreeNode (0x7f3fca9da020) APZC ((nil)) g=(l=0x10000000d) fixed=3 r=({ }) t=([ I ]) c=(none)
          HitTestingTreeNode (0x7f3fca530880) APZC (0x7f3fcd4e4000) g=({ l=0x10000000d, p=2, v=3 }) r=({ }) t=([ I ]) c=(none)
            HitTestingTreeNode (0x7f3fca52ea60) APZC ((nil)) g=(l=0x10000000d) r=({ }) t=([ I ]) c=(none)
        HitTestingTreeNode (0x7f3fce71a880) APZC ((nil)) g=(l=0x10000000d) fixed=3 r=({ }) t=([ I ]) c=(none)

Both have fixed tree nodes having descendant nodes which have the same scroll id for the fixed target. Botond said it shouldn't happen.

I tried to generate reduced test cases, but the malformed tree doesn't happen on downloaded versions of the sites, and unfortunately it doesn't happen with rr recording.

You need to log in before you can comment on or make changes to this bug.