- Revision
- 91416
- Author
- commit-qu...@webkit.org
- Date
- 2011-07-20 16:15:31 -0700 (Wed, 20 Jul 2011)
Log Message
Source/WebCore: mouseover reporting incorrect mouse button, when the button isn't
down. https://bugs.webkit.org/show_bug.cgi?id=64882
Patch by Scott Graham <scot...@chromium.org> on 2011-07-20
Reviewed by Eric Seidel.
Don't increment the button returned in 'which' unless the button is
actually down.
Test: fast/events/mouseover-button.html
* dom/MouseEvent.cpp:
(WebCore::MouseEvent::which):
LayoutTests: mouseover event reporting incorrect button in 'which'.
https://bugs.webkit.org/show_bug.cgi?id=64882
New test, move in/out of iframe with none/left/middle buttons down.
Patch by Scott Graham <scot...@chromium.org> on 2011-07-20
Reviewed by Eric Seidel.
* fast/events/mouseover-button-expected.txt: Added.
* fast/events/mouseover-button.html: Added.
* fast/events/resources/mouseover-button-iframe.html: Added.
Modified Paths
Added Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (91415 => 91416)
--- trunk/LayoutTests/ChangeLog 2011-07-20 23:15:26 UTC (rev 91415)
+++ trunk/LayoutTests/ChangeLog 2011-07-20 23:15:31 UTC (rev 91416)
@@ -1,3 +1,16 @@
+2011-07-20 Scott Graham <scot...@chromium.org>
+
+ mouseover event reporting incorrect button in 'which'.
+ https://bugs.webkit.org/show_bug.cgi?id=64882
+
+ New test, move in/out of iframe with none/left/middle buttons down.
+
+ Reviewed by Eric Seidel.
+
+ * fast/events/mouseover-button-expected.txt: Added.
+ * fast/events/mouseover-button.html: Added.
+ * fast/events/resources/mouseover-button-iframe.html: Added.
+
2011-07-20 Kenneth Russell <k...@google.com>
Add restoreContext() to WEBKIT_lose_context
Added: trunk/LayoutTests/fast/events/mouseover-button-expected.txt (0 => 91416)
--- trunk/LayoutTests/fast/events/mouseover-button-expected.txt (rev 0)
+++ trunk/LayoutTests/fast/events/mouseover-button-expected.txt 2011-07-20 23:15:31 UTC (rev 91416)
@@ -0,0 +1,13 @@
+Test for bugs cr 87473, 64882.
+
+This test verifies that we get the correct button on mouseover events in .which when entering a document.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+
+PASS document.events['A-no-press'].which is 0
+PASS document.events['B-left'].which is 1
+PASS document.events['C-no-press'].which is 0
+PASS document.events['D-middle'].which is 2
+
Added: trunk/LayoutTests/fast/events/mouseover-button.html (0 => 91416)
--- trunk/LayoutTests/fast/events/mouseover-button.html (rev 0)
+++ trunk/LayoutTests/fast/events/mouseover-button.html 2011-07-20 23:15:31 UTC (rev 91416)
@@ -0,0 +1,87 @@
+<html>
+ <head>
+ <link rel="stylesheet" href=""
+ <script src=""
+ </head>
+
+<body>
+<p>Test for bugs
+<a href="" 87473</a>, <a href=""
+
+<p id="description"></p>
+<iframe style='height: 50; width: 50; top:100;left:100; position:absolute; border-width:0' src=''
+ ></iframe>
+<div id="console"></div>
+
+<script>
+
+document.events = {};
+document.saveWhere = null;
+
+function runTest() {
+ if (window.layoutTestController) {
+ layoutTestController.dumpAsText();
+ layoutTestController.waitUntilDone();
+
+ eventSender.mouseMoveTo(1,1);
+ eventSender.mouseDown();
+ eventSender.mouseUp();
+
+ state('A-no-press');
+
+ eventSender.mouseMoveTo(125, 125);
+
+ state('B-left');
+ eventSender.mouseDown(0);
+ eventSender.mouseMoveTo(300, 300);
+
+ eventSender.mouseMoveTo(125, 125);
+
+ eventSender.mouseMoveTo(1, 1);
+ eventSender.mouseUp();
+
+ state('C-no-press');
+ eventSender.mouseMoveTo(125, 125);
+
+ state('D-middle');
+ eventSender.mouseDown(1);
+ eventSender.mouseMoveTo(300, 300);
+ eventSender.mouseMoveTo(125, 125);
+
+ eventSender.mouseUp();
+
+ eventSender.mouseMoveTo(1, 1);
+
+ window.setTimeout('finish()', 0);
+ }
+}
+
+function state(name)
+{
+ document.saveWhere = name;
+ document.events[name] = null;
+}
+
+function finish()
+{
+ shouldBe("document.events['A-no-press'].which", "0");
+ shouldBe("document.events['B-left'].which", "1");
+ shouldBe("document.events['C-no-press'].which", "0");
+ shouldBe("document.events['D-middle'].which", "2");
+
+ layoutTestController.notifyDone()
+}
+
+description("This test verifies that we get the correct button on mouseover events in .which when entering a document.");
+var successfullyParsed = true;
+
+window._onload_ = function()
+{
+ recentEvent = null;
+ runTest();
+}
+
+</script>
+
+</body>
+</html>
Added: trunk/LayoutTests/fast/events/resources/mouseover-button-iframe.html (0 => 91416)
--- trunk/LayoutTests/fast/events/resources/mouseover-button-iframe.html (rev 0)
+++ trunk/LayoutTests/fast/events/resources/mouseover-button-iframe.html 2011-07-20 23:15:31 UTC (rev 91416)
@@ -0,0 +1,12 @@
+<body style="margin-left:0; margin-top:0">
+ <script>
+ function doOnMouseEvent(evt)
+ {
+ top.document.events[top.document.saveWhere] = evt;
+ }
+
+ </script>
+ <div style="height: 50; width: 50; background:violet; top:0;left:0; position:absolute;"
+ _onMouseOver_="doOnMouseEvent(event);"
+ >1</div>
+</body>
Modified: trunk/Source/WebCore/ChangeLog (91415 => 91416)
--- trunk/Source/WebCore/ChangeLog 2011-07-20 23:15:26 UTC (rev 91415)
+++ trunk/Source/WebCore/ChangeLog 2011-07-20 23:15:31 UTC (rev 91416)
@@ -1,3 +1,18 @@
+2011-07-20 Scott Graham <scot...@chromium.org>
+
+ mouseover reporting incorrect mouse button, when the button isn't
+ down. https://bugs.webkit.org/show_bug.cgi?id=64882
+
+ Reviewed by Eric Seidel.
+
+ Don't increment the button returned in 'which' unless the button is
+ actually down.
+
+ Test: fast/events/mouseover-button.html
+
+ * dom/MouseEvent.cpp:
+ (WebCore::MouseEvent::which):
+
2011-07-20 Kenneth Russell <k...@google.com>
Add restoreContext() to WEBKIT_lose_context
Modified: trunk/Source/WebCore/dom/MouseEvent.cpp (91415 => 91416)
--- trunk/Source/WebCore/dom/MouseEvent.cpp 2011-07-20 23:15:26 UTC (rev 91415)
+++ trunk/Source/WebCore/dom/MouseEvent.cpp 2011-07-20 23:15:31 UTC (rev 91416)
@@ -109,6 +109,8 @@
// For the DOM, the return values for left, middle and right mouse buttons are 0, 1, 2, respectively.
// For the Netscape "which" property, the return values for left, middle and right mouse buttons are 1, 2, 3, respectively.
// So we must add 1.
+ if (!m_buttonDown)
+ return 0;
return m_button + 1;
}