Title: [109193] trunk
Revision
109193
Author
[email protected]
Date
2012-02-28 22:17:09 -0800 (Tue, 28 Feb 2012)

Log Message

[Forms] Spin button sometimes ignores Indeterminate of m_upDownState
https://bugs.webkit.org/show_bug.cgi?id=79754

Patch by Yoshifumi Inoue <[email protected]> on 2012-02-28
Reviewed by Kent Tamura.

Source/WebCore:

This patch checks enum value Indeterminate before using m_upDownState. This make
sure Indeterminate state doesn't act like Down state.

m_upDownState can be Indeterminate at mousedown event if mouse pointer is on
spin button when it is displayed.

Test: fast/forms/number/spin-button-state.html

* html/shadow/TextControlInnerElements.cpp:
(WebCore::SpinButtonElement::defaultEventHandler):
(WebCore::SpinButtonElement::repeatingTimerFired):

LayoutTests:

* fast/forms/number/spin-button-state.html: Added.
* fast/forms/number/spin-button-state-expected.txt: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (109192 => 109193)


--- trunk/LayoutTests/ChangeLog	2012-02-29 06:13:48 UTC (rev 109192)
+++ trunk/LayoutTests/ChangeLog	2012-02-29 06:17:09 UTC (rev 109193)
@@ -1,3 +1,13 @@
+2012-02-28  Yoshifumi Inoue  <[email protected]>
+
+        [Forms] Spin button sometimes ignores Indeterminate of m_upDownState
+        https://bugs.webkit.org/show_bug.cgi?id=79754
+
+        Reviewed by Kent Tamura.
+
+        * fast/forms/number/spin-button-state.html: Added.
+        * fast/forms/number/spin-button-state-expected.txt: Added.
+
 2012-02-27  MORITA Hajime  <[email protected]>
 
         [Refactoring] RenderSummary and RenderDetail is no longer needed.

Added: trunk/LayoutTests/fast/forms/number/spin-button-state-expected.txt (0 => 109193)


--- trunk/LayoutTests/fast/forms/number/spin-button-state-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/forms/number/spin-button-state-expected.txt	2012-02-29 06:17:09 UTC (rev 109193)
@@ -0,0 +1,13 @@
+BUG 79754[Forms] Spin button sometimes ignores Indeterminate of m_upDownState
+
+
+Manualt test steps
+
+Invoke browser with specifying screen position where moust pointer on the spin button.
+Click left mouse button without moving mouse pointer.
+Value should not be changed.
+Result
+
+expect 0, actual=0
+expect 1, actual=1
+

Added: trunk/LayoutTests/fast/forms/number/spin-button-state.html (0 => 109193)


--- trunk/LayoutTests/fast/forms/number/spin-button-state.html	                        (rev 0)
+++ trunk/LayoutTests/fast/forms/number/spin-button-state.html	2012-02-29 06:17:09 UTC (rev 109193)
@@ -0,0 +1,46 @@
+<h1>BUG <a href="" Spin button sometimes ignores Indeterminate of m_upDownState</h1>
+<div id="outer">
+<input id="num1" type="number" value="0">
+</div>
+<h2>Manualt test steps</h2>
+<ol>
+<li>Invoke browser with specifying screen position where moust pointer on the spin button.</li>
+<li>Click left mouse button without moving mouse pointer.</li>
+<li>Value should not be changed.</li>
+</ol>
+<h2>Result</h2>
+<div id="logs"></div>
+<script>
+var logs = document.getElementById("logs");
+function log(msg) { logs.innerHTML += msg + "<br>"; }
+
+function testIt() {
+    layoutTestController.dumpAsText();
+
+    var outer = document.getElementById("outer");
+
+    var num1 = document.getElementById("num1");
+    var mouseX = num1.offsetLeft + num1.offsetWidth - 5;
+    var mouseY = num1.offsetTop + 5;
+    eventSender.mouseMoveTo(mouseX, mouseY);
+
+    // Re-construct input element.
+    var ctrlHtml = outer.innerHTML;
+    outer.innerHTML = "";
+    outer.innerHTML = ctrlHtml;
+
+    var num2 = document.getElementById("num1");
+    eventSender.mouseDown();
+    log("expect 0, actual=" + num2.value);
+    eventSender.mouseUp();
+
+    // Move mouse pointer but still in spin button.
+    eventSender.mouseMoveTo(mouseX, mouseY - 1);
+    eventSender.mouseDown();
+    log("expect 1, actual=" + num2.value);
+}
+
+if (window.layoutTestController) {
+    testIt();
+}
+</script>

Modified: trunk/Source/WebCore/ChangeLog (109192 => 109193)


--- trunk/Source/WebCore/ChangeLog	2012-02-29 06:13:48 UTC (rev 109192)
+++ trunk/Source/WebCore/ChangeLog	2012-02-29 06:17:09 UTC (rev 109193)
@@ -1,3 +1,22 @@
+2012-02-28  Yoshifumi Inoue  <[email protected]>
+
+        [Forms] Spin button sometimes ignores Indeterminate of m_upDownState
+        https://bugs.webkit.org/show_bug.cgi?id=79754
+
+        Reviewed by Kent Tamura.
+
+        This patch checks enum value Indeterminate before using m_upDownState. This make
+        sure Indeterminate state doesn't act like Down state.
+
+        m_upDownState can be Indeterminate at mousedown event if mouse pointer is on
+        spin button when it is displayed.
+
+        Test: fast/forms/number/spin-button-state.html
+
+        * html/shadow/TextControlInnerElements.cpp:
+        (WebCore::SpinButtonElement::defaultEventHandler):
+        (WebCore::SpinButtonElement::repeatingTimerFired):
+
 2012-02-27  MORITA Hajime  <[email protected]>
 
         [Refactoring] RenderSummary and RenderDetail is no longer needed.

Modified: trunk/Source/WebCore/html/shadow/TextControlInnerElements.cpp (109192 => 109193)


--- trunk/Source/WebCore/html/shadow/TextControlInnerElements.cpp	2012-02-29 06:13:48 UTC (rev 109192)
+++ trunk/Source/WebCore/html/shadow/TextControlInnerElements.cpp	2012-02-29 06:17:09 UTC (rev 109193)
@@ -294,10 +294,11 @@
             input->focus();
             input->select();
             if (renderer()) {
-                ASSERT(m_upDownState != Indeterminate);
-                input->stepUpFromRenderer(m_upDownState == Up ? 1 : -1);
-                if (renderer())
-                    startRepeatingTimer();
+                if (m_upDownState != Indeterminate) {
+                    input->stepUpFromRenderer(m_upDownState == Up ? 1 : -1);
+                    if (renderer())
+                        startRepeatingTimer();
+                }
             }
             event->setDefaultHandled();
         }
@@ -365,7 +366,8 @@
     
 void SpinButtonElement::repeatingTimerFired(Timer<SpinButtonElement>*)
 {
-    step(m_upDownState == Up ? 1 : -1);
+    if (m_upDownState != Indeterminate)
+        step(m_upDownState == Up ? 1 : -1);
 }
 
 void SpinButtonElement::setHovered(bool flag)
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to