Title: [94883] branches/chromium/874
- Revision
- 94883
- Author
- [email protected]
- Date
- 2011-09-09 16:05:18 -0700 (Fri, 09 Sep 2011)
Log Message
Merge 94637 - 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.
[email protected]
Review URL: http://codereview.chromium.org/7768005
Modified Paths
Added Paths
Diff
Copied: branches/chromium/874/LayoutTests/fast/forms/suggested-value-after-setvalue-expected.txt (from rev 94637, trunk/LayoutTests/fast/forms/suggested-value-after-setvalue-expected.txt) (0 => 94883)
--- branches/chromium/874/LayoutTests/fast/forms/suggested-value-after-setvalue-expected.txt (rev 0)
+++ branches/chromium/874/LayoutTests/fast/forms/suggested-value-after-setvalue-expected.txt 2011-09-09 23:05:18 UTC (rev 94883)
@@ -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"
Copied: branches/chromium/874/LayoutTests/fast/forms/suggested-value-after-setvalue.html (from rev 94637, trunk/LayoutTests/fast/forms/suggested-value-after-setvalue.html) (0 => 94883)
--- branches/chromium/874/LayoutTests/fast/forms/suggested-value-after-setvalue.html (rev 0)
+++ branches/chromium/874/LayoutTests/fast/forms/suggested-value-after-setvalue.html 2011-09-09 23:05:18 UTC (rev 94883)
@@ -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: branches/chromium/874/Source/WebCore/html/HTMLInputElement.cpp (94882 => 94883)
--- branches/chromium/874/Source/WebCore/html/HTMLInputElement.cpp 2011-09-09 23:03:13 UTC (rev 94882)
+++ branches/chromium/874/Source/WebCore/html/HTMLInputElement.cpp 2011-09-09 23:05:18 UTC (rev 94883)
@@ -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