OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "ui/base/ime/chromeos/character_composer.h" | 5 #include "ui/base/ime/chromeos/character_composer.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include "base/macros.h" | 9 #include "base/macros.h" |
10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
100 } | 100 } |
101 | 101 |
102 CharacterComposer character_composer_; | 102 CharacterComposer character_composer_; |
103 }; | 103 }; |
104 | 104 |
105 TEST_F(CharacterComposerTest, InitialState) { | 105 TEST_F(CharacterComposerTest, InitialState) { |
106 EXPECT_TRUE(character_composer_.composed_character().empty()); | 106 EXPECT_TRUE(character_composer_.composed_character().empty()); |
107 } | 107 } |
108 | 108 |
109 TEST_F(CharacterComposerTest, NormalKeyIsNotFiltered) { | 109 TEST_F(CharacterComposerTest, NormalKeyIsNotFiltered) { |
110 ExpectUnicodeKeyNotFiltered(VKEY_B, DomCode::KEY_B, EF_NONE, 'B'); | 110 ExpectUnicodeKeyNotFiltered(VKEY_B, DomCode::US_B, EF_NONE, 'B'); |
111 ExpectUnicodeKeyNotFiltered(VKEY_Z, DomCode::KEY_Z, EF_NONE, 'Z'); | 111 ExpectUnicodeKeyNotFiltered(VKEY_Z, DomCode::US_Z, EF_NONE, 'Z'); |
112 ExpectUnicodeKeyNotFiltered(VKEY_C, DomCode::KEY_C, EF_NONE, 'c'); | 112 ExpectUnicodeKeyNotFiltered(VKEY_C, DomCode::US_C, EF_NONE, 'c'); |
113 ExpectUnicodeKeyNotFiltered(VKEY_M, DomCode::KEY_M, EF_NONE, 'm'); | 113 ExpectUnicodeKeyNotFiltered(VKEY_M, DomCode::US_M, EF_NONE, 'm'); |
114 ExpectUnicodeKeyNotFiltered(VKEY_0, DomCode::DIGIT0, EF_NONE, '0'); | 114 ExpectUnicodeKeyNotFiltered(VKEY_0, DomCode::DIGIT0, EF_NONE, '0'); |
115 ExpectUnicodeKeyNotFiltered(VKEY_1, DomCode::DIGIT1, EF_NONE, '1'); | 115 ExpectUnicodeKeyNotFiltered(VKEY_1, DomCode::DIGIT1, EF_NONE, '1'); |
116 ExpectUnicodeKeyNotFiltered(VKEY_8, DomCode::DIGIT8, EF_NONE, '8'); | 116 ExpectUnicodeKeyNotFiltered(VKEY_8, DomCode::DIGIT8, EF_NONE, '8'); |
117 } | 117 } |
118 | 118 |
119 TEST_F(CharacterComposerTest, PartiallyMatchingSequence) { | 119 TEST_F(CharacterComposerTest, PartiallyMatchingSequence) { |
120 // Composition with sequence ['dead acute', '1'] will fail. | 120 // Composition with sequence ['dead acute', '1'] will fail. |
121 ExpectDeadKeyFiltered(kCombiningAcute); | 121 ExpectDeadKeyFiltered(kCombiningAcute); |
122 ExpectUnicodeKeyFiltered(VKEY_1, DomCode::DIGIT1, 0, '1'); | 122 ExpectUnicodeKeyFiltered(VKEY_1, DomCode::DIGIT1, 0, '1'); |
123 | 123 |
124 // Composition with sequence ['dead acute', 'dead circumflex', '1'] will fail. | 124 // Composition with sequence ['dead acute', 'dead circumflex', '1'] will fail. |
125 ExpectDeadKeyFiltered(kCombiningAcute); | 125 ExpectDeadKeyFiltered(kCombiningAcute); |
126 ExpectDeadKeyFiltered(kCombiningCircumflex); | 126 ExpectDeadKeyFiltered(kCombiningCircumflex); |
127 ExpectUnicodeKeyFiltered(VKEY_1, DomCode::DIGIT1, 0, '1'); | 127 ExpectUnicodeKeyFiltered(VKEY_1, DomCode::DIGIT1, 0, '1'); |
128 } | 128 } |
129 | 129 |
130 TEST_F(CharacterComposerTest, FullyMatchingSequences) { | 130 TEST_F(CharacterComposerTest, FullyMatchingSequences) { |
131 // LATIN SMALL LETTER A WITH ACUTE | 131 // LATIN SMALL LETTER A WITH ACUTE |
132 ExpectDeadKeyFiltered(kCombiningAcute); | 132 ExpectDeadKeyFiltered(kCombiningAcute); |
133 ExpectUnicodeKeyComposed(VKEY_A, DomCode::KEY_A, EF_NONE, 'a', | 133 ExpectUnicodeKeyComposed(VKEY_A, DomCode::US_A, EF_NONE, 'a', |
134 base::string16(1, 0x00E1)); | 134 base::string16(1, 0x00E1)); |
135 // LATIN CAPITAL LETTER A WITH ACUTE | 135 // LATIN CAPITAL LETTER A WITH ACUTE |
136 ExpectDeadKeyFiltered(kCombiningAcute); | 136 ExpectDeadKeyFiltered(kCombiningAcute); |
137 ExpectUnicodeKeyComposed(VKEY_A, DomCode::KEY_A, EF_NONE, 'A', | 137 ExpectUnicodeKeyComposed(VKEY_A, DomCode::US_A, EF_NONE, 'A', |
138 base::string16(1, 0x00C1)); | 138 base::string16(1, 0x00C1)); |
139 // GRAVE ACCENT | 139 // GRAVE ACCENT |
140 ExpectDeadKeyFiltered(kCombiningGrave); | 140 ExpectDeadKeyFiltered(kCombiningGrave); |
141 ExpectDeadKeyComposed(kCombiningGrave, base::string16(1, 0x0060)); | 141 ExpectDeadKeyComposed(kCombiningGrave, base::string16(1, 0x0060)); |
142 // LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE | 142 // LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE |
143 ExpectDeadKeyFiltered(kCombiningAcute); | 143 ExpectDeadKeyFiltered(kCombiningAcute); |
144 ExpectDeadKeyFiltered(kCombiningCircumflex); | 144 ExpectDeadKeyFiltered(kCombiningCircumflex); |
145 ExpectUnicodeKeyComposed(VKEY_A, DomCode::KEY_A, EF_NONE, 'a', | 145 ExpectUnicodeKeyComposed(VKEY_A, DomCode::US_A, EF_NONE, 'a', |
146 base::string16(1, 0x1EA5)); | 146 base::string16(1, 0x1EA5)); |
147 // LATIN CAPITAL LETTER U WITH HORN AND GRAVE | 147 // LATIN CAPITAL LETTER U WITH HORN AND GRAVE |
148 ExpectDeadKeyFiltered(kCombiningGrave); | 148 ExpectDeadKeyFiltered(kCombiningGrave); |
149 ExpectDeadKeyFiltered(kCombiningHorn); | 149 ExpectDeadKeyFiltered(kCombiningHorn); |
150 ExpectUnicodeKeyComposed(VKEY_U, DomCode::KEY_U, EF_NONE, 'U', | 150 ExpectUnicodeKeyComposed(VKEY_U, DomCode::US_U, EF_NONE, 'U', |
151 base::string16(1, 0x1EEA)); | 151 base::string16(1, 0x1EEA)); |
152 // LATIN CAPITAL LETTER C WITH CEDILLA | 152 // LATIN CAPITAL LETTER C WITH CEDILLA |
153 ExpectDeadKeyFiltered(kCombiningAcute); | 153 ExpectDeadKeyFiltered(kCombiningAcute); |
154 ExpectUnicodeKeyComposed(VKEY_C, DomCode::KEY_C, EF_NONE, 'C', | 154 ExpectUnicodeKeyComposed(VKEY_C, DomCode::US_C, EF_NONE, 'C', |
155 base::string16(1, 0x00C7)); | 155 base::string16(1, 0x00C7)); |
156 // LATIN SMALL LETTER C WITH CEDILLA | 156 // LATIN SMALL LETTER C WITH CEDILLA |
157 ExpectDeadKeyFiltered(kCombiningAcute); | 157 ExpectDeadKeyFiltered(kCombiningAcute); |
158 ExpectUnicodeKeyComposed(VKEY_C, DomCode::KEY_C, EF_NONE, 'c', | 158 ExpectUnicodeKeyComposed(VKEY_C, DomCode::US_C, EF_NONE, 'c', |
159 base::string16(1, 0x00E7)); | 159 base::string16(1, 0x00E7)); |
160 // GREEK SMALL LETTER EPSILON WITH TONOS | 160 // GREEK SMALL LETTER EPSILON WITH TONOS |
161 ExpectDeadKeyFiltered(kCombiningAcute); | 161 ExpectDeadKeyFiltered(kCombiningAcute); |
162 ExpectUnicodeKeyComposed(VKEY_E, DomCode::KEY_E, EF_NONE, 0x03B5, | 162 ExpectUnicodeKeyComposed(VKEY_E, DomCode::US_E, EF_NONE, 0x03B5, |
163 base::string16(1, 0x03AD)); | 163 base::string16(1, 0x03AD)); |
164 } | 164 } |
165 | 165 |
166 TEST_F(CharacterComposerTest, FullyMatchingSequencesAfterMatchingFailure) { | 166 TEST_F(CharacterComposerTest, FullyMatchingSequencesAfterMatchingFailure) { |
167 // Composition with sequence ['dead acute', 'dead circumflex', '1'] will fail. | 167 // Composition with sequence ['dead acute', 'dead circumflex', '1'] will fail. |
168 ExpectDeadKeyFiltered(kCombiningAcute); | 168 ExpectDeadKeyFiltered(kCombiningAcute); |
169 ExpectDeadKeyFiltered(kCombiningCircumflex); | 169 ExpectDeadKeyFiltered(kCombiningCircumflex); |
170 ExpectUnicodeKeyFiltered(VKEY_1, DomCode::DIGIT1, 0, '1'); | 170 ExpectUnicodeKeyFiltered(VKEY_1, DomCode::DIGIT1, 0, '1'); |
171 // LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE | 171 // LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE |
172 ExpectDeadKeyFiltered(kCombiningAcute); | 172 ExpectDeadKeyFiltered(kCombiningAcute); |
173 ExpectDeadKeyFiltered(kCombiningCircumflex); | 173 ExpectDeadKeyFiltered(kCombiningCircumflex); |
174 ExpectUnicodeKeyComposed(VKEY_A, DomCode::KEY_A, EF_NONE, 'a', | 174 ExpectUnicodeKeyComposed(VKEY_A, DomCode::US_A, EF_NONE, 'a', |
175 base::string16(1, 0x1EA5)); | 175 base::string16(1, 0x1EA5)); |
176 } | 176 } |
177 | 177 |
178 TEST_F(CharacterComposerTest, ComposedCharacterIsClearedAfterReset) { | 178 TEST_F(CharacterComposerTest, ComposedCharacterIsClearedAfterReset) { |
179 ExpectDeadKeyFiltered(kCombiningAcute); | 179 ExpectDeadKeyFiltered(kCombiningAcute); |
180 ExpectUnicodeKeyComposed(VKEY_A, DomCode::KEY_A, EF_NONE, 'a', | 180 ExpectUnicodeKeyComposed(VKEY_A, DomCode::US_A, EF_NONE, 'a', |
181 base::string16(1, 0x00E1)); | 181 base::string16(1, 0x00E1)); |
182 character_composer_.Reset(); | 182 character_composer_.Reset(); |
183 EXPECT_TRUE(character_composer_.composed_character().empty()); | 183 EXPECT_TRUE(character_composer_.composed_character().empty()); |
184 } | 184 } |
185 | 185 |
186 TEST_F(CharacterComposerTest, CompositionStateIsClearedAfterReset) { | 186 TEST_F(CharacterComposerTest, CompositionStateIsClearedAfterReset) { |
187 // Even though sequence ['dead acute', 'a'] will compose 'a with acute', | 187 // Even though sequence ['dead acute', 'a'] will compose 'a with acute', |
188 // no character is composed here because of reset. | 188 // no character is composed here because of reset. |
189 ExpectDeadKeyFiltered(kCombiningAcute); | 189 ExpectDeadKeyFiltered(kCombiningAcute); |
190 character_composer_.Reset(); | 190 character_composer_.Reset(); |
191 ExpectUnicodeKeyNotFiltered(VKEY_A, DomCode::KEY_A, EF_NONE, 'a'); | 191 ExpectUnicodeKeyNotFiltered(VKEY_A, DomCode::US_A, EF_NONE, 'a'); |
192 } | 192 } |
193 | 193 |
194 TEST_F(CharacterComposerTest, KeySequenceCompositionPreedit) { | 194 TEST_F(CharacterComposerTest, KeySequenceCompositionPreedit) { |
195 // LATIN SMALL LETTER A WITH ACUTE | 195 // LATIN SMALL LETTER A WITH ACUTE |
196 // preedit_string() is always empty in key sequence composition mode. | 196 // preedit_string() is always empty in key sequence composition mode. |
197 ExpectDeadKeyFiltered(kCombiningAcute); | 197 ExpectDeadKeyFiltered(kCombiningAcute); |
198 EXPECT_TRUE(character_composer_.preedit_string().empty()); | 198 EXPECT_TRUE(character_composer_.preedit_string().empty()); |
199 ExpectUnicodeKeyComposed(VKEY_A, DomCode::KEY_A, EF_NONE, 'a', | 199 ExpectUnicodeKeyComposed(VKEY_A, DomCode::US_A, EF_NONE, 'a', |
200 base::string16(1, 0x00E1)); | 200 base::string16(1, 0x00E1)); |
201 EXPECT_TRUE(character_composer_.preedit_string().empty()); | 201 EXPECT_TRUE(character_composer_.preedit_string().empty()); |
202 } | 202 } |
203 | 203 |
204 // Verify the structure of the primary |TreeComposeChecker| table. | 204 // Verify the structure of the primary |TreeComposeChecker| table. |
205 TEST_F(CharacterComposerTest, MainTableIsCorrectlyOrdered) { | 205 TEST_F(CharacterComposerTest, MainTableIsCorrectlyOrdered) { |
206 // This file is included here intentionally, instead of the top of the file, | 206 // This file is included here intentionally, instead of the top of the file, |
207 // because including this file at the top of the file will define a | 207 // because including this file at the top of the file will define a |
208 // global constant and contaminate the global namespace. | 208 // global constant and contaminate the global namespace. |
209 #include "ui/base/ime/chromeos/character_composer_data.h" | 209 #include "ui/base/ime/chromeos/character_composer_data.h" |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
259 EXPECT_LT(previous_key, key) << index; | 259 EXPECT_LT(previous_key, key) << index; |
260 previous_key = key; | 260 previous_key = key; |
261 index += 2; | 261 index += 2; |
262 } | 262 } |
263 } | 263 } |
264 } | 264 } |
265 } | 265 } |
266 | 266 |
267 TEST_F(CharacterComposerTest, HexadecimalComposition) { | 267 TEST_F(CharacterComposerTest, HexadecimalComposition) { |
268 // HIRAGANA LETTER A (U+3042) | 268 // HIRAGANA LETTER A (U+3042) |
269 ExpectUnicodeKeyFiltered(VKEY_U, DomCode::KEY_U, | 269 ExpectUnicodeKeyFiltered(VKEY_U, DomCode::US_U, |
270 EF_SHIFT_DOWN | EF_CONTROL_DOWN, 'U'); | 270 EF_SHIFT_DOWN | EF_CONTROL_DOWN, 'U'); |
271 ExpectUnicodeKeyFiltered(VKEY_3, DomCode::DIGIT3, EF_NONE, '3'); | 271 ExpectUnicodeKeyFiltered(VKEY_3, DomCode::DIGIT3, EF_NONE, '3'); |
272 ExpectUnicodeKeyFiltered(VKEY_0, DomCode::DIGIT0, EF_NONE, '0'); | 272 ExpectUnicodeKeyFiltered(VKEY_0, DomCode::DIGIT0, EF_NONE, '0'); |
273 ExpectUnicodeKeyFiltered(VKEY_4, DomCode::DIGIT4, EF_NONE, '4'); | 273 ExpectUnicodeKeyFiltered(VKEY_4, DomCode::DIGIT4, EF_NONE, '4'); |
274 ExpectUnicodeKeyFiltered(VKEY_2, DomCode::DIGIT2, EF_NONE, '2'); | 274 ExpectUnicodeKeyFiltered(VKEY_2, DomCode::DIGIT2, EF_NONE, '2'); |
275 ExpectUnicodeKeyComposed(VKEY_SPACE, DomCode::SPACE, EF_NONE, ' ', | 275 ExpectUnicodeKeyComposed(VKEY_SPACE, DomCode::SPACE, EF_NONE, ' ', |
276 base::string16(1, 0x3042)); | 276 base::string16(1, 0x3042)); |
277 // MUSICAL KEYBOARD (U+1F3B9) | 277 // MUSICAL KEYBOARD (U+1F3B9) |
278 const base::char16 kMusicalKeyboard[] = {0xd83c, 0xdfb9}; | 278 const base::char16 kMusicalKeyboard[] = {0xd83c, 0xdfb9}; |
279 ExpectUnicodeKeyFiltered(VKEY_U, DomCode::KEY_U, | 279 ExpectUnicodeKeyFiltered(VKEY_U, DomCode::US_U, |
280 EF_SHIFT_DOWN | EF_CONTROL_DOWN, 'U'); | 280 EF_SHIFT_DOWN | EF_CONTROL_DOWN, 'U'); |
281 ExpectUnicodeKeyFiltered(VKEY_1, DomCode::DIGIT1, EF_NONE, '1'); | 281 ExpectUnicodeKeyFiltered(VKEY_1, DomCode::DIGIT1, EF_NONE, '1'); |
282 ExpectUnicodeKeyFiltered(VKEY_F, DomCode::KEY_F, EF_NONE, 'f'); | 282 ExpectUnicodeKeyFiltered(VKEY_F, DomCode::US_F, EF_NONE, 'f'); |
283 ExpectUnicodeKeyFiltered(VKEY_3, DomCode::DIGIT3, EF_NONE, '3'); | 283 ExpectUnicodeKeyFiltered(VKEY_3, DomCode::DIGIT3, EF_NONE, '3'); |
284 ExpectUnicodeKeyFiltered(VKEY_B, DomCode::KEY_B, EF_NONE, 'b'); | 284 ExpectUnicodeKeyFiltered(VKEY_B, DomCode::US_B, EF_NONE, 'b'); |
285 ExpectUnicodeKeyFiltered(VKEY_9, DomCode::DIGIT9, EF_NONE, '9'); | 285 ExpectUnicodeKeyFiltered(VKEY_9, DomCode::DIGIT9, EF_NONE, '9'); |
286 ExpectUnicodeKeyComposed( | 286 ExpectUnicodeKeyComposed( |
287 VKEY_RETURN, DomCode::ENTER, EF_NONE, '\r', | 287 VKEY_RETURN, DomCode::ENTER, EF_NONE, '\r', |
288 base::string16(kMusicalKeyboard, | 288 base::string16(kMusicalKeyboard, |
289 kMusicalKeyboard + arraysize(kMusicalKeyboard))); | 289 kMusicalKeyboard + arraysize(kMusicalKeyboard))); |
290 } | 290 } |
291 | 291 |
292 TEST_F(CharacterComposerTest, HexadecimalCompositionPreedit) { | 292 TEST_F(CharacterComposerTest, HexadecimalCompositionPreedit) { |
293 // HIRAGANA LETTER A (U+3042) | 293 // HIRAGANA LETTER A (U+3042) |
294 ExpectUnicodeKeyFiltered(VKEY_U, DomCode::KEY_U, | 294 ExpectUnicodeKeyFiltered(VKEY_U, DomCode::US_U, |
295 EF_SHIFT_DOWN | EF_CONTROL_DOWN, 'U'); | 295 EF_SHIFT_DOWN | EF_CONTROL_DOWN, 'U'); |
296 EXPECT_EQ(ASCIIToUTF16("u"), character_composer_.preedit_string()); | 296 EXPECT_EQ(ASCIIToUTF16("u"), character_composer_.preedit_string()); |
297 ExpectUnicodeKeyFiltered(VKEY_3, DomCode::DIGIT3, 0, '3'); | 297 ExpectUnicodeKeyFiltered(VKEY_3, DomCode::DIGIT3, 0, '3'); |
298 EXPECT_EQ(ASCIIToUTF16("u3"), character_composer_.preedit_string()); | 298 EXPECT_EQ(ASCIIToUTF16("u3"), character_composer_.preedit_string()); |
299 ExpectUnicodeKeyFiltered(VKEY_0, DomCode::DIGIT0, 0, '0'); | 299 ExpectUnicodeKeyFiltered(VKEY_0, DomCode::DIGIT0, 0, '0'); |
300 EXPECT_EQ(ASCIIToUTF16("u30"), character_composer_.preedit_string()); | 300 EXPECT_EQ(ASCIIToUTF16("u30"), character_composer_.preedit_string()); |
301 ExpectUnicodeKeyFiltered(VKEY_4, DomCode::DIGIT4, 0, '4'); | 301 ExpectUnicodeKeyFiltered(VKEY_4, DomCode::DIGIT4, 0, '4'); |
302 EXPECT_EQ(ASCIIToUTF16("u304"), character_composer_.preedit_string()); | 302 EXPECT_EQ(ASCIIToUTF16("u304"), character_composer_.preedit_string()); |
303 ExpectUnicodeKeyFiltered(VKEY_A, DomCode::KEY_A, 0, 'a'); | 303 ExpectUnicodeKeyFiltered(VKEY_A, DomCode::US_A, 0, 'a'); |
304 EXPECT_EQ(ASCIIToUTF16("u304a"), character_composer_.preedit_string()); | 304 EXPECT_EQ(ASCIIToUTF16("u304a"), character_composer_.preedit_string()); |
305 ExpectUnicodeKeyFiltered(VKEY_BACK, DomCode::BACKSPACE, EF_NONE, '\b'); | 305 ExpectUnicodeKeyFiltered(VKEY_BACK, DomCode::BACKSPACE, EF_NONE, '\b'); |
306 EXPECT_EQ(ASCIIToUTF16("u304"), character_composer_.preedit_string()); | 306 EXPECT_EQ(ASCIIToUTF16("u304"), character_composer_.preedit_string()); |
307 ExpectUnicodeKeyFiltered(VKEY_2, DomCode::DIGIT2, EF_NONE, '2'); | 307 ExpectUnicodeKeyFiltered(VKEY_2, DomCode::DIGIT2, EF_NONE, '2'); |
308 ExpectUnicodeKeyComposed(VKEY_RETURN, DomCode::ENTER, EF_NONE, | 308 ExpectUnicodeKeyComposed(VKEY_RETURN, DomCode::ENTER, EF_NONE, |
309 '\r', | 309 '\r', |
310 base::string16(1, 0x3042)); | 310 base::string16(1, 0x3042)); |
311 EXPECT_EQ(ASCIIToUTF16(""), character_composer_.preedit_string()); | 311 EXPECT_EQ(ASCIIToUTF16(""), character_composer_.preedit_string()); |
312 | 312 |
313 // Sequence with an ignored character ('x') and Escape. | 313 // Sequence with an ignored character ('x') and Escape. |
314 ExpectUnicodeKeyFiltered(VKEY_U, DomCode::KEY_U, | 314 ExpectUnicodeKeyFiltered(VKEY_U, DomCode::US_U, |
315 EF_SHIFT_DOWN | EF_CONTROL_DOWN, 'U'); | 315 EF_SHIFT_DOWN | EF_CONTROL_DOWN, 'U'); |
316 EXPECT_EQ(ASCIIToUTF16("u"), character_composer_.preedit_string()); | 316 EXPECT_EQ(ASCIIToUTF16("u"), character_composer_.preedit_string()); |
317 ExpectUnicodeKeyFiltered(VKEY_3, DomCode::DIGIT3, 0, '3'); | 317 ExpectUnicodeKeyFiltered(VKEY_3, DomCode::DIGIT3, 0, '3'); |
318 EXPECT_EQ(ASCIIToUTF16("u3"), character_composer_.preedit_string()); | 318 EXPECT_EQ(ASCIIToUTF16("u3"), character_composer_.preedit_string()); |
319 ExpectUnicodeKeyFiltered(VKEY_0, DomCode::DIGIT0, 0, '0'); | 319 ExpectUnicodeKeyFiltered(VKEY_0, DomCode::DIGIT0, 0, '0'); |
320 EXPECT_EQ(ASCIIToUTF16("u30"), character_composer_.preedit_string()); | 320 EXPECT_EQ(ASCIIToUTF16("u30"), character_composer_.preedit_string()); |
321 ExpectUnicodeKeyFiltered(VKEY_X, DomCode::KEY_X, 0, 'x'); | 321 ExpectUnicodeKeyFiltered(VKEY_X, DomCode::US_X, 0, 'x'); |
322 EXPECT_EQ(ASCIIToUTF16("u30"), character_composer_.preedit_string()); | 322 EXPECT_EQ(ASCIIToUTF16("u30"), character_composer_.preedit_string()); |
323 ExpectUnicodeKeyFiltered(VKEY_4, DomCode::DIGIT4, 0, '4'); | 323 ExpectUnicodeKeyFiltered(VKEY_4, DomCode::DIGIT4, 0, '4'); |
324 EXPECT_EQ(ASCIIToUTF16("u304"), character_composer_.preedit_string()); | 324 EXPECT_EQ(ASCIIToUTF16("u304"), character_composer_.preedit_string()); |
325 ExpectUnicodeKeyFiltered(VKEY_2, DomCode::DIGIT2, 0, '2'); | 325 ExpectUnicodeKeyFiltered(VKEY_2, DomCode::DIGIT2, 0, '2'); |
326 EXPECT_EQ(ASCIIToUTF16("u3042"), character_composer_.preedit_string()); | 326 EXPECT_EQ(ASCIIToUTF16("u3042"), character_composer_.preedit_string()); |
327 ExpectUnicodeKeyFiltered(VKEY_ESCAPE, DomCode::ESCAPE, EF_NONE, 0x1B); | 327 ExpectUnicodeKeyFiltered(VKEY_ESCAPE, DomCode::ESCAPE, EF_NONE, 0x1B); |
328 EXPECT_EQ(ASCIIToUTF16(""), character_composer_.preedit_string()); | 328 EXPECT_EQ(ASCIIToUTF16(""), character_composer_.preedit_string()); |
329 } | 329 } |
330 | 330 |
331 TEST_F(CharacterComposerTest, HexadecimalCompositionWithNonHexKey) { | 331 TEST_F(CharacterComposerTest, HexadecimalCompositionWithNonHexKey) { |
332 // Sequence [Ctrl+Shift+U, x, space] does not compose a character. | 332 // Sequence [Ctrl+Shift+U, x, space] does not compose a character. |
333 ExpectUnicodeKeyFiltered(VKEY_U, DomCode::KEY_U, | 333 ExpectUnicodeKeyFiltered(VKEY_U, DomCode::US_U, |
334 EF_SHIFT_DOWN | EF_CONTROL_DOWN, 0x15); | 334 EF_SHIFT_DOWN | EF_CONTROL_DOWN, 0x15); |
335 ExpectUnicodeKeyFiltered(VKEY_X, DomCode::KEY_X, 0, 'x'); | 335 ExpectUnicodeKeyFiltered(VKEY_X, DomCode::US_X, 0, 'x'); |
336 ExpectUnicodeKeyFiltered(VKEY_SPACE, DomCode::SPACE, EF_NONE, ' '); | 336 ExpectUnicodeKeyFiltered(VKEY_SPACE, DomCode::SPACE, EF_NONE, ' '); |
337 EXPECT_TRUE(character_composer_.composed_character().empty()); | 337 EXPECT_TRUE(character_composer_.composed_character().empty()); |
338 | 338 |
339 // HIRAGANA LETTER A (U+3042) with a sequence [3, 0, x, 4, 2]. | 339 // HIRAGANA LETTER A (U+3042) with a sequence [3, 0, x, 4, 2]. |
340 ExpectUnicodeKeyFiltered(VKEY_U, DomCode::KEY_U, | 340 ExpectUnicodeKeyFiltered(VKEY_U, DomCode::US_U, |
341 EF_SHIFT_DOWN | EF_CONTROL_DOWN, 0x15); | 341 EF_SHIFT_DOWN | EF_CONTROL_DOWN, 0x15); |
342 ExpectUnicodeKeyFiltered(VKEY_3, DomCode::DIGIT3, EF_NONE, '3'); | 342 ExpectUnicodeKeyFiltered(VKEY_3, DomCode::DIGIT3, EF_NONE, '3'); |
343 ExpectUnicodeKeyFiltered(VKEY_0, DomCode::DIGIT0, EF_NONE, '0'); | 343 ExpectUnicodeKeyFiltered(VKEY_0, DomCode::DIGIT0, EF_NONE, '0'); |
344 ExpectUnicodeKeyFiltered(VKEY_X, DomCode::KEY_X, EF_NONE, 'x'); | 344 ExpectUnicodeKeyFiltered(VKEY_X, DomCode::US_X, EF_NONE, 'x'); |
345 ExpectUnicodeKeyFiltered(VKEY_4, DomCode::DIGIT4, EF_NONE, '4'); | 345 ExpectUnicodeKeyFiltered(VKEY_4, DomCode::DIGIT4, EF_NONE, '4'); |
346 ExpectUnicodeKeyFiltered(VKEY_2, DomCode::DIGIT2, EF_NONE, '2'); | 346 ExpectUnicodeKeyFiltered(VKEY_2, DomCode::DIGIT2, EF_NONE, '2'); |
347 ExpectUnicodeKeyComposed(VKEY_SPACE, DomCode::SPACE, EF_NONE, ' ', | 347 ExpectUnicodeKeyComposed(VKEY_SPACE, DomCode::SPACE, EF_NONE, ' ', |
348 base::string16(1, 0x3042)); | 348 base::string16(1, 0x3042)); |
349 } | 349 } |
350 | 350 |
351 TEST_F(CharacterComposerTest, HexadecimalCompositionWithAdditionalModifiers) { | 351 TEST_F(CharacterComposerTest, HexadecimalCompositionWithAdditionalModifiers) { |
352 // Ctrl+Shift+Alt+U | 352 // Ctrl+Shift+Alt+U |
353 // HIRAGANA LETTER A (U+3042) | 353 // HIRAGANA LETTER A (U+3042) |
354 ExpectUnicodeKeyFiltered(VKEY_U, DomCode::KEY_U, | 354 ExpectUnicodeKeyFiltered(VKEY_U, DomCode::US_U, |
355 EF_SHIFT_DOWN | EF_CONTROL_DOWN | EF_ALT_DOWN, 0x15); | 355 EF_SHIFT_DOWN | EF_CONTROL_DOWN | EF_ALT_DOWN, 0x15); |
356 ExpectUnicodeKeyFiltered(VKEY_3, DomCode::DIGIT3, EF_NONE, '3'); | 356 ExpectUnicodeKeyFiltered(VKEY_3, DomCode::DIGIT3, EF_NONE, '3'); |
357 ExpectUnicodeKeyFiltered(VKEY_0, DomCode::DIGIT0, EF_NONE, '0'); | 357 ExpectUnicodeKeyFiltered(VKEY_0, DomCode::DIGIT0, EF_NONE, '0'); |
358 ExpectUnicodeKeyFiltered(VKEY_4, DomCode::DIGIT4, EF_NONE, '4'); | 358 ExpectUnicodeKeyFiltered(VKEY_4, DomCode::DIGIT4, EF_NONE, '4'); |
359 ExpectUnicodeKeyFiltered(VKEY_2, DomCode::DIGIT2, EF_NONE, '2'); | 359 ExpectUnicodeKeyFiltered(VKEY_2, DomCode::DIGIT2, EF_NONE, '2'); |
360 ExpectUnicodeKeyComposed(VKEY_SPACE, DomCode::SPACE, EF_NONE, ' ', | 360 ExpectUnicodeKeyComposed(VKEY_SPACE, DomCode::SPACE, EF_NONE, ' ', |
361 base::string16(1, 0x3042)); | 361 base::string16(1, 0x3042)); |
362 | 362 |
363 // Ctrl+Shift+u (CapsLock enabled) | 363 // Ctrl+Shift+u (CapsLock enabled) |
364 ExpectUnicodeKeyNotFiltered( | 364 ExpectUnicodeKeyNotFiltered( |
365 VKEY_U, DomCode::KEY_U, | 365 VKEY_U, DomCode::US_U, |
366 EF_SHIFT_DOWN | EF_CONTROL_DOWN | EF_CAPS_LOCK_DOWN, 'u'); | 366 EF_SHIFT_DOWN | EF_CONTROL_DOWN | EF_CAPS_LOCK_DOWN, 'u'); |
367 } | 367 } |
368 | 368 |
369 TEST_F(CharacterComposerTest, CancelHexadecimalComposition) { | 369 TEST_F(CharacterComposerTest, CancelHexadecimalComposition) { |
370 // Cancel composition with ESC. | 370 // Cancel composition with ESC. |
371 ExpectUnicodeKeyFiltered(VKEY_U, DomCode::KEY_U, | 371 ExpectUnicodeKeyFiltered(VKEY_U, DomCode::US_U, |
372 EF_SHIFT_DOWN | EF_CONTROL_DOWN, 0x15); | 372 EF_SHIFT_DOWN | EF_CONTROL_DOWN, 0x15); |
373 ExpectUnicodeKeyFiltered(VKEY_1, DomCode::DIGIT1, 0, '1'); | 373 ExpectUnicodeKeyFiltered(VKEY_1, DomCode::DIGIT1, 0, '1'); |
374 ExpectUnicodeKeyFiltered(VKEY_ESCAPE, DomCode::ESCAPE, EF_NONE, 0x1B); | 374 ExpectUnicodeKeyFiltered(VKEY_ESCAPE, DomCode::ESCAPE, EF_NONE, 0x1B); |
375 | 375 |
376 // Now we can start composition again since the last composition was | 376 // Now we can start composition again since the last composition was |
377 // cancelled. | 377 // cancelled. |
378 // HIRAGANA LETTER A (U+3042) | 378 // HIRAGANA LETTER A (U+3042) |
379 ExpectUnicodeKeyFiltered(VKEY_U, DomCode::KEY_U, | 379 ExpectUnicodeKeyFiltered(VKEY_U, DomCode::US_U, |
380 EF_SHIFT_DOWN | EF_CONTROL_DOWN, 0x15); | 380 EF_SHIFT_DOWN | EF_CONTROL_DOWN, 0x15); |
381 ExpectUnicodeKeyFiltered(VKEY_3, DomCode::DIGIT3, EF_NONE, '3'); | 381 ExpectUnicodeKeyFiltered(VKEY_3, DomCode::DIGIT3, EF_NONE, '3'); |
382 ExpectUnicodeKeyFiltered(VKEY_0, DomCode::DIGIT0, EF_NONE, '0'); | 382 ExpectUnicodeKeyFiltered(VKEY_0, DomCode::DIGIT0, EF_NONE, '0'); |
383 ExpectUnicodeKeyFiltered(VKEY_4, DomCode::DIGIT4, EF_NONE, '4'); | 383 ExpectUnicodeKeyFiltered(VKEY_4, DomCode::DIGIT4, EF_NONE, '4'); |
384 ExpectUnicodeKeyFiltered(VKEY_2, DomCode::DIGIT2, EF_NONE, '2'); | 384 ExpectUnicodeKeyFiltered(VKEY_2, DomCode::DIGIT2, EF_NONE, '2'); |
385 ExpectUnicodeKeyComposed(VKEY_SPACE, DomCode::SPACE, EF_NONE, ' ', | 385 ExpectUnicodeKeyComposed(VKEY_SPACE, DomCode::SPACE, EF_NONE, ' ', |
386 base::string16(1, 0x3042)); | 386 base::string16(1, 0x3042)); |
387 } | 387 } |
388 | 388 |
389 TEST_F(CharacterComposerTest, HexadecimalCompositionWithBackspace) { | 389 TEST_F(CharacterComposerTest, HexadecimalCompositionWithBackspace) { |
390 // HIRAGANA LETTER A (U+3042) | 390 // HIRAGANA LETTER A (U+3042) |
391 ExpectUnicodeKeyFiltered(VKEY_U, DomCode::KEY_U, | 391 ExpectUnicodeKeyFiltered(VKEY_U, DomCode::US_U, |
392 EF_SHIFT_DOWN | EF_CONTROL_DOWN, 0x15); | 392 EF_SHIFT_DOWN | EF_CONTROL_DOWN, 0x15); |
393 ExpectUnicodeKeyFiltered(VKEY_3, DomCode::DIGIT3, 0, '3'); | 393 ExpectUnicodeKeyFiltered(VKEY_3, DomCode::DIGIT3, 0, '3'); |
394 ExpectUnicodeKeyFiltered(VKEY_0, DomCode::DIGIT0, 0, '0'); | 394 ExpectUnicodeKeyFiltered(VKEY_0, DomCode::DIGIT0, 0, '0'); |
395 ExpectUnicodeKeyFiltered(VKEY_F, DomCode::KEY_F, 0, 'f'); | 395 ExpectUnicodeKeyFiltered(VKEY_F, DomCode::US_F, 0, 'f'); |
396 ExpectUnicodeKeyFiltered(VKEY_BACK, DomCode::BACKSPACE, EF_NONE, '\b'); | 396 ExpectUnicodeKeyFiltered(VKEY_BACK, DomCode::BACKSPACE, EF_NONE, '\b'); |
397 ExpectUnicodeKeyFiltered(VKEY_4, DomCode::DIGIT4, EF_NONE, '4'); | 397 ExpectUnicodeKeyFiltered(VKEY_4, DomCode::DIGIT4, EF_NONE, '4'); |
398 ExpectUnicodeKeyFiltered(VKEY_2, DomCode::DIGIT2, EF_NONE, '2'); | 398 ExpectUnicodeKeyFiltered(VKEY_2, DomCode::DIGIT2, EF_NONE, '2'); |
399 ExpectUnicodeKeyComposed(VKEY_SPACE, DomCode::SPACE, EF_NONE, ' ', | 399 ExpectUnicodeKeyComposed(VKEY_SPACE, DomCode::SPACE, EF_NONE, ' ', |
400 base::string16(1, 0x3042)); | 400 base::string16(1, 0x3042)); |
401 } | 401 } |
402 | 402 |
403 TEST_F(CharacterComposerTest, CancelHexadecimalCompositionWithBackspace) { | 403 TEST_F(CharacterComposerTest, CancelHexadecimalCompositionWithBackspace) { |
404 // Backspace just after Ctrl+Shift+U. | 404 // Backspace just after Ctrl+Shift+U. |
405 ExpectUnicodeKeyFiltered(VKEY_U, DomCode::KEY_U, | 405 ExpectUnicodeKeyFiltered(VKEY_U, DomCode::US_U, |
406 EF_SHIFT_DOWN | EF_CONTROL_DOWN, 0x15); | 406 EF_SHIFT_DOWN | EF_CONTROL_DOWN, 0x15); |
407 ExpectUnicodeKeyFiltered(VKEY_BACK, DomCode::BACKSPACE, EF_NONE, '\b'); | 407 ExpectUnicodeKeyFiltered(VKEY_BACK, DomCode::BACKSPACE, EF_NONE, '\b'); |
408 ExpectUnicodeKeyNotFiltered(VKEY_3, DomCode::DIGIT3, EF_NONE, '3'); | 408 ExpectUnicodeKeyNotFiltered(VKEY_3, DomCode::DIGIT3, EF_NONE, '3'); |
409 | 409 |
410 // Backspace twice after Ctrl+Shift+U and 3. | 410 // Backspace twice after Ctrl+Shift+U and 3. |
411 ExpectUnicodeKeyFiltered(VKEY_U, DomCode::KEY_U, | 411 ExpectUnicodeKeyFiltered(VKEY_U, DomCode::US_U, |
412 EF_SHIFT_DOWN | EF_CONTROL_DOWN, 0x15); | 412 EF_SHIFT_DOWN | EF_CONTROL_DOWN, 0x15); |
413 ExpectUnicodeKeyFiltered(VKEY_3, DomCode::DIGIT3, 0, '3'); | 413 ExpectUnicodeKeyFiltered(VKEY_3, DomCode::DIGIT3, 0, '3'); |
414 ExpectUnicodeKeyFiltered(VKEY_BACK, DomCode::BACKSPACE, EF_NONE, '\b'); | 414 ExpectUnicodeKeyFiltered(VKEY_BACK, DomCode::BACKSPACE, EF_NONE, '\b'); |
415 ExpectUnicodeKeyFiltered(VKEY_BACK, DomCode::BACKSPACE, EF_NONE, '\b'); | 415 ExpectUnicodeKeyFiltered(VKEY_BACK, DomCode::BACKSPACE, EF_NONE, '\b'); |
416 ExpectUnicodeKeyNotFiltered(VKEY_3, DomCode::DIGIT3, EF_NONE, '3'); | 416 ExpectUnicodeKeyNotFiltered(VKEY_3, DomCode::DIGIT3, EF_NONE, '3'); |
417 } | 417 } |
418 | 418 |
419 TEST_F(CharacterComposerTest, | 419 TEST_F(CharacterComposerTest, |
420 HexadecimalCompositionPreeditWithModifierPressed) { | 420 HexadecimalCompositionPreeditWithModifierPressed) { |
421 // This test case supposes X Window System uses 101 keyboard layout. | 421 // This test case supposes X Window System uses 101 keyboard layout. |
422 const int kControlShift = EF_CONTROL_DOWN | EF_SHIFT_DOWN; | 422 const int kControlShift = EF_CONTROL_DOWN | EF_SHIFT_DOWN; |
423 // HIRAGANA LETTER A (U+3042) | 423 // HIRAGANA LETTER A (U+3042) |
424 ExpectUnicodeKeyFiltered(ui::VKEY_U, DomCode::KEY_U, kControlShift, 0x15); | 424 ExpectUnicodeKeyFiltered(ui::VKEY_U, DomCode::US_U, kControlShift, 0x15); |
425 EXPECT_EQ(ASCIIToUTF16("u"), character_composer_.preedit_string()); | 425 EXPECT_EQ(ASCIIToUTF16("u"), character_composer_.preedit_string()); |
426 ExpectUnicodeKeyFiltered(ui::VKEY_3, DomCode::DIGIT3, kControlShift, '#'); | 426 ExpectUnicodeKeyFiltered(ui::VKEY_3, DomCode::DIGIT3, kControlShift, '#'); |
427 EXPECT_EQ(ASCIIToUTF16("u3"), character_composer_.preedit_string()); | 427 EXPECT_EQ(ASCIIToUTF16("u3"), character_composer_.preedit_string()); |
428 ExpectUnicodeKeyFiltered(ui::VKEY_0, DomCode::DIGIT0, kControlShift, ')'); | 428 ExpectUnicodeKeyFiltered(ui::VKEY_0, DomCode::DIGIT0, kControlShift, ')'); |
429 EXPECT_EQ(ASCIIToUTF16("u30"), character_composer_.preedit_string()); | 429 EXPECT_EQ(ASCIIToUTF16("u30"), character_composer_.preedit_string()); |
430 ExpectUnicodeKeyFiltered(ui::VKEY_4, DomCode::DIGIT4, kControlShift, '$'); | 430 ExpectUnicodeKeyFiltered(ui::VKEY_4, DomCode::DIGIT4, kControlShift, '$'); |
431 EXPECT_EQ(ASCIIToUTF16("u304"), character_composer_.preedit_string()); | 431 EXPECT_EQ(ASCIIToUTF16("u304"), character_composer_.preedit_string()); |
432 ExpectUnicodeKeyFiltered(ui::VKEY_A, DomCode::KEY_A, kControlShift, 0x01); | 432 ExpectUnicodeKeyFiltered(ui::VKEY_A, DomCode::US_A, kControlShift, 0x01); |
433 EXPECT_EQ(ASCIIToUTF16("u304a"), character_composer_.preedit_string()); | 433 EXPECT_EQ(ASCIIToUTF16("u304a"), character_composer_.preedit_string()); |
434 ExpectUnicodeKeyFiltered(ui::VKEY_BACK, DomCode::BACKSPACE, kControlShift, | 434 ExpectUnicodeKeyFiltered(ui::VKEY_BACK, DomCode::BACKSPACE, kControlShift, |
435 '\b'); | 435 '\b'); |
436 EXPECT_EQ(ASCIIToUTF16("u304"), character_composer_.preedit_string()); | 436 EXPECT_EQ(ASCIIToUTF16("u304"), character_composer_.preedit_string()); |
437 ExpectUnicodeKeyFiltered(ui::VKEY_2, DomCode::DIGIT2, kControlShift, 0); | 437 ExpectUnicodeKeyFiltered(ui::VKEY_2, DomCode::DIGIT2, kControlShift, 0); |
438 EXPECT_EQ(ASCIIToUTF16("u3042"), character_composer_.preedit_string()); | 438 EXPECT_EQ(ASCIIToUTF16("u3042"), character_composer_.preedit_string()); |
439 ExpectUnicodeKeyComposed(VKEY_RETURN, DomCode::ENTER, kControlShift, | 439 ExpectUnicodeKeyComposed(VKEY_RETURN, DomCode::ENTER, kControlShift, |
440 '\r', | 440 '\r', |
441 base::string16(1, 0x3042)); | 441 base::string16(1, 0x3042)); |
442 EXPECT_EQ(ASCIIToUTF16(""), character_composer_.preedit_string()); | 442 EXPECT_EQ(ASCIIToUTF16(""), character_composer_.preedit_string()); |
443 | 443 |
444 // Sequence with an ignored character (control + shift + 'x') and Escape. | 444 // Sequence with an ignored character (control + shift + 'x') and Escape. |
445 ExpectUnicodeKeyFiltered(ui::VKEY_U, DomCode::KEY_U, kControlShift, 'U'); | 445 ExpectUnicodeKeyFiltered(ui::VKEY_U, DomCode::US_U, kControlShift, 'U'); |
446 EXPECT_EQ(ASCIIToUTF16("u"), character_composer_.preedit_string()); | 446 EXPECT_EQ(ASCIIToUTF16("u"), character_composer_.preedit_string()); |
447 ExpectUnicodeKeyFiltered(ui::VKEY_3, DomCode::DIGIT3, kControlShift, '#'); | 447 ExpectUnicodeKeyFiltered(ui::VKEY_3, DomCode::DIGIT3, kControlShift, '#'); |
448 EXPECT_EQ(ASCIIToUTF16("u3"), character_composer_.preedit_string()); | 448 EXPECT_EQ(ASCIIToUTF16("u3"), character_composer_.preedit_string()); |
449 ExpectUnicodeKeyFiltered(ui::VKEY_0, DomCode::DIGIT0, kControlShift, ')'); | 449 ExpectUnicodeKeyFiltered(ui::VKEY_0, DomCode::DIGIT0, kControlShift, ')'); |
450 EXPECT_EQ(ASCIIToUTF16("u30"), character_composer_.preedit_string()); | 450 EXPECT_EQ(ASCIIToUTF16("u30"), character_composer_.preedit_string()); |
451 ExpectUnicodeKeyFiltered(ui::VKEY_X, DomCode::KEY_X, kControlShift, 'X'); | 451 ExpectUnicodeKeyFiltered(ui::VKEY_X, DomCode::US_X, kControlShift, 'X'); |
452 EXPECT_EQ(ASCIIToUTF16("u30"), character_composer_.preedit_string()); | 452 EXPECT_EQ(ASCIIToUTF16("u30"), character_composer_.preedit_string()); |
453 ExpectUnicodeKeyFiltered(ui::VKEY_4, DomCode::DIGIT4, kControlShift, '$'); | 453 ExpectUnicodeKeyFiltered(ui::VKEY_4, DomCode::DIGIT4, kControlShift, '$'); |
454 EXPECT_EQ(ASCIIToUTF16("u304"), character_composer_.preedit_string()); | 454 EXPECT_EQ(ASCIIToUTF16("u304"), character_composer_.preedit_string()); |
455 ExpectUnicodeKeyFiltered(ui::VKEY_2, DomCode::DIGIT2, kControlShift, 0); | 455 ExpectUnicodeKeyFiltered(ui::VKEY_2, DomCode::DIGIT2, kControlShift, 0); |
456 EXPECT_EQ(ASCIIToUTF16("u3042"), character_composer_.preedit_string()); | 456 EXPECT_EQ(ASCIIToUTF16("u3042"), character_composer_.preedit_string()); |
457 ExpectUnicodeKeyFiltered(ui::VKEY_ESCAPE, DomCode::ESCAPE, kControlShift, | 457 ExpectUnicodeKeyFiltered(ui::VKEY_ESCAPE, DomCode::ESCAPE, kControlShift, |
458 0x1B); | 458 0x1B); |
459 EXPECT_EQ(ASCIIToUTF16(""), character_composer_.preedit_string()); | 459 EXPECT_EQ(ASCIIToUTF16(""), character_composer_.preedit_string()); |
460 } | 460 } |
461 | 461 |
462 TEST_F(CharacterComposerTest, InvalidHexadecimalSequence) { | 462 TEST_F(CharacterComposerTest, InvalidHexadecimalSequence) { |
463 // U+FFFFFFFF | 463 // U+FFFFFFFF |
464 ExpectUnicodeKeyFiltered(VKEY_U, DomCode::KEY_U, | 464 ExpectUnicodeKeyFiltered(VKEY_U, DomCode::US_U, |
465 EF_SHIFT_DOWN | EF_CONTROL_DOWN, 0x15); | 465 EF_SHIFT_DOWN | EF_CONTROL_DOWN, 0x15); |
466 for (int i = 0; i < 8; ++i) | 466 for (int i = 0; i < 8; ++i) |
467 ExpectUnicodeKeyFiltered(VKEY_F, DomCode::KEY_F, 0, 'f'); | 467 ExpectUnicodeKeyFiltered(VKEY_F, DomCode::US_F, 0, 'f'); |
468 ExpectUnicodeKeyFiltered(VKEY_SPACE, DomCode::SPACE, EF_NONE, ' '); | 468 ExpectUnicodeKeyFiltered(VKEY_SPACE, DomCode::SPACE, EF_NONE, ' '); |
469 | 469 |
470 // U+0000 (Actually, this is a valid unicode character, but we don't | 470 // U+0000 (Actually, this is a valid unicode character, but we don't |
471 // compose a string with a character '\0') | 471 // compose a string with a character '\0') |
472 ExpectUnicodeKeyFiltered(VKEY_U, DomCode::KEY_U, | 472 ExpectUnicodeKeyFiltered(VKEY_U, DomCode::US_U, |
473 EF_SHIFT_DOWN | EF_CONTROL_DOWN, 0x15); | 473 EF_SHIFT_DOWN | EF_CONTROL_DOWN, 0x15); |
474 for (int i = 0; i < 4; ++i) | 474 for (int i = 0; i < 4; ++i) |
475 ExpectUnicodeKeyFiltered(VKEY_0, DomCode::DIGIT0, 0, '0'); | 475 ExpectUnicodeKeyFiltered(VKEY_0, DomCode::DIGIT0, 0, '0'); |
476 ExpectUnicodeKeyFiltered(VKEY_SPACE, DomCode::SPACE, EF_NONE, ' '); | 476 ExpectUnicodeKeyFiltered(VKEY_SPACE, DomCode::SPACE, EF_NONE, ' '); |
477 | 477 |
478 // U+10FFFF | 478 // U+10FFFF |
479 ExpectUnicodeKeyFiltered(VKEY_U, DomCode::KEY_U, | 479 ExpectUnicodeKeyFiltered(VKEY_U, DomCode::US_U, |
480 EF_SHIFT_DOWN | EF_CONTROL_DOWN, 0x15); | 480 EF_SHIFT_DOWN | EF_CONTROL_DOWN, 0x15); |
481 ExpectUnicodeKeyFiltered(VKEY_1, DomCode::DIGIT1, 0, '1'); | 481 ExpectUnicodeKeyFiltered(VKEY_1, DomCode::DIGIT1, 0, '1'); |
482 ExpectUnicodeKeyFiltered(VKEY_0, DomCode::DIGIT0, 0, '0'); | 482 ExpectUnicodeKeyFiltered(VKEY_0, DomCode::DIGIT0, 0, '0'); |
483 for (int i = 0; i < 4; ++i) | 483 for (int i = 0; i < 4; ++i) |
484 ExpectUnicodeKeyFiltered(VKEY_F, DomCode::KEY_F, 0, 'f'); | 484 ExpectUnicodeKeyFiltered(VKEY_F, DomCode::US_F, 0, 'f'); |
485 ExpectUnicodeKeyFiltered(VKEY_SPACE, DomCode::SPACE, EF_NONE, ' '); | 485 ExpectUnicodeKeyFiltered(VKEY_SPACE, DomCode::SPACE, EF_NONE, ' '); |
486 | 486 |
487 // U+110000 | 487 // U+110000 |
488 ExpectUnicodeKeyFiltered(VKEY_U, DomCode::KEY_U, | 488 ExpectUnicodeKeyFiltered(VKEY_U, DomCode::US_U, |
489 EF_SHIFT_DOWN | EF_CONTROL_DOWN, 0x15); | 489 EF_SHIFT_DOWN | EF_CONTROL_DOWN, 0x15); |
490 ExpectUnicodeKeyFiltered(VKEY_1, DomCode::DIGIT1, 0, '1'); | 490 ExpectUnicodeKeyFiltered(VKEY_1, DomCode::DIGIT1, 0, '1'); |
491 ExpectUnicodeKeyFiltered(VKEY_1, DomCode::DIGIT1, 0, '1'); | 491 ExpectUnicodeKeyFiltered(VKEY_1, DomCode::DIGIT1, 0, '1'); |
492 for (int i = 0; i < 4; ++i) | 492 for (int i = 0; i < 4; ++i) |
493 ExpectUnicodeKeyFiltered(VKEY_0, DomCode::DIGIT0, 0, '0'); | 493 ExpectUnicodeKeyFiltered(VKEY_0, DomCode::DIGIT0, 0, '0'); |
494 ExpectUnicodeKeyFiltered(VKEY_SPACE, DomCode::SPACE, EF_NONE, ' '); | 494 ExpectUnicodeKeyFiltered(VKEY_SPACE, DomCode::SPACE, EF_NONE, ' '); |
495 } | 495 } |
496 | 496 |
497 TEST_F(CharacterComposerTest, HexadecimalSequenceAndDeadKey) { | 497 TEST_F(CharacterComposerTest, HexadecimalSequenceAndDeadKey) { |
498 // LATIN SMALL LETTER A WITH ACUTE | 498 // LATIN SMALL LETTER A WITH ACUTE |
499 ExpectDeadKeyFiltered(kCombiningAcute); | 499 ExpectDeadKeyFiltered(kCombiningAcute); |
500 ExpectUnicodeKeyComposed(VKEY_A, DomCode::KEY_A, EF_NONE, 'a', | 500 ExpectUnicodeKeyComposed(VKEY_A, DomCode::US_A, EF_NONE, 'a', |
501 base::string16(1, 0x00E1)); | 501 base::string16(1, 0x00E1)); |
502 // HIRAGANA LETTER A (U+3042) with dead_acute ignored. | 502 // HIRAGANA LETTER A (U+3042) with dead_acute ignored. |
503 ExpectUnicodeKeyFiltered(VKEY_U, DomCode::KEY_U, | 503 ExpectUnicodeKeyFiltered(VKEY_U, DomCode::US_U, |
504 EF_SHIFT_DOWN | EF_CONTROL_DOWN, 0x15); | 504 EF_SHIFT_DOWN | EF_CONTROL_DOWN, 0x15); |
505 ExpectUnicodeKeyFiltered(VKEY_3, DomCode::DIGIT3, EF_NONE, '3'); | 505 ExpectUnicodeKeyFiltered(VKEY_3, DomCode::DIGIT3, EF_NONE, '3'); |
506 ExpectUnicodeKeyFiltered(VKEY_0, DomCode::DIGIT0, EF_NONE, '0'); | 506 ExpectUnicodeKeyFiltered(VKEY_0, DomCode::DIGIT0, EF_NONE, '0'); |
507 ExpectDeadKeyFiltered(kCombiningAcute); | 507 ExpectDeadKeyFiltered(kCombiningAcute); |
508 ExpectUnicodeKeyFiltered(VKEY_4, DomCode::DIGIT4, EF_NONE, '4'); | 508 ExpectUnicodeKeyFiltered(VKEY_4, DomCode::DIGIT4, EF_NONE, '4'); |
509 ExpectUnicodeKeyFiltered(VKEY_2, DomCode::DIGIT2, EF_NONE, '2'); | 509 ExpectUnicodeKeyFiltered(VKEY_2, DomCode::DIGIT2, EF_NONE, '2'); |
510 ExpectUnicodeKeyComposed(VKEY_SPACE, DomCode::SPACE, EF_NONE, ' ', | 510 ExpectUnicodeKeyComposed(VKEY_SPACE, DomCode::SPACE, EF_NONE, ' ', |
511 base::string16(1, 0x3042)); | 511 base::string16(1, 0x3042)); |
512 } | 512 } |
513 | 513 |
514 } // namespace ui | 514 } // namespace ui |
OLD | NEW |