haikuwebkit/LayoutTests/perf/mouse-event.html

54 lines
1.3 KiB
HTML
Raw Permalink Normal View History

2011-03-29 Emil A Eklund <eae@chromium.org> Reviewed by Dimitri Glazkov. Relative mouse coordinates recalculated for target https://bugs.webkit.org/show_bug.cgi?id=57130 Add mouse event performance test. * fast/events/mouse-relative-position-expected.txt: Added. * fast/events/mouse-relative-position.html: Added. * perf/mouse-event-expected.txt: Added. * perf/mouse-event.html: Added. 2011-03-29 Emil A Eklund <eae@chromium.org> Reviewed by Dimitri Glazkov. Relative mouse coordinates recalculated for each target https://bugs.webkit.org/show_bug.cgi?id=57130 Calculate relative coordinates lazily for mouse events instead of doing it for each target. Speeds up dispatching of mouse events in deep dom structures significantly, O(n^2) to O(n). Also fixes https://bugs.webkit.org/show_bug.cgi?id=34973 Tests: fast/events/mouse-relative-position.html perf/mouse-event.html * dom/Event.cpp: (WebCore::Event::setTarget): * dom/MouseRelatedEvent.cpp: (WebCore::MouseRelatedEvent::MouseRelatedEvent): (WebCore::MouseRelatedEvent::initCoordinates): (WebCore::pageZoomFactor): (WebCore::MouseRelatedEvent::receivedTarget): (WebCore::MouseRelatedEvent::computeRelativePosition): (WebCore::MouseRelatedEvent::layerX): (WebCore::MouseRelatedEvent::layerY): (WebCore::MouseRelatedEvent::offsetX): (WebCore::MouseRelatedEvent::offsetY): * dom/MouseRelatedEvent.h: * dom/UIEvent.cpp: (WebCore::UIEvent::layerX): (WebCore::UIEvent::layerY): * dom/UIEvent.h: 2011-03-29 Emil A Eklund <eae@chromium.org> Reviewed by Dimitri Glazkov. Relative mouse coordinates recalculated for each target https://bugs.webkit.org/show_bug.cgi?id=57130 * public/WebDOMMouseEvent.h: * src/WebDOMMouseEvent.cpp: (WebKit::WebDOMMouseEvent::layerX): (WebKit::WebDOMMouseEvent::layerY): (WebKit::WebDOMMouseEvent::offsetX): (WebKit::WebDOMMouseEvent::offsetY): Canonical link: https://commits.webkit.org/72027@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@82225 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2011-03-29 11:02:33 +00:00
<body>
<script src="../resources/magnitude-perf.js"></script>
<style>
.outer {
position: relative;
margin: 0.25px;
padding: 0.25px;
}
.inner {
width: 100px;
height: 100px;
background: red;
}
</style>
<div id="test"></div>
<script>
var innerElement, reportedPosition;
var testElement = document.getElementById('test');
function setupFunction(magnitude)
{
testElement.innerHTML = '';
var element, parent = testElement;
for (var i = 0; i < magnitude; i++) {
element = document.createElement('div');
element.className = 'outer';
parent.appendChild(element);
parent = element;
}
element = document.createElement('div');
element.className = 'inner';
parent.appendChild(element);
element.onmouseover = function(e) {
reportedPosition = e.offsetX + ', ' + e.offsetY;
};
innerElement = element;
}
function test(magnitude)
{
if (window.eventSender) {
var rect = innerElement.getBoundingClientRect();
eventSender.mouseMoveTo(0, 0);
eventSender.mouseMoveTo(rect.left, rect.top);
eventSender.mouseMoveTo(0, 0);
}
}
Magnitude.description("Tests that mouse event dispatch is linear with respect to the number of parent elements.");
Magnitude.run(setupFunction, test, Magnitude.LINEAR);
</script>
</body>