6,800 instances of "Please do not use mouseenter/leave events in chrome. They are slower than mouseover/out!: '!nsContentUtils::IsChromeDoc(d)'" emitted from dom/events/EventListenerManager.cpp during linux64 debug testing

RESOLVED FIXED in Firefox 53

Status

()

defect
P2
normal
RESOLVED FIXED
3 years ago
3 years ago

People

(Reporter: erahm, Assigned: adw)

Tracking

(Blocks 1 bug)

Trunk
Firefox 53
Points:
---
Dependency tree / graph

Firefox Tracking Flags

(firefox53 fixed)

Details

(Whiteboard: [fxsearch])

Attachments

(1 attachment)

> 6808 WARNING: Please do not use mouseenter/leave events in chrome. They are slower than mouseover/out!: '!nsContentUtils::IsChromeDoc(d)', file dom/events/EventListenerManager.cpp, line 407

This warning [1] shows up in the following test suites:

>    974 - desktop-test-linux64/debug-web-platform-tests-reftests-e10s Wr
>    974 - desktop-test-linux64/debug-web-platform-tests-reftests Wr
>    386 - desktop-test-linux64/debug-mochitest-browser-chrome-e10s-1 bc1
>    246 - desktop-test-linux64/debug-mochitest-browser-chrome-1 bc1
>    238 - desktop-test-linux64/debug-mochitest-browser-chrome-2 bc2
>    228 - desktop-test-linux64/debug-mochitest-jetpack JP
>    226 - desktop-test-linux64/debug-mochitest-browser-chrome-e10s-6 bc6
>    182 - desktop-test-linux64/debug-mochitest-browser-chrome-e10s-3 bc3
>    174 - desktop-test-linux64/debug-mochitest-browser-chrome-6 bc6
>    172 - desktop-test-linux64/debug-mochitest-browser-chrome-e10s-7 bc7
>    150 - desktop-test-linux64/debug-mochitest-browser-chrome-7 bc7
>    148 - desktop-test-linux64/debug-mochitest-1 1
>    136 - desktop-test-linux64/debug-mochitest-e10s-1 1
>    124 - desktop-test-linux64/debug-mochitest-chrome-3 c3
>    122 - desktop-test-linux64/debug-mochitest-browser-chrome-3 bc3
>    116 - desktop-test-linux64/debug-mochitest-3 3
>    116 - desktop-test-linux64/debug-mochitest-browser-chrome-e10s-2 bc2
>    106 - desktop-test-linux64/debug-mochitest-e10s-3 3
>    102 - desktop-test-linux64/debug-mochitest-browser-chrome-e10s-5 bc5
>     96 - desktop-test-linux64/debug-mochitest-clipboard cl
>     94 - desktop-test-linux64/debug-mochitest-chrome-2 c2
>     86 - desktop-test-linux64/debug-mochitest-e10s-8 8
>     86 - desktop-test-linux64/debug-mochitest-8 8
>     86 - desktop-test-linux64/debug-mochitest-clipboard-e10s cl
>     80 - desktop-test-linux64/debug-mochitest-5 5
>     78 - desktop-test-linux64/debug-mochitest-7 7
>     76 - desktop-test-linux64/debug-mochitest-browser-chrome-5 bc5
>     74 - desktop-test-linux64/debug-mochitest-browser-chrome-4 bc4
>     74 - desktop-test-linux64/debug-mochitest-e10s-6 6
>     64 - desktop-test-linux64/debug-mochitest-chrome-1 c1
>     58 - desktop-test-linux64/debug-mochitest-e10s-5 5
>     56 - desktop-test-linux64/debug-mochitest-6 6
>     54 - desktop-test-linux64/debug-mochitest-e10s-10 10
>     48 - desktop-test-linux64/debug-mochitest-a11y a11y
>     48 - desktop-test-linux64/debug-mochitest-browser-chrome-e10s-4 bc4
>     46 - desktop-test-linux64/debug-mochitest-9 9
>     44 - desktop-test-linux64/debug-firefox-ui-functional-local en-US
>     44 - desktop-test-linux64/debug-mochitest-10 10
>     42 - desktop-test-linux64/debug-mochitest-e10s-7 7
>     40 - desktop-test-linux64/debug-mochitest-2 2
>     36 - desktop-test-linux64/debug-mochitest-e10s-9 9
>     34 - desktop-test-linux64/debug-mochitest-e10s-2 2
>     26 - desktop-test-linux64/debug-mochitest-e10s-4 4
>     26 - desktop-test-linux64/debug-firefox-ui-functional-local-e10s en-US
>     26 - desktop-test-linux64/debug-mochitest-4 4
>     24 - desktop-test-linux64/debug-mochitest-media mda
>     24 - desktop-test-linux64/debug-mochitest-media-e10s mda
>     14 - desktop-test-linux64/debug-mochitest-gpu-e10s gpu
>     14 - desktop-test-linux64/debug-mochitest-devtools-chrome-7 dt7
>     12 - desktop-test-linux64/debug-mochitest-devtools-chrome-4 dt4
>     12 - desktop-test-linux64/debug-mochitest-devtools-chrome-9 dt9
>     10 - desktop-test-linux64/debug-web-platform-tests-e10s-10 10
>     10 - desktop-test-linux64/debug-mochitest-devtools-chrome-5 dt5
>     10 - desktop-test-linux64/debug-web-platform-tests-10 10
>      8 - desktop-test-linux64/debug-firefox-ui-functional-remote en-US
>      8 - desktop-test-linux64/debug-mochitest-devtools-chrome-2 dt2
>      8 - desktop-test-linux64/debug-mochitest-devtools-chrome-6 dt6
>      8 - desktop-test-linux64/debug-mochitest-devtools-chrome-10 dt10
>      8 - desktop-test-linux64/debug-mochitest-webgl-e10s-3 gl3
>      8 - desktop-test-linux64/debug-mochitest-devtools-chrome-3 dt3
>      8 - desktop-test-linux64/debug-mochitest-webgl-3 gl3
>      8 - desktop-test-linux64/debug-mochitest-devtools-chrome-8 dt8
>      6 - desktop-test-linux64/debug-crashtest-e10s C
>      6 - desktop-test-linux64/debug-mochitest-devtools-chrome-1 dt1
>      6 - desktop-test-linux64/debug-web-platform-tests-1 1
>      6 - desktop-test-linux64/debug-firefox-ui-functional-remote-e10s en-US
>      6 - desktop-test-linux64/debug-web-platform-tests-e10s-1 1
>      6 - desktop-test-linux64/debug-crashtest C
>      4 - desktop-test-linux64/debug-mochitest-webgl-e10s-1 gl1
>      4 - desktop-test-linux64/debug-mochitest-webgl-1 gl1
>      4 - desktop-test-linux64/debug-web-platform-tests-e10s-12 12
>      4 - desktop-test-linux64/debug-web-platform-tests-12 12
>      4 - desktop-test-linux64/debug-web-platform-tests-9 9
>      4 - desktop-test-linux64/debug-web-platform-tests-e10s-9 9
>      2 - desktop-test-linux64/debug-mochitest-webgl-e10s-2 gl2
>      2 - desktop-test-linux64/debug-reftest-7 R7
>      2 - desktop-test-linux64/debug-reftest-no-accel-8 Ru8
>      2 - desktop-test-linux64/debug-web-platform-tests-2 2
>      2 - desktop-test-linux64/debug-web-platform-tests-e10s-7 7
>      2 - desktop-test-linux64/debug-reftest-no-accel-e10s-8 Ru8
>      2 - desktop-test-linux64/debug-web-platform-tests-6 6
>      2 - desktop-test-linux64/debug-reftest-no-accel-2 Ru2
>      2 - desktop-test-linux64/debug-reftest-5 R5
>      2 - desktop-test-linux64/debug-reftest-no-accel-e10s-3 Ru3
>      2 - desktop-test-linux64/debug-reftest-e10s-8 R8
>      2 - desktop-test-linux64/debug-web-platform-tests-e10s-2 2
>      2 - desktop-test-linux64/debug-reftest-no-accel-6 Ru6
>      2 - desktop-test-linux64/debug-jsreftest-2 J2
>      2 - desktop-test-linux64/debug-web-platform-tests-e10s-6 6
>      2 - desktop-test-linux64/debug-mochitest-webgl-2 gl2
>      2 - desktop-test-linux64/debug-reftest-e10s-1 R1
>      2 - desktop-test-linux64/debug-reftest-e10s-7 R7
>      2 - desktop-test-linux64/debug-reftest-e10s-6 R6
>      2 - desktop-test-linux64/debug-web-platform-tests-5 5
>      2 - desktop-test-linux64/debug-reftest-no-accel-e10s-5 Ru5
>      2 - desktop-test-linux64/debug-jsreftest-e10s-2 J2
>      2 - desktop-test-linux64/debug-reftest-2 R2
>      2 - desktop-test-linux64/debug-reftest-6 R6
>      2 - desktop-test-linux64/debug-reftest-no-accel-e10s-7 Ru7
>      2 - desktop-test-linux64/debug-reftest-no-accel-e10s-2 Ru2
>      2 - desktop-test-linux64/debug-reftest-no-accel-7 Ru7
>      2 - desktop-test-linux64/debug-web-platform-tests-e10s-5 5
>      2 - desktop-test-linux64/debug-reftest-e10s-4 R4
>      2 - desktop-test-linux64/debug-reftest-no-accel-3 Ru3
>      2 - desktop-test-linux64/debug-reftest-no-accel-e10s-4 Ru4
>      2 - desktop-test-linux64/debug-reftest-e10s-3 R3
>      2 - desktop-test-linux64/debug-reftest-no-accel-5 Ru5
>      2 - desktop-test-linux64/debug-reftest-8 R8
>      2 - desktop-test-linux64/debug-reftest-no-accel-e10s-1 Ru1
>      2 - desktop-test-linux64/debug-jsreftest-e10s-1 J1
>      2 - desktop-test-linux64/debug-web-platform-tests-4 4
>      2 - desktop-test-linux64/debug-reftest-1 R1
>      2 - desktop-test-linux64/debug-web-platform-tests-11 11
>      2 - desktop-test-linux64/debug-reftest-4 R4
>      2 - desktop-test-linux64/debug-web-platform-tests-e10s-4 4
>      2 - desktop-test-linux64/debug-reftest-e10s-5 R5
>      2 - desktop-test-linux64/debug-web-platform-tests-3 3
>      2 - desktop-test-linux64/debug-web-platform-tests-e10s-8 8
>      2 - desktop-test-linux64/debug-reftest-no-accel-e10s-6 Ru6
>      2 - desktop-test-linux64/debug-web-platform-tests-wdspec Wd
>      2 - desktop-test-linux64/debug-web-platform-tests-8 8
>      2 - desktop-test-linux64/debug-web-platform-tests-e10s-11 11
>      2 - desktop-test-linux64/debug-web-platform-tests-wdspec-e10s Wd
>      2 - desktop-test-linux64/debug-web-platform-tests-7 7
>      2 - desktop-test-linux64/debug-reftest-e10s-2 R2
>      2 - desktop-test-linux64/debug-reftest-no-accel-4 Ru4
>      2 - desktop-test-linux64/debug-reftest-3 R3
>      2 - desktop-test-linux64/debug-reftest-no-accel-1 Ru1
>      2 - desktop-test-linux64/debug-jsreftest-1 J1
>      2 - desktop-test-linux64/debug-web-platform-tests-e10s-3 3

