Title: [94637] trunk
Revision
94637
Author
[email protected]
Date
2011-09-06 21:43:33 -0700 (Tue, 06 Sep 2011)

Log Message

REGRESSION(r94274): The inner text value of an input element is not updated when input.value is set
https://bugs.webkit.org/show_bug.cgi?id=67681

Reviewed by Kent Tamura.

Source/WebCore: 

The bug was caused by HTMLInputElement::setValue's not clearing m_suggestedValue before updateInnerTextValue is called.
Since updateInnerTextValue uses the suggested value when one is present, we need to clear m_suggestedValue in advance.

Test: fast/forms/suggested-value-after-setvalue.html

* html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::setValue):

LayoutTests: 

Added a test that overrides the suggested value by modifying the value IDL attribute of an input element.

* fast/forms/suggested-value-after-setvalue-expected.txt: Added.
* fast/forms/suggested-value-after-setvalue.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (94636 => 94637)


--- trunk/LayoutTests/ChangeLog	2011-09-07 04:35:50 UTC (rev 94636)
+++ trunk/LayoutTests/ChangeLog	2011-09-07 04:43:33 UTC (rev 94637)
@@ -1,3 +1,15 @@
+2011-09-06  Ryosuke Niwa  <[email protected]>
+
+        REGRESSION(r94274): The inner text value of an input element is not updated when input.value is set
+        https://bugs.webkit.org/show_bug.cgi?id=67681
+
+        Reviewed by Kent Tamura.
+
+        Added a test that overrides the suggested value by modifying the value IDL attribute of an input element.
+
+        * fast/forms/suggested-value-after-setvalue-expected.txt: Added.
+        * fast/forms/suggested-value-after-setvalue.html: Added.
+
 2011-09-06  Alexey Proskuryakov  <[email protected]>
 
         Layout Test fast/dom/HTMLMeterElement/meter-element-crash.html is flaky

Added: trunk/LayoutTests/fast/forms/suggested-value-after-setvalue-expected.txt (0 => 94637)


--- trunk/LayoutTests/fast/forms/suggested-value-after-setvalue-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/forms/suggested-value-after-setvalue-expected.txt	2011-09-07 04:43:33 UTC (rev 94637)
@@ -0,0 +1,30 @@
+This test setting a value clears suggested value.
+
+After setting suggestedValue:
+| <input>
+|   id="test"
+|   type="text"
+|   value="initial value"
+|   this.value="initial value"
+|   <shadow:root>
+|     <div>
+|       "suggested value"
+| "input.value: initial value"
+| "internals.suggestedValue(input): suggested value"
+| "input.selectionStart: 0"
+| "input.selectionEnd: 0"
+
+After setting value:
+| <input>
+|   id="test"
+|   type="text"
+|   value="initial value"
+|   this.value="new value"
+|   <shadow:root>
+|     <div>
+|       "new value"
+| "input.value: new value"
+| "internals.suggestedValue(input): "
+| "input.selectionStart: 9"
+| "input.selectionEnd: 9"
+| "PASS"

Added: trunk/LayoutTests/fast/forms/suggested-value-after-setvalue.html (0 => 94637)


--- trunk/LayoutTests/fast/forms/suggested-value-after-setvalue.html	                        (rev 0)
+++ trunk/LayoutTests/fast/forms/suggested-value-after-setvalue.html	2011-09-07 04:43:33 UTC (rev 94637)
@@ -0,0 +1,48 @@
+<!DOCTYPE html>
+<html>
+<body>
+<p id="description">This test setting a value clears suggested value.</p>
+<pre><input id="test" type="text" value="initial value"></pre>
+<script src=""
+<script>
+
+var input = document.getElementById('test');
+var result = document.getElementById('result');
+if (!window.internals)
+    testFailed('This test requires internals object');
+else {
+    input.focus();
+    input.selectionStart = input.selectionEnd = 0;
+
+    internals.setSuggestedValue(input, 'suggested value');
+
+    Markup.description(document.getElementById('description').textContent)
+
+    function addText(text) {
+        input.parentNode.appendChild(document.createTextNode(text));
+    }
+
+    function log() {
+        while (input.parentNode.firstChild != input.parentNode.lastChild)
+            input.parentNode.removeChild(input.parentNode.lastChild);
+        function addTextResult(value) { addText(value + ': ' + eval(value)); }
+        addTextResult('input.value');
+        addTextResult('internals.suggestedValue(input)');
+        addTextResult('input.selectionStart');
+        addTextResult('input.selectionEnd');
+    }
+
+    log();
+    Markup.dump(input.parentNode, 'After setting suggestedValue');
+
+    input.value = 'new value';
+
+    log();
+    var innerTextValue = internals.shadowRoot(input).firstChild.innerText;
+    addText(innerTextValue == 'new value' ? 'PASS' : 'FAIL');
+    Markup.dump(input.parentNode, 'After setting value');
+}
+
+</script>
+</body>
+</html>

Modified: trunk/Source/WebCore/ChangeLog (94636 => 94637)


--- trunk/Source/WebCore/ChangeLog	2011-09-07 04:35:50 UTC (rev 94636)
+++ trunk/Source/WebCore/ChangeLog	2011-09-07 04:43:33 UTC (rev 94637)
@@ -1,3 +1,18 @@
+2011-09-06  Ryosuke Niwa  <[email protected]>
+
+        REGRESSION(r94274): The inner text value of an input element is not updated when input.value is set
+        https://bugs.webkit.org/show_bug.cgi?id=67681
+
+        Reviewed by Kent Tamura.
+
+        The bug was caused by HTMLInputElement::setValue's not clearing m_suggestedValue before updateInnerTextValue is called.
+        Since updateInnerTextValue uses the suggested value when one is present, we need to clear m_suggestedValue in advance.
+
+        Test: fast/forms/suggested-value-after-setvalue.html
+
+        * html/HTMLInputElement.cpp:
+        (WebCore::HTMLInputElement::setValue):
+
 2011-09-06  Adam Barth  <[email protected]>
 
         Attempt to fix GTK build.

Modified: trunk/Source/WebCore/html/HTMLInputElement.cpp (94636 => 94637)


--- trunk/Source/WebCore/html/HTMLInputElement.cpp	2011-09-07 04:35:50 UTC (rev 94636)
+++ trunk/Source/WebCore/html/HTMLInputElement.cpp	2011-09-07 04:43:33 UTC (rev 94637)
@@ -1102,6 +1102,7 @@
 
     setNeedsValidityCheck();
 
+    m_suggestedValue = String(); // updateInnerTextValue uses the suggested value.
     if (valueChanged)
         updateInnerTextValue();
 
@@ -1111,7 +1112,6 @@
             setSelectionRange(max, max);
         else
             cacheSelection(max, max, SelectionHasNoDirection);
-        m_suggestedValue = String();
     }
 
     if (!valueChanged)
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to