Open Bug 1311505 Opened 8 years ago Updated 2 years ago

invisible element prevents scrollwheel from working with multiprocess enabled

Categories

(Core :: Panning and Zooming, defect, P3)

48 Branch
defect

Tracking

()

Tracking Status
firefox49 --- wontfix
firefox50 --- wontfix
firefox51 --- wontfix
firefox52 --- wontfix
firefox53 --- wontfix
firefox54 --- fix-optional
firefox55 --- fix-optional

People

(Reporter: zaid, Unassigned)

References

()

Details

(Keywords: multiprocess, regression, Whiteboard: [gfx-noted])

Attachments

(3 files)

User Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:51.0) Gecko/20100101 Firefox/51.0
Build ID: 20161019004013

Steps to reproduce:

1. Make sure multiprocess is enabled
2. Sign into sandglaz.com (sample account username: demo@sandglaz.com, password: demopassword)
3. Try to scroll the project list using the scroll gesture.


Actual results:

If the mouse is on the leftmost edge, it does scroll. If it is in the center of the project list, it doesn't scroll. However the scroll gesture makes the scrollbars appear, and they can be dragged to scroll the page. 

This only occurs if multiprocess is enabled.


Expected results:

The element should have scrolled.
I can reproduce on Windows10 Nightly52.0a1.
Status: UNCONFIRMED → NEW
Ever confirmed: true
Keywords: multiprocess
Product: Firefox → Core
Attached file html (For the record)
Component: Untriaged → Panning and Zooming
Thanks, I'll take a look (probably on Friday since I'll be off tomorrow).
Assignee: nobody → bugmail
Flags: needinfo?(bugmail)
So it looks like the page has touch listeners somewhere on the root document or document element. Prior to bug 1203140, we would mark the entire layer tree with the force-dispatch-to-content flag so that the hit-testing would go through the main thread. After bug 1203140, we don't set that flag any more (because we ignore the touch listeners on devices that don't have touch support). The compositor hit-test finds a different layer than the main-thread hit-test would have, and this results in the thing not scrolling properly.

This is a case of bug 1203140 exposing a pre-existing problem in the compositor hit-testing code, so we should fix the compositor hit-testing bug. I'll keep digging.
This might be an issue with generating the correct clip rects in the layer tree.

First, there's a <div id="sidebar"> which contains the left sidebar (the thing we're trying to scroll). That div is position:fixed with z-index:0.

Later in the document, as a sibling of the sidebar, there's a <div id="grid_show"> which is also position:fixed but has z-index:100. The grid would ordinarily sit on top of the sidebar, but it has a translateX(300) transform applied, so it's shifted over to the right.

Now, the contents of the grid expand beyond the visible bounds of the grid. That is, somewhere inside the grid, there is an element <div class="vertical-scroll column single-day past">, which, if it weren't clipped by the grid, would sit on top of the sidebar (minus some pixels at the top of the sidebar). The event regions for this element are generated and pushed over to the compositor as part of the grid's layer, and the grid's layer sits at a higher z-index than the sidebar, so it gets hit first. It seems to me that there should be some sort of clip on the grid's layer that prevents this from happening. Or the event regions should be getting clipped on the layout side somewhere. Markus, any thoughts?

I'm attaching the display list and layer tree dump for the page. The layer at 0x7f0544d96c00 is the one that is stealing the input, because the event regions at 0x7f0545606020 are leaking out. The display items at 0x7f0545712be8 and 0x7f0545712a28 are for the position:fixed and transform:translateX(300) on the grid.
Flags: needinfo?(mstange)
Dropping stale needinfo. As this is clip-related we might as well wait until bug 1298218 is landed and then see if it still happens.
Depends on: 1298218
Flags: needinfo?(mstange)
Priority: -- → P3
Whiteboard: [gfx-noted]
Assignee: bugmail → nobody
Version: 49 Branch → 48 Branch
(In reply to Kartikaya Gupta (email:kats@mozilla.com) from comment #6)
> Or the event regions should be
> getting clipped on the layout side somewhere.

This sounds like the right thing to do, but I'm a bit surprised if we didn't do that already somewhere, or at least tried to.
Attached file not a testcase
I've tried to create a testcase based on your description of the problem but it doesn't seem to reproduce the bug.
The URL field of the bug has a saved copy of the original page. I can try to reduce it down to a minimal test case if that would help.
Kats, it looks like we've spent a couple of releases opting not to fix this.  Should we just mark this fix-optional for 54 and officially classify this bug as a backlog bug?
Flags: needinfo?(bugmail)
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: