| OLD | NEW |
| 1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
| 2 <html> | 2 <html> |
| 3 <head> | 3 <head> |
| 4 <script src="../../resources/js-test.js"></script> | 4 <script src="../../resources/js-test.js"></script> |
| 5 </head> | 5 </head> |
| 6 <body> | 6 <body> |
| 7 <div id=container> |
| 7 <input id="input" type="text" onchange="changeHandler()"> | 8 <input id="input" type="text" onchange="changeHandler()"> |
| 9 <input id="number" type="number" onchange="changeHandler()"> |
| 10 <textarea id="textarea" onchange="changeHandler()"></textarea> |
| 11 </div> |
| 8 <script> | 12 <script> |
| 9 description('This test verifies that the change event is fired, when value is ch
anged in change event handler.'); | 13 description('This test verifies that the change event is fired, when value is ch
anged by JavaScript code.'); |
| 10 var input = document.getElementById('input'); | |
| 11 var changeEventCounter = 0; | 14 var changeEventCounter = 0; |
| 15 // shouldBe*() can refer to only global variables. |
| 16 var element; |
| 12 function changeHandler() | 17 function changeHandler() |
| 13 { | 18 { |
| 14 changeEventCounter++; | 19 changeEventCounter++; |
| 15 input.value = ''; | 20 element.value = ''; |
| 16 } | 21 } |
| 17 | 22 |
| 18 input.focus(); | 23 function testValueUpdateOnChange(userInput) { |
| 19 document.execCommand('InsertText', false, 'foo bar baz'); | 24 debug('Value is updated in change event handler.'); |
| 20 shouldBeEqualToString('input.value', 'foo bar baz'); | 25 changeEventCounter = 0; |
| 21 input.blur(); | 26 element.focus(); |
| 22 shouldBe('changeEventCounter', '1'); | 27 document.execCommand('InsertText', false, userInput); |
| 23 shouldBeEqualToString('input.value', ''); | 28 shouldBeEqualToString('element.value', userInput); |
| 29 element.blur(); |
| 30 shouldBe('changeEventCounter', '1'); |
| 31 shouldBeEqualToString('element.value', ''); |
| 24 | 32 |
| 25 input.focus(); | 33 element.focus(); |
| 26 document.execCommand('InsertText', false, 'foo bar baz'); | 34 document.execCommand('InsertText', false, userInput); |
| 27 shouldBeEqualToString('input.value', 'foo bar baz'); | 35 shouldBeEqualToString('element.value', userInput); |
| 28 input.blur(); | 36 element.blur(); |
| 29 shouldBe('changeEventCounter', '2'); | 37 shouldBe('changeEventCounter', '2'); |
| 38 } |
| 39 |
| 40 function testValueUpdateWithoutUserEdit(jsInput) { |
| 41 debug('Value is updated while element is focused.'); |
| 42 changeEventCounter = 0; |
| 43 element.value = ''; |
| 44 element.focus(); |
| 45 element.value = jsInput; |
| 46 element.blur(); |
| 47 shouldBe('changeEventCounter', '0'); |
| 48 } |
| 49 |
| 50 function testValueUpdateAfterUserEdit(userInput, jsInput) { |
| 51 debug('Value is updated after a user edit.'); |
| 52 changeEventCounter = 0; |
| 53 element.value = '0'; |
| 54 element.focus(); |
| 55 document.execCommand('InsertText', false, userInput); |
| 56 element.value = jsInput; |
| 57 element.blur(); |
| 58 shouldBe('changeEventCounter', '1'); |
| 59 } |
| 60 |
| 61 debug('===> Tests for INPUT[type=text]'); |
| 62 element = document.getElementById('input'); |
| 63 testValueUpdateOnChange('foo bar'); |
| 64 testValueUpdateWithoutUserEdit('FOO BAR'); |
| 65 testValueUpdateAfterUserEdit('foo bar', 'FOO BAR'); |
| 66 |
| 67 debug('===> Tests for INPUT[type=number]'); |
| 68 element = document.getElementById('number'); |
| 69 testValueUpdateOnChange('123'); |
| 70 testValueUpdateWithoutUserEdit('999'); |
| 71 testValueUpdateAfterUserEdit('123', '999'); |
| 72 |
| 73 debug('===> Tests for TEXTAREA'); |
| 74 element = document.getElementById('textarea'); |
| 75 testValueUpdateOnChange('foo bar'); |
| 76 testValueUpdateWithoutUserEdit('FOO BAR'); |
| 77 testValueUpdateAfterUserEdit('foo bar', 'FOO BAR'); |
| 78 |
| 79 document.querySelector('#container').remove(); |
| 30 </script> | 80 </script> |
| 31 </body> | 81 </body> |
| 32 </html> | 82 </html> |
| OLD | NEW |