It shows up in 1809 tests. A few of the most prevalent:

>    746 -        Shutdown
>    512 - [e10s] Shutdown
>    176 -        jetpack-package/addon-sdk/source/test/test-simple-prefs.js.testUnloadOfDynamicPrefGeneration
>     40 - [e10s] dom/html/test/test_fullscreen-api.html
>     40 -        dom/html/test/test_fullscreen-api.html
>     36 - [e10s] dom/tests/mochitest/pointerlock/test_pointerlock-api.html
>     36 - [e10s] browser/base/content/test/general/browser_newWindowDrop.js
>     36 -        dom/tests/mochitest/pointerlock/test_pointerlock-api.html
>     36 -        browser/base/content/test/general/browser_newWindowDrop.js
>     34 - [e10s] browser/components/sessionstore/test/browser_354894_perwindowpb.js

[1] https://hg.mozilla.org/mozilla-central/annotate/a103e1713a2e/dom/events/EventListenerManager.cpp#l407
This is the #1 most verbose warning during testing.

Bisection points to: https://hg.mozilla.org/integration/autoland/pushloghtml?fromchange=55a41c5e8e88010ea8a539c009f27b7b14988700&tochange=3e92691272d3139d0f428bf7499bc65f7318f540

Drew can you take a look?
Blocks: 1113747
Component: DOM → Search
Flags: needinfo?(adw)
Product: Core → Firefox
Sigh, of course.

