Closed Bug 2008277 Opened 4 months ago Closed 3 months ago

Pointerout and Mouseout behave differently over 3rd-party iframes (Pointerout is unreliable)

Categories

(Core :: DOM: UI Events & Focus Handling, defect)

Firefox 146
defect

Tracking

()

RESOLVED FIXED
149 Branch
Tracking Status
firefox-esr115 --- wontfix
firefox-esr140 --- wontfix
firefox146 --- wontfix
firefox147 --- wontfix
firefox148 --- wontfix
firefox149 --- fixed

People

(Reporter: paulrhomberg01, Assigned: edgar)

References

(Blocks 1 open bug, Regression)

Details

(Keywords: nightly-community, regression)

Attachments

(6 files)

Attached file index.html

User Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:146.0) Gecko/20100101 Firefox/146.0

Steps to reproduce:

I created a <div> above a third party iframe and attached an event listener for "pointerout". Then I noticed that it is unreliable compared to mouseout with this setup in Firefox.

In Google Chrome, this works reliably and Pointerout triggers 100% of the time.

Actual results:

When you move the cursor out of an element placed above a 3rd-party iframe, pointerout only triggers rarely (maybe ~10% of the time) while mouseout works reliably.

Expected results:

Pointerout should trigger reliably. Attached is a demo html file.

The Bugbug bot thinks this bug should belong to the 'Core::DOM: Core & HTML' component, and is moving the bug to that component. Please correct in case you think the bot is wrong.

Component: Untriaged → DOM: Core & HTML
Product: Firefox → Core

:nika, since you are the author of the regressor, bug 1732358, could you take a look? Also, could you set the severity field?

For more information, please visit BugBot documentation.

Flags: needinfo?(nika)
Regressed by: 1966551

The bug has a release status flag that shows some version of Firefox is affected, thus it will be considered confirmed.

Status: UNCONFIRMED → NEW
Ever confirmed: true

This appears to be some kind of focus/input behaviour change which only started happening after Fission was enabled.

Redirecting to masayuki who may have more context as to what component this needs to be directed to.

Flags: needinfo?(nika) → needinfo?(masayuki)

Looks like it's truly our bug. Unfortunately I don't have much time for this for a while. I'll be back later, or, edgar might be interested into this.

Severity: -- → S3
Component: DOM: Core & HTML → DOM: UI Events & Focus Handling
Flags: needinfo?(masayuki)
OS: Unspecified → All
Hardware: Unspecified → All

We do generate the pointerout event, but that happens when you stop moving the cursor on the iframe.
So I think this is something about the timing of generating the pointer boundary event. For mouse event, we generate additional IPC to notify the processes about the mouse leaving, see https://searchfox.org/firefox-main/rev/8e6b6cb1dd0fdd9838e2359219e2b8d3b84490b2/dom/events/EventStateManager.cpp#2154-2200, I guess target process doesn't generate the pointer boundary event from that for some reason.

Assignee: nobody → echen

I also noticed that when cursor moves to frame that lives in different process, we dispatch the mouseover event first then the pointerover event, whereas other browsers dispatch pointerover event first. I think this is also something related to the additional IPC that is to notify about the mouse entering.

Blocks: pointerevent
Pushed by echen@mozilla.com: https://github.com/mozilla-firefox/firefox/commit/f79f6d094333 https://hg.mozilla.org/integration/autoland/rev/48607a060b2b Part 1: Add tests for pointer boundary events when moving the mouse into and out of an iframe; r=masayuki https://github.com/mozilla-firefox/firefox/commit/c907508b77d4 https://hg.mozilla.org/integration/autoland/rev/23c12f806687 Part 2: Generate pointer boundary event when mouse moves to iframe that lives in different process; r=masayuki https://github.com/mozilla-firefox/firefox/commit/54735c546659 https://hg.mozilla.org/integration/autoland/rev/e13094c5a82e Part 3: Store pointer location when receiving the eMouseEnterIntoWidget event; r=masayuki
Pushed by amarc@mozilla.com: https://github.com/mozilla-firefox/firefox/commit/59af38d29bbe https://hg.mozilla.org/integration/autoland/rev/4e01810cc1ee Revert "Bug 2008277 - Part 3: Store pointer location when receiving the eMouseEnterIntoWidget event; r=masayuki" for causing mochitest failures @ test_pointer_boundary_events_iframe.html

Backed out for causing mochitest failures @ test_pointer_boundary_events_iframe

Flags: needinfo?(echen)
Flags: needinfo?(echen)
Pushed by echen@mozilla.com: https://github.com/mozilla-firefox/firefox/commit/57924745447c https://hg.mozilla.org/integration/autoland/rev/8395b8919a1a Part 1: Add tests for pointer boundary events when moving the mouse into and out of an iframe; r=masayuki https://github.com/mozilla-firefox/firefox/commit/284741694d9b https://hg.mozilla.org/integration/autoland/rev/e5f0a14a7726 Part 2: Generate pointer boundary event when mouse moves to iframe that lives in different process; r=masayuki https://github.com/mozilla-firefox/firefox/commit/17d39e8a52c5 https://hg.mozilla.org/integration/autoland/rev/a77158ef95d1 Part 3: Store pointer location when receiving the eMouseEnterIntoWidget event; r=masayuki
Pushed by amarc@mozilla.com: https://github.com/mozilla-firefox/firefox/commit/b0d32bdee951 https://hg.mozilla.org/integration/autoland/rev/95d47659ea99 Revert "Bug 2008277 - Part 3: Store pointer location when receiving the eMouseEnterIntoWidget event; r=masayuki" for causing mochitest failures @ test_pointer_boundary_events_iframe

Backed out for causing mochitest failures

Flags: needinfo?(echen)
Pushed by echen@mozilla.com: https://github.com/mozilla-firefox/firefox/commit/e181f4cca6f6 https://hg.mozilla.org/integration/autoland/rev/00c06139023f Part 1: Add tests for pointer boundary events when moving the mouse into and out of an iframe; r=masayuki https://github.com/mozilla-firefox/firefox/commit/62427a03d334 https://hg.mozilla.org/integration/autoland/rev/5afa93c303d2 Part 2: Generate pointer boundary event when mouse moves to iframe that lives in different process; r=masayuki https://github.com/mozilla-firefox/firefox/commit/26b89e9f01ef https://hg.mozilla.org/integration/autoland/rev/1c06425763ba Part 3: Store pointer location when receiving the eMouseEnterIntoWidget event; r=masayuki
Status: NEW → RESOLVED
Closed: 3 months ago
Resolution: --- → FIXED
Target Milestone: --- → 149 Branch
Regressions: 2014319
Regressions: 1808457
Flags: needinfo?(echen)
No longer regressions: 1808457
No longer regressions: 2014319
Regressions: 2014319
QA Whiteboard: [qa-triage-done-c150/b149]
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: