Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1059)

Side by Side Diff: third_party/WebKit/LayoutTests/fast/events/onchange-js.html

Issue 2467263002: INPUT/TEXTAREA elements: Dispatch 'change' event even if a user-edit value is overwritten by JS (Closed)
Patch Set: Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | third_party/WebKit/LayoutTests/fast/events/onchange-js-expected.txt » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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>
OLDNEW
« no previous file with comments | « no previous file | third_party/WebKit/LayoutTests/fast/events/onchange-js-expected.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698