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

Side by Side Diff: LayoutTests/fast/forms/textarea-maxlength.html

Issue 22590003: input/textarea: Count value length with the standard way. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: comment in a test Created 7 years, 4 months 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 | Annotate | Revision Log
OLDNEW
1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> 1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
2 <html> 2 <html>
3 <head> 3 <head>
4 <script src="../../fast/js/resources/js-test-pre.js"></script> 4 <script src="../../fast/js/resources/js-test-pre.js"></script>
5 </head> 5 </head>
6 <body> 6 <body>
7 <p id="description"></p> 7 <p id="description"></p>
8 <div id="console"></div> 8 <div id="console"></div>
9 <script> 9 <script>
10 description('Tests for HTMLTextAreaElement.maxLength behaviors.'); 10 description('Tests for HTMLTextAreaElement.maxLength behaviors.');
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
105 105
106 // Confirms correct count for open consecutive linebreaks inputs. 106 // Confirms correct count for open consecutive linebreaks inputs.
107 createFocusedTextAreaWithMaxLength(6); 107 createFocusedTextAreaWithMaxLength(6);
108 document.execCommand('insertLineBreak'); 108 document.execCommand('insertLineBreak');
109 document.execCommand('insertLineBreak'); 109 document.execCommand('insertLineBreak');
110 document.execCommand('insertLineBreak'); 110 document.execCommand('insertLineBreak');
111 document.execCommand('insertLineBreak'); 111 document.execCommand('insertLineBreak');
112 shouldBe('textArea.value', '"\\n\\n\\n"'); 112 shouldBe('textArea.value', '"\\n\\n\\n"');
113 113
114 // According to the HTML5 specification, maxLength is code-point length. 114 // According to the HTML5 specification, maxLength is code-point length.
115 // However WebKit handles it as grapheme length. 115 // Blink follows it though WebKit handles it as grapheme length.
116 116
117 // fancyX should be treated as 1 grapheme. 117 // fancyX should be treated as 1 grapheme.
118 var fancyX = "x\u0305\u0332";// + String.fromCharCode(0x305) + String.fromCharCo de(0x332); 118 var fancyX = "x\u0305\u0332";// + String.fromCharCode(0x305) + String.fromCharCo de(0x332);
119 // u10000 is one character consisted of a surrogate pair. 119 // u10000 is one character consisted of a surrogate pair.
120 var u10000 = "\ud800\udc00"; 120 var u10000 = "\ud800\udc00";
121 121
122 // Inserts 5 code-points in UTF-16 122 debug('Inserts 2 normal characters + a combining letter with 3 code points into a maxlength=3 element.')
123 createFocusedTextAreaWithMaxLength(3); 123 createFocusedTextAreaWithMaxLength(3);
124 document.execCommand('insertText', false, 'AB' + fancyX); 124 document.execCommand('insertText', false, 'AB' + fancyX);
125 shouldBe('textArea.value', '"AB" + fancyX'); 125 shouldBeEqualToString('textArea.value', 'ABx');
126 shouldBe('textArea.value.length', '5'); 126 shouldBe('textArea.value.length', '3');
127 127
128 createFocusedTextAreaWithMaxLength(3); 128 createFocusedTextAreaWithMaxLength(3);
129 textArea.value = 'AB' + fancyX; 129 textArea.value = 'AB' + fancyX;
130 textArea.setSelectionRange(2, 5); // Select fancyX 130 textArea.setSelectionRange(2, 5); // Select fancyX
131 document.execCommand('insertText', false, 'CDE'); 131 document.execCommand('insertText', false, 'CDE');
132 shouldBe('textArea.value', '"ABC"'); 132 shouldBe('textArea.value', '"ABC"');
133 133
134 // Inserts 4 code-points in UTF-16 134 debug('Inserts 2 normal characters + one surrogate pair into a maxlength=3 eleme nt');
135 createFocusedTextAreaWithMaxLength(3); 135 createFocusedTextAreaWithMaxLength(3);
136 document.execCommand('insertText', false, 'AB' + u10000); 136 document.execCommand('insertText', false, 'AB' + u10000);
137 shouldBe('textArea.value', '"AB" + u10000'); 137 shouldBeEqualToString('textArea.value', 'AB');
138 shouldBe('textArea.value.length', '4'); 138 shouldBe('textArea.value.length', '2');
139 139
140 createFocusedTextAreaWithMaxLength(3); 140 createFocusedTextAreaWithMaxLength(3);
141 textArea.value = 'AB' + u10000; 141 textArea.value = 'AB' + u10000;
142 textArea.setSelectionRange(2, 4); // Select u10000 142 textArea.setSelectionRange(2, 4); // Select u10000
143 document.execCommand('insertText', false, 'CDE'); 143 document.execCommand('insertText', false, 'CDE');
144 shouldBe('textArea.value', '"ABC"'); 144 shouldBe('textArea.value', '"ABC"');
145 145
146 // In the case maxlength=0 146 // In the case maxlength=0
147 createFocusedTextAreaWithMaxLength(0); 147 createFocusedTextAreaWithMaxLength(0);
148 textArea.value = ''; 148 textArea.value = '';
149 document.execCommand('insertText', false, 'ABC'); 149 document.execCommand('insertText', false, 'ABC');
150 shouldBe('textArea.value', '""'); 150 shouldBe('textArea.value', '""');
151 151
152 // In the case maxlength='' 152 // In the case maxlength=''
153 createFocusedTextAreaWithMaxLength(''); 153 createFocusedTextAreaWithMaxLength('');
154 textArea.value = ''; 154 textArea.value = '';
155 document.execCommand('insertText', false, 'ABC'); 155 document.execCommand('insertText', false, 'ABC');
156 shouldBe('textArea.value', '"ABC"'); 156 shouldBe('textArea.value', '"ABC"');
157 157
158 // In the case maxlength='invalid' 158 // In the case maxlength='invalid'
159 createFocusedTextAreaWithMaxLength('invalid'); 159 createFocusedTextAreaWithMaxLength('invalid');
160 textArea.value = ''; 160 textArea.value = '';
161 document.execCommand('insertText', false, 'ABC'); 161 document.execCommand('insertText', false, 'ABC');
162 shouldBe('textArea.value', '"ABC"'); 162 shouldBe('textArea.value', '"ABC"');
163 </script> 163 </script>
164 <script src="../../fast/js/resources/js-test-post.js"></script> 164 <script src="../../fast/js/resources/js-test-post.js"></script>
165 </body> 165 </body>
166 </html> 166 </html>
OLDNEW
« no previous file with comments | « LayoutTests/fast/forms/input-text-paste-maxlength-expected.txt ('k') | LayoutTests/fast/forms/textarea-maxlength-expected.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698