Changeset 85373 in webkit
- Timestamp:
- Apr 29, 2011 5:15:01 PM (13 years ago)
- Location:
- trunk
- Files:
-
- 1 deleted
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r85367 r85373 1 2011-04-29 Emil A Eklund <eae@chromium.org> 2 3 Reviewed by Dimitri Glazkov. 4 5 Onchange on text fields has an incoherent behavior 6 https://bugs.webkit.org/show_bug.cgi?id=57330 7 8 Add tests for typing and then deleting text from an empty field. 9 10 * fast/events/onchange-text-form-field-expected.txt: 11 * fast/events/onchange-text-form-field.html: 12 * platform/gtk/fast/events/onchange-text-form-field-expected.txt: Removed. 13 1 14 2011-04-29 Kenneth Russell <kbr@google.com> 2 15 -
trunk/LayoutTests/fast/events/onchange-text-form-field-expected.txt
r81978 r85373 1 2 PASS simulateTextEntry(elements[0], '', true); is false 3 PASS simulateTextEntry(elements[0], 'fo', true); is true 4 PASS simulateTextEntry(elements[0], 'o', false); is true 5 PASS simulateTextEntry(elements[0], 'foo', true); is false 6 PASS simulateTextEntry(elements[0], 'foo', true); is false 7 PASS simulateTextEntry(elements[0], ' ', false); is true 8 PASS simulateTextEntry(elements[0], 'foo bar', true); is true 9 PASS simulateTextEntry(elements[0], 'foo bar', true); is false 1 PASS simulateTextEntry(elements[0], '', BEFORE); is false 2 PASS simulateTextEntry(elements[0], 'fo', BEFORE); is true 3 PASS simulateTextEntry(elements[0], 'o'); is true 4 PASS simulateTextEntry(elements[0], 'foo', BEFORE); is false 5 PASS simulateTextEntry(elements[0], 'foo', BEFORE); is false 6 PASS simulateTextEntry(elements[0], ' '); is true 7 PASS simulateTextEntry(elements[0], 'foo bar', BEFORE); is true 8 PASS simulateTextEntry(elements[0], 'foo bar', BEFORE); is false 10 9 PASS setTextValue(elements[0], 'foo'); is false 11 PASS simulateTextEntry(elements[0], 'foo bar', true); is true 12 PASS simulateTextEntry(elements[1], '', true); is true 13 PASS simulateTextEntry(elements[1], 'fo', true); is true 14 PASS simulateTextEntry(elements[1], 'o', false); is true 15 PASS simulateTextEntry(elements[1], 'foo', true); is false 16 PASS simulateTextEntry(elements[2], '', true); is false 17 PASS simulateTextEntry(elements[2], 'fo', true); is true 18 PASS simulateTextEntry(elements[2], 'o', false); is true 19 PASS simulateTextEntry(elements[2], 'foo', true); is false 20 PASS simulateTextEntry(elements[3], 'foo', true); is false 21 PASS simulateTextEntry(elements[3], 'foo', true); is false 10 PASS simulateTextEntry(elements[0], 'foo bar', BEFORE); is true 11 PASS simulateTextEntry(elements[1], '', BEFORE); is true 12 PASS simulateTextEntry(elements[1], 'fo', BEFORE); is true 13 PASS simulateTextEntry(elements[1], 'o'); is true 14 PASS simulateTextEntry(elements[1], 'foo', BEFORE); is false 15 PASS simulateTextEntry(elements[2], 'wee', AFTER); is false 16 PASS simulateTextEntry(elements[2], 'foo', BEFORE | AFTER); is false 17 PASS simulateTextEntry(elements[2], 'fo', BEFORE); is true 18 PASS simulateTextEntry(elements[2], 'o'); is true 19 PASS simulateTextEntry(elements[2], 'foo', BEFORE); is false 20 PASS simulateTextEntry(elements[3], 'foo', BEFORE); is false 21 PASS simulateTextEntry(elements[3], 'foo', BEFORE); is false 22 22 PASS setTextValue(elements[3], ''); is false 23 PASS simulateTextEntry(elements[3], 'fo', true); is true 24 PASS simulateTextEntry(elements[3], 'o', false); is true 25 PASS simulateTextEntry(elements[3], 'foo', true); is false 23 PASS simulateTextEntry(elements[3], 'fo', BEFORE); is true 24 PASS simulateTextEntry(elements[3], 'o'); is true 25 PASS simulateTextEntry(elements[3], 'foo', BEFORE); is false 26 PASS simulateTextEntry(elements[4], 'foo', AFTER); is false 27 PASS simulateTextEntry(elements[4], 'foo'); is true 28 PASS simulateTextEntry(elements[4], 'foo', BEFORE); is false 29 PASS simulateTextEntry(elements[4], 'foo', BEFORE | AFTER); is true 30 PASS simulateTextEntry(elements[4], '', AFTER); is false 31 PASS simulateTextEntry(elements[4], 'foo', AFTER); is false 26 32 -
trunk/LayoutTests/fast/events/onchange-text-form-field.html
r81978 r85373 8 8 <textarea></textarea> 9 9 <textarea>foo</textarea> 10 <input type="text"> 10 11 </div> 11 12 <div id="console"></div> … … 13 14 <script> 14 15 15 function simulateTextEntry(element, text, opt_clear) { 16 var BEFORE = 1; 17 var AFTER = 2; 18 19 function simulateTextEntry(element, text, opt_clear) 20 { 16 21 if (!window.eventSender) 17 22 return null; … … 23 28 element.addEventListener('change', listener, false); 24 29 element.focus(); 25 if (opt_clear ) {30 if (opt_clear & BEFORE) { 26 31 element.select(); 27 32 eventSender.keyDown('delete'); … … 29 34 for (var i = 0; i < text.length; i++) { 30 35 eventSender.keyDown(text.charAt(i)); 36 } 37 if (opt_clear & AFTER) { 38 element.select(); 39 eventSender.keyDown('delete'); 31 40 } 32 41 element.blur(); … … 36 45 37 46 38 function setTextValue(element, text) { 47 function setTextValue(element, text) 48 { 39 49 var firedEvent = false; 40 50 function listener(event) { … … 51 61 var elements = document.getElementById('test').getElementsByTagName('*'); 52 62 53 shouldBe("simulateTextEntry(elements[0], '', true);", "false");54 shouldBe("simulateTextEntry(elements[0], 'fo', true);", "true");55 shouldBe("simulateTextEntry(elements[0], 'o' , false);", "true");56 shouldBe("simulateTextEntry(elements[0], 'foo', true); ", "false");57 shouldBe("simulateTextEntry(elements[0], 'foo', true); ", "false");58 shouldBe("simulateTextEntry(elements[0], ' ' , false); ", "true");59 shouldBe("simulateTextEntry(elements[0], 'foo bar', true); ", "true");60 shouldBe("simulateTextEntry(elements[0], 'foo bar', true); ", "false");63 shouldBe("simulateTextEntry(elements[0], '', BEFORE);", "false"); 64 shouldBe("simulateTextEntry(elements[0], 'fo', BEFORE);", "true"); 65 shouldBe("simulateTextEntry(elements[0], 'o');", "true"); 66 shouldBe("simulateTextEntry(elements[0], 'foo', BEFORE); ", "false"); 67 shouldBe("simulateTextEntry(elements[0], 'foo', BEFORE); ", "false"); 68 shouldBe("simulateTextEntry(elements[0], ' '); ", "true"); 69 shouldBe("simulateTextEntry(elements[0], 'foo bar', BEFORE); ", "true"); 70 shouldBe("simulateTextEntry(elements[0], 'foo bar', BEFORE); ", "false"); 61 71 shouldBe("setTextValue(elements[0], 'foo'); ", "false"); 62 shouldBe("simulateTextEntry(elements[0], 'foo bar', true);", "true");72 shouldBe("simulateTextEntry(elements[0], 'foo bar', BEFORE);", "true"); 63 73 64 shouldBe("simulateTextEntry(elements[1], '', true);", "true");65 shouldBe("simulateTextEntry(elements[1], 'fo', true);", "true");66 shouldBe("simulateTextEntry(elements[1], 'o' , false);", "true");67 shouldBe("simulateTextEntry(elements[1], 'foo', true); ", "false");74 shouldBe("simulateTextEntry(elements[1], '', BEFORE);", "true"); 75 shouldBe("simulateTextEntry(elements[1], 'fo', BEFORE);", "true"); 76 shouldBe("simulateTextEntry(elements[1], 'o');", "true"); 77 shouldBe("simulateTextEntry(elements[1], 'foo', BEFORE); ", "false"); 68 78 69 shouldBe("simulateTextEntry(elements[2], '', true);", "false"); 70 shouldBe("simulateTextEntry(elements[2], 'fo', true);", "true"); 71 shouldBe("simulateTextEntry(elements[2], 'o', false);", "true"); 72 shouldBe("simulateTextEntry(elements[2], 'foo', true); ", "false"); 79 shouldBe("simulateTextEntry(elements[2], 'wee', AFTER);", "false"); 80 shouldBe("simulateTextEntry(elements[2], 'foo', BEFORE | AFTER);", "false"); 81 shouldBe("simulateTextEntry(elements[2], 'fo', BEFORE);", "true"); 82 shouldBe("simulateTextEntry(elements[2], 'o');", "true"); 83 shouldBe("simulateTextEntry(elements[2], 'foo', BEFORE); ", "false"); 73 84 74 shouldBe("simulateTextEntry(elements[3], 'foo', true);", "false");75 shouldBe("simulateTextEntry(elements[3], 'foo', true);", "false");85 shouldBe("simulateTextEntry(elements[3], 'foo', BEFORE);", "false"); 86 shouldBe("simulateTextEntry(elements[3], 'foo', BEFORE);", "false"); 76 87 shouldBe("setTextValue(elements[3], ''); ", "false"); 77 shouldBe("simulateTextEntry(elements[3], 'fo', true);", "true"); 78 shouldBe("simulateTextEntry(elements[3], 'o', false);", "true"); 79 shouldBe("simulateTextEntry(elements[3], 'foo', true); ", "false"); 88 shouldBe("simulateTextEntry(elements[3], 'fo', BEFORE);", "true"); 89 shouldBe("simulateTextEntry(elements[3], 'o');", "true"); 90 shouldBe("simulateTextEntry(elements[3], 'foo', BEFORE); ", "false"); 91 92 shouldBe("simulateTextEntry(elements[4], 'foo', AFTER);", "false"); 93 shouldBe("simulateTextEntry(elements[4], 'foo');", "true"); 94 shouldBe("simulateTextEntry(elements[4], 'foo', BEFORE);", "false"); 95 shouldBe("simulateTextEntry(elements[4], 'foo', BEFORE | AFTER);", "true"); 96 shouldBe("simulateTextEntry(elements[4], '', AFTER);", "false"); 97 shouldBe("simulateTextEntry(elements[4], 'foo', AFTER);", "false"); 98 99 // Hide test elements after run to avoid whitespace differences across platforms in the results. 100 document.getElementById('test').style.display = 'none'; 80 101 </script> 81 102 </html> -
trunk/Source/WebCore/ChangeLog
r85357 r85373 1 2011-04-29 Emil A Eklund <eae@chromium.org> 2 3 Reviewed by Dimitri Glazkov. 4 5 Onchange on text fields has an incoherent behavior 6 https://bugs.webkit.org/show_bug.cgi?id=57330 7 8 * html/HTMLFormControlElement.cpp: 9 (WebCore::HTMLTextFormControlElement::insertedIntoDocument): 10 Initialize m_textAsOfLastFormControlChangeEvent to empty string rather 11 than null for empty fields. 12 1 13 2011-04-29 Csaba Osztrogonác <ossy@webkit.org> 2 14 -
trunk/Source/WebCore/html/HTMLFormControlElement.cpp
r85094 r85373 556 556 { 557 557 HTMLFormControlElement::insertedIntoDocument(); 558 setTextAsOfLastFormControlChangeEvent(value()); 558 String initialValue = value(); 559 setTextAsOfLastFormControlChangeEvent(initialValue.isNull() ? String("") : initialValue); 559 560 } 560 561
Note: See TracChangeset
for help on using the changeset viewer.