Closed Bug 1888946 Opened 11 months ago Closed 7 months ago

Do not terminate a wheel transaction when scrolling over an out of process iframe - scroll wheel

Categories

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

defect

Tracking

()

RESOLVED FIXED
130 Branch
Tracking Status
firefox130 --- fixed

People

(Reporter: dlrobertson, Assigned: dlrobertson)

References

Details

(Whiteboard: [apz-wheelevents] )

Attachments

(1 file)

Bug 1863194 will fix the case where we scroll over an iframe and will add a test for scrolling over an out of process iframe. Ensure that the wheel transaction is still used when scrolling over an out of process iframe.

Summary: Do not terminate a whell transaction when scrolling over an out of process iframe → Do not terminate a wheel transaction when scrolling over an out of process iframe
Whiteboard: [apz-needsdiscussion]

Adding to diagnosis backlog as discussed during our meeting.

Whiteboard: [apz-needsdiscussion] → [apz-needsdiagnosis]

I would say this is similar to bug 1882168, we deliver wheel events into the out of process iframe. Chrome doesn't deliver wheel events in the test case in bug bug 1863194 comment 6.

The severity field is not set for this bug.
:botond, could you have a look please?

For more information, please visit BugBot documentation.

Flags: needinfo?(botond)

Like the parent bug, I think this is a S3/P3.

Severity: -- → S3
Flags: needinfo?(botond)
Priority: -- → P3
Whiteboard: [apz-needsdiagnosis] → [apz-wheelevents]

Problem

Currently, the wheel event transaction is stored as a static variable here. If the static variable is non-null, a transaction is present, and the stored event target will be used for any wheel events we need to fire. This doesn't work for cases where the topmost-event-target is in an out-of-process iframe (e.g. the map seen at https://agriculture.canada.ca/en/agricultural-production/weather/canadian-drought-monitor).

Possible Solution

In order to determine the correct wheel transaction for an out-of-process iframe I think we'd need to determine that a couple things. The wheel event transaction target could no longer be a static variable owned by the WheelTransaction class, or maybe each BrowserParent should own a WheelTransaction. I think this would need to live in the BrowserParent. Similar to sFocus, we could maintain a static variable in BrowserParent, that we update from APZ when wheel events are handled by APZ.

Ensure that weel events are sent to the content process for the layers
id of the current APZ wheel transaction. The corresponding content
process should also have a content side wheel transaction that will
ensure that content that is scrolled over cannot halt a user scroll with
preventDefault on a wheel event listener.

Assignee: nobody → drobertson
Status: NEW → ASSIGNED
See Also: → 1901340
See Also: 1901340
See Also: → 1901337

I filed bug 1901337 for what looks like the same problem with trackpad scrolling (thanks Alice0775 White for linking the bug). I tested the current patch using the bug 1901337 test case and the problem was still reproducible with the trackpad. I couldn't reproduce the problem with the mouse wheel with the patch though.

Blocks: 1902017
Summary: Do not terminate a wheel transaction when scrolling over an out of process iframe → Do not terminate a wheel transaction when scrolling over an out of process iframe - scroll wheel
Blocks: 1899921
Pushed by drobertson@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/23c4134cc01b Update the event layers id to that of the APZ wheel transaction. r=botond
Duplicate of this bug: 1864884

Backed out for causing build bustages in InputBlockState.h.

  • Backout link
  • Push with failures
  • Failure Log
  • Failure line: /builds/worker/checkouts/gecko/gfx/layers/apz/src/InputBlockState.h(277,60): error: member access into incomplete type 'const AsyncPanZoomController'
Flags: needinfo?(drobertson)

Posted the update to fix the backout reason

Flags: needinfo?(drobertson)
Pushed by drobertson@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/1b83813dee99 Update the event layers id to that of the APZ wheel transaction. r=botond
Status: ASSIGNED → RESOLVED
Closed: 7 months ago
Resolution: --- → FIXED
Target Milestone: --- → 130 Branch
Regressions: 1908801
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: