Closed Bug 1965186 Opened 1 year ago Closed 1 year ago

Intermittent remoteAsyncEvents TEST-UNEXPECTED-TIMEOUT | /dom/events/scrolling/scroll-cross-origin-iframes.html | Verify sibling cross-origin iframes can wheel-scroll. - Test timed out

Categories

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

defect

Tracking

()

RESOLVED FIXED
141 Branch
Tracking Status
firefox141 --- fixed

People

(Reporter: whimboo, Assigned: hiro)

References

(Blocks 1 open bug)

Details

Attachments

(1 external file)

Even with bug 1848957 fixed and now dispatching widget events for wheel scroll through Marionette this particular test still times out. I did a quick test and noticed that when synthesizing a wheel scroll for whether frame 1 or frame 2 it works. But synthesizing to both of them in that loop makes the test to timeout because we do not get a scrollend event for the second frame. Instead the scrolling seems to be performed in the first frame again for a second time.

To see the issue run the following command:

mach wpt --setpref="remote.log.truncate=false" --setpref="remote.log.level=Trace" --setpref="remote.events.async.wheel.enabled=true" testing/web-platform/tests/dom/events/scrolling/scroll-cross-origin-iframes.html

Dan, could you maybe have a look?

Flags: needinfo?(drobertson)

Actually adding a sleep of >500ms before synthesizing the seconds event to the other frame or waiting this amount of time before returning from .scroll() fixes the issue. As such I think this will as well depend on bug 1963550.

Depends on: 1963550
Flags: needinfo?(drobertson)

It may be related to the mousewheel.transaction.timeout value which we set to 500ms for the wpt tests under /dom/events/scrolling/.

Hiro will take a look.

Flags: needinfo?(hikezoe.birchill)

(In reply to Henrik Skupin [:whimboo][⌚️UTC+2] from comment #2)

It may be related to the mousewheel.transaction.timeout value which we set to 500ms for the wpt tests under /dom/events/scrolling/.

Hiro will take a look.

Exactly what I was thinking. Wheel transactions work across iframes. To confirm you could run with dom.event.wheel-event-groups.enabled=false. I'll double check this tomorrow.

Flags: needinfo?(hikezoe.birchill)

Okay, so As Henrik pointed out Marionette tries to end the active wheel transition via calling ChromeUtils.endWheelTransaction, but it does just try to end the transaction on the main-thread.

We need to invoke WheelBlockState::EndTransaction.

This is indeed an issue in APZ.

Severity: -- → S2
Component: DOM: Events → Panning and Zooming
Priority: -- → P2
Severity: S2 → S3

A caveat here is that even though ChromeUtils.endWheelTransaction is a
test-only API, PWebRenderBridge.EndWheelTransaction IPC call can not be
sync because it ends up deferring the ending the transaction task to the
controller thread.

Assignee: nobody → hikezoe.birchill
Status: NEW → ASSIGNED
See Also: → 1963550
Pushed by hikezoe.birchill@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/388c2bdd14af End the wheel transaction for APZ in ChromeUtils::EndWheelTransaction as well as the transaction on the main-thread. r=whimboo,botond,ipc-reviewers,webdriver-reviewers,nika
Status: ASSIGNED → RESOLVED
Closed: 1 year ago
Resolution: --- → FIXED
Target Milestone: --- → 141 Branch
No longer depends on: 1963550
QA Whiteboard: [qa-triage-done-c142/b141]
Blocks: 2031853
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: