Bug 266932
| Summary: | Mousemove event should be fired when the mouse stays in the document but there is no element | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | Ahmad Saleem <ahmad.saleem792> |
| Component: | UI Events | Assignee: | Ahmad Saleem <ahmad.saleem792> |
| Status: | RESOLVED FIXED | ||
| Severity: | Normal | CC: | a_protyasha, karlcow, simon.fraser, webkit-bug-importer |
| Priority: | P2 | Keywords: | InRadar |
| Version: | WebKit Nightly Build | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
Ahmad Saleem
Hi Team,
While looking into Blink's commit, I came across another potential merge.
Blink Commit: https://src.chromium.org/viewvc/blink?view=revision&revision=182622
WebKit Source: https://github.com/WebKit/WebKit/blob/7883e9ca30c85590b7ac6f16a8b2bbec71fa9d51/Source/WebCore/rendering/RenderLayer.cpp#L4021
Following compiles:
LayoutPoint hitPoint = hitTestLocation.point();
if (!request.isChildFrameHitTest() && ((request.active() || request.release()) || (request.move() && hitTestArea.contains(hitPoint.x(), hitPoint.y()))) && isRenderViewLayer()) {
// if (!request.isChildFrameHitTest() && (request.active() || request.release()) && isRenderViewLayer()) {
renderer().updateHitTestResult(result, downcast<RenderView>(renderer()).flipForWritingMode(hitTestLocation.point()));
insideLayer = { this };
}
___
We don't start to pass all tests from added but we do pass few more than before, if we merge this.
Just wanted to raise to get input.
Thanks!
| Attachments | ||
|---|---|---|
| Add attachment proposed patch, testcase, etc. |
Ahmad Saleem
With Patch (taking test from 'source.chromium.org' and modifying to use 'window.testRunner.dumpChildFramesAsText();'):
Tests that the mouse event is fired when the mouse pointer stays in document but there is no element
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
PASS successfullyParsed is true
TEST COMPLETE
--------
Frame: '<!--frame1-->'
--------
POINTER
PASS events[0] is "mousemove"
FAIL targets[0] should be #document. Was BODY.
PASS events[1] is "mousemove"
FAIL targets[1] should be BODY. Was #document.
PASS events[2] is "mousemove"
FAIL targets[2] should be #document. Was BODY.
FAIL events[3] should be mouseover. Was mousemove.
PASS targets[3] is "#document"
PASS events[4] is "mouseover"
PASS targets[4] is "BODY"
PASS events[5] is "mouseover"
PASS targets[5] is "#document"
FAIL events[6] should be mouseout. Was mouseover.
FAIL targets[6] should be #document. Was BODY.
FAIL events[7] should be mouseout. Was mouseover.
FAIL targets[7] should be BODY. Was #document.
PASS events[8] is "mouseout"
FAIL targets[8] should be #document. Was BODY.
FAIL events[9] should be mouseenter. Was mouseout.
PASS targets[9] is "#document"
FAIL events[10] should be mouseleave. Was mouseout.
FAIL targets[10] should be #document. Was BODY.
FAIL events[11] should be mouseenter. Was mouseout.
PASS targets[11] is "#document"
PASS events[12] is "mouseenter"
PASS targets[12] is "BODY"
PASS events[13] is "mouseleave"
PASS targets[13] is "BODY"
FAIL events[14] should be mouseleave. Was mouseenter.
FAIL targets[14] should be #document. Was BODY.
PASS successfullyParsed is true
Some tests failed.
TEST COMPLETE
Ahmad Saleem
Using 'LayoutTests/fast/events/resources/mouse-events-within-no-element-iframe.html' from the Blink commit (rather than upstream):
With Patch:
POINTER
PASS events[0] is "mousemove"
PASS targets[0] is "#document"
PASS events[1] is "mousemove"
PASS targets[1] is "BODY"
PASS events[2] is "mousemove"
PASS targets[2] is "#document"
PASS events[3] is "mouseover"
PASS targets[3] is "#document"
PASS events[4] is "mouseover"
PASS targets[4] is "BODY"
PASS events[5] is "mouseover"
PASS targets[5] is "#document"
PASS events[6] is "mouseout"
PASS targets[6] is "#document"
PASS events[7] is "mouseout"
PASS targets[7] is "BODY"
PASS events[8] is "mouseout"
PASS targets[8] is "#document"
PASS events[9] is "mouseenter"
FAIL targets[9] should be #document. Was BODY.
PASS events[10] is "mouseleave"
FAIL targets[10] should be #document. Was BODY.
FAIL events[11] should be mouseenter (of type string). Was undefined (of type undefined).
FAIL targets[11] should be BODY (of type string). Was undefined (of type undefined).
FAIL events[12] should be mouseenter (of type string). Was undefined (of type undefined).
FAIL targets[12] should be #document (of type string). Was undefined (of type undefined).
FAIL events[13] should be mouseleave (of type string). Was undefined (of type undefined).
FAIL targets[13] should be BODY (of type string). Was undefined (of type undefined).
FAIL events[14] should be mouseleave (of type string). Was undefined (of type undefined).
FAIL targets[14] should be #document (of type string). Was undefined (of type undefined).
PASS successfullyParsed is true
Some tests failed.
TEST COMPLETE
__
Without Patch:
POINTER
PASS events[0] is "mousemove"
FAIL targets[0] should be #document. Was BODY.
PASS events[1] is "mousemove"
FAIL targets[1] should be BODY. Was #document.
FAIL events[2] should be mousemove. Was mouseover.
FAIL targets[2] should be #document. Was BODY.
PASS events[3] is "mouseover"
PASS targets[3] is "#document"
FAIL events[4] should be mouseover. Was mouseout.
PASS targets[4] is "BODY"
FAIL events[5] should be mouseover. Was mouseout.
PASS targets[5] is "#document"
FAIL events[6] should be mouseout. Was mouseenter.
FAIL targets[6] should be #document. Was BODY.
FAIL events[7] should be mouseout. Was mouseleave.
PASS targets[7] is "BODY"
FAIL events[8] should be mouseout (of type string). Was undefined (of type undefined).
FAIL targets[8] should be #document (of type string). Was undefined (of type undefined).
FAIL events[9] should be mouseenter (of type string). Was undefined (of type undefined).
FAIL targets[9] should be #document (of type string). Was undefined (of type undefined).
FAIL events[10] should be mouseleave (of type string). Was undefined (of type undefined).
FAIL targets[10] should be #document (of type string). Was undefined (of type undefined).
FAIL events[11] should be mouseenter (of type string). Was undefined (of type undefined).
FAIL targets[11] should be BODY (of type string). Was undefined (of type undefined).
FAIL events[12] should be mouseenter (of type string). Was undefined (of type undefined).
FAIL targets[12] should be #document (of type string). Was undefined (of type undefined).
FAIL events[13] should be mouseleave (of type string). Was undefined (of type undefined).
FAIL targets[13] should be BODY (of type string). Was undefined (of type undefined).
FAIL events[14] should be mouseleave (of type string). Was undefined (of type undefined).
FAIL targets[14] should be #document (of type string). Was undefined (of type undefined).
PASS successfullyParsed is true
Some tests failed.
TEST COMPLETE
___
So some progressions (if we use old test commit based test case).
Radar WebKit Bug Importer
<rdar://problem/120551245>
Ahmad Saleem
Follow-up to fix the mouseover - but it might not be 1-1 easily: https://src.chromium.org/viewvc/blink?view=revision&revision=192954
Ahmad Saleem
https://github.com/chromium/chromium/commit/20a8667a4e0d5e28d4f301ad5c66a0fa3b540ca6
Ahmad Saleem
Pull request: https://github.com/WebKit/WebKit/pull/46838
EWS
Committed 296341@main (7a8eec33525b): <https://commits.webkit.org/296341@main>
Reviewed commits have been landed. Closing PR #46838 and removing active labels.