This patch moves the logic in mouseenter to mousemove and the logic and mouseleave to mouseout.  Seems to work.
Flags: needinfo?(adw)
Assignee: nobody → adw
Status: NEW → ASSIGNED
Priority: -- → P2
Whiteboard: [fxsearch]
Comment on attachment 8812400 [details]
Bug 1318790 - Don't use mouseenter and mouseleave in searchbar binding.

https://reviewboard.mozilla.org/r/94174/#review94530

Looks reasonable, r=me.

Something I should have noticed when reviewing bug 1113747 : when moving the mouse away (eg. to the settings button), it's strange to have 2 items visually selected for the duration of the timer. I see the background change is associated to the "open" attribute, so removing it before the timer closes the menu may require a hack; not sure it's worth fixing.
Attachment #8812400 - Flags: review?(florian) → review+
Yeah, I noticed that too.  I tried removing the .addengine-item[type=menu][open] rule, and it actually works pretty well I think.  Now the reverse happens, where when you mouse out of the submenu popup, the menu button becomes unselected for the duration of the timer while the submenu popup remains open.  If you mouse over the submenu popup again before the timer elapses, the menu button becomes selected again.

Overall I think that's better than two items appearing selected at once, so this latest revision does that.
Pushed by dwillcoxon@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/015513b6fd0f
Don't use mouseenter and mouseleave in searchbar binding. r=florian
(In reply to Drew Willcoxon :adw from comment #6)

> Overall I think that's better than two items appearing selected at once, so
> this latest revision does that.

Did you mean to apply this change to the Windows and Linux CSS files too?
Blocks: 1319151
Yes, thank you.  I filed a follow-up bug so I can check in on autoland again.
No longer blocks: 1319151
Depends on: 1319151
https://hg.mozilla.org/mozilla-central/rev/015513b6fd0f
Status: ASSIGNED → RESOLVED
Closed: 3 years ago
Resolution: --- → FIXED
Target Milestone: --- → Firefox 53
You need to log in before you can comment on or make changes to this bug.