Closed Bug 557986 Opened 10 years ago Closed 9 years ago

Intermittent 10.6 failures in test_native_mouse_mac.xul | didn't receive expected event: {"type":"mouseout","target":"menupopup","screenX":400,"screenY":170}, wrong event type for event {"type":"mouseout","target":"menupopup","screenX":387,"screenY":170}

Categories

(Core :: Widget: Cocoa, defect)

x86
macOS
defect
Not set

Tracking

()

RESOLVED FIXED
mozilla2.0b3

People

(Reporter: philor, Assigned: mstange)

References

Details

(Keywords: intermittent-failure)

Attachments

(1 file)

http://tinderbox.mozilla.org/showlog.cgi?log=Firefox/1270694425.1270695269.15445.gz
Rev3 MacOSX Snow Leopard 10.6.2 mozilla-central opt test mochitest-other on 2010/04/07 19:40:25
s: talos-r3-snow-008

9955 ERROR TEST-UNEXPECTED-FAIL | chrome://mochikit/content/chrome/widget/tests/test_native_mouse_mac.xul | didn't receive expected event: {"type":"mouseout","target":"menupopup","screenX":400,"screenY":170}
9956 ERROR TEST-UNEXPECTED-FAIL | chrome://mochikit/content/chrome/widget/tests/test_native_mouse_mac.xul | didn't receive expected event: {"type":"mouseout","target":"menupopup","screenX":400,"screenY":170}
10021 ERROR TEST-UNEXPECTED-FAIL | chrome://mochikit/content/chrome/widget/tests/test_native_mouse_mac.xul | 48 | wrong event type for event {"type":"mouseout","target":"menupopup","screenX":387,"screenY":170} - got "mouseout", expected "mouseover"
10022 ERROR TEST-UNEXPECTED-FAIL | chrome://mochikit/content/chrome/widget/tests/test_native_mouse_mac.xul | 48 | wrong target for event {"type":"mouseout","target":"menupopup","screenX":387,"screenY":170} - got [object XULElement], expected [object XULElement]
10025 ERROR TEST-UNEXPECTED-FAIL | chrome://mochikit/content/chrome/widget/tests/test_native_mouse_mac.xul | 49 | wrong event type for event {"type":"mouseout","target":"menupopup","screenX":387,"screenY":170} - got "mouseout", expected "mousemove"
10026 ERROR TEST-UNEXPECTED-FAIL | chrome://mochikit/content/chrome/widget/tests/test_native_mouse_mac.xul | 49 | wrong target for event {"type":"mouseout","target":"menupopup","screenX":387,"screenY":170} - got [object XULElement], expected [object XULElement]
10027 ERROR TEST-UNEXPECTED-FAIL | chrome://mochikit/content/chrome/widget/tests/test_native_mouse_mac.xul | received event I didn't expect: {"type":"mouseover","target":"panel","screenX":387,"screenY":170}
10028 ERROR TEST-UNEXPECTED-FAIL | chrome://mochikit/content/chrome/widget/tests/test_native_mouse_mac.xul | received event I didn't expect: {"type":"mousemove","target":"panel","screenX":387,"screenY":170}
I'll take a look.
Assignee: nobody → mstange
Status: NEW → ASSIGNED
http://tinderbox.mozilla.org/showlog.cgi?log=Firefox/1275082554.1275084235.10850.gz
Rev3 MacOSX Snow Leopard 10.6.2 mozilla-central opt test mochitest-other on 2010/05/28 14:35:54
s: talos-r3-snow-048

11077 ERROR TEST-UNEXPECTED-FAIL | chrome://mochikit/content/chrome/widget/tests/test_native_mouse_mac.xul | didn't receive expected event: {"type":"mouseover","target":"panel","screenX":387,"screenY":170}
11078 ERROR TEST-UNEXPECTED-FAIL | chrome://mochikit/content/chrome/widget/tests/test_native_mouse_mac.xul | didn't receive expected event: {"type":"mousemove","target":"panel","screenX":387,"screenY":170}
11079 ERROR TEST-UNEXPECTED-FAIL | chrome://mochikit/content/chrome/widget/tests/test_native_mouse_mac.xul | didn't receive expected event: {"type":"mousemove","target":"panel","screenX":387,"screenY":171}
11080 ERROR TEST-UNEXPECTED-FAIL | chrome://mochikit/content/chrome/widget/tests/test_native_mouse_mac.xul | didn't receive expected event: {"type":"mousemove","target":"panel","screenX":388,"screenY":171}
11095 ERROR TEST-UNEXPECTED-FAIL | chrome://mochikit/content/chrome/widget/tests/test_native_mouse_mac.xul | 59 | wrong event type for event {"type":"mouseover","target":"box","screenX":173,"screenY":200} - got "mouseover", expected "mouseout"
11096 ERROR TEST-UNEXPECTED-FAIL | chrome://mochikit/content/chrome/widget/tests/test_native_mouse_mac.xul | 59 | wrong target for event {"type":"mouseover","target":"box","screenX":173,"screenY":200} - got [object XULElement], expected [object XULElement]
11099 ERROR TEST-UNEXPECTED-FAIL | chrome://mochikit/content/chrome/widget/tests/test_native_mouse_mac.xul | 60 | wrong event type for event {"type":"mousemove","target":"box","screenX":173,"screenY":200} - got "mousemove", expected "mouseover"
11101 ERROR TEST-UNEXPECTED-FAIL | chrome://mochikit/content/chrome/widget/tests/test_native_mouse_mac.xul | didn't receive expected event: {"type":"mousemove","target":"box","screenX":173,"screenY":200}
Depends on: 392188
Let's see if the test changes in bug 392188 fixed it.
:(
Attached patch v1Splinter Review
It pains me to do this but I don't see a different way. What happens is this:

We have two windows open, window A and B. The mouse is over window A. Then we open a menupopup over window A and move the mouse over it. However, [NSWindow windowNumberAtPoint:...] sometimes doesn't know about this menupopup yet, so it tells us that the mouse is still over window A. We send a mouse move event into Gecko. Gecko notices that the mouse is in fact over the menupopup, which is just a regular element inside window A, and updates its own mouseover state which is stored in nsEventStateManager::mLastMouseOverElement. Before it does that, it sends a mouseout event to the previously hovered element in window A.

Then we move the mouse away from the menupopup over window B. We tell Gecko that the mouse is no longer over window A, but Gecko thinks "I already know that", so it doesn't send a mouseout event to the menupopup.
But the test was expecting that event and complains that it doesn't fire.

I'm also making some tweaks to the test. One part is getting rid of the "shouldFireButSometimesDoesnt" and "sometimesFiresButShouldnt" flags - now that we no longer use windowNumberAtPoint, everything becomes deterministic and we don't need them any more.
The other part is getting rid of the "double events for gPopup" stuff. The double events were caused by simple event bubbling, and not by a platform bug: we ended up listening to events on the popup twice, once on gPopup, and once on the events bubbling up to its parent window.
I'm also removing some inaccurate comments.
Attachment #461193 - Flags: review?(joshmoz)
Comment on attachment 461193 [details] [diff] [review]
v1

Can you please file a bug with Apple about windowNumberAtPoint being out-of-date at times?
Attachment #461193 - Flags: review?(joshmoz) → review+
Attachment #461193 - Flags: approval2.0+
http://hg.mozilla.org/mozilla-central/rev/09543c082969
Status: ASSIGNED → RESOLVED
Closed: 9 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla2.0b3
Depends on: 585663
Depends on: 587418
Whiteboard: [orange]
You need to log in before you can comment on or make changes to this bug.